{"version":3,"file":"monaco.bundle.js","mappings":"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CA,KACA,KACA,QACA,QACA,SACA,QACA,KACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,KACA,OACA,UACA,KACA,KACA,OACA,QACA,UACA,KACA,KACA,OACA,MACA,OACA,KACA,UACA,KACA,QACA,MACA,UACA,KACA,QACA,QACA,SACA,OACA,QACA,MACA,QACA,OACA,KACA,OACA,MACA,MACA,SACA,MACA,QACA,KACA,MACA,OACA,KACA,OACA,MACA,QACA,MACA,OAGJtB,QAAS,0BAET/vB,UAAW,CACP9yF,KAAM,CACF,CAAEggH,QAAS,eACX,CACI,cACA,CACI2D,MAAO,CACH,YAAa,UACb,YAAa,kBACb,WAAY,MAIxB,CAAE3D,QAAS,YACX,CAAEA,QAAS,eACX,CAAEA,QAAS,YACX,CAAC,aAAc,aACf,CAAC,QAAS,kBACV,CAAC,WAAY,aACb,CAAEA,QAAS,YACX,CAAC,OAAQ,cAEb9kD,WAAY,CACR,CAAC,MAAO,SACR,CAAC,WAAY,WACb,CAAC,UAAW,YAEhBylD,QAAS,CACL,CAAC,2BAA4B,gBAC7B,CAAC,gCAAiC,cAClC,CAAC,MAAO,WAGZO,QAAS,CACL,CAAC,IAAK,SAAU,eAChB,CAAC,IAAK,SAAU,mBAEpBkD,WAAY,CACR,CAAC,IAAK,SAAU,WAChB,CAAC,IAAK,WAEVC,cAAe,CACX,CAAC,IAAK,SAAU,WAChB,CAAC,IAAK,WAEVC,QAAS,CACL,CACI,0CACA,CACI,YACA,QACA,2BACA,iBACA,8BAIZ3/B,WAAY,CACR,CAAC,QAAS,uBACV,CAAC,QAAS,YACV,CAAC,iBAAkB,YACnB,CAAC,MAAO,WAAY,uBACpB,CAAC,MAAO,WAAY,6BACpB,CAAC,OAAQ,WAAY,uBACrB,CAAC,OAAQ,WAAY,6BAEzB4/B,mBAAoB,CAChB,CAAC,iBAAkB,YACnB,CAAC,cAAe,aAChB,CAAC,MAAO,WAAY,SAExBC,yBAA0B,CACtB,CAAC,iBAAkB,YACnB,CAAC,cAAe,aAChB,CAAC,MAAO,WAAY,SAExBC,mBAAoB,CAChB,CAAC,iBAAkB,YACnB,CAAC,cAAe,aAChB,CAAC,MAAO,WAAY,SAExBC,wBAAyB,CACrB,CAAC,iBAAkB,YACnB,CAAC,cAAe,aAChB,CAAC,MAAO,WAAY,U,uCClNhC,E,SAAA,GAAiB,CACb7kI,GAAI,aACJyyE,WAAY,CAAC,MAAO,QACpB4sD,QAAS,CAAC,aAAc,KAAM,cAC9BC,UAAW,CAAC,mBACZV,OAAQ,WAAc,OAAO,mCAA2B,G,wFCLjDQ,EAAO,CACdG,YAAa,uFACbC,SAAU,CACN6E,YAAa,KACb5E,aAAc,CAAC,KAAM,OAEzBC,SAAU,CACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEV+B,aAAc,CACV,CAEIC,WAAY,qCACZC,UAAW,YACX90G,OAAQ,CACJ+0G,aAAc,KAAUC,aAAaC,cACrC39B,WAAY,QAGpB,CAEIu9B,WAAY,qCACZ70G,OAAQ,CACJ+0G,aAAc,KAAUC,aAAa34G,KACrCi7E,WAAY,QAGpB,CAEIu9B,WAAY,2CACZ70G,OAAQ,CACJ+0G,aAAc,KAAUC,aAAa34G,KACrCi7E,WAAY,OAGpB,CAEIu9B,WAAY,0BACZ70G,OAAQ,CACJ+0G,aAAc,KAAUC,aAAa34G,KACrC47G,WAAY,KAIxBnF,iBAAkB,CACd,CAAEzmH,KAAM,IAAK2wD,MAAO,KACpB,CAAE3wD,KAAM,IAAK2wD,MAAO,KACpB,CAAE3wD,KAAM,IAAK2wD,MAAO,KACpB,CAAE3wD,KAAM,IAAK2wD,MAAO,IAAK+1D,MAAO,CAAC,WACjC,CAAE1mH,KAAM,IAAK2wD,MAAO,IAAK+1D,MAAO,CAAC,SAAU,YAC3C,CAAE1mH,KAAM,IAAK2wD,MAAO,IAAK+1D,MAAO,CAAC,SAAU,YAC3C,CAAE1mH,KAAM,MAAO2wD,MAAO,MAAO+1D,MAAO,CAAC,YAEzCE,QAAS,CACLC,QAAS,CACLhpG,MAAO,IAAIkF,OAAO,0BAClBnF,IAAK,IAAImF,OAAO,gCAIjBgxF,EAAW,CAElB+S,aAAc,UACdC,aAAc,MACd4C,SAAU,CAGN,WACA,MACA,KACA,UACA,SACA,UACA,QACA,OACA,QACA,QACA,WACA,QACA,cACA,WACA,UACA,UACA,SACA,KACA,OACA,OACA,SACA,UACA,QACA,UACA,MACA,OACA,WACA,MACA,KACA,aACA,SACA,KACA,QACA,aACA,YACA,KACA,QACA,MACA,SACA,YACA,QACA,MACA,OACA,SACA,SACA,UACA,UACA,YACA,SACA,WACA,WACA,UACA,SACA,SACA,MACA,SACA,SACA,QACA,SACA,SACA,OACA,QACA,OACA,MACA,OACA,SACA,YACA,SACA,UACA,MACA,OACA,QACA,OACA,QACA,QACA,QACA,MAEJE,UAAW,CACP,KACA,KACA,KACA,KACA,MACA,MACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,MACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,OACA,KACA,KACA,KACA,KAGJC,QAAS,wBACTC,QAAS,wEACTC,OAAQ,cACRC,YAAa,oBACbC,aAAc,oBACdC,UAAW,iCACXC,UAAW,yBACXC,UAAW,+EAEXtwB,UAAW,CACP9yF,KAAM,CAAC,CAAC,OAAQ,qBAAsB,CAAEggH,QAAS,WACjD4E,OAAQ,CAEJ,CACI,gBACA,CACIjB,MAAO,CACH,YAAa,UACb,WAAY,gBAIxB,CAAC,eAAgB,mBAGjB,CAAE3D,QAAS,eAEX,CACI,6DACA,CAAEzlG,MAAO,SAAUsqG,QAAS,QAAStkH,KAAM,YAG/C,CAAC,WAAY,aACb,CAAC,mBAAoB,aACrB,CAAC,gBAAiB,aAClB,CACI,WACA,CACIojH,MAAO,CACH,aAAc,YACd,WAAY,MAKxB,CAAC,kCAAmC,gBACpC,CAAC,6CAA8C,gBAC/C,CAAC,sBAAuB,cACxB,CAAC,yBAA0B,gBAC3B,CAAC,yBAA0B,iBAC3B,CAAC,cAAe,UAEhB,CAAC,QAAS,aAEV,CAAC,kBAAmB,kBACpB,CAAC,kBAAmB,kBACpB,CAAC,IAAK,SAAU,kBAChB,CAAC,IAAK,SAAU,kBAChB,CAAC,IAAK,SAAU,qBAEpBzoD,WAAY,CACR,CAAC,aAAc,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,KAAcykL,YAAYzkL,cAAe,EACzC,KAAc46K,WAAW56K,aAAe,EACxC,KAAcwiI,mBAAmBxiI,aAAe,EAGhD6hZ,GAAoBC,sBAAqB,CAACE,EAAW7+c,EAAUmN,IAASijB,QAAQC,QAAQwub,EAAU,MAClG,MAAMc,GAAMzoE,IACZyoE,GAAIxqU,OLwOO,CAEH3iH,OAnMD,SAAgByY,EAAYznC,EAAS8uT,GACxC,OAAO0pJ,GAA0B/wa,EAAYqnR,GAAY,CAAC,GAAIulI,GACnD,IAAI3d,GAAiBjvY,EAAYznC,EAASq0b,EAAUA,EAASzha,IAAI,OAAwByha,EAASzha,IAAI,MAAqByha,EAASzha,IAAI,MAAkByha,EAASzha,IAAI,OAAqByha,EAASzha,IAAI,MAAqByha,EAASzha,IAAI,MAAsByha,EAASzha,IAAI,MAA0Byha,EAASzha,IAAI,OAAuByha,EAASzha,IAAI,OAAwByha,EAASzha,IAAI,MAAwByha,EAASzha,IAAI,MAAgByha,EAASzha,IAAI,QAE/c,EAgMQwpb,kBA1LD,SAA2BxoZ,GAC9B,OAAO4jZ,GAAensT,kBAAkBz4H,MAAMyuW,iBAAiB1vP,IAC3D/9E,EAAS+9E,EAAO,GAExB,EAuLQ0qU,iBAjLD,SAA0B50a,EAAYznC,EAAS8uT,GAClD,OAAO0pJ,GAA0B/wa,EAAYqnR,GAAY,CAAC,GAAIulI,GACnD,IAAIld,GAAqB1vY,EAAYznC,EAASq0b,EAAUA,EAASzha,IAAI,OAAwByha,EAASzha,IAAI,OAAqByha,EAASzha,IAAI,MAAqByha,EAASzha,IAAI,MAAsByha,EAASzha,IAAI,MAAuByha,EAASzha,IAAI,MAAqByha,EAASzha,IAAI,MAA0Byha,EAASzha,IAAI,OAAuByha,EAASzha,IAAI,OAAwByha,EAASzha,IAAI,MAAsByha,EAASzha,IAAI,MAAyByha,EAASzha,IAAI,QAE/d,EA8KQ0pb,oBA7KD,SAA6BnkD,EAAYx7W,GAC5C,OAAO,IAAIo5V,GAAcoiB,EAAYx7W,EACzC,EA4KQ86X,YAvKD,SAAqB/xa,EAAO+gH,EAAUzzG,GACzC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","sources":["webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostText.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/editor.api.js?11a1","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/browser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/dnd.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/dom.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/event.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/formattedTextRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/globalMouseMoveMonitor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/iframe.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/touch.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css?eadf","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css?1411","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css?c3ba","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css?6d35","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css?c9eb","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css?5cc7","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/navigator.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/history.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css?3621","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css?38af","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css?da29","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css?6b09","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/actions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/arrays.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/assert.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/async.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/buffer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/codicons.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/collections.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/color.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/decorators.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/errors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/event.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/extpath.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/filters.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/functional.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/glob.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/hash.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/iterator.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/map.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/marshalling.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/mime.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/network.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/numbers.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/objects.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/process.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/path.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/platform.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/range.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/resources.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/scrollable.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/severity.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/strings.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/types.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/uint.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/uri.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/common/quickInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/css/css.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/configuration.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorColumnSelection.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveCommands.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/coreCommands.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaState.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/core/keybindingCancellation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/core/editorState.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorBrowser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorExtensions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/bulkEditService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/markerDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css?679f","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewEventHandler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewPart.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/view/renderingContext.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/rangeUtil.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css?d938","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css?bf9b","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/dynamicViewOverlay.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewUserInputEvents.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewLayer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewOverlays.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css?f1f5","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css?25b8","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css?f9e4","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css?5f92","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css?f07c","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css?7ebd","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css?e0d6","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css?1c43","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/rgba.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/minimapTokensColorTracker.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css?0454","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css?5da1","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css?95db","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css?66e1","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css?3970","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewZones/viewZones.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/view/viewContext.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLinesViewportData.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/oneCursor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCollection.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/view/viewEvents.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelEventDispatcher.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/linesLayout.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLayout.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/splitLinesCollection.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/domLineBreaksComputer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/replaceCommand.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/config/commonEditorConfig.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorAtomicMoveOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCommon.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorDeleteOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/shiftCommand.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/surroundSelectionCommand.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorTypeOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorWordOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/controller/wordCharacterClassifier.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/editOperation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/lineTokens.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/stringBuilder.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/core/token.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/editorAction.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/editorCommon.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/editorContextKeys.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/editStack.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textChange.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/indentationGuesser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/intervalTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelTokens.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelEvents.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/tokensStore.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/tokenizationRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfiguration.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/characterPair.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/electricCharacter.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/indentRules.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/onEnter.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfigurationRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageSelector.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageFeatureRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/modesRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/nullMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/richEditBrackets.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/textToHtmlTokenizer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/markersDecorationService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/modeService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/modelService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/resolverService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/standaloneStrings.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/view/editorColorRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/view/overviewZoneManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/lineDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLineRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css?f34f","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/moveCaretCommand.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelens.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css?9aa5","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codeLensCache.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/replaceAllCommand.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/search.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/replacePattern.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css?040a","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputCheckboxes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findOptionsWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findState.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css?da90","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css?a0ce","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/browser/contextScopedHistoryWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css?98ad","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingRanges.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingDecorations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/hiddenRangeModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/indentRangeProvider.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/syntaxRangeProvider.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/intializingRangeProvider.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hoverOperation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css?37e7","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css?66e2","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/labels.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css?57b8","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/embeddedCodeEditorWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css?f6de","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css?ece4","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css?6da1","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/peekView.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/severityIcon/common/severityIcon.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/gotoErrorWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/markerNavigationService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/types.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeAction.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/lazy.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css?24ca","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionMenu.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css?2e73","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionUi.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionCommands.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/markerHoverParticipant.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/insane/insane.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/core/markdownRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/getHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/markdownHoverParticipant.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hoverTypes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostText.css?ea31","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostText.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/inlineCompletionsModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css?ad0f","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/workspaces/common/workspaces.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/uuid.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetVariables.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggest.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestMemory.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestAlternatives.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/completionModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/wordDistance.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css?4482","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/symbolIcons.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/resizable.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestWidgetDetails.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestWidgetStatus.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/files/common/files.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/getIconClasses.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestWidgetRenderer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/wordContextKey.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestCommitCharacters.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestOvertypingCapturer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/suggestWidgetAdapterModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/utils.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostTextController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/inlineCompletionsHoverParticipant.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/color.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorDetector.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPickerModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css?48bd","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPickerWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/colorHoverParticipant.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/modesContentHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hoverWidgets.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/modesGlyphHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css?726f","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/referencesModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToSymbol.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css?5ce5","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesController.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/symbolNavigation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css?f703","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/getLinks.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/bracketSelections.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/wordSelections.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css?41d7","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/editor/common/editor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/openerService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffNavigator.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/worker/defaultWorkerFactory.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/textResourceConfigurationService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/webWorker.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/colorizer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCommon.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationModels.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/abstractKeybindingService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingResolver.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/resolvedKeybindingItem.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/simpleServices.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css?15dd","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css?b51a","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffReview.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/inlineDiffMargin.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/abstractCodeEditorService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/abstractMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languagesRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/modeServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensProviderStyling.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensDto.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/getSemanticTokens.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/modelServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/tokenization.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/themes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneThemeServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/browser/iconsStyleSheet.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/browser/contextKeyService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css?6a84","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css?b2e8","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/layout/browser/layoutService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextViewService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/dialogs/common/dialogs.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/graph.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiationService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/markers/common/markerService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/actions/common/menuService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/common/services/markerDecorationsServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibilityService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/clipboard/browser/clipboardService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedoService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css?63dd","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css?e7c2","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/common/comparers.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputUtils.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css?42c7","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputList.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputBox.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css?d1cf","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css?d9d2","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickAccess.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneEditor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneLanguages.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/extensions/common/extensions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/contrib/format/format.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/editor.api.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css?ab46","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/standaloneThemeService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/cssScanner.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/workerManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/utils/strings.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/cssNodes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/fillers/vscode-nls.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/cssErrors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/languageFacts/entry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/languageFacts/colors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/languageFacts/builtinData.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/utils/objects.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/cssParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/utils/arrays.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/cssSymbolScope.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-languageserver-types/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-languageserver-textdocument/lib/esm/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/cssLanguageTypes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-uri/index.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/utils/resources.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/pathCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/cssCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/selectorPrinting.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/cssHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/cssNavigation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/lintRules.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/cssCodeActions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/lintUtil.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/lint.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/scssScanner.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/cssValidation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/scssErrors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/scssParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/scssCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/lessScanner.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/parser/lessParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/lessCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/data/webCustomData.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/languageFacts/dataProvider.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/languageFacts/dataManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/_deps/vscode-css-languageservice/services/scssNavigation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/languageFeatures.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/cssMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/css/monaco.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-languageserver-types/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/workerManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/fillers/vscode-nls.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-languageserver-textdocument/lib/esm/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/htmlLanguageTypes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/parser/htmlScanner.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/utils/arrays.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/parser/htmlParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/parser/htmlEntities.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/utils/strings.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/languageFacts/fact.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/utils/object.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/languageFacts/dataProvider.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/utils/markup.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/services/pathCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/services/htmlCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/services/htmlHover.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/beautify/beautify-css.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/beautify/beautify-html.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-uri/index.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/languageFacts/data/webCustomData.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/languageFeatures.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/_deps/vscode-html-languageservice/languageFacts/dataManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/htmlMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/html/monaco.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/parser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/workerManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/scanner.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-languageserver-types/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/objects.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/strings.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-languageserver-textdocument/lib/esm/main.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/jsonLanguageTypes.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/fillers/vscode-nls.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/parser/jsonParser.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/json.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonCompletion.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-uri/index.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/glob.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonSchemaService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonValidation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/colors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonDocumentSymbols.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/configuration.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/languageFeatures.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/tokenization.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/jsonMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/json/monaco.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/monaco.contribution.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/lib/typescriptServicesMetadata.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/languageFeatures.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/workerManager.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/lib/lib.index.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/language/typescript/tsMode.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/nls.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibility.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/actions/common/actions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/commands/common/commands.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configuration.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkey.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkeys.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextView.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/descriptors.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/extensions.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiation.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/serviceCollection.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/jsonschemas/common/jsonContributionRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybinding.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingsRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/label/common/label.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css?0d37","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/treeIcons.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css?6c25","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/list/browser/listService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/log/common/log.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/markers/common/markers.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/notification/common/notification.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/opener/common/opener.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/progress/common/progress.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickInput.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/registry/common/platform.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/storage/common/storage.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/telemetry/common/telemetry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/colorRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/iconRegistry.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/styler.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/theme.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/themeService.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedo.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/platform/workspace/common/workspace.js","webpack://httptoolkit-ui/./node_modules/react-monaco-editor/lib/utils.js","webpack://httptoolkit-ui/./node_modules/react-monaco-editor/lib/diff.js","webpack://httptoolkit-ui/./node_modules/react-monaco-editor/lib/editor.js","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css?97bc","webpack://httptoolkit-ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css?df0f"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-action-bar {\r\n\twhite-space: nowrap;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-action-bar .actions-container {\r\n\tdisplay: flex;\r\n\tmargin: 0 auto;\r\n\tpadding: 0;\r\n\theight: 100%;\r\n\twidth: 100%;\r\n\talign-items: center;\r\n}\r\n\r\n.monaco-action-bar.vertical .actions-container {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-action-bar .action-item {\r\n\tdisplay: block;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tcursor: pointer;\r\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\r\n}\r\n\r\n.monaco-action-bar .action-item.disabled {\r\n\tcursor: default;\r\n}\r\n\r\n.monaco-action-bar .action-item .icon,\r\n.monaco-action-bar .action-item .codicon {\r\n\tdisplay: block;\r\n}\r\n\r\n.monaco-action-bar .action-item .codicon {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\twidth: 16px;\r\n\theight: 16px;\r\n}\r\n\r\n.monaco-action-bar .action-label {\r\n\tfont-size: 11px;\r\n\tpadding: 3px;\r\n\tborder-radius: 5px;\r\n}\r\n\r\n.monaco-action-bar .action-item.disabled .action-label,\r\n.monaco-action-bar .action-item.disabled .action-label::before,\r\n.monaco-action-bar .action-item.disabled .action-label:hover {\r\n\topacity: 0.4;\r\n}\r\n\r\n/* Vertical actions */\r\n\r\n.monaco-action-bar.vertical {\r\n\ttext-align: left;\r\n}\r\n\r\n.monaco-action-bar.vertical .action-item {\r\n\tdisplay: block;\r\n}\r\n\r\n.monaco-action-bar.vertical .action-label.separator {\r\n\tdisplay: block;\r\n\tborder-bottom: 1px solid #bbb;\r\n\tpadding-top: 1px;\r\n\tmargin-left: .8em;\r\n\tmargin-right: .8em;\r\n}\r\n\r\n.monaco-action-bar .action-item .action-label.separator {\r\n\twidth: 1px;\r\n\theight: 16px;\r\n\tmargin: 5px 4px !important;\r\n\tcursor: default;\r\n\tmin-width: 1px;\r\n\tpadding: 0;\r\n\tbackground-color: #bbb;\r\n}\r\n\r\n.secondary-actions .monaco-action-bar .action-label {\r\n\tmargin-left: 6px;\r\n}\r\n\r\n/* Action Items */\r\n.monaco-action-bar .action-item.select-container {\r\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\r\n\tflex: 1;\r\n\tmax-width: 170px;\r\n\tmin-width: 60px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tmargin-right: 10px;\r\n}\r\n\r\n.monaco-action-bar .action-item.action-dropdown-item {\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-action-bar .action-item.action-dropdown-item > .action-label {\r\n\tmargin-right: 1px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,aAAa;CACb,cAAc;CACd,UAAU;CACV,YAAY;CACZ,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,cAAc;CACd,mBAAmB;CACnB,uBAAuB;CACvB,eAAe;CACf,kBAAkB,GAAG,qFAAqF;AAC3G;;AAEA;CACC,eAAe;AAChB;;AAEA;;CAEC,cAAc;AACf;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,kBAAkB;AACnB;;AAEA;;;CAGC,YAAY;AACb;;AAEA,qBAAqB;;AAErB;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,cAAc;CACd,6BAA6B;CAC7B,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,UAAU;CACV,YAAY;CACZ,0BAA0B;CAC1B,eAAe;CACf,cAAc;CACd,UAAU;CACV,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;AACjB;;AAEA,iBAAiB;AACjB;CACC,gBAAgB,EAAE,iFAAiF;CACnG,OAAO;CACP,gBAAgB;CAChB,eAAe;CACf,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,iBAAiB;AAClB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-action-bar {\\r\\n\\twhite-space: nowrap;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .actions-container {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin: 0 auto;\\r\\n\\tpadding: 0;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .actions-container {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item {\\r\\n\\tdisplay: block;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcursor: pointer;\\r\\n\\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled {\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .icon,\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-label {\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 3px;\\r\\n\\tborder-radius: 5px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled .action-label,\\r\\n.monaco-action-bar .action-item.disabled .action-label::before,\\r\\n.monaco-action-bar .action-item.disabled .action-label:hover {\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n/* Vertical actions */\\r\\n\\r\\n.monaco-action-bar.vertical {\\r\\n\\ttext-align: left;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-item {\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-label.separator {\\r\\n\\tdisplay: block;\\r\\n\\tborder-bottom: 1px solid #bbb;\\r\\n\\tpadding-top: 1px;\\r\\n\\tmargin-left: .8em;\\r\\n\\tmargin-right: .8em;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .action-label.separator {\\r\\n\\twidth: 1px;\\r\\n\\theight: 16px;\\r\\n\\tmargin: 5px 4px !important;\\r\\n\\tcursor: default;\\r\\n\\tmin-width: 1px;\\r\\n\\tpadding: 0;\\r\\n\\tbackground-color: #bbb;\\r\\n}\\r\\n\\r\\n.secondary-actions .monaco-action-bar .action-label {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n/* Action Items */\\r\\n.monaco-action-bar .action-item.select-container {\\r\\n\\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\\r\\n\\tflex: 1;\\r\\n\\tmax-width: 170px;\\r\\n\\tmin-width: 60px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tmargin-right: 10px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.action-dropdown-item {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.action-dropdown-item > .action-label {\\r\\n\\tmargin-right: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-aria-container {\r\n\tposition: absolute; /* try to hide from window but not from screen readers */\r\n\tleft:-999em;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB,EAAE,wDAAwD;CAC5E,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-aria-container {\\r\\n\\tposition: absolute; /* try to hide from window but not from screen readers */\\r\\n\\tleft:-999em;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-text-button {\r\n\tbox-sizing: border-box;\r\n\tdisplay: flex;\r\n\twidth: 100%;\r\n\tpadding: 4px;\r\n\ttext-align: center;\r\n\tcursor: pointer;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n}\r\n\r\n.monaco-text-button:focus {\r\n\toutline-offset: 2px !important;\r\n}\r\n\r\n.monaco-text-button:hover {\r\n\ttext-decoration: none !important;\r\n}\r\n\r\n.monaco-button.disabled:focus,\r\n.monaco-button.disabled {\r\n\topacity: 0.4 !important;\r\n\tcursor: default;\r\n}\r\n\r\n.monaco-text-button > .codicon {\r\n\tmargin: 0 0.2em;\r\n\tcolor: inherit !important;\r\n}\r\n\r\n.monaco-button-dropdown {\r\n\tdisplay: flex;\r\n\tcursor: pointer;\r\n}\r\n\r\n.monaco-button-dropdown > .monaco-dropdown-button {\r\n\tmargin-left: 1px;\r\n}\r\n\r\n.monaco-description-button {\r\n\tflex-direction: column;\r\n}\r\n\r\n.monaco-description-button .monaco-button-label {\r\n\tfont-weight: 500;\r\n}\r\n\r\n.monaco-description-button .monaco-button-description {\r\n\tfont-style: italic;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,aAAa;CACb,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,eAAe;CACf,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,gCAAgC;AACjC;;AAEA;;CAEC,uBAAuB;CACvB,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,yBAAyB;AAC1B;;AAEA;CACC,aAAa;CACb,eAAe;AAChB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-text-button {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n\\twidth: 100%;\\r\\n\\tpadding: 4px;\\r\\n\\ttext-align: center;\\r\\n\\tcursor: pointer;\\r\\n\\tjustify-content: center;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-text-button:focus {\\r\\n\\toutline-offset: 2px !important;\\r\\n}\\r\\n\\r\\n.monaco-text-button:hover {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.monaco-button.disabled:focus,\\r\\n.monaco-button.disabled {\\r\\n\\topacity: 0.4 !important;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-text-button > .codicon {\\r\\n\\tmargin: 0 0.2em;\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-button-dropdown {\\r\\n\\tdisplay: flex;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-button-dropdown > .monaco-dropdown-button {\\r\\n\\tmargin-left: 1px;\\r\\n}\\r\\n\\r\\n.monaco-description-button {\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n.monaco-description-button .monaco-button-label {\\r\\n\\tfont-weight: 500;\\r\\n}\\r\\n\\r\\n.monaco-description-button .monaco-button-description {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-custom-checkbox {\r\n\tmargin-left: 2px;\r\n\tfloat: left;\r\n\tcursor: pointer;\r\n\toverflow: hidden;\r\n\topacity: 0.7;\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tborder: 1px solid transparent;\r\n\tpadding: 1px;\r\n\tbox-sizing:\tborder-box;\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n.monaco-custom-checkbox:hover,\r\n.monaco-custom-checkbox.checked {\r\n\topacity: 1;\r\n}\r\n\r\n.hc-black .monaco-custom-checkbox {\r\n\tbackground: none;\r\n}\r\n\r\n.hc-black .monaco-custom-checkbox:hover {\r\n\tbackground: none;\r\n}\r\n\r\n.monaco-custom-checkbox.monaco-simple-checkbox {\r\n\theight: 18px;\r\n\twidth: 18px;\r\n\tborder: 1px solid transparent;\r\n\tborder-radius: 3px;\r\n\tmargin-right: 9px;\r\n\tmargin-left: 0px;\r\n\tpadding: 0px;\r\n\topacity: 1;\r\n\tbackground-size: 16px !important;\r\n}\r\n\r\n/* hide check when unchecked */\r\n.monaco-custom-checkbox.monaco-simple-checkbox:not(.checked)::before {\r\n\tvisibility: hidden;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,6BAA6B;CAC7B,YAAY;CACZ,sBAAsB;CACtB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,WAAW;CACX,6BAA6B;CAC7B,kBAAkB;CAClB,iBAAiB;CACjB,gBAAgB;CAChB,YAAY;CACZ,UAAU;CACV,gCAAgC;AACjC;;AAEA,8BAA8B;AAC9B;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-custom-checkbox {\\r\\n\\tmargin-left: 2px;\\r\\n\\tfloat: left;\\r\\n\\tcursor: pointer;\\r\\n\\toverflow: hidden;\\r\\n\\topacity: 0.7;\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tpadding: 1px;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox:hover,\\r\\n.monaco-custom-checkbox.checked {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox:hover {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox {\\r\\n\\theight: 18px;\\r\\n\\twidth: 18px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tborder-radius: 3px;\\r\\n\\tmargin-right: 9px;\\r\\n\\tmargin-left: 0px;\\r\\n\\tpadding: 0px;\\r\\n\\topacity: 1;\\r\\n\\tbackground-size: 16px !important;\\r\\n}\\r\\n\\r\\n/* hide check when unchecked */\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox:not(.checked)::before {\\r\\n\\tvisibility: hidden;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.codicon-wrench-subaction {\r\n\topacity: 0.5;\r\n}\r\n\r\n@keyframes codicon-spin {\r\n\t100% {\r\n\t\ttransform:rotate(360deg);\r\n\t}\r\n}\r\n\r\n.codicon-sync.codicon-modifier-spin,\r\n.codicon-loading.codicon-modifier-spin,\r\n.codicon-gear.codicon-modifier-spin,\r\n.codicon-notebook-state-executing.codicon-modifier-spin {\r\n\t/* Use steps to throttle FPS to reduce CPU usage */\r\n\tanimation: codicon-spin 1.5s steps(30) infinite;\r\n}\r\n\r\n.codicon-modifier-disabled {\r\n\topacity: 0.4;\r\n}\r\n\r\n/* custom speed & easing for loading icon */\r\n.codicon-loading,\r\n.codicon-tree-item-loading::before {\r\n\tanimation-duration: 1s !important;\r\n\tanimation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67) !important;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;AACb;;AAEA;CACC;EACC,wBAAwB;CACzB;AACD;;AAEA;;;;CAIC,kDAAkD;CAClD,+CAA+C;AAChD;;AAEA;CACC,YAAY;AACb;;AAEA,2CAA2C;AAC3C;;CAEC,iCAAiC;CACjC,0EAA0E;AAC3E\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.codicon-wrench-subaction {\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\n@keyframes codicon-spin {\\r\\n\\t100% {\\r\\n\\t\\ttransform:rotate(360deg);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.codicon-sync.codicon-modifier-spin,\\r\\n.codicon-loading.codicon-modifier-spin,\\r\\n.codicon-gear.codicon-modifier-spin,\\r\\n.codicon-notebook-state-executing.codicon-modifier-spin {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.5s steps(30) infinite;\\r\\n}\\r\\n\\r\\n.codicon-modifier-disabled {\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n/* custom speed & easing for loading icon */\\r\\n.codicon-loading,\\r\\n.codicon-tree-item-loading::before {\\r\\n\\tanimation-duration: 1s !important;\\r\\n\\tanimation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67) !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./codicon.ttf\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n@font-face {\r\n\tfont-family: \"codicon\";\r\n\tsrc: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format(\"truetype\");\r\n}\r\n\r\n.codicon[class*='codicon-'] {\r\n\tfont: normal normal normal 16px/1 codicon;\r\n\tdisplay: inline-block;\r\n\ttext-decoration: none;\r\n\ttext-rendering: auto;\r\n\ttext-align: center;\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n/* icon rules are dynamically created in codiconStyles */\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,+DAA0C;AAC3C;;AAEA;CACC,yCAAyC;CACzC,qBAAqB;CACrB,qBAAqB;CACrB,oBAAoB;CACpB,kBAAkB;CAClB,mCAAmC;CACnC,kCAAkC;CAClC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA,wDAAwD\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n@font-face {\\r\\n\\tfont-family: \\\"codicon\\\";\\r\\n\\tsrc: url(./codicon.ttf) format(\\\"truetype\\\");\\r\\n}\\r\\n\\r\\n.codicon[class*='codicon-'] {\\r\\n\\tfont: normal normal normal 16px/1 codicon;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-decoration: none;\\r\\n\\ttext-rendering: auto;\\r\\n\\ttext-align: center;\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/* icon rules are dynamically created in codiconStyles */\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.context-view {\r\n\tposition: absolute;\r\n\tz-index: 2500;\r\n}\r\n\r\n.context-view.fixed {\r\n\tall: initial;\r\n\tfont-family: inherit;\r\n\tfont-size: 13px;\r\n\tposition: fixed;\r\n\tz-index: 2500;\r\n\tcolor: inherit;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,aAAa;CACb,cAAc;AACf\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 2500;\\r\\n}\\r\\n\\r\\n.context-view.fixed {\\r\\n\\tall: initial;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: 13px;\\r\\n\\tposition: fixed;\\r\\n\\tz-index: 2500;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-count-badge {\r\n\tpadding: 3px 6px;\r\n\tborder-radius: 11px;\r\n\tfont-size: 11px;\r\n\tmin-width: 18px;\r\n\tmin-height: 18px;\r\n\tline-height: 11px;\r\n\tfont-weight: normal;\r\n\ttext-align: center;\r\n\tdisplay: inline-block;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.monaco-count-badge.long {\r\n\tpadding: 2px 3px;\r\n\tborder-radius: 2px;\r\n\tmin-height: auto;\r\n\tline-height: normal;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,mBAAmB;CACnB,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;CAChB,mBAAmB;AACpB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-count-badge {\\r\\n\\tpadding: 3px 6px;\\r\\n\\tborder-radius: 11px;\\r\\n\\tfont-size: 11px;\\r\\n\\tmin-width: 18px;\\r\\n\\tmin-height: 18px;\\r\\n\\tline-height: 11px;\\r\\n\\tfont-weight: normal;\\r\\n\\ttext-align: center;\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-count-badge.long {\\r\\n\\tpadding: 2px 3px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-dropdown {\r\n\theight: 100%;\r\n\tpadding: 0;\r\n}\r\n\r\n.monaco-dropdown > .dropdown-label {\r\n\tcursor: pointer;\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.monaco-dropdown > .dropdown-label > .action-label.disabled {\r\n\tcursor: default;\r\n}\r\n\r\n.monaco-dropdown-with-primary {\r\n\tdisplay: flex !important;\r\n\tflex-direction: row;\r\n\tborder-radius: 5px;\r\n}\r\n\r\n.monaco-dropdown-with-primary > .action-container > .action-label {\r\n\tmargin-right: 0;\r\n}\r\n\r\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\r\n\tfont-size: 12px;\r\n\tpadding-left: 0px;\r\n\tpadding-right: 0px;\r\n\tline-height: 16px;\r\n\tmargin-left: -3px;\r\n}\r\n\r\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\r\n\tdisplay: block;\r\n\tbackground-size: 16px;\r\n\tbackground-position: center center;\r\n\tbackground-repeat: no-repeat;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;CACZ,UAAU;AACX;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,wBAAwB;CACxB,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;AAClB;;AAEA;CACC,cAAc;CACd,qBAAqB;CACrB,kCAAkC;CAClC,4BAA4B;AAC7B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-dropdown {\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.monaco-dropdown > .dropdown-label {\\r\\n\\tcursor: pointer;\\r\\n\\theight: 100%;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.monaco-dropdown > .dropdown-label > .action-label.disabled {\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-dropdown-with-primary {\\r\\n\\tdisplay: flex !important;\\r\\n\\tflex-direction: row;\\r\\n\\tborder-radius: 5px;\\r\\n}\\r\\n\\r\\n.monaco-dropdown-with-primary > .action-container > .action-label {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label .codicon[class*='codicon-'] {\\r\\n\\tfont-size: 12px;\\r\\n\\tpadding-left: 0px;\\r\\n\\tpadding-right: 0px;\\r\\n\\tline-height: 16px;\\r\\n\\tmargin-left: -3px;\\r\\n}\\r\\n\\r\\n.monaco-dropdown-with-primary > .dropdown-action-container > .monaco-dropdown > .dropdown-label > .action-label {\\r\\n\\tdisplay: block;\\r\\n\\tbackground-size: 16px;\\r\\n\\tbackground-position: center center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* ---------- Find input ---------- */\r\n\r\n.monaco-findInput {\r\n\tposition: relative;\r\n}\r\n\r\n.monaco-findInput .monaco-inputbox {\r\n\tfont-size: 13px;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-findInput > .controls {\r\n\tposition: absolute;\r\n\ttop: 3px;\r\n\tright: 2px;\r\n}\r\n\r\n.vs .monaco-findInput.disabled {\r\n\tbackground-color: #E1E1E1;\r\n}\r\n\r\n/* Theming */\r\n.vs-dark .monaco-findInput.disabled {\r\n\tbackground-color: #333;\r\n}\r\n\r\n/* Highlighting */\r\n.monaco-findInput.highlight-0 .controls {\r\n\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\r\n}\r\n.monaco-findInput.highlight-1 .controls {\r\n\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\r\n}\r\n.hc-black .monaco-findInput.highlight-0 .controls,\r\n.vs-dark .monaco-findInput.highlight-0 .controls {\r\n\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\r\n}\r\n.hc-black .monaco-findInput.highlight-1 .controls,\r\n.vs-dark .monaco-findInput.highlight-1 .controls {\r\n\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\r\n}\r\n\r\n@keyframes monaco-findInput-highlight-0 {\r\n\t0% { background: rgba(253, 255, 0, 0.8); }\r\n\t100% { background: transparent; }\r\n}\r\n@keyframes monaco-findInput-highlight-1 {\r\n\t0% { background: rgba(253, 255, 0, 0.8); }\r\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\r\n\t99% { background: transparent; }\r\n}\r\n\r\n@keyframes monaco-findInput-highlight-dark-0 {\r\n\t0% { background: rgba(255, 255, 255, 0.44); }\r\n\t100% { background: transparent; }\r\n}\r\n@keyframes monaco-findInput-highlight-dark-1 {\r\n\t0% { background: rgba(255, 255, 255, 0.44); }\r\n\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\r\n\t99% { background: transparent; }\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F,qCAAqC;;AAErC;CACC,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,WAAW;AACZ;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,UAAU;AACX;;AAEA;CACC,yBAAyB;AAC1B;;AAEA,YAAY;AACZ;CACC,sBAAsB;AACvB;;AAEA,iBAAiB;AACjB;CACC,uDAAuD;AACxD;AACA;CACC,uDAAuD;AACxD;AACA;;CAEC,4DAA4D;AAC7D;AACA;;CAEC,4DAA4D;AAC7D;;AAEA;CACC,KAAK,kCAAkC,EAAE;CACzC,OAAO,uBAAuB,EAAE;AACjC;AACA;CACC,KAAK,kCAAkC,EAAE;CACzC,kHAAkH;CAClH,MAAM,uBAAuB,EAAE;AAChC;;AAEA;CACC,KAAK,qCAAqC,EAAE;CAC5C,OAAO,uBAAuB,EAAE;AACjC;AACA;CACC,KAAK,qCAAqC,EAAE;CAC5C,kHAAkH;CAClH,MAAM,uBAAuB,EAAE;AAChC\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- Find input ---------- */\\r\\n\\r\\n.monaco-findInput {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-findInput .monaco-inputbox {\\r\\n\\tfont-size: 13px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.vs .monaco-findInput.disabled {\\r\\n\\tbackground-color: #E1E1E1;\\r\\n}\\r\\n\\r\\n/* Theming */\\r\\n.vs-dark .monaco-findInput.disabled {\\r\\n\\tbackground-color: #333;\\r\\n}\\r\\n\\r\\n/* Highlighting */\\r\\n.monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\\r\\n}\\r\\n.monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-0 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-1 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-0 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-1 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-dark-0 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-dark-1 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-hover {\r\n\tcursor: default;\r\n\tposition: absolute;\r\n\toverflow: hidden;\r\n\tz-index: 50;\r\n\tuser-select: text;\r\n\t-webkit-user-select: text;\r\n\t-ms-user-select: text;\r\n\tbox-sizing: initial;\r\n\tanimation: fadein 100ms linear;\r\n\tline-height: 1.5em;\r\n}\r\n\r\n.monaco-hover.hidden {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-hover .hover-contents {\r\n\tpadding: 4px 8px;\r\n}\r\n\r\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) {\r\n\tmax-width: 500px;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr {\r\n\tmin-width: 100%;\r\n}\r\n\r\n.monaco-hover p,\r\n.monaco-hover .code,\r\n.monaco-hover ul {\r\n\tmargin: 8px 0;\r\n}\r\n\r\n.monaco-hover code {\r\n\tfont-family: var(--monaco-monospace-font);\r\n}\r\n\r\n.monaco-hover hr {\r\n\tbox-sizing: border-box;\r\n\tborder-left: 0px;\r\n\tborder-right: 0px;\r\n\tmargin-top: 4px;\r\n\tmargin-bottom: -4px;\r\n\tmargin-left: -8px;\r\n\tmargin-right: -8px;\r\n\theight: 1px;\r\n}\r\n\r\n.monaco-hover p:first-child,\r\n.monaco-hover .code:first-child,\r\n.monaco-hover ul:first-child {\r\n\tmargin-top: 0;\r\n}\r\n\r\n.monaco-hover p:last-child,\r\n.monaco-hover .code:last-child,\r\n.monaco-hover ul:last-child {\r\n\tmargin-bottom: 0;\r\n}\r\n\r\n/* MarkupContent Layout */\r\n.monaco-hover ul {\r\n\tpadding-left: 20px;\r\n}\r\n.monaco-hover ol {\r\n\tpadding-left: 20px;\r\n}\r\n\r\n.monaco-hover li > p {\r\n\tmargin-bottom: 0;\r\n}\r\n\r\n.monaco-hover li > ul {\r\n\tmargin-top: 0;\r\n}\r\n\r\n.monaco-hover code {\r\n\tborder-radius: 3px;\r\n\tpadding: 0 0.4em;\r\n}\r\n\r\n.monaco-hover .monaco-tokenized-source {\r\n\twhite-space: pre-wrap;\r\n}\r\n\r\n.monaco-hover .hover-row.status-bar {\r\n\tfont-size: 12px;\r\n\tline-height: 22px;\r\n}\r\n\r\n.monaco-hover .hover-row.status-bar .actions {\r\n\tdisplay: flex;\r\n\tpadding: 0px 8px;\r\n}\r\n\r\n.monaco-hover .hover-row.status-bar .actions .action-container {\r\n\tmargin-right: 16px;\r\n\tcursor: pointer;\r\n}\r\n\r\n.monaco-hover .hover-row.status-bar .actions .action-container .action .icon {\r\n\tpadding-right: 4px;\r\n}\r\n\r\n.monaco-hover .markdown-hover .hover-contents .codicon {\r\n\tcolor: inherit;\r\n\tfont-size: inherit;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.monaco-hover .hover-contents a.code-link:hover,\r\n.monaco-hover .hover-contents a.code-link {\r\n\tcolor: inherit;\r\n}\r\n\r\n.monaco-hover .hover-contents a.code-link:before {\r\n\tcontent: '(';\r\n}\r\n\r\n.monaco-hover .hover-contents a.code-link:after {\r\n\tcontent: ')';\r\n}\r\n\r\n.monaco-hover .hover-contents a.code-link > span {\r\n\ttext-decoration: underline;\r\n\t/** Hack to force underline to show **/\r\n\tborder-bottom: 1px solid transparent;\r\n\ttext-underline-position: under;\r\n}\r\n\r\n/** Spans in markdown hovers need a margin-bottom to avoid looking cramped: https://github.com/microsoft/vscode/issues/101496 **/\r\n.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents) span {\r\n\tmargin-bottom: 4px;\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-hover-content .action-container a {\r\n\t-webkit-user-select: none;\r\n\tuser-select: none;\r\n}\r\n\r\n.monaco-hover-content .action-container.disabled {\r\n\tpointer-events: none;\r\n\topacity: 0.4;\r\n\tcursor: default;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,mBAAmB;CACnB,8BAA8B;CAC9B,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,eAAe;AAChB;;AAEA;;;CAGC,aAAa;AACd;;AAEA;CACC,yCAAyC;AAC1C;;AAEA;CACC,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB,iBAAiB;CACjB,kBAAkB;CAClB,WAAW;AACZ;;AAEA;;;CAGC,aAAa;AACd;;AAEA;;;CAGC,gBAAgB;AACjB;;AAEA,yBAAyB;AACzB;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,eAAe;CACf,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,eAAe;AAChB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,sBAAsB;AACvB;;AAEA;;CAEC,cAAc;AACf;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,0BAA0B;CAC1B,sCAAsC;CACtC,oCAAoC;CACpC,8BAA8B;AAC/B;;AAEA,gIAAgI;AAChI;CACC,kBAAkB;CAClB,qBAAqB;AACtB;;AAEA;CACC,yBAAyB;CACzB,iBAAiB;AAClB;;AAEA;CACC,oBAAoB;CACpB,YAAY;CACZ,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-hover {\\r\\n\\tcursor: default;\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tbox-sizing: initial;\\r\\n\\tanimation: fadein 100ms linear;\\r\\n\\tline-height: 1.5em;\\r\\n}\\r\\n\\r\\n.monaco-hover.hidden {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents {\\r\\n\\tpadding: 4px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) {\\r\\n\\tmax-width: 500px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr {\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-hover p,\\r\\n.monaco-hover .code,\\r\\n.monaco-hover ul {\\r\\n\\tmargin: 8px 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-hover hr {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tborder-left: 0px;\\r\\n\\tborder-right: 0px;\\r\\n\\tmargin-top: 4px;\\r\\n\\tmargin-bottom: -4px;\\r\\n\\tmargin-left: -8px;\\r\\n\\tmargin-right: -8px;\\r\\n\\theight: 1px;\\r\\n}\\r\\n\\r\\n.monaco-hover p:first-child,\\r\\n.monaco-hover .code:first-child,\\r\\n.monaco-hover ul:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover p:last-child,\\r\\n.monaco-hover .code:last-child,\\r\\n.monaco-hover ul:last-child {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n/* MarkupContent Layout */\\r\\n.monaco-hover ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n.monaco-hover ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-hover li > p {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover li > ul {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-hover .monaco-tokenized-source {\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar {\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 0px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container {\\r\\n\\tmargin-right: 16px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container .action .icon {\\r\\n\\tpadding-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover .hover-contents .codicon {\\r\\n\\tcolor: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link:hover,\\r\\n.monaco-hover .hover-contents a.code-link {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n/** Spans in markdown hovers need a margin-bottom to avoid looking cramped: https://github.com/microsoft/vscode/issues/101496 **/\\r\\n.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents) span {\\r\\n\\tmargin-bottom: 4px;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-hover-content .action-container a {\\r\\n\\t-webkit-user-select: none;\\r\\n\\tuser-select: none;\\r\\n}\\r\\n\\r\\n.monaco-hover-content .action-container.disabled {\\r\\n\\tpointer-events: none;\\r\\n\\topacity: 0.4;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* ---------- Icon label ---------- */\r\n\r\n.monaco-icon-label {\r\n\tdisplay: flex; /* required for icons support :before rule */\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n}\r\n\r\n.monaco-icon-label::before {\r\n\r\n\t/* svg icons rendered as background image */\r\n\tbackground-size: 16px;\r\n\tbackground-position: left center;\r\n\tbackground-repeat: no-repeat;\r\n\tpadding-right: 6px;\r\n\twidth: 16px;\r\n\theight: 22px;\r\n\tline-height: inherit !important;\r\n\tdisplay: inline-block;\r\n\r\n\t/* fonts icons */\r\n\t-webkit-font-smoothing: antialiased;\r\n\t-moz-osx-font-smoothing: grayscale;\r\n\tvertical-align: top;\r\n\r\n\tflex-shrink: 0; /* fix for https://github.com/microsoft/vscode/issues/13787 */\r\n}\r\n\r\n.monaco-icon-label > .monaco-icon-label-container {\r\n\tmin-width: 0;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\tflex: 1;\r\n}\r\n\r\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {\r\n\tcolor: inherit;\r\n\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\r\n}\r\n\r\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator {\r\n\tmargin: 0 2px;\r\n\topacity: 0.5;\r\n}\r\n\r\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\r\n\topacity: .7;\r\n\tmargin-left: 0.5em;\r\n\tfont-size: 0.9em;\r\n\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\r\n}\r\n\r\n.monaco-icon-label.nowrap > .monaco-icon-label-container > .monaco-icon-description-container > .label-description{\r\n\twhite-space: nowrap\r\n}\r\n\r\n.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\r\n\topacity: .95;\r\n}\r\n\r\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\r\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\r\n\tfont-style: italic;\r\n}\r\n\r\n.monaco-icon-label.deprecated {\r\n\ttext-decoration: line-through;\r\n\topacity: 0.66;\r\n}\r\n\r\n/* make sure apply italic font style to decorations as well */\r\n.monaco-icon-label.italic::after {\r\n\tfont-style: italic;\r\n}\r\n\r\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\r\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\r\n\ttext-decoration: line-through;\r\n}\r\n\r\n.monaco-icon-label::after {\r\n\topacity: 0.75;\r\n\tfont-size: 90%;\r\n\tfont-weight: 600;\r\n\tmargin: 0 16px 0 5px;\r\n\ttext-align: center;\r\n}\r\n\r\n/* make sure selection color wins when a label is being selected */\r\n.monaco-list:focus .selected .monaco-icon-label, /* list */\r\n.monaco-list:focus .selected .monaco-icon-label::after\r\n{\r\n\tcolor: inherit !important;\r\n}\r\n\r\n.monaco-list-row.focused.selected .label-description,\r\n.monaco-list-row.selected .label-description {\r\n\topacity: .8;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,qCAAqC;;AAErC;CACC,aAAa,EAAE,4CAA4C;CAC3D,gBAAgB;CAChB,uBAAuB;AACxB;;AAEA;;CAEC,2CAA2C;CAC3C,qBAAqB;CACrB,gCAAgC;CAChC,4BAA4B;CAC5B,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,+BAA+B;CAC/B,qBAAqB;;CAErB,gBAAgB;CAChB,mCAAmC;CACnC,kCAAkC;CAClC,mBAAmB;;CAEnB,cAAc,EAAE,6DAA6D;AAC9E;;AAEA;CACC,YAAY;CACZ,gBAAgB;CAChB,uBAAuB;CACvB,OAAO;AACR;;AAEA;CACC,cAAc;CACd,gBAAgB,EAAE,4DAA4D;AAC/E;;AAEA;CACC,aAAa;CACb,YAAY;AACb;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,gBAAgB;CAChB,gBAAgB,EAAE,4DAA4D;AAC/E;;AAEA;CACC;AACD;;AAEA;CACC,YAAY;AACb;;AAEA;;CAEC,kBAAkB;AACnB;;AAEA;CACC,6BAA6B;CAC7B,aAAa;AACd;;AAEA,6DAA6D;AAC7D;CACC,kBAAkB;AACnB;;AAEA;;CAEC,6BAA6B;AAC9B;;AAEA;CACC,aAAa;CACb,cAAc;CACd,gBAAgB;CAChB,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA,kEAAkE;AAClE;;;CAGC,yBAAyB;AAC1B;;AAEA;;CAEC,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* ---------- Icon label ---------- */\\r\\n\\r\\n.monaco-icon-label {\\r\\n\\tdisplay: flex; /* required for icons support :before rule */\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::before {\\r\\n\\r\\n\\t/* svg icons rendered as background image */\\r\\n\\tbackground-size: 16px;\\r\\n\\tbackground-position: left center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tpadding-right: 6px;\\r\\n\\twidth: 16px;\\r\\n\\theight: 22px;\\r\\n\\tline-height: inherit !important;\\r\\n\\tdisplay: inline-block;\\r\\n\\r\\n\\t/* fonts icons */\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tvertical-align: top;\\r\\n\\r\\n\\tflex-shrink: 0; /* fix for https://github.com/microsoft/vscode/issues/13787 */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container {\\r\\n\\tmin-width: 0;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {\\r\\n\\tcolor: inherit;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator {\\r\\n\\tmargin: 0 2px;\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .7;\\r\\n\\tmargin-left: 0.5em;\\r\\n\\tfont-size: 0.9em;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.monaco-icon-label.nowrap > .monaco-icon-label-container > .monaco-icon-description-container > .label-description{\\r\\n\\twhite-space: nowrap\\r\\n}\\r\\n\\r\\n.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .95;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.deprecated {\\r\\n\\ttext-decoration: line-through;\\r\\n\\topacity: 0.66;\\r\\n}\\r\\n\\r\\n/* make sure apply italic font style to decorations as well */\\r\\n.monaco-icon-label.italic::after {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::after {\\r\\n\\topacity: 0.75;\\r\\n\\tfont-size: 90%;\\r\\n\\tfont-weight: 600;\\r\\n\\tmargin: 0 16px 0 5px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n/* make sure selection color wins when a label is being selected */\\r\\n.monaco-list:focus .selected .monaco-icon-label, /* list */\\r\\n.monaco-list:focus .selected .monaco-icon-label::after\\r\\n{\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-list-row.focused.selected .label-description,\\r\\n.monaco-list-row.selected .label-description {\\r\\n\\topacity: .8;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-inputbox {\r\n\tposition: relative;\r\n\tdisplay: block;\r\n\tpadding: 0;\r\n\tbox-sizing:\tborder-box;\r\n\r\n\t/* Customizable */\r\n\tfont-size: inherit;\r\n}\r\n\r\n.monaco-inputbox.idle {\r\n\tborder: 1px solid transparent;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > .input,\r\n.monaco-inputbox > .ibwrapper > .mirror {\r\n\r\n\t/* Customizable */\r\n\tpadding: 4px;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper {\r\n\tposition: relative;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > .input {\r\n\tdisplay: inline-block;\r\n\tbox-sizing:\tborder-box;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tline-height: inherit;\r\n\tborder: none;\r\n\tfont-family: inherit;\r\n\tfont-size: inherit;\r\n\tresize: none;\r\n\tcolor: inherit;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > input {\r\n\ttext-overflow: ellipsis;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > textarea.input {\r\n\tdisplay: block;\r\n\t-ms-overflow-style: none; /* IE 10+: hide scrollbars */\r\n\tscrollbar-width: none; /* Firefox: hide scrollbars */\r\n\toutline: none;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > textarea.input::-webkit-scrollbar {\r\n\tdisplay: none; /* Chrome + Safari: hide scrollbar */\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > textarea.input.empty {\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-inputbox > .ibwrapper > .mirror {\r\n\tposition: absolute;\r\n\tdisplay: inline-block;\r\n\twidth: 100%;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tbox-sizing: border-box;\r\n\twhite-space: pre-wrap;\r\n\tvisibility: hidden;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n/* Context view */\r\n\r\n.monaco-inputbox-container {\r\n\ttext-align: right;\r\n}\r\n\r\n.monaco-inputbox-container .monaco-inputbox-message {\r\n\tdisplay: inline-block;\r\n\toverflow: hidden;\r\n\ttext-align: left;\r\n\twidth: 100%;\r\n\tbox-sizing:\tborder-box;\r\n\tpadding: 0.4em;\r\n\tfont-size: 12px;\r\n\tline-height: 17px;\r\n\tmargin-top: -1px;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n/* Action bar support */\r\n.monaco-inputbox .monaco-action-bar {\r\n\tposition: absolute;\r\n\tright: 2px;\r\n\ttop: 4px;\r\n}\r\n\r\n.monaco-inputbox .monaco-action-bar .action-item {\r\n\tmargin-left: 2px;\r\n}\r\n\r\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\r\n\tbackground-repeat: no-repeat;\r\n\twidth: 16px;\r\n\theight: 16px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,cAAc;CACd,UAAU;CACV,sBAAsB;;CAEtB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,6BAA6B;AAC9B;;AAEA;;;CAGC,iBAAiB;CACjB,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,sBAAsB;CACtB,WAAW;CACX,YAAY;CACZ,oBAAoB;CACpB,YAAY;CACZ,oBAAoB;CACpB,kBAAkB;CAClB,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,cAAc;CACd,wBAAwB,EAAE,4BAA4B;CACtD,qBAAqB,EAAE,6BAA6B;CACpD,aAAa;AACd;;AAEA;CACC,aAAa,EAAE,oCAAoC;AACpD;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,WAAW;CACX,MAAM;CACN,OAAO;CACP,sBAAsB;CACtB,qBAAqB;CACrB,kBAAkB;CAClB,qBAAqB;AACtB;;AAEA,iBAAiB;;AAEjB;CACC,iBAAiB;AAClB;;AAEA;CACC,qBAAqB;CACrB,gBAAgB;CAChB,gBAAgB;CAChB,WAAW;CACX,sBAAsB;CACtB,cAAc;CACd,eAAe;CACf,iBAAiB;CACjB,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA,uBAAuB;AACvB;CACC,kBAAkB;CAClB,UAAU;CACV,QAAQ;AACT;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,4BAA4B;CAC5B,WAAW;CACX,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-inputbox {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n\\tpadding: 0;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tfont-size: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox.idle {\\r\\n\\tborder: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > .input,\\r\\n.monaco-inputbox > .ibwrapper > .mirror {\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tpadding: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > .input {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tline-height: inherit;\\r\\n\\tborder: none;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tresize: none;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > input {\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > textarea.input {\\r\\n\\tdisplay: block;\\r\\n\\t-ms-overflow-style: none; /* IE 10+: hide scrollbars */\\r\\n\\tscrollbar-width: none; /* Firefox: hide scrollbars */\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > textarea.input::-webkit-scrollbar {\\r\\n\\tdisplay: none; /* Chrome + Safari: hide scrollbar */\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > textarea.input.empty {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .ibwrapper > .mirror {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tvisibility: hidden;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Context view */\\r\\n\\r\\n.monaco-inputbox-container {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-inputbox-container .monaco-inputbox-message {\\r\\n\\tdisplay: inline-block;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: left;\\r\\n\\twidth: 100%;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tpadding: 0.4em;\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 17px;\\r\\n\\tmargin-top: -1px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Action bar support */\\r\\n.monaco-inputbox .monaco-action-bar {\\r\\n\\tposition: absolute;\\r\\n\\tright: 2px;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item {\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-keybinding {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tline-height: 10px;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key {\r\n\tdisplay: inline-block;\r\n\tborder-style: solid;\r\n\tborder-width: 1px;\r\n\tborder-radius: 3px;\r\n\tvertical-align: middle;\r\n\tfont-size: 11px;\r\n\tpadding: 3px 5px;\r\n\tmargin: 0 2px;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key:first-child {\r\n\tmargin-left: 0;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key:last-child {\r\n\tmargin-right: 0;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key-separator {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key-chord-separator {\r\n\twidth: 6px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;CACnB,iBAAiB;CACjB,kBAAkB;CAClB,sBAAsB;CACtB,eAAe;CACf,gBAAgB;CAChB,aAAa;AACd;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,UAAU;AACX\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-keybinding {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tline-height: 10px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tdisplay: inline-block;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n\\tborder-radius: 3px;\\r\\n\\tvertical-align: middle;\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 3px 5px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:first-child {\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:last-child {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-separator {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-chord-separator {\\r\\n\\twidth: 6px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-list {\r\n\tposition: relative;\r\n\theight: 100%;\r\n\twidth: 100%;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-list.mouse-support {\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n.monaco-list > .monaco-scrollable-element {\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-list-rows {\r\n\tposition: relative;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-list.horizontal-scrolling .monaco-list-rows {\r\n\twidth: auto;\r\n\tmin-width: 100%;\r\n}\r\n\r\n.monaco-list-row {\r\n\tposition: absolute;\r\n\tbox-sizing: border-box;\r\n\toverflow: hidden;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-list.mouse-support .monaco-list-row {\r\n\tcursor: pointer;\r\n\ttouch-action: none;\r\n}\r\n\r\n/* for OS X ballistic scrolling */\r\n.monaco-list-row.scrolling {\r\n\tdisplay: none !important;\r\n}\r\n\r\n/* Focus */\r\n.monaco-list.element-focused,\r\n.monaco-list.selection-single,\r\n.monaco-list.selection-multiple {\r\n\toutline: 0 !important;\r\n}\r\n\r\n/* Dnd */\r\n.monaco-drag-image {\r\n\tdisplay: inline-block;\r\n\tpadding: 1px 7px;\r\n\tborder-radius: 10px;\r\n\tfont-size: 12px;\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n}\r\n\r\n/* Type filter */\r\n\r\n.monaco-list-type-filter {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tposition: absolute;\r\n\tborder-radius: 2px;\r\n\tpadding: 0px 3px;\r\n\tmax-width: calc(100% - 10px);\r\n\ttext-overflow: ellipsis;\r\n\toverflow: hidden;\r\n\ttext-align: right;\r\n\tbox-sizing: border-box;\r\n\tcursor: all-scroll;\r\n\tfont-size: 13px;\r\n\tline-height: 18px;\r\n\theight: 20px;\r\n\tz-index: 1;\r\n\ttop: 4px;\r\n}\r\n\r\n.monaco-list-type-filter.dragging {\r\n\ttransition: top 0.2s, left 0.2s;\r\n}\r\n\r\n.monaco-list-type-filter.ne {\r\n\tright: 4px;\r\n}\r\n\r\n.monaco-list-type-filter.nw {\r\n\tleft: 4px;\r\n}\r\n\r\n.monaco-list-type-filter > .controls {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tbox-sizing: border-box;\r\n\ttransition: width 0.2s;\r\n\twidth: 0;\r\n}\r\n\r\n.monaco-list-type-filter.dragging > .controls,\r\n.monaco-list-type-filter:hover > .controls {\r\n\twidth: 36px;\r\n}\r\n\r\n.monaco-list-type-filter > .controls > * {\r\n\tborder: none;\r\n\tbox-sizing: border-box;\r\n\t-webkit-appearance: none;\r\n\t-moz-appearance: none;\r\n\tbackground: none;\r\n\twidth: 16px;\r\n\theight: 16px;\r\n\tflex-shrink: 0;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tcursor: pointer;\r\n}\r\n\r\n.monaco-list-type-filter > .controls > .filter {\r\n\tmargin-left: 4px;\r\n}\r\n\r\n.monaco-list-type-filter-message {\r\n\tposition: absolute;\r\n\tbox-sizing: border-box;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tpadding: 40px 1em 1em 1em;\r\n\ttext-align: center;\r\n\twhite-space: normal;\r\n\topacity: 0.7;\r\n\tpointer-events: none;\r\n}\r\n\r\n.monaco-list-type-filter-message:empty {\r\n\tdisplay: none;\r\n}\r\n\r\n/* Electron */\r\n\r\n.monaco-list-type-filter {\r\n\tcursor: grab;\r\n}\r\n\r\n.monaco-list-type-filter.dragging {\r\n\tcursor: grabbing;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA,iCAAiC;AACjC;CACC,wBAAwB;AACzB;;AAEA,UAAU;AACV;;;CAGC,qBAAqB;AACtB;;AAEA,QAAQ;AACR;CACC,qBAAqB;CACrB,gBAAgB;CAChB,mBAAmB;CACnB,eAAe;CACf,kBAAkB;CAClB,aAAa;AACd;;AAEA,gBAAgB;;AAEhB;CACC,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,gBAAgB;CAChB,4BAA4B;CAC5B,uBAAuB;CACvB,gBAAgB;CAChB,iBAAiB;CACjB,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,iBAAiB;CACjB,YAAY;CACZ,UAAU;CACV,QAAQ;AACT;;AAEA;CACC,+BAA+B;AAChC;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,sBAAsB;CACtB,sBAAsB;CACtB,QAAQ;AACT;;AAEA;;CAEC,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,sBAAsB;CACtB,wBAAwB;CACxB,qBAAqB;CACrB,gBAAgB;CAChB,WAAW;CACX,YAAY;CACZ,cAAc;CACd,SAAS;CACT,UAAU;CACV,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,eAAe;AAChB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,WAAW;CACX,YAAY;CACZ,MAAM;CACN,OAAO;CACP,yBAAyB;CACzB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,aAAa;AACd;;AAEA,aAAa;;AAEb;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-list {\\r\\n\\tposition: relative;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-list > .monaco-scrollable-element {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-rows {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.horizontal-scrolling .monaco-list-rows {\\r\\n\\twidth: auto;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-row {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\toverflow: hidden;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support .monaco-list-row {\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n/* for OS X ballistic scrolling */\\r\\n.monaco-list-row.scrolling {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/* Focus */\\r\\n.monaco-list.element-focused,\\r\\n.monaco-list.selection-single,\\r\\n.monaco-list.selection-multiple {\\r\\n\\toutline: 0 !important;\\r\\n}\\r\\n\\r\\n/* Dnd */\\r\\n.monaco-drag-image {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding: 1px 7px;\\r\\n\\tborder-radius: 10px;\\r\\n\\tfont-size: 12px;\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 1000;\\r\\n}\\r\\n\\r\\n/* Type filter */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tposition: absolute;\\r\\n\\tborder-radius: 2px;\\r\\n\\tpadding: 0px 3px;\\r\\n\\tmax-width: calc(100% - 10px);\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: right;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: all-scroll;\\r\\n\\tfont-size: 13px;\\r\\n\\tline-height: 18px;\\r\\n\\theight: 20px;\\r\\n\\tz-index: 1;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\ttransition: top 0.2s, left 0.2s;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.ne {\\r\\n\\tright: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.nw {\\r\\n\\tleft: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransition: width 0.2s;\\r\\n\\twidth: 0;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging > .controls,\\r\\n.monaco-list-type-filter:hover > .controls {\\r\\n\\twidth: 36px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > * {\\r\\n\\tborder: none;\\r\\n\\tbox-sizing: border-box;\\r\\n\\t-webkit-appearance: none;\\r\\n\\t-moz-appearance: none;\\r\\n\\tbackground: none;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tflex-shrink: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > .filter {\\r\\n\\tmargin-left: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tpadding: 40px 1em 1em 1em;\\r\\n\\ttext-align: center;\\r\\n\\twhite-space: normal;\\r\\n\\topacity: 0.7;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Electron */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tcursor: grab;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-mouse-cursor-text {\r\n\tcursor: text;\r\n}\r\n\r\n/* The following selector looks a bit funny, but that is needed to cover all the workbench and the editor!! */\r\n.vs-dark .mac .monaco-mouse-cursor-text, .hc-black .mac .monaco-mouse-cursor-text,\r\n.vs-dark.mac .monaco-mouse-cursor-text, .hc-black.mac .monaco-mouse-cursor-text {\r\n\tcursor: -webkit-image-set(url(${___CSS_LOADER_URL_REPLACEMENT_0___}) 1x, url(${___CSS_LOADER_URL_REPLACEMENT_1___}) 2x) 5 8, text;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;AACb;;AAEA,6GAA6G;AAC7G;;CAEC,2HAA+kB;AAChlB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-mouse-cursor-text {\\r\\n\\tcursor: text;\\r\\n}\\r\\n\\r\\n/* The following selector looks a bit funny, but that is needed to cover all the workbench and the editor!! */\\r\\n.vs-dark .mac .monaco-mouse-cursor-text, .hc-black .mac .monaco-mouse-cursor-text,\\r\\n.vs-dark.mac .monaco-mouse-cursor-text, .hc-black.mac .monaco-mouse-cursor-text {\\r\\n\\tcursor: -webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8, text;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-progress-container {\r\n\twidth: 100%;\r\n\theight: 5px;\r\n\toverflow: hidden; /* keep progress bit in bounds */\r\n}\r\n\r\n.monaco-progress-container .progress-bit {\r\n\twidth: 2%;\r\n\theight: 5px;\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-progress-container.active .progress-bit {\r\n\tdisplay: inherit;\r\n}\r\n\r\n.monaco-progress-container.discrete .progress-bit {\r\n\tleft: 0;\r\n\ttransition: width 100ms linear;\r\n}\r\n\r\n.monaco-progress-container.discrete.done .progress-bit {\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-progress-container.infinite .progress-bit {\r\n\tanimation-name: progress;\r\n\tanimation-duration: 4s;\r\n\tanimation-iteration-count: infinite;\r\n\tanimation-timing-function: linear;\r\n\ttransform: translate3d(0px, 0px, 0px);\r\n}\r\n\r\n/**\r\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\r\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\r\n * its relative size to the parent container:\r\n * parent width: 5000%\r\n * bit width: 100%\r\n * translateX should be as follow:\r\n * 50%: 5000% * 50% - 50% (set to center) = 2450%\r\n * 100%: 5000% * 100% - 100% (do not overflow) = 4900%\r\n */\r\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4900%) scaleX(1) } }\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,WAAW;CACX,gBAAgB,EAAE,gCAAgC;AACnD;;AAEA;CACC,SAAS;CACT,WAAW;CACX,kBAAkB;CAClB,OAAO;CACP,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,OAAO;CACP,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,wBAAwB;CACxB,sBAAsB;CACtB,mCAAmC;CACnC,iCAAiC;CACjC,qCAAqC;AACtC;;AAEA;;;;;;;;;EASE;AACF,sBAAsB,OAAO,oCAAoC,EAAE,MAAM,uCAAuC,EAAE,KAAK,uCAAuC,EAAE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-progress-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 5px;\\r\\n\\toverflow: hidden; /* keep progress bit in bounds */\\r\\n}\\r\\n\\r\\n.monaco-progress-container .progress-bit {\\r\\n\\twidth: 2%;\\r\\n\\theight: 5px;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.active .progress-bit {\\r\\n\\tdisplay: inherit;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete .progress-bit {\\r\\n\\tleft: 0;\\r\\n\\ttransition: width 100ms linear;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete.done .progress-bit {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.infinite .progress-bit {\\r\\n\\tanimation-name: progress;\\r\\n\\tanimation-duration: 4s;\\r\\n\\tanimation-iteration-count: infinite;\\r\\n\\tanimation-timing-function: linear;\\r\\n\\ttransform: translate3d(0px, 0px, 0px);\\r\\n}\\r\\n\\r\\n/**\\r\\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\\r\\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\\r\\n * its relative size to the parent container:\\r\\n * parent width: 5000%\\r\\n * bit width: 100%\\r\\n * translateX should be as follow:\\r\\n * 50%: 5000% * 50% - 50% (set to center) = 2450%\\r\\n * 100%: 5000% * 100% - 100% (do not overflow) = 4900%\\r\\n */\\r\\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4900%) scaleX(1) } }\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n:root {\r\n\t--sash-size: 4px;\r\n}\r\n\r\n.monaco-sash {\r\n\tposition: absolute;\r\n\tz-index: 35;\r\n\ttouch-action: none;\r\n}\r\n\r\n.monaco-sash.disabled {\r\n\tpointer-events: none;\r\n}\r\n\r\n.monaco-sash.mac.vertical {\r\n\tcursor: col-resize;\r\n}\r\n\r\n.monaco-sash.vertical.minimum {\r\n\tcursor: e-resize;\r\n}\r\n\r\n.monaco-sash.vertical.maximum {\r\n\tcursor: w-resize;\r\n}\r\n\r\n.monaco-sash.mac.horizontal {\r\n\tcursor: row-resize;\r\n}\r\n\r\n.monaco-sash.horizontal.minimum {\r\n\tcursor: s-resize;\r\n}\r\n\r\n.monaco-sash.horizontal.maximum {\r\n\tcursor: n-resize;\r\n}\r\n\r\n.monaco-sash.disabled {\r\n\tcursor: default !important;\r\n\tpointer-events: none !important;\r\n}\r\n\r\n.monaco-sash.vertical {\r\n\tcursor: ew-resize;\r\n\ttop: 0;\r\n\twidth: var(--sash-size);\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-sash.horizontal {\r\n\tcursor: ns-resize;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: var(--sash-size);\r\n}\r\n\r\n.monaco-sash:not(.disabled) > .orthogonal-drag-handle {\r\n\tcontent: \" \";\r\n\theight: calc(var(--sash-size) * 2);\r\n\twidth: calc(var(--sash-size) * 2);\r\n\tz-index: 100;\r\n\tdisplay: block;\r\n\tcursor: all-scroll;\r\n\tposition: absolute;\r\n}\r\n\r\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\r\n\t> .orthogonal-drag-handle.start,\r\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\r\n\t> .orthogonal-drag-handle.end {\r\n\tcursor: nwse-resize;\r\n}\r\n\r\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\r\n\t> .orthogonal-drag-handle.end,\r\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\r\n\t> .orthogonal-drag-handle.start {\r\n\tcursor: nesw-resize;\r\n}\r\n\r\n.monaco-sash.vertical > .orthogonal-drag-handle.start {\r\n\tleft: calc(var(--sash-size) * -0.5);\r\n\ttop: calc(var(--sash-size) * -1);\r\n}\r\n.monaco-sash.vertical > .orthogonal-drag-handle.end {\r\n\tleft: calc(var(--sash-size) * -0.5);\r\n\tbottom: calc(var(--sash-size) * -1);\r\n}\r\n.monaco-sash.horizontal > .orthogonal-drag-handle.start {\r\n\ttop: calc(var(--sash-size) * -0.5);\r\n\tleft: calc(var(--sash-size) * -1);\r\n}\r\n.monaco-sash.horizontal > .orthogonal-drag-handle.end {\r\n\ttop: calc(var(--sash-size) * -0.5);\r\n\tright: calc(var(--sash-size) * -1);\r\n}\r\n\r\n.monaco-sash:before {\r\n\tcontent: '';\r\n\tpointer-events: none;\r\n\tposition: absolute;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\ttransition: background-color 0.1s ease-out;\r\n\tbackground: transparent;\r\n}\r\n\r\n.monaco-sash.vertical:before {\r\n\twidth: var(--sash-hover-size);\r\n\tleft: calc(50% - (var(--sash-hover-size) / 2));\r\n}\r\n\r\n.monaco-sash.horizontal:before {\r\n\theight: var(--sash-hover-size);\r\n\ttop: calc(50% - (var(--sash-hover-size) / 2));\r\n}\r\n\r\n/** Debug **/\r\n\r\n.monaco-sash.debug {\r\n\tbackground: cyan;\r\n}\r\n\r\n.monaco-sash.debug.disabled {\r\n\tbackground: rgba(0, 255, 255, 0.2);\r\n}\r\n\r\n.monaco-sash.debug:not(.disabled) > .orthogonal-drag-handle {\r\n\tbackground: red;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,0BAA0B;CAC1B,+BAA+B;AAChC;;AAEA;CACC,iBAAiB;CACjB,MAAM;CACN,uBAAuB;CACvB,YAAY;AACb;;AAEA;CACC,iBAAiB;CACjB,OAAO;CACP,WAAW;CACX,wBAAwB;AACzB;;AAEA;CACC,YAAY;CACZ,kCAAkC;CAClC,iCAAiC;CACjC,YAAY;CACZ,cAAc;CACd,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;;;;CAIC,mBAAmB;AACpB;;AAEA;;;;CAIC,mBAAmB;AACpB;;AAEA;CACC,mCAAmC;CACnC,gCAAgC;AACjC;AACA;CACC,mCAAmC;CACnC,mCAAmC;AACpC;AACA;CACC,kCAAkC;CAClC,iCAAiC;AAClC;AACA;CACC,kCAAkC;CAClC,kCAAkC;AACnC;;AAEA;CACC,WAAW;CACX,oBAAoB;CACpB,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,0CAA0C;CAC1C,uBAAuB;AACxB;;AAEA;CACC,6BAA6B;CAC7B,8CAA8C;AAC/C;;AAEA;CACC,8BAA8B;CAC9B,6CAA6C;AAC9C;;AAEA,YAAY;;AAEZ;CACC,gBAAgB;AACjB;;AAEA;CACC,kCAAkC;AACnC;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n:root {\\r\\n\\t--sash-size: 4px;\\r\\n}\\r\\n\\r\\n.monaco-sash {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 35;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.vertical {\\r\\n\\tcursor: col-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.minimum {\\r\\n\\tcursor: e-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.maximum {\\r\\n\\tcursor: w-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.horizontal {\\r\\n\\tcursor: row-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.minimum {\\r\\n\\tcursor: s-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.maximum {\\r\\n\\tcursor: n-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tcursor: default !important;\\r\\n\\tpointer-events: none !important;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical {\\r\\n\\tcursor: ew-resize;\\r\\n\\ttop: 0;\\r\\n\\twidth: var(--sash-size);\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal {\\r\\n\\tcursor: ns-resize;\\r\\n\\tleft: 0;\\r\\n\\twidth: 100%;\\r\\n\\theight: var(--sash-size);\\r\\n}\\r\\n\\r\\n.monaco-sash:not(.disabled) > .orthogonal-drag-handle {\\r\\n\\tcontent: \\\" \\\";\\r\\n\\theight: calc(var(--sash-size) * 2);\\r\\n\\twidth: calc(var(--sash-size) * 2);\\r\\n\\tz-index: 100;\\r\\n\\tdisplay: block;\\r\\n\\tcursor: all-scroll;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\\r\\n\\t> .orthogonal-drag-handle.start,\\r\\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\\r\\n\\t> .orthogonal-drag-handle.end {\\r\\n\\tcursor: nwse-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)\\r\\n\\t> .orthogonal-drag-handle.end,\\r\\n.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)\\r\\n\\t> .orthogonal-drag-handle.start {\\r\\n\\tcursor: nesw-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical > .orthogonal-drag-handle.start {\\r\\n\\tleft: calc(var(--sash-size) * -0.5);\\r\\n\\ttop: calc(var(--sash-size) * -1);\\r\\n}\\r\\n.monaco-sash.vertical > .orthogonal-drag-handle.end {\\r\\n\\tleft: calc(var(--sash-size) * -0.5);\\r\\n\\tbottom: calc(var(--sash-size) * -1);\\r\\n}\\r\\n.monaco-sash.horizontal > .orthogonal-drag-handle.start {\\r\\n\\ttop: calc(var(--sash-size) * -0.5);\\r\\n\\tleft: calc(var(--sash-size) * -1);\\r\\n}\\r\\n.monaco-sash.horizontal > .orthogonal-drag-handle.end {\\r\\n\\ttop: calc(var(--sash-size) * -0.5);\\r\\n\\tright: calc(var(--sash-size) * -1);\\r\\n}\\r\\n\\r\\n.monaco-sash:before {\\r\\n\\tcontent: '';\\r\\n\\tpointer-events: none;\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\ttransition: background-color 0.1s ease-out;\\r\\n\\tbackground: transparent;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical:before {\\r\\n\\twidth: var(--sash-hover-size);\\r\\n\\tleft: calc(50% - (var(--sash-hover-size) / 2));\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal:before {\\r\\n\\theight: var(--sash-hover-size);\\r\\n\\ttop: calc(50% - (var(--sash-hover-size) / 2));\\r\\n}\\r\\n\\r\\n/** Debug **/\\r\\n\\r\\n.monaco-sash.debug {\\r\\n\\tbackground: cyan;\\r\\n}\\r\\n\\r\\n.monaco-sash.debug.disabled {\\r\\n\\tbackground: rgba(0, 255, 255, 0.2);\\r\\n}\\r\\n\\r\\n.monaco-sash.debug:not(.disabled) > .orthogonal-drag-handle {\\r\\n\\tbackground: red;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* Arrows */\r\n.monaco-scrollable-element > .scrollbar > .scra {\r\n\tcursor: pointer;\r\n\tfont-size: 11px !important;\r\n}\r\n\r\n.monaco-scrollable-element > .visible {\r\n\topacity: 1;\r\n\r\n\t/* Background rule added for IE9 - to allow clicks on dom node */\r\n\tbackground:rgba(0,0,0,0);\r\n\r\n\ttransition: opacity 100ms linear;\r\n}\r\n.monaco-scrollable-element > .invisible {\r\n\topacity: 0;\r\n\tpointer-events: none;\r\n}\r\n.monaco-scrollable-element > .invisible.fade {\r\n\ttransition: opacity 800ms linear;\r\n}\r\n\r\n/* Scrollable Content Inset Shadow */\r\n.monaco-scrollable-element > .shadow {\r\n\tposition: absolute;\r\n\tdisplay: none;\r\n}\r\n.monaco-scrollable-element > .shadow.top {\r\n\tdisplay: block;\r\n\ttop: 0;\r\n\tleft: 3px;\r\n\theight: 3px;\r\n\twidth: 100%;\r\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\r\n}\r\n.monaco-scrollable-element > .shadow.left {\r\n\tdisplay: block;\r\n\ttop: 3px;\r\n\tleft: 0;\r\n\theight: 100%;\r\n\twidth: 3px;\r\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\r\n}\r\n.monaco-scrollable-element > .shadow.top-left-corner {\r\n\tdisplay: block;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\theight: 3px;\r\n\twidth: 3px;\r\n}\r\n.monaco-scrollable-element > .shadow.top.left {\r\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\r\n}\r\n\r\n/* ---------- Default Style ---------- */\r\n\r\n.vs .monaco-scrollable-element > .scrollbar > .slider {\r\n\tbackground: rgba(100, 100, 100, .4);\r\n}\r\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\r\n\tbackground: rgba(121, 121, 121, .4);\r\n}\r\n.hc-black .monaco-scrollable-element > .scrollbar > .slider {\r\n\tbackground: rgba(111, 195, 223, .6);\r\n}\r\n\r\n.monaco-scrollable-element > .scrollbar > .slider:hover {\r\n\tbackground: rgba(100, 100, 100, .7);\r\n}\r\n.hc-black .monaco-scrollable-element > .scrollbar > .slider:hover {\r\n\tbackground: rgba(111, 195, 223, .8);\r\n}\r\n\r\n.monaco-scrollable-element > .scrollbar > .slider.active {\r\n\tbackground: rgba(0, 0, 0, .6);\r\n}\r\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\r\n\tbackground: rgba(191, 191, 191, .4);\r\n}\r\n.hc-black .monaco-scrollable-element > .scrollbar > .slider.active {\r\n\tbackground: rgba(111, 195, 223, 1);\r\n}\r\n\r\n.vs-dark .monaco-scrollable-element .shadow.top {\r\n\tbox-shadow: none;\r\n}\r\n\r\n.vs-dark .monaco-scrollable-element .shadow.left {\r\n\tbox-shadow: #000 6px 0 6px -6px inset;\r\n}\r\n\r\n.vs-dark .monaco-scrollable-element .shadow.top.left {\r\n\tbox-shadow: #000 6px 6px 6px -6px inset;\r\n}\r\n\r\n.hc-black .monaco-scrollable-element .shadow.top {\r\n\tbox-shadow: none;\r\n}\r\n\r\n.hc-black .monaco-scrollable-element .shadow.left {\r\n\tbox-shadow: none;\r\n}\r\n\r\n.hc-black .monaco-scrollable-element .shadow.top.left {\r\n\tbox-shadow: none;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,WAAW;AACX;CACC,eAAe;CACf,0BAA0B;AAC3B;;AAEA;CACC,UAAU;;CAEV,gEAAgE;CAChE,wBAAwB;;CAExB,gCAAgC;AACjC;AACA;CACC,UAAU;CACV,oBAAoB;AACrB;AACA;CACC,gCAAgC;AACjC;;AAEA,oCAAoC;AACpC;CACC,kBAAkB;CAClB,aAAa;AACd;AACA;CACC,cAAc;CACd,MAAM;CACN,SAAS;CACT,WAAW;CACX,WAAW;CACX,qCAAqC;AACtC;AACA;CACC,cAAc;CACd,QAAQ;CACR,OAAO;CACP,YAAY;CACZ,UAAU;CACV,qCAAqC;AACtC;AACA;CACC,cAAc;CACd,MAAM;CACN,OAAO;CACP,WAAW;CACX,UAAU;AACX;AACA;CACC,uCAAuC;AACxC;;AAEA,wCAAwC;;AAExC;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;;AAEA;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;;AAEA;CACC,6BAA6B;AAC9B;AACA;CACC,mCAAmC;AACpC;AACA;CACC,kCAAkC;AACnC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qCAAqC;AACtC;;AAEA;CACC,uCAAuC;AACxC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Arrows */\\r\\n.monaco-scrollable-element > .scrollbar > .scra {\\r\\n\\tcursor: pointer;\\r\\n\\tfont-size: 11px !important;\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .visible {\\r\\n\\topacity: 1;\\r\\n\\r\\n\\t/* Background rule added for IE9 - to allow clicks on dom node */\\r\\n\\tbackground:rgba(0,0,0,0);\\r\\n\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible {\\r\\n\\topacity: 0;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible.fade {\\r\\n\\ttransition: opacity 800ms linear;\\r\\n}\\r\\n\\r\\n/* Scrollable Content Inset Shadow */\\r\\n.monaco-scrollable-element > .shadow {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\theight: 3px;\\r\\n\\twidth: 100%;\\r\\n\\tbox-shadow: #DDD 0 6px 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.left {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 3px;\\r\\n\\tleft: 0;\\r\\n\\theight: 100%;\\r\\n\\twidth: 3px;\\r\\n\\tbox-shadow: #DDD 6px 0 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top-left-corner {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 3px;\\r\\n\\twidth: 3px;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top.left {\\r\\n\\tbox-shadow: #DDD 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n/* ---------- Default Style ---------- */\\r\\n\\r\\n.vs .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(100, 100, 100, .4);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(121, 121, 121, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(111, 195, 223, .6);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(100, 100, 100, .7);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(111, 195, 223, .8);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(0, 0, 0, .6);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(191, 191, 191, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(111, 195, 223, 1);\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: #000 6px 0 6px -6px inset;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: #000 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-split-view2 {\r\n\tposition: relative;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-split-view2 > .sash-container {\r\n\tposition: absolute;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tpointer-events: none;\r\n}\r\n\r\n.monaco-split-view2 > .sash-container > .monaco-sash {\r\n\tpointer-events: initial;\r\n}\r\n\r\n.monaco-split-view2 > .monaco-scrollable-element {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\twhite-space: nowrap;\r\n\tposition: relative;\r\n}\r\n\r\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view {\r\n\twhite-space: initial;\r\n\tposition: absolute;\r\n}\r\n\r\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view:not(.visible) {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-split-view2.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view {\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-split-view2.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view {\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-split-view2.separator-border > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\r\n\tcontent: ' ';\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tz-index: 5;\r\n\tpointer-events: none;\r\n\tbackground-color: var(--separator-border);\r\n}\r\n\r\n.monaco-split-view2.separator-border.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\r\n\theight: 100%;\r\n\twidth: 1px;\r\n}\r\n\r\n.monaco-split-view2.separator-border.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\r\n\theight: 1px;\r\n\twidth: 100%;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,WAAW;CACX,YAAY;AACb;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,UAAU;CACV,oBAAoB;CACpB,yCAAyC;AAC1C;;AAEA;CACC,YAAY;CACZ,UAAU;AACX;;AAEA;CACC,WAAW;CACX,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-split-view2 {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container > .monaco-sash {\\r\\n\\tpointer-events: initial;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .monaco-scrollable-element {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view {\\r\\n\\twhite-space: initial;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .monaco-scrollable-element > .split-view-container > .split-view-view:not(.visible) {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\tcontent: ' ';\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tz-index: 5;\\r\\n\\tpointer-events: none;\\r\\n\\tbackground-color: var(--separator-border);\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.horizontal > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 100%;\\r\\n\\twidth: 1px;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.vertical > .monaco-scrollable-element > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 1px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-table {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tposition: relative;\r\n\theight: 100%;\r\n\twidth: 100%;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-table > .monaco-split-view2 {\r\n\tborder-bottom: 1px solid transparent;\r\n}\r\n\r\n.monaco-table > .monaco-list {\r\n\tflex: 1;\r\n}\r\n\r\n.monaco-table-tr {\r\n\tdisplay: flex;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-table-th {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\tfont-weight: bold;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n}\r\n\r\n.monaco-table-th,\r\n.monaco-table-td {\r\n\tbox-sizing: border-box;\r\n\tflex-shrink: 0;\r\n\toverflow: hidden;\r\n\twhite-space: nowrap;\r\n\ttext-overflow: ellipsis;\r\n}\r\n\r\n.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\r\n\tcontent: \"\";\r\n\tposition: absolute;\r\n\tleft: calc(var(--sash-size) / 2);\r\n\twidth: 0;\r\n\tborder-left: 1px solid transparent;\r\n}\r\n\r\n.monaco-table > .monaco-split-view2,\r\n.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\r\n\ttransition: border-color 0.2s ease-out;\r\n}\r\n/*\r\n.monaco-table:hover > .monaco-split-view2,\r\n.monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\r\n\tborder-color: rgba(204, 204, 204, 0.2);\r\n} */\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,sBAAsB;CACtB,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,oCAAoC;AACrC;;AAEA;CACC,OAAO;AACR;;AAEA;CACC,aAAa;CACb,YAAY;AACb;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,gBAAgB;CAChB,uBAAuB;AACxB;;AAEA;;CAEC,sBAAsB;CACtB,cAAc;CACd,gBAAgB;CAChB,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,gCAAgC;CAChC,QAAQ;CACR,kCAAkC;AACnC;;AAEA;;CAEC,sCAAsC;AACvC;AACA;;;;GAIG\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-table {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tposition: relative;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-table > .monaco-split-view2 {\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-table > .monaco-list {\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-table-tr {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-table-th {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tfont-weight: bold;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-table-th,\\r\\n.monaco-table-td {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tflex-shrink: 0;\\r\\n\\toverflow: hidden;\\r\\n\\twhite-space: nowrap;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\\r\\n\\tcontent: \\\"\\\";\\r\\n\\tposition: absolute;\\r\\n\\tleft: calc(var(--sash-size) / 2);\\r\\n\\twidth: 0;\\r\\n\\tborder-left: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-table > .monaco-split-view2,\\r\\n.monaco-table > .monaco-split-view2 .monaco-sash.vertical::before {\\r\\n\\ttransition: border-color 0.2s ease-out;\\r\\n}\\r\\n/*\\r\\n.monaco-table:hover > .monaco-split-view2,\\r\\n.monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\\r\\n\\tborder-color: rgba(204, 204, 204, 0.2);\\r\\n} */\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-tl-row {\r\n\tdisplay: flex;\r\n\theight: 100%;\r\n\talign-items: center;\r\n\tposition: relative;\r\n}\r\n\r\n.monaco-tl-indent {\r\n\theight: 100%;\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 16px;\r\n\tpointer-events: none;\r\n}\r\n\r\n.hide-arrows .monaco-tl-indent {\r\n\tleft: 12px;\r\n}\r\n\r\n.monaco-tl-indent > .indent-guide {\r\n\tdisplay: inline-block;\r\n\tbox-sizing: border-box;\r\n\theight: 100%;\r\n\tborder-left: 1px solid transparent;\r\n}\r\n\r\n.monaco-tl-indent > .indent-guide {\r\n\ttransition: border-color 0.1s linear;\r\n}\r\n\r\n.monaco-tl-twistie,\r\n.monaco-tl-contents {\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-tl-twistie {\r\n\tfont-size: 10px;\r\n\ttext-align: right;\r\n\tpadding-right: 6px;\r\n\tflex-shrink: 0;\r\n\twidth: 16px;\r\n\tdisplay: flex !important;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\ttransform: translateX(3px);\r\n}\r\n\r\n.monaco-tl-contents {\r\n\tflex: 1;\r\n\toverflow: hidden;\r\n}\r\n\r\n.monaco-tl-twistie::before {\r\n\tborder-radius: 20px;\r\n}\r\n\r\n.monaco-tl-twistie.collapsed::before {\r\n\ttransform: rotate(-90deg);\r\n}\r\n\r\n.monaco-tl-twistie.codicon-tree-item-loading::before {\r\n\t/* Use steps to throttle FPS to reduce CPU usage */\r\n\tanimation: codicon-spin 1.25s steps(30) infinite;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,MAAM;CACN,UAAU;CACV,oBAAoB;AACrB;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,qBAAqB;CACrB,sBAAsB;CACtB,YAAY;CACZ,kCAAkC;AACnC;;AAEA;CACC,oCAAoC;AACrC;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,cAAc;CACd,WAAW;CACX,wBAAwB;CACxB,mBAAmB;CACnB,uBAAuB;CACvB,0BAA0B;AAC3B;;AAEA;CACC,OAAO;CACP,gBAAgB;AACjB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,kDAAkD;CAClD,gDAAgD;AACjD\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-tl-row {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\talign-items: center;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent {\\r\\n\\theight: 100%;\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 16px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.hide-arrows .monaco-tl-indent {\\r\\n\\tleft: 12px;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\tborder-left: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\ttransition: border-color 0.1s linear;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie,\\r\\n.monaco-tl-contents {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie {\\r\\n\\tfont-size: 10px;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 6px;\\r\\n\\tflex-shrink: 0;\\r\\n\\twidth: 16px;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\ttransform: translateX(3px);\\r\\n}\\r\\n\\r\\n.monaco-tl-contents {\\r\\n\\tflex: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie::before {\\r\\n\\tborder-radius: 20px;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.collapsed::before {\\r\\n\\ttransform: rotate(-90deg);\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.codicon-tree-item-loading::before {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.25s steps(30) infinite;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.quick-input-widget {\r\n\tposition: absolute;\r\n\twidth: 600px;\r\n\tz-index: 2000;\r\n\tpadding: 0 1px 6px 1px;\r\n\tleft: 50%;\r\n\tmargin-left: -300px;\r\n}\r\n\r\n.quick-input-titlebar {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.quick-input-left-action-bar {\r\n\tdisplay: flex;\r\n\tmargin-left: 4px;\r\n\tflex: 1;\r\n}\r\n\r\n.quick-input-title {\r\n\tpadding: 3px 0px;\r\n\ttext-align: center;\r\n}\r\n\r\n.quick-input-right-action-bar {\r\n\tdisplay: flex;\r\n\tmargin-right: 4px;\r\n\tflex: 1;\r\n}\r\n\r\n.quick-input-right-action-bar > .actions-container {\r\n\tjustify-content: flex-end;\r\n}\r\n\r\n.quick-input-titlebar .monaco-action-bar .action-label.codicon {\r\n\tbackground-position: center;\r\n\tbackground-repeat: no-repeat;\r\n\tpadding: 2px;\r\n}\r\n\r\n.quick-input-description {\r\n\tmargin: 6px;\r\n}\r\n\r\n.quick-input-header .quick-input-description {\r\n\tmargin: 4px 2px;\r\n}\r\n\r\n.quick-input-header {\r\n\tdisplay: flex;\r\n\tpadding: 6px 6px 0px 6px;\r\n\tmargin-bottom: -2px;\r\n}\r\n\r\n.quick-input-widget.hidden-input .quick-input-header {\r\n\t/* reduce margins and paddings when input box hidden */\r\n\tpadding: 0;\r\n\tmargin-bottom: 0;\r\n}\r\n\r\n.quick-input-and-message {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tflex-grow: 1;\r\n\tposition: relative;\r\n}\r\n\r\n.quick-input-check-all {\r\n\talign-self: center;\r\n\tmargin: 0;\r\n}\r\n\r\n.quick-input-filter {\r\n\tflex-grow: 1;\r\n\tdisplay: flex;\r\n\tposition: relative;\r\n}\r\n\r\n.quick-input-box {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.quick-input-widget.show-checkboxes .quick-input-box,\r\n.quick-input-widget.show-checkboxes .quick-input-message {\r\n\tmargin-left: 5px;\r\n}\r\n\r\n.quick-input-visible-count {\r\n\tposition: absolute;\r\n\tleft: -10000px;\r\n}\r\n\r\n.quick-input-count {\r\n\talign-self: center;\r\n\tposition: absolute;\r\n\tright: 4px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.quick-input-count .monaco-count-badge {\r\n\tvertical-align: middle;\r\n\tpadding: 2px 4px;\r\n\tborder-radius: 2px;\r\n\tmin-height: auto;\r\n\tline-height: normal;\r\n}\r\n\r\n.quick-input-action {\r\n\tmargin-left: 6px;\r\n}\r\n\r\n.quick-input-action .monaco-text-button {\r\n\tfont-size: 11px;\r\n\tpadding: 0 6px;\r\n\tdisplay: flex;\r\n\theight: 27.5px;\r\n\talign-items: center;\r\n}\r\n\r\n.quick-input-message {\r\n\tmargin-top: -1px;\r\n\tpadding: 5px 5px 2px 5px;\r\n}\r\n\r\n.quick-input-message > .codicon {\r\n\tmargin: 0 0.2em;\r\n\tvertical-align: text-bottom;\r\n}\r\n\r\n.quick-input-progress.monaco-progress-container {\r\n\tposition: relative;\r\n}\r\n\r\n.quick-input-progress.monaco-progress-container,\r\n.quick-input-progress.monaco-progress-container .progress-bit {\r\n\theight: 2px;\r\n}\r\n\r\n.quick-input-list {\r\n\tline-height: 22px;\r\n\tmargin-top: 6px;\r\n}\r\n\r\n.quick-input-widget.hidden-input .quick-input-list {\r\n\tmargin-top: 0; /* reduce margins when input box hidden */\r\n}\r\n\r\n.quick-input-list .monaco-list {\r\n\toverflow: hidden;\r\n\tmax-height: calc(20 * 22px);\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry {\r\n\tbox-sizing: border-box;\r\n\toverflow: hidden;\r\n\tdisplay: flex;\r\n\theight: 100%;\r\n\tpadding: 0 6px;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry.quick-input-list-separator-border {\r\n\tborder-top-width: 1px;\r\n\tborder-top-style: solid;\r\n}\r\n\r\n.quick-input-list .monaco-list-row[data-index=\"0\"] .quick-input-list-entry.quick-input-list-separator-border {\r\n\tborder-top-style: none;\r\n}\r\n\r\n.quick-input-list .quick-input-list-label {\r\n\toverflow: hidden;\r\n\tdisplay: flex;\r\n\theight: 100%;\r\n\tflex: 1;\r\n}\r\n\r\n.quick-input-list .quick-input-list-checkbox {\r\n\talign-self: center;\r\n\tmargin: 0;\r\n}\r\n\r\n.quick-input-list .quick-input-list-rows {\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\theight: 100%;\r\n\tflex: 1;\r\n\tmargin-left: 5px;\r\n}\r\n\r\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows {\r\n\tmargin-left: 10px;\r\n}\r\n\r\n.quick-input-widget .quick-input-list .quick-input-list-checkbox {\r\n\tdisplay: none;\r\n}\r\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox {\r\n\tdisplay: inline;\r\n}\r\n\r\n.quick-input-list .quick-input-list-rows > .quick-input-list-row {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label,\r\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container {\r\n\tflex: 1; /* make sure the icon label grows within the row */\r\n}\r\n\r\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] {\r\n\tvertical-align: text-bottom;\r\n}\r\n\r\n.quick-input-list .quick-input-list-rows .monaco-highlighted-label span {\r\n\topacity: 1;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding {\r\n\tmargin-right: 8px; /* separate from the separator label or scrollbar if any */\r\n}\r\n\r\n.quick-input-list .quick-input-list-label-meta {\r\n\topacity: 0.7;\r\n\tline-height: normal;\r\n\ttext-overflow: ellipsis;\r\n\toverflow: hidden;\r\n}\r\n\r\n.quick-input-list .monaco-highlighted-label .highlight {\r\n\tfont-weight: bold;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry .quick-input-list-separator {\r\n\tmargin-right: 8px; /* separate from keybindings or actions */\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry-action-bar {\r\n\tdisplay: flex;\r\n\tflex: 0;\r\n\toverflow: visible;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry-action-bar .action-label {\r\n\t/*\r\n\t * By default, actions in the quick input action bar are hidden\r\n\t * until hovered over them or selected.\r\n\t */\r\n\tdisplay: none;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\r\n\tmargin-right: 4px;\r\n\tpadding: 0px 2px 2px 2px;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry-action-bar {\r\n\tmargin-top: 1px;\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry-action-bar {\r\n\tmargin-right: 4px; /* separate from scrollbar */\r\n}\r\n\r\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,\r\n.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,\r\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label {\r\n\tdisplay: flex;\r\n}\r\n\r\n/* focused items in quick pick */\r\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,\r\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator {\r\n\tcolor: inherit\r\n}\r\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key {\r\n\tbackground: none;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 600px;\\r\\n\\tz-index: 2000;\\r\\n\\tpadding: 0 1px 6px 1px;\\r\\n\\tleft: 50%;\\r\\n\\tmargin-left: -300px;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-left-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-left: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-title {\\r\\n\\tpadding: 3px 0px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.quick-input-right-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-right: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-right-action-bar > .actions-container {\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar .monaco-action-bar .action-label.codicon {\\r\\n\\tbackground-position: center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tpadding: 2px;\\r\\n}\\r\\n\\r\\n.quick-input-description {\\r\\n\\tmargin: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-header .quick-input-description {\\r\\n\\tmargin: 4px 2px;\\r\\n}\\r\\n\\r\\n.quick-input-header {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 6px 6px 0px 6px;\\r\\n\\tmargin-bottom: -2px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-header {\\r\\n\\t/* reduce margins and paddings when input box hidden */\\r\\n\\tpadding: 0;\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.quick-input-and-message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tflex-grow: 1;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-check-all {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-filter {\\r\\n\\tflex-grow: 1;\\r\\n\\tdisplay: flex;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-box {\\r\\n\\tflex-grow: 1;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-box,\\r\\n.quick-input-widget.show-checkboxes .quick-input-message {\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-visible-count {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -10000px;\\r\\n}\\r\\n\\r\\n.quick-input-count {\\r\\n\\talign-self: center;\\r\\n\\tposition: absolute;\\r\\n\\tright: 4px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-count .monaco-count-badge {\\r\\n\\tvertical-align: middle;\\r\\n\\tpadding: 2px 4px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\\r\\n.quick-input-action {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-action .monaco-text-button {\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 0 6px;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 27.5px;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-message {\\r\\n\\tmargin-top: -1px;\\r\\n\\tpadding: 5px 5px 2px 5px;\\r\\n}\\r\\n\\r\\n.quick-input-message > .codicon {\\r\\n\\tmargin: 0 0.2em;\\r\\n\\tvertical-align: text-bottom;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container,\\r\\n.quick-input-progress.monaco-progress-container .progress-bit {\\r\\n\\theight: 2px;\\r\\n}\\r\\n\\r\\n.quick-input-list {\\r\\n\\tline-height: 22px;\\r\\n\\tmargin-top: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-list {\\r\\n\\tmargin-top: 0; /* reduce margins when input box hidden */\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list {\\r\\n\\toverflow: hidden;\\r\\n\\tmax-height: calc(20 * 22px);\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry {\\r\\n\\tbox-sizing: border-box;\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0 6px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-top-style: solid;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list-row[data-index=\\\"0\\\"] .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-style: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-checkbox {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows {\\r\\n\\tmargin-left: 10px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label,\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container {\\r\\n\\tflex: 1; /* make sure the icon label grows within the row */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] {\\r\\n\\tvertical-align: text-bottom;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows .monaco-highlighted-label span {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding {\\r\\n\\tmargin-right: 8px; /* separate from the separator label or scrollbar if any */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label-meta {\\r\\n\\topacity: 0.7;\\r\\n\\tline-height: normal;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-separator {\\r\\n\\tmargin-right: 8px; /* separate from keybindings or actions */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 0;\\r\\n\\toverflow: visible;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label {\\r\\n\\t/*\\r\\n\\t * By default, actions in the quick input action bar are hidden\\r\\n\\t * until hovered over them or selected.\\r\\n\\t */\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\\r\\n\\tmargin-right: 4px;\\r\\n\\tpadding: 0px 2px 2px 2px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-right: 4px; /* separate from scrollbar */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,\\r\\n.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,\\r\\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n/* focused items in quick pick */\\r\\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,\\r\\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator {\\r\\n\\tcolor: inherit\\r\\n}\\r\\n.quick-input-list .monaco-list-row.focused .monaco-keybinding-key {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .inputarea {\r\n\tmin-width: 0;\r\n\tmin-height: 0;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tposition: absolute;\r\n\toutline: none !important;\r\n\tresize: none;\r\n\tborder: none;\r\n\toverflow: hidden;\r\n\tcolor: transparent;\r\n\tbackground-color: transparent;\r\n}\r\n/*.monaco-editor .inputarea {\r\n\tposition: fixed !important;\r\n\twidth: 800px !important;\r\n\theight: 500px !important;\r\n\ttop: initial !important;\r\n\tleft: initial !important;\r\n\tbottom: 0 !important;\r\n\tright: 0 !important;\r\n\tcolor: black !important;\r\n\tbackground: white !important;\r\n\tline-height: 15px !important;\r\n\tfont-size: 14px !important;\r\n}*/\r\n.monaco-editor .inputarea.ime-input {\r\n\tz-index: 10;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;CACZ,aAAa;CACb,SAAS;CACT,UAAU;CACV,kBAAkB;CAClB,wBAAwB;CACxB,YAAY;CACZ,YAAY;CACZ,gBAAgB;CAChB,kBAAkB;CAClB,6BAA6B;AAC9B;AACA;;;;;;;;;;;;EAYE;AACF;CACC,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .inputarea {\\r\\n\\tmin-width: 0;\\r\\n\\tmin-height: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tposition: absolute;\\r\\n\\toutline: none !important;\\r\\n\\tresize: none;\\r\\n\\tborder: none;\\r\\n\\toverflow: hidden;\\r\\n\\tcolor: transparent;\\r\\n\\tbackground-color: transparent;\\r\\n}\\r\\n/*.monaco-editor .inputarea {\\r\\n\\tposition: fixed !important;\\r\\n\\twidth: 800px !important;\\r\\n\\theight: 500px !important;\\r\\n\\ttop: initial !important;\\r\\n\\tleft: initial !important;\\r\\n\\tbottom: 0 !important;\\r\\n\\tright: 0 !important;\\r\\n\\tcolor: black !important;\\r\\n\\tbackground: white !important;\\r\\n\\tline-height: 15px !important;\\r\\n\\tfont-size: 14px !important;\\r\\n}*/\\r\\n.monaco-editor .inputarea.ime-input {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .view-overlays .current-line {\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.monaco-editor .margin-view-overlays .current-line {\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both {\r\n\tborder-right: 0;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,cAAc;CACd,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN,sBAAsB;AACvB;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN,sBAAsB;AACvB;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both {\\r\\n\\tborder-right: 0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcdr = core decorations rendering (div)\r\n*/\r\n.monaco-editor .lines-content .cdr {\r\n\tposition: absolute;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcdr = core decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cdr {\\r\\n\\tposition: absolute;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .glyph-margin {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n}\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcgmr = core glyph margin rendering (div)\r\n*/\r\n.monaco-editor .margin-view-overlays .cgmr {\r\n\tposition: absolute;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;;;CAGC;AACD;CACC,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .glyph-margin {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcgmr = core glyph margin rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cgmr {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcigr = core ident guides rendering (div)\r\n*/\r\n.monaco-editor .lines-content .cigr {\r\n\tposition: absolute;\r\n}\r\n.monaco-editor .lines-content .cigra {\r\n\tposition: absolute;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcigr = core ident guides rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cigr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n.monaco-editor .lines-content .cigra {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .margin-view-overlays .line-numbers {\r\n\tfont-variant-numeric: tabular-nums;\r\n\tposition: absolute;\r\n\ttext-align: right;\r\n\tdisplay: inline-block;\r\n\tvertical-align: middle;\r\n\tbox-sizing: border-box;\r\n\tcursor: default;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-editor .relative-current-line-number {\r\n\ttext-align: left;\r\n\tdisplay: inline-block;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .margin-view-overlays .line-numbers.lh-odd {\r\n\tmargin-top: 1px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kCAAkC;CAClC,kBAAkB;CAClB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;CACtB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;CACrB,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers {\\r\\n\\tfont-variant-numeric: tabular-nums;\\r\\n\\tposition: absolute;\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: default;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .relative-current-line-number {\\r\\n\\ttext-align: left;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers.lh-odd {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* Uncomment to see lines flashing when they're painted */\r\n/*.monaco-editor .view-lines > .view-line {\r\n\tbackground-color: none;\r\n\tanimation-name: flash-background;\r\n\tanimation-duration: 800ms;\r\n}\r\n@keyframes flash-background {\r\n\t0% { background-color: lightgreen; }\r\n\t100% { background-color: none }\r\n}*/\r\n\r\n.monaco-editor.no-user-select .lines-content,\r\n.monaco-editor.no-user-select .view-line,\r\n.monaco-editor.no-user-select .view-lines {\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n.monaco-editor .view-lines {\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .view-line {\r\n\tposition: absolute;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .mtkz {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n/* TODO@tokenization bootstrap fix */\r\n/*.monaco-editor .view-line > span > span {\r\n\tfloat: none;\r\n\tmin-height: inherit;\r\n\tmargin-left: inherit;\r\n}*/\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,yDAAyD;AACzD;;;;;;;;EAQE;;AAEF;;;CAGC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,qBAAqB;AACtB;;AAEA,oCAAoC;AACpC;;;;EAIE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Uncomment to see lines flashing when they're painted */\\r\\n/*.monaco-editor .view-lines > .view-line {\\r\\n\\tbackground-color: none;\\r\\n\\tanimation-name: flash-background;\\r\\n\\tanimation-duration: 800ms;\\r\\n}\\r\\n@keyframes flash-background {\\r\\n\\t0% { background-color: lightgreen; }\\r\\n\\t100% { background-color: none }\\r\\n}*/\\r\\n\\r\\n.monaco-editor.no-user-select .lines-content,\\r\\n.monaco-editor.no-user-select .view-line,\\r\\n.monaco-editor.no-user-select .view-lines {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-lines {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-line {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .mtkz {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/* TODO@tokenization bootstrap fix */\\r\\n/*.monaco-editor .view-line > span > span {\\r\\n\\tfloat: none;\\r\\n\\tmin-height: inherit;\\r\\n\\tmargin-left: inherit;\\r\\n}*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n.monaco-editor .lines-decorations {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tbackground: white;\r\n}\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcldr = core lines decorations rendering (div)\r\n*/\r\n.monaco-editor .margin-view-overlays .cldr {\r\n\tposition: absolute;\r\n\theight: 100%;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;CACN,iBAAiB;AAClB;;AAEA;;;CAGC;AACD;CACC,kBAAkB;CAClB,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .lines-decorations {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tbackground: white;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcldr = core lines decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cldr {\\r\\n\\tposition: absolute;\\r\\n\\theight: 100%;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcmdr = core margin decorations rendering (div)\r\n*/\r\n.monaco-editor .margin-view-overlays .cmdr {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;CAClB,OAAO;CACP,WAAW;CACX,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcmdr = core margin decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cmdr {\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* START cover the case that slider is visible on mouseover */\r\n.monaco-editor .minimap.slider-mouseover .minimap-slider {\r\n\topacity: 0;\r\n\ttransition: opacity 100ms linear;\r\n}\r\n.monaco-editor .minimap.slider-mouseover:hover .minimap-slider {\r\n\topacity: 1;\r\n}\r\n.monaco-editor .minimap.slider-mouseover .minimap-slider.active {\r\n\topacity: 1;\r\n}\r\n/* END cover the case that slider is visible on mouseover */\r\n\r\n.monaco-editor .minimap-shadow-hidden {\r\n\tposition: absolute;\r\n\twidth: 0;\r\n}\r\n.monaco-editor .minimap-shadow-visible {\r\n\tposition: absolute;\r\n\tleft: -6px;\r\n\twidth: 6px;\r\n}\r\n.monaco-editor.no-minimap-shadow .minimap-shadow-visible {\r\n\tposition: absolute;\r\n\tleft: -1px;\r\n\twidth: 1px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,6DAA6D;AAC7D;CACC,UAAU;CACV,gCAAgC;AACjC;AACA;CACC,UAAU;AACX;AACA;CACC,UAAU;AACX;AACA,2DAA2D;;AAE3D;CACC,kBAAkB;CAClB,QAAQ;AACT;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,UAAU;AACX;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,UAAU;AACX\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* START cover the case that slider is visible on mouseover */\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider {\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover:hover .minimap-slider {\\r\\n\\topacity: 1;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider.active {\\r\\n\\topacity: 1;\\r\\n}\\r\\n/* END cover the case that slider is visible on mouseover */\\r\\n\\r\\n.monaco-editor .minimap-shadow-hidden {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 0;\\r\\n}\\r\\n.monaco-editor .minimap-shadow-visible {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -6px;\\r\\n\\twidth: 6px;\\r\\n}\\r\\n.monaco-editor.no-minimap-shadow .minimap-shadow-visible {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -1px;\\r\\n\\twidth: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n.monaco-editor .overlayWidgets {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft:0;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;CACN,MAAM;AACP\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .overlayWidgets {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft:0;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .view-ruler {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;AACP\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-ruler {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .scroll-decoration {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\theight: 6px;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .scroll-decoration {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 6px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*\r\n\tKeeping name short for faster parsing.\r\n\tcslr = core selections layer rendering (div)\r\n*/\r\n.monaco-editor .lines-content .cslr {\r\n\tposition: absolute;\r\n}\r\n\r\n.monaco-editor\t\t\t.top-left-radius\t\t{ border-top-left-radius: 3px; }\r\n.monaco-editor\t\t\t.bottom-left-radius\t\t{ border-bottom-left-radius: 3px; }\r\n.monaco-editor\t\t\t.top-right-radius\t\t{ border-top-right-radius: 3px; }\r\n.monaco-editor\t\t\t.bottom-right-radius\t{ border-bottom-right-radius: 3px; }\r\n\r\n.monaco-editor.hc-black .top-left-radius\t\t{ border-top-left-radius: 0; }\r\n.monaco-editor.hc-black .bottom-left-radius\t\t{ border-bottom-left-radius: 0; }\r\n.monaco-editor.hc-black .top-right-radius\t\t{ border-top-right-radius: 0; }\r\n.monaco-editor.hc-black .bottom-right-radius\t{ border-bottom-right-radius: 0; }\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB;;AAEA,qCAAqC,2BAA2B,EAAE;AAClE,wCAAwC,8BAA8B,EAAE;AACxE,sCAAsC,4BAA4B,EAAE;AACpE,wCAAwC,+BAA+B,EAAE;;AAEzE,4CAA4C,yBAAyB,EAAE;AACvE,+CAA+C,4BAA4B,EAAE;AAC7E,6CAA6C,0BAA0B,EAAE;AACzE,+CAA+C,6BAA6B,EAAE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcslr = core selections layer rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cslr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-editor\\t\\t\\t.top-left-radius\\t\\t{ border-top-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-left-radius\\t\\t{ border-bottom-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.top-right-radius\\t\\t{ border-top-right-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-right-radius\\t{ border-bottom-right-radius: 3px; }\\r\\n\\r\\n.monaco-editor.hc-black .top-left-radius\\t\\t{ border-top-left-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-left-radius\\t\\t{ border-bottom-left-radius: 0; }\\r\\n.monaco-editor.hc-black .top-right-radius\\t\\t{ border-top-right-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-right-radius\\t{ border-bottom-right-radius: 0; }\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n.monaco-editor .cursors-layer {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n}\r\n\r\n.monaco-editor .cursors-layer > .cursor {\r\n\tposition: absolute;\r\n\toverflow: hidden;\r\n}\r\n\r\n/* -- smooth-caret-animation -- */\r\n.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor {\r\n\ttransition: all 80ms;\r\n}\r\n\r\n/* -- block-outline-style -- */\r\n.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor {\r\n\tbox-sizing: border-box;\r\n\tbackground: transparent !important;\r\n\tborder-style: solid;\r\n\tborder-width: 1px;\r\n}\r\n\r\n/* -- underline-style -- */\r\n.monaco-editor .cursors-layer.cursor-underline-style > .cursor {\r\n\tborder-bottom-width: 2px;\r\n\tborder-bottom-style: solid;\r\n\tbackground: transparent !important;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n/* -- underline-thin-style -- */\r\n.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor {\r\n\tborder-bottom-width: 1px;\r\n\tborder-bottom-style: solid;\r\n\tbackground: transparent !important;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n@keyframes monaco-cursor-smooth {\r\n\t0%,\r\n\t20% {\r\n\t\topacity: 1;\r\n\t}\r\n\t60%,\r\n\t100% {\r\n\t\topacity: 0;\r\n\t}\r\n}\r\n\r\n@keyframes monaco-cursor-phase {\r\n\t0%,\r\n\t20% {\r\n\t\topacity: 1;\r\n\t}\r\n\t90%,\r\n\t100% {\r\n\t\topacity: 0;\r\n\t}\r\n}\r\n\r\n@keyframes monaco-cursor-expand {\r\n\t0%,\r\n\t20% {\r\n\t\ttransform: scaleY(1);\r\n\t}\r\n\t80%,\r\n\t100% {\r\n\t\ttransform: scaleY(0);\r\n\t}\r\n}\r\n\r\n.cursor-smooth {\r\n\tanimation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate;\r\n}\r\n\r\n.cursor-phase {\r\n\tanimation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate;\r\n}\r\n\r\n.cursor-expand > .cursor {\r\n\tanimation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA,iCAAiC;AACjC;CACC,oBAAoB;AACrB;;AAEA,8BAA8B;AAC9B;CACC,sBAAsB;CACtB,kCAAkC;CAClC,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA,0BAA0B;AAC1B;CACC,wBAAwB;CACxB,0BAA0B;CAC1B,kCAAkC;CAClC,sBAAsB;AACvB;;AAEA,+BAA+B;AAC/B;CACC,wBAAwB;CACxB,0BAA0B;CAC1B,kCAAkC;CAClC,sBAAsB;AACvB;;AAEA;CACC;;EAEC,UAAU;CACX;CACA;;EAEC,UAAU;CACX;AACD;;AAEA;CACC;;EAEC,UAAU;CACX;CACA;;EAEC,UAAU;CACX;AACD;;AAEA;CACC;;EAEC,oBAAoB;CACrB;CACA;;EAEC,oBAAoB;CACrB;AACD;;AAEA;CACC,gEAAgE;AACjE;;AAEA;CACC,+DAA+D;AAChE;;AAEA;CACC,gEAAgE;AACjE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .cursors-layer {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .cursors-layer > .cursor {\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n/* -- smooth-caret-animation -- */\\r\\n.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor {\\r\\n\\ttransition: all 80ms;\\r\\n}\\r\\n\\r\\n/* -- block-outline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tbackground: transparent !important;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n}\\r\\n\\r\\n/* -- underline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-style > .cursor {\\r\\n\\tborder-bottom-width: 2px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n/* -- underline-thin-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor {\\r\\n\\tborder-bottom-width: 1px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-smooth {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t60%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-phase {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t90%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-expand {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\ttransform: scaleY(1);\\r\\n\\t}\\r\\n\\t80%,\\r\\n\\t100% {\\r\\n\\t\\ttransform: scaleY(0);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.cursor-smooth {\\r\\n\\tanimation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-phase {\\r\\n\\tanimation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-expand > .cursor {\\r\\n\\tanimation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* ---------- DiffEditor ---------- */\r\n\r\n.monaco-diff-editor .diffOverview {\r\n\tz-index: 9;\r\n}\r\n\r\n.monaco-diff-editor .diffOverview .diffViewport {\r\n\tz-index: 10;\r\n}\r\n\r\n/* colors not externalized: using transparancy on background */\r\n.monaco-diff-editor.vs\t\t\t.diffOverview { background: rgba(0, 0, 0, 0.03); }\r\n.monaco-diff-editor.vs-dark\t\t.diffOverview { background: rgba(255, 255, 255, 0.01); }\r\n\r\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs\t\t.scrollbar { background: rgba(0,0,0,0); }\r\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark\t.scrollbar { background: rgba(0,0,0,0); }\r\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black\t.scrollbar { background: none; }\r\n\r\n.monaco-scrollable-element.modified-in-monaco-diff-editor .slider {\r\n\tz-index: 10;\r\n}\r\n.modified-in-monaco-diff-editor\t\t\t\t.slider.active { background: rgba(171, 171, 171, .4); }\r\n.modified-in-monaco-diff-editor.hc-black\t.slider.active { background: none; }\r\n\r\n/* ---------- Diff ---------- */\r\n\r\n.monaco-editor .insert-sign,\r\n.monaco-diff-editor .insert-sign,\r\n.monaco-editor .delete-sign,\r\n.monaco-diff-editor .delete-sign {\r\n\tfont-size: 11px !important;\r\n\topacity: 0.7 !important;\r\n\tdisplay: flex !important;\r\n\talign-items: center;\r\n}\r\n.monaco-editor.hc-black .insert-sign,\r\n.monaco-diff-editor.hc-black .insert-sign,\r\n.monaco-editor.hc-black .delete-sign,\r\n.monaco-diff-editor.hc-black .delete-sign {\r\n\topacity: 1;\r\n}\r\n\r\n.monaco-editor .inline-deleted-margin-view-zone {\r\n\ttext-align: right;\r\n}\r\n.monaco-editor .inline-added-margin-view-zone {\r\n\ttext-align: right;\r\n}\r\n\r\n/* ---------- Inline Diff ---------- */\r\n\r\n.monaco-editor .view-zones .view-lines .view-line span {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-editor .margin-view-zones .lightbulb-glyph:hover {\r\n\tcursor: pointer;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F,qCAAqC;;AAErC;CACC,UAAU;AACX;;AAEA;CACC,WAAW;AACZ;;AAEA,8DAA8D;AAC9D,yCAAyC,+BAA+B,EAAE;AAC1E,6CAA6C,qCAAqC,EAAE;;AAEpF,2EAA2E,yBAAyB,EAAE;AACtG,+EAA+E,yBAAyB,EAAE;AAC1G,gFAAgF,gBAAgB,EAAE;;AAElG;CACC,WAAW;AACZ;AACA,oDAAoD,mCAAmC,EAAE;AACzF,0DAA0D,gBAAgB,EAAE;;AAE5E,+BAA+B;;AAE/B;;;;CAIC,0BAA0B;CAC1B,uBAAuB;CACvB,wBAAwB;CACxB,mBAAmB;AACpB;AACA;;;;CAIC,UAAU;AACX;;AAEA;CACC,iBAAiB;AAClB;AACA;CACC,iBAAiB;AAClB;;AAEA,sCAAsC;;AAEtC;CACC,qBAAqB;AACtB;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- DiffEditor ---------- */\\r\\n\\r\\n.monaco-diff-editor .diffOverview {\\r\\n\\tz-index: 9;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diffOverview .diffViewport {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n/* colors not externalized: using transparancy on background */\\r\\n.monaco-diff-editor.vs\\t\\t\\t.diffOverview { background: rgba(0, 0, 0, 0.03); }\\r\\n.monaco-diff-editor.vs-dark\\t\\t.diffOverview { background: rgba(255, 255, 255, 0.01); }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs\\t\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black\\t.scrollbar { background: none; }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor .slider {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n.modified-in-monaco-diff-editor\\t\\t\\t\\t.slider.active { background: rgba(171, 171, 171, .4); }\\r\\n.modified-in-monaco-diff-editor.hc-black\\t.slider.active { background: none; }\\r\\n\\r\\n/* ---------- Diff ---------- */\\r\\n\\r\\n.monaco-editor .insert-sign,\\r\\n.monaco-diff-editor .insert-sign,\\r\\n.monaco-editor .delete-sign,\\r\\n.monaco-diff-editor .delete-sign {\\r\\n\\tfont-size: 11px !important;\\r\\n\\topacity: 0.7 !important;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n}\\r\\n.monaco-editor.hc-black .insert-sign,\\r\\n.monaco-diff-editor.hc-black .insert-sign,\\r\\n.monaco-editor.hc-black .delete-sign,\\r\\n.monaco-diff-editor.hc-black .delete-sign {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-deleted-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n.monaco-editor .inline-added-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n/* ---------- Inline Diff ---------- */\\r\\n\\r\\n.monaco-editor .view-zones .view-lines .view-line span {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-zones .lightbulb-glyph:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-diff-editor .diff-review-line-number {\r\n\ttext-align: right;\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-diff-editor .diff-review {\r\n\tposition: absolute;\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-summary {\r\n\tpadding-left: 10px;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-shadow {\r\n\tposition: absolute;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-row {\r\n\twhite-space: pre;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-table {\r\n\tdisplay: table;\r\n\tmin-width: 100%;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-row {\r\n\tdisplay: table-row;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-spacer {\r\n\tdisplay: inline-block;\r\n\twidth: 10px;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-spacer > .codicon {\r\n\tfont-size: 9px !important;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-actions {\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\tright: 10px;\r\n\ttop: 2px;\r\n}\r\n\r\n.monaco-diff-editor .diff-review-actions .action-label {\r\n\twidth: 16px;\r\n\theight: 16px;\r\n\tmargin: 2px 0;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,iBAAiB;CACjB,qBAAqB;AACtB;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,qBAAqB;CACrB,WAAW;CACX,sBAAsB;AACvB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;CACX,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,aAAa;AACd\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-diff-editor .diff-review-line-number {\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review {\\r\\n\\tposition: absolute;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-summary {\\r\\n\\tpadding-left: 10px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-shadow {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\twhite-space: pre;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-table {\\r\\n\\tdisplay: table;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\tdisplay: table-row;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer {\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 10px;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer > .codicon {\\r\\n\\tfont-size: 9px !important;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\ttop: 2px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions .action-label {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tmargin: 2px 0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* -------------------- IE10 remove auto clear button -------------------- */\r\n\r\n::-ms-clear {\r\n\tdisplay: none;\r\n}\r\n\r\n/* All widgets */\r\n/* I am not a big fan of this rule */\r\n.monaco-editor .editor-widget input {\r\n\tcolor: inherit;\r\n}\r\n\r\n/* -------------------- Editor -------------------- */\r\n\r\n.monaco-editor {\r\n\tposition: relative;\r\n\toverflow: visible;\r\n\t-webkit-text-size-adjust: 100%;\r\n}\r\n\r\n/* -------------------- Misc -------------------- */\r\n\r\n.monaco-editor .overflow-guard {\r\n\tposition: relative;\r\n\toverflow: hidden;\r\n}\r\n\r\n.monaco-editor .view-overlays {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n}\r\n\r\n/*\r\n.monaco-editor .auto-closed-character {\r\n\topacity: 0.3;\r\n}\r\n*/\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,4EAA4E;;AAE5E;CACC,aAAa;AACd;;AAEA,gBAAgB;AAChB,oCAAoC;AACpC;CACC,cAAc;AACf;;AAEA,qDAAqD;;AAErD;CACC,kBAAkB;CAClB,iBAAiB;CACjB,8BAA8B;AAC/B;;AAEA,mDAAmD;;AAEnD;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;;;;CAIC\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -------------------- IE10 remove auto clear button -------------------- */\\r\\n\\r\\n::-ms-clear {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* All widgets */\\r\\n/* I am not a big fan of this rule */\\r\\n.monaco-editor .editor-widget input {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n/* -------------------- Editor -------------------- */\\r\\n\\r\\n.monaco-editor {\\r\\n\\tposition: relative;\\r\\n\\toverflow: visible;\\r\\n\\t-webkit-text-size-adjust: 100%;\\r\\n}\\r\\n\\r\\n/* -------------------- Misc -------------------- */\\r\\n\\r\\n.monaco-editor .overflow-guard {\\r\\n\\tposition: relative;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-overlays {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n.monaco-editor .auto-closed-character {\\r\\n\\topacity: 0.3;\\r\\n}\\r\\n*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .bracket-match {\r\n\tbox-sizing: border-box;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;AACvB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .bracket-match {\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .contentWidgets .codicon-light-bulb,\r\n.monaco-editor .contentWidgets .codicon-lightbulb-autofix {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.monaco-editor .contentWidgets .codicon-light-bulb:hover,\r\n.monaco-editor .contentWidgets .codicon-lightbulb-autofix:hover {\r\n\tcursor: pointer;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;CAEC,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA;;CAEC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .contentWidgets .codicon-light-bulb,\\r\\n.monaco-editor .contentWidgets .codicon-lightbulb-autofix {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .contentWidgets .codicon-light-bulb:hover,\\r\\n.monaco-editor .contentWidgets .codicon-lightbulb-autofix:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .codelens-decoration {\r\n\toverflow: hidden;\r\n\tdisplay: inline-block;\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .codelens-decoration > span,\r\n.monaco-editor .codelens-decoration > a {\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n\twhite-space: nowrap;\r\n\tvertical-align: sub;\r\n}\r\n\r\n.monaco-editor .codelens-decoration > a {\r\n\ttext-decoration: none;\r\n}\r\n\r\n.monaco-editor .codelens-decoration > a:hover {\r\n\tcursor: pointer;\r\n}\r\n\r\n.monaco-editor .codelens-decoration .codicon {\r\n\tvertical-align: middle;\r\n\tcolor: currentColor !important;\r\n}\r\n\r\n.monaco-editor .codelens-decoration > a:hover .codicon::before {\r\n\tcursor: pointer;\r\n}\r\n\r\n@keyframes fadein {\r\n\t0% { opacity: 0; visibility: visible;}\r\n\t100% { opacity: 1; }\r\n}\r\n\r\n.monaco-editor .codelens-decoration.fadein {\r\n\tanimation: fadein 0.1s linear;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,qBAAqB;CACrB,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;;CAEC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,mBAAmB;CACnB,mBAAmB;AACpB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,sBAAsB;CACtB,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,KAAK,UAAU,EAAE,mBAAmB,CAAC;CACrC,OAAO,UAAU,EAAE;AACpB;;AAEA;CACC,6BAA6B;AAC9B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .codelens-decoration {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > span,\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n\\twhite-space: nowrap;\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\ttext-decoration: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration .codicon {\\r\\n\\tvertical-align: middle;\\r\\n\\tcolor: currentColor !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover .codicon::before {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n@keyframes fadein {\\r\\n\\t0% { opacity: 0; visibility: visible;}\\r\\n\\t100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration.fadein {\\r\\n\\tanimation: fadein 0.1s linear;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.colorpicker-widget {\r\n\theight: 190px;\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n.monaco-editor .colorpicker-hover:focus {\r\n\toutline: none;\r\n}\r\n\r\n\r\n/* Header */\r\n\r\n.colorpicker-header {\r\n\tdisplay: flex;\r\n\theight: 24px;\r\n\tposition: relative;\r\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\r\n\tbackground-size: 9px 9px;\r\n\timage-rendering: pixelated;\r\n}\r\n\r\n.colorpicker-header .picked-color {\r\n\twidth: 216px;\r\n\ttext-align: center;\r\n\tline-height: 24px;\r\n\tcursor: pointer;\r\n\tcolor: white;\r\n\tflex: 1;\r\n\ttext-align: center;\r\n}\r\n\r\n.colorpicker-header .picked-color.light {\r\n\tcolor: black;\r\n}\r\n\r\n.colorpicker-header .original-color {\r\n\twidth: 74px;\r\n\tz-index: inherit;\r\n\tcursor: pointer;\r\n}\r\n\r\n\r\n/* Body */\r\n\r\n.colorpicker-body {\r\n\tdisplay: flex;\r\n\tpadding: 8px;\r\n\tposition: relative;\r\n}\r\n\r\n.colorpicker-body .saturation-wrap {\r\n\toverflow: hidden;\r\n\theight: 150px;\r\n\tposition: relative;\r\n\tmin-width: 220px;\r\n\tflex: 1;\r\n}\r\n\r\n.colorpicker-body .saturation-box {\r\n\theight: 150px;\r\n\tposition: absolute;\r\n}\r\n\r\n.colorpicker-body .saturation-selection {\r\n\twidth: 9px;\r\n\theight: 9px;\r\n\tmargin: -5px 0 0 -5px;\r\n\tborder: 1px solid rgb(255, 255, 255);\r\n\tborder-radius: 100%;\r\n\tbox-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);\r\n\tposition: absolute;\r\n}\r\n\r\n.colorpicker-body .strip {\r\n\twidth: 25px;\r\n\theight: 150px;\r\n}\r\n\r\n.colorpicker-body .hue-strip {\r\n\tposition: relative;\r\n\tmargin-left: 8px;\r\n\tcursor: grab;\r\n\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\r\n}\r\n\r\n.colorpicker-body .opacity-strip {\r\n\tposition: relative;\r\n\tmargin-left: 8px;\r\n\tcursor: grab;\r\n\tbackground: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\r\n\tbackground-size: 9px 9px;\r\n\timage-rendering: pixelated;\r\n}\r\n\r\n.colorpicker-body .strip.grabbing {\r\n\tcursor: grabbing;\r\n}\r\n\r\n.colorpicker-body .slider {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: -2px;\r\n\twidth: calc(100% + 4px);\r\n\theight: 4px;\r\n\tbox-sizing: border-box;\r\n\tborder: 1px solid rgba(255, 255, 255, 0.71);\r\n\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);\r\n}\r\n\r\n.colorpicker-body .strip .overlay {\r\n\theight: 150px;\r\n\tpointer-events: none;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,aAAa;AACd;;;AAGA,WAAW;;AAEX;CACC,aAAa;CACb,YAAY;CACZ,kBAAkB;CAClB,mDAAiR;CACjR,wBAAwB;CACxB,0BAA0B;AAC3B;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,YAAY;CACZ,OAAO;CACP,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,eAAe;AAChB;;;AAGA,SAAS;;AAET;CACC,aAAa;CACb,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,kBAAkB;CAClB,gBAAgB;CAChB,OAAO;AACR;;AAEA;CACC,aAAa;CACb,kBAAkB;AACnB;;AAEA;CACC,UAAU;CACV,WAAW;CACX,qBAAqB;CACrB,oCAAoC;CACpC,mBAAmB;CACnB,0CAA0C;CAC1C,kBAAkB;AACnB;;AAEA;CACC,WAAW;CACX,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,YAAY;CACZ,iIAAiI;AAClI;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,YAAY;CACZ,mDAAiR;CACjR,wBAAwB;CACxB,0BAA0B;AAC3B;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,MAAM;CACN,UAAU;CACV,uBAAuB;CACvB,WAAW;CACX,sBAAsB;CACtB,2CAA2C;CAC3C,2CAA2C;AAC5C;;AAEA;CACC,aAAa;CACb,oBAAoB;AACrB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.colorpicker-widget {\\r\\n\\theight: 190px;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .colorpicker-hover:focus {\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n\\r\\n/* Header */\\r\\n\\r\\n.colorpicker-header {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 24px;\\r\\n\\tposition: relative;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color {\\r\\n\\twidth: 216px;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 24px;\\r\\n\\tcursor: pointer;\\r\\n\\tcolor: white;\\r\\n\\tflex: 1;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color.light {\\r\\n\\tcolor: black;\\r\\n}\\r\\n\\r\\n.colorpicker-header .original-color {\\r\\n\\twidth: 74px;\\r\\n\\tz-index: inherit;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n/* Body */\\r\\n\\r\\n.colorpicker-body {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 8px;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-wrap {\\r\\n\\toverflow: hidden;\\r\\n\\theight: 150px;\\r\\n\\tposition: relative;\\r\\n\\tmin-width: 220px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-box {\\r\\n\\theight: 150px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-selection {\\r\\n\\twidth: 9px;\\r\\n\\theight: 9px;\\r\\n\\tmargin: -5px 0 0 -5px;\\r\\n\\tborder: 1px solid rgb(255, 255, 255);\\r\\n\\tborder-radius: 100%;\\r\\n\\tbox-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip {\\r\\n\\twidth: 25px;\\r\\n\\theight: 150px;\\r\\n}\\r\\n\\r\\n.colorpicker-body .hue-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\\r\\n}\\r\\n\\r\\n.colorpicker-body .opacity-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip.grabbing {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\\r\\n.colorpicker-body .slider {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: -2px;\\r\\n\\twidth: calc(100% + 4px);\\r\\n\\theight: 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tborder: 1px solid rgba(255, 255, 255, 0.71);\\r\\n\\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip .overlay {\\r\\n\\theight: 150px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* Find widget */\r\n.monaco-editor .find-widget {\r\n\tposition: absolute;\r\n\tz-index: 35;\r\n\theight: 33px;\r\n\toverflow: hidden;\r\n\tline-height: 19px;\r\n\ttransition: transform 200ms linear;\r\n\tpadding: 0 4px;\r\n\tbox-sizing: border-box;\r\n\ttransform: translateY(calc(-100% - 10px)); /* shadow (10px) */\r\n}\r\n\r\n.monaco-editor .find-widget textarea {\r\n\tmargin: 0px;\r\n}\r\n\r\n.monaco-editor .find-widget.hiddenEditor {\r\n\tdisplay: none;\r\n}\r\n\r\n/* Find widget when replace is toggled on */\r\n.monaco-editor .find-widget.replaceToggled > .replace-part {\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-editor .find-widget.visible {\r\n\ttransform: translateY(0);\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-inputbox.synthetic-focus {\r\n\toutline: 1px solid -webkit-focus-ring-color;\r\n\toutline-offset: -1px;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-inputbox .input {\r\n\tbackground-color: transparent;\r\n\tmin-height: 0;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-findInput .input {\r\n\tfont-size: 13px;\r\n}\r\n\r\n.monaco-editor .find-widget > .find-part,\r\n.monaco-editor .find-widget > .replace-part {\r\n\tmargin: 4px 0 0 17px;\r\n\tfont-size: 12px;\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-editor .find-widget > .find-part .monaco-inputbox,\r\n.monaco-editor .find-widget > .replace-part .monaco-inputbox {\r\n\tmin-height: 25px;\r\n}\r\n\r\n\r\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\r\n\tpadding-right: 22px;\r\n}\r\n\r\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .input,\r\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .mirror,\r\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .input,\r\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\r\n\tpadding-top: 2px;\r\n\tpadding-bottom: 2px;\r\n}\r\n\r\n.monaco-editor .find-widget > .find-part .find-actions {\r\n\theight: 25px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.monaco-editor .find-widget > .replace-part .replace-actions {\r\n\theight: 25px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-findInput {\r\n\tvertical-align: middle;\r\n\tdisplay: flex;\r\n\tflex:1;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element {\r\n\t/* Make sure textarea inherits the width correctly */\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical {\r\n\t/* Hide vertical scrollbar */\r\n\topacity: 0;\r\n}\r\n\r\n.monaco-editor .find-widget .matchesCount {\r\n\tdisplay: flex;\r\n\tflex: initial;\r\n\tmargin: 0 0 0 3px;\r\n\tpadding: 2px 0 0 2px;\r\n\theight: 25px;\r\n\tvertical-align: middle;\r\n\tbox-sizing: border-box;\r\n\ttext-align: center;\r\n\tline-height: 23px;\r\n}\r\n\r\n.monaco-editor .find-widget .button {\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tdisplay: flex;\r\n\tflex: initial;\r\n\tmargin-left: 3px;\r\n\tbackground-position: center center;\r\n\tbackground-repeat: no-repeat;\r\n\tcursor: pointer;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.monaco-editor .find-widget .button.left {\r\n\tmargin-left: 0;\r\n\tmargin-right: 3px;\r\n}\r\n\r\n.monaco-editor .find-widget .button.wide {\r\n\twidth: auto;\r\n\tpadding: 1px 6px;\r\n\ttop: -1px;\r\n}\r\n\r\n.monaco-editor .find-widget .button.toggle {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tleft: 3px;\r\n\twidth: 18px;\r\n\theight: 100%;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.monaco-editor .find-widget .button.toggle.disabled {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .find-widget .disabled {\r\n\topacity: 0.3;\r\n\tcursor: default;\r\n}\r\n\r\n.monaco-editor .find-widget > .replace-part {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .find-widget > .replace-part > .monaco-findInput {\r\n\tposition: relative;\r\n\tdisplay: flex;\r\n\tvertical-align: middle;\r\n\tflex: auto;\r\n\tflex-grow: 0;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls {\r\n\tposition: absolute;\r\n\ttop: 3px;\r\n\tright: 2px;\r\n}\r\n\r\n/* REDUCED */\r\n.monaco-editor .find-widget.reduced-find-widget .matchesCount {\r\n\tdisplay:none;\r\n}\r\n\r\n/* NARROW (SMALLER THAN REDUCED) */\r\n.monaco-editor .find-widget.narrow-find-widget {\r\n\tmax-width: 257px !important;\r\n}\r\n\r\n/* COLLAPSED (SMALLER THAN NARROW) */\r\n.monaco-editor .find-widget.collapsed-find-widget {\r\n\tmax-width: 170px !important;\r\n}\r\n\r\n.monaco-editor .find-widget.collapsed-find-widget .button.previous,\r\n.monaco-editor .find-widget.collapsed-find-widget .button.next,\r\n.monaco-editor .find-widget.collapsed-find-widget .button.replace,\r\n.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,\r\n.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls {\r\n\tdisplay:none;\r\n}\r\n\r\n.monaco-editor .findMatch {\r\n\tanimation-duration: 0;\r\n\tanimation-name: inherit !important;\r\n}\r\n\r\n.monaco-editor .find-widget .monaco-sash {\r\n\tleft: 0 !important;\r\n}\r\n\r\n.monaco-editor.hc-black .find-widget .button:before {\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\tleft: 2px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,gBAAgB;AAChB;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;CACjB,kCAAkC;CAClC,cAAc;CACd,sBAAsB;CACtB,yCAAyC,EAAE,kBAAkB;AAC9D;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,aAAa;AACd;;AAEA,2CAA2C;AAC3C;CACC,aAAa;AACd;;AAEA;CACC,wBAAwB;AACzB;;AAEA;CACC,2CAA2C;CAC3C,oBAAoB;AACrB;;AAEA;CACC,6BAA6B;CAC7B,aAAa;AACd;;AAEA;CACC,eAAe;AAChB;;AAEA;;CAEC,oBAAoB;CACpB,eAAe;CACf,aAAa;AACd;;AAEA;;CAEC,gBAAgB;AACjB;;;AAGA;CACC,mBAAmB;AACpB;;AAEA;;;;CAIC,gBAAgB;CAChB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,sBAAsB;CACtB,aAAa;CACb,MAAM;AACP;;AAEA;CACC,oDAAoD;CACpD,WAAW;AACZ;;AAEA;CACC,4BAA4B;CAC5B,UAAU;AACX;;AAEA;CACC,aAAa;CACb,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,YAAY;CACZ,sBAAsB;CACtB,sBAAsB;CACtB,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,aAAa;CACb,aAAa;CACb,gBAAgB;CAChB,kCAAkC;CAClC,4BAA4B;CAC5B,eAAe;CACf,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA;CACC,cAAc;CACd,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,SAAS;AACV;;AAEA;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,WAAW;CACX,YAAY;CACZ,sBAAsB;AACvB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,aAAa;CACb,sBAAsB;CACtB,UAAU;CACV,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,UAAU;AACX;;AAEA,YAAY;AACZ;CACC,YAAY;AACb;;AAEA,kCAAkC;AAClC;CACC,2BAA2B;AAC5B;;AAEA,oCAAoC;AACpC;CACC,2BAA2B;AAC5B;;AAEA;;;;;CAKC,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,kCAAkC;AACnC;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,SAAS;AACV\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Find widget */\\r\\n.monaco-editor .find-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 35;\\r\\n\\theight: 33px;\\r\\n\\toverflow: hidden;\\r\\n\\tline-height: 19px;\\r\\n\\ttransition: transform 200ms linear;\\r\\n\\tpadding: 0 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransform: translateY(calc(-100% - 10px)); /* shadow (10px) */\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget textarea {\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.hiddenEditor {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Find widget when replace is toggled on */\\r\\n.monaco-editor .find-widget.replaceToggled > .replace-part {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.visible {\\r\\n\\ttransform: translateY(0);\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox.synthetic-focus {\\r\\n\\toutline: 1px solid -webkit-focus-ring-color;\\r\\n\\toutline-offset: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox .input {\\r\\n\\tbackground-color: transparent;\\r\\n\\tmin-height: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .input {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part,\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tmargin: 4px 0 0 17px;\\r\\n\\tfont-size: 12px;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox {\\r\\n\\tmin-height: 25px;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\\r\\n\\tpadding-right: 22px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .input,\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .ibwrapper > .mirror,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .input,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .ibwrapper > .mirror {\\r\\n\\tpadding-top: 2px;\\r\\n\\tpadding-bottom: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .find-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .replace-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput {\\r\\n\\tvertical-align: middle;\\r\\n\\tdisplay: flex;\\r\\n\\tflex:1;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element {\\r\\n\\t/* Make sure textarea inherits the width correctly */\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical {\\r\\n\\t/* Hide vertical scrollbar */\\r\\n\\topacity: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .matchesCount {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin: 0 0 0 3px;\\r\\n\\tpadding: 2px 0 0 2px;\\r\\n\\theight: 25px;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button {\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin-left: 3px;\\r\\n\\tbackground-position: center center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tcursor: pointer;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.left {\\r\\n\\tmargin-left: 0;\\r\\n\\tmargin-right: 3px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.wide {\\r\\n\\twidth: auto;\\r\\n\\tpadding: 1px 6px;\\r\\n\\ttop: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 100%;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle.disabled {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .disabled {\\r\\n\\topacity: 0.3;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tvertical-align: middle;\\r\\n\\tflex: auto;\\r\\n\\tflex-grow: 0;\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n/* REDUCED */\\r\\n.monaco-editor .find-widget.reduced-find-widget .matchesCount {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n/* NARROW (SMALLER THAN REDUCED) */\\r\\n.monaco-editor .find-widget.narrow-find-widget {\\r\\n\\tmax-width: 257px !important;\\r\\n}\\r\\n\\r\\n/* COLLAPSED (SMALLER THAN NARROW) */\\r\\n.monaco-editor .find-widget.collapsed-find-widget {\\r\\n\\tmax-width: 170px !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.previous,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.next,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,\\r\\n.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n.monaco-editor .findMatch {\\r\\n\\tanimation-duration: 0;\\r\\n\\tanimation-name: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-sash {\\r\\n\\tleft: 0 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .find-widget .button:before {\\r\\n\\tposition: relative;\\r\\n\\ttop: 1px;\\r\\n\\tleft: 2px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .margin-view-overlays .codicon-folding-expanded,\r\n.monaco-editor .margin-view-overlays .codicon-folding-collapsed {\r\n\tcursor: pointer;\r\n\topacity: 0;\r\n\ttransition: opacity 0.5s;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tfont-size: 140%;\r\n\tmargin-left: 2px;\r\n}\r\n\r\n.monaco-editor .margin-view-overlays:hover .codicon,\r\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,\r\n.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons {\r\n\topacity: 1;\r\n}\r\n\r\n.monaco-editor .inline-folded:after {\r\n\tcolor: grey;\r\n\tmargin: 0.1em 0.2em 0 0.2em;\r\n\tcontent: \"⋯\";\r\n\tdisplay: inline;\r\n\tline-height: 1em;\r\n\tcursor: pointer;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;CAEC,eAAe;CACf,UAAU;CACV,wBAAwB;CACxB,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,eAAe;CACf,gBAAgB;AACjB;;AAEA;;;CAGC,UAAU;AACX;;AAEA;CACC,WAAW;CACX,2BAA2B;CAC3B,YAAY;CACZ,eAAe;CACf,gBAAgB;CAChB,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-expanded,\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-collapsed {\\r\\n\\tcursor: pointer;\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 0.5s;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tfont-size: 140%;\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays:hover .codicon,\\r\\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,\\r\\n.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-folded:after {\\r\\n\\tcolor: grey;\\r\\n\\tmargin: 0.1em 0.2em 0 0.2em;\\r\\n\\tcontent: \\\"⋯\\\";\\r\\n\\tdisplay: inline;\\r\\n\\tline-height: 1em;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* marker zone */\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .severity-icon {\r\n\tdisplay: inline-block;\r\n\tvertical-align: text-top;\r\n\tmargin-right: 4px;\r\n}\r\n\r\n.monaco-editor .marker-widget {\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .marker-widget > .stale {\r\n\topacity: 0.6;\r\n\tfont-style: italic;\r\n}\r\n\r\n.monaco-editor .marker-widget .title {\r\n\tdisplay: inline-block;\r\n\tpadding-right: 5px;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer {\r\n\tposition: absolute;\r\n\twhite-space: pre;\r\n\tuser-select: text;\r\n\t-webkit-user-select: text;\r\n\t-ms-user-select: text;\r\n\tpadding: 8px 12px 0 20px;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message .details {\r\n\tpadding-left: 6px;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message .source,\r\n.monaco-editor .marker-widget .descriptioncontainer .message span.code {\r\n\topacity: 0.6;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link {\r\n\topacity: 0.6;\r\n\tcolor: inherit;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before {\r\n\tcontent: '(';\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after {\r\n\tcontent: ')';\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\r\n\ttext-decoration: underline;\r\n\t/** Hack to force underline to show **/\r\n\tborder-bottom: 1px solid transparent;\r\n\ttext-underline-position: under;\r\n}\r\n\r\n.monaco-editor .marker-widget .descriptioncontainer .filename {\r\n\tcursor: pointer;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,gBAAgB;;AAEhB;CACC,qBAAqB;CACrB,wBAAwB;CACxB,iBAAiB;AAClB;;AAEA;CACC,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,wBAAwB;AACzB;;AAEA;CACC,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,0BAA0B;CAC1B,sCAAsC;CACtC,oCAAoC;CACpC,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* marker zone */\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .severity-icon {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: text-top;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget > .stale {\\r\\n\\topacity: 0.6;\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .title {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding-right: 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer {\\r\\n\\tposition: absolute;\\r\\n\\twhite-space: pre;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 8px 12px 0 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .details {\\r\\n\\tpadding-left: 6px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .source,\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message span.code {\\r\\n\\topacity: 0.6;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link {\\r\\n\\topacity: 0.6;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .filename {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .goto-definition-link {\r\n\ttext-decoration: underline;\r\n\tcursor: pointer;\r\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,0BAA0B;CAC1B,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .goto-definition-link {\\r\\n\\ttext-decoration: underline;\\r\\n\\tcursor: pointer;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* -- zone widget */\r\n.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget {\r\n\tborder-top-width: 1px;\r\n\tborder-bottom-width: 1px;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .inline {\r\n\tdisplay: inline-block;\r\n\tvertical-align: top;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .messages {\r\n\theight: 100%;\r\n\twidth: 100%;\r\n\ttext-align: center;\r\n\tpadding: 3em 0;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .ref-tree {\r\n\tline-height: 23px;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .ref-tree .reference {\r\n\ttext-overflow: ellipsis;\r\n\toverflow: hidden;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .ref-tree .reference-file {\r\n\tdisplay: inline-flex;\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file {\r\n\tcolor: inherit !important;\r\n}\r\n\r\n.monaco-editor .reference-zone-widget .ref-tree .reference-file .count {\r\n\tmargin-right: 12px;\r\n\tmargin-left: auto;\r\n}\r\n\r\n/* High Contrast Theming */\r\n\r\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file {\r\n\tfont-weight: bold;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,mBAAmB;AACnB;CACC,qBAAqB;CACrB,wBAAwB;AACzB;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,WAAW;CACX,kBAAkB;CAClB,cAAc;AACf;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,uBAAuB;CACvB,gBAAgB;AACjB;;AAEA;CACC,oBAAoB;CACpB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA,0BAA0B;;AAE1B;CACC,iBAAiB;AAClB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -- zone widget */\\r\\n.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-bottom-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .inline {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: top;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .messages {\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\ttext-align: center;\\r\\n\\tpadding: 3em 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree {\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tdisplay: inline-flex;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file {\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file .count {\\r\\n\\tmargin-right: 12px;\\r\\n\\tmargin-left: auto;\\r\\n}\\r\\n\\r\\n/* High Contrast Theming */\\r\\n\\r\\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .suggest-preview-additional-widget {\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .suggest-preview-additional-widget .content-spacer {\r\n\tcolor: transparent;\r\n\twhite-space: pre;\r\n}\r\n\r\n.monaco-editor .suggest-preview-additional-widget .button {\r\n\tdisplay: inline-block;\r\n\tcursor: pointer;\r\n\ttext-decoration: underline;\r\n\ttext-underline-position: under;\r\n}\r\n\r\n.monaco-editor .ghost-text-hidden {\r\n\topacity: 0;\r\n\tfont-size: 0;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/ghostText.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;CACrB,eAAe;CACf,0BAA0B;CAC1B,8BAA8B;AAC/B;;AAEA;CACC,UAAU;CACV,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .suggest-preview-additional-widget {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-preview-additional-widget .content-spacer {\\r\\n\\tcolor: transparent;\\r\\n\\twhite-space: pre;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-preview-additional-widget .button {\\r\\n\\tdisplay: inline-block;\\r\\n\\tcursor: pointer;\\r\\n\\ttext-decoration: underline;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .ghost-text-hidden {\\r\\n\\topacity: 0;\\r\\n\\tfont-size: 0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n.monaco-editor .detected-link,\r\n.monaco-editor .detected-link-active {\r\n\ttext-decoration: underline;\r\n\ttext-underline-position: under;\r\n}\r\n\r\n.monaco-editor .detected-link-active {\r\n\tcursor: pointer;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;;CAEC,0BAA0B;CAC1B,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .detected-link,\\r\\n.monaco-editor .detected-link-active {\\r\\n\\ttext-decoration: underline;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .detected-link-active {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .monaco-editor-overlaymessage {\r\n\tpadding-bottom: 8px;\r\n\tz-index: 10000;\r\n}\r\n\r\n.monaco-editor .monaco-editor-overlaymessage.below {\r\n\tpadding-bottom: 0;\r\n\tpadding-top: 8px;\r\n\tz-index: 10000;\r\n}\r\n\r\n@keyframes fadeIn {\r\n\tfrom { opacity: 0; }\r\n\tto { opacity: 1; }\r\n}\r\n.monaco-editor .monaco-editor-overlaymessage.fadeIn {\r\n\tanimation: fadeIn 150ms ease-out;\r\n}\r\n\r\n@keyframes fadeOut {\r\n\tfrom { opacity: 1; }\r\n\tto { opacity: 0; }\r\n}\r\n.monaco-editor .monaco-editor-overlaymessage.fadeOut {\r\n\tanimation: fadeOut 100ms ease-out;\r\n}\r\n\r\n.monaco-editor .monaco-editor-overlaymessage .message {\r\n\tpadding: 1px 4px;\r\n}\r\n\r\n.monaco-editor .monaco-editor-overlaymessage .anchor {\r\n\twidth: 0 !important;\r\n\theight: 0 !important;\r\n\tborder-color: transparent;\r\n\tborder-style: solid;\r\n\tz-index: 1000;\r\n\tborder-width: 8px;\r\n\tposition: absolute;\r\n}\r\n\r\n.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top,\r\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.below {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.top {\r\n\tdisplay: inherit;\r\n\ttop: -8px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,mBAAmB;CACnB,cAAc;AACf;;AAEA;CACC,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;AACf;;AAEA;CACC,OAAO,UAAU,EAAE;CACnB,KAAK,UAAU,EAAE;AAClB;AACA;CACC,gCAAgC;AACjC;;AAEA;CACC,OAAO,UAAU,EAAE;CACnB,KAAK,UAAU,EAAE;AAClB;AACA;CACC,iCAAiC;AAClC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,mBAAmB;CACnB,oBAAoB;CACpB,yBAAyB;CACzB,mBAAmB;CACnB,aAAa;CACb,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,gBAAgB;CAChB,SAAS;AACV\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage {\\r\\n\\tpadding-bottom: 8px;\\r\\n\\tz-index: 10000;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage.below {\\r\\n\\tpadding-bottom: 0;\\r\\n\\tpadding-top: 8px;\\r\\n\\tz-index: 10000;\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n\\tfrom { opacity: 0; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeIn {\\r\\n\\tanimation: fadeIn 150ms ease-out;\\r\\n}\\r\\n\\r\\n@keyframes fadeOut {\\r\\n\\tfrom { opacity: 1; }\\r\\n\\tto { opacity: 0; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeOut {\\r\\n\\tanimation: fadeOut 100ms ease-out;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .message {\\r\\n\\tpadding: 1px 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .anchor {\\r\\n\\twidth: 0 !important;\\r\\n\\theight: 0 !important;\\r\\n\\tborder-color: transparent;\\r\\n\\tborder-style: solid;\\r\\n\\tz-index: 1000;\\r\\n\\tborder-width: 8px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top,\\r\\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.below {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage.below .anchor.top {\\r\\n\\tdisplay: inherit;\\r\\n\\ttop: -8px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .peekview-widget .head {\r\n\tbox-sizing: border-box;\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tfont-size: 13px;\r\n\tmargin-left: 20px;\r\n\tcursor: pointer;\r\n\tmin-width: 0;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) {\r\n\tfont-size: 0.9em;\r\n\tmargin-left: 0.5em;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .meta {\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .dirname {\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .filename {\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before {\r\n\tcontent: '-';\r\n\tpadding: 0 0.3em;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-actions {\r\n\tflex: 1;\r\n\ttext-align: right;\r\n\tpadding-right: 2px;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar,\r\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container {\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-editor .peekview-widget > .body {\r\n\tborder-top: 1px solid;\r\n\tposition: relative;\r\n}\r\n\r\n.monaco-editor .peekview-widget .head .peekview-title .codicon {\r\n\tmargin-right: 4px;\r\n}\r\n\r\n.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon {\r\n\tcolor: inherit !important;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,aAAa;AACd;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf,iBAAiB;CACjB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,OAAO;CACP,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,yBAAyB;AAC1B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .peekview-widget .head {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tfont-size: 13px;\\r\\n\\tmargin-left: 20px;\\r\\n\\tcursor: pointer;\\r\\n\\tmin-width: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) {\\r\\n\\tfont-size: 0.9em;\\r\\n\\tmargin-left: 0.5em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .filename {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before {\\r\\n\\tcontent: '-';\\r\\n\\tpadding: 0 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions {\\r\\n\\tflex: 1;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar,\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget > .body {\\r\\n\\tborder-top: 1px solid;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .codicon {\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon {\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .snippet-placeholder {\r\n\tmin-width: 2px;\r\n\toutline-style: solid;\r\n\toutline-width: 1px;\r\n}\r\n\r\n.monaco-editor .finish-snippet-placeholder {\r\n\toutline-style: solid;\r\n\toutline-width: 1px;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,cAAc;CACd,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;CACpB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .snippet-placeholder {\\r\\n\\tmin-width: 2px;\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .finish-snippet-placeholder {\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* Suggest widget*/\r\n\r\n.monaco-editor .suggest-widget {\r\n\twidth: 430px;\r\n\tz-index: 40;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n}\r\n\r\n.monaco-editor .suggest-widget.message {\r\n\tflex-direction: row;\r\n\talign-items: center;\r\n}\r\n\r\n.monaco-editor .suggest-widget,\r\n.monaco-editor .suggest-details {\r\n\tflex: 0 1 auto;\r\n\twidth: 100%;\r\n\tborder-style: solid;\r\n\tborder-width: 1px;\r\n}\r\n\r\n.monaco-editor.hc-black .suggest-widget,\r\n.monaco-editor.hc-black .suggest-details {\r\n\tborder-width: 2px;\r\n}\r\n\r\n/* Styles for status bar part */\r\n\r\n\r\n.monaco-editor .suggest-widget .suggest-status-bar {\r\n\tbox-sizing: border-box;\r\n\tdisplay: none;\r\n\tflex-flow: row nowrap;\r\n\tjustify-content: space-between;\r\n\twidth: 100%;\r\n\tfont-size: 80%;\r\n\tpadding: 0 4px 0 4px;\r\n\tborder-top: 1px solid transparent;\r\n\toverflow: hidden;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar {\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-editor .suggest-widget .suggest-status-bar .left {\r\n\tpadding-right: 8px;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label {\r\n\topacity: 0.5;\r\n\tcolor: inherit;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label {\r\n\tmargin-right: 0;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after {\r\n\tcontent: ', ';\r\n\tmargin-right: 0.3em;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,\r\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {\r\n\twidth: 100%;\r\n}\r\n\r\n/* Styles for Message element for when widget is loading or is empty */\r\n\r\n.monaco-editor .suggest-widget>.message {\r\n\tpadding-left: 22px;\r\n}\r\n\r\n/** Styles for the list element **/\r\n\r\n.monaco-editor .suggest-widget>.tree {\r\n\theight: 100%;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list {\r\n\tuser-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n}\r\n\r\n/** Styles for each row in the list element **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row {\r\n\tdisplay: flex;\r\n\t-mox-box-sizing: border-box;\r\n\tbox-sizing: border-box;\r\n\tpadding-right: 10px;\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: 2px 2px;\r\n\twhite-space: nowrap;\r\n\tcursor: pointer;\r\n\ttouch-action: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents {\r\n\tflex: 1;\r\n\theight: 100%;\r\n\toverflow: hidden;\r\n\tpadding-left: 2px;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main {\r\n\tdisplay: flex;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: pre;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left, .monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\r\n\tdisplay: flex;\r\n}\r\n\r\n.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight {\r\n\tfont-weight: bold;\r\n}\r\n\r\n/** ReadMore Icon styles **/\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore::before {\r\n\tcolor: inherit;\r\n\topacity: 1;\r\n\tfont-size: 14px;\r\n\tcursor: pointer;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close {\r\n\tposition: absolute;\r\n\ttop: 6px;\r\n\tright: 2px;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover {\r\n\topacity: 1;\r\n}\r\n\r\n/** signature, qualifier, type/details opacity **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\r\n\topacity: 0.7;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label {\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\topacity: 0.6;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label {\r\n\tmargin-left: 12px;\r\n\topacity: 0.4;\r\n\tfont-size: 85%;\r\n\tline-height: initial;\r\n\ttext-overflow: ellipsis;\r\n\toverflow: hidden;\r\n\talign-self: center;\r\n}\r\n\r\n/** Type Info and icon next to the label in the focused completion item **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\r\n\tfont-size: 85%;\r\n\tmargin-left: 1.1em;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source {\r\n\tdisplay: inline;\r\n}\r\n\r\n/** Details: if using CompletionItem#details, show on focus **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label {\r\n\tdisplay: inline;\r\n}\r\n\r\n/** Details: if using CompletionItemLabel#details, always show **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,\r\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label {\r\n\tdisplay: inline;\r\n}\r\n\r\n/** Ellipsis on hover **/\r\n\r\n.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {\r\n\twidth: calc(100% - 26px);\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left {\r\n\tflex-shrink: 1;\r\n\tflex-grow: 1;\r\n\toverflow: hidden;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label {\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label {\r\n\tmax-width: 100%;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label {\r\n\tflex-shrink: 1;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\r\n\toverflow: hidden;\r\n\tflex-shrink: 4;\r\n\tmax-width: 70%;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\tright: 10px;\r\n\twidth: 18px;\r\n\theight: 18px;\r\n\tvisibility: hidden;\r\n}\r\n\r\n/** Do NOT display ReadMore when docs is side/below **/\r\n\r\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore, .monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\r\n\tdisplay: none !important;\r\n}\r\n\r\n/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore {\r\n\tdisplay: none;\r\n}\r\n\r\n/** Focused item can show ReadMore, but can't when docs is side/below **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,\r\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover>.contents>.main>.right>.readMore {\r\n\tvisibility: visible;\r\n}\r\n\r\n/** Styles for each row in the list **/\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated {\r\n\topacity: 0.66;\r\n\ttext-decoration: unset;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container {\r\n\ttext-decoration: line-through;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before {\r\n\theight: 100%;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon {\r\n\tdisplay: block;\r\n\theight: 16px;\r\n\twidth: 16px;\r\n\tmargin-left: 2px;\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-size: 80%;\r\n\tbackground-position: center;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tmargin-right: 4px;\r\n}\r\n\r\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon, .monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan {\r\n\tmargin: 0 0 0 0.3em;\r\n\tborder: 0.1em solid #000;\r\n\twidth: 0.7em;\r\n\theight: 0.7em;\r\n\tdisplay: inline-block;\r\n}\r\n\r\n/** Styles for the docs of the completion item in focus **/\r\n\r\n.monaco-editor .suggest-details-container {\r\n\tz-index: 41;\r\n}\r\n\r\n.monaco-editor .suggest-details {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tcursor: default;\r\n}\r\n\r\n.monaco-editor .suggest-details.no-docs {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element {\r\n\tflex: 1;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body {\r\n\tbox-sizing: border-box;\r\n\theight: 100%;\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type {\r\n\tflex: 2;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\topacity: 0.7;\r\n\twhite-space: pre;\r\n\tmargin: 0 24px 0 0;\r\n\tpadding: 4px 0 12px 5px;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap {\r\n\twhite-space: normal;\r\n\tword-break: break-all;\r\n}\r\n\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs {\r\n\tmargin: 0;\r\n\tpadding: 4px 5px;\r\n\twhite-space: pre-wrap;\r\n}\r\n\r\n.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs {\r\n\tmargin-right: 24px;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs {\r\n\tpadding: 0;\r\n\twhite-space: initial;\r\n\tmin-height: calc(1rem + 8px);\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty) {\r\n\tpadding: 4px 5px;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child {\r\n\tmargin-top: 0;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child {\r\n\tmargin-bottom: 0;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code {\r\n\twhite-space: pre-wrap;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon {\r\n\tvertical-align: sub;\r\n}\r\n\r\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty {\r\n\tdisplay: none;\r\n}\r\n\r\n.monaco-editor .suggest-details code {\r\n\tborder-radius: 3px;\r\n\tpadding: 0 0.4em;\r\n}\r\n\r\n.monaco-editor .suggest-details ul {\r\n\tpadding-left: 20px;\r\n}\r\n\r\n.monaco-editor .suggest-details ol {\r\n\tpadding-left: 20px;\r\n}\r\n\r\n.monaco-editor .suggest-details p code {\r\n\tfont-family: var(--monaco-monospace-font);\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Suggest widget*/\\r\\n\\r\\n.monaco-editor .suggest-widget {\\r\\n\\twidth: 430px;\\r\\n\\tz-index: 40;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.message {\\r\\n\\tflex-direction: row;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget,\\r\\n.monaco-editor .suggest-details {\\r\\n\\tflex: 0 1 auto;\\r\\n\\twidth: 100%;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .suggest-widget,\\r\\n.monaco-editor.hc-black .suggest-details {\\r\\n\\tborder-width: 2px;\\r\\n}\\r\\n\\r\\n/* Styles for status bar part */\\r\\n\\r\\n\\r\\n.monaco-editor .suggest-widget .suggest-status-bar {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: none;\\r\\n\\tflex-flow: row nowrap;\\r\\n\\tjustify-content: space-between;\\r\\n\\twidth: 100%;\\r\\n\\tfont-size: 80%;\\r\\n\\tpadding: 0 4px 0 4px;\\r\\n\\tborder-top: 1px solid transparent;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .suggest-status-bar .left {\\r\\n\\tpadding-right: 8px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label {\\r\\n\\topacity: 0.5;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after {\\r\\n\\tcontent: ', ';\\r\\n\\tmargin-right: 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n/* Styles for Message element for when widget is loading or is empty */\\r\\n\\r\\n.monaco-editor .suggest-widget>.message {\\r\\n\\tpadding-left: 22px;\\r\\n}\\r\\n\\r\\n/** Styles for the list element **/\\r\\n\\r\\n.monaco-editor .suggest-widget>.tree {\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list element **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\t-mox-box-sizing: border-box;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tpadding-right: 10px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: 2px 2px;\\r\\n\\twhite-space: nowrap;\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents {\\r\\n\\tflex: 1;\\r\\n\\theight: 100%;\\r\\n\\toverflow: hidden;\\r\\n\\tpadding-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main {\\r\\n\\tdisplay: flex;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: pre;\\r\\n\\tjustify-content: space-between;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left, .monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n/** ReadMore Icon styles **/\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore::before {\\r\\n\\tcolor: inherit;\\r\\n\\topacity: 1;\\r\\n\\tfont-size: 14px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 6px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n/** signature, qualifier, type/details opacity **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\\r\\n\\topacity: 0.7;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\topacity: 0.6;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label {\\r\\n\\tmargin-left: 12px;\\r\\n\\topacity: 0.4;\\r\\n\\tfont-size: 85%;\\r\\n\\tline-height: initial;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\talign-self: center;\\r\\n}\\r\\n\\r\\n/** Type Info and icon next to the label in the focused completion item **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\\r\\n\\tfont-size: 85%;\\r\\n\\tmargin-left: 1.1em;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItem#details, show on focus **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItemLabel#details, always show **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Ellipsis on hover **/\\r\\n\\r\\n.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {\\r\\n\\twidth: calc(100% - 26px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left {\\r\\n\\tflex-shrink: 1;\\r\\n\\tflex-grow: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label {\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label {\\r\\n\\tmax-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label {\\r\\n\\tflex-shrink: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {\\r\\n\\toverflow: hidden;\\r\\n\\tflex-shrink: 4;\\r\\n\\tmax-width: 70%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 18px;\\r\\n\\tvisibility: hidden;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when docs is side/below **/\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore, .monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/** Focused item can show ReadMore, but can't when docs is side/below **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,\\r\\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover>.contents>.main>.right>.readMore {\\r\\n\\tvisibility: visible;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated {\\r\\n\\topacity: 0.66;\\r\\n\\ttext-decoration: unset;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon {\\r\\n\\tdisplay: block;\\r\\n\\theight: 16px;\\r\\n\\twidth: 16px;\\r\\n\\tmargin-left: 2px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-size: 80%;\\r\\n\\tbackground-position: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon, .monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan {\\r\\n\\tmargin: 0 0 0 0.3em;\\r\\n\\tborder: 0.1em solid #000;\\r\\n\\twidth: 0.7em;\\r\\n\\theight: 0.7em;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/** Styles for the docs of the completion item in focus **/\\r\\n\\r\\n.monaco-editor .suggest-details-container {\\r\\n\\tz-index: 41;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details.no-docs {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element {\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body {\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type {\\r\\n\\tflex: 2;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\topacity: 0.7;\\r\\n\\twhite-space: pre;\\r\\n\\tmargin: 0 24px 0 0;\\r\\n\\tpadding: 4px 0 12px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap {\\r\\n\\twhite-space: normal;\\r\\n\\tword-break: break-all;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs {\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 4px 5px;\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs {\\r\\n\\tmargin-right: 24px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs {\\r\\n\\tpadding: 0;\\r\\n\\twhite-space: initial;\\r\\n\\tmin-height: calc(1rem + 8px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty) {\\r\\n\\tpadding: 4px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code {\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon {\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-details p code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n.monaco-editor .zone-widget {\r\n\tposition: absolute;\r\n\tz-index: 10;\r\n}\r\n\r\n\r\n.monaco-editor .zone-widget .zone-widget-container {\r\n\tborder-top-style: solid;\r\n\tborder-bottom-style: solid;\r\n\tborder-top-width: 0;\r\n\tborder-bottom-width: 0;\r\n\tposition: relative;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,WAAW;AACZ;;;AAGA;CACC,uBAAuB;CACvB,0BAA0B;CAC1B,mBAAmB;CACnB,sBAAsB;CACtB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .zone-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .zone-widget .zone-widget-container {\\r\\n\\tborder-top-style: solid;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tborder-top-width: 0;\\r\\n\\tborder-bottom-width: 0;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-editor .tokens-inspect-widget {\r\n\tz-index: 50;\r\n\tuser-select: text;\r\n\t-webkit-user-select: text;\r\n\t-ms-user-select: text;\r\n\tpadding: 10px;\r\n}\r\n\r\n.tokens-inspect-separator {\r\n\theight: 1px;\r\n\tborder: 0;\r\n}\r\n\r\n.monaco-editor .tokens-inspect-widget .tm-token {\r\n\tfont-family: var(--monaco-monospace-font);\r\n}\r\n\r\n.monaco-editor .tokens-inspect-widget .tm-token-length {\r\n\tfont-weight: normal;\r\n\tfont-size: 60%;\r\n\tfloat: right;\r\n}\r\n\r\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\r\n\twidth: 100%;\r\n}\r\n\r\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\r\n\tfont-family: var(--monaco-monospace-font);\r\n\ttext-align: right;\r\n}\r\n\r\n.monaco-editor .tokens-inspect-widget .tm-token-type {\r\n\tfont-family: var(--monaco-monospace-font);\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,aAAa;AACd;;AAEA;CACC,WAAW;CACX,SAAS;AACV;;AAEA;CACC,yCAAyC;AAC1C;;AAEA;CACC,mBAAmB;CACnB,cAAc;CACd,YAAY;AACb;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,yCAAyC;CACzC,iBAAiB;AAClB;;AAEA;CACC,yCAAyC;AAC1C\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget {\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 10px;\\r\\n}\\r\\n\\r\\n.tokens-inspect-separator {\\r\\n\\theight: 1px;\\r\\n\\tborder: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-length {\\r\\n\\tfont-weight: normal;\\r\\n\\tfont-size: 60%;\\r\\n\\tfloat: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-type {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.quick-input-widget {\r\n\tfont-size: 13px;\r\n}\r\n\r\n.quick-input-widget .monaco-highlighted-label .highlight,\r\n.quick-input-widget .monaco-highlighted-label .highlight {\r\n\tcolor: #0066BF;\r\n}\r\n\r\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight,\r\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight {\r\n\tcolor: #9DDDFF;\r\n}\r\n\r\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight,\r\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight {\r\n\tcolor: #0097fb;\r\n}\r\n\r\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight,\r\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight {\r\n\tcolor: #F38518;\r\n}\r\n\r\n.monaco-keybinding > .monaco-keybinding-key {\r\n\tbackground-color: rgba(221, 221, 221, 0.4);\r\n\tborder: solid 1px rgba(204, 204, 204, 0.4);\r\n\tborder-bottom-color: rgba(187, 187, 187, 0.4);\r\n\tbox-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4);\r\n\tcolor: #555;\r\n}\r\n\r\n.hc-black .monaco-keybinding > .monaco-keybinding-key {\r\n\tbackground-color: transparent;\r\n\tborder: solid 1px rgb(111, 195, 223);\r\n\tbox-shadow: none;\r\n\tcolor: #fff;\r\n}\r\n\r\n.vs-dark .monaco-keybinding > .monaco-keybinding-key {\r\n\tbackground-color: rgba(128, 128, 128, 0.17);\r\n\tborder: solid 1px rgba(51, 51, 51, 0.6);\r\n\tborder-bottom-color: rgba(68, 68, 68, 0.6);\r\n\tbox-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6);\r\n\tcolor: #ccc;\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,eAAe;AAChB;;AAEA;;CAEC,cAAc;AACf;;AAEA;;CAEC,cAAc;AACf;;AAEA;;CAEC,cAAc;AACf;;AAEA;;CAEC,cAAc;AACf;;AAEA;CACC,0CAA0C;CAC1C,0CAA0C;CAC1C,6CAA6C;CAC7C,mDAAmD;CACnD,WAAW;AACZ;;AAEA;CACC,6BAA6B;CAC7B,oCAAoC;CACpC,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,2CAA2C;CAC3C,uCAAuC;CACvC,0CAA0C;CAC1C,gDAAgD;CAChD,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0066BF;\\r\\n}\\r\\n\\r\\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight,\\r\\n.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #9DDDFF;\\r\\n}\\r\\n\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0097fb;\\r\\n}\\r\\n\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #F38518;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tbackground-color: rgba(221, 221, 221, 0.4);\\r\\n\\tborder: solid 1px rgba(204, 204, 204, 0.4);\\r\\n\\tborder-bottom-color: rgba(187, 187, 187, 0.4);\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4);\\r\\n\\tcolor: #555;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tbackground-color: transparent;\\r\\n\\tborder: solid 1px rgb(111, 195, 223);\\r\\n\\tbox-shadow: none;\\r\\n\\tcolor: #fff;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tbackground-color: rgba(128, 128, 128, 0.17);\\r\\n\\tborder: solid 1px rgba(51, 51, 51, 0.6);\\r\\n\\tborder-bottom-color: rgba(68, 68, 68, 0.6);\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6);\\r\\n\\tcolor: #ccc;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n\r\n/* Default standalone editor fonts */\r\n.monaco-editor {\r\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\r\n\t--monaco-monospace-font: \"SF Mono\", Monaco, Menlo, Consolas, \"Ubuntu Mono\", \"Liberation Mono\", \"DejaVu Sans Mono\", \"Courier New\", monospace;\r\n}\r\n\r\n.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label {\r\n\tstroke-width: 1.2px;\r\n}\r\n\r\n.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\r\n.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\r\n\tstroke-width: 1.2px;\r\n}\r\n\r\n.monaco-hover p {\r\n\tmargin: 0;\r\n}\r\n\r\n/* See https://github.com/microsoft/monaco-editor/issues/2168#issuecomment-780078600 */\r\n.monaco-aria-container {\r\n\tposition: absolute !important;\r\n\ttop: 0; /* avoid being placed underneath a sibling element */\r\n\theight: 1px;\r\n\twidth: 1px;\r\n\tmargin: -1px;\r\n\toverflow: hidden;\r\n\tpadding: 0;\r\n\tclip: rect(1px, 1px, 1px, 1px);\r\n\tclip-path: inset(50%);\r\n}\r\n\r\n/* The hc-black theme is already high contrast optimized */\r\n.monaco-editor.hc-black {\r\n\t-ms-high-contrast-adjust: none;\r\n}\r\n/* In case the browser goes into high contrast mode and the editor is not configured with the hc-black theme */\r\n@media screen and (-ms-high-contrast:active) {\r\n\r\n\t/* current line highlight */\r\n\t.monaco-editor.vs .view-overlays .current-line,\r\n\t.monaco-editor.vs-dark .view-overlays .current-line {\r\n\t\tborder-color: windowtext !important;\r\n\t\tborder-left: 0;\r\n\t\tborder-right: 0;\r\n\t}\r\n\r\n\t/* view cursors */\r\n\t.monaco-editor.vs .cursor,\r\n\t.monaco-editor.vs-dark .cursor {\r\n\t\tbackground-color: windowtext !important;\r\n\t}\r\n\t/* dnd target */\r\n\t.monaco-editor.vs .dnd-target,\r\n\t.monaco-editor.vs-dark .dnd-target {\r\n\t\tborder-color: windowtext !important;\r\n\t}\r\n\r\n\t/* selected text background */\r\n\t.monaco-editor.vs .selected-text,\r\n\t.monaco-editor.vs-dark .selected-text {\r\n\t\tbackground-color: highlight !important;\r\n\t}\r\n\r\n\t/* allow the text to have a transparent background. */\r\n\t.monaco-editor.vs .view-line,\r\n\t.monaco-editor.vs-dark .view-line {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t}\r\n\r\n\t/* text color */\r\n\t.monaco-editor.vs .view-line span,\r\n\t.monaco-editor.vs-dark .view-line span {\r\n\t\tcolor: windowtext !important;\r\n\t}\r\n\t/* selected text color */\r\n\t.monaco-editor.vs .view-line span.inline-selected-text,\r\n\t.monaco-editor.vs-dark .view-line span.inline-selected-text {\r\n\t\tcolor: highlighttext !important;\r\n\t}\r\n\r\n\t/* allow decorations */\r\n\t.monaco-editor.vs .view-overlays,\r\n\t.monaco-editor.vs-dark .view-overlays {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t}\r\n\r\n\t/* various decorations */\r\n\t.monaco-editor.vs .selectionHighlight,\r\n\t.monaco-editor.vs-dark .selectionHighlight,\r\n\t.monaco-editor.vs .wordHighlight,\r\n\t.monaco-editor.vs-dark .wordHighlight,\r\n\t.monaco-editor.vs .wordHighlightStrong,\r\n\t.monaco-editor.vs-dark .wordHighlightStrong,\r\n\t.monaco-editor.vs .reference-decoration,\r\n\t.monaco-editor.vs-dark .reference-decoration {\r\n\t\tborder: 2px dotted highlight !important;\r\n\t\tbackground: transparent !important;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.monaco-editor.vs .rangeHighlight,\r\n\t.monaco-editor.vs-dark .rangeHighlight {\r\n\t\tbackground: transparent !important;\r\n\t\tborder: 1px dotted activeborder !important;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.monaco-editor.vs .bracket-match,\r\n\t.monaco-editor.vs-dark .bracket-match {\r\n\t\tborder-color: windowtext !important;\r\n\t\tbackground: transparent !important;\r\n\t}\r\n\r\n\t/* find widget */\r\n\t.monaco-editor.vs .findMatch,\r\n\t.monaco-editor.vs-dark .findMatch,\r\n\t.monaco-editor.vs .currentFindMatch,\r\n\t.monaco-editor.vs-dark .currentFindMatch {\r\n\t\tborder: 2px dotted activeborder !important;\r\n\t\tbackground: transparent !important;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.monaco-editor.vs .find-widget,\r\n\t.monaco-editor.vs-dark .find-widget {\r\n\t\tborder: 1px solid windowtext;\r\n\t}\r\n\r\n\t/* list - used by suggest widget */\r\n\t.monaco-editor.vs .monaco-list .monaco-list-row,\r\n\t.monaco-editor.vs-dark .monaco-list .monaco-list-row {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t\tcolor: windowtext !important;\r\n\t}\r\n\t.monaco-editor.vs .monaco-list .monaco-list-row.focused,\r\n\t.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused {\r\n\t\tcolor: highlighttext !important;\r\n\t\tbackground-color: highlight !important;\r\n\t}\r\n\t.monaco-editor.vs .monaco-list .monaco-list-row:hover,\r\n\t.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover {\r\n\t\tbackground: transparent !important;\r\n\t\tborder: 1px solid highlight;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t/* scrollbars */\r\n\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar,\r\n\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t\tbackground: background !important;\r\n\t\tborder: 1px solid windowtext;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider,\r\n\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\r\n\t\tbackground: windowtext !important;\r\n\t}\r\n\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider:hover,\r\n\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider:hover {\r\n\t\tbackground: highlight !important;\r\n\t}\r\n\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider.active,\r\n\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\r\n\t\tbackground: highlight !important;\r\n\t}\r\n\r\n\t/* overview ruler */\r\n\t.monaco-editor.vs .decorationsOverviewRuler,\r\n\t.monaco-editor.vs-dark .decorationsOverviewRuler {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\t/* minimap */\r\n\t.monaco-editor.vs .minimap,\r\n\t.monaco-editor.vs-dark .minimap {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t/* squiggles */\r\n\t.monaco-editor.vs .squiggly-d-error,\r\n\t.monaco-editor.vs-dark .squiggly-d-error {\r\n\t\tbackground: transparent !important;\r\n\t\tborder-bottom: 4px double #E47777;\r\n\t}\r\n\t.monaco-editor.vs .squiggly-c-warning,\r\n\t.monaco-editor.vs-dark .squiggly-c-warning {\r\n\t\tborder-bottom: 4px double #71B771;\r\n\t}\r\n\t.monaco-editor.vs .squiggly-b-info,\r\n\t.monaco-editor.vs-dark .squiggly-b-info {\r\n\t\tborder-bottom: 4px double #71B771;\r\n\t}\r\n\t.monaco-editor.vs .squiggly-a-hint,\r\n\t.monaco-editor.vs-dark .squiggly-a-hint {\r\n\t\tborder-bottom: 4px double #6c6c6c;\r\n\t}\r\n\r\n\t/* contextmenu */\r\n\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\r\n\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t\tcolor: highlighttext !important;\r\n\t\tbackground-color: highlight !important;\r\n\t}\r\n\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,\r\n\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label {\r\n\t\t-ms-high-contrast-adjust: none;\r\n\t\tbackground: transparent !important;\r\n\t\tborder: 1px solid highlight;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t/* diff editor */\r\n\t.monaco-diff-editor.vs .diffOverviewRuler,\r\n\t.monaco-diff-editor.vs-dark .diffOverviewRuler {\r\n\t\tdisplay: none;\r\n\t}\r\n\t.monaco-editor.vs .line-insert,\r\n\t.monaco-editor.vs-dark .line-insert,\r\n\t.monaco-editor.vs .line-delete,\r\n\t.monaco-editor.vs-dark .line-delete {\r\n\t\tbackground: transparent !important;\r\n\t\tborder: 1px solid highlight !important;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.monaco-editor.vs .char-insert,\r\n\t.monaco-editor.vs-dark .char-insert,\r\n\t.monaco-editor.vs .char-delete,\r\n\t.monaco-editor.vs-dark .char-delete {\r\n\t\tbackground: transparent !important;\r\n\t}\r\n}\r\n\r\n/*.monaco-editor.vs [tabindex=\"0\"]:focus {\r\n\toutline: 1px solid rgba(0, 122, 204, 0.4);\r\n\toutline-offset: -1px;\r\n\topacity: 1 !important;\r\n}\r\n\r\n.monaco-editor.vs-dark [tabindex=\"0\"]:focus {\r\n\toutline: 1px solid rgba(14, 99, 156, 0.6);\r\n\toutline-offset: -1px;\r\n\topacity: 1 !important;\r\n}*/\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;;AAG/F,oCAAoC;AACpC;CACC,6IAA6I;CAC7I,2IAA2I;AAC5I;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,mBAAmB;AACpB;;AAEA;CACC,SAAS;AACV;;AAEA,sFAAsF;AACtF;CACC,6BAA6B;CAC7B,MAAM,EAAE,oDAAoD;CAC5D,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,UAAU;CACV,8BAA8B;CAC9B,qBAAqB;AACtB;;AAEA,0DAA0D;AAC1D;CACC,8BAA8B;AAC/B;AACA,8GAA8G;AAC9G;;CAEC,2BAA2B;CAC3B;;EAEC,mCAAmC;EACnC,cAAc;EACd,eAAe;CAChB;;CAEA,iBAAiB;CACjB;;EAEC,uCAAuC;CACxC;CACA,eAAe;CACf;;EAEC,mCAAmC;CACpC;;CAEA,6BAA6B;CAC7B;;EAEC,sCAAsC;CACvC;;CAEA,qDAAqD;CACrD;;EAEC,8BAA8B;CAC/B;;CAEA,eAAe;CACf;;EAEC,4BAA4B;CAC7B;CACA,wBAAwB;CACxB;;EAEC,+BAA+B;CAChC;;CAEA,sBAAsB;CACtB;;EAEC,8BAA8B;CAC/B;;CAEA,wBAAwB;CACxB;;;;;;;;EAQC,uCAAuC;EACvC,kCAAkC;EAClC,sBAAsB;CACvB;CACA;;EAEC,kCAAkC;EAClC,0CAA0C;EAC1C,sBAAsB;CACvB;CACA;;EAEC,mCAAmC;EACnC,kCAAkC;CACnC;;CAEA,gBAAgB;CAChB;;;;EAIC,0CAA0C;EAC1C,kCAAkC;EAClC,sBAAsB;CACvB;CACA;;EAEC,4BAA4B;CAC7B;;CAEA,kCAAkC;CAClC;;EAEC,8BAA8B;EAC9B,4BAA4B;CAC7B;CACA;;EAEC,+BAA+B;EAC/B,sCAAsC;CACvC;CACA;;EAEC,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;CACvB;;CAEA,eAAe;CACf;;EAEC,8BAA8B;EAC9B,iCAAiC;EACjC,4BAA4B;EAC5B,sBAAsB;CACvB;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,gCAAgC;CACjC;CACA;;EAEC,gCAAgC;CACjC;;CAEA,mBAAmB;CACnB;;EAEC,UAAU;CACX;;CAEA,YAAY;CACZ;;EAEC,aAAa;CACd;;CAEA,cAAc;CACd;;EAEC,kCAAkC;EAClC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;;CAEA,gBAAgB;CAChB;;EAEC,8BAA8B;EAC9B,+BAA+B;EAC/B,sCAAsC;CACvC;CACA;;EAEC,8BAA8B;EAC9B,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;CACvB;;CAEA,gBAAgB;CAChB;;EAEC,aAAa;CACd;CACA;;;;EAIC,kCAAkC;EAClC,sCAAsC;EACtC,sBAAsB;CACvB;CACA;;;;EAIC,kCAAkC;CACnC;AACD;;AAEA;;;;;;;;;;EAUE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\n/* Default standalone editor fonts */\\r\\n.monaco-editor {\\r\\n\\tfont-family: -apple-system, BlinkMacSystemFont, \\\"Segoe WPC\\\", \\\"Segoe UI\\\", \\\"HelveticaNeue-Light\\\", system-ui, \\\"Ubuntu\\\", \\\"Droid Sans\\\", sans-serif;\\r\\n\\t--monaco-monospace-font: \\\"SF Mono\\\", Monaco, Menlo, Consolas, \\\"Ubuntu Mono\\\", \\\"Liberation Mono\\\", \\\"DejaVu Sans Mono\\\", \\\"Courier New\\\", monospace;\\r\\n}\\r\\n\\r\\n.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-hover p {\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n/* See https://github.com/microsoft/monaco-editor/issues/2168#issuecomment-780078600 */\\r\\n.monaco-aria-container {\\r\\n\\tposition: absolute !important;\\r\\n\\ttop: 0; /* avoid being placed underneath a sibling element */\\r\\n\\theight: 1px;\\r\\n\\twidth: 1px;\\r\\n\\tmargin: -1px;\\r\\n\\toverflow: hidden;\\r\\n\\tpadding: 0;\\r\\n\\tclip: rect(1px, 1px, 1px, 1px);\\r\\n\\tclip-path: inset(50%);\\r\\n}\\r\\n\\r\\n/* The hc-black theme is already high contrast optimized */\\r\\n.monaco-editor.hc-black {\\r\\n\\t-ms-high-contrast-adjust: none;\\r\\n}\\r\\n/* In case the browser goes into high contrast mode and the editor is not configured with the hc-black theme */\\r\\n@media screen and (-ms-high-contrast:active) {\\r\\n\\r\\n\\t/* current line highlight */\\r\\n\\t.monaco-editor.vs .view-overlays .current-line,\\r\\n\\t.monaco-editor.vs-dark .view-overlays .current-line {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tborder-left: 0;\\r\\n\\t\\tborder-right: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* view cursors */\\r\\n\\t.monaco-editor.vs .cursor,\\r\\n\\t.monaco-editor.vs-dark .cursor {\\r\\n\\t\\tbackground-color: windowtext !important;\\r\\n\\t}\\r\\n\\t/* dnd target */\\r\\n\\t.monaco-editor.vs .dnd-target,\\r\\n\\t.monaco-editor.vs-dark .dnd-target {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* selected text background */\\r\\n\\t.monaco-editor.vs .selected-text,\\r\\n\\t.monaco-editor.vs-dark .selected-text {\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow the text to have a transparent background. */\\r\\n\\t.monaco-editor.vs .view-line,\\r\\n\\t.monaco-editor.vs-dark .view-line {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* text color */\\r\\n\\t.monaco-editor.vs .view-line span,\\r\\n\\t.monaco-editor.vs-dark .view-line span {\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t/* selected text color */\\r\\n\\t.monaco-editor.vs .view-line span.inline-selected-text,\\r\\n\\t.monaco-editor.vs-dark .view-line span.inline-selected-text {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow decorations */\\r\\n\\t.monaco-editor.vs .view-overlays,\\r\\n\\t.monaco-editor.vs-dark .view-overlays {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* various decorations */\\r\\n\\t.monaco-editor.vs .selectionHighlight,\\r\\n\\t.monaco-editor.vs-dark .selectionHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlight,\\r\\n\\t.monaco-editor.vs-dark .wordHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs-dark .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs .reference-decoration,\\r\\n\\t.monaco-editor.vs-dark .reference-decoration {\\r\\n\\t\\tborder: 2px dotted highlight !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .rangeHighlight,\\r\\n\\t.monaco-editor.vs-dark .rangeHighlight {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px dotted activeborder !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .bracket-match,\\r\\n\\t.monaco-editor.vs-dark .bracket-match {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* find widget */\\r\\n\\t.monaco-editor.vs .findMatch,\\r\\n\\t.monaco-editor.vs-dark .findMatch,\\r\\n\\t.monaco-editor.vs .currentFindMatch,\\r\\n\\t.monaco-editor.vs-dark .currentFindMatch {\\r\\n\\t\\tborder: 2px dotted activeborder !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .find-widget,\\r\\n\\t.monaco-editor.vs-dark .find-widget {\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t}\\r\\n\\r\\n\\t/* list - used by suggest widget */\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row.focused,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* scrollbars */\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: background !important;\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\t\\tbackground: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider.active,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* overview ruler */\\r\\n\\t.monaco-editor.vs .decorationsOverviewRuler,\\r\\n\\t.monaco-editor.vs-dark .decorationsOverviewRuler {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* minimap */\\r\\n\\t.monaco-editor.vs .minimap,\\r\\n\\t.monaco-editor.vs-dark .minimap {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* squiggles */\\r\\n\\t.monaco-editor.vs .squiggly-d-error,\\r\\n\\t.monaco-editor.vs-dark .squiggly-d-error {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder-bottom: 4px double #E47777;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-c-warning,\\r\\n\\t.monaco-editor.vs-dark .squiggly-c-warning {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-b-info,\\r\\n\\t.monaco-editor.vs-dark .squiggly-b-info {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-a-hint,\\r\\n\\t.monaco-editor.vs-dark .squiggly-a-hint {\\r\\n\\t\\tborder-bottom: 4px double #6c6c6c;\\r\\n\\t}\\r\\n\\r\\n\\t/* contextmenu */\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* diff editor */\\r\\n\\t.monaco-diff-editor.vs .diffOverviewRuler,\\r\\n\\t.monaco-diff-editor.vs-dark .diffOverviewRuler {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .line-insert,\\r\\n\\t.monaco-editor.vs-dark .line-insert,\\r\\n\\t.monaco-editor.vs .line-delete,\\r\\n\\t.monaco-editor.vs-dark .line-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .char-insert,\\r\\n\\t.monaco-editor.vs-dark .char-insert,\\r\\n\\t.monaco-editor.vs .char-delete,\\r\\n\\t.monaco-editor.vs-dark .char-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n/*.monaco-editor.vs [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(0, 122, 204, 0.4);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(14, 99, 156, 0.6);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.monaco-action-bar .action-item.menu-entry .action-label.icon {\r\n\twidth: 16px;\r\n\theight: 16px;\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: 50%;\r\n\tbackground-size: 16px;\r\n}\r\n\r\n.monaco-action-bar .action-item.menu-entry .action-label {\r\n\tbackground-image: var(--menu-entry-icon-light);\r\n}\r\n\r\n.vs-dark .monaco-action-bar .action-item.menu-entry .action-label,\r\n.hc-black .monaco-action-bar .action-item.menu-entry .action-label {\r\n\tbackground-image: var(--menu-entry-icon-dark);\r\n}\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,YAAY;CACZ,4BAA4B;CAC5B,wBAAwB;CACxB,qBAAqB;AACtB;;AAEA;CACC,8CAA8C;AAC/C;;AAEA;;CAEC,6CAA6C;AAC9C\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-action-bar .action-item.menu-entry .action-label.icon {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: 50%;\\r\\n\\tbackground-size: 16px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.menu-entry .action-label {\\r\\n\\tbackground-image: var(--menu-entry-icon-light);\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-action-bar .action-item.menu-entry .action-label,\\r\\n.hc-black .monaco-action-bar .action-item.menu-entry .action-label {\\r\\n\\tbackground-image: var(--menu-entry-icon-dark);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n.context-view .monaco-menu {\r\n\tmin-width: 130px;\r\n}\r\n\r\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view .monaco-menu {\\r\\n\\tmin-width: 130px;\\r\\n}\\r\\n\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","self[\"MonacoEnvironment\"] = (function (paths) {\n function stripTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n return {\n globalAPI: false,\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 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 \"css\": \"css.worker.js\",\n \"typescript\": \"ts.worker.js\",\n \"json\": \"json.worker.js\",\n \"javascript\": \"ts.worker.js\",\n \"less\": \"css.worker.js\",\n \"scss\": \"css.worker.js\",\n \"handlebars\": \"html.worker.js\",\n \"razor\": \"html.worker.js\"\n});\nrequire(\"./contrib/bracketMatching/bracketMatching.js\");\nrequire(\"./contrib/caretOperations/caretOperations.js\");\nrequire(\"./contrib/clipboard/clipboard.js\");\nrequire(\"./contrib/codelens/codelensController.js\");\nrequire(\"./contrib/find/findController.js\");\nrequire(\"./contrib/folding/folding.js\");\nrequire(\"./contrib/hover/hover.js\");\nrequire(\"./standalone/browser/inspectTokens/inspectTokens.js\");\nrequire(\"./contrib/links/links.js\");\nrequire(\"./contrib/smartSelect/smartSelect.js\");\nrequire(\"./contrib/toggleTabFocusMode/toggleTabFocusMode.js\");\nrequire(\"./contrib/wordHighlighter/wordHighlighter.js\");\nrequire(\"./contrib/wordOperations/wordOperations.js\");\nmodule.exports = require(\"!!./editor.api.js\");\nrequire(\"../basic-languages/html/html.contribution.js\");\nrequire(\"../language/html/monaco.contribution.js\");\nrequire(\"../basic-languages/css/css.contribution.js\");\nrequire(\"../language/css/monaco.contribution.js\");\nrequire(\"../basic-languages/javascript/javascript.contribution.js\");\nrequire(\"../basic-languages/typescript/typescript.contribution.js\");\nrequire(\"../language/typescript/monaco.contribution.js\");\nrequire(\"../language/json/monaco.contribution.js\");\nrequire(\"../basic-languages/markdown/markdown.contribution.js\");\nrequire(\"../basic-languages/shell/shell.contribution.js\");\nrequire(\"../basic-languages/xml/xml.contribution.js\");\nrequire(\"../basic-languages/yaml/yaml.contribution.js\");","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../common/event.js';\r\nclass WindowManager {\r\n constructor() {\r\n // --- Zoom Level\r\n this._zoomLevel = 0;\r\n this._lastZoomLevelChangeTime = 0;\r\n this._onDidChangeZoomLevel = new Emitter();\r\n this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;\r\n // --- Zoom Factor\r\n this._zoomFactor = 1;\r\n }\r\n getZoomLevel() {\r\n return this._zoomLevel;\r\n }\r\n getTimeSinceLastZoomLevelChanged() {\r\n return Date.now() - this._lastZoomLevelChangeTime;\r\n }\r\n getZoomFactor() {\r\n return this._zoomFactor;\r\n }\r\n // --- Pixel Ratio\r\n getPixelRatio() {\r\n let ctx = document.createElement('canvas').getContext('2d');\r\n let dpr = window.devicePixelRatio || 1;\r\n let bsr = ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio || 1;\r\n return dpr / bsr;\r\n }\r\n}\r\nWindowManager.INSTANCE = new WindowManager();\r\nexport function getZoomLevel() {\r\n return WindowManager.INSTANCE.getZoomLevel();\r\n}\r\n/** Returns the time (in ms) since the zoom level was changed */\r\nexport function getTimeSinceLastZoomLevelChanged() {\r\n return WindowManager.INSTANCE.getTimeSinceLastZoomLevelChanged();\r\n}\r\nexport function onDidChangeZoomLevel(callback) {\r\n return WindowManager.INSTANCE.onDidChangeZoomLevel(callback);\r\n}\r\n/** The zoom scale for an index, e.g. 1, 1.2, 1.4 */\r\nexport function getZoomFactor() {\r\n return WindowManager.INSTANCE.getZoomFactor();\r\n}\r\nexport function getPixelRatio() {\r\n return WindowManager.INSTANCE.getPixelRatio();\r\n}\r\nconst userAgent = navigator.userAgent;\r\nexport const isFirefox = (userAgent.indexOf('Firefox') >= 0);\r\nexport const isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);\r\nexport const isChrome = (userAgent.indexOf('Chrome') >= 0);\r\nexport const isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));\r\nexport const isWebkitWebView = (!isChrome && !isSafari && isWebKit);\r\nexport const isAndroid = (userAgent.indexOf('Android') >= 0);\r\nexport const isStandalone = (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport * as platform from '../common/platform.js';\r\n/**\r\n * Browser feature we can support in current platform, browser and environment.\r\n */\r\nexport const BrowserFeatures = {\r\n clipboard: {\r\n writeText: (platform.isNative\r\n || (document.queryCommandSupported && document.queryCommandSupported('copy'))\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.writeText)),\r\n readText: (platform.isNative\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.readText))\r\n },\r\n keyboard: (() => {\r\n if (platform.isNative || browser.isStandalone) {\r\n return 0 /* Always */;\r\n }\r\n if (navigator.keyboard || browser.isSafari) {\r\n return 1 /* FullScreen */;\r\n }\r\n return 2 /* None */;\r\n })(),\r\n // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n touch: 'ontouchstart' in window || navigator.maxTouchPoints > 0,\r\n pointerEvents: window.PointerEvent && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0)\r\n};\r\n","import { Mimes } from '../common/mime.js';\r\n// Common data transfers\r\nexport const DataTransfers = {\r\n /**\r\n * Application specific resource transfer type\r\n */\r\n RESOURCES: 'ResourceURLs',\r\n /**\r\n * Browser specific transfer type to download\r\n */\r\n DOWNLOAD_URL: 'DownloadURL',\r\n /**\r\n * Browser specific transfer type for files\r\n */\r\n FILES: 'Files',\r\n /**\r\n * Typically transfer type for copy/paste transfers.\r\n */\r\n TEXT: Mimes.text,\r\n /**\r\n * Application specific terminal transfer type.\r\n */\r\n TERMINALS: 'Terminals'\r\n};\r\nexport class DragAndDropData {\r\n constructor(data) {\r\n this.data = data;\r\n }\r\n update() {\r\n // noop\r\n }\r\n getData() {\r\n return this.data;\r\n }\r\n}\r\nexport const StaticDND = {\r\n CurrentDragAndDropData: undefined\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { StandardKeyboardEvent } from './keyboardEvent.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { TimeoutTimer } from '../common/async.js';\r\nimport { onUnexpectedError } from '../common/errors.js';\r\nimport { Emitter } from '../common/event.js';\r\nimport { Disposable, DisposableStore, toDisposable } from '../common/lifecycle.js';\r\nimport * as platform from '../common/platform.js';\r\nimport { FileAccess, RemoteAuthorities } from '../common/network.js';\r\nimport { BrowserFeatures } from './canIUse.js';\r\nexport function clearNode(node) {\r\n while (node.firstChild) {\r\n node.firstChild.remove();\r\n }\r\n}\r\n/**\r\n * @deprecated Use node.isConnected directly\r\n */\r\nexport function isInDOM(node) {\r\n var _a;\r\n return (_a = node === null || node === void 0 ? void 0 : node.isConnected) !== null && _a !== void 0 ? _a : false;\r\n}\r\nclass DomListener {\r\n constructor(node, type, handler, options) {\r\n this._node = node;\r\n this._type = type;\r\n this._handler = handler;\r\n this._options = (options || false);\r\n this._node.addEventListener(this._type, this._handler, this._options);\r\n }\r\n dispose() {\r\n if (!this._handler) {\r\n // Already disposed\r\n return;\r\n }\r\n this._node.removeEventListener(this._type, this._handler, this._options);\r\n // Prevent leakers from holding on to the dom or handler func\r\n this._node = null;\r\n this._handler = null;\r\n }\r\n}\r\nexport function addDisposableListener(node, type, handler, useCaptureOrOptions) {\r\n return new DomListener(node, type, handler, useCaptureOrOptions);\r\n}\r\nfunction _wrapAsStandardMouseEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardMouseEvent(e));\r\n };\r\n}\r\nfunction _wrapAsStandardKeyboardEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardKeyboardEvent(e));\r\n };\r\n}\r\nexport let addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {\r\n let wrapHandler = handler;\r\n if (type === 'click' || type === 'mousedown') {\r\n wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n }\r\n else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {\r\n wrapHandler = _wrapAsStandardKeyboardEvent(handler);\r\n }\r\n return addDisposableListener(node, type, wrapHandler, useCapture);\r\n};\r\nexport let addStandardDisposableGenericMouseDownListner = function addStandardDisposableListener(node, handler, useCapture) {\r\n let wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n return addDisposableGenericMouseDownListner(node, wrapHandler, useCapture);\r\n};\r\nexport function addDisposableGenericMouseDownListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);\r\n}\r\nexport function addDisposableGenericMouseUpListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);\r\n}\r\nexport function addDisposableNonBubblingMouseOutListener(node, handler) {\r\n return addDisposableListener(node, 'mouseout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nexport function addDisposableNonBubblingPointerOutListener(node, handler) {\r\n return addDisposableListener(node, 'pointerout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nlet _animationFrame = null;\r\nfunction doRequestAnimationFrame(callback) {\r\n if (!_animationFrame) {\r\n const emulatedRequestAnimationFrame = (callback) => {\r\n return setTimeout(() => callback(new Date().getTime()), 0);\r\n };\r\n _animationFrame = (self.requestAnimationFrame\r\n || self.msRequestAnimationFrame\r\n || self.webkitRequestAnimationFrame\r\n || self.mozRequestAnimationFrame\r\n || self.oRequestAnimationFrame\r\n || emulatedRequestAnimationFrame);\r\n }\r\n return _animationFrame.call(self, callback);\r\n}\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed immediately.\r\n * @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).\r\n */\r\nexport let runAtThisOrScheduleAtNextAnimationFrame;\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed at the next animation frame.\r\n * @return token that can be used to cancel the scheduled runner.\r\n */\r\nexport let scheduleAtNextAnimationFrame;\r\nclass AnimationFrameQueueItem {\r\n constructor(runner, priority = 0) {\r\n this._runner = runner;\r\n this.priority = priority;\r\n this._canceled = false;\r\n }\r\n dispose() {\r\n this._canceled = true;\r\n }\r\n execute() {\r\n if (this._canceled) {\r\n return;\r\n }\r\n try {\r\n this._runner();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n // Sort by priority (largest to lowest)\r\n static sort(a, b) {\r\n return b.priority - a.priority;\r\n }\r\n}\r\n(function () {\r\n /**\r\n * The runners scheduled at the next animation frame\r\n */\r\n let NEXT_QUEUE = [];\r\n /**\r\n * The runners scheduled at the current animation frame\r\n */\r\n let CURRENT_QUEUE = null;\r\n /**\r\n * A flag to keep track if the native requestAnimationFrame was already called\r\n */\r\n let animFrameRequested = false;\r\n /**\r\n * A flag to indicate if currently handling a native requestAnimationFrame callback\r\n */\r\n let inAnimationFrameRunner = false;\r\n let animationFrameRunner = () => {\r\n animFrameRequested = false;\r\n CURRENT_QUEUE = NEXT_QUEUE;\r\n NEXT_QUEUE = [];\r\n inAnimationFrameRunner = true;\r\n while (CURRENT_QUEUE.length > 0) {\r\n CURRENT_QUEUE.sort(AnimationFrameQueueItem.sort);\r\n let top = CURRENT_QUEUE.shift();\r\n top.execute();\r\n }\r\n inAnimationFrameRunner = false;\r\n };\r\n scheduleAtNextAnimationFrame = (runner, priority = 0) => {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n NEXT_QUEUE.push(item);\r\n if (!animFrameRequested) {\r\n animFrameRequested = true;\r\n doRequestAnimationFrame(animationFrameRunner);\r\n }\r\n return item;\r\n };\r\n runAtThisOrScheduleAtNextAnimationFrame = (runner, priority) => {\r\n if (inAnimationFrameRunner) {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n CURRENT_QUEUE.push(item);\r\n return item;\r\n }\r\n else {\r\n return scheduleAtNextAnimationFrame(runner, priority);\r\n }\r\n };\r\n})();\r\nconst MINIMUM_TIME_MS = 8;\r\nconst DEFAULT_EVENT_MERGER = function (lastEvent, currentEvent) {\r\n return currentEvent;\r\n};\r\nclass TimeoutThrottledDomListener extends Disposable {\r\n constructor(node, type, handler, eventMerger = DEFAULT_EVENT_MERGER, minimumTimeMs = MINIMUM_TIME_MS) {\r\n super();\r\n let lastEvent = null;\r\n let lastHandlerTime = 0;\r\n let timeout = this._register(new TimeoutTimer());\r\n let invokeHandler = () => {\r\n lastHandlerTime = (new Date()).getTime();\r\n handler(lastEvent);\r\n lastEvent = null;\r\n };\r\n this._register(addDisposableListener(node, type, (e) => {\r\n lastEvent = eventMerger(lastEvent, e);\r\n let elapsedTime = (new Date()).getTime() - lastHandlerTime;\r\n if (elapsedTime >= minimumTimeMs) {\r\n timeout.cancel();\r\n invokeHandler();\r\n }\r\n else {\r\n timeout.setIfNotSet(invokeHandler, minimumTimeMs - elapsedTime);\r\n }\r\n }));\r\n }\r\n}\r\nexport function addDisposableThrottledListener(node, type, handler, eventMerger, minimumTimeMs) {\r\n return new TimeoutThrottledDomListener(node, type, handler, eventMerger, minimumTimeMs);\r\n}\r\nexport function getComputedStyle(el) {\r\n return document.defaultView.getComputedStyle(el, null);\r\n}\r\nexport function getClientArea(element) {\r\n // Try with DOM clientWidth / clientHeight\r\n if (element !== document.body) {\r\n return new Dimension(element.clientWidth, element.clientHeight);\r\n }\r\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\r\n if (platform.isIOS && window.visualViewport) {\r\n return new Dimension(window.visualViewport.width, window.visualViewport.height);\r\n }\r\n // Try innerWidth / innerHeight\r\n if (window.innerWidth && window.innerHeight) {\r\n return new Dimension(window.innerWidth, window.innerHeight);\r\n }\r\n // Try with document.body.clientWidth / document.body.clientHeight\r\n if (document.body && document.body.clientWidth && document.body.clientHeight) {\r\n return new Dimension(document.body.clientWidth, document.body.clientHeight);\r\n }\r\n // Try with document.documentElement.clientWidth / document.documentElement.clientHeight\r\n if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {\r\n return new Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);\r\n }\r\n throw new Error('Unable to figure out browser width and height');\r\n}\r\nclass SizeUtils {\r\n // Adapted from WinJS\r\n // Converts a CSS positioning string for the specified element to pixels.\r\n static convertToPixels(element, value) {\r\n return parseFloat(value) || 0;\r\n }\r\n static getDimension(element, cssPropertyName, jsPropertyName) {\r\n let computedStyle = getComputedStyle(element);\r\n let value = '0';\r\n if (computedStyle) {\r\n if (computedStyle.getPropertyValue) {\r\n value = computedStyle.getPropertyValue(cssPropertyName);\r\n }\r\n else {\r\n // IE8\r\n value = computedStyle.getAttribute(jsPropertyName);\r\n }\r\n }\r\n return SizeUtils.convertToPixels(element, value);\r\n }\r\n static getBorderLeftWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-left-width', 'borderLeftWidth');\r\n }\r\n static getBorderRightWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-right-width', 'borderRightWidth');\r\n }\r\n static getBorderTopWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-top-width', 'borderTopWidth');\r\n }\r\n static getBorderBottomWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-bottom-width', 'borderBottomWidth');\r\n }\r\n static getPaddingLeft(element) {\r\n return SizeUtils.getDimension(element, 'padding-left', 'paddingLeft');\r\n }\r\n static getPaddingRight(element) {\r\n return SizeUtils.getDimension(element, 'padding-right', 'paddingRight');\r\n }\r\n static getPaddingTop(element) {\r\n return SizeUtils.getDimension(element, 'padding-top', 'paddingTop');\r\n }\r\n static getPaddingBottom(element) {\r\n return SizeUtils.getDimension(element, 'padding-bottom', 'paddingBottom');\r\n }\r\n static getMarginLeft(element) {\r\n return SizeUtils.getDimension(element, 'margin-left', 'marginLeft');\r\n }\r\n static getMarginTop(element) {\r\n return SizeUtils.getDimension(element, 'margin-top', 'marginTop');\r\n }\r\n static getMarginRight(element) {\r\n return SizeUtils.getDimension(element, 'margin-right', 'marginRight');\r\n }\r\n static getMarginBottom(element) {\r\n return SizeUtils.getDimension(element, 'margin-bottom', 'marginBottom');\r\n }\r\n}\r\nexport class Dimension {\r\n constructor(width, height) {\r\n this.width = width;\r\n this.height = height;\r\n }\r\n with(width = this.width, height = this.height) {\r\n if (width !== this.width || height !== this.height) {\r\n return new Dimension(width, height);\r\n }\r\n else {\r\n return this;\r\n }\r\n }\r\n static is(obj) {\r\n return typeof obj === 'object' && typeof obj.height === 'number' && typeof obj.width === 'number';\r\n }\r\n static lift(obj) {\r\n if (obj instanceof Dimension) {\r\n return obj;\r\n }\r\n else {\r\n return new Dimension(obj.width, obj.height);\r\n }\r\n }\r\n static equals(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n return a.width === b.width && a.height === b.height;\r\n }\r\n}\r\nexport function getTopLeftOffset(element) {\r\n // Adapted from WinJS.Utilities.getPosition\r\n // and added borders to the mix\r\n let offsetParent = element.offsetParent;\r\n let top = element.offsetTop;\r\n let left = element.offsetLeft;\r\n while ((element = element.parentNode) !== null\r\n && element !== document.body\r\n && element !== document.documentElement) {\r\n top -= element.scrollTop;\r\n const c = isShadowRoot(element) ? null : getComputedStyle(element);\r\n if (c) {\r\n left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;\r\n }\r\n if (element === offsetParent) {\r\n left += SizeUtils.getBorderLeftWidth(element);\r\n top += SizeUtils.getBorderTopWidth(element);\r\n top += element.offsetTop;\r\n left += element.offsetLeft;\r\n offsetParent = element.offsetParent;\r\n }\r\n }\r\n return {\r\n left: left,\r\n top: top\r\n };\r\n}\r\nexport function size(element, width, height) {\r\n if (typeof width === 'number') {\r\n element.style.width = `${width}px`;\r\n }\r\n if (typeof height === 'number') {\r\n element.style.height = `${height}px`;\r\n }\r\n}\r\n/**\r\n * Returns the position of a dom node relative to the entire page.\r\n */\r\nexport function getDomNodePagePosition(domNode) {\r\n let bb = domNode.getBoundingClientRect();\r\n return {\r\n left: bb.left + StandardWindow.scrollX,\r\n top: bb.top + StandardWindow.scrollY,\r\n width: bb.width,\r\n height: bb.height\r\n };\r\n}\r\nexport const StandardWindow = new class {\r\n get scrollX() {\r\n if (typeof window.scrollX === 'number') {\r\n // modern browsers\r\n return window.scrollX;\r\n }\r\n else {\r\n return document.body.scrollLeft + document.documentElement.scrollLeft;\r\n }\r\n }\r\n get scrollY() {\r\n if (typeof window.scrollY === 'number') {\r\n // modern browsers\r\n return window.scrollY;\r\n }\r\n else {\r\n return document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n }\r\n};\r\n// Adapted from WinJS\r\n// Gets the width of the element, including margins.\r\nexport function getTotalWidth(element) {\r\n let margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);\r\n return element.offsetWidth + margin;\r\n}\r\nexport function getContentWidth(element) {\r\n let border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);\r\n let padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);\r\n return element.offsetWidth - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the content of the specified element. The content height does not include borders or padding.\r\nexport function getContentHeight(element) {\r\n let border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);\r\n let padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);\r\n return element.offsetHeight - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the element, including its margins.\r\nexport function getTotalHeight(element) {\r\n let margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);\r\n return element.offsetHeight + margin;\r\n}\r\n// ----------------------------------------------------------------------------------------\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function findParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n while (node && node.nodeType === node.ELEMENT_NODE) {\r\n if (node.classList.contains(clazz)) {\r\n return node;\r\n }\r\n if (stopAtClazzOrNode) {\r\n if (typeof stopAtClazzOrNode === 'string') {\r\n if (node.classList.contains(stopAtClazzOrNode)) {\r\n return null;\r\n }\r\n }\r\n else {\r\n if (node === stopAtClazzOrNode) {\r\n return null;\r\n }\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n}\r\nexport function hasParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n return !!findParentWithClass(node, clazz, stopAtClazzOrNode);\r\n}\r\nexport function isShadowRoot(node) {\r\n return (node && !!node.host && !!node.mode);\r\n}\r\nexport function isInShadowDOM(domNode) {\r\n return !!getShadowRoot(domNode);\r\n}\r\nexport function getShadowRoot(domNode) {\r\n while (domNode.parentNode) {\r\n if (domNode === document.body) {\r\n // reached the body\r\n return null;\r\n }\r\n domNode = domNode.parentNode;\r\n }\r\n return isShadowRoot(domNode) ? domNode : null;\r\n}\r\nexport function getActiveElement() {\r\n let result = document.activeElement;\r\n while (result === null || result === void 0 ? void 0 : result.shadowRoot) {\r\n result = result.shadowRoot.activeElement;\r\n }\r\n return result;\r\n}\r\nexport function createStyleSheet(container = document.getElementsByTagName('head')[0]) {\r\n let style = document.createElement('style');\r\n style.type = 'text/css';\r\n style.media = 'screen';\r\n container.appendChild(style);\r\n return style;\r\n}\r\nlet _sharedStyleSheet = null;\r\nfunction getSharedStyleSheet() {\r\n if (!_sharedStyleSheet) {\r\n _sharedStyleSheet = createStyleSheet();\r\n }\r\n return _sharedStyleSheet;\r\n}\r\nfunction getDynamicStyleSheetRules(style) {\r\n var _a, _b;\r\n if ((_a = style === null || style === void 0 ? void 0 : style.sheet) === null || _a === void 0 ? void 0 : _a.rules) {\r\n // Chrome, IE\r\n return style.sheet.rules;\r\n }\r\n if ((_b = style === null || style === void 0 ? void 0 : style.sheet) === null || _b === void 0 ? void 0 : _b.cssRules) {\r\n // FF\r\n return style.sheet.cssRules;\r\n }\r\n return [];\r\n}\r\nexport function createCSSRule(selector, cssText, style = getSharedStyleSheet()) {\r\n if (!style || !cssText) {\r\n return;\r\n }\r\n style.sheet.insertRule(selector + '{' + cssText + '}', 0);\r\n}\r\nexport function removeCSSRulesContainingSelector(ruleName, style = getSharedStyleSheet()) {\r\n if (!style) {\r\n return;\r\n }\r\n let rules = getDynamicStyleSheetRules(style);\r\n let toDelete = [];\r\n for (let i = 0; i < rules.length; i++) {\r\n let rule = rules[i];\r\n if (rule.selectorText.indexOf(ruleName) !== -1) {\r\n toDelete.push(i);\r\n }\r\n }\r\n for (let i = toDelete.length - 1; i >= 0; i--) {\r\n style.sheet.deleteRule(toDelete[i]);\r\n }\r\n}\r\nexport function isHTMLElement(o) {\r\n if (typeof HTMLElement === 'object') {\r\n return o instanceof HTMLElement;\r\n }\r\n return o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === 'string';\r\n}\r\nexport const EventType = {\r\n // Mouse\r\n CLICK: 'click',\r\n AUXCLICK: 'auxclick',\r\n DBLCLICK: 'dblclick',\r\n MOUSE_UP: 'mouseup',\r\n MOUSE_DOWN: 'mousedown',\r\n MOUSE_OVER: 'mouseover',\r\n MOUSE_MOVE: 'mousemove',\r\n MOUSE_OUT: 'mouseout',\r\n MOUSE_ENTER: 'mouseenter',\r\n MOUSE_LEAVE: 'mouseleave',\r\n MOUSE_WHEEL: 'wheel',\r\n POINTER_UP: 'pointerup',\r\n POINTER_DOWN: 'pointerdown',\r\n POINTER_MOVE: 'pointermove',\r\n CONTEXT_MENU: 'contextmenu',\r\n WHEEL: 'wheel',\r\n // Keyboard\r\n KEY_DOWN: 'keydown',\r\n KEY_PRESS: 'keypress',\r\n KEY_UP: 'keyup',\r\n // HTML Document\r\n LOAD: 'load',\r\n BEFORE_UNLOAD: 'beforeunload',\r\n UNLOAD: 'unload',\r\n ABORT: 'abort',\r\n ERROR: 'error',\r\n RESIZE: 'resize',\r\n SCROLL: 'scroll',\r\n FULLSCREEN_CHANGE: 'fullscreenchange',\r\n WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange',\r\n // Form\r\n SELECT: 'select',\r\n CHANGE: 'change',\r\n SUBMIT: 'submit',\r\n RESET: 'reset',\r\n FOCUS: 'focus',\r\n FOCUS_IN: 'focusin',\r\n FOCUS_OUT: 'focusout',\r\n BLUR: 'blur',\r\n INPUT: 'input',\r\n // Local Storage\r\n STORAGE: 'storage',\r\n // Drag\r\n DRAG_START: 'dragstart',\r\n DRAG: 'drag',\r\n DRAG_ENTER: 'dragenter',\r\n DRAG_LEAVE: 'dragleave',\r\n DRAG_OVER: 'dragover',\r\n DROP: 'drop',\r\n DRAG_END: 'dragend',\r\n // Animation\r\n ANIMATION_START: browser.isWebKit ? 'webkitAnimationStart' : 'animationstart',\r\n ANIMATION_END: browser.isWebKit ? 'webkitAnimationEnd' : 'animationend',\r\n ANIMATION_ITERATION: browser.isWebKit ? 'webkitAnimationIteration' : 'animationiteration'\r\n};\r\nexport const EventHelper = {\r\n stop: function (e, cancelBubble) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n else {\r\n // IE8\r\n e.returnValue = false;\r\n }\r\n if (cancelBubble) {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n else {\r\n // IE8\r\n e.cancelBubble = true;\r\n }\r\n }\r\n }\r\n};\r\nexport function saveParentsScrollTop(node) {\r\n let r = [];\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n r[i] = node.scrollTop;\r\n node = node.parentNode;\r\n }\r\n return r;\r\n}\r\nexport function restoreParentsScrollTop(node, state) {\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n if (node.scrollTop !== state[i]) {\r\n node.scrollTop = state[i];\r\n }\r\n node = node.parentNode;\r\n }\r\n}\r\nclass FocusTracker extends Disposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = this._register(new Emitter());\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = this._register(new Emitter());\r\n this.onDidBlur = this._onDidBlur.event;\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n let currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true));\r\n this._register(addDisposableListener(element, EventType.BLUR, onBlur, true));\r\n }\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\nexport function append(parent, ...children) {\r\n parent.append(...children);\r\n if (children.length === 1 && typeof children[0] !== 'string') {\r\n return children[0];\r\n }\r\n}\r\nexport function prepend(parent, child) {\r\n parent.insertBefore(child, parent.firstChild);\r\n return child;\r\n}\r\n/**\r\n * Removes all children from `parent` and appends `children`\r\n */\r\nexport function reset(parent, ...children) {\r\n parent.innerText = '';\r\n append(parent, ...children);\r\n}\r\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\r\nexport var Namespace;\r\n(function (Namespace) {\r\n Namespace[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\r\n Namespace[\"SVG\"] = \"http://www.w3.org/2000/svg\";\r\n})(Namespace || (Namespace = {}));\r\nfunction _$(namespace, description, attrs, ...children) {\r\n let match = SELECTOR_REGEX.exec(description);\r\n if (!match) {\r\n throw new Error('Bad use of emmet');\r\n }\r\n attrs = Object.assign({}, (attrs || {}));\r\n let tagName = match[1] || 'div';\r\n let result;\r\n if (namespace !== Namespace.HTML) {\r\n result = document.createElementNS(namespace, tagName);\r\n }\r\n else {\r\n result = document.createElement(tagName);\r\n }\r\n if (match[3]) {\r\n result.id = match[3];\r\n }\r\n if (match[4]) {\r\n result.className = match[4].replace(/\\./g, ' ').trim();\r\n }\r\n Object.keys(attrs).forEach(name => {\r\n const value = attrs[name];\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n if (/^on\\w+$/.test(name)) {\r\n result[name] = value;\r\n }\r\n else if (name === 'selected') {\r\n if (value) {\r\n result.setAttribute(name, 'true');\r\n }\r\n }\r\n else {\r\n result.setAttribute(name, value);\r\n }\r\n });\r\n result.append(...children);\r\n return result;\r\n}\r\nexport function $(description, attrs, ...children) {\r\n return _$(Namespace.HTML, description, attrs, ...children);\r\n}\r\n$.SVG = function (description, attrs, ...children) {\r\n return _$(Namespace.SVG, description, attrs, ...children);\r\n};\r\nexport function show(...elements) {\r\n for (let element of elements) {\r\n element.style.display = '';\r\n element.removeAttribute('aria-hidden');\r\n }\r\n}\r\nexport function hide(...elements) {\r\n for (let element of elements) {\r\n element.style.display = 'none';\r\n element.setAttribute('aria-hidden', 'true');\r\n }\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\n/**\r\n * Find a value usable for a dom node size such that the likelihood that it would be\r\n * displayed with constant screen pixels size is as high as possible.\r\n *\r\n * e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio\r\n * of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/\"snaps\"\r\n * with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.\r\n */\r\nexport function computeScreenAwareSize(cssPx) {\r\n const screenPx = window.devicePixelRatio * cssPx;\r\n return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;\r\n}\r\n/**\r\n * Open safely a new window. This is the best way to do so, but you cannot tell\r\n * if the window was opened or if it was blocked by the brower's popup blocker.\r\n * If you want to tell if the browser blocked the new window, use `windowOpenNoOpenerWithSuccess`.\r\n *\r\n * See https://github.com/microsoft/monaco-editor/issues/601\r\n * To protect against malicious code in the linked site, particularly phishing attempts,\r\n * the window.opener should be set to null to prevent the linked site from having access\r\n * to change the location of the current page.\r\n * See https://mathiasbynens.github.io/rel-noopener/\r\n */\r\nexport function windowOpenNoOpener(url) {\r\n // By using 'noopener' in the `windowFeatures` argument, the newly created window will\r\n // not be able to use `window.opener` to reach back to the current page.\r\n // See https://stackoverflow.com/a/46958731\r\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/open#noopener\r\n // However, this also doesn't allow us to realize if the browser blocked\r\n // the creation of the window.\r\n window.open(url, '_blank', 'noopener');\r\n}\r\nexport function animate(fn) {\r\n const step = () => {\r\n fn();\r\n stepDisposable = scheduleAtNextAnimationFrame(step);\r\n };\r\n let stepDisposable = scheduleAtNextAnimationFrame(step);\r\n return toDisposable(() => stepDisposable.dispose());\r\n}\r\nRemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href) ? 'https' : 'http');\r\n/**\r\n * returns url('...')\r\n */\r\nexport function asCSSUrl(uri) {\r\n if (!uri) {\r\n return `url('')`;\r\n }\r\n return `url('${FileAccess.asBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;\r\n}\r\nexport function asCSSPropertyValue(value) {\r\n return `'${value.replace(/'/g, '%27')}'`;\r\n}\r\nexport class ModifierKeyEmitter extends Emitter {\r\n constructor() {\r\n super();\r\n this._subscriptions = new DisposableStore();\r\n this._keyStatus = {\r\n altKey: false,\r\n shiftKey: false,\r\n ctrlKey: false,\r\n metaKey: false\r\n };\r\n this._subscriptions.add(addDisposableListener(window, 'keydown', e => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n const event = new StandardKeyboardEvent(e);\r\n // If Alt-key keydown event is repeated, ignore it #112347\r\n // Only known to be necessary for Alt-Key at the moment #115810\r\n if (event.keyCode === 6 /* Alt */ && e.repeat) {\r\n return;\r\n }\r\n if (e.altKey && !this._keyStatus.altKey) {\r\n this._keyStatus.lastKeyPressed = 'alt';\r\n }\r\n else if (e.ctrlKey && !this._keyStatus.ctrlKey) {\r\n this._keyStatus.lastKeyPressed = 'ctrl';\r\n }\r\n else if (e.metaKey && !this._keyStatus.metaKey) {\r\n this._keyStatus.lastKeyPressed = 'meta';\r\n }\r\n else if (e.shiftKey && !this._keyStatus.shiftKey) {\r\n this._keyStatus.lastKeyPressed = 'shift';\r\n }\r\n else if (event.keyCode !== 6 /* Alt */) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n else {\r\n return;\r\n }\r\n this._keyStatus.altKey = e.altKey;\r\n this._keyStatus.ctrlKey = e.ctrlKey;\r\n this._keyStatus.metaKey = e.metaKey;\r\n this._keyStatus.shiftKey = e.shiftKey;\r\n if (this._keyStatus.lastKeyPressed) {\r\n this._keyStatus.event = e;\r\n this.fire(this._keyStatus);\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(window, 'keyup', e => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n if (!e.altKey && this._keyStatus.altKey) {\r\n this._keyStatus.lastKeyReleased = 'alt';\r\n }\r\n else if (!e.ctrlKey && this._keyStatus.ctrlKey) {\r\n this._keyStatus.lastKeyReleased = 'ctrl';\r\n }\r\n else if (!e.metaKey && this._keyStatus.metaKey) {\r\n this._keyStatus.lastKeyReleased = 'meta';\r\n }\r\n else if (!e.shiftKey && this._keyStatus.shiftKey) {\r\n this._keyStatus.lastKeyReleased = 'shift';\r\n }\r\n else {\r\n this._keyStatus.lastKeyReleased = undefined;\r\n }\r\n if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n this._keyStatus.altKey = e.altKey;\r\n this._keyStatus.ctrlKey = e.ctrlKey;\r\n this._keyStatus.metaKey = e.metaKey;\r\n this._keyStatus.shiftKey = e.shiftKey;\r\n if (this._keyStatus.lastKeyReleased) {\r\n this._keyStatus.event = e;\r\n this.fire(this._keyStatus);\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mousedown', () => {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mouseup', () => {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(document.body, 'mousemove', e => {\r\n if (e.buttons) {\r\n this._keyStatus.lastKeyPressed = undefined;\r\n }\r\n }, true));\r\n this._subscriptions.add(addDisposableListener(window, 'blur', () => {\r\n this.resetKeyStatus();\r\n }));\r\n }\r\n get keyStatus() {\r\n return this._keyStatus;\r\n }\r\n /**\r\n * Allows to explicitly reset the key status based on more knowledge (#109062)\r\n */\r\n resetKeyStatus() {\r\n this.doResetKeyStatus();\r\n this.fire(this._keyStatus);\r\n }\r\n doResetKeyStatus() {\r\n this._keyStatus = {\r\n altKey: false,\r\n shiftKey: false,\r\n ctrlKey: false,\r\n metaKey: false\r\n };\r\n }\r\n static getInstance() {\r\n if (!ModifierKeyEmitter.instance) {\r\n ModifierKeyEmitter.instance = new ModifierKeyEmitter();\r\n }\r\n return ModifierKeyEmitter.instance;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._subscriptions.dispose();\r\n }\r\n}\r\nexport function addMatchMediaChangeListener(query, callback) {\r\n const mediaQueryList = window.matchMedia(query);\r\n if (typeof mediaQueryList.addEventListener === 'function') {\r\n mediaQueryList.addEventListener('change', callback);\r\n }\r\n else {\r\n // Safari 13.x\r\n mediaQueryList.addListener(callback);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../common/event.js';\r\nexport class DomEmitter {\r\n constructor(element, type, useCapture) {\r\n const fn = (e) => this.emitter.fire(e);\r\n this.emitter = new Emitter({\r\n onFirstListenerAdd: () => element.addEventListener(type, fn, useCapture),\r\n onLastListenerRemove: () => element.removeEventListener(type, fn, useCapture)\r\n });\r\n }\r\n get event() {\r\n return this.emitter.event;\r\n }\r\n dispose() {\r\n this.emitter.dispose();\r\n }\r\n}\r\nexport function stopEvent(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return event;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class FastDomNode {\r\n constructor(domNode) {\r\n this.domNode = domNode;\r\n this._maxWidth = -1;\r\n this._width = -1;\r\n this._height = -1;\r\n this._top = -1;\r\n this._left = -1;\r\n this._bottom = -1;\r\n this._right = -1;\r\n this._fontFamily = '';\r\n this._fontWeight = '';\r\n this._fontSize = -1;\r\n this._fontFeatureSettings = '';\r\n this._lineHeight = -1;\r\n this._letterSpacing = -100;\r\n this._className = '';\r\n this._display = '';\r\n this._position = '';\r\n this._visibility = '';\r\n this._backgroundColor = '';\r\n this._layerHint = false;\r\n this._contain = 'none';\r\n this._boxShadow = '';\r\n }\r\n setMaxWidth(maxWidth) {\r\n if (this._maxWidth === maxWidth) {\r\n return;\r\n }\r\n this._maxWidth = maxWidth;\r\n this.domNode.style.maxWidth = this._maxWidth + 'px';\r\n }\r\n setWidth(width) {\r\n if (this._width === width) {\r\n return;\r\n }\r\n this._width = width;\r\n this.domNode.style.width = this._width + 'px';\r\n }\r\n setHeight(height) {\r\n if (this._height === height) {\r\n return;\r\n }\r\n this._height = height;\r\n this.domNode.style.height = this._height + 'px';\r\n }\r\n setTop(top) {\r\n if (this._top === top) {\r\n return;\r\n }\r\n this._top = top;\r\n this.domNode.style.top = this._top + 'px';\r\n }\r\n unsetTop() {\r\n if (this._top === -1) {\r\n return;\r\n }\r\n this._top = -1;\r\n this.domNode.style.top = '';\r\n }\r\n setLeft(left) {\r\n if (this._left === left) {\r\n return;\r\n }\r\n this._left = left;\r\n this.domNode.style.left = this._left + 'px';\r\n }\r\n setBottom(bottom) {\r\n if (this._bottom === bottom) {\r\n return;\r\n }\r\n this._bottom = bottom;\r\n this.domNode.style.bottom = this._bottom + 'px';\r\n }\r\n setRight(right) {\r\n if (this._right === right) {\r\n return;\r\n }\r\n this._right = right;\r\n this.domNode.style.right = this._right + 'px';\r\n }\r\n setFontFamily(fontFamily) {\r\n if (this._fontFamily === fontFamily) {\r\n return;\r\n }\r\n this._fontFamily = fontFamily;\r\n this.domNode.style.fontFamily = this._fontFamily;\r\n }\r\n setFontWeight(fontWeight) {\r\n if (this._fontWeight === fontWeight) {\r\n return;\r\n }\r\n this._fontWeight = fontWeight;\r\n this.domNode.style.fontWeight = this._fontWeight;\r\n }\r\n setFontSize(fontSize) {\r\n if (this._fontSize === fontSize) {\r\n return;\r\n }\r\n this._fontSize = fontSize;\r\n this.domNode.style.fontSize = this._fontSize + 'px';\r\n }\r\n setFontFeatureSettings(fontFeatureSettings) {\r\n if (this._fontFeatureSettings === fontFeatureSettings) {\r\n return;\r\n }\r\n this._fontFeatureSettings = fontFeatureSettings;\r\n this.domNode.style.fontFeatureSettings = this._fontFeatureSettings;\r\n }\r\n setLineHeight(lineHeight) {\r\n if (this._lineHeight === lineHeight) {\r\n return;\r\n }\r\n this._lineHeight = lineHeight;\r\n this.domNode.style.lineHeight = this._lineHeight + 'px';\r\n }\r\n setLetterSpacing(letterSpacing) {\r\n if (this._letterSpacing === letterSpacing) {\r\n return;\r\n }\r\n this._letterSpacing = letterSpacing;\r\n this.domNode.style.letterSpacing = this._letterSpacing + 'px';\r\n }\r\n setClassName(className) {\r\n if (this._className === className) {\r\n return;\r\n }\r\n this._className = className;\r\n this.domNode.className = this._className;\r\n }\r\n toggleClassName(className, shouldHaveIt) {\r\n this.domNode.classList.toggle(className, shouldHaveIt);\r\n this._className = this.domNode.className;\r\n }\r\n setDisplay(display) {\r\n if (this._display === display) {\r\n return;\r\n }\r\n this._display = display;\r\n this.domNode.style.display = this._display;\r\n }\r\n setPosition(position) {\r\n if (this._position === position) {\r\n return;\r\n }\r\n this._position = position;\r\n this.domNode.style.position = this._position;\r\n }\r\n setVisibility(visibility) {\r\n if (this._visibility === visibility) {\r\n return;\r\n }\r\n this._visibility = visibility;\r\n this.domNode.style.visibility = this._visibility;\r\n }\r\n setBackgroundColor(backgroundColor) {\r\n if (this._backgroundColor === backgroundColor) {\r\n return;\r\n }\r\n this._backgroundColor = backgroundColor;\r\n this.domNode.style.backgroundColor = this._backgroundColor;\r\n }\r\n setLayerHinting(layerHint) {\r\n if (this._layerHint === layerHint) {\r\n return;\r\n }\r\n this._layerHint = layerHint;\r\n this.domNode.style.transform = this._layerHint ? 'translate3d(0px, 0px, 0px)' : '';\r\n }\r\n setBoxShadow(boxShadow) {\r\n if (this._boxShadow === boxShadow) {\r\n return;\r\n }\r\n this._boxShadow = boxShadow;\r\n this.domNode.style.boxShadow = boxShadow;\r\n }\r\n setContain(contain) {\r\n if (this._contain === contain) {\r\n return;\r\n }\r\n this._contain = contain;\r\n this.domNode.style.contain = this._contain;\r\n }\r\n setAttribute(name, value) {\r\n this.domNode.setAttribute(name, value);\r\n }\r\n removeAttribute(name) {\r\n this.domNode.removeAttribute(name);\r\n }\r\n appendChild(child) {\r\n this.domNode.appendChild(child.domNode);\r\n }\r\n removeChild(child) {\r\n this.domNode.removeChild(child.domNode);\r\n }\r\n}\r\nexport function createFastDomNode(domNode) {\r\n return new FastDomNode(domNode);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as DOM from './dom.js';\r\nexport function renderText(text, options = {}) {\r\n const element = createElement(options);\r\n element.textContent = text;\r\n return element;\r\n}\r\nexport function renderFormattedText(formattedText, options = {}) {\r\n const element = createElement(options);\r\n _renderFormattedText(element, parseFormattedText(formattedText, !!options.renderCodeSegements), options.actionHandler, options.renderCodeSegements);\r\n return element;\r\n}\r\nexport function createElement(options) {\r\n const tagName = options.inline ? 'span' : 'div';\r\n const element = document.createElement(tagName);\r\n if (options.className) {\r\n element.className = options.className;\r\n }\r\n return element;\r\n}\r\nclass StringStream {\r\n constructor(source) {\r\n this.source = source;\r\n this.index = 0;\r\n }\r\n eos() {\r\n return this.index >= this.source.length;\r\n }\r\n next() {\r\n const next = this.peek();\r\n this.advance();\r\n return next;\r\n }\r\n peek() {\r\n return this.source[this.index];\r\n }\r\n advance() {\r\n this.index++;\r\n }\r\n}\r\nfunction _renderFormattedText(element, treeNode, actionHandler, renderCodeSegements) {\r\n let child;\r\n if (treeNode.type === 2 /* Text */) {\r\n child = document.createTextNode(treeNode.content || '');\r\n }\r\n else if (treeNode.type === 3 /* Bold */) {\r\n child = document.createElement('b');\r\n }\r\n else if (treeNode.type === 4 /* Italics */) {\r\n child = document.createElement('i');\r\n }\r\n else if (treeNode.type === 7 /* Code */ && renderCodeSegements) {\r\n child = document.createElement('code');\r\n }\r\n else if (treeNode.type === 5 /* Action */ && actionHandler) {\r\n const a = document.createElement('a');\r\n a.href = '#';\r\n actionHandler.disposeables.add(DOM.addStandardDisposableListener(a, 'click', (event) => {\r\n actionHandler.callback(String(treeNode.index), event);\r\n }));\r\n child = a;\r\n }\r\n else if (treeNode.type === 8 /* NewLine */) {\r\n child = document.createElement('br');\r\n }\r\n else if (treeNode.type === 1 /* Root */) {\r\n child = element;\r\n }\r\n if (child && element !== child) {\r\n element.appendChild(child);\r\n }\r\n if (child && Array.isArray(treeNode.children)) {\r\n treeNode.children.forEach((nodeChild) => {\r\n _renderFormattedText(child, nodeChild, actionHandler, renderCodeSegements);\r\n });\r\n }\r\n}\r\nfunction parseFormattedText(content, parseCodeSegments) {\r\n const root = {\r\n type: 1 /* Root */,\r\n children: []\r\n };\r\n let actionViewItemIndex = 0;\r\n let current = root;\r\n const stack = [];\r\n const stream = new StringStream(content);\r\n while (!stream.eos()) {\r\n let next = stream.next();\r\n const isEscapedFormatType = (next === '\\\\' && formatTagType(stream.peek(), parseCodeSegments) !== 0 /* Invalid */);\r\n if (isEscapedFormatType) {\r\n next = stream.next(); // unread the backslash if it escapes a format tag type\r\n }\r\n if (!isEscapedFormatType && isFormatTag(next, parseCodeSegments) && next === stream.peek()) {\r\n stream.advance();\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n const type = formatTagType(next, parseCodeSegments);\r\n if (current.type === type || (current.type === 5 /* Action */ && type === 6 /* ActionClose */)) {\r\n current = stack.pop();\r\n }\r\n else {\r\n const newCurrent = {\r\n type: type,\r\n children: []\r\n };\r\n if (type === 5 /* Action */) {\r\n newCurrent.index = actionViewItemIndex;\r\n actionViewItemIndex++;\r\n }\r\n current.children.push(newCurrent);\r\n stack.push(current);\r\n current = newCurrent;\r\n }\r\n }\r\n else if (next === '\\n') {\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n current.children.push({\r\n type: 8 /* NewLine */\r\n });\r\n }\r\n else {\r\n if (current.type !== 2 /* Text */) {\r\n const textCurrent = {\r\n type: 2 /* Text */,\r\n content: next\r\n };\r\n current.children.push(textCurrent);\r\n stack.push(current);\r\n current = textCurrent;\r\n }\r\n else {\r\n current.content += next;\r\n }\r\n }\r\n }\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n if (stack.length) {\r\n // incorrectly formatted string literal\r\n }\r\n return root;\r\n}\r\nfunction isFormatTag(char, supportCodeSegments) {\r\n return formatTagType(char, supportCodeSegments) !== 0 /* Invalid */;\r\n}\r\nfunction formatTagType(char, supportCodeSegments) {\r\n switch (char) {\r\n case '*':\r\n return 3 /* Bold */;\r\n case '_':\r\n return 4 /* Italics */;\r\n case '[':\r\n return 5 /* Action */;\r\n case ']':\r\n return 6 /* ActionClose */;\r\n case '`':\r\n return supportCodeSegments ? 7 /* Code */ : 0 /* Invalid */;\r\n default:\r\n return 0 /* Invalid */;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from './dom.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { DisposableStore } from '../common/lifecycle.js';\r\nimport { isIOS } from '../common/platform.js';\r\nexport function standardMouseMoveMerger(lastEvent, currentEvent) {\r\n let ev = new StandardMouseEvent(currentEvent);\r\n ev.preventDefault();\r\n return {\r\n leftButton: ev.leftButton,\r\n buttons: ev.buttons,\r\n posx: ev.posx,\r\n posy: ev.posy\r\n };\r\n}\r\nexport class GlobalMouseMoveMonitor {\r\n constructor() {\r\n this._hooks = new DisposableStore();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n this._onStopCallback = null;\r\n }\r\n dispose() {\r\n this.stopMonitoring(false);\r\n this._hooks.dispose();\r\n }\r\n stopMonitoring(invokeStopCallback, browserEvent) {\r\n if (!this.isMonitoring()) {\r\n // Not monitoring\r\n return;\r\n }\r\n // Unhook\r\n this._hooks.clear();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n const onStopCallback = this._onStopCallback;\r\n this._onStopCallback = null;\r\n if (invokeStopCallback && onStopCallback) {\r\n onStopCallback(browserEvent);\r\n }\r\n }\r\n isMonitoring() {\r\n return !!this._mouseMoveEventMerger;\r\n }\r\n startMonitoring(initialElement, initialButtons, mouseMoveEventMerger, mouseMoveCallback, onStopCallback) {\r\n if (this.isMonitoring()) {\r\n // I am already hooked\r\n return;\r\n }\r\n this._mouseMoveEventMerger = mouseMoveEventMerger;\r\n this._mouseMoveCallback = mouseMoveCallback;\r\n this._onStopCallback = onStopCallback;\r\n const windowChain = IframeUtils.getSameOriginWindowChain();\r\n const mouseMove = isIOS ? 'pointermove' : 'mousemove'; // Safari sends wrong event, workaround for #122653\r\n const mouseUp = 'mouseup';\r\n const listenTo = windowChain.map(element => element.window.document);\r\n const shadowRoot = dom.getShadowRoot(initialElement);\r\n if (shadowRoot) {\r\n listenTo.unshift(shadowRoot);\r\n }\r\n for (const element of listenTo) {\r\n this._hooks.add(dom.addDisposableThrottledListener(element, mouseMove, (data) => {\r\n if (data.buttons !== initialButtons) {\r\n // Buttons state has changed in the meantime\r\n this.stopMonitoring(true);\r\n return;\r\n }\r\n this._mouseMoveCallback(data);\r\n }, (lastEvent, currentEvent) => this._mouseMoveEventMerger(lastEvent, currentEvent)));\r\n this._hooks.add(dom.addDisposableListener(element, mouseUp, (e) => this.stopMonitoring(true)));\r\n }\r\n if (IframeUtils.hasDifferentOriginAncestor()) {\r\n let lastSameOriginAncestor = windowChain[windowChain.length - 1];\r\n // We might miss a mouse up if it happens outside the iframe\r\n // This one is for Chrome\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseout', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for FF\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseover', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for IE\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document.body, 'mouseleave', (browserEvent) => {\r\n this.stopMonitoring(true);\r\n }));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nlet hasDifferentOriginAncestorFlag = false;\r\nlet sameOriginWindowChainCache = null;\r\nfunction getParentWindowIfSameOrigin(w) {\r\n if (!w.parent || w.parent === w) {\r\n return null;\r\n }\r\n // Cannot really tell if we have access to the parent window unless we try to access something in it\r\n try {\r\n let location = w.location;\r\n let parentLocation = w.parent.location;\r\n if (location.origin !== 'null' && parentLocation.origin !== 'null') {\r\n if (location.protocol !== parentLocation.protocol || location.hostname !== parentLocation.hostname || location.port !== parentLocation.port) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n return w.parent;\r\n}\r\nexport class IframeUtils {\r\n /**\r\n * Returns a chain of embedded windows with the same origin (which can be accessed programmatically).\r\n * Having a chain of length 1 might mean that the current execution environment is running outside of an iframe or inside an iframe embedded in a window with a different origin.\r\n * To distinguish if at one point the current execution environment is running inside a window with a different origin, see hasDifferentOriginAncestor()\r\n */\r\n static getSameOriginWindowChain() {\r\n if (!sameOriginWindowChainCache) {\r\n sameOriginWindowChainCache = [];\r\n let w = window;\r\n let parent;\r\n do {\r\n parent = getParentWindowIfSameOrigin(w);\r\n if (parent) {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: w.frameElement || null\r\n });\r\n }\r\n else {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: null\r\n });\r\n }\r\n w = parent;\r\n } while (w);\r\n }\r\n return sameOriginWindowChainCache.slice(0);\r\n }\r\n /**\r\n * Returns true if the current execution environment is chained in a list of iframes which at one point ends in a window with a different origin.\r\n * Returns false if the current execution environment is not running inside an iframe or if the entire chain of iframes have the same origin.\r\n */\r\n static hasDifferentOriginAncestor() {\r\n if (!sameOriginWindowChainCache) {\r\n this.getSameOriginWindowChain();\r\n }\r\n return hasDifferentOriginAncestorFlag;\r\n }\r\n /**\r\n * Returns the position of `childWindow` relative to `ancestorWindow`\r\n */\r\n static getPositionOfChildWindowRelativeToAncestorWindow(childWindow, ancestorWindow) {\r\n if (!ancestorWindow || childWindow === ancestorWindow) {\r\n return {\r\n top: 0,\r\n left: 0\r\n };\r\n }\r\n let top = 0, left = 0;\r\n let windowChain = this.getSameOriginWindowChain();\r\n for (const windowChainEl of windowChain) {\r\n top += windowChainEl.window.scrollY;\r\n left += windowChainEl.window.scrollX;\r\n if (windowChainEl.window === ancestorWindow) {\r\n break;\r\n }\r\n if (!windowChainEl.iframeElement) {\r\n break;\r\n }\r\n let boundingRect = windowChainEl.iframeElement.getBoundingClientRect();\r\n top += boundingRect.top;\r\n left += boundingRect.left;\r\n }\r\n return {\r\n top: top,\r\n left: left\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { KeyCodeUtils, SimpleKeybinding } from '../common/keyCodes.js';\r\nimport * as platform from '../common/platform.js';\r\nlet KEY_CODE_MAP = new Array(230);\r\nlet INVERSE_KEY_CODE_MAP = new Array(112 /* MAX_VALUE */);\r\n(function () {\r\n for (let i = 0; i < INVERSE_KEY_CODE_MAP.length; i++) {\r\n INVERSE_KEY_CODE_MAP[i] = -1;\r\n }\r\n function define(code, keyCode) {\r\n KEY_CODE_MAP[code] = keyCode;\r\n INVERSE_KEY_CODE_MAP[keyCode] = code;\r\n }\r\n define(3, 7 /* PauseBreak */); // VK_CANCEL 0x03 Control-break processing\r\n define(8, 1 /* Backspace */);\r\n define(9, 2 /* Tab */);\r\n define(13, 3 /* Enter */);\r\n define(16, 4 /* Shift */);\r\n define(17, 5 /* Ctrl */);\r\n define(18, 6 /* Alt */);\r\n define(19, 7 /* PauseBreak */);\r\n define(20, 8 /* CapsLock */);\r\n define(27, 9 /* Escape */);\r\n define(32, 10 /* Space */);\r\n define(33, 11 /* PageUp */);\r\n define(34, 12 /* PageDown */);\r\n define(35, 13 /* End */);\r\n define(36, 14 /* Home */);\r\n define(37, 15 /* LeftArrow */);\r\n define(38, 16 /* UpArrow */);\r\n define(39, 17 /* RightArrow */);\r\n define(40, 18 /* DownArrow */);\r\n define(45, 19 /* Insert */);\r\n define(46, 20 /* Delete */);\r\n define(48, 21 /* KEY_0 */);\r\n define(49, 22 /* KEY_1 */);\r\n define(50, 23 /* KEY_2 */);\r\n define(51, 24 /* KEY_3 */);\r\n define(52, 25 /* KEY_4 */);\r\n define(53, 26 /* KEY_5 */);\r\n define(54, 27 /* KEY_6 */);\r\n define(55, 28 /* KEY_7 */);\r\n define(56, 29 /* KEY_8 */);\r\n define(57, 30 /* KEY_9 */);\r\n define(65, 31 /* KEY_A */);\r\n define(66, 32 /* KEY_B */);\r\n define(67, 33 /* KEY_C */);\r\n define(68, 34 /* KEY_D */);\r\n define(69, 35 /* KEY_E */);\r\n define(70, 36 /* KEY_F */);\r\n define(71, 37 /* KEY_G */);\r\n define(72, 38 /* KEY_H */);\r\n define(73, 39 /* KEY_I */);\r\n define(74, 40 /* KEY_J */);\r\n define(75, 41 /* KEY_K */);\r\n define(76, 42 /* KEY_L */);\r\n define(77, 43 /* KEY_M */);\r\n define(78, 44 /* KEY_N */);\r\n define(79, 45 /* KEY_O */);\r\n define(80, 46 /* KEY_P */);\r\n define(81, 47 /* KEY_Q */);\r\n define(82, 48 /* KEY_R */);\r\n define(83, 49 /* KEY_S */);\r\n define(84, 50 /* KEY_T */);\r\n define(85, 51 /* KEY_U */);\r\n define(86, 52 /* KEY_V */);\r\n define(87, 53 /* KEY_W */);\r\n define(88, 54 /* KEY_X */);\r\n define(89, 55 /* KEY_Y */);\r\n define(90, 56 /* KEY_Z */);\r\n define(93, 58 /* ContextMenu */);\r\n define(96, 93 /* NUMPAD_0 */);\r\n define(97, 94 /* NUMPAD_1 */);\r\n define(98, 95 /* NUMPAD_2 */);\r\n define(99, 96 /* NUMPAD_3 */);\r\n define(100, 97 /* NUMPAD_4 */);\r\n define(101, 98 /* NUMPAD_5 */);\r\n define(102, 99 /* NUMPAD_6 */);\r\n define(103, 100 /* NUMPAD_7 */);\r\n define(104, 101 /* NUMPAD_8 */);\r\n define(105, 102 /* NUMPAD_9 */);\r\n define(106, 103 /* NUMPAD_MULTIPLY */);\r\n define(107, 104 /* NUMPAD_ADD */);\r\n define(108, 105 /* NUMPAD_SEPARATOR */);\r\n define(109, 106 /* NUMPAD_SUBTRACT */);\r\n define(110, 107 /* NUMPAD_DECIMAL */);\r\n define(111, 108 /* NUMPAD_DIVIDE */);\r\n define(112, 59 /* F1 */);\r\n define(113, 60 /* F2 */);\r\n define(114, 61 /* F3 */);\r\n define(115, 62 /* F4 */);\r\n define(116, 63 /* F5 */);\r\n define(117, 64 /* F6 */);\r\n define(118, 65 /* F7 */);\r\n define(119, 66 /* F8 */);\r\n define(120, 67 /* F9 */);\r\n define(121, 68 /* F10 */);\r\n define(122, 69 /* F11 */);\r\n define(123, 70 /* F12 */);\r\n define(124, 71 /* F13 */);\r\n define(125, 72 /* F14 */);\r\n define(126, 73 /* F15 */);\r\n define(127, 74 /* F16 */);\r\n define(128, 75 /* F17 */);\r\n define(129, 76 /* F18 */);\r\n define(130, 77 /* F19 */);\r\n define(144, 78 /* NumLock */);\r\n define(145, 79 /* ScrollLock */);\r\n define(186, 80 /* US_SEMICOLON */);\r\n define(187, 81 /* US_EQUAL */);\r\n define(188, 82 /* US_COMMA */);\r\n define(189, 83 /* US_MINUS */);\r\n define(190, 84 /* US_DOT */);\r\n define(191, 85 /* US_SLASH */);\r\n define(192, 86 /* US_BACKTICK */);\r\n define(193, 110 /* ABNT_C1 */);\r\n define(194, 111 /* ABNT_C2 */);\r\n define(219, 87 /* US_OPEN_SQUARE_BRACKET */);\r\n define(220, 88 /* US_BACKSLASH */);\r\n define(221, 89 /* US_CLOSE_SQUARE_BRACKET */);\r\n define(222, 90 /* US_QUOTE */);\r\n define(223, 91 /* OEM_8 */);\r\n define(226, 92 /* OEM_102 */);\r\n /**\r\n * https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\r\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\r\n */\r\n define(229, 109 /* KEY_IN_COMPOSITION */);\r\n if (browser.isFirefox) {\r\n define(59, 80 /* US_SEMICOLON */);\r\n define(107, 81 /* US_EQUAL */);\r\n define(109, 83 /* US_MINUS */);\r\n if (platform.isMacintosh) {\r\n define(224, 57 /* Meta */);\r\n }\r\n }\r\n else if (browser.isWebKit) {\r\n define(91, 57 /* Meta */);\r\n if (platform.isMacintosh) {\r\n // the two meta keys in the Mac have different key codes (91 and 93)\r\n define(93, 57 /* Meta */);\r\n }\r\n else {\r\n define(92, 57 /* Meta */);\r\n }\r\n }\r\n})();\r\nfunction extractKeyCode(e) {\r\n if (e.charCode) {\r\n // \"keypress\" events mostly\r\n let char = String.fromCharCode(e.charCode).toUpperCase();\r\n return KeyCodeUtils.fromString(char);\r\n }\r\n return KEY_CODE_MAP[e.keyCode] || 0 /* Unknown */;\r\n}\r\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */);\r\nconst altKeyMod = 512 /* Alt */;\r\nconst shiftKeyMod = 1024 /* Shift */;\r\nconst metaKeyMod = (platform.isMacintosh ? 2048 /* CtrlCmd */ : 256 /* WinCtrl */);\r\nexport class StandardKeyboardEvent {\r\n constructor(source) {\r\n this._standardKeyboardEventBrand = true;\r\n let e = source;\r\n this.browserEvent = e;\r\n this.target = e.target;\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n this.keyCode = extractKeyCode(e);\r\n this.code = e.code;\r\n // console.info(e.type + \": keyCode: \" + e.keyCode + \", which: \" + e.which + \", charCode: \" + e.charCode + \", detail: \" + e.detail + \" ====> \" + this.keyCode + ' -- ' + KeyCode[this.keyCode]);\r\n this.ctrlKey = this.ctrlKey || this.keyCode === 5 /* Ctrl */;\r\n this.altKey = this.altKey || this.keyCode === 6 /* Alt */;\r\n this.shiftKey = this.shiftKey || this.keyCode === 4 /* Shift */;\r\n this.metaKey = this.metaKey || this.keyCode === 57 /* Meta */;\r\n this._asKeybinding = this._computeKeybinding();\r\n this._asRuntimeKeybinding = this._computeRuntimeKeybinding();\r\n // console.log(`code: ${e.code}, keyCode: ${e.keyCode}, key: ${e.key}`);\r\n }\r\n preventDefault() {\r\n if (this.browserEvent && this.browserEvent.preventDefault) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent && this.browserEvent.stopPropagation) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n toKeybinding() {\r\n return this._asRuntimeKeybinding;\r\n }\r\n equals(other) {\r\n return this._asKeybinding === other;\r\n }\r\n _computeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n let result = 0;\r\n if (this.ctrlKey) {\r\n result |= ctrlKeyMod;\r\n }\r\n if (this.altKey) {\r\n result |= altKeyMod;\r\n }\r\n if (this.shiftKey) {\r\n result |= shiftKeyMod;\r\n }\r\n if (this.metaKey) {\r\n result |= metaKeyMod;\r\n }\r\n result |= key;\r\n return result;\r\n }\r\n _computeRuntimeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n return new SimpleKeybinding(this.ctrlKey, this.shiftKey, this.altKey, this.metaKey, key);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport * as platform from '../common/platform.js';\r\nexport class StandardMouseEvent {\r\n constructor(e) {\r\n this.timestamp = Date.now();\r\n this.browserEvent = e;\r\n this.leftButton = e.button === 0;\r\n this.middleButton = e.button === 1;\r\n this.rightButton = e.button === 2;\r\n this.buttons = e.buttons;\r\n this.target = e.target;\r\n this.detail = e.detail || 1;\r\n if (e.type === 'dblclick') {\r\n this.detail = 2;\r\n }\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n if (typeof e.pageX === 'number') {\r\n this.posx = e.pageX;\r\n this.posy = e.pageY;\r\n }\r\n else {\r\n // Probably hit by MSGestureEvent\r\n this.posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\r\n this.posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n // Find the position of the iframe this code is executing in relative to the iframe where the event was captured.\r\n let iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(self, e.view);\r\n this.posx -= iframeOffsets.left;\r\n this.posy -= iframeOffsets.top;\r\n }\r\n preventDefault() {\r\n this.browserEvent.preventDefault();\r\n }\r\n stopPropagation() {\r\n this.browserEvent.stopPropagation();\r\n }\r\n}\r\nexport class StandardWheelEvent {\r\n constructor(e, deltaX = 0, deltaY = 0) {\r\n this.browserEvent = e || null;\r\n this.target = e ? (e.target || e.targetNode || e.srcElement) : null;\r\n this.deltaY = deltaY;\r\n this.deltaX = deltaX;\r\n if (e) {\r\n // Old (deprecated) wheel events\r\n let e1 = e;\r\n let e2 = e;\r\n // vertical delta scroll\r\n if (typeof e1.wheelDeltaY !== 'undefined') {\r\n this.deltaY = e1.wheelDeltaY / 120;\r\n }\r\n else if (typeof e2.VERTICAL_AXIS !== 'undefined' && e2.axis === e2.VERTICAL_AXIS) {\r\n this.deltaY = -e2.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaY = -e.deltaY / 3;\r\n }\r\n else {\r\n this.deltaY = -e.deltaY;\r\n }\r\n }\r\n else {\r\n this.deltaY = -e.deltaY / 40;\r\n }\r\n }\r\n // horizontal delta scroll\r\n if (typeof e1.wheelDeltaX !== 'undefined') {\r\n if (browser.isSafari && platform.isWindows) {\r\n this.deltaX = -(e1.wheelDeltaX / 120);\r\n }\r\n else {\r\n this.deltaX = e1.wheelDeltaX / 120;\r\n }\r\n }\r\n else if (typeof e2.HORIZONTAL_AXIS !== 'undefined' && e2.axis === e2.HORIZONTAL_AXIS) {\r\n this.deltaX = -e.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaX = -e.deltaX / 3;\r\n }\r\n else {\r\n this.deltaX = -e.deltaX;\r\n }\r\n }\r\n else {\r\n this.deltaX = -e.deltaX / 40;\r\n }\r\n }\r\n // Assume a vertical scroll if nothing else worked\r\n if (this.deltaY === 0 && this.deltaX === 0 && e.wheelDelta) {\r\n this.deltaY = e.wheelDelta / 120;\r\n }\r\n }\r\n }\r\n preventDefault() {\r\n if (this.browserEvent) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport * as arrays from '../common/arrays.js';\r\nimport { Disposable } from '../common/lifecycle.js';\r\nimport * as DomUtils from './dom.js';\r\nimport { memoize } from '../common/decorators.js';\r\nexport var EventType;\r\n(function (EventType) {\r\n EventType.Tap = '-monaco-gesturetap';\r\n EventType.Change = '-monaco-gesturechange';\r\n EventType.Start = '-monaco-gesturestart';\r\n EventType.End = '-monaco-gesturesend';\r\n EventType.Contextmenu = '-monaco-gesturecontextmenu';\r\n})(EventType || (EventType = {}));\r\nexport class Gesture extends Disposable {\r\n constructor() {\r\n super();\r\n this.dispatched = false;\r\n this.activeTouches = {};\r\n this.handle = null;\r\n this.targets = [];\r\n this.ignoreTargets = [];\r\n this._lastSetTapCountTime = 0;\r\n this._register(DomUtils.addDisposableListener(document, 'touchstart', (e) => this.onTouchStart(e), { passive: false }));\r\n this._register(DomUtils.addDisposableListener(document, 'touchend', (e) => this.onTouchEnd(e)));\r\n this._register(DomUtils.addDisposableListener(document, 'touchmove', (e) => this.onTouchMove(e), { passive: false }));\r\n }\r\n static addTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.targets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.targets = Gesture.INSTANCE.targets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static ignoreTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.ignoreTargets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.ignoreTargets = Gesture.INSTANCE.ignoreTargets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static isTouchDevice() {\r\n // `'ontouchstart' in window` always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n }\r\n dispose() {\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n super.dispose();\r\n }\r\n onTouchStart(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n for (let i = 0, len = e.targetTouches.length; i < len; i++) {\r\n let touch = e.targetTouches.item(i);\r\n this.activeTouches[touch.identifier] = {\r\n id: touch.identifier,\r\n initialTarget: touch.target,\r\n initialTimeStamp: timestamp,\r\n initialPageX: touch.pageX,\r\n initialPageY: touch.pageY,\r\n rollingTimestamps: [timestamp],\r\n rollingPageX: [touch.pageX],\r\n rollingPageY: [touch.pageY]\r\n };\r\n let evt = this.newGestureEvent(EventType.Start, touch.target);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n onTouchEnd(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n let activeTouchCount = Object.keys(this.activeTouches).length;\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('move of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier], holdTime = Date.now() - data.initialTimeStamp;\r\n if (holdTime < Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Tap, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (holdTime >= Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Contextmenu, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (activeTouchCount === 1) {\r\n let finalX = arrays.tail(data.rollingPageX);\r\n let finalY = arrays.tail(data.rollingPageY);\r\n let deltaT = arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0];\r\n let deltaX = finalX - data.rollingPageX[0];\r\n let deltaY = finalY - data.rollingPageY[0];\r\n // We need to get all the dispatch targets on the start of the inertia event\r\n const dispatchTo = this.targets.filter(t => data.initialTarget instanceof Node && t.contains(data.initialTarget));\r\n this.inertia(dispatchTo, timestamp, // time now\r\n Math.abs(deltaX) / deltaT, // speed\r\n deltaX > 0 ? 1 : -1, // x direction\r\n finalX, // x now\r\n Math.abs(deltaY) / deltaT, // y speed\r\n deltaY > 0 ? 1 : -1, // y direction\r\n finalY // y now\r\n );\r\n }\r\n this.dispatchEvent(this.newGestureEvent(EventType.End, data.initialTarget));\r\n // forget about this touch\r\n delete this.activeTouches[touch.identifier];\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n newGestureEvent(type, initialTarget) {\r\n let event = document.createEvent('CustomEvent');\r\n event.initEvent(type, false, true);\r\n event.initialTarget = initialTarget;\r\n event.tapCount = 0;\r\n return event;\r\n }\r\n dispatchEvent(event) {\r\n if (event.type === EventType.Tap) {\r\n const currentTime = (new Date()).getTime();\r\n let setTapCount = 0;\r\n if (currentTime - this._lastSetTapCountTime > Gesture.CLEAR_TAP_COUNT_TIME) {\r\n setTapCount = 1;\r\n }\r\n else {\r\n setTapCount = 2;\r\n }\r\n this._lastSetTapCountTime = currentTime;\r\n event.tapCount = setTapCount;\r\n }\r\n else if (event.type === EventType.Change || event.type === EventType.Contextmenu) {\r\n // tap is canceled by scrolling or context menu\r\n this._lastSetTapCountTime = 0;\r\n }\r\n for (let i = 0; i < this.ignoreTargets.length; i++) {\r\n if (event.initialTarget instanceof Node && this.ignoreTargets[i].contains(event.initialTarget)) {\r\n return;\r\n }\r\n }\r\n this.targets.forEach(target => {\r\n if (event.initialTarget instanceof Node && target.contains(event.initialTarget)) {\r\n target.dispatchEvent(event);\r\n this.dispatched = true;\r\n }\r\n });\r\n }\r\n inertia(dispatchTo, t1, vX, dirX, x, vY, dirY, y) {\r\n this.handle = DomUtils.scheduleAtNextAnimationFrame(() => {\r\n let now = Date.now();\r\n // velocity: old speed + accel_over_time\r\n let deltaT = now - t1, delta_pos_x = 0, delta_pos_y = 0, stopped = true;\r\n vX += Gesture.SCROLL_FRICTION * deltaT;\r\n vY += Gesture.SCROLL_FRICTION * deltaT;\r\n if (vX > 0) {\r\n stopped = false;\r\n delta_pos_x = dirX * vX * deltaT;\r\n }\r\n if (vY > 0) {\r\n stopped = false;\r\n delta_pos_y = dirY * vY * deltaT;\r\n }\r\n // dispatch translation event\r\n let evt = this.newGestureEvent(EventType.Change);\r\n evt.translationX = delta_pos_x;\r\n evt.translationY = delta_pos_y;\r\n dispatchTo.forEach(d => d.dispatchEvent(evt));\r\n if (!stopped) {\r\n this.inertia(dispatchTo, now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y);\r\n }\r\n });\r\n }\r\n onTouchMove(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('end of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier];\r\n let evt = this.newGestureEvent(EventType.Change, data.initialTarget);\r\n evt.translationX = touch.pageX - arrays.tail(data.rollingPageX);\r\n evt.translationY = touch.pageY - arrays.tail(data.rollingPageY);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n // only keep a few data points, to average the final speed\r\n if (data.rollingPageX.length > 3) {\r\n data.rollingPageX.shift();\r\n data.rollingPageY.shift();\r\n data.rollingTimestamps.shift();\r\n }\r\n data.rollingPageX.push(touch.pageX);\r\n data.rollingPageY.push(touch.pageY);\r\n data.rollingTimestamps.push(timestamp);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n}\r\nGesture.SCROLL_FRICTION = -0.005;\r\nGesture.HOLD_DELAY = 700;\r\nGesture.CLEAR_TAP_COUNT_TIME = 400; // ms\r\n__decorate([\r\n memoize\r\n], Gesture, \"isTouchDevice\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './actionbar.css';\r\nimport * as platform from '../../../common/platform.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Action, ActionRunner, Separator } from '../../../common/actions.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { EventType as TouchEventType, Gesture } from '../../touch.js';\r\nimport { DataTransfers } from '../../dnd.js';\r\nimport { isFirefox } from '../../browser.js';\r\nimport { $, addDisposableListener, append, EventHelper, EventType } from '../../dom.js';\r\nexport class BaseActionViewItem extends Disposable {\r\n constructor(context, action, options = {}) {\r\n super();\r\n this.options = options;\r\n this._context = context || this;\r\n this._action = action;\r\n if (action instanceof Action) {\r\n this._register(action.onDidChange(event => {\r\n if (!this.element) {\r\n // we have not been rendered yet, so there\r\n // is no point in updating the UI\r\n return;\r\n }\r\n this.handleActionChangeEvent(event);\r\n }));\r\n }\r\n }\r\n handleActionChangeEvent(event) {\r\n if (event.enabled !== undefined) {\r\n this.updateEnabled();\r\n }\r\n if (event.checked !== undefined) {\r\n this.updateChecked();\r\n }\r\n if (event.class !== undefined) {\r\n this.updateClass();\r\n }\r\n if (event.label !== undefined) {\r\n this.updateLabel();\r\n this.updateTooltip();\r\n }\r\n if (event.tooltip !== undefined) {\r\n this.updateTooltip();\r\n }\r\n }\r\n get actionRunner() {\r\n if (!this._actionRunner) {\r\n this._actionRunner = this._register(new ActionRunner());\r\n }\r\n return this._actionRunner;\r\n }\r\n set actionRunner(actionRunner) {\r\n this._actionRunner = actionRunner;\r\n }\r\n getAction() {\r\n return this._action;\r\n }\r\n isEnabled() {\r\n return this._action.enabled;\r\n }\r\n setActionContext(newContext) {\r\n this._context = newContext;\r\n }\r\n render(container) {\r\n const element = this.element = container;\r\n this._register(Gesture.addTarget(container));\r\n const enableDragging = this.options && this.options.draggable;\r\n if (enableDragging) {\r\n container.draggable = true;\r\n if (isFirefox) {\r\n // Firefox: requires to set a text data transfer to get going\r\n this._register(addDisposableListener(container, EventType.DRAG_START, e => { var _a; return (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData(DataTransfers.TEXT, this._action.label); }));\r\n }\r\n }\r\n this._register(addDisposableListener(element, TouchEventType.Tap, e => this.onClick(e, true))); // Preserve focus on tap #125470\r\n this._register(addDisposableListener(element, EventType.MOUSE_DOWN, e => {\r\n if (!enableDragging) {\r\n EventHelper.stop(e, true); // do not run when dragging is on because that would disable it\r\n }\r\n if (this._action.enabled && e.button === 0) {\r\n element.classList.add('active');\r\n }\r\n }));\r\n if (platform.isMacintosh) {\r\n // macOS: allow to trigger the button when holding Ctrl+key and pressing the\r\n // main mouse button. This is for scenarios where e.g. some interaction forces\r\n // the Ctrl+key to be pressed and hold but the user still wants to interact\r\n // with the actions (for example quick access in quick navigation mode).\r\n this._register(addDisposableListener(element, EventType.CONTEXT_MENU, e => {\r\n if (e.button === 0 && e.ctrlKey === true) {\r\n this.onClick(e);\r\n }\r\n }));\r\n }\r\n this._register(addDisposableListener(element, EventType.CLICK, e => {\r\n EventHelper.stop(e, true);\r\n // menus do not use the click event\r\n if (!(this.options && this.options.isMenu)) {\r\n platform.setImmediate(() => this.onClick(e));\r\n }\r\n }));\r\n this._register(addDisposableListener(element, EventType.DBLCLICK, e => {\r\n EventHelper.stop(e, true);\r\n }));\r\n [EventType.MOUSE_UP, EventType.MOUSE_OUT].forEach(event => {\r\n this._register(addDisposableListener(element, event, e => {\r\n EventHelper.stop(e);\r\n element.classList.remove('active');\r\n }));\r\n });\r\n }\r\n onClick(event, preserveFocus = false) {\r\n var _a;\r\n EventHelper.stop(event, true);\r\n const context = types.isUndefinedOrNull(this._context) ? ((_a = this.options) === null || _a === void 0 ? void 0 : _a.useEventAsContext) ? event : { preserveFocus } : this._context;\r\n this.actionRunner.run(this._action, context);\r\n }\r\n // Only set the tabIndex on the element once it is about to get focused\r\n // That way this element wont be a tab stop when it is not needed #106441\r\n focus() {\r\n if (this.element) {\r\n this.element.tabIndex = 0;\r\n this.element.focus();\r\n this.element.classList.add('focused');\r\n }\r\n }\r\n blur() {\r\n if (this.element) {\r\n this.element.blur();\r\n this.element.tabIndex = -1;\r\n this.element.classList.remove('focused');\r\n }\r\n }\r\n setFocusable(focusable) {\r\n if (this.element) {\r\n this.element.tabIndex = focusable ? 0 : -1;\r\n }\r\n }\r\n get trapsArrowNavigation() {\r\n return false;\r\n }\r\n updateEnabled() {\r\n // implement in subclass\r\n }\r\n updateLabel() {\r\n // implement in subclass\r\n }\r\n updateTooltip() {\r\n // implement in subclass\r\n }\r\n updateClass() {\r\n // implement in subclass\r\n }\r\n updateChecked() {\r\n // implement in subclass\r\n }\r\n dispose() {\r\n if (this.element) {\r\n this.element.remove();\r\n this.element = undefined;\r\n }\r\n super.dispose();\r\n }\r\n}\r\nexport class ActionViewItem extends BaseActionViewItem {\r\n constructor(context, action, options = {}) {\r\n super(context, action, options);\r\n this.options = options;\r\n this.options.icon = options.icon !== undefined ? options.icon : false;\r\n this.options.label = options.label !== undefined ? options.label : true;\r\n this.cssClass = '';\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (this.element) {\r\n this.label = append(this.element, $('a.action-label'));\r\n }\r\n if (this.label) {\r\n if (this._action.id === Separator.ID) {\r\n this.label.setAttribute('role', 'presentation'); // A separator is a presentation item\r\n }\r\n else {\r\n if (this.options.isMenu) {\r\n this.label.setAttribute('role', 'menuitem');\r\n }\r\n else {\r\n this.label.setAttribute('role', 'button');\r\n }\r\n }\r\n }\r\n if (this.options.label && this.options.keybinding && this.element) {\r\n append(this.element, $('span.keybinding')).textContent = this.options.keybinding;\r\n }\r\n this.updateClass();\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateEnabled();\r\n this.updateChecked();\r\n }\r\n // Only set the tabIndex on the element once it is about to get focused\r\n // That way this element wont be a tab stop when it is not needed #106441\r\n focus() {\r\n if (this.label) {\r\n this.label.tabIndex = 0;\r\n this.label.focus();\r\n }\r\n }\r\n blur() {\r\n if (this.label) {\r\n this.label.tabIndex = -1;\r\n }\r\n }\r\n setFocusable(focusable) {\r\n if (this.label) {\r\n this.label.tabIndex = focusable ? 0 : -1;\r\n }\r\n }\r\n updateLabel() {\r\n if (this.options.label && this.label) {\r\n this.label.textContent = this.getAction().label;\r\n }\r\n }\r\n updateTooltip() {\r\n let title = null;\r\n if (this.getAction().tooltip) {\r\n title = this.getAction().tooltip;\r\n }\r\n else if (!this.options.label && this.getAction().label && this.options.icon) {\r\n title = this.getAction().label;\r\n if (this.options.keybinding) {\r\n title = nls.localize({ key: 'titleLabel', comment: ['action title', 'action keybinding'] }, \"{0} ({1})\", title, this.options.keybinding);\r\n }\r\n }\r\n if (title && this.label) {\r\n this.label.title = title;\r\n }\r\n }\r\n updateClass() {\r\n if (this.cssClass && this.label) {\r\n this.label.classList.remove(...this.cssClass.split(' '));\r\n }\r\n if (this.options.icon) {\r\n this.cssClass = this.getAction().class;\r\n if (this.label) {\r\n this.label.classList.add('codicon');\r\n if (this.cssClass) {\r\n this.label.classList.add(...this.cssClass.split(' '));\r\n }\r\n }\r\n this.updateEnabled();\r\n }\r\n else {\r\n if (this.label) {\r\n this.label.classList.remove('codicon');\r\n }\r\n }\r\n }\r\n updateEnabled() {\r\n if (this.getAction().enabled) {\r\n if (this.label) {\r\n this.label.removeAttribute('aria-disabled');\r\n this.label.classList.remove('disabled');\r\n }\r\n if (this.element) {\r\n this.element.classList.remove('disabled');\r\n }\r\n }\r\n else {\r\n if (this.label) {\r\n this.label.setAttribute('aria-disabled', 'true');\r\n this.label.classList.add('disabled');\r\n }\r\n if (this.element) {\r\n this.element.classList.add('disabled');\r\n }\r\n }\r\n }\r\n updateChecked() {\r\n if (this.label) {\r\n if (this.getAction().checked) {\r\n this.label.classList.add('checked');\r\n }\r\n else {\r\n this.label.classList.remove('checked');\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './actionbar.css';\r\nimport { Disposable, dispose } from '../../../common/lifecycle.js';\r\nimport { ActionRunner } from '../../../common/actions.js';\r\nimport * as DOM from '../../dom.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { ActionViewItem, BaseActionViewItem } from './actionViewItems.js';\r\nexport class ActionBar extends Disposable {\r\n constructor(container, options = {}) {\r\n var _a, _b, _c, _d, _e, _f;\r\n super();\r\n // Trigger Key Tracking\r\n this.triggerKeyDown = false;\r\n this.focusable = true;\r\n this._onDidBlur = this._register(new Emitter());\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._onDidCancel = this._register(new Emitter({ onFirstListenerAdd: () => this.cancelHasListener = true }));\r\n this.onDidCancel = this._onDidCancel.event;\r\n this.cancelHasListener = false;\r\n this._onDidRun = this._register(new Emitter());\r\n this.onDidRun = this._onDidRun.event;\r\n this._onBeforeRun = this._register(new Emitter());\r\n this.onBeforeRun = this._onBeforeRun.event;\r\n this.options = options;\r\n this._context = (_a = options.context) !== null && _a !== void 0 ? _a : null;\r\n this._orientation = (_b = this.options.orientation) !== null && _b !== void 0 ? _b : 0 /* HORIZONTAL */;\r\n this._triggerKeys = {\r\n keyDown: (_d = (_c = this.options.triggerKeys) === null || _c === void 0 ? void 0 : _c.keyDown) !== null && _d !== void 0 ? _d : false,\r\n keys: (_f = (_e = this.options.triggerKeys) === null || _e === void 0 ? void 0 : _e.keys) !== null && _f !== void 0 ? _f : [3 /* Enter */, 10 /* Space */]\r\n };\r\n if (this.options.actionRunner) {\r\n this._actionRunner = this.options.actionRunner;\r\n }\r\n else {\r\n this._actionRunner = new ActionRunner();\r\n this._register(this._actionRunner);\r\n }\r\n this._register(this._actionRunner.onDidRun(e => this._onDidRun.fire(e)));\r\n this._register(this._actionRunner.onBeforeRun(e => this._onBeforeRun.fire(e)));\r\n this._actionIds = [];\r\n this.viewItems = [];\r\n this.focusedItem = undefined;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'monaco-action-bar';\r\n if (options.animated !== false) {\r\n this.domNode.classList.add('animated');\r\n }\r\n let previousKeys;\r\n let nextKeys;\r\n switch (this._orientation) {\r\n case 0 /* HORIZONTAL */:\r\n previousKeys = [15 /* LeftArrow */];\r\n nextKeys = [17 /* RightArrow */];\r\n break;\r\n case 1 /* VERTICAL */:\r\n previousKeys = [16 /* UpArrow */];\r\n nextKeys = [18 /* DownArrow */];\r\n this.domNode.className += ' vertical';\r\n break;\r\n }\r\n this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n let eventHandled = true;\r\n const focusedItem = typeof this.focusedItem === 'number' ? this.viewItems[this.focusedItem] : undefined;\r\n if (previousKeys && (event.equals(previousKeys[0]) || event.equals(previousKeys[1]))) {\r\n eventHandled = this.focusPrevious();\r\n }\r\n else if (nextKeys && (event.equals(nextKeys[0]) || event.equals(nextKeys[1]))) {\r\n eventHandled = this.focusNext();\r\n }\r\n else if (event.equals(9 /* Escape */) && this.cancelHasListener) {\r\n this._onDidCancel.fire();\r\n }\r\n else if (event.equals(14 /* Home */)) {\r\n eventHandled = this.focusFirst();\r\n }\r\n else if (event.equals(13 /* End */)) {\r\n eventHandled = this.focusLast();\r\n }\r\n else if (event.equals(2 /* Tab */) && focusedItem instanceof BaseActionViewItem && focusedItem.trapsArrowNavigation) {\r\n eventHandled = this.focusNext();\r\n }\r\n else if (this.isTriggerKeyEvent(event)) {\r\n // Staying out of the else branch even if not triggered\r\n if (this._triggerKeys.keyDown) {\r\n this.doTrigger(event);\r\n }\r\n else {\r\n this.triggerKeyDown = true;\r\n }\r\n }\r\n else {\r\n eventHandled = false;\r\n }\r\n if (eventHandled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }));\r\n this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_UP, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n // Run action on Enter/Space\r\n if (this.isTriggerKeyEvent(event)) {\r\n if (!this._triggerKeys.keyDown && this.triggerKeyDown) {\r\n this.triggerKeyDown = false;\r\n this.doTrigger(event);\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // Recompute focused item\r\n else if (event.equals(2 /* Tab */) || event.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this.updateFocusedItem();\r\n }\r\n }));\r\n this.focusTracker = this._register(DOM.trackFocus(this.domNode));\r\n this._register(this.focusTracker.onDidBlur(() => {\r\n if (DOM.getActiveElement() === this.domNode || !DOM.isAncestor(DOM.getActiveElement(), this.domNode)) {\r\n this._onDidBlur.fire();\r\n this.focusedItem = undefined;\r\n this.triggerKeyDown = false;\r\n }\r\n }));\r\n this._register(this.focusTracker.onDidFocus(() => this.updateFocusedItem()));\r\n this.actionsList = document.createElement('ul');\r\n this.actionsList.className = 'actions-container';\r\n this.actionsList.setAttribute('role', 'toolbar');\r\n if (this.options.ariaLabel) {\r\n this.actionsList.setAttribute('aria-label', this.options.ariaLabel);\r\n }\r\n this.domNode.appendChild(this.actionsList);\r\n container.appendChild(this.domNode);\r\n }\r\n isTriggerKeyEvent(event) {\r\n let ret = false;\r\n this._triggerKeys.keys.forEach(keyCode => {\r\n ret = ret || event.equals(keyCode);\r\n });\r\n return ret;\r\n }\r\n updateFocusedItem() {\r\n for (let i = 0; i < this.actionsList.children.length; i++) {\r\n const elem = this.actionsList.children[i];\r\n if (DOM.isAncestor(DOM.getActiveElement(), elem)) {\r\n this.focusedItem = i;\r\n break;\r\n }\r\n }\r\n }\r\n get context() {\r\n return this._context;\r\n }\r\n set context(context) {\r\n this._context = context;\r\n this.viewItems.forEach(i => i.setActionContext(context));\r\n }\r\n get actionRunner() {\r\n return this._actionRunner;\r\n }\r\n set actionRunner(actionRunner) {\r\n if (actionRunner) {\r\n this._actionRunner = actionRunner;\r\n this.viewItems.forEach(item => item.actionRunner = actionRunner);\r\n }\r\n }\r\n getContainer() {\r\n return this.domNode;\r\n }\r\n push(arg, options = {}) {\r\n const actions = Array.isArray(arg) ? arg : [arg];\r\n let index = types.isNumber(options.index) ? options.index : null;\r\n actions.forEach((action) => {\r\n const actionViewItemElement = document.createElement('li');\r\n actionViewItemElement.className = 'action-item';\r\n actionViewItemElement.setAttribute('role', 'presentation');\r\n // Prevent native context menu on actions\r\n if (!this.options.allowContextMenu) {\r\n this._register(DOM.addDisposableListener(actionViewItemElement, DOM.EventType.CONTEXT_MENU, (e) => {\r\n DOM.EventHelper.stop(e, true);\r\n }));\r\n }\r\n let item;\r\n if (this.options.actionViewItemProvider) {\r\n item = this.options.actionViewItemProvider(action);\r\n }\r\n if (!item) {\r\n item = new ActionViewItem(this.context, action, options);\r\n }\r\n item.actionRunner = this._actionRunner;\r\n item.setActionContext(this.context);\r\n item.render(actionViewItemElement);\r\n if (this.focusable && item instanceof BaseActionViewItem && this.viewItems.length === 0) {\r\n // We need to allow for the first enabled item to be focused on using tab navigation #106441\r\n item.setFocusable(true);\r\n }\r\n if (index === null || index < 0 || index >= this.actionsList.children.length) {\r\n this.actionsList.appendChild(actionViewItemElement);\r\n this.viewItems.push(item);\r\n this._actionIds.push(action.id);\r\n }\r\n else {\r\n this.actionsList.insertBefore(actionViewItemElement, this.actionsList.children[index]);\r\n this.viewItems.splice(index, 0, item);\r\n this._actionIds.splice(index, 0, action.id);\r\n index++;\r\n }\r\n });\r\n if (typeof this.focusedItem === 'number') {\r\n // After a clear actions might be re-added to simply toggle some actions. We should preserve focus #97128\r\n this.focus(this.focusedItem);\r\n }\r\n }\r\n clear() {\r\n dispose(this.viewItems);\r\n this.viewItems = [];\r\n this._actionIds = [];\r\n DOM.clearNode(this.actionsList);\r\n }\r\n length() {\r\n return this.viewItems.length;\r\n }\r\n focus(arg) {\r\n let selectFirst = false;\r\n let index = undefined;\r\n if (arg === undefined) {\r\n selectFirst = true;\r\n }\r\n else if (typeof arg === 'number') {\r\n index = arg;\r\n }\r\n else if (typeof arg === 'boolean') {\r\n selectFirst = arg;\r\n }\r\n if (selectFirst && typeof this.focusedItem === 'undefined') {\r\n const firstEnabled = this.viewItems.findIndex(item => item.isEnabled());\r\n // Focus the first enabled item\r\n this.focusedItem = firstEnabled === -1 ? undefined : firstEnabled;\r\n this.updateFocus();\r\n }\r\n else {\r\n if (index !== undefined) {\r\n this.focusedItem = index;\r\n }\r\n this.updateFocus();\r\n }\r\n }\r\n focusFirst() {\r\n this.focusedItem = this.length() > 1 ? 1 : 0;\r\n return this.focusPrevious();\r\n }\r\n focusLast() {\r\n this.focusedItem = this.length() < 2 ? 0 : this.length() - 2;\r\n return this.focusNext();\r\n }\r\n focusNext() {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.focusedItem = this.viewItems.length - 1;\r\n }\r\n else if (this.viewItems.length <= 1) {\r\n return false;\r\n }\r\n const startIndex = this.focusedItem;\r\n let item;\r\n do {\r\n if (this.options.preventLoopNavigation && this.focusedItem + 1 >= this.viewItems.length) {\r\n this.focusedItem = startIndex;\r\n return false;\r\n }\r\n this.focusedItem = (this.focusedItem + 1) % this.viewItems.length;\r\n item = this.viewItems[this.focusedItem];\r\n } while (this.focusedItem !== startIndex && this.options.focusOnlyEnabledItems && !item.isEnabled());\r\n this.updateFocus();\r\n return true;\r\n }\r\n focusPrevious() {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.focusedItem = 0;\r\n }\r\n else if (this.viewItems.length <= 1) {\r\n return false;\r\n }\r\n const startIndex = this.focusedItem;\r\n let item;\r\n do {\r\n this.focusedItem = this.focusedItem - 1;\r\n if (this.focusedItem < 0) {\r\n if (this.options.preventLoopNavigation) {\r\n this.focusedItem = startIndex;\r\n return false;\r\n }\r\n this.focusedItem = this.viewItems.length - 1;\r\n }\r\n item = this.viewItems[this.focusedItem];\r\n } while (this.focusedItem !== startIndex && this.options.focusOnlyEnabledItems && !item.isEnabled());\r\n this.updateFocus(true);\r\n return true;\r\n }\r\n updateFocus(fromRight, preventScroll) {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.actionsList.focus({ preventScroll });\r\n }\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n const actionViewItem = item;\r\n if (i === this.focusedItem) {\r\n let focusItem = true;\r\n if (!types.isFunction(actionViewItem.focus)) {\r\n focusItem = false;\r\n }\r\n if (this.options.focusOnlyEnabledItems && types.isFunction(item.isEnabled) && !item.isEnabled()) {\r\n focusItem = false;\r\n }\r\n if (focusItem) {\r\n actionViewItem.focus(fromRight);\r\n }\r\n else {\r\n this.actionsList.focus({ preventScroll });\r\n }\r\n }\r\n else {\r\n if (types.isFunction(actionViewItem.blur)) {\r\n actionViewItem.blur();\r\n }\r\n }\r\n }\r\n }\r\n doTrigger(event) {\r\n if (typeof this.focusedItem === 'undefined') {\r\n return; //nothing to focus\r\n }\r\n // trigger action\r\n const actionViewItem = this.viewItems[this.focusedItem];\r\n if (actionViewItem instanceof BaseActionViewItem) {\r\n const context = (actionViewItem._context === null || actionViewItem._context === undefined) ? event : actionViewItem._context;\r\n this.run(actionViewItem._action, context);\r\n }\r\n }\r\n run(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this._actionRunner.run(action, context);\r\n });\r\n }\r\n dispose() {\r\n dispose(this.viewItems);\r\n this.viewItems = [];\r\n this._actionIds = [];\r\n this.getContainer().remove();\r\n super.dispose();\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./aria.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./aria.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './aria.css';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport * as dom from '../../dom.js';\r\n// Use a max length since we are inserting the whole msg in the DOM and that can cause browsers to freeze for long messages #94233\r\nconst MAX_MESSAGE_LENGTH = 20000;\r\nlet ariaContainer;\r\nlet alertContainer;\r\nlet alertContainer2;\r\nlet statusContainer;\r\nlet statusContainer2;\r\nexport function setARIAContainer(parent) {\r\n ariaContainer = document.createElement('div');\r\n ariaContainer.className = 'monaco-aria-container';\r\n const createAlertContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-alert';\r\n element.setAttribute('role', 'alert');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n alertContainer = createAlertContainer();\r\n alertContainer2 = createAlertContainer();\r\n const createStatusContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-status';\r\n element.setAttribute('role', 'complementary');\r\n element.setAttribute('aria-live', 'polite');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n statusContainer = createStatusContainer();\r\n statusContainer2 = createStatusContainer();\r\n parent.appendChild(ariaContainer);\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as alert to screen readers.\r\n */\r\nexport function alert(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n // Use alternate containers such that duplicated messages get read out by screen readers #99466\r\n if (alertContainer.textContent !== msg) {\r\n dom.clearNode(alertContainer2);\r\n insertMessage(alertContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(alertContainer);\r\n insertMessage(alertContainer2, msg);\r\n }\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as status to screen readers.\r\n */\r\nexport function status(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n if (isMacintosh) {\r\n alert(msg); // VoiceOver does not seem to support status role\r\n }\r\n else {\r\n if (statusContainer.textContent !== msg) {\r\n dom.clearNode(statusContainer2);\r\n insertMessage(statusContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(statusContainer);\r\n insertMessage(statusContainer2, msg);\r\n }\r\n }\r\n}\r\nfunction insertMessage(target, msg) {\r\n dom.clearNode(target);\r\n if (msg.length > MAX_MESSAGE_LENGTH) {\r\n msg = msg.substr(0, MAX_MESSAGE_LENGTH);\r\n }\r\n target.textContent = msg;\r\n // See https://www.paciellogroup.com/blog/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/\r\n target.style.visibility = 'hidden';\r\n target.style.visibility = 'visible';\r\n}\r\n","\n import API from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon-modifiers.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon-modifiers.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './codicon/codicon.css';\r\nimport './codicon/codicon-modifiers.css';\r\nimport { Codicon } from '../../../common/codicons.js';\r\nexport function formatRule(c) {\r\n let def = c.definition;\r\n while (def instanceof Codicon) {\r\n def = def.definition;\r\n }\r\n return `.codicon-${c.id}:before { content: '${def.fontCharacter}'; }`;\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./countBadge.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./countBadge.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './countBadge.css';\r\nimport { $, append } from '../../dom.js';\r\nimport { format } from '../../../common/strings.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nconst defaultOpts = {\r\n badgeBackground: Color.fromHex('#4D4D4D'),\r\n badgeForeground: Color.fromHex('#FFFFFF')\r\n};\r\nexport class CountBadge {\r\n constructor(container, options) {\r\n this.count = 0;\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.badgeBackground = this.options.badgeBackground;\r\n this.badgeForeground = this.options.badgeForeground;\r\n this.badgeBorder = this.options.badgeBorder;\r\n this.element = append(container, $('.monaco-count-badge'));\r\n this.countFormat = this.options.countFormat || '{0}';\r\n this.titleFormat = this.options.titleFormat || '';\r\n this.setCount(this.options.count || 0);\r\n }\r\n setCount(count) {\r\n this.count = count;\r\n this.render();\r\n }\r\n setTitleFormat(titleFormat) {\r\n this.titleFormat = titleFormat;\r\n this.render();\r\n }\r\n render() {\r\n this.element.textContent = format(this.countFormat, this.count);\r\n this.element.title = format(this.titleFormat, this.count);\r\n this.applyStyles();\r\n }\r\n style(styles) {\r\n this.badgeBackground = styles.badgeBackground;\r\n this.badgeForeground = styles.badgeForeground;\r\n this.badgeBorder = styles.badgeBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.element) {\r\n const background = this.badgeBackground ? this.badgeBackground.toString() : '';\r\n const foreground = this.badgeForeground ? this.badgeForeground.toString() : '';\r\n const border = this.badgeBorder ? this.badgeBorder.toString() : '';\r\n this.element.style.backgroundColor = background;\r\n this.element.style.color = foreground;\r\n this.element.style.borderWidth = border ? '1px' : '';\r\n this.element.style.borderStyle = border ? 'solid' : '';\r\n this.element.style.borderColor = border;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as objects from '../../../common/objects.js';\r\nimport * as dom from '../../dom.js';\r\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\r\nexport class HighlightedLabel {\r\n constructor(container, supportIcons) {\r\n this.supportIcons = supportIcons;\r\n this.text = '';\r\n this.title = '';\r\n this.highlights = [];\r\n this.didEverRender = false;\r\n this.domNode = document.createElement('span');\r\n this.domNode.className = 'monaco-highlighted-label';\r\n container.appendChild(this.domNode);\r\n }\r\n get element() {\r\n return this.domNode;\r\n }\r\n set(text, highlights = [], title = '', escapeNewLines) {\r\n if (!text) {\r\n text = '';\r\n }\r\n if (escapeNewLines) {\r\n // adjusts highlights inplace\r\n text = HighlightedLabel.escapeNewLines(text, highlights);\r\n }\r\n if (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\r\n return;\r\n }\r\n this.text = text;\r\n this.title = title;\r\n this.highlights = highlights;\r\n this.render();\r\n }\r\n render() {\r\n const children = [];\r\n let pos = 0;\r\n for (const highlight of this.highlights) {\r\n if (highlight.end === highlight.start) {\r\n continue;\r\n }\r\n if (pos < highlight.start) {\r\n const substring = this.text.substring(pos, highlight.start);\r\n children.push(dom.$('span', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]));\r\n pos = highlight.end;\r\n }\r\n const substring = this.text.substring(highlight.start, highlight.end);\r\n const element = dom.$('span.highlight', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]);\r\n if (highlight.extraClasses) {\r\n element.classList.add(highlight.extraClasses);\r\n }\r\n children.push(element);\r\n pos = highlight.end;\r\n }\r\n if (pos < this.text.length) {\r\n const substring = this.text.substring(pos);\r\n children.push(dom.$('span', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]));\r\n }\r\n dom.reset(this.domNode, ...children);\r\n if (this.title) {\r\n this.domNode.title = this.title;\r\n }\r\n else {\r\n this.domNode.removeAttribute('title');\r\n }\r\n this.didEverRender = true;\r\n }\r\n static escapeNewLines(text, highlights) {\r\n let total = 0;\r\n let extra = 0;\r\n return text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\r\n extra = match === '\\r\\n' ? -1 : 0;\r\n offset += total;\r\n for (const highlight of highlights) {\r\n if (highlight.end <= offset) {\r\n continue;\r\n }\r\n if (highlight.start >= offset) {\r\n highlight.start += extra;\r\n }\r\n if (highlight.end >= offset) {\r\n highlight.end += extra;\r\n }\r\n }\r\n total += extra;\r\n return '\\u23CE';\r\n });\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./iconlabel.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./iconlabel.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { isFunction, isString } from '../../../common/types.js';\r\nimport * as dom from '../../dom.js';\r\nimport { CancellationTokenSource } from '../../../common/cancellation.js';\r\nimport { toDisposable } from '../../../common/lifecycle.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { RunOnceScheduler } from '../../../common/async.js';\r\nexport function setupNativeHover(htmlElement, tooltip) {\r\n if (isString(tooltip)) {\r\n htmlElement.title = tooltip;\r\n }\r\n else if (tooltip === null || tooltip === void 0 ? void 0 : tooltip.markdownNotSupportedFallback) {\r\n htmlElement.title = tooltip.markdownNotSupportedFallback;\r\n }\r\n else {\r\n htmlElement.removeAttribute('title');\r\n }\r\n}\r\nexport function setupCustomHover(hoverDelegate, htmlElement, markdownTooltip) {\r\n if (!markdownTooltip) {\r\n return undefined;\r\n }\r\n const tooltip = getTooltipForCustom(markdownTooltip);\r\n let hoverPreparation;\r\n let hoverWidget;\r\n const mouseEnter = (e) => {\r\n if (hoverPreparation) {\r\n return;\r\n }\r\n const tokenSource = new CancellationTokenSource();\r\n const mouseLeaveOrDown = (e) => {\r\n const isMouseDown = e.type === dom.EventType.MOUSE_DOWN;\r\n if (isMouseDown) {\r\n hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.dispose();\r\n hoverWidget = undefined;\r\n }\r\n if (isMouseDown || e.fromElement === htmlElement) {\r\n hoverPreparation === null || hoverPreparation === void 0 ? void 0 : hoverPreparation.dispose();\r\n hoverPreparation = undefined;\r\n }\r\n };\r\n const mouseLeaveDomListener = dom.addDisposableListener(htmlElement, dom.EventType.MOUSE_LEAVE, mouseLeaveOrDown, true);\r\n const mouseDownDownListener = dom.addDisposableListener(htmlElement, dom.EventType.MOUSE_DOWN, mouseLeaveOrDown, true);\r\n const target = {\r\n targetElements: [htmlElement],\r\n dispose: () => { }\r\n };\r\n let mouseMoveDomListener;\r\n if (hoverDelegate.placement === undefined || hoverDelegate.placement === 'mouse') {\r\n const mouseMove = (e) => target.x = e.x + 10;\r\n mouseMoveDomListener = dom.addDisposableListener(htmlElement, dom.EventType.MOUSE_MOVE, mouseMove, true);\r\n }\r\n const showHover = () => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n if (hoverPreparation) {\r\n const hoverOptions = {\r\n text: localize('iconLabel.loading', \"Loading...\"),\r\n target,\r\n hoverPosition: 2 /* BELOW */\r\n };\r\n hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.dispose();\r\n hoverWidget = hoverDelegate.showHover(hoverOptions);\r\n const resolvedTooltip = (_a = (yield tooltip(tokenSource.token))) !== null && _a !== void 0 ? _a : (!isString(markdownTooltip) ? markdownTooltip.markdownNotSupportedFallback : undefined);\r\n hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.dispose();\r\n hoverWidget = undefined;\r\n // awaiting the tooltip could take a while. Make sure we're still preparing to hover.\r\n if (resolvedTooltip && hoverPreparation) {\r\n const hoverOptions = {\r\n text: resolvedTooltip,\r\n target,\r\n showPointer: hoverDelegate.placement === 'element',\r\n hoverPosition: 2 /* BELOW */\r\n };\r\n hoverWidget = hoverDelegate.showHover(hoverOptions);\r\n }\r\n }\r\n mouseMoveDomListener === null || mouseMoveDomListener === void 0 ? void 0 : mouseMoveDomListener.dispose();\r\n });\r\n const timeout = new RunOnceScheduler(showHover, hoverDelegate.delay);\r\n timeout.schedule();\r\n hoverPreparation = toDisposable(() => {\r\n timeout.dispose();\r\n mouseMoveDomListener === null || mouseMoveDomListener === void 0 ? void 0 : mouseMoveDomListener.dispose();\r\n mouseDownDownListener.dispose();\r\n mouseLeaveDomListener.dispose();\r\n tokenSource.dispose(true);\r\n });\r\n };\r\n const mouseOverDomEmitter = dom.addDisposableListener(htmlElement, dom.EventType.MOUSE_OVER, mouseEnter, true);\r\n return toDisposable(() => {\r\n mouseOverDomEmitter.dispose();\r\n hoverPreparation === null || hoverPreparation === void 0 ? void 0 : hoverPreparation.dispose();\r\n hoverWidget === null || hoverWidget === void 0 ? void 0 : hoverWidget.dispose();\r\n });\r\n}\r\nfunction getTooltipForCustom(markdownTooltip) {\r\n if (isString(markdownTooltip)) {\r\n return () => __awaiter(this, void 0, void 0, function* () { return markdownTooltip; });\r\n }\r\n else if (isFunction(markdownTooltip.markdown)) {\r\n return markdownTooltip.markdown;\r\n }\r\n else {\r\n const markdown = markdownTooltip.markdown;\r\n return () => __awaiter(this, void 0, void 0, function* () { return markdown; });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './iconlabel.css';\r\nimport * as dom from '../../dom.js';\r\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { equals } from '../../../common/objects.js';\r\nimport { setupCustomHover, setupNativeHover } from './iconLabelHover.js';\r\nclass FastLabelNode {\r\n constructor(_element) {\r\n this._element = _element;\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n set textContent(content) {\r\n if (this.disposed || content === this._textContent) {\r\n return;\r\n }\r\n this._textContent = content;\r\n this._element.textContent = content;\r\n }\r\n set className(className) {\r\n if (this.disposed || className === this._className) {\r\n return;\r\n }\r\n this._className = className;\r\n this._element.className = className;\r\n }\r\n set empty(empty) {\r\n if (this.disposed || empty === this._empty) {\r\n return;\r\n }\r\n this._empty = empty;\r\n this._element.style.marginLeft = empty ? '0' : '';\r\n }\r\n dispose() {\r\n this.disposed = true;\r\n }\r\n}\r\nexport class IconLabel extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this.customHovers = new Map();\r\n this.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\r\n this.labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\r\n const nameContainer = dom.append(this.labelContainer, dom.$('span.monaco-icon-name-container'));\r\n this.descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));\r\n if ((options === null || options === void 0 ? void 0 : options.supportHighlights) || (options === null || options === void 0 ? void 0 : options.supportIcons)) {\r\n this.nameNode = new LabelWithHighlights(nameContainer, !!options.supportIcons);\r\n }\r\n else {\r\n this.nameNode = new Label(nameContainer);\r\n }\r\n if (options === null || options === void 0 ? void 0 : options.supportDescriptionHighlights) {\r\n this.descriptionNodeFactory = () => new HighlightedLabel(dom.append(this.descriptionContainer.element, dom.$('span.label-description')), !!options.supportIcons);\r\n }\r\n else {\r\n this.descriptionNodeFactory = () => this._register(new FastLabelNode(dom.append(this.descriptionContainer.element, dom.$('span.label-description'))));\r\n }\r\n this.hoverDelegate = options === null || options === void 0 ? void 0 : options.hoverDelegate;\r\n }\r\n setLabel(label, description, options) {\r\n const classes = ['monaco-icon-label'];\r\n if (options) {\r\n if (options.extraClasses) {\r\n classes.push(...options.extraClasses);\r\n }\r\n if (options.italic) {\r\n classes.push('italic');\r\n }\r\n if (options.strikethrough) {\r\n classes.push('strikethrough');\r\n }\r\n }\r\n this.domNode.className = classes.join(' ');\r\n this.setupHover(this.labelContainer, options === null || options === void 0 ? void 0 : options.title);\r\n this.nameNode.setLabel(label, options);\r\n if (description || this.descriptionNode) {\r\n if (!this.descriptionNode) {\r\n this.descriptionNode = this.descriptionNodeFactory(); // description node is created lazily on demand\r\n }\r\n if (this.descriptionNode instanceof HighlightedLabel) {\r\n this.descriptionNode.set(description || '', options ? options.descriptionMatches : undefined);\r\n this.setupHover(this.descriptionNode.element, options === null || options === void 0 ? void 0 : options.descriptionTitle);\r\n }\r\n else {\r\n this.descriptionNode.textContent = description || '';\r\n this.setupHover(this.descriptionNode.element, (options === null || options === void 0 ? void 0 : options.descriptionTitle) || '');\r\n this.descriptionNode.empty = !description;\r\n }\r\n }\r\n }\r\n setupHover(htmlElement, tooltip) {\r\n const previousCustomHover = this.customHovers.get(htmlElement);\r\n if (previousCustomHover) {\r\n previousCustomHover.dispose();\r\n this.customHovers.delete(htmlElement);\r\n }\r\n if (!tooltip) {\r\n htmlElement.removeAttribute('title');\r\n return;\r\n }\r\n if (!this.hoverDelegate) {\r\n setupNativeHover(htmlElement, tooltip);\r\n }\r\n else {\r\n const hoverDisposable = setupCustomHover(this.hoverDelegate, htmlElement, tooltip);\r\n if (hoverDisposable) {\r\n this.customHovers.set(htmlElement, hoverDisposable);\r\n }\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (const disposable of this.customHovers.values()) {\r\n disposable.dispose();\r\n }\r\n this.customHovers.clear();\r\n }\r\n}\r\nclass Label {\r\n constructor(container) {\r\n this.container = container;\r\n this.label = undefined;\r\n this.singleLabel = undefined;\r\n }\r\n setLabel(label, options) {\r\n if (this.label === label && equals(this.options, options)) {\r\n return;\r\n }\r\n this.label = label;\r\n this.options = options;\r\n if (typeof label === 'string') {\r\n if (!this.singleLabel) {\r\n this.container.innerText = '';\r\n this.container.classList.remove('multiple');\r\n this.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId }));\r\n }\r\n this.singleLabel.textContent = label;\r\n }\r\n else {\r\n this.container.innerText = '';\r\n this.container.classList.add('multiple');\r\n this.singleLabel = undefined;\r\n for (let i = 0; i < label.length; i++) {\r\n const l = label[i];\r\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\r\n dom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\r\n if (i < label.length - 1) {\r\n dom.append(this.container, dom.$('span.label-separator', undefined, (options === null || options === void 0 ? void 0 : options.separator) || '/'));\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction splitMatches(labels, separator, matches) {\r\n if (!matches) {\r\n return undefined;\r\n }\r\n let labelStart = 0;\r\n return labels.map(label => {\r\n const labelRange = { start: labelStart, end: labelStart + label.length };\r\n const result = matches\r\n .map(match => Range.intersect(labelRange, match))\r\n .filter(range => !Range.isEmpty(range))\r\n .map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\r\n labelStart = labelRange.end + separator.length;\r\n return result;\r\n });\r\n}\r\nclass LabelWithHighlights {\r\n constructor(container, supportIcons) {\r\n this.container = container;\r\n this.supportIcons = supportIcons;\r\n this.label = undefined;\r\n this.singleLabel = undefined;\r\n }\r\n setLabel(label, options) {\r\n if (this.label === label && equals(this.options, options)) {\r\n return;\r\n }\r\n this.label = label;\r\n this.options = options;\r\n if (typeof label === 'string') {\r\n if (!this.singleLabel) {\r\n this.container.innerText = '';\r\n this.container.classList.remove('multiple');\r\n this.singleLabel = new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId })), this.supportIcons);\r\n }\r\n this.singleLabel.set(label, options === null || options === void 0 ? void 0 : options.matches, undefined, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\r\n }\r\n else {\r\n this.container.innerText = '';\r\n this.container.classList.add('multiple');\r\n this.singleLabel = undefined;\r\n const separator = (options === null || options === void 0 ? void 0 : options.separator) || '/';\r\n const matches = splitMatches(label, separator, options === null || options === void 0 ? void 0 : options.matches);\r\n for (let i = 0; i < label.length; i++) {\r\n const l = label[i];\r\n const m = matches ? matches[i] : undefined;\r\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\r\n const name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\r\n const highlightedLabel = new HighlightedLabel(dom.append(this.container, name), this.supportIcons);\r\n highlightedLabel.set(l, m, undefined, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\r\n if (i < label.length - 1) {\r\n dom.append(name, dom.$('span.label-separator', undefined, separator));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../dom.js';\r\nimport { CSSIcon } from '../../../common/codicons.js';\r\nconst labelWithIconsRegex = new RegExp(`(\\\\\\\\)?\\\\$\\\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\\\)`, 'g');\r\nexport function renderLabelWithIcons(text) {\r\n const elements = new Array();\r\n let match;\r\n let textStart = 0, textStop = 0;\r\n while ((match = labelWithIconsRegex.exec(text)) !== null) {\r\n textStop = match.index || 0;\r\n elements.push(text.substring(textStart, textStop));\r\n textStart = (match.index || 0) + match[0].length;\r\n const [, escaped, codicon] = match;\r\n elements.push(escaped ? `$(${codicon})` : renderIcon({ id: codicon }));\r\n }\r\n if (textStart < text.length) {\r\n elements.push(text.substring(textStart));\r\n }\r\n return elements;\r\n}\r\nexport function renderIcon(icon) {\r\n const node = dom.$(`span`);\r\n node.classList.add(...CSSIcon.asClassNameArray(icon));\r\n return node;\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./inputBox.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./inputBox.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ArrayNavigator {\r\n constructor(items, start = 0, end = items.length, index = start - 1) {\r\n this.items = items;\r\n this.start = start;\r\n this.end = end;\r\n this.index = index;\r\n }\r\n current() {\r\n if (this.index === this.start - 1 || this.index === this.end) {\r\n return null;\r\n }\r\n return this.items[this.index];\r\n }\r\n next() {\r\n this.index = Math.min(this.index + 1, this.end);\r\n return this.current();\r\n }\r\n previous() {\r\n this.index = Math.max(this.index - 1, this.start - 1);\r\n return this.current();\r\n }\r\n first() {\r\n this.index = this.start;\r\n return this.current();\r\n }\r\n last() {\r\n this.index = this.end - 1;\r\n return this.current();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ArrayNavigator } from './navigator.js';\r\nexport class HistoryNavigator {\r\n constructor(history = [], limit = 10) {\r\n this._initialize(history);\r\n this._limit = limit;\r\n this._onChange();\r\n }\r\n add(t) {\r\n this._history.delete(t);\r\n this._history.add(t);\r\n this._onChange();\r\n }\r\n next() {\r\n if (this._currentPosition() !== this._elements.length - 1) {\r\n return this._navigator.next();\r\n }\r\n return null;\r\n }\r\n previous() {\r\n if (this._currentPosition() !== 0) {\r\n return this._navigator.previous();\r\n }\r\n return null;\r\n }\r\n current() {\r\n return this._navigator.current();\r\n }\r\n first() {\r\n return this._navigator.first();\r\n }\r\n last() {\r\n return this._navigator.last();\r\n }\r\n has(t) {\r\n return this._history.has(t);\r\n }\r\n _onChange() {\r\n this._reduceToLimit();\r\n const elements = this._elements;\r\n this._navigator = new ArrayNavigator(elements, 0, elements.length, elements.length);\r\n }\r\n _reduceToLimit() {\r\n const data = this._elements;\r\n if (data.length > this._limit) {\r\n this._initialize(data.slice(data.length - this._limit));\r\n }\r\n }\r\n _currentPosition() {\r\n const currentElement = this._navigator.current();\r\n if (!currentElement) {\r\n return -1;\r\n }\r\n return this._elements.indexOf(currentElement);\r\n }\r\n _initialize(history) {\r\n this._history = new Set();\r\n for (const entry of history) {\r\n this._history.add(entry);\r\n }\r\n }\r\n get _elements() {\r\n const elements = [];\r\n this._history.forEach(e => elements.push(e));\r\n return elements;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './inputBox.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { renderFormattedText, renderText } from '../../formattedTextRenderer.js';\r\nimport * as aria from '../aria/aria.js';\r\nimport { ActionBar } from '../actionbar/actionbar.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { HistoryNavigator } from '../../../common/history.js';\r\nimport { ScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { DomEmitter } from '../../event.js';\r\nconst $ = dom.$;\r\nconst defaultOpts = {\r\n inputBackground: Color.fromHex('#3C3C3C'),\r\n inputForeground: Color.fromHex('#CCCCCC'),\r\n inputValidationInfoBorder: Color.fromHex('#55AAFF'),\r\n inputValidationInfoBackground: Color.fromHex('#063B49'),\r\n inputValidationWarningBorder: Color.fromHex('#B89500'),\r\n inputValidationWarningBackground: Color.fromHex('#352A05'),\r\n inputValidationErrorBorder: Color.fromHex('#BE1100'),\r\n inputValidationErrorBackground: Color.fromHex('#5A1D1D')\r\n};\r\nexport class InputBox extends Widget {\r\n constructor(container, contextViewProvider, options) {\r\n var _a;\r\n super();\r\n this.state = 'idle';\r\n this.maxHeight = Number.POSITIVE_INFINITY;\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidHeightChange = this._register(new Emitter());\r\n this.onDidHeightChange = this._onDidHeightChange.event;\r\n this.contextViewProvider = contextViewProvider;\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.message = null;\r\n this.placeholder = this.options.placeholder || '';\r\n this.tooltip = (_a = this.options.tooltip) !== null && _a !== void 0 ? _a : (this.placeholder || '');\r\n this.ariaLabel = this.options.ariaLabel || '';\r\n this.inputBackground = this.options.inputBackground;\r\n this.inputForeground = this.options.inputForeground;\r\n this.inputBorder = this.options.inputBorder;\r\n this.inputValidationInfoBorder = this.options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = this.options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = this.options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = this.options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = this.options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = this.options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = this.options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = this.options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = this.options.inputValidationErrorForeground;\r\n if (this.options.validationOptions) {\r\n this.validation = this.options.validationOptions.validation;\r\n }\r\n this.element = dom.append(container, $('.monaco-inputbox.idle'));\r\n let tagName = this.options.flexibleHeight ? 'textarea' : 'input';\r\n let wrapper = dom.append(this.element, $('.ibwrapper'));\r\n this.input = dom.append(wrapper, $(tagName + '.input.empty'));\r\n this.input.setAttribute('autocorrect', 'off');\r\n this.input.setAttribute('autocapitalize', 'off');\r\n this.input.setAttribute('spellcheck', 'false');\r\n this.onfocus(this.input, () => this.element.classList.add('synthetic-focus'));\r\n this.onblur(this.input, () => this.element.classList.remove('synthetic-focus'));\r\n if (this.options.flexibleHeight) {\r\n this.maxHeight = typeof this.options.flexibleMaxHeight === 'number' ? this.options.flexibleMaxHeight : Number.POSITIVE_INFINITY;\r\n this.mirror = dom.append(wrapper, $('div.mirror'));\r\n this.mirror.innerText = '\\u00a0';\r\n this.scrollableElement = new ScrollableElement(this.element, { vertical: 1 /* Auto */ });\r\n if (this.options.flexibleWidth) {\r\n this.input.setAttribute('wrap', 'off');\r\n this.mirror.style.whiteSpace = 'pre';\r\n this.mirror.style.wordWrap = 'initial';\r\n }\r\n dom.append(container, this.scrollableElement.getDomNode());\r\n this._register(this.scrollableElement);\r\n // from ScrollableElement to DOM\r\n this._register(this.scrollableElement.onScroll(e => this.input.scrollTop = e.scrollTop));\r\n const onSelectionChange = this._register(new DomEmitter(document, 'selectionchange'));\r\n const onAnchoredSelectionChange = Event.filter(onSelectionChange.event, () => {\r\n const selection = document.getSelection();\r\n return (selection === null || selection === void 0 ? void 0 : selection.anchorNode) === wrapper;\r\n });\r\n // from DOM to ScrollableElement\r\n this._register(onAnchoredSelectionChange(this.updateScrollDimensions, this));\r\n this._register(this.onDidHeightChange(this.updateScrollDimensions, this));\r\n }\r\n else {\r\n this.input.type = this.options.type || 'text';\r\n this.input.setAttribute('wrap', 'off');\r\n }\r\n if (this.ariaLabel) {\r\n this.input.setAttribute('aria-label', this.ariaLabel);\r\n }\r\n if (this.placeholder && !this.options.showPlaceholderOnFocus) {\r\n this.setPlaceHolder(this.placeholder);\r\n }\r\n if (this.tooltip) {\r\n this.setTooltip(this.tooltip);\r\n }\r\n this.oninput(this.input, () => this.onValueChange());\r\n this.onblur(this.input, () => this.onBlur());\r\n this.onfocus(this.input, () => this.onFocus());\r\n this.ignoreGesture(this.input);\r\n setTimeout(() => this.updateMirror(), 0);\r\n // Support actions\r\n if (this.options.actions) {\r\n this.actionbar = this._register(new ActionBar(this.element));\r\n this.actionbar.push(this.options.actions, { icon: true, label: false });\r\n }\r\n this.applyStyles();\r\n }\r\n onBlur() {\r\n this._hideMessage();\r\n if (this.options.showPlaceholderOnFocus) {\r\n this.input.setAttribute('placeholder', '');\r\n }\r\n }\r\n onFocus() {\r\n this._showMessage();\r\n if (this.options.showPlaceholderOnFocus) {\r\n this.input.setAttribute('placeholder', this.placeholder || '');\r\n }\r\n }\r\n setPlaceHolder(placeHolder) {\r\n this.placeholder = placeHolder;\r\n this.input.setAttribute('placeholder', placeHolder);\r\n }\r\n setTooltip(tooltip) {\r\n this.tooltip = tooltip;\r\n this.input.title = tooltip;\r\n }\r\n setAriaLabel(label) {\r\n this.ariaLabel = label;\r\n if (label) {\r\n this.input.setAttribute('aria-label', this.ariaLabel);\r\n }\r\n else {\r\n this.input.removeAttribute('aria-label');\r\n }\r\n }\r\n getAriaLabel() {\r\n return this.ariaLabel;\r\n }\r\n get inputElement() {\r\n return this.input;\r\n }\r\n get value() {\r\n return this.input.value;\r\n }\r\n set value(newValue) {\r\n if (this.input.value !== newValue) {\r\n this.input.value = newValue;\r\n this.onValueChange();\r\n }\r\n }\r\n get height() {\r\n return typeof this.cachedHeight === 'number' ? this.cachedHeight : dom.getTotalHeight(this.element);\r\n }\r\n focus() {\r\n this.input.focus();\r\n }\r\n blur() {\r\n this.input.blur();\r\n }\r\n hasFocus() {\r\n return document.activeElement === this.input;\r\n }\r\n select(range = null) {\r\n this.input.select();\r\n if (range) {\r\n this.input.setSelectionRange(range.start, range.end);\r\n if (range.end === this.input.value.length) {\r\n this.input.scrollLeft = this.input.scrollWidth;\r\n }\r\n }\r\n }\r\n isSelectionAtEnd() {\r\n return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd;\r\n }\r\n enable() {\r\n this.input.removeAttribute('disabled');\r\n }\r\n disable() {\r\n this.blur();\r\n this.input.disabled = true;\r\n this._hideMessage();\r\n }\r\n get width() {\r\n return dom.getTotalWidth(this.input);\r\n }\r\n set width(width) {\r\n if (this.options.flexibleHeight && this.options.flexibleWidth) {\r\n // textarea with horizontal scrolling\r\n let horizontalPadding = 0;\r\n if (this.mirror) {\r\n const paddingLeft = parseFloat(this.mirror.style.paddingLeft || '') || 0;\r\n const paddingRight = parseFloat(this.mirror.style.paddingRight || '') || 0;\r\n horizontalPadding = paddingLeft + paddingRight;\r\n }\r\n this.input.style.width = (width - horizontalPadding) + 'px';\r\n }\r\n else {\r\n this.input.style.width = width + 'px';\r\n }\r\n if (this.mirror) {\r\n this.mirror.style.width = width + 'px';\r\n }\r\n }\r\n set paddingRight(paddingRight) {\r\n if (this.options.flexibleHeight && this.options.flexibleWidth) {\r\n this.input.style.width = `calc(100% - ${paddingRight}px)`;\r\n }\r\n else {\r\n this.input.style.paddingRight = paddingRight + 'px';\r\n }\r\n if (this.mirror) {\r\n this.mirror.style.paddingRight = paddingRight + 'px';\r\n }\r\n }\r\n updateScrollDimensions() {\r\n if (typeof this.cachedContentHeight !== 'number' || typeof this.cachedHeight !== 'number' || !this.scrollableElement) {\r\n return;\r\n }\r\n const scrollHeight = this.cachedContentHeight;\r\n const height = this.cachedHeight;\r\n const scrollTop = this.input.scrollTop;\r\n this.scrollableElement.setScrollDimensions({ scrollHeight, height });\r\n this.scrollableElement.setScrollPosition({ scrollTop });\r\n }\r\n showMessage(message, force) {\r\n this.message = message;\r\n this.element.classList.remove('idle');\r\n this.element.classList.remove('info');\r\n this.element.classList.remove('warning');\r\n this.element.classList.remove('error');\r\n this.element.classList.add(this.classForType(message.type));\r\n const styles = this.stylesForType(this.message.type);\r\n this.element.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n if (this.hasFocus() || force) {\r\n this._showMessage();\r\n }\r\n }\r\n hideMessage() {\r\n this.message = null;\r\n this.element.classList.remove('info');\r\n this.element.classList.remove('warning');\r\n this.element.classList.remove('error');\r\n this.element.classList.add('idle');\r\n this._hideMessage();\r\n this.applyStyles();\r\n }\r\n validate() {\r\n let errorMsg = null;\r\n if (this.validation) {\r\n errorMsg = this.validation(this.value);\r\n if (errorMsg) {\r\n this.inputElement.setAttribute('aria-invalid', 'true');\r\n this.showMessage(errorMsg);\r\n }\r\n else if (this.inputElement.hasAttribute('aria-invalid')) {\r\n this.inputElement.removeAttribute('aria-invalid');\r\n this.hideMessage();\r\n }\r\n }\r\n return errorMsg === null || errorMsg === void 0 ? void 0 : errorMsg.type;\r\n }\r\n stylesForType(type) {\r\n switch (type) {\r\n case 1 /* INFO */: return { border: this.inputValidationInfoBorder, background: this.inputValidationInfoBackground, foreground: this.inputValidationInfoForeground };\r\n case 2 /* WARNING */: return { border: this.inputValidationWarningBorder, background: this.inputValidationWarningBackground, foreground: this.inputValidationWarningForeground };\r\n default: return { border: this.inputValidationErrorBorder, background: this.inputValidationErrorBackground, foreground: this.inputValidationErrorForeground };\r\n }\r\n }\r\n classForType(type) {\r\n switch (type) {\r\n case 1 /* INFO */: return 'info';\r\n case 2 /* WARNING */: return 'warning';\r\n default: return 'error';\r\n }\r\n }\r\n _showMessage() {\r\n if (!this.contextViewProvider || !this.message) {\r\n return;\r\n }\r\n let div;\r\n let layout = () => div.style.width = dom.getTotalWidth(this.element) + 'px';\r\n this.contextViewProvider.showContextView({\r\n getAnchor: () => this.element,\r\n anchorAlignment: 1 /* RIGHT */,\r\n render: (container) => {\r\n if (!this.message) {\r\n return null;\r\n }\r\n div = dom.append(container, $('.monaco-inputbox-container'));\r\n layout();\r\n const renderOptions = {\r\n inline: true,\r\n className: 'monaco-inputbox-message'\r\n };\r\n const spanElement = (this.message.formatContent\r\n ? renderFormattedText(this.message.content, renderOptions)\r\n : renderText(this.message.content, renderOptions));\r\n spanElement.classList.add(this.classForType(this.message.type));\r\n const styles = this.stylesForType(this.message.type);\r\n spanElement.style.backgroundColor = styles.background ? styles.background.toString() : '';\r\n spanElement.style.color = styles.foreground ? styles.foreground.toString() : '';\r\n spanElement.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n dom.append(div, spanElement);\r\n return null;\r\n },\r\n onHide: () => {\r\n this.state = 'closed';\r\n },\r\n layout: layout\r\n });\r\n // ARIA Support\r\n let alertText;\r\n if (this.message.type === 3 /* ERROR */) {\r\n alertText = nls.localize('alertErrorMessage', \"Error: {0}\", this.message.content);\r\n }\r\n else if (this.message.type === 2 /* WARNING */) {\r\n alertText = nls.localize('alertWarningMessage', \"Warning: {0}\", this.message.content);\r\n }\r\n else {\r\n alertText = nls.localize('alertInfoMessage', \"Info: {0}\", this.message.content);\r\n }\r\n aria.alert(alertText);\r\n this.state = 'open';\r\n }\r\n _hideMessage() {\r\n if (!this.contextViewProvider) {\r\n return;\r\n }\r\n if (this.state === 'open') {\r\n this.contextViewProvider.hideContextView();\r\n }\r\n this.state = 'idle';\r\n }\r\n onValueChange() {\r\n this._onDidChange.fire(this.value);\r\n this.validate();\r\n this.updateMirror();\r\n this.input.classList.toggle('empty', !this.value);\r\n if (this.state === 'open' && this.contextViewProvider) {\r\n this.contextViewProvider.layout();\r\n }\r\n }\r\n updateMirror() {\r\n if (!this.mirror) {\r\n return;\r\n }\r\n const value = this.value;\r\n const lastCharCode = value.charCodeAt(value.length - 1);\r\n const suffix = lastCharCode === 10 ? ' ' : '';\r\n const mirrorTextContent = (value + suffix)\r\n .replace(/\\u000c/g, ''); // Don't measure with the form feed character, which messes up sizing\r\n if (mirrorTextContent) {\r\n this.mirror.textContent = value + suffix;\r\n }\r\n else {\r\n this.mirror.innerText = '\\u00a0';\r\n }\r\n this.layout();\r\n }\r\n style(styles) {\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n const background = this.inputBackground ? this.inputBackground.toString() : '';\r\n const foreground = this.inputForeground ? this.inputForeground.toString() : '';\r\n const border = this.inputBorder ? this.inputBorder.toString() : '';\r\n this.element.style.backgroundColor = background;\r\n this.element.style.color = foreground;\r\n this.input.style.backgroundColor = 'inherit';\r\n this.input.style.color = foreground;\r\n this.element.style.borderWidth = border ? '1px' : '';\r\n this.element.style.borderStyle = border ? 'solid' : '';\r\n this.element.style.borderColor = border;\r\n }\r\n layout() {\r\n if (!this.mirror) {\r\n return;\r\n }\r\n const previousHeight = this.cachedContentHeight;\r\n this.cachedContentHeight = dom.getTotalHeight(this.mirror);\r\n if (previousHeight !== this.cachedContentHeight) {\r\n this.cachedHeight = Math.min(this.cachedContentHeight, this.maxHeight);\r\n this.input.style.height = this.cachedHeight + 'px';\r\n this._onDidHeightChange.fire(this.cachedContentHeight);\r\n }\r\n }\r\n insertAtCursor(text) {\r\n const inputElement = this.inputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const content = inputElement.value;\r\n if (start !== null && end !== null) {\r\n this.value = content.substr(0, start) + text + content.substr(end);\r\n inputElement.setSelectionRange(start + 1, start + 1);\r\n this.layout();\r\n }\r\n }\r\n dispose() {\r\n this._hideMessage();\r\n this.message = null;\r\n if (this.actionbar) {\r\n this.actionbar.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\nexport class HistoryInputBox extends InputBox {\r\n constructor(container, contextViewProvider, options) {\r\n super(container, contextViewProvider, options);\r\n this.history = new HistoryNavigator(options.history, 100);\r\n }\r\n addToHistory() {\r\n if (this.value && this.value !== this.getCurrentValue()) {\r\n this.history.add(this.value);\r\n }\r\n }\r\n showNextValue() {\r\n if (!this.history.has(this.value)) {\r\n this.addToHistory();\r\n }\r\n let next = this.getNextValue();\r\n if (next) {\r\n next = next === this.value ? this.getNextValue() : next;\r\n }\r\n if (next) {\r\n this.value = next;\r\n aria.status(this.value);\r\n }\r\n }\r\n showPreviousValue() {\r\n if (!this.history.has(this.value)) {\r\n this.addToHistory();\r\n }\r\n let previous = this.getPreviousValue();\r\n if (previous) {\r\n previous = previous === this.value ? this.getPreviousValue() : previous;\r\n }\r\n if (previous) {\r\n this.value = previous;\r\n aria.status(this.value);\r\n }\r\n }\r\n getCurrentValue() {\r\n let currentValue = this.history.current();\r\n if (!currentValue) {\r\n currentValue = this.history.last();\r\n this.history.next();\r\n }\r\n return currentValue;\r\n }\r\n getPreviousValue() {\r\n return this.history.previous() || this.history.first();\r\n }\r\n getNextValue() {\r\n return this.history.next() || this.history.last();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../../common/range.js';\r\n/**\r\n * Returns the intersection between a ranged group and a range.\r\n * Returns `[]` if the intersection is empty.\r\n */\r\nexport function groupIntersect(range, groups) {\r\n const result = [];\r\n for (let r of groups) {\r\n if (range.start >= r.range.end) {\r\n continue;\r\n }\r\n if (range.end < r.range.start) {\r\n break;\r\n }\r\n const intersection = Range.intersect(range, r.range);\r\n if (Range.isEmpty(intersection)) {\r\n continue;\r\n }\r\n result.push({\r\n range: intersection,\r\n size: r.size\r\n });\r\n }\r\n return result;\r\n}\r\n/**\r\n * Shifts a range by that `much`.\r\n */\r\nexport function shift({ start, end }, much) {\r\n return { start: start + much, end: end + much };\r\n}\r\n/**\r\n * Consolidates a collection of ranged groups.\r\n *\r\n * Consolidation is the process of merging consecutive ranged groups\r\n * that share the same `size`.\r\n */\r\nexport function consolidate(groups) {\r\n const result = [];\r\n let previousGroup = null;\r\n for (let group of groups) {\r\n const start = group.range.start;\r\n const end = group.range.end;\r\n const size = group.size;\r\n if (previousGroup && size === previousGroup.size) {\r\n previousGroup.range.end = end;\r\n continue;\r\n }\r\n previousGroup = { range: { start, end }, size };\r\n result.push(previousGroup);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Concatenates several collections of ranged groups into a single\r\n * collection.\r\n */\r\nfunction concat(...groups) {\r\n return consolidate(groups.reduce((r, g) => r.concat(g), []));\r\n}\r\nexport class RangeMap {\r\n constructor() {\r\n this.groups = [];\r\n this._size = 0;\r\n }\r\n splice(index, deleteCount, items = []) {\r\n const diff = items.length - deleteCount;\r\n const before = groupIntersect({ start: 0, end: index }, this.groups);\r\n const after = groupIntersect({ start: index + deleteCount, end: Number.POSITIVE_INFINITY }, this.groups)\r\n .map(g => ({ range: shift(g.range, diff), size: g.size }));\r\n const middle = items.map((item, i) => ({\r\n range: { start: index + i, end: index + i + 1 },\r\n size: item.size\r\n }));\r\n this.groups = concat(before, middle, after);\r\n this._size = this.groups.reduce((t, g) => t + (g.size * (g.range.end - g.range.start)), 0);\r\n }\r\n /**\r\n * Returns the number of items in the range map.\r\n */\r\n get count() {\r\n const len = this.groups.length;\r\n if (!len) {\r\n return 0;\r\n }\r\n return this.groups[len - 1].range.end;\r\n }\r\n /**\r\n * Returns the sum of the sizes of all items in the range map.\r\n */\r\n get size() {\r\n return this._size;\r\n }\r\n /**\r\n * Returns the index of the item at the given position.\r\n */\r\n indexAt(position) {\r\n if (position < 0) {\r\n return -1;\r\n }\r\n let index = 0;\r\n let size = 0;\r\n for (let group of this.groups) {\r\n const count = group.range.end - group.range.start;\r\n const newSize = size + (count * group.size);\r\n if (position < newSize) {\r\n return index + Math.floor((position - size) / group.size);\r\n }\r\n index += count;\r\n size = newSize;\r\n }\r\n return index;\r\n }\r\n /**\r\n * Returns the index of the item right after the item at the\r\n * index of the given position.\r\n */\r\n indexAfter(position) {\r\n return Math.min(this.indexAt(position) + 1, this.count);\r\n }\r\n /**\r\n * Returns the start position of the item at the given index.\r\n */\r\n positionAt(index) {\r\n if (index < 0) {\r\n return -1;\r\n }\r\n let position = 0;\r\n let count = 0;\r\n for (let group of this.groups) {\r\n const groupCount = group.range.end - group.range.start;\r\n const newCount = count + groupCount;\r\n if (index < newCount) {\r\n return position + ((index - count) * group.size);\r\n }\r\n position += groupCount * group.size;\r\n count = newCount;\r\n }\r\n return -1;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { $ } from '../../dom.js';\r\nfunction removeFromParent(element) {\r\n try {\r\n if (element.parentElement) {\r\n element.parentElement.removeChild(element);\r\n }\r\n }\r\n catch (e) {\r\n // this will throw if this happens due to a blur event, nasty business\r\n }\r\n}\r\nexport class RowCache {\r\n constructor(renderers) {\r\n this.renderers = renderers;\r\n this.cache = new Map();\r\n }\r\n /**\r\n * Returns a row either by creating a new one or reusing\r\n * a previously released row which shares the same templateId.\r\n */\r\n alloc(templateId) {\r\n let result = this.getTemplateCache(templateId).pop();\r\n if (!result) {\r\n const domNode = $('.monaco-list-row');\r\n const renderer = this.getRenderer(templateId);\r\n const templateData = renderer.renderTemplate(domNode);\r\n result = { domNode, templateId, templateData };\r\n }\r\n return result;\r\n }\r\n /**\r\n * Releases the row for eventual reuse.\r\n */\r\n release(row) {\r\n if (!row) {\r\n return;\r\n }\r\n this.releaseRow(row);\r\n }\r\n releaseRow(row) {\r\n const { domNode, templateId } = row;\r\n if (domNode) {\r\n domNode.classList.remove('scrolling');\r\n removeFromParent(domNode);\r\n }\r\n const cache = this.getTemplateCache(templateId);\r\n cache.push(row);\r\n }\r\n getTemplateCache(templateId) {\r\n let result = this.cache.get(templateId);\r\n if (!result) {\r\n result = [];\r\n this.cache.set(templateId, result);\r\n }\r\n return result;\r\n }\r\n dispose() {\r\n this.cache.forEach((cachedRows, templateId) => {\r\n for (const cachedRow of cachedRows) {\r\n const renderer = this.getRenderer(templateId);\r\n renderer.disposeTemplate(cachedRow.templateData);\r\n cachedRow.templateData = null;\r\n }\r\n });\r\n this.cache.clear();\r\n }\r\n getRenderer(templateId) {\r\n const renderer = this.renderers.get(templateId);\r\n if (!renderer) {\r\n throw new Error(`No renderer found for ${templateId}`);\r\n }\r\n return renderer;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { getOrDefault } from '../../../common/objects.js';\r\nimport { dispose, Disposable, toDisposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { Gesture, EventType as TouchEventType } from '../../touch.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport { SmoothScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { Scrollable } from '../../../common/scrollable.js';\r\nimport { RangeMap, shift } from './rangeMap.js';\r\nimport { RowCache } from './rowCache.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { equals, distinct } from '../../../common/arrays.js';\r\nimport { DataTransfers, StaticDND } from '../../dnd.js';\r\nimport { disposableTimeout, Delayer } from '../../../common/async.js';\r\nimport { isFirefox } from '../../browser.js';\r\nimport { $, addDisposableListener, animate, getContentHeight, getContentWidth, getTopLeftOffset, scheduleAtNextAnimationFrame } from '../../dom.js';\r\nimport { DomEmitter } from '../../event.js';\r\nconst DefaultOptions = {\r\n useShadows: true,\r\n verticalScrollMode: 1 /* Auto */,\r\n setRowLineHeight: true,\r\n setRowHeight: true,\r\n supportDynamicHeights: false,\r\n dnd: {\r\n getDragElements(e) { return [e]; },\r\n getDragURI() { return null; },\r\n onDragStart() { },\r\n onDragOver() { return false; },\r\n drop() { }\r\n },\r\n horizontalScrolling: false,\r\n transformOptimization: true,\r\n alwaysConsumeMouseWheel: true,\r\n};\r\nexport class ElementsDragAndDropData {\r\n constructor(elements) {\r\n this.elements = elements;\r\n }\r\n update() { }\r\n getData() {\r\n return this.elements;\r\n }\r\n}\r\nexport class ExternalElementsDragAndDropData {\r\n constructor(elements) {\r\n this.elements = elements;\r\n }\r\n update() { }\r\n getData() {\r\n return this.elements;\r\n }\r\n}\r\nexport class NativeDragAndDropData {\r\n constructor() {\r\n this.types = [];\r\n this.files = [];\r\n }\r\n update(dataTransfer) {\r\n if (dataTransfer.types) {\r\n this.types.splice(0, this.types.length, ...dataTransfer.types);\r\n }\r\n if (dataTransfer.files) {\r\n this.files.splice(0, this.files.length);\r\n for (let i = 0; i < dataTransfer.files.length; i++) {\r\n const file = dataTransfer.files.item(i);\r\n if (file && (file.size || file.type)) {\r\n this.files.push(file);\r\n }\r\n }\r\n }\r\n }\r\n getData() {\r\n return {\r\n types: this.types,\r\n files: this.files\r\n };\r\n }\r\n}\r\nfunction equalsDragFeedback(f1, f2) {\r\n if (Array.isArray(f1) && Array.isArray(f2)) {\r\n return equals(f1, f2);\r\n }\r\n return f1 === f2;\r\n}\r\nclass ListViewAccessibilityProvider {\r\n constructor(accessibilityProvider) {\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getSetSize) {\r\n this.getSetSize = accessibilityProvider.getSetSize.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getSetSize = (e, i, l) => l;\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getPosInSet) {\r\n this.getPosInSet = accessibilityProvider.getPosInSet.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getPosInSet = (e, i) => i + 1;\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getRole) {\r\n this.getRole = accessibilityProvider.getRole.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getRole = _ => 'listitem';\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.isChecked) {\r\n this.isChecked = accessibilityProvider.isChecked.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.isChecked = _ => undefined;\r\n }\r\n }\r\n}\r\nexport class ListView {\r\n constructor(container, virtualDelegate, renderers, options = DefaultOptions) {\r\n this.virtualDelegate = virtualDelegate;\r\n this.domId = `list_id_${++ListView.InstanceCount}`;\r\n this.renderers = new Map();\r\n this.renderWidth = 0;\r\n this._scrollHeight = 0;\r\n this.scrollableElementUpdateDisposable = null;\r\n this.scrollableElementWidthDelayer = new Delayer(50);\r\n this.splicing = false;\r\n this.dragOverAnimationStopDisposable = Disposable.None;\r\n this.dragOverMouseY = 0;\r\n this.canDrop = false;\r\n this.currentDragFeedbackDisposable = Disposable.None;\r\n this.onDragLeaveTimeout = Disposable.None;\r\n this.disposables = new DisposableStore();\r\n this._onDidChangeContentHeight = new Emitter();\r\n this._horizontalScrolling = false;\r\n if (options.horizontalScrolling && options.supportDynamicHeights) {\r\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\r\n }\r\n this.items = [];\r\n this.itemId = 0;\r\n this.rangeMap = new RangeMap();\r\n for (const renderer of renderers) {\r\n this.renderers.set(renderer.templateId, renderer);\r\n }\r\n this.cache = this.disposables.add(new RowCache(this.renderers));\r\n this.lastRenderTop = 0;\r\n this.lastRenderHeight = 0;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'monaco-list';\r\n this.domNode.classList.add(this.domId);\r\n this.domNode.tabIndex = 0;\r\n this.domNode.classList.toggle('mouse-support', typeof options.mouseSupport === 'boolean' ? options.mouseSupport : true);\r\n this._horizontalScrolling = getOrDefault(options, o => o.horizontalScrolling, DefaultOptions.horizontalScrolling);\r\n this.domNode.classList.toggle('horizontal-scrolling', this._horizontalScrolling);\r\n this.additionalScrollHeight = typeof options.additionalScrollHeight === 'undefined' ? 0 : options.additionalScrollHeight;\r\n this.accessibilityProvider = new ListViewAccessibilityProvider(options.accessibilityProvider);\r\n this.rowsContainer = document.createElement('div');\r\n this.rowsContainer.className = 'monaco-list-rows';\r\n const transformOptimization = getOrDefault(options, o => o.transformOptimization, DefaultOptions.transformOptimization);\r\n if (transformOptimization) {\r\n this.rowsContainer.style.transform = 'translate3d(0px, 0px, 0px)';\r\n }\r\n this.disposables.add(Gesture.addTarget(this.rowsContainer));\r\n this.scrollable = new Scrollable(getOrDefault(options, o => o.smoothScrolling, false) ? 125 : 0, cb => scheduleAtNextAnimationFrame(cb));\r\n this.scrollableElement = this.disposables.add(new SmoothScrollableElement(this.rowsContainer, {\r\n alwaysConsumeMouseWheel: getOrDefault(options, o => o.alwaysConsumeMouseWheel, DefaultOptions.alwaysConsumeMouseWheel),\r\n horizontal: 1 /* Auto */,\r\n vertical: getOrDefault(options, o => o.verticalScrollMode, DefaultOptions.verticalScrollMode),\r\n useShadows: getOrDefault(options, o => o.useShadows, DefaultOptions.useShadows),\r\n mouseWheelScrollSensitivity: options.mouseWheelScrollSensitivity,\r\n fastScrollSensitivity: options.fastScrollSensitivity\r\n }, this.scrollable));\r\n this.domNode.appendChild(this.scrollableElement.getDomNode());\r\n container.appendChild(this.domNode);\r\n this.scrollableElement.onScroll(this.onScroll, this, this.disposables);\r\n this.disposables.add(addDisposableListener(this.rowsContainer, TouchEventType.Change, e => this.onTouchChange(e)));\r\n // Prevent the monaco-scrollable-element from scrolling\r\n // https://github.com/microsoft/vscode/issues/44181\r\n this.disposables.add(addDisposableListener(this.scrollableElement.getDomNode(), 'scroll', e => e.target.scrollTop = 0));\r\n this.disposables.add(addDisposableListener(this.domNode, 'dragover', e => this.onDragOver(this.toDragEvent(e))));\r\n this.disposables.add(addDisposableListener(this.domNode, 'drop', e => this.onDrop(this.toDragEvent(e))));\r\n this.disposables.add(addDisposableListener(this.domNode, 'dragleave', e => this.onDragLeave(this.toDragEvent(e))));\r\n this.disposables.add(addDisposableListener(this.domNode, 'dragend', e => this.onDragEnd(e)));\r\n this.setRowLineHeight = getOrDefault(options, o => o.setRowLineHeight, DefaultOptions.setRowLineHeight);\r\n this.setRowHeight = getOrDefault(options, o => o.setRowHeight, DefaultOptions.setRowHeight);\r\n this.supportDynamicHeights = getOrDefault(options, o => o.supportDynamicHeights, DefaultOptions.supportDynamicHeights);\r\n this.dnd = getOrDefault(options, o => o.dnd, DefaultOptions.dnd);\r\n this.layout();\r\n }\r\n get contentHeight() { return this.rangeMap.size; }\r\n get horizontalScrolling() { return this._horizontalScrolling; }\r\n set horizontalScrolling(value) {\r\n if (value === this._horizontalScrolling) {\r\n return;\r\n }\r\n if (value && this.supportDynamicHeights) {\r\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\r\n }\r\n this._horizontalScrolling = value;\r\n this.domNode.classList.toggle('horizontal-scrolling', this._horizontalScrolling);\r\n if (this._horizontalScrolling) {\r\n for (const item of this.items) {\r\n this.measureItemWidth(item);\r\n }\r\n this.updateScrollWidth();\r\n this.scrollableElement.setScrollDimensions({ width: getContentWidth(this.domNode) });\r\n this.rowsContainer.style.width = `${Math.max(this.scrollWidth || 0, this.renderWidth)}px`;\r\n }\r\n else {\r\n this.scrollableElementWidthDelayer.cancel();\r\n this.scrollableElement.setScrollDimensions({ width: this.renderWidth, scrollWidth: this.renderWidth });\r\n this.rowsContainer.style.width = '';\r\n }\r\n }\r\n updateOptions(options) {\r\n if (options.additionalScrollHeight !== undefined) {\r\n this.additionalScrollHeight = options.additionalScrollHeight;\r\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\r\n }\r\n if (options.smoothScrolling !== undefined) {\r\n this.scrollable.setSmoothScrollDuration(options.smoothScrolling ? 125 : 0);\r\n }\r\n if (options.horizontalScrolling !== undefined) {\r\n this.horizontalScrolling = options.horizontalScrolling;\r\n }\r\n if (options.mouseWheelScrollSensitivity !== undefined) {\r\n this.scrollableElement.updateOptions({ mouseWheelScrollSensitivity: options.mouseWheelScrollSensitivity });\r\n }\r\n if (options.fastScrollSensitivity !== undefined) {\r\n this.scrollableElement.updateOptions({ fastScrollSensitivity: options.fastScrollSensitivity });\r\n }\r\n }\r\n splice(start, deleteCount, elements = []) {\r\n if (this.splicing) {\r\n throw new Error('Can\\'t run recursive splices.');\r\n }\r\n this.splicing = true;\r\n try {\r\n return this._splice(start, deleteCount, elements);\r\n }\r\n finally {\r\n this.splicing = false;\r\n this._onDidChangeContentHeight.fire(this.contentHeight);\r\n }\r\n }\r\n _splice(start, deleteCount, elements = []) {\r\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n const deleteRange = { start, end: start + deleteCount };\r\n const removeRange = Range.intersect(previousRenderRange, deleteRange);\r\n // try to reuse rows, avoid removing them from DOM\r\n const rowsToDispose = new Map();\r\n for (let i = removeRange.start; i < removeRange.end; i++) {\r\n const item = this.items[i];\r\n item.dragStartDisposable.dispose();\r\n if (item.row) {\r\n let rows = rowsToDispose.get(item.templateId);\r\n if (!rows) {\r\n rows = [];\r\n rowsToDispose.set(item.templateId, rows);\r\n }\r\n const renderer = this.renderers.get(item.templateId);\r\n if (renderer && renderer.disposeElement) {\r\n renderer.disposeElement(item.element, i, item.row.templateData, item.size);\r\n }\r\n rows.push(item.row);\r\n }\r\n item.row = null;\r\n }\r\n const previousRestRange = { start: start + deleteCount, end: this.items.length };\r\n const previousRenderedRestRange = Range.intersect(previousRestRange, previousRenderRange);\r\n const previousUnrenderedRestRanges = Range.relativeComplement(previousRestRange, previousRenderRange);\r\n const inserted = elements.map(element => ({\r\n id: String(this.itemId++),\r\n element,\r\n templateId: this.virtualDelegate.getTemplateId(element),\r\n size: this.virtualDelegate.getHeight(element),\r\n width: undefined,\r\n hasDynamicHeight: !!this.virtualDelegate.hasDynamicHeight && this.virtualDelegate.hasDynamicHeight(element),\r\n lastDynamicHeightWidth: undefined,\r\n row: null,\r\n uri: undefined,\r\n dropTarget: false,\r\n dragStartDisposable: Disposable.None\r\n }));\r\n let deleted;\r\n // TODO@joao: improve this optimization to catch even more cases\r\n if (start === 0 && deleteCount >= this.items.length) {\r\n this.rangeMap = new RangeMap();\r\n this.rangeMap.splice(0, 0, inserted);\r\n deleted = this.items;\r\n this.items = inserted;\r\n }\r\n else {\r\n this.rangeMap.splice(start, deleteCount, inserted);\r\n deleted = this.items.splice(start, deleteCount, ...inserted);\r\n }\r\n const delta = elements.length - deleteCount;\r\n const renderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n const renderedRestRange = shift(previousRenderedRestRange, delta);\r\n const updateRange = Range.intersect(renderRange, renderedRestRange);\r\n for (let i = updateRange.start; i < updateRange.end; i++) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n const removeRanges = Range.relativeComplement(renderedRestRange, renderRange);\r\n for (const range of removeRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n const unrenderedRestRanges = previousUnrenderedRestRanges.map(r => shift(r, delta));\r\n const elementsRange = { start, end: start + elements.length };\r\n const insertRanges = [elementsRange, ...unrenderedRestRanges].map(r => Range.intersect(renderRange, r));\r\n const beforeElement = this.getNextToLastElement(insertRanges);\r\n for (const range of insertRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n const item = this.items[i];\r\n const rows = rowsToDispose.get(item.templateId);\r\n const row = rows === null || rows === void 0 ? void 0 : rows.pop();\r\n this.insertItemInDOM(i, beforeElement, row);\r\n }\r\n }\r\n for (const rows of rowsToDispose.values()) {\r\n for (const row of rows) {\r\n this.cache.release(row);\r\n }\r\n }\r\n this.eventuallyUpdateScrollDimensions();\r\n if (this.supportDynamicHeights) {\r\n this._rerender(this.scrollTop, this.renderHeight);\r\n }\r\n return deleted.map(i => i.element);\r\n }\r\n eventuallyUpdateScrollDimensions() {\r\n this._scrollHeight = this.contentHeight;\r\n this.rowsContainer.style.height = `${this._scrollHeight}px`;\r\n if (!this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable = scheduleAtNextAnimationFrame(() => {\r\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\r\n this.updateScrollWidth();\r\n this.scrollableElementUpdateDisposable = null;\r\n });\r\n }\r\n }\r\n eventuallyUpdateScrollWidth() {\r\n if (!this.horizontalScrolling) {\r\n this.scrollableElementWidthDelayer.cancel();\r\n return;\r\n }\r\n this.scrollableElementWidthDelayer.trigger(() => this.updateScrollWidth());\r\n }\r\n updateScrollWidth() {\r\n if (!this.horizontalScrolling) {\r\n return;\r\n }\r\n let scrollWidth = 0;\r\n for (const item of this.items) {\r\n if (typeof item.width !== 'undefined') {\r\n scrollWidth = Math.max(scrollWidth, item.width);\r\n }\r\n }\r\n this.scrollWidth = scrollWidth;\r\n this.scrollableElement.setScrollDimensions({ scrollWidth: scrollWidth === 0 ? 0 : (scrollWidth + 10) });\r\n }\r\n rerender() {\r\n if (!this.supportDynamicHeights) {\r\n return;\r\n }\r\n for (const item of this.items) {\r\n item.lastDynamicHeightWidth = undefined;\r\n }\r\n this._rerender(this.lastRenderTop, this.lastRenderHeight);\r\n }\r\n get length() {\r\n return this.items.length;\r\n }\r\n get renderHeight() {\r\n const scrollDimensions = this.scrollableElement.getScrollDimensions();\r\n return scrollDimensions.height;\r\n }\r\n element(index) {\r\n return this.items[index].element;\r\n }\r\n domElement(index) {\r\n const row = this.items[index].row;\r\n return row && row.domNode;\r\n }\r\n elementHeight(index) {\r\n return this.items[index].size;\r\n }\r\n elementTop(index) {\r\n return this.rangeMap.positionAt(index);\r\n }\r\n indexAt(position) {\r\n return this.rangeMap.indexAt(position);\r\n }\r\n indexAfter(position) {\r\n return this.rangeMap.indexAfter(position);\r\n }\r\n layout(height, width) {\r\n let scrollDimensions = {\r\n height: typeof height === 'number' ? height : getContentHeight(this.domNode)\r\n };\r\n if (this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable.dispose();\r\n this.scrollableElementUpdateDisposable = null;\r\n scrollDimensions.scrollHeight = this.scrollHeight;\r\n }\r\n this.scrollableElement.setScrollDimensions(scrollDimensions);\r\n if (typeof width !== 'undefined') {\r\n this.renderWidth = width;\r\n if (this.supportDynamicHeights) {\r\n this._rerender(this.scrollTop, this.renderHeight);\r\n }\r\n }\r\n if (this.horizontalScrolling) {\r\n this.scrollableElement.setScrollDimensions({\r\n width: typeof width === 'number' ? width : getContentWidth(this.domNode)\r\n });\r\n }\r\n }\r\n // Render\r\n render(previousRenderRange, renderTop, renderHeight, renderLeft, scrollWidth, updateItemsInDOM = false) {\r\n const renderRange = this.getRenderRange(renderTop, renderHeight);\r\n const rangesToInsert = Range.relativeComplement(renderRange, previousRenderRange);\r\n const rangesToRemove = Range.relativeComplement(previousRenderRange, renderRange);\r\n const beforeElement = this.getNextToLastElement(rangesToInsert);\r\n if (updateItemsInDOM) {\r\n const rangesToUpdate = Range.intersect(previousRenderRange, renderRange);\r\n for (let i = rangesToUpdate.start; i < rangesToUpdate.end; i++) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n }\r\n for (const range of rangesToInsert) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.insertItemInDOM(i, beforeElement);\r\n }\r\n }\r\n for (const range of rangesToRemove) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n if (renderLeft !== undefined) {\r\n this.rowsContainer.style.left = `-${renderLeft}px`;\r\n }\r\n this.rowsContainer.style.top = `-${renderTop}px`;\r\n if (this.horizontalScrolling && scrollWidth !== undefined) {\r\n this.rowsContainer.style.width = `${Math.max(scrollWidth, this.renderWidth)}px`;\r\n }\r\n this.lastRenderTop = renderTop;\r\n this.lastRenderHeight = renderHeight;\r\n }\r\n // DOM operations\r\n insertItemInDOM(index, beforeElement, row) {\r\n const item = this.items[index];\r\n if (!item.row) {\r\n item.row = row !== null && row !== void 0 ? row : this.cache.alloc(item.templateId);\r\n }\r\n const role = this.accessibilityProvider.getRole(item.element) || 'listitem';\r\n item.row.domNode.setAttribute('role', role);\r\n const checked = this.accessibilityProvider.isChecked(item.element);\r\n if (typeof checked !== 'undefined') {\r\n item.row.domNode.setAttribute('aria-checked', String(!!checked));\r\n }\r\n if (!item.row.domNode.parentElement) {\r\n if (beforeElement) {\r\n this.rowsContainer.insertBefore(item.row.domNode, beforeElement);\r\n }\r\n else {\r\n this.rowsContainer.appendChild(item.row.domNode);\r\n }\r\n }\r\n this.updateItemInDOM(item, index);\r\n const renderer = this.renderers.get(item.templateId);\r\n if (!renderer) {\r\n throw new Error(`No renderer found for template id ${item.templateId}`);\r\n }\r\n if (renderer) {\r\n renderer.renderElement(item.element, index, item.row.templateData, item.size);\r\n }\r\n const uri = this.dnd.getDragURI(item.element);\r\n item.dragStartDisposable.dispose();\r\n item.row.domNode.draggable = !!uri;\r\n if (uri) {\r\n item.dragStartDisposable = addDisposableListener(item.row.domNode, 'dragstart', event => this.onDragStart(item.element, uri, event));\r\n }\r\n if (this.horizontalScrolling) {\r\n this.measureItemWidth(item);\r\n this.eventuallyUpdateScrollWidth();\r\n }\r\n }\r\n measureItemWidth(item) {\r\n if (!item.row || !item.row.domNode) {\r\n return;\r\n }\r\n item.row.domNode.style.width = isFirefox ? '-moz-fit-content' : 'fit-content';\r\n item.width = getContentWidth(item.row.domNode);\r\n const style = window.getComputedStyle(item.row.domNode);\r\n if (style.paddingLeft) {\r\n item.width += parseFloat(style.paddingLeft);\r\n }\r\n if (style.paddingRight) {\r\n item.width += parseFloat(style.paddingRight);\r\n }\r\n item.row.domNode.style.width = '';\r\n }\r\n updateItemInDOM(item, index) {\r\n item.row.domNode.style.top = `${this.elementTop(index)}px`;\r\n if (this.setRowHeight) {\r\n item.row.domNode.style.height = `${item.size}px`;\r\n }\r\n if (this.setRowLineHeight) {\r\n item.row.domNode.style.lineHeight = `${item.size}px`;\r\n }\r\n item.row.domNode.setAttribute('data-index', `${index}`);\r\n item.row.domNode.setAttribute('data-last-element', index === this.length - 1 ? 'true' : 'false');\r\n item.row.domNode.setAttribute('aria-setsize', String(this.accessibilityProvider.getSetSize(item.element, index, this.length)));\r\n item.row.domNode.setAttribute('aria-posinset', String(this.accessibilityProvider.getPosInSet(item.element, index)));\r\n item.row.domNode.setAttribute('id', this.getElementDomId(index));\r\n item.row.domNode.classList.toggle('drop-target', item.dropTarget);\r\n }\r\n removeItemFromDOM(index) {\r\n const item = this.items[index];\r\n item.dragStartDisposable.dispose();\r\n if (item.row) {\r\n const renderer = this.renderers.get(item.templateId);\r\n if (renderer && renderer.disposeElement) {\r\n renderer.disposeElement(item.element, index, item.row.templateData, item.size);\r\n }\r\n this.cache.release(item.row);\r\n item.row = null;\r\n }\r\n if (this.horizontalScrolling) {\r\n this.eventuallyUpdateScrollWidth();\r\n }\r\n }\r\n getScrollTop() {\r\n const scrollPosition = this.scrollableElement.getScrollPosition();\r\n return scrollPosition.scrollTop;\r\n }\r\n setScrollTop(scrollTop, reuseAnimation) {\r\n if (this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable.dispose();\r\n this.scrollableElementUpdateDisposable = null;\r\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\r\n }\r\n this.scrollableElement.setScrollPosition({ scrollTop, reuseAnimation });\r\n }\r\n get scrollTop() {\r\n return this.getScrollTop();\r\n }\r\n set scrollTop(scrollTop) {\r\n this.setScrollTop(scrollTop);\r\n }\r\n get scrollHeight() {\r\n return this._scrollHeight + (this.horizontalScrolling ? 10 : 0) + this.additionalScrollHeight;\r\n }\r\n // Events\r\n get onMouseClick() { return Event.map(this.disposables.add(new DomEmitter(this.domNode, 'click')).event, e => this.toMouseEvent(e)); }\r\n get onMouseDblClick() { return Event.map(this.disposables.add(new DomEmitter(this.domNode, 'dblclick')).event, e => this.toMouseEvent(e)); }\r\n get onMouseMiddleClick() { return Event.filter(Event.map(this.disposables.add(new DomEmitter(this.domNode, 'auxclick')).event, e => this.toMouseEvent(e)), e => e.browserEvent.button === 1); }\r\n get onMouseDown() { return Event.map(this.disposables.add(new DomEmitter(this.domNode, 'mousedown')).event, e => this.toMouseEvent(e)); }\r\n get onContextMenu() { return Event.any(Event.map(this.disposables.add(new DomEmitter(this.domNode, 'contextmenu')).event, e => this.toMouseEvent(e)), Event.map(this.disposables.add(new DomEmitter(this.domNode, TouchEventType.Contextmenu)).event, e => this.toGestureEvent(e))); }\r\n get onTouchStart() { return Event.map(this.disposables.add(new DomEmitter(this.domNode, 'touchstart')).event, e => this.toTouchEvent(e)); }\r\n get onTap() { return Event.map(this.disposables.add(new DomEmitter(this.rowsContainer, TouchEventType.Tap)).event, e => this.toGestureEvent(e)); }\r\n toMouseEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toTouchEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toGestureEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.initialTarget || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toDragEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n onScroll(e) {\r\n try {\r\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n this.render(previousRenderRange, e.scrollTop, e.height, e.scrollLeft, e.scrollWidth);\r\n if (this.supportDynamicHeights) {\r\n this._rerender(e.scrollTop, e.height, e.inSmoothScrolling);\r\n }\r\n }\r\n catch (err) {\r\n console.error('Got bad scroll event:', e);\r\n throw err;\r\n }\r\n }\r\n onTouchChange(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.scrollTop -= event.translationY;\r\n }\r\n // DND\r\n onDragStart(element, uri, event) {\r\n if (!event.dataTransfer) {\r\n return;\r\n }\r\n const elements = this.dnd.getDragElements(element);\r\n event.dataTransfer.effectAllowed = 'copyMove';\r\n event.dataTransfer.setData(DataTransfers.TEXT, uri);\r\n if (event.dataTransfer.setDragImage) {\r\n let label;\r\n if (this.dnd.getDragLabel) {\r\n label = this.dnd.getDragLabel(elements, event);\r\n }\r\n if (typeof label === 'undefined') {\r\n label = String(elements.length);\r\n }\r\n const dragImage = $('.monaco-drag-image');\r\n dragImage.textContent = label;\r\n document.body.appendChild(dragImage);\r\n event.dataTransfer.setDragImage(dragImage, -10, -10);\r\n setTimeout(() => document.body.removeChild(dragImage), 0);\r\n }\r\n this.currentDragData = new ElementsDragAndDropData(elements);\r\n StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements);\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(this.currentDragData, event);\r\n }\r\n }\r\n onDragOver(event) {\r\n event.browserEvent.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n this.onDragLeaveTimeout.dispose();\r\n if (StaticDND.CurrentDragAndDropData && StaticDND.CurrentDragAndDropData.getData() === 'vscode-ui') {\r\n return false;\r\n }\r\n this.setupDragAndDropScrollTopAnimation(event.browserEvent);\r\n if (!event.browserEvent.dataTransfer) {\r\n return false;\r\n }\r\n // Drag over from outside\r\n if (!this.currentDragData) {\r\n if (StaticDND.CurrentDragAndDropData) {\r\n // Drag over from another list\r\n this.currentDragData = StaticDND.CurrentDragAndDropData;\r\n }\r\n else {\r\n // Drag over from the desktop\r\n if (!event.browserEvent.dataTransfer.types) {\r\n return false;\r\n }\r\n this.currentDragData = new NativeDragAndDropData();\r\n }\r\n }\r\n const result = this.dnd.onDragOver(this.currentDragData, event.element, event.index, event.browserEvent);\r\n this.canDrop = typeof result === 'boolean' ? result : result.accept;\r\n if (!this.canDrop) {\r\n this.currentDragFeedback = undefined;\r\n this.currentDragFeedbackDisposable.dispose();\r\n return false;\r\n }\r\n event.browserEvent.dataTransfer.dropEffect = (typeof result !== 'boolean' && result.effect === 0 /* Copy */) ? 'copy' : 'move';\r\n let feedback;\r\n if (typeof result !== 'boolean' && result.feedback) {\r\n feedback = result.feedback;\r\n }\r\n else {\r\n if (typeof event.index === 'undefined') {\r\n feedback = [-1];\r\n }\r\n else {\r\n feedback = [event.index];\r\n }\r\n }\r\n // sanitize feedback list\r\n feedback = distinct(feedback).filter(i => i >= -1 && i < this.length).sort((a, b) => a - b);\r\n feedback = feedback[0] === -1 ? [-1] : feedback;\r\n if (equalsDragFeedback(this.currentDragFeedback, feedback)) {\r\n return true;\r\n }\r\n this.currentDragFeedback = feedback;\r\n this.currentDragFeedbackDisposable.dispose();\r\n if (feedback[0] === -1) { // entire list feedback\r\n this.domNode.classList.add('drop-target');\r\n this.rowsContainer.classList.add('drop-target');\r\n this.currentDragFeedbackDisposable = toDisposable(() => {\r\n this.domNode.classList.remove('drop-target');\r\n this.rowsContainer.classList.remove('drop-target');\r\n });\r\n }\r\n else {\r\n for (const index of feedback) {\r\n const item = this.items[index];\r\n item.dropTarget = true;\r\n if (item.row) {\r\n item.row.domNode.classList.add('drop-target');\r\n }\r\n }\r\n this.currentDragFeedbackDisposable = toDisposable(() => {\r\n for (const index of feedback) {\r\n const item = this.items[index];\r\n item.dropTarget = false;\r\n if (item.row) {\r\n item.row.domNode.classList.remove('drop-target');\r\n }\r\n }\r\n });\r\n }\r\n return true;\r\n }\r\n onDragLeave(event) {\r\n var _a, _b;\r\n this.onDragLeaveTimeout.dispose();\r\n this.onDragLeaveTimeout = disposableTimeout(() => this.clearDragOverFeedback(), 100);\r\n if (this.currentDragData) {\r\n (_b = (_a = this.dnd).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, this.currentDragData, event.element, event.index, event.browserEvent);\r\n }\r\n }\r\n onDrop(event) {\r\n if (!this.canDrop) {\r\n return;\r\n }\r\n const dragData = this.currentDragData;\r\n this.teardownDragAndDropScrollTopAnimation();\r\n this.clearDragOverFeedback();\r\n this.currentDragData = undefined;\r\n StaticDND.CurrentDragAndDropData = undefined;\r\n if (!dragData || !event.browserEvent.dataTransfer) {\r\n return;\r\n }\r\n event.browserEvent.preventDefault();\r\n dragData.update(event.browserEvent.dataTransfer);\r\n this.dnd.drop(dragData, event.element, event.index, event.browserEvent);\r\n }\r\n onDragEnd(event) {\r\n this.canDrop = false;\r\n this.teardownDragAndDropScrollTopAnimation();\r\n this.clearDragOverFeedback();\r\n this.currentDragData = undefined;\r\n StaticDND.CurrentDragAndDropData = undefined;\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(event);\r\n }\r\n }\r\n clearDragOverFeedback() {\r\n this.currentDragFeedback = undefined;\r\n this.currentDragFeedbackDisposable.dispose();\r\n this.currentDragFeedbackDisposable = Disposable.None;\r\n }\r\n // DND scroll top animation\r\n setupDragAndDropScrollTopAnimation(event) {\r\n if (!this.dragOverAnimationDisposable) {\r\n const viewTop = getTopLeftOffset(this.domNode).top;\r\n this.dragOverAnimationDisposable = animate(this.animateDragAndDropScrollTop.bind(this, viewTop));\r\n }\r\n this.dragOverAnimationStopDisposable.dispose();\r\n this.dragOverAnimationStopDisposable = disposableTimeout(() => {\r\n if (this.dragOverAnimationDisposable) {\r\n this.dragOverAnimationDisposable.dispose();\r\n this.dragOverAnimationDisposable = undefined;\r\n }\r\n }, 1000);\r\n this.dragOverMouseY = event.pageY;\r\n }\r\n animateDragAndDropScrollTop(viewTop) {\r\n if (this.dragOverMouseY === undefined) {\r\n return;\r\n }\r\n const diff = this.dragOverMouseY - viewTop;\r\n const upperLimit = this.renderHeight - 35;\r\n if (diff < 35) {\r\n this.scrollTop += Math.max(-14, Math.floor(0.3 * (diff - 35)));\r\n }\r\n else if (diff > upperLimit) {\r\n this.scrollTop += Math.min(14, Math.floor(0.3 * (diff - upperLimit)));\r\n }\r\n }\r\n teardownDragAndDropScrollTopAnimation() {\r\n this.dragOverAnimationStopDisposable.dispose();\r\n if (this.dragOverAnimationDisposable) {\r\n this.dragOverAnimationDisposable.dispose();\r\n this.dragOverAnimationDisposable = undefined;\r\n }\r\n }\r\n // Util\r\n getItemIndexFromEventTarget(target) {\r\n const scrollableElement = this.scrollableElement.getDomNode();\r\n let element = target;\r\n while (element instanceof HTMLElement && element !== this.rowsContainer && scrollableElement.contains(element)) {\r\n const rawIndex = element.getAttribute('data-index');\r\n if (rawIndex) {\r\n const index = Number(rawIndex);\r\n if (!isNaN(index)) {\r\n return index;\r\n }\r\n }\r\n element = element.parentElement;\r\n }\r\n return undefined;\r\n }\r\n getRenderRange(renderTop, renderHeight) {\r\n return {\r\n start: this.rangeMap.indexAt(renderTop),\r\n end: this.rangeMap.indexAfter(renderTop + renderHeight - 1)\r\n };\r\n }\r\n /**\r\n * Given a stable rendered state, checks every rendered element whether it needs\r\n * to be probed for dynamic height. Adjusts scroll height and top if necessary.\r\n */\r\n _rerender(renderTop, renderHeight, inSmoothScrolling) {\r\n const previousRenderRange = this.getRenderRange(renderTop, renderHeight);\r\n // Let's remember the second element's position, this helps in scrolling up\r\n // and preserving a linear upwards scroll movement\r\n let anchorElementIndex;\r\n let anchorElementTopDelta;\r\n if (renderTop === this.elementTop(previousRenderRange.start)) {\r\n anchorElementIndex = previousRenderRange.start;\r\n anchorElementTopDelta = 0;\r\n }\r\n else if (previousRenderRange.end - previousRenderRange.start > 1) {\r\n anchorElementIndex = previousRenderRange.start + 1;\r\n anchorElementTopDelta = this.elementTop(anchorElementIndex) - renderTop;\r\n }\r\n let heightDiff = 0;\r\n while (true) {\r\n const renderRange = this.getRenderRange(renderTop, renderHeight);\r\n let didChange = false;\r\n for (let i = renderRange.start; i < renderRange.end; i++) {\r\n const diff = this.probeDynamicHeight(i);\r\n if (diff !== 0) {\r\n this.rangeMap.splice(i, 1, [this.items[i]]);\r\n }\r\n heightDiff += diff;\r\n didChange = didChange || diff !== 0;\r\n }\r\n if (!didChange) {\r\n if (heightDiff !== 0) {\r\n this.eventuallyUpdateScrollDimensions();\r\n }\r\n const unrenderRanges = Range.relativeComplement(previousRenderRange, renderRange);\r\n for (const range of unrenderRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n if (this.items[i].row) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n }\r\n const renderRanges = Range.relativeComplement(renderRange, previousRenderRange);\r\n for (const range of renderRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n const afterIndex = i + 1;\r\n const beforeRow = afterIndex < this.items.length ? this.items[afterIndex].row : null;\r\n const beforeElement = beforeRow ? beforeRow.domNode : null;\r\n this.insertItemInDOM(i, beforeElement);\r\n }\r\n }\r\n for (let i = renderRange.start; i < renderRange.end; i++) {\r\n if (this.items[i].row) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n }\r\n if (typeof anchorElementIndex === 'number') {\r\n // To compute a destination scroll top, we need to take into account the current smooth scrolling\r\n // animation, and then reuse it with a new target (to avoid prolonging the scroll)\r\n // See https://github.com/microsoft/vscode/issues/104144\r\n // See https://github.com/microsoft/vscode/pull/104284\r\n // See https://github.com/microsoft/vscode/issues/107704\r\n const deltaScrollTop = this.scrollable.getFutureScrollPosition().scrollTop - renderTop;\r\n const newScrollTop = this.elementTop(anchorElementIndex) - anchorElementTopDelta + deltaScrollTop;\r\n this.setScrollTop(newScrollTop, inSmoothScrolling);\r\n }\r\n this._onDidChangeContentHeight.fire(this.contentHeight);\r\n return;\r\n }\r\n }\r\n }\r\n probeDynamicHeight(index) {\r\n const item = this.items[index];\r\n if (!item.hasDynamicHeight || item.lastDynamicHeightWidth === this.renderWidth) {\r\n return 0;\r\n }\r\n if (!!this.virtualDelegate.hasDynamicHeight && !this.virtualDelegate.hasDynamicHeight(item.element)) {\r\n return 0;\r\n }\r\n const size = item.size;\r\n if (!this.setRowHeight && item.row) {\r\n let newSize = item.row.domNode.offsetHeight;\r\n item.size = newSize;\r\n item.lastDynamicHeightWidth = this.renderWidth;\r\n return newSize - size;\r\n }\r\n const row = this.cache.alloc(item.templateId);\r\n row.domNode.style.height = '';\r\n this.rowsContainer.appendChild(row.domNode);\r\n const renderer = this.renderers.get(item.templateId);\r\n if (renderer) {\r\n renderer.renderElement(item.element, index, row.templateData, undefined);\r\n if (renderer.disposeElement) {\r\n renderer.disposeElement(item.element, index, row.templateData, undefined);\r\n }\r\n }\r\n item.size = row.domNode.offsetHeight;\r\n if (this.virtualDelegate.setDynamicHeight) {\r\n this.virtualDelegate.setDynamicHeight(item.element, item.size);\r\n }\r\n item.lastDynamicHeightWidth = this.renderWidth;\r\n this.rowsContainer.removeChild(row.domNode);\r\n this.cache.release(row);\r\n return item.size - size;\r\n }\r\n getNextToLastElement(ranges) {\r\n const lastRange = ranges[ranges.length - 1];\r\n if (!lastRange) {\r\n return null;\r\n }\r\n const nextToLastItem = this.items[lastRange.end];\r\n if (!nextToLastItem) {\r\n return null;\r\n }\r\n if (!nextToLastItem.row) {\r\n return null;\r\n }\r\n return nextToLastItem.row.domNode;\r\n }\r\n getElementDomId(index) {\r\n return `${this.domId}_${index}`;\r\n }\r\n // Dispose\r\n dispose() {\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (item.row) {\r\n const renderer = this.renderers.get(item.row.templateId);\r\n if (renderer) {\r\n if (renderer.disposeElement) {\r\n renderer.disposeElement(item.element, -1, item.row.templateData, undefined);\r\n }\r\n renderer.disposeTemplate(item.row.templateData);\r\n }\r\n }\r\n }\r\n this.items = [];\r\n }\r\n if (this.domNode && this.domNode.parentNode) {\r\n this.domNode.parentNode.removeChild(this.domNode);\r\n }\r\n dispose(this.disposables);\r\n }\r\n}\r\nListView.InstanceCount = 0;\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseDblClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseMiddleClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseDown\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onContextMenu\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onTouchStart\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onTap\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ListError extends Error {\r\n constructor(user, message) {\r\n super(`ListError [${user}] ${message}`);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class CombinedSpliceable {\r\n constructor(spliceables) {\r\n this.spliceables = spliceables;\r\n }\r\n splice(start, deleteCount, elements) {\r\n this.spliceables.forEach(s => s.splice(start, deleteCount, elements));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './list.css';\r\nimport { dispose, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { isNumber } from '../../../common/types.js';\r\nimport { range, binarySearch, firstOrDefault } from '../../../common/arrays.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { Gesture } from '../../touch.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Event, Emitter, EventBufferer } from '../../../common/event.js';\r\nimport { DomEmitter, stopEvent } from '../../event.js';\r\nimport { ListError } from './list.js';\r\nimport { ListView } from './listView.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { CombinedSpliceable } from './splice.js';\r\nimport { clamp } from '../../../common/numbers.js';\r\nimport { matchesPrefix } from '../../../common/filters.js';\r\nimport { alert } from '../aria/aria.js';\r\nimport { createStyleSheet } from '../../dom.js';\r\nimport { timeout } from '../../../common/async.js';\r\nclass TraitRenderer {\r\n constructor(trait) {\r\n this.trait = trait;\r\n this.renderedElements = [];\r\n }\r\n get templateId() {\r\n return `template:${this.trait.trait}`;\r\n }\r\n renderTemplate(container) {\r\n return container;\r\n }\r\n renderElement(element, index, templateData) {\r\n const renderedElementIndex = this.renderedElements.findIndex(el => el.templateData === templateData);\r\n if (renderedElementIndex >= 0) {\r\n const rendered = this.renderedElements[renderedElementIndex];\r\n this.trait.unrender(templateData);\r\n rendered.index = index;\r\n }\r\n else {\r\n const rendered = { index, templateData };\r\n this.renderedElements.push(rendered);\r\n }\r\n this.trait.renderIndex(index, templateData);\r\n }\r\n splice(start, deleteCount, insertCount) {\r\n const rendered = [];\r\n for (const renderedElement of this.renderedElements) {\r\n if (renderedElement.index < start) {\r\n rendered.push(renderedElement);\r\n }\r\n else if (renderedElement.index >= start + deleteCount) {\r\n rendered.push({\r\n index: renderedElement.index + insertCount - deleteCount,\r\n templateData: renderedElement.templateData\r\n });\r\n }\r\n }\r\n this.renderedElements = rendered;\r\n }\r\n renderIndexes(indexes) {\r\n for (const { index, templateData } of this.renderedElements) {\r\n if (indexes.indexOf(index) > -1) {\r\n this.trait.renderIndex(index, templateData);\r\n }\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n const index = this.renderedElements.findIndex(el => el.templateData === templateData);\r\n if (index < 0) {\r\n return;\r\n }\r\n this.renderedElements.splice(index, 1);\r\n }\r\n}\r\nclass Trait {\r\n constructor(_trait) {\r\n this._trait = _trait;\r\n this.length = 0;\r\n this.indexes = [];\r\n this.sortedIndexes = [];\r\n this._onChange = new Emitter();\r\n this.onChange = this._onChange.event;\r\n }\r\n get trait() { return this._trait; }\r\n get renderer() {\r\n return new TraitRenderer(this);\r\n }\r\n splice(start, deleteCount, elements) {\r\n var _a;\r\n deleteCount = Math.max(0, Math.min(deleteCount, this.length - start));\r\n const diff = elements.length - deleteCount;\r\n const end = start + deleteCount;\r\n const sortedIndexes = [\r\n ...this.sortedIndexes.filter(i => i < start),\r\n ...elements.map((hasTrait, i) => hasTrait ? i + start : -1).filter(i => i !== -1),\r\n ...this.sortedIndexes.filter(i => i >= end).map(i => i + diff)\r\n ];\r\n const length = this.length + diff;\r\n if (this.sortedIndexes.length > 0 && sortedIndexes.length === 0 && length > 0) {\r\n const first = (_a = this.sortedIndexes.find(index => index >= start)) !== null && _a !== void 0 ? _a : length - 1;\r\n sortedIndexes.push(Math.min(first, length - 1));\r\n }\r\n this.renderer.splice(start, deleteCount, elements.length);\r\n this._set(sortedIndexes, sortedIndexes);\r\n this.length = length;\r\n }\r\n renderIndex(index, container) {\r\n container.classList.toggle(this._trait, this.contains(index));\r\n }\r\n unrender(container) {\r\n container.classList.remove(this._trait);\r\n }\r\n /**\r\n * Sets the indexes which should have this trait.\r\n *\r\n * @param indexes Indexes which should have this trait.\r\n * @return The old indexes which had this trait.\r\n */\r\n set(indexes, browserEvent) {\r\n return this._set(indexes, [...indexes].sort(numericSort), browserEvent);\r\n }\r\n _set(indexes, sortedIndexes, browserEvent) {\r\n const result = this.indexes;\r\n const sortedResult = this.sortedIndexes;\r\n this.indexes = indexes;\r\n this.sortedIndexes = sortedIndexes;\r\n const toRender = disjunction(sortedResult, indexes);\r\n this.renderer.renderIndexes(toRender);\r\n this._onChange.fire({ indexes, browserEvent });\r\n return result;\r\n }\r\n get() {\r\n return this.indexes;\r\n }\r\n contains(index) {\r\n return binarySearch(this.sortedIndexes, index, numericSort) >= 0;\r\n }\r\n dispose() {\r\n dispose(this._onChange);\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], Trait.prototype, \"renderer\", null);\r\nclass SelectionTrait extends Trait {\r\n constructor(setAriaSelected) {\r\n super('selected');\r\n this.setAriaSelected = setAriaSelected;\r\n }\r\n renderIndex(index, container) {\r\n super.renderIndex(index, container);\r\n if (this.setAriaSelected) {\r\n if (this.contains(index)) {\r\n container.setAttribute('aria-selected', 'true');\r\n }\r\n else {\r\n container.setAttribute('aria-selected', 'false');\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The TraitSpliceable is used as a util class to be able\r\n * to preserve traits across splice calls, given an identity\r\n * provider.\r\n */\r\nclass TraitSpliceable {\r\n constructor(trait, view, identityProvider) {\r\n this.trait = trait;\r\n this.view = view;\r\n this.identityProvider = identityProvider;\r\n }\r\n splice(start, deleteCount, elements) {\r\n if (!this.identityProvider) {\r\n return this.trait.splice(start, deleteCount, elements.map(() => false));\r\n }\r\n const pastElementsWithTrait = this.trait.get().map(i => this.identityProvider.getId(this.view.element(i)).toString());\r\n const elementsWithTrait = elements.map(e => pastElementsWithTrait.indexOf(this.identityProvider.getId(e).toString()) > -1);\r\n this.trait.splice(start, deleteCount, elementsWithTrait);\r\n }\r\n}\r\nexport function isInputElement(e) {\r\n return e.tagName === 'INPUT' || e.tagName === 'TEXTAREA';\r\n}\r\nexport function isMonacoEditor(e) {\r\n if (e.classList.contains('monaco-editor')) {\r\n return true;\r\n }\r\n if (e.classList.contains('monaco-list')) {\r\n return false;\r\n }\r\n if (!e.parentElement) {\r\n return false;\r\n }\r\n return isMonacoEditor(e.parentElement);\r\n}\r\nclass KeyboardController {\r\n constructor(list, view, options) {\r\n this.list = list;\r\n this.view = view;\r\n this.disposables = new DisposableStore();\r\n this.multipleSelectionDisposables = new DisposableStore();\r\n this.onKeyDown.filter(e => e.keyCode === 3 /* Enter */).on(this.onEnter, this, this.disposables);\r\n this.onKeyDown.filter(e => e.keyCode === 16 /* UpArrow */).on(this.onUpArrow, this, this.disposables);\r\n this.onKeyDown.filter(e => e.keyCode === 18 /* DownArrow */).on(this.onDownArrow, this, this.disposables);\r\n this.onKeyDown.filter(e => e.keyCode === 11 /* PageUp */).on(this.onPageUpArrow, this, this.disposables);\r\n this.onKeyDown.filter(e => e.keyCode === 12 /* PageDown */).on(this.onPageDownArrow, this, this.disposables);\r\n this.onKeyDown.filter(e => e.keyCode === 9 /* Escape */).on(this.onEscape, this, this.disposables);\r\n if (options.multipleSelectionSupport !== false) {\r\n this.onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === 31 /* KEY_A */).on(this.onCtrlA, this, this.multipleSelectionDisposables);\r\n }\r\n }\r\n get onKeyDown() {\r\n return Event.chain(this.disposables.add(new DomEmitter(this.view.domNode, 'keydown')).event)\r\n .filter(e => !isInputElement(e.target))\r\n .map(e => new StandardKeyboardEvent(e));\r\n }\r\n updateOptions(optionsUpdate) {\r\n if (optionsUpdate.multipleSelectionSupport !== undefined) {\r\n this.multipleSelectionDisposables.clear();\r\n if (optionsUpdate.multipleSelectionSupport) {\r\n this.onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === 31 /* KEY_A */).on(this.onCtrlA, this, this.multipleSelectionDisposables);\r\n }\r\n }\r\n }\r\n onEnter(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection(this.list.getFocus(), e.browserEvent);\r\n }\r\n onUpArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusPrevious(1, false, e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onDownArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusNext(1, false, e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onPageUpArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusPreviousPage(e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onPageDownArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusNextPage(e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onCtrlA(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection(range(this.list.length), e.browserEvent);\r\n this.view.domNode.focus();\r\n }\r\n onEscape(e) {\r\n if (this.list.getSelection().length) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection([], e.browserEvent);\r\n this.view.domNode.focus();\r\n }\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n this.multipleSelectionDisposables.dispose();\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], KeyboardController.prototype, \"onKeyDown\", null);\r\nvar TypeLabelControllerState;\r\n(function (TypeLabelControllerState) {\r\n TypeLabelControllerState[TypeLabelControllerState[\"Idle\"] = 0] = \"Idle\";\r\n TypeLabelControllerState[TypeLabelControllerState[\"Typing\"] = 1] = \"Typing\";\r\n})(TypeLabelControllerState || (TypeLabelControllerState = {}));\r\nexport const DefaultKeyboardNavigationDelegate = new class {\r\n mightProducePrintableCharacter(event) {\r\n if (event.ctrlKey || event.metaKey || event.altKey) {\r\n return false;\r\n }\r\n return (event.keyCode >= 31 /* KEY_A */ && event.keyCode <= 56 /* KEY_Z */)\r\n || (event.keyCode >= 21 /* KEY_0 */ && event.keyCode <= 30 /* KEY_9 */)\r\n || (event.keyCode >= 93 /* NUMPAD_0 */ && event.keyCode <= 102 /* NUMPAD_9 */)\r\n || (event.keyCode >= 80 /* US_SEMICOLON */ && event.keyCode <= 90 /* US_QUOTE */);\r\n }\r\n};\r\nclass TypeLabelController {\r\n constructor(list, view, keyboardNavigationLabelProvider, delegate) {\r\n this.list = list;\r\n this.view = view;\r\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\r\n this.delegate = delegate;\r\n this.enabled = false;\r\n this.state = TypeLabelControllerState.Idle;\r\n this.automaticKeyboardNavigation = true;\r\n this.triggered = false;\r\n this.previouslyFocused = -1;\r\n this.enabledDisposables = new DisposableStore();\r\n this.disposables = new DisposableStore();\r\n this.updateOptions(list.options);\r\n }\r\n updateOptions(options) {\r\n const enableKeyboardNavigation = typeof options.enableKeyboardNavigation === 'undefined' ? true : !!options.enableKeyboardNavigation;\r\n if (enableKeyboardNavigation) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n if (typeof options.automaticKeyboardNavigation !== 'undefined') {\r\n this.automaticKeyboardNavigation = options.automaticKeyboardNavigation;\r\n }\r\n }\r\n enable() {\r\n if (this.enabled) {\r\n return;\r\n }\r\n const onChar = Event.chain(this.enabledDisposables.add(new DomEmitter(this.view.domNode, 'keydown')).event)\r\n .filter(e => !isInputElement(e.target))\r\n .filter(() => this.automaticKeyboardNavigation || this.triggered)\r\n .map(event => new StandardKeyboardEvent(event))\r\n .filter(e => this.delegate.mightProducePrintableCharacter(e))\r\n .forEach(e => { e.stopPropagation(); e.preventDefault(); })\r\n .map(event => event.browserEvent.key)\r\n .event;\r\n const onClear = Event.debounce(onChar, () => null, 800);\r\n const onInput = Event.reduce(Event.any(onChar, onClear), (r, i) => i === null ? null : ((r || '') + i));\r\n onInput(this.onInput, this, this.enabledDisposables);\r\n onClear(this.onClear, this, this.enabledDisposables);\r\n this.enabled = true;\r\n this.triggered = false;\r\n }\r\n disable() {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n this.enabledDisposables.clear();\r\n this.enabled = false;\r\n this.triggered = false;\r\n }\r\n onClear() {\r\n var _a;\r\n const focus = this.list.getFocus();\r\n if (focus.length > 0 && focus[0] === this.previouslyFocused) {\r\n // List: re-anounce element on typing end since typed keys will interupt aria label of focused element\r\n // Do not announce if there was a focus change at the end to prevent duplication https://github.com/microsoft/vscode/issues/95961\r\n const ariaLabel = (_a = this.list.options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getAriaLabel(this.list.element(focus[0]));\r\n if (ariaLabel) {\r\n alert(ariaLabel);\r\n }\r\n }\r\n this.previouslyFocused = -1;\r\n }\r\n onInput(word) {\r\n if (!word) {\r\n this.state = TypeLabelControllerState.Idle;\r\n this.triggered = false;\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n const start = focus.length > 0 ? focus[0] : 0;\r\n const delta = this.state === TypeLabelControllerState.Idle ? 1 : 0;\r\n this.state = TypeLabelControllerState.Typing;\r\n for (let i = 0; i < this.list.length; i++) {\r\n const index = (start + i + delta) % this.list.length;\r\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(index));\r\n const labelStr = label && label.toString();\r\n if (typeof labelStr === 'undefined' || matchesPrefix(word, labelStr)) {\r\n this.previouslyFocused = start;\r\n this.list.setFocus([index]);\r\n this.list.reveal(index);\r\n return;\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.disable();\r\n this.enabledDisposables.dispose();\r\n this.disposables.dispose();\r\n }\r\n}\r\nclass DOMFocusController {\r\n constructor(list, view) {\r\n this.list = list;\r\n this.view = view;\r\n this.disposables = new DisposableStore();\r\n const onKeyDown = Event.chain(this.disposables.add(new DomEmitter(view.domNode, 'keydown')).event)\r\n .filter(e => !isInputElement(e.target))\r\n .map(e => new StandardKeyboardEvent(e));\r\n onKeyDown.filter(e => e.keyCode === 2 /* Tab */ && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey)\r\n .on(this.onTab, this, this.disposables);\r\n }\r\n onTab(e) {\r\n if (e.target !== this.view.domNode) {\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n if (focus.length === 0) {\r\n return;\r\n }\r\n const focusedDomElement = this.view.domElement(focus[0]);\r\n if (!focusedDomElement) {\r\n return;\r\n }\r\n const tabIndexElement = focusedDomElement.querySelector('[tabIndex]');\r\n if (!tabIndexElement || !(tabIndexElement instanceof HTMLElement) || tabIndexElement.tabIndex === -1) {\r\n return;\r\n }\r\n const style = window.getComputedStyle(tabIndexElement);\r\n if (style.visibility === 'hidden' || style.display === 'none') {\r\n return;\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n tabIndexElement.focus();\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nexport function isSelectionSingleChangeEvent(event) {\r\n return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;\r\n}\r\nexport function isSelectionRangeChangeEvent(event) {\r\n return event.browserEvent.shiftKey;\r\n}\r\nfunction isMouseRightClick(event) {\r\n return event instanceof MouseEvent && event.button === 2;\r\n}\r\nconst DefaultMultipleSelectionController = {\r\n isSelectionSingleChangeEvent,\r\n isSelectionRangeChangeEvent\r\n};\r\nexport class MouseController {\r\n constructor(list) {\r\n this.list = list;\r\n this.disposables = new DisposableStore();\r\n this._onPointer = new Emitter();\r\n this.onPointer = this._onPointer.event;\r\n if (list.options.multipleSelectionSupport !== false) {\r\n this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController;\r\n }\r\n this.mouseSupport = typeof list.options.mouseSupport === 'undefined' || !!list.options.mouseSupport;\r\n if (this.mouseSupport) {\r\n list.onMouseDown(this.onMouseDown, this, this.disposables);\r\n list.onContextMenu(this.onContextMenu, this, this.disposables);\r\n list.onMouseDblClick(this.onDoubleClick, this, this.disposables);\r\n list.onTouchStart(this.onMouseDown, this, this.disposables);\r\n this.disposables.add(Gesture.addTarget(list.getHTMLElement()));\r\n }\r\n Event.any(list.onMouseClick, list.onMouseMiddleClick, list.onTap)(this.onViewPointer, this, this.disposables);\r\n }\r\n updateOptions(optionsUpdate) {\r\n if (optionsUpdate.multipleSelectionSupport !== undefined) {\r\n this.multipleSelectionController = undefined;\r\n if (optionsUpdate.multipleSelectionSupport) {\r\n this.multipleSelectionController = this.list.options.multipleSelectionController || DefaultMultipleSelectionController;\r\n }\r\n }\r\n }\r\n isSelectionSingleChangeEvent(event) {\r\n if (!this.multipleSelectionController) {\r\n return false;\r\n }\r\n return this.multipleSelectionController.isSelectionSingleChangeEvent(event);\r\n }\r\n isSelectionRangeChangeEvent(event) {\r\n if (!this.multipleSelectionController) {\r\n return false;\r\n }\r\n return this.multipleSelectionController.isSelectionRangeChangeEvent(event);\r\n }\r\n isSelectionChangeEvent(event) {\r\n return this.isSelectionSingleChangeEvent(event) || this.isSelectionRangeChangeEvent(event);\r\n }\r\n onMouseDown(e) {\r\n if (isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n if (document.activeElement !== e.browserEvent.target) {\r\n this.list.domFocus();\r\n }\r\n }\r\n onContextMenu(e) {\r\n if (isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n const focus = typeof e.index === 'undefined' ? [] : [e.index];\r\n this.list.setFocus(focus, e.browserEvent);\r\n }\r\n onViewPointer(e) {\r\n if (!this.mouseSupport) {\r\n return;\r\n }\r\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n const focus = e.index;\r\n if (typeof focus === 'undefined') {\r\n this.list.setFocus([], e.browserEvent);\r\n this.list.setSelection([], e.browserEvent);\r\n this.list.setAnchor(undefined);\r\n return;\r\n }\r\n if (this.isSelectionRangeChangeEvent(e)) {\r\n return this.changeSelection(e);\r\n }\r\n if (this.isSelectionChangeEvent(e)) {\r\n return this.changeSelection(e);\r\n }\r\n this.list.setFocus([focus], e.browserEvent);\r\n this.list.setAnchor(focus);\r\n if (!isMouseRightClick(e.browserEvent)) {\r\n this.list.setSelection([focus], e.browserEvent);\r\n }\r\n this._onPointer.fire(e);\r\n }\r\n onDoubleClick(e) {\r\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n if (this.isSelectionChangeEvent(e)) {\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n this.list.setSelection(focus, e.browserEvent);\r\n }\r\n changeSelection(e) {\r\n const focus = e.index;\r\n let anchor = this.list.getAnchor();\r\n if (this.isSelectionRangeChangeEvent(e)) {\r\n if (typeof anchor === 'undefined') {\r\n const currentFocus = this.list.getFocus()[0];\r\n anchor = currentFocus !== null && currentFocus !== void 0 ? currentFocus : focus;\r\n this.list.setAnchor(anchor);\r\n }\r\n const min = Math.min(anchor, focus);\r\n const max = Math.max(anchor, focus);\r\n const rangeSelection = range(min, max + 1);\r\n const selection = this.list.getSelection();\r\n const contiguousRange = getContiguousRangeContaining(disjunction(selection, [anchor]), anchor);\r\n if (contiguousRange.length === 0) {\r\n return;\r\n }\r\n const newSelection = disjunction(rangeSelection, relativeComplement(selection, contiguousRange));\r\n this.list.setSelection(newSelection, e.browserEvent);\r\n this.list.setFocus([focus], e.browserEvent);\r\n }\r\n else if (this.isSelectionSingleChangeEvent(e)) {\r\n const selection = this.list.getSelection();\r\n const newSelection = selection.filter(i => i !== focus);\r\n this.list.setFocus([focus]);\r\n this.list.setAnchor(focus);\r\n if (selection.length === newSelection.length) {\r\n this.list.setSelection([...newSelection, focus], e.browserEvent);\r\n }\r\n else {\r\n this.list.setSelection(newSelection, e.browserEvent);\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nexport class DefaultStyleController {\r\n constructor(styleElement, selectorSuffix) {\r\n this.styleElement = styleElement;\r\n this.selectorSuffix = selectorSuffix;\r\n }\r\n style(styles) {\r\n const suffix = this.selectorSuffix && `.${this.selectorSuffix}`;\r\n const content = [];\r\n if (styles.listBackground) {\r\n if (styles.listBackground.isOpaque()) {\r\n content.push(`.monaco-list${suffix} .monaco-list-rows { background: ${styles.listBackground}; }`);\r\n }\r\n else if (!platform.isMacintosh) { // subpixel AA doesn't exist in macOS\r\n console.warn(`List with id '${this.selectorSuffix}' was styled with a non-opaque background color. This will break sub-pixel antialiasing.`);\r\n }\r\n }\r\n if (styles.listFocusBackground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { background-color: ${styles.listFocusBackground}; }`);\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused:hover { background-color: ${styles.listFocusBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listFocusForeground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { color: ${styles.listFocusForeground}; }`);\r\n }\r\n if (styles.listActiveSelectionBackground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { background-color: ${styles.listActiveSelectionBackground}; }`);\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected:hover { background-color: ${styles.listActiveSelectionBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listActiveSelectionForeground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { color: ${styles.listActiveSelectionForeground}; }`);\r\n }\r\n if (styles.listActiveSelectionIconForeground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected .codicon { color: ${styles.listActiveSelectionIconForeground}; }`);\r\n }\r\n if (styles.listFocusAndSelectionBackground) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { background-color: ${styles.listFocusAndSelectionBackground}; }\n\t\t\t`);\r\n }\r\n if (styles.listFocusAndSelectionForeground) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { color: ${styles.listFocusAndSelectionForeground}; }\n\t\t\t`);\r\n }\r\n if (styles.listInactiveFocusForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { color: ${styles.listInactiveFocusForeground}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { color: ${styles.listInactiveFocusForeground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listInactiveSelectionIconForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused .codicon { color: ${styles.listInactiveSelectionIconForeground}; }`);\r\n }\r\n if (styles.listInactiveFocusBackground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { background-color: ${styles.listInactiveFocusBackground}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { background-color: ${styles.listInactiveFocusBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listInactiveSelectionBackground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { background-color: ${styles.listInactiveSelectionBackground}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected:hover { background-color: ${styles.listInactiveSelectionBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listInactiveSelectionForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { color: ${styles.listInactiveSelectionForeground}; }`);\r\n }\r\n if (styles.listHoverBackground) {\r\n content.push(`.monaco-list${suffix}:not(.drop-target) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${styles.listHoverBackground}; }`);\r\n }\r\n if (styles.listHoverForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row:hover:not(.selected):not(.focused) { color: ${styles.listHoverForeground}; }`);\r\n }\r\n if (styles.listSelectionOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { outline: 1px dotted ${styles.listSelectionOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listFocusOutline) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`);\r\n }\r\n if (styles.listInactiveFocusOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { outline: 1px dotted ${styles.listInactiveFocusOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listHoverOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row:hover { outline: 1px dashed ${styles.listHoverOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listDropBackground) {\r\n content.push(`\n\t\t\t\t.monaco-list${suffix}.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-row.drop-target { background-color: ${styles.listDropBackground} !important; color: inherit !important; }\n\t\t\t`);\r\n }\r\n if (styles.listFilterWidgetBackground) {\r\n content.push(`.monaco-list-type-filter { background-color: ${styles.listFilterWidgetBackground} }`);\r\n }\r\n if (styles.listFilterWidgetOutline) {\r\n content.push(`.monaco-list-type-filter { border: 1px solid ${styles.listFilterWidgetOutline}; }`);\r\n }\r\n if (styles.listFilterWidgetNoMatchesOutline) {\r\n content.push(`.monaco-list-type-filter.no-matches { border: 1px solid ${styles.listFilterWidgetNoMatchesOutline}; }`);\r\n }\r\n if (styles.listMatchesShadow) {\r\n content.push(`.monaco-list-type-filter { box-shadow: 1px 1px 1px ${styles.listMatchesShadow}; }`);\r\n }\r\n if (styles.tableColumnsBorder) {\r\n content.push(`\n\t\t\t\t.monaco-table:hover > .monaco-split-view2,\n\t\t\t\t.monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\t\t\tborder-color: ${styles.tableColumnsBorder};\n\t\t\t}`);\r\n }\r\n this.styleElement.textContent = content.join('\\n');\r\n }\r\n}\r\nconst defaultStyles = {\r\n listFocusBackground: Color.fromHex('#7FB0D0'),\r\n listActiveSelectionBackground: Color.fromHex('#0E639C'),\r\n listActiveSelectionForeground: Color.fromHex('#FFFFFF'),\r\n listActiveSelectionIconForeground: Color.fromHex('#FFFFFF'),\r\n listFocusAndSelectionBackground: Color.fromHex('#094771'),\r\n listFocusAndSelectionForeground: Color.fromHex('#FFFFFF'),\r\n listInactiveSelectionBackground: Color.fromHex('#3F3F46'),\r\n listInactiveSelectionIconForeground: Color.fromHex('#FFFFFF'),\r\n listHoverBackground: Color.fromHex('#2A2D2E'),\r\n listDropBackground: Color.fromHex('#383B3D'),\r\n treeIndentGuidesStroke: Color.fromHex('#a9a9a9'),\r\n tableColumnsBorder: Color.fromHex('#cccccc').transparent(0.2)\r\n};\r\nconst DefaultOptions = {\r\n keyboardSupport: true,\r\n mouseSupport: true,\r\n multipleSelectionSupport: true,\r\n dnd: {\r\n getDragURI() { return null; },\r\n onDragStart() { },\r\n onDragOver() { return false; },\r\n drop() { }\r\n }\r\n};\r\n// TODO@Joao: move these utils into a SortedArray class\r\nfunction getContiguousRangeContaining(range, value) {\r\n const index = range.indexOf(value);\r\n if (index === -1) {\r\n return [];\r\n }\r\n const result = [];\r\n let i = index - 1;\r\n while (i >= 0 && range[i] === value - (index - i)) {\r\n result.push(range[i--]);\r\n }\r\n result.reverse();\r\n i = index;\r\n while (i < range.length && range[i] === value + (i - index)) {\r\n result.push(range[i++]);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Given two sorted collections of numbers, returns the intersection\r\n * between them (OR).\r\n */\r\nfunction disjunction(one, other) {\r\n const result = [];\r\n let i = 0, j = 0;\r\n while (i < one.length || j < other.length) {\r\n if (i >= one.length) {\r\n result.push(other[j++]);\r\n }\r\n else if (j >= other.length) {\r\n result.push(one[i++]);\r\n }\r\n else if (one[i] === other[j]) {\r\n result.push(one[i]);\r\n i++;\r\n j++;\r\n continue;\r\n }\r\n else if (one[i] < other[j]) {\r\n result.push(one[i++]);\r\n }\r\n else {\r\n result.push(other[j++]);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Given two sorted collections of numbers, returns the relative\r\n * complement between them (XOR).\r\n */\r\nfunction relativeComplement(one, other) {\r\n const result = [];\r\n let i = 0, j = 0;\r\n while (i < one.length || j < other.length) {\r\n if (i >= one.length) {\r\n result.push(other[j++]);\r\n }\r\n else if (j >= other.length) {\r\n result.push(one[i++]);\r\n }\r\n else if (one[i] === other[j]) {\r\n i++;\r\n j++;\r\n continue;\r\n }\r\n else if (one[i] < other[j]) {\r\n result.push(one[i++]);\r\n }\r\n else {\r\n j++;\r\n }\r\n }\r\n return result;\r\n}\r\nconst numericSort = (a, b) => a - b;\r\nclass PipelineRenderer {\r\n constructor(_templateId, renderers) {\r\n this._templateId = _templateId;\r\n this.renderers = renderers;\r\n }\r\n get templateId() {\r\n return this._templateId;\r\n }\r\n renderTemplate(container) {\r\n return this.renderers.map(r => r.renderTemplate(container));\r\n }\r\n renderElement(element, index, templateData, height) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n renderer.renderElement(element, index, templateData[i++], height);\r\n }\r\n }\r\n disposeElement(element, index, templateData, height) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n if (renderer.disposeElement) {\r\n renderer.disposeElement(element, index, templateData[i], height);\r\n }\r\n i += 1;\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n renderer.disposeTemplate(templateData[i++]);\r\n }\r\n }\r\n}\r\nclass AccessibiltyRenderer {\r\n constructor(accessibilityProvider) {\r\n this.accessibilityProvider = accessibilityProvider;\r\n this.templateId = 'a18n';\r\n }\r\n renderTemplate(container) {\r\n return container;\r\n }\r\n renderElement(element, index, container) {\r\n const ariaLabel = this.accessibilityProvider.getAriaLabel(element);\r\n if (ariaLabel) {\r\n container.setAttribute('aria-label', ariaLabel);\r\n }\r\n else {\r\n container.removeAttribute('aria-label');\r\n }\r\n const ariaLevel = this.accessibilityProvider.getAriaLevel && this.accessibilityProvider.getAriaLevel(element);\r\n if (typeof ariaLevel === 'number') {\r\n container.setAttribute('aria-level', `${ariaLevel}`);\r\n }\r\n else {\r\n container.removeAttribute('aria-level');\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n // noop\r\n }\r\n}\r\nclass ListViewDragAndDrop {\r\n constructor(list, dnd) {\r\n this.list = list;\r\n this.dnd = dnd;\r\n }\r\n getDragElements(element) {\r\n const selection = this.list.getSelectedElements();\r\n const elements = selection.indexOf(element) > -1 ? selection : [element];\r\n return elements;\r\n }\r\n getDragURI(element) {\r\n return this.dnd.getDragURI(element);\r\n }\r\n getDragLabel(elements, originalEvent) {\r\n if (this.dnd.getDragLabel) {\r\n return this.dnd.getDragLabel(elements, originalEvent);\r\n }\r\n return undefined;\r\n }\r\n onDragStart(data, originalEvent) {\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(data, originalEvent);\r\n }\r\n }\r\n onDragOver(data, targetElement, targetIndex, originalEvent) {\r\n return this.dnd.onDragOver(data, targetElement, targetIndex, originalEvent);\r\n }\r\n onDragLeave(data, targetElement, targetIndex, originalEvent) {\r\n var _a, _b;\r\n (_b = (_a = this.dnd).onDragLeave) === null || _b === void 0 ? void 0 : _b.call(_a, data, targetElement, targetIndex, originalEvent);\r\n }\r\n onDragEnd(originalEvent) {\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(originalEvent);\r\n }\r\n }\r\n drop(data, targetElement, targetIndex, originalEvent) {\r\n this.dnd.drop(data, targetElement, targetIndex, originalEvent);\r\n }\r\n}\r\nexport class List {\r\n constructor(user, container, virtualDelegate, renderers, _options = DefaultOptions) {\r\n var _a;\r\n this.user = user;\r\n this._options = _options;\r\n this.focus = new Trait('focused');\r\n this.anchor = new Trait('anchor');\r\n this.eventBufferer = new EventBufferer();\r\n this._ariaLabel = '';\r\n this.disposables = new DisposableStore();\r\n this._onDidDispose = new Emitter();\r\n this.onDidDispose = this._onDidDispose.event;\r\n const role = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? (_a = this._options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getWidgetRole() : 'list';\r\n this.selection = new SelectionTrait(role !== 'listbox');\r\n mixin(_options, defaultStyles, false);\r\n const baseRenderers = [this.focus.renderer, this.selection.renderer];\r\n this.accessibilityProvider = _options.accessibilityProvider;\r\n if (this.accessibilityProvider) {\r\n baseRenderers.push(new AccessibiltyRenderer(this.accessibilityProvider));\r\n if (this.accessibilityProvider.onDidChangeActiveDescendant) {\r\n this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant, this, this.disposables);\r\n }\r\n }\r\n renderers = renderers.map(r => new PipelineRenderer(r.templateId, [...baseRenderers, r]));\r\n const viewOptions = Object.assign(Object.assign({}, _options), { dnd: _options.dnd && new ListViewDragAndDrop(this, _options.dnd) });\r\n this.view = new ListView(container, virtualDelegate, renderers, viewOptions);\r\n this.view.domNode.setAttribute('role', role);\r\n if (_options.styleController) {\r\n this.styleController = _options.styleController(this.view.domId);\r\n }\r\n else {\r\n const styleElement = createStyleSheet(this.view.domNode);\r\n this.styleController = new DefaultStyleController(styleElement, this.view.domId);\r\n }\r\n this.spliceable = new CombinedSpliceable([\r\n new TraitSpliceable(this.focus, this.view, _options.identityProvider),\r\n new TraitSpliceable(this.selection, this.view, _options.identityProvider),\r\n new TraitSpliceable(this.anchor, this.view, _options.identityProvider),\r\n this.view\r\n ]);\r\n this.disposables.add(this.focus);\r\n this.disposables.add(this.selection);\r\n this.disposables.add(this.anchor);\r\n this.disposables.add(this.view);\r\n this.disposables.add(this._onDidDispose);\r\n this.disposables.add(new DOMFocusController(this, this.view));\r\n if (typeof _options.keyboardSupport !== 'boolean' || _options.keyboardSupport) {\r\n this.keyboardController = new KeyboardController(this, this.view, _options);\r\n this.disposables.add(this.keyboardController);\r\n }\r\n if (_options.keyboardNavigationLabelProvider) {\r\n const delegate = _options.keyboardNavigationDelegate || DefaultKeyboardNavigationDelegate;\r\n this.typeLabelController = new TypeLabelController(this, this.view, _options.keyboardNavigationLabelProvider, delegate);\r\n this.disposables.add(this.typeLabelController);\r\n }\r\n this.mouseController = this.createMouseController(_options);\r\n this.disposables.add(this.mouseController);\r\n this.onDidChangeFocus(this._onFocusChange, this, this.disposables);\r\n this.onDidChangeSelection(this._onSelectionChange, this, this.disposables);\r\n if (this.accessibilityProvider) {\r\n this.ariaLabel = this.accessibilityProvider.getWidgetAriaLabel();\r\n }\r\n if (this._options.multipleSelectionSupport !== false) {\r\n this.view.domNode.setAttribute('aria-multiselectable', 'true');\r\n }\r\n }\r\n get onDidChangeFocus() {\r\n return Event.map(this.eventBufferer.wrapEvent(this.focus.onChange), e => this.toListEvent(e));\r\n }\r\n get onDidChangeSelection() {\r\n return Event.map(this.eventBufferer.wrapEvent(this.selection.onChange), e => this.toListEvent(e));\r\n }\r\n get domId() { return this.view.domId; }\r\n get onMouseClick() { return this.view.onMouseClick; }\r\n get onMouseDblClick() { return this.view.onMouseDblClick; }\r\n get onMouseMiddleClick() { return this.view.onMouseMiddleClick; }\r\n get onPointer() { return this.mouseController.onPointer; }\r\n get onMouseDown() { return this.view.onMouseDown; }\r\n get onTouchStart() { return this.view.onTouchStart; }\r\n get onTap() { return this.view.onTap; }\r\n /**\r\n * Possible context menu trigger events:\r\n * - ContextMenu key\r\n * - Shift F10\r\n * - Ctrl Option Shift M (macOS with VoiceOver)\r\n * - Mouse right click\r\n */\r\n get onContextMenu() {\r\n let didJustPressContextMenuKey = false;\r\n const fromKeyDown = Event.chain(this.disposables.add(new DomEmitter(this.view.domNode, 'keydown')).event)\r\n .map(e => new StandardKeyboardEvent(e))\r\n .filter(e => didJustPressContextMenuKey = e.keyCode === 58 /* ContextMenu */ || (e.shiftKey && e.keyCode === 68 /* F10 */))\r\n .map(stopEvent)\r\n .filter(() => false)\r\n .event;\r\n const fromKeyUp = Event.chain(this.disposables.add(new DomEmitter(this.view.domNode, 'keyup')).event)\r\n .forEach(() => didJustPressContextMenuKey = false)\r\n .map(e => new StandardKeyboardEvent(e))\r\n .filter(e => e.keyCode === 58 /* ContextMenu */ || (e.shiftKey && e.keyCode === 68 /* F10 */))\r\n .map(stopEvent)\r\n .map(({ browserEvent }) => {\r\n const focus = this.getFocus();\r\n const index = focus.length ? focus[0] : undefined;\r\n const element = typeof index !== 'undefined' ? this.view.element(index) : undefined;\r\n const anchor = typeof index !== 'undefined' ? this.view.domElement(index) : this.view.domNode;\r\n return { index, element, anchor, browserEvent };\r\n })\r\n .event;\r\n const fromMouse = Event.chain(this.view.onContextMenu)\r\n .filter(_ => !didJustPressContextMenuKey)\r\n .map(({ element, index, browserEvent }) => ({ element, index, anchor: { x: browserEvent.pageX + 1, y: browserEvent.pageY }, browserEvent }))\r\n .event;\r\n return Event.any(fromKeyDown, fromKeyUp, fromMouse);\r\n }\r\n get onKeyDown() { return this.disposables.add(new DomEmitter(this.view.domNode, 'keydown')).event; }\r\n get onDidFocus() { return Event.signal(this.disposables.add(new DomEmitter(this.view.domNode, 'focus', true)).event); }\r\n createMouseController(options) {\r\n return new MouseController(this);\r\n }\r\n updateOptions(optionsUpdate = {}) {\r\n var _a;\r\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\r\n if (this.typeLabelController) {\r\n this.typeLabelController.updateOptions(this._options);\r\n }\r\n if (this._options.multipleSelectionController !== undefined) {\r\n if (this._options.multipleSelectionSupport) {\r\n this.view.domNode.setAttribute('aria-multiselectable', 'true');\r\n }\r\n else {\r\n this.view.domNode.removeAttribute('aria-multiselectable');\r\n }\r\n }\r\n this.mouseController.updateOptions(optionsUpdate);\r\n (_a = this.keyboardController) === null || _a === void 0 ? void 0 : _a.updateOptions(optionsUpdate);\r\n this.view.updateOptions(optionsUpdate);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n splice(start, deleteCount, elements = []) {\r\n if (start < 0 || start > this.view.length) {\r\n throw new ListError(this.user, `Invalid start index: ${start}`);\r\n }\r\n if (deleteCount < 0) {\r\n throw new ListError(this.user, `Invalid delete count: ${deleteCount}`);\r\n }\r\n if (deleteCount === 0 && elements.length === 0) {\r\n return;\r\n }\r\n this.eventBufferer.bufferEvents(() => this.spliceable.splice(start, deleteCount, elements));\r\n }\r\n rerender() {\r\n this.view.rerender();\r\n }\r\n element(index) {\r\n return this.view.element(index);\r\n }\r\n get length() {\r\n return this.view.length;\r\n }\r\n get contentHeight() {\r\n return this.view.contentHeight;\r\n }\r\n get scrollTop() {\r\n return this.view.getScrollTop();\r\n }\r\n set scrollTop(scrollTop) {\r\n this.view.setScrollTop(scrollTop);\r\n }\r\n get ariaLabel() {\r\n return this._ariaLabel;\r\n }\r\n set ariaLabel(value) {\r\n this._ariaLabel = value;\r\n this.view.domNode.setAttribute('aria-label', value);\r\n }\r\n domFocus() {\r\n this.view.domNode.focus({ preventScroll: true });\r\n }\r\n layout(height, width) {\r\n this.view.layout(height, width);\r\n }\r\n setSelection(indexes, browserEvent) {\r\n for (const index of indexes) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n }\r\n this.selection.set(indexes, browserEvent);\r\n }\r\n getSelection() {\r\n return this.selection.get();\r\n }\r\n getSelectedElements() {\r\n return this.getSelection().map(i => this.view.element(i));\r\n }\r\n setAnchor(index) {\r\n if (typeof index === 'undefined') {\r\n this.anchor.set([]);\r\n return;\r\n }\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n this.anchor.set([index]);\r\n }\r\n getAnchor() {\r\n return firstOrDefault(this.anchor.get(), undefined);\r\n }\r\n getAnchorElement() {\r\n const anchor = this.getAnchor();\r\n return typeof anchor === 'undefined' ? undefined : this.element(anchor);\r\n }\r\n setFocus(indexes, browserEvent) {\r\n for (const index of indexes) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n }\r\n this.focus.set(indexes, browserEvent);\r\n }\r\n focusNext(n = 1, loop = false, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const focus = this.focus.get();\r\n const index = this.findNextIndex(focus.length > 0 ? focus[0] + n : 0, loop, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusPrevious(n = 1, loop = false, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const focus = this.focus.get();\r\n const index = this.findPreviousIndex(focus.length > 0 ? focus[0] - n : 0, loop, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusNextPage(browserEvent, filter) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let lastPageIndex = this.view.indexAt(this.view.getScrollTop() + this.view.renderHeight);\r\n lastPageIndex = lastPageIndex === 0 ? 0 : lastPageIndex - 1;\r\n const lastPageElement = this.view.element(lastPageIndex);\r\n const currentlyFocusedElement = this.getFocusedElements()[0];\r\n if (currentlyFocusedElement !== lastPageElement) {\r\n const lastGoodPageIndex = this.findPreviousIndex(lastPageIndex, false, filter);\r\n if (lastGoodPageIndex > -1 && currentlyFocusedElement !== this.view.element(lastGoodPageIndex)) {\r\n this.setFocus([lastGoodPageIndex], browserEvent);\r\n }\r\n else {\r\n this.setFocus([lastPageIndex], browserEvent);\r\n }\r\n }\r\n else {\r\n const previousScrollTop = this.view.getScrollTop();\r\n this.view.setScrollTop(previousScrollTop + this.view.renderHeight - this.view.elementHeight(lastPageIndex));\r\n if (this.view.getScrollTop() !== previousScrollTop) {\r\n this.setFocus([]);\r\n // Let the scroll event listener run\r\n yield timeout(0);\r\n yield this.focusNextPage(browserEvent, filter);\r\n }\r\n }\r\n });\r\n }\r\n focusPreviousPage(browserEvent, filter) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let firstPageIndex;\r\n const scrollTop = this.view.getScrollTop();\r\n if (scrollTop === 0) {\r\n firstPageIndex = this.view.indexAt(scrollTop);\r\n }\r\n else {\r\n firstPageIndex = this.view.indexAfter(scrollTop - 1);\r\n }\r\n const firstPageElement = this.view.element(firstPageIndex);\r\n const currentlyFocusedElement = this.getFocusedElements()[0];\r\n if (currentlyFocusedElement !== firstPageElement) {\r\n const firstGoodPageIndex = this.findNextIndex(firstPageIndex, false, filter);\r\n if (firstGoodPageIndex > -1 && currentlyFocusedElement !== this.view.element(firstGoodPageIndex)) {\r\n this.setFocus([firstGoodPageIndex], browserEvent);\r\n }\r\n else {\r\n this.setFocus([firstPageIndex], browserEvent);\r\n }\r\n }\r\n else {\r\n const previousScrollTop = scrollTop;\r\n this.view.setScrollTop(scrollTop - this.view.renderHeight);\r\n if (this.view.getScrollTop() !== previousScrollTop) {\r\n this.setFocus([]);\r\n // Let the scroll event listener run\r\n yield timeout(0);\r\n yield this.focusPreviousPage(browserEvent, filter);\r\n }\r\n }\r\n });\r\n }\r\n focusLast(browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const index = this.findPreviousIndex(this.length - 1, false, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusFirst(browserEvent, filter) {\r\n this.focusNth(0, browserEvent, filter);\r\n }\r\n focusNth(n, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const index = this.findNextIndex(n, false, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n findNextIndex(index, loop = false, filter) {\r\n for (let i = 0; i < this.length; i++) {\r\n if (index >= this.length && !loop) {\r\n return -1;\r\n }\r\n index = index % this.length;\r\n if (!filter || filter(this.element(index))) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n return -1;\r\n }\r\n findPreviousIndex(index, loop = false, filter) {\r\n for (let i = 0; i < this.length; i++) {\r\n if (index < 0 && !loop) {\r\n return -1;\r\n }\r\n index = (this.length + (index % this.length)) % this.length;\r\n if (!filter || filter(this.element(index))) {\r\n return index;\r\n }\r\n index--;\r\n }\r\n return -1;\r\n }\r\n getFocus() {\r\n return this.focus.get();\r\n }\r\n getFocusedElements() {\r\n return this.getFocus().map(i => this.view.element(i));\r\n }\r\n reveal(index, relativeTop) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n const scrollTop = this.view.getScrollTop();\r\n const elementTop = this.view.elementTop(index);\r\n const elementHeight = this.view.elementHeight(index);\r\n if (isNumber(relativeTop)) {\r\n // y = mx + b\r\n const m = elementHeight - this.view.renderHeight;\r\n this.view.setScrollTop(m * clamp(relativeTop, 0, 1) + elementTop);\r\n }\r\n else {\r\n const viewItemBottom = elementTop + elementHeight;\r\n const scrollBottom = scrollTop + this.view.renderHeight;\r\n if (elementTop < scrollTop && viewItemBottom >= scrollBottom) {\r\n // The element is already overflowing the viewport, no-op\r\n }\r\n else if (elementTop < scrollTop || (viewItemBottom >= scrollBottom && elementHeight >= this.view.renderHeight)) {\r\n this.view.setScrollTop(elementTop);\r\n }\r\n else if (viewItemBottom >= scrollBottom) {\r\n this.view.setScrollTop(viewItemBottom - this.view.renderHeight);\r\n }\r\n }\r\n }\r\n /**\r\n * Returns the relative position of an element rendered in the list.\r\n * Returns `null` if the element isn't *entirely* in the visible viewport.\r\n */\r\n getRelativeTop(index) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n const scrollTop = this.view.getScrollTop();\r\n const elementTop = this.view.elementTop(index);\r\n const elementHeight = this.view.elementHeight(index);\r\n if (elementTop < scrollTop || elementTop + elementHeight > scrollTop + this.view.renderHeight) {\r\n return null;\r\n }\r\n // y = mx + b\r\n const m = elementHeight - this.view.renderHeight;\r\n return Math.abs((scrollTop - elementTop) / m);\r\n }\r\n getHTMLElement() {\r\n return this.view.domNode;\r\n }\r\n style(styles) {\r\n this.styleController.style(styles);\r\n }\r\n toListEvent({ indexes, browserEvent }) {\r\n return { indexes, elements: indexes.map(i => this.view.element(i)), browserEvent };\r\n }\r\n _onFocusChange() {\r\n const focus = this.focus.get();\r\n this.view.domNode.classList.toggle('element-focused', focus.length > 0);\r\n this.onDidChangeActiveDescendant();\r\n }\r\n onDidChangeActiveDescendant() {\r\n var _a;\r\n const focus = this.focus.get();\r\n if (focus.length > 0) {\r\n let id;\r\n if ((_a = this.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getActiveDescendantId) {\r\n id = this.accessibilityProvider.getActiveDescendantId(this.view.element(focus[0]));\r\n }\r\n this.view.domNode.setAttribute('aria-activedescendant', id || this.view.getElementDomId(focus[0]));\r\n }\r\n else {\r\n this.view.domNode.removeAttribute('aria-activedescendant');\r\n }\r\n }\r\n _onSelectionChange() {\r\n const selection = this.selection.get();\r\n this.view.domNode.classList.toggle('selection-none', selection.length === 0);\r\n this.view.domNode.classList.toggle('selection-single', selection.length === 1);\r\n this.view.domNode.classList.toggle('selection-multiple', selection.length > 1);\r\n }\r\n dispose() {\r\n this._onDidDispose.fire();\r\n this.disposables.dispose();\r\n this._onDidDispose.dispose();\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onDidChangeFocus\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onDidChangeSelection\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onContextMenu\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onKeyDown\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onDidFocus\", null);\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./mouseCursor.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./mouseCursor.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './mouseCursor.css';\r\nexport const MOUSE_CURSOR_TEXT_CSS_CLASS_NAME = `monaco-mouse-cursor-text`;\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./sash.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./sash.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport './sash.css';\r\nimport { Disposable, DisposableStore, toDisposable } from '../../../common/lifecycle.js';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport { EventType, Gesture } from '../../touch.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport { getElementsByTagName, EventHelper, createStyleSheet, append, $ } from '../../dom.js';\r\nimport { DomEmitter } from '../../event.js';\r\nimport { Delayer } from '../../../common/async.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nlet DEBUG = false;\r\nexport var OrthogonalEdge;\r\n(function (OrthogonalEdge) {\r\n OrthogonalEdge[\"North\"] = \"north\";\r\n OrthogonalEdge[\"South\"] = \"south\";\r\n OrthogonalEdge[\"East\"] = \"east\";\r\n OrthogonalEdge[\"West\"] = \"west\";\r\n})(OrthogonalEdge || (OrthogonalEdge = {}));\r\nlet globalSize = 4;\r\nconst onDidChangeGlobalSize = new Emitter();\r\nlet globalHoverDelay = 300;\r\nconst onDidChangeHoverDelay = new Emitter();\r\nclass MouseEventFactory {\r\n constructor() {\r\n this.disposables = new DisposableStore();\r\n }\r\n get onPointerMove() {\r\n return this.disposables.add(new DomEmitter(window, 'mousemove')).event;\r\n }\r\n get onPointerUp() {\r\n return this.disposables.add(new DomEmitter(window, 'mouseup')).event;\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], MouseEventFactory.prototype, \"onPointerMove\", null);\r\n__decorate([\r\n memoize\r\n], MouseEventFactory.prototype, \"onPointerUp\", null);\r\nclass GestureEventFactory {\r\n constructor(el) {\r\n this.el = el;\r\n this.disposables = new DisposableStore();\r\n }\r\n get onPointerMove() {\r\n return this.disposables.add(new DomEmitter(this.el, EventType.Change)).event;\r\n }\r\n get onPointerUp() {\r\n return this.disposables.add(new DomEmitter(this.el, EventType.End)).event;\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], GestureEventFactory.prototype, \"onPointerMove\", null);\r\n__decorate([\r\n memoize\r\n], GestureEventFactory.prototype, \"onPointerUp\", null);\r\nclass OrthogonalPointerEventFactory {\r\n constructor(factory) {\r\n this.factory = factory;\r\n }\r\n get onPointerMove() {\r\n return this.factory.onPointerMove;\r\n }\r\n get onPointerUp() {\r\n return this.factory.onPointerUp;\r\n }\r\n dispose() {\r\n // noop\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], OrthogonalPointerEventFactory.prototype, \"onPointerMove\", null);\r\n__decorate([\r\n memoize\r\n], OrthogonalPointerEventFactory.prototype, \"onPointerUp\", null);\r\nexport class Sash extends Disposable {\r\n constructor(container, layoutProvider, options) {\r\n super();\r\n this.hoverDelay = globalHoverDelay;\r\n this.hoverDelayer = this._register(new Delayer(this.hoverDelay));\r\n this._state = 3 /* Enabled */;\r\n this._onDidEnablementChange = this._register(new Emitter());\r\n this.onDidEnablementChange = this._onDidEnablementChange.event;\r\n this._onDidStart = this._register(new Emitter());\r\n this.onDidStart = this._onDidStart.event;\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidReset = this._register(new Emitter());\r\n this.onDidReset = this._onDidReset.event;\r\n this._onDidEnd = this._register(new Emitter());\r\n this.onDidEnd = this._onDidEnd.event;\r\n this.linkedSash = undefined;\r\n this.orthogonalStartSashDisposables = this._register(new DisposableStore());\r\n this.orthogonalStartDragHandleDisposables = this._register(new DisposableStore());\r\n this.orthogonalEndSashDisposables = this._register(new DisposableStore());\r\n this.orthogonalEndDragHandleDisposables = this._register(new DisposableStore());\r\n this.el = append(container, $('.monaco-sash'));\r\n if (options.orthogonalEdge) {\r\n this.el.classList.add(`orthogonal-edge-${options.orthogonalEdge}`);\r\n }\r\n if (isMacintosh) {\r\n this.el.classList.add('mac');\r\n }\r\n const onMouseDown = this._register(new DomEmitter(this.el, 'mousedown')).event;\r\n this._register(onMouseDown(e => this.onPointerStart(e, new MouseEventFactory()), this));\r\n const onMouseDoubleClick = this._register(new DomEmitter(this.el, 'dblclick')).event;\r\n this._register(onMouseDoubleClick(this.onPointerDoublePress, this));\r\n const onMouseEnter = this._register(new DomEmitter(this.el, 'mouseenter')).event;\r\n this._register(onMouseEnter(() => Sash.onMouseEnter(this)));\r\n const onMouseLeave = this._register(new DomEmitter(this.el, 'mouseleave')).event;\r\n this._register(onMouseLeave(() => Sash.onMouseLeave(this)));\r\n this._register(Gesture.addTarget(this.el));\r\n const onTouchStart = Event.map(this._register(new DomEmitter(this.el, EventType.Start)).event, e => { var _a; return (Object.assign(Object.assign({}, e), { target: (_a = e.initialTarget) !== null && _a !== void 0 ? _a : null })); });\r\n this._register(onTouchStart(e => this.onPointerStart(e, new GestureEventFactory(this.el)), this));\r\n const onTap = this._register(new DomEmitter(this.el, EventType.Tap)).event;\r\n const onDoubleTap = Event.map(Event.filter(Event.debounce(onTap, (res, event) => { var _a; return ({ event, count: ((_a = res === null || res === void 0 ? void 0 : res.count) !== null && _a !== void 0 ? _a : 0) + 1 }); }, 250), ({ count }) => count === 2), ({ event }) => { var _a; return (Object.assign(Object.assign({}, event), { target: (_a = event.initialTarget) !== null && _a !== void 0 ? _a : null })); });\r\n this._register(onDoubleTap(this.onPointerDoublePress, this));\r\n if (typeof options.size === 'number') {\r\n this.size = options.size;\r\n if (options.orientation === 0 /* VERTICAL */) {\r\n this.el.style.width = `${this.size}px`;\r\n }\r\n else {\r\n this.el.style.height = `${this.size}px`;\r\n }\r\n }\r\n else {\r\n this.size = globalSize;\r\n this._register(onDidChangeGlobalSize.event(size => {\r\n this.size = size;\r\n this.layout();\r\n }));\r\n }\r\n this._register(onDidChangeHoverDelay.event(delay => this.hoverDelay = delay));\r\n this.hidden = false;\r\n this.layoutProvider = layoutProvider;\r\n this.orthogonalStartSash = options.orthogonalStartSash;\r\n this.orthogonalEndSash = options.orthogonalEndSash;\r\n this.orientation = options.orientation || 0 /* VERTICAL */;\r\n if (this.orientation === 1 /* HORIZONTAL */) {\r\n this.el.classList.add('horizontal');\r\n this.el.classList.remove('vertical');\r\n }\r\n else {\r\n this.el.classList.remove('horizontal');\r\n this.el.classList.add('vertical');\r\n }\r\n this.el.classList.toggle('debug', DEBUG);\r\n this.layout();\r\n }\r\n get state() { return this._state; }\r\n set state(state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n this.el.classList.toggle('disabled', state === 0 /* Disabled */);\r\n this.el.classList.toggle('minimum', state === 1 /* Minimum */);\r\n this.el.classList.toggle('maximum', state === 2 /* Maximum */);\r\n this._state = state;\r\n this._onDidEnablementChange.fire(state);\r\n }\r\n get orthogonalStartSash() { return this._orthogonalStartSash; }\r\n set orthogonalStartSash(sash) {\r\n this.orthogonalStartDragHandleDisposables.clear();\r\n this.orthogonalStartSashDisposables.clear();\r\n if (sash) {\r\n const onChange = (state) => {\r\n this.orthogonalStartDragHandleDisposables.clear();\r\n if (state !== 0 /* Disabled */) {\r\n this._orthogonalStartDragHandle = append(this.el, $('.orthogonal-drag-handle.start'));\r\n this.orthogonalStartDragHandleDisposables.add(toDisposable(() => this._orthogonalStartDragHandle.remove()));\r\n this.orthogonalStartDragHandleDisposables.add(new DomEmitter(this._orthogonalStartDragHandle, 'mouseenter')).event(() => Sash.onMouseEnter(sash), undefined, this.orthogonalStartDragHandleDisposables);\r\n this.orthogonalStartDragHandleDisposables.add(new DomEmitter(this._orthogonalStartDragHandle, 'mouseleave')).event(() => Sash.onMouseLeave(sash), undefined, this.orthogonalStartDragHandleDisposables);\r\n }\r\n };\r\n this.orthogonalStartSashDisposables.add(sash.onDidEnablementChange(onChange, this));\r\n onChange(sash.state);\r\n }\r\n this._orthogonalStartSash = sash;\r\n }\r\n get orthogonalEndSash() { return this._orthogonalEndSash; }\r\n set orthogonalEndSash(sash) {\r\n this.orthogonalEndDragHandleDisposables.clear();\r\n this.orthogonalEndSashDisposables.clear();\r\n if (sash) {\r\n const onChange = (state) => {\r\n this.orthogonalEndDragHandleDisposables.clear();\r\n if (state !== 0 /* Disabled */) {\r\n this._orthogonalEndDragHandle = append(this.el, $('.orthogonal-drag-handle.end'));\r\n this.orthogonalEndDragHandleDisposables.add(toDisposable(() => this._orthogonalEndDragHandle.remove()));\r\n this.orthogonalEndDragHandleDisposables.add(new DomEmitter(this._orthogonalEndDragHandle, 'mouseenter')).event(() => Sash.onMouseEnter(sash), undefined, this.orthogonalEndDragHandleDisposables);\r\n this.orthogonalEndDragHandleDisposables.add(new DomEmitter(this._orthogonalEndDragHandle, 'mouseleave')).event(() => Sash.onMouseLeave(sash), undefined, this.orthogonalEndDragHandleDisposables);\r\n }\r\n };\r\n this.orthogonalEndSashDisposables.add(sash.onDidEnablementChange(onChange, this));\r\n onChange(sash.state);\r\n }\r\n this._orthogonalEndSash = sash;\r\n }\r\n onPointerStart(event, pointerEventFactory) {\r\n EventHelper.stop(event);\r\n let isMultisashResize = false;\r\n if (!event.__orthogonalSashEvent) {\r\n const orthogonalSash = this.getOrthogonalSash(event);\r\n if (orthogonalSash) {\r\n isMultisashResize = true;\r\n event.__orthogonalSashEvent = true;\r\n orthogonalSash.onPointerStart(event, new OrthogonalPointerEventFactory(pointerEventFactory));\r\n }\r\n }\r\n if (this.linkedSash && !event.__linkedSashEvent) {\r\n event.__linkedSashEvent = true;\r\n this.linkedSash.onPointerStart(event, new OrthogonalPointerEventFactory(pointerEventFactory));\r\n }\r\n if (!this.state) {\r\n return;\r\n }\r\n const iframes = getElementsByTagName('iframe');\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none'; // disable mouse events on iframes as long as we drag the sash\r\n }\r\n const startX = event.pageX;\r\n const startY = event.pageY;\r\n const altKey = event.altKey;\r\n const startEvent = { startX, currentX: startX, startY, currentY: startY, altKey };\r\n this.el.classList.add('active');\r\n this._onDidStart.fire(startEvent);\r\n // fix https://github.com/microsoft/vscode/issues/21675\r\n const style = createStyleSheet(this.el);\r\n const updateStyle = () => {\r\n let cursor = '';\r\n if (isMultisashResize) {\r\n cursor = 'all-scroll';\r\n }\r\n else if (this.orientation === 1 /* HORIZONTAL */) {\r\n if (this.state === 1 /* Minimum */) {\r\n cursor = 's-resize';\r\n }\r\n else if (this.state === 2 /* Maximum */) {\r\n cursor = 'n-resize';\r\n }\r\n else {\r\n cursor = isMacintosh ? 'row-resize' : 'ns-resize';\r\n }\r\n }\r\n else {\r\n if (this.state === 1 /* Minimum */) {\r\n cursor = 'e-resize';\r\n }\r\n else if (this.state === 2 /* Maximum */) {\r\n cursor = 'w-resize';\r\n }\r\n else {\r\n cursor = isMacintosh ? 'col-resize' : 'ew-resize';\r\n }\r\n }\r\n style.textContent = `* { cursor: ${cursor} !important; }`;\r\n };\r\n const disposables = new DisposableStore();\r\n updateStyle();\r\n if (!isMultisashResize) {\r\n this.onDidEnablementChange(updateStyle, null, disposables);\r\n }\r\n const onPointerMove = (e) => {\r\n EventHelper.stop(e, false);\r\n const event = { startX, currentX: e.pageX, startY, currentY: e.pageY, altKey };\r\n this._onDidChange.fire(event);\r\n };\r\n const onPointerUp = (e) => {\r\n EventHelper.stop(e, false);\r\n this.el.removeChild(style);\r\n this.el.classList.remove('active');\r\n this._onDidEnd.fire();\r\n disposables.dispose();\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n };\r\n pointerEventFactory.onPointerMove(onPointerMove, null, disposables);\r\n pointerEventFactory.onPointerUp(onPointerUp, null, disposables);\r\n disposables.add(pointerEventFactory);\r\n }\r\n onPointerDoublePress(e) {\r\n const orthogonalSash = this.getOrthogonalSash(e);\r\n if (orthogonalSash) {\r\n orthogonalSash._onDidReset.fire();\r\n }\r\n if (this.linkedSash) {\r\n this.linkedSash._onDidReset.fire();\r\n }\r\n this._onDidReset.fire();\r\n }\r\n static onMouseEnter(sash, fromLinkedSash = false) {\r\n if (sash.el.classList.contains('active')) {\r\n sash.hoverDelayer.cancel();\r\n sash.el.classList.add('hover');\r\n }\r\n else {\r\n sash.hoverDelayer.trigger(() => sash.el.classList.add('hover'), sash.hoverDelay).then(undefined, () => { });\r\n }\r\n if (!fromLinkedSash && sash.linkedSash) {\r\n Sash.onMouseEnter(sash.linkedSash, true);\r\n }\r\n }\r\n static onMouseLeave(sash, fromLinkedSash = false) {\r\n sash.hoverDelayer.cancel();\r\n sash.el.classList.remove('hover');\r\n if (!fromLinkedSash && sash.linkedSash) {\r\n Sash.onMouseLeave(sash.linkedSash, true);\r\n }\r\n }\r\n clearSashHoverState() {\r\n Sash.onMouseLeave(this);\r\n }\r\n layout() {\r\n if (this.orientation === 0 /* VERTICAL */) {\r\n const verticalProvider = this.layoutProvider;\r\n this.el.style.left = verticalProvider.getVerticalSashLeft(this) - (this.size / 2) + 'px';\r\n if (verticalProvider.getVerticalSashTop) {\r\n this.el.style.top = verticalProvider.getVerticalSashTop(this) + 'px';\r\n }\r\n if (verticalProvider.getVerticalSashHeight) {\r\n this.el.style.height = verticalProvider.getVerticalSashHeight(this) + 'px';\r\n }\r\n }\r\n else {\r\n const horizontalProvider = this.layoutProvider;\r\n this.el.style.top = horizontalProvider.getHorizontalSashTop(this) - (this.size / 2) + 'px';\r\n if (horizontalProvider.getHorizontalSashLeft) {\r\n this.el.style.left = horizontalProvider.getHorizontalSashLeft(this) + 'px';\r\n }\r\n if (horizontalProvider.getHorizontalSashWidth) {\r\n this.el.style.width = horizontalProvider.getHorizontalSashWidth(this) + 'px';\r\n }\r\n }\r\n }\r\n hide() {\r\n this.hidden = true;\r\n this.el.style.display = 'none';\r\n this.el.setAttribute('aria-hidden', 'true');\r\n }\r\n getOrthogonalSash(e) {\r\n if (!e.target || !(e.target instanceof HTMLElement)) {\r\n return undefined;\r\n }\r\n if (e.target.classList.contains('orthogonal-drag-handle')) {\r\n return e.target.classList.contains('start') ? this.orthogonalStartSash : this.orthogonalEndSash;\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.el.remove();\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../../css-loader/dist/cjs.js!./scrollbars.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../../css-loader/dist/cjs.js!./scrollbars.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../globalMouseMoveMonitor.js';\r\nimport { Widget } from '../widget.js';\r\nimport { IntervalTimer, TimeoutTimer } from '../../../common/async.js';\r\n/**\r\n * The arrow image size.\r\n */\r\nexport const ARROW_IMG_SIZE = 11;\r\nexport class ScrollbarArrow extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._onActivate = opts.onActivate;\r\n this.bgDomNode = document.createElement('div');\r\n this.bgDomNode.className = 'arrow-background';\r\n this.bgDomNode.style.position = 'absolute';\r\n this.bgDomNode.style.width = opts.bgWidth + 'px';\r\n this.bgDomNode.style.height = opts.bgHeight + 'px';\r\n if (typeof opts.top !== 'undefined') {\r\n this.bgDomNode.style.top = '0px';\r\n }\r\n if (typeof opts.left !== 'undefined') {\r\n this.bgDomNode.style.left = '0px';\r\n }\r\n if (typeof opts.bottom !== 'undefined') {\r\n this.bgDomNode.style.bottom = '0px';\r\n }\r\n if (typeof opts.right !== 'undefined') {\r\n this.bgDomNode.style.right = '0px';\r\n }\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = opts.className;\r\n this.domNode.classList.add(...opts.icon.classNamesArray);\r\n this.domNode.style.position = 'absolute';\r\n this.domNode.style.width = ARROW_IMG_SIZE + 'px';\r\n this.domNode.style.height = ARROW_IMG_SIZE + 'px';\r\n if (typeof opts.top !== 'undefined') {\r\n this.domNode.style.top = opts.top + 'px';\r\n }\r\n if (typeof opts.left !== 'undefined') {\r\n this.domNode.style.left = opts.left + 'px';\r\n }\r\n if (typeof opts.bottom !== 'undefined') {\r\n this.domNode.style.bottom = opts.bottom + 'px';\r\n }\r\n if (typeof opts.right !== 'undefined') {\r\n this.domNode.style.right = opts.right + 'px';\r\n }\r\n this._mouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this.onmousedown(this.bgDomNode, (e) => this._arrowMouseDown(e));\r\n this.onmousedown(this.domNode, (e) => this._arrowMouseDown(e));\r\n this._mousedownRepeatTimer = this._register(new IntervalTimer());\r\n this._mousedownScheduleRepeatTimer = this._register(new TimeoutTimer());\r\n }\r\n _arrowMouseDown(e) {\r\n const scheduleRepeater = () => {\r\n this._mousedownRepeatTimer.cancelAndSet(() => this._onActivate(), 1000 / 24);\r\n };\r\n this._onActivate();\r\n this._mousedownRepeatTimer.cancel();\r\n this._mousedownScheduleRepeatTimer.cancelAndSet(scheduleRepeater, 200);\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, (mouseMoveData) => {\r\n /* Intentional empty */\r\n }, () => {\r\n this._mousedownRepeatTimer.cancel();\r\n this._mousedownScheduleRepeatTimer.cancel();\r\n });\r\n e.preventDefault();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nexport class ScrollbarVisibilityController extends Disposable {\r\n constructor(visibility, visibleClassName, invisibleClassName) {\r\n super();\r\n this._visibility = visibility;\r\n this._visibleClassName = visibleClassName;\r\n this._invisibleClassName = invisibleClassName;\r\n this._domNode = null;\r\n this._isVisible = false;\r\n this._isNeeded = false;\r\n this._rawShouldBeVisible = false;\r\n this._shouldBeVisible = false;\r\n this._revealTimer = this._register(new TimeoutTimer());\r\n }\r\n setVisibility(visibility) {\r\n if (this._visibility !== visibility) {\r\n this._visibility = visibility;\r\n this._updateShouldBeVisible();\r\n }\r\n }\r\n // ----------------- Hide / Reveal\r\n setShouldBeVisible(rawShouldBeVisible) {\r\n this._rawShouldBeVisible = rawShouldBeVisible;\r\n this._updateShouldBeVisible();\r\n }\r\n _applyVisibilitySetting() {\r\n if (this._visibility === 2 /* Hidden */) {\r\n return false;\r\n }\r\n if (this._visibility === 3 /* Visible */) {\r\n return true;\r\n }\r\n return this._rawShouldBeVisible;\r\n }\r\n _updateShouldBeVisible() {\r\n const shouldBeVisible = this._applyVisibilitySetting();\r\n if (this._shouldBeVisible !== shouldBeVisible) {\r\n this._shouldBeVisible = shouldBeVisible;\r\n this.ensureVisibility();\r\n }\r\n }\r\n setIsNeeded(isNeeded) {\r\n if (this._isNeeded !== isNeeded) {\r\n this._isNeeded = isNeeded;\r\n this.ensureVisibility();\r\n }\r\n }\r\n setDomNode(domNode) {\r\n this._domNode = domNode;\r\n this._domNode.setClassName(this._invisibleClassName);\r\n // Now that the flags & the dom node are in a consistent state, ensure the Hidden/Visible configuration\r\n this.setShouldBeVisible(false);\r\n }\r\n ensureVisibility() {\r\n if (!this._isNeeded) {\r\n // Nothing to be rendered\r\n this._hide(false);\r\n return;\r\n }\r\n if (this._shouldBeVisible) {\r\n this._reveal();\r\n }\r\n else {\r\n this._hide(true);\r\n }\r\n }\r\n _reveal() {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n // The CSS animation doesn't play otherwise\r\n this._revealTimer.setIfNotSet(() => {\r\n if (this._domNode) {\r\n this._domNode.setClassName(this._visibleClassName);\r\n }\r\n }, 0);\r\n }\r\n _hide(withFadeAway) {\r\n this._revealTimer.cancel();\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n if (this._domNode) {\r\n this._domNode.setClassName(this._invisibleClassName + (withFadeAway ? ' fade' : ''));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../dom.js';\r\nimport { createFastDomNode } from '../../fastDomNode.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../globalMouseMoveMonitor.js';\r\nimport { ScrollbarArrow } from './scrollbarArrow.js';\r\nimport { ScrollbarVisibilityController } from './scrollbarVisibilityController.js';\r\nimport { Widget } from '../widget.js';\r\nimport * as platform from '../../../common/platform.js';\r\n/**\r\n * The orthogonal distance to the slider at which dragging \"resets\". This implements \"snapping\"\r\n */\r\nconst MOUSE_DRAG_RESET_DISTANCE = 140;\r\nexport class AbstractScrollbar extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._lazyRender = opts.lazyRender;\r\n this._host = opts.host;\r\n this._scrollable = opts.scrollable;\r\n this._scrollByPage = opts.scrollByPage;\r\n this._scrollbarState = opts.scrollbarState;\r\n this._visibilityController = this._register(new ScrollbarVisibilityController(opts.visibility, 'visible scrollbar ' + opts.extraScrollbarClassName, 'invisible scrollbar ' + opts.extraScrollbarClassName));\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._mouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this._shouldRender = true;\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setAttribute('role', 'presentation');\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this._visibilityController.setDomNode(this.domNode);\r\n this.domNode.setPosition('absolute');\r\n this.onmousedown(this.domNode.domNode, (e) => this._domNodeMouseDown(e));\r\n }\r\n // ----------------- creation\r\n /**\r\n * Creates the dom node for an arrow & adds it to the container\r\n */\r\n _createArrow(opts) {\r\n const arrow = this._register(new ScrollbarArrow(opts));\r\n this.domNode.domNode.appendChild(arrow.bgDomNode);\r\n this.domNode.domNode.appendChild(arrow.domNode);\r\n }\r\n /**\r\n * Creates the slider dom node, adds it to the container & hooks up the events\r\n */\r\n _createSlider(top, left, width, height) {\r\n this.slider = createFastDomNode(document.createElement('div'));\r\n this.slider.setClassName('slider');\r\n this.slider.setPosition('absolute');\r\n this.slider.setTop(top);\r\n this.slider.setLeft(left);\r\n if (typeof width === 'number') {\r\n this.slider.setWidth(width);\r\n }\r\n if (typeof height === 'number') {\r\n this.slider.setHeight(height);\r\n }\r\n this.slider.setLayerHinting(true);\r\n this.slider.setContain('strict');\r\n this.domNode.domNode.appendChild(this.slider.domNode);\r\n this.onmousedown(this.slider.domNode, (e) => {\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n });\r\n this.onclick(this.slider.domNode, e => {\r\n if (e.leftButton) {\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n // ----------------- Update state\r\n _onElementSize(visibleSize) {\r\n if (this._scrollbarState.setVisibleSize(visibleSize)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n _onElementScrollSize(elementScrollSize) {\r\n if (this._scrollbarState.setScrollSize(elementScrollSize)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n _onElementScrollPosition(elementScrollPosition) {\r\n if (this._scrollbarState.setScrollPosition(elementScrollPosition)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n // ----------------- rendering\r\n beginReveal() {\r\n this._visibilityController.setShouldBeVisible(true);\r\n }\r\n beginHide() {\r\n this._visibilityController.setShouldBeVisible(false);\r\n }\r\n render() {\r\n if (!this._shouldRender) {\r\n return;\r\n }\r\n this._shouldRender = false;\r\n this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize());\r\n this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition());\r\n }\r\n // ----------------- DOM events\r\n _domNodeMouseDown(e) {\r\n if (e.target !== this.domNode.domNode) {\r\n return;\r\n }\r\n this._onMouseDown(e);\r\n }\r\n delegateMouseDown(e) {\r\n const domTop = this.domNode.domNode.getClientRects()[0].top;\r\n const sliderStart = domTop + this._scrollbarState.getSliderPosition();\r\n const sliderStop = domTop + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize();\r\n const mousePos = this._sliderMousePosition(e);\r\n if (sliderStart <= mousePos && mousePos <= sliderStop) {\r\n // Act as if it was a mouse down on the slider\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n }\r\n else {\r\n // Act as if it was a mouse down on the scrollbar\r\n this._onMouseDown(e);\r\n }\r\n }\r\n _onMouseDown(e) {\r\n let offsetX;\r\n let offsetY;\r\n if (e.target === this.domNode.domNode && typeof e.browserEvent.offsetX === 'number' && typeof e.browserEvent.offsetY === 'number') {\r\n offsetX = e.browserEvent.offsetX;\r\n offsetY = e.browserEvent.offsetY;\r\n }\r\n else {\r\n const domNodePosition = dom.getDomNodePagePosition(this.domNode.domNode);\r\n offsetX = e.posx - domNodePosition.left;\r\n offsetY = e.posy - domNodePosition.top;\r\n }\r\n const offset = this._mouseDownRelativePosition(offsetX, offsetY);\r\n this._setDesiredScrollPositionNow(this._scrollByPage\r\n ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(offset)\r\n : this._scrollbarState.getDesiredScrollPositionFromOffset(offset));\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n }\r\n _sliderMouseDown(e, onDragFinished) {\r\n const initialMousePosition = this._sliderMousePosition(e);\r\n const initialMouseOrthogonalPosition = this._sliderOrthogonalMousePosition(e);\r\n const initialScrollbarState = this._scrollbarState.clone();\r\n this.slider.toggleClassName('active', true);\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, (mouseMoveData) => {\r\n const mouseOrthogonalPosition = this._sliderOrthogonalMousePosition(mouseMoveData);\r\n const mouseOrthogonalDelta = Math.abs(mouseOrthogonalPosition - initialMouseOrthogonalPosition);\r\n if (platform.isWindows && mouseOrthogonalDelta > MOUSE_DRAG_RESET_DISTANCE) {\r\n // The mouse has wondered away from the scrollbar => reset dragging\r\n this._setDesiredScrollPositionNow(initialScrollbarState.getScrollPosition());\r\n return;\r\n }\r\n const mousePosition = this._sliderMousePosition(mouseMoveData);\r\n const mouseDelta = mousePosition - initialMousePosition;\r\n this._setDesiredScrollPositionNow(initialScrollbarState.getDesiredScrollPositionFromDelta(mouseDelta));\r\n }, () => {\r\n this.slider.toggleClassName('active', false);\r\n this._host.onDragEnd();\r\n onDragFinished();\r\n });\r\n this._host.onDragStart();\r\n }\r\n _setDesiredScrollPositionNow(_desiredScrollPosition) {\r\n const desiredScrollPosition = {};\r\n this.writeScrollPosition(desiredScrollPosition, _desiredScrollPosition);\r\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\r\n }\r\n updateScrollbarSize(scrollbarSize) {\r\n this._updateScrollbarSize(scrollbarSize);\r\n this._scrollbarState.setScrollbarSize(scrollbarSize);\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n isNeeded() {\r\n return this._scrollbarState.isNeeded();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * The minimal size of the slider (such that it can still be clickable) -- it is artificially enlarged.\r\n */\r\nconst MINIMUM_SLIDER_SIZE = 20;\r\nexport class ScrollbarState {\r\n constructor(arrowSize, scrollbarSize, oppositeScrollbarSize, visibleSize, scrollSize, scrollPosition) {\r\n this._scrollbarSize = Math.round(scrollbarSize);\r\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\r\n this._arrowSize = Math.round(arrowSize);\r\n this._visibleSize = visibleSize;\r\n this._scrollSize = scrollSize;\r\n this._scrollPosition = scrollPosition;\r\n this._computedAvailableSize = 0;\r\n this._computedIsNeeded = false;\r\n this._computedSliderSize = 0;\r\n this._computedSliderRatio = 0;\r\n this._computedSliderPosition = 0;\r\n this._refreshComputedValues();\r\n }\r\n clone() {\r\n return new ScrollbarState(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition);\r\n }\r\n setVisibleSize(visibleSize) {\r\n const iVisibleSize = Math.round(visibleSize);\r\n if (this._visibleSize !== iVisibleSize) {\r\n this._visibleSize = iVisibleSize;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollSize(scrollSize) {\r\n const iScrollSize = Math.round(scrollSize);\r\n if (this._scrollSize !== iScrollSize) {\r\n this._scrollSize = iScrollSize;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollPosition(scrollPosition) {\r\n const iScrollPosition = Math.round(scrollPosition);\r\n if (this._scrollPosition !== iScrollPosition) {\r\n this._scrollPosition = iScrollPosition;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollbarSize(scrollbarSize) {\r\n this._scrollbarSize = Math.round(scrollbarSize);\r\n }\r\n setOppositeScrollbarSize(oppositeScrollbarSize) {\r\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\r\n }\r\n static _computeValues(oppositeScrollbarSize, arrowSize, visibleSize, scrollSize, scrollPosition) {\r\n const computedAvailableSize = Math.max(0, visibleSize - oppositeScrollbarSize);\r\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * arrowSize);\r\n const computedIsNeeded = (scrollSize > 0 && scrollSize > visibleSize);\r\n if (!computedIsNeeded) {\r\n // There is no need for a slider\r\n return {\r\n computedAvailableSize: Math.round(computedAvailableSize),\r\n computedIsNeeded: computedIsNeeded,\r\n computedSliderSize: Math.round(computedRepresentableSize),\r\n computedSliderRatio: 0,\r\n computedSliderPosition: 0,\r\n };\r\n }\r\n // We must artificially increase the size of the slider if needed, since the slider would be too small to grab with the mouse otherwise\r\n const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollSize)));\r\n // The slider can move from 0 to `computedRepresentableSize` - `computedSliderSize`\r\n // in the same way `scrollPosition` can move from 0 to `scrollSize` - `visibleSize`.\r\n const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollSize - visibleSize);\r\n const computedSliderPosition = (scrollPosition * computedSliderRatio);\r\n return {\r\n computedAvailableSize: Math.round(computedAvailableSize),\r\n computedIsNeeded: computedIsNeeded,\r\n computedSliderSize: Math.round(computedSliderSize),\r\n computedSliderRatio: computedSliderRatio,\r\n computedSliderPosition: Math.round(computedSliderPosition),\r\n };\r\n }\r\n _refreshComputedValues() {\r\n const r = ScrollbarState._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);\r\n this._computedAvailableSize = r.computedAvailableSize;\r\n this._computedIsNeeded = r.computedIsNeeded;\r\n this._computedSliderSize = r.computedSliderSize;\r\n this._computedSliderRatio = r.computedSliderRatio;\r\n this._computedSliderPosition = r.computedSliderPosition;\r\n }\r\n getArrowSize() {\r\n return this._arrowSize;\r\n }\r\n getScrollPosition() {\r\n return this._scrollPosition;\r\n }\r\n getRectangleLargeSize() {\r\n return this._computedAvailableSize;\r\n }\r\n getRectangleSmallSize() {\r\n return this._scrollbarSize;\r\n }\r\n isNeeded() {\r\n return this._computedIsNeeded;\r\n }\r\n getSliderSize() {\r\n return this._computedSliderSize;\r\n }\r\n getSliderPosition() {\r\n return this._computedSliderPosition;\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` such that `offset` ends up in the center of the slider.\r\n * `offset` is based on the same coordinate system as the `sliderPosition`.\r\n */\r\n getDesiredScrollPositionFromOffset(offset) {\r\n if (!this._computedIsNeeded) {\r\n // no need for a slider\r\n return 0;\r\n }\r\n const desiredSliderPosition = offset - this._arrowSize - this._computedSliderSize / 2;\r\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` from if offset is before or after the slider position.\r\n * If offset is before slider, treat as a page up (or left). If after, page down (or right).\r\n * `offset` and `_computedSliderPosition` are based on the same coordinate system.\r\n * `_visibleSize` corresponds to a \"page\" of lines in the returned coordinate system.\r\n */\r\n getDesiredScrollPositionFromOffsetPaged(offset) {\r\n if (!this._computedIsNeeded) {\r\n // no need for a slider\r\n return 0;\r\n }\r\n const correctedOffset = offset - this._arrowSize; // compensate if has arrows\r\n let desiredScrollPosition = this._scrollPosition;\r\n if (correctedOffset < this._computedSliderPosition) {\r\n desiredScrollPosition -= this._visibleSize; // page up/left\r\n }\r\n else {\r\n desiredScrollPosition += this._visibleSize; // page down/right\r\n }\r\n return desiredScrollPosition;\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` such that the slider moves by `delta`.\r\n */\r\n getDesiredScrollPositionFromDelta(delta) {\r\n if (!this._computedIsNeeded) {\r\n // no need for a slider\r\n return 0;\r\n }\r\n const desiredSliderPosition = this._computedSliderPosition + delta;\r\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { AbstractScrollbar } from './abstractScrollbar.js';\r\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\r\nimport { ScrollbarState } from './scrollbarState.js';\r\nimport { Codicon, registerCodicon } from '../../../common/codicons.js';\r\nconst scrollbarButtonLeftIcon = registerCodicon('scrollbar-button-left', Codicon.triangleLeft);\r\nconst scrollbarButtonRightIcon = registerCodicon('scrollbar-button-right', Codicon.triangleRight);\r\nexport class HorizontalScrollbar extends AbstractScrollbar {\r\n constructor(scrollable, options, host) {\r\n const scrollDimensions = scrollable.getScrollDimensions();\r\n const scrollPosition = scrollable.getCurrentScrollPosition();\r\n super({\r\n lazyRender: options.lazyRender,\r\n host: host,\r\n scrollbarState: new ScrollbarState((options.horizontalHasArrows ? options.arrowSize : 0), (options.horizontal === 2 /* Hidden */ ? 0 : options.horizontalScrollbarSize), (options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize), scrollDimensions.width, scrollDimensions.scrollWidth, scrollPosition.scrollLeft),\r\n visibility: options.horizontal,\r\n extraScrollbarClassName: 'horizontal',\r\n scrollable: scrollable,\r\n scrollByPage: options.scrollByPage\r\n });\r\n if (options.horizontalHasArrows) {\r\n const arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\r\n const scrollbarDelta = (options.horizontalScrollbarSize - ARROW_IMG_SIZE) / 2;\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonLeftIcon,\r\n top: scrollbarDelta,\r\n left: arrowDelta,\r\n bottom: undefined,\r\n right: undefined,\r\n bgWidth: options.arrowSize,\r\n bgHeight: options.horizontalScrollbarSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 1, 0)),\r\n });\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonRightIcon,\r\n top: scrollbarDelta,\r\n left: undefined,\r\n bottom: undefined,\r\n right: arrowDelta,\r\n bgWidth: options.arrowSize,\r\n bgHeight: options.horizontalScrollbarSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, -1, 0)),\r\n });\r\n }\r\n this._createSlider(Math.floor((options.horizontalScrollbarSize - options.horizontalSliderSize) / 2), 0, undefined, options.horizontalSliderSize);\r\n }\r\n _updateSlider(sliderSize, sliderPosition) {\r\n this.slider.setWidth(sliderSize);\r\n this.slider.setLeft(sliderPosition);\r\n }\r\n _renderDomNode(largeSize, smallSize) {\r\n this.domNode.setWidth(largeSize);\r\n this.domNode.setHeight(smallSize);\r\n this.domNode.setLeft(0);\r\n this.domNode.setBottom(0);\r\n }\r\n onDidScroll(e) {\r\n this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender;\r\n this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender;\r\n this._shouldRender = this._onElementSize(e.width) || this._shouldRender;\r\n return this._shouldRender;\r\n }\r\n _mouseDownRelativePosition(offsetX, offsetY) {\r\n return offsetX;\r\n }\r\n _sliderMousePosition(e) {\r\n return e.posx;\r\n }\r\n _sliderOrthogonalMousePosition(e) {\r\n return e.posy;\r\n }\r\n _updateScrollbarSize(size) {\r\n this.slider.setHeight(size);\r\n }\r\n writeScrollPosition(target, scrollPosition) {\r\n target.scrollLeft = scrollPosition;\r\n }\r\n updateOptions(options) {\r\n this.updateScrollbarSize(options.horizontal === 2 /* Hidden */ ? 0 : options.horizontalScrollbarSize);\r\n this._scrollbarState.setOppositeScrollbarSize(options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize);\r\n this._visibilityController.setVisibility(options.horizontal);\r\n this._scrollByPage = options.scrollByPage;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { AbstractScrollbar } from './abstractScrollbar.js';\r\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\r\nimport { ScrollbarState } from './scrollbarState.js';\r\nimport { Codicon, registerCodicon } from '../../../common/codicons.js';\r\nconst scrollbarButtonUpIcon = registerCodicon('scrollbar-button-up', Codicon.triangleUp);\r\nconst scrollbarButtonDownIcon = registerCodicon('scrollbar-button-down', Codicon.triangleDown);\r\nexport class VerticalScrollbar extends AbstractScrollbar {\r\n constructor(scrollable, options, host) {\r\n const scrollDimensions = scrollable.getScrollDimensions();\r\n const scrollPosition = scrollable.getCurrentScrollPosition();\r\n super({\r\n lazyRender: options.lazyRender,\r\n host: host,\r\n scrollbarState: new ScrollbarState((options.verticalHasArrows ? options.arrowSize : 0), (options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize), \r\n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\r\n 0, scrollDimensions.height, scrollDimensions.scrollHeight, scrollPosition.scrollTop),\r\n visibility: options.vertical,\r\n extraScrollbarClassName: 'vertical',\r\n scrollable: scrollable,\r\n scrollByPage: options.scrollByPage\r\n });\r\n if (options.verticalHasArrows) {\r\n const arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\r\n const scrollbarDelta = (options.verticalScrollbarSize - ARROW_IMG_SIZE) / 2;\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonUpIcon,\r\n top: arrowDelta,\r\n left: scrollbarDelta,\r\n bottom: undefined,\r\n right: undefined,\r\n bgWidth: options.verticalScrollbarSize,\r\n bgHeight: options.arrowSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, 1)),\r\n });\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonDownIcon,\r\n top: undefined,\r\n left: scrollbarDelta,\r\n bottom: arrowDelta,\r\n right: undefined,\r\n bgWidth: options.verticalScrollbarSize,\r\n bgHeight: options.arrowSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, -1)),\r\n });\r\n }\r\n this._createSlider(0, Math.floor((options.verticalScrollbarSize - options.verticalSliderSize) / 2), options.verticalSliderSize, undefined);\r\n }\r\n _updateSlider(sliderSize, sliderPosition) {\r\n this.slider.setHeight(sliderSize);\r\n this.slider.setTop(sliderPosition);\r\n }\r\n _renderDomNode(largeSize, smallSize) {\r\n this.domNode.setWidth(smallSize);\r\n this.domNode.setHeight(largeSize);\r\n this.domNode.setRight(0);\r\n this.domNode.setTop(0);\r\n }\r\n onDidScroll(e) {\r\n this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender;\r\n this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender;\r\n this._shouldRender = this._onElementSize(e.height) || this._shouldRender;\r\n return this._shouldRender;\r\n }\r\n _mouseDownRelativePosition(offsetX, offsetY) {\r\n return offsetY;\r\n }\r\n _sliderMousePosition(e) {\r\n return e.posy;\r\n }\r\n _sliderOrthogonalMousePosition(e) {\r\n return e.posx;\r\n }\r\n _updateScrollbarSize(size) {\r\n this.slider.setWidth(size);\r\n }\r\n writeScrollPosition(target, scrollPosition) {\r\n target.scrollTop = scrollPosition;\r\n }\r\n updateOptions(options) {\r\n this.updateScrollbarSize(options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize);\r\n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\r\n this._scrollbarState.setOppositeScrollbarSize(0);\r\n this._visibilityController.setVisibility(options.vertical);\r\n this._scrollByPage = options.scrollByPage;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/scrollbars.css';\r\nimport * as dom from '../../dom.js';\r\nimport { createFastDomNode } from '../../fastDomNode.js';\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { HorizontalScrollbar } from './horizontalScrollbar.js';\r\nimport { VerticalScrollbar } from './verticalScrollbar.js';\r\nimport { Widget } from '../widget.js';\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { dispose } from '../../../common/lifecycle.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { Scrollable } from '../../../common/scrollable.js';\r\nimport { getZoomFactor } from '../../browser.js';\r\nconst HIDE_TIMEOUT = 500;\r\nconst SCROLL_WHEEL_SENSITIVITY = 50;\r\nconst SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED = true;\r\nclass MouseWheelClassifierItem {\r\n constructor(timestamp, deltaX, deltaY) {\r\n this.timestamp = timestamp;\r\n this.deltaX = deltaX;\r\n this.deltaY = deltaY;\r\n this.score = 0;\r\n }\r\n}\r\nexport class MouseWheelClassifier {\r\n constructor() {\r\n this._capacity = 5;\r\n this._memory = [];\r\n this._front = -1;\r\n this._rear = -1;\r\n }\r\n isPhysicalMouseWheel() {\r\n if (this._front === -1 && this._rear === -1) {\r\n // no elements\r\n return false;\r\n }\r\n // 0.5 * last + 0.25 * 2nd last + 0.125 * 3rd last + ...\r\n let remainingInfluence = 1;\r\n let score = 0;\r\n let iteration = 1;\r\n let index = this._rear;\r\n do {\r\n const influence = (index === this._front ? remainingInfluence : Math.pow(2, -iteration));\r\n remainingInfluence -= influence;\r\n score += this._memory[index].score * influence;\r\n if (index === this._front) {\r\n break;\r\n }\r\n index = (this._capacity + index - 1) % this._capacity;\r\n iteration++;\r\n } while (true);\r\n return (score <= 0.5);\r\n }\r\n accept(timestamp, deltaX, deltaY) {\r\n const item = new MouseWheelClassifierItem(timestamp, deltaX, deltaY);\r\n item.score = this._computeScore(item);\r\n if (this._front === -1 && this._rear === -1) {\r\n this._memory[0] = item;\r\n this._front = 0;\r\n this._rear = 0;\r\n }\r\n else {\r\n this._rear = (this._rear + 1) % this._capacity;\r\n if (this._rear === this._front) {\r\n // Drop oldest\r\n this._front = (this._front + 1) % this._capacity;\r\n }\r\n this._memory[this._rear] = item;\r\n }\r\n }\r\n /**\r\n * A score between 0 and 1 for `item`.\r\n * - a score towards 0 indicates that the source appears to be a physical mouse wheel\r\n * - a score towards 1 indicates that the source appears to be a touchpad or magic mouse, etc.\r\n */\r\n _computeScore(item) {\r\n if (Math.abs(item.deltaX) > 0 && Math.abs(item.deltaY) > 0) {\r\n // both axes exercised => definitely not a physical mouse wheel\r\n return 1;\r\n }\r\n let score = 0.5;\r\n const prev = (this._front === -1 && this._rear === -1 ? null : this._memory[this._rear]);\r\n if (prev) {\r\n // const deltaT = item.timestamp - prev.timestamp;\r\n // if (deltaT < 1000 / 30) {\r\n // \t// sooner than X times per second => indicator that this is not a physical mouse wheel\r\n // \tscore += 0.25;\r\n // }\r\n // if (item.deltaX === prev.deltaX && item.deltaY === prev.deltaY) {\r\n // \t// equal amplitude => indicator that this is a physical mouse wheel\r\n // \tscore -= 0.25;\r\n // }\r\n }\r\n if (!this._isAlmostInt(item.deltaX) || !this._isAlmostInt(item.deltaY)) {\r\n // non-integer deltas => indicator that this is not a physical mouse wheel\r\n score += 0.25;\r\n }\r\n return Math.min(Math.max(score, 0), 1);\r\n }\r\n _isAlmostInt(value) {\r\n const delta = Math.abs(Math.round(value) - value);\r\n return (delta < 0.01);\r\n }\r\n}\r\nMouseWheelClassifier.INSTANCE = new MouseWheelClassifier();\r\nexport class AbstractScrollableElement extends Widget {\r\n constructor(element, options, scrollable) {\r\n super();\r\n this._onScroll = this._register(new Emitter());\r\n this.onScroll = this._onScroll.event;\r\n this._onWillScroll = this._register(new Emitter());\r\n element.style.overflow = 'hidden';\r\n this._options = resolveOptions(options);\r\n this._scrollable = scrollable;\r\n this._register(this._scrollable.onScroll((e) => {\r\n this._onWillScroll.fire(e);\r\n this._onDidScroll(e);\r\n this._onScroll.fire(e);\r\n }));\r\n const scrollbarHost = {\r\n onMouseWheel: (mouseWheelEvent) => this._onMouseWheel(mouseWheelEvent),\r\n onDragStart: () => this._onDragStart(),\r\n onDragEnd: () => this._onDragEnd(),\r\n };\r\n this._verticalScrollbar = this._register(new VerticalScrollbar(this._scrollable, this._options, scrollbarHost));\r\n this._horizontalScrollbar = this._register(new HorizontalScrollbar(this._scrollable, this._options, scrollbarHost));\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.style.position = 'relative';\r\n this._domNode.style.overflow = 'hidden';\r\n this._domNode.appendChild(element);\r\n this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode);\r\n this._domNode.appendChild(this._verticalScrollbar.domNode.domNode);\r\n if (this._options.useShadows) {\r\n this._leftShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._leftShadowDomNode.setClassName('shadow');\r\n this._domNode.appendChild(this._leftShadowDomNode.domNode);\r\n this._topShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._topShadowDomNode.setClassName('shadow');\r\n this._domNode.appendChild(this._topShadowDomNode.domNode);\r\n this._topLeftShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._topLeftShadowDomNode.setClassName('shadow');\r\n this._domNode.appendChild(this._topLeftShadowDomNode.domNode);\r\n }\r\n else {\r\n this._leftShadowDomNode = null;\r\n this._topShadowDomNode = null;\r\n this._topLeftShadowDomNode = null;\r\n }\r\n this._listenOnDomNode = this._options.listenOnDomNode || this._domNode;\r\n this._mouseWheelToDispose = [];\r\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\r\n this.onmouseover(this._listenOnDomNode, (e) => this._onMouseOver(e));\r\n this.onnonbubblingmouseout(this._listenOnDomNode, (e) => this._onMouseOut(e));\r\n this._hideTimeout = this._register(new TimeoutTimer());\r\n this._isDragging = false;\r\n this._mouseIsOver = false;\r\n this._shouldRender = true;\r\n this._revealOnScroll = true;\r\n }\r\n dispose() {\r\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\r\n super.dispose();\r\n }\r\n /**\r\n * Get the generated 'scrollable' dom node\r\n */\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getOverviewRulerLayoutInfo() {\r\n return {\r\n parent: this._domNode,\r\n insertBefore: this._verticalScrollbar.domNode.domNode,\r\n };\r\n }\r\n /**\r\n * Delegate a mouse down event to the vertical scrollbar.\r\n * This is to help with clicking somewhere else and having the scrollbar react.\r\n */\r\n delegateVerticalScrollbarMouseDown(browserEvent) {\r\n this._verticalScrollbar.delegateMouseDown(browserEvent);\r\n }\r\n getScrollDimensions() {\r\n return this._scrollable.getScrollDimensions();\r\n }\r\n setScrollDimensions(dimensions) {\r\n this._scrollable.setScrollDimensions(dimensions, false);\r\n }\r\n /**\r\n * Update the class name of the scrollable element.\r\n */\r\n updateClassName(newClassName) {\r\n this._options.className = newClassName;\r\n // Defaults are different on Macs\r\n if (platform.isMacintosh) {\r\n this._options.className += ' mac';\r\n }\r\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\r\n }\r\n /**\r\n * Update configuration options for the scrollbar.\r\n */\r\n updateOptions(newOptions) {\r\n if (typeof newOptions.handleMouseWheel !== 'undefined') {\r\n this._options.handleMouseWheel = newOptions.handleMouseWheel;\r\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\r\n }\r\n if (typeof newOptions.mouseWheelScrollSensitivity !== 'undefined') {\r\n this._options.mouseWheelScrollSensitivity = newOptions.mouseWheelScrollSensitivity;\r\n }\r\n if (typeof newOptions.fastScrollSensitivity !== 'undefined') {\r\n this._options.fastScrollSensitivity = newOptions.fastScrollSensitivity;\r\n }\r\n if (typeof newOptions.scrollPredominantAxis !== 'undefined') {\r\n this._options.scrollPredominantAxis = newOptions.scrollPredominantAxis;\r\n }\r\n if (typeof newOptions.horizontal !== 'undefined') {\r\n this._options.horizontal = newOptions.horizontal;\r\n }\r\n if (typeof newOptions.vertical !== 'undefined') {\r\n this._options.vertical = newOptions.vertical;\r\n }\r\n if (typeof newOptions.horizontalScrollbarSize !== 'undefined') {\r\n this._options.horizontalScrollbarSize = newOptions.horizontalScrollbarSize;\r\n }\r\n if (typeof newOptions.verticalScrollbarSize !== 'undefined') {\r\n this._options.verticalScrollbarSize = newOptions.verticalScrollbarSize;\r\n }\r\n if (typeof newOptions.scrollByPage !== 'undefined') {\r\n this._options.scrollByPage = newOptions.scrollByPage;\r\n }\r\n this._horizontalScrollbar.updateOptions(this._options);\r\n this._verticalScrollbar.updateOptions(this._options);\r\n if (!this._options.lazyRender) {\r\n this._render();\r\n }\r\n }\r\n // -------------------- mouse wheel scrolling --------------------\r\n _setListeningToMouseWheel(shouldListen) {\r\n const isListening = (this._mouseWheelToDispose.length > 0);\r\n if (isListening === shouldListen) {\r\n // No change\r\n return;\r\n }\r\n // Stop listening (if necessary)\r\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\r\n // Start listening (if necessary)\r\n if (shouldListen) {\r\n const onMouseWheel = (browserEvent) => {\r\n this._onMouseWheel(new StandardWheelEvent(browserEvent));\r\n };\r\n this._mouseWheelToDispose.push(dom.addDisposableListener(this._listenOnDomNode, dom.EventType.MOUSE_WHEEL, onMouseWheel, { passive: false }));\r\n }\r\n }\r\n _onMouseWheel(e) {\r\n const classifier = MouseWheelClassifier.INSTANCE;\r\n if (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED) {\r\n const osZoomFactor = window.devicePixelRatio / getZoomFactor();\r\n if (platform.isWindows || platform.isLinux) {\r\n // On Windows and Linux, the incoming delta events are multiplied with the OS zoom factor.\r\n // The OS zoom factor can be reverse engineered by using the device pixel ratio and the configured zoom factor into account.\r\n classifier.accept(Date.now(), e.deltaX / osZoomFactor, e.deltaY / osZoomFactor);\r\n }\r\n else {\r\n classifier.accept(Date.now(), e.deltaX, e.deltaY);\r\n }\r\n }\r\n // console.log(`${Date.now()}, ${e.deltaY}, ${e.deltaX}`);\r\n let didScroll = false;\r\n if (e.deltaY || e.deltaX) {\r\n let deltaY = e.deltaY * this._options.mouseWheelScrollSensitivity;\r\n let deltaX = e.deltaX * this._options.mouseWheelScrollSensitivity;\r\n if (this._options.scrollPredominantAxis) {\r\n if (Math.abs(deltaY) >= Math.abs(deltaX)) {\r\n deltaX = 0;\r\n }\r\n else {\r\n deltaY = 0;\r\n }\r\n }\r\n if (this._options.flipAxes) {\r\n [deltaY, deltaX] = [deltaX, deltaY];\r\n }\r\n // Convert vertical scrolling to horizontal if shift is held, this\r\n // is handled at a higher level on Mac\r\n const shiftConvert = !platform.isMacintosh && e.browserEvent && e.browserEvent.shiftKey;\r\n if ((this._options.scrollYToX || shiftConvert) && !deltaX) {\r\n deltaX = deltaY;\r\n deltaY = 0;\r\n }\r\n if (e.browserEvent && e.browserEvent.altKey) {\r\n // fastScrolling\r\n deltaX = deltaX * this._options.fastScrollSensitivity;\r\n deltaY = deltaY * this._options.fastScrollSensitivity;\r\n }\r\n const futureScrollPosition = this._scrollable.getFutureScrollPosition();\r\n let desiredScrollPosition = {};\r\n if (deltaY) {\r\n const desiredScrollTop = futureScrollPosition.scrollTop - SCROLL_WHEEL_SENSITIVITY * deltaY;\r\n this._verticalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollTop);\r\n }\r\n if (deltaX) {\r\n const desiredScrollLeft = futureScrollPosition.scrollLeft - SCROLL_WHEEL_SENSITIVITY * deltaX;\r\n this._horizontalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollLeft);\r\n }\r\n // Check that we are scrolling towards a location which is valid\r\n desiredScrollPosition = this._scrollable.validateScrollPosition(desiredScrollPosition);\r\n if (futureScrollPosition.scrollLeft !== desiredScrollPosition.scrollLeft || futureScrollPosition.scrollTop !== desiredScrollPosition.scrollTop) {\r\n const canPerformSmoothScroll = (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED\r\n && this._options.mouseWheelSmoothScroll\r\n && classifier.isPhysicalMouseWheel());\r\n if (canPerformSmoothScroll) {\r\n this._scrollable.setScrollPositionSmooth(desiredScrollPosition);\r\n }\r\n else {\r\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\r\n }\r\n didScroll = true;\r\n }\r\n }\r\n let consumeMouseWheel = didScroll;\r\n if (!consumeMouseWheel && this._options.alwaysConsumeMouseWheel) {\r\n consumeMouseWheel = true;\r\n }\r\n if (!consumeMouseWheel && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded())) {\r\n consumeMouseWheel = true;\r\n }\r\n if (consumeMouseWheel) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n _onDidScroll(e) {\r\n this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender;\r\n this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender;\r\n if (this._options.useShadows) {\r\n this._shouldRender = true;\r\n }\r\n if (this._revealOnScroll) {\r\n this._reveal();\r\n }\r\n if (!this._options.lazyRender) {\r\n this._render();\r\n }\r\n }\r\n /**\r\n * Render / mutate the DOM now.\r\n * Should be used together with the ctor option `lazyRender`.\r\n */\r\n renderNow() {\r\n if (!this._options.lazyRender) {\r\n throw new Error('Please use `lazyRender` together with `renderNow`!');\r\n }\r\n this._render();\r\n }\r\n _render() {\r\n if (!this._shouldRender) {\r\n return;\r\n }\r\n this._shouldRender = false;\r\n this._horizontalScrollbar.render();\r\n this._verticalScrollbar.render();\r\n if (this._options.useShadows) {\r\n const scrollState = this._scrollable.getCurrentScrollPosition();\r\n const enableTop = scrollState.scrollTop > 0;\r\n const enableLeft = scrollState.scrollLeft > 0;\r\n const leftClassName = (enableLeft ? ' left' : '');\r\n const topClassName = (enableTop ? ' top' : '');\r\n const topLeftClassName = (enableLeft || enableTop ? ' top-left-corner' : '');\r\n this._leftShadowDomNode.setClassName(`shadow${leftClassName}`);\r\n this._topShadowDomNode.setClassName(`shadow${topClassName}`);\r\n this._topLeftShadowDomNode.setClassName(`shadow${topLeftClassName}${topClassName}${leftClassName}`);\r\n }\r\n }\r\n // -------------------- fade in / fade out --------------------\r\n _onDragStart() {\r\n this._isDragging = true;\r\n this._reveal();\r\n }\r\n _onDragEnd() {\r\n this._isDragging = false;\r\n this._hide();\r\n }\r\n _onMouseOut(e) {\r\n this._mouseIsOver = false;\r\n this._hide();\r\n }\r\n _onMouseOver(e) {\r\n this._mouseIsOver = true;\r\n this._reveal();\r\n }\r\n _reveal() {\r\n this._verticalScrollbar.beginReveal();\r\n this._horizontalScrollbar.beginReveal();\r\n this._scheduleHide();\r\n }\r\n _hide() {\r\n if (!this._mouseIsOver && !this._isDragging) {\r\n this._verticalScrollbar.beginHide();\r\n this._horizontalScrollbar.beginHide();\r\n }\r\n }\r\n _scheduleHide() {\r\n if (!this._mouseIsOver && !this._isDragging) {\r\n this._hideTimeout.cancelAndSet(() => this._hide(), HIDE_TIMEOUT);\r\n }\r\n }\r\n}\r\nexport class ScrollableElement extends AbstractScrollableElement {\r\n constructor(element, options) {\r\n options = options || {};\r\n options.mouseWheelSmoothScroll = false;\r\n const scrollable = new Scrollable(0, (callback) => dom.scheduleAtNextAnimationFrame(callback));\r\n super(element, options, scrollable);\r\n this._register(scrollable);\r\n }\r\n setScrollPosition(update) {\r\n this._scrollable.setScrollPositionNow(update);\r\n }\r\n}\r\nexport class SmoothScrollableElement extends AbstractScrollableElement {\r\n constructor(element, options, scrollable) {\r\n super(element, options, scrollable);\r\n }\r\n setScrollPosition(update) {\r\n if (update.reuseAnimation) {\r\n this._scrollable.setScrollPositionSmooth(update, update.reuseAnimation);\r\n }\r\n else {\r\n this._scrollable.setScrollPositionNow(update);\r\n }\r\n }\r\n getScrollPosition() {\r\n return this._scrollable.getCurrentScrollPosition();\r\n }\r\n}\r\nexport class DomScrollableElement extends ScrollableElement {\r\n constructor(element, options) {\r\n super(element, options);\r\n this._element = element;\r\n this.onScroll((e) => {\r\n if (e.scrollTopChanged) {\r\n this._element.scrollTop = e.scrollTop;\r\n }\r\n if (e.scrollLeftChanged) {\r\n this._element.scrollLeft = e.scrollLeft;\r\n }\r\n });\r\n this.scanDomNode();\r\n }\r\n scanDomNode() {\r\n // width, scrollLeft, scrollWidth, height, scrollTop, scrollHeight\r\n this.setScrollDimensions({\r\n width: this._element.clientWidth,\r\n scrollWidth: this._element.scrollWidth,\r\n height: this._element.clientHeight,\r\n scrollHeight: this._element.scrollHeight\r\n });\r\n this.setScrollPosition({\r\n scrollLeft: this._element.scrollLeft,\r\n scrollTop: this._element.scrollTop,\r\n });\r\n }\r\n}\r\nfunction resolveOptions(opts) {\r\n const result = {\r\n lazyRender: (typeof opts.lazyRender !== 'undefined' ? opts.lazyRender : false),\r\n className: (typeof opts.className !== 'undefined' ? opts.className : ''),\r\n useShadows: (typeof opts.useShadows !== 'undefined' ? opts.useShadows : true),\r\n handleMouseWheel: (typeof opts.handleMouseWheel !== 'undefined' ? opts.handleMouseWheel : true),\r\n flipAxes: (typeof opts.flipAxes !== 'undefined' ? opts.flipAxes : false),\r\n consumeMouseWheelIfScrollbarIsNeeded: (typeof opts.consumeMouseWheelIfScrollbarIsNeeded !== 'undefined' ? opts.consumeMouseWheelIfScrollbarIsNeeded : false),\r\n alwaysConsumeMouseWheel: (typeof opts.alwaysConsumeMouseWheel !== 'undefined' ? opts.alwaysConsumeMouseWheel : false),\r\n scrollYToX: (typeof opts.scrollYToX !== 'undefined' ? opts.scrollYToX : false),\r\n mouseWheelScrollSensitivity: (typeof opts.mouseWheelScrollSensitivity !== 'undefined' ? opts.mouseWheelScrollSensitivity : 1),\r\n fastScrollSensitivity: (typeof opts.fastScrollSensitivity !== 'undefined' ? opts.fastScrollSensitivity : 5),\r\n scrollPredominantAxis: (typeof opts.scrollPredominantAxis !== 'undefined' ? opts.scrollPredominantAxis : true),\r\n mouseWheelSmoothScroll: (typeof opts.mouseWheelSmoothScroll !== 'undefined' ? opts.mouseWheelSmoothScroll : true),\r\n arrowSize: (typeof opts.arrowSize !== 'undefined' ? opts.arrowSize : 11),\r\n listenOnDomNode: (typeof opts.listenOnDomNode !== 'undefined' ? opts.listenOnDomNode : null),\r\n horizontal: (typeof opts.horizontal !== 'undefined' ? opts.horizontal : 1 /* Auto */),\r\n horizontalScrollbarSize: (typeof opts.horizontalScrollbarSize !== 'undefined' ? opts.horizontalScrollbarSize : 10),\r\n horizontalSliderSize: (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : 0),\r\n horizontalHasArrows: (typeof opts.horizontalHasArrows !== 'undefined' ? opts.horizontalHasArrows : false),\r\n vertical: (typeof opts.vertical !== 'undefined' ? opts.vertical : 1 /* Auto */),\r\n verticalScrollbarSize: (typeof opts.verticalScrollbarSize !== 'undefined' ? opts.verticalScrollbarSize : 10),\r\n verticalHasArrows: (typeof opts.verticalHasArrows !== 'undefined' ? opts.verticalHasArrows : false),\r\n verticalSliderSize: (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : 0),\r\n scrollByPage: (typeof opts.scrollByPage !== 'undefined' ? opts.scrollByPage : false)\r\n };\r\n result.horizontalSliderSize = (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : result.horizontalScrollbarSize);\r\n result.verticalSliderSize = (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : result.verticalScrollbarSize);\r\n // Defaults are different on Macs\r\n if (platform.isMacintosh) {\r\n result.className += ' mac';\r\n }\r\n return result;\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./splitview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./splitview.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './splitview.css';\r\nimport { toDisposable, Disposable, combinedDisposable } from '../../../common/lifecycle.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { clamp } from '../../../common/numbers.js';\r\nimport { range, pushToStart, pushToEnd } from '../../../common/arrays.js';\r\nimport { Sash } from '../sash/sash.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { $, addDisposableListener, append, scheduleAtNextAnimationFrame } from '../../dom.js';\r\nimport { SmoothScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { Scrollable } from '../../../common/scrollable.js';\r\nconst defaultStyles = {\r\n separatorBorder: Color.transparent\r\n};\r\nclass ViewItem {\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n container.classList.add('visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n setVisible(visible, size) {\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize = typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n this.container.classList.toggle('visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n get minimumSize() { return this.visible ? this.view.minimumSize : 0; }\r\n get viewMinimumSize() { return this.view.minimumSize; }\r\n get maximumSize() { return this.visible ? this.view.maximumSize : 0; }\r\n get viewMaximumSize() { return this.view.maximumSize; }\r\n get priority() { return this.view.priority; }\r\n get snap() { return !!this.view.snap; }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n layout(offset, layoutContext) {\r\n this.layoutContainer(offset);\r\n this.view.layout(this.size, offset, layoutContext);\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\nclass VerticalViewItem extends ViewItem {\r\n layoutContainer(offset) {\r\n this.container.style.top = `${offset}px`;\r\n this.container.style.height = `${this.size}px`;\r\n }\r\n}\r\nclass HorizontalViewItem extends ViewItem {\r\n layoutContainer(offset) {\r\n this.container.style.left = `${offset}px`;\r\n this.container.style.width = `${this.size}px`;\r\n }\r\n}\r\nvar State;\r\n(function (State) {\r\n State[State[\"Idle\"] = 0] = \"Idle\";\r\n State[State[\"Busy\"] = 1] = \"Busy\";\r\n})(State || (State = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) { return { type: 'split', index }; }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) { return { type: 'invisible', cachedVisibleSize }; }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class SplitView extends Disposable {\r\n constructor(container, options = {}) {\r\n var _a, _b;\r\n super();\r\n this.size = 0;\r\n this.contentSize = 0;\r\n this.proportions = undefined;\r\n this.viewItems = [];\r\n this.sashItems = [];\r\n this.state = State.Idle;\r\n this._onDidSashChange = this._register(new Emitter());\r\n this.onDidSashChange = this._onDidSashChange.event;\r\n this._onDidSashReset = this._register(new Emitter());\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this.orientation = types.isUndefined(options.orientation) ? 0 /* VERTICAL */ : options.orientation;\r\n this.inverseAltBehavior = !!options.inverseAltBehavior;\r\n this.proportionalLayout = types.isUndefined(options.proportionalLayout) ? true : !!options.proportionalLayout;\r\n this.getSashOrthogonalSize = options.getSashOrthogonalSize;\r\n this.el = document.createElement('div');\r\n this.el.classList.add('monaco-split-view2');\r\n this.el.classList.add(this.orientation === 0 /* VERTICAL */ ? 'vertical' : 'horizontal');\r\n container.appendChild(this.el);\r\n this.sashContainer = append(this.el, $('.sash-container'));\r\n this.viewContainer = $('.split-view-container');\r\n this.scrollable = new Scrollable(125, scheduleAtNextAnimationFrame);\r\n this.scrollableElement = this._register(new SmoothScrollableElement(this.viewContainer, {\r\n vertical: this.orientation === 0 /* VERTICAL */ ? ((_a = options.scrollbarVisibility) !== null && _a !== void 0 ? _a : 1 /* Auto */) : 2 /* Hidden */,\r\n horizontal: this.orientation === 1 /* HORIZONTAL */ ? ((_b = options.scrollbarVisibility) !== null && _b !== void 0 ? _b : 1 /* Auto */) : 2 /* Hidden */\r\n }, this.scrollable));\r\n this.onDidScroll = this.scrollableElement.onScroll;\r\n this._register(this.onDidScroll(e => {\r\n this.viewContainer.scrollTop = e.scrollTop;\r\n this.viewContainer.scrollLeft = e.scrollLeft;\r\n }));\r\n append(this.el, this.scrollableElement.getDomNode());\r\n this.style(options.styles || defaultStyles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this.size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = types.isUndefined(viewDescriptor.visible) || viewDescriptor.visible ? viewDescriptor.size : { type: 'invisible', cachedVisibleSize: viewDescriptor.size };\r\n const view = viewDescriptor.view;\r\n this.doAddView(view, sizing, index, true);\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n get orthogonalStartSash() { return this._orthogonalStartSash; }\r\n set orthogonalStartSash(sash) {\r\n for (const sashItem of this.sashItems) {\r\n sashItem.sash.orthogonalStartSash = sash;\r\n }\r\n this._orthogonalStartSash = sash;\r\n }\r\n get orthogonalEndSash() { return this._orthogonalEndSash; }\r\n set orthogonalEndSash(sash) {\r\n for (const sashItem of this.sashItems) {\r\n sashItem.sash.orthogonalEndSash = sash;\r\n }\r\n this._orthogonalEndSash = sash;\r\n }\r\n get startSnappingEnabled() { return this._startSnappingEnabled; }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() { return this._endSnappingEnabled; }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n style(styles) {\r\n if (styles.separatorBorder.isTransparent()) {\r\n this.el.classList.remove('separator-border');\r\n this.el.style.removeProperty('--separator-border');\r\n }\r\n else {\r\n this.el.classList.add('separator-border');\r\n this.el.style.setProperty('--separator-border', styles.separatorBorder.toString());\r\n }\r\n }\r\n addView(view, size, index = this.viewItems.length, skipLayout) {\r\n this.doAddView(view, size, index, skipLayout);\r\n }\r\n layout(size, layoutContext) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.layoutContext = layoutContext;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this.proportions = this.viewItems.map(i => i.size / this.contentSize);\r\n }\r\n }\r\n onSashStart({ sash, start, alt }) {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const index = this.sashItems.findIndex(item => item.sash === sash);\r\n // This way, we can press Alt while we resize a sash, macOS style!\r\n const disposable = combinedDisposable(addDisposableListener(document.body, 'keydown', e => resetSashDragState(this.sashDragState.current, e.altKey)), addDisposableListener(document.body, 'keyup', () => resetSashDragState(this.sashDragState.current, false)));\r\n const resetSashDragState = (start, alt) => {\r\n const sizes = this.viewItems.map(i => i.size);\r\n let minDelta = Number.NEGATIVE_INFINITY;\r\n let maxDelta = Number.POSITIVE_INFINITY;\r\n if (this.inverseAltBehavior) {\r\n alt = !alt;\r\n }\r\n if (alt) {\r\n // When we're using the last sash with Alt, we're resizing\r\n // the view to the left/up, instead of right/down as usual\r\n // Thus, we must do the inverse of the usual\r\n const isLastSash = index === this.sashItems.length - 1;\r\n if (isLastSash) {\r\n const viewItem = this.viewItems[index];\r\n minDelta = (viewItem.minimumSize - viewItem.size) / 2;\r\n maxDelta = (viewItem.maximumSize - viewItem.size) / 2;\r\n }\r\n else {\r\n const viewItem = this.viewItems[index + 1];\r\n minDelta = (viewItem.size - viewItem.maximumSize) / 2;\r\n maxDelta = (viewItem.size - viewItem.minimumSize) / 2;\r\n }\r\n }\r\n let snapBefore;\r\n let snapAfter;\r\n if (!alt) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const viewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize,\r\n size: viewItem.size\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const viewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize,\r\n size: viewItem.size\r\n };\r\n }\r\n }\r\n this.sashDragState = { start, current: start, index, sizes, minDelta, maxDelta, alt, snapBefore, snapAfter, disposable };\r\n };\r\n resetSashDragState(start, alt);\r\n }\r\n onSashChange({ current }) {\r\n const { index, start, sizes, alt, minDelta, maxDelta, snapBefore, snapAfter } = this.sashDragState;\r\n this.sashDragState.current = current;\r\n const delta = current - start;\r\n const newDelta = this.resize(index, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n if (alt) {\r\n const isLastSash = index === this.sashItems.length - 1;\r\n const newSizes = this.viewItems.map(i => i.size);\r\n const viewItemIndex = isLastSash ? index : index + 1;\r\n const viewItem = this.viewItems[viewItemIndex];\r\n const newMinDelta = viewItem.size - viewItem.maximumSize;\r\n const newMaxDelta = viewItem.size - viewItem.minimumSize;\r\n const resizeIndex = isLastSash ? index - 1 : index + 1;\r\n this.resize(resizeIndex, -newDelta, newSizes, undefined, undefined, newMinDelta, newMaxDelta);\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n onSashEnd(index) {\r\n this._onDidSashChange.fire(index);\r\n this.sashDragState.disposable.dispose();\r\n this.saveProportions();\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n }\r\n onViewChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n if (this.inverseAltBehavior && index > 0) {\r\n // In this case, we want the view to grow or shrink both sides equally\r\n // so we just resize the \"left\" side by half and let `resize` do the clamping magic\r\n this.resize(index - 1, Math.floor((item.size - size) / 2));\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n else {\r\n item.size = size;\r\n this.relayout([index], undefined);\r\n }\r\n }\r\n resizeView(index, size) {\r\n if (this.state !== State.Idle) {\r\n throw new Error('Cant modify splitview');\r\n }\r\n this.state = State.Busy;\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter(i => i !== index);\r\n const lowPriorityIndexes = [...indexes.filter(i => this.viewItems[i].priority === 1 /* Low */), index];\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this.size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n this.state = State.Idle;\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n doAddView(view, size, index = this.viewItems.length, skipLayout) {\r\n if (this.state !== State.Idle) {\r\n throw new Error('Cant modify splitview');\r\n }\r\n this.state = State.Busy;\r\n // Add view\r\n const container = $('.split-view-view');\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n const onChangeDisposable = view.onDidChange(size => this.onViewChange(item, size));\r\n const containerDisposable = toDisposable(() => this.viewContainer.removeChild(container));\r\n const disposable = combinedDisposable(onChangeDisposable, containerDisposable);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const item = this.orientation === 0 /* VERTICAL */\r\n ? new VerticalViewItem(container, view, viewSize, disposable)\r\n : new HorizontalViewItem(container, view, viewSize, disposable);\r\n this.viewItems.splice(index, 0, item);\r\n // Add sash\r\n if (this.viewItems.length > 1) {\r\n let opts = { orthogonalStartSash: this.orthogonalStartSash, orthogonalEndSash: this.orthogonalEndSash };\r\n const sash = this.orientation === 0 /* VERTICAL */\r\n ? new Sash(this.sashContainer, { getHorizontalSashTop: s => this.getSashPosition(s), getHorizontalSashWidth: this.getSashOrthogonalSize }, Object.assign(Object.assign({}, opts), { orientation: 1 /* HORIZONTAL */ }))\r\n : new Sash(this.sashContainer, { getVerticalSashLeft: s => this.getSashPosition(s), getVerticalSashHeight: this.getSashOrthogonalSize }, Object.assign(Object.assign({}, opts), { orientation: 0 /* VERTICAL */ }));\r\n const sashEventMapper = this.orientation === 0 /* VERTICAL */\r\n ? (e) => ({ sash, start: e.startY, current: e.currentY, alt: e.altKey })\r\n : (e) => ({ sash, start: e.startX, current: e.currentX, alt: e.altKey });\r\n const onStart = Event.map(sash.onDidStart, sashEventMapper);\r\n const onStartDisposable = onStart(this.onSashStart, this);\r\n const onChange = Event.map(sash.onDidChange, sashEventMapper);\r\n const onChangeDisposable = onChange(this.onSashChange, this);\r\n const onEnd = Event.map(sash.onDidEnd, () => this.sashItems.findIndex(item => item.sash === sash));\r\n const onEndDisposable = onEnd(this.onSashEnd, this);\r\n const onDidResetDisposable = sash.onDidReset(() => {\r\n const index = this.sashItems.findIndex(item => item.sash === sash);\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible) {\r\n return;\r\n }\r\n if (typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible) {\r\n return;\r\n }\r\n this._onDidSashReset.fire(index);\r\n });\r\n const disposable = combinedDisposable(onStartDisposable, onChangeDisposable, onEndDisposable, onDidResetDisposable, sash);\r\n const sashItem = { sash, disposable };\r\n this.sashItems.splice(index - 1, 0, sashItem);\r\n }\r\n container.appendChild(view.element);\r\n let highPriorityIndexes;\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n highPriorityIndexes = [size.index];\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index], highPriorityIndexes);\r\n }\r\n this.state = State.Idle;\r\n if (!skipLayout && typeof size !== 'number' && size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this.size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n resize(index, delta, sizes = this.viewItems.map(i => i.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n if (highPriorityIndexes) {\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(upIndexes, index);\r\n pushToStart(downIndexes, index);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, index);\r\n pushToEnd(downIndexes, index);\r\n }\r\n }\r\n const upItems = upIndexes.map(i => this.viewItems[i]);\r\n const upSizes = upIndexes.map(i => sizes[i]);\r\n const downItems = downIndexes.map(i => this.viewItems[i]);\r\n const downSizes = downIndexes.map(i => sizes[i]);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].maximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].maximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown, overloadMinDelta);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp, overloadMaxDelta);\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n delta = clamp(delta, minDelta, maxDelta);\r\n for (let i = 0, deltaUp = delta; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n for (let i = 0, deltaDown = delta; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n return delta;\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n layoutViews() {\r\n // Save new content size\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n // Layout views\r\n let offset = 0;\r\n for (const viewItem of this.viewItems) {\r\n viewItem.layout(offset, this.layoutContext);\r\n offset += viewItem.size;\r\n }\r\n // Layout sashes\r\n this.sashItems.forEach(item => item.sash.layout());\r\n this.updateSashEnablement();\r\n this.updateScrollableElement();\r\n }\r\n updateScrollableElement() {\r\n if (this.orientation === 0 /* VERTICAL */) {\r\n this.scrollableElement.setScrollDimensions({\r\n height: this.size,\r\n scrollHeight: this.contentSize\r\n });\r\n }\r\n else {\r\n this.scrollableElement.setScrollDimensions({\r\n width: this.size,\r\n scrollWidth: this.contentSize\r\n });\r\n }\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map(i => previous = (i.size - i.minimumSize > 0) || previous);\r\n previous = false;\r\n const expandsDown = this.viewItems.map(i => previous = (i.maximumSize - i.size > 0) || previous);\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews.map(i => previous = (i.size - i.minimumSize > 0) || previous).reverse();\r\n previous = false;\r\n const expandsUp = reverseViews.map(i => previous = (i.maximumSize - i.size > 0) || previous).reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashItems.length; index++) {\r\n const { sash } = this.sashItems[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore && collapsesUp[index] && (position > 0 || this.startSnappingEnabled)) {\r\n sash.state = 1 /* Minimum */;\r\n }\r\n else if (snappedAfter && collapsesDown[index] && (position < this.contentSize || this.endSnappingEnabled)) {\r\n sash.state = 2 /* Maximum */;\r\n }\r\n else {\r\n sash.state = 0 /* Disabled */;\r\n }\r\n }\r\n else if (min && !max) {\r\n sash.state = 1 /* Minimum */;\r\n }\r\n else if (!min && max) {\r\n sash.state = 2 /* Maximum */;\r\n }\r\n else {\r\n sash.state = 3 /* Enabled */;\r\n }\r\n }\r\n }\r\n getSashPosition(sash) {\r\n let position = 0;\r\n for (let i = 0; i < this.sashItems.length; i++) {\r\n position += this.viewItems[i].size;\r\n if (this.sashItems[i].sash === sash) {\r\n return position;\r\n }\r\n }\r\n return 0;\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible && viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.viewItems.forEach(i => i.dispose());\r\n this.viewItems = [];\r\n this.sashItems.forEach(i => i.disposable.dispose());\r\n this.sashItems = [];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../dom.js';\r\nimport { StandardKeyboardEvent } from '../keyboardEvent.js';\r\nimport { StandardMouseEvent } from '../mouseEvent.js';\r\nimport { Disposable } from '../../common/lifecycle.js';\r\nimport { Gesture } from '../touch.js';\r\nexport class Widget extends Disposable {\r\n onclick(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.CLICK, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onmousedown(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.MOUSE_DOWN, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onmouseover(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.MOUSE_OVER, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onnonbubblingmouseout(domNode, listener) {\r\n this._register(dom.addDisposableNonBubblingMouseOutListener(domNode, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onkeydown(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => listener(new StandardKeyboardEvent(e))));\r\n }\r\n onkeyup(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_UP, (e) => listener(new StandardKeyboardEvent(e))));\r\n }\r\n oninput(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.INPUT, listener));\r\n }\r\n onblur(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.BLUR, listener));\r\n }\r\n onfocus(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.FOCUS, listener));\r\n }\r\n ignoreGesture(domNode) {\r\n Gesture.ignoreTarget(domNode);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../nls.js';\r\nimport { Disposable } from './lifecycle.js';\r\nimport { Emitter } from './event.js';\r\nexport class Action extends Disposable {\r\n constructor(id, label = '', cssClass = '', enabled = true, actionCallback) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._enabled = true;\r\n this._checked = false;\r\n this._id = id;\r\n this._label = label;\r\n this._cssClass = cssClass;\r\n this._enabled = enabled;\r\n this._actionCallback = actionCallback;\r\n }\r\n get id() {\r\n return this._id;\r\n }\r\n get label() {\r\n return this._label;\r\n }\r\n set label(value) {\r\n this._setLabel(value);\r\n }\r\n _setLabel(value) {\r\n if (this._label !== value) {\r\n this._label = value;\r\n this._onDidChange.fire({ label: value });\r\n }\r\n }\r\n get tooltip() {\r\n return this._tooltip || '';\r\n }\r\n set tooltip(value) {\r\n this._setTooltip(value);\r\n }\r\n _setTooltip(value) {\r\n if (this._tooltip !== value) {\r\n this._tooltip = value;\r\n this._onDidChange.fire({ tooltip: value });\r\n }\r\n }\r\n get class() {\r\n return this._cssClass;\r\n }\r\n set class(value) {\r\n this._setClass(value);\r\n }\r\n _setClass(value) {\r\n if (this._cssClass !== value) {\r\n this._cssClass = value;\r\n this._onDidChange.fire({ class: value });\r\n }\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(value) {\r\n this._setEnabled(value);\r\n }\r\n _setEnabled(value) {\r\n if (this._enabled !== value) {\r\n this._enabled = value;\r\n this._onDidChange.fire({ enabled: value });\r\n }\r\n }\r\n get checked() {\r\n return this._checked;\r\n }\r\n set checked(value) {\r\n this._setChecked(value);\r\n }\r\n _setChecked(value) {\r\n if (this._checked !== value) {\r\n this._checked = value;\r\n this._onDidChange.fire({ checked: value });\r\n }\r\n }\r\n run(event, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._actionCallback) {\r\n yield this._actionCallback(event);\r\n }\r\n });\r\n }\r\n}\r\nexport class ActionRunner extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this._onBeforeRun = this._register(new Emitter());\r\n this.onBeforeRun = this._onBeforeRun.event;\r\n this._onDidRun = this._register(new Emitter());\r\n this.onDidRun = this._onDidRun.event;\r\n }\r\n run(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!action.enabled) {\r\n return;\r\n }\r\n this._onBeforeRun.fire({ action });\r\n let error = undefined;\r\n try {\r\n yield this.runAction(action, context);\r\n }\r\n catch (e) {\r\n error = e;\r\n }\r\n this._onDidRun.fire({ action, error });\r\n });\r\n }\r\n runAction(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield action.run(context);\r\n });\r\n }\r\n}\r\nexport class Separator extends Action {\r\n constructor(label) {\r\n super(Separator.ID, label, label ? 'separator text' : 'separator');\r\n this.checked = false;\r\n this.enabled = false;\r\n }\r\n}\r\nSeparator.ID = 'vs.actions.separator';\r\nexport class SubmenuAction {\r\n constructor(id, label, actions, cssClass) {\r\n this.tooltip = '';\r\n this.enabled = true;\r\n this.checked = false;\r\n this.id = id;\r\n this.label = label;\r\n this.class = cssClass;\r\n this._actions = actions;\r\n }\r\n get actions() { return this._actions; }\r\n dispose() {\r\n // there is NOTHING to dispose and the SubmenuAction should\r\n // never have anything to dispose as it is a convenience type\r\n // to bridge into the rendering world.\r\n }\r\n run() {\r\n return __awaiter(this, void 0, void 0, function* () { });\r\n }\r\n}\r\nexport class EmptySubmenuAction extends Action {\r\n constructor() {\r\n super(EmptySubmenuAction.ID, nls.localize('submenu.empty', '(empty)'), undefined, false);\r\n }\r\n}\r\nEmptySubmenuAction.ID = 'vs.actions.empty';\r\n","/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nexport function tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nexport function tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexport function binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nexport function findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\nexport function quickSelect(nth, data, compare) {\r\n nth = nth | 0;\r\n if (nth >= data.length) {\r\n throw new TypeError('invalid index');\r\n }\r\n let pivotValue = data[Math.floor(data.length * Math.random())];\r\n let lower = [];\r\n let higher = [];\r\n let pivots = [];\r\n for (let value of data) {\r\n const val = compare(value, pivotValue);\r\n if (val < 0) {\r\n lower.push(value);\r\n }\r\n else if (val > 0) {\r\n higher.push(value);\r\n }\r\n else {\r\n pivots.push(value);\r\n }\r\n }\r\n if (nth < lower.length) {\r\n return quickSelect(nth, lower, compare);\r\n }\r\n else if (nth < lower.length + pivots.length) {\r\n return pivots[0];\r\n }\r\n else {\r\n return quickSelect(nth - (lower.length + pivots.length), higher, compare);\r\n }\r\n}\r\nexport function groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of data.slice(0).sort(compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nexport function coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nexport function isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nexport function isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nexport function distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nexport function distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\nexport function firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nexport function flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nexport function range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nexport function arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n/**\r\n * Insert the new items in the array.\r\n * @param array The original array.\r\n * @param start The zero-based location in the array from which to start inserting elements.\r\n * @param newItems The items to be inserted\r\n */\r\nexport function insertInto(array, start, newItems) {\r\n const startIdx = getActualStartIndex(array, start);\r\n const originalLength = array.length;\r\n const newItemsLength = newItems.length;\r\n array.length = originalLength + newItemsLength;\r\n // Move the items after the start index, start from the end so that we don't overwrite any value.\r\n for (let i = originalLength - 1; i >= startIdx; i--) {\r\n array[i + newItemsLength] = array[i];\r\n }\r\n for (let i = 0; i < newItemsLength; i++) {\r\n array[i + startIdx] = newItems[i];\r\n }\r\n}\r\n/**\r\n * Removes elements from an array and inserts new elements in their place, returning the deleted elements. Alternative to the native Array.splice method, it\r\n * can only support limited number of items due to the maximum call stack size limit.\r\n * @param array The original array.\r\n * @param start The zero-based location in the array from which to start removing elements.\r\n * @param deleteCount The number of elements to remove.\r\n * @returns An array containing the elements that were deleted.\r\n */\r\nexport function splice(array, start, deleteCount, newItems) {\r\n const index = getActualStartIndex(array, start);\r\n const result = array.splice(index, deleteCount);\r\n insertInto(array, index, newItems);\r\n return result;\r\n}\r\n/**\r\n * Determine the actual start index (same logic as the native splice() or slice())\r\n * If greater than the length of the array, start will be set to the length of the array. In this case, no element will be deleted but the method will behave as an adding function, adding as many element as item[n*] provided.\r\n * If negative, it will begin that many elements from the end of the array. (In this case, the origin -1, meaning -n is the index of the nth last element, and is therefore equivalent to the index of array.length - n.) If array.length + start is less than 0, it will begin from index 0.\r\n * @param array The target array.\r\n * @param start The operation index.\r\n */\r\nfunction getActualStartIndex(array, start) {\r\n return start < 0 ? Math.max(start + array.length, 0) : Math.min(start, array.length);\r\n}\r\nexport class ArrayQueue {\r\n /**\r\n * Constructs a queue that is backed by the given array. Runtime is O(1).\r\n */\r\n constructor(items) {\r\n this.items = items;\r\n this.firstIdx = 0;\r\n this.lastIdx = this.items.length - 1;\r\n }\r\n /**\r\n * Consumes elements from the beginning of the queue as long as the predicate returns true.\r\n * If no elements were consumed, `null` is returned. Has a runtime of O(result.length).\r\n */\r\n takeWhile(predicate) {\r\n // P(k) := k <= this.lastIdx && predicate(this.items[k])\r\n // Find s := min { k | k >= this.firstIdx && !P(k) } and return this.data[this.firstIdx...s)\r\n let startIdx = this.firstIdx;\r\n while (startIdx < this.items.length && predicate(this.items[startIdx])) {\r\n startIdx++;\r\n }\r\n const result = startIdx === this.firstIdx ? null : this.items.slice(this.firstIdx, startIdx);\r\n this.firstIdx = startIdx;\r\n return result;\r\n }\r\n /**\r\n * Consumes elements from the end of the queue as long as the predicate returns true.\r\n * If no elements were consumed, `null` is returned.\r\n * The result has the same order as the underlying array!\r\n */\r\n takeFromEndWhile(predicate) {\r\n // P(k) := this.firstIdx >= k && predicate(this.items[k])\r\n // Find s := max { k | k <= this.lastIdx && !P(k) } and return this.data(s...this.lastIdx]\r\n let endIdx = this.lastIdx;\r\n while (endIdx >= 0 && predicate(this.items[endIdx])) {\r\n endIdx--;\r\n }\r\n const result = endIdx === this.lastIdx ? null : this.items.slice(endIdx + 1, this.lastIdx + 1);\r\n this.lastIdx = endIdx;\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value.\r\n */\r\nexport function ok(value, message) {\r\n if (!value) {\r\n throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationTokenSource } from './cancellation.js';\r\nimport { canceled } from './errors.js';\r\nimport { toDisposable } from './lifecycle.js';\r\nexport function isThenable(obj) {\r\n return !!obj && typeof obj.then === 'function';\r\n}\r\nexport function createCancelablePromise(callback) {\r\n const source = new CancellationTokenSource();\r\n const thenable = callback(source.token);\r\n const promise = new Promise((resolve, reject) => {\r\n const subscription = source.token.onCancellationRequested(() => {\r\n subscription.dispose();\r\n source.dispose();\r\n reject(canceled());\r\n });\r\n Promise.resolve(thenable).then(value => {\r\n subscription.dispose();\r\n source.dispose();\r\n resolve(value);\r\n }, err => {\r\n subscription.dispose();\r\n source.dispose();\r\n reject(err);\r\n });\r\n });\r\n return new class {\r\n cancel() {\r\n source.cancel();\r\n }\r\n then(resolve, reject) {\r\n return promise.then(resolve, reject);\r\n }\r\n catch(reject) {\r\n return this.then(undefined, reject);\r\n }\r\n finally(onfinally) {\r\n return promise.finally(onfinally);\r\n }\r\n };\r\n}\r\nexport function raceCancellation(promise, token, defaultValue) {\r\n return Promise.race([promise, new Promise(resolve => token.onCancellationRequested(() => resolve(defaultValue)))]);\r\n}\r\n/**\r\n * A helper to prevent accumulation of sequential async tasks.\r\n *\r\n * Imagine a mail man with the sole task of delivering letters. As soon as\r\n * a letter submitted for delivery, he drives to the destination, delivers it\r\n * and returns to his base. Imagine that during the trip, N more letters were submitted.\r\n * When the mail man returns, he picks those N letters and delivers them all in a\r\n * single trip. Even though N+1 submissions occurred, only 2 deliveries were made.\r\n *\r\n * The throttler implements this via the queue() method, by providing it a task\r\n * factory. Following the example:\r\n *\r\n * \t\tconst throttler = new Throttler();\r\n * \t\tconst letters = [];\r\n *\r\n * \t\tfunction deliver() {\r\n * \t\t\tconst lettersToDeliver = letters;\r\n * \t\t\tletters = [];\r\n * \t\t\treturn makeTheTrip(lettersToDeliver);\r\n * \t\t}\r\n *\r\n * \t\tfunction onLetterReceived(l) {\r\n * \t\t\tletters.push(l);\r\n * \t\t\tthrottler.queue(deliver);\r\n * \t\t}\r\n */\r\nexport class Throttler {\r\n constructor() {\r\n this.activePromise = null;\r\n this.queuedPromise = null;\r\n this.queuedPromiseFactory = null;\r\n }\r\n queue(promiseFactory) {\r\n if (this.activePromise) {\r\n this.queuedPromiseFactory = promiseFactory;\r\n if (!this.queuedPromise) {\r\n const onComplete = () => {\r\n this.queuedPromise = null;\r\n const result = this.queue(this.queuedPromiseFactory);\r\n this.queuedPromiseFactory = null;\r\n return result;\r\n };\r\n this.queuedPromise = new Promise(resolve => {\r\n this.activePromise.then(onComplete, onComplete).then(resolve);\r\n });\r\n }\r\n return new Promise((resolve, reject) => {\r\n this.queuedPromise.then(resolve, reject);\r\n });\r\n }\r\n this.activePromise = promiseFactory();\r\n return new Promise((resolve, reject) => {\r\n this.activePromise.then((result) => {\r\n this.activePromise = null;\r\n resolve(result);\r\n }, (err) => {\r\n this.activePromise = null;\r\n reject(err);\r\n });\r\n });\r\n }\r\n}\r\n/**\r\n * A helper to delay (debounce) execution of a task that is being requested often.\r\n *\r\n * Following the throttler, now imagine the mail man wants to optimize the number of\r\n * trips proactively. The trip itself can be long, so he decides not to make the trip\r\n * as soon as a letter is submitted. Instead he waits a while, in case more\r\n * letters are submitted. After said waiting period, if no letters were submitted, he\r\n * decides to make the trip. Imagine that N more letters were submitted after the first\r\n * one, all within a short period of time between each other. Even though N+1\r\n * submissions occurred, only 1 delivery was made.\r\n *\r\n * The delayer offers this behavior via the trigger() method, into which both the task\r\n * to be executed and the waiting period (delay) must be passed in as arguments. Following\r\n * the example:\r\n *\r\n * \t\tconst delayer = new Delayer(WAITING_PERIOD);\r\n * \t\tconst letters = [];\r\n *\r\n * \t\tfunction letterReceived(l) {\r\n * \t\t\tletters.push(l);\r\n * \t\t\tdelayer.trigger(() => { return makeTheTrip(); });\r\n * \t\t}\r\n */\r\nexport class Delayer {\r\n constructor(defaultDelay) {\r\n this.defaultDelay = defaultDelay;\r\n this.timeout = null;\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n this.doReject = null;\r\n this.task = null;\r\n }\r\n trigger(task, delay = this.defaultDelay) {\r\n this.task = task;\r\n this.cancelTimeout();\r\n if (!this.completionPromise) {\r\n this.completionPromise = new Promise((resolve, reject) => {\r\n this.doResolve = resolve;\r\n this.doReject = reject;\r\n }).then(() => {\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n if (this.task) {\r\n const task = this.task;\r\n this.task = null;\r\n return task();\r\n }\r\n return undefined;\r\n });\r\n }\r\n this.timeout = setTimeout(() => {\r\n this.timeout = null;\r\n if (this.doResolve) {\r\n this.doResolve(null);\r\n }\r\n }, delay);\r\n return this.completionPromise;\r\n }\r\n isTriggered() {\r\n return this.timeout !== null;\r\n }\r\n cancel() {\r\n this.cancelTimeout();\r\n if (this.completionPromise) {\r\n if (this.doReject) {\r\n this.doReject(canceled());\r\n }\r\n this.completionPromise = null;\r\n }\r\n }\r\n cancelTimeout() {\r\n if (this.timeout !== null) {\r\n clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n}\r\n/**\r\n * A helper to delay execution of a task that is being requested often, while\r\n * preventing accumulation of consecutive executions, while the task runs.\r\n *\r\n * The mail man is clever and waits for a certain amount of time, before going\r\n * out to deliver letters. While the mail man is going out, more letters arrive\r\n * and can only be delivered once he is back. Once he is back the mail man will\r\n * do one more trip to deliver the letters that have accumulated while he was out.\r\n */\r\nexport class ThrottledDelayer {\r\n constructor(defaultDelay) {\r\n this.delayer = new Delayer(defaultDelay);\r\n this.throttler = new Throttler();\r\n }\r\n trigger(promiseFactory, delay) {\r\n return this.delayer.trigger(() => this.throttler.queue(promiseFactory), delay);\r\n }\r\n dispose() {\r\n this.delayer.dispose();\r\n }\r\n}\r\nexport function timeout(millis, token) {\r\n if (!token) {\r\n return createCancelablePromise(token => timeout(millis, token));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const handle = setTimeout(() => {\r\n disposable.dispose();\r\n resolve();\r\n }, millis);\r\n const disposable = token.onCancellationRequested(() => {\r\n clearTimeout(handle);\r\n disposable.dispose();\r\n reject(canceled());\r\n });\r\n });\r\n}\r\nexport function disposableTimeout(handler, timeout = 0) {\r\n const timer = setTimeout(handler, timeout);\r\n return toDisposable(() => clearTimeout(timer));\r\n}\r\nexport function first(promiseFactories, shouldStop = t => !!t, defaultValue = null) {\r\n let index = 0;\r\n const len = promiseFactories.length;\r\n const loop = () => {\r\n if (index >= len) {\r\n return Promise.resolve(defaultValue);\r\n }\r\n const factory = promiseFactories[index++];\r\n const promise = Promise.resolve(factory());\r\n return promise.then(result => {\r\n if (shouldStop(result)) {\r\n return Promise.resolve(result);\r\n }\r\n return loop();\r\n });\r\n };\r\n return loop();\r\n}\r\nexport class TimeoutTimer {\r\n constructor(runner, timeout) {\r\n this._token = -1;\r\n if (typeof runner === 'function' && typeof timeout === 'number') {\r\n this.setIfNotSet(runner, timeout);\r\n }\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearTimeout(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, timeout) {\r\n this.cancel();\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n setIfNotSet(runner, timeout) {\r\n if (this._token !== -1) {\r\n // timer is already set\r\n return;\r\n }\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n}\r\nexport class IntervalTimer {\r\n constructor() {\r\n this._token = -1;\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearInterval(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, interval) {\r\n this.cancel();\r\n this._token = setInterval(() => {\r\n runner();\r\n }, interval);\r\n }\r\n}\r\nexport class RunOnceScheduler {\r\n constructor(runner, delay) {\r\n this.timeoutToken = -1;\r\n this.runner = runner;\r\n this.timeout = delay;\r\n this.timeoutHandler = this.onTimeout.bind(this);\r\n }\r\n /**\r\n * Dispose RunOnceScheduler\r\n */\r\n dispose() {\r\n this.cancel();\r\n this.runner = null;\r\n }\r\n /**\r\n * Cancel current scheduled runner (if any).\r\n */\r\n cancel() {\r\n if (this.isScheduled()) {\r\n clearTimeout(this.timeoutToken);\r\n this.timeoutToken = -1;\r\n }\r\n }\r\n /**\r\n * Cancel previous runner (if any) & schedule a new runner.\r\n */\r\n schedule(delay = this.timeout) {\r\n this.cancel();\r\n this.timeoutToken = setTimeout(this.timeoutHandler, delay);\r\n }\r\n get delay() {\r\n return this.timeout;\r\n }\r\n set delay(value) {\r\n this.timeout = value;\r\n }\r\n /**\r\n * Returns true if scheduled.\r\n */\r\n isScheduled() {\r\n return this.timeoutToken !== -1;\r\n }\r\n onTimeout() {\r\n this.timeoutToken = -1;\r\n if (this.runner) {\r\n this.doRun();\r\n }\r\n }\r\n doRun() {\r\n if (this.runner) {\r\n this.runner();\r\n }\r\n }\r\n}\r\n/**\r\n * Execute the callback the next time the browser is idle\r\n */\r\nexport let runWhenIdle;\r\n(function () {\r\n if (typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {\r\n const dummyIdle = Object.freeze({\r\n didTimeout: true,\r\n timeRemaining() { return 15; }\r\n });\r\n runWhenIdle = (runner) => {\r\n const handle = setTimeout(() => runner(dummyIdle));\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n clearTimeout(handle);\r\n }\r\n };\r\n };\r\n }\r\n else {\r\n runWhenIdle = (runner, timeout) => {\r\n const handle = requestIdleCallback(runner, typeof timeout === 'number' ? { timeout } : undefined);\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n cancelIdleCallback(handle);\r\n }\r\n };\r\n };\r\n }\r\n})();\r\n/**\r\n * An implementation of the \"idle-until-urgent\"-strategy as introduced\r\n * here: https://philipwalton.com/articles/idle-until-urgent/\r\n */\r\nexport class IdleValue {\r\n constructor(executor) {\r\n this._didRun = false;\r\n this._executor = () => {\r\n try {\r\n this._value = executor();\r\n }\r\n catch (err) {\r\n this._error = err;\r\n }\r\n finally {\r\n this._didRun = true;\r\n }\r\n };\r\n this._handle = runWhenIdle(() => this._executor());\r\n }\r\n dispose() {\r\n this._handle.dispose();\r\n }\r\n get value() {\r\n if (!this._didRun) {\r\n this._handle.dispose();\r\n this._executor();\r\n }\r\n if (this._error) {\r\n throw this._error;\r\n }\r\n return this._value;\r\n }\r\n}\r\n//#endregion\r\n//#region Promises\r\nexport var Promises;\r\n(function (Promises) {\r\n /**\r\n * A drop-in replacement for `Promise.all` with the only difference\r\n * that the method awaits every promise to either fulfill or reject.\r\n *\r\n * Similar to `Promise.all`, only the first error will be returned\r\n * if any.\r\n */\r\n function settled(promises) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let firstError = undefined;\r\n const result = yield Promise.all(promises.map(promise => promise.then(value => value, error => {\r\n if (!firstError) {\r\n firstError = error;\r\n }\r\n return undefined; // do not rethrow so that other promises can settle\r\n })));\r\n if (typeof firstError !== 'undefined') {\r\n throw firstError;\r\n }\r\n return result; // cast is needed and protected by the `throw` above\r\n });\r\n }\r\n Promises.settled = settled;\r\n})(Promises || (Promises = {}));\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nconst hasBuffer = (typeof Buffer !== 'undefined');\r\nconst hasTextDecoder = (typeof TextDecoder !== 'undefined');\r\nlet textDecoder;\r\nexport class VSBuffer {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n this.byteLength = this.buffer.byteLength;\r\n }\r\n static wrap(actual) {\r\n if (hasBuffer && !(Buffer.isBuffer(actual))) {\r\n // https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length\r\n // Create a zero-copy Buffer wrapper around the ArrayBuffer pointed to by the Uint8Array\r\n actual = Buffer.from(actual.buffer, actual.byteOffset, actual.byteLength);\r\n }\r\n return new VSBuffer(actual);\r\n }\r\n toString() {\r\n if (hasBuffer) {\r\n return this.buffer.toString();\r\n }\r\n else if (hasTextDecoder) {\r\n if (!textDecoder) {\r\n textDecoder = new TextDecoder();\r\n }\r\n return textDecoder.decode(this.buffer);\r\n }\r\n else {\r\n return strings.decodeUTF8(this.buffer);\r\n }\r\n }\r\n}\r\nexport function readUInt16LE(source, offset) {\r\n return (((source[offset + 0] << 0) >>> 0) |\r\n ((source[offset + 1] << 8) >>> 0));\r\n}\r\nexport function writeUInt16LE(destination, value, offset) {\r\n destination[offset + 0] = (value & 0b11111111);\r\n value = value >>> 8;\r\n destination[offset + 1] = (value & 0b11111111);\r\n}\r\nexport function readUInt32BE(source, offset) {\r\n return (source[offset] * Math.pow(2, 24)\r\n + source[offset + 1] * Math.pow(2, 16)\r\n + source[offset + 2] * Math.pow(2, 8)\r\n + source[offset + 3]);\r\n}\r\nexport function writeUInt32BE(destination, value, offset) {\r\n destination[offset + 3] = value;\r\n value = value >>> 8;\r\n destination[offset + 2] = value;\r\n value = value >>> 8;\r\n destination[offset + 1] = value;\r\n value = value >>> 8;\r\n destination[offset] = value;\r\n}\r\nexport function readUInt8(source, offset) {\r\n return source[offset];\r\n}\r\nexport function writeUInt8(destination, value, offset) {\r\n destination[offset] = value;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter, Event } from './event.js';\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nexport var CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nexport class CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from './event.js';\r\nclass Registry {\r\n constructor() {\r\n this._icons = new Map();\r\n this._onDidRegister = new Emitter();\r\n }\r\n add(icon) {\r\n const existing = this._icons.get(icon.id);\r\n if (!existing) {\r\n this._icons.set(icon.id, icon);\r\n this._onDidRegister.fire(icon);\r\n }\r\n else if (icon.description) {\r\n existing.description = icon.description;\r\n }\r\n else {\r\n console.error(`Duplicate registration of codicon ${icon.id}`);\r\n }\r\n }\r\n get(id) {\r\n return this._icons.get(id);\r\n }\r\n get all() {\r\n return this._icons.values();\r\n }\r\n get onDidRegister() {\r\n return this._onDidRegister.event;\r\n }\r\n}\r\nconst _registry = new Registry();\r\nexport const iconRegistry = _registry;\r\nexport function registerCodicon(id, def) {\r\n return new Codicon(id, def);\r\n}\r\n// Selects all codicon names encapsulated in the `$()` syntax and wraps the\r\n// results with spaces so that screen readers can read the text better.\r\nexport function getCodiconAriaLabel(text) {\r\n if (!text) {\r\n return '';\r\n }\r\n return text.replace(/\\$\\((.*?)\\)/g, (_match, codiconName) => ` ${codiconName} `).trim();\r\n}\r\nexport class Codicon {\r\n constructor(id, definition, description) {\r\n this.id = id;\r\n this.definition = definition;\r\n this.description = description;\r\n _registry.add(this);\r\n }\r\n get classNames() { return 'codicon codicon-' + this.id; }\r\n // classNamesArray is useful for migrating to ES6 classlist\r\n get classNamesArray() { return ['codicon', 'codicon-' + this.id]; }\r\n get cssSelector() { return '.codicon.codicon-' + this.id; }\r\n}\r\nexport var CSSIcon;\r\n(function (CSSIcon) {\r\n CSSIcon.iconNameSegment = '[A-Za-z0-9]+';\r\n CSSIcon.iconNameExpression = '[A-Za-z0-9\\\\-]+';\r\n CSSIcon.iconModifierExpression = '~[A-Za-z]+';\r\n const cssIconIdRegex = new RegExp(`^(${CSSIcon.iconNameExpression})(${CSSIcon.iconModifierExpression})?$`);\r\n function asClassNameArray(icon) {\r\n if (icon instanceof Codicon) {\r\n return ['codicon', 'codicon-' + icon.id];\r\n }\r\n const match = cssIconIdRegex.exec(icon.id);\r\n if (!match) {\r\n return asClassNameArray(Codicon.error);\r\n }\r\n let [, id, modifier] = match;\r\n const classNames = ['codicon', 'codicon-' + id];\r\n if (modifier) {\r\n classNames.push('codicon-modifier-' + modifier.substr(1));\r\n }\r\n return classNames;\r\n }\r\n CSSIcon.asClassNameArray = asClassNameArray;\r\n function asClassName(icon) {\r\n return asClassNameArray(icon).join(' ');\r\n }\r\n CSSIcon.asClassName = asClassName;\r\n function asCSSSelector(icon) {\r\n return '.' + asClassNameArray(icon).join('.');\r\n }\r\n CSSIcon.asCSSSelector = asCSSSelector;\r\n})(CSSIcon || (CSSIcon = {}));\r\n(function (Codicon) {\r\n // built-in icons, with image name\r\n Codicon.add = new Codicon('add', { fontCharacter: '\\\\ea60' });\r\n Codicon.plus = new Codicon('plus', { fontCharacter: '\\\\ea60' });\r\n Codicon.gistNew = new Codicon('gist-new', { fontCharacter: '\\\\ea60' });\r\n Codicon.repoCreate = new Codicon('repo-create', { fontCharacter: '\\\\ea60' });\r\n Codicon.lightbulb = new Codicon('lightbulb', { fontCharacter: '\\\\ea61' });\r\n Codicon.lightBulb = new Codicon('light-bulb', { fontCharacter: '\\\\ea61' });\r\n Codicon.repo = new Codicon('repo', { fontCharacter: '\\\\ea62' });\r\n Codicon.repoDelete = new Codicon('repo-delete', { fontCharacter: '\\\\ea62' });\r\n Codicon.gistFork = new Codicon('gist-fork', { fontCharacter: '\\\\ea63' });\r\n Codicon.repoForked = new Codicon('repo-forked', { fontCharacter: '\\\\ea63' });\r\n Codicon.gitPullRequest = new Codicon('git-pull-request', { fontCharacter: '\\\\ea64' });\r\n Codicon.gitPullRequestAbandoned = new Codicon('git-pull-request-abandoned', { fontCharacter: '\\\\ea64' });\r\n Codicon.recordKeys = new Codicon('record-keys', { fontCharacter: '\\\\ea65' });\r\n Codicon.keyboard = new Codicon('keyboard', { fontCharacter: '\\\\ea65' });\r\n Codicon.tag = new Codicon('tag', { fontCharacter: '\\\\ea66' });\r\n Codicon.tagAdd = new Codicon('tag-add', { fontCharacter: '\\\\ea66' });\r\n Codicon.tagRemove = new Codicon('tag-remove', { fontCharacter: '\\\\ea66' });\r\n Codicon.person = new Codicon('person', { fontCharacter: '\\\\ea67' });\r\n Codicon.personFollow = new Codicon('person-follow', { fontCharacter: '\\\\ea67' });\r\n Codicon.personOutline = new Codicon('person-outline', { fontCharacter: '\\\\ea67' });\r\n Codicon.personFilled = new Codicon('person-filled', { fontCharacter: '\\\\ea67' });\r\n Codicon.gitBranch = new Codicon('git-branch', { fontCharacter: '\\\\ea68' });\r\n Codicon.gitBranchCreate = new Codicon('git-branch-create', { fontCharacter: '\\\\ea68' });\r\n Codicon.gitBranchDelete = new Codicon('git-branch-delete', { fontCharacter: '\\\\ea68' });\r\n Codicon.sourceControl = new Codicon('source-control', { fontCharacter: '\\\\ea68' });\r\n Codicon.mirror = new Codicon('mirror', { fontCharacter: '\\\\ea69' });\r\n Codicon.mirrorPublic = new Codicon('mirror-public', { fontCharacter: '\\\\ea69' });\r\n Codicon.star = new Codicon('star', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starAdd = new Codicon('star-add', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starDelete = new Codicon('star-delete', { fontCharacter: '\\\\ea6a' });\r\n Codicon.starEmpty = new Codicon('star-empty', { fontCharacter: '\\\\ea6a' });\r\n Codicon.comment = new Codicon('comment', { fontCharacter: '\\\\ea6b' });\r\n Codicon.commentAdd = new Codicon('comment-add', { fontCharacter: '\\\\ea6b' });\r\n Codicon.alert = new Codicon('alert', { fontCharacter: '\\\\ea6c' });\r\n Codicon.warning = new Codicon('warning', { fontCharacter: '\\\\ea6c' });\r\n Codicon.search = new Codicon('search', { fontCharacter: '\\\\ea6d' });\r\n Codicon.searchSave = new Codicon('search-save', { fontCharacter: '\\\\ea6d' });\r\n Codicon.logOut = new Codicon('log-out', { fontCharacter: '\\\\ea6e' });\r\n Codicon.signOut = new Codicon('sign-out', { fontCharacter: '\\\\ea6e' });\r\n Codicon.logIn = new Codicon('log-in', { fontCharacter: '\\\\ea6f' });\r\n Codicon.signIn = new Codicon('sign-in', { fontCharacter: '\\\\ea6f' });\r\n Codicon.eye = new Codicon('eye', { fontCharacter: '\\\\ea70' });\r\n Codicon.eyeUnwatch = new Codicon('eye-unwatch', { fontCharacter: '\\\\ea70' });\r\n Codicon.eyeWatch = new Codicon('eye-watch', { fontCharacter: '\\\\ea70' });\r\n Codicon.circleFilled = new Codicon('circle-filled', { fontCharacter: '\\\\ea71' });\r\n Codicon.primitiveDot = new Codicon('primitive-dot', { fontCharacter: '\\\\ea71' });\r\n Codicon.closeDirty = new Codicon('close-dirty', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugBreakpoint = new Codicon('debug-breakpoint', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugBreakpointDisabled = new Codicon('debug-breakpoint-disabled', { fontCharacter: '\\\\ea71' });\r\n Codicon.debugHint = new Codicon('debug-hint', { fontCharacter: '\\\\ea71' });\r\n Codicon.primitiveSquare = new Codicon('primitive-square', { fontCharacter: '\\\\ea72' });\r\n Codicon.edit = new Codicon('edit', { fontCharacter: '\\\\ea73' });\r\n Codicon.pencil = new Codicon('pencil', { fontCharacter: '\\\\ea73' });\r\n Codicon.info = new Codicon('info', { fontCharacter: '\\\\ea74' });\r\n Codicon.issueOpened = new Codicon('issue-opened', { fontCharacter: '\\\\ea74' });\r\n Codicon.gistPrivate = new Codicon('gist-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.gitForkPrivate = new Codicon('git-fork-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.lock = new Codicon('lock', { fontCharacter: '\\\\ea75' });\r\n Codicon.mirrorPrivate = new Codicon('mirror-private', { fontCharacter: '\\\\ea75' });\r\n Codicon.close = new Codicon('close', { fontCharacter: '\\\\ea76' });\r\n Codicon.removeClose = new Codicon('remove-close', { fontCharacter: '\\\\ea76' });\r\n Codicon.x = new Codicon('x', { fontCharacter: '\\\\ea76' });\r\n Codicon.repoSync = new Codicon('repo-sync', { fontCharacter: '\\\\ea77' });\r\n Codicon.sync = new Codicon('sync', { fontCharacter: '\\\\ea77' });\r\n Codicon.clone = new Codicon('clone', { fontCharacter: '\\\\ea78' });\r\n Codicon.desktopDownload = new Codicon('desktop-download', { fontCharacter: '\\\\ea78' });\r\n Codicon.beaker = new Codicon('beaker', { fontCharacter: '\\\\ea79' });\r\n Codicon.microscope = new Codicon('microscope', { fontCharacter: '\\\\ea79' });\r\n Codicon.vm = new Codicon('vm', { fontCharacter: '\\\\ea7a' });\r\n Codicon.deviceDesktop = new Codicon('device-desktop', { fontCharacter: '\\\\ea7a' });\r\n Codicon.file = new Codicon('file', { fontCharacter: '\\\\ea7b' });\r\n Codicon.fileText = new Codicon('file-text', { fontCharacter: '\\\\ea7b' });\r\n Codicon.more = new Codicon('more', { fontCharacter: '\\\\ea7c' });\r\n Codicon.ellipsis = new Codicon('ellipsis', { fontCharacter: '\\\\ea7c' });\r\n Codicon.kebabHorizontal = new Codicon('kebab-horizontal', { fontCharacter: '\\\\ea7c' });\r\n Codicon.mailReply = new Codicon('mail-reply', { fontCharacter: '\\\\ea7d' });\r\n Codicon.reply = new Codicon('reply', { fontCharacter: '\\\\ea7d' });\r\n Codicon.organization = new Codicon('organization', { fontCharacter: '\\\\ea7e' });\r\n Codicon.organizationFilled = new Codicon('organization-filled', { fontCharacter: '\\\\ea7e' });\r\n Codicon.organizationOutline = new Codicon('organization-outline', { fontCharacter: '\\\\ea7e' });\r\n Codicon.newFile = new Codicon('new-file', { fontCharacter: '\\\\ea7f' });\r\n Codicon.fileAdd = new Codicon('file-add', { fontCharacter: '\\\\ea7f' });\r\n Codicon.newFolder = new Codicon('new-folder', { fontCharacter: '\\\\ea80' });\r\n Codicon.fileDirectoryCreate = new Codicon('file-directory-create', { fontCharacter: '\\\\ea80' });\r\n Codicon.trash = new Codicon('trash', { fontCharacter: '\\\\ea81' });\r\n Codicon.trashcan = new Codicon('trashcan', { fontCharacter: '\\\\ea81' });\r\n Codicon.history = new Codicon('history', { fontCharacter: '\\\\ea82' });\r\n Codicon.clock = new Codicon('clock', { fontCharacter: '\\\\ea82' });\r\n Codicon.folder = new Codicon('folder', { fontCharacter: '\\\\ea83' });\r\n Codicon.fileDirectory = new Codicon('file-directory', { fontCharacter: '\\\\ea83' });\r\n Codicon.symbolFolder = new Codicon('symbol-folder', { fontCharacter: '\\\\ea83' });\r\n Codicon.logoGithub = new Codicon('logo-github', { fontCharacter: '\\\\ea84' });\r\n Codicon.markGithub = new Codicon('mark-github', { fontCharacter: '\\\\ea84' });\r\n Codicon.github = new Codicon('github', { fontCharacter: '\\\\ea84' });\r\n Codicon.terminal = new Codicon('terminal', { fontCharacter: '\\\\ea85' });\r\n Codicon.console = new Codicon('console', { fontCharacter: '\\\\ea85' });\r\n Codicon.repl = new Codicon('repl', { fontCharacter: '\\\\ea85' });\r\n Codicon.zap = new Codicon('zap', { fontCharacter: '\\\\ea86' });\r\n Codicon.symbolEvent = new Codicon('symbol-event', { fontCharacter: '\\\\ea86' });\r\n Codicon.error = new Codicon('error', { fontCharacter: '\\\\ea87' });\r\n Codicon.stop = new Codicon('stop', { fontCharacter: '\\\\ea87' });\r\n Codicon.variable = new Codicon('variable', { fontCharacter: '\\\\ea88' });\r\n Codicon.symbolVariable = new Codicon('symbol-variable', { fontCharacter: '\\\\ea88' });\r\n Codicon.array = new Codicon('array', { fontCharacter: '\\\\ea8a' });\r\n Codicon.symbolArray = new Codicon('symbol-array', { fontCharacter: '\\\\ea8a' });\r\n Codicon.symbolModule = new Codicon('symbol-module', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolPackage = new Codicon('symbol-package', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolNamespace = new Codicon('symbol-namespace', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolObject = new Codicon('symbol-object', { fontCharacter: '\\\\ea8b' });\r\n Codicon.symbolMethod = new Codicon('symbol-method', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolFunction = new Codicon('symbol-function', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolConstructor = new Codicon('symbol-constructor', { fontCharacter: '\\\\ea8c' });\r\n Codicon.symbolBoolean = new Codicon('symbol-boolean', { fontCharacter: '\\\\ea8f' });\r\n Codicon.symbolNull = new Codicon('symbol-null', { fontCharacter: '\\\\ea8f' });\r\n Codicon.symbolNumeric = new Codicon('symbol-numeric', { fontCharacter: '\\\\ea90' });\r\n Codicon.symbolNumber = new Codicon('symbol-number', { fontCharacter: '\\\\ea90' });\r\n Codicon.symbolStructure = new Codicon('symbol-structure', { fontCharacter: '\\\\ea91' });\r\n Codicon.symbolStruct = new Codicon('symbol-struct', { fontCharacter: '\\\\ea91' });\r\n Codicon.symbolParameter = new Codicon('symbol-parameter', { fontCharacter: '\\\\ea92' });\r\n Codicon.symbolTypeParameter = new Codicon('symbol-type-parameter', { fontCharacter: '\\\\ea92' });\r\n Codicon.symbolKey = new Codicon('symbol-key', { fontCharacter: '\\\\ea93' });\r\n Codicon.symbolText = new Codicon('symbol-text', { fontCharacter: '\\\\ea93' });\r\n Codicon.symbolReference = new Codicon('symbol-reference', { fontCharacter: '\\\\ea94' });\r\n Codicon.goToFile = new Codicon('go-to-file', { fontCharacter: '\\\\ea94' });\r\n Codicon.symbolEnum = new Codicon('symbol-enum', { fontCharacter: '\\\\ea95' });\r\n Codicon.symbolValue = new Codicon('symbol-value', { fontCharacter: '\\\\ea95' });\r\n Codicon.symbolRuler = new Codicon('symbol-ruler', { fontCharacter: '\\\\ea96' });\r\n Codicon.symbolUnit = new Codicon('symbol-unit', { fontCharacter: '\\\\ea96' });\r\n Codicon.activateBreakpoints = new Codicon('activate-breakpoints', { fontCharacter: '\\\\ea97' });\r\n Codicon.archive = new Codicon('archive', { fontCharacter: '\\\\ea98' });\r\n Codicon.arrowBoth = new Codicon('arrow-both', { fontCharacter: '\\\\ea99' });\r\n Codicon.arrowDown = new Codicon('arrow-down', { fontCharacter: '\\\\ea9a' });\r\n Codicon.arrowLeft = new Codicon('arrow-left', { fontCharacter: '\\\\ea9b' });\r\n Codicon.arrowRight = new Codicon('arrow-right', { fontCharacter: '\\\\ea9c' });\r\n Codicon.arrowSmallDown = new Codicon('arrow-small-down', { fontCharacter: '\\\\ea9d' });\r\n Codicon.arrowSmallLeft = new Codicon('arrow-small-left', { fontCharacter: '\\\\ea9e' });\r\n Codicon.arrowSmallRight = new Codicon('arrow-small-right', { fontCharacter: '\\\\ea9f' });\r\n Codicon.arrowSmallUp = new Codicon('arrow-small-up', { fontCharacter: '\\\\eaa0' });\r\n Codicon.arrowUp = new Codicon('arrow-up', { fontCharacter: '\\\\eaa1' });\r\n Codicon.bell = new Codicon('bell', { fontCharacter: '\\\\eaa2' });\r\n Codicon.bold = new Codicon('bold', { fontCharacter: '\\\\eaa3' });\r\n Codicon.book = new Codicon('book', { fontCharacter: '\\\\eaa4' });\r\n Codicon.bookmark = new Codicon('bookmark', { fontCharacter: '\\\\eaa5' });\r\n Codicon.debugBreakpointConditionalUnverified = new Codicon('debug-breakpoint-conditional-unverified', { fontCharacter: '\\\\eaa6' });\r\n Codicon.debugBreakpointConditional = new Codicon('debug-breakpoint-conditional', { fontCharacter: '\\\\eaa7' });\r\n Codicon.debugBreakpointConditionalDisabled = new Codicon('debug-breakpoint-conditional-disabled', { fontCharacter: '\\\\eaa7' });\r\n Codicon.debugBreakpointDataUnverified = new Codicon('debug-breakpoint-data-unverified', { fontCharacter: '\\\\eaa8' });\r\n Codicon.debugBreakpointData = new Codicon('debug-breakpoint-data', { fontCharacter: '\\\\eaa9' });\r\n Codicon.debugBreakpointDataDisabled = new Codicon('debug-breakpoint-data-disabled', { fontCharacter: '\\\\eaa9' });\r\n Codicon.debugBreakpointLogUnverified = new Codicon('debug-breakpoint-log-unverified', { fontCharacter: '\\\\eaaa' });\r\n Codicon.debugBreakpointLog = new Codicon('debug-breakpoint-log', { fontCharacter: '\\\\eaab' });\r\n Codicon.debugBreakpointLogDisabled = new Codicon('debug-breakpoint-log-disabled', { fontCharacter: '\\\\eaab' });\r\n Codicon.briefcase = new Codicon('briefcase', { fontCharacter: '\\\\eaac' });\r\n Codicon.broadcast = new Codicon('broadcast', { fontCharacter: '\\\\eaad' });\r\n Codicon.browser = new Codicon('browser', { fontCharacter: '\\\\eaae' });\r\n Codicon.bug = new Codicon('bug', { fontCharacter: '\\\\eaaf' });\r\n Codicon.calendar = new Codicon('calendar', { fontCharacter: '\\\\eab0' });\r\n Codicon.caseSensitive = new Codicon('case-sensitive', { fontCharacter: '\\\\eab1' });\r\n Codicon.check = new Codicon('check', { fontCharacter: '\\\\eab2' });\r\n Codicon.checklist = new Codicon('checklist', { fontCharacter: '\\\\eab3' });\r\n Codicon.chevronDown = new Codicon('chevron-down', { fontCharacter: '\\\\eab4' });\r\n Codicon.chevronLeft = new Codicon('chevron-left', { fontCharacter: '\\\\eab5' });\r\n Codicon.chevronRight = new Codicon('chevron-right', { fontCharacter: '\\\\eab6' });\r\n Codicon.chevronUp = new Codicon('chevron-up', { fontCharacter: '\\\\eab7' });\r\n Codicon.chromeClose = new Codicon('chrome-close', { fontCharacter: '\\\\eab8' });\r\n Codicon.chromeMaximize = new Codicon('chrome-maximize', { fontCharacter: '\\\\eab9' });\r\n Codicon.chromeMinimize = new Codicon('chrome-minimize', { fontCharacter: '\\\\eaba' });\r\n Codicon.chromeRestore = new Codicon('chrome-restore', { fontCharacter: '\\\\eabb' });\r\n Codicon.circleOutline = new Codicon('circle-outline', { fontCharacter: '\\\\eabc' });\r\n Codicon.debugBreakpointUnverified = new Codicon('debug-breakpoint-unverified', { fontCharacter: '\\\\eabc' });\r\n Codicon.circleSlash = new Codicon('circle-slash', { fontCharacter: '\\\\eabd' });\r\n Codicon.circuitBoard = new Codicon('circuit-board', { fontCharacter: '\\\\eabe' });\r\n Codicon.clearAll = new Codicon('clear-all', { fontCharacter: '\\\\eabf' });\r\n Codicon.clippy = new Codicon('clippy', { fontCharacter: '\\\\eac0' });\r\n Codicon.closeAll = new Codicon('close-all', { fontCharacter: '\\\\eac1' });\r\n Codicon.cloudDownload = new Codicon('cloud-download', { fontCharacter: '\\\\eac2' });\r\n Codicon.cloudUpload = new Codicon('cloud-upload', { fontCharacter: '\\\\eac3' });\r\n Codicon.code = new Codicon('code', { fontCharacter: '\\\\eac4' });\r\n Codicon.collapseAll = new Codicon('collapse-all', { fontCharacter: '\\\\eac5' });\r\n Codicon.colorMode = new Codicon('color-mode', { fontCharacter: '\\\\eac6' });\r\n Codicon.commentDiscussion = new Codicon('comment-discussion', { fontCharacter: '\\\\eac7' });\r\n Codicon.compareChanges = new Codicon('compare-changes', { fontCharacter: '\\\\eafd' });\r\n Codicon.creditCard = new Codicon('credit-card', { fontCharacter: '\\\\eac9' });\r\n Codicon.dash = new Codicon('dash', { fontCharacter: '\\\\eacc' });\r\n Codicon.dashboard = new Codicon('dashboard', { fontCharacter: '\\\\eacd' });\r\n Codicon.database = new Codicon('database', { fontCharacter: '\\\\eace' });\r\n Codicon.debugContinue = new Codicon('debug-continue', { fontCharacter: '\\\\eacf' });\r\n Codicon.debugDisconnect = new Codicon('debug-disconnect', { fontCharacter: '\\\\ead0' });\r\n Codicon.debugPause = new Codicon('debug-pause', { fontCharacter: '\\\\ead1' });\r\n Codicon.debugRestart = new Codicon('debug-restart', { fontCharacter: '\\\\ead2' });\r\n Codicon.debugStart = new Codicon('debug-start', { fontCharacter: '\\\\ead3' });\r\n Codicon.debugStepInto = new Codicon('debug-step-into', { fontCharacter: '\\\\ead4' });\r\n Codicon.debugStepOut = new Codicon('debug-step-out', { fontCharacter: '\\\\ead5' });\r\n Codicon.debugStepOver = new Codicon('debug-step-over', { fontCharacter: '\\\\ead6' });\r\n Codicon.debugStop = new Codicon('debug-stop', { fontCharacter: '\\\\ead7' });\r\n Codicon.debug = new Codicon('debug', { fontCharacter: '\\\\ead8' });\r\n Codicon.deviceCameraVideo = new Codicon('device-camera-video', { fontCharacter: '\\\\ead9' });\r\n Codicon.deviceCamera = new Codicon('device-camera', { fontCharacter: '\\\\eada' });\r\n Codicon.deviceMobile = new Codicon('device-mobile', { fontCharacter: '\\\\eadb' });\r\n Codicon.diffAdded = new Codicon('diff-added', { fontCharacter: '\\\\eadc' });\r\n Codicon.diffIgnored = new Codicon('diff-ignored', { fontCharacter: '\\\\eadd' });\r\n Codicon.diffModified = new Codicon('diff-modified', { fontCharacter: '\\\\eade' });\r\n Codicon.diffRemoved = new Codicon('diff-removed', { fontCharacter: '\\\\eadf' });\r\n Codicon.diffRenamed = new Codicon('diff-renamed', { fontCharacter: '\\\\eae0' });\r\n Codicon.diff = new Codicon('diff', { fontCharacter: '\\\\eae1' });\r\n Codicon.discard = new Codicon('discard', { fontCharacter: '\\\\eae2' });\r\n Codicon.editorLayout = new Codicon('editor-layout', { fontCharacter: '\\\\eae3' });\r\n Codicon.emptyWindow = new Codicon('empty-window', { fontCharacter: '\\\\eae4' });\r\n Codicon.exclude = new Codicon('exclude', { fontCharacter: '\\\\eae5' });\r\n Codicon.extensions = new Codicon('extensions', { fontCharacter: '\\\\eae6' });\r\n Codicon.eyeClosed = new Codicon('eye-closed', { fontCharacter: '\\\\eae7' });\r\n Codicon.fileBinary = new Codicon('file-binary', { fontCharacter: '\\\\eae8' });\r\n Codicon.fileCode = new Codicon('file-code', { fontCharacter: '\\\\eae9' });\r\n Codicon.fileMedia = new Codicon('file-media', { fontCharacter: '\\\\eaea' });\r\n Codicon.filePdf = new Codicon('file-pdf', { fontCharacter: '\\\\eaeb' });\r\n Codicon.fileSubmodule = new Codicon('file-submodule', { fontCharacter: '\\\\eaec' });\r\n Codicon.fileSymlinkDirectory = new Codicon('file-symlink-directory', { fontCharacter: '\\\\eaed' });\r\n Codicon.fileSymlinkFile = new Codicon('file-symlink-file', { fontCharacter: '\\\\eaee' });\r\n Codicon.fileZip = new Codicon('file-zip', { fontCharacter: '\\\\eaef' });\r\n Codicon.files = new Codicon('files', { fontCharacter: '\\\\eaf0' });\r\n Codicon.filter = new Codicon('filter', { fontCharacter: '\\\\eaf1' });\r\n Codicon.flame = new Codicon('flame', { fontCharacter: '\\\\eaf2' });\r\n Codicon.foldDown = new Codicon('fold-down', { fontCharacter: '\\\\eaf3' });\r\n Codicon.foldUp = new Codicon('fold-up', { fontCharacter: '\\\\eaf4' });\r\n Codicon.fold = new Codicon('fold', { fontCharacter: '\\\\eaf5' });\r\n Codicon.folderActive = new Codicon('folder-active', { fontCharacter: '\\\\eaf6' });\r\n Codicon.folderOpened = new Codicon('folder-opened', { fontCharacter: '\\\\eaf7' });\r\n Codicon.gear = new Codicon('gear', { fontCharacter: '\\\\eaf8' });\r\n Codicon.gift = new Codicon('gift', { fontCharacter: '\\\\eaf9' });\r\n Codicon.gistSecret = new Codicon('gist-secret', { fontCharacter: '\\\\eafa' });\r\n Codicon.gist = new Codicon('gist', { fontCharacter: '\\\\eafb' });\r\n Codicon.gitCommit = new Codicon('git-commit', { fontCharacter: '\\\\eafc' });\r\n Codicon.gitCompare = new Codicon('git-compare', { fontCharacter: '\\\\eafd' });\r\n Codicon.gitMerge = new Codicon('git-merge', { fontCharacter: '\\\\eafe' });\r\n Codicon.githubAction = new Codicon('github-action', { fontCharacter: '\\\\eaff' });\r\n Codicon.githubAlt = new Codicon('github-alt', { fontCharacter: '\\\\eb00' });\r\n Codicon.globe = new Codicon('globe', { fontCharacter: '\\\\eb01' });\r\n Codicon.grabber = new Codicon('grabber', { fontCharacter: '\\\\eb02' });\r\n Codicon.graph = new Codicon('graph', { fontCharacter: '\\\\eb03' });\r\n Codicon.gripper = new Codicon('gripper', { fontCharacter: '\\\\eb04' });\r\n Codicon.heart = new Codicon('heart', { fontCharacter: '\\\\eb05' });\r\n Codicon.home = new Codicon('home', { fontCharacter: '\\\\eb06' });\r\n Codicon.horizontalRule = new Codicon('horizontal-rule', { fontCharacter: '\\\\eb07' });\r\n Codicon.hubot = new Codicon('hubot', { fontCharacter: '\\\\eb08' });\r\n Codicon.inbox = new Codicon('inbox', { fontCharacter: '\\\\eb09' });\r\n Codicon.issueClosed = new Codicon('issue-closed', { fontCharacter: '\\\\eba4' });\r\n Codicon.issueReopened = new Codicon('issue-reopened', { fontCharacter: '\\\\eb0b' });\r\n Codicon.issues = new Codicon('issues', { fontCharacter: '\\\\eb0c' });\r\n Codicon.italic = new Codicon('italic', { fontCharacter: '\\\\eb0d' });\r\n Codicon.jersey = new Codicon('jersey', { fontCharacter: '\\\\eb0e' });\r\n Codicon.json = new Codicon('json', { fontCharacter: '\\\\eb0f' });\r\n Codicon.kebabVertical = new Codicon('kebab-vertical', { fontCharacter: '\\\\eb10' });\r\n Codicon.key = new Codicon('key', { fontCharacter: '\\\\eb11' });\r\n Codicon.law = new Codicon('law', { fontCharacter: '\\\\eb12' });\r\n Codicon.lightbulbAutofix = new Codicon('lightbulb-autofix', { fontCharacter: '\\\\eb13' });\r\n Codicon.linkExternal = new Codicon('link-external', { fontCharacter: '\\\\eb14' });\r\n Codicon.link = new Codicon('link', { fontCharacter: '\\\\eb15' });\r\n Codicon.listOrdered = new Codicon('list-ordered', { fontCharacter: '\\\\eb16' });\r\n Codicon.listUnordered = new Codicon('list-unordered', { fontCharacter: '\\\\eb17' });\r\n Codicon.liveShare = new Codicon('live-share', { fontCharacter: '\\\\eb18' });\r\n Codicon.loading = new Codicon('loading', { fontCharacter: '\\\\eb19' });\r\n Codicon.location = new Codicon('location', { fontCharacter: '\\\\eb1a' });\r\n Codicon.mailRead = new Codicon('mail-read', { fontCharacter: '\\\\eb1b' });\r\n Codicon.mail = new Codicon('mail', { fontCharacter: '\\\\eb1c' });\r\n Codicon.markdown = new Codicon('markdown', { fontCharacter: '\\\\eb1d' });\r\n Codicon.megaphone = new Codicon('megaphone', { fontCharacter: '\\\\eb1e' });\r\n Codicon.mention = new Codicon('mention', { fontCharacter: '\\\\eb1f' });\r\n Codicon.milestone = new Codicon('milestone', { fontCharacter: '\\\\eb20' });\r\n Codicon.mortarBoard = new Codicon('mortar-board', { fontCharacter: '\\\\eb21' });\r\n Codicon.move = new Codicon('move', { fontCharacter: '\\\\eb22' });\r\n Codicon.multipleWindows = new Codicon('multiple-windows', { fontCharacter: '\\\\eb23' });\r\n Codicon.mute = new Codicon('mute', { fontCharacter: '\\\\eb24' });\r\n Codicon.noNewline = new Codicon('no-newline', { fontCharacter: '\\\\eb25' });\r\n Codicon.note = new Codicon('note', { fontCharacter: '\\\\eb26' });\r\n Codicon.octoface = new Codicon('octoface', { fontCharacter: '\\\\eb27' });\r\n Codicon.openPreview = new Codicon('open-preview', { fontCharacter: '\\\\eb28' });\r\n Codicon.package_ = new Codicon('package', { fontCharacter: '\\\\eb29' });\r\n Codicon.paintcan = new Codicon('paintcan', { fontCharacter: '\\\\eb2a' });\r\n Codicon.pin = new Codicon('pin', { fontCharacter: '\\\\eb2b' });\r\n Codicon.play = new Codicon('play', { fontCharacter: '\\\\eb2c' });\r\n Codicon.run = new Codicon('run', { fontCharacter: '\\\\eb2c' });\r\n Codicon.plug = new Codicon('plug', { fontCharacter: '\\\\eb2d' });\r\n Codicon.preserveCase = new Codicon('preserve-case', { fontCharacter: '\\\\eb2e' });\r\n Codicon.preview = new Codicon('preview', { fontCharacter: '\\\\eb2f' });\r\n Codicon.project = new Codicon('project', { fontCharacter: '\\\\eb30' });\r\n Codicon.pulse = new Codicon('pulse', { fontCharacter: '\\\\eb31' });\r\n Codicon.question = new Codicon('question', { fontCharacter: '\\\\eb32' });\r\n Codicon.quote = new Codicon('quote', { fontCharacter: '\\\\eb33' });\r\n Codicon.radioTower = new Codicon('radio-tower', { fontCharacter: '\\\\eb34' });\r\n Codicon.reactions = new Codicon('reactions', { fontCharacter: '\\\\eb35' });\r\n Codicon.references = new Codicon('references', { fontCharacter: '\\\\eb36' });\r\n Codicon.refresh = new Codicon('refresh', { fontCharacter: '\\\\eb37' });\r\n Codicon.regex = new Codicon('regex', { fontCharacter: '\\\\eb38' });\r\n Codicon.remoteExplorer = new Codicon('remote-explorer', { fontCharacter: '\\\\eb39' });\r\n Codicon.remote = new Codicon('remote', { fontCharacter: '\\\\eb3a' });\r\n Codicon.remove = new Codicon('remove', { fontCharacter: '\\\\eb3b' });\r\n Codicon.replaceAll = new Codicon('replace-all', { fontCharacter: '\\\\eb3c' });\r\n Codicon.replace = new Codicon('replace', { fontCharacter: '\\\\eb3d' });\r\n Codicon.repoClone = new Codicon('repo-clone', { fontCharacter: '\\\\eb3e' });\r\n Codicon.repoForcePush = new Codicon('repo-force-push', { fontCharacter: '\\\\eb3f' });\r\n Codicon.repoPull = new Codicon('repo-pull', { fontCharacter: '\\\\eb40' });\r\n Codicon.repoPush = new Codicon('repo-push', { fontCharacter: '\\\\eb41' });\r\n Codicon.report = new Codicon('report', { fontCharacter: '\\\\eb42' });\r\n Codicon.requestChanges = new Codicon('request-changes', { fontCharacter: '\\\\eb43' });\r\n Codicon.rocket = new Codicon('rocket', { fontCharacter: '\\\\eb44' });\r\n Codicon.rootFolderOpened = new Codicon('root-folder-opened', { fontCharacter: '\\\\eb45' });\r\n Codicon.rootFolder = new Codicon('root-folder', { fontCharacter: '\\\\eb46' });\r\n Codicon.rss = new Codicon('rss', { fontCharacter: '\\\\eb47' });\r\n Codicon.ruby = new Codicon('ruby', { fontCharacter: '\\\\eb48' });\r\n Codicon.saveAll = new Codicon('save-all', { fontCharacter: '\\\\eb49' });\r\n Codicon.saveAs = new Codicon('save-as', { fontCharacter: '\\\\eb4a' });\r\n Codicon.save = new Codicon('save', { fontCharacter: '\\\\eb4b' });\r\n Codicon.screenFull = new Codicon('screen-full', { fontCharacter: '\\\\eb4c' });\r\n Codicon.screenNormal = new Codicon('screen-normal', { fontCharacter: '\\\\eb4d' });\r\n Codicon.searchStop = new Codicon('search-stop', { fontCharacter: '\\\\eb4e' });\r\n Codicon.server = new Codicon('server', { fontCharacter: '\\\\eb50' });\r\n Codicon.settingsGear = new Codicon('settings-gear', { fontCharacter: '\\\\eb51' });\r\n Codicon.settings = new Codicon('settings', { fontCharacter: '\\\\eb52' });\r\n Codicon.shield = new Codicon('shield', { fontCharacter: '\\\\eb53' });\r\n Codicon.smiley = new Codicon('smiley', { fontCharacter: '\\\\eb54' });\r\n Codicon.sortPrecedence = new Codicon('sort-precedence', { fontCharacter: '\\\\eb55' });\r\n Codicon.splitHorizontal = new Codicon('split-horizontal', { fontCharacter: '\\\\eb56' });\r\n Codicon.splitVertical = new Codicon('split-vertical', { fontCharacter: '\\\\eb57' });\r\n Codicon.squirrel = new Codicon('squirrel', { fontCharacter: '\\\\eb58' });\r\n Codicon.starFull = new Codicon('star-full', { fontCharacter: '\\\\eb59' });\r\n Codicon.starHalf = new Codicon('star-half', { fontCharacter: '\\\\eb5a' });\r\n Codicon.symbolClass = new Codicon('symbol-class', { fontCharacter: '\\\\eb5b' });\r\n Codicon.symbolColor = new Codicon('symbol-color', { fontCharacter: '\\\\eb5c' });\r\n Codicon.symbolConstant = new Codicon('symbol-constant', { fontCharacter: '\\\\eb5d' });\r\n Codicon.symbolEnumMember = new Codicon('symbol-enum-member', { fontCharacter: '\\\\eb5e' });\r\n Codicon.symbolField = new Codicon('symbol-field', { fontCharacter: '\\\\eb5f' });\r\n Codicon.symbolFile = new Codicon('symbol-file', { fontCharacter: '\\\\eb60' });\r\n Codicon.symbolInterface = new Codicon('symbol-interface', { fontCharacter: '\\\\eb61' });\r\n Codicon.symbolKeyword = new Codicon('symbol-keyword', { fontCharacter: '\\\\eb62' });\r\n Codicon.symbolMisc = new Codicon('symbol-misc', { fontCharacter: '\\\\eb63' });\r\n Codicon.symbolOperator = new Codicon('symbol-operator', { fontCharacter: '\\\\eb64' });\r\n Codicon.symbolProperty = new Codicon('symbol-property', { fontCharacter: '\\\\eb65' });\r\n Codicon.wrench = new Codicon('wrench', { fontCharacter: '\\\\eb65' });\r\n Codicon.wrenchSubaction = new Codicon('wrench-subaction', { fontCharacter: '\\\\eb65' });\r\n Codicon.symbolSnippet = new Codicon('symbol-snippet', { fontCharacter: '\\\\eb66' });\r\n Codicon.tasklist = new Codicon('tasklist', { fontCharacter: '\\\\eb67' });\r\n Codicon.telescope = new Codicon('telescope', { fontCharacter: '\\\\eb68' });\r\n Codicon.textSize = new Codicon('text-size', { fontCharacter: '\\\\eb69' });\r\n Codicon.threeBars = new Codicon('three-bars', { fontCharacter: '\\\\eb6a' });\r\n Codicon.thumbsdown = new Codicon('thumbsdown', { fontCharacter: '\\\\eb6b' });\r\n Codicon.thumbsup = new Codicon('thumbsup', { fontCharacter: '\\\\eb6c' });\r\n Codicon.tools = new Codicon('tools', { fontCharacter: '\\\\eb6d' });\r\n Codicon.triangleDown = new Codicon('triangle-down', { fontCharacter: '\\\\eb6e' });\r\n Codicon.triangleLeft = new Codicon('triangle-left', { fontCharacter: '\\\\eb6f' });\r\n Codicon.triangleRight = new Codicon('triangle-right', { fontCharacter: '\\\\eb70' });\r\n Codicon.triangleUp = new Codicon('triangle-up', { fontCharacter: '\\\\eb71' });\r\n Codicon.twitter = new Codicon('twitter', { fontCharacter: '\\\\eb72' });\r\n Codicon.unfold = new Codicon('unfold', { fontCharacter: '\\\\eb73' });\r\n Codicon.unlock = new Codicon('unlock', { fontCharacter: '\\\\eb74' });\r\n Codicon.unmute = new Codicon('unmute', { fontCharacter: '\\\\eb75' });\r\n Codicon.unverified = new Codicon('unverified', { fontCharacter: '\\\\eb76' });\r\n Codicon.verified = new Codicon('verified', { fontCharacter: '\\\\eb77' });\r\n Codicon.versions = new Codicon('versions', { fontCharacter: '\\\\eb78' });\r\n Codicon.vmActive = new Codicon('vm-active', { fontCharacter: '\\\\eb79' });\r\n Codicon.vmOutline = new Codicon('vm-outline', { fontCharacter: '\\\\eb7a' });\r\n Codicon.vmRunning = new Codicon('vm-running', { fontCharacter: '\\\\eb7b' });\r\n Codicon.watch = new Codicon('watch', { fontCharacter: '\\\\eb7c' });\r\n Codicon.whitespace = new Codicon('whitespace', { fontCharacter: '\\\\eb7d' });\r\n Codicon.wholeWord = new Codicon('whole-word', { fontCharacter: '\\\\eb7e' });\r\n Codicon.window = new Codicon('window', { fontCharacter: '\\\\eb7f' });\r\n Codicon.wordWrap = new Codicon('word-wrap', { fontCharacter: '\\\\eb80' });\r\n Codicon.zoomIn = new Codicon('zoom-in', { fontCharacter: '\\\\eb81' });\r\n Codicon.zoomOut = new Codicon('zoom-out', { fontCharacter: '\\\\eb82' });\r\n Codicon.listFilter = new Codicon('list-filter', { fontCharacter: '\\\\eb83' });\r\n Codicon.listFlat = new Codicon('list-flat', { fontCharacter: '\\\\eb84' });\r\n Codicon.listSelection = new Codicon('list-selection', { fontCharacter: '\\\\eb85' });\r\n Codicon.selection = new Codicon('selection', { fontCharacter: '\\\\eb85' });\r\n Codicon.listTree = new Codicon('list-tree', { fontCharacter: '\\\\eb86' });\r\n Codicon.debugBreakpointFunctionUnverified = new Codicon('debug-breakpoint-function-unverified', { fontCharacter: '\\\\eb87' });\r\n Codicon.debugBreakpointFunction = new Codicon('debug-breakpoint-function', { fontCharacter: '\\\\eb88' });\r\n Codicon.debugBreakpointFunctionDisabled = new Codicon('debug-breakpoint-function-disabled', { fontCharacter: '\\\\eb88' });\r\n Codicon.debugStackframeActive = new Codicon('debug-stackframe-active', { fontCharacter: '\\\\eb89' });\r\n Codicon.debugStackframeDot = new Codicon('debug-stackframe-dot', { fontCharacter: '\\\\eb8a' });\r\n Codicon.debugStackframe = new Codicon('debug-stackframe', { fontCharacter: '\\\\eb8b' });\r\n Codicon.debugStackframeFocused = new Codicon('debug-stackframe-focused', { fontCharacter: '\\\\eb8b' });\r\n Codicon.debugBreakpointUnsupported = new Codicon('debug-breakpoint-unsupported', { fontCharacter: '\\\\eb8c' });\r\n Codicon.symbolString = new Codicon('symbol-string', { fontCharacter: '\\\\eb8d' });\r\n Codicon.debugReverseContinue = new Codicon('debug-reverse-continue', { fontCharacter: '\\\\eb8e' });\r\n Codicon.debugStepBack = new Codicon('debug-step-back', { fontCharacter: '\\\\eb8f' });\r\n Codicon.debugRestartFrame = new Codicon('debug-restart-frame', { fontCharacter: '\\\\eb90' });\r\n Codicon.callIncoming = new Codicon('call-incoming', { fontCharacter: '\\\\eb92' });\r\n Codicon.callOutgoing = new Codicon('call-outgoing', { fontCharacter: '\\\\eb93' });\r\n Codicon.menu = new Codicon('menu', { fontCharacter: '\\\\eb94' });\r\n Codicon.expandAll = new Codicon('expand-all', { fontCharacter: '\\\\eb95' });\r\n Codicon.feedback = new Codicon('feedback', { fontCharacter: '\\\\eb96' });\r\n Codicon.groupByRefType = new Codicon('group-by-ref-type', { fontCharacter: '\\\\eb97' });\r\n Codicon.ungroupByRefType = new Codicon('ungroup-by-ref-type', { fontCharacter: '\\\\eb98' });\r\n Codicon.account = new Codicon('account', { fontCharacter: '\\\\eb99' });\r\n Codicon.bellDot = new Codicon('bell-dot', { fontCharacter: '\\\\eb9a' });\r\n Codicon.debugConsole = new Codicon('debug-console', { fontCharacter: '\\\\eb9b' });\r\n Codicon.library = new Codicon('library', { fontCharacter: '\\\\eb9c' });\r\n Codicon.output = new Codicon('output', { fontCharacter: '\\\\eb9d' });\r\n Codicon.runAll = new Codicon('run-all', { fontCharacter: '\\\\eb9e' });\r\n Codicon.syncIgnored = new Codicon('sync-ignored', { fontCharacter: '\\\\eb9f' });\r\n Codicon.pinned = new Codicon('pinned', { fontCharacter: '\\\\eba0' });\r\n Codicon.githubInverted = new Codicon('github-inverted', { fontCharacter: '\\\\eba1' });\r\n Codicon.debugAlt = new Codicon('debug-alt', { fontCharacter: '\\\\eb91' });\r\n Codicon.serverProcess = new Codicon('server-process', { fontCharacter: '\\\\eba2' });\r\n Codicon.serverEnvironment = new Codicon('server-environment', { fontCharacter: '\\\\eba3' });\r\n Codicon.pass = new Codicon('pass', { fontCharacter: '\\\\eba4' });\r\n Codicon.stopCircle = new Codicon('stop-circle', { fontCharacter: '\\\\eba5' });\r\n Codicon.playCircle = new Codicon('play-circle', { fontCharacter: '\\\\eba6' });\r\n Codicon.record = new Codicon('record', { fontCharacter: '\\\\eba7' });\r\n Codicon.debugAltSmall = new Codicon('debug-alt-small', { fontCharacter: '\\\\eba8' });\r\n Codicon.vmConnect = new Codicon('vm-connect', { fontCharacter: '\\\\eba9' });\r\n Codicon.cloud = new Codicon('cloud', { fontCharacter: '\\\\ebaa' });\r\n Codicon.merge = new Codicon('merge', { fontCharacter: '\\\\ebab' });\r\n Codicon.exportIcon = new Codicon('export', { fontCharacter: '\\\\ebac' });\r\n Codicon.graphLeft = new Codicon('graph-left', { fontCharacter: '\\\\ebad' });\r\n Codicon.magnet = new Codicon('magnet', { fontCharacter: '\\\\ebae' });\r\n Codicon.notebook = new Codicon('notebook', { fontCharacter: '\\\\ebaf' });\r\n Codicon.redo = new Codicon('redo', { fontCharacter: '\\\\ebb0' });\r\n Codicon.checkAll = new Codicon('check-all', { fontCharacter: '\\\\ebb1' });\r\n Codicon.pinnedDirty = new Codicon('pinned-dirty', { fontCharacter: '\\\\ebb2' });\r\n Codicon.passFilled = new Codicon('pass-filled', { fontCharacter: '\\\\ebb3' });\r\n Codicon.circleLargeFilled = new Codicon('circle-large-filled', { fontCharacter: '\\\\ebb4' });\r\n Codicon.circleLargeOutline = new Codicon('circle-large-outline', { fontCharacter: '\\\\ebb5' });\r\n Codicon.combine = new Codicon('combine', { fontCharacter: '\\\\ebb6' });\r\n Codicon.gather = new Codicon('gather', { fontCharacter: '\\\\ebb6' });\r\n Codicon.table = new Codicon('table', { fontCharacter: '\\\\ebb7' });\r\n Codicon.variableGroup = new Codicon('variable-group', { fontCharacter: '\\\\ebb8' });\r\n Codicon.typeHierarchy = new Codicon('type-hierarchy', { fontCharacter: '\\\\ebb9' });\r\n Codicon.typeHierarchySub = new Codicon('type-hierarchy-sub', { fontCharacter: '\\\\ebba' });\r\n Codicon.typeHierarchySuper = new Codicon('type-hierarchy-super', { fontCharacter: '\\\\ebbb' });\r\n Codicon.gitPullRequestCreate = new Codicon('git-pull-request-create', { fontCharacter: '\\\\ebbc' });\r\n Codicon.runAbove = new Codicon('run-above', { fontCharacter: '\\\\ebbd' });\r\n Codicon.runBelow = new Codicon('run-below', { fontCharacter: '\\\\ebbe' });\r\n Codicon.notebookTemplate = new Codicon('notebook-template', { fontCharacter: '\\\\ebbf' });\r\n Codicon.debugRerun = new Codicon('debug-rerun', { fontCharacter: '\\\\ebc0' });\r\n Codicon.workspaceTrusted = new Codicon('workspace-trusted', { fontCharacter: '\\\\ebc1' });\r\n Codicon.workspaceUntrusted = new Codicon('workspace-untrusted', { fontCharacter: '\\\\ebc2' });\r\n Codicon.workspaceUnspecified = new Codicon('workspace-unspecified', { fontCharacter: '\\\\ebc3' });\r\n Codicon.terminalCmd = new Codicon('terminal-cmd', { fontCharacter: '\\\\ebc4' });\r\n Codicon.terminalDebian = new Codicon('terminal-debian', { fontCharacter: '\\\\ebc5' });\r\n Codicon.terminalLinux = new Codicon('terminal-linux', { fontCharacter: '\\\\ebc6' });\r\n Codicon.terminalPowershell = new Codicon('terminal-powershell', { fontCharacter: '\\\\ebc7' });\r\n Codicon.terminalTmux = new Codicon('terminal-tmux', { fontCharacter: '\\\\ebc8' });\r\n Codicon.terminalUbuntu = new Codicon('terminal-ubuntu', { fontCharacter: '\\\\ebc9' });\r\n Codicon.terminalBash = new Codicon('terminal-bash', { fontCharacter: '\\\\ebca' });\r\n Codicon.arrowSwap = new Codicon('arrow-swap', { fontCharacter: '\\\\ebcb' });\r\n Codicon.copy = new Codicon('copy', { fontCharacter: '\\\\ebcc' });\r\n Codicon.personAdd = new Codicon('person-add', { fontCharacter: '\\\\ebcd' });\r\n Codicon.filterFilled = new Codicon('filter-filled', { fontCharacter: '\\\\ebce' });\r\n Codicon.wand = new Codicon('wand', { fontCharacter: '\\\\ebcf' });\r\n Codicon.debugLineByLine = new Codicon('debug-line-by-line', { fontCharacter: '\\\\ebd0' });\r\n Codicon.inspect = new Codicon('inspect', { fontCharacter: '\\\\ebd1' });\r\n Codicon.layers = new Codicon('layers', { fontCharacter: '\\\\ebd2' });\r\n Codicon.layersDot = new Codicon('layers-dot', { fontCharacter: '\\\\ebd3' });\r\n Codicon.layersActive = new Codicon('layers-active', { fontCharacter: '\\\\ebd4' });\r\n Codicon.compass = new Codicon('compass', { fontCharacter: '\\\\ebd5' });\r\n Codicon.compassDot = new Codicon('compass-dot', { fontCharacter: '\\\\ebd6' });\r\n Codicon.compassActive = new Codicon('compass-active', { fontCharacter: '\\\\ebd7' });\r\n Codicon.azure = new Codicon('azure', { fontCharacter: '\\\\ebd8' });\r\n Codicon.issueDraft = new Codicon('issue-draft', { fontCharacter: '\\\\ebd9' });\r\n Codicon.gitPullRequestClosed = new Codicon('git-pull-request-closed', { fontCharacter: '\\\\ebda' });\r\n Codicon.gitPullRequestDraft = new Codicon('git-pull-request-draft', { fontCharacter: '\\\\ebdb' });\r\n Codicon.debugAll = new Codicon('debug-all', { fontCharacter: '\\\\ebdc' });\r\n Codicon.debugCoverage = new Codicon('debug-coverage', { fontCharacter: '\\\\ebdd' });\r\n Codicon.dropDownButton = new Codicon('drop-down-button', Codicon.chevronDown.definition);\r\n})(Codicon || (Codicon = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n/**\r\n * Iterates over each entry in the provided dictionary. The iterator allows\r\n * to remove elements and will stop when the callback returns {{false}}.\r\n */\r\nexport function forEach(from, callback) {\r\n for (let key in from) {\r\n if (hasOwnProperty.call(from, key)) {\r\n const result = callback({ key: key, value: from[key] }, function () {\r\n delete from[key];\r\n });\r\n if (result === false) {\r\n return;\r\n }\r\n }\r\n }\r\n}\r\nexport class SetMap {\r\n constructor() {\r\n this.map = new Map();\r\n }\r\n add(key, value) {\r\n let values = this.map.get(key);\r\n if (!values) {\r\n values = new Set();\r\n this.map.set(key, values);\r\n }\r\n values.add(value);\r\n }\r\n delete(key, value) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.delete(value);\r\n if (values.size === 0) {\r\n this.map.delete(key);\r\n }\r\n }\r\n forEach(key, fn) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.forEach(fn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction roundFloat(number, decimalPoints) {\r\n const decimal = Math.pow(10, decimalPoints);\r\n return Math.round(number * decimal) / decimal;\r\n}\r\nexport class RGBA {\r\n constructor(r, g, b, a = 1) {\r\n this._rgbaBrand = undefined;\r\n this.r = Math.min(255, Math.max(0, r)) | 0;\r\n this.g = Math.min(255, Math.max(0, g)) | 0;\r\n this.b = Math.min(255, Math.max(0, b)) | 0;\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\r\n }\r\n}\r\nexport class HSLA {\r\n constructor(h, s, l, a) {\r\n this._hslaBrand = undefined;\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\r\n }\r\n /**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h in the set [0, 360], s, and l in the set [0, 1].\r\n */\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const a = rgba.a;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n const l = (min + max) / 2;\r\n const chroma = max - min;\r\n if (chroma > 0) {\r\n s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / chroma + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / chroma + 2;\r\n break;\r\n case b:\r\n h = (r - g) / chroma + 4;\r\n break;\r\n }\r\n h *= 60;\r\n h = Math.round(h);\r\n }\r\n return new HSLA(h, s, l, a);\r\n }\r\n static _hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n }\r\n /**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n */\r\n static toRGBA(hsla) {\r\n const h = hsla.h / 360;\r\n const { s, l, a } = hsla;\r\n let r, g, b;\r\n if (s === 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\r\n g = HSLA._hue2rgb(p, q, h);\r\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\r\n }\r\n}\r\nexport class HSVA {\r\n constructor(h, s, v, a) {\r\n this._hsvaBrand = undefined;\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\r\n }\r\n // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const cmax = Math.max(r, g, b);\r\n const cmin = Math.min(r, g, b);\r\n const delta = cmax - cmin;\r\n const s = cmax === 0 ? 0 : (delta / cmax);\r\n let m;\r\n if (delta === 0) {\r\n m = 0;\r\n }\r\n else if (cmax === r) {\r\n m = ((((g - b) / delta) % 6) + 6) % 6;\r\n }\r\n else if (cmax === g) {\r\n m = ((b - r) / delta) + 2;\r\n }\r\n else {\r\n m = ((r - g) / delta) + 4;\r\n }\r\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\r\n }\r\n // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm\r\n static toRGBA(hsva) {\r\n const { h, s, v, a } = hsva;\r\n const c = v * s;\r\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\r\n const m = v - c;\r\n let [r, g, b] = [0, 0, 0];\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n }\r\n else if (h < 120) {\r\n r = x;\r\n g = c;\r\n }\r\n else if (h < 180) {\r\n g = c;\r\n b = x;\r\n }\r\n else if (h < 240) {\r\n g = x;\r\n b = c;\r\n }\r\n else if (h < 300) {\r\n r = x;\r\n b = c;\r\n }\r\n else if (h <= 360) {\r\n r = c;\r\n b = x;\r\n }\r\n r = Math.round((r + m) * 255);\r\n g = Math.round((g + m) * 255);\r\n b = Math.round((b + m) * 255);\r\n return new RGBA(r, g, b, a);\r\n }\r\n}\r\nexport class Color {\r\n constructor(arg) {\r\n if (!arg) {\r\n throw new Error('Color needs a value');\r\n }\r\n else if (arg instanceof RGBA) {\r\n this.rgba = arg;\r\n }\r\n else if (arg instanceof HSLA) {\r\n this._hsla = arg;\r\n this.rgba = HSLA.toRGBA(arg);\r\n }\r\n else if (arg instanceof HSVA) {\r\n this._hsva = arg;\r\n this.rgba = HSVA.toRGBA(arg);\r\n }\r\n else {\r\n throw new Error('Invalid color ctor argument');\r\n }\r\n }\r\n static fromHex(hex) {\r\n return Color.Format.CSS.parseHex(hex) || Color.red;\r\n }\r\n get hsla() {\r\n if (this._hsla) {\r\n return this._hsla;\r\n }\r\n else {\r\n return HSLA.fromRGBA(this.rgba);\r\n }\r\n }\r\n get hsva() {\r\n if (this._hsva) {\r\n return this._hsva;\r\n }\r\n return HSVA.fromRGBA(this.rgba);\r\n }\r\n equals(other) {\r\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\r\n }\r\n /**\r\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\r\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\r\n */\r\n getRelativeLuminance() {\r\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\r\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\r\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\r\n const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B;\r\n return roundFloat(luminance, 4);\r\n }\r\n static _relativeLuminanceForComponent(color) {\r\n const c = color / 255;\r\n return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4);\r\n }\r\n /**\r\n *\thttp://24ways.org/2010/calculating-color-contrast\r\n * Return 'true' if lighter color otherwise 'false'\r\n */\r\n isLighter() {\r\n const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000;\r\n return yiq >= 128;\r\n }\r\n isLighterThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 > lum2;\r\n }\r\n isDarkerThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 < lum2;\r\n }\r\n lighten(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\r\n }\r\n darken(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\r\n }\r\n transparent(factor) {\r\n const { r, g, b, a } = this.rgba;\r\n return new Color(new RGBA(r, g, b, a * factor));\r\n }\r\n isTransparent() {\r\n return this.rgba.a === 0;\r\n }\r\n isOpaque() {\r\n return this.rgba.a === 1;\r\n }\r\n opposite() {\r\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\r\n }\r\n toString() {\r\n return '' + Color.Format.CSS.format(this);\r\n }\r\n static getLighterColor(of, relative, factor) {\r\n if (of.isLighterThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum2 - lum1) / lum2;\r\n return of.lighten(factor);\r\n }\r\n static getDarkerColor(of, relative, factor) {\r\n if (of.isDarkerThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum1 - lum2) / lum1;\r\n return of.darken(factor);\r\n }\r\n}\r\nColor.white = new Color(new RGBA(255, 255, 255, 1));\r\nColor.black = new Color(new RGBA(0, 0, 0, 1));\r\nColor.red = new Color(new RGBA(255, 0, 0, 1));\r\nColor.blue = new Color(new RGBA(0, 0, 255, 1));\r\nColor.cyan = new Color(new RGBA(0, 255, 255, 1));\r\nColor.lightgrey = new Color(new RGBA(211, 211, 211, 1));\r\nColor.transparent = new Color(new RGBA(0, 0, 0, 0));\r\n(function (Color) {\r\n let Format;\r\n (function (Format) {\r\n let CSS;\r\n (function (CSS) {\r\n function formatRGB(color) {\r\n if (color.rgba.a === 1) {\r\n return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.formatRGB = formatRGB;\r\n function formatRGBA(color) {\r\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`;\r\n }\r\n CSS.formatRGBA = formatRGBA;\r\n function formatHSL(color) {\r\n if (color.hsla.a === 1) {\r\n return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`;\r\n }\r\n return Color.Format.CSS.formatHSLA(color);\r\n }\r\n CSS.formatHSL = formatHSL;\r\n function formatHSLA(color) {\r\n return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`;\r\n }\r\n CSS.formatHSLA = formatHSLA;\r\n function _toTwoDigitHex(n) {\r\n const r = n.toString(16);\r\n return r.length !== 2 ? '0' + r : r;\r\n }\r\n /**\r\n * Formats the color as #RRGGBB\r\n */\r\n function formatHex(color) {\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\r\n }\r\n CSS.formatHex = formatHex;\r\n /**\r\n * Formats the color as #RRGGBBAA\r\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\r\n */\r\n function formatHexA(color, compact = false) {\r\n if (compact && color.rgba.a === 1) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\r\n }\r\n CSS.formatHexA = formatHexA;\r\n /**\r\n * The default format will use HEX if opaque and RGBA otherwise.\r\n */\r\n function format(color) {\r\n if (color.isOpaque()) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.format = format;\r\n /**\r\n * Converts an Hex color value to a Color.\r\n * returns r, g, and b are contained in the set [0, 255]\r\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\r\n */\r\n function parseHex(hex) {\r\n const length = hex.length;\r\n if (length === 0) {\r\n // Invalid color\r\n return null;\r\n }\r\n if (hex.charCodeAt(0) !== 35 /* Hash */) {\r\n // Does not begin with a #\r\n return null;\r\n }\r\n if (length === 7) {\r\n // #RRGGBB format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n return new Color(new RGBA(r, g, b, 1));\r\n }\r\n if (length === 9) {\r\n // #RRGGBBAA format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8));\r\n return new Color(new RGBA(r, g, b, a / 255));\r\n }\r\n if (length === 4) {\r\n // #RGB format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\r\n }\r\n if (length === 5) {\r\n // #RGBA format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n const a = _parseHexDigit(hex.charCodeAt(4));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\r\n }\r\n // Invalid color\r\n return null;\r\n }\r\n CSS.parseHex = parseHex;\r\n function _parseHexDigit(charCode) {\r\n switch (charCode) {\r\n case 48 /* Digit0 */: return 0;\r\n case 49 /* Digit1 */: return 1;\r\n case 50 /* Digit2 */: return 2;\r\n case 51 /* Digit3 */: return 3;\r\n case 52 /* Digit4 */: return 4;\r\n case 53 /* Digit5 */: return 5;\r\n case 54 /* Digit6 */: return 6;\r\n case 55 /* Digit7 */: return 7;\r\n case 56 /* Digit8 */: return 8;\r\n case 57 /* Digit9 */: return 9;\r\n case 97 /* a */: return 10;\r\n case 65 /* A */: return 10;\r\n case 98 /* b */: return 11;\r\n case 66 /* B */: return 11;\r\n case 99 /* c */: return 12;\r\n case 67 /* C */: return 12;\r\n case 100 /* d */: return 13;\r\n case 68 /* D */: return 13;\r\n case 101 /* e */: return 14;\r\n case 69 /* E */: return 14;\r\n case 102 /* f */: return 15;\r\n case 70 /* F */: return 15;\r\n }\r\n return 0;\r\n }\r\n })(CSS = Format.CSS || (Format.CSS = {}));\r\n })(Format = Color.Format || (Color.Format = {}));\r\n})(Color || (Color = {}));\r\n","export function memoize(_target, key, descriptor) {\r\n let fnKey = null;\r\n let fn = null;\r\n if (typeof descriptor.value === 'function') {\r\n fnKey = 'value';\r\n fn = descriptor.value;\r\n if (fn.length !== 0) {\r\n console.warn('Memoize should only be used in functions with zero parameters');\r\n }\r\n }\r\n else if (typeof descriptor.get === 'function') {\r\n fnKey = 'get';\r\n fn = descriptor.get;\r\n }\r\n if (!fn) {\r\n throw new Error('not supported');\r\n }\r\n const memoizeKey = `$memoize$${key}`;\r\n descriptor[fnKey] = function (...args) {\r\n if (!this.hasOwnProperty(memoizeKey)) {\r\n Object.defineProperty(this, memoizeKey, {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: fn.apply(this, args)\r\n });\r\n }\r\n return this[memoizeKey];\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nexport class DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DiffChange } from './diffChange.js';\r\nimport { stringHash } from '../hash.js';\r\nexport class StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nexport function stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nexport class Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nexport class MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nexport class LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n this._originalSequence = originalSequence;\r\n this._modifiedSequence = modifiedSequence;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = stringHash(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n ElementsAreStrictEqual(originalIndex, newIndex) {\r\n if (!this.ElementsAreEqual(originalIndex, newIndex)) {\r\n return false;\r\n }\r\n const originalElement = LcsDiff._getStrictElement(this._originalSequence, originalIndex);\r\n const modifiedElement = LcsDiff._getStrictElement(this._modifiedSequence, newIndex);\r\n return (originalElement === modifiedElement);\r\n }\r\n static _getStrictElement(sequence, index) {\r\n if (typeof sequence.getStrictElement === 'function') {\r\n return sequence.getStrictElement(index);\r\n }\r\n return null;\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop\r\n && change.modifiedStart + change.modifiedLength < modifiedStop\r\n && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength))\r\n && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart);\r\n const endStrictEqual = this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength);\r\n if (endStrictEqual && !startStrictEqual) {\r\n // moving the change down would create an equal change, but the elements are not strict equal\r\n break;\r\n }\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const touchingPreviousChange = (originalStart === originalStop && modifiedStart === modifiedStop);\r\n const score = ((touchingPreviousChange ? 5 : 0)\r\n + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength));\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n const mergedChangeArr = [null];\r\n if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) {\r\n changes[i - 1] = mergedChangeArr[0];\r\n changes.splice(i, 1);\r\n i++;\r\n continue;\r\n }\r\n }\r\n // There could be multiple longest common substrings.\r\n // Give preference to the ones containing longer lines\r\n if (this._hasStrings) {\r\n for (let i = 1, len = changes.length; i < len; i++) {\r\n const aChange = changes[i - 1];\r\n const bChange = changes[i];\r\n const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength;\r\n const aOriginalStart = aChange.originalStart;\r\n const bOriginalEnd = bChange.originalStart + bChange.originalLength;\r\n const abOriginalLength = bOriginalEnd - aOriginalStart;\r\n const aModifiedStart = aChange.modifiedStart;\r\n const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength;\r\n const abModifiedLength = bModifiedEnd - aModifiedStart;\r\n // Avoid wasting a lot of time with these searches\r\n if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) {\r\n const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength);\r\n if (t) {\r\n const [originalMatchStart, modifiedMatchStart] = t;\r\n if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) {\r\n // switch to another sequence that has a better score\r\n aChange.originalLength = originalMatchStart - aChange.originalStart;\r\n aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart;\r\n bChange.originalStart = originalMatchStart + matchedLength;\r\n bChange.modifiedStart = modifiedMatchStart + matchedLength;\r\n bChange.originalLength = bOriginalEnd - bChange.originalStart;\r\n bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return changes;\r\n }\r\n _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) {\r\n if (originalLength < desiredLength || modifiedLength < desiredLength) {\r\n return null;\r\n }\r\n const originalMax = originalStart + originalLength - desiredLength + 1;\r\n const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1;\r\n let bestScore = 0;\r\n let bestOriginalStart = 0;\r\n let bestModifiedStart = 0;\r\n for (let i = originalStart; i < originalMax; i++) {\r\n for (let j = modifiedStart; j < modifiedMax; j++) {\r\n const score = this._contiguousSequenceScore(i, j, desiredLength);\r\n if (score > 0 && score > bestScore) {\r\n bestScore = score;\r\n bestOriginalStart = i;\r\n bestModifiedStart = j;\r\n }\r\n }\r\n }\r\n if (bestScore > 0) {\r\n return [bestOriginalStart, bestModifiedStart];\r\n }\r\n return null;\r\n }\r\n _contiguousSequenceScore(originalStart, modifiedStart, length) {\r\n let score = 0;\r\n for (let l = 0; l < length; l++) {\r\n if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) {\r\n return 0;\r\n }\r\n score += this._originalStringElements[originalStart + l].length;\r\n }\r\n return score;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n","// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nexport class ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nexport const errorHandler = new ErrorHandler();\r\nexport function onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nexport function isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nexport function canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nexport function illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nexport function illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n","import { onUnexpectedError } from './errors.js';\r\nimport { Disposable, combinedDisposable, DisposableStore, toDisposable } from './lifecycle.js';\r\nimport { LinkedList } from './linkedList.js';\r\nimport { StopWatch } from './stopwatch.js';\r\nexport var Event;\r\n(function (Event) {\r\n Event.None = () => Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function latch(event, equals = (a, b) => a === b) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || !equals(value, cache);\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function split(event, isT) {\r\n return [\r\n Event.filter(event, isT),\r\n Event.filter(event, e => !isT(e)),\r\n ];\r\n }\r\n Event.split = split;\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n /**\r\n * @deprecated DO NOT use, this leaks memory\r\n */\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function toPromise(event) {\r\n return new Promise(resolve => once(event)(resolve));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nclass EventProfiling {\r\n constructor(name) {\r\n this._listenerCount = 0;\r\n this._invocationCount = 0;\r\n this._elapsedOverall = 0;\r\n this._name = `${name}_${EventProfiling._idPool++}`;\r\n }\r\n start(listenerCount) {\r\n this._stopWatch = new StopWatch(true);\r\n this._listenerCount = listenerCount;\r\n }\r\n stop() {\r\n if (this._stopWatch) {\r\n const elapsed = this._stopWatch.elapsed();\r\n this._elapsedOverall += elapsed;\r\n this._invocationCount += 1;\r\n console.info(`did FIRE ${this._name}: elapsed_ms: ${elapsed.toFixed(5)}, listener: ${this._listenerCount} (elapsed_overall: ${this._elapsedOverall.toFixed(2)}, invocations: ${this._invocationCount})`);\r\n this._stopWatch = undefined;\r\n }\r\n }\r\n}\r\nEventProfiling._idPool = 0;\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nexport class Emitter {\r\n constructor(options) {\r\n var _a;\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0 ? new LeakageMonitor(this._options && this._options.leakWarningThreshold) : undefined;\r\n this._perfMon = ((_a = this._options) === null || _a === void 0 ? void 0 : _a._profName) ? new EventProfiling(this._options._profName) : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n var _a;\r\n if (!this._listeners) {\r\n this._listeners = new LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n const removeMonitor = (_a = this._leakageMon) === null || _a === void 0 ? void 0 : _a.check(this._listeners.size);\r\n const result = toDisposable(() => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n });\r\n if (disposables instanceof DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n var _a, _b;\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n // start/stop performance insight collection\r\n (_a = this._perfMon) === null || _a === void 0 ? void 0 : _a.start(this._deliveryQueue.size);\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop();\r\n }\r\n }\r\n dispose() {\r\n var _a, _b, _c, _d, _e;\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n (_a = this._listeners) === null || _a === void 0 ? void 0 : _a.clear();\r\n (_b = this._deliveryQueue) === null || _b === void 0 ? void 0 : _b.clear();\r\n (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onLastListenerRemove) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n (_e = this._leakageMon) === null || _e === void 0 ? void 0 : _e.dispose();\r\n }\r\n }\r\n}\r\nexport class PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new LinkedList();\r\n this._mergeFn = options === null || options === void 0 ? void 0 : options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = Array.from(this._eventQueue);\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\nexport class DebounceEmitter extends PauseableEmitter {\r\n constructor(options) {\r\n var _a;\r\n super(options);\r\n this._delay = (_a = options.delay) !== null && _a !== void 0 ? _a : 100;\r\n }\r\n fire(event) {\r\n if (!this._handle) {\r\n this.pause();\r\n this._handle = setTimeout(() => {\r\n this._handle = undefined;\r\n this.resume();\r\n }, this._delay);\r\n }\r\n super.fire(event);\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nexport class EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nexport class Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport { startsWithIgnoreCase } from './strings.js';\r\nimport { sep, posix, normalize } from './path.js';\r\n/**\r\n * Takes a Windows OS path and changes backward slashes to forward slashes.\r\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\r\n * Using it on a Linux or MaxOS path might change it.\r\n */\r\nexport function toSlashes(osPath) {\r\n return osPath.replace(/[\\\\/]/g, posix.sep);\r\n}\r\n/**\r\n * Takes a Windows OS path (using backward or forward slashes) and turns it into a posix path:\r\n * - turns backward slashes into forward slashes\r\n * - makes it absolute if it starts with a drive letter\r\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\r\n * Using it on a Linux or MaxOS path might change it.\r\n */\r\nexport function toPosixPath(osPath) {\r\n if (osPath.indexOf('/') === -1) {\r\n osPath = toSlashes(osPath);\r\n }\r\n if (/^[a-zA-Z]:(\\/|$)/.test(osPath)) { // starts with a drive letter\r\n osPath = '/' + osPath;\r\n }\r\n return osPath;\r\n}\r\nexport function isEqualOrParent(base, parentCandidate, ignoreCase, separator = sep) {\r\n if (base === parentCandidate) {\r\n return true;\r\n }\r\n if (!base || !parentCandidate) {\r\n return false;\r\n }\r\n if (parentCandidate.length > base.length) {\r\n return false;\r\n }\r\n if (ignoreCase) {\r\n const beginsWith = startsWithIgnoreCase(base, parentCandidate);\r\n if (!beginsWith) {\r\n return false;\r\n }\r\n if (parentCandidate.length === base.length) {\r\n return true; // same path, different casing\r\n }\r\n let sepOffset = parentCandidate.length;\r\n if (parentCandidate.charAt(parentCandidate.length - 1) === separator) {\r\n sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character\r\n }\r\n return base.charAt(sepOffset) === separator;\r\n }\r\n if (parentCandidate.charAt(parentCandidate.length - 1) !== separator) {\r\n parentCandidate += separator;\r\n }\r\n return base.indexOf(parentCandidate) === 0;\r\n}\r\nexport function isWindowsDriveLetter(char0) {\r\n return char0 >= 65 /* A */ && char0 <= 90 /* Z */ || char0 >= 97 /* a */ && char0 <= 122 /* z */;\r\n}\r\nexport function isRootOrDriveLetter(path) {\r\n const pathNormalized = normalize(path);\r\n if (isWindows) {\r\n if (path.length > 3) {\r\n return false;\r\n }\r\n return hasDriveLetter(pathNormalized) &&\r\n (path.length === 2 || pathNormalized.charCodeAt(2) === 92 /* Backslash */);\r\n }\r\n return pathNormalized === posix.sep;\r\n}\r\nexport function hasDriveLetter(path) {\r\n if (isWindows) {\r\n return isWindowsDriveLetter(path.charCodeAt(0)) && path.charCodeAt(1) === 58 /* Colon */;\r\n }\r\n return false;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LRUCache } from './map.js';\r\nimport * as strings from './strings.js';\r\n// Combined filters\r\n/**\r\n * @returns A filter which combines the provided set\r\n * of filters with an or. The *first* filters that\r\n * matches defined the return value of the returned\r\n * filter.\r\n */\r\nexport function or(...filter) {\r\n return function (word, wordToMatchAgainst) {\r\n for (let i = 0, len = filter.length; i < len; i++) {\r\n const match = filter[i](word, wordToMatchAgainst);\r\n if (match) {\r\n return match;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\nexport const matchesPrefix = _matchesPrefix.bind(undefined, true);\r\nfunction _matchesPrefix(ignoreCase, word, wordToMatchAgainst) {\r\n if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) {\r\n return null;\r\n }\r\n let matches;\r\n if (ignoreCase) {\r\n matches = strings.startsWithIgnoreCase(wordToMatchAgainst, word);\r\n }\r\n else {\r\n matches = wordToMatchAgainst.indexOf(word) === 0;\r\n }\r\n if (!matches) {\r\n return null;\r\n }\r\n return word.length > 0 ? [{ start: 0, end: word.length }] : [];\r\n}\r\n// Contiguous Substring\r\nexport function matchesContiguousSubString(word, wordToMatchAgainst) {\r\n const index = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\r\n if (index === -1) {\r\n return null;\r\n }\r\n return [{ start: index, end: index + word.length }];\r\n}\r\n// Substring\r\nexport function matchesSubString(word, wordToMatchAgainst) {\r\n return _matchesSubString(word.toLowerCase(), wordToMatchAgainst.toLowerCase(), 0, 0);\r\n}\r\nfunction _matchesSubString(word, wordToMatchAgainst, i, j) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === wordToMatchAgainst.length) {\r\n return null;\r\n }\r\n else {\r\n if (word[i] === wordToMatchAgainst[j]) {\r\n let result = null;\r\n if (result = _matchesSubString(word, wordToMatchAgainst, i + 1, j + 1)) {\r\n return join({ start: j, end: j + 1 }, result);\r\n }\r\n return null;\r\n }\r\n return _matchesSubString(word, wordToMatchAgainst, i, j + 1);\r\n }\r\n}\r\n// CamelCase\r\nfunction isLower(code) {\r\n return 97 /* a */ <= code && code <= 122 /* z */;\r\n}\r\nexport function isUpper(code) {\r\n return 65 /* A */ <= code && code <= 90 /* Z */;\r\n}\r\nfunction isNumber(code) {\r\n return 48 /* Digit0 */ <= code && code <= 57 /* Digit9 */;\r\n}\r\nfunction isWhitespace(code) {\r\n return (code === 32 /* Space */\r\n || code === 9 /* Tab */\r\n || code === 10 /* LineFeed */\r\n || code === 13 /* CarriageReturn */);\r\n}\r\nconst wordSeparators = new Set();\r\n'`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?'\r\n .split('')\r\n .forEach(s => wordSeparators.add(s.charCodeAt(0)));\r\nfunction isWordSeparator(code) {\r\n return isWhitespace(code) || wordSeparators.has(code);\r\n}\r\nfunction charactersMatch(codeA, codeB) {\r\n return (codeA === codeB) || (isWordSeparator(codeA) && isWordSeparator(codeB));\r\n}\r\nfunction isAlphanumeric(code) {\r\n return isLower(code) || isUpper(code) || isNumber(code);\r\n}\r\nfunction join(head, tail) {\r\n if (tail.length === 0) {\r\n tail = [head];\r\n }\r\n else if (head.end === tail[0].start) {\r\n tail[0].start = head.start;\r\n }\r\n else {\r\n tail.unshift(head);\r\n }\r\n return tail;\r\n}\r\nfunction nextAnchor(camelCaseWord, start) {\r\n for (let i = start; i < camelCaseWord.length; i++) {\r\n const c = camelCaseWord.charCodeAt(i);\r\n if (isUpper(c) || isNumber(c) || (i > 0 && !isAlphanumeric(camelCaseWord.charCodeAt(i - 1)))) {\r\n return i;\r\n }\r\n }\r\n return camelCaseWord.length;\r\n}\r\nfunction _matchesCamelCase(word, camelCaseWord, i, j) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === camelCaseWord.length) {\r\n return null;\r\n }\r\n else if (word[i] !== camelCaseWord[j].toLowerCase()) {\r\n return null;\r\n }\r\n else {\r\n let result = null;\r\n let nextUpperIndex = j + 1;\r\n result = _matchesCamelCase(word, camelCaseWord, i + 1, j + 1);\r\n while (!result && (nextUpperIndex = nextAnchor(camelCaseWord, nextUpperIndex)) < camelCaseWord.length) {\r\n result = _matchesCamelCase(word, camelCaseWord, i + 1, nextUpperIndex);\r\n nextUpperIndex++;\r\n }\r\n return result === null ? null : join({ start: j, end: j + 1 }, result);\r\n }\r\n}\r\n// Heuristic to avoid computing camel case matcher for words that don't\r\n// look like camelCaseWords.\r\nfunction analyzeCamelCaseWord(word) {\r\n let upper = 0, lower = 0, alpha = 0, numeric = 0, code = 0;\r\n for (let i = 0; i < word.length; i++) {\r\n code = word.charCodeAt(i);\r\n if (isUpper(code)) {\r\n upper++;\r\n }\r\n if (isLower(code)) {\r\n lower++;\r\n }\r\n if (isAlphanumeric(code)) {\r\n alpha++;\r\n }\r\n if (isNumber(code)) {\r\n numeric++;\r\n }\r\n }\r\n const upperPercent = upper / word.length;\r\n const lowerPercent = lower / word.length;\r\n const alphaPercent = alpha / word.length;\r\n const numericPercent = numeric / word.length;\r\n return { upperPercent, lowerPercent, alphaPercent, numericPercent };\r\n}\r\nfunction isUpperCaseWord(analysis) {\r\n const { upperPercent, lowerPercent } = analysis;\r\n return lowerPercent === 0 && upperPercent > 0.6;\r\n}\r\nfunction isCamelCaseWord(analysis) {\r\n const { upperPercent, lowerPercent, alphaPercent, numericPercent } = analysis;\r\n return lowerPercent > 0.2 && upperPercent < 0.8 && alphaPercent > 0.6 && numericPercent < 0.2;\r\n}\r\n// Heuristic to avoid computing camel case matcher for words that don't\r\n// look like camel case patterns.\r\nfunction isCamelCasePattern(word) {\r\n let upper = 0, lower = 0, code = 0, whitespace = 0;\r\n for (let i = 0; i < word.length; i++) {\r\n code = word.charCodeAt(i);\r\n if (isUpper(code)) {\r\n upper++;\r\n }\r\n if (isLower(code)) {\r\n lower++;\r\n }\r\n if (isWhitespace(code)) {\r\n whitespace++;\r\n }\r\n }\r\n if ((upper === 0 || lower === 0) && whitespace === 0) {\r\n return word.length <= 30;\r\n }\r\n else {\r\n return upper <= 5;\r\n }\r\n}\r\nexport function matchesCamelCase(word, camelCaseWord) {\r\n if (!camelCaseWord) {\r\n return null;\r\n }\r\n camelCaseWord = camelCaseWord.trim();\r\n if (camelCaseWord.length === 0) {\r\n return null;\r\n }\r\n if (!isCamelCasePattern(word)) {\r\n return null;\r\n }\r\n if (camelCaseWord.length > 60) {\r\n return null;\r\n }\r\n const analysis = analyzeCamelCaseWord(camelCaseWord);\r\n if (!isCamelCaseWord(analysis)) {\r\n if (!isUpperCaseWord(analysis)) {\r\n return null;\r\n }\r\n camelCaseWord = camelCaseWord.toLowerCase();\r\n }\r\n let result = null;\r\n let i = 0;\r\n word = word.toLowerCase();\r\n while (i < camelCaseWord.length && (result = _matchesCamelCase(word, camelCaseWord, 0, i)) === null) {\r\n i = nextAnchor(camelCaseWord, i + 1);\r\n }\r\n return result;\r\n}\r\n// Matches beginning of words supporting non-ASCII languages\r\n// If `contiguous` is true then matches word with beginnings of the words in the target. E.g. \"pul\" will match \"Git: Pull\"\r\n// Otherwise also matches sub string of the word with beginnings of the words in the target. E.g. \"gp\" or \"g p\" will match \"Git: Pull\"\r\n// Useful in cases where the target is words (e.g. command labels)\r\nexport function matchesWords(word, target, contiguous = false) {\r\n if (!target || target.length === 0) {\r\n return null;\r\n }\r\n let result = null;\r\n let i = 0;\r\n word = word.toLowerCase();\r\n target = target.toLowerCase();\r\n while (i < target.length && (result = _matchesWords(word, target, 0, i, contiguous)) === null) {\r\n i = nextWord(target, i + 1);\r\n }\r\n return result;\r\n}\r\nfunction _matchesWords(word, target, i, j, contiguous) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === target.length) {\r\n return null;\r\n }\r\n else if (!charactersMatch(word.charCodeAt(i), target.charCodeAt(j))) {\r\n return null;\r\n }\r\n else {\r\n let result = null;\r\n let nextWordIndex = j + 1;\r\n result = _matchesWords(word, target, i + 1, j + 1, contiguous);\r\n if (!contiguous) {\r\n while (!result && (nextWordIndex = nextWord(target, nextWordIndex)) < target.length) {\r\n result = _matchesWords(word, target, i + 1, nextWordIndex, contiguous);\r\n nextWordIndex++;\r\n }\r\n }\r\n return result === null ? null : join({ start: j, end: j + 1 }, result);\r\n }\r\n}\r\nfunction nextWord(word, start) {\r\n for (let i = start; i < word.length; i++) {\r\n if (isWordSeparator(word.charCodeAt(i)) ||\r\n (i > 0 && isWordSeparator(word.charCodeAt(i - 1)))) {\r\n return i;\r\n }\r\n }\r\n return word.length;\r\n}\r\n// Fuzzy\r\nconst fuzzyContiguousFilter = or(matchesPrefix, matchesCamelCase, matchesContiguousSubString);\r\nconst fuzzySeparateFilter = or(matchesPrefix, matchesCamelCase, matchesSubString);\r\nconst fuzzyRegExpCache = new LRUCache(10000); // bounded to 10000 elements\r\nexport function matchesFuzzy(word, wordToMatchAgainst, enableSeparateSubstringMatching = false) {\r\n if (typeof word !== 'string' || typeof wordToMatchAgainst !== 'string') {\r\n return null; // return early for invalid input\r\n }\r\n // Form RegExp for wildcard matches\r\n let regexp = fuzzyRegExpCache.get(word);\r\n if (!regexp) {\r\n regexp = new RegExp(strings.convertSimple2RegExpPattern(word), 'i');\r\n fuzzyRegExpCache.set(word, regexp);\r\n }\r\n // RegExp Filter\r\n const match = regexp.exec(wordToMatchAgainst);\r\n if (match) {\r\n return [{ start: match.index, end: match.index + match[0].length }];\r\n }\r\n // Default Filter\r\n return enableSeparateSubstringMatching ? fuzzySeparateFilter(word, wordToMatchAgainst) : fuzzyContiguousFilter(word, wordToMatchAgainst);\r\n}\r\nexport function anyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos) {\r\n const max = Math.min(13, pattern.length);\r\n for (; patternPos < max; patternPos++) {\r\n const result = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, false);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return [0, wordPos];\r\n}\r\n//#region --- fuzzyScore ---\r\nexport function createMatches(score) {\r\n if (typeof score === 'undefined') {\r\n return [];\r\n }\r\n const res = [];\r\n const wordPos = score[1];\r\n for (let i = score.length - 1; i > 1; i--) {\r\n const pos = score[i] + wordPos;\r\n const last = res[res.length - 1];\r\n if (last && last.end === pos) {\r\n last.end = pos + 1;\r\n }\r\n else {\r\n res.push({ start: pos, end: pos + 1 });\r\n }\r\n }\r\n return res;\r\n}\r\nconst _maxLen = 128;\r\nfunction initTable() {\r\n const table = [];\r\n const row = [];\r\n for (let i = 0; i <= _maxLen; i++) {\r\n row[i] = 0;\r\n }\r\n for (let i = 0; i <= _maxLen; i++) {\r\n table.push(row.slice(0));\r\n }\r\n return table;\r\n}\r\nfunction initArr(maxLen) {\r\n const row = [];\r\n for (let i = 0; i <= maxLen; i++) {\r\n row[i] = 0;\r\n }\r\n return row;\r\n}\r\nconst _minWordMatchPos = initArr(2 * _maxLen); // min word position for a certain pattern position\r\nconst _maxWordMatchPos = initArr(2 * _maxLen); // max word position for a certain pattern position\r\nconst _diag = initTable(); // the length of a contiguous diagonal match\r\nconst _table = initTable();\r\nconst _arrows = initTable();\r\nconst _debug = false;\r\nfunction printTable(table, pattern, patternLen, word, wordLen) {\r\n function pad(s, n, pad = ' ') {\r\n while (s.length < n) {\r\n s = pad + s;\r\n }\r\n return s;\r\n }\r\n let ret = ` | |${word.split('').map(c => pad(c, 3)).join('|')}\\n`;\r\n for (let i = 0; i <= patternLen; i++) {\r\n if (i === 0) {\r\n ret += ' |';\r\n }\r\n else {\r\n ret += `${pattern[i - 1]}|`;\r\n }\r\n ret += table[i].slice(0, wordLen + 1).map(n => pad(n.toString(), 3)).join('|') + '\\n';\r\n }\r\n return ret;\r\n}\r\nfunction printTables(pattern, patternStart, word, wordStart) {\r\n pattern = pattern.substr(patternStart);\r\n word = word.substr(wordStart);\r\n console.log(printTable(_table, pattern, pattern.length, word, word.length));\r\n console.log(printTable(_arrows, pattern, pattern.length, word, word.length));\r\n console.log(printTable(_diag, pattern, pattern.length, word, word.length));\r\n}\r\nfunction isSeparatorAtPos(value, index) {\r\n if (index < 0 || index >= value.length) {\r\n return false;\r\n }\r\n const code = value.codePointAt(index);\r\n switch (code) {\r\n case 95 /* Underline */:\r\n case 45 /* Dash */:\r\n case 46 /* Period */:\r\n case 32 /* Space */:\r\n case 47 /* Slash */:\r\n case 92 /* Backslash */:\r\n case 39 /* SingleQuote */:\r\n case 34 /* DoubleQuote */:\r\n case 58 /* Colon */:\r\n case 36 /* DollarSign */:\r\n case 60 /* LessThan */:\r\n case 40 /* OpenParen */:\r\n case 91 /* OpenSquareBracket */:\r\n return true;\r\n case undefined:\r\n return false;\r\n default:\r\n if (strings.isEmojiImprecise(code)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction isWhitespaceAtPos(value, index) {\r\n if (index < 0 || index >= value.length) {\r\n return false;\r\n }\r\n const code = value.charCodeAt(index);\r\n switch (code) {\r\n case 32 /* Space */:\r\n case 9 /* Tab */:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction isUpperCaseAtPos(pos, word, wordLow) {\r\n return word[pos] !== wordLow[pos];\r\n}\r\nexport function isPatternInWord(patternLow, patternPos, patternLen, wordLow, wordPos, wordLen, fillMinWordPosArr = false) {\r\n while (patternPos < patternLen && wordPos < wordLen) {\r\n if (patternLow[patternPos] === wordLow[wordPos]) {\r\n if (fillMinWordPosArr) {\r\n // Remember the min word position for each pattern position\r\n _minWordMatchPos[patternPos] = wordPos;\r\n }\r\n patternPos += 1;\r\n }\r\n wordPos += 1;\r\n }\r\n return patternPos === patternLen; // pattern must be exhausted\r\n}\r\nexport var FuzzyScore;\r\n(function (FuzzyScore) {\r\n /**\r\n * No matches and value `-100`\r\n */\r\n FuzzyScore.Default = ([-100, 0]);\r\n function isDefault(score) {\r\n return !score || (score.length === 2 && score[0] === -100 && score[1] === 0);\r\n }\r\n FuzzyScore.isDefault = isDefault;\r\n})(FuzzyScore || (FuzzyScore = {}));\r\nexport function fuzzyScore(pattern, patternLow, patternStart, word, wordLow, wordStart, firstMatchCanBeWeak) {\r\n const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length;\r\n const wordLen = word.length > _maxLen ? _maxLen : word.length;\r\n if (patternStart >= patternLen || wordStart >= wordLen || (patternLen - patternStart) > (wordLen - wordStart)) {\r\n return undefined;\r\n }\r\n // Run a simple check if the characters of pattern occur\r\n // (in order) at all in word. If that isn't the case we\r\n // stop because no match will be possible\r\n if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen, true)) {\r\n return undefined;\r\n }\r\n // Find the max matching word position for each pattern position\r\n // NOTE: the min matching word position was filled in above, in the `isPatternInWord` call\r\n _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow);\r\n let row = 1;\r\n let column = 1;\r\n let patternPos = patternStart;\r\n let wordPos = wordStart;\r\n const hasStrongFirstMatch = [false];\r\n // There will be a match, fill in tables\r\n for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) {\r\n // Reduce search space to possible matching word positions and to possible access from next row\r\n const minWordMatchPos = _minWordMatchPos[patternPos];\r\n const maxWordMatchPos = _maxWordMatchPos[patternPos];\r\n const nextMaxWordMatchPos = (patternPos + 1 < patternLen ? _maxWordMatchPos[patternPos + 1] : wordLen);\r\n for (column = minWordMatchPos - wordStart + 1, wordPos = minWordMatchPos; wordPos < nextMaxWordMatchPos; column++, wordPos++) {\r\n let score = Number.MIN_SAFE_INTEGER;\r\n let canComeDiag = false;\r\n if (wordPos <= maxWordMatchPos) {\r\n score = _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos, wordLen, wordStart, _diag[row - 1][column - 1] === 0, hasStrongFirstMatch);\r\n }\r\n let diagScore = 0;\r\n if (score !== Number.MAX_SAFE_INTEGER) {\r\n canComeDiag = true;\r\n diagScore = score + _table[row - 1][column - 1];\r\n }\r\n const canComeLeft = wordPos > minWordMatchPos;\r\n const leftScore = canComeLeft ? _table[row][column - 1] + (_diag[row][column - 1] > 0 ? -5 : 0) : 0; // penalty for a gap start\r\n const canComeLeftLeft = wordPos > minWordMatchPos + 1 && _diag[row][column - 1] > 0;\r\n const leftLeftScore = canComeLeftLeft ? _table[row][column - 2] + (_diag[row][column - 2] > 0 ? -5 : 0) : 0; // penalty for a gap start\r\n if (canComeLeftLeft && (!canComeLeft || leftLeftScore >= leftScore) && (!canComeDiag || leftLeftScore >= diagScore)) {\r\n // always prefer choosing left left to jump over a diagonal because that means a match is earlier in the word\r\n _table[row][column] = leftLeftScore;\r\n _arrows[row][column] = 3 /* LeftLeft */;\r\n _diag[row][column] = 0;\r\n }\r\n else if (canComeLeft && (!canComeDiag || leftScore >= diagScore)) {\r\n // always prefer choosing left since that means a match is earlier in the word\r\n _table[row][column] = leftScore;\r\n _arrows[row][column] = 2 /* Left */;\r\n _diag[row][column] = 0;\r\n }\r\n else if (canComeDiag) {\r\n _table[row][column] = diagScore;\r\n _arrows[row][column] = 1 /* Diag */;\r\n _diag[row][column] = _diag[row - 1][column - 1] + 1;\r\n }\r\n else {\r\n throw new Error(`not possible`);\r\n }\r\n }\r\n }\r\n if (_debug) {\r\n printTables(pattern, patternStart, word, wordStart);\r\n }\r\n if (!hasStrongFirstMatch[0] && !firstMatchCanBeWeak) {\r\n return undefined;\r\n }\r\n row--;\r\n column--;\r\n const result = [_table[row][column], wordStart];\r\n let backwardsDiagLength = 0;\r\n let maxMatchColumn = 0;\r\n while (row >= 1) {\r\n // Find the column where we go diagonally up\r\n let diagColumn = column;\r\n do {\r\n const arrow = _arrows[row][diagColumn];\r\n if (arrow === 3 /* LeftLeft */) {\r\n diagColumn = diagColumn - 2;\r\n }\r\n else if (arrow === 2 /* Left */) {\r\n diagColumn = diagColumn - 1;\r\n }\r\n else {\r\n // found the diagonal\r\n break;\r\n }\r\n } while (diagColumn >= 1);\r\n // Overturn the \"forwards\" decision if keeping the \"backwards\" diagonal would give a better match\r\n if (backwardsDiagLength > 1 // only if we would have a contiguous match of 3 characters\r\n && patternLow[patternStart + row - 1] === wordLow[wordStart + column - 1] // only if we can do a contiguous match diagonally\r\n && !isUpperCaseAtPos(diagColumn + wordStart - 1, word, wordLow) // only if the forwards chose diagonal is not an uppercase\r\n && backwardsDiagLength + 1 > _diag[row][diagColumn] // only if our contiguous match would be longer than the \"forwards\" contiguous match\r\n ) {\r\n diagColumn = column;\r\n }\r\n if (diagColumn === column) {\r\n // this is a contiguous match\r\n backwardsDiagLength++;\r\n }\r\n else {\r\n backwardsDiagLength = 1;\r\n }\r\n if (!maxMatchColumn) {\r\n // remember the last matched column\r\n maxMatchColumn = diagColumn;\r\n }\r\n row--;\r\n column = diagColumn - 1;\r\n result.push(column);\r\n }\r\n if (wordLen === patternLen) {\r\n // the word matches the pattern with all characters!\r\n // giving the score a total match boost (to come up ahead other words)\r\n result[0] += 2;\r\n }\r\n // Add 1 penalty for each skipped character in the word\r\n const skippedCharsCount = maxMatchColumn - patternLen;\r\n result[0] -= skippedCharsCount;\r\n return result;\r\n}\r\nfunction _fillInMaxWordMatchPos(patternLen, wordLen, patternStart, wordStart, patternLow, wordLow) {\r\n let patternPos = patternLen - 1;\r\n let wordPos = wordLen - 1;\r\n while (patternPos >= patternStart && wordPos >= wordStart) {\r\n if (patternLow[patternPos] === wordLow[wordPos]) {\r\n _maxWordMatchPos[patternPos] = wordPos;\r\n patternPos--;\r\n }\r\n wordPos--;\r\n }\r\n}\r\nfunction _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos, wordLen, wordStart, newMatchStart, outFirstMatchStrong) {\r\n if (patternLow[patternPos] !== wordLow[wordPos]) {\r\n return Number.MIN_SAFE_INTEGER;\r\n }\r\n let score = 1;\r\n let isGapLocation = false;\r\n if (wordPos === (patternPos - patternStart)) {\r\n // common prefix: `foobar <-> foobaz`\r\n // ^^^^^\r\n score = pattern[patternPos] === word[wordPos] ? 7 : 5;\r\n }\r\n else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) {\r\n // hitting upper-case: `foo <-> forOthers`\r\n // ^^ ^\r\n score = pattern[patternPos] === word[wordPos] ? 7 : 5;\r\n isGapLocation = true;\r\n }\r\n else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) {\r\n // hitting a separator: `. <-> foo.bar`\r\n // ^\r\n score = 5;\r\n }\r\n else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) {\r\n // post separator: `foo <-> bar_foo`\r\n // ^^^\r\n score = 5;\r\n isGapLocation = true;\r\n }\r\n if (score > 1 && patternPos === patternStart) {\r\n outFirstMatchStrong[0] = true;\r\n }\r\n if (!isGapLocation) {\r\n isGapLocation = isUpperCaseAtPos(wordPos, word, wordLow) || isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1);\r\n }\r\n //\r\n if (patternPos === patternStart) { // first character in pattern\r\n if (wordPos > wordStart) {\r\n // the first pattern character would match a word character that is not at the word start\r\n // so introduce a penalty to account for the gap preceding this match\r\n score -= isGapLocation ? 3 : 5;\r\n }\r\n }\r\n else {\r\n if (newMatchStart) {\r\n // this would be the beginning of a new match (i.e. there would be a gap before this location)\r\n score += isGapLocation ? 2 : 0;\r\n }\r\n else {\r\n // this is part of a contiguous match, so give it a slight bonus, but do so only if it would not be a prefered gap location\r\n score += isGapLocation ? 0 : 1;\r\n }\r\n }\r\n if (wordPos + 1 === wordLen) {\r\n // we always penalize gaps, but this gives unfair advantages to a match that would match the last character in the word\r\n // so pretend there is a gap after the last character in the word to normalize things\r\n score -= isGapLocation ? 3 : 5;\r\n }\r\n return score;\r\n}\r\n//#endregion\r\n//#region --- graceful ---\r\nexport function fuzzyScoreGracefulAggressive(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak) {\r\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, true, firstMatchCanBeWeak);\r\n}\r\nfunction fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, aggressive, firstMatchCanBeWeak) {\r\n let top = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\r\n if (top && !aggressive) {\r\n // when using the original pattern yield a result we`\r\n // return it unless we are aggressive and try to find\r\n // a better alignment, e.g. `cno` -> `^co^ns^ole` or `^c^o^nsole`.\r\n return top;\r\n }\r\n if (pattern.length >= 3) {\r\n // When the pattern is long enough then try a few (max 7)\r\n // permutations of the pattern to find a better match. The\r\n // permutations only swap neighbouring characters, e.g\r\n // `cnoso` becomes `conso`, `cnsoo`, `cnoos`.\r\n const tries = Math.min(7, pattern.length - 1);\r\n for (let movingPatternPos = patternPos + 1; movingPatternPos < tries; movingPatternPos++) {\r\n const newPattern = nextTypoPermutation(pattern, movingPatternPos);\r\n if (newPattern) {\r\n const candidate = fuzzyScore(newPattern, newPattern.toLowerCase(), patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\r\n if (candidate) {\r\n candidate[0] -= 3; // permutation penalty\r\n if (!top || candidate[0] > top[0]) {\r\n top = candidate;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return top;\r\n}\r\nfunction nextTypoPermutation(pattern, patternPos) {\r\n if (patternPos + 1 >= pattern.length) {\r\n return undefined;\r\n }\r\n const swap1 = pattern[patternPos];\r\n const swap2 = pattern[patternPos + 1];\r\n if (swap1 === swap2) {\r\n return undefined;\r\n }\r\n return pattern.slice(0, patternPos)\r\n + swap2\r\n + swap1\r\n + pattern.slice(patternPos + 2);\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function once(fn) {\r\n const _this = this;\r\n let didCall = false;\r\n let result;\r\n return function () {\r\n if (didCall) {\r\n return result;\r\n }\r\n didCall = true;\r\n result = fn.apply(_this, arguments);\r\n return result;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { LRUCache } from './map.js';\r\nimport { isThenable } from './async.js';\r\nconst GLOBSTAR = '**';\r\nconst GLOB_SPLIT = '/';\r\nconst PATH_REGEX = '[/\\\\\\\\]'; // any slash or backslash\r\nconst NO_PATH_REGEX = '[^/\\\\\\\\]'; // any non-slash and non-backslash\r\nconst ALL_FORWARD_SLASHES = /\\//g;\r\nfunction starsToRegExp(starCount) {\r\n switch (starCount) {\r\n case 0:\r\n return '';\r\n case 1:\r\n return `${NO_PATH_REGEX}*?`; // 1 star matches any number of characters except path separator (/ and \\) - non greedy (?)\r\n default:\r\n // Matches: (Path Sep OR Path Val followed by Path Sep OR Path Sep followed by Path Val) 0-many times\r\n // Group is non capturing because we don't need to capture at all (?:...)\r\n // Overall we use non-greedy matching because it could be that we match too much\r\n return `(?:${PATH_REGEX}|${NO_PATH_REGEX}+${PATH_REGEX}|${PATH_REGEX}${NO_PATH_REGEX}+)*?`;\r\n }\r\n}\r\nexport function splitGlobAware(pattern, splitChar) {\r\n if (!pattern) {\r\n return [];\r\n }\r\n const segments = [];\r\n let inBraces = false;\r\n let inBrackets = false;\r\n let curVal = '';\r\n for (const char of pattern) {\r\n switch (char) {\r\n case splitChar:\r\n if (!inBraces && !inBrackets) {\r\n segments.push(curVal);\r\n curVal = '';\r\n continue;\r\n }\r\n break;\r\n case '{':\r\n inBraces = true;\r\n break;\r\n case '}':\r\n inBraces = false;\r\n break;\r\n case '[':\r\n inBrackets = true;\r\n break;\r\n case ']':\r\n inBrackets = false;\r\n break;\r\n }\r\n curVal += char;\r\n }\r\n // Tail\r\n if (curVal) {\r\n segments.push(curVal);\r\n }\r\n return segments;\r\n}\r\nfunction parseRegExp(pattern) {\r\n if (!pattern) {\r\n return '';\r\n }\r\n let regEx = '';\r\n // Split up into segments for each slash found\r\n const segments = splitGlobAware(pattern, GLOB_SPLIT);\r\n // Special case where we only have globstars\r\n if (segments.every(s => s === GLOBSTAR)) {\r\n regEx = '.*';\r\n }\r\n // Build regex over segments\r\n else {\r\n let previousSegmentWasGlobStar = false;\r\n segments.forEach((segment, index) => {\r\n // Globstar is special\r\n if (segment === GLOBSTAR) {\r\n // if we have more than one globstar after another, just ignore it\r\n if (!previousSegmentWasGlobStar) {\r\n regEx += starsToRegExp(2);\r\n previousSegmentWasGlobStar = true;\r\n }\r\n return;\r\n }\r\n // States\r\n let inBraces = false;\r\n let braceVal = '';\r\n let inBrackets = false;\r\n let bracketVal = '';\r\n for (const char of segment) {\r\n // Support brace expansion\r\n if (char !== '}' && inBraces) {\r\n braceVal += char;\r\n continue;\r\n }\r\n // Support brackets\r\n if (inBrackets && (char !== ']' || !bracketVal) /* ] is literally only allowed as first character in brackets to match it */) {\r\n let res;\r\n // range operator\r\n if (char === '-') {\r\n res = char;\r\n }\r\n // negation operator (only valid on first index in bracket)\r\n else if ((char === '^' || char === '!') && !bracketVal) {\r\n res = '^';\r\n }\r\n // glob split matching is not allowed within character ranges\r\n // see http://man7.org/linux/man-pages/man7/glob.7.html\r\n else if (char === GLOB_SPLIT) {\r\n res = '';\r\n }\r\n // anything else gets escaped\r\n else {\r\n res = strings.escapeRegExpCharacters(char);\r\n }\r\n bracketVal += res;\r\n continue;\r\n }\r\n switch (char) {\r\n case '{':\r\n inBraces = true;\r\n continue;\r\n case '[':\r\n inBrackets = true;\r\n continue;\r\n case '}':\r\n const choices = splitGlobAware(braceVal, ',');\r\n // Converts {foo,bar} => [foo|bar]\r\n const braceRegExp = `(?:${choices.map(c => parseRegExp(c)).join('|')})`;\r\n regEx += braceRegExp;\r\n inBraces = false;\r\n braceVal = '';\r\n break;\r\n case ']':\r\n regEx += ('[' + bracketVal + ']');\r\n inBrackets = false;\r\n bracketVal = '';\r\n break;\r\n case '?':\r\n regEx += NO_PATH_REGEX; // 1 ? matches any single character except path separator (/ and \\)\r\n continue;\r\n case '*':\r\n regEx += starsToRegExp(1);\r\n continue;\r\n default:\r\n regEx += strings.escapeRegExpCharacters(char);\r\n }\r\n }\r\n // Tail: Add the slash we had split on if there is more to come and the remaining pattern is not a globstar\r\n // For example if pattern: some/**/*.js we want the \"/\" after some to be included in the RegEx to prevent\r\n // a folder called \"something\" to match as well.\r\n // However, if pattern: some/**, we tolerate that we also match on \"something\" because our globstar behaviour\r\n // is to match 0-N segments.\r\n if (index < segments.length - 1 && (segments[index + 1] !== GLOBSTAR || index + 2 < segments.length)) {\r\n regEx += PATH_REGEX;\r\n }\r\n // reset state\r\n previousSegmentWasGlobStar = false;\r\n });\r\n }\r\n return regEx;\r\n}\r\n// regexes to check for trival glob patterns that just check for String#endsWith\r\nconst T1 = /^\\*\\*\\/\\*\\.[\\w\\.-]+$/; // **/*.something\r\nconst T2 = /^\\*\\*\\/([\\w\\.-]+)\\/?$/; // **/something\r\nconst T3 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?)*}$/; // {**/*.something,**/*.else} or {**/package.json,**/project.json}\r\nconst T3_2 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/; // Like T3, with optional trailing /**\r\nconst T4 = /^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/; // **/something/else\r\nconst T5 = /^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/; // something/else\r\nconst CACHE = new LRUCache(10000); // bounded to 10000 elements\r\nconst FALSE = function () {\r\n return false;\r\n};\r\nconst NULL = function () {\r\n return null;\r\n};\r\nfunction parsePattern(arg1, options) {\r\n if (!arg1) {\r\n return NULL;\r\n }\r\n // Handle IRelativePattern\r\n let pattern;\r\n if (typeof arg1 !== 'string') {\r\n pattern = arg1.pattern;\r\n }\r\n else {\r\n pattern = arg1;\r\n }\r\n // Whitespace trimming\r\n pattern = pattern.trim();\r\n // Check cache\r\n const patternKey = `${pattern}_${!!options.trimForExclusions}`;\r\n let parsedPattern = CACHE.get(patternKey);\r\n if (parsedPattern) {\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n }\r\n // Check for Trivias\r\n let match;\r\n if (T1.test(pattern)) { // common pattern: **/*.txt just need endsWith check\r\n const base = pattern.substr(4); // '**/*'.length === 4\r\n parsedPattern = function (path, basename) {\r\n return typeof path === 'string' && path.endsWith(base) ? pattern : null;\r\n };\r\n }\r\n else if (match = T2.exec(trimForExclusions(pattern, options))) { // common pattern: **/some.txt just need basename check\r\n parsedPattern = trivia2(match[1], pattern);\r\n }\r\n else if ((options.trimForExclusions ? T3_2 : T3).test(pattern)) { // repetition of common patterns (see above) {**/*.txt,**/*.png}\r\n parsedPattern = trivia3(pattern, options);\r\n }\r\n else if (match = T4.exec(trimForExclusions(pattern, options))) { // common pattern: **/something/else just need endsWith check\r\n parsedPattern = trivia4and5(match[1].substr(1), pattern, true);\r\n }\r\n else if (match = T5.exec(trimForExclusions(pattern, options))) { // common pattern: something/else just need equals check\r\n parsedPattern = trivia4and5(match[1], pattern, false);\r\n }\r\n // Otherwise convert to pattern\r\n else {\r\n parsedPattern = toRegExp(pattern);\r\n }\r\n // Cache\r\n CACHE.set(patternKey, parsedPattern);\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n}\r\nfunction wrapRelativePattern(parsedPattern, arg2) {\r\n if (typeof arg2 === 'string') {\r\n return parsedPattern;\r\n }\r\n return function (path, basename) {\r\n if (!extpath.isEqualOrParent(path, arg2.base)) {\r\n return null;\r\n }\r\n return parsedPattern(paths.relative(arg2.base, path), basename);\r\n };\r\n}\r\nfunction trimForExclusions(pattern, options) {\r\n return options.trimForExclusions && pattern.endsWith('/**') ? pattern.substr(0, pattern.length - 2) : pattern; // dropping **, tailing / is dropped later\r\n}\r\n// common pattern: **/some.txt just need basename check\r\nfunction trivia2(base, originalPattern) {\r\n const slashBase = `/${base}`;\r\n const backslashBase = `\\\\${base}`;\r\n const parsedPattern = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (basename) {\r\n return basename === base ? originalPattern : null;\r\n }\r\n return path === base || path.endsWith(slashBase) || path.endsWith(backslashBase) ? originalPattern : null;\r\n };\r\n const basenames = [base];\r\n parsedPattern.basenames = basenames;\r\n parsedPattern.patterns = [originalPattern];\r\n parsedPattern.allBasenames = basenames;\r\n return parsedPattern;\r\n}\r\n// repetition of common patterns (see above) {**/*.txt,**/*.png}\r\nfunction trivia3(pattern, options) {\r\n const parsedPatterns = aggregateBasenameMatches(pattern.slice(1, -1).split(',')\r\n .map(pattern => parsePattern(pattern, options))\r\n .filter(pattern => pattern !== NULL), pattern);\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const parsedPattern = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n if (parsedPatterns[i](path, basename)) {\r\n return pattern;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n parsedPattern.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n parsedPattern.allPaths = allPaths;\r\n }\r\n return parsedPattern;\r\n}\r\n// common patterns: **/something/else just need endsWith check, something/else just needs and equals check\r\nfunction trivia4and5(targetPath, pattern, matchPathEnds) {\r\n const usingPosixSep = paths.sep === paths.posix.sep;\r\n const nativePath = usingPosixSep ? targetPath : targetPath.replace(ALL_FORWARD_SLASHES, paths.sep);\r\n const nativePathEnd = paths.sep + nativePath;\r\n const targetPathEnd = paths.posix.sep + targetPath;\r\n const parsedPattern = matchPathEnds ? function (testPath, basename) {\r\n return typeof testPath === 'string' &&\r\n ((testPath === nativePath || testPath.endsWith(nativePathEnd))\r\n || !usingPosixSep && (testPath === targetPath || testPath.endsWith(targetPathEnd)))\r\n ? pattern : null;\r\n } : function (testPath, basename) {\r\n return typeof testPath === 'string' &&\r\n (testPath === nativePath\r\n || (!usingPosixSep && testPath === targetPath))\r\n ? pattern : null;\r\n };\r\n parsedPattern.allPaths = [(matchPathEnds ? '*/' : './') + targetPath];\r\n return parsedPattern;\r\n}\r\nfunction toRegExp(pattern) {\r\n try {\r\n const regExp = new RegExp(`^${parseRegExp(pattern)}$`);\r\n return function (path) {\r\n regExp.lastIndex = 0; // reset RegExp to its initial state to reuse it!\r\n return typeof path === 'string' && regExp.test(path) ? pattern : null;\r\n };\r\n }\r\n catch (error) {\r\n return NULL;\r\n }\r\n}\r\nexport function match(arg1, path, hasSibling) {\r\n if (!arg1 || typeof path !== 'string') {\r\n return false;\r\n }\r\n return parse(arg1)(path, undefined, hasSibling);\r\n}\r\nexport function parse(arg1, options = {}) {\r\n if (!arg1) {\r\n return FALSE;\r\n }\r\n // Glob with String\r\n if (typeof arg1 === 'string' || isRelativePattern(arg1)) {\r\n const parsedPattern = parsePattern(arg1, options);\r\n if (parsedPattern === NULL) {\r\n return FALSE;\r\n }\r\n const resultPattern = function (path, basename) {\r\n return !!parsedPattern(path, basename);\r\n };\r\n if (parsedPattern.allBasenames) {\r\n resultPattern.allBasenames = parsedPattern.allBasenames;\r\n }\r\n if (parsedPattern.allPaths) {\r\n resultPattern.allPaths = parsedPattern.allPaths;\r\n }\r\n return resultPattern;\r\n }\r\n // Glob with Expression\r\n return parsedExpression(arg1, options);\r\n}\r\nexport function isRelativePattern(obj) {\r\n const rp = obj;\r\n return rp && typeof rp.base === 'string' && typeof rp.pattern === 'string';\r\n}\r\nfunction parsedExpression(expression, options) {\r\n const parsedPatterns = aggregateBasenameMatches(Object.getOwnPropertyNames(expression)\r\n .map(pattern => parseExpressionPattern(pattern, expression[pattern], options))\r\n .filter(pattern => pattern !== NULL));\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (!parsedPatterns.some(parsedPattern => !!parsedPattern.requiresSiblings)) {\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const resultExpression = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const result = parsedPatterns[i](path, basename);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n }\r\n const resultExpression = function (path, basename, hasSibling) {\r\n let name = undefined;\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const parsedPattern = parsedPatterns[i];\r\n if (parsedPattern.requiresSiblings && hasSibling) {\r\n if (!basename) {\r\n basename = paths.basename(path);\r\n }\r\n if (!name) {\r\n name = basename.substr(0, basename.length - paths.extname(path).length);\r\n }\r\n }\r\n const result = parsedPattern(path, basename, name, hasSibling);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n}\r\nfunction parseExpressionPattern(pattern, value, options) {\r\n if (value === false) {\r\n return NULL; // pattern is disabled\r\n }\r\n const parsedPattern = parsePattern(pattern, options);\r\n if (parsedPattern === NULL) {\r\n return NULL;\r\n }\r\n // Expression Pattern is \r\n if (typeof value === 'boolean') {\r\n return parsedPattern;\r\n }\r\n // Expression Pattern is \r\n if (value) {\r\n const when = value.when;\r\n if (typeof when === 'string') {\r\n const result = (path, basename, name, hasSibling) => {\r\n if (!hasSibling || !parsedPattern(path, basename)) {\r\n return null;\r\n }\r\n const clausePattern = when.replace('$(basename)', name);\r\n const matched = hasSibling(clausePattern);\r\n return isThenable(matched) ?\r\n matched.then(m => m ? pattern : null) :\r\n matched ? pattern : null;\r\n };\r\n result.requiresSiblings = true;\r\n return result;\r\n }\r\n }\r\n // Expression is Anything\r\n return parsedPattern;\r\n}\r\nfunction aggregateBasenameMatches(parsedPatterns, result) {\r\n const basenamePatterns = parsedPatterns.filter(parsedPattern => !!parsedPattern.basenames);\r\n if (basenamePatterns.length < 2) {\r\n return parsedPatterns;\r\n }\r\n const basenames = basenamePatterns.reduce((all, current) => {\r\n const basenames = current.basenames;\r\n return basenames ? all.concat(basenames) : all;\r\n }, []);\r\n let patterns;\r\n if (result) {\r\n patterns = [];\r\n for (let i = 0, n = basenames.length; i < n; i++) {\r\n patterns.push(result);\r\n }\r\n }\r\n else {\r\n patterns = basenamePatterns.reduce((all, current) => {\r\n const patterns = current.patterns;\r\n return patterns ? all.concat(patterns) : all;\r\n }, []);\r\n }\r\n const aggregate = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (!basename) {\r\n let i;\r\n for (i = path.length; i > 0; i--) {\r\n const ch = path.charCodeAt(i - 1);\r\n if (ch === 47 /* Slash */ || ch === 92 /* Backslash */) {\r\n break;\r\n }\r\n }\r\n basename = path.substr(i);\r\n }\r\n const index = basenames.indexOf(basename);\r\n return index !== -1 ? patterns[index] : null;\r\n };\r\n aggregate.basenames = basenames;\r\n aggregate.patterns = patterns;\r\n aggregate.allBasenames = basenames;\r\n const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !parsedPattern.basenames);\r\n aggregatedPatterns.push(aggregate);\r\n return aggregatedPatterns;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nexport function hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nexport function doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nexport function stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nexport function toHexString(bufferOrValue, bitsize = 32) {\r\n if (bufferOrValue instanceof ArrayBuffer) {\r\n return Array.from(new Uint8Array(bufferOrValue)).map(b => b.toString(16).padStart(2, '0')).join('');\r\n }\r\n return leftPad((bufferOrValue >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nexport class StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (strings.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (strings.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = strings.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (strings.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { escapeIcons } from './iconLabels.js';\r\nimport { illegalArgument } from './errors.js';\r\nexport class MarkdownString {\r\n constructor(value = '', isTrustedOrOptions = false) {\r\n var _a, _b;\r\n this.value = value;\r\n if (typeof this.value !== 'string') {\r\n throw illegalArgument('value');\r\n }\r\n if (typeof isTrustedOrOptions === 'boolean') {\r\n this.isTrusted = isTrustedOrOptions;\r\n this.supportThemeIcons = false;\r\n }\r\n else {\r\n this.isTrusted = (_a = isTrustedOrOptions.isTrusted) !== null && _a !== void 0 ? _a : undefined;\r\n this.supportThemeIcons = (_b = isTrustedOrOptions.supportThemeIcons) !== null && _b !== void 0 ? _b : false;\r\n }\r\n }\r\n appendText(value, newlineStyle = 0 /* Paragraph */) {\r\n this.value += escapeMarkdownSyntaxTokens(this.supportThemeIcons ? escapeIcons(value) : value)\r\n .replace(/([ \\t]+)/g, (_match, g1) => ' '.repeat(g1.length))\r\n .replace(/^>/gm, '\\\\>')\r\n .replace(/\\n/g, newlineStyle === 1 /* Break */ ? '\\\\\\n' : '\\n\\n');\r\n return this;\r\n }\r\n appendMarkdown(value) {\r\n this.value += value;\r\n return this;\r\n }\r\n appendCodeblock(langId, code) {\r\n this.value += '\\n```';\r\n this.value += langId;\r\n this.value += '\\n';\r\n this.value += code;\r\n this.value += '\\n```\\n';\r\n return this;\r\n }\r\n}\r\nexport function isEmptyMarkdownString(oneOrMany) {\r\n if (isMarkdownString(oneOrMany)) {\r\n return !oneOrMany.value;\r\n }\r\n else if (Array.isArray(oneOrMany)) {\r\n return oneOrMany.every(isEmptyMarkdownString);\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\nexport function isMarkdownString(thing) {\r\n if (thing instanceof MarkdownString) {\r\n return true;\r\n }\r\n else if (thing && typeof thing === 'object') {\r\n return typeof thing.value === 'string'\r\n && (typeof thing.isTrusted === 'boolean' || thing.isTrusted === undefined)\r\n && (typeof thing.supportThemeIcons === 'boolean' || thing.supportThemeIcons === undefined);\r\n }\r\n return false;\r\n}\r\nexport function escapeMarkdownSyntaxTokens(text) {\r\n // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\r\n return text.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&');\r\n}\r\nexport function removeMarkdownEscapes(text) {\r\n if (!text) {\r\n return text;\r\n }\r\n return text.replace(/\\\\([\\\\`*_{}[\\]()#+\\-.!])/g, '$1');\r\n}\r\nexport function parseHrefAndDimensions(href) {\r\n const dimensions = [];\r\n const splitted = href.split('|').map(s => s.trim());\r\n href = splitted[0];\r\n const parameters = splitted[1];\r\n if (parameters) {\r\n const heightFromParams = /height=(\\d+)/.exec(parameters);\r\n const widthFromParams = /width=(\\d+)/.exec(parameters);\r\n const height = heightFromParams ? heightFromParams[1] : '';\r\n const width = widthFromParams ? widthFromParams[1] : '';\r\n const widthIsFinite = isFinite(parseInt(width));\r\n const heightIsFinite = isFinite(parseInt(height));\r\n if (widthIsFinite) {\r\n dimensions.push(`width=\"${width}\"`);\r\n }\r\n if (heightIsFinite) {\r\n dimensions.push(`height=\"${height}\"`);\r\n }\r\n }\r\n return { href, dimensions };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CSSIcon } from './codicons.js';\r\nimport { matchesFuzzy } from './filters.js';\r\nimport { ltrim } from './strings.js';\r\nexport const iconStartMarker = '$(';\r\nconst iconsRegex = new RegExp(`\\\\$\\\\(${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?\\\\)`, 'g'); // no capturing groups\r\nconst escapeIconsRegex = new RegExp(`(\\\\\\\\)?${iconsRegex.source}`, 'g');\r\nexport function escapeIcons(text) {\r\n return text.replace(escapeIconsRegex, (match, escaped) => escaped ? match : `\\\\${match}`);\r\n}\r\nconst markdownEscapedIconsRegex = new RegExp(`\\\\\\\\${iconsRegex.source}`, 'g');\r\nexport function markdownEscapeEscapedIcons(text) {\r\n // Need to add an extra \\ for escaping in markdown\r\n return text.replace(markdownEscapedIconsRegex, match => `\\\\${match}`);\r\n}\r\nconst stripIconsRegex = new RegExp(`(\\\\s)?(\\\\\\\\)?${iconsRegex.source}(\\\\s)?`, 'g');\r\nexport function stripIcons(text) {\r\n if (text.indexOf(iconStartMarker) === -1) {\r\n return text;\r\n }\r\n return text.replace(stripIconsRegex, (match, preWhitespace, escaped, postWhitespace) => escaped ? match : preWhitespace || postWhitespace || '');\r\n}\r\nexport function parseLabelWithIcons(text) {\r\n const firstIconIndex = text.indexOf(iconStartMarker);\r\n if (firstIconIndex === -1) {\r\n return { text }; // return early if the word does not include an icon\r\n }\r\n return doParseLabelWithIcons(text, firstIconIndex);\r\n}\r\nfunction doParseLabelWithIcons(text, firstIconIndex) {\r\n const iconOffsets = [];\r\n let textWithoutIcons = '';\r\n function appendChars(chars) {\r\n if (chars) {\r\n textWithoutIcons += chars;\r\n for (const _ of chars) {\r\n iconOffsets.push(iconsOffset); // make sure to fill in icon offsets\r\n }\r\n }\r\n }\r\n let currentIconStart = -1;\r\n let currentIconValue = '';\r\n let iconsOffset = 0;\r\n let char;\r\n let nextChar;\r\n let offset = firstIconIndex;\r\n const length = text.length;\r\n // Append all characters until the first icon\r\n appendChars(text.substr(0, firstIconIndex));\r\n // example: $(file-symlink-file) my cool $(other-icon) entry\r\n while (offset < length) {\r\n char = text[offset];\r\n nextChar = text[offset + 1];\r\n // beginning of icon: some value $( <--\r\n if (char === iconStartMarker[0] && nextChar === iconStartMarker[1]) {\r\n currentIconStart = offset;\r\n // if we had a previous potential icon value without\r\n // the closing ')', it was actually not an icon and\r\n // so we have to add it to the actual value\r\n appendChars(currentIconValue);\r\n currentIconValue = iconStartMarker;\r\n offset++; // jump over '('\r\n }\r\n // end of icon: some value $(some-icon) <--\r\n else if (char === ')' && currentIconStart !== -1) {\r\n const currentIconLength = offset - currentIconStart + 1; // +1 to include the closing ')'\r\n iconsOffset += currentIconLength;\r\n currentIconStart = -1;\r\n currentIconValue = '';\r\n }\r\n // within icon\r\n else if (currentIconStart !== -1) {\r\n // Make sure this is a real icon name\r\n if (/^[a-z0-9\\-]$/i.test(char)) {\r\n currentIconValue += char;\r\n }\r\n else {\r\n // This is not a real icon, treat it as text\r\n appendChars(currentIconValue);\r\n currentIconStart = -1;\r\n currentIconValue = '';\r\n }\r\n }\r\n // any value outside of icon\r\n else {\r\n appendChars(char);\r\n }\r\n offset++;\r\n }\r\n // if we had a previous potential icon value without\r\n // the closing ')', it was actually not an icon and\r\n // so we have to add it to the actual value\r\n appendChars(currentIconValue);\r\n return { text: textWithoutIcons, iconOffsets };\r\n}\r\nexport function matchesFuzzyIconAware(query, target, enableSeparateSubstringMatching = false) {\r\n const { text, iconOffsets } = target;\r\n // Return early if there are no icon markers in the word to match against\r\n if (!iconOffsets || iconOffsets.length === 0) {\r\n return matchesFuzzy(query, text, enableSeparateSubstringMatching);\r\n }\r\n // Trim the word to match against because it could have leading\r\n // whitespace now if the word started with an icon\r\n const wordToMatchAgainstWithoutIconsTrimmed = ltrim(text, ' ');\r\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutIconsTrimmed.length;\r\n // match on value without icon\r\n const matches = matchesFuzzy(query, wordToMatchAgainstWithoutIconsTrimmed, enableSeparateSubstringMatching);\r\n // Map matches back to offsets with icon and trimming\r\n if (matches) {\r\n for (const match of matches) {\r\n const iconOffset = iconOffsets[match.start + leadingWhitespaceOffset] /* icon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\r\n match.start += iconOffset;\r\n match.end += iconOffset;\r\n }\r\n }\r\n return matches;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class IdGenerator {\r\n constructor(prefix) {\r\n this._prefix = prefix;\r\n this._lastId = 0;\r\n }\r\n nextId() {\r\n return this._prefix + (++this._lastId);\r\n }\r\n}\r\nexport const defaultGenerator = new IdGenerator('id#');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function isEmpty(iterable) {\r\n return !iterable || iterable[Symbol.iterator]().next().done === true;\r\n }\r\n Iterable.isEmpty = isEmpty;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function find(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return element;\r\n }\r\n }\r\n return undefined;\r\n }\r\n Iterable.find = find;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n let index = 0;\r\n for (const element of iterable) {\r\n yield fn(element, index++);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n function* concatNested(iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concatNested = concatNested;\r\n function reduce(iterable, reducer, initialValue) {\r\n let value = initialValue;\r\n for (const element of iterable) {\r\n value = reducer(value, element);\r\n }\r\n return value;\r\n }\r\n Iterable.reduce = reduce;\r\n /**\r\n * Returns an iterable slice of the array, with the same semantics as `array.slice()`.\r\n */\r\n function* slice(arr, from, to = arr.length) {\r\n if (from < 0) {\r\n from += arr.length;\r\n }\r\n if (to < 0) {\r\n to += arr.length;\r\n }\r\n else if (to > arr.length) {\r\n to = arr.length;\r\n }\r\n for (; from < to; from++) {\r\n yield arr[from];\r\n }\r\n }\r\n Iterable.slice = slice;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n /**\r\n * Returns whether the iterables are the same length and all items are\r\n * equal using the comparator function.\r\n */\r\n function equals(a, b, comparator = (at, bt) => at === bt) {\r\n const ai = a[Symbol.iterator]();\r\n const bi = b[Symbol.iterator]();\r\n while (true) {\r\n const an = ai.next();\r\n const bn = bi.next();\r\n if (an.done !== bn.done) {\r\n return false;\r\n }\r\n else if (an.done) {\r\n return true;\r\n }\r\n else if (!comparator(an.value, bn.value)) {\r\n return false;\r\n }\r\n }\r\n }\r\n Iterable.equals = equals;\r\n})(Iterable || (Iterable = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from './errors.js';\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nexport var KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nexport function KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nexport function createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nexport function createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nexport class SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nexport class ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nexport class ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nexport class ResolvedKeybinding {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport class ModifierLabelProvider {\r\n constructor(mac, windows, linux = windows) {\r\n this.modifierLabels = [null]; // index 0 will never me accessed.\r\n this.modifierLabels[2 /* Macintosh */] = mac;\r\n this.modifierLabels[1 /* Windows */] = windows;\r\n this.modifierLabels[3 /* Linux */] = linux;\r\n }\r\n toLabel(OS, parts, keyLabelProvider) {\r\n if (parts.length === 0) {\r\n return null;\r\n }\r\n const result = [];\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n const part = parts[i];\r\n const keyLabel = keyLabelProvider(part);\r\n if (keyLabel === null) {\r\n // this keybinding cannot be expressed...\r\n return null;\r\n }\r\n result[i] = _simpleAsString(part, keyLabel, this.modifierLabels[OS]);\r\n }\r\n return result.join(' ');\r\n }\r\n}\r\n/**\r\n * A label provider that prints modifiers in a suitable format for displaying in the UI.\r\n */\r\nexport const UILabelProvider = new ModifierLabelProvider({\r\n ctrlKey: '⌃',\r\n shiftKey: '⇧',\r\n altKey: '⌥',\r\n metaKey: '⌘',\r\n separator: '',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey', comment: ['This is the short form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\n/**\r\n * A label provider that prints modifiers in a suitable format for ARIA.\r\n */\r\nexport const AriaLabelProvider = new ModifierLabelProvider({\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, \"Command\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\nfunction _simpleAsString(modifiers, key, labels) {\r\n if (key === null) {\r\n return '';\r\n }\r\n const result = [];\r\n // translate modifier keys: Ctrl-Shift-Alt-Meta\r\n if (modifiers.ctrlKey) {\r\n result.push(labels.ctrlKey);\r\n }\r\n if (modifiers.shiftKey) {\r\n result.push(labels.shiftKey);\r\n }\r\n if (modifiers.altKey) {\r\n result.push(labels.altKey);\r\n }\r\n if (modifiers.metaKey) {\r\n result.push(labels.metaKey);\r\n }\r\n // the actual key\r\n if (key !== '') {\r\n result.push(key);\r\n }\r\n return result.join(labels.separator);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { once } from './functional.js';\r\nimport { Iterable } from './iterator.js';\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nlet disposableTracker = null;\r\nexport function setDisposableTracker(tracker) {\r\n disposableTracker = tracker;\r\n}\r\nif (TRACK_DISPOSABLES) {\r\n const __is_disposable_tracked__ = '__is_disposable_tracked__';\r\n setDisposableTracker(new class {\r\n trackDisposable(x) {\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n }\r\n setParent(child, parent) {\r\n if (child && child !== Disposable.None) {\r\n try {\r\n child[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n }\r\n markAsDisposed(disposable) {\r\n if (disposable && disposable !== Disposable.None) {\r\n try {\r\n disposable[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n }\r\n markAsSingleton(disposable) { }\r\n });\r\n}\r\nfunction trackDisposable(x) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.trackDisposable(x);\r\n return x;\r\n}\r\nfunction markAsDisposed(disposable) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsDisposed(disposable);\r\n}\r\nfunction setParentOfDisposable(child, parent) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.setParent(child, parent);\r\n}\r\nfunction setParentOfDisposables(children, parent) {\r\n if (!disposableTracker) {\r\n return;\r\n }\r\n for (const child of children) {\r\n disposableTracker.setParent(child, parent);\r\n }\r\n}\r\n/**\r\n * Indicates that the given object is a singleton which does not need to be disposed.\r\n*/\r\nexport function markAsSingleton(singleton) {\r\n disposableTracker === null || disposableTracker === void 0 ? void 0 : disposableTracker.markAsSingleton(singleton);\r\n return singleton;\r\n}\r\nexport class MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encountered errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nexport function isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nexport function dispose(arg) {\r\n if (Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nexport function combinedDisposable(...disposables) {\r\n const parent = toDisposable(() => dispose(disposables));\r\n setParentOfDisposables(disposables, parent);\r\n return parent;\r\n}\r\nexport function toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: once(() => {\r\n markAsDisposed(self);\r\n fn();\r\n })\r\n });\r\n return self;\r\n}\r\nexport class DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markAsDisposed(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(o) {\r\n if (!o) {\r\n return o;\r\n }\r\n if (o === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n setParentOfDisposable(o, this);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(o);\r\n }\r\n return o;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nexport class Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n setParentOfDisposable(this._store, this);\r\n }\r\n dispose() {\r\n markAsDisposed(this);\r\n this._store.dispose();\r\n }\r\n _register(o) {\r\n if (o === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(o);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n var _a;\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n if (value) {\r\n setParentOfDisposable(value, this);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n var _a;\r\n this._isDisposed = true;\r\n markAsDisposed(this);\r\n (_a = this._value) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._value = undefined;\r\n }\r\n /**\r\n * Clears the value, but does not dispose it.\r\n * The old value is returned.\r\n */\r\n clearAndLeak() {\r\n const oldValue = this._value;\r\n this._value = undefined;\r\n if (oldValue) {\r\n setParentOfDisposable(oldValue, null);\r\n }\r\n return oldValue;\r\n }\r\n}\r\nexport class ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nexport class LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n const next = node.next;\r\n node.prev = Node.Undefined;\r\n node.next = Node.Undefined;\r\n node = next;\r\n }\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a, _b;\r\nimport { URI } from './uri.js';\r\nimport { compareSubstringIgnoreCase, compare, compareSubstring, compareIgnoreCase } from './strings.js';\r\nexport class StringIterator {\r\n constructor() {\r\n this._value = '';\r\n this._pos = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._pos = 0;\r\n return this;\r\n }\r\n next() {\r\n this._pos += 1;\r\n return this;\r\n }\r\n hasNext() {\r\n return this._pos < this._value.length - 1;\r\n }\r\n cmp(a) {\r\n const aCode = a.charCodeAt(0);\r\n const thisCode = this._value.charCodeAt(this._pos);\r\n return aCode - thisCode;\r\n }\r\n value() {\r\n return this._value[this._pos];\r\n }\r\n}\r\nexport class ConfigKeysIterator {\r\n constructor(_caseSensitive = true) {\r\n this._caseSensitive = _caseSensitive;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._from = 0;\r\n this._to = 0;\r\n return this.next();\r\n }\r\n hasNext() {\r\n return this._to < this._value.length;\r\n }\r\n next() {\r\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\r\n this._from = this._to;\r\n let justSeps = true;\r\n for (; this._to < this._value.length; this._to++) {\r\n const ch = this._value.charCodeAt(this._to);\r\n if (ch === 46 /* Period */) {\r\n if (justSeps) {\r\n this._from++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n justSeps = false;\r\n }\r\n }\r\n return this;\r\n }\r\n cmp(a) {\r\n return this._caseSensitive\r\n ? compareSubstring(a, this._value, 0, a.length, this._from, this._to)\r\n : compareSubstringIgnoreCase(a, this._value, 0, a.length, this._from, this._to);\r\n }\r\n value() {\r\n return this._value.substring(this._from, this._to);\r\n }\r\n}\r\nexport class PathIterator {\r\n constructor(_splitOnBackslash = true, _caseSensitive = true) {\r\n this._splitOnBackslash = _splitOnBackslash;\r\n this._caseSensitive = _caseSensitive;\r\n }\r\n reset(key) {\r\n this._value = key.replace(/\\\\$|\\/$/, '');\r\n this._from = 0;\r\n this._to = 0;\r\n return this.next();\r\n }\r\n hasNext() {\r\n return this._to < this._value.length;\r\n }\r\n next() {\r\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\r\n this._from = this._to;\r\n let justSeps = true;\r\n for (; this._to < this._value.length; this._to++) {\r\n const ch = this._value.charCodeAt(this._to);\r\n if (ch === 47 /* Slash */ || this._splitOnBackslash && ch === 92 /* Backslash */) {\r\n if (justSeps) {\r\n this._from++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n justSeps = false;\r\n }\r\n }\r\n return this;\r\n }\r\n cmp(a) {\r\n return this._caseSensitive\r\n ? compareSubstring(a, this._value, 0, a.length, this._from, this._to)\r\n : compareSubstringIgnoreCase(a, this._value, 0, a.length, this._from, this._to);\r\n }\r\n value() {\r\n return this._value.substring(this._from, this._to);\r\n }\r\n}\r\nexport class UriIterator {\r\n constructor(_ignorePathCasing) {\r\n this._ignorePathCasing = _ignorePathCasing;\r\n this._states = [];\r\n this._stateIdx = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._states = [];\r\n if (this._value.scheme) {\r\n this._states.push(1 /* Scheme */);\r\n }\r\n if (this._value.authority) {\r\n this._states.push(2 /* Authority */);\r\n }\r\n if (this._value.path) {\r\n this._pathIterator = new PathIterator(false, !this._ignorePathCasing(key));\r\n this._pathIterator.reset(key.path);\r\n if (this._pathIterator.value()) {\r\n this._states.push(3 /* Path */);\r\n }\r\n }\r\n if (this._value.query) {\r\n this._states.push(4 /* Query */);\r\n }\r\n if (this._value.fragment) {\r\n this._states.push(5 /* Fragment */);\r\n }\r\n this._stateIdx = 0;\r\n return this;\r\n }\r\n next() {\r\n if (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext()) {\r\n this._pathIterator.next();\r\n }\r\n else {\r\n this._stateIdx += 1;\r\n }\r\n return this;\r\n }\r\n hasNext() {\r\n return (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext())\r\n || this._stateIdx < this._states.length - 1;\r\n }\r\n cmp(a) {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return compareIgnoreCase(a, this._value.scheme);\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return compareIgnoreCase(a, this._value.authority);\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.cmp(a);\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return compare(a, this._value.query);\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return compare(a, this._value.fragment);\r\n }\r\n throw new Error();\r\n }\r\n value() {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return this._value.scheme;\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return this._value.authority;\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.value();\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return this._value.query;\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return this._value.fragment;\r\n }\r\n throw new Error();\r\n }\r\n}\r\nclass TernarySearchTreeNode {\r\n isEmpty() {\r\n return !this.left && !this.mid && !this.right && !this.value;\r\n }\r\n}\r\nexport class TernarySearchTree {\r\n constructor(segments) {\r\n this._iter = segments;\r\n }\r\n static forUris(ignorePathCasing = () => false) {\r\n return new TernarySearchTree(new UriIterator(ignorePathCasing));\r\n }\r\n static forStrings() {\r\n return new TernarySearchTree(new StringIterator());\r\n }\r\n static forConfigKeys() {\r\n return new TernarySearchTree(new ConfigKeysIterator());\r\n }\r\n clear() {\r\n this._root = undefined;\r\n }\r\n set(key, element) {\r\n const iter = this._iter.reset(key);\r\n let node;\r\n if (!this._root) {\r\n this._root = new TernarySearchTreeNode();\r\n this._root.segment = iter.value();\r\n }\r\n node = this._root;\r\n while (true) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n if (!node.left) {\r\n node.left = new TernarySearchTreeNode();\r\n node.left.segment = iter.value();\r\n }\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n if (!node.right) {\r\n node.right = new TernarySearchTreeNode();\r\n node.right.segment = iter.value();\r\n }\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n if (!node.mid) {\r\n node.mid = new TernarySearchTreeNode();\r\n node.mid.segment = iter.value();\r\n }\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n const oldElement = node.value;\r\n node.value = element;\r\n node.key = key;\r\n return oldElement;\r\n }\r\n get(key) {\r\n var _c;\r\n return (_c = this._getNode(key)) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n _getNode(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node;\r\n }\r\n has(key) {\r\n const node = this._getNode(key);\r\n return !((node === null || node === void 0 ? void 0 : node.value) === undefined && (node === null || node === void 0 ? void 0 : node.mid) === undefined);\r\n }\r\n delete(key) {\r\n return this._delete(key, false);\r\n }\r\n deleteSuperstr(key) {\r\n return this._delete(key, true);\r\n }\r\n _delete(key, superStr) {\r\n const iter = this._iter.reset(key);\r\n const stack = [];\r\n let node = this._root;\r\n // find and unset node\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n stack.push([1, node]);\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n stack.push([-1, node]);\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n stack.push([0, node]);\r\n node = node.mid;\r\n }\r\n else {\r\n if (superStr) {\r\n // remove children\r\n node.left = undefined;\r\n node.mid = undefined;\r\n node.right = undefined;\r\n }\r\n else {\r\n // remove element\r\n node.value = undefined;\r\n }\r\n // clean up empty nodes\r\n while (stack.length > 0 && node.isEmpty()) {\r\n let [dir, parent] = stack.pop();\r\n switch (dir) {\r\n case 1:\r\n parent.left = undefined;\r\n break;\r\n case 0:\r\n parent.mid = undefined;\r\n break;\r\n case -1:\r\n parent.right = undefined;\r\n break;\r\n }\r\n node = parent;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n findSubstr(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n let candidate = undefined;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n candidate = node.value || candidate;\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node && node.value || candidate;\r\n }\r\n findSuperstr(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n node = node.mid;\r\n }\r\n else {\r\n // collect\r\n if (!node.mid) {\r\n return undefined;\r\n }\r\n else {\r\n return this._entries(node.mid);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n forEach(callback) {\r\n for (const [key, value] of this) {\r\n callback(value, key);\r\n }\r\n }\r\n *[Symbol.iterator]() {\r\n yield* this._entries(this._root);\r\n }\r\n *_entries(node) {\r\n // DFS\r\n if (!node) {\r\n return;\r\n }\r\n const stack = [node];\r\n while (stack.length > 0) {\r\n const node = stack.pop();\r\n if (node) {\r\n if (node.value) {\r\n yield [node.key, node.value];\r\n }\r\n if (node.left) {\r\n stack.push(node.left);\r\n }\r\n if (node.mid) {\r\n stack.push(node.mid);\r\n }\r\n if (node.right) {\r\n stack.push(node.right);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nexport class ResourceMap {\r\n constructor(mapOrKeyFn, toKey) {\r\n this[_a] = 'ResourceMap';\r\n if (mapOrKeyFn instanceof ResourceMap) {\r\n this.map = new Map(mapOrKeyFn.map);\r\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\r\n }\r\n else {\r\n this.map = new Map();\r\n this.toKey = mapOrKeyFn !== null && mapOrKeyFn !== void 0 ? mapOrKeyFn : ResourceMap.defaultToKey;\r\n }\r\n }\r\n set(resource, value) {\r\n this.map.set(this.toKey(resource), value);\r\n return this;\r\n }\r\n get(resource) {\r\n return this.map.get(this.toKey(resource));\r\n }\r\n has(resource) {\r\n return this.map.has(this.toKey(resource));\r\n }\r\n get size() {\r\n return this.map.size;\r\n }\r\n clear() {\r\n this.map.clear();\r\n }\r\n delete(resource) {\r\n return this.map.delete(this.toKey(resource));\r\n }\r\n forEach(clb, thisArg) {\r\n if (typeof thisArg !== 'undefined') {\r\n clb = clb.bind(thisArg);\r\n }\r\n for (let [index, value] of this.map) {\r\n clb(value, URI.parse(index), this);\r\n }\r\n }\r\n values() {\r\n return this.map.values();\r\n }\r\n *keys() {\r\n for (let key of this.map.keys()) {\r\n yield URI.parse(key);\r\n }\r\n }\r\n *entries() {\r\n for (let tuple of this.map.entries()) {\r\n yield [URI.parse(tuple[0]), tuple[1]];\r\n }\r\n }\r\n *[(_a = Symbol.toStringTag, Symbol.iterator)]() {\r\n for (let item of this.map) {\r\n yield [URI.parse(item[0]), item[1]];\r\n }\r\n }\r\n}\r\nResourceMap.defaultToKey = (resource) => resource.toString();\r\nexport class LinkedMap {\r\n constructor() {\r\n this[_b] = 'LinkedMap';\r\n this._map = new Map();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state = 0;\r\n }\r\n clear() {\r\n this._map.clear();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state++;\r\n }\r\n isEmpty() {\r\n return !this._head && !this._tail;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get first() {\r\n var _c;\r\n return (_c = this._head) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n get last() {\r\n var _c;\r\n return (_c = this._tail) === null || _c === void 0 ? void 0 : _c.value;\r\n }\r\n has(key) {\r\n return this._map.has(key);\r\n }\r\n get(key, touch = 0 /* None */) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n return item.value;\r\n }\r\n set(key, value, touch = 0 /* None */) {\r\n let item = this._map.get(key);\r\n if (item) {\r\n item.value = value;\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n }\r\n else {\r\n item = { key, value, next: undefined, previous: undefined };\r\n switch (touch) {\r\n case 0 /* None */:\r\n this.addItemLast(item);\r\n break;\r\n case 1 /* AsOld */:\r\n this.addItemFirst(item);\r\n break;\r\n case 2 /* AsNew */:\r\n this.addItemLast(item);\r\n break;\r\n default:\r\n this.addItemLast(item);\r\n break;\r\n }\r\n this._map.set(key, item);\r\n this._size++;\r\n }\r\n return this;\r\n }\r\n delete(key) {\r\n return !!this.remove(key);\r\n }\r\n remove(key) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n this._map.delete(key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n shift() {\r\n if (!this._head && !this._tail) {\r\n return undefined;\r\n }\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n const item = this._head;\r\n this._map.delete(item.key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n forEach(callbackfn, thisArg) {\r\n const state = this._state;\r\n let current = this._head;\r\n while (current) {\r\n if (thisArg) {\r\n callbackfn.bind(thisArg)(current.value, current.key, this);\r\n }\r\n else {\r\n callbackfn(current.value, current.key, this);\r\n }\r\n if (this._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n current = current.next;\r\n }\r\n }\r\n keys() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.key, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n values() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.value, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n entries() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: [current.key, current.value], done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n [(_b = Symbol.toStringTag, Symbol.iterator)]() {\r\n return this.entries();\r\n }\r\n trimOld(newSize) {\r\n if (newSize >= this.size) {\r\n return;\r\n }\r\n if (newSize === 0) {\r\n this.clear();\r\n return;\r\n }\r\n let current = this._head;\r\n let currentSize = this.size;\r\n while (current && currentSize > newSize) {\r\n this._map.delete(current.key);\r\n current = current.next;\r\n currentSize--;\r\n }\r\n this._head = current;\r\n this._size = currentSize;\r\n if (current) {\r\n current.previous = undefined;\r\n }\r\n this._state++;\r\n }\r\n addItemFirst(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._tail = item;\r\n }\r\n else if (!this._head) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.next = this._head;\r\n this._head.previous = item;\r\n }\r\n this._head = item;\r\n this._state++;\r\n }\r\n addItemLast(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._head = item;\r\n }\r\n else if (!this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n }\r\n this._tail = item;\r\n this._state++;\r\n }\r\n removeItem(item) {\r\n if (item === this._head && item === this._tail) {\r\n this._head = undefined;\r\n this._tail = undefined;\r\n }\r\n else if (item === this._head) {\r\n // This can only happen if size === 1 which is handled\r\n // by the case above.\r\n if (!item.next) {\r\n throw new Error('Invalid list');\r\n }\r\n item.next.previous = undefined;\r\n this._head = item.next;\r\n }\r\n else if (item === this._tail) {\r\n // This can only happen if size === 1 which is handled\r\n // by the case above.\r\n if (!item.previous) {\r\n throw new Error('Invalid list');\r\n }\r\n item.previous.next = undefined;\r\n this._tail = item.previous;\r\n }\r\n else {\r\n const next = item.next;\r\n const previous = item.previous;\r\n if (!next || !previous) {\r\n throw new Error('Invalid list');\r\n }\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = undefined;\r\n this._state++;\r\n }\r\n touch(item, touch) {\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n if ((touch !== 1 /* AsOld */ && touch !== 2 /* AsNew */)) {\r\n return;\r\n }\r\n if (touch === 1 /* AsOld */) {\r\n if (item === this._head) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item\r\n if (item === this._tail) {\r\n // previous must be defined since item was not head but is tail\r\n // So there are more than on item in the map\r\n previous.next = undefined;\r\n this._tail = previous;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n // Insert the node at head\r\n item.previous = undefined;\r\n item.next = this._head;\r\n this._head.previous = item;\r\n this._head = item;\r\n this._state++;\r\n }\r\n else if (touch === 2 /* AsNew */) {\r\n if (item === this._tail) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item.\r\n if (item === this._head) {\r\n // next must be defined since item was not tail but is head\r\n // So there are more than on item in the map\r\n next.previous = undefined;\r\n this._head = next;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n this._tail = item;\r\n this._state++;\r\n }\r\n }\r\n toJSON() {\r\n const data = [];\r\n this.forEach((value, key) => {\r\n data.push([key, value]);\r\n });\r\n return data;\r\n }\r\n fromJSON(data) {\r\n this.clear();\r\n for (const [key, value] of data) {\r\n this.set(key, value);\r\n }\r\n }\r\n}\r\nexport class LRUCache extends LinkedMap {\r\n constructor(limit, ratio = 1) {\r\n super();\r\n this._limit = limit;\r\n this._ratio = Math.min(Math.max(0, ratio), 1);\r\n }\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(limit) {\r\n this._limit = limit;\r\n this.checkTrim();\r\n }\r\n get(key, touch = 2 /* AsNew */) {\r\n return super.get(key, touch);\r\n }\r\n peek(key) {\r\n return super.get(key, 0 /* None */);\r\n }\r\n set(key, value) {\r\n super.set(key, value, 2 /* AsNew */);\r\n this.checkTrim();\r\n return this;\r\n }\r\n checkTrim() {\r\n if (this.size > this._limit) {\r\n this.trimOld(Math.round(this._limit * this._ratio));\r\n }\r\n }\r\n}\r\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, 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(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n}(this, (function () { '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 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;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\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 it = o[Symbol.iterator]();\n return it.next.bind(it);\n }\n\n function createCommonjsModule(fn) {\n var module = { exports: {} };\n \treturn fn(module, module.exports), module.exports;\n }\n\n var defaults = createCommonjsModule(function (module) {\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\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\n function changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n }\n\n module.exports = {\n defaults: getDefaults(),\n getDefaults: getDefaults,\n changeDefaults: changeDefaults\n };\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\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\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\n var caret = /(^|[^\\[])\\^/g;\n\n function edit(regex, opt) {\n regex = regex.source || regex;\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\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\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\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\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\n var noopTest = {\n exec: function noopTest() {}\n };\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\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;\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 } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // 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.substr(0, l - suffLen);\n }\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\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 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 var helpers = {\n escape: escape,\n unescape: unescape,\n edit: edit,\n cleanUrl: cleanUrl,\n resolveUrl: resolveUrl,\n noopTest: noopTest,\n merge: merge,\n splitCells: splitCells,\n rtrim: rtrim,\n findClosingBracket: findClosingBracket,\n checkSanitizeDeprecation: checkSanitizeDeprecation,\n repeatString: repeatString\n };\n\n var defaults$1 = defaults.defaults;\n var rtrim$1 = helpers.rtrim,\n splitCells$1 = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket$1 = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\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 return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\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_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$1;\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) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\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$1(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$1(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 return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\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.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i], item.header.length);\n }\n\n return item;\n }\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(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\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 = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n bcurr,\n bnext,\n addBack,\n loose,\n istask,\n ischecked;\n var l = itemMatch.length;\n bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item; // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n if (i !== l - 1) {\n bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);\n\n if (!this.options.pedantic ? bnext[1].length > bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {\n // nested list\n itemMatch.splice(i, 2, itemMatch[i] + '\\n' + itemMatch[i + 1]);\n i--;\n l--;\n continue;\n } else {\n if ( // different bullet style\n !this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {\n addBack = itemMatch.slice(i + 1).join('\\n');\n list.raw = list.raw.substring(0, list.raw.length - addBack.length);\n i = l - 1;\n }\n }\n\n bcurr = bnext;\n } // Remove the list item's bullet\n // so it is seen as the next token.\n\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+[.)]) ?/, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\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 return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\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 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$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').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;\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.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\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 return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\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 };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(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, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: 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$1(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$1(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]);\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]);\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;\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\\u08A0-\\u08B4\\u08B6-\\u08C7\\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\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\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-\\u170C\\u170E-\\u1711\\u1720-\\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-\\u1B4B\\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-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\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-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\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\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\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\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\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]|\\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\\uDEC0-\\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]|[\\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\\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]|\\uD82C[\\uDC00-\\uDD1E\\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]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\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-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\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;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength); // Bump maskedSrc to same section of string as src (move to lexer?)\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; // matched the first alternative in rules.js (skip the * 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 // If this is the last rDelimiter, remove extra characters. *a*** -> *a*\n\n if (delimTotal + midDelimTotal - rLength <= 0 && !maskedSrc.slice(endReg.lastIndex).match(endReg)) {\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n }\n\n if (Math.min(lLength, rLength) % 2) {\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(1, lLength + match.index + rLength)\n };\n }\n\n if (Math.min(lLength, rLength) % 2 === 0) {\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(2, lLength + match.index + rLength - 1)\n };\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 };\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, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (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 var noopTest$1 = helpers.noopTest,\n edit$1 = helpers.edit,\n merge$1 = helpers.merge;\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}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?! {0,3}bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\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{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest$1,\n table: noopTest$1,\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| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit$1(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.item = /^( *)(bull) ?[^\\n]*(?:\\n(?! *bull ?)[^\\n]*)*/;\n block.item = edit$1(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();\n block.listItemStart = edit$1(/^( *)(bull)/).replace('bull', block.bullet).getRegex();\n block.list = edit$1(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$1(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$1(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\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|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit$1(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge$1({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge$1({}, block.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' {0,3}\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.nptable = edit$1(block.gfm.nptable).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|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.table = edit$1(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|!--)').replace('tag', block._tag) // tables 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$1({}, block.normal, {\n html: edit$1('^ *(?: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$1,\n // fences not supported\n paragraph: edit$1(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$1,\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)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\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 other delimiter (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$1,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit$1(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$1(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit$1(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit$1(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit$1(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$1(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$1(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$1(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit$1(inline.reflink).replace('label', inline._label).getRegex();\n inline.reflinkSearch = edit$1(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge$1({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge$1({}, 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$1(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit$1(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge$1({}, inline.normal, {\n escape: edit$1(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)|[\\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_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$2;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer_1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block$1.normal,\n inline: inline$1.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block$1.pedantic;\n rules.inline = inline$1.pedantic;\n } else if (this.options.gfm) {\n rules.block = block$1.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline$1.breaks;\n } else {\n rules.inline = inline$1.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').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n\n var token, i, l, lastToken;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\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') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.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 } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(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 token.tokens = this.blockTokens(token.text, [], top);\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 l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\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 (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n 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\n\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\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 } 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 _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n var token, lastToken; // 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$1('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$1('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; // escape\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, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n var _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\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\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 var _lastToken2 = tokens[tokens.length - 1];\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n tokens.push(token);\n } else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {\n _lastToken2.raw += token.raw;\n _lastToken2.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 token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\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 token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\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 (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.inlineText(src, inRawBlock, 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$1,\n inline: inline$1\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$3 = defaults.defaults;\n var cleanUrl$1 = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$3;\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$1(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape$1(_code, true)) + '
\\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 _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\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 _proto.listitem = function listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '

    ' + text + '

    \\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 _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 } // span level renderer\n ;\n\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.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n _proto.del = function del(text) {\n return '' + text + '';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl$1(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.image = function image(href, title, text) {\n href = cleanUrl$1(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_1 = /*#__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_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\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 */\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 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 var defaults$4 = defaults.defaults;\n var unescape$1 = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$4;\n this.options.renderer = this.options.renderer || new Renderer_1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer_1();\n this.slugger = new Slugger_1();\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 var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\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$1(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.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\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 === 'text') {\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 var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\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 var merge$2 = helpers.merge,\n checkSanitizeDeprecation$1 = helpers.checkSanitizeDeprecation,\n escape$2 = helpers.escape;\n var getDefaults = defaults.getDefaults,\n changeDefaults = defaults.changeDefaults,\n defaults$5 = defaults.defaults;\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$2({}, marked.defaults, opt || {});\n checkSanitizeDeprecation$1(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer_1.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 out = Parser_1.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_1.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser_1.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$2(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge$2(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults$5;\n /**\n * Use Extension\n */\n\n marked.use = function (extension) {\n var opts = merge$2({}, extension);\n\n if (extension.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer_1();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n\n renderer[prop] = 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 ret = extension.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 extension.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (extension.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer_1();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n\n tokenizer[prop] = 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 = extension.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 extension.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n }\n\n if (extension.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n extension.walkTokens(token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n marked.setOptions(opts);\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _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, 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 (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n };\n /**\n * Parse Inline\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$2({}, marked.defaults, opt || {});\n checkSanitizeDeprecation$1(opt);\n\n try {\n var tokens = Lexer_1.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser_1.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$2(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser_1;\n marked.parser = Parser_1.parse;\n marked.Renderer = Renderer_1;\n marked.TextRenderer = TextRenderer_1;\n marked.Lexer = Lexer_1;\n marked.lexer = Lexer_1.lex;\n marked.Tokenizer = Tokenizer_1;\n marked.Slugger = Slugger_1;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { VSBuffer } from './buffer.js';\r\nimport { URI } from './uri.js';\r\nexport function parse(text) {\r\n let data = JSON.parse(text);\r\n data = revive(data);\r\n return data;\r\n}\r\nexport function revive(obj, depth = 0) {\r\n if (!obj || depth > 200) {\r\n return obj;\r\n }\r\n if (typeof obj === 'object') {\r\n switch (obj.$mid) {\r\n case 1 /* Uri */: return URI.revive(obj);\r\n case 2 /* Regexp */: return new RegExp(obj.source, obj.flags);\r\n }\r\n if (obj instanceof VSBuffer\r\n || obj instanceof Uint8Array) {\r\n return obj;\r\n }\r\n if (Array.isArray(obj)) {\r\n for (let i = 0; i < obj.length; ++i) {\r\n obj[i] = revive(obj[i], depth + 1);\r\n }\r\n }\r\n else {\r\n // walk object\r\n for (const key in obj) {\r\n if (Object.hasOwnProperty.call(obj, key)) {\r\n obj[key] = revive(obj[key], depth + 1);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { basename, posix } from './path.js';\r\nimport { startsWithUTF8BOM } from './strings.js';\r\nimport { match } from './glob.js';\r\nimport { Schemas } from './network.js';\r\nimport { DataUri } from './resources.js';\r\nexport var Mimes;\r\n(function (Mimes) {\r\n Mimes.text = 'text/plain';\r\n Mimes.binary = 'application/octet-stream';\r\n Mimes.unknown = 'application/unknown';\r\n Mimes.markdown = 'text/markdown';\r\n})(Mimes || (Mimes = {}));\r\nlet registeredAssociations = [];\r\nlet nonUserRegisteredAssociations = [];\r\nlet userRegisteredAssociations = [];\r\n/**\r\n * Associate a text mime to the registry.\r\n */\r\nexport function registerTextMime(association, warnOnOverwrite = false) {\r\n // Register\r\n const associationItem = toTextMimeAssociationItem(association);\r\n registeredAssociations.push(associationItem);\r\n if (!associationItem.userConfigured) {\r\n nonUserRegisteredAssociations.push(associationItem);\r\n }\r\n else {\r\n userRegisteredAssociations.push(associationItem);\r\n }\r\n // Check for conflicts unless this is a user configured association\r\n if (warnOnOverwrite && !associationItem.userConfigured) {\r\n registeredAssociations.forEach(a => {\r\n if (a.mime === associationItem.mime || a.userConfigured) {\r\n return; // same mime or userConfigured is ok\r\n }\r\n if (associationItem.extension && a.extension === associationItem.extension) {\r\n console.warn(`Overwriting extension <<${associationItem.extension}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filename && a.filename === associationItem.filename) {\r\n console.warn(`Overwriting filename <<${associationItem.filename}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filepattern && a.filepattern === associationItem.filepattern) {\r\n console.warn(`Overwriting filepattern <<${associationItem.filepattern}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.firstline && a.firstline === associationItem.firstline) {\r\n console.warn(`Overwriting firstline <<${associationItem.firstline}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n });\r\n }\r\n}\r\nfunction toTextMimeAssociationItem(association) {\r\n return {\r\n id: association.id,\r\n mime: association.mime,\r\n filename: association.filename,\r\n extension: association.extension,\r\n filepattern: association.filepattern,\r\n firstline: association.firstline,\r\n userConfigured: association.userConfigured,\r\n filenameLowercase: association.filename ? association.filename.toLowerCase() : undefined,\r\n extensionLowercase: association.extension ? association.extension.toLowerCase() : undefined,\r\n filepatternLowercase: association.filepattern ? association.filepattern.toLowerCase() : undefined,\r\n filepatternOnPath: association.filepattern ? association.filepattern.indexOf(posix.sep) >= 0 : false\r\n };\r\n}\r\n/**\r\n * Given a file, return the best matching mime type for it\r\n */\r\nexport function guessMimeTypes(resource, firstLine) {\r\n let path;\r\n if (resource) {\r\n switch (resource.scheme) {\r\n case Schemas.file:\r\n path = resource.fsPath;\r\n break;\r\n case Schemas.data:\r\n const metadata = DataUri.parseMetaData(resource);\r\n path = metadata.get(DataUri.META_DATA_LABEL);\r\n break;\r\n default:\r\n path = resource.path;\r\n }\r\n }\r\n if (!path) {\r\n return [Mimes.unknown];\r\n }\r\n path = path.toLowerCase();\r\n const filename = basename(path);\r\n // 1.) User configured mappings have highest priority\r\n const configuredMime = guessMimeTypeByPath(path, filename, userRegisteredAssociations);\r\n if (configuredMime) {\r\n return [configuredMime, Mimes.text];\r\n }\r\n // 2.) Registered mappings have middle priority\r\n const registeredMime = guessMimeTypeByPath(path, filename, nonUserRegisteredAssociations);\r\n if (registeredMime) {\r\n return [registeredMime, Mimes.text];\r\n }\r\n // 3.) Firstline has lowest priority\r\n if (firstLine) {\r\n const firstlineMime = guessMimeTypeByFirstline(firstLine);\r\n if (firstlineMime) {\r\n return [firstlineMime, Mimes.text];\r\n }\r\n }\r\n return [Mimes.unknown];\r\n}\r\nfunction guessMimeTypeByPath(path, filename, associations) {\r\n let filenameMatch = null;\r\n let patternMatch = null;\r\n let extensionMatch = null;\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\r\n for (let i = associations.length - 1; i >= 0; i--) {\r\n const association = associations[i];\r\n // First exact name match\r\n if (filename === association.filenameLowercase) {\r\n filenameMatch = association;\r\n break; // take it!\r\n }\r\n // Longest pattern match\r\n if (association.filepattern) {\r\n if (!patternMatch || association.filepattern.length > patternMatch.filepattern.length) {\r\n const target = association.filepatternOnPath ? path : filename; // match on full path if pattern contains path separator\r\n if (match(association.filepatternLowercase, target)) {\r\n patternMatch = association;\r\n }\r\n }\r\n }\r\n // Longest extension match\r\n if (association.extension) {\r\n if (!extensionMatch || association.extension.length > extensionMatch.extension.length) {\r\n if (filename.endsWith(association.extensionLowercase)) {\r\n extensionMatch = association;\r\n }\r\n }\r\n }\r\n }\r\n // 1.) Exact name match has second highest prio\r\n if (filenameMatch) {\r\n return filenameMatch.mime;\r\n }\r\n // 2.) Match on pattern\r\n if (patternMatch) {\r\n return patternMatch.mime;\r\n }\r\n // 3.) Match on extension comes next\r\n if (extensionMatch) {\r\n return extensionMatch.mime;\r\n }\r\n return null;\r\n}\r\nfunction guessMimeTypeByFirstline(firstLine) {\r\n if (startsWithUTF8BOM(firstLine)) {\r\n firstLine = firstLine.substr(1);\r\n }\r\n if (firstLine.length > 0) {\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\r\n for (let i = registeredAssociations.length - 1; i >= 0; i--) {\r\n const association = registeredAssociations[i];\r\n if (!association.firstline) {\r\n continue;\r\n }\r\n const matches = firstLine.match(association.firstline);\r\n if (matches && matches.length > 0) {\r\n return association.mime;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport * as platform from './platform.js';\r\nexport var Schemas;\r\n(function (Schemas) {\r\n /**\r\n * A schema that is used for models that exist in memory\r\n * only and that have no correspondence on a server or such.\r\n */\r\n Schemas.inMemory = 'inmemory';\r\n /**\r\n * A schema that is used for setting files\r\n */\r\n Schemas.vscode = 'vscode';\r\n /**\r\n * A schema that is used for internal private files\r\n */\r\n Schemas.internal = 'private';\r\n /**\r\n * A walk-through document.\r\n */\r\n Schemas.walkThrough = 'walkThrough';\r\n /**\r\n * An embedded code snippet.\r\n */\r\n Schemas.walkThroughSnippet = 'walkThroughSnippet';\r\n Schemas.http = 'http';\r\n Schemas.https = 'https';\r\n Schemas.file = 'file';\r\n Schemas.mailto = 'mailto';\r\n Schemas.untitled = 'untitled';\r\n Schemas.data = 'data';\r\n Schemas.command = 'command';\r\n Schemas.vscodeRemote = 'vscode-remote';\r\n Schemas.vscodeRemoteResource = 'vscode-remote-resource';\r\n Schemas.userData = 'vscode-userdata';\r\n Schemas.vscodeCustomEditor = 'vscode-custom-editor';\r\n Schemas.vscodeNotebook = 'vscode-notebook';\r\n Schemas.vscodeNotebookCell = 'vscode-notebook-cell';\r\n Schemas.vscodeNotebookCellMetadata = 'vscode-notebook-cell-metadata';\r\n Schemas.vscodeNotebookCellOutput = 'vscode-notebook-cell-output';\r\n Schemas.vscodeInteractive = 'vscode-interactive';\r\n Schemas.vscodeInteractiveInput = 'vscode-interactive-input';\r\n Schemas.vscodeSettings = 'vscode-settings';\r\n Schemas.vscodeWorkspaceTrust = 'vscode-workspace-trust';\r\n Schemas.vscodeTerminal = 'vscode-terminal';\r\n Schemas.webviewPanel = 'webview-panel';\r\n /**\r\n * Scheme used for loading the wrapper html and script in webviews.\r\n */\r\n Schemas.vscodeWebview = 'vscode-webview';\r\n /**\r\n * Scheme used for extension pages\r\n */\r\n Schemas.extension = 'extension';\r\n /**\r\n * Scheme used as a replacement of `file` scheme to load\r\n * files with our custom protocol handler (desktop only).\r\n */\r\n Schemas.vscodeFileResource = 'vscode-file';\r\n /**\r\n * Scheme used for temporary resources\r\n */\r\n Schemas.tmp = 'tmp';\r\n})(Schemas || (Schemas = {}));\r\nclass RemoteAuthoritiesImpl {\r\n constructor() {\r\n this._hosts = Object.create(null);\r\n this._ports = Object.create(null);\r\n this._connectionTokens = Object.create(null);\r\n this._preferredWebSchema = 'http';\r\n this._delegate = null;\r\n }\r\n setPreferredWebSchema(schema) {\r\n this._preferredWebSchema = schema;\r\n }\r\n rewrite(uri) {\r\n if (this._delegate) {\r\n return this._delegate(uri);\r\n }\r\n const authority = uri.authority;\r\n let host = this._hosts[authority];\r\n if (host && host.indexOf(':') !== -1) {\r\n host = `[${host}]`;\r\n }\r\n const port = this._ports[authority];\r\n const connectionToken = this._connectionTokens[authority];\r\n let query = `path=${encodeURIComponent(uri.path)}`;\r\n if (typeof connectionToken === 'string') {\r\n query += `&tkn=${encodeURIComponent(connectionToken)}`;\r\n }\r\n return URI.from({\r\n scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource,\r\n authority: `${host}:${port}`,\r\n path: `/vscode-remote-resource`,\r\n query\r\n });\r\n }\r\n}\r\nexport const RemoteAuthorities = new RemoteAuthoritiesImpl();\r\nclass FileAccessImpl {\r\n constructor() {\r\n this.FALLBACK_AUTHORITY = 'vscode-app';\r\n }\r\n asBrowserUri(uriOrModule, moduleIdToUrl, __forceCodeFileUri) {\r\n const uri = this.toUri(uriOrModule, moduleIdToUrl);\r\n // Handle remote URIs via `RemoteAuthorities`\r\n if (uri.scheme === Schemas.vscodeRemote) {\r\n return RemoteAuthorities.rewrite(uri);\r\n }\r\n let convertToVSCodeFileResource = false;\r\n // Only convert the URI if we are in a native context and it has `file:` scheme\r\n // and we have explicitly enabled the conversion (sandbox, or VSCODE_BROWSER_CODE_LOADING)\r\n if (platform.isNative && (__forceCodeFileUri || platform.isPreferringBrowserCodeLoad) && uri.scheme === Schemas.file) {\r\n convertToVSCodeFileResource = true;\r\n }\r\n // Also convert `file:` URIs in the web worker extension host (running in desktop) case\r\n if (uri.scheme === Schemas.file && typeof platform.globals.importScripts === 'function' && platform.globals.origin === 'vscode-file://vscode-app') {\r\n convertToVSCodeFileResource = true;\r\n }\r\n if (convertToVSCodeFileResource) {\r\n return uri.with({\r\n scheme: Schemas.vscodeFileResource,\r\n // We need to provide an authority here so that it can serve\r\n // as origin for network and loading matters in chromium.\r\n // If the URI is not coming with an authority already, we\r\n // add our own\r\n authority: uri.authority || this.FALLBACK_AUTHORITY,\r\n query: null,\r\n fragment: null\r\n });\r\n }\r\n return uri;\r\n }\r\n toUri(uriOrModule, moduleIdToUrl) {\r\n if (URI.isUri(uriOrModule)) {\r\n return uriOrModule;\r\n }\r\n return URI.parse(moduleIdToUrl.toUrl(uriOrModule));\r\n }\r\n}\r\nexport const FileAccess = new FileAccessImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function clamp(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\nexport class MovingAverage {\r\n constructor() {\r\n this._n = 1;\r\n this._val = 0;\r\n }\r\n update(value) {\r\n this._val = this._val + (value - this._val) / this._n;\r\n this._n += 1;\r\n return this;\r\n }\r\n get value() {\r\n return this._val;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isObject, isUndefinedOrNull, isArray } from './types.js';\r\nexport function deepClone(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n if (obj instanceof RegExp) {\r\n // See https://github.com/microsoft/TypeScript/issues/10990\r\n return obj;\r\n }\r\n const result = Array.isArray(obj) ? [] : {};\r\n Object.keys(obj).forEach((key) => {\r\n if (obj[key] && typeof obj[key] === 'object') {\r\n result[key] = deepClone(obj[key]);\r\n }\r\n else {\r\n result[key] = obj[key];\r\n }\r\n });\r\n return result;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n const stack = [obj];\r\n while (stack.length > 0) {\r\n const obj = stack.shift();\r\n Object.freeze(obj);\r\n for (const key in obj) {\r\n if (_hasOwnProperty.call(obj, key)) {\r\n const prop = obj[key];\r\n if (typeof prop === 'object' && !Object.isFrozen(prop)) {\r\n stack.push(prop);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport function cloneAndChange(obj, changer) {\r\n return _cloneAndChange(obj, changer, new Set());\r\n}\r\nfunction _cloneAndChange(obj, changer, seen) {\r\n if (isUndefinedOrNull(obj)) {\r\n return obj;\r\n }\r\n const changed = changer(obj);\r\n if (typeof changed !== 'undefined') {\r\n return changed;\r\n }\r\n if (isArray(obj)) {\r\n const r1 = [];\r\n for (const e of obj) {\r\n r1.push(_cloneAndChange(e, changer, seen));\r\n }\r\n return r1;\r\n }\r\n if (isObject(obj)) {\r\n if (seen.has(obj)) {\r\n throw new Error('Cannot clone recursive data-structure');\r\n }\r\n seen.add(obj);\r\n const r2 = {};\r\n for (let i2 in obj) {\r\n if (_hasOwnProperty.call(obj, i2)) {\r\n r2[i2] = _cloneAndChange(obj[i2], changer, seen);\r\n }\r\n }\r\n seen.delete(obj);\r\n return r2;\r\n }\r\n return obj;\r\n}\r\n/**\r\n * Copies all properties of source into destination. The optional parameter \"overwrite\" allows to control\r\n * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite).\r\n */\r\nexport function mixin(destination, source, overwrite = true) {\r\n if (!isObject(destination)) {\r\n return source;\r\n }\r\n if (isObject(source)) {\r\n Object.keys(source).forEach(key => {\r\n if (key in destination) {\r\n if (overwrite) {\r\n if (isObject(destination[key]) && isObject(source[key])) {\r\n mixin(destination[key], source[key], overwrite);\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n }\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n });\r\n }\r\n return destination;\r\n}\r\nexport function equals(one, other) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (one === null || one === undefined || other === null || other === undefined) {\r\n return false;\r\n }\r\n if (typeof one !== typeof other) {\r\n return false;\r\n }\r\n if (typeof one !== 'object') {\r\n return false;\r\n }\r\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\r\n return false;\r\n }\r\n let i;\r\n let key;\r\n if (Array.isArray(one)) {\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (i = 0; i < one.length; i++) {\r\n if (!equals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n }\r\n else {\r\n const oneKeys = [];\r\n for (key in one) {\r\n oneKeys.push(key);\r\n }\r\n oneKeys.sort();\r\n const otherKeys = [];\r\n for (key in other) {\r\n otherKeys.push(key);\r\n }\r\n otherKeys.sort();\r\n if (!equals(oneKeys, otherKeys)) {\r\n return false;\r\n }\r\n for (i = 0; i < oneKeys.length; i++) {\r\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function getOrDefault(obj, fn, defaultValue) {\r\n const result = fn(obj);\r\n return typeof result === 'undefined' ? defaultValue : result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows, isMacintosh, setImmediate, globals } from './platform.js';\r\nlet safeProcess;\r\n// Native sandbox environment\r\nif (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {\r\n const sandboxProcess = globals.vscode.process;\r\n safeProcess = {\r\n get platform() { return sandboxProcess.platform; },\r\n get env() { return sandboxProcess.env; },\r\n cwd() { return sandboxProcess.cwd(); },\r\n nextTick(callback) { return setImmediate(callback); }\r\n };\r\n}\r\n// Native node.js environment\r\nelse if (typeof process !== 'undefined') {\r\n safeProcess = {\r\n get platform() { return process.platform; },\r\n get env() { return process.env; },\r\n cwd() { return process.env['VSCODE_CWD'] || process.cwd(); },\r\n nextTick(callback) { return process.nextTick(callback); }\r\n };\r\n}\r\n// Web environment\r\nelse {\r\n safeProcess = {\r\n // Supported\r\n get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return setImmediate(callback); },\r\n // Unsupported\r\n get env() { return {}; },\r\n cwd() { return '/'; }\r\n };\r\n}\r\n/**\r\n * Provides safe access to the `cwd` property in node.js, sandboxed or web\r\n * environments.\r\n *\r\n * Note: in web, this property is hardcoded to be `/`.\r\n */\r\nexport const cwd = safeProcess.cwd;\r\n/**\r\n * Provides safe access to the `env` property in node.js, sandboxed or web\r\n * environments.\r\n *\r\n * Note: in web, this property is hardcoded to be `{}`.\r\n */\r\nexport const env = safeProcess.env;\r\n/**\r\n * Provides safe access to the `platform` property in node.js, sandboxed or web\r\n * environments.\r\n */\r\nexport const platform = safeProcess.platform;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\nimport * as process from './process.js';\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nexport const win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = process.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = process.env[`=${resolvedDevice}`] || process.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nexport const posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : process.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nexport const normalize = (process.platform === 'win32' ? win32.normalize : posix.normalize);\r\nexport const resolve = (process.platform === 'win32' ? win32.resolve : posix.resolve);\r\nexport const relative = (process.platform === 'win32' ? win32.relative : posix.relative);\r\nexport const dirname = (process.platform === 'win32' ? win32.dirname : posix.dirname);\r\nexport const basename = (process.platform === 'win32' ? win32.basename : posix.basename);\r\nexport const extname = (process.platform === 'win32' ? win32.extname : posix.extname);\r\nexport const sep = (process.platform === 'win32' ? win32.sep : posix.sep);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isLinuxSnap = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nexport const globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\r\nlet nodeProcess = undefined;\r\nif (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {\r\n // Native environment (sandboxed)\r\n nodeProcess = globals.vscode.process;\r\n}\r\nelse if (typeof process !== 'undefined') {\r\n // Native environment (non-sandboxed)\r\n nodeProcess = process;\r\n}\r\nconst isElectronRenderer = typeof ((_a = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a === void 0 ? void 0 : _a.electron) === 'string' && nodeProcess.type === 'renderer';\r\nexport const isElectronSandboxed = isElectronRenderer && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.sandboxed);\r\nexport const browserCodeLoadingCacheStrategy = (() => {\r\n // Always enabled when sandbox is enabled\r\n if (isElectronSandboxed) {\r\n return 'bypassHeatCheck';\r\n }\r\n // Otherwise, only enabled conditionally\r\n const env = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.env['VSCODE_BROWSER_CODE_LOADING'];\r\n if (typeof env === 'string') {\r\n if (env === 'none' || env === 'code' || env === 'bypassHeatCheck' || env === 'bypassHeatCheckAndEagerCompile') {\r\n return env;\r\n }\r\n return 'bypassHeatCheck';\r\n }\r\n return undefined;\r\n})();\r\nexport const isPreferringBrowserCodeLoad = typeof browserCodeLoadingCacheStrategy === 'string';\r\n// Web environment\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\n// Native environment\r\nelse if (typeof nodeProcess === 'object') {\r\n _isWindows = (nodeProcess.platform === 'win32');\r\n _isMacintosh = (nodeProcess.platform === 'darwin');\r\n _isLinux = (nodeProcess.platform === 'linux');\r\n _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION'];\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\n// Unknown environment\r\nelse {\r\n console.error('Unable to resolve platform.');\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nexport const isWindows = _isWindows;\r\nexport const isMacintosh = _isMacintosh;\r\nexport const isLinux = _isLinux;\r\nexport const isNative = _isNative;\r\nexport const isWeb = _isWeb;\r\nexport const isIOS = _isIOS;\r\nexport const userAgent = _userAgent;\r\nexport const setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (typeof (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.nextTick) === 'function') {\r\n return nodeProcess.nextTick.bind(nodeProcess);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nexport const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nexport function isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Range;\r\n(function (Range) {\r\n /**\r\n * Returns the intersection between two ranges as a range itself.\r\n * Returns `{ start: 0, end: 0 }` if the intersection is empty.\r\n */\r\n function intersect(one, other) {\r\n if (one.start >= other.end || other.start >= one.end) {\r\n return { start: 0, end: 0 };\r\n }\r\n const start = Math.max(one.start, other.start);\r\n const end = Math.min(one.end, other.end);\r\n if (end - start <= 0) {\r\n return { start: 0, end: 0 };\r\n }\r\n return { start, end };\r\n }\r\n Range.intersect = intersect;\r\n function isEmpty(range) {\r\n return range.end - range.start <= 0;\r\n }\r\n Range.isEmpty = isEmpty;\r\n function intersects(one, other) {\r\n return !isEmpty(intersect(one, other));\r\n }\r\n Range.intersects = intersects;\r\n function relativeComplement(one, other) {\r\n const result = [];\r\n const first = { start: one.start, end: Math.min(other.start, one.end) };\r\n const second = { start: Math.max(other.end, one.start), end: one.end };\r\n if (!isEmpty(first)) {\r\n result.push(first);\r\n }\r\n if (!isEmpty(second)) {\r\n result.push(second);\r\n }\r\n return result;\r\n }\r\n Range.relativeComplement = relativeComplement;\r\n})(Range || (Range = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { URI, uriToFsPath } from './uri.js';\r\nimport { compare as strCompare } from './strings.js';\r\nimport { Schemas } from './network.js';\r\nexport function originalFSPath(uri) {\r\n return uriToFsPath(uri, true);\r\n}\r\nexport class ExtUri {\r\n constructor(_ignorePathCasing) {\r\n this._ignorePathCasing = _ignorePathCasing;\r\n }\r\n compare(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return 0;\r\n }\r\n return strCompare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment));\r\n }\r\n isEqual(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return true;\r\n }\r\n if (!uri1 || !uri2) {\r\n return false;\r\n }\r\n return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment);\r\n }\r\n getComparisonKey(uri, ignoreFragment = false) {\r\n return uri.with({\r\n path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined,\r\n fragment: ignoreFragment ? null : undefined\r\n }).toString();\r\n }\r\n // --- path math\r\n joinPath(resource, ...pathFragment) {\r\n return URI.joinPath(resource, ...pathFragment);\r\n }\r\n basenameOrAuthority(resource) {\r\n return basename(resource) || resource.authority;\r\n }\r\n basename(resource) {\r\n return paths.posix.basename(resource.path);\r\n }\r\n dirname(resource) {\r\n if (resource.path.length === 0) {\r\n return resource;\r\n }\r\n let dirname;\r\n if (resource.scheme === Schemas.file) {\r\n dirname = URI.file(paths.dirname(originalFSPath(resource))).path;\r\n }\r\n else {\r\n dirname = paths.posix.dirname(resource.path);\r\n if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* Slash */) {\r\n console.error(`dirname(\"${resource.toString})) resulted in a relative path`);\r\n dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash (\"/\") character\r\n }\r\n }\r\n return resource.with({\r\n path: dirname\r\n });\r\n }\r\n normalizePath(resource) {\r\n if (!resource.path.length) {\r\n return resource;\r\n }\r\n let normalizedPath;\r\n if (resource.scheme === Schemas.file) {\r\n normalizedPath = URI.file(paths.normalize(originalFSPath(resource))).path;\r\n }\r\n else {\r\n normalizedPath = paths.posix.normalize(resource.path);\r\n }\r\n return resource.with({\r\n path: normalizedPath\r\n });\r\n }\r\n resolvePath(base, path) {\r\n if (base.scheme === Schemas.file) {\r\n const newURI = URI.file(paths.resolve(originalFSPath(base), path));\r\n return base.with({\r\n authority: newURI.authority,\r\n path: newURI.path\r\n });\r\n }\r\n path = extpath.toPosixPath(path); // we allow path to be a windows path\r\n return base.with({\r\n path: paths.posix.resolve(base.path, path)\r\n });\r\n }\r\n}\r\n/**\r\n * Unbiased utility that takes uris \"as they are\". This means it can be interchanged with\r\n * uri#toString() usages. The following is true\r\n * ```\r\n * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri))\r\n * ```\r\n */\r\nexport const extUri = new ExtUri(() => false);\r\nexport const isEqual = extUri.isEqual.bind(extUri);\r\nexport const basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri);\r\nexport const basename = extUri.basename.bind(extUri);\r\nexport const dirname = extUri.dirname.bind(extUri);\r\nexport const joinPath = extUri.joinPath.bind(extUri);\r\nexport const normalizePath = extUri.normalizePath.bind(extUri);\r\nexport const resolvePath = extUri.resolvePath.bind(extUri);\r\n/**\r\n * Data URI related helpers.\r\n */\r\nexport var DataUri;\r\n(function (DataUri) {\r\n DataUri.META_DATA_LABEL = 'label';\r\n DataUri.META_DATA_DESCRIPTION = 'description';\r\n DataUri.META_DATA_SIZE = 'size';\r\n DataUri.META_DATA_MIME = 'mime';\r\n function parseMetaData(dataUri) {\r\n const metadata = new Map();\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the metadata is: size:2313;label:SomeLabel;description:SomeDescription\r\n const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';'));\r\n meta.split(';').forEach(property => {\r\n const [key, value] = property.split(':');\r\n if (key && value) {\r\n metadata.set(key, value);\r\n }\r\n });\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the mime is: image/png\r\n const mime = dataUri.path.substring(0, dataUri.path.indexOf(';'));\r\n if (mime) {\r\n metadata.set(DataUri.META_DATA_MIME, mime);\r\n }\r\n return metadata;\r\n }\r\n DataUri.parseMetaData = parseMetaData;\r\n})(DataUri || (DataUri = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from './event.js';\r\nimport { Disposable } from './lifecycle.js';\r\nexport class ScrollState {\r\n constructor(width, scrollWidth, scrollLeft, height, scrollHeight, scrollTop) {\r\n this._scrollStateBrand = undefined;\r\n width = width | 0;\r\n scrollWidth = scrollWidth | 0;\r\n scrollLeft = scrollLeft | 0;\r\n height = height | 0;\r\n scrollHeight = scrollHeight | 0;\r\n scrollTop = scrollTop | 0;\r\n this.rawScrollLeft = scrollLeft; // before validation\r\n this.rawScrollTop = scrollTop; // before validation\r\n if (width < 0) {\r\n width = 0;\r\n }\r\n if (scrollLeft + width > scrollWidth) {\r\n scrollLeft = scrollWidth - width;\r\n }\r\n if (scrollLeft < 0) {\r\n scrollLeft = 0;\r\n }\r\n if (height < 0) {\r\n height = 0;\r\n }\r\n if (scrollTop + height > scrollHeight) {\r\n scrollTop = scrollHeight - height;\r\n }\r\n if (scrollTop < 0) {\r\n scrollTop = 0;\r\n }\r\n this.width = width;\r\n this.scrollWidth = scrollWidth;\r\n this.scrollLeft = scrollLeft;\r\n this.height = height;\r\n this.scrollHeight = scrollHeight;\r\n this.scrollTop = scrollTop;\r\n }\r\n equals(other) {\r\n return (this.rawScrollLeft === other.rawScrollLeft\r\n && this.rawScrollTop === other.rawScrollTop\r\n && this.width === other.width\r\n && this.scrollWidth === other.scrollWidth\r\n && this.scrollLeft === other.scrollLeft\r\n && this.height === other.height\r\n && this.scrollHeight === other.scrollHeight\r\n && this.scrollTop === other.scrollTop);\r\n }\r\n withScrollDimensions(update, useRawScrollPositions) {\r\n return new ScrollState((typeof update.width !== 'undefined' ? update.width : this.width), (typeof update.scrollWidth !== 'undefined' ? update.scrollWidth : this.scrollWidth), useRawScrollPositions ? this.rawScrollLeft : this.scrollLeft, (typeof update.height !== 'undefined' ? update.height : this.height), (typeof update.scrollHeight !== 'undefined' ? update.scrollHeight : this.scrollHeight), useRawScrollPositions ? this.rawScrollTop : this.scrollTop);\r\n }\r\n withScrollPosition(update) {\r\n return new ScrollState(this.width, this.scrollWidth, (typeof update.scrollLeft !== 'undefined' ? update.scrollLeft : this.rawScrollLeft), this.height, this.scrollHeight, (typeof update.scrollTop !== 'undefined' ? update.scrollTop : this.rawScrollTop));\r\n }\r\n createScrollEvent(previous, inSmoothScrolling) {\r\n const widthChanged = (this.width !== previous.width);\r\n const scrollWidthChanged = (this.scrollWidth !== previous.scrollWidth);\r\n const scrollLeftChanged = (this.scrollLeft !== previous.scrollLeft);\r\n const heightChanged = (this.height !== previous.height);\r\n const scrollHeightChanged = (this.scrollHeight !== previous.scrollHeight);\r\n const scrollTopChanged = (this.scrollTop !== previous.scrollTop);\r\n return {\r\n inSmoothScrolling: inSmoothScrolling,\r\n oldWidth: previous.width,\r\n oldScrollWidth: previous.scrollWidth,\r\n oldScrollLeft: previous.scrollLeft,\r\n width: this.width,\r\n scrollWidth: this.scrollWidth,\r\n scrollLeft: this.scrollLeft,\r\n oldHeight: previous.height,\r\n oldScrollHeight: previous.scrollHeight,\r\n oldScrollTop: previous.scrollTop,\r\n height: this.height,\r\n scrollHeight: this.scrollHeight,\r\n scrollTop: this.scrollTop,\r\n widthChanged: widthChanged,\r\n scrollWidthChanged: scrollWidthChanged,\r\n scrollLeftChanged: scrollLeftChanged,\r\n heightChanged: heightChanged,\r\n scrollHeightChanged: scrollHeightChanged,\r\n scrollTopChanged: scrollTopChanged,\r\n };\r\n }\r\n}\r\nexport class Scrollable extends Disposable {\r\n constructor(smoothScrollDuration, scheduleAtNextAnimationFrame) {\r\n super();\r\n this._scrollableBrand = undefined;\r\n this._onScroll = this._register(new Emitter());\r\n this.onScroll = this._onScroll.event;\r\n this._smoothScrollDuration = smoothScrollDuration;\r\n this._scheduleAtNextAnimationFrame = scheduleAtNextAnimationFrame;\r\n this._state = new ScrollState(0, 0, 0, 0, 0, 0);\r\n this._smoothScrolling = null;\r\n }\r\n dispose() {\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n }\r\n super.dispose();\r\n }\r\n setSmoothScrollDuration(smoothScrollDuration) {\r\n this._smoothScrollDuration = smoothScrollDuration;\r\n }\r\n validateScrollPosition(scrollPosition) {\r\n return this._state.withScrollPosition(scrollPosition);\r\n }\r\n getScrollDimensions() {\r\n return this._state;\r\n }\r\n setScrollDimensions(dimensions, useRawScrollPositions) {\r\n const newState = this._state.withScrollDimensions(dimensions, useRawScrollPositions);\r\n this._setState(newState, Boolean(this._smoothScrolling));\r\n // Validate outstanding animated scroll position target\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.acceptScrollDimensions(this._state);\r\n }\r\n }\r\n /**\r\n * Returns the final scroll position that the instance will have once the smooth scroll animation concludes.\r\n * If no scroll animation is occurring, it will return the current scroll position instead.\r\n */\r\n getFutureScrollPosition() {\r\n if (this._smoothScrolling) {\r\n return this._smoothScrolling.to;\r\n }\r\n return this._state;\r\n }\r\n /**\r\n * Returns the current scroll position.\r\n * Note: This result might be an intermediate scroll position, as there might be an ongoing smooth scroll animation.\r\n */\r\n getCurrentScrollPosition() {\r\n return this._state;\r\n }\r\n setScrollPositionNow(update) {\r\n // no smooth scrolling requested\r\n const newState = this._state.withScrollPosition(update);\r\n // Terminate any outstanding smooth scrolling\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n }\r\n this._setState(newState, false);\r\n }\r\n setScrollPositionSmooth(update, reuseAnimation) {\r\n if (this._smoothScrollDuration === 0) {\r\n // Smooth scrolling not supported.\r\n return this.setScrollPositionNow(update);\r\n }\r\n if (this._smoothScrolling) {\r\n // Combine our pending scrollLeft/scrollTop with incoming scrollLeft/scrollTop\r\n update = {\r\n scrollLeft: (typeof update.scrollLeft === 'undefined' ? this._smoothScrolling.to.scrollLeft : update.scrollLeft),\r\n scrollTop: (typeof update.scrollTop === 'undefined' ? this._smoothScrolling.to.scrollTop : update.scrollTop)\r\n };\r\n // Validate `update`\r\n const validTarget = this._state.withScrollPosition(update);\r\n if (this._smoothScrolling.to.scrollLeft === validTarget.scrollLeft && this._smoothScrolling.to.scrollTop === validTarget.scrollTop) {\r\n // No need to interrupt or extend the current animation since we're going to the same place\r\n return;\r\n }\r\n let newSmoothScrolling;\r\n if (reuseAnimation) {\r\n newSmoothScrolling = new SmoothScrollingOperation(this._smoothScrolling.from, validTarget, this._smoothScrolling.startTime, this._smoothScrolling.duration);\r\n }\r\n else {\r\n newSmoothScrolling = this._smoothScrolling.combine(this._state, validTarget, this._smoothScrollDuration);\r\n }\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = newSmoothScrolling;\r\n }\r\n else {\r\n // Validate `update`\r\n const validTarget = this._state.withScrollPosition(update);\r\n this._smoothScrolling = SmoothScrollingOperation.start(this._state, validTarget, this._smoothScrollDuration);\r\n }\r\n // Begin smooth scrolling animation\r\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n this._smoothScrolling.animationFrameDisposable = null;\r\n this._performSmoothScrolling();\r\n });\r\n }\r\n _performSmoothScrolling() {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n const update = this._smoothScrolling.tick();\r\n const newState = this._state.withScrollPosition(update);\r\n this._setState(newState, true);\r\n if (!this._smoothScrolling) {\r\n // Looks like someone canceled the smooth scrolling\r\n // from the scroll event handler\r\n return;\r\n }\r\n if (update.isDone) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n return;\r\n }\r\n // Continue smooth scrolling animation\r\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n this._smoothScrolling.animationFrameDisposable = null;\r\n this._performSmoothScrolling();\r\n });\r\n }\r\n _setState(newState, inSmoothScrolling) {\r\n const oldState = this._state;\r\n if (oldState.equals(newState)) {\r\n // no change\r\n return;\r\n }\r\n this._state = newState;\r\n this._onScroll.fire(this._state.createScrollEvent(oldState, inSmoothScrolling));\r\n }\r\n}\r\nexport class SmoothScrollingUpdate {\r\n constructor(scrollLeft, scrollTop, isDone) {\r\n this.scrollLeft = scrollLeft;\r\n this.scrollTop = scrollTop;\r\n this.isDone = isDone;\r\n }\r\n}\r\nfunction createEaseOutCubic(from, to) {\r\n const delta = to - from;\r\n return function (completion) {\r\n return from + delta * easeOutCubic(completion);\r\n };\r\n}\r\nfunction createComposed(a, b, cut) {\r\n return function (completion) {\r\n if (completion < cut) {\r\n return a(completion / cut);\r\n }\r\n return b((completion - cut) / (1 - cut));\r\n };\r\n}\r\nexport class SmoothScrollingOperation {\r\n constructor(from, to, startTime, duration) {\r\n this.from = from;\r\n this.to = to;\r\n this.duration = duration;\r\n this.startTime = startTime;\r\n this.animationFrameDisposable = null;\r\n this._initAnimations();\r\n }\r\n _initAnimations() {\r\n this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width);\r\n this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height);\r\n }\r\n _initAnimation(from, to, viewportSize) {\r\n const delta = Math.abs(from - to);\r\n if (delta > 2.5 * viewportSize) {\r\n let stop1, stop2;\r\n if (from < to) {\r\n // scroll to 75% of the viewportSize\r\n stop1 = from + 0.75 * viewportSize;\r\n stop2 = to - 0.75 * viewportSize;\r\n }\r\n else {\r\n stop1 = from - 0.75 * viewportSize;\r\n stop2 = to + 0.75 * viewportSize;\r\n }\r\n return createComposed(createEaseOutCubic(from, stop1), createEaseOutCubic(stop2, to), 0.33);\r\n }\r\n return createEaseOutCubic(from, to);\r\n }\r\n dispose() {\r\n if (this.animationFrameDisposable !== null) {\r\n this.animationFrameDisposable.dispose();\r\n this.animationFrameDisposable = null;\r\n }\r\n }\r\n acceptScrollDimensions(state) {\r\n this.to = state.withScrollPosition(this.to);\r\n this._initAnimations();\r\n }\r\n tick() {\r\n return this._tick(Date.now());\r\n }\r\n _tick(now) {\r\n const completion = (now - this.startTime) / this.duration;\r\n if (completion < 1) {\r\n const newScrollLeft = this.scrollLeft(completion);\r\n const newScrollTop = this.scrollTop(completion);\r\n return new SmoothScrollingUpdate(newScrollLeft, newScrollTop, false);\r\n }\r\n return new SmoothScrollingUpdate(this.to.scrollLeft, this.to.scrollTop, true);\r\n }\r\n combine(from, to, duration) {\r\n return SmoothScrollingOperation.start(from, to, duration);\r\n }\r\n static start(from, to, duration) {\r\n // +10 / -10 : pretend the animation already started for a quicker response to a scroll request\r\n duration = duration + 10;\r\n const startTime = Date.now() - 10;\r\n return new SmoothScrollingOperation(from, to, startTime, duration);\r\n }\r\n}\r\nfunction easeInCubic(t) {\r\n return Math.pow(t, 3);\r\n}\r\nfunction easeOutCubic(t) {\r\n return 1 - easeInCubic(1 - t);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nvar Severity;\r\n(function (Severity) {\r\n Severity[Severity[\"Ignore\"] = 0] = \"Ignore\";\r\n Severity[Severity[\"Info\"] = 1] = \"Info\";\r\n Severity[Severity[\"Warning\"] = 2] = \"Warning\";\r\n Severity[Severity[\"Error\"] = 3] = \"Error\";\r\n})(Severity || (Severity = {}));\r\n(function (Severity) {\r\n const _error = 'error';\r\n const _warning = 'warning';\r\n const _warn = 'warn';\r\n const _info = 'info';\r\n const _ignore = 'ignore';\r\n /**\r\n * Parses 'error', 'warning', 'warn', 'info' in call casings\r\n * and falls back to ignore.\r\n */\r\n function fromValue(value) {\r\n if (!value) {\r\n return Severity.Ignore;\r\n }\r\n if (strings.equalsIgnoreCase(_error, value)) {\r\n return Severity.Error;\r\n }\r\n if (strings.equalsIgnoreCase(_warning, value) || strings.equalsIgnoreCase(_warn, value)) {\r\n return Severity.Warning;\r\n }\r\n if (strings.equalsIgnoreCase(_info, value)) {\r\n return Severity.Info;\r\n }\r\n return Severity.Ignore;\r\n }\r\n Severity.fromValue = fromValue;\r\n function toString(severity) {\r\n switch (severity) {\r\n case Severity.Error: return _error;\r\n case Severity.Warning: return _warning;\r\n case Severity.Info: return _info;\r\n default: return _ignore;\r\n }\r\n }\r\n Severity.toString = toString;\r\n})(Severity || (Severity = {}));\r\nexport default Severity;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { globals } from './platform.js';\r\nconst hasPerformanceNow = (globals.performance && typeof globals.performance.now === 'function');\r\nexport class StopWatch {\r\n constructor(highResolution) {\r\n this._highResolution = hasPerformanceNow && highResolution;\r\n this._startTime = this._now();\r\n this._stopTime = -1;\r\n }\r\n static create(highResolution = true) {\r\n return new StopWatch(highResolution);\r\n }\r\n stop() {\r\n this._stopTime = this._now();\r\n }\r\n elapsed() {\r\n if (this._stopTime !== -1) {\r\n return this._stopTime - this._startTime;\r\n }\r\n return this._now() - this._startTime;\r\n }\r\n _now() {\r\n return this._highResolution ? globals.performance.now() : Date.now();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nexport function format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nexport function escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nexport function escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nexport function trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nexport function convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nexport function stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\nexport function createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nexport function regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nexport function regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\nexport function splitLines(str) {\r\n return str.split(/\\r\\n|\\r|\\n/);\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nexport function getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nexport function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nexport function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nexport function isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nexport function equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nexport function commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nexport function commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nexport function getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nexport function nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nexport function prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nexport function decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nexport function containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDED6])/;\r\nexport function containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nexport function isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nexport const UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nexport function containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nexport function containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexdima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nexport function isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x === 8986) || (x === 8987) || (x === 9200)\r\n || (x === 9203) || (x >= 9728 && x <= 10175) || (x === 11088) || (x === 11093)\r\n || (x >= 127744 && x <= 128591) || (x >= 128640 && x <= 128764)\r\n || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129750));\r\n}\r\n// -- UTF-8 BOM\r\nexport const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nexport function startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nexport function containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nexport function singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nexport function getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nexport function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexdima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n/**\r\n * Computes the offset after performing a left delete on the given string,\r\n * while considering unicode grapheme/emoji rules.\r\n*/\r\nexport function getLeftDeleteOffset(offset, str) {\r\n if (offset === 0) {\r\n return 0;\r\n }\r\n // Try to delete emoji part.\r\n const emojiOffset = getOffsetBeforeLastEmojiComponent(offset, str);\r\n if (emojiOffset !== undefined) {\r\n return emojiOffset;\r\n }\r\n // Otherwise, just skip a single code point.\r\n const codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n return offset;\r\n}\r\nfunction getOffsetBeforeLastEmojiComponent(offset, str) {\r\n // See https://www.unicode.org/reports/tr51/tr51-14.html#EBNF_and_Regex for the\r\n // structure of emojis.\r\n let codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n // Skip modifiers\r\n while ((isEmojiModifier(codePoint) || codePoint === 65039 /* emojiVariantSelector */ || codePoint === 8419 /* enclosingKeyCap */)) {\r\n if (offset === 0) {\r\n // Cannot skip modifier, no preceding emoji base.\r\n return undefined;\r\n }\r\n codePoint = getPrevCodePoint(str, offset);\r\n offset -= getUTF16Length(codePoint);\r\n }\r\n // Expect base emoji\r\n if (!isEmojiImprecise(codePoint)) {\r\n // Unexpected code point, not a valid emoji.\r\n return undefined;\r\n }\r\n if (offset >= 0) {\r\n // Skip optional ZWJ code points that combine multiple emojis.\r\n // In theory, we should check if that ZWJ actually combines multiple emojis\r\n // to prevent deleting ZWJs in situations we didn't account for.\r\n const optionalZwjCodePoint = getPrevCodePoint(str, offset);\r\n if (optionalZwjCodePoint === 8205 /* zwj */) {\r\n offset -= getUTF16Length(optionalZwjCodePoint);\r\n }\r\n }\r\n return offset;\r\n}\r\nfunction getUTF16Length(codePoint) {\r\n return codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1;\r\n}\r\nfunction isEmojiModifier(codePoint) {\r\n return 0x1F3FB <= codePoint && codePoint <= 0x1F3FF;\r\n}\r\n","/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nexport function isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nexport function isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nexport function isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nexport function isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nexport function isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nexport function isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nexport function isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nexport function assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nexport function assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nexport function isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nexport function validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nexport function validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nexport function getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nexport function getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nexport function createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nexport function withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\nexport function assertNever(value, message = 'Unreachable') {\r\n throw new Error(message);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nexport function toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport * as paths from './path.js';\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nexport class URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'string'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n _validateUri(result, true);\r\n return result;\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPath on URI without path`);\r\n }\r\n let newPath;\r\n if (isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = paths.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1 /* Uri */\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // @\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // :@\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // :\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const NO_KEY_MODS = { ctrlCmd: false, alt: false };\r\nexport var QuickInputHideReason;\r\n(function (QuickInputHideReason) {\r\n /**\r\n * Focus moved away from the quick input.\r\n */\r\n QuickInputHideReason[QuickInputHideReason[\"Blur\"] = 1] = \"Blur\";\r\n /**\r\n * An explicit user gesture, e.g. pressing Escape key.\r\n */\r\n QuickInputHideReason[QuickInputHideReason[\"Gesture\"] = 2] = \"Gesture\";\r\n /**\r\n * Anything else.\r\n */\r\n QuickInputHideReason[QuickInputHideReason[\"Other\"] = 3] = \"Other\";\r\n})(QuickInputHideReason || (QuickInputHideReason = {}));\r\nexport var ItemActivation;\r\n(function (ItemActivation) {\r\n ItemActivation[ItemActivation[\"NONE\"] = 0] = \"NONE\";\r\n ItemActivation[ItemActivation[\"FIRST\"] = 1] = \"FIRST\";\r\n ItemActivation[ItemActivation[\"SECOND\"] = 2] = \"SECOND\";\r\n ItemActivation[ItemActivation[\"LAST\"] = 3] = \"LAST\";\r\n})(ItemActivation || (ItemActivation = {}));\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { languages } from './fillers/monaco-editor-core.js';\r\nvar languageDefinitions = {};\r\nvar lazyLanguageLoaders = {};\r\nvar LazyLanguageLoader = /** @class */ (function () {\r\n function LazyLanguageLoader(languageId) {\r\n var _this = this;\r\n this._languageId = languageId;\r\n this._loadingTriggered = false;\r\n this._lazyLoadPromise = new Promise(function (resolve, reject) {\r\n _this._lazyLoadPromiseResolve = resolve;\r\n _this._lazyLoadPromiseReject = reject;\r\n });\r\n }\r\n LazyLanguageLoader.getOrCreate = function (languageId) {\r\n if (!lazyLanguageLoaders[languageId]) {\r\n lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);\r\n }\r\n return lazyLanguageLoaders[languageId];\r\n };\r\n LazyLanguageLoader.prototype.whenLoaded = function () {\r\n return this._lazyLoadPromise;\r\n };\r\n LazyLanguageLoader.prototype.load = function () {\r\n var _this = this;\r\n if (!this._loadingTriggered) {\r\n this._loadingTriggered = true;\r\n languageDefinitions[this._languageId].loader().then(function (mod) { return _this._lazyLoadPromiseResolve(mod); }, function (err) { return _this._lazyLoadPromiseReject(err); });\r\n }\r\n return this._lazyLoadPromise;\r\n };\r\n return LazyLanguageLoader;\r\n}());\r\nexport function loadLanguage(languageId) {\r\n return LazyLanguageLoader.getOrCreate(languageId).load();\r\n}\r\nexport function registerLanguage(def) {\r\n var languageId = def.id;\r\n languageDefinitions[languageId] = def;\r\n languages.register(def);\r\n var lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\r\n languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then(function (mod) { return mod.language; }));\r\n languages.onLanguage(languageId, function () {\r\n lazyLanguageLoader.load().then(function (mod) {\r\n languages.setLanguageConfiguration(languageId, mod.conf);\r\n });\r\n });\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerLanguage } from '../_.contribution.js';\r\nregisterLanguage({\r\n id: 'css',\r\n extensions: ['.css'],\r\n aliases: ['CSS', 'css'],\r\n mimetypes: ['text/css'],\r\n loader: function () { return import('./css.js'); }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var conf = {\r\n wordPattern: /(#?-?\\d*\\.\\d\\w*%?)|((::|[@#.!:])?[\\w-?]+%?)|::|[@#.!:]/g,\r\n comments: {\r\n blockComment: ['/*', '*/']\r\n },\r\n brackets: [\r\n ['{', '}'],\r\n ['[', ']'],\r\n ['(', ')']\r\n ],\r\n autoClosingPairs: [\r\n { open: '{', close: '}', notIn: ['string', 'comment'] },\r\n { open: '[', close: ']', notIn: ['string', 'comment'] },\r\n { open: '(', close: ')', notIn: ['string', 'comment'] },\r\n { open: '\"', close: '\"', notIn: ['string', 'comment'] },\r\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] }\r\n ],\r\n surroundingPairs: [\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '\"', close: '\"' },\r\n { open: \"'\", close: \"'\" }\r\n ],\r\n folding: {\r\n markers: {\r\n start: new RegExp('^\\\\s*\\\\/\\\\*\\\\s*#region\\\\b\\\\s*(.*?)\\\\s*\\\\*\\\\/'),\r\n end: new RegExp('^\\\\s*\\\\/\\\\*\\\\s*#endregion\\\\b.*\\\\*\\\\/')\r\n }\r\n }\r\n};\r\nexport var language = {\r\n defaultToken: '',\r\n tokenPostfix: '.css',\r\n ws: '[ \\t\\n\\r\\f]*',\r\n identifier: '-?-?([a-zA-Z]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))([\\\\w\\\\-]|(\\\\\\\\(([0-9a-fA-F]{1,6}\\\\s?)|[^[0-9a-fA-F])))*',\r\n brackets: [\r\n { open: '{', close: '}', token: 'delimiter.bracket' },\r\n { open: '[', close: ']', token: 'delimiter.bracket' },\r\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\r\n { open: '<', close: '>', token: 'delimiter.angle' }\r\n ],\r\n tokenizer: {\r\n root: [{ include: '@selector' }],\r\n selector: [\r\n { include: '@comments' },\r\n { include: '@import' },\r\n { include: '@strings' },\r\n [\r\n '[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)',\r\n { token: 'keyword', next: '@keyframedeclaration' }\r\n ],\r\n ['[@](page|content|font-face|-moz-document)', { token: 'keyword' }],\r\n ['[@](charset|namespace)', { token: 'keyword', next: '@declarationbody' }],\r\n [\r\n '(url-prefix)(\\\\()',\r\n ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]\r\n ],\r\n [\r\n '(url)(\\\\()',\r\n ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]\r\n ],\r\n { include: '@selectorname' },\r\n ['[\\\\*]', 'tag'],\r\n ['[>\\\\+,]', 'delimiter'],\r\n ['\\\\[', { token: 'delimiter.bracket', next: '@selectorattribute' }],\r\n ['{', { token: 'delimiter.bracket', next: '@selectorbody' }]\r\n ],\r\n selectorbody: [\r\n { include: '@comments' },\r\n ['[*_]?@identifier@ws:(?=(\\\\s|\\\\d|[^{;}]*[;}]))', 'attribute.name', '@rulevalue'],\r\n ['}', { token: 'delimiter.bracket', next: '@pop' }]\r\n ],\r\n selectorname: [\r\n ['(\\\\.|#(?=[^{])|%|(@identifier)|:)+', 'tag'] // selector (.foo, div, ...)\r\n ],\r\n selectorattribute: [\r\n { include: '@term' },\r\n [']', { token: 'delimiter.bracket', next: '@pop' }]\r\n ],\r\n term: [\r\n { include: '@comments' },\r\n [\r\n '(url-prefix)(\\\\()',\r\n ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]\r\n ],\r\n [\r\n '(url)(\\\\()',\r\n ['attribute.value', { token: 'delimiter.parenthesis', next: '@urldeclaration' }]\r\n ],\r\n { include: '@functioninvocation' },\r\n { include: '@numbers' },\r\n { include: '@name' },\r\n { include: '@strings' },\r\n ['([<>=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\|\\\\~,])', 'delimiter'],\r\n [',', 'delimiter']\r\n ],\r\n rulevalue: [\r\n { include: '@comments' },\r\n { include: '@strings' },\r\n { include: '@term' },\r\n ['!important', 'keyword'],\r\n [';', 'delimiter', '@pop'],\r\n ['(?=})', { token: '', next: '@pop' }] // missing semicolon\r\n ],\r\n warndebug: [['[@](warn|debug)', { token: 'keyword', next: '@declarationbody' }]],\r\n import: [['[@](import)', { token: 'keyword', next: '@declarationbody' }]],\r\n urldeclaration: [\r\n { include: '@strings' },\r\n ['[^)\\r\\n]+', 'string'],\r\n ['\\\\)', { token: 'delimiter.parenthesis', next: '@pop' }]\r\n ],\r\n parenthizedterm: [\r\n { include: '@term' },\r\n ['\\\\)', { token: 'delimiter.parenthesis', next: '@pop' }]\r\n ],\r\n declarationbody: [\r\n { include: '@term' },\r\n [';', 'delimiter', '@pop'],\r\n ['(?=})', { token: '', next: '@pop' }] // missing semicolon\r\n ],\r\n comments: [\r\n ['\\\\/\\\\*', 'comment', '@comment'],\r\n ['\\\\/\\\\/+.*', 'comment']\r\n ],\r\n comment: [\r\n ['\\\\*\\\\/', 'comment', '@pop'],\r\n [/[^*/]+/, 'comment'],\r\n [/./, 'comment']\r\n ],\r\n name: [['@identifier', 'attribute.value']],\r\n numbers: [\r\n [\r\n '-?(\\\\d*\\\\.)?\\\\d+([eE][\\\\-+]?\\\\d+)?',\r\n { token: 'attribute.value.number', next: '@units' }\r\n ],\r\n ['#[0-9a-fA-F_]+(?!\\\\w)', 'attribute.value.hex']\r\n ],\r\n units: [\r\n [\r\n '(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?',\r\n 'attribute.value.unit',\r\n '@pop'\r\n ]\r\n ],\r\n keyframedeclaration: [\r\n ['@identifier', 'attribute.value'],\r\n ['{', { token: 'delimiter.bracket', switchTo: '@keyframebody' }]\r\n ],\r\n keyframebody: [\r\n { include: '@term' },\r\n ['{', { token: 'delimiter.bracket', next: '@selectorbody' }],\r\n ['}', { token: 'delimiter.bracket', next: '@pop' }]\r\n ],\r\n functioninvocation: [\r\n ['@identifier\\\\(', { token: 'attribute.value', next: '@functionarguments' }]\r\n ],\r\n functionarguments: [\r\n ['\\\\$@identifier@ws:', 'attribute.name'],\r\n ['[,]', 'delimiter'],\r\n { include: '@term' },\r\n ['\\\\)', { token: 'attribute.value', next: '@pop' }]\r\n ],\r\n strings: [\r\n ['~?\"', { token: 'string', next: '@stringenddoublequote' }],\r\n [\"~?'\", { token: 'string', next: '@stringendquote' }]\r\n ],\r\n stringenddoublequote: [\r\n ['\\\\\\\\.', 'string'],\r\n ['\"', { token: 'string', next: '@pop' }],\r\n [/[^\\\\\"]+/, 'string'],\r\n ['.', 'string']\r\n ],\r\n stringendquote: [\r\n ['\\\\\\\\.', 'string'],\r\n [\"'\", { token: 'string', next: '@pop' }],\r\n [/[^\\\\']+/, 'string'],\r\n ['.', 'string']\r\n ]\r\n }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerLanguage } from '../_.contribution.js';\r\nregisterLanguage({\r\n id: 'html',\r\n extensions: ['.html', '.htm', '.shtml', '.xhtml', '.mdoc', '.jsp', '.asp', '.aspx', '.jshtm'],\r\n aliases: ['HTML', 'htm', 'html', 'xhtml'],\r\n mimetypes: ['text/html', 'text/x-jshtm', 'text/template', 'text/ng-template'],\r\n loader: function () { return import('./html.js'); }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { languages } from '../fillers/monaco-editor-core.js';\r\nvar EMPTY_ELEMENTS = [\r\n 'area',\r\n 'base',\r\n 'br',\r\n 'col',\r\n 'embed',\r\n 'hr',\r\n 'img',\r\n 'input',\r\n 'keygen',\r\n 'link',\r\n 'menuitem',\r\n 'meta',\r\n 'param',\r\n 'source',\r\n 'track',\r\n 'wbr'\r\n];\r\nexport var conf = {\r\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)/g,\r\n comments: {\r\n blockComment: ['']\r\n },\r\n brackets: [\r\n [''],\r\n ['<', '>'],\r\n ['{', '}'],\r\n ['(', ')']\r\n ],\r\n autoClosingPairs: [\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '\"', close: '\"' },\r\n { open: \"'\", close: \"'\" }\r\n ],\r\n surroundingPairs: [\r\n { open: '\"', close: '\"' },\r\n { open: \"'\", close: \"'\" },\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '<', close: '>' }\r\n ],\r\n onEnterRules: [\r\n {\r\n beforeText: new RegExp(\"<(?!(?:\" + EMPTY_ELEMENTS.join('|') + \"))([_:\\\\w][_:\\\\w-.\\\\d]*)([^/>]*(?!/)>)[^<]*$\", 'i'),\r\n afterText: /^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$/i,\r\n action: {\r\n indentAction: languages.IndentAction.IndentOutdent\r\n }\r\n },\r\n {\r\n beforeText: new RegExp(\"<(?!(?:\" + EMPTY_ELEMENTS.join('|') + \"))(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$\", 'i'),\r\n action: { indentAction: languages.IndentAction.Indent }\r\n }\r\n ],\r\n folding: {\r\n markers: {\r\n start: new RegExp('^\\\\s*'),\r\n end: new RegExp('^\\\\s*')\r\n }\r\n }\r\n};\r\nexport var language = {\r\n defaultToken: '',\r\n tokenPostfix: '.html',\r\n ignoreCase: true,\r\n // The main tokenizer for our languages\r\n tokenizer: {\r\n root: [\r\n [/)/, ['delimiter', 'tag', '', 'delimiter']],\r\n [/(<)(script)/, ['delimiter', { token: 'tag', next: '@script' }]],\r\n [/(<)(style)/, ['delimiter', { token: 'tag', next: '@style' }]],\r\n [/(<)((?:[\\w\\-]+:)?[\\w\\-]+)/, ['delimiter', { token: 'tag', next: '@otherTag' }]],\r\n [/(<\\/)((?:[\\w\\-]+:)?[\\w\\-]+)/, ['delimiter', { token: 'tag', next: '@otherTag' }]],\r\n [/]+/, 'metatag.content'],\r\n [/>/, 'metatag', '@pop']\r\n ],\r\n comment: [\r\n [/-->/, 'comment', '@pop'],\r\n [/[^-]+/, 'comment.content'],\r\n [/./, 'comment.content']\r\n ],\r\n otherTag: [\r\n [/\\/?>/, 'delimiter', '@pop'],\r\n [/\"([^\"]*)\"/, 'attribute.value'],\r\n [/'([^']*)'/, 'attribute.value'],\r\n [/[\\w\\-]+/, 'attribute.name'],\r\n [/=/, 'delimiter'],\r\n [/[ \\t\\r\\n]+/] // whitespace\r\n ],\r\n // -- BEGIN \r\n// \r\n// .bar { text-decoration: underline; }\r\n// \r\n// \r\n// \r\n// \r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerLanguage } from '../_.contribution.js';\r\nregisterLanguage({\r\n id: 'javascript',\r\n extensions: ['.js', '.es6', '.jsx', '.mjs'],\r\n firstLine: '^#!.*\\\\bnode',\r\n filenames: ['jakefile'],\r\n aliases: ['JavaScript', 'javascript', 'js'],\r\n mimetypes: ['text/javascript'],\r\n loader: function () { return import('./javascript.js'); }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { conf as tsConf, language as tsLanguage } from '../typescript/typescript.js';\r\nexport var conf = tsConf;\r\nexport var language = {\r\n // Set defaultToken to invalid to see what you do not tokenize yet\r\n defaultToken: 'invalid',\r\n tokenPostfix: '.js',\r\n keywords: [\r\n 'break',\r\n 'case',\r\n 'catch',\r\n 'class',\r\n 'continue',\r\n 'const',\r\n 'constructor',\r\n 'debugger',\r\n 'default',\r\n 'delete',\r\n 'do',\r\n 'else',\r\n 'export',\r\n 'extends',\r\n 'false',\r\n 'finally',\r\n 'for',\r\n 'from',\r\n 'function',\r\n 'get',\r\n 'if',\r\n 'import',\r\n 'in',\r\n 'instanceof',\r\n 'let',\r\n 'new',\r\n 'null',\r\n 'return',\r\n 'set',\r\n 'super',\r\n 'switch',\r\n 'symbol',\r\n 'this',\r\n 'throw',\r\n 'true',\r\n 'try',\r\n 'typeof',\r\n 'undefined',\r\n 'var',\r\n 'void',\r\n 'while',\r\n 'with',\r\n 'yield',\r\n 'async',\r\n 'await',\r\n 'of'\r\n ],\r\n typeKeywords: [],\r\n operators: tsLanguage.operators,\r\n symbols: tsLanguage.symbols,\r\n escapes: tsLanguage.escapes,\r\n digits: tsLanguage.digits,\r\n octaldigits: tsLanguage.octaldigits,\r\n binarydigits: tsLanguage.binarydigits,\r\n hexdigits: tsLanguage.hexdigits,\r\n regexpctl: tsLanguage.regexpctl,\r\n regexpesc: tsLanguage.regexpesc,\r\n tokenizer: tsLanguage.tokenizer\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerLanguage } from '../_.contribution.js';\r\nregisterLanguage({\r\n id: 'markdown',\r\n extensions: ['.md', '.markdown', '.mdown', '.mkdn', '.mkd', '.mdwn', '.mdtxt', '.mdtext'],\r\n aliases: ['Markdown', 'markdown'],\r\n loader: function () { return import('./markdown.js'); }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var conf = {\r\n comments: {\r\n blockComment: ['']\r\n },\r\n brackets: [\r\n ['{', '}'],\r\n ['[', ']'],\r\n ['(', ')']\r\n ],\r\n autoClosingPairs: [\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '<', close: '>', notIn: ['string'] }\r\n ],\r\n surroundingPairs: [\r\n { open: '(', close: ')' },\r\n { open: '[', close: ']' },\r\n { open: '`', close: '`' }\r\n ],\r\n folding: {\r\n markers: {\r\n start: new RegExp('^\\\\s*'),\r\n end: new RegExp('^\\\\s*')\r\n }\r\n }\r\n};\r\nexport var language = {\r\n defaultToken: '',\r\n tokenPostfix: '.md',\r\n // escape codes\r\n control: /[\\\\`*_\\[\\]{}()#+\\-\\.!]/,\r\n noncontrol: /[^\\\\`*_\\[\\]{}()#+\\-\\.!]/,\r\n escapes: /\\\\(?:@control)/,\r\n // escape codes for javascript/CSS strings\r\n jsescapes: /\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,\r\n // non matched elements\r\n empty: [\r\n 'area',\r\n 'base',\r\n 'basefont',\r\n 'br',\r\n 'col',\r\n 'frame',\r\n 'hr',\r\n 'img',\r\n 'input',\r\n 'isindex',\r\n 'link',\r\n 'meta',\r\n 'param'\r\n ],\r\n tokenizer: {\r\n root: [\r\n // markdown tables\r\n [/^\\s*\\|/, '@rematch', '@table_header'],\r\n // headers (with #)\r\n [\r\n /^(\\s{0,3})(#+)((?:[^\\\\#]|@escapes)+)((?:#+)?)/,\r\n ['white', 'keyword', 'keyword', 'keyword']\r\n ],\r\n // headers (with =)\r\n [/^\\s*(=+|\\-+)\\s*$/, 'keyword'],\r\n // headers (with ***)\r\n [/^\\s*((\\*[ ]?)+)\\s*$/, 'meta.separator'],\r\n // quote\r\n [/^\\s*>+/, 'comment'],\r\n // list (starting with * or number)\r\n [/^\\s*([\\*\\-+:]|\\d+\\.)\\s/, 'keyword'],\r\n // code block (4 spaces indent)\r\n [/^(\\t|[ ]{4})[^ ].*$/, 'string'],\r\n // code block (3 tilde)\r\n [/^\\s*~~~\\s*((?:\\w|[\\/\\-#])+)?\\s*$/, { token: 'string', next: '@codeblock' }],\r\n // github style code blocks (with backticks and language)\r\n [\r\n /^\\s*```\\s*((?:\\w|[\\/\\-#])+).*$/,\r\n { token: 'string', next: '@codeblockgh', nextEmbedded: '$1' }\r\n ],\r\n // github style code blocks (with backticks but no language)\r\n [/^\\s*```\\s*$/, { token: 'string', next: '@codeblock' }],\r\n // markup within lines\r\n { include: '@linecontent' }\r\n ],\r\n table_header: [\r\n { include: '@table_common' },\r\n [/[^\\|]+/, 'keyword.table.header'] // table header\r\n ],\r\n table_body: [{ include: '@table_common' }, { include: '@linecontent' }],\r\n table_common: [\r\n [/\\s*[\\-:]+\\s*/, { token: 'keyword', switchTo: 'table_body' }],\r\n [/^\\s*\\|/, 'keyword.table.left'],\r\n [/^\\s*[^\\|]/, '@rematch', '@pop'],\r\n [/^\\s*$/, '@rematch', '@pop'],\r\n [\r\n /\\|/,\r\n {\r\n cases: {\r\n '@eos': 'keyword.table.right',\r\n '@default': 'keyword.table.middle' // inner |\r\n }\r\n }\r\n ]\r\n ],\r\n codeblock: [\r\n [/^\\s*~~~\\s*$/, { token: 'string', next: '@pop' }],\r\n [/^\\s*```\\s*$/, { token: 'string', next: '@pop' }],\r\n [/.*$/, 'variable.source']\r\n ],\r\n // github style code blocks\r\n codeblockgh: [\r\n [/```\\s*$/, { token: 'string', next: '@pop', nextEmbedded: '@pop' }],\r\n [/[^`]+/, 'variable.source']\r\n ],\r\n linecontent: [\r\n // escapes\r\n [/&\\w+;/, 'string.escape'],\r\n [/@escapes/, 'escape'],\r\n // various markup\r\n [/\\b__([^\\\\_]|@escapes|_(?!_))+__\\b/, 'strong'],\r\n [/\\*\\*([^\\\\*]|@escapes|\\*(?!\\*))+\\*\\*/, 'strong'],\r\n [/\\b_[^_]+_\\b/, 'emphasis'],\r\n [/\\*([^\\\\*]|@escapes)+\\*/, 'emphasis'],\r\n [/`([^\\\\`]|@escapes)+`/, 'variable'],\r\n // links\r\n [/\\{+[^}]+\\}+/, 'string.target'],\r\n [/(!?\\[)((?:[^\\]\\\\]|@escapes)*)(\\]\\([^\\)]+\\))/, ['string.link', '', 'string.link']],\r\n [/(!?\\[)((?:[^\\]\\\\]|@escapes)*)(\\])/, 'string.link'],\r\n // or html\r\n { include: 'html' }\r\n ],\r\n // Note: it is tempting to rather switch to the real HTML mode instead of building our own here\r\n // but currently there is a limitation in Monarch that prevents us from doing it: The opening\r\n // '<' would start the HTML mode, however there is no way to jump 1 character back to let the\r\n // HTML mode also tokenize the opening angle bracket. Thus, even though we could jump to HTML,\r\n // we cannot correctly tokenize it in that mode yet.\r\n html: [\r\n // html tags\r\n [/<(\\w+)\\/>/, 'tag'],\r\n [\r\n /<(\\w+)/,\r\n {\r\n cases: {\r\n '@empty': { token: 'tag', next: '@tag.$1' },\r\n '@default': { token: 'tag', next: '@tag.$1' }\r\n }\r\n }\r\n ],\r\n [/<\\/(\\w+)\\s*>/, { token: 'tag' }],\r\n [//, 'comment', '@pop'],\r\n [/']\r\n },\r\n brackets: [['<', '>']],\r\n autoClosingPairs: [\r\n { open: '<', close: '>' },\r\n { open: \"'\", close: \"'\" },\r\n { open: '\"', close: '\"' }\r\n ],\r\n surroundingPairs: [\r\n { open: '<', close: '>' },\r\n { open: \"'\", close: \"'\" },\r\n { open: '\"', close: '\"' }\r\n ],\r\n onEnterRules: [\r\n {\r\n beforeText: new RegExp(\"<([_:\\\\w][_:\\\\w-.\\\\d]*)([^/>]*(?!/)>)[^<]*$\", 'i'),\r\n afterText: /^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$/i,\r\n action: {\r\n indentAction: languages.IndentAction.IndentOutdent\r\n }\r\n },\r\n {\r\n beforeText: new RegExp(\"<(\\\\w[\\\\w\\\\d]*)([^/>]*(?!/)>)[^<]*$\", 'i'),\r\n action: { indentAction: languages.IndentAction.Indent }\r\n }\r\n ]\r\n};\r\nexport var language = {\r\n defaultToken: '',\r\n tokenPostfix: '.xml',\r\n ignoreCase: true,\r\n // Useful regular expressions\r\n qualifiedName: /(?:[\\w\\.\\-]+:)?[\\w\\.\\-]+/,\r\n tokenizer: {\r\n root: [\r\n [/[^<&]+/, ''],\r\n { include: '@whitespace' },\r\n // Standard opening tag\r\n [/(<)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'tag', next: '@tag' }]],\r\n // Standard closing tag\r\n [\r\n /(<\\/)(@qualifiedName)(\\s*)(>)/,\r\n [{ token: 'delimiter' }, { token: 'tag' }, '', { token: 'delimiter' }]\r\n ],\r\n // Meta tags - instruction\r\n [/(<\\?)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]],\r\n // Meta tags - declaration\r\n [/(<\\!)(@qualifiedName)/, [{ token: 'delimiter' }, { token: 'metatag', next: '@tag' }]],\r\n // CDATA\r\n [/<\\!\\[CDATA\\[/, { token: 'delimiter.cdata', next: '@cdata' }],\r\n [/&\\w+;/, 'string.escape']\r\n ],\r\n cdata: [\r\n [/[^\\]]+/, ''],\r\n [/\\]\\]>/, { token: 'delimiter.cdata', next: '@pop' }],\r\n [/\\]/, '']\r\n ],\r\n tag: [\r\n [/[ \\t\\r\\n]+/, ''],\r\n [\r\n /(@qualifiedName)(\\s*=\\s*)(\"[^\"]*\"|'[^']*')/,\r\n ['attribute.name', '', 'attribute.value']\r\n ],\r\n [\r\n /(@qualifiedName)(\\s*=\\s*)(\"[^\">?\\/]*|'[^'>?\\/]*)(?=[\\?\\/]\\>)/,\r\n ['attribute.name', '', 'attribute.value']\r\n ],\r\n [\r\n /(@qualifiedName)(\\s*=\\s*)(\"[^\">]*|'[^'>]*)/,\r\n ['attribute.name', '', 'attribute.value']\r\n ],\r\n [/@qualifiedName/, 'attribute.name'],\r\n [/\\?>/, { token: 'delimiter', next: '@pop' }],\r\n [/(\\/)(>)/, [{ token: 'tag' }, { token: 'delimiter', next: '@pop' }]],\r\n [/>/, { token: 'delimiter', next: '@pop' }]\r\n ],\r\n whitespace: [\r\n [/[ \\t\\r\\n]+/, ''],\r\n [//, { token: 'comment', next: '@pop' }],\r\n [/ a b\r\n * \\\r\n * z\r\n */\r\n rbInsertLeft(node, p) {\r\n let z = new TreeNode(p, 1 /* Red */);\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n z.parent = SENTINEL;\r\n z.size_left = 0;\r\n z.lf_left = 0;\r\n if (this.root === SENTINEL) {\r\n this.root = z;\r\n z.color = 0 /* Black */;\r\n }\r\n else if (node.left === SENTINEL) {\r\n node.left = z;\r\n z.parent = node;\r\n }\r\n else {\r\n let prevNode = righttest(node.left); // a\r\n prevNode.right = z;\r\n z.parent = prevNode;\r\n }\r\n fixInsert(this, z);\r\n return z;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../../base/common/event.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { Range } from '../../core/range.js';\r\nimport { ApplyEditsResult } from '../../model.js';\r\nimport { PieceTreeBase } from './pieceTreeBase.js';\r\nimport { countEOL } from '../tokensStore.js';\r\nimport { TextChange } from '../textChange.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nexport class PieceTreeTextBuffer extends Disposable {\r\n constructor(chunks, BOM, eol, containsRTL, containsUnusualLineTerminators, isBasicASCII, eolNormalized) {\r\n super();\r\n this._onDidChangeContent = this._register(new Emitter());\r\n this._BOM = BOM;\r\n this._mightContainNonBasicASCII = !isBasicASCII;\r\n this._mightContainRTL = containsRTL;\r\n this._mightContainUnusualLineTerminators = containsUnusualLineTerminators;\r\n this._pieceTree = new PieceTreeBase(chunks, eol, eolNormalized);\r\n }\r\n mightContainRTL() {\r\n return this._mightContainRTL;\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._mightContainUnusualLineTerminators;\r\n }\r\n resetMightContainUnusualLineTerminators() {\r\n this._mightContainUnusualLineTerminators = false;\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._mightContainNonBasicASCII;\r\n }\r\n getBOM() {\r\n return this._BOM;\r\n }\r\n getEOL() {\r\n return this._pieceTree.getEOL();\r\n }\r\n createSnapshot(preserveBOM) {\r\n return this._pieceTree.createSnapshot(preserveBOM ? this._BOM : '');\r\n }\r\n getOffsetAt(lineNumber, column) {\r\n return this._pieceTree.getOffsetAt(lineNumber, column);\r\n }\r\n getPositionAt(offset) {\r\n return this._pieceTree.getPositionAt(offset);\r\n }\r\n getRangeAt(start, length) {\r\n let end = start + length;\r\n const startPosition = this.getPositionAt(start);\r\n const endPosition = this.getPositionAt(end);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n getValueInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return '';\r\n }\r\n const lineEnding = this._getEndOfLine(eol);\r\n return this._pieceTree.getValueInRange(range, lineEnding);\r\n }\r\n getValueLengthInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return 0;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return (range.endColumn - range.startColumn);\r\n }\r\n let startOffset = this.getOffsetAt(range.startLineNumber, range.startColumn);\r\n let endOffset = this.getOffsetAt(range.endLineNumber, range.endColumn);\r\n return endOffset - startOffset;\r\n }\r\n getCharacterCountInRange(range, eol = 0 /* TextDefined */) {\r\n if (this._mightContainNonBasicASCII) {\r\n // we must count by iterating\r\n let result = 0;\r\n const fromLineNumber = range.startLineNumber;\r\n const toLineNumber = range.endLineNumber;\r\n for (let lineNumber = fromLineNumber; lineNumber <= toLineNumber; lineNumber++) {\r\n const lineContent = this.getLineContent(lineNumber);\r\n const fromOffset = (lineNumber === fromLineNumber ? range.startColumn - 1 : 0);\r\n const toOffset = (lineNumber === toLineNumber ? range.endColumn - 1 : lineContent.length);\r\n for (let offset = fromOffset; offset < toOffset; offset++) {\r\n if (strings.isHighSurrogate(lineContent.charCodeAt(offset))) {\r\n result = result + 1;\r\n offset = offset + 1;\r\n }\r\n else {\r\n result = result + 1;\r\n }\r\n }\r\n }\r\n result += this._getEndOfLine(eol).length * (toLineNumber - fromLineNumber);\r\n return result;\r\n }\r\n return this.getValueLengthInRange(range, eol);\r\n }\r\n getLength() {\r\n return this._pieceTree.getLength();\r\n }\r\n getLineCount() {\r\n return this._pieceTree.getLineCount();\r\n }\r\n getLinesContent() {\r\n return this._pieceTree.getLinesContent();\r\n }\r\n getLineContent(lineNumber) {\r\n return this._pieceTree.getLineContent(lineNumber);\r\n }\r\n getLineCharCode(lineNumber, index) {\r\n return this._pieceTree.getLineCharCode(lineNumber, index);\r\n }\r\n getLineLength(lineNumber) {\r\n return this._pieceTree.getLineLength(lineNumber);\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n const result = strings.firstNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 1;\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n const result = strings.lastNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 2;\r\n }\r\n _getEndOfLine(eol) {\r\n switch (eol) {\r\n case 1 /* LF */:\r\n return '\\n';\r\n case 2 /* CRLF */:\r\n return '\\r\\n';\r\n case 0 /* TextDefined */:\r\n return this.getEOL();\r\n default:\r\n throw new Error('Unknown EOL preference');\r\n }\r\n }\r\n setEOL(newEOL) {\r\n this._pieceTree.setEOL(newEOL);\r\n }\r\n applyEdits(rawOperations, recordTrimAutoWhitespace, computeUndoEdits) {\r\n let mightContainRTL = this._mightContainRTL;\r\n let mightContainUnusualLineTerminators = this._mightContainUnusualLineTerminators;\r\n let mightContainNonBasicASCII = this._mightContainNonBasicASCII;\r\n let canReduceOperations = true;\r\n let operations = [];\r\n for (let i = 0; i < rawOperations.length; i++) {\r\n let op = rawOperations[i];\r\n if (canReduceOperations && op._isTracked) {\r\n canReduceOperations = false;\r\n }\r\n let validatedRange = op.range;\r\n if (op.text) {\r\n let textMightContainNonBasicASCII = true;\r\n if (!mightContainNonBasicASCII) {\r\n textMightContainNonBasicASCII = !strings.isBasicASCII(op.text);\r\n mightContainNonBasicASCII = textMightContainNonBasicASCII;\r\n }\r\n if (!mightContainRTL && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains RTL\r\n mightContainRTL = strings.containsRTL(op.text);\r\n }\r\n if (!mightContainUnusualLineTerminators && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains unusual line terminators\r\n mightContainUnusualLineTerminators = strings.containsUnusualLineTerminators(op.text);\r\n }\r\n }\r\n let validText = '';\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineLength = 0;\r\n if (op.text) {\r\n let strEOL;\r\n [eolCount, firstLineLength, lastLineLength, strEOL] = countEOL(op.text);\r\n const bufferEOL = this.getEOL();\r\n const expectedStrEOL = (bufferEOL === '\\r\\n' ? 2 /* CRLF */ : 1 /* LF */);\r\n if (strEOL === 0 /* Unknown */ || strEOL === expectedStrEOL) {\r\n validText = op.text;\r\n }\r\n else {\r\n validText = op.text.replace(/\\r\\n|\\r|\\n/g, bufferEOL);\r\n }\r\n }\r\n operations[i] = {\r\n sortIndex: i,\r\n identifier: op.identifier || null,\r\n range: validatedRange,\r\n rangeOffset: this.getOffsetAt(validatedRange.startLineNumber, validatedRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(validatedRange),\r\n text: validText,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: Boolean(op.forceMoveMarkers),\r\n isAutoWhitespaceEdit: op.isAutoWhitespaceEdit || false\r\n };\r\n }\r\n // Sort operations ascending\r\n operations.sort(PieceTreeTextBuffer._sortOpsAscending);\r\n let hasTouchingRanges = false;\r\n for (let i = 0, count = operations.length - 1; i < count; i++) {\r\n let rangeEnd = operations[i].range.getEndPosition();\r\n let nextRangeStart = operations[i + 1].range.getStartPosition();\r\n if (nextRangeStart.isBeforeOrEqual(rangeEnd)) {\r\n if (nextRangeStart.isBefore(rangeEnd)) {\r\n // overlapping ranges\r\n throw new Error('Overlapping ranges are not allowed!');\r\n }\r\n hasTouchingRanges = true;\r\n }\r\n }\r\n if (canReduceOperations) {\r\n operations = this._reduceOperations(operations);\r\n }\r\n // Delta encode operations\r\n let reverseRanges = (computeUndoEdits || recordTrimAutoWhitespace ? PieceTreeTextBuffer._getInverseEditRanges(operations) : []);\r\n let newTrimAutoWhitespaceCandidates = [];\r\n if (recordTrimAutoWhitespace) {\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n let reverseRange = reverseRanges[i];\r\n if (op.isAutoWhitespaceEdit && op.range.isEmpty()) {\r\n // Record already the future line numbers that might be auto whitespace removal candidates on next edit\r\n for (let lineNumber = reverseRange.startLineNumber; lineNumber <= reverseRange.endLineNumber; lineNumber++) {\r\n let currentLineContent = '';\r\n if (lineNumber === reverseRange.startLineNumber) {\r\n currentLineContent = this.getLineContent(op.range.startLineNumber);\r\n if (strings.firstNonWhitespaceIndex(currentLineContent) !== -1) {\r\n continue;\r\n }\r\n }\r\n newTrimAutoWhitespaceCandidates.push({ lineNumber: lineNumber, oldContent: currentLineContent });\r\n }\r\n }\r\n }\r\n }\r\n let reverseOperations = null;\r\n if (computeUndoEdits) {\r\n let reverseRangeDeltaOffset = 0;\r\n reverseOperations = [];\r\n for (let i = 0; i < operations.length; i++) {\r\n const op = operations[i];\r\n const reverseRange = reverseRanges[i];\r\n const bufferText = this.getValueInRange(op.range);\r\n const reverseRangeOffset = op.rangeOffset + reverseRangeDeltaOffset;\r\n reverseRangeDeltaOffset += (op.text.length - bufferText.length);\r\n reverseOperations[i] = {\r\n sortIndex: op.sortIndex,\r\n identifier: op.identifier,\r\n range: reverseRange,\r\n text: bufferText,\r\n textChange: new TextChange(op.rangeOffset, bufferText, reverseRangeOffset, op.text)\r\n };\r\n }\r\n // Can only sort reverse operations when the order is not significant\r\n if (!hasTouchingRanges) {\r\n reverseOperations.sort((a, b) => a.sortIndex - b.sortIndex);\r\n }\r\n }\r\n this._mightContainRTL = mightContainRTL;\r\n this._mightContainUnusualLineTerminators = mightContainUnusualLineTerminators;\r\n this._mightContainNonBasicASCII = mightContainNonBasicASCII;\r\n const contentChanges = this._doApplyEdits(operations);\r\n let trimAutoWhitespaceLineNumbers = null;\r\n if (recordTrimAutoWhitespace && newTrimAutoWhitespaceCandidates.length > 0) {\r\n // sort line numbers auto whitespace removal candidates for next edit descending\r\n newTrimAutoWhitespaceCandidates.sort((a, b) => b.lineNumber - a.lineNumber);\r\n trimAutoWhitespaceLineNumbers = [];\r\n for (let i = 0, len = newTrimAutoWhitespaceCandidates.length; i < len; i++) {\r\n let lineNumber = newTrimAutoWhitespaceCandidates[i].lineNumber;\r\n if (i > 0 && newTrimAutoWhitespaceCandidates[i - 1].lineNumber === lineNumber) {\r\n // Do not have the same line number twice\r\n continue;\r\n }\r\n let prevContent = newTrimAutoWhitespaceCandidates[i].oldContent;\r\n let lineContent = this.getLineContent(lineNumber);\r\n if (lineContent.length === 0 || lineContent === prevContent || strings.firstNonWhitespaceIndex(lineContent) !== -1) {\r\n continue;\r\n }\r\n trimAutoWhitespaceLineNumbers.push(lineNumber);\r\n }\r\n }\r\n this._onDidChangeContent.fire();\r\n return new ApplyEditsResult(reverseOperations, contentChanges, trimAutoWhitespaceLineNumbers);\r\n }\r\n /**\r\n * Transform operations such that they represent the same logic edit,\r\n * but that they also do not cause OOM crashes.\r\n */\r\n _reduceOperations(operations) {\r\n if (operations.length < 1000) {\r\n // We know from empirical testing that a thousand edits work fine regardless of their shape.\r\n return operations;\r\n }\r\n // At one point, due to how events are emitted and how each operation is handled,\r\n // some operations can trigger a high amount of temporary string allocations,\r\n // that will immediately get edited again.\r\n // e.g. a formatter inserting ridiculous ammounts of \\n on a model with a single line\r\n // Therefore, the strategy is to collapse all the operations into a huge single edit operation\r\n return [this._toSingleEditOperation(operations)];\r\n }\r\n _toSingleEditOperation(operations) {\r\n let forceMoveMarkers = false;\r\n const firstEditRange = operations[0].range;\r\n const lastEditRange = operations[operations.length - 1].range;\r\n const entireEditRange = new Range(firstEditRange.startLineNumber, firstEditRange.startColumn, lastEditRange.endLineNumber, lastEditRange.endColumn);\r\n let lastEndLineNumber = firstEditRange.startLineNumber;\r\n let lastEndColumn = firstEditRange.startColumn;\r\n const result = [];\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n const operation = operations[i];\r\n const range = operation.range;\r\n forceMoveMarkers = forceMoveMarkers || operation.forceMoveMarkers;\r\n // (1) -- Push old text\r\n result.push(this.getValueInRange(new Range(lastEndLineNumber, lastEndColumn, range.startLineNumber, range.startColumn)));\r\n // (2) -- Push new text\r\n if (operation.text.length > 0) {\r\n result.push(operation.text);\r\n }\r\n lastEndLineNumber = range.endLineNumber;\r\n lastEndColumn = range.endColumn;\r\n }\r\n const text = result.join('');\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n return {\r\n sortIndex: 0,\r\n identifier: operations[0].identifier,\r\n range: entireEditRange,\r\n rangeOffset: this.getOffsetAt(entireEditRange.startLineNumber, entireEditRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(entireEditRange, 0 /* TextDefined */),\r\n text: text,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: forceMoveMarkers,\r\n isAutoWhitespaceEdit: false\r\n };\r\n }\r\n _doApplyEdits(operations) {\r\n operations.sort(PieceTreeTextBuffer._sortOpsDescending);\r\n let contentChanges = [];\r\n // operations are from bottom to top\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n const startLineNumber = op.range.startLineNumber;\r\n const startColumn = op.range.startColumn;\r\n const endLineNumber = op.range.endLineNumber;\r\n const endColumn = op.range.endColumn;\r\n if (startLineNumber === endLineNumber && startColumn === endColumn && op.text.length === 0) {\r\n // no-op\r\n continue;\r\n }\r\n if (op.text) {\r\n // replacement\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n this._pieceTree.insert(op.rangeOffset, op.text, true);\r\n }\r\n else {\r\n // deletion\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n }\r\n const contentChangeRange = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n contentChanges.push({\r\n range: contentChangeRange,\r\n rangeLength: op.rangeLength,\r\n text: op.text,\r\n rangeOffset: op.rangeOffset,\r\n forceMoveMarkers: op.forceMoveMarkers\r\n });\r\n }\r\n return contentChanges;\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._pieceTree.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Assumes `operations` are validated and sorted ascending\r\n */\r\n static _getInverseEditRanges(operations) {\r\n let result = [];\r\n let prevOpEndLineNumber = 0;\r\n let prevOpEndColumn = 0;\r\n let prevOp = null;\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n let op = operations[i];\r\n let startLineNumber;\r\n let startColumn;\r\n if (prevOp) {\r\n if (prevOp.range.endLineNumber === op.range.startLineNumber) {\r\n startLineNumber = prevOpEndLineNumber;\r\n startColumn = prevOpEndColumn + (op.range.startColumn - prevOp.range.endColumn);\r\n }\r\n else {\r\n startLineNumber = prevOpEndLineNumber + (op.range.startLineNumber - prevOp.range.endLineNumber);\r\n startColumn = op.range.startColumn;\r\n }\r\n }\r\n else {\r\n startLineNumber = op.range.startLineNumber;\r\n startColumn = op.range.startColumn;\r\n }\r\n let resultRange;\r\n if (op.text.length > 0) {\r\n // the operation inserts something\r\n const lineCount = op.eolCount + 1;\r\n if (lineCount === 1) {\r\n // single line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn + op.firstLineLength);\r\n }\r\n else {\r\n // multi line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber + lineCount - 1, op.lastLineLength + 1);\r\n }\r\n }\r\n else {\r\n // There is nothing to insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn);\r\n }\r\n prevOpEndLineNumber = resultRange.endLineNumber;\r\n prevOpEndColumn = resultRange.endColumn;\r\n result.push(resultRange);\r\n prevOp = op;\r\n }\r\n return result;\r\n }\r\n static _sortOpsAscending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return a.sortIndex - b.sortIndex;\r\n }\r\n return r;\r\n }\r\n static _sortOpsDescending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return b.sortIndex - a.sortIndex;\r\n }\r\n return -r;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { StringBuffer, createLineStarts, createLineStartsFast } from './pieceTreeBase.js';\r\nimport { PieceTreeTextBuffer } from './pieceTreeTextBuffer.js';\r\nexport class PieceTreeTextBufferFactory {\r\n constructor(_chunks, _bom, _cr, _lf, _crlf, _containsRTL, _containsUnusualLineTerminators, _isBasicASCII, _normalizeEOL) {\r\n this._chunks = _chunks;\r\n this._bom = _bom;\r\n this._cr = _cr;\r\n this._lf = _lf;\r\n this._crlf = _crlf;\r\n this._containsRTL = _containsRTL;\r\n this._containsUnusualLineTerminators = _containsUnusualLineTerminators;\r\n this._isBasicASCII = _isBasicASCII;\r\n this._normalizeEOL = _normalizeEOL;\r\n }\r\n _getEOL(defaultEOL) {\r\n const totalEOLCount = this._cr + this._lf + this._crlf;\r\n const totalCRCount = this._cr + this._crlf;\r\n if (totalEOLCount === 0) {\r\n // This is an empty file or a file with precisely one line\r\n return (defaultEOL === 1 /* LF */ ? '\\n' : '\\r\\n');\r\n }\r\n if (totalCRCount > totalEOLCount / 2) {\r\n // More than half of the file contains \\r\\n ending lines\r\n return '\\r\\n';\r\n }\r\n // At least one line more ends in \\n\r\n return '\\n';\r\n }\r\n create(defaultEOL) {\r\n const eol = this._getEOL(defaultEOL);\r\n let chunks = this._chunks;\r\n if (this._normalizeEOL &&\r\n ((eol === '\\r\\n' && (this._cr > 0 || this._lf > 0))\r\n || (eol === '\\n' && (this._cr > 0 || this._crlf > 0)))) {\r\n // Normalize pieces\r\n for (let i = 0, len = chunks.length; i < len; i++) {\r\n let str = chunks[i].buffer.replace(/\\r\\n|\\r|\\n/g, eol);\r\n let newLineStart = createLineStartsFast(str);\r\n chunks[i] = new StringBuffer(str, newLineStart);\r\n }\r\n }\r\n const textBuffer = new PieceTreeTextBuffer(chunks, this._bom, eol, this._containsRTL, this._containsUnusualLineTerminators, this._isBasicASCII, this._normalizeEOL);\r\n return { textBuffer: textBuffer, disposable: textBuffer };\r\n }\r\n}\r\nexport class PieceTreeTextBufferBuilder {\r\n constructor() {\r\n this.chunks = [];\r\n this.BOM = '';\r\n this._hasPreviousChar = false;\r\n this._previousChar = 0;\r\n this._tmpLineStarts = [];\r\n this.cr = 0;\r\n this.lf = 0;\r\n this.crlf = 0;\r\n this.containsRTL = false;\r\n this.containsUnusualLineTerminators = false;\r\n this.isBasicASCII = true;\r\n }\r\n acceptChunk(chunk) {\r\n if (chunk.length === 0) {\r\n return;\r\n }\r\n if (this.chunks.length === 0) {\r\n if (strings.startsWithUTF8BOM(chunk)) {\r\n this.BOM = strings.UTF8_BOM_CHARACTER;\r\n chunk = chunk.substr(1);\r\n }\r\n }\r\n const lastChar = chunk.charCodeAt(chunk.length - 1);\r\n if (lastChar === 13 /* CarriageReturn */ || (lastChar >= 0xD800 && lastChar <= 0xDBFF)) {\r\n // last character is \\r or a high surrogate => keep it back\r\n this._acceptChunk1(chunk.substr(0, chunk.length - 1), false);\r\n this._hasPreviousChar = true;\r\n this._previousChar = lastChar;\r\n }\r\n else {\r\n this._acceptChunk1(chunk, false);\r\n this._hasPreviousChar = false;\r\n this._previousChar = lastChar;\r\n }\r\n }\r\n _acceptChunk1(chunk, allowEmptyStrings) {\r\n if (!allowEmptyStrings && chunk.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n if (this._hasPreviousChar) {\r\n this._acceptChunk2(String.fromCharCode(this._previousChar) + chunk);\r\n }\r\n else {\r\n this._acceptChunk2(chunk);\r\n }\r\n }\r\n _acceptChunk2(chunk) {\r\n const lineStarts = createLineStarts(this._tmpLineStarts, chunk);\r\n this.chunks.push(new StringBuffer(chunk, lineStarts.lineStarts));\r\n this.cr += lineStarts.cr;\r\n this.lf += lineStarts.lf;\r\n this.crlf += lineStarts.crlf;\r\n if (this.isBasicASCII) {\r\n this.isBasicASCII = lineStarts.isBasicASCII;\r\n }\r\n if (!this.isBasicASCII && !this.containsRTL) {\r\n // No need to check if it is basic ASCII\r\n this.containsRTL = strings.containsRTL(chunk);\r\n }\r\n if (!this.isBasicASCII && !this.containsUnusualLineTerminators) {\r\n // No need to check if it is basic ASCII\r\n this.containsUnusualLineTerminators = strings.containsUnusualLineTerminators(chunk);\r\n }\r\n }\r\n finish(normalizeEOL = true) {\r\n this._finish();\r\n return new PieceTreeTextBufferFactory(this.chunks, this.BOM, this.cr, this.lf, this.crlf, this.containsRTL, this.containsUnusualLineTerminators, this.isBasicASCII, normalizeEOL);\r\n }\r\n _finish() {\r\n if (this.chunks.length === 0) {\r\n this._acceptChunk1('', true);\r\n }\r\n if (this._hasPreviousChar) {\r\n this._hasPreviousChar = false;\r\n // recreate last chunk\r\n let lastChunk = this.chunks[this.chunks.length - 1];\r\n lastChunk.buffer += String.fromCharCode(this._previousChar);\r\n let newLineStarts = createLineStartsFast(lastChunk.buffer);\r\n lastChunk.lineStarts = newLineStarts;\r\n if (this._previousChar === 13 /* CarriageReturn */) {\r\n this.cr++;\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { TokenizationRegistry } from '../modes.js';\r\nimport { nullTokenize2 } from '../modes/nullMode.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { MultilineTokensBuilder, countEOL } from './tokensStore.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nexport class TokenizationStateStore {\r\n constructor() {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n }\r\n _reset(initialState) {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n if (initialState) {\r\n this._setBeginState(0, initialState);\r\n }\r\n }\r\n flush(initialState) {\r\n this._reset(initialState);\r\n }\r\n get invalidLineStartIndex() {\r\n return this._invalidLineStartIndex;\r\n }\r\n _invalidateLine(lineIndex) {\r\n if (lineIndex < this._len) {\r\n this._valid[lineIndex] = false;\r\n }\r\n if (lineIndex < this._invalidLineStartIndex) {\r\n this._invalidLineStartIndex = lineIndex;\r\n }\r\n }\r\n _isValid(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._valid[lineIndex];\r\n }\r\n return false;\r\n }\r\n getBeginState(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._beginState[lineIndex];\r\n }\r\n return null;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._beginState[this._len] = null;\r\n this._valid[this._len] = false;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._beginState.splice(start, deleteCount);\r\n this._valid.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let beginState = [];\r\n let valid = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n beginState[i] = null;\r\n valid[i] = false;\r\n }\r\n this._beginState = arrays.arrayInsert(this._beginState, insertIndex, beginState);\r\n this._valid = arrays.arrayInsert(this._valid, insertIndex, valid);\r\n this._len += insertCount;\r\n }\r\n _setValid(lineIndex, valid) {\r\n this._ensureLine(lineIndex);\r\n this._valid[lineIndex] = valid;\r\n }\r\n _setBeginState(lineIndex, beginState) {\r\n this._ensureLine(lineIndex);\r\n this._beginState[lineIndex] = beginState;\r\n }\r\n setEndState(linesLength, lineIndex, endState) {\r\n this._setValid(lineIndex, true);\r\n this._invalidLineStartIndex = lineIndex + 1;\r\n // Check if this was the last line\r\n if (lineIndex === linesLength - 1) {\r\n return;\r\n }\r\n // Check if the end state has changed\r\n const previousEndState = this.getBeginState(lineIndex + 1);\r\n if (previousEndState === null || !endState.equals(previousEndState)) {\r\n this._setBeginState(lineIndex + 1, endState);\r\n this._invalidateLine(lineIndex + 1);\r\n return;\r\n }\r\n // Perhaps we can skip tokenizing some lines...\r\n let i = lineIndex + 1;\r\n while (i < linesLength) {\r\n if (!this._isValid(i)) {\r\n break;\r\n }\r\n i++;\r\n }\r\n this._invalidLineStartIndex = i;\r\n }\r\n setFakeTokens(lineIndex) {\r\n this._setValid(lineIndex, false);\r\n }\r\n //#region Editing\r\n applyEdits(range, eolCount) {\r\n const deletingLinesCnt = range.endLineNumber - range.startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n this._invalidateLine(range.startLineNumber + j - 1);\r\n }\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount) {\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n}\r\nexport class TextModelTokenization extends Disposable {\r\n constructor(textModel) {\r\n super();\r\n this._isDisposed = false;\r\n this._textModel = textModel;\r\n this._tokenizationStateStore = new TokenizationStateStore();\r\n this._tokenizationSupport = null;\r\n this._register(TokenizationRegistry.onDidChange((e) => {\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n if (e.changedLanguages.indexOf(languageIdentifier.language) === -1) {\r\n return;\r\n }\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._register(this._textModel.onDidChangeContentFast((e) => {\r\n if (e.isFlush) {\r\n this._resetTokenizationState();\r\n return;\r\n }\r\n for (let i = 0, len = e.changes.length; i < len; i++) {\r\n const change = e.changes[i];\r\n const [eolCount] = countEOL(change.text);\r\n this._tokenizationStateStore.applyEdits(change.range, eolCount);\r\n }\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeAttached(() => {\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeLanguage(() => {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._resetTokenizationState();\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n super.dispose();\r\n }\r\n _resetTokenizationState() {\r\n const [tokenizationSupport, initialState] = initializeTokenization(this._textModel);\r\n this._tokenizationSupport = tokenizationSupport;\r\n this._tokenizationStateStore.flush(initialState);\r\n this._beginBackgroundTokenization();\r\n }\r\n _beginBackgroundTokenization() {\r\n if (this._textModel.isAttachedToEditor() && this._hasLinesToTokenize()) {\r\n platform.setImmediate(() => {\r\n if (this._isDisposed) {\r\n // disposed in the meantime\r\n return;\r\n }\r\n this._revalidateTokensNow();\r\n });\r\n }\r\n }\r\n _revalidateTokensNow(toLineNumber = this._textModel.getLineCount()) {\r\n const MAX_ALLOWED_TIME = 1;\r\n const builder = new MultilineTokensBuilder();\r\n const sw = StopWatch.create(false);\r\n while (this._hasLinesToTokenize()) {\r\n if (sw.elapsed() > MAX_ALLOWED_TIME) {\r\n // Stop if MAX_ALLOWED_TIME is reached\r\n break;\r\n }\r\n const tokenizedLineNumber = this._tokenizeOneInvalidLine(builder);\r\n if (tokenizedLineNumber >= toLineNumber) {\r\n break;\r\n }\r\n }\r\n this._beginBackgroundTokenization();\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._tokenizeViewport(builder, startLineNumber, endLineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n reset() {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }\r\n forceTokenization(lineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return true;\r\n }\r\n const firstInvalidLineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n if (lineNumber > firstInvalidLineNumber) {\r\n return false;\r\n }\r\n if (lineNumber < firstInvalidLineNumber) {\r\n return true;\r\n }\r\n if (this._textModel.getLineLength(lineNumber) < 2048 /* CHEAP_TOKENIZATION_LENGTH_LIMIT */) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _hasLinesToTokenize() {\r\n if (!this._tokenizationSupport) {\r\n return false;\r\n }\r\n return (this._tokenizationStateStore.invalidLineStartIndex < this._textModel.getLineCount());\r\n }\r\n _tokenizeOneInvalidLine(builder) {\r\n if (!this._hasLinesToTokenize()) {\r\n return this._textModel.getLineCount() + 1;\r\n }\r\n const lineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n return lineNumber;\r\n }\r\n _updateTokensUntilLine(builder, lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return;\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n const linesLength = this._textModel.getLineCount();\r\n const endLineIndex = lineNumber - 1;\r\n // Validate all states up to and including endLineIndex\r\n for (let lineIndex = this._tokenizationStateStore.invalidLineStartIndex; lineIndex <= endLineIndex; lineIndex++) {\r\n const text = this._textModel.getLineContent(lineIndex + 1);\r\n const lineStartState = this._tokenizationStateStore.getBeginState(lineIndex);\r\n const r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, true, lineStartState);\r\n builder.add(lineIndex + 1, r.tokens);\r\n this._tokenizationStateStore.setEndState(linesLength, lineIndex, r.endState);\r\n lineIndex = this._tokenizationStateStore.invalidLineStartIndex - 1; // -1 because the outer loop increments it\r\n }\r\n }\r\n _tokenizeViewport(builder, startLineNumber, endLineNumber) {\r\n if (!this._tokenizationSupport) {\r\n // nothing to do\r\n return;\r\n }\r\n if (endLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // nothing to do\r\n return;\r\n }\r\n if (startLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // tokenization has reached the viewport start...\r\n this._updateTokensUntilLine(builder, endLineNumber);\r\n return;\r\n }\r\n let nonWhitespaceColumn = this._textModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n let fakeLines = [];\r\n let initialState = null;\r\n for (let i = startLineNumber - 1; nonWhitespaceColumn > 0 && i >= 1; i--) {\r\n let newNonWhitespaceIndex = this._textModel.getLineFirstNonWhitespaceColumn(i);\r\n if (newNonWhitespaceIndex === 0) {\r\n continue;\r\n }\r\n if (newNonWhitespaceIndex < nonWhitespaceColumn) {\r\n initialState = this._tokenizationStateStore.getBeginState(i - 1);\r\n if (initialState) {\r\n break;\r\n }\r\n fakeLines.push(this._textModel.getLineContent(i));\r\n nonWhitespaceColumn = newNonWhitespaceIndex;\r\n }\r\n }\r\n if (!initialState) {\r\n initialState = this._tokenizationSupport.getInitialState();\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n let state = initialState;\r\n for (let i = fakeLines.length - 1; i >= 0; i--) {\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, fakeLines[i], false, state);\r\n state = r.endState;\r\n }\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let text = this._textModel.getLineContent(lineNumber);\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, true, state);\r\n builder.add(lineNumber, r.tokens);\r\n this._tokenizationStateStore.setFakeTokens(lineNumber - 1);\r\n state = r.endState;\r\n }\r\n }\r\n}\r\nfunction initializeTokenization(textModel) {\r\n const languageIdentifier = textModel.getLanguageIdentifier();\r\n let tokenizationSupport = (textModel.isTooLargeForTokenization()\r\n ? null\r\n : TokenizationRegistry.get(languageIdentifier.language));\r\n let initialState = null;\r\n if (tokenizationSupport) {\r\n try {\r\n initialState = tokenizationSupport.getInitialState();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n tokenizationSupport = null;\r\n }\r\n }\r\n return [tokenizationSupport, initialState];\r\n}\r\nfunction safeTokenize(languageIdentifier, tokenizationSupport, text, hasEOL, state) {\r\n let r = null;\r\n if (tokenizationSupport) {\r\n try {\r\n r = tokenizationSupport.tokenize2(text, hasEOL, state.clone(), 0);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n if (!r) {\r\n r = nullTokenize2(languageIdentifier.id, text, state, 0);\r\n }\r\n LineTokens.convertToEndOffset(r.tokens, text.length);\r\n return r;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { EDITOR_MODEL_DEFAULTS } from '../config/editorOptions.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport * as model from '../model.js';\r\nimport { EditStack } from './editStack.js';\r\nimport { guessIndentation } from './indentationGuesser.js';\r\nimport { IntervalNode, IntervalTree, recomputeMaxEnd } from './intervalTree.js';\r\nimport { PieceTreeTextBufferBuilder } from './pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js';\r\nimport { InternalModelContentChangeEvent, LineInjectedText, ModelInjectedTextChangedEvent, ModelRawContentChangedEvent, ModelRawEOLChanged, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from './textModelEvents.js';\r\nimport { SearchParams, TextModelSearch } from './textModelSearch.js';\r\nimport { TextModelTokenization } from './textModelTokens.js';\r\nimport { getWordAtText } from './wordHelper.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER } from '../modes/nullMode.js';\r\nimport { ignoreBracketsInToken } from '../modes/supports.js';\r\nimport { BracketsUtils } from '../modes/supports/richEditBrackets.js';\r\nimport { TokensStore, countEOL, TokensStore2 } from './tokensStore.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { PieceTreeTextBuffer } from './pieceTreeTextBuffer/pieceTreeTextBuffer.js';\r\nimport { ArrayQueue } from '../../../base/common/arrays.js';\r\nfunction createTextBufferBuilder() {\r\n return new PieceTreeTextBufferBuilder();\r\n}\r\nexport function createTextBufferFactory(text) {\r\n const builder = createTextBufferBuilder();\r\n builder.acceptChunk(text);\r\n return builder.finish();\r\n}\r\nexport function createTextBuffer(value, defaultEOL) {\r\n const factory = (typeof value === 'string' ? createTextBufferFactory(value) : value);\r\n return factory.create(defaultEOL);\r\n}\r\nlet MODEL_ID = 0;\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport const LONG_LINE_BOUNDARY = 10000;\r\nclass TextModelSnapshot {\r\n constructor(source) {\r\n this._source = source;\r\n this._eos = false;\r\n }\r\n read() {\r\n if (this._eos) {\r\n return null;\r\n }\r\n let result = [], resultCnt = 0, resultLength = 0;\r\n do {\r\n let tmp = this._source.read();\r\n if (tmp === null) {\r\n // end-of-stream\r\n this._eos = true;\r\n if (resultCnt === 0) {\r\n return null;\r\n }\r\n else {\r\n return result.join('');\r\n }\r\n }\r\n if (tmp.length > 0) {\r\n result[resultCnt++] = tmp;\r\n resultLength += tmp.length;\r\n }\r\n if (resultLength >= 64 * 1024) {\r\n return result.join('');\r\n }\r\n } while (true);\r\n }\r\n}\r\nconst invalidFunc = () => { throw new Error(`Invalid change accessor`); };\r\nclass BracketSearchCanceled {\r\n constructor() {\r\n this._searchCanceledBrand = undefined;\r\n }\r\n}\r\nBracketSearchCanceled.INSTANCE = new BracketSearchCanceled();\r\nfunction stripBracketSearchCanceled(result) {\r\n if (result instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return result;\r\n}\r\nexport class TextModel extends Disposable {\r\n //#endregion\r\n constructor(source, creationOptions, languageIdentifier, associatedResource = null, undoRedoService) {\r\n super();\r\n //#region Events\r\n this._onWillDispose = this._register(new Emitter());\r\n this.onWillDispose = this._onWillDispose.event;\r\n this._onDidChangeDecorations = this._register(new DidChangeDecorationsEmitter(affectedInjectedTextLines => this.handleBeforeFireDecorationsChangedEvent(affectedInjectedTextLines)));\r\n this.onDidChangeDecorations = this._onDidChangeDecorations.event;\r\n this._onDidChangeLanguage = this._register(new Emitter());\r\n this.onDidChangeLanguage = this._onDidChangeLanguage.event;\r\n this._onDidChangeLanguageConfiguration = this._register(new Emitter());\r\n this.onDidChangeLanguageConfiguration = this._onDidChangeLanguageConfiguration.event;\r\n this._onDidChangeTokens = this._register(new Emitter());\r\n this.onDidChangeTokens = this._onDidChangeTokens.event;\r\n this._onDidChangeOptions = this._register(new Emitter());\r\n this.onDidChangeOptions = this._onDidChangeOptions.event;\r\n this._onDidChangeAttached = this._register(new Emitter());\r\n this.onDidChangeAttached = this._onDidChangeAttached.event;\r\n this._onDidChangeContentOrInjectedText = this._register(new Emitter());\r\n this.onDidChangeContentOrInjectedText = this._onDidChangeContentOrInjectedText.event;\r\n this._eventEmitter = this._register(new DidChangeContentEmitter());\r\n this._register(this._eventEmitter.fastEvent((e) => {\r\n this._onDidChangeContentOrInjectedText.fire(e.rawContentChangedEvent);\r\n }));\r\n // Generate a new unique model id\r\n MODEL_ID++;\r\n this.id = '$model' + MODEL_ID;\r\n this.isForSimpleWidget = creationOptions.isForSimpleWidget;\r\n if (typeof associatedResource === 'undefined' || associatedResource === null) {\r\n this._associatedResource = URI.parse('inmemory://model/' + MODEL_ID);\r\n }\r\n else {\r\n this._associatedResource = associatedResource;\r\n }\r\n this._undoRedoService = undoRedoService;\r\n this._attachedEditorCount = 0;\r\n const { textBuffer, disposable } = createTextBuffer(source, creationOptions.defaultEOL);\r\n this._buffer = textBuffer;\r\n this._bufferDisposable = disposable;\r\n this._options = TextModel.resolveOptions(this._buffer, creationOptions);\r\n const bufferLineCount = this._buffer.getLineCount();\r\n const bufferTextLength = this._buffer.getValueLengthInRange(new Range(1, 1, bufferLineCount, this._buffer.getLineLength(bufferLineCount) + 1), 0 /* TextDefined */);\r\n // !!! Make a decision in the ctor and permanently respect this decision !!!\r\n // If a model is too large at construction time, it will never get tokenized,\r\n // under no circumstances.\r\n if (creationOptions.largeFileOptimizations) {\r\n this._isTooLargeForTokenization = ((bufferTextLength > TextModel.LARGE_FILE_SIZE_THRESHOLD)\r\n || (bufferLineCount > TextModel.LARGE_FILE_LINE_COUNT_THRESHOLD));\r\n }\r\n else {\r\n this._isTooLargeForTokenization = false;\r\n }\r\n this._isTooLargeForSyncing = (bufferTextLength > TextModel.MODEL_SYNC_LIMIT);\r\n this._versionId = 1;\r\n this._alternativeVersionId = 1;\r\n this._initialUndoRedoSnapshot = null;\r\n this._isDisposed = false;\r\n this._isDisposing = false;\r\n this._languageIdentifier = languageIdentifier || NULL_LANGUAGE_IDENTIFIER;\r\n this._languageRegistryListener = LanguageConfigurationRegistry.onDidChange((e) => {\r\n if (e.languageIdentifier.id === this._languageIdentifier.id) {\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n });\r\n this._instanceId = strings.singleLetterHash(MODEL_ID);\r\n this._lastDecorationId = 0;\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n this._commandManager = new EditStack(this, undoRedoService);\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._trimAutoWhitespaceLines = null;\r\n this._tokens = new TokensStore();\r\n this._tokens2 = new TokensStore2();\r\n this._tokenization = new TextModelTokenization(this);\r\n }\r\n static resolveOptions(textBuffer, options) {\r\n if (options.detectIndentation) {\r\n const guessedIndentation = guessIndentation(textBuffer, options.tabSize, options.insertSpaces);\r\n return new model.TextModelResolvedOptions({\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize,\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n return new model.TextModelResolvedOptions({\r\n tabSize: options.tabSize,\r\n indentSize: options.indentSize,\r\n insertSpaces: options.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n onDidChangeContentFast(listener) {\r\n return this._eventEmitter.fastEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n onDidChangeContent(listener) {\r\n return this._eventEmitter.slowEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n dispose() {\r\n this._isDisposing = true;\r\n this._onWillDispose.fire();\r\n this._languageRegistryListener.dispose();\r\n this._tokenization.dispose();\r\n this._isDisposed = true;\r\n super.dispose();\r\n this._bufferDisposable.dispose();\r\n this._isDisposing = false;\r\n // Manually release reference to previous text buffer to avoid large leaks\r\n // in case someone leaks a TextModel reference\r\n const emptyDisposedTextBuffer = new PieceTreeTextBuffer([], '', '\\n', false, false, true, true);\r\n emptyDisposedTextBuffer.dispose();\r\n this._buffer = emptyDisposedTextBuffer;\r\n }\r\n _assertNotDisposed() {\r\n if (this._isDisposed) {\r\n throw new Error('Model is disposed!');\r\n }\r\n }\r\n _emitContentChangedEvent(rawChange, change) {\r\n if (this._isDisposing) {\r\n // Do not confuse listeners by emitting any event after disposing\r\n return;\r\n }\r\n this._eventEmitter.fire(new InternalModelContentChangeEvent(rawChange, change));\r\n }\r\n setValue(value) {\r\n this._assertNotDisposed();\r\n if (value === null) {\r\n // There's nothing to do\r\n return;\r\n }\r\n const { textBuffer, disposable } = createTextBuffer(value, this._options.defaultEOL);\r\n this._setValueFromTextBuffer(textBuffer, disposable);\r\n }\r\n _createContentChanged2(range, rangeOffset, rangeLength, text, isUndoing, isRedoing, isFlush) {\r\n return {\r\n changes: [{\r\n range: range,\r\n rangeOffset: rangeOffset,\r\n rangeLength: rangeLength,\r\n text: text,\r\n }],\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n _setValueFromTextBuffer(textBuffer, textBufferDisposable) {\r\n this._assertNotDisposed();\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._buffer = textBuffer;\r\n this._bufferDisposable.dispose();\r\n this._bufferDisposable = textBufferDisposable;\r\n this._increaseVersionId();\r\n // Flush all tokens\r\n this._tokens.flush();\r\n this._tokens2.flush();\r\n // Destroy all my decorations\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n // Destroy my edit history and settings\r\n this._commandManager.clear();\r\n this._trimAutoWhitespaceLines = null;\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawFlush()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, true));\r\n }\r\n setEOL(eol) {\r\n this._assertNotDisposed();\r\n const newEOL = (eol === 1 /* CRLF */ ? '\\r\\n' : '\\n');\r\n if (this._buffer.getEOL() === newEOL) {\r\n // Nothing to do\r\n return;\r\n }\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._onBeforeEOLChange();\r\n this._buffer.setEOL(newEOL);\r\n this._increaseVersionId();\r\n this._onAfterEOLChange();\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawEOLChanged()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, false));\r\n }\r\n _onBeforeEOLChange() {\r\n // Ensure all decorations get their `range` set.\r\n this._decorationsTree.ensureAllNodesHaveRanges(this);\r\n }\r\n _onAfterEOLChange() {\r\n // Transform back `range` to offsets\r\n const versionId = this.getVersionId();\r\n const allDecorations = this._decorationsTree.collectNodesPostOrder();\r\n for (let i = 0, len = allDecorations.length; i < len; i++) {\r\n const node = allDecorations[i];\r\n const range = node.range; // the range is defined due to `_onBeforeEOLChange`\r\n const delta = node.cachedAbsoluteStart - node.start;\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n node.cachedAbsoluteStart = startOffset;\r\n node.cachedAbsoluteEnd = endOffset;\r\n node.cachedVersionId = versionId;\r\n node.start = startOffset - delta;\r\n node.end = endOffset - delta;\r\n recomputeMaxEnd(node);\r\n }\r\n }\r\n onBeforeAttached() {\r\n this._attachedEditorCount++;\r\n if (this._attachedEditorCount === 1) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n onBeforeDetached() {\r\n this._attachedEditorCount--;\r\n if (this._attachedEditorCount === 0) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n isAttachedToEditor() {\r\n return this._attachedEditorCount > 0;\r\n }\r\n getAttachedEditorCount() {\r\n return this._attachedEditorCount;\r\n }\r\n isTooLargeForSyncing() {\r\n return this._isTooLargeForSyncing;\r\n }\r\n isTooLargeForTokenization() {\r\n return this._isTooLargeForTokenization;\r\n }\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n isDominatedByLongLines() {\r\n this._assertNotDisposed();\r\n if (this.isTooLargeForTokenization()) {\r\n // Cannot word wrap huge files anyways, so it doesn't really matter\r\n return false;\r\n }\r\n let smallLineCharCount = 0;\r\n let longLineCharCount = 0;\r\n const lineCount = this._buffer.getLineCount();\r\n for (let lineNumber = 1; lineNumber <= lineCount; lineNumber++) {\r\n const lineLength = this._buffer.getLineLength(lineNumber);\r\n if (lineLength >= LONG_LINE_BOUNDARY) {\r\n longLineCharCount += lineLength;\r\n }\r\n else {\r\n smallLineCharCount += lineLength;\r\n }\r\n }\r\n return (longLineCharCount > smallLineCharCount);\r\n }\r\n get uri() {\r\n return this._associatedResource;\r\n }\r\n //#region Options\r\n getOptions() {\r\n this._assertNotDisposed();\r\n return this._options;\r\n }\r\n getFormattingOptions() {\r\n return {\r\n tabSize: this._options.indentSize,\r\n insertSpaces: this._options.insertSpaces\r\n };\r\n }\r\n updateOptions(_newOpts) {\r\n this._assertNotDisposed();\r\n let tabSize = (typeof _newOpts.tabSize !== 'undefined') ? _newOpts.tabSize : this._options.tabSize;\r\n let indentSize = (typeof _newOpts.indentSize !== 'undefined') ? _newOpts.indentSize : this._options.indentSize;\r\n let insertSpaces = (typeof _newOpts.insertSpaces !== 'undefined') ? _newOpts.insertSpaces : this._options.insertSpaces;\r\n let trimAutoWhitespace = (typeof _newOpts.trimAutoWhitespace !== 'undefined') ? _newOpts.trimAutoWhitespace : this._options.trimAutoWhitespace;\r\n let newOpts = new model.TextModelResolvedOptions({\r\n tabSize: tabSize,\r\n indentSize: indentSize,\r\n insertSpaces: insertSpaces,\r\n defaultEOL: this._options.defaultEOL,\r\n trimAutoWhitespace: trimAutoWhitespace\r\n });\r\n if (this._options.equals(newOpts)) {\r\n return;\r\n }\r\n let e = this._options.createChangeEvent(newOpts);\r\n this._options = newOpts;\r\n this._onDidChangeOptions.fire(e);\r\n }\r\n detectIndentation(defaultInsertSpaces, defaultTabSize) {\r\n this._assertNotDisposed();\r\n let guessedIndentation = guessIndentation(this._buffer, defaultTabSize, defaultInsertSpaces);\r\n this.updateOptions({\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize, // TODO@Alex: guess indentSize independent of tabSize\r\n });\r\n }\r\n static _normalizeIndentationFromWhitespace(str, indentSize, insertSpaces) {\r\n let spacesCnt = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n if (str.charAt(i) === '\\t') {\r\n spacesCnt += indentSize;\r\n }\r\n else {\r\n spacesCnt++;\r\n }\r\n }\r\n let result = '';\r\n if (!insertSpaces) {\r\n let tabsCnt = Math.floor(spacesCnt / indentSize);\r\n spacesCnt = spacesCnt % indentSize;\r\n for (let i = 0; i < tabsCnt; i++) {\r\n result += '\\t';\r\n }\r\n }\r\n for (let i = 0; i < spacesCnt; i++) {\r\n result += ' ';\r\n }\r\n return result;\r\n }\r\n static normalizeIndentation(str, indentSize, insertSpaces) {\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(str);\r\n if (firstNonWhitespaceIndex === -1) {\r\n firstNonWhitespaceIndex = str.length;\r\n }\r\n return TextModel._normalizeIndentationFromWhitespace(str.substring(0, firstNonWhitespaceIndex), indentSize, insertSpaces) + str.substring(firstNonWhitespaceIndex);\r\n }\r\n normalizeIndentation(str) {\r\n this._assertNotDisposed();\r\n return TextModel.normalizeIndentation(str, this._options.indentSize, this._options.insertSpaces);\r\n }\r\n //#endregion\r\n //#region Reading\r\n getVersionId() {\r\n this._assertNotDisposed();\r\n return this._versionId;\r\n }\r\n mightContainRTL() {\r\n return this._buffer.mightContainRTL();\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._buffer.mightContainUnusualLineTerminators();\r\n }\r\n removeUnusualLineTerminators(selections = null) {\r\n const matches = this.findMatches(strings.UNUSUAL_LINE_TERMINATORS.source, false, true, false, null, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n this._buffer.resetMightContainUnusualLineTerminators();\r\n this.pushEditOperations(selections, matches.map(m => ({ range: m.range, text: null })), () => null);\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._buffer.mightContainNonBasicASCII();\r\n }\r\n getAlternativeVersionId() {\r\n this._assertNotDisposed();\r\n return this._alternativeVersionId;\r\n }\r\n getInitialUndoRedoSnapshot() {\r\n this._assertNotDisposed();\r\n return this._initialUndoRedoSnapshot;\r\n }\r\n getOffsetAt(rawPosition) {\r\n this._assertNotDisposed();\r\n let position = this._validatePosition(rawPosition.lineNumber, rawPosition.column, 0 /* Relaxed */);\r\n return this._buffer.getOffsetAt(position.lineNumber, position.column);\r\n }\r\n getPositionAt(rawOffset) {\r\n this._assertNotDisposed();\r\n let offset = (Math.min(this._buffer.getLength(), Math.max(0, rawOffset)));\r\n return this._buffer.getPositionAt(offset);\r\n }\r\n _increaseVersionId() {\r\n this._versionId = this._versionId + 1;\r\n this._alternativeVersionId = this._versionId;\r\n }\r\n _overwriteVersionId(versionId) {\r\n this._versionId = versionId;\r\n }\r\n _overwriteAlternativeVersionId(newAlternativeVersionId) {\r\n this._alternativeVersionId = newAlternativeVersionId;\r\n }\r\n _overwriteInitialUndoRedoSnapshot(newInitialUndoRedoSnapshot) {\r\n this._initialUndoRedoSnapshot = newInitialUndoRedoSnapshot;\r\n }\r\n getValue(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM() + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n createSnapshot(preserveBOM = false) {\r\n return new TextModelSnapshot(this._buffer.createSnapshot(preserveBOM));\r\n }\r\n getValueLength(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueLengthInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM().length + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n getValueInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueInRange(this.validateRange(rawRange), eol);\r\n }\r\n getValueLengthInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueLengthInRange(this.validateRange(rawRange), eol);\r\n }\r\n getCharacterCountInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getCharacterCountInRange(this.validateRange(rawRange), eol);\r\n }\r\n getLineCount() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLineCount();\r\n }\r\n getLineContent(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineContent(lineNumber);\r\n }\r\n getLineLength(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber);\r\n }\r\n getLinesContent() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLinesContent();\r\n }\r\n getEOL() {\r\n this._assertNotDisposed();\r\n return this._buffer.getEOL();\r\n }\r\n getEndOfLineSequence() {\r\n this._assertNotDisposed();\r\n return (this._buffer.getEOL() === '\\n'\r\n ? 0 /* LF */\r\n : 1 /* CRLF */);\r\n }\r\n getLineMinColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n return 1;\r\n }\r\n getLineMaxColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber) + 1;\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n /**\r\n * Validates `range` is within buffer bounds, but allows it to sit in between surrogate pairs, etc.\r\n * Will try to not allocate if possible.\r\n */\r\n _validateRangeRelaxedNoAllocations(range) {\r\n const linesCount = this._buffer.getLineCount();\r\n const initialStartLineNumber = range.startLineNumber;\r\n const initialStartColumn = range.startColumn;\r\n let startLineNumber = Math.floor((typeof initialStartLineNumber === 'number' && !isNaN(initialStartLineNumber)) ? initialStartLineNumber : 1);\r\n let startColumn = Math.floor((typeof initialStartColumn === 'number' && !isNaN(initialStartColumn)) ? initialStartColumn : 1);\r\n if (startLineNumber < 1) {\r\n startLineNumber = 1;\r\n startColumn = 1;\r\n }\r\n else if (startLineNumber > linesCount) {\r\n startLineNumber = linesCount;\r\n startColumn = this.getLineMaxColumn(startLineNumber);\r\n }\r\n else {\r\n if (startColumn <= 1) {\r\n startColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(startLineNumber);\r\n if (startColumn >= maxColumn) {\r\n startColumn = maxColumn;\r\n }\r\n }\r\n }\r\n const initialEndLineNumber = range.endLineNumber;\r\n const initialEndColumn = range.endColumn;\r\n let endLineNumber = Math.floor((typeof initialEndLineNumber === 'number' && !isNaN(initialEndLineNumber)) ? initialEndLineNumber : 1);\r\n let endColumn = Math.floor((typeof initialEndColumn === 'number' && !isNaN(initialEndColumn)) ? initialEndColumn : 1);\r\n if (endLineNumber < 1) {\r\n endLineNumber = 1;\r\n endColumn = 1;\r\n }\r\n else if (endLineNumber > linesCount) {\r\n endLineNumber = linesCount;\r\n endColumn = this.getLineMaxColumn(endLineNumber);\r\n }\r\n else {\r\n if (endColumn <= 1) {\r\n endColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(endLineNumber);\r\n if (endColumn >= maxColumn) {\r\n endColumn = maxColumn;\r\n }\r\n }\r\n }\r\n if (initialStartLineNumber === startLineNumber\r\n && initialStartColumn === startColumn\r\n && initialEndLineNumber === endLineNumber\r\n && initialEndColumn === endColumn\r\n && range instanceof Range\r\n && !(range instanceof Selection)) {\r\n return range;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n _isValidPosition(lineNumber, column, validationType) {\r\n if (typeof lineNumber !== 'number' || typeof column !== 'number') {\r\n return false;\r\n }\r\n if (isNaN(lineNumber) || isNaN(column)) {\r\n return false;\r\n }\r\n if (lineNumber < 1 || column < 1) {\r\n return false;\r\n }\r\n if ((lineNumber | 0) !== lineNumber || (column | 0) !== column) {\r\n return false;\r\n }\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber > lineCount) {\r\n return false;\r\n }\r\n if (column === 1) {\r\n return true;\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column > maxColumn) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n _validatePosition(_lineNumber, _column, validationType) {\r\n const lineNumber = Math.floor((typeof _lineNumber === 'number' && !isNaN(_lineNumber)) ? _lineNumber : 1);\r\n const column = Math.floor((typeof _column === 'number' && !isNaN(_column)) ? _column : 1);\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber < 1) {\r\n return new Position(1, 1);\r\n }\r\n if (lineNumber > lineCount) {\r\n return new Position(lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n if (column <= 1) {\r\n return new Position(lineNumber, 1);\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column >= maxColumn) {\r\n return new Position(lineNumber, maxColumn);\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // If the position would end up in the middle of a high-low surrogate pair,\r\n // we move it to before the pair\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return new Position(lineNumber, column - 1);\r\n }\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n validatePosition(position) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if (position instanceof Position) {\r\n if (this._isValidPosition(position.lineNumber, position.column, validationType)) {\r\n return position;\r\n }\r\n }\r\n return this._validatePosition(position.lineNumber, position.column, validationType);\r\n }\r\n _isValidRange(range, validationType) {\r\n const startLineNumber = range.startLineNumber;\r\n const startColumn = range.startColumn;\r\n const endLineNumber = range.endLineNumber;\r\n const endColumn = range.endColumn;\r\n if (!this._isValidPosition(startLineNumber, startColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (!this._isValidPosition(endLineNumber, endColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n validateRange(_range) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if ((_range instanceof Range) && !(_range instanceof Selection)) {\r\n if (this._isValidRange(_range, validationType)) {\r\n return _range;\r\n }\r\n }\r\n const start = this._validatePosition(_range.startLineNumber, _range.startColumn, 0 /* Relaxed */);\r\n const end = this._validatePosition(_range.endLineNumber, _range.endColumn, 0 /* Relaxed */);\r\n const startLineNumber = start.lineNumber;\r\n const startColumn = start.column;\r\n const endLineNumber = end.lineNumber;\r\n const endColumn = end.column;\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n if (startLineNumber === endLineNumber && startColumn === endColumn) {\r\n // do not expand a collapsed range, simply move it to a valid location\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn - 1);\r\n }\r\n if (startInsideSurrogatePair && endInsideSurrogatePair) {\r\n // expand range at both ends\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn + 1);\r\n }\r\n if (startInsideSurrogatePair) {\r\n // only expand range at the start\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn);\r\n }\r\n // only expand range at the end\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn + 1);\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n modifyPosition(rawPosition, offset) {\r\n this._assertNotDisposed();\r\n let candidate = this.getOffsetAt(rawPosition) + offset;\r\n return this.getPositionAt(Math.min(this._buffer.getLength(), Math.max(0, candidate)));\r\n }\r\n getFullModelRange() {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n return new Range(1, 1, lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._buffer.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n findMatches(searchString, rawSearchScope, isRegex, matchCase, wordSeparators, captureMatches, limitResultCount = LIMIT_FIND_COUNT) {\r\n this._assertNotDisposed();\r\n let searchRanges = null;\r\n if (rawSearchScope !== null) {\r\n if (!Array.isArray(rawSearchScope)) {\r\n rawSearchScope = [rawSearchScope];\r\n }\r\n if (rawSearchScope.every((searchScope) => Range.isIRange(searchScope))) {\r\n searchRanges = rawSearchScope.map((searchScope) => this.validateRange(searchScope));\r\n }\r\n }\r\n if (searchRanges === null) {\r\n searchRanges = [this.getFullModelRange()];\r\n }\r\n searchRanges = searchRanges.sort((d1, d2) => d1.startLineNumber - d2.startLineNumber || d1.startColumn - d2.startColumn);\r\n const uniqueSearchRanges = [];\r\n uniqueSearchRanges.push(searchRanges.reduce((prev, curr) => {\r\n if (Range.areIntersecting(prev, curr)) {\r\n return prev.plusRange(curr);\r\n }\r\n uniqueSearchRanges.push(prev);\r\n return curr;\r\n }));\r\n let matchMapper;\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n // not regex, not multi line\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n matchMapper = (searchRange) => this.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n else {\r\n matchMapper = (searchRange) => TextModelSearch.findMatches(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchRange, captureMatches, limitResultCount);\r\n }\r\n return uniqueSearchRanges.map(matchMapper).reduce((arr, matches) => arr.concat(matches), []);\r\n }\r\n findNextMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const lineCount = this.getLineCount();\r\n let searchRange = new Range(searchStart.lineNumber, searchStart.column, lineCount, this.getLineMaxColumn(lineCount));\r\n let ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n searchRange = new Range(1, 1, searchStart.lineNumber, this.getLineMaxColumn(searchStart.lineNumber));\r\n ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n return null;\r\n }\r\n return TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n findPreviousMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n return TextModelSearch.findPreviousMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n //#endregion\r\n //#region Editing\r\n pushStackElement() {\r\n this._commandManager.pushStackElement();\r\n }\r\n popStackElement() {\r\n this._commandManager.popStackElement();\r\n }\r\n pushEOL(eol) {\r\n const currentEOL = (this.getEOL() === '\\n' ? 0 /* LF */ : 1 /* CRLF */);\r\n if (currentEOL === eol) {\r\n return;\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n this._commandManager.pushEOL(eol);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _validateEditOperation(rawOperation) {\r\n if (rawOperation instanceof model.ValidAnnotatedEditOperation) {\r\n return rawOperation;\r\n }\r\n return new model.ValidAnnotatedEditOperation(rawOperation.identifier || null, this.validateRange(rawOperation.range), rawOperation.text, rawOperation.forceMoveMarkers || false, rawOperation.isAutoWhitespaceEdit || false, rawOperation._isTracked || false);\r\n }\r\n _validateEditOperations(rawOperations) {\r\n const result = [];\r\n for (let i = 0, len = rawOperations.length; i < len; i++) {\r\n result[i] = this._validateEditOperation(rawOperations[i]);\r\n }\r\n return result;\r\n }\r\n pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n return this._pushEditOperations(beforeCursorState, this._validateEditOperations(editOperations), cursorStateComputer);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n if (this._options.trimAutoWhitespace && this._trimAutoWhitespaceLines) {\r\n // Go through each saved line number and insert a trim whitespace edit\r\n // if it is safe to do so (no conflicts with other edits).\r\n let incomingEdits = editOperations.map((op) => {\r\n return {\r\n range: this.validateRange(op.range),\r\n text: op.text\r\n };\r\n });\r\n // Sometimes, auto-formatters change ranges automatically which can cause undesired auto whitespace trimming near the cursor\r\n // We'll use the following heuristic: if the edits occur near the cursor, then it's ok to trim auto whitespace\r\n let editsAreNearCursors = true;\r\n if (beforeCursorState) {\r\n for (let i = 0, len = beforeCursorState.length; i < len; i++) {\r\n let sel = beforeCursorState[i];\r\n let foundEditNearSel = false;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let selIsAbove = editRange.startLineNumber > sel.endLineNumber;\r\n let selIsBelow = sel.startLineNumber > editRange.endLineNumber;\r\n if (!selIsAbove && !selIsBelow) {\r\n foundEditNearSel = true;\r\n break;\r\n }\r\n }\r\n if (!foundEditNearSel) {\r\n editsAreNearCursors = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (editsAreNearCursors) {\r\n for (let i = 0, len = this._trimAutoWhitespaceLines.length; i < len; i++) {\r\n let trimLineNumber = this._trimAutoWhitespaceLines[i];\r\n let maxLineColumn = this.getLineMaxColumn(trimLineNumber);\r\n let allowTrimLine = true;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let editText = incomingEdits[j].text;\r\n if (trimLineNumber < editRange.startLineNumber || trimLineNumber > editRange.endLineNumber) {\r\n // `trimLine` is completely outside this edit\r\n continue;\r\n }\r\n // At this point:\r\n // editRange.startLineNumber <= trimLine <= editRange.endLineNumber\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === maxLineColumn\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(0) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) after `trimLine`\r\n continue;\r\n }\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === 1\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(editText.length - 1) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) before `trimLine`\r\n continue;\r\n }\r\n // Looks like we can't trim this line as it would interfere with an incoming edit\r\n allowTrimLine = false;\r\n break;\r\n }\r\n if (allowTrimLine) {\r\n const trimRange = new Range(trimLineNumber, 1, trimLineNumber, maxLineColumn);\r\n editOperations.push(new model.ValidAnnotatedEditOperation(null, trimRange, null, false, false, false));\r\n }\r\n }\r\n }\r\n this._trimAutoWhitespaceLines = null;\r\n }\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n return this._commandManager.pushEditOperation(beforeCursorState, editOperations, cursorStateComputer);\r\n }\r\n _applyUndo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.newPosition);\r\n const rangeEnd = this.getPositionAt(change.newEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.oldText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, true, false, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyRedo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.oldPosition);\r\n const rangeEnd = this.getPositionAt(change.oldEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.newText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, false, true, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyUndoRedoEdits(edits, eol, isUndoing, isRedoing, resultingAlternativeVersionId, resultingSelection) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n this._isUndoing = isUndoing;\r\n this._isRedoing = isRedoing;\r\n this.applyEdits(edits, false);\r\n this.setEOL(eol);\r\n this._overwriteAlternativeVersionId(resultingAlternativeVersionId);\r\n }\r\n finally {\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._eventEmitter.endDeferredEmit(resultingSelection);\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n applyEdits(rawOperations, computeUndoEdits = false) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n const operations = this._validateEditOperations(rawOperations);\r\n return this._doApplyEdits(operations, computeUndoEdits);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _doApplyEdits(rawOperations, computeUndoEdits) {\r\n const oldLineCount = this._buffer.getLineCount();\r\n const result = this._buffer.applyEdits(rawOperations, this._options.trimAutoWhitespace, computeUndoEdits);\r\n const newLineCount = this._buffer.getLineCount();\r\n const contentChanges = result.changes;\r\n this._trimAutoWhitespaceLines = result.trimAutoWhitespaceLineNumbers;\r\n if (contentChanges.length !== 0) {\r\n // We do a first pass to update tokens and decorations\r\n // because we want to read decorations in the second pass\r\n // where we will emit content change events\r\n // and we want to read the final decorations\r\n for (let i = 0, len = contentChanges.length; i < len; i++) {\r\n const change = contentChanges[i];\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(change.text);\r\n this._tokens.acceptEdit(change.range, eolCount, firstLineLength);\r\n this._tokens2.acceptEdit(change.range, eolCount, firstLineLength, lastLineLength, change.text.length > 0 ? change.text.charCodeAt(0) : 0 /* Null */);\r\n this._decorationsTree.acceptReplace(change.rangeOffset, change.rangeLength, change.text.length, change.forceMoveMarkers);\r\n }\r\n let rawContentChanges = [];\r\n this._increaseVersionId();\r\n let lineCount = oldLineCount;\r\n for (let i = 0, len = contentChanges.length; i < len; i++) {\r\n const change = contentChanges[i];\r\n const [eolCount] = countEOL(change.text);\r\n this._onDidChangeDecorations.fire();\r\n const startLineNumber = change.range.startLineNumber;\r\n const endLineNumber = change.range.endLineNumber;\r\n const deletingLinesCnt = endLineNumber - startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n const changeLineCountDelta = (insertingLinesCnt - deletingLinesCnt);\r\n const currentEditStartLineNumber = newLineCount - lineCount - changeLineCountDelta + startLineNumber;\r\n const firstEditLineNumber = currentEditStartLineNumber;\r\n const lastInsertedLineNumber = currentEditStartLineNumber + insertingLinesCnt;\r\n const decorationsWithInjectedTextInEditedRange = this._decorationsTree.getInjectedTextInInterval(this, this.getOffsetAt(new Position(firstEditLineNumber, 1)), this.getOffsetAt(new Position(lastInsertedLineNumber, this.getLineMaxColumn(lastInsertedLineNumber))), 0);\r\n const injectedTextInEditedRange = LineInjectedText.fromDecorations(decorationsWithInjectedTextInEditedRange);\r\n const injectedTextInEditedRangeQueue = new ArrayQueue(injectedTextInEditedRange);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n const editLineNumber = startLineNumber + j;\r\n const currentEditLineNumber = currentEditStartLineNumber + j;\r\n injectedTextInEditedRangeQueue.takeFromEndWhile(r => r.lineNumber > currentEditLineNumber);\r\n const decorationsInCurrentLine = injectedTextInEditedRangeQueue.takeFromEndWhile(r => r.lineNumber === currentEditLineNumber);\r\n rawContentChanges.push(new ModelRawLineChanged(editLineNumber, this.getLineContent(currentEditLineNumber), decorationsInCurrentLine));\r\n }\r\n if (editingLinesCnt < deletingLinesCnt) {\r\n // Must delete some lines\r\n const spliceStartLineNumber = startLineNumber + editingLinesCnt;\r\n rawContentChanges.push(new ModelRawLinesDeleted(spliceStartLineNumber + 1, endLineNumber));\r\n }\r\n if (editingLinesCnt < insertingLinesCnt) {\r\n const injectedTextInEditedRangeQueue = new ArrayQueue(injectedTextInEditedRange);\r\n // Must insert some lines\r\n const spliceLineNumber = startLineNumber + editingLinesCnt;\r\n const cnt = insertingLinesCnt - editingLinesCnt;\r\n const fromLineNumber = newLineCount - lineCount - cnt + spliceLineNumber + 1;\r\n let injectedTexts = [];\r\n let newLines = [];\r\n for (let i = 0; i < cnt; i++) {\r\n let lineNumber = fromLineNumber + i;\r\n newLines[i] = this.getLineContent(lineNumber);\r\n injectedTextInEditedRangeQueue.takeWhile(r => r.lineNumber < lineNumber);\r\n injectedTexts[i] = injectedTextInEditedRangeQueue.takeWhile(r => r.lineNumber === lineNumber);\r\n }\r\n rawContentChanges.push(new ModelRawLinesInserted(spliceLineNumber + 1, startLineNumber + insertingLinesCnt, newLines, injectedTexts));\r\n }\r\n lineCount += changeLineCountDelta;\r\n }\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent(rawContentChanges, this.getVersionId(), this._isUndoing, this._isRedoing), {\r\n changes: contentChanges,\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: this._isUndoing,\r\n isRedoing: this._isRedoing,\r\n isFlush: false\r\n });\r\n }\r\n return (result.reverseEdits === null ? undefined : result.reverseEdits);\r\n }\r\n undo() {\r\n return this._undoRedoService.undo(this.uri);\r\n }\r\n canUndo() {\r\n return this._undoRedoService.canUndo(this.uri);\r\n }\r\n redo() {\r\n return this._undoRedoService.redo(this.uri);\r\n }\r\n canRedo() {\r\n return this._undoRedoService.canRedo(this.uri);\r\n }\r\n //#endregion\r\n //#region Decorations\r\n handleBeforeFireDecorationsChangedEvent(affectedInjectedTextLines) {\r\n // This is called before the decoration changed event is fired.\r\n if (affectedInjectedTextLines === null || affectedInjectedTextLines.size === 0) {\r\n return;\r\n }\r\n const affectedLines = [...affectedInjectedTextLines];\r\n const lineChangeEvents = affectedLines.map(lineNumber => new ModelRawLineChanged(lineNumber, this.getLineContent(lineNumber), this._getInjectedTextInLine(lineNumber)));\r\n this._onDidChangeContentOrInjectedText.fire(new ModelInjectedTextChangedEvent(lineChangeEvents));\r\n }\r\n changeDecorations(callback, ownerId = 0) {\r\n this._assertNotDisposed();\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._changeDecorations(ownerId, callback);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _changeDecorations(ownerId, callback) {\r\n let changeAccessor = {\r\n addDecoration: (range, options) => {\r\n return this._deltaDecorationsImpl(ownerId, [], [{ range: range, options: options }])[0];\r\n },\r\n changeDecoration: (id, newRange) => {\r\n this._changeDecorationImpl(id, newRange);\r\n },\r\n changeDecorationOptions: (id, options) => {\r\n this._changeDecorationOptionsImpl(id, _normalizeOptions(options));\r\n },\r\n removeDecoration: (id) => {\r\n this._deltaDecorationsImpl(ownerId, [id], []);\r\n },\r\n deltaDecorations: (oldDecorations, newDecorations) => {\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n };\r\n let result = null;\r\n try {\r\n result = callback(changeAccessor);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n // Invalidate change accessor\r\n changeAccessor.addDecoration = invalidFunc;\r\n changeAccessor.changeDecoration = invalidFunc;\r\n changeAccessor.changeDecorationOptions = invalidFunc;\r\n changeAccessor.removeDecoration = invalidFunc;\r\n changeAccessor.deltaDecorations = invalidFunc;\r\n return result;\r\n }\r\n deltaDecorations(oldDecorations, newDecorations, ownerId = 0) {\r\n this._assertNotDisposed();\r\n if (!oldDecorations) {\r\n oldDecorations = [];\r\n }\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _getTrackedRange(id) {\r\n return this.getDecorationRange(id);\r\n }\r\n _setTrackedRange(id, newRange, newStickiness) {\r\n const node = (id ? this._decorations[id] : null);\r\n if (!node) {\r\n if (!newRange) {\r\n // node doesn't exist, the request is to delete => nothing to do\r\n return null;\r\n }\r\n // node doesn't exist, the request is to set => add the tracked range\r\n return this._deltaDecorationsImpl(0, [], [{ range: newRange, options: TRACKED_RANGE_OPTIONS[newStickiness] }])[0];\r\n }\r\n if (!newRange) {\r\n // node exists, the request is to delete => delete node\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n return null;\r\n }\r\n // node exists, the request is to set => change the tracked range and its options\r\n const range = this._validateRangeRelaxedNoAllocations(newRange);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n node.setOptions(TRACKED_RANGE_OPTIONS[newStickiness]);\r\n this._decorationsTree.insert(node);\r\n return node.id;\r\n }\r\n removeAllDecorationsWithOwnerId(ownerId) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n const nodes = this._decorationsTree.collectNodesFromOwner(ownerId);\r\n for (let i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n getDecorationOptions(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n return node.options;\r\n }\r\n getDecorationRange(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n return this._decorationsTree.getNodeRange(this, node);\r\n }\r\n getLineDecorations(lineNumber, ownerId = 0, filterOutValidation = false) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n return [];\r\n }\r\n return this.getLinesDecorations(lineNumber, lineNumber, ownerId, filterOutValidation);\r\n }\r\n getLinesDecorations(_startLineNumber, _endLineNumber, ownerId = 0, filterOutValidation = false) {\r\n let lineCount = this.getLineCount();\r\n let startLineNumber = Math.min(lineCount, Math.max(1, _startLineNumber));\r\n let endLineNumber = Math.min(lineCount, Math.max(1, _endLineNumber));\r\n let endColumn = this.getLineMaxColumn(endLineNumber);\r\n return this._getDecorationsInRange(new Range(startLineNumber, 1, endLineNumber, endColumn), ownerId, filterOutValidation);\r\n }\r\n getDecorationsInRange(range, ownerId = 0, filterOutValidation = false) {\r\n let validatedRange = this.validateRange(range);\r\n return this._getDecorationsInRange(validatedRange, ownerId, filterOutValidation);\r\n }\r\n getOverviewRulerDecorations(ownerId = 0, filterOutValidation = false) {\r\n return this._decorationsTree.getAll(this, ownerId, filterOutValidation, true);\r\n }\r\n getInjectedTextDecorations(ownerId = 0) {\r\n return this._decorationsTree.getAllInjectedText(this, ownerId);\r\n }\r\n _getInjectedTextInLine(lineNumber) {\r\n const startOffset = this._buffer.getOffsetAt(lineNumber, 1);\r\n const endOffset = startOffset + this._buffer.getLineLength(lineNumber);\r\n const result = this._decorationsTree.getInjectedTextInInterval(this, startOffset, endOffset, 0);\r\n return LineInjectedText.fromDecorations(result).filter(t => t.lineNumber === lineNumber);\r\n }\r\n getAllDecorations(ownerId = 0, filterOutValidation = false) {\r\n return this._decorationsTree.getAll(this, ownerId, filterOutValidation, false);\r\n }\r\n _getDecorationsInRange(filterRange, filterOwnerId, filterOutValidation) {\r\n const startOffset = this._buffer.getOffsetAt(filterRange.startLineNumber, filterRange.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(filterRange.endLineNumber, filterRange.endColumn);\r\n return this._decorationsTree.getAllInInterval(this, startOffset, endOffset, filterOwnerId, filterOutValidation);\r\n }\r\n getRangeAt(start, end) {\r\n return this._buffer.getRangeAt(start, end - start);\r\n }\r\n _changeDecorationImpl(decorationId, _range) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n if (node.options.after) {\r\n const oldRange = this.getDecorationRange(decorationId);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(oldRange.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n const oldRange = this.getDecorationRange(decorationId);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(oldRange.startLineNumber);\r\n }\r\n const range = this._validateRangeRelaxedNoAllocations(_range);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n this._decorationsTree.insert(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n if (node.options.after) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.startLineNumber);\r\n }\r\n }\r\n _changeDecorationOptionsImpl(decorationId, options) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n const nodeWasInOverviewRuler = (node.options.overviewRuler && node.options.overviewRuler.color ? true : false);\r\n const nodeIsInOverviewRuler = (options.overviewRuler && options.overviewRuler.color ? true : false);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n if (node.options.after || options.after) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.endLineNumber);\r\n }\r\n if (node.options.before || options.before) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.startLineNumber);\r\n }\r\n if (nodeWasInOverviewRuler !== nodeIsInOverviewRuler) {\r\n // Delete + Insert due to an overview ruler status change\r\n this._decorationsTree.delete(node);\r\n node.setOptions(options);\r\n this._decorationsTree.insert(node);\r\n }\r\n else {\r\n node.setOptions(options);\r\n }\r\n }\r\n _deltaDecorationsImpl(ownerId, oldDecorationsIds, newDecorations) {\r\n const versionId = this.getVersionId();\r\n const oldDecorationsLen = oldDecorationsIds.length;\r\n let oldDecorationIndex = 0;\r\n const newDecorationsLen = newDecorations.length;\r\n let newDecorationIndex = 0;\r\n let result = new Array(newDecorationsLen);\r\n while (oldDecorationIndex < oldDecorationsLen || newDecorationIndex < newDecorationsLen) {\r\n let node = null;\r\n if (oldDecorationIndex < oldDecorationsLen) {\r\n // (1) get ourselves an old node\r\n do {\r\n node = this._decorations[oldDecorationsIds[oldDecorationIndex++]];\r\n } while (!node && oldDecorationIndex < oldDecorationsLen);\r\n // (2) remove the node from the tree (if it exists)\r\n if (node) {\r\n if (node.options.after) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n const nodeRange = this._decorationsTree.getNodeRange(this, node);\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(nodeRange.startLineNumber);\r\n }\r\n this._decorationsTree.delete(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n }\r\n }\r\n if (newDecorationIndex < newDecorationsLen) {\r\n // (3) create a new node if necessary\r\n if (!node) {\r\n const internalDecorationId = (++this._lastDecorationId);\r\n const decorationId = `${this._instanceId};${internalDecorationId}`;\r\n node = new IntervalNode(decorationId, 0, 0);\r\n this._decorations[decorationId] = node;\r\n }\r\n // (4) initialize node\r\n const newDecoration = newDecorations[newDecorationIndex];\r\n const range = this._validateRangeRelaxedNoAllocations(newDecoration.range);\r\n const options = _normalizeOptions(newDecoration.options);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n node.ownerId = ownerId;\r\n node.reset(versionId, startOffset, endOffset, range);\r\n node.setOptions(options);\r\n if (node.options.after) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.endLineNumber);\r\n }\r\n if (node.options.before) {\r\n this._onDidChangeDecorations.recordLineAffectedByInjectedText(range.startLineNumber);\r\n }\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n this._decorationsTree.insert(node);\r\n result[newDecorationIndex] = node.id;\r\n newDecorationIndex++;\r\n }\r\n else {\r\n if (node) {\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n setTokens(tokens) {\r\n if (tokens.length === 0) {\r\n return;\r\n }\r\n let ranges = [];\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const element = tokens[i];\r\n let minChangedLineNumber = 0;\r\n let maxChangedLineNumber = 0;\r\n let hasChange = false;\r\n for (let j = 0, lenJ = element.tokens.length; j < lenJ; j++) {\r\n const lineNumber = element.startLineNumber + j;\r\n if (hasChange) {\r\n this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], false);\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n else {\r\n const lineHasChange = this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], true);\r\n if (lineHasChange) {\r\n hasChange = true;\r\n minChangedLineNumber = lineNumber;\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n }\r\n }\r\n if (hasChange) {\r\n ranges.push({ fromLineNumber: minChangedLineNumber, toLineNumber: maxChangedLineNumber });\r\n }\r\n }\r\n if (ranges.length > 0) {\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: false,\r\n ranges: ranges\r\n });\r\n }\r\n }\r\n setSemanticTokens(tokens, isComplete) {\r\n this._tokens2.set(tokens, isComplete);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: tokens !== null,\r\n ranges: [{ fromLineNumber: 1, toLineNumber: this.getLineCount() }]\r\n });\r\n }\r\n hasCompleteSemanticTokens() {\r\n return this._tokens2.isComplete();\r\n }\r\n hasSomeSemanticTokens() {\r\n return !this._tokens2.isEmpty();\r\n }\r\n setPartialSemanticTokens(range, tokens) {\r\n if (this.hasCompleteSemanticTokens()) {\r\n return;\r\n }\r\n const changedRange = this._tokens2.setPartial(range, tokens);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: true,\r\n ranges: [{ fromLineNumber: changedRange.startLineNumber, toLineNumber: changedRange.endLineNumber }]\r\n });\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n startLineNumber = Math.max(1, startLineNumber);\r\n endLineNumber = Math.min(this._buffer.getLineCount(), endLineNumber);\r\n this._tokenization.tokenizeViewport(startLineNumber, endLineNumber);\r\n }\r\n clearTokens() {\r\n this._tokens.flush();\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: true,\r\n semanticTokensApplied: false,\r\n ranges: [{\r\n fromLineNumber: 1,\r\n toLineNumber: this._buffer.getLineCount()\r\n }]\r\n });\r\n }\r\n _emitModelTokensChangedEvent(e) {\r\n if (!this._isDisposing) {\r\n this._onDidChangeTokens.fire(e);\r\n }\r\n }\r\n resetTokenization() {\r\n this._tokenization.reset();\r\n }\r\n forceTokenization(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n this._tokenization.forceTokenization(lineNumber);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n return this._tokenization.isCheapToTokenize(lineNumber);\r\n }\r\n tokenizeIfCheap(lineNumber) {\r\n if (this.isCheapToTokenize(lineNumber)) {\r\n this.forceTokenization(lineNumber);\r\n }\r\n }\r\n getLineTokens(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._getLineTokens(lineNumber);\r\n }\r\n _getLineTokens(lineNumber) {\r\n const lineText = this.getLineContent(lineNumber);\r\n const syntacticTokens = this._tokens.getTokens(this._languageIdentifier.id, lineNumber - 1, lineText);\r\n return this._tokens2.addSemanticTokens(lineNumber, syntacticTokens);\r\n }\r\n getLanguageIdentifier() {\r\n return this._languageIdentifier;\r\n }\r\n getModeId() {\r\n return this._languageIdentifier.language;\r\n }\r\n setMode(languageIdentifier) {\r\n if (this._languageIdentifier.id === languageIdentifier.id) {\r\n // There's nothing to do\r\n return;\r\n }\r\n let e = {\r\n oldLanguage: this._languageIdentifier.language,\r\n newLanguage: languageIdentifier.language\r\n };\r\n this._languageIdentifier = languageIdentifier;\r\n this._onDidChangeLanguage.fire(e);\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n getLanguageIdAtPosition(lineNumber, column) {\r\n const position = this.validatePosition(new Position(lineNumber, column));\r\n const lineTokens = this.getLineTokens(position.lineNumber);\r\n return lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n }\r\n // Having tokens allows implementing additional helper methods\r\n getWordAtPosition(_position) {\r\n this._assertNotDisposed();\r\n const position = this.validatePosition(_position);\r\n const lineContent = this.getLineContent(position.lineNumber);\r\n const lineTokens = this._getLineTokens(position.lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n // (1). First try checking right biased word\r\n const [rbStartOffset, rbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex);\r\n const rightBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex)), lineContent.substring(rbStartOffset, rbEndOffset), rbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (rightBiasedWord && rightBiasedWord.startColumn <= _position.column && _position.column <= rightBiasedWord.endColumn) {\r\n return rightBiasedWord;\r\n }\r\n // (2). Else, if we were at a language boundary, check the left biased word\r\n if (tokenIndex > 0 && rbStartOffset === position.column - 1) {\r\n // edge case, where `position` sits between two tokens belonging to two different languages\r\n const [lbStartOffset, lbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex - 1);\r\n const leftBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex - 1)), lineContent.substring(lbStartOffset, lbEndOffset), lbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (leftBiasedWord && leftBiasedWord.startColumn <= _position.column && _position.column <= leftBiasedWord.endColumn) {\r\n return leftBiasedWord;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLanguageBoundaries(lineTokens, tokenIndex) {\r\n const languageId = lineTokens.getLanguageId(tokenIndex);\r\n // go left until a different language is hit\r\n let startOffset = 0;\r\n for (let i = tokenIndex; i >= 0 && lineTokens.getLanguageId(i) === languageId; i--) {\r\n startOffset = lineTokens.getStartOffset(i);\r\n }\r\n // go right until a different language is hit\r\n let endOffset = lineTokens.getLineContent().length;\r\n for (let i = tokenIndex, tokenCount = lineTokens.getCount(); i < tokenCount && lineTokens.getLanguageId(i) === languageId; i++) {\r\n endOffset = lineTokens.getEndOffset(i);\r\n }\r\n return [startOffset, endOffset];\r\n }\r\n getWordUntilPosition(position) {\r\n const wordAtPosition = this.getWordAtPosition(position);\r\n if (!wordAtPosition) {\r\n return {\r\n word: '',\r\n startColumn: position.column,\r\n endColumn: position.column\r\n };\r\n }\r\n return {\r\n word: wordAtPosition.word.substr(0, position.column - wordAtPosition.startColumn),\r\n startColumn: wordAtPosition.startColumn,\r\n endColumn: position.column\r\n };\r\n }\r\n findMatchingBracketUp(_bracket, _position) {\r\n let bracket = _bracket.toLowerCase();\r\n let position = this.validatePosition(_position);\r\n let lineTokens = this._getLineTokens(position.lineNumber);\r\n let languageId = lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n let bracketsSupport = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n if (!bracketsSupport) {\r\n return null;\r\n }\r\n let data = bracketsSupport.textIsBracket[bracket];\r\n if (!data) {\r\n return null;\r\n }\r\n return stripBracketSearchCanceled(this._findMatchingBracketUp(data, position, null));\r\n }\r\n matchBracket(position) {\r\n return this._matchBracket(this.validatePosition(position));\r\n }\r\n _establishBracketSearchOffsets(position, lineTokens, modeBrackets, tokenIndex) {\r\n const tokenCount = lineTokens.getCount();\r\n const currentLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n // limit search to not go before `maxBracketLength`\r\n let searchStartOffset = Math.max(0, position.column - 1 - modeBrackets.maxBracketLength);\r\n for (let i = tokenIndex - 1; i >= 0; i--) {\r\n const tokenEndOffset = lineTokens.getEndOffset(i);\r\n if (tokenEndOffset <= searchStartOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i)) || lineTokens.getLanguageId(i) !== currentLanguageId) {\r\n searchStartOffset = tokenEndOffset;\r\n break;\r\n }\r\n }\r\n // limit search to not go after `maxBracketLength`\r\n let searchEndOffset = Math.min(lineTokens.getLineContent().length, position.column - 1 + modeBrackets.maxBracketLength);\r\n for (let i = tokenIndex + 1; i < tokenCount; i++) {\r\n const tokenStartOffset = lineTokens.getStartOffset(i);\r\n if (tokenStartOffset >= searchEndOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i)) || lineTokens.getLanguageId(i) !== currentLanguageId) {\r\n searchEndOffset = tokenStartOffset;\r\n break;\r\n }\r\n }\r\n return { searchStartOffset, searchEndOffset };\r\n }\r\n _matchBracket(position) {\r\n const lineNumber = position.lineNumber;\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n if (tokenIndex < 0) {\r\n return null;\r\n }\r\n const currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(tokenIndex));\r\n // check that the token is not to be ignored\r\n if (currentModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex))) {\r\n let { searchStartOffset, searchEndOffset } = this._establishBracketSearchOffsets(position, lineTokens, currentModeBrackets, tokenIndex);\r\n // it might be the case that [currentTokenStart -> currentTokenEnd] contains multiple brackets\r\n // `bestResult` will contain the most right-side result\r\n let bestResult = null;\r\n while (true) {\r\n const foundBracket = BracketsUtils.findNextBracketInRange(currentModeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!foundBracket) {\r\n // there are no more brackets in this text\r\n break;\r\n }\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, currentModeBrackets.textIsBracket[foundBracketText], currentModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n bestResult = r;\r\n }\r\n }\r\n searchStartOffset = foundBracket.endColumn - 1;\r\n }\r\n if (bestResult) {\r\n return bestResult;\r\n }\r\n }\r\n // If position is in between two tokens, try also looking in the previous token\r\n if (tokenIndex > 0 && lineTokens.getStartOffset(tokenIndex) === position.column - 1) {\r\n const prevTokenIndex = tokenIndex - 1;\r\n const prevModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(prevTokenIndex));\r\n // check that previous token is not to be ignored\r\n if (prevModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(prevTokenIndex))) {\r\n let { searchStartOffset, searchEndOffset } = this._establishBracketSearchOffsets(position, lineTokens, prevModeBrackets, prevTokenIndex);\r\n const foundBracket = BracketsUtils.findPrevBracketInRange(prevModeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket && foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, prevModeBrackets.textIsBracket[foundBracketText], prevModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return r;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _matchFoundBracket(foundBracket, data, isOpen, continueSearchPredicate) {\r\n if (!data) {\r\n return null;\r\n }\r\n const matched = (isOpen\r\n ? this._findMatchingBracketDown(data, foundBracket.getEndPosition(), continueSearchPredicate)\r\n : this._findMatchingBracketUp(data, foundBracket.getStartPosition(), continueSearchPredicate));\r\n if (!matched) {\r\n return null;\r\n }\r\n if (matched instanceof BracketSearchCanceled) {\r\n return matched;\r\n }\r\n return [foundBracket, matched];\r\n }\r\n _findMatchingBracketUp(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketUp: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const reversedBracketRegex = bracket.reversedRegex;\r\n let count = -1;\r\n let totalCallCount = 0;\r\n const searchPrevMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchEndOffset = r.startColumn - 1;\r\n }\r\n return null;\r\n };\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _findMatchingBracketDown(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketDown: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const bracketRegex = bracket.forwardRegex;\r\n let count = 1;\r\n let totalCallCount = 0;\r\n const searchNextMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(bracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n const lineCount = this.getLineCount();\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findPrevBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findNextBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findEnclosingBrackets(_position, maxDuration) {\r\n let continueSearchPredicate;\r\n if (typeof maxDuration === 'undefined') {\r\n continueSearchPredicate = null;\r\n }\r\n else {\r\n const startTime = Date.now();\r\n continueSearchPredicate = () => {\r\n return (Date.now() - startTime <= maxDuration);\r\n };\r\n }\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n const savedCounts = new Map();\r\n let counts = [];\r\n const resetCounts = (languageId, modeBrackets) => {\r\n if (!savedCounts.has(languageId)) {\r\n let tmp = [];\r\n for (let i = 0, len = modeBrackets ? modeBrackets.brackets.length : 0; i < len; i++) {\r\n tmp[i] = 0;\r\n }\r\n savedCounts.set(languageId, tmp);\r\n }\r\n counts = savedCounts.get(languageId);\r\n };\r\n let totalCallCount = 0;\r\n const searchInRange = (modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const bracket = modeBrackets.textIsBracket[hitText];\r\n if (bracket) {\r\n if (bracket.isOpen(hitText)) {\r\n counts[bracket.index]++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n counts[bracket.index]--;\r\n }\r\n if (counts[bracket.index] === -1) {\r\n return this._matchFoundBracket(r, bracket, false, continueSearchPredicate);\r\n }\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _toFoundBracket(modeBrackets, r) {\r\n if (!r) {\r\n return null;\r\n }\r\n let text = this.getValueInRange(r);\r\n text = text.toLowerCase();\r\n let data = modeBrackets.textIsBracket[text];\r\n if (!data) {\r\n return null;\r\n }\r\n return {\r\n range: r,\r\n open: data.open,\r\n close: data.close,\r\n isOpen: modeBrackets.textIsOpenBracket[text]\r\n };\r\n }\r\n /**\r\n * Returns:\r\n * - -1 => the line consists of whitespace\r\n * - otherwise => the indent level is returned value\r\n */\r\n static computeIndentLevel(line, tabSize) {\r\n let indent = 0;\r\n let i = 0;\r\n let len = line.length;\r\n while (i < len) {\r\n let chCode = line.charCodeAt(i);\r\n if (chCode === 32 /* Space */) {\r\n indent++;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n indent = indent - indent % tabSize + tabSize;\r\n }\r\n else {\r\n break;\r\n }\r\n i++;\r\n }\r\n if (i === len) {\r\n return -1; // line only consists of whitespace\r\n }\r\n return indent;\r\n }\r\n _computeIndentLevel(lineIndex) {\r\n return TextModel.computeIndentLevel(this._buffer.getLineContent(lineIndex + 1), this._options.tabSize);\r\n }\r\n getActiveIndentGuide(lineNumber, minLineNumber, maxLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (lineNumber < 1 || lineNumber > lineCount) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let up_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_aboveContentLineIndent = -1;\r\n let up_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_belowContentLineIndent = -1;\r\n const up_resolveIndents = (lineNumber) => {\r\n if (up_aboveContentLineIndex !== -1 && (up_aboveContentLineIndex === -2 || up_aboveContentLineIndex > lineNumber - 1)) {\r\n up_aboveContentLineIndex = -1;\r\n up_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_aboveContentLineIndex = lineIndex;\r\n up_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (up_belowContentLineIndex === -2) {\r\n up_belowContentLineIndex = -1;\r\n up_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_belowContentLineIndex = lineIndex;\r\n up_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let down_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_aboveContentLineIndent = -1;\r\n let down_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_belowContentLineIndent = -1;\r\n const down_resolveIndents = (lineNumber) => {\r\n if (down_aboveContentLineIndex === -2) {\r\n down_aboveContentLineIndex = -1;\r\n down_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_aboveContentLineIndex = lineIndex;\r\n down_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (down_belowContentLineIndex !== -1 && (down_belowContentLineIndex === -2 || down_belowContentLineIndex < lineNumber - 1)) {\r\n down_belowContentLineIndex = -1;\r\n down_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_belowContentLineIndex = lineIndex;\r\n down_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let startLineNumber = 0;\r\n let goUp = true;\r\n let endLineNumber = 0;\r\n let goDown = true;\r\n let indent = 0;\r\n let initialIndent = 0;\r\n for (let distance = 0; goUp || goDown; distance++) {\r\n const upLineNumber = lineNumber - distance;\r\n const downLineNumber = lineNumber + distance;\r\n if (distance > 1 && (upLineNumber < 1 || upLineNumber < minLineNumber)) {\r\n goUp = false;\r\n }\r\n if (distance > 1 && (downLineNumber > lineCount || downLineNumber > maxLineNumber)) {\r\n goDown = false;\r\n }\r\n if (distance > 50000) {\r\n // stop processing\r\n goUp = false;\r\n goDown = false;\r\n }\r\n let upLineIndentLevel = -1;\r\n if (goUp) {\r\n // compute indent level going up\r\n const currentIndent = this._computeIndentLevel(upLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n up_belowContentLineIndex = upLineNumber - 1;\r\n up_belowContentLineIndent = currentIndent;\r\n upLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n up_resolveIndents(upLineNumber);\r\n upLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, up_aboveContentLineIndent, up_belowContentLineIndent);\r\n }\r\n }\r\n let downLineIndentLevel = -1;\r\n if (goDown) {\r\n // compute indent level going down\r\n const currentIndent = this._computeIndentLevel(downLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n down_aboveContentLineIndex = downLineNumber - 1;\r\n down_aboveContentLineIndent = currentIndent;\r\n downLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n down_resolveIndents(downLineNumber);\r\n downLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, down_aboveContentLineIndent, down_belowContentLineIndent);\r\n }\r\n }\r\n if (distance === 0) {\r\n initialIndent = upLineIndentLevel;\r\n continue;\r\n }\r\n if (distance === 1) {\r\n if (downLineNumber <= lineCount && downLineIndentLevel >= 0 && initialIndent + 1 === downLineIndentLevel) {\r\n // This is the beginning of a scope, we have special handling here, since we want the\r\n // child scope indent to be active, not the parent scope\r\n goUp = false;\r\n startLineNumber = downLineNumber;\r\n endLineNumber = downLineNumber;\r\n indent = downLineIndentLevel;\r\n continue;\r\n }\r\n if (upLineNumber >= 1 && upLineIndentLevel >= 0 && upLineIndentLevel - 1 === initialIndent) {\r\n // This is the end of a scope, just like above\r\n goDown = false;\r\n startLineNumber = upLineNumber;\r\n endLineNumber = upLineNumber;\r\n indent = upLineIndentLevel;\r\n continue;\r\n }\r\n startLineNumber = lineNumber;\r\n endLineNumber = lineNumber;\r\n indent = initialIndent;\r\n if (indent === 0) {\r\n // No need to continue\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n }\r\n if (goUp) {\r\n if (upLineIndentLevel >= indent) {\r\n startLineNumber = upLineNumber;\r\n }\r\n else {\r\n goUp = false;\r\n }\r\n }\r\n if (goDown) {\r\n if (downLineIndentLevel >= indent) {\r\n endLineNumber = downLineNumber;\r\n }\r\n else {\r\n goDown = false;\r\n }\r\n }\r\n }\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n getLinesIndentGuides(startLineNumber, endLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (startLineNumber < 1 || startLineNumber > lineCount) {\r\n throw new Error('Illegal value for startLineNumber');\r\n }\r\n if (endLineNumber < 1 || endLineNumber > lineCount) {\r\n throw new Error('Illegal value for endLineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let result = new Array(endLineNumber - startLineNumber + 1);\r\n let aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let aboveContentLineIndent = -1;\r\n let belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let belowContentLineIndent = -1;\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let resultIndex = lineNumber - startLineNumber;\r\n const currentIndent = this._computeIndentLevel(lineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n aboveContentLineIndex = lineNumber - 1;\r\n aboveContentLineIndent = currentIndent;\r\n result[resultIndex] = Math.ceil(currentIndent / this._options.indentSize);\r\n continue;\r\n }\r\n if (aboveContentLineIndex === -2) {\r\n aboveContentLineIndex = -1;\r\n aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n aboveContentLineIndex = lineIndex;\r\n aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (belowContentLineIndex !== -1 && (belowContentLineIndex === -2 || belowContentLineIndex < lineNumber - 1)) {\r\n belowContentLineIndex = -1;\r\n belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n belowContentLineIndex = lineIndex;\r\n belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n result[resultIndex] = this._getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent);\r\n }\r\n return result;\r\n }\r\n _getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent) {\r\n if (aboveContentLineIndent === -1 || belowContentLineIndent === -1) {\r\n // At the top or bottom of the file\r\n return 0;\r\n }\r\n else if (aboveContentLineIndent < belowContentLineIndent) {\r\n // we are inside the region above\r\n return (1 + Math.floor(aboveContentLineIndent / this._options.indentSize));\r\n }\r\n else if (aboveContentLineIndent === belowContentLineIndent) {\r\n // we are in between two regions\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n if (offSide) {\r\n // same level as region below\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n // we are inside the region that ends below\r\n return (1 + Math.floor(belowContentLineIndent / this._options.indentSize));\r\n }\r\n }\r\n }\r\n //#endregion\r\n normalizePosition(position, affinity) {\r\n return position;\r\n }\r\n /**\r\n * Gets the column at which indentation stops at a given line.\r\n * @internal\r\n */\r\n getLineIndentColumn(lineNumber) {\r\n // Columns start with 1.\r\n return indentOfLine(this.getLineContent(lineNumber)) + 1;\r\n }\r\n}\r\nTextModel.MODEL_SYNC_LIMIT = 50 * 1024 * 1024; // 50 MB\r\nTextModel.LARGE_FILE_SIZE_THRESHOLD = 20 * 1024 * 1024; // 20 MB;\r\nTextModel.LARGE_FILE_LINE_COUNT_THRESHOLD = 300 * 1000; // 300K lines\r\nTextModel.DEFAULT_CREATION_OPTIONS = {\r\n isForSimpleWidget: false,\r\n tabSize: EDITOR_MODEL_DEFAULTS.tabSize,\r\n indentSize: EDITOR_MODEL_DEFAULTS.indentSize,\r\n insertSpaces: EDITOR_MODEL_DEFAULTS.insertSpaces,\r\n detectIndentation: false,\r\n defaultEOL: 1 /* LF */,\r\n trimAutoWhitespace: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,\r\n largeFileOptimizations: EDITOR_MODEL_DEFAULTS.largeFileOptimizations,\r\n};\r\nfunction indentOfLine(line) {\r\n let indent = 0;\r\n for (const c of line) {\r\n if (c === ' ' || c === '\\t') {\r\n indent++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return indent;\r\n}\r\n//#region Decorations\r\nfunction isNodeInOverviewRuler(node) {\r\n return (node.options.overviewRuler && node.options.overviewRuler.color ? true : false);\r\n}\r\nfunction isNodeInjectedText(node) {\r\n return !!node.options.after || !!node.options.before;\r\n}\r\nclass DecorationsTrees {\r\n constructor() {\r\n this._decorationsTree0 = new IntervalTree();\r\n this._decorationsTree1 = new IntervalTree();\r\n this._injectedTextDecorationsTree = new IntervalTree();\r\n }\r\n ensureAllNodesHaveRanges(host) {\r\n this.getAll(host, 0, false, false);\r\n }\r\n _ensureNodesHaveRanges(host, nodes) {\r\n for (const node of nodes) {\r\n if (node.range === null) {\r\n node.range = host.getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n }\r\n return nodes;\r\n }\r\n getAllInInterval(host, start, end, filterOwnerId, filterOutValidation) {\r\n const versionId = host.getVersionId();\r\n const result = this._intervalSearch(start, end, filterOwnerId, filterOutValidation, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n _intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n const r0 = this._decorationsTree0.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r2 = this._injectedTextDecorationsTree.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n getInjectedTextInInterval(host, start, end, filterOwnerId) {\r\n const versionId = host.getVersionId();\r\n const result = this._injectedTextDecorationsTree.intervalSearch(start, end, filterOwnerId, false, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n getAllInjectedText(host, filterOwnerId) {\r\n const versionId = host.getVersionId();\r\n const result = this._injectedTextDecorationsTree.search(filterOwnerId, false, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n getAll(host, filterOwnerId, filterOutValidation, overviewRulerOnly) {\r\n const versionId = host.getVersionId();\r\n const result = this._search(filterOwnerId, filterOutValidation, overviewRulerOnly, versionId);\r\n return this._ensureNodesHaveRanges(host, result);\r\n }\r\n _search(filterOwnerId, filterOutValidation, overviewRulerOnly, cachedVersionId) {\r\n if (overviewRulerOnly) {\r\n return this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n else {\r\n const r0 = this._decorationsTree0.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r2 = this._injectedTextDecorationsTree.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n }\r\n collectNodesFromOwner(ownerId) {\r\n const r0 = this._decorationsTree0.collectNodesFromOwner(ownerId);\r\n const r1 = this._decorationsTree1.collectNodesFromOwner(ownerId);\r\n const r2 = this._injectedTextDecorationsTree.collectNodesFromOwner(ownerId);\r\n return r0.concat(r1).concat(r2);\r\n }\r\n collectNodesPostOrder() {\r\n const r0 = this._decorationsTree0.collectNodesPostOrder();\r\n const r1 = this._decorationsTree1.collectNodesPostOrder();\r\n const r2 = this._injectedTextDecorationsTree.collectNodesPostOrder();\r\n return r0.concat(r1).concat(r2);\r\n }\r\n insert(node) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.insert(node);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.insert(node);\r\n }\r\n else {\r\n this._decorationsTree0.insert(node);\r\n }\r\n }\r\n delete(node) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.delete(node);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.delete(node);\r\n }\r\n else {\r\n this._decorationsTree0.delete(node);\r\n }\r\n }\r\n getNodeRange(host, node) {\r\n const versionId = host.getVersionId();\r\n if (node.cachedVersionId !== versionId) {\r\n this._resolveNode(node, versionId);\r\n }\r\n if (node.range === null) {\r\n node.range = host.getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n return node.range;\r\n }\r\n _resolveNode(node, cachedVersionId) {\r\n if (isNodeInjectedText(node)) {\r\n this._injectedTextDecorationsTree.resolveNode(node, cachedVersionId);\r\n }\r\n else if (isNodeInOverviewRuler(node)) {\r\n this._decorationsTree1.resolveNode(node, cachedVersionId);\r\n }\r\n else {\r\n this._decorationsTree0.resolveNode(node, cachedVersionId);\r\n }\r\n }\r\n acceptReplace(offset, length, textLength, forceMoveMarkers) {\r\n this._decorationsTree0.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n this._decorationsTree1.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n this._injectedTextDecorationsTree.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n }\r\n}\r\nfunction cleanClassName(className) {\r\n return className.replace(/[^a-z0-9\\-_]/gi, ' ');\r\n}\r\nclass DecorationOptions {\r\n constructor(options) {\r\n this.color = options.color || '';\r\n this.darkColor = options.darkColor || '';\r\n }\r\n}\r\nexport class ModelDecorationOverviewRulerOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this._resolvedColor = null;\r\n this.position = (typeof options.position === 'number' ? options.position : model.OverviewRulerLane.Center);\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = null;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return color;\r\n }\r\n let c = color ? theme.getColor(color.id) : null;\r\n if (!c) {\r\n return '';\r\n }\r\n return c.toString();\r\n }\r\n}\r\nexport class ModelDecorationMinimapOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this.position = options.position;\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = undefined;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return Color.fromHex(color);\r\n }\r\n return theme.getColor(color.id);\r\n }\r\n}\r\nexport class ModelDecorationInjectedTextOptions {\r\n constructor(options) {\r\n this.content = options.content || '';\r\n this.inlineClassName = options.inlineClassName || null;\r\n this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false;\r\n }\r\n static from(options) {\r\n if (options instanceof ModelDecorationInjectedTextOptions) {\r\n return options;\r\n }\r\n return new ModelDecorationInjectedTextOptions(options);\r\n }\r\n}\r\nexport class ModelDecorationOptions {\r\n constructor(options) {\r\n this.description = options.description;\r\n this.stickiness = options.stickiness || 0 /* AlwaysGrowsWhenTypingAtEdges */;\r\n this.zIndex = options.zIndex || 0;\r\n this.className = options.className ? cleanClassName(options.className) : null;\r\n this.hoverMessage = options.hoverMessage || null;\r\n this.glyphMarginHoverMessage = options.glyphMarginHoverMessage || null;\r\n this.isWholeLine = options.isWholeLine || false;\r\n this.showIfCollapsed = options.showIfCollapsed || false;\r\n this.collapseOnReplaceEdit = options.collapseOnReplaceEdit || false;\r\n this.overviewRuler = options.overviewRuler ? new ModelDecorationOverviewRulerOptions(options.overviewRuler) : null;\r\n this.minimap = options.minimap ? new ModelDecorationMinimapOptions(options.minimap) : null;\r\n this.glyphMarginClassName = options.glyphMarginClassName ? cleanClassName(options.glyphMarginClassName) : null;\r\n this.linesDecorationsClassName = options.linesDecorationsClassName ? cleanClassName(options.linesDecorationsClassName) : null;\r\n this.firstLineDecorationClassName = options.firstLineDecorationClassName ? cleanClassName(options.firstLineDecorationClassName) : null;\r\n this.marginClassName = options.marginClassName ? cleanClassName(options.marginClassName) : null;\r\n this.inlineClassName = options.inlineClassName ? cleanClassName(options.inlineClassName) : null;\r\n this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false;\r\n this.beforeContentClassName = options.beforeContentClassName ? cleanClassName(options.beforeContentClassName) : null;\r\n this.afterContentClassName = options.afterContentClassName ? cleanClassName(options.afterContentClassName) : null;\r\n this.after = options.after ? ModelDecorationInjectedTextOptions.from(options.after) : null;\r\n this.before = options.before ? ModelDecorationInjectedTextOptions.from(options.before) : null;\r\n }\r\n static register(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n static createDynamic(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n}\r\nModelDecorationOptions.EMPTY = ModelDecorationOptions.register({ description: 'empty' });\r\n/**\r\n * The order carefully matches the values of the enum.\r\n */\r\nconst TRACKED_RANGE_OPTIONS = [\r\n ModelDecorationOptions.register({ description: 'tracked-range-always-grows-when-typing-at-edges', stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-never-grows-when-typing-at-edges', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-grows-only-when-typing-before', stickiness: 2 /* GrowsOnlyWhenTypingBefore */ }),\r\n ModelDecorationOptions.register({ description: 'tracked-range-grows-only-when-typing-after', stickiness: 3 /* GrowsOnlyWhenTypingAfter */ }),\r\n];\r\nfunction _normalizeOptions(options) {\r\n if (options instanceof ModelDecorationOptions) {\r\n return options;\r\n }\r\n return ModelDecorationOptions.createDynamic(options);\r\n}\r\nexport class DidChangeDecorationsEmitter extends Disposable {\r\n constructor(handleBeforeFire) {\r\n super();\r\n this.handleBeforeFire = handleBeforeFire;\r\n this._actual = this._register(new Emitter());\r\n this.event = this._actual.event;\r\n this._affectedInjectedTextLines = null;\r\n this._deferredCnt = 0;\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit() {\r\n var _a;\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._shouldFire) {\r\n this.handleBeforeFire(this._affectedInjectedTextLines);\r\n const event = {\r\n affectsMinimap: this._affectsMinimap,\r\n affectsOverviewRuler: this._affectsOverviewRuler\r\n };\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n this._actual.fire(event);\r\n }\r\n (_a = this._affectedInjectedTextLines) === null || _a === void 0 ? void 0 : _a.clear();\r\n this._affectedInjectedTextLines = null;\r\n }\r\n }\r\n recordLineAffectedByInjectedText(lineNumber) {\r\n if (!this._affectedInjectedTextLines) {\r\n this._affectedInjectedTextLines = new Set();\r\n }\r\n this._affectedInjectedTextLines.add(lineNumber);\r\n }\r\n checkAffectedAndFire(options) {\r\n if (!this._affectsMinimap) {\r\n this._affectsMinimap = options.minimap && options.minimap.position ? true : false;\r\n }\r\n if (!this._affectsOverviewRuler) {\r\n this._affectsOverviewRuler = options.overviewRuler && options.overviewRuler.color ? true : false;\r\n }\r\n this._shouldFire = true;\r\n }\r\n fire() {\r\n this._affectsMinimap = true;\r\n this._affectsOverviewRuler = true;\r\n this._shouldFire = true;\r\n }\r\n}\r\n//#endregion\r\nexport class DidChangeContentEmitter extends Disposable {\r\n constructor() {\r\n super();\r\n /**\r\n * Both `fastEvent` and `slowEvent` work the same way and contain the same events, but first we invoke `fastEvent` and then `slowEvent`.\r\n */\r\n this._fastEmitter = this._register(new Emitter());\r\n this.fastEvent = this._fastEmitter.event;\r\n this._slowEmitter = this._register(new Emitter());\r\n this.slowEvent = this._slowEmitter.event;\r\n this._deferredCnt = 0;\r\n this._deferredEvent = null;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit(resultingSelection = null) {\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._deferredEvent !== null) {\r\n this._deferredEvent.rawContentChangedEvent.resultingSelection = resultingSelection;\r\n const e = this._deferredEvent;\r\n this._deferredEvent = null;\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n }\r\n }\r\n fire(e) {\r\n if (this._deferredCnt > 0) {\r\n if (this._deferredEvent) {\r\n this._deferredEvent = this._deferredEvent.merge(e);\r\n }\r\n else {\r\n this._deferredEvent = e;\r\n }\r\n return;\r\n }\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * An event describing that a model has been reset to a new value.\r\n * @internal\r\n */\r\nexport class ModelRawFlush {\r\n constructor() {\r\n this.changeType = 1 /* Flush */;\r\n }\r\n}\r\n/**\r\n * Represents text injected on a line\r\n * @internal\r\n */\r\nexport class LineInjectedText {\r\n constructor(ownerId, lineNumber, column, options, order) {\r\n this.ownerId = ownerId;\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n this.options = options;\r\n this.order = order;\r\n }\r\n static applyInjectedText(lineText, injectedTexts) {\r\n if (!injectedTexts || injectedTexts.length === 0) {\r\n return lineText;\r\n }\r\n let result = '';\r\n let lastOriginalOffset = 0;\r\n for (const injectedText of injectedTexts) {\r\n result += lineText.substring(lastOriginalOffset, injectedText.column - 1);\r\n lastOriginalOffset = injectedText.column - 1;\r\n result += injectedText.options.content;\r\n }\r\n result += lineText.substring(lastOriginalOffset);\r\n return result;\r\n }\r\n static fromDecorations(decorations) {\r\n const result = [];\r\n for (const decoration of decorations) {\r\n if (decoration.options.before && decoration.options.before.content.length > 0) {\r\n result.push(new LineInjectedText(decoration.ownerId, decoration.range.startLineNumber, decoration.range.startColumn, decoration.options.before, 0));\r\n }\r\n if (decoration.options.after && decoration.options.after.content.length > 0) {\r\n result.push(new LineInjectedText(decoration.ownerId, decoration.range.endLineNumber, decoration.range.endColumn, decoration.options.after, 1));\r\n }\r\n }\r\n result.sort((a, b) => {\r\n if (a.lineNumber === b.lineNumber) {\r\n if (a.column === b.column) {\r\n return a.order - b.order;\r\n }\r\n return a.column - b.column;\r\n }\r\n return a.lineNumber - b.lineNumber;\r\n });\r\n return result;\r\n }\r\n}\r\n/**\r\n * An event describing that a line has changed in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLineChanged {\r\n constructor(lineNumber, detail, injectedText) {\r\n this.changeType = 2 /* LineChanged */;\r\n this.lineNumber = lineNumber;\r\n this.detail = detail;\r\n this.injectedText = injectedText;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been deleted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesDeleted {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.changeType = 3 /* LinesDeleted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been inserted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesInserted {\r\n constructor(fromLineNumber, toLineNumber, detail, injectedTexts) {\r\n this.changeType = 4 /* LinesInserted */;\r\n this.injectedTexts = injectedTexts;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n this.detail = detail;\r\n }\r\n}\r\n/**\r\n * An event describing that a model has had its EOL changed.\r\n * @internal\r\n */\r\nexport class ModelRawEOLChanged {\r\n constructor() {\r\n this.changeType = 5 /* EOLChanged */;\r\n }\r\n}\r\n/**\r\n * An event describing a change in the text of a model.\r\n * @internal\r\n */\r\nexport class ModelRawContentChangedEvent {\r\n constructor(changes, versionId, isUndoing, isRedoing) {\r\n this.changes = changes;\r\n this.versionId = versionId;\r\n this.isUndoing = isUndoing;\r\n this.isRedoing = isRedoing;\r\n this.resultingSelection = null;\r\n }\r\n containsEvent(type) {\r\n for (let i = 0, len = this.changes.length; i < len; i++) {\r\n const change = this.changes[i];\r\n if (change.changeType === type) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static merge(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n return new ModelRawContentChangedEvent(changes, versionId, isUndoing, isRedoing);\r\n }\r\n}\r\n/**\r\n * An event describing a change in injected text.\r\n * @internal\r\n */\r\nexport class ModelInjectedTextChangedEvent {\r\n constructor(changes) {\r\n this.changes = changes;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class InternalModelContentChangeEvent {\r\n constructor(rawContentChangedEvent, contentChangedEvent) {\r\n this.rawContentChangedEvent = rawContentChangedEvent;\r\n this.contentChangedEvent = contentChangedEvent;\r\n }\r\n merge(other) {\r\n const rawContentChangedEvent = ModelRawContentChangedEvent.merge(this.rawContentChangedEvent, other.rawContentChangedEvent);\r\n const contentChangedEvent = InternalModelContentChangeEvent._mergeChangeEvents(this.contentChangedEvent, other.contentChangedEvent);\r\n return new InternalModelContentChangeEvent(rawContentChangedEvent, contentChangedEvent);\r\n }\r\n static _mergeChangeEvents(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const eol = b.eol;\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n const isFlush = (a.isFlush || b.isFlush);\r\n return {\r\n changes: changes,\r\n eol: eol,\r\n versionId: versionId,\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { getMapForWordSeparators } from '../controller/wordCharacterClassifier.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { FindMatch } from '../model.js';\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport class SearchParams {\r\n constructor(searchString, isRegex, matchCase, wordSeparators) {\r\n this.searchString = searchString;\r\n this.isRegex = isRegex;\r\n this.matchCase = matchCase;\r\n this.wordSeparators = wordSeparators;\r\n }\r\n parseSearchRequest() {\r\n if (this.searchString === '') {\r\n return null;\r\n }\r\n // Try to create a RegExp out of the params\r\n let multiline;\r\n if (this.isRegex) {\r\n multiline = isMultilineRegexSource(this.searchString);\r\n }\r\n else {\r\n multiline = (this.searchString.indexOf('\\n') >= 0);\r\n }\r\n let regex = null;\r\n try {\r\n regex = strings.createRegExp(this.searchString, this.isRegex, {\r\n matchCase: this.matchCase,\r\n wholeWord: false,\r\n multiline: multiline,\r\n global: true,\r\n unicode: true\r\n });\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n if (!regex) {\r\n return null;\r\n }\r\n let canUseSimpleSearch = (!this.isRegex && !multiline);\r\n if (canUseSimpleSearch && this.searchString.toLowerCase() !== this.searchString.toUpperCase()) {\r\n // casing might make a difference\r\n canUseSimpleSearch = this.matchCase;\r\n }\r\n return new SearchData(regex, this.wordSeparators ? getMapForWordSeparators(this.wordSeparators) : null, canUseSimpleSearch ? this.searchString : null);\r\n }\r\n}\r\nexport function isMultilineRegexSource(searchString) {\r\n if (!searchString || searchString.length === 0) {\r\n return false;\r\n }\r\n for (let i = 0, len = searchString.length; i < len; i++) {\r\n const chCode = searchString.charCodeAt(i);\r\n if (chCode === 92 /* Backslash */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a \\\r\n break;\r\n }\r\n const nextChCode = searchString.charCodeAt(i);\r\n if (nextChCode === 110 /* n */ || nextChCode === 114 /* r */ || nextChCode === 87 /* W */ || nextChCode === 119 /* w */) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nexport class SearchData {\r\n constructor(regex, wordSeparators, simpleSearch) {\r\n this.regex = regex;\r\n this.wordSeparators = wordSeparators;\r\n this.simpleSearch = simpleSearch;\r\n }\r\n}\r\nexport function createFindMatch(range, rawMatches, captureMatches) {\r\n if (!captureMatches) {\r\n return new FindMatch(range, null);\r\n }\r\n let matches = [];\r\n for (let i = 0, len = rawMatches.length; i < len; i++) {\r\n matches[i] = rawMatches[i];\r\n }\r\n return new FindMatch(range, matches);\r\n}\r\nclass LineFeedCounter {\r\n constructor(text) {\r\n let lineFeedsOffsets = [];\r\n let lineFeedsOffsetsLen = 0;\r\n for (let i = 0, textLen = text.length; i < textLen; i++) {\r\n if (text.charCodeAt(i) === 10 /* LineFeed */) {\r\n lineFeedsOffsets[lineFeedsOffsetsLen++] = i;\r\n }\r\n }\r\n this._lineFeedsOffsets = lineFeedsOffsets;\r\n }\r\n findLineFeedCountBeforeOffset(offset) {\r\n const lineFeedsOffsets = this._lineFeedsOffsets;\r\n let min = 0;\r\n let max = lineFeedsOffsets.length - 1;\r\n if (max === -1) {\r\n // no line feeds\r\n return 0;\r\n }\r\n if (offset <= lineFeedsOffsets[0]) {\r\n // before first line feed\r\n return 0;\r\n }\r\n while (min < max) {\r\n const mid = min + ((max - min) / 2 >> 0);\r\n if (lineFeedsOffsets[mid] >= offset) {\r\n max = mid - 1;\r\n }\r\n else {\r\n if (lineFeedsOffsets[mid + 1] >= offset) {\r\n // bingo!\r\n min = mid;\r\n max = mid;\r\n }\r\n else {\r\n min = mid + 1;\r\n }\r\n }\r\n }\r\n return min + 1;\r\n }\r\n}\r\nexport class TextModelSearch {\r\n static findMatches(model, searchParams, searchRange, captureMatches, limitResultCount) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n if (searchData.regex.multiline) {\r\n return this._doFindMatchesMultiline(model, searchRange, new Searcher(searchData.wordSeparators, searchData.regex), captureMatches, limitResultCount);\r\n }\r\n return this._doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Multiline search always executes on the lines concatenated with \\n.\r\n * We must therefore compensate for the count of \\n in case the model is CRLF\r\n */\r\n static _getMultilineMatchRange(model, deltaOffset, text, lfCounter, matchIndex, match0) {\r\n let startOffset;\r\n let lineFeedCountBeforeMatch = 0;\r\n if (lfCounter) {\r\n lineFeedCountBeforeMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex);\r\n startOffset = deltaOffset + matchIndex + lineFeedCountBeforeMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n startOffset = deltaOffset + matchIndex;\r\n }\r\n let endOffset;\r\n if (lfCounter) {\r\n let lineFeedCountBeforeEndOfMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex + match0.length);\r\n let lineFeedCountInMatch = lineFeedCountBeforeEndOfMatch - lineFeedCountBeforeMatch;\r\n endOffset = startOffset + match0.length + lineFeedCountInMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n endOffset = startOffset + match0.length;\r\n }\r\n const startPosition = model.getPositionAt(startOffset);\r\n const endPosition = model.getPositionAt(endOffset);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n static _doFindMatchesMultiline(model, searchRange, searcher, captureMatches, limitResultCount) {\r\n const deltaOffset = model.getOffsetAt(searchRange.getStartPosition());\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(searchRange, 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n const result = [];\r\n let counter = 0;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n result[counter++] = createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n if (counter >= limitResultCount) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n }\r\n static _doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount) {\r\n const result = [];\r\n let resultLen = 0;\r\n // Early case for a search range that starts & stops on the same line number\r\n if (searchRange.startLineNumber === searchRange.endLineNumber) {\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n // Collect results from first line\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n // Collect results from middle lines\r\n for (let lineNumber = searchRange.startLineNumber + 1; lineNumber < searchRange.endLineNumber && resultLen < limitResultCount; lineNumber++) {\r\n resultLen = this._findMatchesInLine(searchData, model.getLineContent(lineNumber), lineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n // Collect results from last line\r\n if (resultLen < limitResultCount) {\r\n const text = model.getLineContent(searchRange.endLineNumber).substring(0, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.endLineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n return result;\r\n }\r\n static _findMatchesInLine(searchData, text, lineNumber, deltaOffset, resultLen, result, captureMatches, limitResultCount) {\r\n const wordSeparators = searchData.wordSeparators;\r\n if (!captureMatches && searchData.simpleSearch) {\r\n const searchString = searchData.simpleSearch;\r\n const searchStringLen = searchString.length;\r\n const textLength = text.length;\r\n let lastMatchIndex = -searchStringLen;\r\n while ((lastMatchIndex = text.indexOf(searchString, lastMatchIndex + searchStringLen)) !== -1) {\r\n if (!wordSeparators || isValidMatch(wordSeparators, text, textLength, lastMatchIndex, searchStringLen)) {\r\n result[resultLen++] = new FindMatch(new Range(lineNumber, lastMatchIndex + 1 + deltaOffset, lineNumber, lastMatchIndex + 1 + searchStringLen + deltaOffset), null);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n }\r\n return resultLen;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n let m;\r\n // Reset regex to search from the beginning\r\n searcher.reset(0);\r\n do {\r\n m = searcher.next(text);\r\n if (m) {\r\n result[resultLen++] = createFindMatch(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset), m, captureMatches);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n static findNextMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindNextMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindNextMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const searchTextStart = new Position(searchStart.lineNumber, 1);\r\n const deltaOffset = model.getOffsetAt(searchTextStart);\r\n const lineCount = model.getLineCount();\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(new Range(searchTextStart.lineNumber, searchTextStart.column, lineCount, model.getLineMaxColumn(lineCount)), 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n searcher.reset(searchStart.column - 1);\r\n let m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n }\r\n if (searchStart.lineNumber !== 1 || searchStart.column !== 1) {\r\n // Try again from the top\r\n return this._doFindNextMatchMultiline(model, new Position(1, 1), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber);\r\n const r = this._findFirstMatchInLine(searcher, text, startLineNumber, searchStart.column, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (startLineNumber + i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findFirstMatchInLine(searcher, text, lineIndex + 1, 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findFirstMatchInLine(searcher, text, lineNumber, fromColumn, captureMatches) {\r\n // Set regex to search from column\r\n searcher.reset(fromColumn - 1);\r\n const m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return null;\r\n }\r\n static findPreviousMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const matches = this._doFindMatchesMultiline(model, new Range(1, 1, searchStart.lineNumber, searchStart.column), searcher, captureMatches, 10 * LIMIT_FIND_COUNT);\r\n if (matches.length > 0) {\r\n return matches[matches.length - 1];\r\n }\r\n const lineCount = model.getLineCount();\r\n if (searchStart.lineNumber !== lineCount || searchStart.column !== model.getLineMaxColumn(lineCount)) {\r\n // Try again with all content\r\n return this._doFindPreviousMatchMultiline(model, new Position(lineCount, model.getLineMaxColumn(lineCount)), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber).substring(0, searchStart.column - 1);\r\n const r = this._findLastMatchInLine(searcher, text, startLineNumber, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (lineCount + startLineNumber - i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findLastMatchInLine(searcher, text, lineIndex + 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLastMatchInLine(searcher, text, lineNumber, captureMatches) {\r\n let bestResult = null;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n bestResult = createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return bestResult;\r\n }\r\n}\r\nfunction leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex === 0) {\r\n // Match starts at start of string\r\n return true;\r\n }\r\n const charBefore = text.charCodeAt(matchStartIndex - 1);\r\n if (wordSeparators.get(charBefore) !== 0 /* Regular */) {\r\n // The character before the match is a word separator\r\n return true;\r\n }\r\n if (charBefore === 13 /* CarriageReturn */ || charBefore === 10 /* LineFeed */) {\r\n // The character before the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const firstCharInMatch = text.charCodeAt(matchStartIndex);\r\n if (wordSeparators.get(firstCharInMatch) !== 0 /* Regular */) {\r\n // The first character inside the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex + matchLength === textLength) {\r\n // Match ends at end of string\r\n return true;\r\n }\r\n const charAfter = text.charCodeAt(matchStartIndex + matchLength);\r\n if (wordSeparators.get(charAfter) !== 0 /* Regular */) {\r\n // The character after the match is a word separator\r\n return true;\r\n }\r\n if (charAfter === 13 /* CarriageReturn */ || charAfter === 10 /* LineFeed */) {\r\n // The character after the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1);\r\n if (wordSeparators.get(lastCharInMatch) !== 0 /* Regular */) {\r\n // The last character in the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n return (leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength)\r\n && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength));\r\n}\r\nexport class Searcher {\r\n constructor(wordSeparators, searchRegex) {\r\n this._wordSeparators = wordSeparators;\r\n this._searchRegex = searchRegex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n reset(lastIndex) {\r\n this._searchRegex.lastIndex = lastIndex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n next(text) {\r\n const textLength = text.length;\r\n let m;\r\n do {\r\n if (this._prevMatchStartIndex + this._prevMatchLength === textLength) {\r\n // Reached the end of the line\r\n return null;\r\n }\r\n m = this._searchRegex.exec(text);\r\n if (!m) {\r\n return null;\r\n }\r\n const matchStartIndex = m.index;\r\n const matchLength = m[0].length;\r\n if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) {\r\n if (matchLength === 0) {\r\n // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here\r\n // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise\r\n if (strings.getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) {\r\n this._searchRegex.lastIndex += 2;\r\n }\r\n else {\r\n this._searchRegex.lastIndex += 1;\r\n }\r\n continue;\r\n }\r\n // Exit early if the regex matches the same range twice\r\n return null;\r\n }\r\n this._prevMatchStartIndex = matchStartIndex;\r\n this._prevMatchLength = matchLength;\r\n if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) {\r\n return m;\r\n }\r\n } while (m);\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { TokenMetadata } from '../modes.js';\r\nexport function countEOL(text) {\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineStart = 0;\r\n let eol = 0 /* Unknown */;\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n const chr = text.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n if (i + 1 < len && text.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n eol |= 2 /* CRLF */;\r\n i++; // skip \\n\r\n }\r\n else {\r\n // \\r... case\r\n eol |= 3 /* Invalid */;\r\n }\r\n lastLineStart = i + 1;\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n // \\n... case\r\n eol |= 1 /* LF */;\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n lastLineStart = i + 1;\r\n }\r\n }\r\n if (eolCount === 0) {\r\n firstLineLength = text.length;\r\n }\r\n return [eolCount, firstLineLength, text.length - lastLineStart, eol];\r\n}\r\nfunction getDefaultMetadata(topLevelLanguageId) {\r\n return ((topLevelLanguageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n}\r\nconst EMPTY_LINE_TOKENS = (new Uint32Array(0)).buffer;\r\nexport class MultilineTokensBuilder {\r\n constructor() {\r\n this.tokens = [];\r\n }\r\n add(lineNumber, lineTokens) {\r\n if (this.tokens.length > 0) {\r\n const last = this.tokens[this.tokens.length - 1];\r\n const lastLineNumber = last.startLineNumber + last.tokens.length - 1;\r\n if (lastLineNumber + 1 === lineNumber) {\r\n // append\r\n last.tokens.push(lineTokens);\r\n return;\r\n }\r\n }\r\n this.tokens.push(new MultilineTokens(lineNumber, [lineTokens]));\r\n }\r\n}\r\nexport class SparseEncodedTokens {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n this._tokenCount = tokens.length / 4;\r\n }\r\n toString(startLineNumber) {\r\n let pieces = [];\r\n for (let i = 0; i < this._tokenCount; i++) {\r\n pieces.push(`(${this._getDeltaLine(i) + startLineNumber},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);\r\n }\r\n return `[${pieces.join(',')}]`;\r\n }\r\n getMaxDeltaLine() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return -1;\r\n }\r\n return this._getDeltaLine(tokenCount - 1);\r\n }\r\n getRange() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return null;\r\n }\r\n const startChar = this._getStartCharacter(0);\r\n const maxDeltaLine = this._getDeltaLine(tokenCount - 1);\r\n const endChar = this._getEndCharacter(tokenCount - 1);\r\n return new Range(0, startChar + 1, maxDeltaLine, endChar + 1);\r\n }\r\n _getTokenCount() {\r\n return this._tokenCount;\r\n }\r\n _getDeltaLine(tokenIndex) {\r\n return this._tokens[4 * tokenIndex];\r\n }\r\n _getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n _getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n isEmpty() {\r\n return (this._getTokenCount() === 0);\r\n }\r\n getLineTokens(deltaLine) {\r\n let low = 0;\r\n let high = this._getTokenCount() - 1;\r\n while (low < high) {\r\n const mid = low + Math.floor((high - low) / 2);\r\n const midDeltaLine = this._getDeltaLine(mid);\r\n if (midDeltaLine < deltaLine) {\r\n low = mid + 1;\r\n }\r\n else if (midDeltaLine > deltaLine) {\r\n high = mid - 1;\r\n }\r\n else {\r\n let min = mid;\r\n while (min > low && this._getDeltaLine(min - 1) === deltaLine) {\r\n min--;\r\n }\r\n let max = mid;\r\n while (max < high && this._getDeltaLine(max + 1) === deltaLine) {\r\n max++;\r\n }\r\n return new LineTokens2(this._tokens.subarray(4 * min, 4 * max + 4));\r\n }\r\n }\r\n if (this._getDeltaLine(low) === deltaLine) {\r\n return new LineTokens2(this._tokens.subarray(4 * low, 4 * low + 4));\r\n }\r\n return null;\r\n }\r\n clear() {\r\n this._tokenCount = 0;\r\n }\r\n removeTokens(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n let firstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))\r\n && (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n hasDeletedTokens = true;\r\n }\r\n else {\r\n if (newTokenCount === 0) {\r\n firstDeltaLine = tokenDeltaLine;\r\n }\r\n if (hasDeletedTokens) {\r\n // must move the token to the left\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine - firstDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n }\r\n newTokenCount++;\r\n }\r\n }\r\n this._tokenCount = newTokenCount;\r\n return firstDeltaLine;\r\n }\r\n split(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let aTokens = [];\r\n let bTokens = [];\r\n let destTokens = aTokens;\r\n let destOffset = 0;\r\n let destFirstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))) {\r\n if ((tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n // this token is touching the range\r\n continue;\r\n }\r\n else {\r\n // this token is after the range\r\n if (destTokens !== bTokens) {\r\n // this token is the first token after the range\r\n destTokens = bTokens;\r\n destOffset = 0;\r\n destFirstDeltaLine = tokenDeltaLine;\r\n }\r\n }\r\n }\r\n destTokens[destOffset++] = tokenDeltaLine - destFirstDeltaLine;\r\n destTokens[destOffset++] = tokenStartCharacter;\r\n destTokens[destOffset++] = tokenEndCharacter;\r\n destTokens[destOffset++] = tokenMetadata;\r\n }\r\n return [new SparseEncodedTokens(new Uint32Array(aTokens)), new SparseEncodedTokens(new Uint32Array(bTokens)), destFirstDeltaLine];\r\n }\r\n acceptDeleteRange(horizontalShiftForFirstLineTokens, startDeltaLine, startCharacter, endDeltaLine, endCharacter) {\r\n // This is a bit complex, here are the cases I used to think about this:\r\n //\r\n // 1. The token starts before the deletion range\r\n // 1a. The token is completely before the deletion range\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // ---------------\r\n // xxxxxxxx\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // ---------------\r\n // xxxxx\r\n //\r\n // 2. The token starts at the same position with the deletion range\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // -------\r\n // xxxxxxxxxxx\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxx\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // -------------\r\n // xxxxxxx\r\n //\r\n // 3. The token starts inside the deletion range\r\n // 3a. The token is inside the deletion range\r\n // -------\r\n // xxxxxxxxxxxxx\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxxxxx\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // ------------\r\n // xxxxxxxxxxx\r\n //\r\n // 4. The token starts after the deletion range\r\n // -----------\r\n // xxxxxxxx\r\n //\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n const deletedLineCount = (endDeltaLine - startDeltaLine);\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n let tokenDeltaLine = tokens[srcOffset];\r\n let tokenStartCharacter = tokens[srcOffset + 1];\r\n let tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if (tokenDeltaLine < startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter <= startCharacter)) {\r\n // 1a. The token is completely before the deletion range\r\n // => nothing to do\r\n newTokenCount++;\r\n continue;\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter < startCharacter) {\r\n // 1b, 1c, 1d\r\n // => the token survives, but it needs to shrink\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // => the token shrinks its ending to the deletion start\r\n tokenEndCharacter = startCharacter;\r\n }\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter === startCharacter) {\r\n // 2a, 2b, 2c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter < endCharacter)) {\r\n // 3a, 3b, 3c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // => the token moves left and shrinks\r\n if (tokenDeltaLine === startDeltaLine) {\r\n // the deletion started on the same line as the token\r\n // => the token moves left and shrinks\r\n tokenStartCharacter = startCharacter;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n else {\r\n // the deletion started on a line above the token\r\n // => the token moves to the beginning of the line\r\n tokenStartCharacter = 0;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n }\r\n else {\r\n // 3a. The token is inside the deletion range\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine > endDeltaLine) {\r\n // 4. (partial) The token starts after the deletion range, on a line below...\r\n if (deletedLineCount === 0 && !hasDeletedTokens) {\r\n // early stop, there is no need to walk all the tokens and do nothing...\r\n newTokenCount = tokenCount;\r\n break;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n }\r\n else if (tokenDeltaLine === endDeltaLine && tokenStartCharacter >= endCharacter) {\r\n // 4. (continued) The token starts after the deletion range, on the last line where a deletion occurs\r\n if (horizontalShiftForFirstLineTokens && tokenDeltaLine === 0) {\r\n tokenStartCharacter += horizontalShiftForFirstLineTokens;\r\n tokenEndCharacter += horizontalShiftForFirstLineTokens;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n tokenStartCharacter -= (endCharacter - startCharacter);\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n throw new Error(`Not possible!`);\r\n }\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n newTokenCount++;\r\n }\r\n this._tokenCount = newTokenCount;\r\n }\r\n acceptInsertText(deltaLine, character, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n // Here are the cases I used to think about this:\r\n //\r\n // 1. The token is completely before the insertion point\r\n // ----------- |\r\n // 2. The token ends precisely at the insertion point\r\n // -----------|\r\n // 3. The token contains the insertion point\r\n // -----|------\r\n // 4. The token starts precisely at the insertion point\r\n // |-----------\r\n // 5. The token is completely after the insertion point\r\n // | -----------\r\n //\r\n const isInsertingPreciselyOneWordCharacter = (eolCount === 0\r\n && firstLineLength === 1\r\n && ((firstCharCode >= 48 /* Digit0 */ && firstCharCode <= 57 /* Digit9 */)\r\n || (firstCharCode >= 65 /* A */ && firstCharCode <= 90 /* Z */)\r\n || (firstCharCode >= 97 /* a */ && firstCharCode <= 122 /* z */)));\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const offset = 4 * i;\r\n let tokenDeltaLine = tokens[offset];\r\n let tokenStartCharacter = tokens[offset + 1];\r\n let tokenEndCharacter = tokens[offset + 2];\r\n if (tokenDeltaLine < deltaLine || (tokenDeltaLine === deltaLine && tokenEndCharacter < character)) {\r\n // 1. The token is completely before the insertion point\r\n // => nothing to do\r\n continue;\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenEndCharacter === character) {\r\n // 2. The token ends precisely at the insertion point\r\n // => expand the end character only if inserting precisely one character that is a word character\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n tokenEndCharacter += 1;\r\n }\r\n else {\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenStartCharacter < character && character < tokenEndCharacter) {\r\n // 3. The token contains the insertion point\r\n if (eolCount === 0) {\r\n // => just expand the end character\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n // => cut off the token\r\n tokenEndCharacter = character;\r\n }\r\n }\r\n else {\r\n // 4. or 5.\r\n if (tokenDeltaLine === deltaLine && tokenStartCharacter === character) {\r\n // 4. The token starts precisely at the insertion point\r\n // => grow the token (by keeping its start constant) only if inserting precisely one character that is a word character\r\n // => otherwise behave as in case 5.\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n continue;\r\n }\r\n }\r\n // => the token must move and keep its size constant\r\n if (tokenDeltaLine === deltaLine) {\r\n tokenDeltaLine += eolCount;\r\n // this token is on the line where the insertion is taking place\r\n if (eolCount === 0) {\r\n tokenStartCharacter += firstLineLength;\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n const tokenLength = tokenEndCharacter - tokenStartCharacter;\r\n tokenStartCharacter = lastLineLength + (tokenStartCharacter - character);\r\n tokenEndCharacter = tokenStartCharacter + tokenLength;\r\n }\r\n }\r\n else {\r\n tokenDeltaLine += eolCount;\r\n }\r\n }\r\n tokens[offset] = tokenDeltaLine;\r\n tokens[offset + 1] = tokenStartCharacter;\r\n tokens[offset + 2] = tokenEndCharacter;\r\n }\r\n }\r\n}\r\nexport class LineTokens2 {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n }\r\n getCount() {\r\n return this._tokens.length / 4;\r\n }\r\n getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n getMetadata(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 3];\r\n }\r\n}\r\nexport class MultilineTokens2 {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n toString() {\r\n return this.tokens.toString(this.startLineNumber);\r\n }\r\n _updateEndLineNumber() {\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n isEmpty() {\r\n return this.tokens.isEmpty();\r\n }\r\n getLineTokens(lineNumber) {\r\n if (this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber) {\r\n return this.tokens.getLineTokens(lineNumber - this.startLineNumber);\r\n }\r\n return null;\r\n }\r\n getRange() {\r\n const deltaRange = this.tokens.getRange();\r\n if (!deltaRange) {\r\n return deltaRange;\r\n }\r\n return new Range(this.startLineNumber + deltaRange.startLineNumber, deltaRange.startColumn, this.startLineNumber + deltaRange.endLineNumber, deltaRange.endColumn);\r\n }\r\n removeTokens(range) {\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n this.startLineNumber += this.tokens.removeTokens(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n this._updateEndLineNumber();\r\n }\r\n split(range) {\r\n // split tokens to two:\r\n // a) all the tokens before `range`\r\n // b) all the tokens after `range`\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n const [a, b, bDeltaLine] = this.tokens.split(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n return [new MultilineTokens2(this.startLineNumber, a), new MultilineTokens2(this.startLineNumber + bDeltaLine, b)];\r\n }\r\n applyEdit(range, text) {\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n this.acceptEdit(range, eolCount, firstLineLength, lastLineLength, text.length > 0 ? text.charCodeAt(0) : 0 /* Null */);\r\n }\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n this._updateEndLineNumber();\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n const firstLineIndex = range.startLineNumber - this.startLineNumber;\r\n const lastLineIndex = range.endLineNumber - this.startLineNumber;\r\n if (lastLineIndex < 0) {\r\n // this deletion occurs entirely before this block, so we only need to adjust line numbers\r\n const deletedLinesCount = lastLineIndex - firstLineIndex;\r\n this.startLineNumber -= deletedLinesCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (firstLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion occurs entirely after this block, so there is nothing to do\r\n return;\r\n }\r\n if (firstLineIndex < 0 && lastLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion completely encompasses this block\r\n this.startLineNumber = 0;\r\n this.tokens.clear();\r\n return;\r\n }\r\n if (firstLineIndex < 0) {\r\n const deletedBefore = -firstLineIndex;\r\n this.startLineNumber -= deletedBefore;\r\n this.tokens.acceptDeleteRange(range.startColumn - 1, 0, 0, lastLineIndex, range.endColumn - 1);\r\n }\r\n else {\r\n this.tokens.acceptDeleteRange(0, firstLineIndex, range.startColumn - 1, lastLineIndex, range.endColumn - 1);\r\n }\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - this.startLineNumber;\r\n if (lineIndex < 0) {\r\n // this insertion occurs before this block, so we only need to adjust line numbers\r\n this.startLineNumber += eolCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (lineIndex >= tokenMaxDeltaLine + 1) {\r\n // this insertion occurs after this block, so there is nothing to do\r\n return;\r\n }\r\n this.tokens.acceptInsertText(lineIndex, position.column - 1, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n}\r\nexport class MultilineTokens {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n }\r\n}\r\nfunction toUint32Array(arr) {\r\n if (arr instanceof Uint32Array) {\r\n return arr;\r\n }\r\n else {\r\n return new Uint32Array(arr);\r\n }\r\n}\r\nexport class TokensStore2 {\r\n constructor() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n flush() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n isEmpty() {\r\n return (this._pieces.length === 0);\r\n }\r\n set(pieces, isComplete) {\r\n this._pieces = pieces || [];\r\n this._isComplete = isComplete;\r\n }\r\n setPartial(_range, pieces) {\r\n // console.log(`setPartial ${_range} ${pieces.map(p => p.toString()).join(', ')}`);\r\n let range = _range;\r\n if (pieces.length > 0) {\r\n const _firstRange = pieces[0].getRange();\r\n const _lastRange = pieces[pieces.length - 1].getRange();\r\n if (!_firstRange || !_lastRange) {\r\n return _range;\r\n }\r\n range = _range.plusRange(_firstRange).plusRange(_lastRange);\r\n }\r\n let insertPosition = null;\r\n for (let i = 0, len = this._pieces.length; i < len; i++) {\r\n const piece = this._pieces[i];\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // this piece is after the range, so mark the spot before this piece\r\n // as a good insertion position and stop looping\r\n insertPosition = insertPosition || { index: i };\r\n break;\r\n }\r\n // this piece might intersect with the range\r\n piece.removeTokens(range);\r\n if (piece.isEmpty()) {\r\n // remove the piece if it became empty\r\n this._pieces.splice(i, 1);\r\n i--;\r\n len--;\r\n continue;\r\n }\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // after removal, this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // after removal, this piece is after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n // after removal, this piece contains the range\r\n const [a, b] = piece.split(range);\r\n if (a.isEmpty()) {\r\n // this piece is actually after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n if (b.isEmpty()) {\r\n // this piece is actually before the range\r\n continue;\r\n }\r\n this._pieces.splice(i, 1, a, b);\r\n i++;\r\n len++;\r\n insertPosition = insertPosition || { index: i };\r\n }\r\n insertPosition = insertPosition || { index: this._pieces.length };\r\n if (pieces.length > 0) {\r\n this._pieces = arrays.arrayInsert(this._pieces, insertPosition.index, pieces);\r\n }\r\n // console.log(`I HAVE ${this._pieces.length} pieces`);\r\n // console.log(`${this._pieces.map(p => p.toString()).join('\\n')}`);\r\n return range;\r\n }\r\n isComplete() {\r\n return this._isComplete;\r\n }\r\n addSemanticTokens(lineNumber, aTokens) {\r\n const pieces = this._pieces;\r\n if (pieces.length === 0) {\r\n return aTokens;\r\n }\r\n const pieceIndex = TokensStore2._findFirstPieceWithLine(pieces, lineNumber);\r\n const bTokens = pieces[pieceIndex].getLineTokens(lineNumber);\r\n if (!bTokens) {\r\n return aTokens;\r\n }\r\n const aLen = aTokens.getCount();\r\n const bLen = bTokens.getCount();\r\n let aIndex = 0;\r\n let result = [], resultLen = 0;\r\n let lastEndOffset = 0;\r\n const emitToken = (endOffset, metadata) => {\r\n if (endOffset === lastEndOffset) {\r\n return;\r\n }\r\n lastEndOffset = endOffset;\r\n result[resultLen++] = endOffset;\r\n result[resultLen++] = metadata;\r\n };\r\n for (let bIndex = 0; bIndex < bLen; bIndex++) {\r\n const bStartCharacter = bTokens.getStartCharacter(bIndex);\r\n const bEndCharacter = bTokens.getEndCharacter(bIndex);\r\n const bMetadata = bTokens.getMetadata(bIndex);\r\n const bMask = (((bMetadata & 1 /* SEMANTIC_USE_ITALIC */) ? 2048 /* ITALIC_MASK */ : 0)\r\n | ((bMetadata & 2 /* SEMANTIC_USE_BOLD */) ? 4096 /* BOLD_MASK */ : 0)\r\n | ((bMetadata & 4 /* SEMANTIC_USE_UNDERLINE */) ? 8192 /* UNDERLINE_MASK */ : 0)\r\n | ((bMetadata & 8 /* SEMANTIC_USE_FOREGROUND */) ? 8372224 /* FOREGROUND_MASK */ : 0)\r\n | ((bMetadata & 16 /* SEMANTIC_USE_BACKGROUND */) ? 4286578688 /* BACKGROUND_MASK */ : 0)) >>> 0;\r\n const aMask = (~bMask) >>> 0;\r\n // push any token from `a` that is before `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) <= bStartCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n // push the token from `a` if it intersects the token from `b`\r\n if (aIndex < aLen && aTokens.getStartOffset(aIndex) < bStartCharacter) {\r\n emitToken(bStartCharacter, aTokens.getMetadata(aIndex));\r\n }\r\n // skip any tokens from `a` that are contained inside `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) < bEndCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n aIndex++;\r\n }\r\n if (aIndex < aLen) {\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n if (aTokens.getEndOffset(aIndex) === bEndCharacter) {\r\n // `a` ends exactly at the same spot as `b`!\r\n aIndex++;\r\n }\r\n }\r\n else {\r\n const aMergeIndex = Math.min(Math.max(0, aIndex - 1), aLen - 1);\r\n // push the token from `b`\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aMergeIndex) & aMask) | (bMetadata & bMask));\r\n }\r\n }\r\n // push the remaining tokens from `a`\r\n while (aIndex < aLen) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n return new LineTokens(new Uint32Array(result), aTokens.getLineContent());\r\n }\r\n static _findFirstPieceWithLine(pieces, lineNumber) {\r\n let low = 0;\r\n let high = pieces.length - 1;\r\n while (low < high) {\r\n let mid = low + Math.floor((high - low) / 2);\r\n if (pieces[mid].endLineNumber < lineNumber) {\r\n low = mid + 1;\r\n }\r\n else if (pieces[mid].startLineNumber > lineNumber) {\r\n high = mid - 1;\r\n }\r\n else {\r\n while (mid > low && pieces[mid - 1].startLineNumber <= lineNumber && lineNumber <= pieces[mid - 1].endLineNumber) {\r\n mid--;\r\n }\r\n return mid;\r\n }\r\n }\r\n return low;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n for (const piece of this._pieces) {\r\n piece.acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n }\r\n}\r\nexport class TokensStore {\r\n constructor() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n flush() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n getTokens(topLevelLanguageId, lineIndex, lineText) {\r\n let rawLineTokens = null;\r\n if (lineIndex < this._len) {\r\n rawLineTokens = this._lineTokens[lineIndex];\r\n }\r\n if (rawLineTokens !== null && rawLineTokens !== EMPTY_LINE_TOKENS) {\r\n return new LineTokens(toUint32Array(rawLineTokens), lineText);\r\n }\r\n let lineTokens = new Uint32Array(2);\r\n lineTokens[0] = lineText.length;\r\n lineTokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return new LineTokens(lineTokens, lineText);\r\n }\r\n static _massageTokens(topLevelLanguageId, lineTextLength, _tokens) {\r\n const tokens = _tokens ? toUint32Array(_tokens) : null;\r\n if (lineTextLength === 0) {\r\n let hasDifferentLanguageId = false;\r\n if (tokens && tokens.length > 1) {\r\n hasDifferentLanguageId = (TokenMetadata.getLanguageId(tokens[1]) !== topLevelLanguageId);\r\n }\r\n if (!hasDifferentLanguageId) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n }\r\n if (!tokens || tokens.length === 0) {\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = lineTextLength;\r\n tokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return tokens.buffer;\r\n }\r\n // Ensure the last token covers the end of the text\r\n tokens[tokens.length - 2] = lineTextLength;\r\n if (tokens.byteOffset === 0 && tokens.byteLength === tokens.buffer.byteLength) {\r\n // Store directly the ArrayBuffer pointer to save an object\r\n return tokens.buffer;\r\n }\r\n return tokens;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._lineTokens[this._len] = null;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._lineTokens.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let lineTokens = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n lineTokens[i] = null;\r\n }\r\n this._lineTokens = arrays.arrayInsert(this._lineTokens, insertIndex, lineTokens);\r\n this._len += insertCount;\r\n }\r\n setTokens(topLevelLanguageId, lineIndex, lineTextLength, _tokens, checkEquality) {\r\n const tokens = TokensStore._massageTokens(topLevelLanguageId, lineTextLength, _tokens);\r\n this._ensureLine(lineIndex);\r\n const oldTokens = this._lineTokens[lineIndex];\r\n this._lineTokens[lineIndex] = tokens;\r\n if (checkEquality) {\r\n return !TokensStore._equals(oldTokens, tokens);\r\n }\r\n return false;\r\n }\r\n static _equals(_a, _b) {\r\n if (!_a || !_b) {\r\n return !_a && !_b;\r\n }\r\n const a = toUint32Array(_a);\r\n const b = toUint32Array(_b);\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (a[i] !== b[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._delete(this._lineTokens[firstLineIndex], range.startColumn - 1, range.endColumn - 1);\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._deleteEnding(this._lineTokens[firstLineIndex], range.startColumn - 1);\r\n const lastLineIndex = range.endLineNumber - 1;\r\n let lastLineTokens = null;\r\n if (lastLineIndex < this._len) {\r\n lastLineTokens = TokensStore._deleteBeginning(this._lineTokens[lastLineIndex], range.endColumn - 1);\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._lineTokens[firstLineIndex] = TokensStore._append(this._lineTokens[firstLineIndex], lastLineTokens);\r\n // Delete middle lines\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n if (eolCount === 0) {\r\n // Inserting text on one line\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n return;\r\n }\r\n this._lineTokens[lineIndex] = TokensStore._deleteEnding(this._lineTokens[lineIndex], position.column - 1);\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n static _deleteBeginning(lineTokens, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n return TokensStore._delete(lineTokens, 0, toChIndex);\r\n }\r\n static _deleteEnding(lineTokens, fromChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const lineTextLength = tokens[tokens.length - 2];\r\n return TokensStore._delete(lineTokens, fromChIndex, lineTextLength);\r\n }\r\n static _delete(lineTokens, fromChIndex, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS || fromChIndex === toChIndex) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n // special case: deleting everything\r\n if (fromChIndex === 0 && tokens[tokens.length - 2] === toChIndex) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n const fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, fromChIndex);\r\n const fromTokenStartOffset = (fromTokenIndex > 0 ? tokens[(fromTokenIndex - 1) << 1] : 0);\r\n const fromTokenEndOffset = tokens[fromTokenIndex << 1];\r\n if (toChIndex < fromTokenEndOffset) {\r\n // the delete range is inside a single token\r\n const delta = (toChIndex - fromChIndex);\r\n for (let i = fromTokenIndex; i < tokensCount; i++) {\r\n tokens[i << 1] -= delta;\r\n }\r\n return lineTokens;\r\n }\r\n let dest;\r\n let lastEnd;\r\n if (fromTokenStartOffset !== fromChIndex) {\r\n tokens[fromTokenIndex << 1] = fromChIndex;\r\n dest = ((fromTokenIndex + 1) << 1);\r\n lastEnd = fromChIndex;\r\n }\r\n else {\r\n dest = (fromTokenIndex << 1);\r\n lastEnd = fromTokenStartOffset;\r\n }\r\n const delta = (toChIndex - fromChIndex);\r\n for (let tokenIndex = fromTokenIndex + 1; tokenIndex < tokensCount; tokenIndex++) {\r\n const tokenEndOffset = tokens[tokenIndex << 1] - delta;\r\n if (tokenEndOffset > lastEnd) {\r\n tokens[dest++] = tokenEndOffset;\r\n tokens[dest++] = tokens[(tokenIndex << 1) + 1];\r\n lastEnd = tokenEndOffset;\r\n }\r\n }\r\n if (dest === tokens.length) {\r\n // nothing to trim\r\n return lineTokens;\r\n }\r\n let tmp = new Uint32Array(dest);\r\n tmp.set(tokens.subarray(0, dest), 0);\r\n return tmp.buffer;\r\n }\r\n static _append(lineTokens, _otherTokens) {\r\n if (_otherTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n if (lineTokens === EMPTY_LINE_TOKENS) {\r\n return _otherTokens;\r\n }\r\n if (lineTokens === null) {\r\n return lineTokens;\r\n }\r\n if (_otherTokens === null) {\r\n // cannot determine combined line length...\r\n return null;\r\n }\r\n const myTokens = toUint32Array(lineTokens);\r\n const otherTokens = toUint32Array(_otherTokens);\r\n const otherTokensCount = (otherTokens.length >>> 1);\r\n let result = new Uint32Array(myTokens.length + otherTokens.length);\r\n result.set(myTokens, 0);\r\n let dest = myTokens.length;\r\n const delta = myTokens[myTokens.length - 2];\r\n for (let i = 0; i < otherTokensCount; i++) {\r\n result[dest++] = otherTokens[(i << 1)] + delta;\r\n result[dest++] = otherTokens[(i << 1) + 1];\r\n }\r\n return result.buffer;\r\n }\r\n static _insert(lineTokens, chIndex, textLength) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n // nothing to do\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n let fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, chIndex);\r\n if (fromTokenIndex > 0) {\r\n const fromTokenStartOffset = tokens[(fromTokenIndex - 1) << 1];\r\n if (fromTokenStartOffset === chIndex) {\r\n fromTokenIndex--;\r\n }\r\n }\r\n for (let tokenIndex = fromTokenIndex; tokenIndex < tokensCount; tokenIndex++) {\r\n tokens[tokenIndex << 1] += textLength;\r\n }\r\n return lineTokens;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nexport const DEFAULT_WORD_REGEXP = createWordRegExp();\r\nexport function ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nexport function getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from '../../base/common/uri.js';\r\nimport { Range } from './core/range.js';\r\nimport { LanguageFeatureRegistry } from './modes/languageFeatureRegistry.js';\r\nimport { TokenizationRegistryImpl } from './modes/tokenizationRegistry.js';\r\nimport { iconRegistry, Codicon } from '../../base/common/codicons.js';\r\n/**\r\n * @internal\r\n */\r\nexport class LanguageIdentifier {\r\n constructor(language, id) {\r\n this.language = language;\r\n this.id = id;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class TokenMetadata {\r\n static getLanguageId(metadata) {\r\n return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\r\n }\r\n static getTokenType(metadata) {\r\n return (metadata & 1792 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\r\n }\r\n static getFontStyle(metadata) {\r\n return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\r\n }\r\n static getForeground(metadata) {\r\n return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 14 /* FOREGROUND_OFFSET */;\r\n }\r\n static getBackground(metadata) {\r\n return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 23 /* BACKGROUND_OFFSET */;\r\n }\r\n static getClassNameFromMetadata(metadata) {\r\n let foreground = this.getForeground(metadata);\r\n let className = 'mtk' + foreground;\r\n let fontStyle = this.getFontStyle(metadata);\r\n if (fontStyle & 1 /* Italic */) {\r\n className += ' mtki';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n className += ' mtkb';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n className += ' mtku';\r\n }\r\n return className;\r\n }\r\n static getInlineStyleFromMetadata(metadata, colorMap) {\r\n const foreground = this.getForeground(metadata);\r\n const fontStyle = this.getFontStyle(metadata);\r\n let result = `color: ${colorMap[foreground]};`;\r\n if (fontStyle & 1 /* Italic */) {\r\n result += 'font-style: italic;';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n result += 'font-weight: bold;';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n result += 'text-decoration: underline;';\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport const completionKindToCssClass = (function () {\r\n let data = Object.create(null);\r\n data[0 /* Method */] = 'symbol-method';\r\n data[1 /* Function */] = 'symbol-function';\r\n data[2 /* Constructor */] = 'symbol-constructor';\r\n data[3 /* Field */] = 'symbol-field';\r\n data[4 /* Variable */] = 'symbol-variable';\r\n data[5 /* Class */] = 'symbol-class';\r\n data[6 /* Struct */] = 'symbol-struct';\r\n data[7 /* Interface */] = 'symbol-interface';\r\n data[8 /* Module */] = 'symbol-module';\r\n data[9 /* Property */] = 'symbol-property';\r\n data[10 /* Event */] = 'symbol-event';\r\n data[11 /* Operator */] = 'symbol-operator';\r\n data[12 /* Unit */] = 'symbol-unit';\r\n data[13 /* Value */] = 'symbol-value';\r\n data[14 /* Constant */] = 'symbol-constant';\r\n data[15 /* Enum */] = 'symbol-enum';\r\n data[16 /* EnumMember */] = 'symbol-enum-member';\r\n data[17 /* Keyword */] = 'symbol-keyword';\r\n data[27 /* Snippet */] = 'symbol-snippet';\r\n data[18 /* Text */] = 'symbol-text';\r\n data[19 /* Color */] = 'symbol-color';\r\n data[20 /* File */] = 'symbol-file';\r\n data[21 /* Reference */] = 'symbol-reference';\r\n data[22 /* Customcolor */] = 'symbol-customcolor';\r\n data[23 /* Folder */] = 'symbol-folder';\r\n data[24 /* TypeParameter */] = 'symbol-type-parameter';\r\n data[25 /* User */] = 'account';\r\n data[26 /* Issue */] = 'issues';\r\n return function (kind) {\r\n const name = data[kind];\r\n let codicon = name && iconRegistry.get(name);\r\n if (!codicon) {\r\n console.info('No codicon found for CompletionItemKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return codicon.classNames;\r\n };\r\n})();\r\n/**\r\n * @internal\r\n */\r\nexport let completionKindFromString = (function () {\r\n let data = Object.create(null);\r\n data['method'] = 0 /* Method */;\r\n data['function'] = 1 /* Function */;\r\n data['constructor'] = 2 /* Constructor */;\r\n data['field'] = 3 /* Field */;\r\n data['variable'] = 4 /* Variable */;\r\n data['class'] = 5 /* Class */;\r\n data['struct'] = 6 /* Struct */;\r\n data['interface'] = 7 /* Interface */;\r\n data['module'] = 8 /* Module */;\r\n data['property'] = 9 /* Property */;\r\n data['event'] = 10 /* Event */;\r\n data['operator'] = 11 /* Operator */;\r\n data['unit'] = 12 /* Unit */;\r\n data['value'] = 13 /* Value */;\r\n data['constant'] = 14 /* Constant */;\r\n data['enum'] = 15 /* Enum */;\r\n data['enum-member'] = 16 /* EnumMember */;\r\n data['enumMember'] = 16 /* EnumMember */;\r\n data['keyword'] = 17 /* Keyword */;\r\n data['snippet'] = 27 /* Snippet */;\r\n data['text'] = 18 /* Text */;\r\n data['color'] = 19 /* Color */;\r\n data['file'] = 20 /* File */;\r\n data['reference'] = 21 /* Reference */;\r\n data['customcolor'] = 22 /* Customcolor */;\r\n data['folder'] = 23 /* Folder */;\r\n data['type-parameter'] = 24 /* TypeParameter */;\r\n data['typeParameter'] = 24 /* TypeParameter */;\r\n data['account'] = 25 /* User */;\r\n data['issue'] = 26 /* Issue */;\r\n return function (value, strict) {\r\n let res = data[value];\r\n if (typeof res === 'undefined' && !strict) {\r\n res = 9 /* Property */;\r\n }\r\n return res;\r\n };\r\n})();\r\n/**\r\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\r\n */\r\nexport var InlineCompletionTriggerKind;\r\n(function (InlineCompletionTriggerKind) {\r\n /**\r\n * Completion was triggered automatically while editing.\r\n * It is sufficient to return a single completion item in this case.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\r\n /**\r\n * Completion was triggered explicitly by a user gesture.\r\n * Return multiple completion items to enable cycling through them.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\r\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * @internal\r\n */\r\nexport function isLocationLink(thing) {\r\n return thing\r\n && URI.isUri(thing.uri)\r\n && Range.isIRange(thing.range)\r\n && (Range.isIRange(thing.originSelectionRange) || Range.isIRange(thing.targetSelectionRange));\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport var SymbolKinds;\r\n(function (SymbolKinds) {\r\n const byName = new Map();\r\n byName.set('file', 0 /* File */);\r\n byName.set('module', 1 /* Module */);\r\n byName.set('namespace', 2 /* Namespace */);\r\n byName.set('package', 3 /* Package */);\r\n byName.set('class', 4 /* Class */);\r\n byName.set('method', 5 /* Method */);\r\n byName.set('property', 6 /* Property */);\r\n byName.set('field', 7 /* Field */);\r\n byName.set('constructor', 8 /* Constructor */);\r\n byName.set('enum', 9 /* Enum */);\r\n byName.set('interface', 10 /* Interface */);\r\n byName.set('function', 11 /* Function */);\r\n byName.set('variable', 12 /* Variable */);\r\n byName.set('constant', 13 /* Constant */);\r\n byName.set('string', 14 /* String */);\r\n byName.set('number', 15 /* Number */);\r\n byName.set('boolean', 16 /* Boolean */);\r\n byName.set('array', 17 /* Array */);\r\n byName.set('object', 18 /* Object */);\r\n byName.set('key', 19 /* Key */);\r\n byName.set('null', 20 /* Null */);\r\n byName.set('enum-member', 21 /* EnumMember */);\r\n byName.set('struct', 22 /* Struct */);\r\n byName.set('event', 23 /* Event */);\r\n byName.set('operator', 24 /* Operator */);\r\n byName.set('type-parameter', 25 /* TypeParameter */);\r\n const byKind = new Map();\r\n byKind.set(0 /* File */, 'file');\r\n byKind.set(1 /* Module */, 'module');\r\n byKind.set(2 /* Namespace */, 'namespace');\r\n byKind.set(3 /* Package */, 'package');\r\n byKind.set(4 /* Class */, 'class');\r\n byKind.set(5 /* Method */, 'method');\r\n byKind.set(6 /* Property */, 'property');\r\n byKind.set(7 /* Field */, 'field');\r\n byKind.set(8 /* Constructor */, 'constructor');\r\n byKind.set(9 /* Enum */, 'enum');\r\n byKind.set(10 /* Interface */, 'interface');\r\n byKind.set(11 /* Function */, 'function');\r\n byKind.set(12 /* Variable */, 'variable');\r\n byKind.set(13 /* Constant */, 'constant');\r\n byKind.set(14 /* String */, 'string');\r\n byKind.set(15 /* Number */, 'number');\r\n byKind.set(16 /* Boolean */, 'boolean');\r\n byKind.set(17 /* Array */, 'array');\r\n byKind.set(18 /* Object */, 'object');\r\n byKind.set(19 /* Key */, 'key');\r\n byKind.set(20 /* Null */, 'null');\r\n byKind.set(21 /* EnumMember */, 'enum-member');\r\n byKind.set(22 /* Struct */, 'struct');\r\n byKind.set(23 /* Event */, 'event');\r\n byKind.set(24 /* Operator */, 'operator');\r\n byKind.set(25 /* TypeParameter */, 'type-parameter');\r\n /**\r\n * @internal\r\n */\r\n function fromString(value) {\r\n return byName.get(value);\r\n }\r\n SymbolKinds.fromString = fromString;\r\n /**\r\n * @internal\r\n */\r\n function toString(kind) {\r\n return byKind.get(kind);\r\n }\r\n SymbolKinds.toString = toString;\r\n /**\r\n * @internal\r\n */\r\n function toCssClassName(kind, inline) {\r\n const symbolName = byKind.get(kind);\r\n let codicon = symbolName && iconRegistry.get('symbol-' + symbolName);\r\n if (!codicon) {\r\n console.info('No codicon found for SymbolKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return `${inline ? 'inline' : 'block'} ${codicon.classNames}`;\r\n }\r\n SymbolKinds.toCssClassName = toCssClassName;\r\n})(SymbolKinds || (SymbolKinds = {}));\r\nexport class FoldingRangeKind {\r\n /**\r\n * Creates a new {@link FoldingRangeKind}.\r\n *\r\n * @param value of the kind.\r\n */\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n}\r\n/**\r\n * Kind for folding range representing a comment. The value of the kind is 'comment'.\r\n */\r\nFoldingRangeKind.Comment = new FoldingRangeKind('comment');\r\n/**\r\n * Kind for folding range representing a import. The value of the kind is 'imports'.\r\n */\r\nFoldingRangeKind.Imports = new FoldingRangeKind('imports');\r\n/**\r\n * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).\r\n * The value of the kind is 'region'.\r\n */\r\nFoldingRangeKind.Region = new FoldingRangeKind('region');\r\nexport var InlayHintKind;\r\n(function (InlayHintKind) {\r\n InlayHintKind[InlayHintKind[\"Other\"] = 0] = \"Other\";\r\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\r\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\r\n})(InlayHintKind || (InlayHintKind = {}));\r\n// --- feature registries ------\r\n/**\r\n * @internal\r\n */\r\nexport const ReferenceProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const RenameProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CompletionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const InlineCompletionsProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SignatureHelpProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const HoverProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSymbolProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentHighlightProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const LinkedEditingRangeProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DeclarationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ImplementationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TypeDefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeLensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const InlayHintsProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeActionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const LinkProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ColorProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SelectionRangeRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const FoldingRangeProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TokenizationRegistry = new TokenizationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nexport class TokenizationRegistryImpl {\r\n constructor() {\r\n this._map = new Map();\r\n this._promises = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._colorMap = null;\r\n }\r\n fire(languages) {\r\n this._onDidChange.fire({\r\n changedLanguages: languages,\r\n changedColorMap: false\r\n });\r\n }\r\n register(language, support) {\r\n this._map.set(language, support);\r\n this.fire([language]);\r\n return toDisposable(() => {\r\n if (this._map.get(language) !== support) {\r\n return;\r\n }\r\n this._map.delete(language);\r\n this.fire([language]);\r\n });\r\n }\r\n registerPromise(language, supportPromise) {\r\n let registration = null;\r\n let isDisposed = false;\r\n this._promises.set(language, supportPromise.then(support => {\r\n this._promises.delete(language);\r\n if (isDisposed || !support) {\r\n return;\r\n }\r\n registration = this.register(language, support);\r\n }));\r\n return toDisposable(() => {\r\n isDisposed = true;\r\n if (registration) {\r\n registration.dispose();\r\n }\r\n });\r\n }\r\n getPromise(language) {\r\n const support = this.get(language);\r\n if (support) {\r\n return Promise.resolve(support);\r\n }\r\n const promise = this._promises.get(language);\r\n if (promise) {\r\n return promise.then(_ => this.get(language));\r\n }\r\n return null;\r\n }\r\n get(language) {\r\n return (this._map.get(language) || null);\r\n }\r\n setColorMap(colorMap) {\r\n this._colorMap = colorMap;\r\n this._onDidChange.fire({\r\n changedLanguages: Array.from(this._map.keys()),\r\n changedColorMap: true\r\n });\r\n }\r\n getColorMap() {\r\n return this._colorMap;\r\n }\r\n getDefaultBackground() {\r\n if (this._colorMap && this._colorMap.length > 2 /* DefaultBackground */) {\r\n return this._colorMap[2 /* DefaultBackground */];\r\n }\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * @internal\r\n */\r\nexport class StandardAutoClosingPairConditional {\r\n constructor(source) {\r\n this._standardAutoClosingPairConditionalBrand = undefined;\r\n this.open = source.open;\r\n this.close = source.close;\r\n // initially allowed in all tokens\r\n this._standardTokenMask = 0;\r\n if (Array.isArray(source.notIn)) {\r\n for (let i = 0, len = source.notIn.length; i < len; i++) {\r\n const notIn = source.notIn[i];\r\n switch (notIn) {\r\n case 'string':\r\n this._standardTokenMask |= 2 /* String */;\r\n break;\r\n case 'comment':\r\n this._standardTokenMask |= 1 /* Comment */;\r\n break;\r\n case 'regex':\r\n this._standardTokenMask |= 4 /* RegEx */;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n isOK(standardToken) {\r\n return (this._standardTokenMask & standardToken) === 0;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class AutoClosingPairs {\r\n constructor(autoClosingPairs) {\r\n this.autoClosingPairsOpenByStart = new Map();\r\n this.autoClosingPairsOpenByEnd = new Map();\r\n this.autoClosingPairsCloseByStart = new Map();\r\n this.autoClosingPairsCloseByEnd = new Map();\r\n this.autoClosingPairsCloseSingleChar = new Map();\r\n for (const pair of autoClosingPairs) {\r\n appendEntry(this.autoClosingPairsOpenByStart, pair.open.charAt(0), pair);\r\n appendEntry(this.autoClosingPairsOpenByEnd, pair.open.charAt(pair.open.length - 1), pair);\r\n appendEntry(this.autoClosingPairsCloseByStart, pair.close.charAt(0), pair);\r\n appendEntry(this.autoClosingPairsCloseByEnd, pair.close.charAt(pair.close.length - 1), pair);\r\n if (pair.close.length === 1 && pair.open.length === 1) {\r\n appendEntry(this.autoClosingPairsCloseSingleChar, pair.close, pair);\r\n }\r\n }\r\n }\r\n}\r\nfunction appendEntry(target, key, value) {\r\n if (target.has(key)) {\r\n target.get(key).push(value);\r\n }\r\n else {\r\n target.set(key, [value]);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardAutoClosingPairConditional } from '../languageConfiguration.js';\r\nexport class CharacterPairSupport {\r\n constructor(config) {\r\n if (config.autoClosingPairs) {\r\n this._autoClosingPairs = config.autoClosingPairs.map(el => new StandardAutoClosingPairConditional(el));\r\n }\r\n else if (config.brackets) {\r\n this._autoClosingPairs = config.brackets.map(b => new StandardAutoClosingPairConditional({ open: b[0], close: b[1] }));\r\n }\r\n else {\r\n this._autoClosingPairs = [];\r\n }\r\n if (config.__electricCharacterSupport && config.__electricCharacterSupport.docComment) {\r\n const docComment = config.__electricCharacterSupport.docComment;\r\n // IDocComment is legacy, only partially supported\r\n this._autoClosingPairs.push(new StandardAutoClosingPairConditional({ open: docComment.open, close: docComment.close || '' }));\r\n }\r\n this._autoCloseBefore = typeof config.autoCloseBefore === 'string' ? config.autoCloseBefore : CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n this._surroundingPairs = config.surroundingPairs || this._autoClosingPairs;\r\n }\r\n getAutoClosingPairs() {\r\n return this._autoClosingPairs;\r\n }\r\n getAutoCloseBeforeSet() {\r\n return this._autoCloseBefore;\r\n }\r\n static shouldAutoClosePair(autoClosingPair, context, column) {\r\n // Always complete on empty line\r\n if (context.getTokenCount() === 0) {\r\n return true;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 2);\r\n const standardTokenType = context.getStandardTokenType(tokenIndex);\r\n return autoClosingPair.isOK(standardTokenType);\r\n }\r\n getSurroundingPairs() {\r\n return this._surroundingPairs;\r\n }\r\n}\r\nCharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED = ';:.,=}])> \\n\\t';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ignoreBracketsInToken } from '../supports.js';\r\nimport { BracketsUtils } from './richEditBrackets.js';\r\nexport class BracketElectricCharacterSupport {\r\n constructor(richEditBrackets) {\r\n this._richEditBrackets = richEditBrackets;\r\n }\r\n getElectricCharacters() {\r\n let result = [];\r\n if (this._richEditBrackets) {\r\n for (const bracket of this._richEditBrackets.brackets) {\r\n for (const close of bracket.close) {\r\n const lastChar = close.charAt(close.length - 1);\r\n result.push(lastChar);\r\n }\r\n }\r\n }\r\n // Filter duplicate entries\r\n result = result.filter((item, pos, array) => {\r\n return array.indexOf(item) === pos;\r\n });\r\n return result;\r\n }\r\n onElectricCharacter(character, context, column) {\r\n if (!this._richEditBrackets || this._richEditBrackets.brackets.length === 0) {\r\n return null;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 1);\r\n if (ignoreBracketsInToken(context.getStandardTokenType(tokenIndex))) {\r\n return null;\r\n }\r\n const reversedBracketRegex = this._richEditBrackets.reversedRegex;\r\n const text = context.getLineContent().substring(0, column - 1) + character;\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);\r\n if (!r) {\r\n return null;\r\n }\r\n const bracketText = text.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];\r\n if (isOpen) {\r\n return null;\r\n }\r\n const textBeforeBracket = context.getActualLineContentBefore(r.startColumn - 1);\r\n if (!/^\\s*$/.test(textBeforeBracket)) {\r\n // There is other text on the line before the bracket\r\n return null;\r\n }\r\n return {\r\n matchOpenBracket: bracketText\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction resetGlobalRegex(reg) {\r\n if (reg.global) {\r\n reg.lastIndex = 0;\r\n }\r\n return true;\r\n}\r\nexport class IndentRulesSupport {\r\n constructor(indentationRules) {\r\n this._indentationRules = indentationRules;\r\n }\r\n shouldIncrease(text) {\r\n if (this._indentationRules) {\r\n if (this._indentationRules.increaseIndentPattern && resetGlobalRegex(this._indentationRules.increaseIndentPattern) && this._indentationRules.increaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n // if (this._indentationRules.indentNextLinePattern && this._indentationRules.indentNextLinePattern.test(text)) {\r\n // \treturn true;\r\n // }\r\n }\r\n return false;\r\n }\r\n shouldDecrease(text) {\r\n if (this._indentationRules && this._indentationRules.decreaseIndentPattern && resetGlobalRegex(this._indentationRules.decreaseIndentPattern) && this._indentationRules.decreaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIndentNextLine(text) {\r\n if (this._indentationRules && this._indentationRules.indentNextLinePattern && resetGlobalRegex(this._indentationRules.indentNextLinePattern) && this._indentationRules.indentNextLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIgnore(text) {\r\n // the text matches `unIndentedLinePattern`\r\n if (this._indentationRules && this._indentationRules.unIndentedLinePattern && resetGlobalRegex(this._indentationRules.unIndentedLinePattern) && this._indentationRules.unIndentedLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getIndentMetadata(text) {\r\n let ret = 0;\r\n if (this.shouldIncrease(text)) {\r\n ret += 1 /* INCREASE_MASK */;\r\n }\r\n if (this.shouldDecrease(text)) {\r\n ret += 2 /* DECREASE_MASK */;\r\n }\r\n if (this.shouldIndentNextLine(text)) {\r\n ret += 4 /* INDENT_NEXTLINE_MASK */;\r\n }\r\n if (this.shouldIgnore(text)) {\r\n ret += 8 /* UNINDENT_MASK */;\r\n }\r\n return ret;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { IndentAction } from '../languageConfiguration.js';\r\nexport class OnEnterSupport {\r\n constructor(opts) {\r\n opts = opts || {};\r\n opts.brackets = opts.brackets || [\r\n ['(', ')'],\r\n ['{', '}'],\r\n ['[', ']']\r\n ];\r\n this._brackets = [];\r\n opts.brackets.forEach((bracket) => {\r\n const openRegExp = OnEnterSupport._createOpenBracketRegExp(bracket[0]);\r\n const closeRegExp = OnEnterSupport._createCloseBracketRegExp(bracket[1]);\r\n if (openRegExp && closeRegExp) {\r\n this._brackets.push({\r\n open: bracket[0],\r\n openRegExp: openRegExp,\r\n close: bracket[1],\r\n closeRegExp: closeRegExp,\r\n });\r\n }\r\n });\r\n this._regExpRules = opts.onEnterRules || [];\r\n }\r\n onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText) {\r\n // (1): `regExpRules`\r\n if (autoIndent >= 3 /* Advanced */) {\r\n for (let i = 0, len = this._regExpRules.length; i < len; i++) {\r\n let rule = this._regExpRules[i];\r\n const regResult = [{\r\n reg: rule.beforeText,\r\n text: beforeEnterText\r\n }, {\r\n reg: rule.afterText,\r\n text: afterEnterText\r\n }, {\r\n reg: rule.previousLineText,\r\n text: previousLineText\r\n }].every((obj) => {\r\n if (!obj.reg) {\r\n return true;\r\n }\r\n obj.reg.lastIndex = 0; // To disable the effect of the \"g\" flag.\r\n return obj.reg.test(obj.text);\r\n });\r\n if (regResult) {\r\n return rule.action;\r\n }\r\n }\r\n }\r\n // (2): Special indent-outdent\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0 && afterEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText) && bracket.closeRegExp.test(afterEnterText)) {\r\n return { indentAction: IndentAction.IndentOutdent };\r\n }\r\n }\r\n }\r\n }\r\n // (4): Open bracket based logic\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText)) {\r\n return { indentAction: IndentAction.Indent };\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _createOpenBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(0))) {\r\n str = '\\\\b' + str;\r\n }\r\n str += '\\\\s*$';\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _createCloseBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(str.length - 1))) {\r\n str = str + '\\\\b';\r\n }\r\n str = '^\\\\s*' + str;\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _safeRegExp(def) {\r\n try {\r\n return new RegExp(def);\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n return null;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { DEFAULT_WORD_REGEXP, ensureValidWordDefinition } from '../model/wordHelper.js';\r\nimport { IndentAction, AutoClosingPairs } from './languageConfiguration.js';\r\nimport { createScopedLineTokens } from './supports.js';\r\nimport { CharacterPairSupport } from './supports/characterPair.js';\r\nimport { BracketElectricCharacterSupport } from './supports/electricCharacter.js';\r\nimport { IndentRulesSupport } from './supports/indentRules.js';\r\nimport { OnEnterSupport } from './supports/onEnter.js';\r\nimport { RichEditBrackets } from './supports/richEditBrackets.js';\r\nexport class RichEditSupport {\r\n constructor(languageIdentifier, rawConf) {\r\n this._languageIdentifier = languageIdentifier;\r\n this._brackets = null;\r\n this._electricCharacter = null;\r\n this._conf = rawConf;\r\n this._onEnterSupport = (this._conf.brackets || this._conf.indentationRules || this._conf.onEnterRules ? new OnEnterSupport(this._conf) : null);\r\n this.comments = RichEditSupport._handleComments(this._conf);\r\n this.characterPair = new CharacterPairSupport(this._conf);\r\n this.wordDefinition = this._conf.wordPattern || DEFAULT_WORD_REGEXP;\r\n this.indentationRules = this._conf.indentationRules;\r\n if (this._conf.indentationRules) {\r\n this.indentRulesSupport = new IndentRulesSupport(this._conf.indentationRules);\r\n }\r\n else {\r\n this.indentRulesSupport = null;\r\n }\r\n this.foldingRules = this._conf.folding || {};\r\n }\r\n get brackets() {\r\n if (!this._brackets && this._conf.brackets) {\r\n this._brackets = new RichEditBrackets(this._languageIdentifier, this._conf.brackets);\r\n }\r\n return this._brackets;\r\n }\r\n get electricCharacter() {\r\n if (!this._electricCharacter) {\r\n this._electricCharacter = new BracketElectricCharacterSupport(this.brackets);\r\n }\r\n return this._electricCharacter;\r\n }\r\n onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText) {\r\n if (!this._onEnterSupport) {\r\n return null;\r\n }\r\n return this._onEnterSupport.onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText);\r\n }\r\n static _handleComments(conf) {\r\n let commentRule = conf.comments;\r\n if (!commentRule) {\r\n return null;\r\n }\r\n // comment configuration\r\n let comments = {};\r\n if (commentRule.lineComment) {\r\n comments.lineCommentToken = commentRule.lineComment;\r\n }\r\n if (commentRule.blockComment) {\r\n let [blockStart, blockEnd] = commentRule.blockComment;\r\n comments.blockCommentStartToken = blockStart;\r\n comments.blockCommentEndToken = blockEnd;\r\n }\r\n return comments;\r\n }\r\n}\r\nexport class LanguageConfigurationChangeEvent {\r\n constructor(languageIdentifier) {\r\n this.languageIdentifier = languageIdentifier;\r\n }\r\n}\r\nclass LanguageConfigurationEntry {\r\n constructor(configuration, priority, order) {\r\n this.configuration = configuration;\r\n this.priority = priority;\r\n this.order = order;\r\n }\r\n static cmp(a, b) {\r\n if (a.priority === b.priority) {\r\n // higher order last\r\n return a.order - b.order;\r\n }\r\n // higher priority last\r\n return a.priority - b.priority;\r\n }\r\n}\r\nclass LanguageConfigurationEntries {\r\n constructor(languageIdentifier) {\r\n this.languageIdentifier = languageIdentifier;\r\n this._resolved = null;\r\n this._entries = [];\r\n this._order = 0;\r\n this._resolved = null;\r\n }\r\n register(configuration, priority) {\r\n const entry = new LanguageConfigurationEntry(configuration, priority, ++this._order);\r\n this._entries.push(entry);\r\n this._resolved = null;\r\n return toDisposable(() => {\r\n for (let i = 0; i < this._entries.length; i++) {\r\n if (this._entries[i] === entry) {\r\n this._entries.splice(i, 1);\r\n this._resolved = null;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n getRichEditSupport() {\r\n if (!this._resolved) {\r\n const config = this._resolve();\r\n if (config) {\r\n this._resolved = new RichEditSupport(this.languageIdentifier, config);\r\n }\r\n }\r\n return this._resolved;\r\n }\r\n _resolve() {\r\n if (this._entries.length === 0) {\r\n return null;\r\n }\r\n this._entries.sort(LanguageConfigurationEntry.cmp);\r\n const result = {};\r\n for (const entry of this._entries) {\r\n const conf = entry.configuration;\r\n result.comments = conf.comments || result.comments;\r\n result.brackets = conf.brackets || result.brackets;\r\n result.wordPattern = conf.wordPattern || result.wordPattern;\r\n result.indentationRules = conf.indentationRules || result.indentationRules;\r\n result.onEnterRules = conf.onEnterRules || result.onEnterRules;\r\n result.autoClosingPairs = conf.autoClosingPairs || result.autoClosingPairs;\r\n result.surroundingPairs = conf.surroundingPairs || result.surroundingPairs;\r\n result.autoCloseBefore = conf.autoCloseBefore || result.autoCloseBefore;\r\n result.folding = conf.folding || result.folding;\r\n result.__electricCharacterSupport = conf.__electricCharacterSupport || result.__electricCharacterSupport;\r\n }\r\n return result;\r\n }\r\n}\r\nexport class LanguageConfigurationRegistryImpl {\r\n constructor() {\r\n this._entries2 = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n /**\r\n * @param priority Use a higher number for higher priority\r\n */\r\n register(languageIdentifier, configuration, priority = 0) {\r\n let entries = this._entries2.get(languageIdentifier.id);\r\n if (!entries) {\r\n entries = new LanguageConfigurationEntries(languageIdentifier);\r\n this._entries2.set(languageIdentifier.id, entries);\r\n }\r\n const disposable = entries.register(configuration, priority);\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n return toDisposable(() => {\r\n disposable.dispose();\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n });\r\n }\r\n _getRichEditSupport(languageId) {\r\n const entries = this._entries2.get(languageId);\r\n return entries ? entries.getRichEditSupport() : null;\r\n }\r\n getIndentationRules(languageId) {\r\n const value = this._getRichEditSupport(languageId);\r\n return value ? value.indentationRules || null : null;\r\n }\r\n // begin electricCharacter\r\n _getElectricCharacterSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.electricCharacter || null;\r\n }\r\n getElectricCharacters(languageId) {\r\n let electricCharacterSupport = this._getElectricCharacterSupport(languageId);\r\n if (!electricCharacterSupport) {\r\n return [];\r\n }\r\n return electricCharacterSupport.getElectricCharacters();\r\n }\r\n /**\r\n * Should return opening bracket type to match indentation with\r\n */\r\n onElectricCharacter(character, context, column) {\r\n let scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n let electricCharacterSupport = this._getElectricCharacterSupport(scopedLineTokens.languageId);\r\n if (!electricCharacterSupport) {\r\n return null;\r\n }\r\n return electricCharacterSupport.onElectricCharacter(character, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end electricCharacter\r\n getComments(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.comments || null;\r\n }\r\n // begin characterPair\r\n _getCharacterPairSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.characterPair || null;\r\n }\r\n getAutoClosingPairs(languageId) {\r\n const characterPairSupport = this._getCharacterPairSupport(languageId);\r\n return new AutoClosingPairs(characterPairSupport ? characterPairSupport.getAutoClosingPairs() : []);\r\n }\r\n getAutoCloseBeforeSet(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n }\r\n return characterPairSupport.getAutoCloseBeforeSet();\r\n }\r\n getSurroundingPairs(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return [];\r\n }\r\n return characterPairSupport.getSurroundingPairs();\r\n }\r\n shouldAutoClosePair(autoClosingPair, context, column) {\r\n const scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n return CharacterPairSupport.shouldAutoClosePair(autoClosingPair, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end characterPair\r\n getWordDefinition(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return ensureValidWordDefinition(null);\r\n }\r\n return ensureValidWordDefinition(value.wordDefinition || null);\r\n }\r\n getFoldingRules(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return {};\r\n }\r\n return value.foldingRules;\r\n }\r\n // begin Indent Rules\r\n getIndentRulesSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.indentRulesSupport || null;\r\n }\r\n /**\r\n * Get nearest preceiding line which doesn't match unIndentPattern or contains all whitespace.\r\n * Result:\r\n * -1: run into the boundary of embedded languages\r\n * 0: every line above are invalid\r\n * else: nearest preceding line of the same language\r\n */\r\n getPrecedingValidLine(model, lineNumber, indentRulesSupport) {\r\n let languageID = model.getLanguageIdAtPosition(lineNumber, 0);\r\n if (lineNumber > 1) {\r\n let lastLineNumber;\r\n let resultLineNumber = -1;\r\n for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {\r\n if (model.getLanguageIdAtPosition(lastLineNumber, 0) !== languageID) {\r\n return resultLineNumber;\r\n }\r\n let text = model.getLineContent(lastLineNumber);\r\n if (indentRulesSupport.shouldIgnore(text) || /^\\s+$/.test(text) || text === '') {\r\n resultLineNumber = lastLineNumber;\r\n continue;\r\n }\r\n return lastLineNumber;\r\n }\r\n }\r\n return -1;\r\n }\r\n /**\r\n * Get inherited indentation from above lines.\r\n * 1. Find the nearest preceding line which doesn't match unIndentedLinePattern.\r\n * 2. If this line matches indentNextLinePattern or increaseIndentPattern, it means that the indent level of `lineNumber` should be 1 greater than this line.\r\n * 3. If this line doesn't match any indent rules\r\n * a. check whether the line above it matches indentNextLinePattern\r\n * b. If not, the indent level of this line is the result\r\n * c. If so, it means the indent of this line is *temporary*, go upward utill we find a line whose indent is not temporary (the same workflow a -> b -> c).\r\n * 4. Otherwise, we fail to get an inherited indent from aboves. Return null and we should not touch the indent of `lineNumber`\r\n *\r\n * This function only return the inherited indent based on above lines, it doesn't check whether current line should decrease or not.\r\n */\r\n getInheritIndentForLine(autoIndent, model, lineNumber, honorIntentialIndent = true) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber <= 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLine = this.getPrecedingValidLine(model, lineNumber, indentRulesSupport);\r\n if (precedingUnIgnoredLine < 0) {\r\n return null;\r\n }\r\n else if (precedingUnIgnoredLine < 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLineContent = model.getLineContent(precedingUnIgnoredLine);\r\n if (indentRulesSupport.shouldIncrease(precedingUnIgnoredLineContent) || indentRulesSupport.shouldIndentNextLine(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: IndentAction.Indent,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // precedingUnIgnoredLine can not be ignored.\r\n // it doesn't increase indent of following lines\r\n // it doesn't increase just next line\r\n // so current line is not affect by precedingUnIgnoredLine\r\n // and then we should get a correct inheritted indentation from above lines\r\n if (precedingUnIgnoredLine === 1) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n const previousLine = precedingUnIgnoredLine - 1;\r\n const previousLineIndentMetadata = indentRulesSupport.getIndentMetadata(model.getLineContent(previousLine));\r\n if (!(previousLineIndentMetadata & (1 /* INCREASE_MASK */ | 2 /* DECREASE_MASK */)) &&\r\n (previousLineIndentMetadata & 4 /* INDENT_NEXTLINE_MASK */)) {\r\n let stopLine = 0;\r\n for (let i = previousLine - 1; i > 0; i--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = i;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n if (honorIntentialIndent) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // search from precedingUnIgnoredLine until we find one whose indent is not temporary\r\n for (let i = precedingUnIgnoredLine; i > 0; i--) {\r\n const lineContent = model.getLineContent(i);\r\n if (indentRulesSupport.shouldIncrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: IndentAction.Indent,\r\n line: i\r\n };\r\n }\r\n else if (indentRulesSupport.shouldIndentNextLine(lineContent)) {\r\n let stopLine = 0;\r\n for (let j = i - 1; j > 0; j--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = j;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: null,\r\n line: i\r\n };\r\n }\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(1)),\r\n action: null,\r\n line: 1\r\n };\r\n }\r\n }\r\n }\r\n getGoodIndentForLine(autoIndent, virtualModel, languageId, lineNumber, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const richEditSupport = this._getRichEditSupport(languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const indent = this.getInheritIndentForLine(autoIndent, virtualModel, lineNumber);\r\n const lineContent = virtualModel.getLineContent(lineNumber);\r\n if (indent) {\r\n const inheritLine = indent.line;\r\n if (inheritLine !== undefined) {\r\n const enterResult = richEditSupport.onEnter(autoIndent, '', virtualModel.getLineContent(inheritLine), '');\r\n if (enterResult) {\r\n let indentation = strings.getLeadingWhitespace(virtualModel.getLineContent(inheritLine));\r\n if (enterResult.removeText) {\r\n indentation = indentation.substring(0, indentation.length - enterResult.removeText);\r\n }\r\n if ((enterResult.indentAction === IndentAction.Indent) ||\r\n (enterResult.indentAction === IndentAction.IndentOutdent)) {\r\n indentation = indentConverter.shiftIndent(indentation);\r\n }\r\n else if (enterResult.indentAction === IndentAction.Outdent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (enterResult.appendText) {\r\n indentation += enterResult.appendText;\r\n }\r\n return strings.getLeadingWhitespace(indentation);\r\n }\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n if (indent.action === IndentAction.Indent) {\r\n return indent.indentation;\r\n }\r\n else {\r\n return indentConverter.unshiftIndent(indent.indentation);\r\n }\r\n }\r\n else {\r\n if (indent.action === IndentAction.Indent) {\r\n return indentConverter.shiftIndent(indent.indentation);\r\n }\r\n else {\r\n return indent.indentation;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n getIndentForEnter(autoIndent, model, range, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n model.forceTokenization(range.startLineNumber);\r\n const lineTokens = model.getLineTokens(range.startLineNumber);\r\n const scopedLineTokens = createScopedLineTokens(lineTokens, range.startColumn - 1);\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n let embeddedLanguage = false;\r\n let beforeEnterText;\r\n if (scopedLineTokens.firstCharOffset > 0 && lineTokens.getLanguageId(0) !== scopedLineTokens.languageId) {\r\n // we are in the embeded language content\r\n embeddedLanguage = true; // if embeddedLanguage is true, then we don't touch the indentation of current line\r\n beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n beforeEnterText = lineTokens.getLineContent().substring(0, range.startColumn - 1);\r\n }\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const beforeEnterResult = beforeEnterText;\r\n const beforeEnterIndent = strings.getLeadingWhitespace(beforeEnterText);\r\n const virtualModel = {\r\n getLineTokens: (lineNumber) => {\r\n return model.getLineTokens(lineNumber);\r\n },\r\n getLanguageIdentifier: () => {\r\n return model.getLanguageIdentifier();\r\n },\r\n getLanguageIdAtPosition: (lineNumber, column) => {\r\n return model.getLanguageIdAtPosition(lineNumber, column);\r\n },\r\n getLineContent: (lineNumber) => {\r\n if (lineNumber === range.startLineNumber) {\r\n return beforeEnterResult;\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n }\r\n };\r\n const currentLineIndent = strings.getLeadingWhitespace(lineTokens.getLineContent());\r\n const afterEnterAction = this.getInheritIndentForLine(autoIndent, virtualModel, range.startLineNumber + 1);\r\n if (!afterEnterAction) {\r\n const beforeEnter = embeddedLanguage ? currentLineIndent : beforeEnterIndent;\r\n return {\r\n beforeEnter: beforeEnter,\r\n afterEnter: beforeEnter\r\n };\r\n }\r\n let afterEnterIndent = embeddedLanguage ? currentLineIndent : afterEnterAction.indentation;\r\n if (afterEnterAction.action === IndentAction.Indent) {\r\n afterEnterIndent = indentConverter.shiftIndent(afterEnterIndent);\r\n }\r\n if (indentRulesSupport.shouldDecrease(afterEnterText)) {\r\n afterEnterIndent = indentConverter.unshiftIndent(afterEnterIndent);\r\n }\r\n return {\r\n beforeEnter: embeddedLanguage ? currentLineIndent : beforeEnterIndent,\r\n afterEnter: afterEnterIndent\r\n };\r\n }\r\n /**\r\n * We should always allow intentional indentation. It means, if users change the indentation of `lineNumber` and the content of\r\n * this line doesn't match decreaseIndentPattern, we should not adjust the indentation.\r\n */\r\n getIndentActionForType(autoIndent, model, range, ch, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n if (scopedLineTokens.firstCharOffset) {\r\n // this line has mixed languages and indentation rules will not work\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeTypeText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterTypeText;\r\n if (range.isEmpty()) {\r\n afterTypeText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterTypeText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n // If previous content already matches decreaseIndentPattern, it means indentation of this line should already be adjusted\r\n // Users might change the indentation by purpose and we should honor that instead of readjusting.\r\n if (!indentRulesSupport.shouldDecrease(beforeTypeText + afterTypeText) && indentRulesSupport.shouldDecrease(beforeTypeText + ch + afterTypeText)) {\r\n // after typing `ch`, the content matches decreaseIndentPattern, we should adjust the indent to a good manner.\r\n // 1. Get inherited indent action\r\n const r = this.getInheritIndentForLine(autoIndent, model, range.startLineNumber, false);\r\n if (!r) {\r\n return null;\r\n }\r\n let indentation = r.indentation;\r\n if (r.action !== IndentAction.Indent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n return indentation;\r\n }\r\n return null;\r\n }\r\n getIndentMetadata(model, lineNumber) {\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber < 1 || lineNumber > model.getLineCount()) {\r\n return null;\r\n }\r\n return indentRulesSupport.getIndentMetadata(model.getLineContent(lineNumber));\r\n }\r\n // end Indent Rules\r\n // begin onEnter\r\n getEnterAction(autoIndent, model, range) {\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n const richEditSupport = this._getRichEditSupport(scopedLineTokens.languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n let previousLineText = '';\r\n if (range.startLineNumber > 1 && scopedLineTokens.firstCharOffset === 0) {\r\n // This is not the first line and the entire line belongs to this mode\r\n const oneLineAboveScopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber - 1);\r\n if (oneLineAboveScopedLineTokens.languageId === scopedLineTokens.languageId) {\r\n // The line above ends with text belonging to the same mode\r\n previousLineText = oneLineAboveScopedLineTokens.getLineContent();\r\n }\r\n }\r\n const enterResult = richEditSupport.onEnter(autoIndent, previousLineText, beforeEnterText, afterEnterText);\r\n if (!enterResult) {\r\n return null;\r\n }\r\n const indentAction = enterResult.indentAction;\r\n let appendText = enterResult.appendText;\r\n const removeText = enterResult.removeText || 0;\r\n // Here we add `\\t` to appendText first because enterAction is leveraging appendText and removeText to change indentation.\r\n if (!appendText) {\r\n if ((indentAction === IndentAction.Indent) ||\r\n (indentAction === IndentAction.IndentOutdent)) {\r\n appendText = '\\t';\r\n }\r\n else {\r\n appendText = '';\r\n }\r\n }\r\n else if (indentAction === IndentAction.Indent) {\r\n appendText = '\\t' + appendText;\r\n }\r\n let indentation = this.getIndentationAtPosition(model, range.startLineNumber, range.startColumn);\r\n if (removeText) {\r\n indentation = indentation.substring(0, indentation.length - removeText);\r\n }\r\n return {\r\n indentAction: indentAction,\r\n appendText: appendText,\r\n removeText: removeText,\r\n indentation: indentation\r\n };\r\n }\r\n getIndentationAtPosition(model, lineNumber, column) {\r\n const lineText = model.getLineContent(lineNumber);\r\n let indentation = strings.getLeadingWhitespace(lineText);\r\n if (indentation.length > column - 1) {\r\n indentation = indentation.substring(0, column - 1);\r\n }\r\n return indentation;\r\n }\r\n getScopedLineTokens(model, lineNumber, columnNumber) {\r\n model.forceTokenization(lineNumber);\r\n const lineTokens = model.getLineTokens(lineNumber);\r\n const column = (typeof columnNumber === 'undefined' ? model.getLineMaxColumn(lineNumber) - 1 : columnNumber - 1);\r\n return createScopedLineTokens(lineTokens, column);\r\n }\r\n // end onEnter\r\n getBracketsSupport(languageId) {\r\n const value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.brackets || null;\r\n }\r\n}\r\nexport const LanguageConfigurationRegistry = new LanguageConfigurationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { match as matchGlobPattern } from '../../../base/common/glob.js';\r\nimport { normalize } from '../../../base/common/path.js';\r\nexport function score(selector, candidateUri, candidateLanguage, candidateIsSynchronized) {\r\n if (Array.isArray(selector)) {\r\n // array -> take max individual value\r\n let ret = 0;\r\n for (const filter of selector) {\r\n const value = score(filter, candidateUri, candidateLanguage, candidateIsSynchronized);\r\n if (value === 10) {\r\n return value; // already at the highest\r\n }\r\n if (value > ret) {\r\n ret = value;\r\n }\r\n }\r\n return ret;\r\n }\r\n else if (typeof selector === 'string') {\r\n if (!candidateIsSynchronized) {\r\n return 0;\r\n }\r\n // short-hand notion, desugars to\r\n // 'fooLang' -> { language: 'fooLang'}\r\n // '*' -> { language: '*' }\r\n if (selector === '*') {\r\n return 5;\r\n }\r\n else if (selector === candidateLanguage) {\r\n return 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else if (selector) {\r\n // filter -> select accordingly, use defaults for scheme\r\n const { language, pattern, scheme, hasAccessToAllModels } = selector; // TODO: microsoft/TypeScript#42768\r\n if (!candidateIsSynchronized && !hasAccessToAllModels) {\r\n return 0;\r\n }\r\n let ret = 0;\r\n if (scheme) {\r\n if (scheme === candidateUri.scheme) {\r\n ret = 10;\r\n }\r\n else if (scheme === '*') {\r\n ret = 5;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (language) {\r\n if (language === candidateLanguage) {\r\n ret = 10;\r\n }\r\n else if (language === '*') {\r\n ret = Math.max(ret, 5);\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (pattern) {\r\n let normalizedPattern;\r\n if (typeof pattern === 'string') {\r\n normalizedPattern = pattern;\r\n }\r\n else {\r\n // Since this pattern has a `base` property, we need\r\n // to normalize this path first before passing it on\r\n // because we will compare it against `Uri.fsPath`\r\n // which uses platform specific separators.\r\n // Refs: https://github.com/microsoft/vscode/issues/99938\r\n normalizedPattern = Object.assign(Object.assign({}, pattern), { base: normalize(pattern.base) });\r\n }\r\n if (normalizedPattern === candidateUri.fsPath || matchGlobPattern(normalizedPattern, candidateUri.fsPath)) {\r\n ret = 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { MovingAverage } from '../../../base/common/numbers.js';\r\nimport { score } from './languageSelector.js';\r\nimport { shouldSynchronizeModel } from '../services/modelService.js';\r\nfunction isExclusive(selector) {\r\n if (typeof selector === 'string') {\r\n return false;\r\n }\r\n else if (Array.isArray(selector)) {\r\n return selector.every(isExclusive);\r\n }\r\n else {\r\n return !!selector.exclusive; // TODO: microsoft/TypeScript#42768\r\n }\r\n}\r\nexport class LanguageFeatureRegistry {\r\n constructor() {\r\n this._clock = 0;\r\n this._entries = [];\r\n this._onDidChange = new Emitter();\r\n }\r\n get onDidChange() {\r\n return this._onDidChange.event;\r\n }\r\n register(selector, provider) {\r\n let entry = {\r\n selector,\r\n provider,\r\n _score: -1,\r\n _time: this._clock++\r\n };\r\n this._entries.push(entry);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n return toDisposable(() => {\r\n if (entry) {\r\n let idx = this._entries.indexOf(entry);\r\n if (idx >= 0) {\r\n this._entries.splice(idx, 1);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n entry = undefined;\r\n }\r\n }\r\n });\r\n }\r\n has(model) {\r\n return this.all(model).length > 0;\r\n }\r\n all(model) {\r\n if (!model) {\r\n return [];\r\n }\r\n this._updateScores(model);\r\n const result = [];\r\n // from registry\r\n for (let entry of this._entries) {\r\n if (entry._score > 0) {\r\n result.push(entry.provider);\r\n }\r\n }\r\n return result;\r\n }\r\n ordered(model) {\r\n const result = [];\r\n this._orderedForEach(model, entry => result.push(entry.provider));\r\n return result;\r\n }\r\n orderedGroups(model) {\r\n const result = [];\r\n let lastBucket;\r\n let lastBucketScore;\r\n this._orderedForEach(model, entry => {\r\n if (lastBucket && lastBucketScore === entry._score) {\r\n lastBucket.push(entry.provider);\r\n }\r\n else {\r\n lastBucketScore = entry._score;\r\n lastBucket = [entry.provider];\r\n result.push(lastBucket);\r\n }\r\n });\r\n return result;\r\n }\r\n _orderedForEach(model, callback) {\r\n if (!model) {\r\n return;\r\n }\r\n this._updateScores(model);\r\n for (const entry of this._entries) {\r\n if (entry._score > 0) {\r\n callback(entry);\r\n }\r\n }\r\n }\r\n _updateScores(model) {\r\n let candidate = {\r\n uri: model.uri.toString(),\r\n language: model.getLanguageIdentifier().language\r\n };\r\n if (this._lastCandidate\r\n && this._lastCandidate.language === candidate.language\r\n && this._lastCandidate.uri === candidate.uri) {\r\n // nothing has changed\r\n return;\r\n }\r\n this._lastCandidate = candidate;\r\n for (let entry of this._entries) {\r\n entry._score = score(entry.selector, model.uri, model.getLanguageIdentifier().language, shouldSynchronizeModel(model));\r\n if (isExclusive(entry.selector) && entry._score > 0) {\r\n // support for one exclusive selector that overwrites\r\n // any other selector\r\n for (let entry of this._entries) {\r\n entry._score = 0;\r\n }\r\n entry._score = 1000;\r\n break;\r\n }\r\n }\r\n // needs sorting\r\n this._entries.sort(LanguageFeatureRegistry._compareByScoreAndTime);\r\n }\r\n static _compareByScoreAndTime(a, b) {\r\n if (a._score < b._score) {\r\n return 1;\r\n }\r\n else if (a._score > b._score) {\r\n return -1;\r\n }\r\n else if (a._time < b._time) {\r\n return 1;\r\n }\r\n else if (a._time > b._time) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n}\r\n/**\r\n * Keeps moving average per model and set of providers so that requests\r\n * can be debounce according to the provider performance\r\n */\r\nexport class LanguageFeatureRequestDelays {\r\n constructor(_registry, min, max = Number.MAX_SAFE_INTEGER) {\r\n this._registry = _registry;\r\n this.min = min;\r\n this.max = max;\r\n this._cache = new LRUCache(50, 0.7);\r\n }\r\n _key(model) {\r\n return model.id + hash(this._registry.all(model));\r\n }\r\n _clamp(value) {\r\n if (value === undefined) {\r\n return this.min;\r\n }\r\n else {\r\n return Math.min(this.max, Math.max(this.min, Math.floor(value * 1.3)));\r\n }\r\n }\r\n get(model) {\r\n const key = this._key(model);\r\n const avg = this._cache.get(key);\r\n return this._clamp(avg === null || avg === void 0 ? void 0 : avg.value);\r\n }\r\n update(model, value) {\r\n const key = this._key(model);\r\n let avg = this._cache.get(key);\r\n if (!avg) {\r\n avg = new MovingAverage();\r\n this._cache.set(key, avg);\r\n }\r\n avg.update(value);\r\n return this.get(model);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nimport { LanguageConfigurationRegistry } from './languageConfigurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { Mimes } from '../../../base/common/mime.js';\r\n// Define extension point ids\r\nexport const Extensions = {\r\n ModesRegistry: 'editor.modesRegistry'\r\n};\r\nexport class EditorModesRegistry {\r\n constructor() {\r\n this._onDidChangeLanguages = new Emitter();\r\n this.onDidChangeLanguages = this._onDidChangeLanguages.event;\r\n this._languages = [];\r\n this._dynamicLanguages = [];\r\n }\r\n // --- languages\r\n registerLanguage(def) {\r\n this._languages.push(def);\r\n this._onDidChangeLanguages.fire(undefined);\r\n return {\r\n dispose: () => {\r\n for (let i = 0, len = this._languages.length; i < len; i++) {\r\n if (this._languages[i] === def) {\r\n this._languages.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLanguages() {\r\n return [].concat(this._languages).concat(this._dynamicLanguages);\r\n }\r\n}\r\nexport const ModesRegistry = new EditorModesRegistry();\r\nRegistry.add(Extensions.ModesRegistry, ModesRegistry);\r\nexport const PLAINTEXT_MODE_ID = 'plaintext';\r\nexport const PLAINTEXT_EXTENSION = '.txt';\r\nexport const PLAINTEXT_LANGUAGE_IDENTIFIER = new LanguageIdentifier(PLAINTEXT_MODE_ID, 1 /* PlainText */);\r\nModesRegistry.registerLanguage({\r\n id: PLAINTEXT_MODE_ID,\r\n extensions: [PLAINTEXT_EXTENSION],\r\n aliases: [nls.localize('plainText.alias', \"Plain Text\"), 'text'],\r\n mimetypes: [Mimes.text]\r\n});\r\nLanguageConfigurationRegistry.register(PLAINTEXT_LANGUAGE_IDENTIFIER, {\r\n brackets: [\r\n ['(', ')'],\r\n ['[', ']'],\r\n ['{', '}'],\r\n ],\r\n surroundingPairs: [\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '<', close: '>' },\r\n { open: '\\\"', close: '\\\"' },\r\n { open: '\\'', close: '\\'' },\r\n { open: '`', close: '`' },\r\n ],\r\n folding: {\r\n offSide: true\r\n }\r\n}, 0);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../core/token.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nclass NullStateImpl {\r\n clone() {\r\n return this;\r\n }\r\n equals(other) {\r\n return (this === other);\r\n }\r\n}\r\nexport const NULL_STATE = new NullStateImpl();\r\nexport const NULL_MODE_ID = 'vs.editor.nullMode';\r\nexport const NULL_LANGUAGE_IDENTIFIER = new LanguageIdentifier(NULL_MODE_ID, 0 /* Null */);\r\nexport function nullTokenize(modeId, buffer, state, deltaOffset) {\r\n return new TokenizationResult([new Token(deltaOffset, '', modeId)], state);\r\n}\r\nexport function nullTokenize2(languageId, buffer, state, deltaOffset) {\r\n let tokens = new Uint32Array(2);\r\n tokens[0] = deltaOffset;\r\n tokens[1] = ((languageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n return new TokenizationResult2(tokens, state === null ? NULL_STATE : state);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function createScopedLineTokens(context, offset) {\r\n let tokenCount = context.getCount();\r\n let tokenIndex = context.findTokenIndexAtOffset(offset);\r\n let desiredLanguageId = context.getLanguageId(tokenIndex);\r\n let lastTokenIndex = tokenIndex;\r\n while (lastTokenIndex + 1 < tokenCount && context.getLanguageId(lastTokenIndex + 1) === desiredLanguageId) {\r\n lastTokenIndex++;\r\n }\r\n let firstTokenIndex = tokenIndex;\r\n while (firstTokenIndex > 0 && context.getLanguageId(firstTokenIndex - 1) === desiredLanguageId) {\r\n firstTokenIndex--;\r\n }\r\n return new ScopedLineTokens(context, desiredLanguageId, firstTokenIndex, lastTokenIndex + 1, context.getStartOffset(firstTokenIndex), context.getEndOffset(lastTokenIndex));\r\n}\r\nexport class ScopedLineTokens {\r\n constructor(actual, languageId, firstTokenIndex, lastTokenIndex, firstCharOffset, lastCharOffset) {\r\n this._scopedLineTokensBrand = undefined;\r\n this._actual = actual;\r\n this.languageId = languageId;\r\n this._firstTokenIndex = firstTokenIndex;\r\n this._lastTokenIndex = lastTokenIndex;\r\n this.firstCharOffset = firstCharOffset;\r\n this._lastCharOffset = lastCharOffset;\r\n }\r\n getLineContent() {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(this.firstCharOffset, this._lastCharOffset);\r\n }\r\n getActualLineContentBefore(offset) {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(0, this.firstCharOffset + offset);\r\n }\r\n getTokenCount() {\r\n return this._lastTokenIndex - this._firstTokenIndex;\r\n }\r\n findTokenIndexAtOffset(offset) {\r\n return this._actual.findTokenIndexAtOffset(offset + this.firstCharOffset) - this._firstTokenIndex;\r\n }\r\n getStandardTokenType(tokenIndex) {\r\n return this._actual.getStandardTokenType(tokenIndex + this._firstTokenIndex);\r\n }\r\n}\r\nexport function ignoreBracketsInToken(standardTokenType) {\r\n return (standardTokenType & 7 /* value */) !== 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport * as stringBuilder from '../../core/stringBuilder.js';\r\nimport { Range } from '../../core/range.js';\r\nexport class RichEditBracket {\r\n constructor(languageIdentifier, index, open, close, forwardRegex, reversedRegex) {\r\n this._richEditBracketBrand = undefined;\r\n this.languageIdentifier = languageIdentifier;\r\n this.index = index;\r\n this.open = open;\r\n this.close = close;\r\n this.forwardRegex = forwardRegex;\r\n this.reversedRegex = reversedRegex;\r\n this._openSet = RichEditBracket._toSet(this.open);\r\n this._closeSet = RichEditBracket._toSet(this.close);\r\n }\r\n isOpen(text) {\r\n return this._openSet.has(text);\r\n }\r\n isClose(text) {\r\n return this._closeSet.has(text);\r\n }\r\n static _toSet(arr) {\r\n const result = new Set();\r\n for (const element of arr) {\r\n result.add(element);\r\n }\r\n return result;\r\n }\r\n}\r\nfunction groupFuzzyBrackets(brackets) {\r\n const N = brackets.length;\r\n brackets = brackets.map(b => [b[0].toLowerCase(), b[1].toLowerCase()]);\r\n const group = [];\r\n for (let i = 0; i < N; i++) {\r\n group[i] = i;\r\n }\r\n const areOverlapping = (a, b) => {\r\n const [aOpen, aClose] = a;\r\n const [bOpen, bClose] = b;\r\n return (aOpen === bOpen || aOpen === bClose || aClose === bOpen || aClose === bClose);\r\n };\r\n const mergeGroups = (g1, g2) => {\r\n const newG = Math.min(g1, g2);\r\n const oldG = Math.max(g1, g2);\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === oldG) {\r\n group[i] = newG;\r\n }\r\n }\r\n };\r\n // group together brackets that have the same open or the same close sequence\r\n for (let i = 0; i < N; i++) {\r\n const a = brackets[i];\r\n for (let j = i + 1; j < N; j++) {\r\n const b = brackets[j];\r\n if (areOverlapping(a, b)) {\r\n mergeGroups(group[i], group[j]);\r\n }\r\n }\r\n }\r\n const result = [];\r\n for (let g = 0; g < N; g++) {\r\n let currentOpen = [];\r\n let currentClose = [];\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === g) {\r\n const [open, close] = brackets[i];\r\n currentOpen.push(open);\r\n currentClose.push(close);\r\n }\r\n }\r\n if (currentOpen.length > 0) {\r\n result.push({\r\n open: currentOpen,\r\n close: currentClose\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\nexport class RichEditBrackets {\r\n constructor(languageIdentifier, _brackets) {\r\n this._richEditBracketsBrand = undefined;\r\n const brackets = groupFuzzyBrackets(_brackets);\r\n this.brackets = brackets.map((b, index) => {\r\n return new RichEditBracket(languageIdentifier, index, b.open, b.close, getRegexForBracketPair(b.open, b.close, brackets, index), getReversedRegexForBracketPair(b.open, b.close, brackets, index));\r\n });\r\n this.forwardRegex = getRegexForBrackets(this.brackets);\r\n this.reversedRegex = getReversedRegexForBrackets(this.brackets);\r\n this.textIsBracket = {};\r\n this.textIsOpenBracket = {};\r\n this.maxBracketLength = 0;\r\n for (const bracket of this.brackets) {\r\n for (const open of bracket.open) {\r\n this.textIsBracket[open] = bracket;\r\n this.textIsOpenBracket[open] = true;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, open.length);\r\n }\r\n for (const close of bracket.close) {\r\n this.textIsBracket[close] = bracket;\r\n this.textIsOpenBracket[close] = false;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, close.length);\r\n }\r\n }\r\n }\r\n}\r\nfunction collectSuperstrings(str, brackets, currentIndex, dest) {\r\n for (let i = 0, len = brackets.length; i < len; i++) {\r\n if (i === currentIndex) {\r\n continue;\r\n }\r\n const bracket = brackets[i];\r\n for (const open of bracket.open) {\r\n if (open.indexOf(str) >= 0) {\r\n dest.push(open);\r\n }\r\n }\r\n for (const close of bracket.close) {\r\n if (close.indexOf(str) >= 0) {\r\n dest.push(close);\r\n }\r\n }\r\n }\r\n}\r\nfunction lengthcmp(a, b) {\r\n return a.length - b.length;\r\n}\r\nfunction unique(arr) {\r\n if (arr.length <= 1) {\r\n return arr;\r\n }\r\n const result = [];\r\n const seen = new Set();\r\n for (const element of arr) {\r\n if (seen.has(element)) {\r\n continue;\r\n }\r\n result.push(element);\r\n seen.add(element);\r\n }\r\n return result;\r\n}\r\nfunction getRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction getRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction prepareBracketForRegExp(str) {\r\n // This bracket pair uses letters like e.g. \"begin\" - \"end\"\r\n const insertWordBoundaries = (/^[\\w ]+$/.test(str));\r\n str = strings.escapeRegExpCharacters(str);\r\n return (insertWordBoundaries ? `\\\\b${str}\\\\b` : str);\r\n}\r\nfunction createBracketOrRegExp(pieces) {\r\n let regexStr = `(${pieces.map(prepareBracketForRegExp).join(')|(')})`;\r\n return strings.createRegExp(regexStr, true);\r\n}\r\nconst toReversedString = (function () {\r\n function reverse(str) {\r\n if (stringBuilder.hasTextDecoder) {\r\n // create a Uint16Array and then use a TextDecoder to create a string\r\n const arr = new Uint16Array(str.length);\r\n let offset = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n arr[offset++] = str.charCodeAt(i);\r\n }\r\n return stringBuilder.getPlatformTextDecoder().decode(arr);\r\n }\r\n else {\r\n let result = [], resultLen = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n result[resultLen++] = str.charAt(i);\r\n }\r\n return result.join('');\r\n }\r\n }\r\n let lastInput = null;\r\n let lastOutput = null;\r\n return function toReversedString(str) {\r\n if (lastInput !== str) {\r\n lastInput = str;\r\n lastOutput = reverse(lastInput);\r\n }\r\n return lastOutput;\r\n };\r\n})();\r\nexport class BracketsUtils {\r\n static _findPrevBracketInText(reversedBracketRegex, lineNumber, reversedText, offset) {\r\n let m = reversedText.match(reversedBracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = reversedText.length - (m.index || 0);\r\n let matchLength = m[0].length;\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset - matchLength + 1, lineNumber, absoluteMatchOffset + 1);\r\n }\r\n static findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n // Because JS does not support backwards regex search, we search forwards in a reversed string with a reversed regex ;)\r\n const reversedLineText = toReversedString(lineText);\r\n const reversedSubstr = reversedLineText.substring(lineText.length - endOffset, lineText.length - startOffset);\r\n return this._findPrevBracketInText(reversedBracketRegex, lineNumber, reversedSubstr, startOffset);\r\n }\r\n static findNextBracketInText(bracketRegex, lineNumber, text, offset) {\r\n let m = text.match(bracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = m.index || 0;\r\n let matchLength = m[0].length;\r\n if (matchLength === 0) {\r\n return null;\r\n }\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset + 1, lineNumber, absoluteMatchOffset + 1 + matchLength);\r\n }\r\n static findNextBracketInRange(bracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n const substr = lineText.substring(startOffset, endOffset);\r\n return this.findNextBracketInText(bracketRegex, lineNumber, substr, startOffset);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { NULL_STATE, nullTokenize2 } from './nullMode.js';\r\nconst fallback = {\r\n getInitialState: () => NULL_STATE,\r\n tokenize2: (buffer, hasEOL, state, deltaOffset) => nullTokenize2(0 /* Null */, buffer, state, deltaOffset)\r\n};\r\nexport function tokenizeToString(text, tokenizationSupport = fallback) {\r\n return _tokenizeToString(text, tokenizationSupport || fallback);\r\n}\r\nexport function tokenizeLineToHTML(text, viewLineTokens, colorMap, startOffset, endOffset, tabSize, useNbsp) {\r\n let result = `
    `;\r\n let charIndex = startOffset;\r\n let tabsCharDelta = 0;\r\n for (let tokenIndex = 0, tokenCount = viewLineTokens.getCount(); tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenEndIndex = viewLineTokens.getEndOffset(tokenIndex);\r\n if (tokenEndIndex <= startOffset) {\r\n continue;\r\n }\r\n let partContent = '';\r\n for (; charIndex < tokenEndIndex && charIndex < endOffset; charIndex++) {\r\n const charCode = text.charCodeAt(charIndex);\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n let insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize;\r\n tabsCharDelta += insertSpacesCount - 1;\r\n while (insertSpacesCount > 0) {\r\n partContent += useNbsp ? ' ' : ' ';\r\n insertSpacesCount--;\r\n }\r\n break;\r\n case 60 /* LessThan */:\r\n partContent += '<';\r\n break;\r\n case 62 /* GreaterThan */:\r\n partContent += '>';\r\n break;\r\n case 38 /* Ampersand */:\r\n partContent += '&';\r\n break;\r\n case 0 /* Null */:\r\n partContent += '�';\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n partContent += '\\ufffd';\r\n break;\r\n case 13 /* CarriageReturn */:\r\n // zero width space, because carriage return would introduce a line break\r\n partContent += '​';\r\n break;\r\n case 32 /* Space */:\r\n partContent += useNbsp ? ' ' : ' ';\r\n break;\r\n default:\r\n partContent += String.fromCharCode(charCode);\r\n }\r\n }\r\n result += `${partContent}`;\r\n if (tokenEndIndex > endOffset || charIndex >= endOffset) {\r\n break;\r\n }\r\n }\r\n result += `
    `;\r\n return result;\r\n}\r\nfunction _tokenizeToString(text, tokenizationSupport) {\r\n let result = `
    `;\r\n let lines = strings.splitLines(text);\r\n let currentState = tokenizationSupport.getInitialState();\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n let line = lines[i];\r\n if (i > 0) {\r\n result += `
    `;\r\n }\r\n let tokenizationResult = tokenizationSupport.tokenize2(line, true, currentState, 0);\r\n LineTokens.convertToEndOffset(tokenizationResult.tokens, line.length);\r\n let lineTokens = new LineTokens(tokenizationResult.tokens, line);\r\n let viewLineTokens = lineTokens.inflate();\r\n let startOffset = 0;\r\n for (let j = 0, lenJ = viewLineTokens.getCount(); j < lenJ; j++) {\r\n const type = viewLineTokens.getClassName(j);\r\n const endIndex = viewLineTokens.getEndOffset(j);\r\n result += `${strings.escape(line.substring(startOffset, endIndex))}`;\r\n startOffset = endIndex;\r\n }\r\n currentState = tokenizationResult.endState;\r\n }\r\n result += `
    `;\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ID_EDITOR_WORKER_SERVICE = 'editorWorkerService';\r\nexport const IEditorWorkerService = createDecorator(ID_EDITOR_WORKER_SERVICE);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IMarkerDecorationsService = createDecorator('markerDecorationsService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModeService = createDecorator('modeService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModelService = createDecorator('modelService');\r\nexport function shouldSynchronizeModel(model) {\r\n return (!model.isTooLargeForSyncing() && !model.isForSimpleWidget);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextModelService = createDecorator('textModelService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport var AccessibilityHelpNLS;\r\n(function (AccessibilityHelpNLS) {\r\n AccessibilityHelpNLS.noSelection = nls.localize(\"noSelection\", \"No selection\");\r\n AccessibilityHelpNLS.singleSelectionRange = nls.localize(\"singleSelectionRange\", \"Line {0}, Column {1} ({2} selected)\");\r\n AccessibilityHelpNLS.singleSelection = nls.localize(\"singleSelection\", \"Line {0}, Column {1}\");\r\n AccessibilityHelpNLS.multiSelectionRange = nls.localize(\"multiSelectionRange\", \"{0} selections ({1} characters selected)\");\r\n AccessibilityHelpNLS.multiSelection = nls.localize(\"multiSelection\", \"{0} selections\");\r\n AccessibilityHelpNLS.emergencyConfOn = nls.localize(\"emergencyConfOn\", \"Now changing the setting `accessibilitySupport` to 'on'.\");\r\n AccessibilityHelpNLS.openingDocs = nls.localize(\"openingDocs\", \"Now opening the Editor Accessibility documentation page.\");\r\n AccessibilityHelpNLS.readonlyDiffEditor = nls.localize(\"readonlyDiffEditor\", \" in a read-only pane of a diff editor.\");\r\n AccessibilityHelpNLS.editableDiffEditor = nls.localize(\"editableDiffEditor\", \" in a pane of a diff editor.\");\r\n AccessibilityHelpNLS.readonlyEditor = nls.localize(\"readonlyEditor\", \" in a read-only code editor\");\r\n AccessibilityHelpNLS.editableEditor = nls.localize(\"editableEditor\", \" in a code editor\");\r\n AccessibilityHelpNLS.changeConfigToOnMac = nls.localize(\"changeConfigToOnMac\", \"To configure the editor to be optimized for usage with a Screen Reader press Command+E now.\");\r\n AccessibilityHelpNLS.changeConfigToOnWinLinux = nls.localize(\"changeConfigToOnWinLinux\", \"To configure the editor to be optimized for usage with a Screen Reader press Control+E now.\");\r\n AccessibilityHelpNLS.auto_on = nls.localize(\"auto_on\", \"The editor is configured to be optimized for usage with a Screen Reader.\");\r\n AccessibilityHelpNLS.auto_off = nls.localize(\"auto_off\", \"The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsg = nls.localize(\"tabFocusModeOnMsg\", \"Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsgNoKb = nls.localize(\"tabFocusModeOnMsgNoKb\", \"Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsg = nls.localize(\"tabFocusModeOffMsg\", \"Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsgNoKb = nls.localize(\"tabFocusModeOffMsgNoKb\", \"Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.openDocMac = nls.localize(\"openDocMac\", \"Press Command+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.openDocWinLinux = nls.localize(\"openDocWinLinux\", \"Press Control+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.outroMsg = nls.localize(\"outroMsg\", \"You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.\");\r\n AccessibilityHelpNLS.showAccessibilityHelpAction = nls.localize(\"showAccessibilityHelpAction\", \"Show Accessibility Help\");\r\n})(AccessibilityHelpNLS || (AccessibilityHelpNLS = {}));\r\nexport var InspectTokensNLS;\r\n(function (InspectTokensNLS) {\r\n InspectTokensNLS.inspectTokensAction = nls.localize('inspectTokens', \"Developer: Inspect Tokens\");\r\n})(InspectTokensNLS || (InspectTokensNLS = {}));\r\nexport var GoToLineNLS;\r\n(function (GoToLineNLS) {\r\n GoToLineNLS.gotoLineActionLabel = nls.localize('gotoLineActionLabel', \"Go to Line/Column...\");\r\n})(GoToLineNLS || (GoToLineNLS = {}));\r\nexport var QuickHelpNLS;\r\n(function (QuickHelpNLS) {\r\n QuickHelpNLS.helpQuickAccessActionLabel = nls.localize('helpQuickAccess', \"Show all Quick Access Providers\");\r\n})(QuickHelpNLS || (QuickHelpNLS = {}));\r\nexport var QuickCommandNLS;\r\n(function (QuickCommandNLS) {\r\n QuickCommandNLS.quickCommandActionLabel = nls.localize('quickCommandActionLabel', \"Command Palette\");\r\n QuickCommandNLS.quickCommandHelp = nls.localize('quickCommandActionHelp', \"Show And Run Commands\");\r\n})(QuickCommandNLS || (QuickCommandNLS = {}));\r\nexport var QuickOutlineNLS;\r\n(function (QuickOutlineNLS) {\r\n QuickOutlineNLS.quickOutlineActionLabel = nls.localize('quickOutlineActionLabel', \"Go to Symbol...\");\r\n QuickOutlineNLS.quickOutlineByCategoryActionLabel = nls.localize('quickOutlineByCategoryActionLabel', \"Go to Symbol by Category...\");\r\n})(QuickOutlineNLS || (QuickOutlineNLS = {}));\r\nexport var StandaloneCodeEditorNLS;\r\n(function (StandaloneCodeEditorNLS) {\r\n StandaloneCodeEditorNLS.editorViewAccessibleLabel = nls.localize('editorViewAccessibleLabel', \"Editor content\");\r\n StandaloneCodeEditorNLS.accessibilityHelpMessage = nls.localize('accessibilityHelpMessage', \"Press Alt+F1 for Accessibility Options.\");\r\n})(StandaloneCodeEditorNLS || (StandaloneCodeEditorNLS = {}));\r\nexport var ToggleHighContrastNLS;\r\n(function (ToggleHighContrastNLS) {\r\n ToggleHighContrastNLS.toggleHighContrast = nls.localize('toggleHighContrast', \"Toggle High Contrast Theme\");\r\n})(ToggleHighContrastNLS || (ToggleHighContrastNLS = {}));\r\nexport var SimpleServicesNLS;\r\n(function (SimpleServicesNLS) {\r\n SimpleServicesNLS.bulkEditServiceSummary = nls.localize('bulkEditServiceSummary', \"Made {0} edits in {1} files\");\r\n})(SimpleServicesNLS || (SimpleServicesNLS = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { activeContrastBorder, editorBackground, editorForeground, registerColor, editorWarningForeground, editorInfoForeground, editorWarningBorder, editorInfoBorder, contrastBorder, editorFindMatchHighlight } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\n/**\r\n * Definition of the editor colors\r\n */\r\nexport const editorLineHighlight = registerColor('editor.lineHighlightBackground', { dark: null, light: null, hc: null }, nls.localize('lineHighlight', 'Background color for the highlight of line at the cursor position.'));\r\nexport const editorLineHighlightBorder = registerColor('editor.lineHighlightBorder', { dark: '#282828', light: '#eeeeee', hc: '#f38518' }, nls.localize('lineHighlightBorderBox', 'Background color for the border around the line at the cursor position.'));\r\nexport const editorRangeHighlight = registerColor('editor.rangeHighlightBackground', { dark: '#ffffff0b', light: '#fdff0033', hc: null }, nls.localize('rangeHighlight', 'Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorRangeHighlightBorder = registerColor('editor.rangeHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('rangeHighlightBorder', 'Background color of the border around highlighted ranges.'), true);\r\nexport const editorSymbolHighlight = registerColor('editor.symbolHighlightBackground', { dark: editorFindMatchHighlight, light: editorFindMatchHighlight, hc: null }, nls.localize('symbolHighlight', 'Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorSymbolHighlightBorder = registerColor('editor.symbolHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('symbolHighlightBorder', 'Background color of the border around highlighted symbols.'), true);\r\nexport const editorCursorForeground = registerColor('editorCursor.foreground', { dark: '#AEAFAD', light: Color.black, hc: Color.white }, nls.localize('caret', 'Color of the editor cursor.'));\r\nexport const editorCursorBackground = registerColor('editorCursor.background', null, nls.localize('editorCursorBackground', 'The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.'));\r\nexport const editorWhitespaces = registerColor('editorWhitespace.foreground', { dark: '#e3e4e229', light: '#33333333', hc: '#e3e4e229' }, nls.localize('editorWhitespaces', 'Color of whitespace characters in the editor.'));\r\nexport const editorIndentGuides = registerColor('editorIndentGuide.background', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorIndentGuides', 'Color of the editor indentation guides.'));\r\nexport const editorActiveIndentGuides = registerColor('editorIndentGuide.activeBackground', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorActiveIndentGuide', 'Color of the active editor indentation guides.'));\r\nexport const editorLineNumbers = registerColor('editorLineNumber.foreground', { dark: '#858585', light: '#237893', hc: Color.white }, nls.localize('editorLineNumbers', 'Color of editor line numbers.'));\r\nconst deprecatedEditorActiveLineNumber = registerColor('editorActiveLineNumber.foreground', { dark: '#c6c6c6', light: '#0B216F', hc: activeContrastBorder }, nls.localize('editorActiveLineNumber', 'Color of editor active line number'), false, nls.localize('deprecatedEditorActiveLineNumber', 'Id is deprecated. Use \\'editorLineNumber.activeForeground\\' instead.'));\r\nexport const editorActiveLineNumber = registerColor('editorLineNumber.activeForeground', { dark: deprecatedEditorActiveLineNumber, light: deprecatedEditorActiveLineNumber, hc: deprecatedEditorActiveLineNumber }, nls.localize('editorActiveLineNumber', 'Color of editor active line number'));\r\nexport const editorRuler = registerColor('editorRuler.foreground', { dark: '#5A5A5A', light: Color.lightgrey, hc: Color.white }, nls.localize('editorRuler', 'Color of the editor rulers.'));\r\nexport const editorCodeLensForeground = registerColor('editorCodeLens.foreground', { dark: '#999999', light: '#919191', hc: '#999999' }, nls.localize('editorCodeLensForeground', 'Foreground color of editor CodeLens'));\r\nexport const editorBracketMatchBackground = registerColor('editorBracketMatch.background', { dark: '#0064001a', light: '#0064001a', hc: '#0064001a' }, nls.localize('editorBracketMatchBackground', 'Background color behind matching brackets'));\r\nexport const editorBracketMatchBorder = registerColor('editorBracketMatch.border', { dark: '#888', light: '#B9B9B9', hc: contrastBorder }, nls.localize('editorBracketMatchBorder', 'Color for matching brackets boxes'));\r\nexport const editorOverviewRulerBorder = registerColor('editorOverviewRuler.border', { dark: '#7f7f7f4d', light: '#7f7f7f4d', hc: '#7f7f7f4d' }, nls.localize('editorOverviewRulerBorder', 'Color of the overview ruler border.'));\r\nexport const editorOverviewRulerBackground = registerColor('editorOverviewRuler.background', null, nls.localize('editorOverviewRulerBackground', 'Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.'));\r\nexport const editorGutter = registerColor('editorGutter.background', { dark: editorBackground, light: editorBackground, hc: editorBackground }, nls.localize('editorGutter', 'Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.'));\r\nexport const editorUnnecessaryCodeBorder = registerColor('editorUnnecessaryCode.border', { dark: null, light: null, hc: Color.fromHex('#fff').transparent(0.8) }, nls.localize('unnecessaryCodeBorder', 'Border color of unnecessary (unused) source code in the editor.'));\r\nexport const editorUnnecessaryCodeOpacity = registerColor('editorUnnecessaryCode.opacity', { dark: Color.fromHex('#000a'), light: Color.fromHex('#0007'), hc: null }, nls.localize('unnecessaryCodeOpacity', 'Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the \\'editorUnnecessaryCode.border\\' theme color to underline unnecessary code instead of fading it out.'));\r\nexport const ghostTextBorder = registerColor('editorGhostText.border', { dark: null, light: null, hc: Color.fromHex('#fff').transparent(0.8) }, nls.localize('editorGhostTextBorder', 'Border color of ghost text in the editor.'));\r\nexport const ghostTextForeground = registerColor('editorGhostText.foreground', { dark: Color.fromHex('#ffffff56'), light: Color.fromHex('#0007'), hc: null }, nls.localize('editorGhostTextForeground', 'Foreground color of the ghost text in the editor.'));\r\nconst rulerRangeDefault = new Color(new RGBA(0, 122, 204, 0.6));\r\nexport const overviewRulerRangeHighlight = registerColor('editorOverviewRuler.rangeHighlightForeground', { dark: rulerRangeDefault, light: rulerRangeDefault, hc: rulerRangeDefault }, nls.localize('overviewRulerRangeHighlight', 'Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const overviewRulerError = registerColor('editorOverviewRuler.errorForeground', { dark: new Color(new RGBA(255, 18, 18, 0.7)), light: new Color(new RGBA(255, 18, 18, 0.7)), hc: new Color(new RGBA(255, 50, 50, 1)) }, nls.localize('overviewRuleError', 'Overview ruler marker color for errors.'));\r\nexport const overviewRulerWarning = registerColor('editorOverviewRuler.warningForeground', { dark: editorWarningForeground, light: editorWarningForeground, hc: editorWarningBorder }, nls.localize('overviewRuleWarning', 'Overview ruler marker color for warnings.'));\r\nexport const overviewRulerInfo = registerColor('editorOverviewRuler.infoForeground', { dark: editorInfoForeground, light: editorInfoForeground, hc: editorInfoBorder }, nls.localize('overviewRuleInfo', 'Overview ruler marker color for infos.'));\r\n// contains all color rules that used to defined in editor/browser/widget/editor.css\r\nregisterThemingParticipant((theme, collector) => {\r\n const background = theme.getColor(editorBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(editorForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor, .monaco-editor .inputarea.ime-input { color: ${foreground}; }`);\r\n }\r\n const gutter = theme.getColor(editorGutter);\r\n if (gutter) {\r\n collector.addRule(`.monaco-editor .margin { background-color: ${gutter}; }`);\r\n }\r\n const rangeHighlight = theme.getColor(editorRangeHighlight);\r\n if (rangeHighlight) {\r\n collector.addRule(`.monaco-editor .rangeHighlight { background-color: ${rangeHighlight}; }`);\r\n }\r\n const rangeHighlightBorder = theme.getColor(editorRangeHighlightBorder);\r\n if (rangeHighlightBorder) {\r\n collector.addRule(`.monaco-editor .rangeHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${rangeHighlightBorder}; }`);\r\n }\r\n const symbolHighlight = theme.getColor(editorSymbolHighlight);\r\n if (symbolHighlight) {\r\n collector.addRule(`.monaco-editor .symbolHighlight { background-color: ${symbolHighlight}; }`);\r\n }\r\n const symbolHighlightBorder = theme.getColor(editorSymbolHighlightBorder);\r\n if (symbolHighlightBorder) {\r\n collector.addRule(`.monaco-editor .symbolHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${symbolHighlightBorder}; }`);\r\n }\r\n const invisibles = theme.getColor(editorWhitespaces);\r\n if (invisibles) {\r\n collector.addRule(`.monaco-editor .mtkw { color: ${invisibles} !important; }`);\r\n collector.addRule(`.monaco-editor .mtkz { color: ${invisibles} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ColorZone {\r\n constructor(from, to, colorId) {\r\n this._colorZoneBrand = undefined;\r\n this.from = from | 0;\r\n this.to = to | 0;\r\n this.colorId = colorId | 0;\r\n }\r\n static compare(a, b) {\r\n if (a.colorId === b.colorId) {\r\n if (a.from === b.from) {\r\n return a.to - b.to;\r\n }\r\n return a.from - b.from;\r\n }\r\n return a.colorId - b.colorId;\r\n }\r\n}\r\n/**\r\n * A zone in the overview ruler\r\n */\r\nexport class OverviewRulerZone {\r\n constructor(startLineNumber, endLineNumber, color) {\r\n this._overviewRulerZoneBrand = undefined;\r\n this.startLineNumber = startLineNumber;\r\n this.endLineNumber = endLineNumber;\r\n this.color = color;\r\n this._colorZone = null;\r\n }\r\n static compare(a, b) {\r\n if (a.color === b.color) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.color < b.color ? -1 : 1;\r\n }\r\n setColorZone(colorZone) {\r\n this._colorZone = colorZone;\r\n }\r\n getColorZones() {\r\n return this._colorZone;\r\n }\r\n}\r\nexport class OverviewZoneManager {\r\n constructor(getVerticalOffsetForLine) {\r\n this._getVerticalOffsetForLine = getVerticalOffsetForLine;\r\n this._zones = [];\r\n this._colorZonesInvalid = false;\r\n this._lineHeight = 0;\r\n this._domWidth = 0;\r\n this._domHeight = 0;\r\n this._outerHeight = 0;\r\n this._pixelRatio = 1;\r\n this._lastAssignedId = 0;\r\n this._color2Id = Object.create(null);\r\n this._id2Color = [];\r\n }\r\n getId2Color() {\r\n return this._id2Color;\r\n }\r\n setZones(newZones) {\r\n this._zones = newZones;\r\n this._zones.sort(OverviewRulerZone.compare);\r\n }\r\n setLineHeight(lineHeight) {\r\n if (this._lineHeight === lineHeight) {\r\n return false;\r\n }\r\n this._lineHeight = lineHeight;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n setPixelRatio(pixelRatio) {\r\n this._pixelRatio = pixelRatio;\r\n this._colorZonesInvalid = true;\r\n }\r\n getDOMWidth() {\r\n return this._domWidth;\r\n }\r\n getCanvasWidth() {\r\n return this._domWidth * this._pixelRatio;\r\n }\r\n setDOMWidth(width) {\r\n if (this._domWidth === width) {\r\n return false;\r\n }\r\n this._domWidth = width;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n getDOMHeight() {\r\n return this._domHeight;\r\n }\r\n getCanvasHeight() {\r\n return this._domHeight * this._pixelRatio;\r\n }\r\n setDOMHeight(height) {\r\n if (this._domHeight === height) {\r\n return false;\r\n }\r\n this._domHeight = height;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n getOuterHeight() {\r\n return this._outerHeight;\r\n }\r\n setOuterHeight(outerHeight) {\r\n if (this._outerHeight === outerHeight) {\r\n return false;\r\n }\r\n this._outerHeight = outerHeight;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n resolveColorZones() {\r\n const colorZonesInvalid = this._colorZonesInvalid;\r\n const lineHeight = Math.floor(this._lineHeight); // @perf\r\n const totalHeight = Math.floor(this.getCanvasHeight()); // @perf\r\n const outerHeight = Math.floor(this._outerHeight); // @perf\r\n const heightRatio = totalHeight / outerHeight;\r\n const halfMinimumHeight = Math.floor(4 /* MINIMUM_HEIGHT */ * this._pixelRatio / 2);\r\n let allColorZones = [];\r\n for (let i = 0, len = this._zones.length; i < len; i++) {\r\n const zone = this._zones[i];\r\n if (!colorZonesInvalid) {\r\n const colorZone = zone.getColorZones();\r\n if (colorZone) {\r\n allColorZones.push(colorZone);\r\n continue;\r\n }\r\n }\r\n const y1 = Math.floor(heightRatio * (this._getVerticalOffsetForLine(zone.startLineNumber)));\r\n const y2 = Math.floor(heightRatio * (this._getVerticalOffsetForLine(zone.endLineNumber) + lineHeight));\r\n let ycenter = Math.floor((y1 + y2) / 2);\r\n let halfHeight = (y2 - ycenter);\r\n if (halfHeight < halfMinimumHeight) {\r\n halfHeight = halfMinimumHeight;\r\n }\r\n if (ycenter - halfHeight < 0) {\r\n ycenter = halfHeight;\r\n }\r\n if (ycenter + halfHeight > totalHeight) {\r\n ycenter = totalHeight - halfHeight;\r\n }\r\n const color = zone.color;\r\n let colorId = this._color2Id[color];\r\n if (!colorId) {\r\n colorId = (++this._lastAssignedId);\r\n this._color2Id[color] = colorId;\r\n this._id2Color[colorId] = color;\r\n }\r\n const colorZone = new ColorZone(ycenter - halfHeight, ycenter + halfHeight, colorId);\r\n zone.setColorZone(colorZone);\r\n allColorZones.push(colorZone);\r\n }\r\n this._colorZonesInvalid = false;\r\n allColorZones.sort(ColorZone.compare);\r\n return allColorZones;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nexport class LineDecoration {\r\n constructor(startColumn, endColumn, className, type) {\r\n this.startColumn = startColumn;\r\n this.endColumn = endColumn;\r\n this.className = className;\r\n this.type = type;\r\n this._lineDecorationBrand = undefined;\r\n }\r\n static _equals(a, b) {\r\n return (a.startColumn === b.startColumn\r\n && a.endColumn === b.endColumn\r\n && a.className === b.className\r\n && a.type === b.type);\r\n }\r\n static equalsArr(a, b) {\r\n const aLen = a.length;\r\n const bLen = b.length;\r\n if (aLen !== bLen) {\r\n return false;\r\n }\r\n for (let i = 0; i < aLen; i++) {\r\n if (!LineDecoration._equals(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static extractWrapped(arr, startOffset, endOffset) {\r\n if (arr.length === 0) {\r\n return arr;\r\n }\r\n const startColumn = startOffset + 1;\r\n const endColumn = endOffset + 1;\r\n const lineLength = endOffset - startOffset;\r\n const r = [];\r\n let rLength = 0;\r\n for (const dec of arr) {\r\n if (dec.endColumn <= startColumn || dec.startColumn >= endColumn) {\r\n continue;\r\n }\r\n r[rLength++] = new LineDecoration(Math.max(1, dec.startColumn - startColumn + 1), Math.min(lineLength + 1, dec.endColumn - startColumn + 1), dec.className, dec.type);\r\n }\r\n return r;\r\n }\r\n static filter(lineDecorations, lineNumber, minLineColumn, maxLineColumn) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n const range = d.range;\r\n if (range.endLineNumber < lineNumber || range.startLineNumber > lineNumber) {\r\n // Ignore decorations that sit outside this line\r\n continue;\r\n }\r\n if (range.isEmpty() && (d.type === 0 /* Regular */ || d.type === 3 /* RegularAffectingLetterSpacing */)) {\r\n // Ignore empty range decorations\r\n continue;\r\n }\r\n const startColumn = (range.startLineNumber === lineNumber ? range.startColumn : minLineColumn);\r\n const endColumn = (range.endLineNumber === lineNumber ? range.endColumn : maxLineColumn);\r\n result[resultLen++] = new LineDecoration(startColumn, endColumn, d.inlineClassName, d.type);\r\n }\r\n return result;\r\n }\r\n static _typeCompare(a, b) {\r\n const ORDER = [2, 0, 1, 3];\r\n return ORDER[a] - ORDER[b];\r\n }\r\n static compare(a, b) {\r\n if (a.startColumn !== b.startColumn) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n if (a.endColumn !== b.endColumn) {\r\n return a.endColumn - b.endColumn;\r\n }\r\n const typeCmp = LineDecoration._typeCompare(a.type, b.type);\r\n if (typeCmp !== 0) {\r\n return typeCmp;\r\n }\r\n if (a.className !== b.className) {\r\n return a.className < b.className ? -1 : 1;\r\n }\r\n return 0;\r\n }\r\n}\r\nexport class DecorationSegment {\r\n constructor(startOffset, endOffset, className, metadata) {\r\n this.startOffset = startOffset;\r\n this.endOffset = endOffset;\r\n this.className = className;\r\n this.metadata = metadata;\r\n }\r\n}\r\nclass Stack {\r\n constructor() {\r\n this.stopOffsets = [];\r\n this.classNames = [];\r\n this.metadata = [];\r\n this.count = 0;\r\n }\r\n static _metadata(metadata) {\r\n let result = 0;\r\n for (let i = 0, len = metadata.length; i < len; i++) {\r\n result |= metadata[i];\r\n }\r\n return result;\r\n }\r\n consumeLowerThan(maxStopOffset, nextStartOffset, result) {\r\n while (this.count > 0 && this.stopOffsets[0] < maxStopOffset) {\r\n let i = 0;\r\n // Take all equal stopping offsets\r\n while (i + 1 < this.count && this.stopOffsets[i] === this.stopOffsets[i + 1]) {\r\n i++;\r\n }\r\n // Basically we are consuming the first i + 1 elements of the stack\r\n result.push(new DecorationSegment(nextStartOffset, this.stopOffsets[i], this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = this.stopOffsets[i] + 1;\r\n // Consume them\r\n this.stopOffsets.splice(0, i + 1);\r\n this.classNames.splice(0, i + 1);\r\n this.metadata.splice(0, i + 1);\r\n this.count -= (i + 1);\r\n }\r\n if (this.count > 0 && nextStartOffset < maxStopOffset) {\r\n result.push(new DecorationSegment(nextStartOffset, maxStopOffset - 1, this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = maxStopOffset;\r\n }\r\n return nextStartOffset;\r\n }\r\n insert(stopOffset, className, metadata) {\r\n if (this.count === 0 || this.stopOffsets[this.count - 1] <= stopOffset) {\r\n // Insert at the end\r\n this.stopOffsets.push(stopOffset);\r\n this.classNames.push(className);\r\n this.metadata.push(metadata);\r\n }\r\n else {\r\n // Find the insertion position for `stopOffset`\r\n for (let i = 0; i < this.count; i++) {\r\n if (this.stopOffsets[i] >= stopOffset) {\r\n this.stopOffsets.splice(i, 0, stopOffset);\r\n this.classNames.splice(i, 0, className);\r\n this.metadata.splice(i, 0, metadata);\r\n break;\r\n }\r\n }\r\n }\r\n this.count++;\r\n return;\r\n }\r\n}\r\nexport class LineDecorationsNormalizer {\r\n /**\r\n * Normalize line decorations. Overlapping decorations will generate multiple segments\r\n */\r\n static normalize(lineContent, lineDecorations) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [];\r\n const stack = new Stack();\r\n let nextStartOffset = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n let startColumn = d.startColumn;\r\n let endColumn = d.endColumn;\r\n const className = d.className;\r\n const metadata = (d.type === 1 /* Before */\r\n ? 2 /* PSEUDO_BEFORE */\r\n : d.type === 2 /* After */\r\n ? 4 /* PSEUDO_AFTER */\r\n : 0);\r\n // If the position would end up in the middle of a high-low surrogate pair, we move it to before the pair\r\n if (startColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(startColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n startColumn--;\r\n }\r\n }\r\n if (endColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(endColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n endColumn--;\r\n }\r\n }\r\n const currentStartOffset = startColumn - 1;\r\n const currentEndOffset = endColumn - 2;\r\n nextStartOffset = stack.consumeLowerThan(currentStartOffset, nextStartOffset, result);\r\n if (stack.count === 0) {\r\n nextStartOffset = currentStartOffset;\r\n }\r\n stack.insert(currentEndOffset, className, metadata);\r\n }\r\n stack.consumeLowerThan(1073741824 /* MAX_SAFE_SMALL_INTEGER */, nextStartOffset, result);\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { createStringBuilder } from '../core/stringBuilder.js';\r\nimport { LineDecoration, LineDecorationsNormalizer } from './lineDecorations.js';\r\nclass LinePart {\r\n constructor(endIndex, type, metadata) {\r\n this._linePartBrand = undefined;\r\n this.endIndex = endIndex;\r\n this.type = type;\r\n this.metadata = metadata;\r\n }\r\n isWhitespace() {\r\n return (this.metadata & 1 /* IS_WHITESPACE_MASK */ ? true : false);\r\n }\r\n isPseudoAfter() {\r\n return (this.metadata & 4 /* PSEUDO_AFTER_MASK */ ? true : false);\r\n }\r\n}\r\nexport class LineRange {\r\n constructor(startIndex, endIndex) {\r\n this.startOffset = startIndex;\r\n this.endOffset = endIndex;\r\n }\r\n equals(otherLineRange) {\r\n return this.startOffset === otherLineRange.startOffset\r\n && this.endOffset === otherLineRange.endOffset;\r\n }\r\n}\r\nexport class RenderLineInput {\r\n constructor(useMonospaceOptimizations, canUseHalfwidthRightwardsArrow, lineContent, continuesWithWrappedLine, isBasicASCII, containsRTL, fauxIndentLength, lineTokens, lineDecorations, tabSize, startVisibleColumn, spaceWidth, middotWidth, wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, selectionsOnLine) {\r\n this.useMonospaceOptimizations = useMonospaceOptimizations;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = isBasicASCII;\r\n this.containsRTL = containsRTL;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.lineTokens = lineTokens;\r\n this.lineDecorations = lineDecorations.sort(LineDecoration.compare);\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.spaceWidth = spaceWidth;\r\n this.stopRenderingLineAfter = stopRenderingLineAfter;\r\n this.renderWhitespace = (renderWhitespace === 'all'\r\n ? 4 /* All */\r\n : renderWhitespace === 'boundary'\r\n ? 1 /* Boundary */\r\n : renderWhitespace === 'selection'\r\n ? 2 /* Selection */\r\n : renderWhitespace === 'trailing'\r\n ? 3 /* Trailing */\r\n : 0 /* None */);\r\n this.renderControlCharacters = renderControlCharacters;\r\n this.fontLigatures = fontLigatures;\r\n this.selectionsOnLine = selectionsOnLine && selectionsOnLine.sort((a, b) => a.startOffset < b.startOffset ? -1 : 1);\r\n const wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\r\n const middotDiff = Math.abs(middotWidth - spaceWidth);\r\n if (wsmiddotDiff < middotDiff) {\r\n this.renderSpaceWidth = wsmiddotWidth;\r\n this.renderSpaceCharCode = 0x2E31; // U+2E31 - WORD SEPARATOR MIDDLE DOT\r\n }\r\n else {\r\n this.renderSpaceWidth = middotWidth;\r\n this.renderSpaceCharCode = 0xB7; // U+00B7 - MIDDLE DOT\r\n }\r\n }\r\n sameSelection(otherSelections) {\r\n if (this.selectionsOnLine === null) {\r\n return otherSelections === null;\r\n }\r\n if (otherSelections === null) {\r\n return false;\r\n }\r\n if (otherSelections.length !== this.selectionsOnLine.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < this.selectionsOnLine.length; i++) {\r\n if (!this.selectionsOnLine[i].equals(otherSelections[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n equals(other) {\r\n return (this.useMonospaceOptimizations === other.useMonospaceOptimizations\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.lineContent === other.lineContent\r\n && this.continuesWithWrappedLine === other.continuesWithWrappedLine\r\n && this.isBasicASCII === other.isBasicASCII\r\n && this.containsRTL === other.containsRTL\r\n && this.fauxIndentLength === other.fauxIndentLength\r\n && this.tabSize === other.tabSize\r\n && this.startVisibleColumn === other.startVisibleColumn\r\n && this.spaceWidth === other.spaceWidth\r\n && this.renderSpaceWidth === other.renderSpaceWidth\r\n && this.renderSpaceCharCode === other.renderSpaceCharCode\r\n && this.stopRenderingLineAfter === other.stopRenderingLineAfter\r\n && this.renderWhitespace === other.renderWhitespace\r\n && this.renderControlCharacters === other.renderControlCharacters\r\n && this.fontLigatures === other.fontLigatures\r\n && LineDecoration.equalsArr(this.lineDecorations, other.lineDecorations)\r\n && this.lineTokens.equals(other.lineTokens)\r\n && this.sameSelection(other.selectionsOnLine));\r\n }\r\n}\r\nexport class DomPosition {\r\n constructor(partIndex, charIndex) {\r\n this.partIndex = partIndex;\r\n this.charIndex = charIndex;\r\n }\r\n}\r\n/**\r\n * Provides a both direction mapping between a line's character and its rendered position.\r\n */\r\nexport class CharacterMapping {\r\n constructor(length, partCount) {\r\n this.length = length;\r\n this._data = new Uint32Array(this.length);\r\n this._absoluteOffsets = new Uint32Array(this.length);\r\n }\r\n static getPartIndex(partData) {\r\n return (partData & 4294901760 /* PART_INDEX_MASK */) >>> 16 /* PART_INDEX_OFFSET */;\r\n }\r\n static getCharIndex(partData) {\r\n return (partData & 65535 /* CHAR_INDEX_MASK */) >>> 0 /* CHAR_INDEX_OFFSET */;\r\n }\r\n setColumnInfo(column, partIndex, charIndex, partAbsoluteOffset) {\r\n const partData = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n this._data[column - 1] = partData;\r\n this._absoluteOffsets[column - 1] = partAbsoluteOffset + charIndex;\r\n }\r\n getAbsoluteOffset(column) {\r\n if (this._absoluteOffsets.length === 0) {\r\n // No characters on this line\r\n return 0;\r\n }\r\n return this._absoluteOffsets[column - 1];\r\n }\r\n charOffsetToPartData(charOffset) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n if (charOffset < 0) {\r\n return this._data[0];\r\n }\r\n if (charOffset >= this.length) {\r\n return this._data[this.length - 1];\r\n }\r\n return this._data[charOffset];\r\n }\r\n getDomPosition(column) {\r\n const partData = this.charOffsetToPartData(column - 1);\r\n const partIndex = CharacterMapping.getPartIndex(partData);\r\n const charIndex = CharacterMapping.getCharIndex(partData);\r\n return new DomPosition(partIndex, charIndex);\r\n }\r\n getColumn(domPosition, partLength) {\r\n const charOffset = this.partDataToCharOffset(domPosition.partIndex, partLength, domPosition.charIndex);\r\n return charOffset + 1;\r\n }\r\n partDataToCharOffset(partIndex, partLength, charIndex) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n let searchEntry = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n let min = 0;\r\n let max = this.length - 1;\r\n while (min + 1 < max) {\r\n let mid = ((min + max) >>> 1);\r\n let midEntry = this._data[mid];\r\n if (midEntry === searchEntry) {\r\n return mid;\r\n }\r\n else if (midEntry > searchEntry) {\r\n max = mid;\r\n }\r\n else {\r\n min = mid;\r\n }\r\n }\r\n if (min === max) {\r\n return min;\r\n }\r\n let minEntry = this._data[min];\r\n let maxEntry = this._data[max];\r\n if (minEntry === searchEntry) {\r\n return min;\r\n }\r\n if (maxEntry === searchEntry) {\r\n return max;\r\n }\r\n let minPartIndex = CharacterMapping.getPartIndex(minEntry);\r\n let minCharIndex = CharacterMapping.getCharIndex(minEntry);\r\n let maxPartIndex = CharacterMapping.getPartIndex(maxEntry);\r\n let maxCharIndex;\r\n if (minPartIndex !== maxPartIndex) {\r\n // sitting between parts\r\n maxCharIndex = partLength;\r\n }\r\n else {\r\n maxCharIndex = CharacterMapping.getCharIndex(maxEntry);\r\n }\r\n let minEntryDistance = charIndex - minCharIndex;\r\n let maxEntryDistance = maxCharIndex - charIndex;\r\n if (minEntryDistance <= maxEntryDistance) {\r\n return min;\r\n }\r\n return max;\r\n }\r\n}\r\nexport class RenderLineOutput {\r\n constructor(characterMapping, containsRTL, containsForeignElements) {\r\n this._renderLineOutputBrand = undefined;\r\n this.characterMapping = characterMapping;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine(input, sb) {\r\n if (input.lineContent.length === 0) {\r\n if (input.lineDecorations.length > 0) {\r\n // This line is empty, but it contains inline decorations\r\n sb.appendASCIIString(``);\r\n let beforeCount = 0;\r\n let afterCount = 0;\r\n let containsForeignElements = 0 /* None */;\r\n for (const lineDecoration of input.lineDecorations) {\r\n if (lineDecoration.type === 1 /* Before */ || lineDecoration.type === 2 /* After */) {\r\n sb.appendASCIIString(``);\r\n if (lineDecoration.type === 1 /* Before */) {\r\n containsForeignElements |= 1 /* Before */;\r\n beforeCount++;\r\n }\r\n if (lineDecoration.type === 2 /* After */) {\r\n containsForeignElements |= 2 /* After */;\r\n afterCount++;\r\n }\r\n }\r\n }\r\n sb.appendASCIIString(``);\r\n const characterMapping = new CharacterMapping(1, beforeCount + afterCount);\r\n characterMapping.setColumnInfo(1, beforeCount, 0, 0);\r\n return new RenderLineOutput(characterMapping, false, containsForeignElements);\r\n }\r\n // completely empty line\r\n sb.appendASCIIString('');\r\n return new RenderLineOutput(new CharacterMapping(0, 0), false, 0 /* None */);\r\n }\r\n return _renderLine(resolveRenderLineInput(input), sb);\r\n}\r\nexport class RenderLineOutput2 {\r\n constructor(characterMapping, html, containsRTL, containsForeignElements) {\r\n this.characterMapping = characterMapping;\r\n this.html = html;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine2(input) {\r\n let sb = createStringBuilder(10000);\r\n let out = renderViewLine(input, sb);\r\n return new RenderLineOutput2(out.characterMapping, sb.build(), out.containsRTL, out.containsForeignElements);\r\n}\r\nclass ResolvedRenderLineInput {\r\n constructor(fontIsMonospace, canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, parts, containsForeignElements, fauxIndentLength, tabSize, startVisibleColumn, containsRTL, spaceWidth, renderSpaceCharCode, renderWhitespace, renderControlCharacters) {\r\n this.fontIsMonospace = fontIsMonospace;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.len = len;\r\n this.isOverflowing = isOverflowing;\r\n this.parts = parts;\r\n this.containsForeignElements = containsForeignElements;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.containsRTL = containsRTL;\r\n this.spaceWidth = spaceWidth;\r\n this.renderSpaceCharCode = renderSpaceCharCode;\r\n this.renderWhitespace = renderWhitespace;\r\n this.renderControlCharacters = renderControlCharacters;\r\n //\r\n }\r\n}\r\nfunction resolveRenderLineInput(input) {\r\n const lineContent = input.lineContent;\r\n let isOverflowing;\r\n let len;\r\n if (input.stopRenderingLineAfter !== -1 && input.stopRenderingLineAfter < lineContent.length) {\r\n isOverflowing = true;\r\n len = input.stopRenderingLineAfter;\r\n }\r\n else {\r\n isOverflowing = false;\r\n len = lineContent.length;\r\n }\r\n let tokens = transformAndRemoveOverflowing(input.lineTokens, input.fauxIndentLength, len);\r\n if (input.renderWhitespace === 4 /* All */ ||\r\n input.renderWhitespace === 1 /* Boundary */ ||\r\n (input.renderWhitespace === 2 /* Selection */ && !!input.selectionsOnLine) ||\r\n input.renderWhitespace === 3 /* Trailing */) {\r\n tokens = _applyRenderWhitespace(input, lineContent, len, tokens);\r\n }\r\n let containsForeignElements = 0 /* None */;\r\n if (input.lineDecorations.length > 0) {\r\n for (let i = 0, len = input.lineDecorations.length; i < len; i++) {\r\n const lineDecoration = input.lineDecorations[i];\r\n if (lineDecoration.type === 3 /* RegularAffectingLetterSpacing */) {\r\n // Pretend there are foreign elements... although not 100% accurate.\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 1 /* Before */) {\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 2 /* After */) {\r\n containsForeignElements |= 2 /* After */;\r\n }\r\n }\r\n tokens = _applyInlineDecorations(lineContent, len, tokens, input.lineDecorations);\r\n }\r\n if (!input.containsRTL) {\r\n // We can never split RTL text, as it ruins the rendering\r\n tokens = splitLargeTokens(lineContent, tokens, !input.isBasicASCII || input.fontLigatures);\r\n }\r\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);\r\n}\r\n/**\r\n * In the rendering phase, characters are always looped until token.endIndex.\r\n * Ensure that all tokens end before `len` and the last one ends precisely at `len`.\r\n */\r\nfunction transformAndRemoveOverflowing(tokens, fauxIndentLength, len) {\r\n let result = [], resultLen = 0;\r\n // The faux indent part of the line should have no token type\r\n if (fauxIndentLength > 0) {\r\n result[resultLen++] = new LinePart(fauxIndentLength, '', 0);\r\n }\r\n for (let tokenIndex = 0, tokensLen = tokens.getCount(); tokenIndex < tokensLen; tokenIndex++) {\r\n const endIndex = tokens.getEndOffset(tokenIndex);\r\n if (endIndex <= fauxIndentLength) {\r\n // The faux indent part of the line should have no token type\r\n continue;\r\n }\r\n const type = tokens.getClassName(tokenIndex);\r\n if (endIndex >= len) {\r\n result[resultLen++] = new LinePart(len, type, 0);\r\n break;\r\n }\r\n result[resultLen++] = new LinePart(endIndex, type, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * See https://github.com/microsoft/vscode/issues/6885.\r\n * It appears that having very large spans causes very slow reading of character positions.\r\n * So here we try to avoid that.\r\n */\r\nfunction splitLargeTokens(lineContent, tokens, onlyAtSpaces) {\r\n let lastTokenEndIndex = 0;\r\n let result = [], resultLen = 0;\r\n if (onlyAtSpaces) {\r\n // Split only at spaces => we need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n if (lastTokenEndIndex + 50 /* LongToken */ < tokenEndIndex) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n let lastSpaceOffset = -1;\r\n let currTokenStart = lastTokenEndIndex;\r\n for (let j = lastTokenEndIndex; j < tokenEndIndex; j++) {\r\n if (lineContent.charCodeAt(j) === 32 /* Space */) {\r\n lastSpaceOffset = j;\r\n }\r\n if (lastSpaceOffset !== -1 && j - currTokenStart >= 50 /* LongToken */) {\r\n // Split at `lastSpaceOffset` + 1\r\n result[resultLen++] = new LinePart(lastSpaceOffset + 1, tokenType, tokenMetadata);\r\n currTokenStart = lastSpaceOffset + 1;\r\n lastSpaceOffset = -1;\r\n }\r\n }\r\n if (currTokenStart !== tokenEndIndex) {\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n else {\r\n // Split anywhere => we don't need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n let diff = (tokenEndIndex - lastTokenEndIndex);\r\n if (diff > 50 /* LongToken */) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n const piecesCount = Math.ceil(diff / 50 /* LongToken */);\r\n for (let j = 1; j < piecesCount; j++) {\r\n let pieceEndIndex = lastTokenEndIndex + (j * 50 /* LongToken */);\r\n result[resultLen++] = new LinePart(pieceEndIndex, tokenType, tokenMetadata);\r\n }\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Whitespace is rendered by \"replacing\" tokens with a special-purpose `mtkw` type that is later recognized in the rendering phase.\r\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  .\r\n * The rendering phase will generate `style=\"width:...\"` for these tokens.\r\n */\r\nfunction _applyRenderWhitespace(input, lineContent, len, tokens) {\r\n const continuesWithWrappedLine = input.continuesWithWrappedLine;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const useMonospaceOptimizations = input.useMonospaceOptimizations;\r\n const selections = input.selectionsOnLine;\r\n const onlyBoundary = (input.renderWhitespace === 1 /* Boundary */);\r\n const onlyTrailing = (input.renderWhitespace === 3 /* Trailing */);\r\n const generateLinePartForEachWhitespace = (input.renderSpaceWidth !== input.spaceWidth);\r\n let result = [], resultLen = 0;\r\n let tokenIndex = 0;\r\n let tokenType = tokens[tokenIndex].type;\r\n let tokenEndIndex = tokens[tokenIndex].endIndex;\r\n const tokensLength = tokens.length;\r\n let lineIsEmptyOrWhitespace = false;\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n let lastNonWhitespaceIndex;\r\n if (firstNonWhitespaceIndex === -1) {\r\n lineIsEmptyOrWhitespace = true;\r\n firstNonWhitespaceIndex = len;\r\n lastNonWhitespaceIndex = len;\r\n }\r\n else {\r\n lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\r\n }\r\n let wasInWhitespace = false;\r\n let currentSelectionIndex = 0;\r\n let currentSelection = selections && selections[currentSelectionIndex];\r\n let tmpIndent = startVisibleColumn % tabSize;\r\n for (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\r\n const chCode = lineContent.charCodeAt(charIndex);\r\n if (currentSelection && charIndex >= currentSelection.endOffset) {\r\n currentSelectionIndex++;\r\n currentSelection = selections && selections[currentSelectionIndex];\r\n }\r\n let isInWhitespace;\r\n if (charIndex < firstNonWhitespaceIndex || charIndex > lastNonWhitespaceIndex) {\r\n // in leading or trailing whitespace\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n // a tab character is rendered both in all and boundary cases\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 32 /* Space */) {\r\n // hit a space character\r\n if (onlyBoundary) {\r\n // rendering only boundary whitespace\r\n if (wasInWhitespace) {\r\n isInWhitespace = true;\r\n }\r\n else {\r\n const nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : 0 /* Null */);\r\n isInWhitespace = (nextChCode === 32 /* Space */ || nextChCode === 9 /* Tab */);\r\n }\r\n }\r\n else {\r\n isInWhitespace = true;\r\n }\r\n }\r\n else {\r\n isInWhitespace = false;\r\n }\r\n // If rendering whitespace on selection, check that the charIndex falls within a selection\r\n if (isInWhitespace && selections) {\r\n isInWhitespace = !!currentSelection && currentSelection.startOffset <= charIndex && currentSelection.endOffset > charIndex;\r\n }\r\n // If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\r\n if (isInWhitespace && onlyTrailing) {\r\n isInWhitespace = lineIsEmptyOrWhitespace || charIndex > lastNonWhitespaceIndex;\r\n }\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (!isInWhitespace || (!useMonospaceOptimizations && tmpIndent >= tabSize)) {\r\n // leaving whitespace token or entering a new indent\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= charIndex; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(charIndex, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n else {\r\n // was in regular token\r\n if (charIndex === tokenEndIndex || (isInWhitespace && charIndex > fauxIndentLength)) {\r\n result[resultLen++] = new LinePart(charIndex, tokenType, 0);\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n if (chCode === 9 /* Tab */) {\r\n tmpIndent = tabSize;\r\n }\r\n else if (strings.isFullWidthCharacter(chCode)) {\r\n tmpIndent += 2;\r\n }\r\n else {\r\n tmpIndent++;\r\n }\r\n wasInWhitespace = isInWhitespace;\r\n while (charIndex === tokenEndIndex) {\r\n tokenIndex++;\r\n if (tokenIndex < tokensLength) {\r\n tokenType = tokens[tokenIndex].type;\r\n tokenEndIndex = tokens[tokenIndex].endIndex;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n let generateWhitespace = false;\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (continuesWithWrappedLine && onlyBoundary) {\r\n let lastCharCode = (len > 0 ? lineContent.charCodeAt(len - 1) : 0 /* Null */);\r\n let prevCharCode = (len > 1 ? lineContent.charCodeAt(len - 2) : 0 /* Null */);\r\n let isSingleTrailingSpace = (lastCharCode === 32 /* Space */ && (prevCharCode !== 32 /* Space */ && prevCharCode !== 9 /* Tab */));\r\n if (!isSingleTrailingSpace) {\r\n generateWhitespace = true;\r\n }\r\n }\r\n else {\r\n generateWhitespace = true;\r\n }\r\n }\r\n if (generateWhitespace) {\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= len; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, tokenType, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Inline decorations are \"merged\" on top of tokens.\r\n * Special care must be taken when multiple inline decorations are at play and they overlap.\r\n */\r\nfunction _applyInlineDecorations(lineContent, len, tokens, _lineDecorations) {\r\n _lineDecorations.sort(LineDecoration.compare);\r\n const lineDecorations = LineDecorationsNormalizer.normalize(lineContent, _lineDecorations);\r\n const lineDecorationsLen = lineDecorations.length;\r\n let lineDecorationIndex = 0;\r\n let result = [], resultLen = 0, lastResultEndIndex = 0;\r\n for (let tokenIndex = 0, len = tokens.length; tokenIndex < len; tokenIndex++) {\r\n const token = tokens[tokenIndex];\r\n const tokenEndIndex = token.endIndex;\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset < tokenEndIndex) {\r\n const lineDecoration = lineDecorations[lineDecorationIndex];\r\n if (lineDecoration.startOffset > lastResultEndIndex) {\r\n lastResultEndIndex = lineDecoration.startOffset;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n if (lineDecoration.endOffset + 1 <= tokenEndIndex) {\r\n // This line decoration ends before this token ends\r\n lastResultEndIndex = lineDecoration.endOffset + 1;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n lineDecorationIndex++;\r\n }\r\n else {\r\n // This line decoration continues on to the next token\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n break;\r\n }\r\n }\r\n if (tokenEndIndex > lastResultEndIndex) {\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n const lastTokenEndIndex = tokens[tokens.length - 1].endIndex;\r\n if (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n const lineDecoration = lineDecorations[lineDecorationIndex];\r\n result[resultLen++] = new LinePart(lastResultEndIndex, lineDecoration.className, lineDecoration.metadata);\r\n lineDecorationIndex++;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * This function is on purpose not split up into multiple functions to allow runtime type inference (i.e. performance reasons).\r\n * Notice how all the needed data is fully resolved and passed in (i.e. no other calls).\r\n */\r\nfunction _renderLine(input, sb) {\r\n const fontIsMonospace = input.fontIsMonospace;\r\n const canUseHalfwidthRightwardsArrow = input.canUseHalfwidthRightwardsArrow;\r\n const containsForeignElements = input.containsForeignElements;\r\n const lineContent = input.lineContent;\r\n const len = input.len;\r\n const isOverflowing = input.isOverflowing;\r\n const parts = input.parts;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const containsRTL = input.containsRTL;\r\n const spaceWidth = input.spaceWidth;\r\n const renderSpaceCharCode = input.renderSpaceCharCode;\r\n const renderWhitespace = input.renderWhitespace;\r\n const renderControlCharacters = input.renderControlCharacters;\r\n const characterMapping = new CharacterMapping(len + 1, parts.length);\r\n let lastCharacterMappingDefined = false;\r\n let charIndex = 0;\r\n let visibleColumn = startVisibleColumn;\r\n let charOffsetInPart = 0;\r\n let partDisplacement = 0;\r\n let prevPartContentCnt = 0;\r\n let partAbsoluteOffset = 0;\r\n if (containsRTL) {\r\n sb.appendASCIIString('');\r\n }\r\n else {\r\n sb.appendASCIIString('');\r\n }\r\n for (let partIndex = 0, tokensLen = parts.length; partIndex < tokensLen; partIndex++) {\r\n partAbsoluteOffset += prevPartContentCnt;\r\n const part = parts[partIndex];\r\n const partEndIndex = part.endIndex;\r\n const partType = part.type;\r\n const partRendersWhitespace = (renderWhitespace !== 0 /* None */ && part.isWhitespace());\r\n const partRendersWhitespaceWithWidth = partRendersWhitespace && !fontIsMonospace && (partType === 'mtkw' /*only whitespace*/ || !containsForeignElements);\r\n const partIsEmptyAndHasPseudoAfter = (charIndex === partEndIndex && part.isPseudoAfter());\r\n charOffsetInPart = 0;\r\n sb.appendASCIIString('= fauxIndentLength) {\r\n _visibleColumn += charWidth;\r\n }\r\n }\r\n }\r\n if (partRendersWhitespaceWithWidth) {\r\n sb.appendASCIIString(' style=\"width:');\r\n sb.appendASCIIString(String(spaceWidth * partContentCnt));\r\n sb.appendASCIIString('px\"');\r\n }\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let charWidth;\r\n if (charCode === 9 /* Tab */) {\r\n charWidth = (tabSize - (visibleColumn % tabSize)) | 0;\r\n if (!canUseHalfwidthRightwardsArrow || charWidth > 1) {\r\n sb.write1(0x2192); // RIGHTWARDS ARROW\r\n }\r\n else {\r\n sb.write1(0xFFEB); // HALFWIDTH RIGHTWARDS ARROW\r\n }\r\n for (let space = 2; space <= charWidth; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n }\r\n else { // must be CharCode.Space\r\n charWidth = 1;\r\n sb.write1(renderSpaceCharCode); // · or word separator middle dot\r\n }\r\n charOffsetInPart += charWidth;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n else {\r\n let partContentCnt = 0;\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let producedCharacters = 1;\r\n let charWidth = 1;\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n producedCharacters = (tabSize - (visibleColumn % tabSize));\r\n charWidth = producedCharacters;\r\n for (let space = 1; space <= producedCharacters; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n break;\r\n case 32 /* Space */:\r\n sb.write1(0xA0); //  \r\n break;\r\n case 60 /* LessThan */:\r\n sb.appendASCIIString('<');\r\n break;\r\n case 62 /* GreaterThan */:\r\n sb.appendASCIIString('>');\r\n break;\r\n case 38 /* Ampersand */:\r\n sb.appendASCIIString('&');\r\n break;\r\n case 0 /* Null */:\r\n if (renderControlCharacters) {\r\n // See https://unicode-table.com/en/blocks/control-pictures/\r\n sb.write1(9216);\r\n }\r\n else {\r\n sb.appendASCIIString('�');\r\n }\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n sb.write1(0xFFFD);\r\n break;\r\n default:\r\n if (strings.isFullWidthCharacter(charCode)) {\r\n charWidth++;\r\n }\r\n // See https://unicode-table.com/en/blocks/control-pictures/\r\n if (renderControlCharacters && charCode < 32) {\r\n sb.write1(9216 + charCode);\r\n }\r\n else if (renderControlCharacters && charCode === 127) {\r\n // DEL\r\n sb.write1(9249);\r\n }\r\n else {\r\n sb.write1(charCode);\r\n }\r\n }\r\n charOffsetInPart += producedCharacters;\r\n partContentCnt += producedCharacters;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n if (partIsEmptyAndHasPseudoAfter) {\r\n partDisplacement++;\r\n }\r\n else {\r\n partDisplacement = 0;\r\n }\r\n if (charIndex >= len && !lastCharacterMappingDefined && part.isPseudoAfter()) {\r\n lastCharacterMappingDefined = true;\r\n characterMapping.setColumnInfo(charIndex + 1, partIndex, charOffsetInPart, partAbsoluteOffset);\r\n }\r\n sb.appendASCIIString('');\r\n }\r\n if (!lastCharacterMappingDefined) {\r\n // When getting client rects for the last character, we will position the\r\n // text range at the end of the span, insteaf of at the beginning of next span\r\n characterMapping.setColumnInfo(len + 1, parts.length - 1, charOffsetInPart, partAbsoluteOffset);\r\n }\r\n if (isOverflowing) {\r\n sb.appendASCIIString('');\r\n }\r\n sb.appendASCIIString('');\r\n return new RenderLineOutput(characterMapping, containsRTL, containsForeignElements);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint32 } from '../../../base/common/uint.js';\r\nexport class PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this._prefixSumIndexOfResultBrand = undefined;\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nexport class PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = toUint32(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = toUint32(index);\r\n value = toUint32(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, count) {\r\n startIndex = toUint32(startIndex);\r\n count = toUint32(count);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCount = oldValues.length - startIndex;\r\n if (count >= maxCount) {\r\n count = maxCount;\r\n }\r\n if (count === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - count);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + count), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalSum() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getPrefixSum(this.values.length - 1);\r\n }\r\n getPrefixSum(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = toUint32(index);\r\n return this._getPrefixSum(index);\r\n }\r\n _getPrefixSum(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(sum) {\r\n sum = Math.floor(sum); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalSum();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (sum < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (sum >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, sum - midStart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nexport class Viewport {\r\n constructor(top, left, width, height) {\r\n this._viewportBrand = undefined;\r\n this.top = top | 0;\r\n this.left = left | 0;\r\n this.width = width | 0;\r\n this.height = height | 0;\r\n }\r\n}\r\nexport class OutputPosition {\r\n constructor(outputLineIndex, outputOffset) {\r\n this.outputLineIndex = outputLineIndex;\r\n this.outputOffset = outputOffset;\r\n }\r\n toString() {\r\n return `${this.outputLineIndex}:${this.outputOffset}`;\r\n }\r\n toPosition(baseLineNumber, wrappedTextIndentLength) {\r\n const delta = (this.outputLineIndex > 0 ? wrappedTextIndentLength : 0);\r\n return new Position(baseLineNumber + this.outputLineIndex, delta + this.outputOffset + 1);\r\n }\r\n}\r\nexport class LineBreakData {\r\n constructor(breakOffsets, breakOffsetsVisibleColumn, wrappedTextIndentLength, injectionOffsets, injectionOptions) {\r\n this.breakOffsets = breakOffsets;\r\n this.breakOffsetsVisibleColumn = breakOffsetsVisibleColumn;\r\n this.wrappedTextIndentLength = wrappedTextIndentLength;\r\n this.injectionOffsets = injectionOffsets;\r\n this.injectionOptions = injectionOptions;\r\n }\r\n getInputOffsetOfOutputPosition(outputLineIndex, outputOffset) {\r\n let inputOffset = 0;\r\n if (outputLineIndex === 0) {\r\n inputOffset = outputOffset;\r\n }\r\n else {\r\n inputOffset = this.breakOffsets[outputLineIndex - 1] + outputOffset;\r\n }\r\n if (this.injectionOffsets !== null) {\r\n for (let i = 0; i < this.injectionOffsets.length; i++) {\r\n if (inputOffset > this.injectionOffsets[i]) {\r\n if (inputOffset < this.injectionOffsets[i] + this.injectionOptions[i].content.length) {\r\n // `inputOffset` is within injected text\r\n inputOffset = this.injectionOffsets[i];\r\n }\r\n else {\r\n inputOffset -= this.injectionOptions[i].content.length;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return inputOffset;\r\n }\r\n getOutputPositionOfInputOffset(inputOffset, affinity = 2 /* None */) {\r\n let delta = 0;\r\n if (this.injectionOffsets !== null) {\r\n for (let i = 0; i < this.injectionOffsets.length; i++) {\r\n if (inputOffset < this.injectionOffsets[i]) {\r\n break;\r\n }\r\n if (affinity !== 1 /* Right */ && inputOffset === this.injectionOffsets[i]) {\r\n break;\r\n }\r\n delta += this.injectionOptions[i].content.length;\r\n }\r\n }\r\n inputOffset += delta;\r\n return this.getOutputPositionOfOffsetInUnwrappedLine(inputOffset, affinity);\r\n }\r\n getOutputPositionOfOffsetInUnwrappedLine(inputOffset, affinity = 2 /* None */) {\r\n let low = 0;\r\n let high = this.breakOffsets.length - 1;\r\n let mid = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n const midStop = this.breakOffsets[mid];\r\n midStart = mid > 0 ? this.breakOffsets[mid - 1] : 0;\r\n if (affinity === 0 /* Left */) {\r\n if (inputOffset <= midStart) {\r\n high = mid - 1;\r\n }\r\n else if (inputOffset > midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n if (inputOffset < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (inputOffset >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return new OutputPosition(mid, inputOffset - midStart);\r\n }\r\n outputPositionToOffsetInUnwrappedLine(outputLineIndex, outputOffset) {\r\n let result = (outputLineIndex > 0 ? this.breakOffsets[outputLineIndex - 1] : 0) + outputOffset;\r\n if (outputLineIndex > 0) {\r\n result -= this.wrappedTextIndentLength;\r\n }\r\n return result;\r\n }\r\n normalizeOffsetAroundInjections(offsetInUnwrappedLine, affinity) {\r\n const injectedText = this.getInjectedTextAtOffset(offsetInUnwrappedLine);\r\n if (!injectedText) {\r\n return offsetInUnwrappedLine;\r\n }\r\n if (affinity === 2 /* None */) {\r\n if (offsetInUnwrappedLine === injectedText.offsetInUnwrappedLine + injectedText.length) {\r\n // go to the end of this injected text\r\n return injectedText.offsetInUnwrappedLine + injectedText.length;\r\n }\r\n else {\r\n // go to the start of this injected text\r\n return injectedText.offsetInUnwrappedLine;\r\n }\r\n }\r\n if (affinity === 1 /* Right */) {\r\n let result = injectedText.offsetInUnwrappedLine + injectedText.length;\r\n let index = injectedText.injectedTextIndex;\r\n // traverse all injected text that touch eachother\r\n while (index + 1 < this.injectionOffsets.length && this.injectionOffsets[index + 1] === this.injectionOffsets[index]) {\r\n result += this.injectionOptions[index + 1].content.length;\r\n index++;\r\n }\r\n return result;\r\n }\r\n // affinity is left\r\n let result = injectedText.offsetInUnwrappedLine;\r\n let index = injectedText.injectedTextIndex;\r\n // traverse all injected text that touch eachother\r\n while (index - 1 >= 0 && this.injectionOffsets[index - 1] === this.injectionOffsets[index]) {\r\n result -= this.injectionOptions[index - 1].content.length;\r\n index++;\r\n }\r\n return result;\r\n }\r\n getInjectedText(outputLineIndex, outputOffset) {\r\n const offset = this.outputPositionToOffsetInUnwrappedLine(outputLineIndex, outputOffset);\r\n const injectedText = this.getInjectedTextAtOffset(offset);\r\n if (!injectedText) {\r\n return null;\r\n }\r\n return {\r\n options: this.injectionOptions[injectedText.injectedTextIndex]\r\n };\r\n }\r\n getInjectedTextAtOffset(offsetInUnwrappedLine) {\r\n const injectionOffsets = this.injectionOffsets;\r\n const injectionOptions = this.injectionOptions;\r\n if (injectionOffsets !== null) {\r\n let totalInjectedTextLengthBefore = 0;\r\n for (let i = 0; i < injectionOffsets.length; i++) {\r\n const length = injectionOptions[i].content.length;\r\n const injectedTextStartOffsetInUnwrappedLine = injectionOffsets[i] + totalInjectedTextLengthBefore;\r\n const injectedTextEndOffsetInUnwrappedLine = injectionOffsets[i] + totalInjectedTextLengthBefore + length;\r\n if (injectedTextStartOffsetInUnwrappedLine > offsetInUnwrappedLine) {\r\n // Injected text starts later.\r\n break; // All later injected texts have an even larger offset.\r\n }\r\n if (offsetInUnwrappedLine <= injectedTextEndOffsetInUnwrappedLine) {\r\n // Injected text ends after or with the given position (but also starts with or before it).\r\n return {\r\n injectedTextIndex: i,\r\n offsetInUnwrappedLine: injectedTextStartOffsetInUnwrappedLine,\r\n length\r\n };\r\n }\r\n totalInjectedTextLengthBefore += length;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class InjectedText {\r\n constructor(options) {\r\n this.options = options;\r\n }\r\n}\r\nexport class MinimapLinesRenderingData {\r\n constructor(tabSize, data) {\r\n this.tabSize = tabSize;\r\n this.data = data;\r\n }\r\n}\r\nexport class ViewLineData {\r\n constructor(content, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, tokens, inlineDecorations) {\r\n this._viewLineDataBrand = undefined;\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.tokens = tokens;\r\n this.inlineDecorations = inlineDecorations;\r\n }\r\n}\r\nexport class ViewLineRenderingData {\r\n constructor(minColumn, maxColumn, content, continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, tokens, inlineDecorations, tabSize, startVisibleColumn) {\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = ViewLineRenderingData.isBasicASCII(content, mightContainNonBasicASCII);\r\n this.containsRTL = ViewLineRenderingData.containsRTL(content, this.isBasicASCII, mightContainRTL);\r\n this.tokens = tokens;\r\n this.inlineDecorations = inlineDecorations;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n }\r\n static isBasicASCII(lineContent, mightContainNonBasicASCII) {\r\n if (mightContainNonBasicASCII) {\r\n return strings.isBasicASCII(lineContent);\r\n }\r\n return true;\r\n }\r\n static containsRTL(lineContent, isBasicASCII, mightContainRTL) {\r\n if (!isBasicASCII && mightContainRTL) {\r\n return strings.containsRTL(lineContent);\r\n }\r\n return false;\r\n }\r\n}\r\nexport class InlineDecoration {\r\n constructor(range, inlineClassName, type) {\r\n this.range = range;\r\n this.inlineClassName = inlineClassName;\r\n this.type = type;\r\n }\r\n}\r\nexport class SingleLineInlineDecoration {\r\n constructor(startOffset, endOffset, inlineClassName, inlineClassNameAffectsLetterSpacing) {\r\n this.startOffset = startOffset;\r\n this.endOffset = endOffset;\r\n this.inlineClassName = inlineClassName;\r\n this.inlineClassNameAffectsLetterSpacing = inlineClassNameAffectsLetterSpacing;\r\n }\r\n toInlineDecoration(lineNumber) {\r\n return new InlineDecoration(new Range(lineNumber, this.startOffset + 1, lineNumber, this.endOffset + 1), this.inlineClassName, this.inlineClassNameAffectsLetterSpacing ? 3 /* RegularAffectingLetterSpacing */ : 0 /* Regular */);\r\n }\r\n}\r\nexport class ViewModelDecoration {\r\n constructor(range, options) {\r\n this._viewModelDecorationBrand = undefined;\r\n this.range = range;\r\n this.options = options;\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./bracketMatching.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./bracketMatching.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './bracketMatching.css';\r\nimport * as nls from '../../../nls.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { editorBracketMatchBackground, editorBracketMatchBorder } from '../../common/view/editorColorRegistry.js';\r\nimport { registerColor } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { MenuRegistry, MenuId } from '../../../platform/actions/common/actions.js';\r\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', { dark: '#A0A0A0', light: '#A0A0A0', hc: '#A0A0A0' }, nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\r\nclass JumpToBracketAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.jumpToBracket',\r\n label: nls.localize('smartSelect.jumpBracket', \"Go to Bracket\"),\r\n alias: 'Go to Bracket',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 88 /* US_BACKSLASH */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = BracketMatchingController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.jumpToBracket();\r\n }\r\n}\r\nclass SelectToBracketAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.selectToBracket',\r\n label: nls.localize('smartSelect.selectToBracket', \"Select to Bracket\"),\r\n alias: 'Select to Bracket',\r\n precondition: undefined,\r\n description: {\r\n description: `Select to Bracket`,\r\n args: [{\r\n name: 'args',\r\n schema: {\r\n type: 'object',\r\n properties: {\r\n 'selectBrackets': {\r\n type: 'boolean',\r\n default: true\r\n }\r\n },\r\n }\r\n }]\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n const controller = BracketMatchingController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n let selectBrackets = true;\r\n if (args && args.selectBrackets === false) {\r\n selectBrackets = false;\r\n }\r\n controller.selectToBracket(selectBrackets);\r\n }\r\n}\r\nclass BracketsData {\r\n constructor(position, brackets, options) {\r\n this.position = position;\r\n this.brackets = brackets;\r\n this.options = options;\r\n }\r\n}\r\nexport class BracketMatchingController extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._editor = editor;\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n this._decorations = [];\r\n this._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\r\n this._matchBrackets = this._editor.getOption(62 /* matchBrackets */);\r\n this._updateBracketsSoon.schedule();\r\n this._register(editor.onDidChangeCursorPosition((e) => {\r\n if (this._matchBrackets === 'never') {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n return;\r\n }\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModelContent((e) => {\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModel((e) => {\r\n this._lastBracketsData = [];\r\n this._decorations = [];\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModelLanguageConfiguration((e) => {\r\n this._lastBracketsData = [];\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(62 /* matchBrackets */)) {\r\n this._matchBrackets = this._editor.getOption(62 /* matchBrackets */);\r\n this._decorations = this._editor.deltaDecorations(this._decorations, []);\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n this._updateBracketsSoon.schedule();\r\n }\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(BracketMatchingController.ID);\r\n }\r\n jumpToBracket() {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const newSelections = this._editor.getSelections().map(selection => {\r\n const position = selection.getStartPosition();\r\n // find matching brackets if position is on a bracket\r\n const brackets = model.matchBracket(position);\r\n let newCursorPosition = null;\r\n if (brackets) {\r\n if (brackets[0].containsPosition(position)) {\r\n newCursorPosition = brackets[1].getStartPosition();\r\n }\r\n else if (brackets[1].containsPosition(position)) {\r\n newCursorPosition = brackets[0].getStartPosition();\r\n }\r\n }\r\n else {\r\n // find the enclosing brackets if the position isn't on a matching bracket\r\n const enclosingBrackets = model.findEnclosingBrackets(position);\r\n if (enclosingBrackets) {\r\n newCursorPosition = enclosingBrackets[0].getStartPosition();\r\n }\r\n else {\r\n // no enclosing brackets, try the very first next bracket\r\n const nextBracket = model.findNextBracket(position);\r\n if (nextBracket && nextBracket.range) {\r\n newCursorPosition = nextBracket.range.getStartPosition();\r\n }\r\n }\r\n }\r\n if (newCursorPosition) {\r\n return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\r\n }\r\n return new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\r\n });\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealRange(newSelections[0]);\r\n }\r\n selectToBracket(selectBrackets) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const newSelections = [];\r\n this._editor.getSelections().forEach(selection => {\r\n const position = selection.getStartPosition();\r\n let brackets = model.matchBracket(position);\r\n if (!brackets) {\r\n brackets = model.findEnclosingBrackets(position);\r\n if (!brackets) {\r\n const nextBracket = model.findNextBracket(position);\r\n if (nextBracket && nextBracket.range) {\r\n brackets = model.matchBracket(nextBracket.range.getStartPosition());\r\n }\r\n }\r\n }\r\n let selectFrom = null;\r\n let selectTo = null;\r\n if (brackets) {\r\n brackets.sort(Range.compareRangesUsingStarts);\r\n const [open, close] = brackets;\r\n selectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\r\n selectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\r\n }\r\n if (selectFrom && selectTo) {\r\n newSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\r\n }\r\n });\r\n if (newSelections.length > 0) {\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealRange(newSelections[0]);\r\n }\r\n }\r\n _updateBrackets() {\r\n if (this._matchBrackets === 'never') {\r\n return;\r\n }\r\n this._recomputeBrackets();\r\n let newDecorations = [], newDecorationsLen = 0;\r\n for (const bracketData of this._lastBracketsData) {\r\n let brackets = bracketData.brackets;\r\n if (brackets) {\r\n newDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\r\n newDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\r\n }\r\n }\r\n this._decorations = this._editor.deltaDecorations(this._decorations, newDecorations);\r\n }\r\n _recomputeBrackets() {\r\n if (!this._editor.hasModel()) {\r\n // no model => no brackets!\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n return;\r\n }\r\n const selections = this._editor.getSelections();\r\n if (selections.length > 100) {\r\n // no bracket matching for high numbers of selections\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const versionId = model.getVersionId();\r\n let previousData = [];\r\n if (this._lastVersionId === versionId) {\r\n // use the previous data only if the model is at the same version id\r\n previousData = this._lastBracketsData;\r\n }\r\n let positions = [], positionsLen = 0;\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n if (selection.isEmpty()) {\r\n // will bracket match a cursor only if the selection is collapsed\r\n positions[positionsLen++] = selection.getStartPosition();\r\n }\r\n }\r\n // sort positions for `previousData` cache hits\r\n if (positions.length > 1) {\r\n positions.sort(Position.compare);\r\n }\r\n let newData = [], newDataLen = 0;\r\n let previousIndex = 0, previousLen = previousData.length;\r\n for (let i = 0, len = positions.length; i < len; i++) {\r\n let position = positions[i];\r\n while (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\r\n previousIndex++;\r\n }\r\n if (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\r\n newData[newDataLen++] = previousData[previousIndex];\r\n }\r\n else {\r\n let brackets = model.matchBracket(position);\r\n let options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\r\n if (!brackets && this._matchBrackets === 'always') {\r\n brackets = model.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\r\n options = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\r\n }\r\n newData[newDataLen++] = new BracketsData(position, brackets, options);\r\n }\r\n }\r\n this._lastBracketsData = newData;\r\n this._lastVersionId = versionId;\r\n }\r\n}\r\nBracketMatchingController.ID = 'editor.contrib.bracketMatchingController';\r\nBracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\r\n description: 'bracket-match-overview',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'bracket-match',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerBracketMatchForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nBracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\r\n description: 'bracket-match-no-overview',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'bracket-match'\r\n});\r\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController);\r\nregisterEditorAction(SelectToBracketAction);\r\nregisterEditorAction(JumpToBracketAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const bracketMatchBackground = theme.getColor(editorBracketMatchBackground);\r\n if (bracketMatchBackground) {\r\n collector.addRule(`.monaco-editor .bracket-match { background-color: ${bracketMatchBackground}; }`);\r\n }\r\n const bracketMatchBorder = theme.getColor(editorBracketMatchBorder);\r\n if (bracketMatchBorder) {\r\n collector.addRule(`.monaco-editor .bracket-match { border: 1px solid ${bracketMatchBorder}; }`);\r\n }\r\n});\r\n// Go to menu\r\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\r\n group: '5_infile_nav',\r\n command: {\r\n id: 'editor.action.jumpToBracket',\r\n title: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\r\n },\r\n order: 2\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nexport class MoveCaretCommand {\r\n constructor(selection, isMovingLeft) {\r\n this._selection = selection;\r\n this._isMovingLeft = isMovingLeft;\r\n }\r\n getEditOperations(model, builder) {\r\n if (this._selection.startLineNumber !== this._selection.endLineNumber || this._selection.isEmpty()) {\r\n return;\r\n }\r\n const lineNumber = this._selection.startLineNumber;\r\n const startColumn = this._selection.startColumn;\r\n const endColumn = this._selection.endColumn;\r\n if (this._isMovingLeft && startColumn === 1) {\r\n return;\r\n }\r\n if (!this._isMovingLeft && endColumn === model.getLineMaxColumn(lineNumber)) {\r\n return;\r\n }\r\n if (this._isMovingLeft) {\r\n const rangeBefore = new Range(lineNumber, startColumn - 1, lineNumber, startColumn);\r\n const charBefore = model.getValueInRange(rangeBefore);\r\n builder.addEditOperation(rangeBefore, null);\r\n builder.addEditOperation(new Range(lineNumber, endColumn, lineNumber, endColumn), charBefore);\r\n }\r\n else {\r\n const rangeAfter = new Range(lineNumber, endColumn, lineNumber, endColumn + 1);\r\n const charAfter = model.getValueInRange(rangeAfter);\r\n builder.addEditOperation(rangeAfter, null);\r\n builder.addEditOperation(new Range(lineNumber, startColumn, lineNumber, startColumn), charAfter);\r\n }\r\n }\r\n computeCursorState(model, helper) {\r\n if (this._isMovingLeft) {\r\n return new Selection(this._selection.startLineNumber, this._selection.startColumn - 1, this._selection.endLineNumber, this._selection.endColumn - 1);\r\n }\r\n else {\r\n return new Selection(this._selection.startLineNumber, this._selection.startColumn + 1, this._selection.endLineNumber, this._selection.endColumn + 1);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MoveCaretCommand } from './moveCaretCommand.js';\r\nclass MoveCaretAction extends EditorAction {\r\n constructor(left, opts) {\r\n super(opts);\r\n this.left = left;\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let commands = [];\r\n let selections = editor.getSelections();\r\n for (const selection of selections) {\r\n commands.push(new MoveCaretCommand(selection, this.left));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass MoveCaretLeftAction extends MoveCaretAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.moveCarretLeftAction',\r\n label: nls.localize('caret.moveLeft', \"Move Selected Text Left\"),\r\n alias: 'Move Selected Text Left',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nclass MoveCaretRightAction extends MoveCaretAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.moveCarretRightAction',\r\n label: nls.localize('caret.moveRight', \"Move Selected Text Right\"),\r\n alias: 'Move Selected Text Right',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nregisterEditorAction(MoveCaretLeftAction);\r\nregisterEditorAction(MoveCaretRightAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { CopyOptions, InMemoryClipboardMetadataManager } from '../../browser/controller/textAreaInput.js';\r\nimport { EditorAction, registerEditorAction, MultiCommand } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MenuRegistry, MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\r\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\r\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\r\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\r\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\r\n// When loading over http, navigator.clipboard can be undefined. See https://github.com/microsoft/monaco-editor/issues/2313\r\nconst supportsPaste = (typeof navigator.clipboard === 'undefined' || browser.isFirefox) ? document.queryCommandSupported('paste') : true;\r\nfunction registerCommand(command) {\r\n command.register();\r\n return command;\r\n}\r\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardCutAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind cut keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 54 /* KEY_X */,\r\n win: { primary: 2048 /* CtrlCmd */ | 54 /* KEY_X */, secondary: [1024 /* Shift */ | 20 /* Delete */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\r\n when: EditorContextKeys.writable,\r\n order: 1,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.SimpleEditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\r\n when: EditorContextKeys.writable,\r\n order: 1,\r\n }]\r\n})) : undefined;\r\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardCopyAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind copy keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 33 /* KEY_C */,\r\n win: { primary: 2048 /* CtrlCmd */ | 33 /* KEY_C */, secondary: [2048 /* CtrlCmd */ | 19 /* Insert */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\r\n order: 2\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\r\n order: 2,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.SimpleEditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\r\n order: 2,\r\n }]\r\n})) : undefined;\r\nMenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: { value: nls.localize('copy as', \"Copy As\"), original: 'Copy As', }, group: '2_ccp', order: 3 });\r\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 });\r\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardPasteAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind paste keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */,\r\n win: { primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */, secondary: [1024 /* Shift */ | 19 /* Insert */] },\r\n linux: { primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */, secondary: [1024 /* Shift */ | 19 /* Insert */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\r\n order: 4\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\r\n when: EditorContextKeys.writable,\r\n order: 4,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.SimpleEditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\r\n when: EditorContextKeys.writable,\r\n order: 4,\r\n }]\r\n})) : undefined;\r\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\r\n label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy With Syntax Highlighting\"),\r\n alias: 'Copy With Syntax Highlighting',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const emptySelectionClipboard = editor.getOption(30 /* emptySelectionClipboard */);\r\n if (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\r\n return;\r\n }\r\n CopyOptions.forceCopyWithSyntaxHighlighting = true;\r\n editor.focus();\r\n document.execCommand('copy');\r\n CopyOptions.forceCopyWithSyntaxHighlighting = false;\r\n }\r\n}\r\nfunction registerExecCommandImpl(target, browserCommand) {\r\n if (!target) {\r\n return;\r\n }\r\n // 1. handle case when focus is in editor.\r\n target.addImplementation(10000, 'code-editor', (accessor, args) => {\r\n // Only if editor text focus (i.e. not if editor has widget focus).\r\n const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (focusedEditor && focusedEditor.hasTextFocus()) {\r\n // Do not execute if there is no selection and empty selection clipboard is off\r\n const emptySelectionClipboard = focusedEditor.getOption(30 /* emptySelectionClipboard */);\r\n const selection = focusedEditor.getSelection();\r\n if (selection && selection.isEmpty() && !emptySelectionClipboard) {\r\n return true;\r\n }\r\n document.execCommand(browserCommand);\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 2. (default) handle case when focus is somewhere else.\r\n target.addImplementation(0, 'generic-dom', (accessor, args) => {\r\n document.execCommand(browserCommand);\r\n return true;\r\n });\r\n}\r\nregisterExecCommandImpl(CutAction, 'cut');\r\nregisterExecCommandImpl(CopyAction, 'copy');\r\nif (PasteAction) {\r\n // 1. Paste: handle case when focus is in editor.\r\n PasteAction.addImplementation(10000, 'code-editor', (accessor, args) => {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n const clipboardService = accessor.get(IClipboardService);\r\n // Only if editor text focus (i.e. not if editor has widget focus).\r\n const focusedEditor = codeEditorService.getFocusedCodeEditor();\r\n if (focusedEditor && focusedEditor.hasTextFocus()) {\r\n const result = document.execCommand('paste');\r\n // Use the clipboard service if document.execCommand('paste') was not successful\r\n if (!result && platform.isWeb) {\r\n (() => __awaiter(void 0, void 0, void 0, function* () {\r\n const clipboardText = yield clipboardService.readText();\r\n if (clipboardText !== '') {\r\n const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\r\n let pasteOnNewLine = false;\r\n let multicursorText = null;\r\n let mode = null;\r\n if (metadata) {\r\n pasteOnNewLine = (focusedEditor.getOption(30 /* emptySelectionClipboard */) && !!metadata.isFromEmptySelection);\r\n multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\r\n mode = metadata.mode;\r\n }\r\n focusedEditor.trigger('keyboard', \"paste\" /* Paste */, {\r\n text: clipboardText,\r\n pasteOnNewLine,\r\n multicursorText,\r\n mode\r\n });\r\n }\r\n }))();\r\n return true;\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 2. Paste: (default) handle case when focus is somewhere else.\r\n PasteAction.addImplementation(0, 'generic-dom', (accessor, args) => {\r\n document.execCommand('paste');\r\n return true;\r\n });\r\n}\r\nif (supportsCopy) {\r\n registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { CodeLensProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nexport class CodeLensModel {\r\n constructor() {\r\n this.lenses = [];\r\n this._disposables = new DisposableStore();\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n add(list, provider) {\r\n this._disposables.add(list);\r\n for (const symbol of list.lenses) {\r\n this.lenses.push({ symbol, provider });\r\n }\r\n }\r\n}\r\nexport function getCodeLensModel(model, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const provider = CodeLensProviderRegistry.ordered(model);\r\n const providerRanks = new Map();\r\n const result = new CodeLensModel();\r\n const promises = provider.map((provider, i) => __awaiter(this, void 0, void 0, function* () {\r\n providerRanks.set(provider, i);\r\n try {\r\n const list = yield Promise.resolve(provider.provideCodeLenses(model, token));\r\n if (list) {\r\n result.add(list, provider);\r\n }\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n }\r\n }));\r\n yield Promise.all(promises);\r\n result.lenses = result.lenses.sort((a, b) => {\r\n // sort by lineNumber, provider-rank, and column\r\n if (a.symbol.range.startLineNumber < b.symbol.range.startLineNumber) {\r\n return -1;\r\n }\r\n else if (a.symbol.range.startLineNumber > b.symbol.range.startLineNumber) {\r\n return 1;\r\n }\r\n else if ((providerRanks.get(a.provider)) < (providerRanks.get(b.provider))) {\r\n return -1;\r\n }\r\n else if ((providerRanks.get(a.provider)) > (providerRanks.get(b.provider))) {\r\n return 1;\r\n }\r\n else if (a.symbol.range.startColumn < b.symbol.range.startColumn) {\r\n return -1;\r\n }\r\n else if (a.symbol.range.startColumn > b.symbol.range.startColumn) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n return result;\r\n });\r\n}\r\nCommandsRegistry.registerCommand('_executeCodeLensProvider', function (accessor, ...args) {\r\n let [uri, itemResolveCount] = args;\r\n assertType(URI.isUri(uri));\r\n assertType(typeof itemResolveCount === 'number' || !itemResolveCount);\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const result = [];\r\n const disposables = new DisposableStore();\r\n return getCodeLensModel(model, CancellationToken.None).then(value => {\r\n disposables.add(value);\r\n let resolve = [];\r\n for (const item of value.lenses) {\r\n if (itemResolveCount === undefined || itemResolveCount === null || Boolean(item.symbol.command)) {\r\n result.push(item.symbol);\r\n }\r\n else if (itemResolveCount-- > 0 && item.provider.resolveCodeLens) {\r\n resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol || item.symbol)));\r\n }\r\n }\r\n return Promise.all(resolve);\r\n }).then(() => {\r\n return result;\r\n }).finally(() => {\r\n // make sure to return results, then (on next tick)\r\n // dispose the results\r\n setTimeout(() => disposables.dispose(), 100);\r\n });\r\n});\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./codelensWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./codelensWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './codelensWidget.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { editorCodeLensForeground } from '../../common/view/editorColorRegistry.js';\r\nimport { editorActiveLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { renderLabelWithIcons } from '../../../base/browser/ui/iconLabel/iconLabels.js';\r\nclass CodeLensViewZone {\r\n constructor(afterLineNumber, heightInPx, onHeight) {\r\n this.afterLineNumber = afterLineNumber;\r\n this.heightInPx = heightInPx;\r\n this._onHeight = onHeight;\r\n this.suppressMouseDown = true;\r\n this.domNode = document.createElement('div');\r\n }\r\n onComputedHeight(height) {\r\n if (this._lastHeight === undefined) {\r\n this._lastHeight = height;\r\n }\r\n else if (this._lastHeight !== height) {\r\n this._lastHeight = height;\r\n this._onHeight();\r\n }\r\n }\r\n}\r\nclass CodeLensContentWidget {\r\n constructor(editor, className, line) {\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = false;\r\n this.suppressMouseDown = true;\r\n this._commands = new Map();\r\n this._isEmpty = true;\r\n this._editor = editor;\r\n this._id = `codelens.widget-${(CodeLensContentWidget._idPool++)}`;\r\n this.updatePosition(line);\r\n this._domNode = document.createElement('span');\r\n this._domNode.className = `codelens-decoration ${className}`;\r\n }\r\n withCommands(lenses, animate) {\r\n this._commands.clear();\r\n let children = [];\r\n let hasSymbol = false;\r\n for (let i = 0; i < lenses.length; i++) {\r\n const lens = lenses[i];\r\n if (!lens) {\r\n continue;\r\n }\r\n hasSymbol = true;\r\n if (lens.command) {\r\n const title = renderLabelWithIcons(lens.command.title.trim());\r\n if (lens.command.id) {\r\n children.push(dom.$('a', { id: String(i), title: lens.command.tooltip }, ...title));\r\n this._commands.set(String(i), lens.command);\r\n }\r\n else {\r\n children.push(dom.$('span', { title: lens.command.tooltip }, ...title));\r\n }\r\n if (i + 1 < lenses.length) {\r\n children.push(dom.$('span', undefined, '\\u00a0|\\u00a0'));\r\n }\r\n }\r\n }\r\n if (!hasSymbol) {\r\n // symbols but no commands\r\n dom.reset(this._domNode, dom.$('span', undefined, 'no commands'));\r\n }\r\n else {\r\n // symbols and commands\r\n dom.reset(this._domNode, ...children);\r\n if (this._isEmpty && animate) {\r\n this._domNode.classList.add('fadein');\r\n }\r\n this._isEmpty = false;\r\n }\r\n }\r\n getCommand(link) {\r\n return link.parentElement === this._domNode\r\n ? this._commands.get(link.id)\r\n : undefined;\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n updatePosition(line) {\r\n const column = this._editor.getModel().getLineFirstNonWhitespaceColumn(line);\r\n this._widgetPosition = {\r\n position: { lineNumber: line, column: column },\r\n preference: [1 /* ABOVE */]\r\n };\r\n }\r\n getPosition() {\r\n return this._widgetPosition || null;\r\n }\r\n}\r\nCodeLensContentWidget._idPool = 0;\r\nexport class CodeLensHelper {\r\n constructor() {\r\n this._removeDecorations = [];\r\n this._addDecorations = [];\r\n this._addDecorationsCallbacks = [];\r\n }\r\n addDecoration(decoration, callback) {\r\n this._addDecorations.push(decoration);\r\n this._addDecorationsCallbacks.push(callback);\r\n }\r\n removeDecoration(decorationId) {\r\n this._removeDecorations.push(decorationId);\r\n }\r\n commit(changeAccessor) {\r\n let resultingDecorations = changeAccessor.deltaDecorations(this._removeDecorations, this._addDecorations);\r\n for (let i = 0, len = resultingDecorations.length; i < len; i++) {\r\n this._addDecorationsCallbacks[i](resultingDecorations[i]);\r\n }\r\n }\r\n}\r\nexport class CodeLensWidget {\r\n constructor(data, editor, className, helper, viewZoneChangeAccessor, heightInPx, updateCallback) {\r\n this._isDisposed = false;\r\n this._editor = editor;\r\n this._className = className;\r\n this._data = data;\r\n // create combined range, track all ranges with decorations,\r\n // check if there is already something to render\r\n this._decorationIds = [];\r\n let range;\r\n let lenses = [];\r\n this._data.forEach((codeLensData, i) => {\r\n if (codeLensData.symbol.command) {\r\n lenses.push(codeLensData.symbol);\r\n }\r\n helper.addDecoration({\r\n range: codeLensData.symbol.range,\r\n options: ModelDecorationOptions.EMPTY\r\n }, id => this._decorationIds[i] = id);\r\n // the range contains all lenses on this line\r\n if (!range) {\r\n range = Range.lift(codeLensData.symbol.range);\r\n }\r\n else {\r\n range = Range.plusRange(range, codeLensData.symbol.range);\r\n }\r\n });\r\n this._viewZone = new CodeLensViewZone(range.startLineNumber - 1, heightInPx, updateCallback);\r\n this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone);\r\n if (lenses.length > 0) {\r\n this._createContentWidgetIfNecessary();\r\n this._contentWidget.withCommands(lenses, false);\r\n }\r\n }\r\n _createContentWidgetIfNecessary() {\r\n if (!this._contentWidget) {\r\n this._contentWidget = new CodeLensContentWidget(this._editor, this._className, this._viewZone.afterLineNumber + 1);\r\n this._editor.addContentWidget(this._contentWidget);\r\n }\r\n else {\r\n this._editor.layoutContentWidget(this._contentWidget);\r\n }\r\n }\r\n dispose(helper, viewZoneChangeAccessor) {\r\n this._decorationIds.forEach(helper.removeDecoration, helper);\r\n this._decorationIds = [];\r\n if (viewZoneChangeAccessor) {\r\n viewZoneChangeAccessor.removeZone(this._viewZoneId);\r\n }\r\n if (this._contentWidget) {\r\n this._editor.removeContentWidget(this._contentWidget);\r\n this._contentWidget = undefined;\r\n }\r\n this._isDisposed = true;\r\n }\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n isValid() {\r\n return this._decorationIds.some((id, i) => {\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n const symbol = this._data[i].symbol;\r\n return !!(range && Range.isEmpty(symbol.range) === range.isEmpty());\r\n });\r\n }\r\n updateCodeLensSymbols(data, helper) {\r\n this._decorationIds.forEach(helper.removeDecoration, helper);\r\n this._decorationIds = [];\r\n this._data = data;\r\n this._data.forEach((codeLensData, i) => {\r\n helper.addDecoration({\r\n range: codeLensData.symbol.range,\r\n options: ModelDecorationOptions.EMPTY\r\n }, id => this._decorationIds[i] = id);\r\n });\r\n }\r\n updateHeight(height, viewZoneChangeAccessor) {\r\n this._viewZone.heightInPx = height;\r\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\r\n if (this._contentWidget) {\r\n this._editor.layoutContentWidget(this._contentWidget);\r\n }\r\n }\r\n computeIfNecessary(model) {\r\n if (!this._viewZone.domNode.hasAttribute('monaco-visible-view-zone')) {\r\n return null;\r\n }\r\n // Read editor current state\r\n for (let i = 0; i < this._decorationIds.length; i++) {\r\n const range = model.getDecorationRange(this._decorationIds[i]);\r\n if (range) {\r\n this._data[i].symbol.range = range;\r\n }\r\n }\r\n return this._data;\r\n }\r\n updateCommands(symbols) {\r\n this._createContentWidgetIfNecessary();\r\n this._contentWidget.withCommands(symbols, true);\r\n for (let i = 0; i < this._data.length; i++) {\r\n const resolved = symbols[i];\r\n if (resolved) {\r\n const { symbol } = this._data[i];\r\n symbol.command = resolved.command || symbol.command;\r\n }\r\n }\r\n }\r\n getCommand(link) {\r\n var _a;\r\n return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.getCommand(link);\r\n }\r\n getLineNumber() {\r\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\r\n if (range) {\r\n return range.startLineNumber;\r\n }\r\n return -1;\r\n }\r\n update(viewZoneChangeAccessor) {\r\n if (this.isValid()) {\r\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\r\n if (range) {\r\n this._viewZone.afterLineNumber = range.startLineNumber - 1;\r\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\r\n if (this._contentWidget) {\r\n this._contentWidget.updatePosition(range.startLineNumber);\r\n this._editor.layoutContentWidget(this._contentWidget);\r\n }\r\n }\r\n }\r\n }\r\n getItems() {\r\n return this._data;\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const codeLensForeground = theme.getColor(editorCodeLensForeground);\r\n if (codeLensForeground) {\r\n collector.addRule(`.monaco-editor .codelens-decoration { color: ${codeLensForeground}; }`);\r\n collector.addRule(`.monaco-editor .codelens-decoration .codicon { color: ${codeLensForeground}; }`);\r\n }\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .codelens-decoration > a:hover { color: ${activeLinkForeground} !important; }`);\r\n collector.addRule(`.monaco-editor .codelens-decoration > a:hover .codicon { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { CodeLensModel } from './codelens.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { IStorageService, WillSaveStateReason } from '../../../platform/storage/common/storage.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { runWhenIdle } from '../../../base/common/async.js';\r\nimport { once } from '../../../base/common/functional.js';\r\nexport const ICodeLensCache = createDecorator('ICodeLensCache');\r\nclass CacheItem {\r\n constructor(lineCount, data) {\r\n this.lineCount = lineCount;\r\n this.data = data;\r\n }\r\n}\r\nlet CodeLensCache = class CodeLensCache {\r\n constructor(storageService) {\r\n this._fakeProvider = new class {\r\n provideCodeLenses() {\r\n throw new Error('not supported');\r\n }\r\n };\r\n this._cache = new LRUCache(20, 0.75);\r\n // remove old data\r\n const oldkey = 'codelens/cache';\r\n runWhenIdle(() => storageService.remove(oldkey, 1 /* WORKSPACE */));\r\n // restore lens data on start\r\n const key = 'codelens/cache2';\r\n const raw = storageService.get(key, 1 /* WORKSPACE */, '{}');\r\n this._deserialize(raw);\r\n // store lens data on shutdown\r\n once(storageService.onWillSaveState)(e => {\r\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\r\n storageService.store(key, this._serialize(), 1 /* WORKSPACE */, 1 /* MACHINE */);\r\n }\r\n });\r\n }\r\n put(model, data) {\r\n // create a copy of the model that is without command-ids\r\n // but with comand-labels\r\n const copyItems = data.lenses.map(item => {\r\n var _a;\r\n return {\r\n range: item.symbol.range,\r\n command: item.symbol.command && { id: '', title: (_a = item.symbol.command) === null || _a === void 0 ? void 0 : _a.title },\r\n };\r\n });\r\n const copyModel = new CodeLensModel();\r\n copyModel.add({ lenses: copyItems, dispose: () => { } }, this._fakeProvider);\r\n const item = new CacheItem(model.getLineCount(), copyModel);\r\n this._cache.set(model.uri.toString(), item);\r\n }\r\n get(model) {\r\n const item = this._cache.get(model.uri.toString());\r\n return item && item.lineCount === model.getLineCount() ? item.data : undefined;\r\n }\r\n delete(model) {\r\n this._cache.delete(model.uri.toString());\r\n }\r\n // --- persistence\r\n _serialize() {\r\n const data = Object.create(null);\r\n for (const [key, value] of this._cache) {\r\n const lines = new Set();\r\n for (const d of value.data.lenses) {\r\n lines.add(d.symbol.range.startLineNumber);\r\n }\r\n data[key] = {\r\n lineCount: value.lineCount,\r\n lines: [...lines.values()]\r\n };\r\n }\r\n return JSON.stringify(data);\r\n }\r\n _deserialize(raw) {\r\n try {\r\n const data = JSON.parse(raw);\r\n for (const key in data) {\r\n const element = data[key];\r\n const lenses = [];\r\n for (const line of element.lines) {\r\n lenses.push({ range: new Range(line, 1, line, 11) });\r\n }\r\n const model = new CodeLensModel();\r\n model.add({ lenses, dispose() { } }, this._fakeProvider);\r\n this._cache.set(key, new CacheItem(element.lineCount, model));\r\n }\r\n }\r\n catch (_a) {\r\n // ignore...\r\n }\r\n }\r\n};\r\nCodeLensCache = __decorate([\r\n __param(0, IStorageService)\r\n], CodeLensCache);\r\nexport { CodeLensCache };\r\nregisterSingleton(ICodeLensCache, CodeLensCache);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { RunOnceScheduler, createCancelablePromise, disposableTimeout } from '../../../base/common/async.js';\r\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { StableEditorScrollState } from '../../browser/core/editorState.js';\r\nimport { registerEditorContribution, registerEditorAction, EditorAction } from '../../browser/editorExtensions.js';\r\nimport { CodeLensProviderRegistry } from '../../common/modes.js';\r\nimport { getCodeLensModel } from './codelens.js';\r\nimport { CodeLensWidget, CodeLensHelper } from './codelensWidget.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { ICodeLensCache } from './codeLensCache.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { LanguageFeatureRequestDelays } from '../../common/modes/languageFeatureRegistry.js';\r\nlet CodeLensContribution = class CodeLensContribution {\r\n constructor(_editor, _commandService, _notificationService, _codeLensCache) {\r\n this._editor = _editor;\r\n this._commandService = _commandService;\r\n this._notificationService = _notificationService;\r\n this._codeLensCache = _codeLensCache;\r\n this._disposables = new DisposableStore();\r\n this._localToDispose = new DisposableStore();\r\n this._lenses = [];\r\n this._getCodeLensModelDelays = new LanguageFeatureRequestDelays(CodeLensProviderRegistry, 250, 2500);\r\n this._oldCodeLensModels = new DisposableStore();\r\n this._resolveCodeLensesDelays = new LanguageFeatureRequestDelays(CodeLensProviderRegistry, 250, 2500);\r\n this._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDelays.min);\r\n this._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\r\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\r\n this._disposables.add(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(41 /* fontInfo */) || e.hasChanged(14 /* codeLensFontSize */) || e.hasChanged(13 /* codeLensFontFamily */)) {\r\n this._updateLensStyle();\r\n }\r\n if (e.hasChanged(12 /* codeLens */)) {\r\n this._onModelChange();\r\n }\r\n }));\r\n this._disposables.add(CodeLensProviderRegistry.onDidChange(this._onModelChange, this));\r\n this._onModelChange();\r\n this._styleClassName = '_' + hash(this._editor.getId()).toString(16);\r\n this._styleElement = dom.createStyleSheet(dom.isInShadowDOM(this._editor.getContainerDomNode())\r\n ? this._editor.getContainerDomNode()\r\n : undefined);\r\n this._updateLensStyle();\r\n }\r\n dispose() {\r\n var _a;\r\n this._localDispose();\r\n this._disposables.dispose();\r\n this._oldCodeLensModels.dispose();\r\n (_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._styleElement.remove();\r\n }\r\n _getLayoutInfo() {\r\n let fontSize = this._editor.getOption(14 /* codeLensFontSize */);\r\n let codeLensHeight;\r\n if (!fontSize || fontSize < 5) {\r\n fontSize = (this._editor.getOption(43 /* fontSize */) * .9) | 0;\r\n codeLensHeight = this._editor.getOption(57 /* lineHeight */);\r\n }\r\n else {\r\n codeLensHeight = (fontSize * Math.max(1.3, this._editor.getOption(57 /* lineHeight */) / this._editor.getOption(43 /* fontSize */))) | 0;\r\n }\r\n return { codeLensHeight, fontSize };\r\n }\r\n _updateLensStyle() {\r\n const { codeLensHeight, fontSize } = this._getLayoutInfo();\r\n const fontFamily = this._editor.getOption(13 /* codeLensFontFamily */);\r\n const editorFontInfo = this._editor.getOption(41 /* fontInfo */);\r\n const fontFamilyVar = `--codelens-font-family${this._styleClassName}`;\r\n const fontFeaturesVar = `--codelens-font-features${this._styleClassName}`;\r\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`;\r\n if (fontFamily) {\r\n newStyle += `.monaco-editor .codelens-decoration.${this._styleClassName} { font-family: var(${fontFamilyVar})}`;\r\n }\r\n this._styleElement.textContent = newStyle;\r\n this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'inherit');\r\n this._editor.getContainerDomNode().style.setProperty(fontFeaturesVar, editorFontInfo.fontFeatureSettings);\r\n //\r\n this._editor.changeViewZones(accessor => {\r\n for (let lens of this._lenses) {\r\n lens.updateHeight(codeLensHeight, accessor);\r\n }\r\n });\r\n }\r\n _localDispose() {\r\n var _a, _b, _c;\r\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\r\n this._getCodeLensModelPromise = undefined;\r\n (_b = this._resolveCodeLensesPromise) === null || _b === void 0 ? void 0 : _b.cancel();\r\n this._resolveCodeLensesPromise = undefined;\r\n this._localToDispose.clear();\r\n this._oldCodeLensModels.clear();\r\n (_c = this._currentCodeLensModel) === null || _c === void 0 ? void 0 : _c.dispose();\r\n }\r\n _onModelChange() {\r\n this._localDispose();\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n if (!this._editor.getOption(12 /* codeLens */)) {\r\n return;\r\n }\r\n const cachedLenses = this._codeLensCache.get(model);\r\n if (cachedLenses) {\r\n this._renderCodeLensSymbols(cachedLenses);\r\n }\r\n if (!CodeLensProviderRegistry.has(model)) {\r\n // no provider -> return but check with\r\n // cached lenses. they expire after 30 seconds\r\n if (cachedLenses) {\r\n this._localToDispose.add(disposableTimeout(() => {\r\n const cachedLensesNow = this._codeLensCache.get(model);\r\n if (cachedLenses === cachedLensesNow) {\r\n this._codeLensCache.delete(model);\r\n this._onModelChange();\r\n }\r\n }, 30 * 1000));\r\n }\r\n return;\r\n }\r\n for (const provider of CodeLensProviderRegistry.all(model)) {\r\n if (typeof provider.onDidChange === 'function') {\r\n let registration = provider.onDidChange(() => scheduler.schedule());\r\n this._localToDispose.add(registration);\r\n }\r\n }\r\n const scheduler = new RunOnceScheduler(() => {\r\n var _a;\r\n const t1 = Date.now();\r\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\r\n this._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(model, token));\r\n this._getCodeLensModelPromise.then(result => {\r\n if (this._currentCodeLensModel) {\r\n this._oldCodeLensModels.add(this._currentCodeLensModel);\r\n }\r\n this._currentCodeLensModel = result;\r\n // cache model to reduce flicker\r\n this._codeLensCache.put(model, result);\r\n // update moving average\r\n const newDelay = this._getCodeLensModelDelays.update(model, Date.now() - t1);\r\n scheduler.delay = newDelay;\r\n // render lenses\r\n this._renderCodeLensSymbols(result);\r\n this._resolveCodeLensesInViewport();\r\n }, onUnexpectedError);\r\n }, this._getCodeLensModelDelays.get(model));\r\n this._localToDispose.add(scheduler);\r\n this._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\r\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZonesAccessor => {\r\n let toDispose = [];\r\n let lastLensLineNumber = -1;\r\n this._lenses.forEach((lens) => {\r\n if (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\r\n // invalid -> lens collapsed, attach range doesn't exist anymore\r\n // line_number -> lenses should never be on the same line\r\n toDispose.push(lens);\r\n }\r\n else {\r\n lens.update(viewZonesAccessor);\r\n lastLensLineNumber = lens.getLineNumber();\r\n }\r\n });\r\n let helper = new CodeLensHelper();\r\n toDispose.forEach((l) => {\r\n l.dispose(helper, viewZonesAccessor);\r\n this._lenses.splice(this._lenses.indexOf(l), 1);\r\n });\r\n helper.commit(decorationsAccessor);\r\n });\r\n });\r\n // Ask for all references again\r\n scheduler.schedule();\r\n }));\r\n this._localToDispose.add(this._editor.onDidFocusEditorWidget(() => {\r\n scheduler.schedule();\r\n }));\r\n this._localToDispose.add(this._editor.onDidScrollChange(e => {\r\n if (e.scrollTopChanged && this._lenses.length > 0) {\r\n this._resolveCodeLensesInViewportSoon();\r\n }\r\n }));\r\n this._localToDispose.add(this._editor.onDidLayoutChange(() => {\r\n this._resolveCodeLensesInViewportSoon();\r\n }));\r\n this._localToDispose.add(toDisposable(() => {\r\n if (this._editor.getModel()) {\r\n const scrollState = StableEditorScrollState.capture(this._editor);\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZonesAccessor => {\r\n this._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\r\n });\r\n });\r\n scrollState.restore(this._editor);\r\n }\r\n else {\r\n // No accessors available\r\n this._disposeAllLenses(undefined, undefined);\r\n }\r\n }));\r\n this._localToDispose.add(this._editor.onMouseDown(e => {\r\n if (e.target.type !== 9 /* CONTENT_WIDGET */) {\r\n return;\r\n }\r\n let target = e.target.element;\r\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'SPAN') {\r\n target = target.parentElement;\r\n }\r\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {\r\n for (const lens of this._lenses) {\r\n let command = lens.getCommand(target);\r\n if (command) {\r\n this._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\r\n break;\r\n }\r\n }\r\n }\r\n }));\r\n scheduler.schedule();\r\n }\r\n _disposeAllLenses(decChangeAccessor, viewZoneChangeAccessor) {\r\n const helper = new CodeLensHelper();\r\n for (const lens of this._lenses) {\r\n lens.dispose(helper, viewZoneChangeAccessor);\r\n }\r\n if (decChangeAccessor) {\r\n helper.commit(decChangeAccessor);\r\n }\r\n this._lenses.length = 0;\r\n }\r\n _renderCodeLensSymbols(symbols) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n let maxLineNumber = this._editor.getModel().getLineCount();\r\n let groups = [];\r\n let lastGroup;\r\n for (let symbol of symbols.lenses) {\r\n let line = symbol.symbol.range.startLineNumber;\r\n if (line < 1 || line > maxLineNumber) {\r\n // invalid code lens\r\n continue;\r\n }\r\n else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\r\n // on same line as previous\r\n lastGroup.push(symbol);\r\n }\r\n else {\r\n // on later line as previous\r\n lastGroup = [symbol];\r\n groups.push(lastGroup);\r\n }\r\n }\r\n const scrollState = StableEditorScrollState.capture(this._editor);\r\n const layoutInfo = this._getLayoutInfo();\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZoneAccessor => {\r\n const helper = new CodeLensHelper();\r\n let codeLensIndex = 0;\r\n let groupsIndex = 0;\r\n while (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\r\n let symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\r\n let codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\r\n if (codeLensLineNumber < symbolsLineNumber) {\r\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\r\n this._lenses.splice(codeLensIndex, 1);\r\n }\r\n else if (codeLensLineNumber === symbolsLineNumber) {\r\n this._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\r\n groupsIndex++;\r\n codeLensIndex++;\r\n }\r\n else {\r\n this._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\r\n codeLensIndex++;\r\n groupsIndex++;\r\n }\r\n }\r\n // Delete extra code lenses\r\n while (codeLensIndex < this._lenses.length) {\r\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\r\n this._lenses.splice(codeLensIndex, 1);\r\n }\r\n // Create extra symbols\r\n while (groupsIndex < groups.length) {\r\n this._lenses.push(new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\r\n groupsIndex++;\r\n }\r\n helper.commit(decorationsAccessor);\r\n });\r\n });\r\n scrollState.restore(this._editor);\r\n }\r\n _resolveCodeLensesInViewportSoon() {\r\n const model = this._editor.getModel();\r\n if (model) {\r\n this._resolveCodeLensesScheduler.schedule();\r\n }\r\n }\r\n _resolveCodeLensesInViewport() {\r\n var _a;\r\n (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\r\n this._resolveCodeLensesPromise = undefined;\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n const toResolve = [];\r\n const lenses = [];\r\n this._lenses.forEach((lens) => {\r\n const request = lens.computeIfNecessary(model);\r\n if (request) {\r\n toResolve.push(request);\r\n lenses.push(lens);\r\n }\r\n });\r\n if (toResolve.length === 0) {\r\n return;\r\n }\r\n const t1 = Date.now();\r\n const resolvePromise = createCancelablePromise(token => {\r\n const promises = toResolve.map((request, i) => {\r\n const resolvedSymbols = new Array(request.length);\r\n const promises = request.map((request, i) => {\r\n if (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\r\n return Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\r\n resolvedSymbols[i] = symbol;\r\n }, onUnexpectedExternalError);\r\n }\r\n else {\r\n resolvedSymbols[i] = request.symbol;\r\n return Promise.resolve(undefined);\r\n }\r\n });\r\n return Promise.all(promises).then(() => {\r\n if (!token.isCancellationRequested && !lenses[i].isDisposed()) {\r\n lenses[i].updateCommands(resolvedSymbols);\r\n }\r\n });\r\n });\r\n return Promise.all(promises);\r\n });\r\n this._resolveCodeLensesPromise = resolvePromise;\r\n this._resolveCodeLensesPromise.then(() => {\r\n // update moving average\r\n const newDelay = this._resolveCodeLensesDelays.update(model, Date.now() - t1);\r\n this._resolveCodeLensesScheduler.delay = newDelay;\r\n if (this._currentCodeLensModel) { // update the cached state with new resolved items\r\n this._codeLensCache.put(model, this._currentCodeLensModel);\r\n }\r\n this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\r\n if (resolvePromise === this._resolveCodeLensesPromise) {\r\n this._resolveCodeLensesPromise = undefined;\r\n }\r\n }, err => {\r\n onUnexpectedError(err); // can also be cancellation!\r\n if (resolvePromise === this._resolveCodeLensesPromise) {\r\n this._resolveCodeLensesPromise = undefined;\r\n }\r\n });\r\n }\r\n getLenses() {\r\n return this._lenses;\r\n }\r\n};\r\nCodeLensContribution.ID = 'css.editor.codeLens';\r\nCodeLensContribution = __decorate([\r\n __param(1, ICommandService),\r\n __param(2, INotificationService),\r\n __param(3, ICodeLensCache)\r\n], CodeLensContribution);\r\nexport { CodeLensContribution };\r\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution);\r\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'codelens.showLensesInCurrentLine',\r\n precondition: EditorContextKeys.hasCodeLensProvider,\r\n label: localize('showLensOnLine', \"Show CodeLens Commands For Current Line\"),\r\n alias: 'Show CodeLens Commands For Current Line',\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const quickInputService = accessor.get(IQuickInputService);\r\n const commandService = accessor.get(ICommandService);\r\n const notificationService = accessor.get(INotificationService);\r\n const lineNumber = editor.getSelection().positionLineNumber;\r\n const codelensController = editor.getContribution(CodeLensContribution.ID);\r\n const items = [];\r\n for (let lens of codelensController.getLenses()) {\r\n if (lens.getLineNumber() === lineNumber) {\r\n for (let item of lens.getItems()) {\r\n const { command } = item.symbol;\r\n if (command) {\r\n items.push({\r\n label: command.title,\r\n command: command\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (items.length === 0) {\r\n // We dont want an empty picker\r\n return;\r\n }\r\n const item = yield quickInputService.pick(items, { canPickMany: false });\r\n if (!item) {\r\n // Nothing picked\r\n return;\r\n }\r\n try {\r\n yield commandService.executeCommand(item.command.id, ...(item.command.arguments || []));\r\n }\r\n catch (err) {\r\n notificationService.error(err);\r\n }\r\n });\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { OverviewRulerLane, MinimapPosition } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { overviewRulerFindMatchForeground, minimapFindMatch } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nexport class FindDecorations {\r\n constructor(editor) {\r\n this._editor = editor;\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n this._startPosition = this._editor.getPosition();\r\n }\r\n dispose() {\r\n this._editor.deltaDecorations(this._allDecorations(), []);\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n }\r\n reset() {\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n }\r\n getCount() {\r\n return this._decorations.length;\r\n }\r\n /** @deprecated use getFindScopes to support multiple selections */\r\n getFindScope() {\r\n if (this._findScopeDecorationIds[0]) {\r\n return this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]);\r\n }\r\n return null;\r\n }\r\n getFindScopes() {\r\n if (this._findScopeDecorationIds.length) {\r\n const scopes = this._findScopeDecorationIds.map(findScopeDecorationId => this._editor.getModel().getDecorationRange(findScopeDecorationId)).filter(element => !!element);\r\n if (scopes.length) {\r\n return scopes;\r\n }\r\n }\r\n return null;\r\n }\r\n getStartPosition() {\r\n return this._startPosition;\r\n }\r\n setStartPosition(newStartPosition) {\r\n this._startPosition = newStartPosition;\r\n this.setCurrentFindMatch(null);\r\n }\r\n _getDecorationIndex(decorationId) {\r\n const index = this._decorations.indexOf(decorationId);\r\n if (index >= 0) {\r\n return index + 1;\r\n }\r\n return 1;\r\n }\r\n getCurrentMatchesPosition(desiredRange) {\r\n let candidates = this._editor.getModel().getDecorationsInRange(desiredRange);\r\n for (const candidate of candidates) {\r\n const candidateOpts = candidate.options;\r\n if (candidateOpts === FindDecorations._FIND_MATCH_DECORATION || candidateOpts === FindDecorations._CURRENT_FIND_MATCH_DECORATION) {\r\n return this._getDecorationIndex(candidate.id);\r\n }\r\n }\r\n // We don't know the current match position, so returns zero to show '?' in find widget\r\n return 0;\r\n }\r\n setCurrentFindMatch(nextMatch) {\r\n let newCurrentDecorationId = null;\r\n let matchPosition = 0;\r\n if (nextMatch) {\r\n for (let i = 0, len = this._decorations.length; i < len; i++) {\r\n let range = this._editor.getModel().getDecorationRange(this._decorations[i]);\r\n if (nextMatch.equalsRange(range)) {\r\n newCurrentDecorationId = this._decorations[i];\r\n matchPosition = (i + 1);\r\n break;\r\n }\r\n }\r\n }\r\n if (this._highlightedDecorationId !== null || newCurrentDecorationId !== null) {\r\n this._editor.changeDecorations((changeAccessor) => {\r\n if (this._highlightedDecorationId !== null) {\r\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._FIND_MATCH_DECORATION);\r\n this._highlightedDecorationId = null;\r\n }\r\n if (newCurrentDecorationId !== null) {\r\n this._highlightedDecorationId = newCurrentDecorationId;\r\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._CURRENT_FIND_MATCH_DECORATION);\r\n }\r\n if (this._rangeHighlightDecorationId !== null) {\r\n changeAccessor.removeDecoration(this._rangeHighlightDecorationId);\r\n this._rangeHighlightDecorationId = null;\r\n }\r\n if (newCurrentDecorationId !== null) {\r\n let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);\r\n if (rng.startLineNumber !== rng.endLineNumber && rng.endColumn === 1) {\r\n let lineBeforeEnd = rng.endLineNumber - 1;\r\n let lineBeforeEndMaxColumn = this._editor.getModel().getLineMaxColumn(lineBeforeEnd);\r\n rng = new Range(rng.startLineNumber, rng.startColumn, lineBeforeEnd, lineBeforeEndMaxColumn);\r\n }\r\n this._rangeHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations._RANGE_HIGHLIGHT_DECORATION);\r\n }\r\n });\r\n }\r\n return matchPosition;\r\n }\r\n set(findMatches, findScopes) {\r\n this._editor.changeDecorations((accessor) => {\r\n let findMatchesOptions = FindDecorations._FIND_MATCH_DECORATION;\r\n let newOverviewRulerApproximateDecorations = [];\r\n if (findMatches.length > 1000) {\r\n // we go into a mode where the overview ruler gets \"approximate\" decorations\r\n // the reason is that the overview ruler paints all the decorations in the file and we don't want to cause freezes\r\n findMatchesOptions = FindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION;\r\n // approximate a distance in lines where matches should be merged\r\n const lineCount = this._editor.getModel().getLineCount();\r\n const height = this._editor.getLayoutInfo().height;\r\n const approxPixelsPerLine = height / lineCount;\r\n const mergeLinesDelta = Math.max(2, Math.ceil(3 / approxPixelsPerLine));\r\n // merge decorations as much as possible\r\n let prevStartLineNumber = findMatches[0].range.startLineNumber;\r\n let prevEndLineNumber = findMatches[0].range.endLineNumber;\r\n for (let i = 1, len = findMatches.length; i < len; i++) {\r\n const range = findMatches[i].range;\r\n if (prevEndLineNumber + mergeLinesDelta >= range.startLineNumber) {\r\n if (range.endLineNumber > prevEndLineNumber) {\r\n prevEndLineNumber = range.endLineNumber;\r\n }\r\n }\r\n else {\r\n newOverviewRulerApproximateDecorations.push({\r\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\r\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\r\n });\r\n prevStartLineNumber = range.startLineNumber;\r\n prevEndLineNumber = range.endLineNumber;\r\n }\r\n }\r\n newOverviewRulerApproximateDecorations.push({\r\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\r\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\r\n });\r\n }\r\n // Find matches\r\n let newFindMatchesDecorations = new Array(findMatches.length);\r\n for (let i = 0, len = findMatches.length; i < len; i++) {\r\n newFindMatchesDecorations[i] = {\r\n range: findMatches[i].range,\r\n options: findMatchesOptions\r\n };\r\n }\r\n this._decorations = accessor.deltaDecorations(this._decorations, newFindMatchesDecorations);\r\n // Overview ruler approximate decorations\r\n this._overviewRulerApproximateDecorations = accessor.deltaDecorations(this._overviewRulerApproximateDecorations, newOverviewRulerApproximateDecorations);\r\n // Range highlight\r\n if (this._rangeHighlightDecorationId) {\r\n accessor.removeDecoration(this._rangeHighlightDecorationId);\r\n this._rangeHighlightDecorationId = null;\r\n }\r\n // Find scope\r\n if (this._findScopeDecorationIds.length) {\r\n this._findScopeDecorationIds.forEach(findScopeDecorationId => accessor.removeDecoration(findScopeDecorationId));\r\n this._findScopeDecorationIds = [];\r\n }\r\n if (findScopes === null || findScopes === void 0 ? void 0 : findScopes.length) {\r\n this._findScopeDecorationIds = findScopes.map(findScope => accessor.addDecoration(findScope, FindDecorations._FIND_SCOPE_DECORATION));\r\n }\r\n });\r\n }\r\n matchBeforePosition(position) {\r\n if (this._decorations.length === 0) {\r\n return null;\r\n }\r\n for (let i = this._decorations.length - 1; i >= 0; i--) {\r\n let decorationId = this._decorations[i];\r\n let r = this._editor.getModel().getDecorationRange(decorationId);\r\n if (!r || r.endLineNumber > position.lineNumber) {\r\n continue;\r\n }\r\n if (r.endLineNumber < position.lineNumber) {\r\n return r;\r\n }\r\n if (r.endColumn > position.column) {\r\n continue;\r\n }\r\n return r;\r\n }\r\n return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1]);\r\n }\r\n matchAfterPosition(position) {\r\n if (this._decorations.length === 0) {\r\n return null;\r\n }\r\n for (let i = 0, len = this._decorations.length; i < len; i++) {\r\n let decorationId = this._decorations[i];\r\n let r = this._editor.getModel().getDecorationRange(decorationId);\r\n if (!r || r.startLineNumber < position.lineNumber) {\r\n continue;\r\n }\r\n if (r.startLineNumber > position.lineNumber) {\r\n return r;\r\n }\r\n if (r.startColumn < position.column) {\r\n continue;\r\n }\r\n return r;\r\n }\r\n return this._editor.getModel().getDecorationRange(this._decorations[0]);\r\n }\r\n _allDecorations() {\r\n let result = [];\r\n result = result.concat(this._decorations);\r\n result = result.concat(this._overviewRulerApproximateDecorations);\r\n if (this._findScopeDecorationIds.length) {\r\n result.push(...this._findScopeDecorationIds);\r\n }\r\n if (this._rangeHighlightDecorationId) {\r\n result.push(this._rangeHighlightDecorationId);\r\n }\r\n return result;\r\n }\r\n}\r\nFindDecorations._CURRENT_FIND_MATCH_DECORATION = ModelDecorationOptions.register({\r\n description: 'current-find-match',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n zIndex: 13,\r\n className: 'currentFindMatch',\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n },\r\n minimap: {\r\n color: themeColorFromId(minimapFindMatch),\r\n position: MinimapPosition.Inline\r\n }\r\n});\r\nFindDecorations._FIND_MATCH_DECORATION = ModelDecorationOptions.register({\r\n description: 'find-match',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'findMatch',\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n },\r\n minimap: {\r\n color: themeColorFromId(minimapFindMatch),\r\n position: MinimapPosition.Inline\r\n }\r\n});\r\nFindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION = ModelDecorationOptions.register({\r\n description: 'find-match-no-overview',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'findMatch',\r\n showIfCollapsed: true\r\n});\r\nFindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION = ModelDecorationOptions.register({\r\n description: 'find-match-only-overview',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nFindDecorations._RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({\r\n description: 'find-range-highlight',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'rangeHighlight',\r\n isWholeLine: true\r\n});\r\nFindDecorations._FIND_SCOPE_DECORATION = ModelDecorationOptions.register({\r\n description: 'find-scope',\r\n className: 'findScope',\r\n isWholeLine: true\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nexport class ReplaceAllCommand {\r\n constructor(editorSelection, ranges, replaceStrings) {\r\n this._editorSelection = editorSelection;\r\n this._ranges = ranges;\r\n this._replaceStrings = replaceStrings;\r\n this._trackedEditorSelectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n if (this._ranges.length > 0) {\r\n // Collect all edit operations\r\n let ops = [];\r\n for (let i = 0; i < this._ranges.length; i++) {\r\n ops.push({\r\n range: this._ranges[i],\r\n text: this._replaceStrings[i]\r\n });\r\n }\r\n // Sort them in ascending order by range starts\r\n ops.sort((o1, o2) => {\r\n return Range.compareRangesUsingStarts(o1.range, o2.range);\r\n });\r\n // Merge operations that touch each other\r\n let resultOps = [];\r\n let previousOp = ops[0];\r\n for (let i = 1; i < ops.length; i++) {\r\n if (previousOp.range.endLineNumber === ops[i].range.startLineNumber && previousOp.range.endColumn === ops[i].range.startColumn) {\r\n // These operations are one after another and can be merged\r\n previousOp.range = previousOp.range.plusRange(ops[i].range);\r\n previousOp.text = previousOp.text + ops[i].text;\r\n }\r\n else {\r\n resultOps.push(previousOp);\r\n previousOp = ops[i];\r\n }\r\n }\r\n resultOps.push(previousOp);\r\n for (const op of resultOps) {\r\n builder.addEditOperation(op.range, op.text);\r\n }\r\n }\r\n this._trackedEditorSelectionId = builder.trackSelection(this._editorSelection);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this._trackedEditorSelectionId);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nexport function buildReplaceStringWithCasePreserved(matches, pattern) {\r\n if (matches && (matches[0] !== '')) {\r\n const containsHyphens = validateSpecificSpecialCharacter(matches, pattern, '-');\r\n const containsUnderscores = validateSpecificSpecialCharacter(matches, pattern, '_');\r\n if (containsHyphens && !containsUnderscores) {\r\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '-');\r\n }\r\n else if (!containsHyphens && containsUnderscores) {\r\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '_');\r\n }\r\n if (matches[0].toUpperCase() === matches[0]) {\r\n return pattern.toUpperCase();\r\n }\r\n else if (matches[0].toLowerCase() === matches[0]) {\r\n return pattern.toLowerCase();\r\n }\r\n else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {\r\n return pattern[0].toUpperCase() + pattern.substr(1);\r\n }\r\n else if (matches[0][0].toUpperCase() !== matches[0][0] && pattern.length > 0) {\r\n return pattern[0].toLowerCase() + pattern.substr(1);\r\n }\r\n else {\r\n // we don't understand its pattern yet.\r\n return pattern;\r\n }\r\n }\r\n else {\r\n return pattern;\r\n }\r\n}\r\nfunction validateSpecificSpecialCharacter(matches, pattern, specialCharacter) {\r\n const doesContainSpecialCharacter = matches[0].indexOf(specialCharacter) !== -1 && pattern.indexOf(specialCharacter) !== -1;\r\n return doesContainSpecialCharacter && matches[0].split(specialCharacter).length === pattern.split(specialCharacter).length;\r\n}\r\nfunction buildReplaceStringForSpecificSpecialCharacter(matches, pattern, specialCharacter) {\r\n const splitPatternAtSpecialCharacter = pattern.split(specialCharacter);\r\n const splitMatchAtSpecialCharacter = matches[0].split(specialCharacter);\r\n let replaceString = '';\r\n splitPatternAtSpecialCharacter.forEach((splitValue, index) => {\r\n replaceString += buildReplaceStringWithCasePreserved([splitMatchAtSpecialCharacter[index]], splitValue) + specialCharacter;\r\n });\r\n return replaceString.slice(0, -1);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { buildReplaceStringWithCasePreserved } from '../../../base/common/search.js';\r\n/**\r\n * Assigned when the replace pattern is entirely static.\r\n */\r\nclass StaticValueReplacePattern {\r\n constructor(staticValue) {\r\n this.staticValue = staticValue;\r\n this.kind = 0 /* StaticValue */;\r\n }\r\n}\r\n/**\r\n * Assigned when the replace pattern has replacement patterns.\r\n */\r\nclass DynamicPiecesReplacePattern {\r\n constructor(pieces) {\r\n this.pieces = pieces;\r\n this.kind = 1 /* DynamicPieces */;\r\n }\r\n}\r\nexport class ReplacePattern {\r\n constructor(pieces) {\r\n if (!pieces || pieces.length === 0) {\r\n this._state = new StaticValueReplacePattern('');\r\n }\r\n else if (pieces.length === 1 && pieces[0].staticValue !== null) {\r\n this._state = new StaticValueReplacePattern(pieces[0].staticValue);\r\n }\r\n else {\r\n this._state = new DynamicPiecesReplacePattern(pieces);\r\n }\r\n }\r\n static fromStaticValue(value) {\r\n return new ReplacePattern([ReplacePiece.staticValue(value)]);\r\n }\r\n get hasReplacementPatterns() {\r\n return (this._state.kind === 1 /* DynamicPieces */);\r\n }\r\n buildReplaceString(matches, preserveCase) {\r\n if (this._state.kind === 0 /* StaticValue */) {\r\n if (preserveCase) {\r\n return buildReplaceStringWithCasePreserved(matches, this._state.staticValue);\r\n }\r\n else {\r\n return this._state.staticValue;\r\n }\r\n }\r\n let result = '';\r\n for (let i = 0, len = this._state.pieces.length; i < len; i++) {\r\n let piece = this._state.pieces[i];\r\n if (piece.staticValue !== null) {\r\n // static value ReplacePiece\r\n result += piece.staticValue;\r\n continue;\r\n }\r\n // match index ReplacePiece\r\n let match = ReplacePattern._substitute(piece.matchIndex, matches);\r\n if (piece.caseOps !== null && piece.caseOps.length > 0) {\r\n let repl = [];\r\n let lenOps = piece.caseOps.length;\r\n let opIdx = 0;\r\n for (let idx = 0, len = match.length; idx < len; idx++) {\r\n if (opIdx >= lenOps) {\r\n repl.push(match.slice(idx));\r\n break;\r\n }\r\n switch (piece.caseOps[opIdx]) {\r\n case 'U':\r\n repl.push(match[idx].toUpperCase());\r\n break;\r\n case 'u':\r\n repl.push(match[idx].toUpperCase());\r\n opIdx++;\r\n break;\r\n case 'L':\r\n repl.push(match[idx].toLowerCase());\r\n break;\r\n case 'l':\r\n repl.push(match[idx].toLowerCase());\r\n opIdx++;\r\n break;\r\n default:\r\n repl.push(match[idx]);\r\n }\r\n }\r\n match = repl.join('');\r\n }\r\n result += match;\r\n }\r\n return result;\r\n }\r\n static _substitute(matchIndex, matches) {\r\n if (matches === null) {\r\n return '';\r\n }\r\n if (matchIndex === 0) {\r\n return matches[0];\r\n }\r\n let remainder = '';\r\n while (matchIndex > 0) {\r\n if (matchIndex < matches.length) {\r\n // A match can be undefined\r\n let match = (matches[matchIndex] || '');\r\n return match + remainder;\r\n }\r\n remainder = String(matchIndex % 10) + remainder;\r\n matchIndex = Math.floor(matchIndex / 10);\r\n }\r\n return '$' + remainder;\r\n }\r\n}\r\n/**\r\n * A replace piece can either be a static string or an index to a specific match.\r\n */\r\nexport class ReplacePiece {\r\n constructor(staticValue, matchIndex, caseOps) {\r\n this.staticValue = staticValue;\r\n this.matchIndex = matchIndex;\r\n if (!caseOps || caseOps.length === 0) {\r\n this.caseOps = null;\r\n }\r\n else {\r\n this.caseOps = caseOps.slice(0);\r\n }\r\n }\r\n static staticValue(value) {\r\n return new ReplacePiece(value, -1, null);\r\n }\r\n static caseOps(index, caseOps) {\r\n return new ReplacePiece(null, index, caseOps);\r\n }\r\n}\r\nclass ReplacePieceBuilder {\r\n constructor(source) {\r\n this._source = source;\r\n this._lastCharIndex = 0;\r\n this._result = [];\r\n this._resultLen = 0;\r\n this._currentStaticPiece = '';\r\n }\r\n emitUnchanged(toCharIndex) {\r\n this._emitStatic(this._source.substring(this._lastCharIndex, toCharIndex));\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n emitStatic(value, toCharIndex) {\r\n this._emitStatic(value);\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n _emitStatic(value) {\r\n if (value.length === 0) {\r\n return;\r\n }\r\n this._currentStaticPiece += value;\r\n }\r\n emitMatchIndex(index, toCharIndex, caseOps) {\r\n if (this._currentStaticPiece.length !== 0) {\r\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\r\n this._currentStaticPiece = '';\r\n }\r\n this._result[this._resultLen++] = ReplacePiece.caseOps(index, caseOps);\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n finalize() {\r\n this.emitUnchanged(this._source.length);\r\n if (this._currentStaticPiece.length !== 0) {\r\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\r\n this._currentStaticPiece = '';\r\n }\r\n return new ReplacePattern(this._result);\r\n }\r\n}\r\n/**\r\n * \\n\t\t\t=> inserts a LF\r\n * \\t\t\t\t=> inserts a TAB\r\n * \\\\\t\t\t=> inserts a \"\\\".\r\n * \\u\t\t\t=> upper-cases one character in a match.\r\n * \\U\t\t\t=> upper-cases ALL remaining characters in a match.\r\n * \\l\t\t\t=> lower-cases one character in a match.\r\n * \\L\t\t\t=> lower-cases ALL remaining characters in a match.\r\n * $$\t\t\t=> inserts a \"$\".\r\n * $& and $0\t=> inserts the matched substring.\r\n * $n\t\t\t=> Where n is a non-negative integer lesser than 100, inserts the nth parenthesized submatch string\r\n * everything else stays untouched\r\n *\r\n * Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter\r\n */\r\nexport function parseReplaceString(replaceString) {\r\n if (!replaceString || replaceString.length === 0) {\r\n return new ReplacePattern(null);\r\n }\r\n let caseOps = [];\r\n let result = new ReplacePieceBuilder(replaceString);\r\n for (let i = 0, len = replaceString.length; i < len; i++) {\r\n let chCode = replaceString.charCodeAt(i);\r\n if (chCode === 92 /* Backslash */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a \\\r\n break;\r\n }\r\n let nextChCode = replaceString.charCodeAt(i);\r\n // let replaceWithCharacter: string | null = null;\r\n switch (nextChCode) {\r\n case 92 /* Backslash */:\r\n // \\\\ => inserts a \"\\\"\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\\\', i + 1);\r\n break;\r\n case 110 /* n */:\r\n // \\n => inserts a LF\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\n', i + 1);\r\n break;\r\n case 116 /* t */:\r\n // \\t => inserts a TAB\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\t', i + 1);\r\n break;\r\n // Case modification of string replacements, patterned after Boost, but only applied\r\n // to the replacement text, not subsequent content.\r\n case 117 /* u */:\r\n // \\u => upper-cases one character.\r\n case 85 /* U */:\r\n // \\U => upper-cases ALL following characters.\r\n case 108 /* l */:\r\n // \\l => lower-cases one character.\r\n case 76 /* L */:\r\n // \\L => lower-cases ALL following characters.\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('', i + 1);\r\n caseOps.push(String.fromCharCode(nextChCode));\r\n break;\r\n }\r\n continue;\r\n }\r\n if (chCode === 36 /* DollarSign */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a $\r\n break;\r\n }\r\n let nextChCode = replaceString.charCodeAt(i);\r\n if (nextChCode === 36 /* DollarSign */) {\r\n // $$ => inserts a \"$\"\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('$', i + 1);\r\n continue;\r\n }\r\n if (nextChCode === 48 /* Digit0 */ || nextChCode === 38 /* Ampersand */) {\r\n // $& and $0 => inserts the matched substring.\r\n result.emitUnchanged(i - 1);\r\n result.emitMatchIndex(0, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n if (49 /* Digit1 */ <= nextChCode && nextChCode <= 57 /* Digit9 */) {\r\n // $n\r\n let matchIndex = nextChCode - 48 /* Digit0 */;\r\n // peek next char to probe for $nn\r\n if (i + 1 < len) {\r\n let nextNextChCode = replaceString.charCodeAt(i + 1);\r\n if (48 /* Digit0 */ <= nextNextChCode && nextNextChCode <= 57 /* Digit9 */) {\r\n // $nn\r\n // move to next char\r\n i++;\r\n matchIndex = matchIndex * 10 + (nextNextChCode - 48 /* Digit0 */);\r\n result.emitUnchanged(i - 2);\r\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n }\r\n result.emitUnchanged(i - 1);\r\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n }\r\n }\r\n return result.finalize();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RunOnceScheduler, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection } from '../../common/commands/replaceCommand.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { SearchParams } from '../../common/model/textModelSearch.js';\r\nimport { FindDecorations } from './findDecorations.js';\r\nimport { ReplaceAllCommand } from './replaceAllCommand.js';\r\nimport { ReplacePattern, parseReplaceString } from './replacePattern.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { findFirstInSorted } from '../../../base/common/arrays.js';\r\nexport const CONTEXT_FIND_WIDGET_VISIBLE = new RawContextKey('findWidgetVisible', false);\r\n// Keep ContextKey use of 'Focussed' to not break when clauses\r\nexport const CONTEXT_FIND_INPUT_FOCUSED = new RawContextKey('findInputFocussed', false);\r\nexport const CONTEXT_REPLACE_INPUT_FOCUSED = new RawContextKey('replaceInputFocussed', false);\r\nexport const ToggleCaseSensitiveKeybinding = {\r\n primary: 512 /* Alt */ | 33 /* KEY_C */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 33 /* KEY_C */ }\r\n};\r\nexport const ToggleWholeWordKeybinding = {\r\n primary: 512 /* Alt */ | 53 /* KEY_W */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 53 /* KEY_W */ }\r\n};\r\nexport const ToggleRegexKeybinding = {\r\n primary: 512 /* Alt */ | 48 /* KEY_R */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 48 /* KEY_R */ }\r\n};\r\nexport const ToggleSearchScopeKeybinding = {\r\n primary: 512 /* Alt */ | 42 /* KEY_L */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 42 /* KEY_L */ }\r\n};\r\nexport const TogglePreserveCaseKeybinding = {\r\n primary: 512 /* Alt */ | 46 /* KEY_P */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 46 /* KEY_P */ }\r\n};\r\nexport const FIND_IDS = {\r\n StartFindAction: 'actions.find',\r\n StartFindWithSelection: 'actions.findWithSelection',\r\n NextMatchFindAction: 'editor.action.nextMatchFindAction',\r\n PreviousMatchFindAction: 'editor.action.previousMatchFindAction',\r\n NextSelectionMatchFindAction: 'editor.action.nextSelectionMatchFindAction',\r\n PreviousSelectionMatchFindAction: 'editor.action.previousSelectionMatchFindAction',\r\n StartFindReplaceAction: 'editor.action.startFindReplaceAction',\r\n CloseFindWidgetCommand: 'closeFindWidget',\r\n ToggleCaseSensitiveCommand: 'toggleFindCaseSensitive',\r\n ToggleWholeWordCommand: 'toggleFindWholeWord',\r\n ToggleRegexCommand: 'toggleFindRegex',\r\n ToggleSearchScopeCommand: 'toggleFindInSelection',\r\n TogglePreserveCaseCommand: 'togglePreserveCase',\r\n ReplaceOneAction: 'editor.action.replaceOne',\r\n ReplaceAllAction: 'editor.action.replaceAll',\r\n SelectAllMatchesAction: 'editor.action.selectAllMatches'\r\n};\r\nexport const MATCHES_LIMIT = 19999;\r\nconst RESEARCH_DELAY = 240;\r\nexport class FindModelBoundToEditorModel {\r\n constructor(editor, state) {\r\n this._toDispose = new DisposableStore();\r\n this._editor = editor;\r\n this._state = state;\r\n this._isDisposed = false;\r\n this._startSearchingTimer = new TimeoutTimer();\r\n this._decorations = new FindDecorations(editor);\r\n this._toDispose.add(this._decorations);\r\n this._updateDecorationsScheduler = new RunOnceScheduler(() => this.research(false), 100);\r\n this._toDispose.add(this._updateDecorationsScheduler);\r\n this._toDispose.add(this._editor.onDidChangeCursorPosition((e) => {\r\n if (e.reason === 3 /* Explicit */\r\n || e.reason === 5 /* Undo */\r\n || e.reason === 6 /* Redo */) {\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n }\r\n }));\r\n this._ignoreModelContentChanged = false;\r\n this._toDispose.add(this._editor.onDidChangeModelContent((e) => {\r\n if (this._ignoreModelContentChanged) {\r\n return;\r\n }\r\n if (e.isFlush) {\r\n // a model.setValue() was called\r\n this._decorations.reset();\r\n }\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n this._updateDecorationsScheduler.schedule();\r\n }));\r\n this._toDispose.add(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this.research(false, this._state.searchScope);\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n dispose(this._startSearchingTimer);\r\n this._toDispose.dispose();\r\n }\r\n _onStateChanged(e) {\r\n if (this._isDisposed) {\r\n // The find model is disposed during a find state changed event\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n // The find model will be disposed momentarily\r\n return;\r\n }\r\n if (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope) {\r\n let model = this._editor.getModel();\r\n if (model.isTooLargeForSyncing()) {\r\n this._startSearchingTimer.cancel();\r\n this._startSearchingTimer.setIfNotSet(() => {\r\n if (e.searchScope) {\r\n this.research(e.moveCursor, this._state.searchScope);\r\n }\r\n else {\r\n this.research(e.moveCursor);\r\n }\r\n }, RESEARCH_DELAY);\r\n }\r\n else {\r\n if (e.searchScope) {\r\n this.research(e.moveCursor, this._state.searchScope);\r\n }\r\n else {\r\n this.research(e.moveCursor);\r\n }\r\n }\r\n }\r\n }\r\n static _getSearchRange(model, findScope) {\r\n // If we have set now or before a find scope, use it for computing the search range\r\n if (findScope) {\r\n return findScope;\r\n }\r\n return model.getFullModelRange();\r\n }\r\n research(moveCursor, newFindScope) {\r\n let findScopes = null;\r\n if (typeof newFindScope !== 'undefined') {\r\n if (newFindScope !== null) {\r\n if (!Array.isArray(newFindScope)) {\r\n findScopes = [newFindScope];\r\n }\r\n else {\r\n findScopes = newFindScope;\r\n }\r\n }\r\n }\r\n else {\r\n findScopes = this._decorations.getFindScopes();\r\n }\r\n if (findScopes !== null) {\r\n findScopes = findScopes.map(findScope => {\r\n if (findScope.startLineNumber !== findScope.endLineNumber) {\r\n let endLineNumber = findScope.endLineNumber;\r\n if (findScope.endColumn === 1) {\r\n endLineNumber = endLineNumber - 1;\r\n }\r\n return new Range(findScope.startLineNumber, 1, endLineNumber, this._editor.getModel().getLineMaxColumn(endLineNumber));\r\n }\r\n return findScope;\r\n });\r\n }\r\n let findMatches = this._findMatches(findScopes, false, MATCHES_LIMIT);\r\n this._decorations.set(findMatches, findScopes);\r\n const editorSelection = this._editor.getSelection();\r\n let currentMatchesPosition = this._decorations.getCurrentMatchesPosition(editorSelection);\r\n if (currentMatchesPosition === 0 && findMatches.length > 0) {\r\n // current selection is not on top of a match\r\n // try to find its nearest result from the top of the document\r\n const matchAfterSelection = findFirstInSorted(findMatches.map(match => match.range), range => Range.compareRangesUsingStarts(range, editorSelection) >= 0);\r\n currentMatchesPosition = matchAfterSelection > 0 ? matchAfterSelection - 1 + 1 /** match position is one based */ : currentMatchesPosition;\r\n }\r\n this._state.changeMatchInfo(currentMatchesPosition, this._decorations.getCount(), undefined);\r\n if (moveCursor && this._editor.getOption(33 /* find */).cursorMoveOnType) {\r\n this._moveToNextMatch(this._decorations.getStartPosition());\r\n }\r\n }\r\n _hasMatches() {\r\n return (this._state.matchesCount > 0);\r\n }\r\n _cannotFind() {\r\n if (!this._hasMatches()) {\r\n let findScope = this._decorations.getFindScope();\r\n if (findScope) {\r\n // Reveal the selection so user is reminded that 'selection find' is on.\r\n this._editor.revealRangeInCenterIfOutsideViewport(findScope, 0 /* Smooth */);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n _setCurrentFindMatch(match) {\r\n let matchesPosition = this._decorations.setCurrentFindMatch(match);\r\n this._state.changeMatchInfo(matchesPosition, this._decorations.getCount(), match);\r\n this._editor.setSelection(match);\r\n this._editor.revealRangeInCenterIfOutsideViewport(match, 0 /* Smooth */);\r\n }\r\n _prevSearchPosition(before) {\r\n let isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\r\n || this._state.searchString.indexOf('$') >= 0);\r\n let { lineNumber, column } = before;\r\n let model = this._editor.getModel();\r\n if (isUsingLineStops || column === 1) {\r\n if (lineNumber === 1) {\r\n lineNumber = model.getLineCount();\r\n }\r\n else {\r\n lineNumber--;\r\n }\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n else {\r\n column--;\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n _moveToPrevMatch(before, isRecursed = false) {\r\n if (!this._state.canNavigateBack()) {\r\n // we are beyond the first matched find result\r\n // instead of doing nothing, we should refocus the first item\r\n const nextMatchRange = this._decorations.matchAfterPosition(before);\r\n if (nextMatchRange) {\r\n this._setCurrentFindMatch(nextMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._decorations.getCount() < MATCHES_LIMIT) {\r\n let prevMatchRange = this._decorations.matchBeforePosition(before);\r\n if (prevMatchRange && prevMatchRange.isEmpty() && prevMatchRange.getStartPosition().equals(before)) {\r\n before = this._prevSearchPosition(before);\r\n prevMatchRange = this._decorations.matchBeforePosition(before);\r\n }\r\n if (prevMatchRange) {\r\n this._setCurrentFindMatch(prevMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._cannotFind()) {\r\n return;\r\n }\r\n let findScope = this._decorations.getFindScope();\r\n let searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\r\n // ...(----)...|...\r\n if (searchRange.getEndPosition().isBefore(before)) {\r\n before = searchRange.getEndPosition();\r\n }\r\n // ...|...(----)...\r\n if (before.isBefore(searchRange.getStartPosition())) {\r\n before = searchRange.getEndPosition();\r\n }\r\n let { lineNumber, column } = before;\r\n let model = this._editor.getModel();\r\n let position = new Position(lineNumber, column);\r\n let prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null, false);\r\n if (prevMatch && prevMatch.range.isEmpty() && prevMatch.range.getStartPosition().equals(position)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n position = this._prevSearchPosition(position);\r\n prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null, false);\r\n }\r\n if (!prevMatch) {\r\n // there is precisely one match and selection is on top of it\r\n return;\r\n }\r\n if (!isRecursed && !searchRange.containsRange(prevMatch.range)) {\r\n return this._moveToPrevMatch(prevMatch.range.getStartPosition(), true);\r\n }\r\n this._setCurrentFindMatch(prevMatch.range);\r\n }\r\n moveToPrevMatch() {\r\n this._moveToPrevMatch(this._editor.getSelection().getStartPosition());\r\n }\r\n _nextSearchPosition(after) {\r\n let isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\r\n || this._state.searchString.indexOf('$') >= 0);\r\n let { lineNumber, column } = after;\r\n let model = this._editor.getModel();\r\n if (isUsingLineStops || column === model.getLineMaxColumn(lineNumber)) {\r\n if (lineNumber === model.getLineCount()) {\r\n lineNumber = 1;\r\n }\r\n else {\r\n lineNumber++;\r\n }\r\n column = 1;\r\n }\r\n else {\r\n column++;\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n _moveToNextMatch(after) {\r\n if (!this._state.canNavigateForward()) {\r\n // we are beyond the last matched find result\r\n // instead of doing nothing, we should refocus the last item\r\n const prevMatchRange = this._decorations.matchBeforePosition(after);\r\n if (prevMatchRange) {\r\n this._setCurrentFindMatch(prevMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._decorations.getCount() < MATCHES_LIMIT) {\r\n let nextMatchRange = this._decorations.matchAfterPosition(after);\r\n if (nextMatchRange && nextMatchRange.isEmpty() && nextMatchRange.getStartPosition().equals(after)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n after = this._nextSearchPosition(after);\r\n nextMatchRange = this._decorations.matchAfterPosition(after);\r\n }\r\n if (nextMatchRange) {\r\n this._setCurrentFindMatch(nextMatchRange);\r\n }\r\n return;\r\n }\r\n let nextMatch = this._getNextMatch(after, false, true);\r\n if (nextMatch) {\r\n this._setCurrentFindMatch(nextMatch.range);\r\n }\r\n }\r\n _getNextMatch(after, captureMatches, forceMove, isRecursed = false) {\r\n if (this._cannotFind()) {\r\n return null;\r\n }\r\n let findScope = this._decorations.getFindScope();\r\n let searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\r\n // ...(----)...|...\r\n if (searchRange.getEndPosition().isBefore(after)) {\r\n after = searchRange.getStartPosition();\r\n }\r\n // ...|...(----)...\r\n if (after.isBefore(searchRange.getStartPosition())) {\r\n after = searchRange.getStartPosition();\r\n }\r\n let { lineNumber, column } = after;\r\n let model = this._editor.getModel();\r\n let position = new Position(lineNumber, column);\r\n let nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null, captureMatches);\r\n if (forceMove && nextMatch && nextMatch.range.isEmpty() && nextMatch.range.getStartPosition().equals(position)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n position = this._nextSearchPosition(position);\r\n nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null, captureMatches);\r\n }\r\n if (!nextMatch) {\r\n // there is precisely one match and selection is on top of it\r\n return null;\r\n }\r\n if (!isRecursed && !searchRange.containsRange(nextMatch.range)) {\r\n return this._getNextMatch(nextMatch.range.getEndPosition(), captureMatches, forceMove, true);\r\n }\r\n return nextMatch;\r\n }\r\n moveToNextMatch() {\r\n this._moveToNextMatch(this._editor.getSelection().getEndPosition());\r\n }\r\n _getReplacePattern() {\r\n if (this._state.isRegex) {\r\n return parseReplaceString(this._state.replaceString);\r\n }\r\n return ReplacePattern.fromStaticValue(this._state.replaceString);\r\n }\r\n replace() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n let replacePattern = this._getReplacePattern();\r\n let selection = this._editor.getSelection();\r\n let nextMatch = this._getNextMatch(selection.getStartPosition(), true, false);\r\n if (nextMatch) {\r\n if (selection.equalsRange(nextMatch.range)) {\r\n // selection sits on a find match => replace it!\r\n let replaceString = replacePattern.buildReplaceString(nextMatch.matches, this._state.preserveCase);\r\n let command = new ReplaceCommand(selection, replaceString);\r\n this._executeEditorCommand('replace', command);\r\n this._decorations.setStartPosition(new Position(selection.startLineNumber, selection.startColumn + replaceString.length));\r\n this.research(true);\r\n }\r\n else {\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n this._setCurrentFindMatch(nextMatch.range);\r\n }\r\n }\r\n }\r\n _findMatches(findScopes, captureMatches, limitResultCount) {\r\n const searchRanges = (findScopes || [null]).map((scope) => FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), scope));\r\n return this._editor.getModel().findMatches(this._state.searchString, searchRanges, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null, captureMatches, limitResultCount);\r\n }\r\n replaceAll() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n const findScopes = this._decorations.getFindScopes();\r\n if (findScopes === null && this._state.matchesCount >= MATCHES_LIMIT) {\r\n // Doing a replace on the entire file that is over ${MATCHES_LIMIT} matches\r\n this._largeReplaceAll();\r\n }\r\n else {\r\n this._regularReplaceAll(findScopes);\r\n }\r\n this.research(false);\r\n }\r\n _largeReplaceAll() {\r\n const searchParams = new SearchParams(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(115 /* wordSeparators */) : null);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return;\r\n }\r\n let searchRegex = searchData.regex;\r\n if (!searchRegex.multiline) {\r\n let mod = 'mu';\r\n if (searchRegex.ignoreCase) {\r\n mod += 'i';\r\n }\r\n if (searchRegex.global) {\r\n mod += 'g';\r\n }\r\n searchRegex = new RegExp(searchRegex.source, mod);\r\n }\r\n const model = this._editor.getModel();\r\n const modelText = model.getValue(1 /* LF */);\r\n const fullModelRange = model.getFullModelRange();\r\n const replacePattern = this._getReplacePattern();\r\n let resultText;\r\n const preserveCase = this._state.preserveCase;\r\n if (replacePattern.hasReplacementPatterns || preserveCase) {\r\n resultText = modelText.replace(searchRegex, function () {\r\n return replacePattern.buildReplaceString(arguments, preserveCase);\r\n });\r\n }\r\n else {\r\n resultText = modelText.replace(searchRegex, replacePattern.buildReplaceString(null, preserveCase));\r\n }\r\n let command = new ReplaceCommandThatPreservesSelection(fullModelRange, resultText, this._editor.getSelection());\r\n this._executeEditorCommand('replaceAll', command);\r\n }\r\n _regularReplaceAll(findScopes) {\r\n const replacePattern = this._getReplacePattern();\r\n // Get all the ranges (even more than the highlighted ones)\r\n let matches = this._findMatches(findScopes, replacePattern.hasReplacementPatterns || this._state.preserveCase, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n let replaceStrings = [];\r\n for (let i = 0, len = matches.length; i < len; i++) {\r\n replaceStrings[i] = replacePattern.buildReplaceString(matches[i].matches, this._state.preserveCase);\r\n }\r\n let command = new ReplaceAllCommand(this._editor.getSelection(), matches.map(m => m.range), replaceStrings);\r\n this._executeEditorCommand('replaceAll', command);\r\n }\r\n selectAllMatches() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n let findScopes = this._decorations.getFindScopes();\r\n // Get all the ranges (even more than the highlighted ones)\r\n let matches = this._findMatches(findScopes, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n let selections = matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn));\r\n // If one of the ranges is the editor selection, then maintain it as primary\r\n let editorSelection = this._editor.getSelection();\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let sel = selections[i];\r\n if (sel.equalsRange(editorSelection)) {\r\n selections = [editorSelection].concat(selections.slice(0, i)).concat(selections.slice(i + 1));\r\n break;\r\n }\r\n }\r\n this._editor.setSelections(selections);\r\n }\r\n _executeEditorCommand(source, command) {\r\n try {\r\n this._ignoreModelContentChanged = true;\r\n this._editor.pushUndoStop();\r\n this._editor.executeCommand(source, command);\r\n this._editor.pushUndoStop();\r\n }\r\n finally {\r\n this._ignoreModelContentChanged = false;\r\n }\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./checkbox.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./checkbox.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './checkbox.css';\r\nimport { Widget } from '../widget.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { CSSIcon } from '../../../common/codicons.js';\r\nconst defaultOpts = {\r\n inputActiveOptionBorder: Color.fromHex('#007ACC00'),\r\n inputActiveOptionForeground: Color.fromHex('#FFFFFF'),\r\n inputActiveOptionBackground: Color.fromHex('#0E639C50')\r\n};\r\nexport class Checkbox extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._onChange = this._register(new Emitter());\r\n this.onChange = this._onChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._opts = Object.assign(Object.assign({}, defaultOpts), opts);\r\n this._checked = this._opts.isChecked;\r\n const classes = ['monaco-custom-checkbox'];\r\n if (this._opts.icon) {\r\n classes.push(...CSSIcon.asClassNameArray(this._opts.icon));\r\n }\r\n if (this._opts.actionClassName) {\r\n classes.push(...this._opts.actionClassName.split(' '));\r\n }\r\n if (this._checked) {\r\n classes.push('checked');\r\n }\r\n this.domNode = document.createElement('div');\r\n this.domNode.title = this._opts.title;\r\n this.domNode.classList.add(...classes);\r\n if (!this._opts.notFocusable) {\r\n this.domNode.tabIndex = 0;\r\n }\r\n this.domNode.setAttribute('role', 'checkbox');\r\n this.domNode.setAttribute('aria-checked', String(this._checked));\r\n this.domNode.setAttribute('aria-label', this._opts.title);\r\n this.applyStyles();\r\n this.onclick(this.domNode, (ev) => {\r\n this.checked = !this._checked;\r\n this._onChange.fire(false);\r\n ev.preventDefault();\r\n });\r\n this.ignoreGesture(this.domNode);\r\n this.onkeydown(this.domNode, (keyboardEvent) => {\r\n if (keyboardEvent.keyCode === 10 /* Space */ || keyboardEvent.keyCode === 3 /* Enter */) {\r\n this.checked = !this._checked;\r\n this._onChange.fire(true);\r\n keyboardEvent.preventDefault();\r\n return;\r\n }\r\n this._onKeyDown.fire(keyboardEvent);\r\n });\r\n }\r\n get enabled() {\r\n return this.domNode.getAttribute('aria-disabled') !== 'true';\r\n }\r\n focus() {\r\n this.domNode.focus();\r\n }\r\n get checked() {\r\n return this._checked;\r\n }\r\n set checked(newIsChecked) {\r\n this._checked = newIsChecked;\r\n this.domNode.setAttribute('aria-checked', String(this._checked));\r\n this.domNode.classList.toggle('checked', this._checked);\r\n this.applyStyles();\r\n }\r\n width() {\r\n return 2 /*marginleft*/ + 2 /*border*/ + 2 /*padding*/ + 16 /* icon width */;\r\n }\r\n style(styles) {\r\n if (styles.inputActiveOptionBorder) {\r\n this._opts.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n }\r\n if (styles.inputActiveOptionForeground) {\r\n this._opts.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n }\r\n if (styles.inputActiveOptionBackground) {\r\n this._opts.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n }\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n this.domNode.style.borderColor = this._checked && this._opts.inputActiveOptionBorder ? this._opts.inputActiveOptionBorder.toString() : 'transparent';\r\n this.domNode.style.color = this._checked && this._opts.inputActiveOptionForeground ? this._opts.inputActiveOptionForeground.toString() : 'inherit';\r\n this.domNode.style.backgroundColor = this._checked && this._opts.inputActiveOptionBackground ? this._opts.inputActiveOptionBackground.toString() : 'transparent';\r\n }\r\n }\r\n enable() {\r\n this.domNode.setAttribute('aria-disabled', String(false));\r\n }\r\n disable() {\r\n this.domNode.setAttribute('aria-disabled', String(true));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Checkbox } from '../checkbox/checkbox.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { Codicon } from '../../../common/codicons.js';\r\nconst NLS_CASE_SENSITIVE_CHECKBOX_LABEL = nls.localize('caseDescription', \"Match Case\");\r\nconst NLS_WHOLE_WORD_CHECKBOX_LABEL = nls.localize('wordsDescription', \"Match Whole Word\");\r\nconst NLS_REGEX_CHECKBOX_LABEL = nls.localize('regexDescription', \"Use Regular Expression\");\r\nexport class CaseSensitiveCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.caseSensitive,\r\n title: NLS_CASE_SENSITIVE_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class WholeWordsCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.wholeWord,\r\n title: NLS_WHOLE_WORD_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class RegexCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.regex,\r\n title: NLS_REGEX_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { CaseSensitiveCheckbox, RegexCheckbox, WholeWordsCheckbox } from '../../../base/browser/ui/findinput/findInputCheckboxes.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { FIND_IDS } from './findModel.js';\r\nimport { contrastBorder, editorWidgetBackground, inputActiveOptionBorder, inputActiveOptionBackground, widgetShadow, editorWidgetForeground, inputActiveOptionForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nexport class FindOptionsWidget extends Widget {\r\n constructor(editor, state, keybindingService, themeService) {\r\n super();\r\n this._hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\r\n this._isVisible = false;\r\n this._editor = editor;\r\n this._state = state;\r\n this._keybindingService = keybindingService;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'findOptionsWidget';\r\n this._domNode.style.display = 'none';\r\n this._domNode.style.top = '10px';\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n const inputActiveOptionBorderColor = themeService.getColorTheme().getColor(inputActiveOptionBorder);\r\n const inputActiveOptionForegroundColor = themeService.getColorTheme().getColor(inputActiveOptionForeground);\r\n const inputActiveOptionBackgroundColor = themeService.getColorTheme().getColor(inputActiveOptionBackground);\r\n this.caseSensitive = this._register(new CaseSensitiveCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\r\n isChecked: this._state.matchCase,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.caseSensitive.domNode);\r\n this._register(this.caseSensitive.onChange(() => {\r\n this._state.change({\r\n matchCase: this.caseSensitive.checked\r\n }, false);\r\n }));\r\n this.wholeWords = this._register(new WholeWordsCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\r\n isChecked: this._state.wholeWord,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.wholeWords.domNode);\r\n this._register(this.wholeWords.onChange(() => {\r\n this._state.change({\r\n wholeWord: this.wholeWords.checked\r\n }, false);\r\n }));\r\n this.regex = this._register(new RegexCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\r\n isChecked: this._state.isRegex,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.regex.domNode);\r\n this._register(this.regex.onChange(() => {\r\n this._state.change({\r\n isRegex: this.regex.checked\r\n }, false);\r\n }));\r\n this._editor.addOverlayWidget(this);\r\n this._register(this._state.onFindReplaceStateChange((e) => {\r\n let somethingChanged = false;\r\n if (e.isRegex) {\r\n this.regex.checked = this._state.isRegex;\r\n somethingChanged = true;\r\n }\r\n if (e.wholeWord) {\r\n this.wholeWords.checked = this._state.wholeWord;\r\n somethingChanged = true;\r\n }\r\n if (e.matchCase) {\r\n this.caseSensitive.checked = this._state.matchCase;\r\n somethingChanged = true;\r\n }\r\n if (!this._state.isRevealed && somethingChanged) {\r\n this._revealTemporarily();\r\n }\r\n }));\r\n this._register(dom.addDisposableNonBubblingMouseOutListener(this._domNode, (e) => this._onMouseOut()));\r\n this._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\r\n this._applyTheme(themeService.getColorTheme());\r\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n }\r\n _keybindingLabelFor(actionId) {\r\n let kb = this._keybindingService.lookupKeybinding(actionId);\r\n if (!kb) {\r\n return '';\r\n }\r\n return ` (${kb.getLabel()})`;\r\n }\r\n dispose() {\r\n this._editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n // ----- IOverlayWidget API\r\n getId() {\r\n return FindOptionsWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return {\r\n preference: 0 /* TOP_RIGHT_CORNER */\r\n };\r\n }\r\n highlightFindOptions() {\r\n this._revealTemporarily();\r\n }\r\n _revealTemporarily() {\r\n this._show();\r\n this._hideSoon.schedule();\r\n }\r\n _onMouseOut() {\r\n this._hideSoon.schedule();\r\n }\r\n _onMouseOver() {\r\n this._hideSoon.cancel();\r\n }\r\n _show() {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n this._domNode.style.display = 'block';\r\n }\r\n _hide() {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n this._domNode.style.display = 'none';\r\n }\r\n _applyTheme(theme) {\r\n let inputStyles = {\r\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\r\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\r\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground)\r\n };\r\n this.caseSensitive.style(inputStyles);\r\n this.wholeWords.style(inputStyles);\r\n this.regex.style(inputStyles);\r\n }\r\n}\r\nFindOptionsWidget.ID = 'editor.contrib.findOptionsWidget';\r\nregisterThemingParticipant((theme, collector) => {\r\n const widgetBackground = theme.getColor(editorWidgetBackground);\r\n if (widgetBackground) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { background-color: ${widgetBackground}; }`);\r\n }\r\n const widgetForeground = theme.getColor(editorWidgetForeground);\r\n if (widgetForeground) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { color: ${widgetForeground}; }`);\r\n }\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n if (widgetShadowColor) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { box-shadow: 0 0 8px 2px ${widgetShadowColor}; }`);\r\n }\r\n const hcBorder = theme.getColor(contrastBorder);\r\n if (hcBorder) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { border: 2px solid ${hcBorder}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { MATCHES_LIMIT } from './findModel.js';\r\nfunction effectiveOptionValue(override, value) {\r\n if (override === 1 /* True */) {\r\n return true;\r\n }\r\n if (override === 2 /* False */) {\r\n return false;\r\n }\r\n return value;\r\n}\r\nexport class FindReplaceState extends Disposable {\r\n constructor() {\r\n super();\r\n this._onFindReplaceStateChange = this._register(new Emitter());\r\n this.onFindReplaceStateChange = this._onFindReplaceStateChange.event;\r\n this._searchString = '';\r\n this._replaceString = '';\r\n this._isRevealed = false;\r\n this._isReplaceRevealed = false;\r\n this._isRegex = false;\r\n this._isRegexOverride = 0 /* NotSet */;\r\n this._wholeWord = false;\r\n this._wholeWordOverride = 0 /* NotSet */;\r\n this._matchCase = false;\r\n this._matchCaseOverride = 0 /* NotSet */;\r\n this._preserveCase = false;\r\n this._preserveCaseOverride = 0 /* NotSet */;\r\n this._searchScope = null;\r\n this._matchesPosition = 0;\r\n this._matchesCount = 0;\r\n this._currentMatch = null;\r\n this._loop = true;\r\n }\r\n get searchString() { return this._searchString; }\r\n get replaceString() { return this._replaceString; }\r\n get isRevealed() { return this._isRevealed; }\r\n get isReplaceRevealed() { return this._isReplaceRevealed; }\r\n get isRegex() { return effectiveOptionValue(this._isRegexOverride, this._isRegex); }\r\n get wholeWord() { return effectiveOptionValue(this._wholeWordOverride, this._wholeWord); }\r\n get matchCase() { return effectiveOptionValue(this._matchCaseOverride, this._matchCase); }\r\n get preserveCase() { return effectiveOptionValue(this._preserveCaseOverride, this._preserveCase); }\r\n get actualIsRegex() { return this._isRegex; }\r\n get actualWholeWord() { return this._wholeWord; }\r\n get actualMatchCase() { return this._matchCase; }\r\n get actualPreserveCase() { return this._preserveCase; }\r\n get searchScope() { return this._searchScope; }\r\n get matchesPosition() { return this._matchesPosition; }\r\n get matchesCount() { return this._matchesCount; }\r\n get currentMatch() { return this._currentMatch; }\r\n changeMatchInfo(matchesPosition, matchesCount, currentMatch) {\r\n let changeEvent = {\r\n moveCursor: false,\r\n updateHistory: false,\r\n searchString: false,\r\n replaceString: false,\r\n isRevealed: false,\r\n isReplaceRevealed: false,\r\n isRegex: false,\r\n wholeWord: false,\r\n matchCase: false,\r\n preserveCase: false,\r\n searchScope: false,\r\n matchesPosition: false,\r\n matchesCount: false,\r\n currentMatch: false,\r\n loop: false\r\n };\r\n let somethingChanged = false;\r\n if (matchesCount === 0) {\r\n matchesPosition = 0;\r\n }\r\n if (matchesPosition > matchesCount) {\r\n matchesPosition = matchesCount;\r\n }\r\n if (this._matchesPosition !== matchesPosition) {\r\n this._matchesPosition = matchesPosition;\r\n changeEvent.matchesPosition = true;\r\n somethingChanged = true;\r\n }\r\n if (this._matchesCount !== matchesCount) {\r\n this._matchesCount = matchesCount;\r\n changeEvent.matchesCount = true;\r\n somethingChanged = true;\r\n }\r\n if (typeof currentMatch !== 'undefined') {\r\n if (!Range.equalsRange(this._currentMatch, currentMatch)) {\r\n this._currentMatch = currentMatch;\r\n changeEvent.currentMatch = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (somethingChanged) {\r\n this._onFindReplaceStateChange.fire(changeEvent);\r\n }\r\n }\r\n change(newState, moveCursor, updateHistory = true) {\r\n var _a;\r\n let changeEvent = {\r\n moveCursor: moveCursor,\r\n updateHistory: updateHistory,\r\n searchString: false,\r\n replaceString: false,\r\n isRevealed: false,\r\n isReplaceRevealed: false,\r\n isRegex: false,\r\n wholeWord: false,\r\n matchCase: false,\r\n preserveCase: false,\r\n searchScope: false,\r\n matchesPosition: false,\r\n matchesCount: false,\r\n currentMatch: false,\r\n loop: false\r\n };\r\n let somethingChanged = false;\r\n const oldEffectiveIsRegex = this.isRegex;\r\n const oldEffectiveWholeWords = this.wholeWord;\r\n const oldEffectiveMatchCase = this.matchCase;\r\n const oldEffectivePreserveCase = this.preserveCase;\r\n if (typeof newState.searchString !== 'undefined') {\r\n if (this._searchString !== newState.searchString) {\r\n this._searchString = newState.searchString;\r\n changeEvent.searchString = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.replaceString !== 'undefined') {\r\n if (this._replaceString !== newState.replaceString) {\r\n this._replaceString = newState.replaceString;\r\n changeEvent.replaceString = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isRevealed !== 'undefined') {\r\n if (this._isRevealed !== newState.isRevealed) {\r\n this._isRevealed = newState.isRevealed;\r\n changeEvent.isRevealed = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isReplaceRevealed !== 'undefined') {\r\n if (this._isReplaceRevealed !== newState.isReplaceRevealed) {\r\n this._isReplaceRevealed = newState.isReplaceRevealed;\r\n changeEvent.isReplaceRevealed = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isRegex !== 'undefined') {\r\n this._isRegex = newState.isRegex;\r\n }\r\n if (typeof newState.wholeWord !== 'undefined') {\r\n this._wholeWord = newState.wholeWord;\r\n }\r\n if (typeof newState.matchCase !== 'undefined') {\r\n this._matchCase = newState.matchCase;\r\n }\r\n if (typeof newState.preserveCase !== 'undefined') {\r\n this._preserveCase = newState.preserveCase;\r\n }\r\n if (typeof newState.searchScope !== 'undefined') {\r\n if (!((_a = newState.searchScope) === null || _a === void 0 ? void 0 : _a.every((newSearchScope) => {\r\n var _a;\r\n return (_a = this._searchScope) === null || _a === void 0 ? void 0 : _a.some(existingSearchScope => {\r\n return !Range.equalsRange(existingSearchScope, newSearchScope);\r\n });\r\n }))) {\r\n this._searchScope = newState.searchScope;\r\n changeEvent.searchScope = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.loop !== 'undefined') {\r\n if (this._loop !== newState.loop) {\r\n this._loop = newState.loop;\r\n changeEvent.loop = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n // Overrides get set when they explicitly come in and get reset anytime something else changes\r\n this._isRegexOverride = (typeof newState.isRegexOverride !== 'undefined' ? newState.isRegexOverride : 0 /* NotSet */);\r\n this._wholeWordOverride = (typeof newState.wholeWordOverride !== 'undefined' ? newState.wholeWordOverride : 0 /* NotSet */);\r\n this._matchCaseOverride = (typeof newState.matchCaseOverride !== 'undefined' ? newState.matchCaseOverride : 0 /* NotSet */);\r\n this._preserveCaseOverride = (typeof newState.preserveCaseOverride !== 'undefined' ? newState.preserveCaseOverride : 0 /* NotSet */);\r\n if (oldEffectiveIsRegex !== this.isRegex) {\r\n somethingChanged = true;\r\n changeEvent.isRegex = true;\r\n }\r\n if (oldEffectiveWholeWords !== this.wholeWord) {\r\n somethingChanged = true;\r\n changeEvent.wholeWord = true;\r\n }\r\n if (oldEffectiveMatchCase !== this.matchCase) {\r\n somethingChanged = true;\r\n changeEvent.matchCase = true;\r\n }\r\n if (oldEffectivePreserveCase !== this.preserveCase) {\r\n somethingChanged = true;\r\n changeEvent.preserveCase = true;\r\n }\r\n if (somethingChanged) {\r\n this._onFindReplaceStateChange.fire(changeEvent);\r\n }\r\n }\r\n canNavigateBack() {\r\n return this.canNavigateInLoop() || (this.matchesPosition !== 1);\r\n }\r\n canNavigateForward() {\r\n return this.canNavigateInLoop() || (this.matchesPosition < this.matchesCount);\r\n }\r\n canNavigateInLoop() {\r\n return this._loop || (this.matchesCount >= MATCHES_LIMIT);\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./findWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./findWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./findInput.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./findInput.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './findInput.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { CaseSensitiveCheckbox, WholeWordsCheckbox, RegexCheckbox } from './findInputCheckboxes.js';\r\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\r\nexport class FindInput extends Widget {\r\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\r\n super();\r\n this._showOptionButtons = _showOptionButtons;\r\n this.fixFocusOnOptionClickEnabled = true;\r\n this.imeSessionInProgress = false;\r\n this._onDidOptionChange = this._register(new Emitter());\r\n this.onDidOptionChange = this._onDidOptionChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onMouseDown = this._register(new Emitter());\r\n this.onMouseDown = this._onMouseDown.event;\r\n this._onInput = this._register(new Emitter());\r\n this._onKeyUp = this._register(new Emitter());\r\n this._onCaseSensitiveKeyDown = this._register(new Emitter());\r\n this.onCaseSensitiveKeyDown = this._onCaseSensitiveKeyDown.event;\r\n this._onRegexKeyDown = this._register(new Emitter());\r\n this.onRegexKeyDown = this._onRegexKeyDown.event;\r\n this._lastHighlightFindOptions = 0;\r\n this.contextViewProvider = contextViewProvider;\r\n this.placeholder = options.placeholder || '';\r\n this.validation = options.validation;\r\n this.label = options.label || NLS_DEFAULT_LABEL;\r\n this.inputActiveOptionBorder = options.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = options.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = options.inputActiveOptionBackground;\r\n this.inputBackground = options.inputBackground;\r\n this.inputForeground = options.inputForeground;\r\n this.inputBorder = options.inputBorder;\r\n this.inputValidationInfoBorder = options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = options.inputValidationErrorForeground;\r\n const appendCaseSensitiveLabel = options.appendCaseSensitiveLabel || '';\r\n const appendWholeWordsLabel = options.appendWholeWordsLabel || '';\r\n const appendRegexLabel = options.appendRegexLabel || '';\r\n const history = options.history || [];\r\n const flexibleHeight = !!options.flexibleHeight;\r\n const flexibleWidth = !!options.flexibleWidth;\r\n const flexibleMaxHeight = options.flexibleMaxHeight;\r\n this.domNode = document.createElement('div');\r\n this.domNode.classList.add('monaco-findInput');\r\n this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\r\n placeholder: this.placeholder || '',\r\n ariaLabel: this.label || '',\r\n validationOptions: {\r\n validation: this.validation\r\n },\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder,\r\n history,\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight\r\n }));\r\n this.regex = this._register(new RegexCheckbox({\r\n appendTitle: appendRegexLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.regex.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.regex.onKeyDown(e => {\r\n this._onRegexKeyDown.fire(e);\r\n }));\r\n this.wholeWords = this._register(new WholeWordsCheckbox({\r\n appendTitle: appendWholeWordsLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.wholeWords.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this.caseSensitive = this._register(new CaseSensitiveCheckbox({\r\n appendTitle: appendCaseSensitiveLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.caseSensitive.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.caseSensitive.onKeyDown(e => {\r\n this._onCaseSensitiveKeyDown.fire(e);\r\n }));\r\n if (this._showOptionButtons) {\r\n this.inputBox.paddingRight = this.caseSensitive.width() + this.wholeWords.width() + this.regex.width();\r\n }\r\n // Arrow-Key support to navigate between options\r\n let indexes = [this.caseSensitive.domNode, this.wholeWords.domNode, this.regex.domNode];\r\n this.onkeydown(this.domNode, (event) => {\r\n if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) {\r\n let index = indexes.indexOf(document.activeElement);\r\n if (index >= 0) {\r\n let newIndex = -1;\r\n if (event.equals(17 /* RightArrow */)) {\r\n newIndex = (index + 1) % indexes.length;\r\n }\r\n else if (event.equals(15 /* LeftArrow */)) {\r\n if (index === 0) {\r\n newIndex = indexes.length - 1;\r\n }\r\n else {\r\n newIndex = index - 1;\r\n }\r\n }\r\n if (event.equals(9 /* Escape */)) {\r\n indexes[index].blur();\r\n this.inputBox.focus();\r\n }\r\n else if (newIndex >= 0) {\r\n indexes[newIndex].focus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n }\r\n }\r\n });\r\n let controls = document.createElement('div');\r\n controls.className = 'controls';\r\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\r\n controls.appendChild(this.caseSensitive.domNode);\r\n controls.appendChild(this.wholeWords.domNode);\r\n controls.appendChild(this.regex.domNode);\r\n this.domNode.appendChild(controls);\r\n if (parent) {\r\n parent.appendChild(this.domNode);\r\n }\r\n this._register(dom.addDisposableListener(this.inputBox.inputElement, 'compositionstart', (e) => {\r\n this.imeSessionInProgress = true;\r\n }));\r\n this._register(dom.addDisposableListener(this.inputBox.inputElement, 'compositionend', (e) => {\r\n this.imeSessionInProgress = false;\r\n this._onInput.fire();\r\n }));\r\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\r\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\r\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\r\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\r\n }\r\n enable() {\r\n this.domNode.classList.remove('disabled');\r\n this.inputBox.enable();\r\n this.regex.enable();\r\n this.wholeWords.enable();\r\n this.caseSensitive.enable();\r\n }\r\n disable() {\r\n this.domNode.classList.add('disabled');\r\n this.inputBox.disable();\r\n this.regex.disable();\r\n this.wholeWords.disable();\r\n this.caseSensitive.disable();\r\n }\r\n setFocusInputOnOptionClick(value) {\r\n this.fixFocusOnOptionClickEnabled = value;\r\n }\r\n setEnabled(enabled) {\r\n if (enabled) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n }\r\n getValue() {\r\n return this.inputBox.value;\r\n }\r\n setValue(value) {\r\n if (this.inputBox.value !== value) {\r\n this.inputBox.value = value;\r\n }\r\n }\r\n style(styles) {\r\n this.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n const checkBoxStyles = {\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n };\r\n this.regex.style(checkBoxStyles);\r\n this.wholeWords.style(checkBoxStyles);\r\n this.caseSensitive.style(checkBoxStyles);\r\n const inputBoxStyles = {\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder\r\n };\r\n this.inputBox.style(inputBoxStyles);\r\n }\r\n }\r\n select() {\r\n this.inputBox.select();\r\n }\r\n focus() {\r\n this.inputBox.focus();\r\n }\r\n getCaseSensitive() {\r\n return this.caseSensitive.checked;\r\n }\r\n setCaseSensitive(value) {\r\n this.caseSensitive.checked = value;\r\n }\r\n getWholeWords() {\r\n return this.wholeWords.checked;\r\n }\r\n setWholeWords(value) {\r\n this.wholeWords.checked = value;\r\n }\r\n getRegex() {\r\n return this.regex.checked;\r\n }\r\n setRegex(value) {\r\n this.regex.checked = value;\r\n this.validate();\r\n }\r\n focusOnCaseSensitive() {\r\n this.caseSensitive.focus();\r\n }\r\n highlightFindOptions() {\r\n this.domNode.classList.remove('highlight-' + (this._lastHighlightFindOptions));\r\n this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions;\r\n this.domNode.classList.add('highlight-' + (this._lastHighlightFindOptions));\r\n }\r\n validate() {\r\n this.inputBox.validate();\r\n }\r\n clearMessage() {\r\n this.inputBox.hideMessage();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './findInput.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Checkbox } from '../checkbox/checkbox.js';\r\nimport { Codicon } from '../../../common/codicons.js';\r\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\r\nconst NLS_PRESERVE_CASE_LABEL = nls.localize('label.preserveCaseCheckbox', \"Preserve Case\");\r\nexport class PreserveCaseCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n // TODO: does this need its own icon?\r\n icon: Codicon.preserveCase,\r\n title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class ReplaceInput extends Widget {\r\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\r\n super();\r\n this._showOptionButtons = _showOptionButtons;\r\n this.fixFocusOnOptionClickEnabled = true;\r\n this.cachedOptionsWidth = 0;\r\n this._onDidOptionChange = this._register(new Emitter());\r\n this.onDidOptionChange = this._onDidOptionChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onMouseDown = this._register(new Emitter());\r\n this._onInput = this._register(new Emitter());\r\n this._onKeyUp = this._register(new Emitter());\r\n this._onPreserveCaseKeyDown = this._register(new Emitter());\r\n this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event;\r\n this.contextViewProvider = contextViewProvider;\r\n this.placeholder = options.placeholder || '';\r\n this.validation = options.validation;\r\n this.label = options.label || NLS_DEFAULT_LABEL;\r\n this.inputActiveOptionBorder = options.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = options.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = options.inputActiveOptionBackground;\r\n this.inputBackground = options.inputBackground;\r\n this.inputForeground = options.inputForeground;\r\n this.inputBorder = options.inputBorder;\r\n this.inputValidationInfoBorder = options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = options.inputValidationErrorForeground;\r\n const appendPreserveCaseLabel = options.appendPreserveCaseLabel || '';\r\n const history = options.history || [];\r\n const flexibleHeight = !!options.flexibleHeight;\r\n const flexibleWidth = !!options.flexibleWidth;\r\n const flexibleMaxHeight = options.flexibleMaxHeight;\r\n this.domNode = document.createElement('div');\r\n this.domNode.classList.add('monaco-findInput');\r\n this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\r\n ariaLabel: this.label || '',\r\n placeholder: this.placeholder || '',\r\n validationOptions: {\r\n validation: this.validation\r\n },\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder,\r\n history,\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight\r\n }));\r\n this.preserveCase = this._register(new PreserveCaseCheckbox({\r\n appendTitle: appendPreserveCaseLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n }));\r\n this._register(this.preserveCase.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.preserveCase.onKeyDown(e => {\r\n this._onPreserveCaseKeyDown.fire(e);\r\n }));\r\n if (this._showOptionButtons) {\r\n this.cachedOptionsWidth = this.preserveCase.width();\r\n }\r\n else {\r\n this.cachedOptionsWidth = 0;\r\n }\r\n // Arrow-Key support to navigate between options\r\n let indexes = [this.preserveCase.domNode];\r\n this.onkeydown(this.domNode, (event) => {\r\n if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) {\r\n let index = indexes.indexOf(document.activeElement);\r\n if (index >= 0) {\r\n let newIndex = -1;\r\n if (event.equals(17 /* RightArrow */)) {\r\n newIndex = (index + 1) % indexes.length;\r\n }\r\n else if (event.equals(15 /* LeftArrow */)) {\r\n if (index === 0) {\r\n newIndex = indexes.length - 1;\r\n }\r\n else {\r\n newIndex = index - 1;\r\n }\r\n }\r\n if (event.equals(9 /* Escape */)) {\r\n indexes[index].blur();\r\n this.inputBox.focus();\r\n }\r\n else if (newIndex >= 0) {\r\n indexes[newIndex].focus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n }\r\n }\r\n });\r\n let controls = document.createElement('div');\r\n controls.className = 'controls';\r\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\r\n controls.appendChild(this.preserveCase.domNode);\r\n this.domNode.appendChild(controls);\r\n if (parent) {\r\n parent.appendChild(this.domNode);\r\n }\r\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\r\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\r\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\r\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\r\n }\r\n enable() {\r\n this.domNode.classList.remove('disabled');\r\n this.inputBox.enable();\r\n this.preserveCase.enable();\r\n }\r\n disable() {\r\n this.domNode.classList.add('disabled');\r\n this.inputBox.disable();\r\n this.preserveCase.disable();\r\n }\r\n setEnabled(enabled) {\r\n if (enabled) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n }\r\n style(styles) {\r\n this.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n const checkBoxStyles = {\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n };\r\n this.preserveCase.style(checkBoxStyles);\r\n const inputBoxStyles = {\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder\r\n };\r\n this.inputBox.style(inputBoxStyles);\r\n }\r\n }\r\n select() {\r\n this.inputBox.select();\r\n }\r\n focus() {\r\n this.inputBox.focus();\r\n }\r\n getPreserveCase() {\r\n return this.preserveCase.checked;\r\n }\r\n setPreserveCase(value) {\r\n this.preserveCase.checked = value;\r\n }\r\n focusOnPreserve() {\r\n this.preserveCase.focus();\r\n }\r\n validate() {\r\n if (this.inputBox) {\r\n this.inputBox.validate();\r\n }\r\n }\r\n set width(newWidth) {\r\n this.inputBox.paddingRight = this.cachedOptionsWidth;\r\n this.inputBox.width = newWidth;\r\n this.domNode.style.width = newWidth + 'px';\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IContextKeyService, ContextKeyExpr, RawContextKey } from '../contextkey/common/contextkey.js';\r\nimport { FindInput } from '../../base/browser/ui/findinput/findInput.js';\r\nimport { KeybindingsRegistry } from '../keybinding/common/keybindingsRegistry.js';\r\nimport { ReplaceInput } from '../../base/browser/ui/findinput/replaceInput.js';\r\nexport const HistoryNavigationWidgetContext = 'historyNavigationWidget';\r\nexport const HistoryNavigationEnablementContext = 'historyNavigationEnabled';\r\nfunction bindContextScopedWidget(contextKeyService, widget, contextKey) {\r\n new RawContextKey(contextKey, widget).bindTo(contextKeyService);\r\n}\r\nfunction createWidgetScopedContextKeyService(contextKeyService, widget) {\r\n return contextKeyService.createScoped(widget.target);\r\n}\r\nfunction getContextScopedWidget(contextKeyService, contextKey) {\r\n return contextKeyService.getContext(document.activeElement).getValue(contextKey);\r\n}\r\nexport function createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, widget) {\r\n const scopedContextKeyService = createWidgetScopedContextKeyService(contextKeyService, widget);\r\n bindContextScopedWidget(scopedContextKeyService, widget, HistoryNavigationWidgetContext);\r\n const historyNavigationEnablement = new RawContextKey(HistoryNavigationEnablementContext, true).bindTo(scopedContextKeyService);\r\n return { scopedContextKeyService, historyNavigationEnablement };\r\n}\r\nlet ContextScopedFindInput = class ContextScopedFindInput extends FindInput {\r\n constructor(container, contextViewProvider, options, contextKeyService, showFindOptions = false) {\r\n super(container, contextViewProvider, showFindOptions, options);\r\n this._register(createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, { target: this.inputBox.element, historyNavigator: this.inputBox }).scopedContextKeyService);\r\n }\r\n};\r\nContextScopedFindInput = __decorate([\r\n __param(3, IContextKeyService)\r\n], ContextScopedFindInput);\r\nexport { ContextScopedFindInput };\r\nlet ContextScopedReplaceInput = class ContextScopedReplaceInput extends ReplaceInput {\r\n constructor(container, contextViewProvider, options, contextKeyService, showReplaceOptions = false) {\r\n super(container, contextViewProvider, showReplaceOptions, options);\r\n this._register(createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, { target: this.inputBox.element, historyNavigator: this.inputBox }).scopedContextKeyService);\r\n }\r\n};\r\nContextScopedReplaceInput = __decorate([\r\n __param(3, IContextKeyService)\r\n], ContextScopedReplaceInput);\r\nexport { ContextScopedReplaceInput };\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'history.showPrevious',\r\n weight: 200 /* WorkbenchContrib */,\r\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetContext), ContextKeyExpr.equals(HistoryNavigationEnablementContext, true)),\r\n primary: 16 /* UpArrow */,\r\n secondary: [512 /* Alt */ | 16 /* UpArrow */],\r\n handler: (accessor, arg2) => {\r\n const widget = getContextScopedWidget(accessor.get(IContextKeyService), HistoryNavigationWidgetContext);\r\n if (widget) {\r\n const historyInputBox = widget.historyNavigator;\r\n historyInputBox.showPreviousValue();\r\n }\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'history.showNext',\r\n weight: 200 /* WorkbenchContrib */,\r\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetContext), ContextKeyExpr.equals(HistoryNavigationEnablementContext, true)),\r\n primary: 18 /* DownArrow */,\r\n secondary: [512 /* Alt */ | 18 /* DownArrow */],\r\n handler: (accessor, arg2) => {\r\n const widget = getContextScopedWidget(accessor.get(IContextKeyService), HistoryNavigationWidgetContext);\r\n if (widget) {\r\n const historyInputBox = widget.historyNavigator;\r\n historyInputBox.showNextValue();\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './findWidget.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { alert as alertFn } from '../../../base/browser/ui/aria/aria.js';\r\nimport { Checkbox } from '../../../base/browser/ui/checkbox/checkbox.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { Delayer } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';\r\nimport { contrastBorder, editorFindMatch, editorFindMatchBorder, editorFindMatchHighlight, editorFindMatchHighlightBorder, editorFindRangeHighlight, editorFindRangeHighlightBorder, editorWidgetBackground, editorWidgetBorder, editorWidgetResizeBorder, errorForeground, inputActiveOptionBorder, inputActiveOptionBackground, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, widgetShadow, editorWidgetForeground, focusBorder } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nimport { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../platform/browser/contextScopedHistoryWidget.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { registerIcon, widgetClose } from '../../../platform/theme/common/iconRegistry.js';\r\nconst findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize('findSelectionIcon', 'Icon for \\'Find in Selection\\' in the editor find widget.'));\r\nconst findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize('findCollapsedIcon', 'Icon to indicate that the editor find widget is collapsed.'));\r\nconst findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize('findExpandedIcon', 'Icon to indicate that the editor find widget is expanded.'));\r\nexport const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize('findReplaceIcon', 'Icon for \\'Replace\\' in the editor find widget.'));\r\nexport const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize('findReplaceAllIcon', 'Icon for \\'Replace All\\' in the editor find widget.'));\r\nexport const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize('findPreviousMatchIcon', 'Icon for \\'Find Previous\\' in the editor find widget.'));\r\nexport const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize('findNextMatchIcon', 'Icon for \\'Find Next\\' in the editor find widget.'));\r\nconst NLS_FIND_INPUT_LABEL = nls.localize('label.find', \"Find\");\r\nconst NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', \"Find\");\r\nconst NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', \"Previous Match\");\r\nconst NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', \"Next Match\");\r\nconst NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', \"Find in Selection\");\r\nconst NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', \"Close\");\r\nconst NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', \"Replace\");\r\nconst NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', \"Replace\");\r\nconst NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', \"Replace\");\r\nconst NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', \"Replace All\");\r\nconst NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', \"Toggle Replace\");\r\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);\r\nexport const NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', \"{0} of {1}\");\r\nexport const NLS_NO_RESULTS = nls.localize('label.noResults', \"No results\");\r\nconst FIND_WIDGET_INITIAL_WIDTH = 419;\r\nconst PART_WIDTH = 275;\r\nconst FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;\r\nlet MAX_MATCHES_COUNT_WIDTH = 69;\r\n// let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;\r\nconst FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.\r\nconst ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';\r\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */);\r\nexport class FindWidgetViewZone {\r\n constructor(afterLineNumber) {\r\n this.afterLineNumber = afterLineNumber;\r\n this.heightInPx = FIND_INPUT_AREA_HEIGHT;\r\n this.suppressMouseDown = false;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'dock-find-viewzone';\r\n }\r\n}\r\nfunction stopPropagationForMultiLineUpwards(event, value, textarea) {\r\n const isMultiline = !!value.match(/\\n/);\r\n if (textarea && isMultiline && textarea.selectionStart > 0) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n}\r\nfunction stopPropagationForMultiLineDownwards(event, value, textarea) {\r\n const isMultiline = !!value.match(/\\n/);\r\n if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n}\r\nexport class FindWidget extends Widget {\r\n constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService) {\r\n super();\r\n this._cachedHeight = null;\r\n this._revealTimeouts = [];\r\n this._codeEditor = codeEditor;\r\n this._controller = controller;\r\n this._state = state;\r\n this._contextViewProvider = contextViewProvider;\r\n this._keybindingService = keybindingService;\r\n this._contextKeyService = contextKeyService;\r\n this._storageService = storageService;\r\n this._notificationService = notificationService;\r\n this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* GLOBAL */);\r\n this._isVisible = false;\r\n this._isReplaceVisible = false;\r\n this._ignoreChangeEvent = false;\r\n this._updateHistoryDelayer = new Delayer(500);\r\n this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));\r\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this._buildDomNode();\r\n this._updateButtons();\r\n this._tryUpdateWidgetWidth();\r\n this._findInput.inputBox.layout();\r\n this._register(this._codeEditor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(79 /* readOnly */)) {\r\n if (this._codeEditor.getOption(79 /* readOnly */)) {\r\n // Hide replace part if editor becomes read only\r\n this._state.change({ isReplaceRevealed: false }, false);\r\n }\r\n this._updateButtons();\r\n }\r\n if (e.hasChanged(129 /* layoutInfo */)) {\r\n this._tryUpdateWidgetWidth();\r\n }\r\n if (e.hasChanged(2 /* accessibilitySupport */)) {\r\n this.updateAccessibilitySupport();\r\n }\r\n if (e.hasChanged(33 /* find */)) {\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(33 /* find */).addExtraSpaceOnTop;\r\n if (addExtraSpaceOnTop && !this._viewZone) {\r\n this._viewZone = new FindWidgetViewZone(0);\r\n this._showViewZone();\r\n }\r\n if (!addExtraSpaceOnTop && this._viewZone) {\r\n this._removeViewZone();\r\n }\r\n }\r\n }));\r\n this.updateAccessibilitySupport();\r\n this._register(this._codeEditor.onDidChangeCursorSelection(() => {\r\n if (this._isVisible) {\r\n this._updateToggleSelectionFindButton();\r\n }\r\n }));\r\n this._register(this._codeEditor.onDidFocusEditorWidget(() => __awaiter(this, void 0, void 0, function* () {\r\n if (this._isVisible) {\r\n let globalBufferTerm = yield this._controller.getGlobalBufferTerm();\r\n if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {\r\n this._state.change({ searchString: globalBufferTerm }, false);\r\n this._findInput.select();\r\n }\r\n }\r\n })));\r\n this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);\r\n this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));\r\n this._register(this._findFocusTracker.onDidFocus(() => {\r\n this._findInputFocused.set(true);\r\n this._updateSearchScope();\r\n }));\r\n this._register(this._findFocusTracker.onDidBlur(() => {\r\n this._findInputFocused.set(false);\r\n }));\r\n this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);\r\n this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));\r\n this._register(this._replaceFocusTracker.onDidFocus(() => {\r\n this._replaceInputFocused.set(true);\r\n this._updateSearchScope();\r\n }));\r\n this._register(this._replaceFocusTracker.onDidBlur(() => {\r\n this._replaceInputFocused.set(false);\r\n }));\r\n this._codeEditor.addOverlayWidget(this);\r\n if (this._codeEditor.getOption(33 /* find */).addExtraSpaceOnTop) {\r\n this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.\r\n }\r\n this._applyTheme(themeService.getColorTheme());\r\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this._register(this._codeEditor.onDidChangeModel(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._viewZoneId = undefined;\r\n }));\r\n this._register(this._codeEditor.onDidScrollChange((e) => {\r\n if (e.scrollTopChanged) {\r\n this._layoutViewZone();\r\n return;\r\n }\r\n // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.\r\n setTimeout(() => {\r\n this._layoutViewZone();\r\n }, 0);\r\n }));\r\n }\r\n // ----- IOverlayWidget API\r\n getId() {\r\n return FindWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n if (this._isVisible) {\r\n return {\r\n preference: 0 /* TOP_RIGHT_CORNER */\r\n };\r\n }\r\n return null;\r\n }\r\n // ----- React to state changes\r\n _onStateChanged(e) {\r\n if (e.searchString) {\r\n try {\r\n this._ignoreChangeEvent = true;\r\n this._findInput.setValue(this._state.searchString);\r\n }\r\n finally {\r\n this._ignoreChangeEvent = false;\r\n }\r\n this._updateButtons();\r\n }\r\n if (e.replaceString) {\r\n this._replaceInput.inputBox.value = this._state.replaceString;\r\n }\r\n if (e.isRevealed) {\r\n if (this._state.isRevealed) {\r\n this._reveal();\r\n }\r\n else {\r\n this._hide(true);\r\n }\r\n }\r\n if (e.isReplaceRevealed) {\r\n if (this._state.isReplaceRevealed) {\r\n if (!this._codeEditor.getOption(79 /* readOnly */) && !this._isReplaceVisible) {\r\n this._isReplaceVisible = true;\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n this._updateButtons();\r\n this._replaceInput.inputBox.layout();\r\n }\r\n }\r\n else {\r\n if (this._isReplaceVisible) {\r\n this._isReplaceVisible = false;\r\n this._updateButtons();\r\n }\r\n }\r\n }\r\n if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {\r\n if (this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }\r\n if (e.isRegex) {\r\n this._findInput.setRegex(this._state.isRegex);\r\n }\r\n if (e.wholeWord) {\r\n this._findInput.setWholeWords(this._state.wholeWord);\r\n }\r\n if (e.matchCase) {\r\n this._findInput.setCaseSensitive(this._state.matchCase);\r\n }\r\n if (e.preserveCase) {\r\n this._replaceInput.setPreserveCase(this._state.preserveCase);\r\n }\r\n if (e.searchScope) {\r\n if (this._state.searchScope) {\r\n this._toggleSelectionFind.checked = true;\r\n }\r\n else {\r\n this._toggleSelectionFind.checked = false;\r\n }\r\n this._updateToggleSelectionFindButton();\r\n }\r\n if (e.searchString || e.matchesCount || e.matchesPosition) {\r\n let showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);\r\n this._domNode.classList.toggle('no-results', showRedOutline);\r\n this._updateMatchesCount();\r\n this._updateButtons();\r\n }\r\n if (e.searchString || e.currentMatch) {\r\n this._layoutViewZone();\r\n }\r\n if (e.updateHistory) {\r\n this._delayedUpdateHistory();\r\n }\r\n if (e.loop) {\r\n this._updateButtons();\r\n }\r\n }\r\n _delayedUpdateHistory() {\r\n this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError);\r\n }\r\n _updateHistory() {\r\n if (this._state.searchString) {\r\n this._findInput.inputBox.addToHistory();\r\n }\r\n if (this._state.replaceString) {\r\n this._replaceInput.inputBox.addToHistory();\r\n }\r\n }\r\n _updateMatchesCount() {\r\n this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';\r\n if (this._state.matchesCount >= MATCHES_LIMIT) {\r\n this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;\r\n }\r\n else {\r\n this._matchesCount.title = '';\r\n }\r\n // remove previous content\r\n if (this._matchesCount.firstChild) {\r\n this._matchesCount.removeChild(this._matchesCount.firstChild);\r\n }\r\n let label;\r\n if (this._state.matchesCount > 0) {\r\n let matchesCount = String(this._state.matchesCount);\r\n if (this._state.matchesCount >= MATCHES_LIMIT) {\r\n matchesCount += '+';\r\n }\r\n let matchesPosition = String(this._state.matchesPosition);\r\n if (matchesPosition === '0') {\r\n matchesPosition = '?';\r\n }\r\n label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);\r\n }\r\n else {\r\n label = NLS_NO_RESULTS;\r\n }\r\n this._matchesCount.appendChild(document.createTextNode(label));\r\n alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));\r\n MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);\r\n }\r\n // ----- actions\r\n _getAriaLabel(label, currentMatch, searchString) {\r\n if (label === NLS_NO_RESULTS) {\r\n return searchString === ''\r\n ? nls.localize('ariaSearchNoResultEmpty', \"{0} found\", label)\r\n : nls.localize('ariaSearchNoResult', \"{0} found for '{1}'\", label, searchString);\r\n }\r\n if (currentMatch) {\r\n const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', \"{0} found for '{1}', at {2}\", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);\r\n const model = this._codeEditor.getModel();\r\n if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {\r\n const lineContent = model.getLineContent(currentMatch.startLineNumber);\r\n return `${lineContent}, ${ariaLabel}`;\r\n }\r\n return ariaLabel;\r\n }\r\n return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', \"{0} found for '{1}'\", label, searchString);\r\n }\r\n /**\r\n * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').\r\n * If 'selection find' is OFF we enable the button only if there is a selection.\r\n */\r\n _updateToggleSelectionFindButton() {\r\n let selection = this._codeEditor.getSelection();\r\n let isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;\r\n let isChecked = this._toggleSelectionFind.checked;\r\n if (this._isVisible && (isChecked || isSelection)) {\r\n this._toggleSelectionFind.enable();\r\n }\r\n else {\r\n this._toggleSelectionFind.disable();\r\n }\r\n }\r\n _updateButtons() {\r\n this._findInput.setEnabled(this._isVisible);\r\n this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);\r\n this._updateToggleSelectionFindButton();\r\n this._closeBtn.setEnabled(this._isVisible);\r\n let findInputIsNonEmpty = (this._state.searchString.length > 0);\r\n let matchesCount = this._state.matchesCount ? true : false;\r\n this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());\r\n this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());\r\n this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\r\n this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\r\n this._domNode.classList.toggle('replaceToggled', this._isReplaceVisible);\r\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\r\n let canReplace = !this._codeEditor.getOption(79 /* readOnly */);\r\n this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);\r\n }\r\n _reveal() {\r\n this._revealTimeouts.forEach(e => {\r\n clearTimeout(e);\r\n });\r\n this._revealTimeouts = [];\r\n if (!this._isVisible) {\r\n this._isVisible = true;\r\n const selection = this._codeEditor.getSelection();\r\n switch (this._codeEditor.getOption(33 /* find */).autoFindInSelection) {\r\n case 'always':\r\n this._toggleSelectionFind.checked = true;\r\n break;\r\n case 'never':\r\n this._toggleSelectionFind.checked = false;\r\n break;\r\n case 'multiline':\r\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\r\n this._toggleSelectionFind.checked = isSelectionMultipleLine;\r\n break;\r\n default:\r\n break;\r\n }\r\n this._tryUpdateWidgetWidth();\r\n this._updateButtons();\r\n this._revealTimeouts.push(setTimeout(() => {\r\n this._domNode.classList.add('visible');\r\n this._domNode.setAttribute('aria-hidden', 'false');\r\n }, 0));\r\n // validate query again as it's being dismissed when we hide the find widget.\r\n this._revealTimeouts.push(setTimeout(() => {\r\n this._findInput.validate();\r\n }, 200));\r\n this._codeEditor.layoutOverlayWidget(this);\r\n let adjustEditorScrollTop = true;\r\n if (this._codeEditor.getOption(33 /* find */).seedSearchStringFromSelection && selection) {\r\n const domNode = this._codeEditor.getDomNode();\r\n if (domNode) {\r\n const editorCoords = dom.getDomNodePagePosition(domNode);\r\n const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());\r\n const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);\r\n const startTop = startCoords ? startCoords.top : 0;\r\n if (this._viewZone && startTop < this._viewZone.heightInPx) {\r\n if (selection.endLineNumber > selection.startLineNumber) {\r\n adjustEditorScrollTop = false;\r\n }\r\n const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;\r\n if (startLeft > leftOfFindWidget) {\r\n adjustEditorScrollTop = false;\r\n }\r\n const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());\r\n const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);\r\n if (endLeft > leftOfFindWidget) {\r\n adjustEditorScrollTop = false;\r\n }\r\n }\r\n }\r\n }\r\n this._showViewZone(adjustEditorScrollTop);\r\n }\r\n }\r\n _hide(focusTheEditor) {\r\n this._revealTimeouts.forEach(e => {\r\n clearTimeout(e);\r\n });\r\n this._revealTimeouts = [];\r\n if (this._isVisible) {\r\n this._isVisible = false;\r\n this._updateButtons();\r\n this._domNode.classList.remove('visible');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._findInput.clearMessage();\r\n if (focusTheEditor) {\r\n this._codeEditor.focus();\r\n }\r\n this._codeEditor.layoutOverlayWidget(this);\r\n this._removeViewZone();\r\n }\r\n }\r\n _layoutViewZone(targetScrollTop) {\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(33 /* find */).addExtraSpaceOnTop;\r\n if (!addExtraSpaceOnTop) {\r\n this._removeViewZone();\r\n return;\r\n }\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n const viewZone = this._viewZone;\r\n if (this._viewZoneId !== undefined || !viewZone) {\r\n return;\r\n }\r\n this._codeEditor.changeViewZones((accessor) => {\r\n viewZone.heightInPx = this._getHeight();\r\n this._viewZoneId = accessor.addZone(viewZone);\r\n // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.\r\n this._codeEditor.setScrollTop(targetScrollTop || this._codeEditor.getScrollTop() + viewZone.heightInPx);\r\n });\r\n }\r\n _showViewZone(adjustScroll = true) {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(33 /* find */).addExtraSpaceOnTop;\r\n if (!addExtraSpaceOnTop) {\r\n return;\r\n }\r\n if (this._viewZone === undefined) {\r\n this._viewZone = new FindWidgetViewZone(0);\r\n }\r\n const viewZone = this._viewZone;\r\n this._codeEditor.changeViewZones((accessor) => {\r\n if (this._viewZoneId !== undefined) {\r\n // the view zone already exists, we need to update the height\r\n const newHeight = this._getHeight();\r\n if (newHeight === viewZone.heightInPx) {\r\n return;\r\n }\r\n let scrollAdjustment = newHeight - viewZone.heightInPx;\r\n viewZone.heightInPx = newHeight;\r\n accessor.layoutZone(this._viewZoneId);\r\n if (adjustScroll) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\r\n }\r\n return;\r\n }\r\n else {\r\n let scrollAdjustment = this._getHeight();\r\n // if the editor has top padding, factor that into the zone height\r\n scrollAdjustment -= this._codeEditor.getOption(73 /* padding */).top;\r\n if (scrollAdjustment <= 0) {\r\n return;\r\n }\r\n viewZone.heightInPx = scrollAdjustment;\r\n this._viewZoneId = accessor.addZone(viewZone);\r\n if (adjustScroll) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\r\n }\r\n }\r\n });\r\n }\r\n _removeViewZone() {\r\n this._codeEditor.changeViewZones((accessor) => {\r\n if (this._viewZoneId !== undefined) {\r\n accessor.removeZone(this._viewZoneId);\r\n this._viewZoneId = undefined;\r\n if (this._viewZone) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);\r\n this._viewZone = undefined;\r\n }\r\n }\r\n });\r\n }\r\n _applyTheme(theme) {\r\n let inputStyles = {\r\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\r\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground),\r\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\r\n inputBackground: theme.getColor(inputBackground),\r\n inputForeground: theme.getColor(inputForeground),\r\n inputBorder: theme.getColor(inputBorder),\r\n inputValidationInfoBackground: theme.getColor(inputValidationInfoBackground),\r\n inputValidationInfoForeground: theme.getColor(inputValidationInfoForeground),\r\n inputValidationInfoBorder: theme.getColor(inputValidationInfoBorder),\r\n inputValidationWarningBackground: theme.getColor(inputValidationWarningBackground),\r\n inputValidationWarningForeground: theme.getColor(inputValidationWarningForeground),\r\n inputValidationWarningBorder: theme.getColor(inputValidationWarningBorder),\r\n inputValidationErrorBackground: theme.getColor(inputValidationErrorBackground),\r\n inputValidationErrorForeground: theme.getColor(inputValidationErrorForeground),\r\n inputValidationErrorBorder: theme.getColor(inputValidationErrorBorder),\r\n };\r\n this._findInput.style(inputStyles);\r\n this._replaceInput.style(inputStyles);\r\n this._toggleSelectionFind.style(inputStyles);\r\n }\r\n _tryUpdateWidgetWidth() {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n if (!dom.isInDOM(this._domNode)) {\r\n // the widget is not in the DOM\r\n return;\r\n }\r\n const layoutInfo = this._codeEditor.getLayoutInfo();\r\n const editorContentWidth = layoutInfo.contentWidth;\r\n if (editorContentWidth <= 0) {\r\n // for example, diff view original editor\r\n this._domNode.classList.add('hiddenEditor');\r\n return;\r\n }\r\n else if (this._domNode.classList.contains('hiddenEditor')) {\r\n this._domNode.classList.remove('hiddenEditor');\r\n }\r\n const editorWidth = layoutInfo.width;\r\n const minimapWidth = layoutInfo.minimap.minimapWidth;\r\n let collapsedFindWidget = false;\r\n let reducedFindWidget = false;\r\n let narrowFindWidget = false;\r\n if (this._resized) {\r\n let widgetWidth = dom.getTotalWidth(this._domNode);\r\n if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {\r\n // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.\r\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n return;\r\n }\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {\r\n reducedFindWidget = true;\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {\r\n narrowFindWidget = true;\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {\r\n collapsedFindWidget = true;\r\n }\r\n this._domNode.classList.toggle('collapsed-find-widget', collapsedFindWidget);\r\n this._domNode.classList.toggle('narrow-find-widget', narrowFindWidget);\r\n this._domNode.classList.toggle('reduced-find-widget', reducedFindWidget);\r\n if (!narrowFindWidget && !collapsedFindWidget) {\r\n // the minimal left offset of findwidget is 15px.\r\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\r\n }\r\n if (this._resized) {\r\n this._findInput.inputBox.layout();\r\n let findInputWidth = this._findInput.inputBox.element.clientWidth;\r\n if (findInputWidth > 0) {\r\n this._replaceInput.width = findInputWidth;\r\n }\r\n }\r\n else if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n }\r\n _getHeight() {\r\n let totalheight = 0;\r\n // find input margin top\r\n totalheight += 4;\r\n // find input height\r\n totalheight += this._findInput.inputBox.height + 2 /** input box border */;\r\n if (this._isReplaceVisible) {\r\n // replace input margin\r\n totalheight += 4;\r\n totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;\r\n }\r\n // margin bottom\r\n totalheight += 4;\r\n return totalheight;\r\n }\r\n _tryUpdateHeight() {\r\n const totalHeight = this._getHeight();\r\n if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {\r\n return false;\r\n }\r\n this._cachedHeight = totalHeight;\r\n this._domNode.style.height = `${totalHeight}px`;\r\n return true;\r\n }\r\n // ----- Public\r\n focusFindInput() {\r\n this._findInput.select();\r\n // Edge browser requires focus() in addition to select()\r\n this._findInput.focus();\r\n }\r\n focusReplaceInput() {\r\n this._replaceInput.select();\r\n // Edge browser requires focus() in addition to select()\r\n this._replaceInput.focus();\r\n }\r\n highlightFindOptions() {\r\n this._findInput.highlightFindOptions();\r\n }\r\n _updateSearchScope() {\r\n if (!this._codeEditor.hasModel()) {\r\n return;\r\n }\r\n if (this._toggleSelectionFind.checked) {\r\n let selections = this._codeEditor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n const currentMatch = this._state.currentMatch;\r\n if (selection.startLineNumber !== selection.endLineNumber) {\r\n if (!Range.equalsRange(selection, currentMatch)) {\r\n return selection;\r\n }\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n _onFindInputMouseDown(e) {\r\n // on linux, middle key does pasting.\r\n if (e.middleButton) {\r\n e.stopPropagation();\r\n }\r\n }\r\n _onFindInputKeyDown(e) {\r\n if (e.equals(ctrlKeyMod | 3 /* Enter */)) {\r\n this._findInput.inputBox.insertAtCursor('\\n');\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focus();\r\n }\r\n else {\r\n this._findInput.focusOnCaseSensitive();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)) {\r\n this._codeEditor.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(16 /* UpArrow */)) {\r\n return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\r\n }\r\n if (e.equals(18 /* DownArrow */)) {\r\n return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\r\n }\r\n }\r\n _onReplaceInputKeyDown(e) {\r\n if (e.equals(ctrlKeyMod | 3 /* Enter */)) {\r\n if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {\r\n // this is the first time when users press Ctrl + Enter to replace all\r\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.'));\r\n this._ctrlEnterReplaceAllWarningPrompted = true;\r\n this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* GLOBAL */, 0 /* USER */);\r\n }\r\n this._replaceInput.inputBox.insertAtCursor('\\n');\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2 /* Tab */)) {\r\n this._findInput.focusOnCaseSensitive();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this._findInput.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)) {\r\n this._codeEditor.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(16 /* UpArrow */)) {\r\n return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\r\n }\r\n if (e.equals(18 /* DownArrow */)) {\r\n return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\r\n }\r\n }\r\n // ----- sash\r\n getVerticalSashLeft(_sash) {\r\n return 0;\r\n }\r\n // ----- initialization\r\n _keybindingLabelFor(actionId) {\r\n let kb = this._keybindingService.lookupKeybinding(actionId);\r\n if (!kb) {\r\n return '';\r\n }\r\n return ` (${kb.getLabel()})`;\r\n }\r\n _buildDomNode() {\r\n const flexibleHeight = true;\r\n const flexibleWidth = true;\r\n // Find input\r\n this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {\r\n width: FIND_INPUT_AREA_WIDTH,\r\n label: NLS_FIND_INPUT_LABEL,\r\n placeholder: NLS_FIND_INPUT_PLACEHOLDER,\r\n appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\r\n appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\r\n appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\r\n validation: (value) => {\r\n if (value.length === 0 || !this._findInput.getRegex()) {\r\n return null;\r\n }\r\n try {\r\n // use `g` and `u` which are also used by the TextModel search\r\n new RegExp(value, 'gu');\r\n return null;\r\n }\r\n catch (e) {\r\n return { content: e.message };\r\n }\r\n },\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight: 118\r\n }, this._contextKeyService, true));\r\n this._findInput.setRegex(!!this._state.isRegex);\r\n this._findInput.setCaseSensitive(!!this._state.matchCase);\r\n this._findInput.setWholeWords(!!this._state.wholeWord);\r\n this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));\r\n this._register(this._findInput.inputBox.onDidChange(() => {\r\n if (this._ignoreChangeEvent) {\r\n return;\r\n }\r\n this._state.change({ searchString: this._findInput.getValue() }, true);\r\n }));\r\n this._register(this._findInput.onDidOptionChange(() => {\r\n this._state.change({\r\n isRegex: this._findInput.getRegex(),\r\n wholeWord: this._findInput.getWholeWords(),\r\n matchCase: this._findInput.getCaseSensitive()\r\n }, true);\r\n }));\r\n this._register(this._findInput.onCaseSensitiveKeyDown((e) => {\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n this._register(this._findInput.onRegexKeyDown((e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focusOnPreserve();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n this._register(this._findInput.inputBox.onDidHeightChange((e) => {\r\n if (this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }));\r\n if (platform.isLinux) {\r\n this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));\r\n }\r\n this._matchesCount = document.createElement('div');\r\n this._matchesCount.className = 'matchesCount';\r\n this._updateMatchesCount();\r\n // Previous button\r\n this._prevBtn = this._register(new SimpleButton({\r\n label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),\r\n icon: findPreviousMatchIcon,\r\n onTrigger: () => {\r\n this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction).run().then(undefined, onUnexpectedError);\r\n }\r\n }));\r\n // Next button\r\n this._nextBtn = this._register(new SimpleButton({\r\n label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),\r\n icon: findNextMatchIcon,\r\n onTrigger: () => {\r\n this._codeEditor.getAction(FIND_IDS.NextMatchFindAction).run().then(undefined, onUnexpectedError);\r\n }\r\n }));\r\n let findPart = document.createElement('div');\r\n findPart.className = 'find-part';\r\n findPart.appendChild(this._findInput.domNode);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'find-actions';\r\n findPart.appendChild(actionsContainer);\r\n actionsContainer.appendChild(this._matchesCount);\r\n actionsContainer.appendChild(this._prevBtn.domNode);\r\n actionsContainer.appendChild(this._nextBtn.domNode);\r\n // Toggle selection button\r\n this._toggleSelectionFind = this._register(new Checkbox({\r\n icon: findSelectionIcon,\r\n title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),\r\n isChecked: false\r\n }));\r\n this._register(this._toggleSelectionFind.onChange(() => {\r\n if (this._toggleSelectionFind.checked) {\r\n if (this._codeEditor.hasModel()) {\r\n let selections = this._codeEditor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n else {\r\n this._state.change({ searchScope: null }, true);\r\n }\r\n }));\r\n actionsContainer.appendChild(this._toggleSelectionFind.domNode);\r\n // Close button\r\n this._closeBtn = this._register(new SimpleButton({\r\n label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),\r\n icon: widgetClose,\r\n onTrigger: () => {\r\n this._state.change({ isRevealed: false, searchScope: null }, false);\r\n },\r\n onKeyDown: (e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n if (this._replaceBtn.isEnabled()) {\r\n this._replaceBtn.focus();\r\n }\r\n else {\r\n this._codeEditor.focus();\r\n }\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n }));\r\n actionsContainer.appendChild(this._closeBtn.domNode);\r\n // Replace input\r\n this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {\r\n label: NLS_REPLACE_INPUT_LABEL,\r\n placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,\r\n appendPreserveCaseLabel: this._keybindingLabelFor(FIND_IDS.TogglePreserveCaseCommand),\r\n history: [],\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight: 118\r\n }, this._contextKeyService, true));\r\n this._replaceInput.setPreserveCase(!!this._state.preserveCase);\r\n this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));\r\n this._register(this._replaceInput.inputBox.onDidChange(() => {\r\n this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);\r\n }));\r\n this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {\r\n if (this._isReplaceVisible && this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }));\r\n this._register(this._replaceInput.onDidOptionChange(() => {\r\n this._state.change({\r\n preserveCase: this._replaceInput.getPreserveCase()\r\n }, true);\r\n }));\r\n this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._prevBtn.isEnabled()) {\r\n this._prevBtn.focus();\r\n }\r\n else if (this._nextBtn.isEnabled()) {\r\n this._nextBtn.focus();\r\n }\r\n else if (this._toggleSelectionFind.enabled) {\r\n this._toggleSelectionFind.focus();\r\n }\r\n else if (this._closeBtn.isEnabled()) {\r\n this._closeBtn.focus();\r\n }\r\n e.preventDefault();\r\n }\r\n }));\r\n // Replace one button\r\n this._replaceBtn = this._register(new SimpleButton({\r\n label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),\r\n icon: findReplaceIcon,\r\n onTrigger: () => {\r\n this._controller.replace();\r\n },\r\n onKeyDown: (e) => {\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this._closeBtn.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n // Replace all button\r\n this._replaceAllBtn = this._register(new SimpleButton({\r\n label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),\r\n icon: findReplaceAllIcon,\r\n onTrigger: () => {\r\n this._controller.replaceAll();\r\n }\r\n }));\r\n let replacePart = document.createElement('div');\r\n replacePart.className = 'replace-part';\r\n replacePart.appendChild(this._replaceInput.domNode);\r\n const replaceActionsContainer = document.createElement('div');\r\n replaceActionsContainer.className = 'replace-actions';\r\n replacePart.appendChild(replaceActionsContainer);\r\n replaceActionsContainer.appendChild(this._replaceBtn.domNode);\r\n replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);\r\n // Toggle replace button\r\n this._toggleReplaceBtn = this._register(new SimpleButton({\r\n label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,\r\n className: 'codicon toggle left',\r\n onTrigger: () => {\r\n this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n this._replaceInput.inputBox.layout();\r\n }\r\n this._showViewZone();\r\n }\r\n }));\r\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\r\n // Widget\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'editor-widget find-widget';\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.\r\n this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;\r\n this._domNode.appendChild(this._toggleReplaceBtn.domNode);\r\n this._domNode.appendChild(findPart);\r\n this._domNode.appendChild(replacePart);\r\n this._resizeSash = new Sash(this._domNode, this, { orientation: 0 /* VERTICAL */, size: 2 });\r\n this._resized = false;\r\n let originalWidth = FIND_WIDGET_INITIAL_WIDTH;\r\n this._register(this._resizeSash.onDidStart(() => {\r\n originalWidth = dom.getTotalWidth(this._domNode);\r\n }));\r\n this._register(this._resizeSash.onDidChange((evt) => {\r\n this._resized = true;\r\n let width = originalWidth + evt.startX - evt.currentX;\r\n if (width < FIND_WIDGET_INITIAL_WIDTH) {\r\n // narrow down the find widget should be handled by CSS.\r\n return;\r\n }\r\n const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;\r\n if (width > maxWidth) {\r\n return;\r\n }\r\n this._domNode.style.width = `${width}px`;\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n this._findInput.inputBox.layout();\r\n this._tryUpdateHeight();\r\n }));\r\n this._register(this._resizeSash.onDidReset(() => {\r\n // users double click on the sash\r\n const currentWidth = dom.getTotalWidth(this._domNode);\r\n if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {\r\n // The editor is narrow and the width of the find widget is controlled fully by CSS.\r\n return;\r\n }\r\n let width = FIND_WIDGET_INITIAL_WIDTH;\r\n if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {\r\n // 1. never resized before, double click should maximizes it\r\n // 2. users resized it already but its width is the same as default\r\n const layoutInfo = this._codeEditor.getLayoutInfo();\r\n width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;\r\n this._resized = true;\r\n }\r\n else {\r\n /**\r\n * no op, the find widget should be shrinked to its default size.\r\n */\r\n }\r\n this._domNode.style.width = `${width}px`;\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n this._findInput.inputBox.layout();\r\n }));\r\n }\r\n updateAccessibilitySupport() {\r\n const value = this._codeEditor.getOption(2 /* accessibilitySupport */);\r\n this._findInput.setFocusInputOnOptionClick(value !== 2 /* Enabled */);\r\n }\r\n}\r\nFindWidget.ID = 'editor.contrib.findWidget';\r\nexport class SimpleButton extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._opts = opts;\r\n let className = 'button';\r\n if (this._opts.className) {\r\n className = className + ' ' + this._opts.className;\r\n }\r\n if (this._opts.icon) {\r\n className = className + ' ' + ThemeIcon.asClassName(this._opts.icon);\r\n }\r\n this._domNode = document.createElement('div');\r\n this._domNode.title = this._opts.label;\r\n this._domNode.tabIndex = 0;\r\n this._domNode.className = className;\r\n this._domNode.setAttribute('role', 'button');\r\n this._domNode.setAttribute('aria-label', this._opts.label);\r\n this.onclick(this._domNode, (e) => {\r\n this._opts.onTrigger();\r\n e.preventDefault();\r\n });\r\n this.onkeydown(this._domNode, (e) => {\r\n if (e.equals(10 /* Space */) || e.equals(3 /* Enter */)) {\r\n this._opts.onTrigger();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (this._opts.onKeyDown) {\r\n this._opts.onKeyDown(e);\r\n }\r\n });\r\n }\r\n get domNode() {\r\n return this._domNode;\r\n }\r\n isEnabled() {\r\n return (this._domNode.tabIndex >= 0);\r\n }\r\n focus() {\r\n this._domNode.focus();\r\n }\r\n setEnabled(enabled) {\r\n this._domNode.classList.toggle('disabled', !enabled);\r\n this._domNode.setAttribute('aria-disabled', String(!enabled));\r\n this._domNode.tabIndex = enabled ? 0 : -1;\r\n }\r\n setExpanded(expanded) {\r\n this._domNode.setAttribute('aria-expanded', String(!!expanded));\r\n if (expanded) {\r\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findCollapsedIcon));\r\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findExpandedIcon));\r\n }\r\n else {\r\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findExpandedIcon));\r\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findCollapsedIcon));\r\n }\r\n }\r\n}\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const addBackgroundColorRule = (selector, color) => {\r\n if (color) {\r\n collector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\r\n }\r\n };\r\n addBackgroundColorRule('.findMatch', theme.getColor(editorFindMatchHighlight));\r\n addBackgroundColorRule('.currentFindMatch', theme.getColor(editorFindMatch));\r\n addBackgroundColorRule('.findScope', theme.getColor(editorFindRangeHighlight));\r\n const widgetBackground = theme.getColor(editorWidgetBackground);\r\n addBackgroundColorRule('.find-widget', widgetBackground);\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n if (widgetShadowColor) {\r\n collector.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${widgetShadowColor}; }`);\r\n }\r\n const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\r\n if (findMatchHighlightBorder) {\r\n collector.addRule(`.monaco-editor .findMatch { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const findMatchBorder = theme.getColor(editorFindMatchBorder);\r\n if (findMatchBorder) {\r\n collector.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${findMatchBorder}; padding: 1px; box-sizing: border-box; }`);\r\n }\r\n const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);\r\n if (findRangeHighlightBorder) {\r\n collector.addRule(`.monaco-editor .findScope { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);\r\n }\r\n const hcBorder = theme.getColor(contrastBorder);\r\n if (hcBorder) {\r\n collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);\r\n }\r\n const foreground = theme.getColor(editorWidgetForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .find-widget { color: ${foreground}; }`);\r\n }\r\n const error = theme.getColor(errorForeground);\r\n if (error) {\r\n collector.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${error}; }`);\r\n }\r\n const resizeBorderBackground = theme.getColor(editorWidgetResizeBorder);\r\n if (resizeBorderBackground) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${resizeBorderBackground}; }`);\r\n }\r\n else {\r\n const border = theme.getColor(editorWidgetBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${border}; }`);\r\n }\r\n }\r\n // This rule is used to override the outline color for synthetic-focus find input.\r\n const focusOutline = theme.getColor(focusBorder);\r\n if (focusOutline) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${focusOutline}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { Delayer } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, MultiEditorAction, registerMultiEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_FIND_WIDGET_VISIBLE, FIND_IDS, FindModelBoundToEditorModel, ToggleCaseSensitiveKeybinding, TogglePreserveCaseKeybinding, ToggleRegexKeybinding, ToggleSearchScopeKeybinding, ToggleWholeWordKeybinding, CONTEXT_REPLACE_INPUT_FOCUSED } from './findModel.js';\r\nimport { FindOptionsWidget } from './findOptionsWidget.js';\r\nimport { FindReplaceState } from './findState.js';\r\nimport { FindWidget } from './findWidget.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { IContextKeyService, ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { IStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nconst SEARCH_STRING_MAX_LENGTH = 524288;\r\nexport function getSelectionSearchString(editor, seedSearchStringFromSelection = 'single', seedSearchStringFromNonEmptySelection = false) {\r\n if (!editor.hasModel()) {\r\n return null;\r\n }\r\n const selection = editor.getSelection();\r\n // if selection spans multiple lines, default search string to empty\r\n if ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\r\n || seedSearchStringFromSelection === 'multiple') {\r\n if (selection.isEmpty()) {\r\n const wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\r\n if (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\r\n return wordAtPosition.word;\r\n }\r\n }\r\n else {\r\n if (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\r\n return editor.getModel().getValueInRange(selection);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\nlet CommonFindController = class CommonFindController extends Disposable {\r\n constructor(editor, contextKeyService, storageService, clipboardService) {\r\n super();\r\n this._editor = editor;\r\n this._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\r\n this._contextKeyService = contextKeyService;\r\n this._storageService = storageService;\r\n this._clipboardService = clipboardService;\r\n this._updateHistoryDelayer = new Delayer(500);\r\n this._state = this._register(new FindReplaceState());\r\n this.loadQueryState();\r\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this._model = null;\r\n this._register(this._editor.onDidChangeModel(() => {\r\n let shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\r\n this.disposeModel();\r\n this._state.change({\r\n searchScope: null,\r\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* WORKSPACE */, false),\r\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* WORKSPACE */, false),\r\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* WORKSPACE */, false),\r\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* WORKSPACE */, false)\r\n }, false);\r\n if (shouldRestartFind) {\r\n this._start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: 'none',\r\n seedSearchStringFromNonEmptySelection: false,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: false,\r\n updateSearchScope: false,\r\n loop: this._editor.getOption(33 /* find */).loop\r\n });\r\n }\r\n }));\r\n }\r\n get editor() {\r\n return this._editor;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(CommonFindController.ID);\r\n }\r\n dispose() {\r\n this.disposeModel();\r\n super.dispose();\r\n }\r\n disposeModel() {\r\n if (this._model) {\r\n this._model.dispose();\r\n this._model = null;\r\n }\r\n }\r\n _onStateChanged(e) {\r\n this.saveQueryState(e);\r\n if (e.isRevealed) {\r\n if (this._state.isRevealed) {\r\n this._findWidgetVisible.set(true);\r\n }\r\n else {\r\n this._findWidgetVisible.reset();\r\n this.disposeModel();\r\n }\r\n }\r\n if (e.searchString) {\r\n this.setGlobalBufferTerm(this._state.searchString);\r\n }\r\n }\r\n saveQueryState(e) {\r\n if (e.isRegex) {\r\n this._storageService.store('editor.isRegex', this._state.actualIsRegex, 1 /* WORKSPACE */, 0 /* USER */);\r\n }\r\n if (e.wholeWord) {\r\n this._storageService.store('editor.wholeWord', this._state.actualWholeWord, 1 /* WORKSPACE */, 0 /* USER */);\r\n }\r\n if (e.matchCase) {\r\n this._storageService.store('editor.matchCase', this._state.actualMatchCase, 1 /* WORKSPACE */, 0 /* USER */);\r\n }\r\n if (e.preserveCase) {\r\n this._storageService.store('editor.preserveCase', this._state.actualPreserveCase, 1 /* WORKSPACE */, 0 /* USER */);\r\n }\r\n }\r\n loadQueryState() {\r\n this._state.change({\r\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* WORKSPACE */, this._state.matchCase),\r\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* WORKSPACE */, this._state.wholeWord),\r\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* WORKSPACE */, this._state.isRegex),\r\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* WORKSPACE */, this._state.preserveCase)\r\n }, false);\r\n }\r\n isFindInputFocused() {\r\n return !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\r\n }\r\n getState() {\r\n return this._state;\r\n }\r\n closeFindWidget() {\r\n this._state.change({\r\n isRevealed: false,\r\n searchScope: null\r\n }, false);\r\n this._editor.focus();\r\n }\r\n toggleCaseSensitive() {\r\n this._state.change({ matchCase: !this._state.matchCase }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleWholeWords() {\r\n this._state.change({ wholeWord: !this._state.wholeWord }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleRegex() {\r\n this._state.change({ isRegex: !this._state.isRegex }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n togglePreserveCase() {\r\n this._state.change({ preserveCase: !this._state.preserveCase }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleSearchScope() {\r\n if (this._state.searchScope) {\r\n this._state.change({ searchScope: null }, true);\r\n }\r\n else {\r\n if (this._editor.hasModel()) {\r\n let selections = this._editor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n }\r\n setSearchString(searchString) {\r\n if (this._state.isRegex) {\r\n searchString = strings.escapeRegExpCharacters(searchString);\r\n }\r\n this._state.change({ searchString: searchString }, false);\r\n }\r\n highlightFindOptions(ignoreWhenVisible = false) {\r\n // overwritten in subclass\r\n }\r\n _start(opts) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.disposeModel();\r\n if (!this._editor.hasModel()) {\r\n // cannot do anything with an editor that doesn't have a model...\r\n return;\r\n }\r\n let stateChanges = {\r\n isRevealed: true\r\n };\r\n if (opts.seedSearchStringFromSelection === 'single') {\r\n let selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\r\n if (selectionSearchString) {\r\n if (this._state.isRegex) {\r\n stateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\r\n }\r\n else {\r\n stateChanges.searchString = selectionSearchString;\r\n }\r\n }\r\n }\r\n else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\r\n let selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\r\n if (selectionSearchString) {\r\n stateChanges.searchString = selectionSearchString;\r\n }\r\n }\r\n if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\r\n let selectionSearchString = yield this.getGlobalBufferTerm();\r\n if (!this._editor.hasModel()) {\r\n // the editor has lost its model in the meantime\r\n return;\r\n }\r\n if (selectionSearchString) {\r\n stateChanges.searchString = selectionSearchString;\r\n }\r\n }\r\n // Overwrite isReplaceRevealed\r\n if (opts.forceRevealReplace) {\r\n stateChanges.isReplaceRevealed = true;\r\n }\r\n else if (!this._findWidgetVisible.get()) {\r\n stateChanges.isReplaceRevealed = false;\r\n }\r\n if (opts.updateSearchScope) {\r\n let currentSelections = this._editor.getSelections();\r\n if (currentSelections.some(selection => !selection.isEmpty())) {\r\n stateChanges.searchScope = currentSelections;\r\n }\r\n }\r\n stateChanges.loop = opts.loop;\r\n this._state.change(stateChanges, false);\r\n if (!this._model) {\r\n this._model = new FindModelBoundToEditorModel(this._editor, this._state);\r\n }\r\n });\r\n }\r\n start(opts) {\r\n return this._start(opts);\r\n }\r\n moveToNextMatch() {\r\n if (this._model) {\r\n this._model.moveToNextMatch();\r\n return true;\r\n }\r\n return false;\r\n }\r\n moveToPrevMatch() {\r\n if (this._model) {\r\n this._model.moveToPrevMatch();\r\n return true;\r\n }\r\n return false;\r\n }\r\n replace() {\r\n if (this._model) {\r\n this._model.replace();\r\n return true;\r\n }\r\n return false;\r\n }\r\n replaceAll() {\r\n if (this._model) {\r\n this._model.replaceAll();\r\n return true;\r\n }\r\n return false;\r\n }\r\n selectAllMatches() {\r\n if (this._model) {\r\n this._model.selectAllMatches();\r\n this._editor.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n getGlobalBufferTerm() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._editor.getOption(33 /* find */).globalFindClipboard\r\n && this._editor.hasModel()\r\n && !this._editor.getModel().isTooLargeForSyncing()) {\r\n return this._clipboardService.readFindText();\r\n }\r\n return '';\r\n });\r\n }\r\n setGlobalBufferTerm(text) {\r\n if (this._editor.getOption(33 /* find */).globalFindClipboard\r\n && this._editor.hasModel()\r\n && !this._editor.getModel().isTooLargeForSyncing()) {\r\n // intentionally not awaited\r\n this._clipboardService.writeFindText(text);\r\n }\r\n }\r\n};\r\nCommonFindController.ID = 'editor.contrib.findController';\r\nCommonFindController = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, IStorageService),\r\n __param(3, IClipboardService)\r\n], CommonFindController);\r\nexport { CommonFindController };\r\nlet FindController = class FindController extends CommonFindController {\r\n constructor(editor, _contextViewService, _contextKeyService, _keybindingService, _themeService, _notificationService, _storageService, clipboardService) {\r\n super(editor, _contextKeyService, _storageService, clipboardService);\r\n this._contextViewService = _contextViewService;\r\n this._keybindingService = _keybindingService;\r\n this._themeService = _themeService;\r\n this._notificationService = _notificationService;\r\n this._widget = null;\r\n this._findOptionsWidget = null;\r\n }\r\n _start(opts) {\r\n const _super = Object.create(null, {\r\n _start: { get: () => super._start }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._widget) {\r\n this._createFindWidget();\r\n }\r\n const selection = this._editor.getSelection();\r\n let updateSearchScope = false;\r\n switch (this._editor.getOption(33 /* find */).autoFindInSelection) {\r\n case 'always':\r\n updateSearchScope = true;\r\n break;\r\n case 'never':\r\n updateSearchScope = false;\r\n break;\r\n case 'multiline':\r\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\r\n updateSearchScope = isSelectionMultipleLine;\r\n break;\r\n default:\r\n break;\r\n }\r\n opts.updateSearchScope = updateSearchScope;\r\n yield _super._start.call(this, opts);\r\n if (this._widget) {\r\n if (opts.shouldFocus === 2 /* FocusReplaceInput */) {\r\n this._widget.focusReplaceInput();\r\n }\r\n else if (opts.shouldFocus === 1 /* FocusFindInput */) {\r\n this._widget.focusFindInput();\r\n }\r\n }\r\n });\r\n }\r\n highlightFindOptions(ignoreWhenVisible = false) {\r\n if (!this._widget) {\r\n this._createFindWidget();\r\n }\r\n if (this._state.isRevealed && !ignoreWhenVisible) {\r\n this._widget.highlightFindOptions();\r\n }\r\n else {\r\n this._findOptionsWidget.highlightFindOptions();\r\n }\r\n }\r\n _createFindWidget() {\r\n this._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService));\r\n this._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService, this._themeService));\r\n }\r\n};\r\nFindController = __decorate([\r\n __param(1, IContextViewService),\r\n __param(2, IContextKeyService),\r\n __param(3, IKeybindingService),\r\n __param(4, IThemeService),\r\n __param(5, INotificationService),\r\n __param(6, IStorageService),\r\n __param(7, IClipboardService)\r\n], FindController);\r\nexport { FindController };\r\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\r\n id: FIND_IDS.StartFindAction,\r\n label: nls.localize('startFindAction', \"Find\"),\r\n alias: 'Find',\r\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 36 /* KEY_F */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '3_find',\r\n title: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\r\n order: 1\r\n }\r\n}));\r\nStartFindAction.addImplementation(0, (accessor, editor, args) => {\r\n const controller = CommonFindController.get(editor);\r\n if (!controller) {\r\n return false;\r\n }\r\n return controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\r\n seedSearchStringFromNonEmptySelection: editor.getOption(33 /* find */).seedSearchStringFromSelection === 'selection',\r\n seedSearchStringFromGlobalClipboard: editor.getOption(33 /* find */).globalFindClipboard,\r\n shouldFocus: 1 /* FocusFindInput */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(33 /* find */).loop\r\n });\r\n});\r\nexport class StartFindWithSelectionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.StartFindWithSelection,\r\n label: nls.localize('startFindWithSelectionAction', \"Find With Selection\"),\r\n alias: 'Find With Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 0,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 35 /* KEY_E */,\r\n },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (controller) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: 'multiple',\r\n seedSearchStringFromNonEmptySelection: false,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(33 /* find */).loop\r\n });\r\n controller.setGlobalBufferTerm(controller.getState().searchString);\r\n }\r\n });\r\n }\r\n}\r\nexport class MatchFindAction extends EditorAction {\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (controller && !this._run(controller)) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\r\n seedSearchStringFromNonEmptySelection: editor.getOption(33 /* find */).seedSearchStringFromSelection === 'selection',\r\n seedSearchStringFromGlobalClipboard: true,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(33 /* find */).loop\r\n });\r\n this._run(controller);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextMatchFindAction extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.NextMatchFindAction,\r\n label: nls.localize('findNextMatchAction', \"Find Next\"),\r\n alias: 'Find Next',\r\n precondition: undefined,\r\n kbOpts: [{\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 61 /* F3 */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 37 /* KEY_G */, secondary: [61 /* F3 */] },\r\n weight: 100 /* EditorContrib */\r\n }, {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\r\n primary: 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }]\r\n });\r\n }\r\n _run(controller) {\r\n const result = controller.moveToNextMatch();\r\n if (result) {\r\n controller.editor.pushUndoStop();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexport class PreviousMatchFindAction extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.PreviousMatchFindAction,\r\n label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\r\n alias: 'Find Previous',\r\n precondition: undefined,\r\n kbOpts: [{\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 61 /* F3 */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 37 /* KEY_G */, secondary: [1024 /* Shift */ | 61 /* F3 */] },\r\n weight: 100 /* EditorContrib */\r\n }, {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\r\n primary: 1024 /* Shift */ | 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n ]\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToPrevMatch();\r\n }\r\n}\r\nexport class SelectionMatchFindAction extends EditorAction {\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n const seedSearchStringFromNonEmptySelection = editor.getOption(33 /* find */).seedSearchStringFromSelection === 'selection';\r\n let selectionSearchString = null;\r\n if (editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never') {\r\n selectionSearchString = getSelectionSearchString(editor, 'single', seedSearchStringFromNonEmptySelection);\r\n }\r\n if (selectionSearchString) {\r\n controller.setSearchString(selectionSearchString);\r\n }\r\n if (!this._run(controller)) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\r\n seedSearchStringFromNonEmptySelection: seedSearchStringFromNonEmptySelection,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(33 /* find */).loop\r\n });\r\n this._run(controller);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.NextSelectionMatchFindAction,\r\n label: nls.localize('nextSelectionMatchFindAction', \"Find Next Selection\"),\r\n alias: 'Find Next Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 61 /* F3 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToNextMatch();\r\n }\r\n}\r\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.PreviousSelectionMatchFindAction,\r\n label: nls.localize('previousSelectionMatchFindAction', \"Find Previous Selection\"),\r\n alias: 'Find Previous Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 61 /* F3 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToPrevMatch();\r\n }\r\n}\r\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\r\n id: FIND_IDS.StartFindReplaceAction,\r\n label: nls.localize('startReplace', \"Replace\"),\r\n alias: 'Replace',\r\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 38 /* KEY_H */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 36 /* KEY_F */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '3_find',\r\n title: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\r\n order: 2\r\n }\r\n}));\r\nStartFindReplaceAction.addImplementation(0, (accessor, editor, args) => {\r\n if (!editor.hasModel() || editor.getOption(79 /* readOnly */)) {\r\n return false;\r\n }\r\n const controller = CommonFindController.get(editor);\r\n if (!controller) {\r\n return false;\r\n }\r\n const currentSelection = editor.getSelection();\r\n const findInputFocused = controller.isFindInputFocused();\r\n // we only seed search string from selection when the current selection is single line and not empty,\r\n // + the find input is not focused\r\n const seedSearchStringFromSelection = !currentSelection.isEmpty()\r\n && currentSelection.startLineNumber === currentSelection.endLineNumber\r\n && (editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never')\r\n && !findInputFocused;\r\n /*\r\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.\r\n\r\n * findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\r\n * findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\r\n * findInputFocused false seedSearchStringFromSelection false FocusFindInput\r\n */\r\n const shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\r\n 2 /* FocusReplaceInput */ : 1 /* FocusFindInput */;\r\n return controller.start({\r\n forceRevealReplace: true,\r\n seedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\r\n seedSearchStringFromNonEmptySelection: editor.getOption(33 /* find */).seedSearchStringFromSelection === 'selection',\r\n seedSearchStringFromGlobalClipboard: editor.getOption(33 /* find */).seedSearchStringFromSelection !== 'never',\r\n shouldFocus: shouldFocus,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(33 /* find */).loop\r\n });\r\n});\r\nregisterEditorContribution(CommonFindController.ID, FindController);\r\nregisterEditorAction(StartFindWithSelectionAction);\r\nregisterEditorAction(NextMatchFindAction);\r\nregisterEditorAction(PreviousMatchFindAction);\r\nregisterEditorAction(NextSelectionMatchFindAction);\r\nregisterEditorAction(PreviousSelectionMatchFindAction);\r\nconst FindCommand = EditorCommand.bindToContribution(CommonFindController.get);\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.CloseFindWidgetCommand,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.closeFindWidget(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleCaseSensitiveCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleCaseSensitive(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleCaseSensitiveKeybinding.primary,\r\n mac: ToggleCaseSensitiveKeybinding.mac,\r\n win: ToggleCaseSensitiveKeybinding.win,\r\n linux: ToggleCaseSensitiveKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleWholeWordCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleWholeWords(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleWholeWordKeybinding.primary,\r\n mac: ToggleWholeWordKeybinding.mac,\r\n win: ToggleWholeWordKeybinding.win,\r\n linux: ToggleWholeWordKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleRegexCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleRegex(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleRegexKeybinding.primary,\r\n mac: ToggleRegexKeybinding.mac,\r\n win: ToggleRegexKeybinding.win,\r\n linux: ToggleRegexKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleSearchScopeCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleSearchScope(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleSearchScopeKeybinding.primary,\r\n mac: ToggleSearchScopeKeybinding.mac,\r\n win: ToggleSearchScopeKeybinding.win,\r\n linux: ToggleSearchScopeKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.TogglePreserveCaseCommand,\r\n precondition: undefined,\r\n handler: x => x.togglePreserveCase(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: TogglePreserveCaseKeybinding.primary,\r\n mac: TogglePreserveCaseKeybinding.mac,\r\n win: TogglePreserveCaseKeybinding.win,\r\n linux: TogglePreserveCaseKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceOneAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replace(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 22 /* KEY_1 */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceOneAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replace(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\r\n primary: 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceAllAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replaceAll(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceAllAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replaceAll(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\r\n primary: undefined,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 3 /* Enter */,\r\n }\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.SelectAllMatchesAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.selectAllMatches(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 512 /* Alt */ | 3 /* Enter */\r\n }\r\n}));\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./folding.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./folding.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const MAX_FOLDING_REGIONS = 0xFFFF;\r\nexport const MAX_LINE_NUMBER = 0xFFFFFF;\r\nconst MASK_INDENT = 0xFF000000;\r\nexport class FoldingRegions {\r\n constructor(startIndexes, endIndexes, types) {\r\n if (startIndexes.length !== endIndexes.length || startIndexes.length > MAX_FOLDING_REGIONS) {\r\n throw new Error('invalid startIndexes or endIndexes size');\r\n }\r\n this._startIndexes = startIndexes;\r\n this._endIndexes = endIndexes;\r\n this._collapseStates = new Uint32Array(Math.ceil(startIndexes.length / 32));\r\n this._types = types;\r\n this._parentsComputed = false;\r\n }\r\n ensureParentIndices() {\r\n if (!this._parentsComputed) {\r\n this._parentsComputed = true;\r\n let parentIndexes = [];\r\n let isInsideLast = (startLineNumber, endLineNumber) => {\r\n let index = parentIndexes[parentIndexes.length - 1];\r\n return this.getStartLineNumber(index) <= startLineNumber && this.getEndLineNumber(index) >= endLineNumber;\r\n };\r\n for (let i = 0, len = this._startIndexes.length; i < len; i++) {\r\n let startLineNumber = this._startIndexes[i];\r\n let endLineNumber = this._endIndexes[i];\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n throw new Error('startLineNumber or endLineNumber must not exceed ' + MAX_LINE_NUMBER);\r\n }\r\n while (parentIndexes.length > 0 && !isInsideLast(startLineNumber, endLineNumber)) {\r\n parentIndexes.pop();\r\n }\r\n let parentIndex = parentIndexes.length > 0 ? parentIndexes[parentIndexes.length - 1] : -1;\r\n parentIndexes.push(i);\r\n this._startIndexes[i] = startLineNumber + ((parentIndex & 0xFF) << 24);\r\n this._endIndexes[i] = endLineNumber + ((parentIndex & 0xFF00) << 16);\r\n }\r\n }\r\n }\r\n get length() {\r\n return this._startIndexes.length;\r\n }\r\n getStartLineNumber(index) {\r\n return this._startIndexes[index] & MAX_LINE_NUMBER;\r\n }\r\n getEndLineNumber(index) {\r\n return this._endIndexes[index] & MAX_LINE_NUMBER;\r\n }\r\n getType(index) {\r\n return this._types ? this._types[index] : undefined;\r\n }\r\n hasTypes() {\r\n return !!this._types;\r\n }\r\n isCollapsed(index) {\r\n let arrayIndex = (index / 32) | 0;\r\n let bit = index % 32;\r\n return (this._collapseStates[arrayIndex] & (1 << bit)) !== 0;\r\n }\r\n setCollapsed(index, newState) {\r\n let arrayIndex = (index / 32) | 0;\r\n let bit = index % 32;\r\n let value = this._collapseStates[arrayIndex];\r\n if (newState) {\r\n this._collapseStates[arrayIndex] = value | (1 << bit);\r\n }\r\n else {\r\n this._collapseStates[arrayIndex] = value & ~(1 << bit);\r\n }\r\n }\r\n setCollapsedAllOfType(type, newState) {\r\n let hasChanged = false;\r\n if (this._types) {\r\n for (let i = 0; i < this._types.length; i++) {\r\n if (this._types[i] === type) {\r\n this.setCollapsed(i, newState);\r\n hasChanged = true;\r\n }\r\n }\r\n }\r\n return hasChanged;\r\n }\r\n toRegion(index) {\r\n return new FoldingRegion(this, index);\r\n }\r\n getParentIndex(index) {\r\n this.ensureParentIndices();\r\n let parent = ((this._startIndexes[index] & MASK_INDENT) >>> 24) + ((this._endIndexes[index] & MASK_INDENT) >>> 16);\r\n if (parent === MAX_FOLDING_REGIONS) {\r\n return -1;\r\n }\r\n return parent;\r\n }\r\n contains(index, line) {\r\n return this.getStartLineNumber(index) <= line && this.getEndLineNumber(index) >= line;\r\n }\r\n findIndex(line) {\r\n let low = 0, high = this._startIndexes.length;\r\n if (high === 0) {\r\n return -1; // no children\r\n }\r\n while (low < high) {\r\n let mid = Math.floor((low + high) / 2);\r\n if (line < this.getStartLineNumber(mid)) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low - 1;\r\n }\r\n findRange(line) {\r\n let index = this.findIndex(line);\r\n if (index >= 0) {\r\n let endLineNumber = this.getEndLineNumber(index);\r\n if (endLineNumber >= line) {\r\n return index;\r\n }\r\n index = this.getParentIndex(index);\r\n while (index !== -1) {\r\n if (this.contains(index, line)) {\r\n return index;\r\n }\r\n index = this.getParentIndex(index);\r\n }\r\n }\r\n return -1;\r\n }\r\n toString() {\r\n let res = [];\r\n for (let i = 0; i < this.length; i++) {\r\n res[i] = `[${this.isCollapsed(i) ? '+' : '-'}] ${this.getStartLineNumber(i)}/${this.getEndLineNumber(i)}`;\r\n }\r\n return res.join(', ');\r\n }\r\n}\r\nexport class FoldingRegion {\r\n constructor(ranges, index) {\r\n this.ranges = ranges;\r\n this.index = index;\r\n }\r\n get startLineNumber() {\r\n return this.ranges.getStartLineNumber(this.index);\r\n }\r\n get endLineNumber() {\r\n return this.ranges.getEndLineNumber(this.index);\r\n }\r\n get regionIndex() {\r\n return this.index;\r\n }\r\n get parentIndex() {\r\n return this.ranges.getParentIndex(this.index);\r\n }\r\n get isCollapsed() {\r\n return this.ranges.isCollapsed(this.index);\r\n }\r\n containedBy(range) {\r\n return range.startLineNumber <= this.startLineNumber && range.endLineNumber >= this.endLineNumber;\r\n }\r\n containsLine(lineNumber) {\r\n return this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { FoldingRegions } from './foldingRanges.js';\r\nexport class FoldingModel {\r\n constructor(textModel, decorationProvider) {\r\n this._updateEventEmitter = new Emitter();\r\n this.onDidChange = this._updateEventEmitter.event;\r\n this._textModel = textModel;\r\n this._decorationProvider = decorationProvider;\r\n this._regions = new FoldingRegions(new Uint32Array(0), new Uint32Array(0));\r\n this._editorDecorationIds = [];\r\n this._isInitialized = false;\r\n }\r\n get regions() { return this._regions; }\r\n get textModel() { return this._textModel; }\r\n get isInitialized() { return this._isInitialized; }\r\n toggleCollapseState(toggledRegions) {\r\n if (!toggledRegions.length) {\r\n return;\r\n }\r\n toggledRegions = toggledRegions.sort((r1, r2) => r1.regionIndex - r2.regionIndex);\r\n const processed = {};\r\n this._decorationProvider.changeDecorations(accessor => {\r\n let k = 0; // index from [0 ... this.regions.length]\r\n let dirtyRegionEndLine = -1; // end of the range where decorations need to be updated\r\n let lastHiddenLine = -1; // the end of the last hidden lines\r\n const updateDecorationsUntil = (index) => {\r\n while (k < index) {\r\n const endLineNumber = this._regions.getEndLineNumber(k);\r\n const isCollapsed = this._regions.isCollapsed(k);\r\n if (endLineNumber <= dirtyRegionEndLine) {\r\n accessor.changeDecorationOptions(this._editorDecorationIds[k], this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine));\r\n }\r\n if (isCollapsed && endLineNumber > lastHiddenLine) {\r\n lastHiddenLine = endLineNumber;\r\n }\r\n k++;\r\n }\r\n };\r\n for (let region of toggledRegions) {\r\n let index = region.regionIndex;\r\n let editorDecorationId = this._editorDecorationIds[index];\r\n if (editorDecorationId && !processed[editorDecorationId]) {\r\n processed[editorDecorationId] = true;\r\n updateDecorationsUntil(index); // update all decorations up to current index using the old dirtyRegionEndLine\r\n let newCollapseState = !this._regions.isCollapsed(index);\r\n this._regions.setCollapsed(index, newCollapseState);\r\n dirtyRegionEndLine = Math.max(dirtyRegionEndLine, this._regions.getEndLineNumber(index));\r\n }\r\n }\r\n updateDecorationsUntil(this._regions.length);\r\n });\r\n this._updateEventEmitter.fire({ model: this, collapseStateChanged: toggledRegions });\r\n }\r\n update(newRegions, blockedLineNumers = []) {\r\n let newEditorDecorations = [];\r\n let isBlocked = (startLineNumber, endLineNumber) => {\r\n for (let blockedLineNumber of blockedLineNumers) {\r\n if (startLineNumber < blockedLineNumber && blockedLineNumber <= endLineNumber) { // first line is visible\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n let lastHiddenLine = -1;\r\n let initRange = (index, isCollapsed) => {\r\n const startLineNumber = newRegions.getStartLineNumber(index);\r\n const endLineNumber = newRegions.getEndLineNumber(index);\r\n if (!isCollapsed) {\r\n isCollapsed = newRegions.isCollapsed(index);\r\n }\r\n if (isCollapsed && isBlocked(startLineNumber, endLineNumber)) {\r\n isCollapsed = false;\r\n }\r\n newRegions.setCollapsed(index, isCollapsed);\r\n const maxColumn = this._textModel.getLineMaxColumn(startLineNumber);\r\n const decorationRange = {\r\n startLineNumber: startLineNumber,\r\n startColumn: Math.max(maxColumn - 1, 1),\r\n endLineNumber: startLineNumber,\r\n endColumn: maxColumn\r\n };\r\n newEditorDecorations.push({ range: decorationRange, options: this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine) });\r\n if (isCollapsed && endLineNumber > lastHiddenLine) {\r\n lastHiddenLine = endLineNumber;\r\n }\r\n };\r\n let i = 0;\r\n let nextCollapsed = () => {\r\n while (i < this._regions.length) {\r\n let isCollapsed = this._regions.isCollapsed(i);\r\n i++;\r\n if (isCollapsed) {\r\n return i - 1;\r\n }\r\n }\r\n return -1;\r\n };\r\n let k = 0;\r\n let collapsedIndex = nextCollapsed();\r\n while (collapsedIndex !== -1 && k < newRegions.length) {\r\n // get the latest range\r\n let decRange = this._textModel.getDecorationRange(this._editorDecorationIds[collapsedIndex]);\r\n if (decRange) {\r\n let collapsedStartLineNumber = decRange.startLineNumber;\r\n if (decRange.startColumn === Math.max(decRange.endColumn - 1, 1) && this._textModel.getLineMaxColumn(collapsedStartLineNumber) === decRange.endColumn) { // test that the decoration is still covering the full line else it got deleted\r\n while (k < newRegions.length) {\r\n let startLineNumber = newRegions.getStartLineNumber(k);\r\n if (collapsedStartLineNumber >= startLineNumber) {\r\n initRange(k, collapsedStartLineNumber === startLineNumber);\r\n k++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n collapsedIndex = nextCollapsed();\r\n }\r\n while (k < newRegions.length) {\r\n initRange(k, false);\r\n k++;\r\n }\r\n this._editorDecorationIds = this._decorationProvider.deltaDecorations(this._editorDecorationIds, newEditorDecorations);\r\n this._regions = newRegions;\r\n this._isInitialized = true;\r\n this._updateEventEmitter.fire({ model: this });\r\n }\r\n /**\r\n * Collapse state memento, for persistence only\r\n */\r\n getMemento() {\r\n let collapsedRanges = [];\r\n for (let i = 0; i < this._regions.length; i++) {\r\n if (this._regions.isCollapsed(i)) {\r\n let range = this._textModel.getDecorationRange(this._editorDecorationIds[i]);\r\n if (range) {\r\n let startLineNumber = range.startLineNumber;\r\n let endLineNumber = range.endLineNumber + this._regions.getEndLineNumber(i) - this._regions.getStartLineNumber(i);\r\n collapsedRanges.push({ startLineNumber, endLineNumber });\r\n }\r\n }\r\n }\r\n if (collapsedRanges.length > 0) {\r\n return collapsedRanges;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Apply persisted state, for persistence only\r\n */\r\n applyMemento(state) {\r\n if (!Array.isArray(state)) {\r\n return;\r\n }\r\n let toToogle = [];\r\n for (let range of state) {\r\n let region = this.getRegionAtLine(range.startLineNumber);\r\n if (region && !region.isCollapsed) {\r\n toToogle.push(region);\r\n }\r\n }\r\n this.toggleCollapseState(toToogle);\r\n }\r\n dispose() {\r\n this._decorationProvider.deltaDecorations(this._editorDecorationIds, []);\r\n }\r\n getAllRegionsAtLine(lineNumber, filter) {\r\n let result = [];\r\n if (this._regions) {\r\n let index = this._regions.findRange(lineNumber);\r\n let level = 1;\r\n while (index >= 0) {\r\n let current = this._regions.toRegion(index);\r\n if (!filter || filter(current, level)) {\r\n result.push(current);\r\n }\r\n level++;\r\n index = current.parentIndex;\r\n }\r\n }\r\n return result;\r\n }\r\n getRegionAtLine(lineNumber) {\r\n if (this._regions) {\r\n let index = this._regions.findRange(lineNumber);\r\n if (index >= 0) {\r\n return this._regions.toRegion(index);\r\n }\r\n }\r\n return null;\r\n }\r\n getRegionsInside(region, filter) {\r\n let result = [];\r\n let index = region ? region.regionIndex + 1 : 0;\r\n let endLineNumber = region ? region.endLineNumber : Number.MAX_VALUE;\r\n if (filter && filter.length === 2) {\r\n const levelStack = [];\r\n for (let i = index, len = this._regions.length; i < len; i++) {\r\n let current = this._regions.toRegion(i);\r\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\r\n while (levelStack.length > 0 && !current.containedBy(levelStack[levelStack.length - 1])) {\r\n levelStack.pop();\r\n }\r\n levelStack.push(current);\r\n if (filter(current, levelStack.length)) {\r\n result.push(current);\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (let i = index, len = this._regions.length; i < len; i++) {\r\n let current = this._regions.toRegion(i);\r\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\r\n if (!filter || filter(current)) {\r\n result.push(current);\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\r\n */\r\nexport function toggleCollapseState(foldingModel, levels, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region) {\r\n const doCollapse = !region.isCollapsed;\r\n toToggle.push(region);\r\n if (levels > 1) {\r\n let regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations including all children.\r\n * @param doCollapse Whether to collapse or expand\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\r\n */\r\nexport function setCollapseStateLevelsDown(foldingModel, doCollapse, levels = Number.MAX_VALUE, lineNumbers) {\r\n let toToggle = [];\r\n if (lineNumbers && lineNumbers.length > 0) {\r\n for (let lineNumber of lineNumbers) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region) {\r\n if (region.isCollapsed !== doCollapse) {\r\n toToggle.push(region);\r\n }\r\n if (levels > 1) {\r\n let regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n let regionsInside = foldingModel.getRegionsInside(null, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations including all parents.\r\n * @param doCollapse Whether to collapse or expand\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand.\r\n */\r\nexport function setCollapseStateLevelsUp(foldingModel, doCollapse, levels, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let regions = foldingModel.getAllRegionsAtLine(lineNumber, (region, level) => region.isCollapsed !== doCollapse && level <= levels);\r\n toToggle.push(...regions);\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand a region at the given locations. If the inner most region is already collapsed/expanded, uses the first parent instead.\r\n * @param doCollapse Whether to collapse or expand\r\n * @param lineNumbers the location of the regions to collapse or expand.\r\n */\r\nexport function setCollapseStateUp(foldingModel, doCollapse, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let regions = foldingModel.getAllRegionsAtLine(lineNumber, (region) => region.isCollapsed !== doCollapse);\r\n if (regions.length > 0) {\r\n toToggle.push(regions[0]);\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds or unfolds all regions that have a given level, except if they contain one of the blocked lines.\r\n * @param foldLevel level. Level == 1 is the top level\r\n * @param doCollapse Whether to collapse or expand\r\n*/\r\nexport function setCollapseStateAtLevel(foldingModel, foldLevel, doCollapse, blockedLineNumbers) {\r\n let filter = (region, level) => level === foldLevel && region.isCollapsed !== doCollapse && !blockedLineNumbers.some(line => region.containsLine(line));\r\n let toToggle = foldingModel.getRegionsInside(null, filter);\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds or unfolds all regions, except if they contain or are contained by a region of one of the blocked lines.\r\n * @param doCollapse Whether to collapse or expand\r\n * @param blockedLineNumbers the location of regions to not collapse or expand\r\n */\r\nexport function setCollapseStateForRest(foldingModel, doCollapse, blockedLineNumbers) {\r\n let filteredRegions = [];\r\n for (let lineNumber of blockedLineNumbers) {\r\n filteredRegions.push(foldingModel.getAllRegionsAtLine(lineNumber, undefined)[0]);\r\n }\r\n let filter = (region) => filteredRegions.every((filteredRegion) => !filteredRegion.containedBy(region) && !region.containedBy(filteredRegion)) && region.isCollapsed !== doCollapse;\r\n let toToggle = foldingModel.getRegionsInside(null, filter);\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds all regions for which the lines start with a given regex\r\n * @param foldingModel the folding model\r\n */\r\nexport function setCollapseStateForMatchingLines(foldingModel, regExp, doCollapse) {\r\n let editorModel = foldingModel.textModel;\r\n let regions = foldingModel.regions;\r\n let toToggle = [];\r\n for (let i = regions.length - 1; i >= 0; i--) {\r\n if (doCollapse !== regions.isCollapsed(i)) {\r\n let startLineNumber = regions.getStartLineNumber(i);\r\n if (regExp.test(editorModel.getLineContent(startLineNumber))) {\r\n toToggle.push(regions.toRegion(i));\r\n }\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds all regions of the given type\r\n * @param foldingModel the folding model\r\n */\r\nexport function setCollapseStateForType(foldingModel, type, doCollapse) {\r\n let regions = foldingModel.regions;\r\n let toToggle = [];\r\n for (let i = regions.length - 1; i >= 0; i--) {\r\n if (doCollapse !== regions.isCollapsed(i) && type === regions.getType(i)) {\r\n toToggle.push(regions.toRegion(i));\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Get line to go to for parent fold of current line\r\n * @param lineNumber the current line number\r\n * @param foldingModel the folding model\r\n *\r\n * @return Parent fold start line\r\n */\r\nexport function getParentFoldLine(lineNumber, foldingModel) {\r\n let startLineNumber = null;\r\n let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\r\n if (foldingRegion !== null) {\r\n startLineNumber = foldingRegion.startLineNumber;\r\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\r\n if (lineNumber === startLineNumber) {\r\n let parentFoldingIdx = foldingRegion.parentIndex;\r\n if (parentFoldingIdx !== -1) {\r\n startLineNumber = foldingModel.regions.getStartLineNumber(parentFoldingIdx);\r\n }\r\n else {\r\n startLineNumber = null;\r\n }\r\n }\r\n }\r\n return startLineNumber;\r\n}\r\n/**\r\n * Get line to go to for previous fold at the same level of current line\r\n * @param lineNumber the current line number\r\n * @param foldingModel the folding model\r\n *\r\n * @return Previous fold start line\r\n */\r\nexport function getPreviousFoldLine(lineNumber, foldingModel) {\r\n let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\r\n if (foldingRegion !== null) {\r\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.\r\n if (lineNumber !== foldingRegion.startLineNumber) {\r\n return foldingRegion.startLineNumber;\r\n }\r\n else {\r\n // Find min line number to stay within parent.\r\n let expectedParentIndex = foldingRegion.parentIndex;\r\n if (expectedParentIndex === -1) {\r\n return null;\r\n }\r\n let minLineNumber = foldingModel.regions.getStartLineNumber(foldingRegion.parentIndex);\r\n // Find fold at same level.\r\n while (foldingRegion !== null) {\r\n if (foldingRegion.regionIndex > 0) {\r\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex - 1);\r\n // Keep at same level.\r\n if (foldingRegion.startLineNumber <= minLineNumber) {\r\n return null;\r\n }\r\n else if (foldingRegion.parentIndex === expectedParentIndex) {\r\n return foldingRegion.startLineNumber;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Get line to go to next fold at the same level of current line\r\n * @param lineNumber the current line number\r\n * @param foldingModel the folding model\r\n *\r\n * @return Next fold start line\r\n */\r\nexport function getNextFoldLine(lineNumber, foldingModel) {\r\n let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\r\n if (foldingRegion !== null) {\r\n // Find max line number to stay within parent.\r\n let expectedParentIndex = foldingRegion.parentIndex;\r\n if (expectedParentIndex === -1) {\r\n return null;\r\n }\r\n let maxLineNumber = foldingModel.regions.getEndLineNumber(foldingRegion.parentIndex);\r\n // Find fold at same level.\r\n while (foldingRegion !== null) {\r\n if (foldingRegion.regionIndex < foldingModel.regions.length) {\r\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex + 1);\r\n // Keep at same level.\r\n if (foldingRegion.startLineNumber >= maxLineNumber) {\r\n return null;\r\n }\r\n else if (foldingRegion.parentIndex === expectedParentIndex) {\r\n return foldingRegion.startLineNumber;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\r\nimport { ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nexport const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown, localize('foldingExpandedIcon', 'Icon for expanded ranges in the editor glyph margin.'));\r\nexport const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight, localize('foldingCollapsedIcon', 'Icon for collapsed ranges in the editor glyph margin.'));\r\nexport class FoldingDecorationProvider {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this.autoHideFoldingControls = true;\r\n this.showFoldingHighlights = true;\r\n }\r\n getDecorationOption(isCollapsed, isHidden) {\r\n if (isHidden) {\r\n return FoldingDecorationProvider.HIDDEN_RANGE_DECORATION;\r\n }\r\n if (isCollapsed) {\r\n return this.showFoldingHighlights ? FoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION;\r\n }\r\n else if (this.autoHideFoldingControls) {\r\n return FoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION;\r\n }\r\n else {\r\n return FoldingDecorationProvider.EXPANDED_VISUAL_DECORATION;\r\n }\r\n }\r\n deltaDecorations(oldDecorations, newDecorations) {\r\n return this.editor.deltaDecorations(oldDecorations, newDecorations);\r\n }\r\n changeDecorations(callback) {\r\n return this.editor.changeDecorations(callback);\r\n }\r\n}\r\nFoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n description: 'folding-collapsed-visual-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n afterContentClassName: 'inline-folded',\r\n isWholeLine: true,\r\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon)\r\n});\r\nFoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n description: 'folding-collapsed-highlighted-visual-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n afterContentClassName: 'inline-folded',\r\n className: 'folded-background',\r\n isWholeLine: true,\r\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon)\r\n});\r\nFoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n description: 'folding-expanded-auto-hide-visual-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n isWholeLine: true,\r\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingExpandedIcon)\r\n});\r\nFoldingDecorationProvider.EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n description: 'folding-expanded-visual-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n isWholeLine: true,\r\n firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingExpandedIcon)\r\n});\r\nFoldingDecorationProvider.HIDDEN_RANGE_DECORATION = ModelDecorationOptions.register({\r\n description: 'folding-hidden-range-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { findFirstInSorted } from '../../../base/common/arrays.js';\r\nexport class HiddenRangeModel {\r\n constructor(model) {\r\n this._updateEventEmitter = new Emitter();\r\n this._foldingModel = model;\r\n this._foldingModelListener = model.onDidChange(_ => this.updateHiddenRanges());\r\n this._hiddenRanges = [];\r\n if (model.regions.length) {\r\n this.updateHiddenRanges();\r\n }\r\n }\r\n get onDidChange() { return this._updateEventEmitter.event; }\r\n get hiddenRanges() { return this._hiddenRanges; }\r\n updateHiddenRanges() {\r\n let updateHiddenAreas = false;\r\n let newHiddenAreas = [];\r\n let i = 0; // index into hidden\r\n let k = 0;\r\n let lastCollapsedStart = Number.MAX_VALUE;\r\n let lastCollapsedEnd = -1;\r\n let ranges = this._foldingModel.regions;\r\n for (; i < ranges.length; i++) {\r\n if (!ranges.isCollapsed(i)) {\r\n continue;\r\n }\r\n let startLineNumber = ranges.getStartLineNumber(i) + 1; // the first line is not hidden\r\n let endLineNumber = ranges.getEndLineNumber(i);\r\n if (lastCollapsedStart <= startLineNumber && endLineNumber <= lastCollapsedEnd) {\r\n // ignore ranges contained in collapsed regions\r\n continue;\r\n }\r\n if (!updateHiddenAreas && k < this._hiddenRanges.length && this._hiddenRanges[k].startLineNumber === startLineNumber && this._hiddenRanges[k].endLineNumber === endLineNumber) {\r\n // reuse the old ranges\r\n newHiddenAreas.push(this._hiddenRanges[k]);\r\n k++;\r\n }\r\n else {\r\n updateHiddenAreas = true;\r\n newHiddenAreas.push(new Range(startLineNumber, 1, endLineNumber, 1));\r\n }\r\n lastCollapsedStart = startLineNumber;\r\n lastCollapsedEnd = endLineNumber;\r\n }\r\n if (updateHiddenAreas || k < this._hiddenRanges.length) {\r\n this.applyHiddenRanges(newHiddenAreas);\r\n }\r\n }\r\n applyMemento(state) {\r\n if (!Array.isArray(state) || state.length === 0) {\r\n return false;\r\n }\r\n let hiddenRanges = [];\r\n for (let r of state) {\r\n if (!r.startLineNumber || !r.endLineNumber) {\r\n return false;\r\n }\r\n hiddenRanges.push(new Range(r.startLineNumber + 1, 1, r.endLineNumber, 1));\r\n }\r\n this.applyHiddenRanges(hiddenRanges);\r\n return true;\r\n }\r\n /**\r\n * Collapse state memento, for persistence only, only used if folding model is not yet initialized\r\n */\r\n getMemento() {\r\n return this._hiddenRanges.map(r => ({ startLineNumber: r.startLineNumber - 1, endLineNumber: r.endLineNumber }));\r\n }\r\n applyHiddenRanges(newHiddenAreas) {\r\n this._hiddenRanges = newHiddenAreas;\r\n this._updateEventEmitter.fire(newHiddenAreas);\r\n }\r\n hasRanges() {\r\n return this._hiddenRanges.length > 0;\r\n }\r\n isHidden(line) {\r\n return findRange(this._hiddenRanges, line) !== null;\r\n }\r\n adjustSelections(selections) {\r\n let hasChanges = false;\r\n let editorModel = this._foldingModel.textModel;\r\n let lastRange = null;\r\n let adjustLine = (line) => {\r\n if (!lastRange || !isInside(line, lastRange)) {\r\n lastRange = findRange(this._hiddenRanges, line);\r\n }\r\n if (lastRange) {\r\n return lastRange.startLineNumber - 1;\r\n }\r\n return null;\r\n };\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n let adjustedStartLine = adjustLine(selection.startLineNumber);\r\n if (adjustedStartLine) {\r\n selection = selection.setStartPosition(adjustedStartLine, editorModel.getLineMaxColumn(adjustedStartLine));\r\n hasChanges = true;\r\n }\r\n let adjustedEndLine = adjustLine(selection.endLineNumber);\r\n if (adjustedEndLine) {\r\n selection = selection.setEndPosition(adjustedEndLine, editorModel.getLineMaxColumn(adjustedEndLine));\r\n hasChanges = true;\r\n }\r\n selections[i] = selection;\r\n }\r\n return hasChanges;\r\n }\r\n dispose() {\r\n if (this.hiddenRanges.length > 0) {\r\n this._hiddenRanges = [];\r\n this._updateEventEmitter.fire(this._hiddenRanges);\r\n }\r\n if (this._foldingModelListener) {\r\n this._foldingModelListener.dispose();\r\n this._foldingModelListener = null;\r\n }\r\n }\r\n}\r\nfunction isInside(line, range) {\r\n return line >= range.startLineNumber && line <= range.endLineNumber;\r\n}\r\nfunction findRange(ranges, line) {\r\n let i = findFirstInSorted(ranges, r => line < r.startLineNumber) - 1;\r\n if (i >= 0 && ranges[i].endLineNumber >= line) {\r\n return ranges[i];\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\r\nimport { TextModel } from '../../common/model/textModel.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nconst MAX_FOLDING_REGIONS_FOR_INDENT_LIMIT = 5000;\r\nexport const ID_INDENT_PROVIDER = 'indent';\r\nexport class IndentRangeProvider {\r\n constructor(editorModel) {\r\n this.editorModel = editorModel;\r\n this.id = ID_INDENT_PROVIDER;\r\n }\r\n dispose() {\r\n }\r\n compute(cancelationToken) {\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(this.editorModel.getLanguageIdentifier().id);\r\n let offSide = foldingRules && !!foldingRules.offSide;\r\n let markers = foldingRules && foldingRules.markers;\r\n return Promise.resolve(computeRanges(this.editorModel, offSide, markers));\r\n }\r\n}\r\n// public only for testing\r\nexport class RangesCollector {\r\n constructor(foldingRangesLimit) {\r\n this._startIndexes = [];\r\n this._endIndexes = [];\r\n this._indentOccurrences = [];\r\n this._length = 0;\r\n this._foldingRangesLimit = foldingRangesLimit;\r\n }\r\n insertFirst(startLineNumber, endLineNumber, indent) {\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n return;\r\n }\r\n let index = this._length;\r\n this._startIndexes[index] = startLineNumber;\r\n this._endIndexes[index] = endLineNumber;\r\n this._length++;\r\n if (indent < 1000) {\r\n this._indentOccurrences[indent] = (this._indentOccurrences[indent] || 0) + 1;\r\n }\r\n }\r\n toIndentRanges(model) {\r\n if (this._length <= this._foldingRangesLimit) {\r\n // reverse and create arrays of the exact length\r\n let startIndexes = new Uint32Array(this._length);\r\n let endIndexes = new Uint32Array(this._length);\r\n for (let i = this._length - 1, k = 0; i >= 0; i--, k++) {\r\n startIndexes[k] = this._startIndexes[i];\r\n endIndexes[k] = this._endIndexes[i];\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes);\r\n }\r\n else {\r\n let entries = 0;\r\n let maxIndent = this._indentOccurrences.length;\r\n for (let i = 0; i < this._indentOccurrences.length; i++) {\r\n let n = this._indentOccurrences[i];\r\n if (n) {\r\n if (n + entries > this._foldingRangesLimit) {\r\n maxIndent = i;\r\n break;\r\n }\r\n entries += n;\r\n }\r\n }\r\n const tabSize = model.getOptions().tabSize;\r\n // reverse and create arrays of the exact length\r\n let startIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let endIndexes = new Uint32Array(this._foldingRangesLimit);\r\n for (let i = this._length - 1, k = 0; i >= 0; i--) {\r\n let startIndex = this._startIndexes[i];\r\n let lineContent = model.getLineContent(startIndex);\r\n let indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n if (indent < maxIndent || (indent === maxIndent && entries++ < this._foldingRangesLimit)) {\r\n startIndexes[k] = startIndex;\r\n endIndexes[k] = this._endIndexes[i];\r\n k++;\r\n }\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes);\r\n }\r\n }\r\n}\r\nexport function computeRanges(model, offSide, markers, foldingRangesLimit = MAX_FOLDING_REGIONS_FOR_INDENT_LIMIT) {\r\n const tabSize = model.getOptions().tabSize;\r\n let result = new RangesCollector(foldingRangesLimit);\r\n let pattern = undefined;\r\n if (markers) {\r\n pattern = new RegExp(`(${markers.start.source})|(?:${markers.end.source})`);\r\n }\r\n let previousRegions = [];\r\n let line = model.getLineCount() + 1;\r\n previousRegions.push({ indent: -1, endAbove: line, line }); // sentinel, to make sure there's at least one entry\r\n for (let line = model.getLineCount(); line > 0; line--) {\r\n let lineContent = model.getLineContent(line);\r\n let indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n let previous = previousRegions[previousRegions.length - 1];\r\n if (indent === -1) {\r\n if (offSide) {\r\n // for offSide languages, empty lines are associated to the previous block\r\n // note: the next block is already written to the results, so this only\r\n // impacts the end position of the block before\r\n previous.endAbove = line;\r\n }\r\n continue; // only whitespace\r\n }\r\n let m;\r\n if (pattern && (m = lineContent.match(pattern))) {\r\n // folding pattern match\r\n if (m[1]) { // start pattern match\r\n // discard all regions until the folding pattern\r\n let i = previousRegions.length - 1;\r\n while (i > 0 && previousRegions[i].indent !== -2) {\r\n i--;\r\n }\r\n if (i > 0) {\r\n previousRegions.length = i + 1;\r\n previous = previousRegions[i];\r\n // new folding range from pattern, includes the end line\r\n result.insertFirst(line, previous.line, indent);\r\n previous.line = line;\r\n previous.indent = indent;\r\n previous.endAbove = line;\r\n continue;\r\n }\r\n else {\r\n // no end marker found, treat line as a regular line\r\n }\r\n }\r\n else { // end pattern match\r\n previousRegions.push({ indent: -2, endAbove: line, line });\r\n continue;\r\n }\r\n }\r\n if (previous.indent > indent) {\r\n // discard all regions with larger indent\r\n do {\r\n previousRegions.pop();\r\n previous = previousRegions[previousRegions.length - 1];\r\n } while (previous.indent > indent);\r\n // new folding range\r\n let endLineNumber = previous.endAbove - 1;\r\n if (endLineNumber - line >= 1) { // needs at east size 1\r\n result.insertFirst(line, endLineNumber, indent);\r\n }\r\n }\r\n if (previous.indent === indent) {\r\n previous.endAbove = line;\r\n }\r\n else { // previous.indent < indent\r\n // new region with a bigger indent\r\n previousRegions.push({ indent, endAbove: line, line });\r\n }\r\n }\r\n return result.toIndentRanges(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { MAX_LINE_NUMBER, FoldingRegions } from './foldingRanges.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nconst MAX_FOLDING_REGIONS = 5000;\r\nconst foldingContext = {};\r\nexport const ID_SYNTAX_PROVIDER = 'syntax';\r\nexport class SyntaxRangeProvider {\r\n constructor(editorModel, providers, handleFoldingRangesChange, limit = MAX_FOLDING_REGIONS) {\r\n this.editorModel = editorModel;\r\n this.providers = providers;\r\n this.limit = limit;\r\n this.id = ID_SYNTAX_PROVIDER;\r\n for (const provider of providers) {\r\n if (typeof provider.onDidChange === 'function') {\r\n if (!this.disposables) {\r\n this.disposables = new DisposableStore();\r\n }\r\n this.disposables.add(provider.onDidChange(handleFoldingRangesChange));\r\n }\r\n }\r\n }\r\n compute(cancellationToken) {\r\n return collectSyntaxRanges(this.providers, this.editorModel, cancellationToken).then(ranges => {\r\n if (ranges) {\r\n let res = sanitizeRanges(ranges, this.limit);\r\n return res;\r\n }\r\n return null;\r\n });\r\n }\r\n dispose() {\r\n var _a;\r\n (_a = this.disposables) === null || _a === void 0 ? void 0 : _a.dispose();\r\n }\r\n}\r\nfunction collectSyntaxRanges(providers, model, cancellationToken) {\r\n let rangeData = null;\r\n let promises = providers.map((provider, i) => {\r\n return Promise.resolve(provider.provideFoldingRanges(model, foldingContext, cancellationToken)).then(ranges => {\r\n if (cancellationToken.isCancellationRequested) {\r\n return;\r\n }\r\n if (Array.isArray(ranges)) {\r\n if (!Array.isArray(rangeData)) {\r\n rangeData = [];\r\n }\r\n let nLines = model.getLineCount();\r\n for (let r of ranges) {\r\n if (r.start > 0 && r.end > r.start && r.end <= nLines) {\r\n rangeData.push({ start: r.start, end: r.end, rank: i, kind: r.kind });\r\n }\r\n }\r\n }\r\n }, onUnexpectedExternalError);\r\n });\r\n return Promise.all(promises).then(_ => {\r\n return rangeData;\r\n });\r\n}\r\nexport class RangesCollector {\r\n constructor(foldingRangesLimit) {\r\n this._startIndexes = [];\r\n this._endIndexes = [];\r\n this._nestingLevels = [];\r\n this._nestingLevelCounts = [];\r\n this._types = [];\r\n this._length = 0;\r\n this._foldingRangesLimit = foldingRangesLimit;\r\n }\r\n add(startLineNumber, endLineNumber, type, nestingLevel) {\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n return;\r\n }\r\n let index = this._length;\r\n this._startIndexes[index] = startLineNumber;\r\n this._endIndexes[index] = endLineNumber;\r\n this._nestingLevels[index] = nestingLevel;\r\n this._types[index] = type;\r\n this._length++;\r\n if (nestingLevel < 30) {\r\n this._nestingLevelCounts[nestingLevel] = (this._nestingLevelCounts[nestingLevel] || 0) + 1;\r\n }\r\n }\r\n toIndentRanges() {\r\n if (this._length <= this._foldingRangesLimit) {\r\n let startIndexes = new Uint32Array(this._length);\r\n let endIndexes = new Uint32Array(this._length);\r\n for (let i = 0; i < this._length; i++) {\r\n startIndexes[i] = this._startIndexes[i];\r\n endIndexes[i] = this._endIndexes[i];\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes, this._types);\r\n }\r\n else {\r\n let entries = 0;\r\n let maxLevel = this._nestingLevelCounts.length;\r\n for (let i = 0; i < this._nestingLevelCounts.length; i++) {\r\n let n = this._nestingLevelCounts[i];\r\n if (n) {\r\n if (n + entries > this._foldingRangesLimit) {\r\n maxLevel = i;\r\n break;\r\n }\r\n entries += n;\r\n }\r\n }\r\n let startIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let endIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let types = [];\r\n for (let i = 0, k = 0; i < this._length; i++) {\r\n let level = this._nestingLevels[i];\r\n if (level < maxLevel || (level === maxLevel && entries++ < this._foldingRangesLimit)) {\r\n startIndexes[k] = this._startIndexes[i];\r\n endIndexes[k] = this._endIndexes[i];\r\n types[k] = this._types[i];\r\n k++;\r\n }\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes, types);\r\n }\r\n }\r\n}\r\nexport function sanitizeRanges(rangeData, limit) {\r\n let sorted = rangeData.sort((d1, d2) => {\r\n let diff = d1.start - d2.start;\r\n if (diff === 0) {\r\n diff = d1.rank - d2.rank;\r\n }\r\n return diff;\r\n });\r\n let collector = new RangesCollector(limit);\r\n let top = undefined;\r\n let previous = [];\r\n for (let entry of sorted) {\r\n if (!top) {\r\n top = entry;\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n else {\r\n if (entry.start > top.start) {\r\n if (entry.end <= top.end) {\r\n previous.push(top);\r\n top = entry;\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n else {\r\n if (entry.start > top.end) {\r\n do {\r\n top = previous.pop();\r\n } while (top && entry.start > top.end);\r\n if (top) {\r\n previous.push(top);\r\n }\r\n top = entry;\r\n }\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n }\r\n }\r\n }\r\n return collector.toIndentRanges();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { sanitizeRanges } from './syntaxRangeProvider.js';\r\nexport const ID_INIT_PROVIDER = 'init';\r\nexport class InitializingRangeProvider {\r\n constructor(editorModel, initialRanges, onTimeout, timeoutTime) {\r\n this.editorModel = editorModel;\r\n this.id = ID_INIT_PROVIDER;\r\n if (initialRanges.length) {\r\n let toDecorationRange = (range) => {\r\n return {\r\n range: {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: 0,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: editorModel.getLineLength(range.endLineNumber)\r\n },\r\n options: {\r\n description: 'folding-initializing-range-provider',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n }\r\n };\r\n };\r\n this.decorationIds = editorModel.deltaDecorations([], initialRanges.map(toDecorationRange));\r\n this.timeout = setTimeout(onTimeout, timeoutTime);\r\n }\r\n }\r\n dispose() {\r\n if (this.decorationIds) {\r\n this.editorModel.deltaDecorations(this.decorationIds, []);\r\n this.decorationIds = undefined;\r\n }\r\n if (typeof this.timeout === 'number') {\r\n clearTimeout(this.timeout);\r\n this.timeout = undefined;\r\n }\r\n }\r\n compute(cancelationToken) {\r\n let foldingRangeData = [];\r\n if (this.decorationIds) {\r\n for (let id of this.decorationIds) {\r\n let range = this.editorModel.getDecorationRange(id);\r\n if (range) {\r\n foldingRangeData.push({ start: range.startLineNumber, end: range.endLineNumber, rank: 1 });\r\n }\r\n }\r\n }\r\n return Promise.resolve(sanitizeRanges(foldingRangeData, Number.MAX_VALUE));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './folding.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { escapeRegExpCharacters } from '../../../base/common/strings.js';\r\nimport { RunOnceScheduler, Delayer, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, registerInstantiatedEditorAction } from '../../browser/editorExtensions.js';\r\nimport { FoldingModel, setCollapseStateAtLevel, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateForMatchingLines, setCollapseStateForType, setCollapseStateForRest, toggleCollapseState, setCollapseStateUp, getParentFoldLine as getParentFoldLine, getPreviousFoldLine, getNextFoldLine } from './foldingModel.js';\r\nimport { FoldingDecorationProvider, foldingCollapsedIcon, foldingExpandedIcon } from './foldingDecorations.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { IndentRangeProvider } from './indentRangeProvider.js';\r\nimport { FoldingRangeProviderRegistry, FoldingRangeKind } from '../../common/modes.js';\r\nimport { SyntaxRangeProvider, ID_SYNTAX_PROVIDER } from './syntaxRangeProvider.js';\r\nimport { InitializingRangeProvider, ID_INIT_PROVIDER } from './intializingRangeProvider.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, editorSelectionBackground, transparent, iconForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { StableEditorScrollState } from '../../browser/core/editorState.js';\r\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey('foldingEnabled', false);\r\nlet FoldingController = class FoldingController extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this.contextKeyService = contextKeyService;\r\n this.localToDispose = this._register(new DisposableStore());\r\n this.editor = editor;\r\n const options = this.editor.getOptions();\r\n this._isEnabled = options.get(35 /* folding */);\r\n this._useFoldingProviders = options.get(36 /* foldingStrategy */) !== 'indentation';\r\n this._unfoldOnClickAfterEndOfLine = options.get(39 /* unfoldOnClickAfterEndOfLine */);\r\n this._restoringViewState = false;\r\n this._currentModelHasFoldedImports = false;\r\n this._foldingImportsByDefault = options.get(38 /* foldingImportsByDefault */);\r\n this.foldingModel = null;\r\n this.hiddenRangeModel = null;\r\n this.rangeProvider = null;\r\n this.foldingRegionPromise = null;\r\n this.foldingStateMemento = null;\r\n this.foldingModelPromise = null;\r\n this.updateScheduler = null;\r\n this.cursorChangedScheduler = null;\r\n this.mouseDownInfo = null;\r\n this.foldingDecorationProvider = new FoldingDecorationProvider(editor);\r\n this.foldingDecorationProvider.autoHideFoldingControls = options.get(98 /* showFoldingControls */) === 'mouseover';\r\n this.foldingDecorationProvider.showFoldingHighlights = options.get(37 /* foldingHighlight */);\r\n this.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\r\n this.foldingEnabled.set(this._isEnabled);\r\n this._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\r\n this._register(this.editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(35 /* folding */)) {\r\n this._isEnabled = this.editor.getOptions().get(35 /* folding */);\r\n this.foldingEnabled.set(this._isEnabled);\r\n this.onModelChanged();\r\n }\r\n if (e.hasChanged(98 /* showFoldingControls */) || e.hasChanged(37 /* foldingHighlight */)) {\r\n const options = this.editor.getOptions();\r\n this.foldingDecorationProvider.autoHideFoldingControls = options.get(98 /* showFoldingControls */) === 'mouseover';\r\n this.foldingDecorationProvider.showFoldingHighlights = options.get(37 /* foldingHighlight */);\r\n this.onModelContentChanged();\r\n }\r\n if (e.hasChanged(36 /* foldingStrategy */)) {\r\n this._useFoldingProviders = this.editor.getOptions().get(36 /* foldingStrategy */) !== 'indentation';\r\n this.onFoldingStrategyChanged();\r\n }\r\n if (e.hasChanged(39 /* unfoldOnClickAfterEndOfLine */)) {\r\n this._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(39 /* unfoldOnClickAfterEndOfLine */);\r\n }\r\n if (e.hasChanged(38 /* foldingImportsByDefault */)) {\r\n this._foldingImportsByDefault = this.editor.getOptions().get(38 /* foldingImportsByDefault */);\r\n }\r\n }));\r\n this.onModelChanged();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(FoldingController.ID);\r\n }\r\n /**\r\n * Store view state.\r\n */\r\n saveViewState() {\r\n let model = this.editor.getModel();\r\n if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\r\n return {};\r\n }\r\n if (this.foldingModel) { // disposed ?\r\n let collapsedRegions = this.foldingModel.isInitialized ? this.foldingModel.getMemento() : this.hiddenRangeModel.getMemento();\r\n let provider = this.rangeProvider ? this.rangeProvider.id : undefined;\r\n return { collapsedRegions, lineCount: model.getLineCount(), provider, foldedImports: this._currentModelHasFoldedImports };\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Restore view state.\r\n */\r\n restoreViewState(state) {\r\n let model = this.editor.getModel();\r\n if (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\r\n return;\r\n }\r\n if (!state || state.lineCount !== model.getLineCount()) {\r\n return;\r\n }\r\n this._currentModelHasFoldedImports = !!state.foldedImports;\r\n if (!state.collapsedRegions) {\r\n return;\r\n }\r\n if (state.provider === ID_SYNTAX_PROVIDER || state.provider === ID_INIT_PROVIDER) {\r\n this.foldingStateMemento = state;\r\n }\r\n const collapsedRegions = state.collapsedRegions;\r\n // set the hidden ranges right away, before waiting for the folding model.\r\n if (this.hiddenRangeModel.applyMemento(collapsedRegions)) {\r\n const foldingModel = this.getFoldingModel();\r\n if (foldingModel) {\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n this._restoringViewState = true;\r\n try {\r\n foldingModel.applyMemento(collapsedRegions);\r\n }\r\n finally {\r\n this._restoringViewState = false;\r\n }\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n }\r\n }\r\n onModelChanged() {\r\n this.localToDispose.clear();\r\n let model = this.editor.getModel();\r\n if (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\r\n // huge files get no view model, so they cannot support hidden areas\r\n return;\r\n }\r\n this._currentModelHasFoldedImports = false;\r\n this.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\r\n this.localToDispose.add(this.foldingModel);\r\n this.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\r\n this.localToDispose.add(this.hiddenRangeModel);\r\n this.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\r\n this.updateScheduler = new Delayer(200);\r\n this.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\r\n this.localToDispose.add(this.cursorChangedScheduler);\r\n this.localToDispose.add(FoldingRangeProviderRegistry.onDidChange(() => this.onFoldingStrategyChanged()));\r\n this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\r\n this.localToDispose.add(this.editor.onDidChangeModelContent(() => this.onModelContentChanged()));\r\n this.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\r\n this.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\r\n this.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\r\n this.localToDispose.add({\r\n dispose: () => {\r\n if (this.foldingRegionPromise) {\r\n this.foldingRegionPromise.cancel();\r\n this.foldingRegionPromise = null;\r\n }\r\n if (this.updateScheduler) {\r\n this.updateScheduler.cancel();\r\n }\r\n this.updateScheduler = null;\r\n this.foldingModel = null;\r\n this.foldingModelPromise = null;\r\n this.hiddenRangeModel = null;\r\n this.cursorChangedScheduler = null;\r\n this.foldingStateMemento = null;\r\n if (this.rangeProvider) {\r\n this.rangeProvider.dispose();\r\n }\r\n this.rangeProvider = null;\r\n }\r\n });\r\n this.onModelContentChanged();\r\n }\r\n onFoldingStrategyChanged() {\r\n if (this.rangeProvider) {\r\n this.rangeProvider.dispose();\r\n }\r\n this.rangeProvider = null;\r\n this.onModelContentChanged();\r\n }\r\n getRangeProvider(editorModel) {\r\n if (this.rangeProvider) {\r\n return this.rangeProvider;\r\n }\r\n this.rangeProvider = new IndentRangeProvider(editorModel); // fallback\r\n if (this._useFoldingProviders && this.foldingModel) {\r\n let foldingProviders = FoldingRangeProviderRegistry.ordered(this.foldingModel.textModel);\r\n if (foldingProviders.length === 0 && this.foldingStateMemento && this.foldingStateMemento.collapsedRegions) {\r\n const rangeProvider = this.rangeProvider = new InitializingRangeProvider(editorModel, this.foldingStateMemento.collapsedRegions, () => {\r\n // if after 30 the InitializingRangeProvider is still not replaced, force a refresh\r\n this.foldingStateMemento = null;\r\n this.onFoldingStrategyChanged();\r\n }, 30000);\r\n return rangeProvider; // keep memento in case there are still no foldingProviders on the next request.\r\n }\r\n else if (foldingProviders.length > 0) {\r\n this.rangeProvider = new SyntaxRangeProvider(editorModel, foldingProviders, () => this.onModelContentChanged());\r\n }\r\n }\r\n this.foldingStateMemento = null;\r\n return this.rangeProvider;\r\n }\r\n getFoldingModel() {\r\n return this.foldingModelPromise;\r\n }\r\n onModelContentChanged() {\r\n if (this.updateScheduler) {\r\n if (this.foldingRegionPromise) {\r\n this.foldingRegionPromise.cancel();\r\n this.foldingRegionPromise = null;\r\n }\r\n this.foldingModelPromise = this.updateScheduler.trigger(() => {\r\n const foldingModel = this.foldingModel;\r\n if (!foldingModel) { // null if editor has been disposed, or folding turned off\r\n return null;\r\n }\r\n const provider = this.getRangeProvider(foldingModel.textModel);\r\n let foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => provider.compute(token));\r\n return foldingRegionPromise.then(foldingRanges => {\r\n if (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\r\n let scrollState;\r\n if (this._foldingImportsByDefault && !this._currentModelHasFoldedImports) {\r\n const hasChanges = foldingRanges.setCollapsedAllOfType(FoldingRangeKind.Imports.value, true);\r\n if (hasChanges) {\r\n scrollState = StableEditorScrollState.capture(this.editor);\r\n this._currentModelHasFoldedImports = hasChanges;\r\n }\r\n }\r\n // some cursors might have moved into hidden regions, make sure they are in expanded regions\r\n let selections = this.editor.getSelections();\r\n let selectionLineNumbers = selections ? selections.map(s => s.startLineNumber) : [];\r\n foldingModel.update(foldingRanges, selectionLineNumbers);\r\n if (scrollState) {\r\n scrollState.restore(this.editor);\r\n }\r\n }\r\n return foldingModel;\r\n });\r\n }).then(undefined, (err) => {\r\n onUnexpectedError(err);\r\n return null;\r\n });\r\n }\r\n }\r\n onHiddenRangesChanges(hiddenRanges) {\r\n if (this.hiddenRangeModel && hiddenRanges.length && !this._restoringViewState) {\r\n let selections = this.editor.getSelections();\r\n if (selections) {\r\n if (this.hiddenRangeModel.adjustSelections(selections)) {\r\n this.editor.setSelections(selections);\r\n }\r\n }\r\n }\r\n this.editor.setHiddenAreas(hiddenRanges);\r\n }\r\n onCursorPositionChanged() {\r\n if (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\r\n this.cursorChangedScheduler.schedule();\r\n }\r\n }\r\n revealCursor() {\r\n const foldingModel = this.getFoldingModel();\r\n if (!foldingModel) {\r\n return;\r\n }\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n let selections = this.editor.getSelections();\r\n if (selections && selections.length > 0) {\r\n let toToggle = [];\r\n for (let selection of selections) {\r\n let lineNumber = selection.selectionStartLineNumber;\r\n if (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\r\n toToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\r\n }\r\n }\r\n if (toToggle.length) {\r\n foldingModel.toggleCollapseState(toToggle);\r\n this.reveal(selections[0].getPosition());\r\n }\r\n }\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n onEditorMouseDown(e) {\r\n this.mouseDownInfo = null;\r\n if (!this.hiddenRangeModel || !e.target || !e.target.range) {\r\n return;\r\n }\r\n if (!e.event.leftButton && !e.event.middleButton) {\r\n return;\r\n }\r\n const range = e.target.range;\r\n let iconClicked = false;\r\n switch (e.target.type) {\r\n case 4 /* GUTTER_LINE_DECORATIONS */:\r\n const data = e.target.detail;\r\n const offsetLeftInGutter = e.target.element.offsetLeft;\r\n const gutterOffsetX = data.offsetX - offsetLeftInGutter;\r\n // const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\r\n // TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\r\n if (gutterOffsetX < 5) { // the whitespace between the border and the real folding icon border is 5px\r\n return;\r\n }\r\n iconClicked = true;\r\n break;\r\n case 7 /* CONTENT_EMPTY */: {\r\n if (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\r\n const data = e.target.detail;\r\n if (!data.isAfterLines) {\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n case 6 /* CONTENT_TEXT */: {\r\n if (this.hiddenRangeModel.hasRanges()) {\r\n let model = this.editor.getModel();\r\n if (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n default:\r\n return;\r\n }\r\n this.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\r\n }\r\n onEditorMouseUp(e) {\r\n const foldingModel = this.getFoldingModel();\r\n if (!foldingModel || !this.mouseDownInfo || !e.target) {\r\n return;\r\n }\r\n let lineNumber = this.mouseDownInfo.lineNumber;\r\n let iconClicked = this.mouseDownInfo.iconClicked;\r\n let range = e.target.range;\r\n if (!range || range.startLineNumber !== lineNumber) {\r\n return;\r\n }\r\n if (iconClicked) {\r\n if (e.target.type !== 4 /* GUTTER_LINE_DECORATIONS */) {\r\n return;\r\n }\r\n }\r\n else {\r\n let model = this.editor.getModel();\r\n if (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\r\n return;\r\n }\r\n }\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region && region.startLineNumber === lineNumber) {\r\n let isCollapsed = region.isCollapsed;\r\n if (iconClicked || isCollapsed) {\r\n let surrounding = e.event.altKey;\r\n let toToggle = [];\r\n if (surrounding) {\r\n let filter = (otherRegion) => !otherRegion.containedBy(region) && !region.containedBy(otherRegion);\r\n let toMaybeToggle = foldingModel.getRegionsInside(null, filter);\r\n for (const r of toMaybeToggle) {\r\n if (r.isCollapsed) {\r\n toToggle.push(r);\r\n }\r\n }\r\n // if any surrounding regions are folded, unfold those. Otherwise, fold all surrounding\r\n if (toToggle.length === 0) {\r\n toToggle = toMaybeToggle;\r\n }\r\n }\r\n else {\r\n let recursive = e.event.middleButton || e.event.shiftKey;\r\n if (recursive) {\r\n for (const r of foldingModel.getRegionsInside(region)) {\r\n if (r.isCollapsed === isCollapsed) {\r\n toToggle.push(r);\r\n }\r\n }\r\n }\r\n // when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\r\n if (isCollapsed || !recursive || toToggle.length === 0) {\r\n toToggle.push(region);\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n this.reveal({ lineNumber, column: 1 });\r\n }\r\n }\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n reveal(position) {\r\n this.editor.revealPositionInCenterIfOutsideViewport(position, 0 /* Smooth */);\r\n }\r\n};\r\nFoldingController.ID = 'editor.contrib.folding';\r\nFoldingController = __decorate([\r\n __param(1, IContextKeyService)\r\n], FoldingController);\r\nexport { FoldingController };\r\nclass FoldingAction extends EditorAction {\r\n runEditorCommand(accessor, editor, args) {\r\n let foldingController = FoldingController.get(editor);\r\n if (!foldingController) {\r\n return;\r\n }\r\n let foldingModelPromise = foldingController.getFoldingModel();\r\n if (foldingModelPromise) {\r\n this.reportTelemetry(accessor, editor);\r\n return foldingModelPromise.then(foldingModel => {\r\n if (foldingModel) {\r\n this.invoke(foldingController, foldingModel, editor, args);\r\n const selection = editor.getSelection();\r\n if (selection) {\r\n foldingController.reveal(selection.getStartPosition());\r\n }\r\n }\r\n });\r\n }\r\n }\r\n getSelectedLines(editor) {\r\n let selections = editor.getSelections();\r\n return selections ? selections.map(s => s.startLineNumber) : [];\r\n }\r\n getLineNumbers(args, editor) {\r\n if (args && args.selectionLines) {\r\n return args.selectionLines.map(l => l + 1); // to 0-bases line numbers\r\n }\r\n return this.getSelectedLines(editor);\r\n }\r\n run(_accessor, _editor) {\r\n }\r\n}\r\nfunction foldingArgumentsConstraint(args) {\r\n if (!types.isUndefined(args)) {\r\n if (!types.isObject(args)) {\r\n return false;\r\n }\r\n const foldingArgs = args;\r\n if (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(foldingArgs.selectionLines) && (!types.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nclass UnfoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfold',\r\n label: nls.localize('unfoldAction.label', \"Unfold\"),\r\n alias: 'Unfold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 89 /* US_CLOSE_SQUARE_BRACKET */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 89 /* US_CLOSE_SQUARE_BRACKET */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n description: {\r\n description: 'Unfold the content in the editor',\r\n args: [\r\n {\r\n name: 'Unfold editor argument',\r\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': 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`,\r\n constraint: foldingArgumentsConstraint,\r\n schema: {\r\n 'type': 'object',\r\n 'properties': {\r\n 'levels': {\r\n 'type': 'number',\r\n 'default': 1\r\n },\r\n 'direction': {\r\n 'type': 'string',\r\n 'enum': ['up', 'down'],\r\n 'default': 'down'\r\n },\r\n 'selectionLines': {\r\n 'type': 'array',\r\n 'items': {\r\n 'type': 'number'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, args) {\r\n let levels = args && args.levels || 1;\r\n let lineNumbers = this.getLineNumbers(args, editor);\r\n if (args && args.direction === 'up') {\r\n setCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\r\n }\r\n else {\r\n setCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\r\n }\r\n }\r\n}\r\nclass UnFoldRecursivelyAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldRecursively',\r\n label: nls.localize('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\r\n alias: 'Unfold Recursively',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 89 /* US_CLOSE_SQUARE_BRACKET */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, _args) {\r\n setCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\r\n }\r\n}\r\nclass FoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.fold',\r\n label: nls.localize('foldAction.label', \"Fold\"),\r\n alias: 'Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 87 /* US_OPEN_SQUARE_BRACKET */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 87 /* US_OPEN_SQUARE_BRACKET */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n description: {\r\n description: 'Fold the content in the editor',\r\n args: [\r\n {\r\n name: 'Fold editor argument',\r\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': 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`,\r\n constraint: foldingArgumentsConstraint,\r\n schema: {\r\n 'type': 'object',\r\n 'properties': {\r\n 'levels': {\r\n 'type': 'number',\r\n },\r\n 'direction': {\r\n 'type': 'string',\r\n 'enum': ['up', 'down'],\r\n },\r\n 'selectionLines': {\r\n 'type': 'array',\r\n 'items': {\r\n 'type': 'number'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, args) {\r\n let lineNumbers = this.getLineNumbers(args, editor);\r\n const levels = args && args.levels;\r\n const direction = args && args.direction;\r\n if (typeof levels !== 'number' && typeof direction !== 'string') {\r\n // fold the region at the location or if already collapsed, the first uncollapsed parent instead.\r\n setCollapseStateUp(foldingModel, true, lineNumbers);\r\n }\r\n else {\r\n if (direction === 'up') {\r\n setCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\r\n }\r\n else {\r\n setCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\r\n }\r\n }\r\n }\r\n}\r\nclass ToggleFoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.toggleFold',\r\n label: nls.localize('toggleFoldAction.label', \"Toggle Fold\"),\r\n alias: 'Toggle Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 42 /* KEY_L */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n toggleCollapseState(foldingModel, 1, selectedLines);\r\n }\r\n}\r\nclass FoldRecursivelyAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldRecursively',\r\n label: nls.localize('foldRecursivelyAction.label', \"Fold Recursively\"),\r\n alias: 'Fold Recursively',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 87 /* US_OPEN_SQUARE_BRACKET */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n setCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\r\n }\r\n}\r\nclass FoldAllBlockCommentsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAllBlockComments',\r\n label: nls.localize('foldAllBlockComments.label', \"Fold All Block Comments\"),\r\n alias: 'Fold All Block Comments',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 85 /* US_SLASH */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let comments = LanguageConfigurationRegistry.getComments(editorModel.getLanguageIdentifier().id);\r\n if (comments && comments.blockCommentStartToken) {\r\n let regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\r\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\r\n }\r\n }\r\n }\r\n}\r\nclass FoldAllRegionsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAllMarkerRegions',\r\n label: nls.localize('foldAllMarkerRegions.label', \"Fold All Regions\"),\r\n alias: 'Fold All Regions',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 29 /* KEY_8 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);\r\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\r\n let regExp = new RegExp(foldingRules.markers.start);\r\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\r\n }\r\n }\r\n }\r\n}\r\nclass UnfoldAllRegionsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldAllMarkerRegions',\r\n label: nls.localize('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\r\n alias: 'Unfold All Regions',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 30 /* KEY_9 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);\r\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\r\n let regExp = new RegExp(foldingRules.markers.start);\r\n setCollapseStateForMatchingLines(foldingModel, regExp, false);\r\n }\r\n }\r\n }\r\n}\r\nclass FoldAllRegionsExceptAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAllExcept',\r\n label: nls.localize('foldAllExcept.label', \"Fold All Regions Except Selected\"),\r\n alias: 'Fold All Regions Except Selected',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 83 /* US_MINUS */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n setCollapseStateForRest(foldingModel, true, selectedLines);\r\n }\r\n}\r\nclass UnfoldAllRegionsExceptAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldAllExcept',\r\n label: nls.localize('unfoldAllExcept.label', \"Unfold All Regions Except Selected\"),\r\n alias: 'Unfold All Regions Except Selected',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 81 /* US_EQUAL */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n setCollapseStateForRest(foldingModel, false, selectedLines);\r\n }\r\n}\r\nclass FoldAllAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAll',\r\n label: nls.localize('foldAllAction.label', \"Fold All\"),\r\n alias: 'Fold All',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 21 /* KEY_0 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, _editor) {\r\n setCollapseStateLevelsDown(foldingModel, true);\r\n }\r\n}\r\nclass UnfoldAllAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldAll',\r\n label: nls.localize('unfoldAllAction.label', \"Unfold All\"),\r\n alias: 'Unfold All',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 40 /* KEY_J */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, _editor) {\r\n setCollapseStateLevelsDown(foldingModel, false);\r\n }\r\n}\r\nclass FoldLevelAction extends FoldingAction {\r\n getFoldingLevel() {\r\n return parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n setCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\r\n }\r\n}\r\nFoldLevelAction.ID_PREFIX = 'editor.foldLevel';\r\nFoldLevelAction.ID = (level) => FoldLevelAction.ID_PREFIX + level;\r\n/** Action to go to the parent fold of current line */\r\nclass GotoParentFoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.gotoParentFold',\r\n label: nls.localize('gotoParentFold.label', \"Go to Parent Fold\"),\r\n alias: 'Go to Parent Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n if (selectedLines.length > 0) {\r\n let startLineNumber = getParentFoldLine(selectedLines[0], foldingModel);\r\n if (startLineNumber !== null) {\r\n editor.setSelection({\r\n startLineNumber: startLineNumber,\r\n startColumn: 1,\r\n endLineNumber: startLineNumber,\r\n endColumn: 1\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/** Action to go to the previous fold of current line */\r\nclass GotoPreviousFoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.gotoPreviousFold',\r\n label: nls.localize('gotoPreviousFold.label', \"Go to Previous Fold\"),\r\n alias: 'Go to Previous Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n if (selectedLines.length > 0) {\r\n let startLineNumber = getPreviousFoldLine(selectedLines[0], foldingModel);\r\n if (startLineNumber !== null) {\r\n editor.setSelection({\r\n startLineNumber: startLineNumber,\r\n startColumn: 1,\r\n endLineNumber: startLineNumber,\r\n endColumn: 1\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/** Action to go to the next fold of current line */\r\nclass GotoNextFoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.gotoNextFold',\r\n label: nls.localize('gotoNextFold.label', \"Go to Next Fold\"),\r\n alias: 'Go to Next Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n if (selectedLines.length > 0) {\r\n let startLineNumber = getNextFoldLine(selectedLines[0], foldingModel);\r\n if (startLineNumber !== null) {\r\n editor.setSelection({\r\n startLineNumber: startLineNumber,\r\n startColumn: 1,\r\n endLineNumber: startLineNumber,\r\n endColumn: 1\r\n });\r\n }\r\n }\r\n }\r\n}\r\nregisterEditorContribution(FoldingController.ID, FoldingController);\r\nregisterEditorAction(UnfoldAction);\r\nregisterEditorAction(UnFoldRecursivelyAction);\r\nregisterEditorAction(FoldAction);\r\nregisterEditorAction(FoldRecursivelyAction);\r\nregisterEditorAction(FoldAllAction);\r\nregisterEditorAction(UnfoldAllAction);\r\nregisterEditorAction(FoldAllBlockCommentsAction);\r\nregisterEditorAction(FoldAllRegionsAction);\r\nregisterEditorAction(UnfoldAllRegionsAction);\r\nregisterEditorAction(FoldAllRegionsExceptAction);\r\nregisterEditorAction(UnfoldAllRegionsExceptAction);\r\nregisterEditorAction(ToggleFoldAction);\r\nregisterEditorAction(GotoParentFoldAction);\r\nregisterEditorAction(GotoPreviousFoldAction);\r\nregisterEditorAction(GotoNextFoldAction);\r\nfor (let i = 1; i <= 7; i++) {\r\n registerInstantiatedEditorAction(new FoldLevelAction({\r\n id: FoldLevelAction.ID(i),\r\n label: nls.localize('foldLevelAction.label', \"Fold Level {0}\", i),\r\n alias: `Fold Level ${i}`,\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | (21 /* KEY_0 */ + i)),\r\n weight: 100 /* EditorContrib */\r\n }\r\n }));\r\n}\r\nexport const foldBackgroundBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hc: null }, nls.localize('foldBackgroundBackground', \"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\nexport const editorFoldForeground = registerColor('editorGutter.foldingControlForeground', { dark: iconForeground, light: iconForeground, hc: iconForeground }, nls.localize('editorGutter.foldingControlForeground', 'Color of the folding control in the editor gutter.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const foldBackground = theme.getColor(foldBackgroundBackground);\r\n if (foldBackground) {\r\n collector.addRule(`.monaco-editor .folded-background { background-color: ${foldBackground}; }`);\r\n }\r\n const editorFoldColor = theme.getColor(editorFoldForeground);\r\n if (editorFoldColor) {\r\n collector.addRule(`\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingExpandedIcon)},\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingCollapsedIcon)} {\n\t\t\tcolor: ${editorFoldColor} !important;\n\t\t}\n\t\t`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../../base/common/event.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nfunction hasModifier(e, modifier) {\r\n return !!e[modifier];\r\n}\r\n/**\r\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\r\n */\r\nexport class ClickLinkMouseEvent {\r\n constructor(source, opts) {\r\n this.target = source.target;\r\n this.hasTriggerModifier = hasModifier(source.event, opts.triggerModifier);\r\n this.hasSideBySideModifier = hasModifier(source.event, opts.triggerSideBySideModifier);\r\n this.isNoneOrSingleMouseDown = (source.event.detail <= 1);\r\n }\r\n}\r\n/**\r\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\r\n */\r\nexport class ClickLinkKeyboardEvent {\r\n constructor(source, opts) {\r\n this.keyCodeIsTriggerKey = (source.keyCode === opts.triggerKey);\r\n this.keyCodeIsSideBySideKey = (source.keyCode === opts.triggerSideBySideKey);\r\n this.hasTriggerModifier = hasModifier(source, opts.triggerModifier);\r\n }\r\n}\r\nexport class ClickLinkOptions {\r\n constructor(triggerKey, triggerModifier, triggerSideBySideKey, triggerSideBySideModifier) {\r\n this.triggerKey = triggerKey;\r\n this.triggerModifier = triggerModifier;\r\n this.triggerSideBySideKey = triggerSideBySideKey;\r\n this.triggerSideBySideModifier = triggerSideBySideModifier;\r\n }\r\n equals(other) {\r\n return (this.triggerKey === other.triggerKey\r\n && this.triggerModifier === other.triggerModifier\r\n && this.triggerSideBySideKey === other.triggerSideBySideKey\r\n && this.triggerSideBySideModifier === other.triggerSideBySideModifier);\r\n }\r\n}\r\nfunction createOptions(multiCursorModifier) {\r\n if (multiCursorModifier === 'altKey') {\r\n if (platform.isMacintosh) {\r\n return new ClickLinkOptions(57 /* Meta */, 'metaKey', 6 /* Alt */, 'altKey');\r\n }\r\n return new ClickLinkOptions(5 /* Ctrl */, 'ctrlKey', 6 /* Alt */, 'altKey');\r\n }\r\n if (platform.isMacintosh) {\r\n return new ClickLinkOptions(6 /* Alt */, 'altKey', 57 /* Meta */, 'metaKey');\r\n }\r\n return new ClickLinkOptions(6 /* Alt */, 'altKey', 5 /* Ctrl */, 'ctrlKey');\r\n}\r\nexport class ClickLinkGesture extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._onMouseMoveOrRelevantKeyDown = this._register(new Emitter());\r\n this.onMouseMoveOrRelevantKeyDown = this._onMouseMoveOrRelevantKeyDown.event;\r\n this._onExecute = this._register(new Emitter());\r\n this.onExecute = this._onExecute.event;\r\n this._onCancel = this._register(new Emitter());\r\n this.onCancel = this._onCancel.event;\r\n this._editor = editor;\r\n this._opts = createOptions(this._editor.getOption(68 /* multiCursorModifier */));\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._lineNumberOnMouseDown = 0;\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(68 /* multiCursorModifier */)) {\r\n const newOpts = createOptions(this._editor.getOption(68 /* multiCursorModifier */));\r\n if (this._opts.equals(newOpts)) {\r\n return;\r\n }\r\n this._opts = newOpts;\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._lineNumberOnMouseDown = 0;\r\n this._onCancel.fire();\r\n }\r\n }));\r\n this._register(this._editor.onMouseMove((e) => this._onEditorMouseMove(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onKeyDown((e) => this._onEditorKeyDown(new ClickLinkKeyboardEvent(e, this._opts))));\r\n this._register(this._editor.onKeyUp((e) => this._onEditorKeyUp(new ClickLinkKeyboardEvent(e, this._opts))));\r\n this._register(this._editor.onMouseDrag(() => this._resetHandler()));\r\n this._register(this._editor.onDidChangeCursorSelection((e) => this._onDidChangeCursorSelection(e)));\r\n this._register(this._editor.onDidChangeModel((e) => this._resetHandler()));\r\n this._register(this._editor.onDidChangeModelContent(() => this._resetHandler()));\r\n this._register(this._editor.onDidScrollChange((e) => {\r\n if (e.scrollTopChanged || e.scrollLeftChanged) {\r\n this._resetHandler();\r\n }\r\n }));\r\n }\r\n _onDidChangeCursorSelection(e) {\r\n if (e.selection && e.selection.startColumn !== e.selection.endColumn) {\r\n this._resetHandler(); // immediately stop this feature if the user starts to select (https://github.com/microsoft/vscode/issues/7827)\r\n }\r\n }\r\n _onEditorMouseMove(mouseEvent) {\r\n this._lastMouseMoveEvent = mouseEvent;\r\n this._onMouseMoveOrRelevantKeyDown.fire([mouseEvent, null]);\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n // We need to record if we had the trigger key on mouse down because someone might select something in the editor\r\n // holding the mouse down and then while mouse is down start to press Ctrl/Cmd to start a copy operation and then\r\n // release the mouse button without wanting to do the navigation.\r\n // With this flag we prevent goto definition if the mouse was down before the trigger key was pressed.\r\n this._hasTriggerKeyOnMouseDown = mouseEvent.hasTriggerModifier;\r\n this._lineNumberOnMouseDown = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\r\n }\r\n _onEditorMouseUp(mouseEvent) {\r\n const currentLineNumber = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\r\n if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber) {\r\n this._onExecute.fire(mouseEvent);\r\n }\r\n }\r\n _onEditorKeyDown(e) {\r\n if (this._lastMouseMoveEvent\r\n && (e.keyCodeIsTriggerKey // User just pressed Ctrl/Cmd (normal goto definition)\r\n || (e.keyCodeIsSideBySideKey && e.hasTriggerModifier) // User pressed Ctrl/Cmd+Alt (goto definition to the side)\r\n )) {\r\n this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent, e]);\r\n }\r\n else if (e.hasTriggerModifier) {\r\n this._onCancel.fire(); // remove decorations if user holds another key with ctrl/cmd to prevent accident goto declaration\r\n }\r\n }\r\n _onEditorKeyUp(e) {\r\n if (e.keyCodeIsTriggerKey) {\r\n this._onCancel.fire();\r\n }\r\n }\r\n _resetHandler() {\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._onCancel.fire();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RunOnceScheduler, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nexport class HoverOperation {\r\n constructor(computer, success, error, progress, hoverTime) {\r\n this._computer = computer;\r\n this._state = 0 /* IDLE */;\r\n this._hoverTime = hoverTime;\r\n this._firstWaitScheduler = new RunOnceScheduler(() => this._triggerAsyncComputation(), 0);\r\n this._secondWaitScheduler = new RunOnceScheduler(() => this._triggerSyncComputation(), 0);\r\n this._loadingMessageScheduler = new RunOnceScheduler(() => this._showLoadingMessage(), 0);\r\n this._asyncComputationPromise = null;\r\n this._asyncComputationPromiseDone = false;\r\n this._completeCallback = success;\r\n this._errorCallback = error;\r\n this._progressCallback = progress;\r\n }\r\n setHoverTime(hoverTime) {\r\n this._hoverTime = hoverTime;\r\n }\r\n _firstWaitTime() {\r\n return this._hoverTime / 2;\r\n }\r\n _secondWaitTime() {\r\n return this._hoverTime / 2;\r\n }\r\n _loadingMessageTime() {\r\n return 3 * this._hoverTime;\r\n }\r\n _triggerAsyncComputation() {\r\n this._state = 2 /* SECOND_WAIT */;\r\n this._secondWaitScheduler.schedule(this._secondWaitTime());\r\n if (this._computer.computeAsync) {\r\n this._asyncComputationPromiseDone = false;\r\n this._asyncComputationPromise = createCancelablePromise(token => this._computer.computeAsync(token));\r\n this._asyncComputationPromise.then((asyncResult) => {\r\n this._asyncComputationPromiseDone = true;\r\n this._withAsyncResult(asyncResult);\r\n }, (e) => this._onError(e));\r\n }\r\n else {\r\n this._asyncComputationPromiseDone = true;\r\n }\r\n }\r\n _triggerSyncComputation() {\r\n if (this._computer.computeSync) {\r\n this._computer.onResult(this._computer.computeSync(), true);\r\n }\r\n if (this._asyncComputationPromiseDone) {\r\n this._state = 0 /* IDLE */;\r\n this._onComplete(this._computer.getResult());\r\n }\r\n else {\r\n this._state = 3 /* WAITING_FOR_ASYNC_COMPUTATION */;\r\n this._onProgress(this._computer.getResult());\r\n }\r\n }\r\n _showLoadingMessage() {\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n this._onProgress(this._computer.getResultWithLoadingMessage());\r\n }\r\n }\r\n _withAsyncResult(asyncResult) {\r\n if (asyncResult) {\r\n this._computer.onResult(asyncResult, false);\r\n }\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n this._state = 0 /* IDLE */;\r\n this._onComplete(this._computer.getResult());\r\n }\r\n }\r\n _onComplete(value) {\r\n this._completeCallback(value);\r\n }\r\n _onError(error) {\r\n if (this._errorCallback) {\r\n this._errorCallback(error);\r\n }\r\n else {\r\n onUnexpectedError(error);\r\n }\r\n }\r\n _onProgress(value) {\r\n this._progressCallback(value);\r\n }\r\n start(mode) {\r\n if (mode === 0 /* Delayed */) {\r\n if (this._state === 0 /* IDLE */) {\r\n this._state = 1 /* FIRST_WAIT */;\r\n this._firstWaitScheduler.schedule(this._firstWaitTime());\r\n this._loadingMessageScheduler.schedule(this._loadingMessageTime());\r\n }\r\n }\r\n else {\r\n switch (this._state) {\r\n case 0 /* IDLE */:\r\n this._triggerAsyncComputation();\r\n this._secondWaitScheduler.cancel();\r\n this._triggerSyncComputation();\r\n break;\r\n case 2 /* SECOND_WAIT */:\r\n this._secondWaitScheduler.cancel();\r\n this._triggerSyncComputation();\r\n break;\r\n }\r\n }\r\n }\r\n cancel() {\r\n this._loadingMessageScheduler.cancel();\r\n if (this._state === 1 /* FIRST_WAIT */) {\r\n this._firstWaitScheduler.cancel();\r\n }\r\n if (this._state === 2 /* SECOND_WAIT */) {\r\n this._secondWaitScheduler.cancel();\r\n if (this._asyncComputationPromise) {\r\n this._asyncComputationPromise.cancel();\r\n this._asyncComputationPromise = null;\r\n }\r\n }\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n if (this._asyncComputationPromise) {\r\n this._asyncComputationPromise.cancel();\r\n this._asyncComputationPromise = null;\r\n }\r\n }\r\n this._state = 0 /* IDLE */;\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./hover.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./hover.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './hover.css';\r\nimport * as dom from '../../dom.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\r\nconst $ = dom.$;\r\nexport class HoverWidget extends Disposable {\r\n constructor() {\r\n super();\r\n this.containerDomNode = document.createElement('div');\r\n this.containerDomNode.className = 'monaco-hover';\r\n this.containerDomNode.tabIndex = 0;\r\n this.containerDomNode.setAttribute('role', 'tooltip');\r\n this.contentsDomNode = document.createElement('div');\r\n this.contentsDomNode.className = 'monaco-hover-content';\r\n this._scrollbar = this._register(new DomScrollableElement(this.contentsDomNode, {\r\n consumeMouseWheelIfScrollbarIsNeeded: true\r\n }));\r\n this.containerDomNode.appendChild(this._scrollbar.getDomNode());\r\n }\r\n onContentsChanged() {\r\n this._scrollbar.scanDomNode();\r\n }\r\n}\r\nexport class HoverAction extends Disposable {\r\n constructor(parent, actionOptions, keybindingLabel) {\r\n super();\r\n this.actionContainer = dom.append(parent, $('div.action-container'));\r\n this.action = dom.append(this.actionContainer, $('a.action'));\r\n this.action.setAttribute('href', '#');\r\n this.action.setAttribute('role', 'button');\r\n if (actionOptions.iconClass) {\r\n dom.append(this.action, $(`span.icon.${actionOptions.iconClass}`));\r\n }\r\n const label = dom.append(this.action, $('span'));\r\n label.textContent = keybindingLabel ? `${actionOptions.label} (${keybindingLabel})` : actionOptions.label;\r\n this._register(dom.addDisposableListener(this.actionContainer, dom.EventType.CLICK, e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n actionOptions.run(this.actionContainer);\r\n }));\r\n this.setEnabled(true);\r\n }\r\n static render(parent, actionOptions, keybindingLabel) {\r\n return new HoverAction(parent, actionOptions, keybindingLabel);\r\n }\r\n setEnabled(enabled) {\r\n if (enabled) {\r\n this.actionContainer.classList.remove('disabled');\r\n this.actionContainer.removeAttribute('aria-disabled');\r\n }\r\n else {\r\n this.actionContainer.classList.add('disabled');\r\n this.actionContainer.setAttribute('aria-disabled', 'true');\r\n }\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./gotoErrorWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./gotoErrorWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport { Schemas } from './network.js';\r\nimport { isWindows } from './platform.js';\r\nimport { basename } from './resources.js';\r\nimport { hasDriveLetter, isRootOrDriveLetter } from './extpath.js';\r\nexport function getBaseLabel(resource) {\r\n if (!resource) {\r\n return undefined;\r\n }\r\n if (typeof resource === 'string') {\r\n resource = URI.file(resource);\r\n }\r\n const base = basename(resource) || (resource.scheme === Schemas.file ? resource.fsPath : resource.path) /* can be empty string if '/' is passed in */;\r\n // convert c: => C:\r\n if (isWindows && isRootOrDriveLetter(base)) {\r\n return normalizeDriveLetter(base);\r\n }\r\n return base;\r\n}\r\nexport function normalizeDriveLetter(path) {\r\n if (hasDriveLetter(path)) {\r\n return path.charAt(0).toUpperCase() + path.slice(1);\r\n }\r\n return path;\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./peekViewWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./peekViewWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { CodeEditorWidget } from './codeEditorWidget.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nlet EmbeddedCodeEditorWidget = class EmbeddedCodeEditorWidget extends CodeEditorWidget {\r\n constructor(domElement, options, parentEditor, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService) {\r\n super(domElement, Object.assign(Object.assign({}, parentEditor.getRawOptions()), { overflowWidgetsDomNode: parentEditor.getOverflowWidgetsDomNode() }), {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService);\r\n this._parentEditor = parentEditor;\r\n this._overwriteOptions = options;\r\n // Overwrite parent's options\r\n super.updateOptions(this._overwriteOptions);\r\n this._register(parentEditor.onDidChangeConfiguration((e) => this._onParentConfigurationChanged(e)));\r\n }\r\n getParentEditor() {\r\n return this._parentEditor;\r\n }\r\n _onParentConfigurationChanged(e) {\r\n super.updateOptions(this._parentEditor.getRawOptions());\r\n super.updateOptions(this._overwriteOptions);\r\n }\r\n updateOptions(newOptions) {\r\n objects.mixin(this._overwriteOptions, newOptions, true);\r\n super.updateOptions(this._overwriteOptions);\r\n }\r\n};\r\nEmbeddedCodeEditorWidget = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, ICodeEditorService),\r\n __param(5, ICommandService),\r\n __param(6, IContextKeyService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IAccessibilityService)\r\n], EmbeddedCodeEditorWidget);\r\nexport { EmbeddedCodeEditorWidget };\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./zoneWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./zoneWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './zoneWidget.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nconst defaultColor = new Color(new RGBA(0, 122, 204));\r\nconst defaultOptions = {\r\n showArrow: true,\r\n showFrame: true,\r\n className: '',\r\n frameColor: defaultColor,\r\n arrowColor: defaultColor,\r\n keepEditorSelection: false\r\n};\r\nconst WIDGET_ID = 'vs.editor.contrib.zoneWidget';\r\nexport class ViewZoneDelegate {\r\n constructor(domNode, afterLineNumber, afterColumn, heightInLines, onDomNodeTop, onComputedHeight) {\r\n this.id = ''; // A valid zone id should be greater than 0\r\n this.domNode = domNode;\r\n this.afterLineNumber = afterLineNumber;\r\n this.afterColumn = afterColumn;\r\n this.heightInLines = heightInLines;\r\n this._onDomNodeTop = onDomNodeTop;\r\n this._onComputedHeight = onComputedHeight;\r\n }\r\n onDomNodeTop(top) {\r\n this._onDomNodeTop(top);\r\n }\r\n onComputedHeight(height) {\r\n this._onComputedHeight(height);\r\n }\r\n}\r\nexport class OverlayWidgetDelegate {\r\n constructor(id, domNode) {\r\n this._id = id;\r\n this._domNode = domNode;\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return null;\r\n }\r\n}\r\nclass Arrow {\r\n constructor(_editor) {\r\n this._editor = _editor;\r\n this._ruleName = Arrow._IdGenerator.nextId();\r\n this._decorations = [];\r\n this._color = null;\r\n this._height = -1;\r\n //\r\n }\r\n dispose() {\r\n this.hide();\r\n dom.removeCSSRulesContainingSelector(this._ruleName);\r\n }\r\n set color(value) {\r\n if (this._color !== value) {\r\n this._color = value;\r\n this._updateStyle();\r\n }\r\n }\r\n set height(value) {\r\n if (this._height !== value) {\r\n this._height = value;\r\n this._updateStyle();\r\n }\r\n }\r\n _updateStyle() {\r\n dom.removeCSSRulesContainingSelector(this._ruleName);\r\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; `);\r\n }\r\n show(where) {\r\n this._decorations = this._editor.deltaDecorations(this._decorations, [{ range: Range.fromPositions(where), options: { description: 'zone-widget-arrow', className: this._ruleName, stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ } }]);\r\n }\r\n hide() {\r\n this._editor.deltaDecorations(this._decorations, []);\r\n }\r\n}\r\nArrow._IdGenerator = new IdGenerator('.arrow-decoration-');\r\nexport class ZoneWidget {\r\n constructor(editor, options = {}) {\r\n this._arrow = null;\r\n this._overlayWidget = null;\r\n this._resizeSash = null;\r\n this._positionMarkerId = [];\r\n this._viewZone = null;\r\n this._disposables = new DisposableStore();\r\n this.container = null;\r\n this._isShowing = false;\r\n this.editor = editor;\r\n this.options = objects.deepClone(options);\r\n objects.mixin(this.options, defaultOptions, false);\r\n this.domNode = document.createElement('div');\r\n if (!this.options.isAccessible) {\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this.domNode.setAttribute('role', 'presentation');\r\n }\r\n this._disposables.add(this.editor.onDidLayoutChange((info) => {\r\n const width = this._getWidth(info);\r\n this.domNode.style.width = width + 'px';\r\n this.domNode.style.left = this._getLeft(info) + 'px';\r\n this._onWidth(width);\r\n }));\r\n }\r\n dispose() {\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n if (this._viewZone) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n this._viewZone = null;\r\n });\r\n }\r\n this.editor.deltaDecorations(this._positionMarkerId, []);\r\n this._positionMarkerId = [];\r\n this._disposables.dispose();\r\n }\r\n create() {\r\n this.domNode.classList.add('zone-widget');\r\n if (this.options.className) {\r\n this.domNode.classList.add(this.options.className);\r\n }\r\n this.container = document.createElement('div');\r\n this.container.classList.add('zone-widget-container');\r\n this.domNode.appendChild(this.container);\r\n if (this.options.showArrow) {\r\n this._arrow = new Arrow(this.editor);\r\n this._disposables.add(this._arrow);\r\n }\r\n this._fillContainer(this.container);\r\n this._initSash();\r\n this._applyStyles();\r\n }\r\n style(styles) {\r\n if (styles.frameColor) {\r\n this.options.frameColor = styles.frameColor;\r\n }\r\n if (styles.arrowColor) {\r\n this.options.arrowColor = styles.arrowColor;\r\n }\r\n this._applyStyles();\r\n }\r\n _applyStyles() {\r\n if (this.container && this.options.frameColor) {\r\n let frameColor = this.options.frameColor.toString();\r\n this.container.style.borderTopColor = frameColor;\r\n this.container.style.borderBottomColor = frameColor;\r\n }\r\n if (this._arrow && this.options.arrowColor) {\r\n let arrowColor = this.options.arrowColor.toString();\r\n this._arrow.color = arrowColor;\r\n }\r\n }\r\n _getWidth(info) {\r\n return info.width - info.minimap.minimapWidth - info.verticalScrollbarWidth;\r\n }\r\n _getLeft(info) {\r\n // If minimap is to the left, we move beyond it\r\n if (info.minimap.minimapWidth > 0 && info.minimap.minimapLeft === 0) {\r\n return info.minimap.minimapWidth;\r\n }\r\n return 0;\r\n }\r\n _onViewZoneTop(top) {\r\n this.domNode.style.top = top + 'px';\r\n }\r\n _onViewZoneHeight(height) {\r\n this.domNode.style.height = `${height}px`;\r\n if (this.container) {\r\n let containerHeight = height - this._decoratingElementsHeight();\r\n this.container.style.height = `${containerHeight}px`;\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n this._doLayout(containerHeight, this._getWidth(layoutInfo));\r\n }\r\n if (this._resizeSash) {\r\n this._resizeSash.layout();\r\n }\r\n }\r\n get position() {\r\n const [id] = this._positionMarkerId;\r\n if (!id) {\r\n return undefined;\r\n }\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return undefined;\r\n }\r\n const range = model.getDecorationRange(id);\r\n if (!range) {\r\n return undefined;\r\n }\r\n return range.getStartPosition();\r\n }\r\n show(rangeOrPos, heightInLines) {\r\n const range = Range.isIRange(rangeOrPos) ? Range.lift(rangeOrPos) : Range.fromPositions(rangeOrPos);\r\n this._isShowing = true;\r\n this._showImpl(range, heightInLines);\r\n this._isShowing = false;\r\n this._positionMarkerId = this.editor.deltaDecorations(this._positionMarkerId, [{ range, options: ModelDecorationOptions.EMPTY }]);\r\n }\r\n hide() {\r\n if (this._viewZone) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n });\r\n this._viewZone = null;\r\n }\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n if (this._arrow) {\r\n this._arrow.hide();\r\n }\r\n }\r\n _decoratingElementsHeight() {\r\n let lineHeight = this.editor.getOption(57 /* lineHeight */);\r\n let result = 0;\r\n if (this.options.showArrow) {\r\n let arrowHeight = Math.round(lineHeight / 3);\r\n result += 2 * arrowHeight;\r\n }\r\n if (this.options.showFrame) {\r\n let frameThickness = Math.round(lineHeight / 9);\r\n result += 2 * frameThickness;\r\n }\r\n return result;\r\n }\r\n _showImpl(where, heightInLines) {\r\n const position = where.getStartPosition();\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n const width = this._getWidth(layoutInfo);\r\n this.domNode.style.width = `${width}px`;\r\n this.domNode.style.left = this._getLeft(layoutInfo) + 'px';\r\n // Render the widget as zone (rendering) and widget (lifecycle)\r\n const viewZoneDomNode = document.createElement('div');\r\n viewZoneDomNode.style.overflow = 'hidden';\r\n const lineHeight = this.editor.getOption(57 /* lineHeight */);\r\n // adjust heightInLines to viewport\r\n const maxHeightInLines = Math.max(12, (this.editor.getLayoutInfo().height / lineHeight) * 0.8);\r\n heightInLines = Math.min(heightInLines, maxHeightInLines);\r\n let arrowHeight = 0;\r\n let frameThickness = 0;\r\n // Render the arrow one 1/3 of an editor line height\r\n if (this._arrow && this.options.showArrow) {\r\n arrowHeight = Math.round(lineHeight / 3);\r\n this._arrow.height = arrowHeight;\r\n this._arrow.show(position);\r\n }\r\n // Render the frame as 1/9 of an editor line height\r\n if (this.options.showFrame) {\r\n frameThickness = Math.round(lineHeight / 9);\r\n }\r\n // insert zone widget\r\n this.editor.changeViewZones((accessor) => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n this.domNode.style.top = '-1000px';\r\n this._viewZone = new ViewZoneDelegate(viewZoneDomNode, position.lineNumber, position.column, heightInLines, (top) => this._onViewZoneTop(top), (height) => this._onViewZoneHeight(height));\r\n this._viewZone.id = accessor.addZone(this._viewZone);\r\n this._overlayWidget = new OverlayWidgetDelegate(WIDGET_ID + this._viewZone.id, this.domNode);\r\n this.editor.addOverlayWidget(this._overlayWidget);\r\n });\r\n if (this.container && this.options.showFrame) {\r\n const width = this.options.frameWidth ? this.options.frameWidth : frameThickness;\r\n this.container.style.borderTopWidth = width + 'px';\r\n this.container.style.borderBottomWidth = width + 'px';\r\n }\r\n let containerHeight = heightInLines * lineHeight - this._decoratingElementsHeight();\r\n if (this.container) {\r\n this.container.style.top = arrowHeight + 'px';\r\n this.container.style.height = containerHeight + 'px';\r\n this.container.style.overflow = 'hidden';\r\n }\r\n this._doLayout(containerHeight, width);\r\n if (!this.options.keepEditorSelection) {\r\n this.editor.setSelection(where);\r\n }\r\n const model = this.editor.getModel();\r\n if (model) {\r\n const revealLine = where.endLineNumber + 1;\r\n if (revealLine <= model.getLineCount()) {\r\n // reveal line below the zone widget\r\n this.revealLine(revealLine, false);\r\n }\r\n else {\r\n // reveal last line atop\r\n this.revealLine(model.getLineCount(), true);\r\n }\r\n }\r\n }\r\n revealLine(lineNumber, isLastLine) {\r\n if (isLastLine) {\r\n this.editor.revealLineInCenter(lineNumber, 0 /* Smooth */);\r\n }\r\n else {\r\n this.editor.revealLine(lineNumber, 0 /* Smooth */);\r\n }\r\n }\r\n setCssClass(className, classToReplace) {\r\n if (!this.container) {\r\n return;\r\n }\r\n if (classToReplace) {\r\n this.container.classList.remove(classToReplace);\r\n }\r\n this.container.classList.add(className);\r\n }\r\n _onWidth(widthInPixel) {\r\n // implement in subclass\r\n }\r\n _doLayout(heightInPixel, widthInPixel) {\r\n // implement in subclass\r\n }\r\n _relayout(newHeightInLines) {\r\n if (this._viewZone && this._viewZone.heightInLines !== newHeightInLines) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n this._viewZone.heightInLines = newHeightInLines;\r\n accessor.layoutZone(this._viewZone.id);\r\n }\r\n });\r\n }\r\n }\r\n // --- sash\r\n _initSash() {\r\n if (this._resizeSash) {\r\n return;\r\n }\r\n this._resizeSash = this._disposables.add(new Sash(this.domNode, this, { orientation: 1 /* HORIZONTAL */ }));\r\n if (!this.options.isResizeable) {\r\n this._resizeSash.hide();\r\n this._resizeSash.state = 0 /* Disabled */;\r\n }\r\n let data;\r\n this._disposables.add(this._resizeSash.onDidStart((e) => {\r\n if (this._viewZone) {\r\n data = {\r\n startY: e.startY,\r\n heightInLines: this._viewZone.heightInLines,\r\n };\r\n }\r\n }));\r\n this._disposables.add(this._resizeSash.onDidEnd(() => {\r\n data = undefined;\r\n }));\r\n this._disposables.add(this._resizeSash.onDidChange((evt) => {\r\n if (data) {\r\n let lineDelta = (evt.currentY - data.startY) / this.editor.getOption(57 /* lineHeight */);\r\n let roundedLineDelta = lineDelta < 0 ? Math.ceil(lineDelta) : Math.floor(lineDelta);\r\n let newHeightInLines = data.heightInLines + roundedLineDelta;\r\n if (newHeightInLines > 5 && newHeightInLines < 35) {\r\n this._relayout(newHeightInLines);\r\n }\r\n }\r\n }));\r\n }\r\n getHorizontalSashLeft() {\r\n return 0;\r\n }\r\n getHorizontalSashTop() {\r\n return (this.domNode.style.height === null ? 0 : parseInt(this.domNode.style.height)) - (this._decoratingElementsHeight() / 2);\r\n }\r\n getHorizontalSashWidth() {\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n return layoutInfo.width - layoutInfo.minimap.minimapWidth;\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./menuEntryActionViewItem.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./menuEntryActionViewItem.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./dropdown.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./dropdown.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './dropdown.css';\r\nimport { Gesture, EventType as GestureEventType } from '../../touch.js';\r\nimport { ActionRunner } from '../../../common/actions.js';\r\nimport { EventHelper, EventType, append, $, addDisposableListener } from '../../dom.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nexport class BaseDropdown extends ActionRunner {\r\n constructor(container, options) {\r\n super();\r\n this._onDidChangeVisibility = new Emitter();\r\n this.onDidChangeVisibility = this._onDidChangeVisibility.event;\r\n this._element = append(container, $('.monaco-dropdown'));\r\n this._label = append(this._element, $('.dropdown-label'));\r\n let labelRenderer = options.labelRenderer;\r\n if (!labelRenderer) {\r\n labelRenderer = (container) => {\r\n container.textContent = options.label || '';\r\n return null;\r\n };\r\n }\r\n for (const event of [EventType.CLICK, EventType.MOUSE_DOWN, GestureEventType.Tap]) {\r\n this._register(addDisposableListener(this.element, event, e => EventHelper.stop(e, true))); // prevent default click behaviour to trigger\r\n }\r\n for (const event of [EventType.MOUSE_DOWN, GestureEventType.Tap]) {\r\n this._register(addDisposableListener(this._label, event, e => {\r\n if (e instanceof MouseEvent && e.detail > 1) {\r\n return; // prevent multiple clicks to open multiple context menus (https://github.com/microsoft/vscode/issues/41363)\r\n }\r\n if (this.visible) {\r\n this.hide();\r\n }\r\n else {\r\n this.show();\r\n }\r\n }));\r\n }\r\n this._register(addDisposableListener(this._label, EventType.KEY_UP, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(3 /* Enter */) || event.equals(10 /* Space */)) {\r\n EventHelper.stop(e, true); // https://github.com/microsoft/vscode/issues/57997\r\n if (this.visible) {\r\n this.hide();\r\n }\r\n else {\r\n this.show();\r\n }\r\n }\r\n }));\r\n const cleanupFn = labelRenderer(this._label);\r\n if (cleanupFn) {\r\n this._register(cleanupFn);\r\n }\r\n this._register(Gesture.addTarget(this._label));\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n show() {\r\n if (!this.visible) {\r\n this.visible = true;\r\n this._onDidChangeVisibility.fire(true);\r\n }\r\n }\r\n hide() {\r\n if (this.visible) {\r\n this.visible = false;\r\n this._onDidChangeVisibility.fire(false);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.hide();\r\n if (this.boxContainer) {\r\n this.boxContainer.remove();\r\n this.boxContainer = undefined;\r\n }\r\n if (this.contents) {\r\n this.contents.remove();\r\n this.contents = undefined;\r\n }\r\n if (this._label) {\r\n this._label.remove();\r\n this._label = undefined;\r\n }\r\n }\r\n}\r\nexport class DropdownMenu extends BaseDropdown {\r\n constructor(container, options) {\r\n super(container, options);\r\n this._actions = [];\r\n this._contextMenuProvider = options.contextMenuProvider;\r\n this.actions = options.actions || [];\r\n this.actionProvider = options.actionProvider;\r\n this.menuClassName = options.menuClassName || '';\r\n this.menuAsChild = !!options.menuAsChild;\r\n }\r\n set menuOptions(options) {\r\n this._menuOptions = options;\r\n }\r\n get menuOptions() {\r\n return this._menuOptions;\r\n }\r\n get actions() {\r\n if (this.actionProvider) {\r\n return this.actionProvider.getActions();\r\n }\r\n return this._actions;\r\n }\r\n set actions(actions) {\r\n this._actions = actions;\r\n }\r\n show() {\r\n super.show();\r\n this.element.classList.add('active');\r\n this._contextMenuProvider.showContextMenu({\r\n getAnchor: () => this.element,\r\n getActions: () => this.actions,\r\n getActionsContext: () => this.menuOptions ? this.menuOptions.context : null,\r\n getActionViewItem: action => this.menuOptions && this.menuOptions.actionViewItemProvider ? this.menuOptions.actionViewItemProvider(action) : undefined,\r\n getKeyBinding: action => this.menuOptions && this.menuOptions.getKeyBinding ? this.menuOptions.getKeyBinding(action) : undefined,\r\n getMenuClassName: () => this.menuClassName,\r\n onHide: () => this.onHide(),\r\n actionRunner: this.menuOptions ? this.menuOptions.actionRunner : undefined,\r\n anchorAlignment: this.menuOptions ? this.menuOptions.anchorAlignment : 0 /* LEFT */,\r\n domForShadowRoot: this.menuAsChild ? this.element : undefined\r\n });\r\n }\r\n hide() {\r\n super.hide();\r\n }\r\n onHide() {\r\n this.hide();\r\n this.element.classList.remove('active');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './dropdown.css';\r\nimport { append, $ } from '../../dom.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { BaseActionViewItem } from '../actionbar/actionViewItems.js';\r\nimport { DropdownMenu } from './dropdown.js';\r\nexport class DropdownMenuActionViewItem extends BaseActionViewItem {\r\n constructor(action, menuActionsOrProvider, contextMenuProvider, options = Object.create(null)) {\r\n super(null, action, options);\r\n this.actionItem = null;\r\n this._onDidChangeVisibility = this._register(new Emitter());\r\n this.menuActionsOrProvider = menuActionsOrProvider;\r\n this.contextMenuProvider = contextMenuProvider;\r\n this.options = options;\r\n if (this.options.actionRunner) {\r\n this.actionRunner = this.options.actionRunner;\r\n }\r\n }\r\n render(container) {\r\n this.actionItem = container;\r\n const labelRenderer = (el) => {\r\n this.element = append(el, $('a.action-label'));\r\n let classNames = [];\r\n if (typeof this.options.classNames === 'string') {\r\n classNames = this.options.classNames.split(/\\s+/g).filter(s => !!s);\r\n }\r\n else if (this.options.classNames) {\r\n classNames = this.options.classNames;\r\n }\r\n // todo@aeschli: remove codicon, should come through `this.options.classNames`\r\n if (!classNames.find(c => c === 'icon')) {\r\n classNames.push('codicon');\r\n }\r\n this.element.classList.add(...classNames);\r\n this.element.setAttribute('role', 'button');\r\n this.element.setAttribute('aria-haspopup', 'true');\r\n this.element.setAttribute('aria-expanded', 'false');\r\n this.element.title = this._action.label || '';\r\n return null;\r\n };\r\n const isActionsArray = Array.isArray(this.menuActionsOrProvider);\r\n const options = {\r\n contextMenuProvider: this.contextMenuProvider,\r\n labelRenderer: labelRenderer,\r\n menuAsChild: this.options.menuAsChild,\r\n actions: isActionsArray ? this.menuActionsOrProvider : undefined,\r\n actionProvider: isActionsArray ? undefined : this.menuActionsOrProvider\r\n };\r\n this.dropdownMenu = this._register(new DropdownMenu(container, options));\r\n this._register(this.dropdownMenu.onDidChangeVisibility(visible => {\r\n var _a;\r\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', `${visible}`);\r\n this._onDidChangeVisibility.fire(visible);\r\n }));\r\n this.dropdownMenu.menuOptions = {\r\n actionViewItemProvider: this.options.actionViewItemProvider,\r\n actionRunner: this.actionRunner,\r\n getKeyBinding: this.options.keybindingProvider,\r\n context: this._context\r\n };\r\n if (this.options.anchorAlignmentProvider) {\r\n const that = this;\r\n this.dropdownMenu.menuOptions = Object.assign(Object.assign({}, this.dropdownMenu.menuOptions), { get anchorAlignment() {\r\n return that.options.anchorAlignmentProvider();\r\n } });\r\n }\r\n this.updateEnabled();\r\n }\r\n setActionContext(newContext) {\r\n super.setActionContext(newContext);\r\n if (this.dropdownMenu) {\r\n if (this.dropdownMenu.menuOptions) {\r\n this.dropdownMenu.menuOptions.context = newContext;\r\n }\r\n else {\r\n this.dropdownMenu.menuOptions = { context: newContext };\r\n }\r\n }\r\n }\r\n updateEnabled() {\r\n var _a, _b;\r\n const disabled = !this.getAction().enabled;\r\n (_a = this.actionItem) === null || _a === void 0 ? void 0 : _a.classList.toggle('disabled', disabled);\r\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.classList.toggle('disabled', disabled);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './menuEntryActionViewItem.css';\r\nimport { addDisposableListener, asCSSUrl, ModifierKeyEmitter, append, EventType, $, prepend } from '../../../base/browser/dom.js';\r\nimport { ActionRunner, Separator, SubmenuAction } from '../../../base/common/actions.js';\r\nimport { toDisposable, MutableDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { MenuItemAction, SubmenuItemAction, IMenuService } from '../common/actions.js';\r\nimport { IContextMenuService } from '../../contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { UILabelProvider } from '../../../base/common/keybindingLabels.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { ThemeIcon } from '../../theme/common/themeService.js';\r\nimport { ActionViewItem, BaseActionViewItem } from '../../../base/browser/ui/actionbar/actionViewItems.js';\r\nimport { DropdownMenuActionViewItem } from '../../../base/browser/ui/dropdown/dropdownActionViewItem.js';\r\nimport { isWindows, isLinux, OS } from '../../../base/common/platform.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\r\nimport { IStorageService } from '../../storage/common/storage.js';\r\nexport function createAndFillInActionBarActions(menu, options, target, primaryGroup, primaryMaxCount, shouldInlineSubmenu, useSeparatorsInPrimaryActions) {\r\n const groups = menu.getActions(options);\r\n const isPrimaryAction = typeof primaryGroup === 'string' ? (actionGroup) => actionGroup === primaryGroup : primaryGroup;\r\n // Action bars handle alternative actions on their own so the alternative actions should be ignored\r\n fillInActions(groups, target, false, isPrimaryAction, primaryMaxCount, shouldInlineSubmenu, useSeparatorsInPrimaryActions);\r\n return asDisposable(groups);\r\n}\r\nfunction asDisposable(groups) {\r\n const disposables = new DisposableStore();\r\n for (const [, actions] of groups) {\r\n for (const action of actions) {\r\n disposables.add(action);\r\n }\r\n }\r\n return disposables;\r\n}\r\nfunction fillInActions(groups, target, useAlternativeActions, isPrimaryAction = actionGroup => actionGroup === 'navigation', primaryMaxCount = Number.MAX_SAFE_INTEGER, shouldInlineSubmenu = () => false, useSeparatorsInPrimaryActions = false) {\r\n let primaryBucket;\r\n let secondaryBucket;\r\n if (Array.isArray(target)) {\r\n primaryBucket = target;\r\n secondaryBucket = target;\r\n }\r\n else {\r\n primaryBucket = target.primary;\r\n secondaryBucket = target.secondary;\r\n }\r\n const submenuInfo = new Set();\r\n for (const [group, actions] of groups) {\r\n let target;\r\n if (isPrimaryAction(group)) {\r\n target = primaryBucket;\r\n if (target.length > 0 && useSeparatorsInPrimaryActions) {\r\n target.push(new Separator());\r\n }\r\n }\r\n else {\r\n target = secondaryBucket;\r\n if (target.length > 0) {\r\n target.push(new Separator());\r\n }\r\n }\r\n for (let action of actions) {\r\n if (useAlternativeActions) {\r\n action = action instanceof MenuItemAction && action.alt ? action.alt : action;\r\n }\r\n const newLen = target.push(action);\r\n // keep submenu info for later inlining\r\n if (action instanceof SubmenuAction) {\r\n submenuInfo.add({ group, action, index: newLen - 1 });\r\n }\r\n }\r\n }\r\n // ask the outside if submenu should be inlined or not. only ask when\r\n // there would be enough space\r\n for (const { group, action, index } of submenuInfo) {\r\n const target = isPrimaryAction(group) ? primaryBucket : secondaryBucket;\r\n // inlining submenus with length 0 or 1 is easy,\r\n // larger submenus need to be checked with the overall limit\r\n const submenuActions = action.actions;\r\n if ((submenuActions.length <= 1 || target.length + submenuActions.length - 2 <= primaryMaxCount) && shouldInlineSubmenu(action, group, target.length)) {\r\n target.splice(index, 1, ...submenuActions);\r\n }\r\n }\r\n // overflow items from the primary group into the secondary bucket\r\n if (primaryBucket !== secondaryBucket && primaryBucket.length > primaryMaxCount) {\r\n const overflow = primaryBucket.splice(primaryMaxCount, primaryBucket.length - primaryMaxCount);\r\n secondaryBucket.unshift(...overflow, new Separator());\r\n }\r\n}\r\nlet MenuEntryActionViewItem = class MenuEntryActionViewItem extends ActionViewItem {\r\n constructor(_action, options, _keybindingService, _notificationService, _contextKeyService) {\r\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 });\r\n this._keybindingService = _keybindingService;\r\n this._notificationService = _notificationService;\r\n this._contextKeyService = _contextKeyService;\r\n this._wantsAltCommand = false;\r\n this._itemClassDispose = this._register(new MutableDisposable());\r\n this._altKey = ModifierKeyEmitter.getInstance();\r\n }\r\n get _menuItemAction() {\r\n return this._action;\r\n }\r\n get _commandAction() {\r\n return this._wantsAltCommand && this._menuItemAction.alt || this._menuItemAction;\r\n }\r\n onClick(event) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n try {\r\n yield this.actionRunner.run(this._commandAction, this._context);\r\n }\r\n catch (err) {\r\n this._notificationService.error(err);\r\n }\r\n });\r\n }\r\n render(container) {\r\n super.render(container);\r\n container.classList.add('menu-entry');\r\n this._updateItemClass(this._menuItemAction.item);\r\n let mouseOver = false;\r\n let alternativeKeyDown = this._altKey.keyStatus.altKey || ((isWindows || isLinux) && this._altKey.keyStatus.shiftKey);\r\n const updateAltState = () => {\r\n const wantsAltCommand = mouseOver && alternativeKeyDown;\r\n if (wantsAltCommand !== this._wantsAltCommand) {\r\n this._wantsAltCommand = wantsAltCommand;\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateClass();\r\n }\r\n };\r\n if (this._menuItemAction.alt) {\r\n this._register(this._altKey.event(value => {\r\n alternativeKeyDown = value.altKey || ((isWindows || isLinux) && value.shiftKey);\r\n updateAltState();\r\n }));\r\n }\r\n this._register(addDisposableListener(container, 'mouseleave', _ => {\r\n mouseOver = false;\r\n updateAltState();\r\n }));\r\n this._register(addDisposableListener(container, 'mouseenter', _ => {\r\n mouseOver = true;\r\n updateAltState();\r\n }));\r\n }\r\n updateLabel() {\r\n if (this.options.label && this.label) {\r\n this.label.textContent = this._commandAction.label;\r\n }\r\n }\r\n updateTooltip() {\r\n if (this.label) {\r\n const keybinding = this._keybindingService.lookupKeybinding(this._commandAction.id, this._contextKeyService);\r\n const keybindingLabel = keybinding && keybinding.getLabel();\r\n const tooltip = this._commandAction.tooltip || this._commandAction.label;\r\n let title = keybindingLabel\r\n ? localize('titleAndKb', \"{0} ({1})\", tooltip, keybindingLabel)\r\n : tooltip;\r\n if (!this._wantsAltCommand && this._menuItemAction.alt) {\r\n const altTooltip = this._menuItemAction.alt.tooltip || this._menuItemAction.alt.label;\r\n const altKeybinding = this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id, this._contextKeyService);\r\n const altKeybindingLabel = altKeybinding && altKeybinding.getLabel();\r\n const altTitleSection = altKeybindingLabel\r\n ? localize('titleAndKb', \"{0} ({1})\", altTooltip, altKeybindingLabel)\r\n : altTooltip;\r\n title += `\\n[${UILabelProvider.modifierLabels[OS].altKey}] ${altTitleSection}`;\r\n }\r\n this.label.title = title;\r\n }\r\n }\r\n updateClass() {\r\n if (this.options.icon) {\r\n if (this._commandAction !== this._menuItemAction) {\r\n if (this._menuItemAction.alt) {\r\n this._updateItemClass(this._menuItemAction.alt.item);\r\n }\r\n }\r\n else if (this._menuItemAction.alt) {\r\n this._updateItemClass(this._menuItemAction.item);\r\n }\r\n }\r\n }\r\n _updateItemClass(item) {\r\n var _a;\r\n this._itemClassDispose.value = undefined;\r\n const { element, label } = this;\r\n if (!element || !label) {\r\n return;\r\n }\r\n const icon = this._commandAction.checked && ((_a = item.toggled) === null || _a === void 0 ? void 0 : _a.icon) ? item.toggled.icon : item.icon;\r\n if (!icon) {\r\n return;\r\n }\r\n if (ThemeIcon.isThemeIcon(icon)) {\r\n // theme icons\r\n const iconClasses = ThemeIcon.asClassNameArray(icon);\r\n label.classList.add(...iconClasses);\r\n this._itemClassDispose.value = toDisposable(() => {\r\n label.classList.remove(...iconClasses);\r\n });\r\n }\r\n else {\r\n // icon path/url\r\n if (icon.light) {\r\n label.style.setProperty('--menu-entry-icon-light', asCSSUrl(icon.light));\r\n }\r\n if (icon.dark) {\r\n label.style.setProperty('--menu-entry-icon-dark', asCSSUrl(icon.dark));\r\n }\r\n label.classList.add('icon');\r\n this._itemClassDispose.value = toDisposable(() => {\r\n label.classList.remove('icon');\r\n label.style.removeProperty('--menu-entry-icon-light');\r\n label.style.removeProperty('--menu-entry-icon-dark');\r\n });\r\n }\r\n }\r\n};\r\nMenuEntryActionViewItem = __decorate([\r\n __param(2, IKeybindingService),\r\n __param(3, INotificationService),\r\n __param(4, IContextKeyService)\r\n], MenuEntryActionViewItem);\r\nexport { MenuEntryActionViewItem };\r\nlet SubmenuEntryActionViewItem = class SubmenuEntryActionViewItem extends DropdownMenuActionViewItem {\r\n constructor(action, contextMenuService) {\r\n super(action, { getActions: () => action.actions }, contextMenuService, {\r\n menuAsChild: true,\r\n classNames: ThemeIcon.isThemeIcon(action.item.icon) ? ThemeIcon.asClassName(action.item.icon) : undefined,\r\n });\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (this.element) {\r\n container.classList.add('menu-entry');\r\n const { icon } = this._action.item;\r\n if (icon && !ThemeIcon.isThemeIcon(icon)) {\r\n this.element.classList.add('icon');\r\n if (icon.light) {\r\n this.element.style.setProperty('--menu-entry-icon-light', asCSSUrl(icon.light));\r\n }\r\n if (icon.dark) {\r\n this.element.style.setProperty('--menu-entry-icon-dark', asCSSUrl(icon.dark));\r\n }\r\n }\r\n }\r\n }\r\n};\r\nSubmenuEntryActionViewItem = __decorate([\r\n __param(1, IContextMenuService)\r\n], SubmenuEntryActionViewItem);\r\nexport { SubmenuEntryActionViewItem };\r\nlet DropdownWithDefaultActionViewItem = class DropdownWithDefaultActionViewItem extends BaseActionViewItem {\r\n constructor(submenuAction, _keybindingService, _notificationService, _contextMenuService, _menuService, _instaService, _storageService) {\r\n super(null, submenuAction);\r\n this._keybindingService = _keybindingService;\r\n this._notificationService = _notificationService;\r\n this._contextMenuService = _contextMenuService;\r\n this._menuService = _menuService;\r\n this._instaService = _instaService;\r\n this._storageService = _storageService;\r\n this._container = null;\r\n this._storageKey = `${submenuAction.item.submenu._debugName}_lastActionId`;\r\n // determine default action\r\n let defaultAction;\r\n let defaultActionId = _storageService.get(this._storageKey, 1 /* WORKSPACE */);\r\n if (defaultActionId) {\r\n defaultAction = submenuAction.actions.find(a => defaultActionId === a.id);\r\n }\r\n if (!defaultAction) {\r\n defaultAction = submenuAction.actions[0];\r\n }\r\n this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, defaultAction, undefined);\r\n this._dropdown = new DropdownMenuActionViewItem(submenuAction, submenuAction.actions, this._contextMenuService, {\r\n menuAsChild: true,\r\n classNames: ['codicon', 'codicon-chevron-down']\r\n });\r\n this._dropdown.actionRunner.onDidRun((e) => {\r\n if (e.action instanceof MenuItemAction) {\r\n this.update(e.action);\r\n }\r\n });\r\n }\r\n update(lastAction) {\r\n this._storageService.store(this._storageKey, lastAction.id, 1 /* WORKSPACE */, 0 /* USER */);\r\n this._defaultAction.dispose();\r\n this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, lastAction, undefined);\r\n this._defaultAction.actionRunner = new class extends ActionRunner {\r\n runAction(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield action.run(undefined);\r\n });\r\n }\r\n }();\r\n if (this._container) {\r\n this._defaultAction.render(prepend(this._container, $('.action-container')));\r\n }\r\n }\r\n setActionContext(newContext) {\r\n super.setActionContext(newContext);\r\n this._defaultAction.setActionContext(newContext);\r\n this._dropdown.setActionContext(newContext);\r\n }\r\n render(container) {\r\n this._container = container;\r\n super.render(this._container);\r\n this._container.classList.add('monaco-dropdown-with-primary');\r\n const primaryContainer = $('.action-container');\r\n this._defaultAction.render(append(this._container, primaryContainer));\r\n this._register(addDisposableListener(primaryContainer, EventType.KEY_DOWN, (e) => {\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(17 /* RightArrow */)) {\r\n this._defaultAction.element.tabIndex = -1;\r\n this._dropdown.focus();\r\n event.stopPropagation();\r\n }\r\n }));\r\n const dropdownContainer = $('.dropdown-action-container');\r\n this._dropdown.render(append(this._container, dropdownContainer));\r\n this._register(addDisposableListener(dropdownContainer, EventType.KEY_DOWN, (e) => {\r\n var _a;\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(15 /* LeftArrow */)) {\r\n this._defaultAction.element.tabIndex = 0;\r\n this._dropdown.setFocusable(false);\r\n (_a = this._defaultAction.element) === null || _a === void 0 ? void 0 : _a.focus();\r\n event.stopPropagation();\r\n }\r\n }));\r\n }\r\n focus(fromRight) {\r\n if (fromRight) {\r\n this._dropdown.focus();\r\n }\r\n else {\r\n this._defaultAction.element.tabIndex = 0;\r\n this._defaultAction.element.focus();\r\n }\r\n }\r\n blur() {\r\n this._defaultAction.element.tabIndex = -1;\r\n this._dropdown.blur();\r\n this._container.blur();\r\n }\r\n setFocusable(focusable) {\r\n if (focusable) {\r\n this._defaultAction.element.tabIndex = 0;\r\n }\r\n else {\r\n this._defaultAction.element.tabIndex = -1;\r\n this._dropdown.setFocusable(false);\r\n }\r\n }\r\n dispose() {\r\n this._defaultAction.dispose();\r\n this._dropdown.dispose();\r\n super.dispose();\r\n }\r\n};\r\nDropdownWithDefaultActionViewItem = __decorate([\r\n __param(1, IKeybindingService),\r\n __param(2, INotificationService),\r\n __param(3, IContextMenuService),\r\n __param(4, IMenuService),\r\n __param(5, IInstantiationService),\r\n __param(6, IStorageService)\r\n], DropdownWithDefaultActionViewItem);\r\n/**\r\n * Creates action view items for menu actions or submenu actions.\r\n */\r\nexport function createActionViewItem(instaService, action) {\r\n if (action instanceof MenuItemAction) {\r\n return instaService.createInstance(MenuEntryActionViewItem, action, undefined);\r\n }\r\n else if (action instanceof SubmenuItemAction) {\r\n const allCodicons = !action.actions.some(a => a instanceof MenuItemAction && a.item.icon && !ThemeIcon.isThemeIcon(a.item.icon));\r\n if (action.item.rememberDefaultAction && allCodicons) {\r\n return instaService.createInstance(DropdownWithDefaultActionViewItem, action);\r\n }\r\n else {\r\n return instaService.createInstance(SubmenuEntryActionViewItem, action);\r\n }\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/peekViewWidget.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../browser/widget/embeddedCodeEditorWidget.js';\r\nimport { ZoneWidget } from '../zoneWidget/zoneWidget.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createDecorator, IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { registerColor, contrastBorder, activeContrastBorder } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { createActionViewItem } from '../../../platform/actions/browser/menuEntryActionViewItem.js';\r\nexport const IPeekViewService = createDecorator('IPeekViewService');\r\nregisterSingleton(IPeekViewService, class {\r\n constructor() {\r\n this._widgets = new Map();\r\n }\r\n addExclusiveWidget(editor, widget) {\r\n const existing = this._widgets.get(editor);\r\n if (existing) {\r\n existing.listener.dispose();\r\n existing.widget.dispose();\r\n }\r\n const remove = () => {\r\n const data = this._widgets.get(editor);\r\n if (data && data.widget === widget) {\r\n data.listener.dispose();\r\n this._widgets.delete(editor);\r\n }\r\n };\r\n this._widgets.set(editor, { widget, listener: widget.onDidClose(remove) });\r\n }\r\n});\r\nexport var PeekContext;\r\n(function (PeekContext) {\r\n PeekContext.inPeekEditor = new RawContextKey('inReferenceSearchEditor', true, nls.localize('inReferenceSearchEditor', \"Whether the current code editor is embedded inside peek\"));\r\n PeekContext.notInPeekEditor = PeekContext.inPeekEditor.toNegated();\r\n})(PeekContext || (PeekContext = {}));\r\nlet PeekContextController = class PeekContextController {\r\n constructor(editor, contextKeyService) {\r\n if (editor instanceof EmbeddedCodeEditorWidget) {\r\n PeekContext.inPeekEditor.bindTo(contextKeyService);\r\n }\r\n }\r\n dispose() { }\r\n};\r\nPeekContextController.ID = 'editor.contrib.referenceController';\r\nPeekContextController = __decorate([\r\n __param(1, IContextKeyService)\r\n], PeekContextController);\r\nregisterEditorContribution(PeekContextController.ID, PeekContextController);\r\nexport function getOuterEditor(accessor) {\r\n let editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (editor instanceof EmbeddedCodeEditorWidget) {\r\n return editor.getParentEditor();\r\n }\r\n return editor;\r\n}\r\nconst defaultOptions = {\r\n headerBackgroundColor: Color.white,\r\n primaryHeadingColor: Color.fromHex('#333333'),\r\n secondaryHeadingColor: Color.fromHex('#6c6c6cb3')\r\n};\r\nlet PeekViewWidget = class PeekViewWidget extends ZoneWidget {\r\n constructor(editor, options, instantiationService) {\r\n super(editor, options);\r\n this.instantiationService = instantiationService;\r\n this._onDidClose = new Emitter();\r\n this.onDidClose = this._onDidClose.event;\r\n objects.mixin(this.options, defaultOptions, false);\r\n }\r\n dispose() {\r\n if (!this.disposed) {\r\n this.disposed = true; // prevent consumers who dispose on onDidClose from looping\r\n super.dispose();\r\n this._onDidClose.fire(this);\r\n }\r\n }\r\n style(styles) {\r\n let options = this.options;\r\n if (styles.headerBackgroundColor) {\r\n options.headerBackgroundColor = styles.headerBackgroundColor;\r\n }\r\n if (styles.primaryHeadingColor) {\r\n options.primaryHeadingColor = styles.primaryHeadingColor;\r\n }\r\n if (styles.secondaryHeadingColor) {\r\n options.secondaryHeadingColor = styles.secondaryHeadingColor;\r\n }\r\n super.style(styles);\r\n }\r\n _applyStyles() {\r\n super._applyStyles();\r\n let options = this.options;\r\n if (this._headElement && options.headerBackgroundColor) {\r\n this._headElement.style.backgroundColor = options.headerBackgroundColor.toString();\r\n }\r\n if (this._primaryHeading && options.primaryHeadingColor) {\r\n this._primaryHeading.style.color = options.primaryHeadingColor.toString();\r\n }\r\n if (this._secondaryHeading && options.secondaryHeadingColor) {\r\n this._secondaryHeading.style.color = options.secondaryHeadingColor.toString();\r\n }\r\n if (this._bodyElement && options.frameColor) {\r\n this._bodyElement.style.borderColor = options.frameColor.toString();\r\n }\r\n }\r\n _fillContainer(container) {\r\n this.setCssClass('peekview-widget');\r\n this._headElement = dom.$('.head');\r\n this._bodyElement = dom.$('.body');\r\n this._fillHead(this._headElement);\r\n this._fillBody(this._bodyElement);\r\n container.appendChild(this._headElement);\r\n container.appendChild(this._bodyElement);\r\n }\r\n _fillHead(container, noCloseAction) {\r\n const titleElement = dom.$('.peekview-title');\r\n dom.append(this._headElement, titleElement);\r\n dom.addStandardDisposableListener(titleElement, 'click', event => this._onTitleClick(event));\r\n this._fillTitleIcon(titleElement);\r\n this._primaryHeading = dom.$('span.filename');\r\n this._secondaryHeading = dom.$('span.dirname');\r\n this._metaHeading = dom.$('span.meta');\r\n dom.append(titleElement, this._primaryHeading, this._secondaryHeading, this._metaHeading);\r\n const actionsContainer = dom.$('.peekview-actions');\r\n dom.append(this._headElement, actionsContainer);\r\n const actionBarOptions = this._getActionBarOptions();\r\n this._actionbarWidget = new ActionBar(actionsContainer, actionBarOptions);\r\n this._disposables.add(this._actionbarWidget);\r\n if (!noCloseAction) {\r\n this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', \"Close\"), Codicon.close.classNames, true, () => {\r\n this.dispose();\r\n return Promise.resolve();\r\n }), { label: false, icon: true });\r\n }\r\n }\r\n _fillTitleIcon(container) {\r\n }\r\n _getActionBarOptions() {\r\n return {\r\n actionViewItemProvider: createActionViewItem.bind(undefined, this.instantiationService),\r\n orientation: 0 /* HORIZONTAL */\r\n };\r\n }\r\n _onTitleClick(event) {\r\n // implement me\r\n }\r\n setTitle(primaryHeading, secondaryHeading) {\r\n if (this._primaryHeading && this._secondaryHeading) {\r\n this._primaryHeading.innerText = primaryHeading;\r\n this._primaryHeading.setAttribute('title', primaryHeading);\r\n if (secondaryHeading) {\r\n this._secondaryHeading.innerText = secondaryHeading;\r\n }\r\n else {\r\n dom.clearNode(this._secondaryHeading);\r\n }\r\n }\r\n }\r\n setMetaTitle(value) {\r\n if (this._metaHeading) {\r\n if (value) {\r\n this._metaHeading.innerText = value;\r\n dom.show(this._metaHeading);\r\n }\r\n else {\r\n dom.hide(this._metaHeading);\r\n }\r\n }\r\n }\r\n _doLayout(heightInPixel, widthInPixel) {\r\n if (!this._isShowing && heightInPixel < 0) {\r\n // Looks like the view zone got folded away!\r\n this.dispose();\r\n return;\r\n }\r\n const headHeight = Math.ceil(this.editor.getOption(57 /* lineHeight */) * 1.2);\r\n const bodyHeight = Math.round(heightInPixel - (headHeight + 2 /* the border-top/bottom width*/));\r\n this._doLayoutHead(headHeight, widthInPixel);\r\n this._doLayoutBody(bodyHeight, widthInPixel);\r\n }\r\n _doLayoutHead(heightInPixel, widthInPixel) {\r\n if (this._headElement) {\r\n this._headElement.style.height = `${heightInPixel}px`;\r\n this._headElement.style.lineHeight = this._headElement.style.height;\r\n }\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n if (this._bodyElement) {\r\n this._bodyElement.style.height = `${heightInPixel}px`;\r\n }\r\n }\r\n};\r\nPeekViewWidget = __decorate([\r\n __param(2, IInstantiationService)\r\n], PeekViewWidget);\r\nexport { PeekViewWidget };\r\nexport const peekViewTitleBackground = registerColor('peekViewTitle.background', { dark: '#1E1E1E', light: '#FFFFFF', hc: '#0C141F' }, nls.localize('peekViewTitleBackground', 'Background color of the peek view title area.'));\r\nexport const peekViewTitleForeground = registerColor('peekViewTitleLabel.foreground', { dark: '#FFFFFF', light: '#333333', hc: '#FFFFFF' }, nls.localize('peekViewTitleForeground', 'Color of the peek view title.'));\r\nexport const peekViewTitleInfoForeground = registerColor('peekViewTitleDescription.foreground', { dark: '#ccccccb3', light: '#616161e6', hc: '#FFFFFF99' }, nls.localize('peekViewTitleInfoForeground', 'Color of the peek view title info.'));\r\nexport const peekViewBorder = registerColor('peekView.border', { dark: '#007acc', light: '#007acc', hc: contrastBorder }, nls.localize('peekViewBorder', 'Color of the peek view borders and arrow.'));\r\nexport const peekViewResultsBackground = registerColor('peekViewResult.background', { dark: '#252526', light: '#F3F3F3', hc: Color.black }, nls.localize('peekViewResultsBackground', 'Background color of the peek view result list.'));\r\nexport const peekViewResultsMatchForeground = registerColor('peekViewResult.lineForeground', { dark: '#bbbbbb', light: '#646465', hc: Color.white }, nls.localize('peekViewResultsMatchForeground', 'Foreground color for line nodes in the peek view result list.'));\r\nexport const peekViewResultsFileForeground = registerColor('peekViewResult.fileForeground', { dark: Color.white, light: '#1E1E1E', hc: Color.white }, nls.localize('peekViewResultsFileForeground', 'Foreground color for file nodes in the peek view result list.'));\r\nexport const peekViewResultsSelectionBackground = registerColor('peekViewResult.selectionBackground', { dark: '#3399ff33', light: '#3399ff33', hc: null }, nls.localize('peekViewResultsSelectionBackground', 'Background color of the selected entry in the peek view result list.'));\r\nexport const peekViewResultsSelectionForeground = registerColor('peekViewResult.selectionForeground', { dark: Color.white, light: '#6C6C6C', hc: Color.white }, nls.localize('peekViewResultsSelectionForeground', 'Foreground color of the selected entry in the peek view result list.'));\r\nexport const peekViewEditorBackground = registerColor('peekViewEditor.background', { dark: '#001F33', light: '#F2F8FC', hc: Color.black }, nls.localize('peekViewEditorBackground', 'Background color of the peek view editor.'));\r\nexport const peekViewEditorGutterBackground = registerColor('peekViewEditorGutter.background', { dark: peekViewEditorBackground, light: peekViewEditorBackground, hc: peekViewEditorBackground }, nls.localize('peekViewEditorGutterBackground', 'Background color of the gutter in the peek view editor.'));\r\nexport const peekViewResultsMatchHighlight = registerColor('peekViewResult.matchHighlightBackground', { dark: '#ea5c004d', light: '#ea5c004d', hc: null }, nls.localize('peekViewResultsMatchHighlight', 'Match highlight color in the peek view result list.'));\r\nexport const peekViewEditorMatchHighlight = registerColor('peekViewEditor.matchHighlightBackground', { dark: '#ff8f0099', light: '#f5d802de', hc: null }, nls.localize('peekViewEditorMatchHighlight', 'Match highlight color in the peek view editor.'));\r\nexport const peekViewEditorMatchHighlightBorder = registerColor('peekViewEditor.matchHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('peekViewEditorMatchHighlightBorder', 'Match highlight border in the peek view editor.'));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { registerThemingParticipant } from '../../theme/common/themeService.js';\r\nimport { problemsErrorIconForeground, problemsInfoIconForeground, problemsWarningIconForeground } from '../../theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport var SeverityIcon;\r\n(function (SeverityIcon) {\r\n function className(severity) {\r\n switch (severity) {\r\n case Severity.Ignore:\r\n return 'severity-ignore ' + Codicon.info.classNames;\r\n case Severity.Info:\r\n return Codicon.info.classNames;\r\n case Severity.Warning:\r\n return Codicon.warning.classNames;\r\n case Severity.Error:\r\n return Codicon.error.classNames;\r\n default:\r\n return '';\r\n }\r\n }\r\n SeverityIcon.className = className;\r\n})(SeverityIcon || (SeverityIcon = {}));\r\nregisterThemingParticipant((theme, collector) => {\r\n const errorIconForeground = theme.getColor(problemsErrorIconForeground);\r\n if (errorIconForeground) {\r\n const errorCodiconSelector = Codicon.error.cssSelector;\r\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`);\r\n }\r\n const warningIconForeground = theme.getColor(problemsWarningIconForeground);\r\n if (warningIconForeground) {\r\n const warningCodiconSelector = Codicon.warning.cssSelector;\r\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`);\r\n }\r\n const infoIconForeground = theme.getColor(problemsInfoIconForeground);\r\n if (infoIconForeground) {\r\n const infoCodiconSelector = Codicon.info.cssSelector;\r\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`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/gotoErrorWidget.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerColor, oneOf, textLinkForeground, editorErrorForeground, editorErrorBorder, editorWarningForeground, editorWarningBorder, editorInfoForeground, editorInfoBorder, textLinkActiveForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { ScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { getBaseLabel } from '../../../base/common/labels.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { PeekViewWidget, peekViewTitleForeground, peekViewTitleInfoForeground } from '../peekView/peekView.js';\r\nimport { basename } from '../../../base/common/resources.js';\r\nimport { SeverityIcon } from '../../../platform/severityIcon/common/severityIcon.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { MenuId, IMenuService } from '../../../platform/actions/common/actions.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createAndFillInActionBarActions } from '../../../platform/actions/browser/menuEntryActionViewItem.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { splitLines } from '../../../base/common/strings.js';\r\nimport { ILabelService } from '../../../platform/label/common/label.js';\r\nclass MessageWidget {\r\n constructor(parent, editor, onRelatedInformation, _openerService, _labelService) {\r\n this._openerService = _openerService;\r\n this._labelService = _labelService;\r\n this._lines = 0;\r\n this._longestLineLength = 0;\r\n this._relatedDiagnostics = new WeakMap();\r\n this._disposables = new DisposableStore();\r\n this._editor = editor;\r\n const domNode = document.createElement('div');\r\n domNode.className = 'descriptioncontainer';\r\n this._messageBlock = document.createElement('div');\r\n this._messageBlock.classList.add('message');\r\n this._messageBlock.setAttribute('aria-live', 'assertive');\r\n this._messageBlock.setAttribute('role', 'alert');\r\n domNode.appendChild(this._messageBlock);\r\n this._relatedBlock = document.createElement('div');\r\n domNode.appendChild(this._relatedBlock);\r\n this._disposables.add(dom.addStandardDisposableListener(this._relatedBlock, 'click', event => {\r\n event.preventDefault();\r\n const related = this._relatedDiagnostics.get(event.target);\r\n if (related) {\r\n onRelatedInformation(related);\r\n }\r\n }));\r\n this._scrollable = new ScrollableElement(domNode, {\r\n horizontal: 1 /* Auto */,\r\n vertical: 1 /* Auto */,\r\n useShadows: false,\r\n horizontalScrollbarSize: 3,\r\n verticalScrollbarSize: 3\r\n });\r\n parent.appendChild(this._scrollable.getDomNode());\r\n this._disposables.add(this._scrollable.onScroll(e => {\r\n domNode.style.left = `-${e.scrollLeft}px`;\r\n domNode.style.top = `-${e.scrollTop}px`;\r\n }));\r\n this._disposables.add(this._scrollable);\r\n }\r\n dispose() {\r\n dispose(this._disposables);\r\n }\r\n update(marker) {\r\n const { source, message, relatedInformation, code } = marker;\r\n let sourceAndCodeLength = ((source === null || source === void 0 ? void 0 : source.length) || 0) + '()'.length;\r\n if (code) {\r\n if (typeof code === 'string') {\r\n sourceAndCodeLength += code.length;\r\n }\r\n else {\r\n sourceAndCodeLength += code.value.length;\r\n }\r\n }\r\n const lines = splitLines(message);\r\n this._lines = lines.length;\r\n this._longestLineLength = 0;\r\n for (const line of lines) {\r\n this._longestLineLength = Math.max(line.length + sourceAndCodeLength, this._longestLineLength);\r\n }\r\n dom.clearNode(this._messageBlock);\r\n this._messageBlock.setAttribute('aria-label', this.getAriaLabel(marker));\r\n this._editor.applyFontInfo(this._messageBlock);\r\n let lastLineElement = this._messageBlock;\r\n for (const line of lines) {\r\n lastLineElement = document.createElement('div');\r\n lastLineElement.innerText = line;\r\n if (line === '') {\r\n lastLineElement.style.height = this._messageBlock.style.lineHeight;\r\n }\r\n this._messageBlock.appendChild(lastLineElement);\r\n }\r\n if (source || code) {\r\n const detailsElement = document.createElement('span');\r\n detailsElement.classList.add('details');\r\n lastLineElement.appendChild(detailsElement);\r\n if (source) {\r\n const sourceElement = document.createElement('span');\r\n sourceElement.innerText = source;\r\n sourceElement.classList.add('source');\r\n detailsElement.appendChild(sourceElement);\r\n }\r\n if (code) {\r\n if (typeof code === 'string') {\r\n const codeElement = document.createElement('span');\r\n codeElement.innerText = `(${code})`;\r\n codeElement.classList.add('code');\r\n detailsElement.appendChild(codeElement);\r\n }\r\n else {\r\n this._codeLink = dom.$('a.code-link');\r\n this._codeLink.setAttribute('href', `${code.target.toString()}`);\r\n this._codeLink.onclick = (e) => {\r\n this._openerService.open(code.target, { allowCommands: true });\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n const codeElement = dom.append(this._codeLink, dom.$('span'));\r\n codeElement.innerText = code.value;\r\n detailsElement.appendChild(this._codeLink);\r\n }\r\n }\r\n }\r\n dom.clearNode(this._relatedBlock);\r\n this._editor.applyFontInfo(this._relatedBlock);\r\n if (isNonEmptyArray(relatedInformation)) {\r\n const relatedInformationNode = this._relatedBlock.appendChild(document.createElement('div'));\r\n relatedInformationNode.style.paddingTop = `${Math.floor(this._editor.getOption(57 /* lineHeight */) * 0.66)}px`;\r\n this._lines += 1;\r\n for (const related of relatedInformation) {\r\n let container = document.createElement('div');\r\n let relatedResource = document.createElement('a');\r\n relatedResource.classList.add('filename');\r\n relatedResource.innerText = `${getBaseLabel(related.resource)}(${related.startLineNumber}, ${related.startColumn}): `;\r\n relatedResource.title = this._labelService.getUriLabel(related.resource);\r\n this._relatedDiagnostics.set(relatedResource, related);\r\n let relatedMessage = document.createElement('span');\r\n relatedMessage.innerText = related.message;\r\n container.appendChild(relatedResource);\r\n container.appendChild(relatedMessage);\r\n this._lines += 1;\r\n relatedInformationNode.appendChild(container);\r\n }\r\n }\r\n const fontInfo = this._editor.getOption(41 /* fontInfo */);\r\n const scrollWidth = Math.ceil(fontInfo.typicalFullwidthCharacterWidth * this._longestLineLength * 0.75);\r\n const scrollHeight = fontInfo.lineHeight * this._lines;\r\n this._scrollable.setScrollDimensions({ scrollWidth, scrollHeight });\r\n }\r\n layout(height, width) {\r\n this._scrollable.getDomNode().style.height = `${height}px`;\r\n this._scrollable.getDomNode().style.width = `${width}px`;\r\n this._scrollable.setScrollDimensions({ width, height });\r\n }\r\n getHeightInLines() {\r\n return Math.min(17, this._lines);\r\n }\r\n getAriaLabel(marker) {\r\n let severityLabel = '';\r\n switch (marker.severity) {\r\n case MarkerSeverity.Error:\r\n severityLabel = nls.localize('Error', \"Error\");\r\n break;\r\n case MarkerSeverity.Warning:\r\n severityLabel = nls.localize('Warning', \"Warning\");\r\n break;\r\n case MarkerSeverity.Info:\r\n severityLabel = nls.localize('Info', \"Info\");\r\n break;\r\n case MarkerSeverity.Hint:\r\n severityLabel = nls.localize('Hint', \"Hint\");\r\n break;\r\n }\r\n let ariaLabel = nls.localize('marker aria', \"{0} at {1}. \", severityLabel, marker.startLineNumber + ':' + marker.startColumn);\r\n const model = this._editor.getModel();\r\n if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {\r\n const lineContent = model.getLineContent(marker.startLineNumber);\r\n ariaLabel = `${lineContent}, ${ariaLabel}`;\r\n }\r\n return ariaLabel;\r\n }\r\n}\r\nlet MarkerNavigationWidget = class MarkerNavigationWidget extends PeekViewWidget {\r\n constructor(editor, _themeService, _openerService, _menuService, instantiationService, _contextKeyService, _labelService) {\r\n super(editor, { showArrow: true, showFrame: true, isAccessible: true }, instantiationService);\r\n this._themeService = _themeService;\r\n this._openerService = _openerService;\r\n this._menuService = _menuService;\r\n this._contextKeyService = _contextKeyService;\r\n this._labelService = _labelService;\r\n this._callOnDispose = new DisposableStore();\r\n this._onDidSelectRelatedInformation = new Emitter();\r\n this.onDidSelectRelatedInformation = this._onDidSelectRelatedInformation.event;\r\n this._severity = MarkerSeverity.Warning;\r\n this._backgroundColor = Color.white;\r\n this._applyTheme(_themeService.getColorTheme());\r\n this._callOnDispose.add(_themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this.create();\r\n }\r\n _applyTheme(theme) {\r\n this._backgroundColor = theme.getColor(editorMarkerNavigationBackground);\r\n let colorId = editorMarkerNavigationError;\r\n if (this._severity === MarkerSeverity.Warning) {\r\n colorId = editorMarkerNavigationWarning;\r\n }\r\n else if (this._severity === MarkerSeverity.Info) {\r\n colorId = editorMarkerNavigationInfo;\r\n }\r\n const frameColor = theme.getColor(colorId);\r\n this.style({\r\n arrowColor: frameColor,\r\n frameColor: frameColor,\r\n headerBackgroundColor: this._backgroundColor,\r\n primaryHeadingColor: theme.getColor(peekViewTitleForeground),\r\n secondaryHeadingColor: theme.getColor(peekViewTitleInfoForeground)\r\n }); // style() will trigger _applyStyles\r\n }\r\n _applyStyles() {\r\n if (this._parentContainer) {\r\n this._parentContainer.style.backgroundColor = this._backgroundColor ? this._backgroundColor.toString() : '';\r\n }\r\n super._applyStyles();\r\n }\r\n dispose() {\r\n this._callOnDispose.dispose();\r\n super.dispose();\r\n }\r\n _fillHead(container) {\r\n super._fillHead(container);\r\n this._disposables.add(this._actionbarWidget.actionRunner.onBeforeRun(e => this.editor.focus()));\r\n const actions = [];\r\n const menu = this._menuService.createMenu(MarkerNavigationWidget.TitleMenu, this._contextKeyService);\r\n createAndFillInActionBarActions(menu, undefined, actions);\r\n this._actionbarWidget.push(actions, { label: false, icon: true, index: 0 });\r\n menu.dispose();\r\n }\r\n _fillTitleIcon(container) {\r\n this._icon = dom.append(container, dom.$(''));\r\n }\r\n _fillBody(container) {\r\n this._parentContainer = container;\r\n container.classList.add('marker-widget');\r\n this._parentContainer.tabIndex = 0;\r\n this._parentContainer.setAttribute('role', 'tooltip');\r\n this._container = document.createElement('div');\r\n container.appendChild(this._container);\r\n this._message = new MessageWidget(this._container, this.editor, related => this._onDidSelectRelatedInformation.fire(related), this._openerService, this._labelService);\r\n this._disposables.add(this._message);\r\n }\r\n show() {\r\n throw new Error('call showAtMarker');\r\n }\r\n showAtMarker(marker, markerIdx, markerCount) {\r\n // update:\r\n // * title\r\n // * message\r\n this._container.classList.remove('stale');\r\n this._message.update(marker);\r\n // update frame color (only applied on 'show')\r\n this._severity = marker.severity;\r\n this._applyTheme(this._themeService.getColorTheme());\r\n // show\r\n let range = Range.lift(marker);\r\n const editorPosition = this.editor.getPosition();\r\n let position = editorPosition && range.containsPosition(editorPosition) ? editorPosition : range.getStartPosition();\r\n super.show(position, this.computeRequiredHeight());\r\n const model = this.editor.getModel();\r\n if (model) {\r\n const detail = markerCount > 1\r\n ? nls.localize('problems', \"{0} of {1} problems\", markerIdx, markerCount)\r\n : nls.localize('change', \"{0} of {1} problem\", markerIdx, markerCount);\r\n this.setTitle(basename(model.uri), detail);\r\n }\r\n this._icon.className = `codicon ${SeverityIcon.className(MarkerSeverity.toSeverity(this._severity))}`;\r\n this.editor.revealPositionNearTop(position, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n updateMarker(marker) {\r\n this._container.classList.remove('stale');\r\n this._message.update(marker);\r\n }\r\n showStale() {\r\n this._container.classList.add('stale');\r\n this._relayout();\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n super._doLayoutBody(heightInPixel, widthInPixel);\r\n this._heightInPixel = heightInPixel;\r\n this._message.layout(heightInPixel, widthInPixel);\r\n this._container.style.height = `${heightInPixel}px`;\r\n }\r\n _onWidth(widthInPixel) {\r\n this._message.layout(this._heightInPixel, widthInPixel);\r\n }\r\n _relayout() {\r\n super._relayout(this.computeRequiredHeight());\r\n }\r\n computeRequiredHeight() {\r\n return 3 + this._message.getHeightInLines();\r\n }\r\n};\r\nMarkerNavigationWidget.TitleMenu = new MenuId('gotoErrorTitleMenu');\r\nMarkerNavigationWidget = __decorate([\r\n __param(1, IThemeService),\r\n __param(2, IOpenerService),\r\n __param(3, IMenuService),\r\n __param(4, IInstantiationService),\r\n __param(5, IContextKeyService),\r\n __param(6, ILabelService)\r\n], MarkerNavigationWidget);\r\nexport { MarkerNavigationWidget };\r\n// theming\r\nlet errorDefault = oneOf(editorErrorForeground, editorErrorBorder);\r\nlet warningDefault = oneOf(editorWarningForeground, editorWarningBorder);\r\nlet infoDefault = oneOf(editorInfoForeground, editorInfoBorder);\r\nexport const editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hc: errorDefault }, nls.localize('editorMarkerNavigationError', 'Editor marker navigation widget error color.'));\r\nexport const editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hc: warningDefault }, nls.localize('editorMarkerNavigationWarning', 'Editor marker navigation widget warning color.'));\r\nexport const editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hc: infoDefault }, nls.localize('editorMarkerNavigationInfo', 'Editor marker navigation widget info color.'));\r\nexport const editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', { dark: '#2D2D30', light: Color.white, hc: '#0C141F' }, nls.localize('editorMarkerNavigationBackground', 'Editor marker navigation widget background.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const linkFg = theme.getColor(textLinkForeground);\r\n if (linkFg) {\r\n collector.addRule(`.monaco-editor .marker-widget a.code-link span { color: ${linkFg}; }`);\r\n }\r\n const activeLinkFg = theme.getColor(textLinkActiveForeground);\r\n if (activeLinkFg) {\r\n collector.addRule(`.monaco-editor .marker-widget a.code-link span:hover { color: ${activeLinkFg}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IMarkerService, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { compare } from '../../../base/common/strings.js';\r\nimport { binarySearch } from '../../../base/common/arrays.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nexport class MarkerCoordinate {\r\n constructor(marker, index, total) {\r\n this.marker = marker;\r\n this.index = index;\r\n this.total = total;\r\n }\r\n}\r\nlet MarkerList = class MarkerList {\r\n constructor(resourceFilter, _markerService) {\r\n this._markerService = _markerService;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._dispoables = new DisposableStore();\r\n this._markers = [];\r\n this._nextIdx = -1;\r\n if (URI.isUri(resourceFilter)) {\r\n this._resourceFilter = uri => uri.toString() === resourceFilter.toString();\r\n }\r\n else if (resourceFilter) {\r\n this._resourceFilter = resourceFilter;\r\n }\r\n const updateMarker = () => {\r\n this._markers = this._markerService.read({\r\n resource: URI.isUri(resourceFilter) ? resourceFilter : undefined,\r\n severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info\r\n });\r\n if (typeof resourceFilter === 'function') {\r\n this._markers = this._markers.filter(m => this._resourceFilter(m.resource));\r\n }\r\n this._markers.sort(MarkerList._compareMarker);\r\n };\r\n updateMarker();\r\n this._dispoables.add(_markerService.onMarkerChanged(uris => {\r\n if (!this._resourceFilter || uris.some(uri => this._resourceFilter(uri))) {\r\n updateMarker();\r\n this._nextIdx = -1;\r\n this._onDidChange.fire();\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._dispoables.dispose();\r\n this._onDidChange.dispose();\r\n }\r\n matches(uri) {\r\n if (!this._resourceFilter && !uri) {\r\n return true;\r\n }\r\n if (!this._resourceFilter || !uri) {\r\n return false;\r\n }\r\n return this._resourceFilter(uri);\r\n }\r\n get selected() {\r\n const marker = this._markers[this._nextIdx];\r\n return marker && new MarkerCoordinate(marker, this._nextIdx + 1, this._markers.length);\r\n }\r\n _initIdx(model, position, fwd) {\r\n let found = false;\r\n let idx = this._markers.findIndex(marker => marker.resource.toString() === model.uri.toString());\r\n if (idx < 0) {\r\n idx = binarySearch(this._markers, { resource: model.uri }, (a, b) => compare(a.resource.toString(), b.resource.toString()));\r\n if (idx < 0) {\r\n idx = ~idx;\r\n }\r\n }\r\n for (let i = idx; i < this._markers.length; i++) {\r\n let range = Range.lift(this._markers[i]);\r\n if (range.isEmpty()) {\r\n const word = model.getWordAtPosition(range.getStartPosition());\r\n if (word) {\r\n range = new Range(range.startLineNumber, word.startColumn, range.startLineNumber, word.endColumn);\r\n }\r\n }\r\n if (position && (range.containsPosition(position) || position.isBeforeOrEqual(range.getStartPosition()))) {\r\n this._nextIdx = i;\r\n found = true;\r\n break;\r\n }\r\n if (this._markers[i].resource.toString() !== model.uri.toString()) {\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n // after the last change\r\n this._nextIdx = fwd ? 0 : this._markers.length - 1;\r\n }\r\n if (this._nextIdx < 0) {\r\n this._nextIdx = this._markers.length - 1;\r\n }\r\n }\r\n resetIndex() {\r\n this._nextIdx = -1;\r\n }\r\n move(fwd, model, position) {\r\n if (this._markers.length === 0) {\r\n return false;\r\n }\r\n let oldIdx = this._nextIdx;\r\n if (this._nextIdx === -1) {\r\n this._initIdx(model, position, fwd);\r\n }\r\n else if (fwd) {\r\n this._nextIdx = (this._nextIdx + 1) % this._markers.length;\r\n }\r\n else if (!fwd) {\r\n this._nextIdx = (this._nextIdx - 1 + this._markers.length) % this._markers.length;\r\n }\r\n if (oldIdx !== this._nextIdx) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n find(uri, position) {\r\n let idx = this._markers.findIndex(marker => marker.resource.toString() === uri.toString());\r\n if (idx < 0) {\r\n return undefined;\r\n }\r\n for (; idx < this._markers.length; idx++) {\r\n if (Range.containsPosition(this._markers[idx], position)) {\r\n return new MarkerCoordinate(this._markers[idx], idx + 1, this._markers.length);\r\n }\r\n }\r\n return undefined;\r\n }\r\n static _compareMarker(a, b) {\r\n let res = compare(a.resource.toString(), b.resource.toString());\r\n if (res === 0) {\r\n res = MarkerSeverity.compare(a.severity, b.severity);\r\n }\r\n if (res === 0) {\r\n res = Range.compareRangesUsingStarts(a, b);\r\n }\r\n return res;\r\n }\r\n};\r\nMarkerList = __decorate([\r\n __param(1, IMarkerService)\r\n], MarkerList);\r\nexport { MarkerList };\r\nexport const IMarkerNavigationService = createDecorator('IMarkerNavigationService');\r\nlet MarkerNavigationService = class MarkerNavigationService {\r\n constructor(_markerService) {\r\n this._markerService = _markerService;\r\n this._provider = new LinkedList();\r\n }\r\n getMarkerList(resource) {\r\n for (let provider of this._provider) {\r\n const result = provider.getMarkerList(resource);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n // default\r\n return new MarkerList(resource, this._markerService);\r\n }\r\n};\r\nMarkerNavigationService = __decorate([\r\n __param(0, IMarkerService)\r\n], MarkerNavigationService);\r\nregisterSingleton(IMarkerNavigationService, MarkerNavigationService, true);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MarkerNavigationWidget } from './gotoErrorWidget.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IMarkerNavigationService } from './markerNavigationService.js';\r\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\r\nlet MarkerController = class MarkerController {\r\n constructor(editor, _markerNavigationService, _contextKeyService, _editorService, _instantiationService) {\r\n this._markerNavigationService = _markerNavigationService;\r\n this._contextKeyService = _contextKeyService;\r\n this._editorService = _editorService;\r\n this._instantiationService = _instantiationService;\r\n this._sessionDispoables = new DisposableStore();\r\n this._editor = editor;\r\n this._widgetVisible = CONTEXT_MARKERS_NAVIGATION_VISIBLE.bindTo(this._contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(MarkerController.ID);\r\n }\r\n dispose() {\r\n this._cleanUp();\r\n this._sessionDispoables.dispose();\r\n }\r\n _cleanUp() {\r\n this._widgetVisible.reset();\r\n this._sessionDispoables.clear();\r\n this._widget = undefined;\r\n this._model = undefined;\r\n }\r\n _getOrCreateModel(uri) {\r\n if (this._model && this._model.matches(uri)) {\r\n return this._model;\r\n }\r\n let reusePosition = false;\r\n if (this._model) {\r\n reusePosition = true;\r\n this._cleanUp();\r\n }\r\n this._model = this._markerNavigationService.getMarkerList(uri);\r\n if (reusePosition) {\r\n this._model.move(true, this._editor.getModel(), this._editor.getPosition());\r\n }\r\n this._widget = this._instantiationService.createInstance(MarkerNavigationWidget, this._editor);\r\n this._widget.onDidClose(() => this.close(), this, this._sessionDispoables);\r\n this._widgetVisible.set(true);\r\n this._sessionDispoables.add(this._model);\r\n this._sessionDispoables.add(this._widget);\r\n // follow cursor\r\n this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(e => {\r\n var _a, _b, _c;\r\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)) {\r\n (_c = this._model) === null || _c === void 0 ? void 0 : _c.resetIndex();\r\n }\r\n }));\r\n // update markers\r\n this._sessionDispoables.add(this._model.onDidChange(() => {\r\n if (!this._widget || !this._widget.position || !this._model) {\r\n return;\r\n }\r\n const info = this._model.find(this._editor.getModel().uri, this._widget.position);\r\n if (info) {\r\n this._widget.updateMarker(info.marker);\r\n }\r\n else {\r\n this._widget.showStale();\r\n }\r\n }));\r\n // open related\r\n this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(related => {\r\n this._editorService.openCodeEditor({\r\n resource: related.resource,\r\n options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() }\r\n }, this._editor);\r\n this.close(false);\r\n }));\r\n this._sessionDispoables.add(this._editor.onDidChangeModel(() => this._cleanUp()));\r\n return this._model;\r\n }\r\n close(focusEditor = true) {\r\n this._cleanUp();\r\n if (focusEditor) {\r\n this._editor.focus();\r\n }\r\n }\r\n showAtMarker(marker) {\r\n if (this._editor.hasModel()) {\r\n const model = this._getOrCreateModel(this._editor.getModel().uri);\r\n model.resetIndex();\r\n model.move(true, this._editor.getModel(), new Position(marker.startLineNumber, marker.startColumn));\r\n if (model.selected) {\r\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\r\n }\r\n }\r\n }\r\n nagivate(next, multiFile) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._editor.hasModel()) {\r\n const model = this._getOrCreateModel(multiFile ? undefined : this._editor.getModel().uri);\r\n model.move(next, this._editor.getModel(), this._editor.getPosition());\r\n if (!model.selected) {\r\n return;\r\n }\r\n if (model.selected.marker.resource.toString() !== this._editor.getModel().uri.toString()) {\r\n // show in different editor\r\n this._cleanUp();\r\n const otherEditor = yield this._editorService.openCodeEditor({\r\n resource: model.selected.marker.resource,\r\n options: { pinned: false, revealIfOpened: true, selectionRevealType: 2 /* NearTop */, selection: model.selected.marker }\r\n }, this._editor);\r\n if (otherEditor) {\r\n MarkerController.get(otherEditor).close();\r\n MarkerController.get(otherEditor).nagivate(next, multiFile);\r\n }\r\n }\r\n else {\r\n // show in this editor\r\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\r\n }\r\n }\r\n });\r\n }\r\n};\r\nMarkerController.ID = 'editor.contrib.markerController';\r\nMarkerController = __decorate([\r\n __param(1, IMarkerNavigationService),\r\n __param(2, IContextKeyService),\r\n __param(3, ICodeEditorService),\r\n __param(4, IInstantiationService)\r\n], MarkerController);\r\nexport { MarkerController };\r\nclass MarkerNavigationAction extends EditorAction {\r\n constructor(_next, _multiFile, opts) {\r\n super(opts);\r\n this._next = _next;\r\n this._multiFile = _multiFile;\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (editor.hasModel()) {\r\n MarkerController.get(editor).nagivate(this._next, this._multiFile);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextMarkerAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(true, false, {\r\n id: NextMarkerAction.ID,\r\n label: NextMarkerAction.LABEL,\r\n alias: 'Go to Next Problem (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 512 /* Alt */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MarkerNavigationWidget.TitleMenu,\r\n title: NextMarkerAction.LABEL,\r\n icon: registerIcon('marker-navigation-next', Codicon.chevronDown, nls.localize('nextMarkerIcon', 'Icon for goto next marker.')),\r\n group: 'navigation',\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nNextMarkerAction.ID = 'editor.action.marker.next';\r\nNextMarkerAction.LABEL = nls.localize('markerAction.next.label', \"Go to Next Problem (Error, Warning, Info)\");\r\nclass PrevMarkerAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(false, false, {\r\n id: PrevMarkerAction.ID,\r\n label: PrevMarkerAction.LABEL,\r\n alias: 'Go to Previous Problem (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MarkerNavigationWidget.TitleMenu,\r\n title: NextMarkerAction.LABEL,\r\n icon: registerIcon('marker-navigation-previous', Codicon.chevronUp, nls.localize('previousMarkerIcon', 'Icon for goto previous marker.')),\r\n group: 'navigation',\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\nPrevMarkerAction.ID = 'editor.action.marker.prev';\r\nPrevMarkerAction.LABEL = nls.localize('markerAction.previous.label', \"Go to Previous Problem (Error, Warning, Info)\");\r\nclass NextMarkerInFilesAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(true, true, {\r\n id: 'editor.action.marker.nextInFiles',\r\n label: nls.localize('markerAction.nextInFiles.label', \"Go to Next Problem in Files (Error, Warning, Info)\"),\r\n alias: 'Go to Next Problem in Files (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n title: nls.localize({ key: 'miGotoNextProblem', comment: ['&& denotes a mnemonic'] }, \"Next &&Problem\"),\r\n group: '6_problem_nav',\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nclass PrevMarkerInFilesAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(false, true, {\r\n id: 'editor.action.marker.prevInFiles',\r\n label: nls.localize('markerAction.previousInFiles.label', \"Go to Previous Problem in Files (Error, Warning, Info)\"),\r\n alias: 'Go to Previous Problem in Files (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n title: nls.localize({ key: 'miGotoPreviousProblem', comment: ['&& denotes a mnemonic'] }, \"Previous &&Problem\"),\r\n group: '6_problem_nav',\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(MarkerController.ID, MarkerController);\r\nregisterEditorAction(NextMarkerAction);\r\nregisterEditorAction(PrevMarkerAction);\r\nregisterEditorAction(NextMarkerInFilesAction);\r\nregisterEditorAction(PrevMarkerInFilesAction);\r\nconst CONTEXT_MARKERS_NAVIGATION_VISIBLE = new RawContextKey('markersNavigationVisible', false);\r\nconst MarkerCommand = EditorCommand.bindToContribution(MarkerController.get);\r\nregisterEditorCommand(new MarkerCommand({\r\n id: 'closeMarkersNavigation',\r\n precondition: CONTEXT_MARKERS_NAVIGATION_VISIBLE,\r\n handler: x => x.close(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 50,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class CodeActionKind {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n equals(other) {\r\n return this.value === other.value;\r\n }\r\n contains(other) {\r\n return this.equals(other) || this.value === '' || other.value.startsWith(this.value + CodeActionKind.sep);\r\n }\r\n intersects(other) {\r\n return this.contains(other) || other.contains(this);\r\n }\r\n append(part) {\r\n return new CodeActionKind(this.value + CodeActionKind.sep + part);\r\n }\r\n}\r\nCodeActionKind.sep = '.';\r\nCodeActionKind.None = new CodeActionKind('@@none@@'); // Special code action that contains nothing\r\nCodeActionKind.Empty = new CodeActionKind('');\r\nCodeActionKind.QuickFix = new CodeActionKind('quickfix');\r\nCodeActionKind.Refactor = new CodeActionKind('refactor');\r\nCodeActionKind.Source = new CodeActionKind('source');\r\nCodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports');\r\nCodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll');\r\nexport function mayIncludeActionsOfKind(filter, providedKind) {\r\n // A provided kind may be a subset or superset of our filtered kind.\r\n if (filter.include && !filter.include.intersects(providedKind)) {\r\n return false;\r\n }\r\n if (filter.excludes) {\r\n if (filter.excludes.some(exclude => excludesAction(providedKind, exclude, filter.include))) {\r\n return false;\r\n }\r\n }\r\n // Don't return source actions unless they are explicitly requested\r\n if (!filter.includeSourceActions && CodeActionKind.Source.contains(providedKind)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nexport function filtersAction(filter, action) {\r\n const actionKind = action.kind ? new CodeActionKind(action.kind) : undefined;\r\n // Filter out actions by kind\r\n if (filter.include) {\r\n if (!actionKind || !filter.include.contains(actionKind)) {\r\n return false;\r\n }\r\n }\r\n if (filter.excludes) {\r\n if (actionKind && filter.excludes.some(exclude => excludesAction(actionKind, exclude, filter.include))) {\r\n return false;\r\n }\r\n }\r\n // Don't return source actions unless they are explicitly requested\r\n if (!filter.includeSourceActions) {\r\n if (actionKind && CodeActionKind.Source.contains(actionKind)) {\r\n return false;\r\n }\r\n }\r\n if (filter.onlyIncludePreferredActions) {\r\n if (!action.isPreferred) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction excludesAction(providedKind, exclude, include) {\r\n if (!exclude.contains(providedKind)) {\r\n return false;\r\n }\r\n if (include && exclude.contains(include)) {\r\n // The include is more specific, don't filter out\r\n return false;\r\n }\r\n return true;\r\n}\r\nexport class CodeActionCommandArgs {\r\n constructor(kind, apply, preferred) {\r\n this.kind = kind;\r\n this.apply = apply;\r\n this.preferred = preferred;\r\n }\r\n static fromUser(arg, defaults) {\r\n if (!arg || typeof arg !== 'object') {\r\n return new CodeActionCommandArgs(defaults.kind, defaults.apply, false);\r\n }\r\n return new CodeActionCommandArgs(CodeActionCommandArgs.getKindFromUser(arg, defaults.kind), CodeActionCommandArgs.getApplyFromUser(arg, defaults.apply), CodeActionCommandArgs.getPreferredUser(arg));\r\n }\r\n static getApplyFromUser(arg, defaultAutoApply) {\r\n switch (typeof arg.apply === 'string' ? arg.apply.toLowerCase() : '') {\r\n case 'first': return \"first\" /* First */;\r\n case 'never': return \"never\" /* Never */;\r\n case 'ifsingle': return \"ifSingle\" /* IfSingle */;\r\n default: return defaultAutoApply;\r\n }\r\n }\r\n static getKindFromUser(arg, defaultKind) {\r\n return typeof arg.kind === 'string'\r\n ? new CodeActionKind(arg.kind)\r\n : defaultKind;\r\n }\r\n static getPreferredUser(arg) {\r\n return typeof arg.preferred === 'boolean'\r\n ? arg.preferred\r\n : false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { equals, flatten, isNonEmptyArray, coalesce } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, isPromiseCanceledError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { TextModelCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CodeActionKind, filtersAction, mayIncludeActionsOfKind } from './types.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nexport const codeActionCommandId = 'editor.action.codeAction';\r\nexport const refactorCommandId = 'editor.action.refactor';\r\nexport const sourceActionCommandId = 'editor.action.sourceAction';\r\nexport const organizeImportsCommandId = 'editor.action.organizeImports';\r\nexport const fixAllCommandId = 'editor.action.fixAll';\r\nexport class CodeActionItem {\r\n constructor(action, provider) {\r\n this.action = action;\r\n this.provider = provider;\r\n }\r\n resolve(token) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.resolveCodeAction) && !this.action.edit) {\r\n let action;\r\n try {\r\n action = yield this.provider.resolveCodeAction(this.action, token);\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n }\r\n if (action) {\r\n this.action.edit = action.edit;\r\n }\r\n }\r\n return this;\r\n });\r\n }\r\n}\r\nclass ManagedCodeActionSet extends Disposable {\r\n constructor(actions, documentation, disposables) {\r\n super();\r\n this.documentation = documentation;\r\n this._register(disposables);\r\n this.allActions = [...actions].sort(ManagedCodeActionSet.codeActionsComparator);\r\n this.validActions = this.allActions.filter(({ action }) => !action.disabled);\r\n }\r\n static codeActionsComparator({ action: a }, { action: b }) {\r\n if (a.isPreferred && !b.isPreferred) {\r\n return -1;\r\n }\r\n else if (!a.isPreferred && b.isPreferred) {\r\n return 1;\r\n }\r\n if (isNonEmptyArray(a.diagnostics)) {\r\n if (isNonEmptyArray(b.diagnostics)) {\r\n return a.diagnostics[0].message.localeCompare(b.diagnostics[0].message);\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (isNonEmptyArray(b.diagnostics)) {\r\n return 1;\r\n }\r\n else {\r\n return 0; // both have no diagnostics\r\n }\r\n }\r\n get hasAutoFix() {\r\n return this.validActions.some(({ action: fix }) => !!fix.kind && CodeActionKind.QuickFix.contains(new CodeActionKind(fix.kind)) && !!fix.isPreferred);\r\n }\r\n}\r\nconst emptyCodeActionsResponse = { actions: [], documentation: undefined };\r\nexport function getCodeActions(model, rangeOrSelection, trigger, progress, token) {\r\n var _a;\r\n const filter = trigger.filter || {};\r\n const codeActionContext = {\r\n only: (_a = filter.include) === null || _a === void 0 ? void 0 : _a.value,\r\n trigger: trigger.type,\r\n };\r\n const cts = new TextModelCancellationTokenSource(model, token);\r\n const providers = getCodeActionProviders(model, filter);\r\n const disposables = new DisposableStore();\r\n const promises = providers.map((provider) => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n progress.report(provider);\r\n const providedCodeActions = yield provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token);\r\n if (providedCodeActions) {\r\n disposables.add(providedCodeActions);\r\n }\r\n if (cts.token.isCancellationRequested) {\r\n return emptyCodeActionsResponse;\r\n }\r\n const filteredActions = ((providedCodeActions === null || providedCodeActions === void 0 ? void 0 : providedCodeActions.actions) || []).filter(action => action && filtersAction(filter, action));\r\n const documentation = getDocumentation(provider, filteredActions, filter.include);\r\n return {\r\n actions: filteredActions.map(action => new CodeActionItem(action, provider)),\r\n documentation\r\n };\r\n }\r\n catch (err) {\r\n if (isPromiseCanceledError(err)) {\r\n throw err;\r\n }\r\n onUnexpectedExternalError(err);\r\n return emptyCodeActionsResponse;\r\n }\r\n }));\r\n const listener = modes.CodeActionProviderRegistry.onDidChange(() => {\r\n const newProviders = modes.CodeActionProviderRegistry.all(model);\r\n if (!equals(newProviders, providers)) {\r\n cts.cancel();\r\n }\r\n });\r\n return Promise.all(promises).then(actions => {\r\n const allActions = flatten(actions.map(x => x.actions));\r\n const allDocumentation = coalesce(actions.map(x => x.documentation));\r\n return new ManagedCodeActionSet(allActions, allDocumentation, disposables);\r\n })\r\n .finally(() => {\r\n listener.dispose();\r\n cts.dispose();\r\n });\r\n}\r\nfunction getCodeActionProviders(model, filter) {\r\n return modes.CodeActionProviderRegistry.all(model)\r\n // Don't include providers that we know will not return code actions of interest\r\n .filter(provider => {\r\n if (!provider.providedCodeActionKinds) {\r\n // We don't know what type of actions this provider will return.\r\n return true;\r\n }\r\n return provider.providedCodeActionKinds.some(kind => mayIncludeActionsOfKind(filter, new CodeActionKind(kind)));\r\n });\r\n}\r\nfunction getDocumentation(provider, providedCodeActions, only) {\r\n if (!provider.documentation) {\r\n return undefined;\r\n }\r\n const documentation = provider.documentation.map(entry => ({ kind: new CodeActionKind(entry.kind), command: entry.command }));\r\n if (only) {\r\n let currentBest;\r\n for (const entry of documentation) {\r\n if (entry.kind.contains(only)) {\r\n if (!currentBest) {\r\n currentBest = entry;\r\n }\r\n else {\r\n // Take best match\r\n if (currentBest.kind.contains(entry.kind)) {\r\n currentBest = entry;\r\n }\r\n }\r\n }\r\n }\r\n if (currentBest) {\r\n return currentBest === null || currentBest === void 0 ? void 0 : currentBest.command;\r\n }\r\n }\r\n // Otherwise, check to see if any of the provided actions match.\r\n for (const action of providedCodeActions) {\r\n if (!action.kind) {\r\n continue;\r\n }\r\n for (const entry of documentation) {\r\n if (entry.kind.contains(new CodeActionKind(action.kind))) {\r\n return entry.command;\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\nCommandsRegistry.registerCommand('_executeCodeActionProvider', function (accessor, resource, rangeOrSelection, kind, itemResolveCount) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument();\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const validatedRangeOrSelection = Selection.isISelection(rangeOrSelection)\r\n ? Selection.liftSelection(rangeOrSelection)\r\n : Range.isIRange(rangeOrSelection)\r\n ? model.validateRange(rangeOrSelection)\r\n : undefined;\r\n if (!validatedRangeOrSelection) {\r\n throw illegalArgument();\r\n }\r\n const include = typeof kind === 'string' ? new CodeActionKind(kind) : undefined;\r\n const codeActionSet = yield getCodeActions(model, validatedRangeOrSelection, { type: 1 /* Invoke */, filter: { includeSourceActions: true, include } }, Progress.None, CancellationToken.None);\r\n const resolving = [];\r\n const resolveCount = Math.min(codeActionSet.validActions.length, typeof itemResolveCount === 'number' ? itemResolveCount : 0);\r\n for (let i = 0; i < resolveCount; i++) {\r\n resolving.push(codeActionSet.validActions[i].resolve(CancellationToken.None));\r\n }\r\n try {\r\n yield Promise.all(resolving);\r\n return codeActionSet.validActions.map(item => item.action);\r\n }\r\n finally {\r\n setTimeout(() => codeActionSet.dispose(), 100);\r\n }\r\n });\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Lazy {\r\n constructor(executor) {\r\n this.executor = executor;\r\n this._didRun = false;\r\n }\r\n /**\r\n * Get the wrapped value.\r\n *\r\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\r\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\r\n */\r\n getValue() {\r\n if (!this._didRun) {\r\n try {\r\n this._value = this.executor();\r\n }\r\n catch (err) {\r\n this._error = err;\r\n }\r\n finally {\r\n this._didRun = true;\r\n }\r\n }\r\n if (this._error) {\r\n throw this._error;\r\n }\r\n return this._value;\r\n }\r\n /**\r\n * Get the wrapped value without forcing evaluation.\r\n */\r\n get rawValue() { return this._value; }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./messageController.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./messageController.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './messageController.css';\r\nimport * as nls from '../../../nls.js';\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerEditorContribution, EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { inputValidationInfoBorder, inputValidationInfoBackground, inputValidationInfoForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { ColorScheme } from '../../../platform/theme/common/theme.js';\r\nlet MessageController = class MessageController {\r\n constructor(editor, contextKeyService) {\r\n this._messageWidget = new MutableDisposable();\r\n this._messageListeners = new DisposableStore();\r\n this._editor = editor;\r\n this._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService);\r\n this._editorListener = this._editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit());\r\n }\r\n static get(editor) {\r\n return editor.getContribution(MessageController.ID);\r\n }\r\n dispose() {\r\n this._editorListener.dispose();\r\n this._messageListeners.dispose();\r\n this._messageWidget.dispose();\r\n this._visible.reset();\r\n }\r\n showMessage(message, position) {\r\n alert(message);\r\n this._visible.set(true);\r\n this._messageWidget.clear();\r\n this._messageListeners.clear();\r\n this._messageWidget.value = new MessageWidget(this._editor, position, message);\r\n // close on blur, cursor, model change, dispose\r\n this._messageListeners.add(this._editor.onDidBlurEditorText(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\r\n // 3sec\r\n this._messageListeners.add(new TimeoutTimer(() => this.closeMessage(), 3000));\r\n // close on mouse move\r\n let bounds;\r\n this._messageListeners.add(this._editor.onMouseMove(e => {\r\n // outside the text area\r\n if (!e.target.position) {\r\n return;\r\n }\r\n if (!bounds) {\r\n // define bounding box around position and first mouse occurance\r\n bounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\r\n }\r\n else if (!bounds.containsPosition(e.target.position)) {\r\n // check if position is still in bounds\r\n this.closeMessage();\r\n }\r\n }));\r\n }\r\n closeMessage() {\r\n this._visible.reset();\r\n this._messageListeners.clear();\r\n if (this._messageWidget.value) {\r\n this._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\r\n }\r\n }\r\n _onDidAttemptReadOnlyEdit() {\r\n if (this._editor.hasModel()) {\r\n this.showMessage(nls.localize('editor.readonly', \"Cannot edit in read-only editor\"), this._editor.getPosition());\r\n }\r\n }\r\n};\r\nMessageController.ID = 'editor.contrib.messageController';\r\nMessageController.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false, nls.localize('messageVisible', 'Whether the editor is currently showing an inline message'));\r\nMessageController = __decorate([\r\n __param(1, IContextKeyService)\r\n], MessageController);\r\nexport { MessageController };\r\nconst MessageCommand = EditorCommand.bindToContribution(MessageController.get);\r\nregisterEditorCommand(new MessageCommand({\r\n id: 'leaveEditorMessage',\r\n precondition: MessageController.MESSAGE_VISIBLE,\r\n handler: c => c.closeMessage(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n primary: 9 /* Escape */\r\n }\r\n}));\r\nclass MessageWidget {\r\n constructor(editor, { lineNumber, column }, text) {\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this.suppressMouseDown = false;\r\n this._editor = editor;\r\n this._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, 0 /* Smooth */);\r\n this._position = { lineNumber, column: column - 1 };\r\n this._domNode = document.createElement('div');\r\n this._domNode.classList.add('monaco-editor-overlaymessage');\r\n const anchorTop = document.createElement('div');\r\n anchorTop.classList.add('anchor', 'top');\r\n this._domNode.appendChild(anchorTop);\r\n const message = document.createElement('div');\r\n message.classList.add('message');\r\n message.textContent = text;\r\n this._domNode.appendChild(message);\r\n const anchorBottom = document.createElement('div');\r\n anchorBottom.classList.add('anchor', 'below');\r\n this._domNode.appendChild(anchorBottom);\r\n this._editor.addContentWidget(this);\r\n this._domNode.classList.add('fadeIn');\r\n }\r\n static fadeOut(messageWidget) {\r\n let handle;\r\n const dispose = () => {\r\n messageWidget.dispose();\r\n clearTimeout(handle);\r\n messageWidget.getDomNode().removeEventListener('animationend', dispose);\r\n };\r\n handle = setTimeout(dispose, 110);\r\n messageWidget.getDomNode().addEventListener('animationend', dispose);\r\n messageWidget.getDomNode().classList.add('fadeOut');\r\n return { dispose };\r\n }\r\n dispose() {\r\n this._editor.removeContentWidget(this);\r\n }\r\n getId() {\r\n return 'messageoverlay';\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return { position: this._position, preference: [1 /* ABOVE */, 2 /* BELOW */] };\r\n }\r\n afterRender(position) {\r\n this._domNode.classList.toggle('below', position === 2 /* BELOW */);\r\n }\r\n}\r\nregisterEditorContribution(MessageController.ID, MessageController);\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(inputValidationInfoBorder);\r\n if (border) {\r\n let borderWidth = theme.type === ColorScheme.HIGH_CONTRAST ? 2 : 1;\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .anchor.below { border-top-color: ${border}; }`);\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .anchor.top { border-bottom-color: ${border}; }`);\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { border: ${borderWidth}px solid ${border}; }`);\r\n }\r\n const background = theme.getColor(inputValidationInfoBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(inputValidationInfoForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { color: ${foreground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { getDomNodePagePosition } from '../../../base/browser/dom.js';\r\nimport { Action, Separator } from '../../../base/common/actions.js';\r\nimport { canceled } from '../../../base/common/errors.js';\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { CodeActionProviderRegistry } from '../../common/modes.js';\r\nimport { codeActionCommandId, CodeActionItem, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\r\nimport { CodeActionCommandArgs, CodeActionKind } from './types.js';\r\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nclass CodeActionAction extends Action {\r\n constructor(action, callback) {\r\n super(action.command ? action.command.id : action.title, stripNewlines(action.title), undefined, !action.disabled, callback);\r\n this.action = action;\r\n }\r\n}\r\nfunction stripNewlines(str) {\r\n return str.replace(/\\r\\n|\\r|\\n/g, ' ');\r\n}\r\nlet CodeActionMenu = class CodeActionMenu extends Disposable {\r\n constructor(_editor, _delegate, _contextMenuService, keybindingService) {\r\n super();\r\n this._editor = _editor;\r\n this._delegate = _delegate;\r\n this._contextMenuService = _contextMenuService;\r\n this._visible = false;\r\n this._showingActions = this._register(new MutableDisposable());\r\n this._keybindingResolver = new CodeActionKeybindingResolver({\r\n getKeybindings: () => keybindingService.getKeybindings()\r\n });\r\n }\r\n get isVisible() {\r\n return this._visible;\r\n }\r\n show(trigger, codeActions, at, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const actionsToShow = options.includeDisabledActions ? codeActions.allActions : codeActions.validActions;\r\n if (!actionsToShow.length) {\r\n this._visible = false;\r\n return;\r\n }\r\n if (!this._editor.getDomNode()) {\r\n // cancel when editor went off-dom\r\n this._visible = false;\r\n throw canceled();\r\n }\r\n this._visible = true;\r\n this._showingActions.value = codeActions;\r\n const menuActions = this.getMenuActions(trigger, actionsToShow, codeActions.documentation);\r\n const anchor = Position.isIPosition(at) ? this._toCoords(at) : at || { x: 0, y: 0 };\r\n const resolver = this._keybindingResolver.getResolver();\r\n const useShadowDOM = this._editor.getOption(113 /* useShadowDOM */);\r\n this._contextMenuService.showContextMenu({\r\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\r\n getAnchor: () => anchor,\r\n getActions: () => menuActions,\r\n onHide: () => {\r\n this._visible = false;\r\n this._editor.focus();\r\n },\r\n autoSelectFirstItem: true,\r\n getKeyBinding: action => action instanceof CodeActionAction ? resolver(action.action) : undefined,\r\n });\r\n });\r\n }\r\n getMenuActions(trigger, actionsToShow, documentation) {\r\n var _a, _b;\r\n const toCodeActionAction = (item) => new CodeActionAction(item.action, () => this._delegate.onSelectCodeAction(item));\r\n const result = actionsToShow\r\n .map(toCodeActionAction);\r\n const allDocumentation = [...documentation];\r\n const model = this._editor.getModel();\r\n if (model && result.length) {\r\n for (const provider of CodeActionProviderRegistry.all(model)) {\r\n if (provider._getAdditionalMenuItems) {\r\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)));\r\n }\r\n }\r\n }\r\n if (allDocumentation.length) {\r\n result.push(new Separator(), ...allDocumentation.map(command => toCodeActionAction(new CodeActionItem({\r\n title: command.title,\r\n command: command,\r\n }, undefined))));\r\n }\r\n return result;\r\n }\r\n _toCoords(position) {\r\n if (!this._editor.hasModel()) {\r\n return { x: 0, y: 0 };\r\n }\r\n this._editor.revealPosition(position, 1 /* Immediate */);\r\n this._editor.render();\r\n // Translate to absolute editor position\r\n const cursorCoords = this._editor.getScrolledVisiblePosition(position);\r\n const editorCoords = getDomNodePagePosition(this._editor.getDomNode());\r\n const x = editorCoords.left + cursorCoords.left;\r\n const y = editorCoords.top + cursorCoords.top + cursorCoords.height;\r\n return { x, y };\r\n }\r\n};\r\nCodeActionMenu = __decorate([\r\n __param(2, IContextMenuService),\r\n __param(3, IKeybindingService)\r\n], CodeActionMenu);\r\nexport { CodeActionMenu };\r\nexport class CodeActionKeybindingResolver {\r\n constructor(_keybindingProvider) {\r\n this._keybindingProvider = _keybindingProvider;\r\n }\r\n getResolver() {\r\n // Lazy since we may not actually ever read the value\r\n const allCodeActionBindings = new Lazy(() => this._keybindingProvider.getKeybindings()\r\n .filter(item => CodeActionKeybindingResolver.codeActionCommands.indexOf(item.command) >= 0)\r\n .filter(item => item.resolvedKeybinding)\r\n .map((item) => {\r\n // Special case these commands since they come built-in with VS Code and don't use 'commandArgs'\r\n let commandArgs = item.commandArgs;\r\n if (item.command === organizeImportsCommandId) {\r\n commandArgs = { kind: CodeActionKind.SourceOrganizeImports.value };\r\n }\r\n else if (item.command === fixAllCommandId) {\r\n commandArgs = { kind: CodeActionKind.SourceFixAll.value };\r\n }\r\n return Object.assign({ resolvedKeybinding: item.resolvedKeybinding }, CodeActionCommandArgs.fromUser(commandArgs, {\r\n kind: CodeActionKind.None,\r\n apply: \"never\" /* Never */\r\n }));\r\n }));\r\n return (action) => {\r\n if (action.kind) {\r\n const binding = this.bestKeybindingForCodeAction(action, allCodeActionBindings.getValue());\r\n return binding === null || binding === void 0 ? void 0 : binding.resolvedKeybinding;\r\n }\r\n return undefined;\r\n };\r\n }\r\n bestKeybindingForCodeAction(action, candidates) {\r\n if (!action.kind) {\r\n return undefined;\r\n }\r\n const kind = new CodeActionKind(action.kind);\r\n return candidates\r\n .filter(candidate => candidate.kind.contains(kind))\r\n .filter(candidate => {\r\n if (candidate.preferred) {\r\n // If the candidate keybinding only applies to preferred actions, the this action must also be preferred\r\n return action.isPreferred;\r\n }\r\n return true;\r\n })\r\n .reduceRight((currentBest, candidate) => {\r\n if (!currentBest) {\r\n return candidate;\r\n }\r\n // Select the more specific binding\r\n return currentBest.kind.contains(candidate.kind) ? candidate : currentBest;\r\n }, undefined);\r\n }\r\n}\r\nCodeActionKeybindingResolver.codeActionCommands = [\r\n refactorCommandId,\r\n codeActionCommandId,\r\n sourceActionCommandId,\r\n organizeImportsCommandId,\r\n fixAllCommandId\r\n];\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./lightBulbWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./lightBulbWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../../base/browser/globalMouseMoveMonitor.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport './lightBulbWidget.css';\r\nimport { TextModel } from '../../common/model/textModel.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { editorLightBulbForeground, editorLightBulbAutoFixForeground, editorBackground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Gesture } from '../../../base/browser/touch.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nvar LightBulbState;\r\n(function (LightBulbState) {\r\n LightBulbState.Hidden = { type: 0 /* Hidden */ };\r\n class Showing {\r\n constructor(actions, trigger, editorPosition, widgetPosition) {\r\n this.actions = actions;\r\n this.trigger = trigger;\r\n this.editorPosition = editorPosition;\r\n this.widgetPosition = widgetPosition;\r\n this.type = 1 /* Showing */;\r\n }\r\n }\r\n LightBulbState.Showing = Showing;\r\n})(LightBulbState || (LightBulbState = {}));\r\nlet LightBulbWidget = class LightBulbWidget extends Disposable {\r\n constructor(_editor, _quickFixActionId, _preferredFixActionId, _keybindingService) {\r\n super();\r\n this._editor = _editor;\r\n this._quickFixActionId = _quickFixActionId;\r\n this._preferredFixActionId = _preferredFixActionId;\r\n this._keybindingService = _keybindingService;\r\n this._onClick = this._register(new Emitter());\r\n this.onClick = this._onClick.event;\r\n this._state = LightBulbState.Hidden;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = Codicon.lightBulb.classNames;\r\n this._editor.addContentWidget(this);\r\n this._register(this._editor.onDidChangeModelContent(_ => {\r\n // cancel when the line in question has been removed\r\n const editorModel = this._editor.getModel();\r\n if (this.state.type !== 1 /* Showing */ || !editorModel || this.state.editorPosition.lineNumber >= editorModel.getLineCount()) {\r\n this.hide();\r\n }\r\n }));\r\n Gesture.ignoreTarget(this._domNode);\r\n this._register(dom.addStandardDisposableGenericMouseDownListner(this._domNode, e => {\r\n if (this.state.type !== 1 /* Showing */) {\r\n return;\r\n }\r\n // Make sure that focus / cursor location is not lost when clicking widget icon\r\n this._editor.focus();\r\n e.preventDefault();\r\n // a bit of extra work to make sure the menu\r\n // doesn't cover the line-text\r\n const { top, height } = dom.getDomNodePagePosition(this._domNode);\r\n const lineHeight = this._editor.getOption(57 /* lineHeight */);\r\n let pad = Math.floor(lineHeight / 3);\r\n if (this.state.widgetPosition.position !== null && this.state.widgetPosition.position.lineNumber < this.state.editorPosition.lineNumber) {\r\n pad += lineHeight;\r\n }\r\n this._onClick.fire({\r\n x: e.posx,\r\n y: top + height + pad,\r\n actions: this.state.actions,\r\n trigger: this.state.trigger,\r\n });\r\n }));\r\n this._register(dom.addDisposableListener(this._domNode, 'mouseenter', (e) => {\r\n if ((e.buttons & 1) !== 1) {\r\n return;\r\n }\r\n // mouse enters lightbulb while the primary/left button\r\n // is being pressed -> hide the lightbulb and block future\r\n // showings until mouse is released\r\n this.hide();\r\n const monitor = new GlobalMouseMoveMonitor();\r\n monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, () => { }, () => {\r\n monitor.dispose();\r\n });\r\n }));\r\n this._register(this._editor.onDidChangeConfiguration(e => {\r\n // hide when told to do so\r\n if (e.hasChanged(55 /* lightbulb */) && !this._editor.getOption(55 /* lightbulb */).enabled) {\r\n this.hide();\r\n }\r\n }));\r\n this._updateLightBulbTitleAndIcon();\r\n this._register(this._keybindingService.onDidUpdateKeybindings(this._updateLightBulbTitleAndIcon, this));\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._editor.removeContentWidget(this);\r\n }\r\n getId() {\r\n return 'LightBulbWidget';\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return this._state.type === 1 /* Showing */ ? this._state.widgetPosition : null;\r\n }\r\n update(actions, trigger, atPosition) {\r\n if (actions.validActions.length <= 0) {\r\n return this.hide();\r\n }\r\n const options = this._editor.getOptions();\r\n if (!options.get(55 /* lightbulb */).enabled) {\r\n return this.hide();\r\n }\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return this.hide();\r\n }\r\n const { lineNumber, column } = model.validatePosition(atPosition);\r\n const tabSize = model.getOptions().tabSize;\r\n const fontInfo = options.get(41 /* fontInfo */);\r\n const lineContent = model.getLineContent(lineNumber);\r\n const indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n const lineHasSpace = fontInfo.spaceWidth * indent > 22;\r\n const isFolded = (lineNumber) => {\r\n return lineNumber > 2 && this._editor.getTopForLineNumber(lineNumber) === this._editor.getTopForLineNumber(lineNumber - 1);\r\n };\r\n let effectiveLineNumber = lineNumber;\r\n if (!lineHasSpace) {\r\n if (lineNumber > 1 && !isFolded(lineNumber - 1)) {\r\n effectiveLineNumber -= 1;\r\n }\r\n else if (!isFolded(lineNumber + 1)) {\r\n effectiveLineNumber += 1;\r\n }\r\n else if (column * fontInfo.spaceWidth < 22) {\r\n // cannot show lightbulb above/below and showing\r\n // it inline would overlay the cursor...\r\n return this.hide();\r\n }\r\n }\r\n this.state = new LightBulbState.Showing(actions, trigger, atPosition, {\r\n position: { lineNumber: effectiveLineNumber, column: 1 },\r\n preference: LightBulbWidget._posPref\r\n });\r\n this._editor.layoutContentWidget(this);\r\n }\r\n hide() {\r\n this.state = LightBulbState.Hidden;\r\n this._editor.layoutContentWidget(this);\r\n }\r\n get state() { return this._state; }\r\n set state(value) {\r\n this._state = value;\r\n this._updateLightBulbTitleAndIcon();\r\n }\r\n _updateLightBulbTitleAndIcon() {\r\n if (this.state.type === 1 /* Showing */ && this.state.actions.hasAutoFix) {\r\n // update icon\r\n this._domNode.classList.remove(...Codicon.lightBulb.classNamesArray);\r\n this._domNode.classList.add(...Codicon.lightbulbAutofix.classNamesArray);\r\n const preferredKb = this._keybindingService.lookupKeybinding(this._preferredFixActionId);\r\n if (preferredKb) {\r\n this.title = nls.localize('prefferedQuickFixWithKb', \"Show Fixes. Preferred Fix Available ({0})\", preferredKb.getLabel());\r\n return;\r\n }\r\n }\r\n // update icon\r\n this._domNode.classList.remove(...Codicon.lightbulbAutofix.classNamesArray);\r\n this._domNode.classList.add(...Codicon.lightBulb.classNamesArray);\r\n const kb = this._keybindingService.lookupKeybinding(this._quickFixActionId);\r\n if (kb) {\r\n this.title = nls.localize('quickFixWithKb', \"Show Fixes ({0})\", kb.getLabel());\r\n }\r\n else {\r\n this.title = nls.localize('quickFix', \"Show Fixes\");\r\n }\r\n }\r\n set title(value) {\r\n this._domNode.title = value;\r\n }\r\n};\r\nLightBulbWidget._posPref = [0 /* EXACT */];\r\nLightBulbWidget = __decorate([\r\n __param(3, IKeybindingService)\r\n], LightBulbWidget);\r\nexport { LightBulbWidget };\r\nregisterThemingParticipant((theme, collector) => {\r\n var _a;\r\n const editorBackgroundColor = (_a = theme.getColor(editorBackground)) === null || _a === void 0 ? void 0 : _a.transparent(0.7);\r\n // Lightbulb Icon\r\n const editorLightBulbForegroundColor = theme.getColor(editorLightBulbForeground);\r\n if (editorLightBulbForegroundColor) {\r\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}`);\r\n }\r\n // Lightbulb Auto Fix Icon\r\n const editorLightBulbAutoFixForegroundColor = theme.getColor(editorLightBulbAutoFixForeground);\r\n if (editorLightBulbAutoFixForegroundColor) {\r\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}`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar _CodeActionUi_disposed;\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { CodeActionMenu } from './codeActionMenu.js';\r\nimport { LightBulbWidget } from './lightBulbWidget.js';\r\nlet CodeActionUi = class CodeActionUi extends Disposable {\r\n constructor(_editor, quickFixActionId, preferredFixActionId, delegate, instantiationService) {\r\n super();\r\n this._editor = _editor;\r\n this.delegate = delegate;\r\n this._activeCodeActions = this._register(new MutableDisposable());\r\n _CodeActionUi_disposed.set(this, false);\r\n this._codeActionWidget = new Lazy(() => {\r\n return this._register(instantiationService.createInstance(CodeActionMenu, this._editor, {\r\n onSelectCodeAction: (action) => __awaiter(this, void 0, void 0, function* () {\r\n this.delegate.applyCodeAction(action, /* retrigger */ true);\r\n })\r\n }));\r\n });\r\n this._lightBulbWidget = new Lazy(() => {\r\n const widget = this._register(instantiationService.createInstance(LightBulbWidget, this._editor, quickFixActionId, preferredFixActionId));\r\n this._register(widget.onClick(e => this.showCodeActionList(e.trigger, e.actions, e, { includeDisabledActions: false })));\r\n return widget;\r\n });\r\n }\r\n dispose() {\r\n __classPrivateFieldSet(this, _CodeActionUi_disposed, true, \"f\");\r\n super.dispose();\r\n }\r\n update(newState) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (newState.type !== 1 /* Triggered */) {\r\n (_a = this._lightBulbWidget.rawValue) === null || _a === void 0 ? void 0 : _a.hide();\r\n return;\r\n }\r\n let actions;\r\n try {\r\n actions = yield newState.actions;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return;\r\n }\r\n if (__classPrivateFieldGet(this, _CodeActionUi_disposed, \"f\")) {\r\n return;\r\n }\r\n this._lightBulbWidget.getValue().update(actions, newState.trigger, newState.position);\r\n if (newState.trigger.type === 1 /* Invoke */) {\r\n if ((_b = newState.trigger.filter) === null || _b === void 0 ? void 0 : _b.include) { // Triggered for specific scope\r\n // Check to see if we want to auto apply.\r\n const validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\r\n if (validActionToApply) {\r\n try {\r\n yield this.delegate.applyCodeAction(validActionToApply, false);\r\n }\r\n finally {\r\n actions.dispose();\r\n }\r\n return;\r\n }\r\n // Check to see if there is an action that we would have applied were it not invalid\r\n if (newState.trigger.context) {\r\n const invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\r\n if (invalidAction && invalidAction.action.disabled) {\r\n MessageController.get(this._editor).showMessage(invalidAction.action.disabled, newState.trigger.context.position);\r\n actions.dispose();\r\n return;\r\n }\r\n }\r\n }\r\n const includeDisabledActions = !!((_c = newState.trigger.filter) === null || _c === void 0 ? void 0 : _c.include);\r\n if (newState.trigger.context) {\r\n if (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\r\n MessageController.get(this._editor).showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\r\n this._activeCodeActions.value = actions;\r\n actions.dispose();\r\n return;\r\n }\r\n }\r\n this._activeCodeActions.value = actions;\r\n this._codeActionWidget.getValue().show(newState.trigger, actions, newState.position, { includeDisabledActions });\r\n }\r\n else {\r\n // auto magically triggered\r\n if (this._codeActionWidget.getValue().isVisible) {\r\n // TODO: Figure out if we should update the showing menu?\r\n actions.dispose();\r\n }\r\n else {\r\n this._activeCodeActions.value = actions;\r\n }\r\n }\r\n });\r\n }\r\n getInvalidActionThatWouldHaveBeenApplied(trigger, actions) {\r\n if (!actions.allActions.length) {\r\n return undefined;\r\n }\r\n if ((trigger.autoApply === \"first\" /* First */ && actions.validActions.length === 0)\r\n || (trigger.autoApply === \"ifSingle\" /* IfSingle */ && actions.allActions.length === 1)) {\r\n return actions.allActions.find(({ action }) => action.disabled);\r\n }\r\n return undefined;\r\n }\r\n tryGetValidActionToApply(trigger, actions) {\r\n if (!actions.validActions.length) {\r\n return undefined;\r\n }\r\n if ((trigger.autoApply === \"first\" /* First */ && actions.validActions.length > 0)\r\n || (trigger.autoApply === \"ifSingle\" /* IfSingle */ && actions.validActions.length === 1)) {\r\n return actions.validActions[0];\r\n }\r\n return undefined;\r\n }\r\n showCodeActionList(trigger, actions, at, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._codeActionWidget.getValue().show(trigger, actions, at, options);\r\n });\r\n }\r\n};\r\n_CodeActionUi_disposed = new WeakMap();\r\nCodeActionUi = __decorate([\r\n __param(4, IInstantiationService)\r\n], CodeActionUi);\r\nexport { CodeActionUi };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n};\r\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n};\r\nvar _CodeActionModel_isDisposed;\r\nimport { createCancelablePromise, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { isPromiseCanceledError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { isEqual } from '../../../base/common/resources.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CodeActionProviderRegistry } from '../../common/modes.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nimport { getCodeActions } from './codeAction.js';\r\nexport const SUPPORTED_CODE_ACTIONS = new RawContextKey('supportedCodeAction', '');\r\nclass CodeActionOracle extends Disposable {\r\n constructor(_editor, _markerService, _signalChange, _delay = 250) {\r\n super();\r\n this._editor = _editor;\r\n this._markerService = _markerService;\r\n this._signalChange = _signalChange;\r\n this._delay = _delay;\r\n this._autoTriggerTimer = this._register(new TimeoutTimer());\r\n this._register(this._markerService.onMarkerChanged(e => this._onMarkerChanges(e)));\r\n this._register(this._editor.onDidChangeCursorPosition(() => this._onCursorChange()));\r\n }\r\n trigger(trigger) {\r\n const selection = this._getRangeOfSelectionUnlessWhitespaceEnclosed(trigger);\r\n return this._createEventAndSignalChange(trigger, selection);\r\n }\r\n _onMarkerChanges(resources) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n if (resources.some(resource => isEqual(resource, model.uri))) {\r\n this._autoTriggerTimer.cancelAndSet(() => {\r\n this.trigger({ type: 2 /* Auto */ });\r\n }, this._delay);\r\n }\r\n }\r\n _onCursorChange() {\r\n this._autoTriggerTimer.cancelAndSet(() => {\r\n this.trigger({ type: 2 /* Auto */ });\r\n }, this._delay);\r\n }\r\n _getRangeOfMarker(selection) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return undefined;\r\n }\r\n for (const marker of this._markerService.read({ resource: model.uri })) {\r\n const markerRange = model.validateRange(marker);\r\n if (Range.intersectRanges(markerRange, selection)) {\r\n return Range.lift(markerRange);\r\n }\r\n }\r\n return undefined;\r\n }\r\n _getRangeOfSelectionUnlessWhitespaceEnclosed(trigger) {\r\n if (!this._editor.hasModel()) {\r\n return undefined;\r\n }\r\n const model = this._editor.getModel();\r\n const selection = this._editor.getSelection();\r\n if (selection.isEmpty() && trigger.type === 2 /* Auto */) {\r\n const { lineNumber, column } = selection.getPosition();\r\n const line = model.getLineContent(lineNumber);\r\n if (line.length === 0) {\r\n // empty line\r\n return undefined;\r\n }\r\n else if (column === 1) {\r\n // look only right\r\n if (/\\s/.test(line[0])) {\r\n return undefined;\r\n }\r\n }\r\n else if (column === model.getLineMaxColumn(lineNumber)) {\r\n // look only left\r\n if (/\\s/.test(line[line.length - 1])) {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n // look left and right\r\n if (/\\s/.test(line[column - 2]) && /\\s/.test(line[column - 1])) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n return selection;\r\n }\r\n _createEventAndSignalChange(trigger, selection) {\r\n const model = this._editor.getModel();\r\n if (!selection || !model) {\r\n // cancel\r\n this._signalChange(undefined);\r\n return undefined;\r\n }\r\n const markerRange = this._getRangeOfMarker(selection);\r\n const position = markerRange ? markerRange.getStartPosition() : selection.getStartPosition();\r\n const e = {\r\n trigger,\r\n selection,\r\n position\r\n };\r\n this._signalChange(e);\r\n return e;\r\n }\r\n}\r\nexport var CodeActionsState;\r\n(function (CodeActionsState) {\r\n CodeActionsState.Empty = { type: 0 /* Empty */ };\r\n class Triggered {\r\n constructor(trigger, rangeOrSelection, position, _cancellablePromise) {\r\n this.trigger = trigger;\r\n this.rangeOrSelection = rangeOrSelection;\r\n this.position = position;\r\n this._cancellablePromise = _cancellablePromise;\r\n this.type = 1 /* Triggered */;\r\n this.actions = _cancellablePromise.catch((e) => {\r\n if (isPromiseCanceledError(e)) {\r\n return emptyCodeActionSet;\r\n }\r\n throw e;\r\n });\r\n }\r\n cancel() {\r\n this._cancellablePromise.cancel();\r\n }\r\n }\r\n CodeActionsState.Triggered = Triggered;\r\n})(CodeActionsState || (CodeActionsState = {}));\r\nconst emptyCodeActionSet = {\r\n allActions: [],\r\n validActions: [],\r\n dispose: () => { },\r\n documentation: [],\r\n hasAutoFix: false\r\n};\r\nexport class CodeActionModel extends Disposable {\r\n constructor(_editor, _markerService, contextKeyService, _progressService) {\r\n super();\r\n this._editor = _editor;\r\n this._markerService = _markerService;\r\n this._progressService = _progressService;\r\n this._codeActionOracle = this._register(new MutableDisposable());\r\n this._state = CodeActionsState.Empty;\r\n this._onDidChangeState = this._register(new Emitter());\r\n this.onDidChangeState = this._onDidChangeState.event;\r\n _CodeActionModel_isDisposed.set(this, false);\r\n this._supportedCodeActions = SUPPORTED_CODE_ACTIONS.bindTo(contextKeyService);\r\n this._register(this._editor.onDidChangeModel(() => this._update()));\r\n this._register(this._editor.onDidChangeModelLanguage(() => this._update()));\r\n this._register(CodeActionProviderRegistry.onDidChange(() => this._update()));\r\n this._update();\r\n }\r\n dispose() {\r\n if (__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\r\n return;\r\n }\r\n __classPrivateFieldSet(this, _CodeActionModel_isDisposed, true, \"f\");\r\n super.dispose();\r\n this.setState(CodeActionsState.Empty, true);\r\n }\r\n _update() {\r\n if (__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\r\n return;\r\n }\r\n this._codeActionOracle.value = undefined;\r\n this.setState(CodeActionsState.Empty);\r\n const model = this._editor.getModel();\r\n if (model\r\n && CodeActionProviderRegistry.has(model)\r\n && !this._editor.getOption(79 /* readOnly */)) {\r\n const supportedActions = [];\r\n for (const provider of CodeActionProviderRegistry.all(model)) {\r\n if (Array.isArray(provider.providedCodeActionKinds)) {\r\n supportedActions.push(...provider.providedCodeActionKinds);\r\n }\r\n }\r\n this._supportedCodeActions.set(supportedActions.join(' '));\r\n this._codeActionOracle.value = new CodeActionOracle(this._editor, this._markerService, trigger => {\r\n var _a;\r\n if (!trigger) {\r\n this.setState(CodeActionsState.Empty);\r\n return;\r\n }\r\n const actions = createCancelablePromise(token => getCodeActions(model, trigger.selection, trigger.trigger, Progress.None, token));\r\n if (trigger.trigger.type === 1 /* Invoke */) {\r\n (_a = this._progressService) === null || _a === void 0 ? void 0 : _a.showWhile(actions, 250);\r\n }\r\n this.setState(new CodeActionsState.Triggered(trigger.trigger, trigger.selection, trigger.position, actions));\r\n }, undefined);\r\n this._codeActionOracle.value.trigger({ type: 2 /* Auto */ });\r\n }\r\n else {\r\n this._supportedCodeActions.reset();\r\n }\r\n }\r\n trigger(trigger) {\r\n if (this._codeActionOracle.value) {\r\n this._codeActionOracle.value.trigger(trigger);\r\n }\r\n }\r\n setState(newState, skipNotify) {\r\n if (newState === this._state) {\r\n return;\r\n }\r\n // Cancel old request\r\n if (this._state.type === 1 /* Triggered */) {\r\n this._state.cancel();\r\n }\r\n this._state = newState;\r\n if (!skipNotify && !__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\r\n this._onDidChangeState.fire(newState);\r\n }\r\n }\r\n}\r\n_CodeActionModel_isDisposed = new WeakMap();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { escapeRegExpCharacters } from '../../../base/common/strings.js';\r\nimport { EditorAction, EditorCommand } from '../../browser/editorExtensions.js';\r\nimport { IBulkEditService, ResourceEdit } from '../../browser/services/bulkEditService.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { codeActionCommandId, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\r\nimport { CodeActionUi } from './codeActionUi.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { CodeActionModel, SUPPORTED_CODE_ACTIONS } from './codeActionModel.js';\r\nimport { CodeActionCommandArgs, CodeActionKind } from './types.js';\r\nfunction contextKeyForSupportedActions(kind) {\r\n return ContextKeyExpr.regex(SUPPORTED_CODE_ACTIONS.keys()[0], new RegExp('(\\\\s|^)' + escapeRegExpCharacters(kind.value) + '\\\\b'));\r\n}\r\nconst argsSchema = {\r\n type: 'object',\r\n defaultSnippets: [{ body: { kind: '' } }],\r\n properties: {\r\n 'kind': {\r\n type: 'string',\r\n description: nls.localize('args.schema.kind', \"Kind of the code action to run.\"),\r\n },\r\n 'apply': {\r\n type: 'string',\r\n description: nls.localize('args.schema.apply', \"Controls when the returned actions are applied.\"),\r\n default: \"ifSingle\" /* IfSingle */,\r\n enum: [\"first\" /* First */, \"ifSingle\" /* IfSingle */, \"never\" /* Never */],\r\n enumDescriptions: [\r\n nls.localize('args.schema.apply.first', \"Always apply the first returned code action.\"),\r\n nls.localize('args.schema.apply.ifSingle', \"Apply the first returned code action if it is the only one.\"),\r\n nls.localize('args.schema.apply.never', \"Do not apply the returned code actions.\"),\r\n ]\r\n },\r\n 'preferred': {\r\n type: 'boolean',\r\n default: false,\r\n description: nls.localize('args.schema.preferred', \"Controls if only preferred code actions should be returned.\"),\r\n }\r\n }\r\n};\r\nlet QuickFixController = class QuickFixController extends Disposable {\r\n constructor(editor, markerService, contextKeyService, progressService, _instantiationService) {\r\n super();\r\n this._instantiationService = _instantiationService;\r\n this._editor = editor;\r\n this._model = this._register(new CodeActionModel(this._editor, markerService, contextKeyService, progressService));\r\n this._register(this._model.onDidChangeState(newState => this.update(newState)));\r\n this._ui = new Lazy(() => this._register(new CodeActionUi(editor, QuickFixAction.Id, AutoFixAction.Id, {\r\n applyCodeAction: (action, retrigger) => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n yield this._applyCodeAction(action);\r\n }\r\n finally {\r\n if (retrigger) {\r\n this._trigger({ type: 2 /* Auto */, filter: {} });\r\n }\r\n }\r\n })\r\n }, this._instantiationService)));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(QuickFixController.ID);\r\n }\r\n update(newState) {\r\n this._ui.getValue().update(newState);\r\n }\r\n showCodeActions(trigger, actions, at) {\r\n return this._ui.getValue().showCodeActionList(trigger, actions, at, { includeDisabledActions: false });\r\n }\r\n manualTriggerAtCurrentPosition(notAvailableMessage, filter, autoApply) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n MessageController.get(this._editor).closeMessage();\r\n const triggerPosition = this._editor.getPosition();\r\n this._trigger({ type: 1 /* Invoke */, filter, autoApply, context: { notAvailableMessage, position: triggerPosition } });\r\n }\r\n _trigger(trigger) {\r\n return this._model.trigger(trigger);\r\n }\r\n _applyCodeAction(action) {\r\n return this._instantiationService.invokeFunction(applyCodeAction, action, this._editor);\r\n }\r\n};\r\nQuickFixController.ID = 'editor.contrib.quickFixController';\r\nQuickFixController = __decorate([\r\n __param(1, IMarkerService),\r\n __param(2, IContextKeyService),\r\n __param(3, IEditorProgressService),\r\n __param(4, IInstantiationService)\r\n], QuickFixController);\r\nexport { QuickFixController };\r\nexport function applyCodeAction(accessor, item, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const bulkEditService = accessor.get(IBulkEditService);\r\n const commandService = accessor.get(ICommandService);\r\n const telemetryService = accessor.get(ITelemetryService);\r\n const notificationService = accessor.get(INotificationService);\r\n telemetryService.publicLog2('codeAction.applyCodeAction', {\r\n codeActionTitle: item.action.title,\r\n codeActionKind: item.action.kind,\r\n codeActionIsPreferred: !!item.action.isPreferred,\r\n });\r\n yield item.resolve(CancellationToken.None);\r\n if (item.action.edit) {\r\n yield bulkEditService.apply(ResourceEdit.convert(item.action.edit), { editor, label: item.action.title });\r\n }\r\n if (item.action.command) {\r\n try {\r\n yield commandService.executeCommand(item.action.command.id, ...(item.action.command.arguments || []));\r\n }\r\n catch (err) {\r\n const message = asMessage(err);\r\n notificationService.error(typeof message === 'string'\r\n ? message\r\n : nls.localize('applyCodeActionFailed', \"An unknown error occurred while applying the code action\"));\r\n }\r\n }\r\n });\r\n}\r\nfunction asMessage(err) {\r\n if (typeof err === 'string') {\r\n return err;\r\n }\r\n else if (err instanceof Error && typeof err.message === 'string') {\r\n return err.message;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction triggerCodeActionsForEditorSelection(editor, notAvailableMessage, filter, autoApply) {\r\n if (editor.hasModel()) {\r\n const controller = QuickFixController.get(editor);\r\n if (controller) {\r\n controller.manualTriggerAtCurrentPosition(notAvailableMessage, filter, autoApply);\r\n }\r\n }\r\n}\r\nexport class QuickFixAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: QuickFixAction.Id,\r\n label: nls.localize('quickfix.trigger.label', \"Quick Fix...\"),\r\n alias: 'Quick Fix...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 84 /* US_DOT */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.quickFix.noneMessage', \"No code actions available\"), undefined, undefined);\r\n }\r\n}\r\nQuickFixAction.Id = 'editor.action.quickFix';\r\nexport class CodeActionCommand extends EditorCommand {\r\n constructor() {\r\n super({\r\n id: codeActionCommandId,\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n description: {\r\n description: 'Trigger a code action',\r\n args: [{ name: 'args', schema: argsSchema, }]\r\n }\r\n });\r\n }\r\n runEditorCommand(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Empty,\r\n apply: \"ifSingle\" /* IfSingle */,\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.codeAction.noneMessage.preferred.kind', \"No preferred code actions for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.codeAction.noneMessage.kind', \"No code actions for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.codeAction.noneMessage.preferred', \"No preferred code actions available\")\r\n : nls.localize('editor.action.codeAction.noneMessage', \"No code actions available\"), {\r\n include: args.kind,\r\n includeSourceActions: true,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class RefactorAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: refactorCommandId,\r\n label: nls.localize('refactor.label', \"Refactor...\"),\r\n alias: 'Refactor...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 48 /* KEY_R */,\r\n mac: {\r\n primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 48 /* KEY_R */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 2,\r\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Refactor)),\r\n },\r\n description: {\r\n description: 'Refactor...',\r\n args: [{ name: 'args', schema: argsSchema }]\r\n }\r\n });\r\n }\r\n run(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Refactor,\r\n apply: \"never\" /* Never */\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.refactor.noneMessage.preferred.kind', \"No preferred refactorings for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.refactor.noneMessage.kind', \"No refactorings for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.refactor.noneMessage.preferred', \"No preferred refactorings available\")\r\n : nls.localize('editor.action.refactor.noneMessage', \"No refactorings available\"), {\r\n include: CodeActionKind.Refactor.contains(args.kind) ? args.kind : CodeActionKind.None,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class SourceAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: sourceActionCommandId,\r\n label: nls.localize('source.label', \"Source Action...\"),\r\n alias: 'Source Action...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 2.1,\r\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Source)),\r\n },\r\n description: {\r\n description: 'Source Action...',\r\n args: [{ name: 'args', schema: argsSchema }]\r\n }\r\n });\r\n }\r\n run(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Source,\r\n apply: \"never\" /* Never */\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.source.noneMessage.preferred.kind', \"No preferred source actions for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.source.noneMessage.kind', \"No source actions for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.source.noneMessage.preferred', \"No preferred source actions available\")\r\n : nls.localize('editor.action.source.noneMessage', \"No source actions available\"), {\r\n include: CodeActionKind.Source.contains(args.kind) ? args.kind : CodeActionKind.None,\r\n includeSourceActions: true,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class OrganizeImportsAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: organizeImportsCommandId,\r\n label: nls.localize('organizeImports.label', \"Organize Imports\"),\r\n alias: 'Organize Imports',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 45 /* KEY_O */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.organize.noneMessage', \"No organize imports action available\"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nexport class FixAllAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: fixAllCommandId,\r\n label: nls.localize('fixAll.label', \"Fix All\"),\r\n alias: 'Fix All',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceFixAll))\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('fixAll.noneMessage', \"No fix all action available\"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nexport class AutoFixAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: AutoFixAction.Id,\r\n label: nls.localize('autoFix.label', \"Auto Fix...\"),\r\n alias: 'Auto Fix...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.QuickFix)),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 1024 /* Shift */ | 84 /* US_DOT */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 84 /* US_DOT */\r\n },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.autoFix.noneMessage', \"No auto fixes available\"), {\r\n include: CodeActionKind.QuickFix,\r\n onlyIncludePreferredActions: true\r\n }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nAutoFixAction.Id = 'editor.action.autoFix';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { toDisposable, DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { IMarkerData, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { basename } from '../../../base/common/resources.js';\r\nimport { IMarkerDecorationsService } from '../../common/services/markersDecorationService.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { MarkerController, NextMarkerAction } from '../gotoError/gotoError.js';\r\nimport { createCancelablePromise, disposableTimeout } from '../../../base/common/async.js';\r\nimport { getCodeActions } from '../codeAction/codeAction.js';\r\nimport { QuickFixAction, QuickFixController } from '../codeAction/codeActionCommands.js';\r\nimport { CodeActionKind } from '../codeAction/types.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { textLinkActiveForeground, textLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nconst $ = dom.$;\r\nexport class MarkerHover {\r\n constructor(owner, range, marker) {\r\n this.owner = owner;\r\n this.range = range;\r\n this.marker = marker;\r\n }\r\n isValidForHoverAnchor(anchor) {\r\n return (anchor.type === 1 /* Range */\r\n && this.range.startColumn <= anchor.range.startColumn\r\n && this.range.endColumn >= anchor.range.endColumn);\r\n }\r\n}\r\nconst markerCodeActionTrigger = {\r\n type: 1 /* Invoke */,\r\n filter: { include: CodeActionKind.QuickFix }\r\n};\r\nlet MarkerHoverParticipant = class MarkerHoverParticipant {\r\n constructor(_editor, _hover, _markerDecorationsService, _openerService) {\r\n this._editor = _editor;\r\n this._hover = _hover;\r\n this._markerDecorationsService = _markerDecorationsService;\r\n this._openerService = _openerService;\r\n this.recentMarkerCodeActionsInfo = undefined;\r\n }\r\n computeSync(anchor, lineDecorations) {\r\n if (!this._editor.hasModel() || anchor.type !== 1 /* Range */) {\r\n return [];\r\n }\r\n const model = this._editor.getModel();\r\n const lineNumber = anchor.range.startLineNumber;\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n const result = [];\r\n for (const d of lineDecorations) {\r\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\r\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\r\n const marker = this._markerDecorationsService.getMarker(model.uri, d);\r\n if (!marker) {\r\n continue;\r\n }\r\n const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\r\n result.push(new MarkerHover(this, range, marker));\r\n }\r\n return result;\r\n }\r\n renderHoverParts(hoverParts, fragment, statusBar) {\r\n if (!hoverParts.length) {\r\n return Disposable.None;\r\n }\r\n const disposables = new DisposableStore();\r\n hoverParts.forEach(msg => fragment.appendChild(this.renderMarkerHover(msg, disposables)));\r\n const markerHoverForStatusbar = hoverParts.length === 1 ? hoverParts[0] : hoverParts.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\r\n this.renderMarkerStatusbar(markerHoverForStatusbar, statusBar, disposables);\r\n return disposables;\r\n }\r\n renderMarkerHover(markerHover, disposables) {\r\n const hoverElement = $('div.hover-row');\r\n const markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\r\n const { source, message, code, relatedInformation } = markerHover.marker;\r\n this._editor.applyFontInfo(markerElement);\r\n const messageElement = dom.append(markerElement, $('span'));\r\n messageElement.style.whiteSpace = 'pre-wrap';\r\n messageElement.innerText = message;\r\n if (source || code) {\r\n // Code has link\r\n if (code && typeof code !== 'string') {\r\n const sourceAndCodeElement = $('span');\r\n if (source) {\r\n const sourceElement = dom.append(sourceAndCodeElement, $('span'));\r\n sourceElement.innerText = source;\r\n }\r\n const codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\r\n codeLink.setAttribute('href', code.target.toString());\r\n disposables.add(dom.addDisposableListener(codeLink, 'click', (e) => {\r\n this._openerService.open(code.target, { allowCommands: true });\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }));\r\n const codeElement = dom.append(codeLink, $('span'));\r\n codeElement.innerText = code.value;\r\n const detailsElement = dom.append(markerElement, sourceAndCodeElement);\r\n detailsElement.style.opacity = '0.6';\r\n detailsElement.style.paddingLeft = '6px';\r\n }\r\n else {\r\n const detailsElement = dom.append(markerElement, $('span'));\r\n detailsElement.style.opacity = '0.6';\r\n detailsElement.style.paddingLeft = '6px';\r\n detailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\r\n }\r\n }\r\n if (isNonEmptyArray(relatedInformation)) {\r\n for (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\r\n const relatedInfoContainer = dom.append(markerElement, $('div'));\r\n relatedInfoContainer.style.marginTop = '8px';\r\n const a = dom.append(relatedInfoContainer, $('a'));\r\n a.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\r\n a.style.cursor = 'pointer';\r\n disposables.add(dom.addDisposableListener(a, 'click', (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n if (this._openerService) {\r\n this._openerService.open(resource, {\r\n fromUserGesture: true,\r\n editorOptions: { selection: { startLineNumber, startColumn } }\r\n }).catch(onUnexpectedError);\r\n }\r\n }));\r\n const messageElement = dom.append(relatedInfoContainer, $('span'));\r\n messageElement.innerText = message;\r\n this._editor.applyFontInfo(messageElement);\r\n }\r\n }\r\n return hoverElement;\r\n }\r\n renderMarkerStatusbar(markerHover, statusBar, disposables) {\r\n if (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\r\n statusBar.addAction({\r\n label: nls.localize('view problem', \"View Problem\"),\r\n commandId: NextMarkerAction.ID,\r\n run: () => {\r\n this._hover.hide();\r\n MarkerController.get(this._editor).showAtMarker(markerHover.marker);\r\n this._editor.focus();\r\n }\r\n });\r\n }\r\n if (!this._editor.getOption(79 /* readOnly */)) {\r\n const quickfixPlaceholderElement = statusBar.append($('div'));\r\n if (this.recentMarkerCodeActionsInfo) {\r\n if (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {\r\n if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\r\n quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\r\n }\r\n }\r\n else {\r\n this.recentMarkerCodeActionsInfo = undefined;\r\n }\r\n }\r\n const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposables.add(disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\"), 200));\r\n if (!quickfixPlaceholderElement.textContent) {\r\n // Have some content in here to avoid flickering\r\n quickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); //  \r\n }\r\n const codeActionsPromise = this.getCodeActions(markerHover.marker);\r\n disposables.add(toDisposable(() => codeActionsPromise.cancel()));\r\n codeActionsPromise.then(actions => {\r\n updatePlaceholderDisposable.dispose();\r\n this.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };\r\n if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\r\n actions.dispose();\r\n quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\r\n return;\r\n }\r\n quickfixPlaceholderElement.style.display = 'none';\r\n let showing = false;\r\n disposables.add(toDisposable(() => {\r\n if (!showing) {\r\n actions.dispose();\r\n }\r\n }));\r\n statusBar.addAction({\r\n label: nls.localize('quick fixes', \"Quick Fix...\"),\r\n commandId: QuickFixAction.Id,\r\n run: (target) => {\r\n showing = true;\r\n const controller = QuickFixController.get(this._editor);\r\n const elementPosition = dom.getDomNodePagePosition(target);\r\n // Hide the hover pre-emptively, otherwise the editor can close the code actions\r\n // context menu as well when using keyboard navigation\r\n this._hover.hide();\r\n controller.showCodeActions(markerCodeActionTrigger, actions, {\r\n x: elementPosition.left + 6,\r\n y: elementPosition.top + elementPosition.height + 6\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n getCodeActions(marker) {\r\n return createCancelablePromise(cancellationToken => {\r\n return getCodeActions(this._editor.getModel(), new Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn), markerCodeActionTrigger, Progress.None, cancellationToken);\r\n });\r\n }\r\n};\r\nMarkerHoverParticipant = __decorate([\r\n __param(2, IMarkerDecorationsService),\r\n __param(3, IOpenerService)\r\n], MarkerHoverParticipant);\r\nexport { MarkerHoverParticipant };\r\nregisterThemingParticipant((theme, collector) => {\r\n const linkFg = theme.getColor(textLinkForeground);\r\n if (linkFg) {\r\n collector.addRule(`.monaco-hover .hover-contents a.code-link span { color: ${linkFg}; }`);\r\n }\r\n const activeLinkFg = theme.getColor(textLinkActiveForeground);\r\n if (activeLinkFg) {\r\n collector.addRule(`.monaco-hover .hover-contents a.code-link span:hover { color: ${activeLinkFg}; }`);\r\n }\r\n});\r\n","/*\nThe MIT License (MIT)\n\nCopyright © 2015 Nicolas Bevacqua\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nlet __insane_func;\n\n(function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { if (!e[i]) { var c = \"function\" == typeof require && require; if (!f && c) return c(i, !0); if (u) return u(i, !0); var a = new Error(\"Cannot find module '\" + i + \"'\"); throw a.code = \"MODULE_NOT_FOUND\", a } var p = n[i] = { exports: {} }; e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r) }, p, p.exports, r, e, n, t) } return n[i].exports } for (var u = \"function\" == typeof require && require, i = 0; i < t.length; i++)o(t[i]); return o } return r })()({\n\t1: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar toMap = require('./toMap');\n\t\tvar uris = ['background', 'base', 'cite', 'href', 'longdesc', 'src', 'usemap'];\n\n\t\tmodule.exports = {\n\t\t\turis: toMap(uris) // attributes that have an href and hence need to be sanitized\n\t\t};\n\n\t}, { \"./toMap\": 10 }], 2: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar defaults = {\n\t\t\tallowedAttributes: {\n\t\t\t\t'*': ['title', 'accesskey'],\n\t\t\t\ta: ['href', 'name', 'target', 'aria-label'],\n\t\t\t\tiframe: ['allowfullscreen', 'frameborder', 'src'],\n\t\t\t\timg: ['src', 'alt', 'title', 'aria-label']\n\t\t\t},\n\t\t\tallowedClasses: {},\n\t\t\tallowedSchemes: ['http', 'https', 'mailto'],\n\t\t\tallowedTags: [\n\t\t\t\t'a', 'abbr', 'article', 'b', 'blockquote', 'br', 'caption', 'code', 'del', 'details', 'div', 'em',\n\t\t\t\t'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'main', 'mark',\n\t\t\t\t'ol', 'p', 'pre', 'section', 'span', 'strike', 'strong', 'sub', 'summary', 'sup', 'table',\n\t\t\t\t'tbody', 'td', 'th', 'thead', 'tr', 'u', 'ul'\n\t\t\t],\n\t\t\tfilter: null\n\t\t};\n\n\t\tmodule.exports = defaults;\n\n\t}, {}], 3: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar toMap = require('./toMap');\n\t\tvar voids = ['area', 'br', 'col', 'hr', 'img', 'wbr', 'input', 'base', 'basefont', 'link', 'meta'];\n\n\t\tmodule.exports = {\n\t\t\tvoids: toMap(voids)\n\t\t};\n\n\t}, { \"./toMap\": 10 }], 4: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar assign = require('assignment');\n\t\tvar parser = require('./parser');\n\t\tvar sanitizer = require('./sanitizer');\n\t\tvar defaults = require('./defaults');\n\n\t\tfunction insane(html, options, strict) {\n\t\t\tvar buffer = [];\n\t\t\tvar configuration = strict === true ? options : assign({}, defaults, options);\n\t\t\tvar handler = sanitizer(buffer, configuration);\n\n\t\t\tparser(html, handler);\n\n\t\t\treturn buffer.join('');\n\t\t}\n\n\t\tinsane.defaults = defaults;\n\t\tmodule.exports = insane;\n\t\t__insane_func = insane;\n\n\t}, { \"./defaults\": 2, \"./parser\": 7, \"./sanitizer\": 8, \"assignment\": 6, \"he\": 9 }], 5: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tmodule.exports = function lowercase(string) {\n\t\t\treturn typeof string === 'string' ? string.toLowerCase() : string;\n\t\t};\n\n\t}, {}], 6: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tfunction assignment(result) {\n\t\t\tvar stack = Array.prototype.slice.call(arguments, 1);\n\t\t\tvar item;\n\t\t\tvar key;\n\t\t\twhile (stack.length) {\n\t\t\t\titem = stack.shift();\n\t\t\t\tfor (key in item) {\n\t\t\t\t\tif (item.hasOwnProperty(key)) {\n\t\t\t\t\t\tif (Object.prototype.toString.call(result[key]) === '[object Object]') {\n\t\t\t\t\t\t\tresult[key] = assignment(result[key], item[key]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult[key] = item[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tmodule.exports = assignment;\n\n\t}, {}], 7: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar lowercase = require('./lowercase');\n\t\tvar attributes = require('./attributes');\n\t\tvar elements = require('./elements');\n\t\tvar rstart = /^<\\s*([\\w:-]+)((?:\\s+[\\w:-]+(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)\\s*>/;\n\t\tvar rend = /^<\\s*\\/\\s*([\\w:-]+)[^>]*>/;\n\t\tvar rattrs = /([\\w:-]+)(?:\\s*=\\s*(?:(?:\"((?:[^\"])*)\")|(?:'((?:[^'])*)')|([^>\\s]+)))?/g;\n\t\tvar rtag = /^');\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tif (handler.comment) {\n\t\t\t\t\t\thandler.comment(html.substring(4, index));\n\t\t\t\t\t}\n\t\t\t\t\thtml = html.substring(index + 3);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseTagDecode() {\n\t\t\t\tif (!chars) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar text;\n\t\t\t\tvar index = html.indexOf('<');\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\ttext = html.substring(0, index);\n\t\t\t\t\thtml = html.substring(index);\n\t\t\t\t} else {\n\t\t\t\t\ttext = html;\n\t\t\t\t\thtml = '';\n\t\t\t\t}\n\t\t\t\tif (handler.chars) {\n\t\t\t\t\thandler.chars(text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseStartTag(tag, tagName, rest, unary) {\n\t\t\t\tvar attrs = {};\n\t\t\t\tvar low = lowercase(tagName);\n\t\t\t\tvar u = elements.voids[low] || !!unary;\n\n\t\t\t\trest.replace(rattrs, attrReplacer);\n\n\t\t\t\tif (!u) {\n\t\t\t\t\tstack.push(low);\n\t\t\t\t}\n\t\t\t\tif (handler.start) {\n\t\t\t\t\thandler.start(low, attrs, u);\n\t\t\t\t}\n\n\t\t\t\tfunction attrReplacer(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) {\n\t\t\t\t\tif (doubleQuotedValue === void 0 && singleQuotedValue === void 0 && unquotedValue === void 0) {\n\t\t\t\t\t\tattrs[name] = void 0; // attribute is like \n\t\t\t\t\t} else {\n\t\t\t\t\t\tattrs[name] = he.decode(doubleQuotedValue || singleQuotedValue || unquotedValue || '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseEndTag(tag, tagName) {\n\t\t\t\tvar i;\n\t\t\t\tvar pos = 0;\n\t\t\t\tvar low = lowercase(tagName);\n\t\t\t\tif (low) {\n\t\t\t\t\tfor (pos = stack.length - 1; pos >= 0; pos--) {\n\t\t\t\t\t\tif (stack[pos] === low) {\n\t\t\t\t\t\t\tbreak; // find the closest opened tag of the same type\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pos >= 0) {\n\t\t\t\t\tfor (i = stack.length - 1; i >= pos; i--) {\n\t\t\t\t\t\tif (handler.end) { // close all the open elements, up the stack\n\t\t\t\t\t\t\thandler.end(stack[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.length = pos;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmodule.exports = parser;\n\n\t}, { \"./attributes\": 1, \"./elements\": 3, \"./lowercase\": 5, \"he\": 9 }], 8: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar lowercase = require('./lowercase');\n\t\tvar attributes = require('./attributes');\n\t\tvar elements = require('./elements');\n\n\t\tfunction sanitizer(buffer, options) {\n\t\t\tvar last;\n\t\t\tvar context;\n\t\t\tvar o = options || {};\n\n\t\t\treset();\n\n\t\t\treturn {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tchars: chars\n\t\t\t};\n\n\t\t\tfunction out(value) {\n\t\t\t\tbuffer.push(value);\n\t\t\t}\n\n\t\t\tfunction start(tag, attrs, unary) {\n\t\t\t\tvar low = lowercase(tag);\n\n\t\t\t\tif (context.ignoring) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\t\t\t\tif ((o.allowedTags || []).indexOf(low) === -1) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\t\t\t\tif (o.filter && !o.filter({ tag: low, attrs: attrs })) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\n\t\t\t\tout('<');\n\t\t\t\tout(low);\n\t\t\t\tObject.keys(attrs).forEach(parse);\n\t\t\t\tout(unary ? '/>' : '>');\n\n\t\t\t\tfunction parse(key) {\n\t\t\t\t\tvar value = attrs[key];\n\t\t\t\t\tvar classesOk = (o.allowedClasses || {})[low] || [];\n\t\t\t\t\tvar attrsOk = (o.allowedAttributes || {})[low] || [];\n\t\t\t\t\tattrsOk = attrsOk.concat((o.allowedAttributes || {})['*'] || []);\n\t\t\t\t\tvar valid;\n\t\t\t\t\tvar lkey = lowercase(key);\n\t\t\t\t\tif (lkey === 'class' && attrsOk.indexOf(lkey) === -1) {\n\t\t\t\t\t\tvalue = value.split(' ').filter(isValidClass).join(' ').trim();\n\t\t\t\t\t\tvalid = value.length;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalid = attrsOk.indexOf(lkey) !== -1 && (attributes.uris[lkey] !== true || testUrl(value));\n\t\t\t\t\t}\n\t\t\t\t\tif (valid) {\n\t\t\t\t\t\tout(' ');\n\t\t\t\t\t\tout(key);\n\t\t\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\t\tout('=\"');\n\t\t\t\t\t\t\tout(he.encode(value));\n\t\t\t\t\t\t\tout('\"');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfunction isValidClass(className) {\n\t\t\t\t\t\treturn classesOk && classesOk.indexOf(className) !== -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction end(tag) {\n\t\t\t\tvar low = lowercase(tag);\n\t\t\t\tvar allowed = (o.allowedTags || []).indexOf(low) !== -1;\n\t\t\t\tif (allowed) {\n\t\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\t\tout('');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunignore(low);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunignore(low);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction testUrl(text) {\n\t\t\t\tvar start = text[0];\n\t\t\t\tif (start === '#' || start === '/') {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar colon = text.indexOf(':');\n\t\t\t\tif (colon === -1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar questionmark = text.indexOf('?');\n\t\t\t\tif (questionmark !== -1 && colon > questionmark) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar hash = text.indexOf('#');\n\t\t\t\tif (hash !== -1 && colon > hash) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn o.allowedSchemes.some(matches);\n\n\t\t\t\tfunction matches(scheme) {\n\t\t\t\t\treturn text.indexOf(scheme + ':') === 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chars(text) {\n\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\tout(o.transformText ? o.transformText(text) : text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction ignore(tag) {\n\t\t\t\tif (elements.voids[tag]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\tcontext = { ignoring: tag, depth: 1 };\n\t\t\t\t} else if (context.ignoring === tag) {\n\t\t\t\t\tcontext.depth++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction unignore(tag) {\n\t\t\t\tif (context.ignoring === tag) {\n\t\t\t\t\tif (--context.depth <= 0) {\n\t\t\t\t\t\treset();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction reset() {\n\t\t\t\tcontext = { ignoring: false, depth: 0 };\n\t\t\t}\n\t\t}\n\n\t\tmodule.exports = sanitizer;\n\n\t}, { \"./attributes\": 1, \"./elements\": 3, \"./lowercase\": 5, \"he\": 9 }], 9: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar escapes = {\n\t\t\t'&': '&',\n\t\t\t'<': '<',\n\t\t\t'>': '>',\n\t\t\t'\"': '"',\n\t\t\t\"'\": '''\n\t\t};\n\t\tvar unescapes = {\n\t\t\t'&': '&',\n\t\t\t'<': '<',\n\t\t\t'>': '>',\n\t\t\t'"': '\"',\n\t\t\t''': \"'\"\n\t\t};\n\t\tvar rescaped = /(&|<|>|"|')/g;\n\t\tvar runescaped = /[&<>\"']/g;\n\n\t\tfunction escapeHtmlChar(match) {\n\t\t\treturn escapes[match];\n\t\t}\n\t\tfunction unescapeHtmlChar(match) {\n\t\t\treturn unescapes[match];\n\t\t}\n\n\t\tfunction escapeHtml(text) {\n\t\t\treturn text == null ? '' : String(text).replace(runescaped, escapeHtmlChar);\n\t\t}\n\n\t\tfunction unescapeHtml(html) {\n\t\t\treturn html == null ? '' : String(html).replace(rescaped, unescapeHtmlChar);\n\t\t}\n\n\t\tescapeHtml.options = unescapeHtml.options = {};\n\n\t\tmodule.exports = {\n\t\t\tencode: escapeHtml,\n\t\t\tescape: escapeHtml,\n\t\t\tdecode: unescapeHtml,\n\t\t\tunescape: unescapeHtml,\n\t\t\tversion: '1.0.0-browser'\n\t\t};\n\n\t}, {}], 10: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tfunction toMap(list) {\n\t\t\treturn list.reduce(asKey, {});\n\t\t}\n\n\t\tfunction asKey(accumulator, item) {\n\t\t\taccumulator[item] = true;\n\t\t\treturn accumulator;\n\t\t}\n\n\t\tmodule.exports = toMap;\n\n\t}, {}]\n}, {}, [4]);\n\n// ESM-comment-begin\n// define(function() { return { insane: __insane_func }; });\n// ESM-comment-end\n\n// ESM-uncomment-begin\nexport var insane = __insane_func;\n// ESM-uncomment-end\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport * as DOM from './dom.js';\r\nimport { createElement } from './formattedTextRenderer.js';\r\nimport { onUnexpectedError } from '../common/errors.js';\r\nimport { parseHrefAndDimensions, removeMarkdownEscapes } from '../common/htmlContent.js';\r\nimport { defaultGenerator } from '../common/idGenerator.js';\r\nimport * as marked from '../common/marked/marked.js';\r\nimport { insane } from '../common/insane/insane.js';\r\nimport { parse } from '../common/marshalling.js';\r\nimport { cloneAndChange } from '../common/objects.js';\r\nimport { escape } from '../common/strings.js';\r\nimport { URI } from '../common/uri.js';\r\nimport { FileAccess, Schemas } from '../common/network.js';\r\nimport { markdownEscapeEscapedIcons } from '../common/iconLabels.js';\r\nimport { resolvePath } from '../common/resources.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { renderLabelWithIcons } from './ui/iconLabel/iconLabels.js';\r\nimport { Event } from '../common/event.js';\r\nimport { DomEmitter } from './event.js';\r\nconst _ttpInsane = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('insane', {\r\n createHTML(value, options) {\r\n return insane(value, options);\r\n }\r\n});\r\n/**\r\n * Low-level way create a html element from a markdown string.\r\n *\r\n * **Note** that for most cases you should be using [`MarkdownRenderer`](./src/vs/editor/browser/core/markdownRenderer.ts)\r\n * which comes with support for pretty code block rendering and which uses the default way of handling links.\r\n */\r\nexport function renderMarkdown(markdown, options = {}, markedOptions = {}) {\r\n var _a;\r\n const element = createElement(options);\r\n const _uriMassage = function (part) {\r\n let data;\r\n try {\r\n data = parse(decodeURIComponent(part));\r\n }\r\n catch (e) {\r\n // ignore\r\n }\r\n if (!data) {\r\n return part;\r\n }\r\n data = cloneAndChange(data, value => {\r\n if (markdown.uris && markdown.uris[value]) {\r\n return URI.revive(markdown.uris[value]);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n return encodeURIComponent(JSON.stringify(data));\r\n };\r\n const _href = function (href, isDomUri) {\r\n const data = markdown.uris && markdown.uris[href];\r\n if (!data) {\r\n return href; // no uri exists\r\n }\r\n let uri = URI.revive(data);\r\n if (URI.parse(href).toString() === uri.toString()) {\r\n return href; // no tranformation performed\r\n }\r\n if (isDomUri) {\r\n // this URI will end up as \"src\"-attribute of a dom node\r\n // and because of that special rewriting needs to be done\r\n // so that the URI uses a protocol that's understood by\r\n // browsers (like http or https)\r\n return FileAccess.asBrowserUri(uri).toString(true);\r\n }\r\n if (uri.query) {\r\n uri = uri.with({ query: _uriMassage(uri.query) });\r\n }\r\n return uri.toString();\r\n };\r\n // signal to code-block render that the\r\n // element has been created\r\n let signalInnerHTML;\r\n const withInnerHTML = new Promise(c => signalInnerHTML = c);\r\n const renderer = new marked.Renderer();\r\n renderer.image = (href, title, text) => {\r\n let dimensions = [];\r\n let attributes = [];\r\n if (href) {\r\n ({ href, dimensions } = parseHrefAndDimensions(href));\r\n href = _href(href, true);\r\n try {\r\n const hrefAsUri = URI.parse(href);\r\n if (options.baseUrl && hrefAsUri.scheme === Schemas.file) { // absolute or relative local path, or file: uri\r\n href = resolvePath(options.baseUrl, href).toString();\r\n }\r\n }\r\n catch (err) { }\r\n attributes.push(`src=\"${href}\"`);\r\n }\r\n if (text) {\r\n attributes.push(`alt=\"${text}\"`);\r\n }\r\n if (title) {\r\n attributes.push(`title=\"${title}\"`);\r\n }\r\n if (dimensions.length) {\r\n attributes = attributes.concat(dimensions);\r\n }\r\n return '';\r\n };\r\n renderer.link = (href, title, text) => {\r\n // Remove markdown escapes. Workaround for https://github.com/chjj/marked/issues/829\r\n if (href === text) { // raw link case\r\n text = removeMarkdownEscapes(text);\r\n }\r\n href = _href(href, false);\r\n if (options.baseUrl) {\r\n const hasScheme = /^\\w[\\w\\d+.-]*:/.test(href);\r\n if (!hasScheme) {\r\n href = resolvePath(options.baseUrl, href).toString();\r\n }\r\n }\r\n title = removeMarkdownEscapes(title);\r\n href = removeMarkdownEscapes(href);\r\n if (!href\r\n || href.match(/^data:|javascript:/i)\r\n || (href.match(/^command:/i) && !markdown.isTrusted)\r\n || href.match(/^command:(\\/\\/\\/)?_workbench\\.downloadResource/i)) {\r\n // drop the link\r\n return text;\r\n }\r\n else {\r\n // HTML Encode href\r\n href = href.replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n return `
    ${text}`;\r\n }\r\n };\r\n renderer.paragraph = (text) => {\r\n if (markdown.supportThemeIcons) {\r\n const elements = renderLabelWithIcons(text);\r\n text = elements.map(e => typeof e === 'string' ? e : e.outerHTML).join('');\r\n }\r\n return `

    ${text}

    `;\r\n };\r\n if (options.codeBlockRenderer) {\r\n renderer.code = (code, lang) => {\r\n const value = options.codeBlockRenderer(lang, code);\r\n // when code-block rendering is async we return sync\r\n // but update the node with the real result later.\r\n const id = defaultGenerator.nextId();\r\n const promise = Promise.all([value, withInnerHTML]).then(values => {\r\n const span = element.querySelector(`div[data-code=\"${id}\"]`);\r\n if (span) {\r\n DOM.reset(span, values[0]);\r\n }\r\n }).catch(_err => {\r\n // ignore\r\n });\r\n if (options.asyncRenderCallback) {\r\n promise.then(options.asyncRenderCallback);\r\n }\r\n return `
    ${escape(code)}
    `;\r\n };\r\n }\r\n if (options.actionHandler) {\r\n const onClick = options.actionHandler.disposeables.add(new DomEmitter(element, 'click'));\r\n const onAuxClick = options.actionHandler.disposeables.add(new DomEmitter(element, 'auxclick'));\r\n options.actionHandler.disposeables.add(Event.any(onClick.event, onAuxClick.event)(e => {\r\n const mouseEvent = new StandardMouseEvent(e);\r\n if (!mouseEvent.leftButton && !mouseEvent.middleButton) {\r\n return;\r\n }\r\n let target = mouseEvent.target;\r\n if (target.tagName !== 'A') {\r\n target = target.parentElement;\r\n if (!target || target.tagName !== 'A') {\r\n return;\r\n }\r\n }\r\n try {\r\n const href = target.dataset['href'];\r\n if (href) {\r\n options.actionHandler.callback(href, mouseEvent);\r\n }\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n finally {\r\n mouseEvent.preventDefault();\r\n }\r\n }));\r\n }\r\n // Use our own sanitizer so that we can let through only spans.\r\n // Otherwise, we'd be letting all html be rendered.\r\n // If we want to allow markdown permitted tags, then we can delete sanitizer and sanitize.\r\n // We always pass the output through insane after this so that we don't rely on\r\n // marked for sanitization.\r\n markedOptions.sanitizer = (html) => {\r\n const match = markdown.isTrusted ? html.match(/^(]+>)|(<\\/\\s*span>)$/) : undefined;\r\n return match ? html : '';\r\n };\r\n markedOptions.sanitize = true;\r\n markedOptions.silent = true;\r\n markedOptions.renderer = renderer;\r\n // values that are too long will freeze the UI\r\n let value = (_a = markdown.value) !== null && _a !== void 0 ? _a : '';\r\n if (value.length > 100000) {\r\n value = `${value.substr(0, 100000)}…`;\r\n }\r\n // escape theme icons\r\n if (markdown.supportThemeIcons) {\r\n value = markdownEscapeEscapedIcons(value);\r\n }\r\n const renderedMarkdown = marked.parse(value, markedOptions);\r\n // sanitize with insane\r\n element.innerHTML = sanitizeRenderedMarkdown(markdown, renderedMarkdown);\r\n // signal that async code blocks can be now be inserted\r\n signalInnerHTML();\r\n // signal size changes for image tags\r\n if (options.asyncRenderCallback) {\r\n for (const img of element.getElementsByTagName('img')) {\r\n const listener = DOM.addDisposableListener(img, 'load', () => {\r\n listener.dispose();\r\n options.asyncRenderCallback();\r\n });\r\n }\r\n }\r\n return element;\r\n}\r\nfunction sanitizeRenderedMarkdown(options, renderedMarkdown) {\r\n var _a;\r\n const insaneOptions = getInsaneOptions(options);\r\n return (_a = _ttpInsane === null || _ttpInsane === void 0 ? void 0 : _ttpInsane.createHTML(renderedMarkdown, insaneOptions)) !== null && _a !== void 0 ? _a : insane(renderedMarkdown, insaneOptions);\r\n}\r\nfunction getInsaneOptions(options) {\r\n const allowedSchemes = [\r\n Schemas.http,\r\n Schemas.https,\r\n Schemas.mailto,\r\n Schemas.data,\r\n Schemas.file,\r\n Schemas.vscodeRemote,\r\n Schemas.vscodeRemoteResource,\r\n ];\r\n if (options.isTrusted) {\r\n allowedSchemes.push(Schemas.command);\r\n }\r\n return {\r\n allowedSchemes,\r\n // allowedTags should included everything that markdown renders to.\r\n // Since we have our own sanitize function for marked, it's possible we missed some tag so let insane make sure.\r\n // HTML tags that can result from markdown are from reading https://spec.commonmark.org/0.29/\r\n // HTML table tags that can result from markdown are from https://github.github.com/gfm/#tables-extension-\r\n allowedTags: ['ul', 'li', 'p', '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'],\r\n allowedAttributes: {\r\n 'a': ['href', 'name', 'target', 'data-href'],\r\n 'img': ['src', 'title', 'alt', 'width', 'height'],\r\n 'div': ['class', 'data-code'],\r\n 'span': ['class', 'style'],\r\n // https://github.com/microsoft/vscode/issues/95937\r\n 'th': ['align'],\r\n 'td': ['align']\r\n },\r\n filter(token) {\r\n if (token.tag === 'span' && options.isTrusted) {\r\n if (token.attrs['style'] && (Object.keys(token.attrs).length === 1)) {\r\n return !!token.attrs['style'].match(/^(color\\:#[0-9a-fA-F]+;)?(background-color\\:#[0-9a-fA-F]+;)?$/);\r\n }\r\n else if (token.attrs['class']) {\r\n // The class should match codicon rendering in src\\vs\\base\\common\\codicons.ts\r\n return !!token.attrs['class'].match(/^codicon codicon-[a-z\\-]+( codicon-modifier-[a-z\\-]+)?$/);\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar _a;\r\nimport { renderMarkdown } from '../../../base/browser/markdownRenderer.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { tokenizeToString } from '../../common/modes/textToHtmlTokenizer.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\n/**\r\n * Markdown renderer that can render codeblocks with the editor mechanics. This\r\n * renderer should always be preferred.\r\n */\r\nlet MarkdownRenderer = class MarkdownRenderer {\r\n constructor(_options, _modeService, _openerService) {\r\n this._options = _options;\r\n this._modeService = _modeService;\r\n this._openerService = _openerService;\r\n this._onDidRenderAsync = new Emitter();\r\n this.onDidRenderAsync = this._onDidRenderAsync.event;\r\n }\r\n dispose() {\r\n this._onDidRenderAsync.dispose();\r\n }\r\n render(markdown, options, markedOptions) {\r\n const disposables = new DisposableStore();\r\n let element;\r\n if (!markdown) {\r\n element = document.createElement('span');\r\n }\r\n else {\r\n element = renderMarkdown(markdown, Object.assign(Object.assign({}, this._getRenderOptions(markdown, disposables)), options), markedOptions);\r\n }\r\n return {\r\n element,\r\n dispose: () => disposables.dispose()\r\n };\r\n }\r\n _getRenderOptions(markdown, disposeables) {\r\n return {\r\n baseUrl: this._options.baseUrl,\r\n codeBlockRenderer: (languageAlias, value) => __awaiter(this, void 0, void 0, function* () {\r\n var _a, _b, _c, _d;\r\n // In markdown,\r\n // it is possible that we stumble upon language aliases (e.g.js instead of javascript)\r\n // it is possible no alias is given in which case we fall back to the current editor lang\r\n let modeId;\r\n if (languageAlias) {\r\n modeId = this._modeService.getModeIdForLanguageName(languageAlias);\r\n }\r\n else if (this._options.editor) {\r\n modeId = (_a = this._options.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLanguageIdentifier().language;\r\n }\r\n if (!modeId) {\r\n modeId = 'plaintext';\r\n }\r\n this._modeService.triggerMode(modeId);\r\n const tokenization = (_b = yield TokenizationRegistry.getPromise(modeId)) !== null && _b !== void 0 ? _b : undefined;\r\n const element = document.createElement('span');\r\n element.innerHTML = ((_d = (_c = MarkdownRenderer._ttpTokenizer) === null || _c === void 0 ? void 0 : _c.createHTML(value, tokenization)) !== null && _d !== void 0 ? _d : tokenizeToString(value, tokenization));\r\n // use \"good\" font\r\n let fontFamily = this._options.codeBlockFontFamily;\r\n if (this._options.editor) {\r\n fontFamily = this._options.editor.getOption(41 /* fontInfo */).fontFamily;\r\n }\r\n if (fontFamily) {\r\n element.style.fontFamily = fontFamily;\r\n }\r\n return element;\r\n }),\r\n asyncRenderCallback: () => this._onDidRenderAsync.fire(),\r\n actionHandler: {\r\n callback: (content) => this._openerService.open(content, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: markdown.isTrusted }).catch(onUnexpectedError),\r\n disposeables\r\n }\r\n };\r\n }\r\n};\r\nMarkdownRenderer._ttpTokenizer = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('tokenizeToString', {\r\n createHTML(value, tokenizer) {\r\n return tokenizeToString(value, tokenizer);\r\n }\r\n});\r\nMarkdownRenderer = __decorate([\r\n __param(1, IModeService),\r\n __param(2, IOpenerService)\r\n], MarkdownRenderer);\r\nexport { MarkdownRenderer };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { HoverProviderRegistry } from '../../common/modes.js';\r\nexport function getHover(model, position, token) {\r\n const supports = HoverProviderRegistry.ordered(model);\r\n const promises = supports.map(support => {\r\n return Promise.resolve(support.provideHover(model, position, token)).then(hover => {\r\n return hover && isValid(hover) ? hover : undefined;\r\n }, err => {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n });\r\n });\r\n return Promise.all(promises).then(coalesce);\r\n}\r\nregisterModelAndPositionCommand('_executeHoverProvider', (model, position) => getHover(model, position, CancellationToken.None));\r\nfunction isValid(result) {\r\n const hasRange = (typeof result.range !== 'undefined');\r\n const hasHtmlContent = typeof result.contents !== 'undefined' && result.contents && result.contents.length > 0;\r\n return hasRange && hasHtmlContent;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { MarkdownString, isEmptyMarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { MarkdownRenderer } from '../../browser/core/markdownRenderer.js';\r\nimport { asArray } from '../../../base/common/arrays.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { HoverProviderRegistry } from '../../common/modes.js';\r\nimport { getHover } from './getHover.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nconst $ = dom.$;\r\nexport class MarkdownHover {\r\n constructor(owner, range, contents) {\r\n this.owner = owner;\r\n this.range = range;\r\n this.contents = contents;\r\n }\r\n isValidForHoverAnchor(anchor) {\r\n return (anchor.type === 1 /* Range */\r\n && this.range.startColumn <= anchor.range.startColumn\r\n && this.range.endColumn >= anchor.range.endColumn);\r\n }\r\n}\r\nlet MarkdownHoverParticipant = class MarkdownHoverParticipant {\r\n constructor(_editor, _hover, _modeService, _openerService, _configurationService) {\r\n this._editor = _editor;\r\n this._hover = _hover;\r\n this._modeService = _modeService;\r\n this._openerService = _openerService;\r\n this._configurationService = _configurationService;\r\n }\r\n createLoadingMessage(anchor) {\r\n return new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))]);\r\n }\r\n computeSync(anchor, lineDecorations) {\r\n if (!this._editor.hasModel() || anchor.type !== 1 /* Range */) {\r\n return [];\r\n }\r\n const model = this._editor.getModel();\r\n const lineNumber = anchor.range.startLineNumber;\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n const result = [];\r\n for (const d of lineDecorations) {\r\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\r\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\r\n const hoverMessage = d.options.hoverMessage;\r\n if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\r\n continue;\r\n }\r\n const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\r\n result.push(new MarkdownHover(this, range, asArray(hoverMessage)));\r\n }\r\n const lineLength = this._editor.getModel().getLineLength(lineNumber);\r\n const maxTokenizationLineLength = this._configurationService.getValue('editor.maxTokenizationLineLength');\r\n if (typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\r\n result.push(new MarkdownHover(this, new Range(lineNumber, 1, lineNumber, lineLength + 1), [{\r\n value: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\r\n }]));\r\n }\r\n return result;\r\n }\r\n computeAsync(anchor, lineDecorations, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel() || anchor.type !== 1 /* Range */) {\r\n return Promise.resolve([]);\r\n }\r\n const model = this._editor.getModel();\r\n if (!HoverProviderRegistry.has(model)) {\r\n return Promise.resolve([]);\r\n }\r\n const hovers = yield getHover(model, new Position(anchor.range.startLineNumber, anchor.range.startColumn), token);\r\n const result = [];\r\n for (const hover of hovers) {\r\n if (isEmptyMarkdownString(hover.contents)) {\r\n continue;\r\n }\r\n const rng = hover.range ? Range.lift(hover.range) : anchor.range;\r\n result.push(new MarkdownHover(this, rng, hover.contents));\r\n }\r\n return result;\r\n });\r\n }\r\n renderHoverParts(hoverParts, fragment, statusBar) {\r\n const disposables = new DisposableStore();\r\n for (const hoverPart of hoverParts) {\r\n for (const contents of hoverPart.contents) {\r\n if (isEmptyMarkdownString(contents)) {\r\n continue;\r\n }\r\n const markdownHoverElement = $('div.hover-row.markdown-hover');\r\n const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\r\n const renderer = disposables.add(new MarkdownRenderer({ editor: this._editor }, this._modeService, this._openerService));\r\n disposables.add(renderer.onDidRenderAsync(() => {\r\n hoverContentsElement.className = 'hover-contents code-hover-contents';\r\n this._hover.onContentsChanged();\r\n }));\r\n const renderedContents = disposables.add(renderer.render(contents));\r\n hoverContentsElement.appendChild(renderedContents.element);\r\n fragment.appendChild(markdownHoverElement);\r\n }\r\n }\r\n return disposables;\r\n }\r\n};\r\nMarkdownHoverParticipant = __decorate([\r\n __param(2, IModeService),\r\n __param(3, IOpenerService),\r\n __param(4, IConfigurationService)\r\n], MarkdownHoverParticipant);\r\nexport { MarkdownHoverParticipant };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class HoverRangeAnchor {\r\n constructor(priority, range) {\r\n this.priority = priority;\r\n this.range = range;\r\n this.type = 1 /* Range */;\r\n }\r\n equals(other) {\r\n return (other.type === 1 /* Range */ && this.range.equalsRange(other.range));\r\n }\r\n canAdoptVisibleHover(lastAnchor, showAtPosition) {\r\n return (lastAnchor.type === 1 /* Range */ && showAtPosition.lineNumber === this.range.startLineNumber);\r\n }\r\n}\r\nexport class HoverForeignElementAnchor {\r\n constructor(priority, owner, range) {\r\n this.priority = priority;\r\n this.owner = owner;\r\n this.range = range;\r\n this.type = 2 /* ForeignElement */;\r\n }\r\n equals(other) {\r\n return (other.type === 2 /* ForeignElement */ && this.owner === other.owner);\r\n }\r\n canAdoptVisibleHover(lastAnchor, showAtPosition) {\r\n return (lastAnchor.type === 2 /* ForeignElement */ && this.owner === lastAnchor.owner);\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./ghostText.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./ghostText.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar _a;\r\nimport './ghostText.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Disposable, DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { RenderLineInput, renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\r\nimport { Configuration } from '../../browser/config/configuration.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { ghostTextBorder, ghostTextForeground } from '../../common/view/editorColorRegistry.js';\r\nimport { RGBA, Color } from '../../../base/common/color.js';\r\nimport { CursorColumns } from '../../common/controller/cursorCommon.js';\r\nimport { LineDecoration } from '../../common/viewLayout/lineDecorations.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('editorGhostText', { createHTML: value => value });\r\nlet GhostTextWidget = class GhostTextWidget extends Disposable {\r\n constructor(editor, model, instantiationService) {\r\n super();\r\n this.editor = editor;\r\n this.model = model;\r\n this.instantiationService = instantiationService;\r\n this.disposed = false;\r\n this.partsWidget = this._register(this.instantiationService.createInstance(DecorationsWidget, this.editor));\r\n this.additionalLinesWidget = this._register(new AdditionalLinesWidget(this.editor));\r\n this.viewMoreContentWidget = undefined;\r\n this._register(this.editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(27 /* disableMonospaceOptimizations */)\r\n || e.hasChanged(104 /* stopRenderingLineAfter */)\r\n || e.hasChanged(87 /* renderWhitespace */)\r\n || e.hasChanged(81 /* renderControlCharacters */)\r\n || e.hasChanged(42 /* fontLigatures */)\r\n || e.hasChanged(41 /* fontInfo */)\r\n || e.hasChanged(57 /* lineHeight */)) {\r\n this.update();\r\n }\r\n }));\r\n this._register(toDisposable(() => {\r\n var _a;\r\n this.disposed = true;\r\n this.update();\r\n (_a = this.viewMoreContentWidget) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this.viewMoreContentWidget = undefined;\r\n }));\r\n this._register(model.onDidChange(() => {\r\n this.update();\r\n }));\r\n this.update();\r\n }\r\n shouldShowHoverAtViewZone(viewZoneId) {\r\n return (this.additionalLinesWidget.viewZoneId === viewZoneId);\r\n }\r\n update() {\r\n var _a;\r\n const ghostText = this.model.ghostText;\r\n if (!this.editor.hasModel() || !ghostText || this.disposed) {\r\n this.partsWidget.clear();\r\n this.additionalLinesWidget.clear();\r\n return;\r\n }\r\n const inlineTexts = new Array();\r\n const additionalLines = new Array();\r\n function addToAdditionalLines(lines, className) {\r\n if (additionalLines.length > 0) {\r\n const lastLine = additionalLines[additionalLines.length - 1];\r\n if (className) {\r\n lastLine.decorations.push(new LineDecoration(lastLine.content.length + 1, lastLine.content.length + 1 + lines[0].length, className, 0 /* Regular */));\r\n }\r\n lastLine.content += lines[0];\r\n lines = lines.slice(1);\r\n }\r\n for (const line of lines) {\r\n additionalLines.push({\r\n content: line,\r\n decorations: className ? [new LineDecoration(1, line.length + 1, className, 0 /* Regular */)] : []\r\n });\r\n }\r\n }\r\n const textBufferLine = this.editor.getModel().getLineContent(ghostText.lineNumber);\r\n this.editor.getModel().getLineTokens(ghostText.lineNumber);\r\n let hiddenTextStartColumn = undefined;\r\n let lastIdx = 0;\r\n for (const part of ghostText.parts) {\r\n let lines = part.lines;\r\n if (hiddenTextStartColumn === undefined) {\r\n inlineTexts.push({\r\n column: part.column,\r\n text: lines[0],\r\n });\r\n lines = lines.slice(1);\r\n }\r\n else {\r\n addToAdditionalLines([textBufferLine.substring(lastIdx, part.column - 1)], undefined);\r\n }\r\n if (lines.length > 0) {\r\n addToAdditionalLines(lines, 'ghost-text');\r\n if (hiddenTextStartColumn === undefined && part.column <= textBufferLine.length) {\r\n hiddenTextStartColumn = part.column;\r\n }\r\n }\r\n lastIdx = part.column - 1;\r\n }\r\n if (hiddenTextStartColumn !== undefined) {\r\n addToAdditionalLines([textBufferLine.substring(lastIdx)], undefined);\r\n }\r\n this.partsWidget.setParts(ghostText.lineNumber, inlineTexts, hiddenTextStartColumn !== undefined ? { column: hiddenTextStartColumn, length: textBufferLine.length + 1 - hiddenTextStartColumn } : undefined);\r\n this.additionalLinesWidget.updateLines(ghostText.lineNumber, additionalLines, ghostText.additionalReservedLineCount);\r\n if (ghostText.parts.some(p => p.lines.length < 0)) {\r\n // Not supported at the moment, condition is always false.\r\n this.viewMoreContentWidget = this.renderViewMoreLines(new Position(ghostText.lineNumber, this.editor.getModel().getLineMaxColumn(ghostText.lineNumber)), '', 0);\r\n }\r\n else {\r\n (_a = this.viewMoreContentWidget) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this.viewMoreContentWidget = undefined;\r\n }\r\n }\r\n renderViewMoreLines(position, firstLineText, remainingLinesLength) {\r\n const fontInfo = this.editor.getOption(41 /* fontInfo */);\r\n const domNode = document.createElement('div');\r\n domNode.className = 'suggest-preview-additional-widget';\r\n Configuration.applyFontInfoSlow(domNode, fontInfo);\r\n const spacer = document.createElement('span');\r\n spacer.className = 'content-spacer';\r\n spacer.append(firstLineText);\r\n domNode.append(spacer);\r\n const newline = document.createElement('span');\r\n newline.className = 'content-newline suggest-preview-text';\r\n newline.append('⏎ ');\r\n domNode.append(newline);\r\n const disposableStore = new DisposableStore();\r\n const button = document.createElement('div');\r\n button.className = 'button suggest-preview-text';\r\n button.append(`+${remainingLinesLength} lines…`);\r\n disposableStore.add(dom.addStandardDisposableListener(button, 'mousedown', (e) => {\r\n var _a;\r\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.setExpanded(true);\r\n e.preventDefault();\r\n this.editor.focus();\r\n }));\r\n domNode.append(button);\r\n return new ViewMoreLinesContentWidget(this.editor, position, domNode, disposableStore);\r\n }\r\n};\r\nGhostTextWidget = __decorate([\r\n __param(2, IInstantiationService)\r\n], GhostTextWidget);\r\nexport { GhostTextWidget };\r\nlet DecorationsWidget = class DecorationsWidget {\r\n constructor(editor, codeEditorService, themeService, contextKeyService) {\r\n this.editor = editor;\r\n this.codeEditorService = codeEditorService;\r\n this.themeService = themeService;\r\n this.contextKeyService = contextKeyService;\r\n this.decorationIds = [];\r\n this.disposableStore = new DisposableStore();\r\n }\r\n dispose() {\r\n this.clear();\r\n this.disposableStore.dispose();\r\n }\r\n clear() {\r\n this.editor.deltaDecorations(this.decorationIds, []);\r\n this.disposableStore.clear();\r\n }\r\n setParts(lineNumber, parts, hiddenText) {\r\n this.disposableStore.clear();\r\n const colorTheme = this.themeService.getColorTheme();\r\n const foreground = colorTheme.getColor(ghostTextForeground);\r\n let opacity = undefined;\r\n let color = undefined;\r\n if (foreground) {\r\n opacity = String(foreground.rgba.a);\r\n color = Color.Format.CSS.format(opaque(foreground));\r\n }\r\n const borderColor = colorTheme.getColor(ghostTextBorder);\r\n let border = undefined;\r\n if (borderColor) {\r\n border = `2px dashed ${borderColor}`;\r\n }\r\n const textModel = this.editor.getModel();\r\n if (!textModel) {\r\n return;\r\n }\r\n const { tabSize } = textModel.getOptions();\r\n const line = textModel.getLineContent(lineNumber) || '';\r\n let lastIndex = 0;\r\n let currentLinePrefix = '';\r\n const hiddenTextDecorations = new Array();\r\n if (hiddenText) {\r\n hiddenTextDecorations.push({\r\n range: Range.fromPositions(new Position(lineNumber, hiddenText.column), new Position(lineNumber, hiddenText.column + hiddenText.length)),\r\n options: {\r\n inlineClassName: 'ghost-text-hidden',\r\n description: 'ghost-text-hidden'\r\n }\r\n });\r\n }\r\n const key = this.contextKeyService.getContextKeyValue('config.editor.useInjectedText');\r\n const shouldUseInjectedText = key === undefined ? true : !!key;\r\n this.decorationIds = this.editor.deltaDecorations(this.decorationIds, parts.map(p => {\r\n currentLinePrefix += line.substring(lastIndex, p.column - 1);\r\n lastIndex = p.column - 1;\r\n // To avoid visual confusion, we don't want to render visible whitespace\r\n const contentText = shouldUseInjectedText ? p.text : this.renderSingleLineText(p.text, currentLinePrefix, tabSize, false);\r\n const decorationType = this.disposableStore.add(registerDecorationType(this.codeEditorService, 'ghost-text', '0-ghost-text-', {\r\n after: {\r\n // TODO: escape?\r\n contentText,\r\n opacity,\r\n color,\r\n border,\r\n },\r\n }));\r\n return ({\r\n range: Range.fromPositions(new Position(lineNumber, p.column)),\r\n options: shouldUseInjectedText ? {\r\n description: 'ghost-text',\r\n after: { content: contentText, inlineClassName: 'ghost-text-decoration' }\r\n } : Object.assign({}, decorationType.resolve())\r\n });\r\n }).concat(hiddenTextDecorations));\r\n }\r\n renderSingleLineText(text, lineStart, tabSize, renderWhitespace) {\r\n const newLine = lineStart + text;\r\n const visibleColumnsByColumns = CursorColumns.visibleColumnsByColumns(newLine, tabSize);\r\n let contentText = '';\r\n let curCol = lineStart.length + 1;\r\n for (const c of text) {\r\n if (c === '\\t') {\r\n const width = visibleColumnsByColumns[curCol + 1] - visibleColumnsByColumns[curCol];\r\n if (renderWhitespace) {\r\n contentText += '→';\r\n for (let i = 1; i < width; i++) {\r\n contentText += '\\xa0';\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < width; i++) {\r\n contentText += '\\xa0';\r\n }\r\n }\r\n }\r\n else if (c === ' ') {\r\n if (renderWhitespace) {\r\n contentText += '·';\r\n }\r\n else {\r\n contentText += '\\xa0';\r\n }\r\n }\r\n else {\r\n contentText += c;\r\n }\r\n curCol += 1;\r\n }\r\n return contentText;\r\n }\r\n};\r\nDecorationsWidget = __decorate([\r\n __param(1, ICodeEditorService),\r\n __param(2, IThemeService),\r\n __param(3, IContextKeyService)\r\n], DecorationsWidget);\r\nfunction opaque(color) {\r\n const { r, b, g } = color.rgba;\r\n return new Color(new RGBA(r, g, b, 255));\r\n}\r\nclass AdditionalLinesWidget {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this._viewZoneId = undefined;\r\n }\r\n get viewZoneId() { return this._viewZoneId; }\r\n dispose() {\r\n this.clear();\r\n }\r\n clear() {\r\n this.editor.changeViewZones((changeAccessor) => {\r\n if (this._viewZoneId) {\r\n changeAccessor.removeZone(this._viewZoneId);\r\n this._viewZoneId = undefined;\r\n }\r\n });\r\n }\r\n updateLines(lineNumber, additionalLines, minReservedLineCount) {\r\n const textModel = this.editor.getModel();\r\n if (!textModel) {\r\n return;\r\n }\r\n const { tabSize } = textModel.getOptions();\r\n this.editor.changeViewZones((changeAccessor) => {\r\n if (this._viewZoneId) {\r\n changeAccessor.removeZone(this._viewZoneId);\r\n this._viewZoneId = undefined;\r\n }\r\n const heightInLines = Math.max(additionalLines.length, minReservedLineCount);\r\n if (heightInLines > 0) {\r\n const domNode = document.createElement('div');\r\n renderLines(domNode, tabSize, additionalLines, this.editor.getOptions());\r\n this._viewZoneId = changeAccessor.addZone({\r\n afterLineNumber: lineNumber,\r\n heightInLines: heightInLines,\r\n domNode,\r\n });\r\n }\r\n });\r\n }\r\n}\r\nfunction renderLines(domNode, tabSize, lines, opts) {\r\n const disableMonospaceOptimizations = opts.get(27 /* disableMonospaceOptimizations */);\r\n const stopRenderingLineAfter = opts.get(104 /* stopRenderingLineAfter */);\r\n // To avoid visual confusion, we don't want to render visible whitespace\r\n const renderWhitespace = 'none';\r\n const renderControlCharacters = opts.get(81 /* renderControlCharacters */);\r\n const fontLigatures = opts.get(42 /* fontLigatures */);\r\n const fontInfo = opts.get(41 /* fontInfo */);\r\n const lineHeight = opts.get(57 /* lineHeight */);\r\n const sb = createStringBuilder(10000);\r\n sb.appendASCIIString('
    ');\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n const lineData = lines[i];\r\n const line = lineData.content;\r\n sb.appendASCIIString('
    ');\r\n const isBasicASCII = strings.isBasicASCII(line);\r\n const containsRTL = strings.containsRTL(line);\r\n const lineTokens = LineTokens.createEmpty(line);\r\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);\r\n sb.appendASCIIString('
    ');\r\n }\r\n sb.appendASCIIString('
    ');\r\n Configuration.applyFontInfoSlow(domNode, fontInfo);\r\n const html = sb.build();\r\n const trustedhtml = ttPolicy ? ttPolicy.createHTML(html) : html;\r\n domNode.innerHTML = trustedhtml;\r\n}\r\nlet keyCounter = 0;\r\nfunction registerDecorationType(service, description, keyPrefix, options) {\r\n const key = keyPrefix + (keyCounter++);\r\n service.registerDecorationType(description, key, options);\r\n return {\r\n dispose() {\r\n service.removeDecorationType(key);\r\n },\r\n resolve() {\r\n return service.resolveDecorationOptions(key, true);\r\n }\r\n };\r\n}\r\nclass ViewMoreLinesContentWidget extends Disposable {\r\n constructor(editor, position, domNode, disposableStore) {\r\n super();\r\n this.editor = editor;\r\n this.position = position;\r\n this.domNode = domNode;\r\n this.allowEditorOverflow = false;\r\n this.suppressMouseDown = false;\r\n this._register(disposableStore);\r\n this._register(toDisposable(() => {\r\n this.editor.removeContentWidget(this);\r\n }));\r\n this.editor.addContentWidget(this);\r\n }\r\n getId() {\r\n return 'editor.widget.viewMoreLinesWidget';\r\n }\r\n getDomNode() {\r\n return this.domNode;\r\n }\r\n getPosition() {\r\n return {\r\n position: this.position,\r\n preference: [0 /* EXACT */]\r\n };\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const foreground = theme.getColor(ghostTextForeground);\r\n if (foreground) {\r\n const opacity = String(foreground.rgba.a);\r\n const color = Color.Format.CSS.format(opaque(foreground));\r\n collector.addRule(`.monaco-editor .ghost-text-decoration { opacity: ${opacity}; color: ${color}; }`);\r\n collector.addRule(`.monaco-editor .suggest-preview-text .ghost-text { opacity: ${opacity}; color: ${color}; }`);\r\n }\r\n const border = theme.getColor(ghostTextBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-editor .suggest-preview-text .ghost-text { border: 2px dashed ${border}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class GhostText {\r\n constructor(lineNumber, parts, additionalReservedLineCount = 0) {\r\n this.lineNumber = lineNumber;\r\n this.parts = parts;\r\n this.additionalReservedLineCount = additionalReservedLineCount;\r\n }\r\n static equals(a, b) {\r\n return a === b || (!!a && !!b && a.equals(b));\r\n }\r\n equals(other) {\r\n return this.lineNumber === other.lineNumber &&\r\n this.parts.length === other.parts.length &&\r\n this.parts.every((part, index) => part.equals(other.parts[index]));\r\n }\r\n}\r\nexport class GhostTextPart {\r\n constructor(column, lines) {\r\n this.column = column;\r\n this.lines = lines;\r\n }\r\n equals(other) {\r\n return this.column === other.column &&\r\n this.lines.length === other.lines.length &&\r\n this.lines.every((line, index) => line === other.lines[index]);\r\n }\r\n}\r\nexport class BaseGhostTextWidgetModel extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this.editor = editor;\r\n this._expanded = undefined;\r\n this.onDidChangeEmitter = new Emitter();\r\n this.onDidChange = this.onDidChangeEmitter.event;\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(105 /* suggest */) && this._expanded === undefined) {\r\n this.onDidChangeEmitter.fire();\r\n }\r\n }));\r\n }\r\n get expanded() {\r\n if (this._expanded === undefined) {\r\n // TODO this should use a global hidden setting.\r\n // See https://github.com/microsoft/vscode/issues/125037.\r\n return true;\r\n }\r\n return this._expanded;\r\n }\r\n setExpanded(expanded) {\r\n this._expanded = true;\r\n this.onDidChangeEmitter.fire();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { createCancelablePromise, RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, MutableDisposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { InlineCompletionsProviderRegistry, InlineCompletionTriggerKind } from '../../common/modes.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { RedoCommand, UndoCommand } from '../../browser/editorExtensions.js';\r\nimport { CoreEditingCommands } from '../../browser/controller/coreCommands.js';\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport { GhostText, BaseGhostTextWidgetModel, GhostTextPart } from './ghostText.js';\r\nlet InlineCompletionsModel = class InlineCompletionsModel extends Disposable {\r\n constructor(editor, commandService) {\r\n super();\r\n this.editor = editor;\r\n this.commandService = commandService;\r\n this.onDidChangeEmitter = new Emitter();\r\n this.onDidChange = this.onDidChangeEmitter.event;\r\n this.completionSession = this._register(new MutableDisposable());\r\n this.active = false;\r\n this._register(commandService.onDidExecuteCommand(e => {\r\n // These commands don't trigger onDidType.\r\n const commands = new Set([\r\n UndoCommand.id,\r\n RedoCommand.id,\r\n CoreEditingCommands.Tab.id,\r\n CoreEditingCommands.DeleteLeft.id,\r\n CoreEditingCommands.DeleteRight.id\r\n ]);\r\n if (commands.has(e.commandId) && editor.hasTextFocus()) {\r\n this.handleUserInput();\r\n }\r\n }));\r\n this._register(this.editor.onDidType((e) => {\r\n this.handleUserInput();\r\n }));\r\n this._register(this.editor.onDidChangeCursorPosition((e) => {\r\n if (this.session && !this.session.isValid) {\r\n this.hide();\r\n }\r\n }));\r\n }\r\n handleUserInput() {\r\n if (this.session && !this.session.isValid) {\r\n this.hide();\r\n }\r\n setTimeout(() => {\r\n // Wait for the cursor update that happens in the same iteration loop iteration\r\n this.startSessionIfTriggered();\r\n }, 0);\r\n }\r\n get session() {\r\n return this.completionSession.value;\r\n }\r\n get ghostText() {\r\n var _a;\r\n return (_a = this.session) === null || _a === void 0 ? void 0 : _a.ghostText;\r\n }\r\n get minReservedLineCount() {\r\n return this.session ? this.session.minReservedLineCount : 0;\r\n }\r\n get expanded() {\r\n return this.session ? this.session.expanded : false;\r\n }\r\n setExpanded(expanded) {\r\n var _a;\r\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.setExpanded(expanded);\r\n }\r\n setActive(active) {\r\n var _a;\r\n this.active = active;\r\n if (active) {\r\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.scheduleAutomaticUpdate();\r\n }\r\n }\r\n startSessionIfTriggered() {\r\n const suggestOptions = this.editor.getOption(53 /* inlineSuggest */);\r\n if (!suggestOptions.enabled) {\r\n return;\r\n }\r\n if (this.session && this.session.isValid) {\r\n return;\r\n }\r\n this.trigger();\r\n }\r\n trigger() {\r\n if (this.completionSession.value) {\r\n return;\r\n }\r\n this.completionSession.value = new InlineCompletionsSession(this.editor, this.editor.getPosition(), () => this.active, this.commandService);\r\n this.completionSession.value.takeOwnership(this.completionSession.value.onDidChange(() => {\r\n this.onDidChangeEmitter.fire();\r\n }));\r\n }\r\n hide() {\r\n this.completionSession.clear();\r\n this.onDidChangeEmitter.fire();\r\n }\r\n commitCurrentSuggestion() {\r\n var _a;\r\n // Don't dispose the session, so that after committing, more suggestions are shown.\r\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.commitCurrentCompletion();\r\n }\r\n showNext() {\r\n var _a;\r\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.showNextInlineCompletion();\r\n }\r\n showPrevious() {\r\n var _a;\r\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.showPreviousInlineCompletion();\r\n }\r\n hasMultipleInlineCompletions() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield ((_a = this.session) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\r\n return result !== undefined ? result : false;\r\n });\r\n }\r\n};\r\nInlineCompletionsModel = __decorate([\r\n __param(1, ICommandService)\r\n], InlineCompletionsModel);\r\nexport { InlineCompletionsModel };\r\nexport class InlineCompletionsSession extends BaseGhostTextWidgetModel {\r\n constructor(editor, triggerPosition, shouldUpdate, commandService) {\r\n super(editor);\r\n this.triggerPosition = triggerPosition;\r\n this.shouldUpdate = shouldUpdate;\r\n this.commandService = commandService;\r\n this.minReservedLineCount = 0;\r\n this.updateOperation = this._register(new MutableDisposable());\r\n this.cache = this._register(new MutableDisposable());\r\n this.updateSoon = this._register(new RunOnceScheduler(() => this.update(InlineCompletionTriggerKind.Automatic), 50));\r\n this.textModel = this.editor.getModel();\r\n //#region Selection\r\n // We use a semantic id to track the selection even if the cache changes.\r\n this.currentlySelectedCompletionId = undefined;\r\n let lastCompletionItem = undefined;\r\n this._register(this.onDidChange(() => {\r\n const currentCompletion = this.currentCompletion;\r\n if (currentCompletion && currentCompletion.sourceInlineCompletion !== lastCompletionItem) {\r\n lastCompletionItem = currentCompletion.sourceInlineCompletion;\r\n const provider = currentCompletion.sourceProvider;\r\n if (provider.handleItemDidShow) {\r\n provider.handleItemDidShow(currentCompletion.sourceInlineCompletions, lastCompletionItem);\r\n }\r\n }\r\n }));\r\n this._register(this.editor.onDidChangeCursorPosition((e) => {\r\n if (this.cache.value) {\r\n this.onDidChangeEmitter.fire();\r\n }\r\n }));\r\n this._register(this.editor.onDidChangeModelContent((e) => {\r\n if (this.cache.value) {\r\n let hasChanged = false;\r\n for (const c of this.cache.value.completions) {\r\n const newRange = this.textModel.getDecorationRange(c.decorationId);\r\n if (!newRange) {\r\n onUnexpectedError(new Error('Decoration has no range'));\r\n continue;\r\n }\r\n if (!c.synchronizedRange.equalsRange(newRange)) {\r\n hasChanged = true;\r\n c.synchronizedRange = newRange;\r\n }\r\n }\r\n if (hasChanged) {\r\n this.onDidChangeEmitter.fire();\r\n }\r\n }\r\n this.scheduleAutomaticUpdate();\r\n }));\r\n this._register(InlineCompletionsProviderRegistry.onDidChange(() => {\r\n this.updateSoon.schedule();\r\n }));\r\n this.scheduleAutomaticUpdate();\r\n }\r\n fixAndGetIndexOfCurrentSelection() {\r\n if (!this.currentlySelectedCompletionId || !this.cache.value) {\r\n return 0;\r\n }\r\n if (this.cache.value.completions.length === 0) {\r\n // don't reset the selection in this case\r\n return 0;\r\n }\r\n const idx = this.cache.value.completions.findIndex(v => v.semanticId === this.currentlySelectedCompletionId);\r\n if (idx === -1) {\r\n // Reset the selection so that the selection does not jump back when it appears again\r\n this.currentlySelectedCompletionId = undefined;\r\n return 0;\r\n }\r\n return idx;\r\n }\r\n get currentCachedCompletion() {\r\n if (!this.cache.value) {\r\n return undefined;\r\n }\r\n return this.cache.value.completions[this.fixAndGetIndexOfCurrentSelection()];\r\n }\r\n showNextInlineCompletion() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.ensureUpdateWithExplicitContext();\r\n const completions = ((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions) || [];\r\n if (completions.length > 0) {\r\n const newIdx = (this.fixAndGetIndexOfCurrentSelection() + 1) % completions.length;\r\n this.currentlySelectedCompletionId = completions[newIdx].semanticId;\r\n }\r\n else {\r\n this.currentlySelectedCompletionId = undefined;\r\n }\r\n this.onDidChangeEmitter.fire();\r\n });\r\n }\r\n showPreviousInlineCompletion() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.ensureUpdateWithExplicitContext();\r\n const completions = ((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions) || [];\r\n if (completions.length > 0) {\r\n const newIdx = (this.fixAndGetIndexOfCurrentSelection() + completions.length - 1) % completions.length;\r\n this.currentlySelectedCompletionId = completions[newIdx].semanticId;\r\n }\r\n else {\r\n this.currentlySelectedCompletionId = undefined;\r\n }\r\n this.onDidChangeEmitter.fire();\r\n });\r\n }\r\n ensureUpdateWithExplicitContext() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.updateOperation.value) {\r\n // Restart or wait for current update operation\r\n if (this.updateOperation.value.triggerKind === InlineCompletionTriggerKind.Explicit) {\r\n yield this.updateOperation.value.promise;\r\n }\r\n else {\r\n yield this.update(InlineCompletionTriggerKind.Explicit);\r\n }\r\n }\r\n else if (((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.triggerKind) !== InlineCompletionTriggerKind.Explicit) {\r\n // Refresh cache\r\n yield this.update(InlineCompletionTriggerKind.Explicit);\r\n }\r\n });\r\n }\r\n hasMultipleInlineCompletions() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.ensureUpdateWithExplicitContext();\r\n return (((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions.length) || 0) > 1;\r\n });\r\n }\r\n //#endregion\r\n get ghostText() {\r\n const currentCompletion = this.currentCompletion;\r\n const mode = this.editor.getOptions().get(53 /* inlineSuggest */).mode;\r\n return currentCompletion ? inlineCompletionToGhostText(currentCompletion, this.editor.getModel(), mode, this.editor.getPosition()) : undefined;\r\n }\r\n get currentCompletion() {\r\n const completion = this.currentCachedCompletion;\r\n if (!completion) {\r\n return undefined;\r\n }\r\n return {\r\n text: completion.inlineCompletion.text,\r\n range: completion.synchronizedRange,\r\n command: completion.inlineCompletion.command,\r\n sourceProvider: completion.inlineCompletion.sourceProvider,\r\n sourceInlineCompletions: completion.inlineCompletion.sourceInlineCompletions,\r\n sourceInlineCompletion: completion.inlineCompletion.sourceInlineCompletion,\r\n };\r\n }\r\n get isValid() {\r\n return this.editor.getPosition().lineNumber === this.triggerPosition.lineNumber;\r\n }\r\n scheduleAutomaticUpdate() {\r\n // Since updateSoon debounces, starvation can happen.\r\n // To prevent stale cache, we clear the current update operation.\r\n this.updateOperation.clear();\r\n this.updateSoon.schedule();\r\n }\r\n update(triggerKind) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.shouldUpdate()) {\r\n return;\r\n }\r\n const position = this.editor.getPosition();\r\n const promise = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\r\n let result;\r\n try {\r\n result = yield provideInlineCompletions(position, this.editor.getModel(), { triggerKind }, token);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return;\r\n }\r\n if (token.isCancellationRequested) {\r\n return;\r\n }\r\n this.cache.value = new SynchronizedInlineCompletionsCache(this.editor, result, () => this.onDidChangeEmitter.fire(), triggerKind);\r\n this.onDidChangeEmitter.fire();\r\n }));\r\n const operation = new UpdateOperation(promise, triggerKind);\r\n this.updateOperation.value = operation;\r\n yield promise;\r\n if (this.updateOperation.value === operation) {\r\n this.updateOperation.clear();\r\n }\r\n });\r\n }\r\n takeOwnership(disposable) {\r\n this._register(disposable);\r\n }\r\n commitCurrentCompletion() {\r\n if (!this.ghostText) {\r\n // No ghost text was shown for this completion.\r\n // Thus, we don't want to commit anything.\r\n return;\r\n }\r\n const completion = this.currentCompletion;\r\n if (completion) {\r\n this.commit(completion);\r\n }\r\n }\r\n commit(completion) {\r\n // Mark the cache as stale, but don't dispose it yet,\r\n // otherwise command args might get disposed.\r\n const cache = this.cache.clearAndLeak();\r\n this.editor.executeEdits('inlineSuggestion.accept', [\r\n EditOperation.replaceMove(completion.range, completion.text)\r\n ]);\r\n if (completion.command) {\r\n this.commandService\r\n .executeCommand(completion.command.id, ...(completion.command.arguments || []))\r\n .finally(() => {\r\n cache === null || cache === void 0 ? void 0 : cache.dispose();\r\n })\r\n .then(undefined, onUnexpectedExternalError);\r\n }\r\n else {\r\n cache === null || cache === void 0 ? void 0 : cache.dispose();\r\n }\r\n this.onDidChangeEmitter.fire();\r\n }\r\n}\r\nclass UpdateOperation {\r\n constructor(promise, triggerKind) {\r\n this.promise = promise;\r\n this.triggerKind = triggerKind;\r\n }\r\n dispose() {\r\n this.promise.cancel();\r\n }\r\n}\r\n/**\r\n * The cache keeps itself in sync with the editor.\r\n * It also owns the completions result and disposes it when the cache is diposed.\r\n*/\r\nclass SynchronizedInlineCompletionsCache extends Disposable {\r\n constructor(editor, completionsSource, onChange, triggerKind) {\r\n super();\r\n this.triggerKind = triggerKind;\r\n const decorationIds = editor.deltaDecorations([], completionsSource.items.map(i => ({\r\n range: i.range,\r\n options: {\r\n description: 'inline-completion-tracking-range'\r\n },\r\n })));\r\n this._register(toDisposable(() => {\r\n editor.deltaDecorations(decorationIds, []);\r\n }));\r\n this.completions = completionsSource.items.map((c, idx) => new CachedInlineCompletion(c, decorationIds[idx]));\r\n this._register(editor.onDidChangeModelContent(() => {\r\n let hasChanged = false;\r\n const model = editor.getModel();\r\n for (const c of this.completions) {\r\n const newRange = model.getDecorationRange(c.decorationId);\r\n if (!newRange) {\r\n onUnexpectedError(new Error('Decoration has no range'));\r\n continue;\r\n }\r\n if (!c.synchronizedRange.equalsRange(newRange)) {\r\n hasChanged = true;\r\n c.synchronizedRange = newRange;\r\n }\r\n }\r\n if (hasChanged) {\r\n onChange();\r\n }\r\n }));\r\n this._register(completionsSource);\r\n }\r\n}\r\nclass CachedInlineCompletion {\r\n constructor(inlineCompletion, decorationId) {\r\n this.inlineCompletion = inlineCompletion;\r\n this.decorationId = decorationId;\r\n this.semanticId = JSON.stringify({\r\n text: this.inlineCompletion.text,\r\n startLine: this.inlineCompletion.range.startLineNumber,\r\n startColumn: this.inlineCompletion.range.startColumn,\r\n command: this.inlineCompletion.command\r\n });\r\n this.synchronizedRange = inlineCompletion.range;\r\n }\r\n}\r\nexport function inlineCompletionToGhostText(inlineCompletion, textModel, mode, cursorPosition) {\r\n if (inlineCompletion.range.startLineNumber !== inlineCompletion.range.endLineNumber) {\r\n // Only single line replacements are supported.\r\n return undefined;\r\n }\r\n // This is a single line string\r\n const valueToBeReplaced = textModel.getValueInRange(inlineCompletion.range);\r\n const changes = cachingDiff(valueToBeReplaced, inlineCompletion.text);\r\n const lineNumber = inlineCompletion.range.startLineNumber;\r\n const parts = new Array();\r\n if (mode === 'prefix') {\r\n const filteredChanges = changes.filter(c => c.originalLength === 0);\r\n if (filteredChanges.length > 1 || filteredChanges.length === 1 && filteredChanges[0].originalStart !== valueToBeReplaced.length) {\r\n // Prefixes only have a single change.\r\n return undefined;\r\n }\r\n }\r\n for (const c of changes) {\r\n const insertColumn = inlineCompletion.range.startColumn + c.originalStart + c.originalLength;\r\n if (mode === 'subwordSmart' && cursorPosition && cursorPosition.lineNumber === inlineCompletion.range.startLineNumber && insertColumn < cursorPosition.column) {\r\n // No ghost text before cursor\r\n return undefined;\r\n }\r\n if (c.originalLength > 0) {\r\n const originalText = valueToBeReplaced.substr(c.originalStart, c.originalLength);\r\n const firstNonWsCol = textModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n if (!(/^(\\t| )*$/.test(originalText) && (firstNonWsCol === 0 || insertColumn <= firstNonWsCol))) {\r\n return undefined;\r\n }\r\n }\r\n if (c.modifiedLength === 0) {\r\n continue;\r\n }\r\n const text = inlineCompletion.text.substr(c.modifiedStart, c.modifiedLength);\r\n const lines = strings.splitLines(text);\r\n parts.push(new GhostTextPart(insertColumn, lines));\r\n }\r\n return new GhostText(lineNumber, parts, 0);\r\n}\r\nlet lastRequest = undefined;\r\nfunction cachingDiff(originalValue, newValue) {\r\n if ((lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.originalValue) === originalValue && (lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.newValue) === newValue) {\r\n return lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.changes;\r\n }\r\n else {\r\n const changes = smartDiff(originalValue, newValue);\r\n lastRequest = {\r\n originalValue,\r\n newValue,\r\n changes\r\n };\r\n return changes;\r\n }\r\n}\r\n/**\r\n * When matching `if ()` with `if (f() = 1) { g(); }`,\r\n * align it like this: `if ( )`\r\n * Not like this:\t\t\t `if ( )`\r\n * Also not like this:\t\t `if ( )`.\r\n *\r\n * The parenthesis are preprocessed to ensure that they match correctly.\r\n */\r\nfunction smartDiff(originalValue, newValue) {\r\n function getMaxCharCode(val) {\r\n let maxCharCode = 0;\r\n for (let i = 0, len = val.length; i < len; i++) {\r\n const charCode = val.charCodeAt(i);\r\n if (charCode > maxCharCode) {\r\n maxCharCode = charCode;\r\n }\r\n }\r\n return maxCharCode;\r\n }\r\n const maxCharCode = Math.max(getMaxCharCode(originalValue), getMaxCharCode(newValue));\r\n function getUniqueCharCode(id) {\r\n if (id < 0) {\r\n throw new Error('unexpected');\r\n }\r\n return maxCharCode + id + 1;\r\n }\r\n function getElements(source) {\r\n let level = 0;\r\n let group = 0;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n const id = group * 100 + level;\r\n // TODO support more brackets\r\n if (source[i] === '(') {\r\n characters[i] = getUniqueCharCode(2 * id);\r\n level++;\r\n }\r\n else if (source[i] === ')') {\r\n characters[i] = getUniqueCharCode(2 * id + 1);\r\n if (level === 1) {\r\n group++;\r\n }\r\n level = Math.max(level - 1, 0);\r\n }\r\n else {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n }\r\n return characters;\r\n }\r\n const elements1 = getElements(originalValue);\r\n const elements2 = getElements(newValue);\r\n return new LcsDiff({ getElements: () => elements1 }, { getElements: () => elements2 }).ComputeDiff(false).changes;\r\n}\r\nfunction getDefaultRange(position, model) {\r\n const word = model.getWordAtPosition(position);\r\n const maxColumn = model.getLineMaxColumn(position.lineNumber);\r\n // By default, always replace up until the end of the current line.\r\n // This default might be subject to change!\r\n return word\r\n ? new Range(position.lineNumber, word.startColumn, position.lineNumber, maxColumn)\r\n : Range.fromPositions(position, position.with(undefined, maxColumn));\r\n}\r\nfunction provideInlineCompletions(position, model, context, token = CancellationToken.None) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const defaultReplaceRange = getDefaultRange(position, model);\r\n const providers = InlineCompletionsProviderRegistry.all(model);\r\n const results = yield Promise.all(providers.map((provider) => __awaiter(this, void 0, void 0, function* () {\r\n const completions = yield provider.provideInlineCompletions(model, position, context, token);\r\n return ({\r\n completions,\r\n provider,\r\n dispose: () => {\r\n if (completions) {\r\n provider.freeInlineCompletions(completions);\r\n }\r\n }\r\n });\r\n })));\r\n const itemsByHash = new Map();\r\n for (const result of results) {\r\n const completions = result.completions;\r\n if (completions) {\r\n for (const item of completions.items.map(item => ({\r\n text: item.text,\r\n range: item.range ? Range.lift(item.range) : defaultReplaceRange,\r\n command: item.command,\r\n sourceProvider: result.provider,\r\n sourceInlineCompletions: completions,\r\n sourceInlineCompletion: item\r\n }))) {\r\n if (item.range.startLineNumber !== item.range.endLineNumber) {\r\n // Ignore invalid ranges.\r\n continue;\r\n }\r\n itemsByHash.set(JSON.stringify({ text: item.text, range: item.range }), item);\r\n }\r\n }\r\n }\r\n return {\r\n items: [...itemsByHash.values()],\r\n dispose: () => {\r\n for (const result of results) {\r\n result.dispose();\r\n }\r\n },\r\n };\r\n });\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Scanner {\r\n constructor() {\r\n this.value = '';\r\n this.pos = 0;\r\n }\r\n static isDigitCharacter(ch) {\r\n return ch >= 48 /* Digit0 */ && ch <= 57 /* Digit9 */;\r\n }\r\n static isVariableCharacter(ch) {\r\n return ch === 95 /* Underline */\r\n || (ch >= 97 /* a */ && ch <= 122 /* z */)\r\n || (ch >= 65 /* A */ && ch <= 90 /* Z */);\r\n }\r\n text(value) {\r\n this.value = value;\r\n this.pos = 0;\r\n }\r\n tokenText(token) {\r\n return this.value.substr(token.pos, token.len);\r\n }\r\n next() {\r\n if (this.pos >= this.value.length) {\r\n return { type: 14 /* EOF */, pos: this.pos, len: 0 };\r\n }\r\n let pos = this.pos;\r\n let len = 0;\r\n let ch = this.value.charCodeAt(pos);\r\n let type;\r\n // static types\r\n type = Scanner._table[ch];\r\n if (typeof type === 'number') {\r\n this.pos += 1;\r\n return { type, pos, len: 1 };\r\n }\r\n // number\r\n if (Scanner.isDigitCharacter(ch)) {\r\n type = 8 /* Int */;\r\n do {\r\n len += 1;\r\n ch = this.value.charCodeAt(pos + len);\r\n } while (Scanner.isDigitCharacter(ch));\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n // variable name\r\n if (Scanner.isVariableCharacter(ch)) {\r\n type = 9 /* VariableName */;\r\n do {\r\n ch = this.value.charCodeAt(pos + (++len));\r\n } while (Scanner.isVariableCharacter(ch) || Scanner.isDigitCharacter(ch));\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n // format\r\n type = 10 /* Format */;\r\n do {\r\n len += 1;\r\n ch = this.value.charCodeAt(pos + len);\r\n } while (!isNaN(ch)\r\n && typeof Scanner._table[ch] === 'undefined' // not static token\r\n && !Scanner.isDigitCharacter(ch) // not number\r\n && !Scanner.isVariableCharacter(ch) // not variable\r\n );\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n}\r\nScanner._table = {\r\n [36 /* DollarSign */]: 0 /* Dollar */,\r\n [58 /* Colon */]: 1 /* Colon */,\r\n [44 /* Comma */]: 2 /* Comma */,\r\n [123 /* OpenCurlyBrace */]: 3 /* CurlyOpen */,\r\n [125 /* CloseCurlyBrace */]: 4 /* CurlyClose */,\r\n [92 /* Backslash */]: 5 /* Backslash */,\r\n [47 /* Slash */]: 6 /* Forwardslash */,\r\n [124 /* Pipe */]: 7 /* Pipe */,\r\n [43 /* Plus */]: 11 /* Plus */,\r\n [45 /* Dash */]: 12 /* Dash */,\r\n [63 /* QuestionMark */]: 13 /* QuestionMark */,\r\n};\r\nexport class Marker {\r\n constructor() {\r\n this._children = [];\r\n }\r\n appendChild(child) {\r\n if (child instanceof Text && this._children[this._children.length - 1] instanceof Text) {\r\n // this and previous child are text -> merge them\r\n this._children[this._children.length - 1].value += child.value;\r\n }\r\n else {\r\n // normal adoption of child\r\n child.parent = this;\r\n this._children.push(child);\r\n }\r\n return this;\r\n }\r\n replace(child, others) {\r\n const { parent } = child;\r\n const idx = parent.children.indexOf(child);\r\n const newChildren = parent.children.slice(0);\r\n newChildren.splice(idx, 1, ...others);\r\n parent._children = newChildren;\r\n (function _fixParent(children, parent) {\r\n for (const child of children) {\r\n child.parent = parent;\r\n _fixParent(child.children, child);\r\n }\r\n })(others, parent);\r\n }\r\n get children() {\r\n return this._children;\r\n }\r\n get snippet() {\r\n let candidate = this;\r\n while (true) {\r\n if (!candidate) {\r\n return undefined;\r\n }\r\n if (candidate instanceof TextmateSnippet) {\r\n return candidate;\r\n }\r\n candidate = candidate.parent;\r\n }\r\n }\r\n toString() {\r\n return this.children.reduce((prev, cur) => prev + cur.toString(), '');\r\n }\r\n len() {\r\n return 0;\r\n }\r\n}\r\nexport class Text extends Marker {\r\n constructor(value) {\r\n super();\r\n this.value = value;\r\n }\r\n toString() {\r\n return this.value;\r\n }\r\n len() {\r\n return this.value.length;\r\n }\r\n clone() {\r\n return new Text(this.value);\r\n }\r\n}\r\nexport class TransformableMarker extends Marker {\r\n}\r\nexport class Placeholder extends TransformableMarker {\r\n constructor(index) {\r\n super();\r\n this.index = index;\r\n }\r\n static compareByIndex(a, b) {\r\n if (a.index === b.index) {\r\n return 0;\r\n }\r\n else if (a.isFinalTabstop) {\r\n return 1;\r\n }\r\n else if (b.isFinalTabstop) {\r\n return -1;\r\n }\r\n else if (a.index < b.index) {\r\n return -1;\r\n }\r\n else if (a.index > b.index) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n get isFinalTabstop() {\r\n return this.index === 0;\r\n }\r\n get choice() {\r\n return this._children.length === 1 && this._children[0] instanceof Choice\r\n ? this._children[0]\r\n : undefined;\r\n }\r\n clone() {\r\n let ret = new Placeholder(this.index);\r\n if (this.transform) {\r\n ret.transform = this.transform.clone();\r\n }\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nexport class Choice extends Marker {\r\n constructor() {\r\n super(...arguments);\r\n this.options = [];\r\n }\r\n appendChild(marker) {\r\n if (marker instanceof Text) {\r\n marker.parent = this;\r\n this.options.push(marker);\r\n }\r\n return this;\r\n }\r\n toString() {\r\n return this.options[0].value;\r\n }\r\n len() {\r\n return this.options[0].len();\r\n }\r\n clone() {\r\n let ret = new Choice();\r\n this.options.forEach(ret.appendChild, ret);\r\n return ret;\r\n }\r\n}\r\nexport class Transform extends Marker {\r\n constructor() {\r\n super(...arguments);\r\n this.regexp = new RegExp('');\r\n }\r\n resolve(value) {\r\n const _this = this;\r\n let didMatch = false;\r\n let ret = value.replace(this.regexp, function () {\r\n didMatch = true;\r\n return _this._replace(Array.prototype.slice.call(arguments, 0, -2));\r\n });\r\n // when the regex didn't match and when the transform has\r\n // else branches, then run those\r\n if (!didMatch && this._children.some(child => child instanceof FormatString && Boolean(child.elseValue))) {\r\n ret = this._replace([]);\r\n }\r\n return ret;\r\n }\r\n _replace(groups) {\r\n let ret = '';\r\n for (const marker of this._children) {\r\n if (marker instanceof FormatString) {\r\n let value = groups[marker.index] || '';\r\n value = marker.resolve(value);\r\n ret += value;\r\n }\r\n else {\r\n ret += marker.toString();\r\n }\r\n }\r\n return ret;\r\n }\r\n toString() {\r\n return '';\r\n }\r\n clone() {\r\n let ret = new Transform();\r\n ret.regexp = new RegExp(this.regexp.source, '' + (this.regexp.ignoreCase ? 'i' : '') + (this.regexp.global ? 'g' : ''));\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nexport class FormatString extends Marker {\r\n constructor(index, shorthandName, ifValue, elseValue) {\r\n super();\r\n this.index = index;\r\n this.shorthandName = shorthandName;\r\n this.ifValue = ifValue;\r\n this.elseValue = elseValue;\r\n }\r\n resolve(value) {\r\n if (this.shorthandName === 'upcase') {\r\n return !value ? '' : value.toLocaleUpperCase();\r\n }\r\n else if (this.shorthandName === 'downcase') {\r\n return !value ? '' : value.toLocaleLowerCase();\r\n }\r\n else if (this.shorthandName === 'capitalize') {\r\n return !value ? '' : (value[0].toLocaleUpperCase() + value.substr(1));\r\n }\r\n else if (this.shorthandName === 'pascalcase') {\r\n return !value ? '' : this._toPascalCase(value);\r\n }\r\n else if (this.shorthandName === 'camelcase') {\r\n return !value ? '' : this._toCamelCase(value);\r\n }\r\n else if (Boolean(value) && typeof this.ifValue === 'string') {\r\n return this.ifValue;\r\n }\r\n else if (!Boolean(value) && typeof this.elseValue === 'string') {\r\n return this.elseValue;\r\n }\r\n else {\r\n return value || '';\r\n }\r\n }\r\n _toPascalCase(value) {\r\n const match = value.match(/[a-z0-9]+/gi);\r\n if (!match) {\r\n return value;\r\n }\r\n return match.map(word => {\r\n return word.charAt(0).toUpperCase()\r\n + word.substr(1).toLowerCase();\r\n })\r\n .join('');\r\n }\r\n _toCamelCase(value) {\r\n const match = value.match(/[a-z0-9]+/gi);\r\n if (!match) {\r\n return value;\r\n }\r\n return match.map((word, index) => {\r\n if (index === 0) {\r\n return word.toLowerCase();\r\n }\r\n else {\r\n return word.charAt(0).toUpperCase()\r\n + word.substr(1).toLowerCase();\r\n }\r\n })\r\n .join('');\r\n }\r\n clone() {\r\n let ret = new FormatString(this.index, this.shorthandName, this.ifValue, this.elseValue);\r\n return ret;\r\n }\r\n}\r\nexport class Variable extends TransformableMarker {\r\n constructor(name) {\r\n super();\r\n this.name = name;\r\n }\r\n resolve(resolver) {\r\n let value = resolver.resolve(this);\r\n if (this.transform) {\r\n value = this.transform.resolve(value || '');\r\n }\r\n if (value !== undefined) {\r\n this._children = [new Text(value)];\r\n return true;\r\n }\r\n return false;\r\n }\r\n clone() {\r\n const ret = new Variable(this.name);\r\n if (this.transform) {\r\n ret.transform = this.transform.clone();\r\n }\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nfunction walk(marker, visitor) {\r\n const stack = [...marker];\r\n while (stack.length > 0) {\r\n const marker = stack.shift();\r\n const recurse = visitor(marker);\r\n if (!recurse) {\r\n break;\r\n }\r\n stack.unshift(...marker.children);\r\n }\r\n}\r\nexport class TextmateSnippet extends Marker {\r\n get placeholderInfo() {\r\n if (!this._placeholders) {\r\n // fill in placeholders\r\n let all = [];\r\n let last;\r\n this.walk(function (candidate) {\r\n if (candidate instanceof Placeholder) {\r\n all.push(candidate);\r\n last = !last || last.index < candidate.index ? candidate : last;\r\n }\r\n return true;\r\n });\r\n this._placeholders = { all, last };\r\n }\r\n return this._placeholders;\r\n }\r\n get placeholders() {\r\n const { all } = this.placeholderInfo;\r\n return all;\r\n }\r\n offset(marker) {\r\n let pos = 0;\r\n let found = false;\r\n this.walk(candidate => {\r\n if (candidate === marker) {\r\n found = true;\r\n return false;\r\n }\r\n pos += candidate.len();\r\n return true;\r\n });\r\n if (!found) {\r\n return -1;\r\n }\r\n return pos;\r\n }\r\n fullLen(marker) {\r\n let ret = 0;\r\n walk([marker], marker => {\r\n ret += marker.len();\r\n return true;\r\n });\r\n return ret;\r\n }\r\n enclosingPlaceholders(placeholder) {\r\n let ret = [];\r\n let { parent } = placeholder;\r\n while (parent) {\r\n if (parent instanceof Placeholder) {\r\n ret.push(parent);\r\n }\r\n parent = parent.parent;\r\n }\r\n return ret;\r\n }\r\n resolveVariables(resolver) {\r\n this.walk(candidate => {\r\n if (candidate instanceof Variable) {\r\n if (candidate.resolve(resolver)) {\r\n this._placeholders = undefined;\r\n }\r\n }\r\n return true;\r\n });\r\n return this;\r\n }\r\n appendChild(child) {\r\n this._placeholders = undefined;\r\n return super.appendChild(child);\r\n }\r\n replace(child, others) {\r\n this._placeholders = undefined;\r\n return super.replace(child, others);\r\n }\r\n clone() {\r\n let ret = new TextmateSnippet();\r\n this._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n walk(visitor) {\r\n walk(this.children, visitor);\r\n }\r\n}\r\nexport class SnippetParser {\r\n constructor() {\r\n this._scanner = new Scanner();\r\n this._token = { type: 14 /* EOF */, pos: 0, len: 0 };\r\n }\r\n static escape(value) {\r\n return value.replace(/\\$|}|\\\\/g, '\\\\$&');\r\n }\r\n static guessNeedsClipboard(template) {\r\n return /\\${?CLIPBOARD/.test(template);\r\n }\r\n parse(value, insertFinalTabstop, enforceFinalTabstop) {\r\n this._scanner.text(value);\r\n this._token = this._scanner.next();\r\n const snippet = new TextmateSnippet();\r\n while (this._parse(snippet)) {\r\n // nothing\r\n }\r\n // fill in values for placeholders. the first placeholder of an index\r\n // that has a value defines the value for all placeholders with that index\r\n const placeholderDefaultValues = new Map();\r\n const incompletePlaceholders = [];\r\n let placeholderCount = 0;\r\n snippet.walk(marker => {\r\n if (marker instanceof Placeholder) {\r\n placeholderCount += 1;\r\n if (marker.isFinalTabstop) {\r\n placeholderDefaultValues.set(0, undefined);\r\n }\r\n else if (!placeholderDefaultValues.has(marker.index) && marker.children.length > 0) {\r\n placeholderDefaultValues.set(marker.index, marker.children);\r\n }\r\n else {\r\n incompletePlaceholders.push(marker);\r\n }\r\n }\r\n return true;\r\n });\r\n for (const placeholder of incompletePlaceholders) {\r\n const defaultValues = placeholderDefaultValues.get(placeholder.index);\r\n if (defaultValues) {\r\n const clone = new Placeholder(placeholder.index);\r\n clone.transform = placeholder.transform;\r\n for (const child of defaultValues) {\r\n clone.appendChild(child.clone());\r\n }\r\n snippet.replace(placeholder, [clone]);\r\n }\r\n }\r\n if (!enforceFinalTabstop) {\r\n enforceFinalTabstop = placeholderCount > 0 && insertFinalTabstop;\r\n }\r\n if (!placeholderDefaultValues.has(0) && enforceFinalTabstop) {\r\n // the snippet uses placeholders but has no\r\n // final tabstop defined -> insert at the end\r\n snippet.appendChild(new Placeholder(0));\r\n }\r\n return snippet;\r\n }\r\n _accept(type, value) {\r\n if (type === undefined || this._token.type === type) {\r\n let ret = !value ? true : this._scanner.tokenText(this._token);\r\n this._token = this._scanner.next();\r\n return ret;\r\n }\r\n return false;\r\n }\r\n _backTo(token) {\r\n this._scanner.pos = token.pos + token.len;\r\n this._token = token;\r\n return false;\r\n }\r\n _until(type) {\r\n const start = this._token;\r\n while (this._token.type !== type) {\r\n if (this._token.type === 14 /* EOF */) {\r\n return false;\r\n }\r\n else if (this._token.type === 5 /* Backslash */) {\r\n const nextToken = this._scanner.next();\r\n if (nextToken.type !== 0 /* Dollar */\r\n && nextToken.type !== 4 /* CurlyClose */\r\n && nextToken.type !== 5 /* Backslash */) {\r\n return false;\r\n }\r\n }\r\n this._token = this._scanner.next();\r\n }\r\n const value = this._scanner.value.substring(start.pos, this._token.pos).replace(/\\\\(\\$|}|\\\\)/g, '$1');\r\n this._token = this._scanner.next();\r\n return value;\r\n }\r\n _parse(marker) {\r\n return this._parseEscaped(marker)\r\n || this._parseTabstopOrVariableName(marker)\r\n || this._parseComplexPlaceholder(marker)\r\n || this._parseComplexVariable(marker)\r\n || this._parseAnything(marker);\r\n }\r\n // \\$, \\\\, \\} -> just text\r\n _parseEscaped(marker) {\r\n let value;\r\n if (value = this._accept(5 /* Backslash */, true)) {\r\n // saw a backslash, append escaped token or that backslash\r\n value = this._accept(0 /* Dollar */, true)\r\n || this._accept(4 /* CurlyClose */, true)\r\n || this._accept(5 /* Backslash */, true)\r\n || value;\r\n marker.appendChild(new Text(value));\r\n return true;\r\n }\r\n return false;\r\n }\r\n // $foo -> variable, $1 -> tabstop\r\n _parseTabstopOrVariableName(parent) {\r\n let value;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && (value = this._accept(9 /* VariableName */, true) || this._accept(8 /* Int */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n parent.appendChild(/^\\d+$/.test(value)\r\n ? new Placeholder(Number(value))\r\n : new Variable(value));\r\n return true;\r\n }\r\n // ${1:}, ${1} -> placeholder\r\n _parseComplexPlaceholder(parent) {\r\n let index;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && this._accept(3 /* CurlyOpen */)\r\n && (index = this._accept(8 /* Int */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n const placeholder = new Placeholder(Number(index));\r\n if (this._accept(1 /* Colon */)) {\r\n // ${1:}\r\n while (true) {\r\n // ...} -> done\r\n if (this._accept(4 /* CurlyClose */)) {\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n if (this._parse(placeholder)) {\r\n continue;\r\n }\r\n // fallback\r\n parent.appendChild(new Text('${' + index + ':'));\r\n placeholder.children.forEach(parent.appendChild, parent);\r\n return true;\r\n }\r\n }\r\n else if (placeholder.index > 0 && this._accept(7 /* Pipe */)) {\r\n // ${1|one,two,three|}\r\n const choice = new Choice();\r\n while (true) {\r\n if (this._parseChoiceElement(choice)) {\r\n if (this._accept(2 /* Comma */)) {\r\n // opt, -> more\r\n continue;\r\n }\r\n if (this._accept(7 /* Pipe */)) {\r\n placeholder.appendChild(choice);\r\n if (this._accept(4 /* CurlyClose */)) {\r\n // ..|} -> done\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n }\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n }\r\n else if (this._accept(6 /* Forwardslash */)) {\r\n // ${1///}\r\n if (this._parseTransform(placeholder)) {\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${1}\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n else {\r\n // ${1 <- missing curly or colon\r\n return this._backTo(token);\r\n }\r\n }\r\n _parseChoiceElement(parent) {\r\n const token = this._token;\r\n const values = [];\r\n while (true) {\r\n if (this._token.type === 2 /* Comma */ || this._token.type === 7 /* Pipe */) {\r\n break;\r\n }\r\n let value;\r\n if (value = this._accept(5 /* Backslash */, true)) {\r\n // \\, \\|, or \\\\\r\n value = this._accept(2 /* Comma */, true)\r\n || this._accept(7 /* Pipe */, true)\r\n || this._accept(5 /* Backslash */, true)\r\n || value;\r\n }\r\n else {\r\n value = this._accept(undefined, true);\r\n }\r\n if (!value) {\r\n // EOF\r\n this._backTo(token);\r\n return false;\r\n }\r\n values.push(value);\r\n }\r\n if (values.length === 0) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n parent.appendChild(new Text(values.join('')));\r\n return true;\r\n }\r\n // ${foo:}, ${foo} -> variable\r\n _parseComplexVariable(parent) {\r\n let name;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && this._accept(3 /* CurlyOpen */)\r\n && (name = this._accept(9 /* VariableName */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n const variable = new Variable(name);\r\n if (this._accept(1 /* Colon */)) {\r\n // ${foo:}\r\n while (true) {\r\n // ...} -> done\r\n if (this._accept(4 /* CurlyClose */)) {\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n if (this._parse(variable)) {\r\n continue;\r\n }\r\n // fallback\r\n parent.appendChild(new Text('${' + name + ':'));\r\n variable.children.forEach(parent.appendChild, parent);\r\n return true;\r\n }\r\n }\r\n else if (this._accept(6 /* Forwardslash */)) {\r\n // ${foo///}\r\n if (this._parseTransform(variable)) {\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${foo}\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n else {\r\n // ${foo <- missing curly or colon\r\n return this._backTo(token);\r\n }\r\n }\r\n _parseTransform(parent) {\r\n // ...//}\r\n let transform = new Transform();\r\n let regexValue = '';\r\n let regexOptions = '';\r\n // (1) /regex\r\n while (true) {\r\n if (this._accept(6 /* Forwardslash */)) {\r\n break;\r\n }\r\n let escaped;\r\n if (escaped = this._accept(5 /* Backslash */, true)) {\r\n escaped = this._accept(6 /* Forwardslash */, true) || escaped;\r\n regexValue += escaped;\r\n continue;\r\n }\r\n if (this._token.type !== 14 /* EOF */) {\r\n regexValue += this._accept(undefined, true);\r\n continue;\r\n }\r\n return false;\r\n }\r\n // (2) /format\r\n while (true) {\r\n if (this._accept(6 /* Forwardslash */)) {\r\n break;\r\n }\r\n let escaped;\r\n if (escaped = this._accept(5 /* Backslash */, true)) {\r\n escaped = this._accept(5 /* Backslash */, true) || this._accept(6 /* Forwardslash */, true) || escaped;\r\n transform.appendChild(new Text(escaped));\r\n continue;\r\n }\r\n if (this._parseFormatString(transform) || this._parseAnything(transform)) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n // (3) /option\r\n while (true) {\r\n if (this._accept(4 /* CurlyClose */)) {\r\n break;\r\n }\r\n if (this._token.type !== 14 /* EOF */) {\r\n regexOptions += this._accept(undefined, true);\r\n continue;\r\n }\r\n return false;\r\n }\r\n try {\r\n transform.regexp = new RegExp(regexValue, regexOptions);\r\n }\r\n catch (e) {\r\n // invalid regexp\r\n return false;\r\n }\r\n parent.transform = transform;\r\n return true;\r\n }\r\n _parseFormatString(parent) {\r\n const token = this._token;\r\n if (!this._accept(0 /* Dollar */)) {\r\n return false;\r\n }\r\n let complex = false;\r\n if (this._accept(3 /* CurlyOpen */)) {\r\n complex = true;\r\n }\r\n let index = this._accept(8 /* Int */, true);\r\n if (!index) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (!complex) {\r\n // $1\r\n parent.appendChild(new FormatString(Number(index)));\r\n return true;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${1}\r\n parent.appendChild(new FormatString(Number(index)));\r\n return true;\r\n }\r\n else if (!this._accept(1 /* Colon */)) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n if (this._accept(6 /* Forwardslash */)) {\r\n // ${1:/upcase}\r\n let shorthand = this._accept(9 /* VariableName */, true);\r\n if (!shorthand || !this._accept(4 /* CurlyClose */)) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n else {\r\n parent.appendChild(new FormatString(Number(index), shorthand));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(11 /* Plus */)) {\r\n // ${1:+}\r\n let ifValue = this._until(4 /* CurlyClose */);\r\n if (ifValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, undefined));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(12 /* Dash */)) {\r\n // ${2:-}\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(13 /* QuestionMark */)) {\r\n // ${2:?:}\r\n let ifValue = this._until(1 /* Colon */);\r\n if (ifValue) {\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, elseValue));\r\n return true;\r\n }\r\n }\r\n }\r\n else {\r\n // ${1:}\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\r\n return true;\r\n }\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n _parseAnything(marker) {\r\n if (this._token.type !== 14 /* EOF */) {\r\n marker.appendChild(new Text(this._scanner.tokenText(this._token)));\r\n this._accept(undefined);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./snippetSession.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./snippetSession.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { URI } from '../../../base/common/uri.js';\r\nexport const WORKSPACE_EXTENSION = 'code-workspace';\r\nexport function isSingleFolderWorkspaceIdentifier(obj) {\r\n const singleFolderIdentifier = obj;\r\n return typeof (singleFolderIdentifier === null || singleFolderIdentifier === void 0 ? void 0 : singleFolderIdentifier.id) === 'string' && URI.isUri(singleFolderIdentifier.uri);\r\n}\r\nexport function toWorkspaceIdentifier(workspace) {\r\n // Multi root\r\n if (workspace.configuration) {\r\n return {\r\n id: workspace.id,\r\n configPath: workspace.configuration\r\n };\r\n }\r\n // Single folder\r\n if (workspace.folders.length === 1) {\r\n return {\r\n id: workspace.id,\r\n uri: workspace.folders[0].uri\r\n };\r\n }\r\n // Empty workspace\r\n return undefined;\r\n}\r\n//#endregion\r\n","// prep-work\r\nconst _data = new Uint8Array(16);\r\nconst _hex = [];\r\nfor (let i = 0; i < 256; i++) {\r\n _hex.push(i.toString(16).padStart(2, '0'));\r\n}\r\n// todo@jrieken - with node@15 crypto#getRandomBytes is available everywhere, https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#browser_compatibility\r\nlet _fillRandomValues;\r\nif (typeof crypto === 'object' && typeof crypto.getRandomValues === 'function') {\r\n // browser\r\n _fillRandomValues = crypto.getRandomValues.bind(crypto);\r\n}\r\nelse {\r\n _fillRandomValues = function (bucket) {\r\n for (let i = 0; i < bucket.length; i++) {\r\n bucket[i] = Math.floor(Math.random() * 256);\r\n }\r\n return bucket;\r\n };\r\n}\r\nexport function generateUuid() {\r\n // get data\r\n _fillRandomValues(_data);\r\n // set version bits\r\n _data[6] = (_data[6] & 0x0f) | 0x40;\r\n _data[8] = (_data[8] & 0x3f) | 0x80;\r\n // print as string\r\n let i = 0;\r\n let result = '';\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += '-';\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += '-';\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += '-';\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += '-';\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n result += _hex[_data[i++]];\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as path from '../../../base/common/path.js';\r\nimport { dirname } from '../../../base/common/resources.js';\r\nimport { Text } from './snippetParser.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { getLeadingWhitespace, commonPrefixLength, isFalsyOrWhitespace, splitLines } from '../../../base/common/strings.js';\r\nimport { toWorkspaceIdentifier, WORKSPACE_EXTENSION, isSingleFolderWorkspaceIdentifier } from '../../../platform/workspaces/common/workspaces.js';\r\nimport { normalizeDriveLetter } from '../../../base/common/labels.js';\r\nimport { generateUuid } from '../../../base/common/uuid.js';\r\nexport class CompositeSnippetVariableResolver {\r\n constructor(_delegates) {\r\n this._delegates = _delegates;\r\n //\r\n }\r\n resolve(variable) {\r\n for (const delegate of this._delegates) {\r\n let value = delegate.resolve(variable);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class SelectionBasedVariableResolver {\r\n constructor(_model, _selection, _selectionIdx, _overtypingCapturer) {\r\n this._model = _model;\r\n this._selection = _selection;\r\n this._selectionIdx = _selectionIdx;\r\n this._overtypingCapturer = _overtypingCapturer;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\r\n let value = this._model.getValueInRange(this._selection) || undefined;\r\n let isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\r\n // If there was no selected text, try to get last overtyped text\r\n if (!value && this._overtypingCapturer) {\r\n const info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\r\n if (info) {\r\n value = info.value;\r\n isMultiline = info.multiline;\r\n }\r\n }\r\n if (value && isMultiline && variable.snippet) {\r\n // Selection is a multiline string which we indentation we now\r\n // need to adjust. We compare the indentation of this variable\r\n // with the indentation at the editor position and add potential\r\n // extra indentation to the value\r\n const line = this._model.getLineContent(this._selection.startLineNumber);\r\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\r\n let varLeadingWhitespace = lineLeadingWhitespace;\r\n variable.snippet.walk(marker => {\r\n if (marker === variable) {\r\n return false;\r\n }\r\n if (marker instanceof Text) {\r\n varLeadingWhitespace = getLeadingWhitespace(splitLines(marker.value).pop());\r\n }\r\n return true;\r\n });\r\n const whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\r\n value = value.replace(/(\\r\\n|\\r|\\n)(.*)/g, (m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`);\r\n }\r\n return value;\r\n }\r\n else if (name === 'TM_CURRENT_LINE') {\r\n return this._model.getLineContent(this._selection.positionLineNumber);\r\n }\r\n else if (name === 'TM_CURRENT_WORD') {\r\n const info = this._model.getWordAtPosition({\r\n lineNumber: this._selection.positionLineNumber,\r\n column: this._selection.positionColumn\r\n });\r\n return info && info.word || undefined;\r\n }\r\n else if (name === 'TM_LINE_INDEX') {\r\n return String(this._selection.positionLineNumber - 1);\r\n }\r\n else if (name === 'TM_LINE_NUMBER') {\r\n return String(this._selection.positionLineNumber);\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class ModelBasedVariableResolver {\r\n constructor(_labelService, _model) {\r\n this._labelService = _labelService;\r\n this._model = _model;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'TM_FILENAME') {\r\n return path.basename(this._model.uri.fsPath);\r\n }\r\n else if (name === 'TM_FILENAME_BASE') {\r\n const name = path.basename(this._model.uri.fsPath);\r\n const idx = name.lastIndexOf('.');\r\n if (idx <= 0) {\r\n return name;\r\n }\r\n else {\r\n return name.slice(0, idx);\r\n }\r\n }\r\n else if (name === 'TM_DIRECTORY' && this._labelService) {\r\n if (path.dirname(this._model.uri.fsPath) === '.') {\r\n return '';\r\n }\r\n return this._labelService.getUriLabel(dirname(this._model.uri));\r\n }\r\n else if (name === 'TM_FILEPATH' && this._labelService) {\r\n return this._labelService.getUriLabel(this._model.uri);\r\n }\r\n else if (name === 'RELATIVE_FILEPATH' && this._labelService) {\r\n return this._labelService.getUriLabel(this._model.uri, { relative: true, noPrefix: true });\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class ClipboardBasedVariableResolver {\r\n constructor(_readClipboardText, _selectionIdx, _selectionCount, _spread) {\r\n this._readClipboardText = _readClipboardText;\r\n this._selectionIdx = _selectionIdx;\r\n this._selectionCount = _selectionCount;\r\n this._spread = _spread;\r\n //\r\n }\r\n resolve(variable) {\r\n if (variable.name !== 'CLIPBOARD') {\r\n return undefined;\r\n }\r\n const clipboardText = this._readClipboardText();\r\n if (!clipboardText) {\r\n return undefined;\r\n }\r\n // `spread` is assigning each cursor a line of the clipboard\r\n // text whenever there the line count equals the cursor count\r\n // and when enabled\r\n if (this._spread) {\r\n const lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\r\n if (lines.length === this._selectionCount) {\r\n return lines[this._selectionIdx];\r\n }\r\n }\r\n return clipboardText;\r\n }\r\n}\r\nexport class CommentBasedVariableResolver {\r\n constructor(_model, _selection) {\r\n this._model = _model;\r\n this._selection = _selection;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n const langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\r\n const config = LanguageConfigurationRegistry.getComments(langId);\r\n if (!config) {\r\n return undefined;\r\n }\r\n if (name === 'LINE_COMMENT') {\r\n return config.lineCommentToken || undefined;\r\n }\r\n else if (name === 'BLOCK_COMMENT_START') {\r\n return config.blockCommentStartToken || undefined;\r\n }\r\n else if (name === 'BLOCK_COMMENT_END') {\r\n return config.blockCommentEndToken || undefined;\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class TimeBasedVariableResolver {\r\n constructor() {\r\n this._date = new Date();\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'CURRENT_YEAR') {\r\n return String(this._date.getFullYear());\r\n }\r\n else if (name === 'CURRENT_YEAR_SHORT') {\r\n return String(this._date.getFullYear()).slice(-2);\r\n }\r\n else if (name === 'CURRENT_MONTH') {\r\n return String(this._date.getMonth().valueOf() + 1).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_DATE') {\r\n return String(this._date.getDate().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_HOUR') {\r\n return String(this._date.getHours().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_MINUTE') {\r\n return String(this._date.getMinutes().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_SECOND') {\r\n return String(this._date.getSeconds().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_DAY_NAME') {\r\n return TimeBasedVariableResolver.dayNames[this._date.getDay()];\r\n }\r\n else if (name === 'CURRENT_DAY_NAME_SHORT') {\r\n return TimeBasedVariableResolver.dayNamesShort[this._date.getDay()];\r\n }\r\n else if (name === 'CURRENT_MONTH_NAME') {\r\n return TimeBasedVariableResolver.monthNames[this._date.getMonth()];\r\n }\r\n else if (name === 'CURRENT_MONTH_NAME_SHORT') {\r\n return TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];\r\n }\r\n else if (name === 'CURRENT_SECONDS_UNIX') {\r\n return String(Math.floor(this._date.getTime() / 1000));\r\n }\r\n return undefined;\r\n }\r\n}\r\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\")];\r\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\")];\r\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\")];\r\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\")];\r\nexport class WorkspaceBasedVariableResolver {\r\n constructor(_workspaceService) {\r\n this._workspaceService = _workspaceService;\r\n //\r\n }\r\n resolve(variable) {\r\n if (!this._workspaceService) {\r\n return undefined;\r\n }\r\n const workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\r\n if (!workspaceIdentifier) {\r\n return undefined;\r\n }\r\n if (variable.name === 'WORKSPACE_NAME') {\r\n return this._resolveWorkspaceName(workspaceIdentifier);\r\n }\r\n else if (variable.name === 'WORKSPACE_FOLDER') {\r\n return this._resoveWorkspacePath(workspaceIdentifier);\r\n }\r\n return undefined;\r\n }\r\n _resolveWorkspaceName(workspaceIdentifier) {\r\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\r\n return path.basename(workspaceIdentifier.uri.path);\r\n }\r\n let filename = path.basename(workspaceIdentifier.configPath.path);\r\n if (filename.endsWith(WORKSPACE_EXTENSION)) {\r\n filename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\r\n }\r\n return filename;\r\n }\r\n _resoveWorkspacePath(workspaceIdentifier) {\r\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\r\n return normalizeDriveLetter(workspaceIdentifier.uri.fsPath);\r\n }\r\n let filename = path.basename(workspaceIdentifier.configPath.path);\r\n let folderpath = workspaceIdentifier.configPath.fsPath;\r\n if (folderpath.endsWith(filename)) {\r\n folderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\r\n }\r\n return (folderpath ? normalizeDriveLetter(folderpath) : '/');\r\n }\r\n}\r\nexport class RandomBasedVariableResolver {\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'RANDOM') {\r\n return Math.random().toString().slice(-6);\r\n }\r\n else if (name === 'RANDOM_HEX') {\r\n return Math.random().toString(16).slice(-6);\r\n }\r\n else if (name === 'UUID') {\r\n return generateUuid();\r\n }\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { groupBy } from '../../../base/common/arrays.js';\r\nimport { dispose } from '../../../base/common/lifecycle.js';\r\nimport { getLeadingWhitespace } from '../../../base/common/strings.js';\r\nimport './snippetSession.css';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { IWorkspaceContextService } from '../../../platform/workspace/common/workspace.js';\r\nimport { optional } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { Choice, Placeholder, SnippetParser, Text } from './snippetParser.js';\r\nimport { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver, RandomBasedVariableResolver } from './snippetVariables.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport * as colors from '../../../platform/theme/common/colorRegistry.js';\r\nimport { ILabelService } from '../../../platform/label/common/label.js';\r\nregisterThemingParticipant((theme, collector) => {\r\n function getColorGraceful(name) {\r\n const color = theme.getColor(name);\r\n return color ? color.toString() : 'transparent';\r\n }\r\n collector.addRule(`.monaco-editor .snippet-placeholder { background-color: ${getColorGraceful(colors.snippetTabstopHighlightBackground)}; outline-color: ${getColorGraceful(colors.snippetTabstopHighlightBorder)}; }`);\r\n collector.addRule(`.monaco-editor .finish-snippet-placeholder { background-color: ${getColorGraceful(colors.snippetFinalTabstopHighlightBackground)}; outline-color: ${getColorGraceful(colors.snippetFinalTabstopHighlightBorder)}; }`);\r\n});\r\nexport class OneSnippet {\r\n constructor(_editor, _snippet, _offset, _snippetLineLeadingWhitespace) {\r\n this._editor = _editor;\r\n this._snippet = _snippet;\r\n this._offset = _offset;\r\n this._snippetLineLeadingWhitespace = _snippetLineLeadingWhitespace;\r\n this._nestingLevel = 1;\r\n this._placeholderGroups = groupBy(_snippet.placeholders, Placeholder.compareByIndex);\r\n this._placeholderGroupsIdx = -1;\r\n }\r\n dispose() {\r\n if (this._placeholderDecorations) {\r\n this._editor.deltaDecorations([...this._placeholderDecorations.values()], []);\r\n }\r\n this._placeholderGroups.length = 0;\r\n }\r\n _initDecorations() {\r\n if (this._placeholderDecorations) {\r\n // already initialized\r\n return;\r\n }\r\n this._placeholderDecorations = new Map();\r\n const model = this._editor.getModel();\r\n this._editor.changeDecorations(accessor => {\r\n // create a decoration for each placeholder\r\n for (const placeholder of this._snippet.placeholders) {\r\n const placeholderOffset = this._snippet.offset(placeholder);\r\n const placeholderLen = this._snippet.fullLen(placeholder);\r\n const range = Range.fromPositions(model.getPositionAt(this._offset + placeholderOffset), model.getPositionAt(this._offset + placeholderOffset + placeholderLen));\r\n const options = placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive;\r\n const handle = accessor.addDecoration(range, options);\r\n this._placeholderDecorations.set(placeholder, handle);\r\n }\r\n });\r\n }\r\n move(fwd) {\r\n if (!this._editor.hasModel()) {\r\n return [];\r\n }\r\n this._initDecorations();\r\n // Transform placeholder text if necessary\r\n if (this._placeholderGroupsIdx >= 0) {\r\n let operations = [];\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n // Check if the placeholder has a transformation\r\n if (placeholder.transform) {\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n const currentValue = this._editor.getModel().getValueInRange(range);\r\n const transformedValueLines = placeholder.transform.resolve(currentValue).split(/\\r\\n|\\r|\\n/);\r\n // fix indentation for transformed lines\r\n for (let i = 1; i < transformedValueLines.length; i++) {\r\n transformedValueLines[i] = this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace + transformedValueLines[i]);\r\n }\r\n operations.push(EditOperation.replace(range, transformedValueLines.join(this._editor.getModel().getEOL())));\r\n }\r\n }\r\n if (operations.length > 0) {\r\n this._editor.executeEdits('snippet.placeholderTransform', operations);\r\n }\r\n }\r\n let couldSkipThisPlaceholder = false;\r\n if (fwd === true && this._placeholderGroupsIdx < this._placeholderGroups.length - 1) {\r\n this._placeholderGroupsIdx += 1;\r\n couldSkipThisPlaceholder = true;\r\n }\r\n else if (fwd === false && this._placeholderGroupsIdx > 0) {\r\n this._placeholderGroupsIdx -= 1;\r\n couldSkipThisPlaceholder = true;\r\n }\r\n else {\r\n // the selection of the current placeholder might\r\n // not acurate any more -> simply restore it\r\n }\r\n const newSelections = this._editor.getModel().changeDecorations(accessor => {\r\n const activePlaceholders = new Set();\r\n // change stickiness to always grow when typing at its edges\r\n // because these decorations represent the currently active\r\n // tabstop.\r\n // Special case #1: reaching the final tabstop\r\n // Special case #2: placeholders enclosing active placeholders\r\n const selections = [];\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n selections.push(new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn));\r\n // consider to skip this placeholder index when the decoration\r\n // range is empty but when the placeholder wasn't. that's a strong\r\n // hint that the placeholder has been deleted. (all placeholder must match this)\r\n couldSkipThisPlaceholder = couldSkipThisPlaceholder && this._hasPlaceholderBeenCollapsed(placeholder);\r\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\r\n activePlaceholders.add(placeholder);\r\n for (const enclosingPlaceholder of this._snippet.enclosingPlaceholders(placeholder)) {\r\n const id = this._placeholderDecorations.get(enclosingPlaceholder);\r\n accessor.changeDecorationOptions(id, enclosingPlaceholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\r\n activePlaceholders.add(enclosingPlaceholder);\r\n }\r\n }\r\n // change stickness to never grow when typing at its edges\r\n // so that in-active tabstops never grow\r\n for (const [placeholder, id] of this._placeholderDecorations) {\r\n if (!activePlaceholders.has(placeholder)) {\r\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive);\r\n }\r\n }\r\n return selections;\r\n });\r\n return !couldSkipThisPlaceholder ? newSelections !== null && newSelections !== void 0 ? newSelections : [] : this.move(fwd);\r\n }\r\n _hasPlaceholderBeenCollapsed(placeholder) {\r\n // A placeholder is empty when it wasn't empty when authored but\r\n // when its tracking decoration is empty. This also applies to all\r\n // potential parent placeholders\r\n let marker = placeholder;\r\n while (marker) {\r\n if (marker instanceof Placeholder) {\r\n const id = this._placeholderDecorations.get(marker);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n if (range.isEmpty() && marker.toString().length > 0) {\r\n return true;\r\n }\r\n }\r\n marker = marker.parent;\r\n }\r\n return false;\r\n }\r\n get isAtFirstPlaceholder() {\r\n return this._placeholderGroupsIdx <= 0 || this._placeholderGroups.length === 0;\r\n }\r\n get isAtLastPlaceholder() {\r\n return this._placeholderGroupsIdx === this._placeholderGroups.length - 1;\r\n }\r\n get hasPlaceholder() {\r\n return this._snippet.placeholders.length > 0;\r\n }\r\n computePossibleSelections() {\r\n const result = new Map();\r\n for (const placeholdersWithEqualIndex of this._placeholderGroups) {\r\n let ranges;\r\n for (const placeholder of placeholdersWithEqualIndex) {\r\n if (placeholder.isFinalTabstop) {\r\n // ignore those\r\n break;\r\n }\r\n if (!ranges) {\r\n ranges = [];\r\n result.set(placeholder.index, ranges);\r\n }\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n if (!range) {\r\n // one of the placeholder lost its decoration and\r\n // therefore we bail out and pretend the placeholder\r\n // (with its mirrors) doesn't exist anymore.\r\n result.delete(placeholder.index);\r\n break;\r\n }\r\n ranges.push(range);\r\n }\r\n }\r\n return result;\r\n }\r\n get choice() {\r\n return this._placeholderGroups[this._placeholderGroupsIdx][0].choice;\r\n }\r\n merge(others) {\r\n const model = this._editor.getModel();\r\n this._nestingLevel *= 10;\r\n this._editor.changeDecorations(accessor => {\r\n // For each active placeholder take one snippet and merge it\r\n // in that the placeholder (can be many for `$1foo$1foo`). Because\r\n // everything is sorted by editor selection we can simply remove\r\n // elements from the beginning of the array\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n const nested = others.shift();\r\n console.assert(!nested._placeholderDecorations);\r\n // Massage placeholder-indicies of the nested snippet to be\r\n // sorted right after the insertion point. This ensures we move\r\n // through the placeholders in the correct order\r\n const indexLastPlaceholder = nested._snippet.placeholderInfo.last.index;\r\n for (const nestedPlaceholder of nested._snippet.placeholderInfo.all) {\r\n if (nestedPlaceholder.isFinalTabstop) {\r\n nestedPlaceholder.index = placeholder.index + ((indexLastPlaceholder + 1) / this._nestingLevel);\r\n }\r\n else {\r\n nestedPlaceholder.index = placeholder.index + (nestedPlaceholder.index / this._nestingLevel);\r\n }\r\n }\r\n this._snippet.replace(placeholder, nested._snippet.children);\r\n // Remove the placeholder at which position are inserting\r\n // the snippet and also remove its decoration.\r\n const id = this._placeholderDecorations.get(placeholder);\r\n accessor.removeDecoration(id);\r\n this._placeholderDecorations.delete(placeholder);\r\n // For each *new* placeholder we create decoration to monitor\r\n // how and if it grows/shrinks.\r\n for (const placeholder of nested._snippet.placeholders) {\r\n const placeholderOffset = nested._snippet.offset(placeholder);\r\n const placeholderLen = nested._snippet.fullLen(placeholder);\r\n const range = Range.fromPositions(model.getPositionAt(nested._offset + placeholderOffset), model.getPositionAt(nested._offset + placeholderOffset + placeholderLen));\r\n const handle = accessor.addDecoration(range, OneSnippet._decor.inactive);\r\n this._placeholderDecorations.set(placeholder, handle);\r\n }\r\n }\r\n // Last, re-create the placeholder groups by sorting placeholders by their index.\r\n this._placeholderGroups = groupBy(this._snippet.placeholders, Placeholder.compareByIndex);\r\n });\r\n }\r\n}\r\nOneSnippet._decor = {\r\n active: ModelDecorationOptions.register({ description: 'snippet-placeholder-1', stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\r\n inactive: ModelDecorationOptions.register({ description: 'snippet-placeholder-2', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\r\n activeFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-3', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\r\n inactiveFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-4', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\r\n};\r\nconst _defaultOptions = {\r\n overwriteBefore: 0,\r\n overwriteAfter: 0,\r\n adjustWhitespace: true,\r\n clipboardText: undefined,\r\n overtypingCapturer: undefined\r\n};\r\nexport class SnippetSession {\r\n constructor(editor, template, options = _defaultOptions) {\r\n this._templateMerges = [];\r\n this._snippets = [];\r\n this._editor = editor;\r\n this._template = template;\r\n this._options = options;\r\n }\r\n static adjustWhitespace(model, position, snippet, adjustIndentation, adjustNewlines) {\r\n const line = model.getLineContent(position.lineNumber);\r\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, position.column - 1);\r\n // the snippet as inserted\r\n let snippetTextString;\r\n snippet.walk(marker => {\r\n // all text elements that are not inside choice\r\n if (!(marker instanceof Text) || marker.parent instanceof Choice) {\r\n return true;\r\n }\r\n const lines = marker.value.split(/\\r\\n|\\r|\\n/);\r\n if (adjustIndentation) {\r\n // adjust indentation of snippet test\r\n // -the snippet-start doesn't get extra-indented (lineLeadingWhitespace), only normalized\r\n // -all N+1 lines get extra-indented and normalized\r\n // -the text start get extra-indented and normalized when following a linebreak\r\n const offset = snippet.offset(marker);\r\n if (offset === 0) {\r\n // snippet start\r\n lines[0] = model.normalizeIndentation(lines[0]);\r\n }\r\n else {\r\n // check if text start is after a linebreak\r\n snippetTextString = snippetTextString !== null && snippetTextString !== void 0 ? snippetTextString : snippet.toString();\r\n let prevChar = snippetTextString.charCodeAt(offset - 1);\r\n if (prevChar === 10 /* LineFeed */ || prevChar === 13 /* CarriageReturn */) {\r\n lines[0] = model.normalizeIndentation(lineLeadingWhitespace + lines[0]);\r\n }\r\n }\r\n for (let i = 1; i < lines.length; i++) {\r\n lines[i] = model.normalizeIndentation(lineLeadingWhitespace + lines[i]);\r\n }\r\n }\r\n const newValue = lines.join(model.getEOL());\r\n if (newValue !== marker.value) {\r\n marker.parent.replace(marker, [new Text(newValue)]);\r\n snippetTextString = undefined;\r\n }\r\n return true;\r\n });\r\n return lineLeadingWhitespace;\r\n }\r\n static adjustSelection(model, selection, overwriteBefore, overwriteAfter) {\r\n if (overwriteBefore !== 0 || overwriteAfter !== 0) {\r\n // overwrite[Before|After] is compute using the position, not the whole\r\n // selection. therefore we adjust the selection around that position\r\n const { positionLineNumber, positionColumn } = selection;\r\n const positionColumnBefore = positionColumn - overwriteBefore;\r\n const positionColumnAfter = positionColumn + overwriteAfter;\r\n const range = model.validateRange({\r\n startLineNumber: positionLineNumber,\r\n startColumn: positionColumnBefore,\r\n endLineNumber: positionLineNumber,\r\n endColumn: positionColumnAfter\r\n });\r\n selection = Selection.createWithDirection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn, selection.getDirection());\r\n }\r\n return selection;\r\n }\r\n static createEditsAndSnippets(editor, template, overwriteBefore, overwriteAfter, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer) {\r\n const edits = [];\r\n const snippets = [];\r\n if (!editor.hasModel()) {\r\n return { edits, snippets };\r\n }\r\n const model = editor.getModel();\r\n const workspaceService = editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService, optional));\r\n const modelBasedVariableResolver = editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService, optional), model));\r\n const readClipboardText = () => clipboardText;\r\n let delta = 0;\r\n // know what text the overwrite[Before|After] extensions\r\n // of the primary curser have selected because only when\r\n // secondary selections extend to the same text we can grow them\r\n let firstBeforeText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), overwriteBefore, 0));\r\n let firstAfterText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), 0, overwriteAfter));\r\n // remember the first non-whitespace column to decide if\r\n // `keepWhitespace` should be overruled for secondary selections\r\n let firstLineFirstNonWhitespace = model.getLineFirstNonWhitespaceColumn(editor.getSelection().positionLineNumber);\r\n // sort selections by their start position but remeber\r\n // the original index. that allows you to create correct\r\n // offset-based selection logic without changing the\r\n // primary selection\r\n const indexedSelections = editor.getSelections()\r\n .map((selection, idx) => ({ selection, idx }))\r\n .sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\r\n for (const { selection, idx } of indexedSelections) {\r\n // extend selection with the `overwriteBefore` and `overwriteAfter` and then\r\n // compare if this matches the extensions of the primary selection\r\n let extensionBefore = SnippetSession.adjustSelection(model, selection, overwriteBefore, 0);\r\n let extensionAfter = SnippetSession.adjustSelection(model, selection, 0, overwriteAfter);\r\n if (firstBeforeText !== model.getValueInRange(extensionBefore)) {\r\n extensionBefore = selection;\r\n }\r\n if (firstAfterText !== model.getValueInRange(extensionAfter)) {\r\n extensionAfter = selection;\r\n }\r\n // merge the before and after selection into one\r\n const snippetSelection = selection\r\n .setStartPosition(extensionBefore.startLineNumber, extensionBefore.startColumn)\r\n .setEndPosition(extensionAfter.endLineNumber, extensionAfter.endColumn);\r\n const snippet = new SnippetParser().parse(template, true, enforceFinalTabstop);\r\n // adjust the template string to match the indentation and\r\n // whitespace rules of this insert location (can be different for each cursor)\r\n // happens when being asked for (default) or when this is a secondary\r\n // cursor and the leading whitespace is different\r\n const start = snippetSelection.getStartPosition();\r\n const snippetLineLeadingWhitespace = SnippetSession.adjustWhitespace(model, start, snippet, adjustWhitespace || (idx > 0 && firstLineFirstNonWhitespace !== model.getLineFirstNonWhitespaceColumn(selection.positionLineNumber)), true);\r\n snippet.resolveVariables(new CompositeSnippetVariableResolver([\r\n modelBasedVariableResolver,\r\n new ClipboardBasedVariableResolver(readClipboardText, idx, indexedSelections.length, editor.getOption(69 /* multiCursorPaste */) === 'spread'),\r\n new SelectionBasedVariableResolver(model, selection, idx, overtypingCapturer),\r\n new CommentBasedVariableResolver(model, selection),\r\n new TimeBasedVariableResolver,\r\n new WorkspaceBasedVariableResolver(workspaceService),\r\n new RandomBasedVariableResolver,\r\n ]));\r\n const offset = model.getOffsetAt(start) + delta;\r\n delta += snippet.toString().length - model.getValueLengthInRange(snippetSelection);\r\n // store snippets with the index of their originating selection.\r\n // that ensures the primiary cursor stays primary despite not being\r\n // the one with lowest start position\r\n edits[idx] = EditOperation.replace(snippetSelection, snippet.toString());\r\n edits[idx].identifier = { major: idx, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\r\n snippets[idx] = new OneSnippet(editor, snippet, offset, snippetLineLeadingWhitespace);\r\n }\r\n return { edits, snippets };\r\n }\r\n dispose() {\r\n dispose(this._snippets);\r\n }\r\n _logInfo() {\r\n return `template=\"${this._template}\", merged_templates=\"${this._templateMerges.join(' -> ')}\"`;\r\n }\r\n insert() {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n // make insert edit and start with first selections\r\n const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, this._template, this._options.overwriteBefore, this._options.overwriteAfter, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer);\r\n this._snippets = snippets;\r\n this._editor.executeEdits('snippet', edits, undoEdits => {\r\n if (this._snippets[0].hasPlaceholder) {\r\n return this._move(true);\r\n }\r\n else {\r\n return undoEdits\r\n .filter(edit => !!edit.identifier) // only use our undo edits\r\n .map(edit => Selection.fromPositions(edit.range.getEndPosition()));\r\n }\r\n });\r\n this._editor.revealRange(this._editor.getSelections()[0]);\r\n }\r\n merge(template, options = _defaultOptions) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._templateMerges.push([this._snippets[0]._nestingLevel, this._snippets[0]._placeholderGroupsIdx, template]);\r\n const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, template, options.overwriteBefore, options.overwriteAfter, true, options.adjustWhitespace, options.clipboardText, options.overtypingCapturer);\r\n this._editor.executeEdits('snippet', edits, undoEdits => {\r\n for (const snippet of this._snippets) {\r\n snippet.merge(snippets);\r\n }\r\n console.assert(snippets.length === 0);\r\n if (this._snippets[0].hasPlaceholder) {\r\n return this._move(undefined);\r\n }\r\n else {\r\n return (undoEdits\r\n .filter(edit => !!edit.identifier) // only use our undo edits\r\n .map(edit => Selection.fromPositions(edit.range.getEndPosition())));\r\n }\r\n });\r\n }\r\n next() {\r\n const newSelections = this._move(true);\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\r\n }\r\n prev() {\r\n const newSelections = this._move(false);\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\r\n }\r\n _move(fwd) {\r\n const selections = [];\r\n for (const snippet of this._snippets) {\r\n const oneSelection = snippet.move(fwd);\r\n selections.push(...oneSelection);\r\n }\r\n return selections;\r\n }\r\n get isAtFirstPlaceholder() {\r\n return this._snippets[0].isAtFirstPlaceholder;\r\n }\r\n get isAtLastPlaceholder() {\r\n return this._snippets[0].isAtLastPlaceholder;\r\n }\r\n get hasPlaceholder() {\r\n return this._snippets[0].hasPlaceholder;\r\n }\r\n get choice() {\r\n return this._snippets[0].choice;\r\n }\r\n isSelectionWithinPlaceholders() {\r\n if (!this.hasPlaceholder) {\r\n return false;\r\n }\r\n const selections = this._editor.getSelections();\r\n if (selections.length < this._snippets.length) {\r\n // this means we started snippet mode with N\r\n // selections and have M (N > M) selections.\r\n // So one snippet is without selection -> cancel\r\n return false;\r\n }\r\n let allPossibleSelections = new Map();\r\n for (const snippet of this._snippets) {\r\n const possibleSelections = snippet.computePossibleSelections();\r\n // for the first snippet find the placeholder (and its ranges)\r\n // that contain at least one selection. for all remaining snippets\r\n // the same placeholder (and their ranges) must be used.\r\n if (allPossibleSelections.size === 0) {\r\n for (const [index, ranges] of possibleSelections) {\r\n ranges.sort(Range.compareRangesUsingStarts);\r\n for (const selection of selections) {\r\n if (ranges[0].containsRange(selection)) {\r\n allPossibleSelections.set(index, []);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (allPossibleSelections.size === 0) {\r\n // return false if we couldn't associate a selection to\r\n // this (the first) snippet\r\n return false;\r\n }\r\n // add selections from 'this' snippet so that we know all\r\n // selections for this placeholder\r\n allPossibleSelections.forEach((array, index) => {\r\n array.push(...possibleSelections.get(index));\r\n });\r\n }\r\n // sort selections (and later placeholder-ranges). then walk both\r\n // arrays and make sure the placeholder-ranges contain the corresponding\r\n // selection\r\n selections.sort(Range.compareRangesUsingStarts);\r\n for (let [index, ranges] of allPossibleSelections) {\r\n if (ranges.length !== selections.length) {\r\n allPossibleSelections.delete(index);\r\n continue;\r\n }\r\n ranges.sort(Range.compareRangesUsingStarts);\r\n for (let i = 0; i < ranges.length; i++) {\r\n if (!ranges[i].containsRange(selections[i])) {\r\n allPossibleSelections.delete(index);\r\n continue;\r\n }\r\n }\r\n }\r\n // from all possible selections we have deleted those\r\n // that don't match with the current selection. if we don't\r\n // have any left, we don't have a selection anymore\r\n return allPossibleSelections.size > 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { onUnexpectedExternalError, canceled, isPromiseCanceledError } from '../../../base/common/errors.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { FuzzyScore } from '../../../base/common/filters.js';\r\nimport { isDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { SnippetParser } from '../snippet/snippetParser.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ITextModelService } from '../../common/services/resolverService.js';\r\nimport { localize } from '../../../nls.js';\r\nexport const Context = {\r\n Visible: new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', \"Whether suggestion are visible\")),\r\n DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize('suggestWidgetDetailsVisible', \"Whether suggestion details are visible\")),\r\n MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize('suggestWidgetMultipleSuggestions', \"Whether there are multiple suggestions to pick from\")),\r\n MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize('suggestionMakesTextEdit', \"Whether inserting the current suggestion yields in a change or has everything already been typed\")),\r\n AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize('acceptSuggestionOnEnter', \"Whether suggestions are inserted when pressing Enter\")),\r\n HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize('suggestionHasInsertAndReplaceRange', \"Whether the current suggestion has insert and replace behaviour\")),\r\n InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize('suggestionInsertMode', \"Whether the default behaviour is to insert or replace\") }),\r\n CanResolve: new RawContextKey('suggestionCanResolve', false, localize('suggestionCanResolve', \"Whether the current suggestion supports to resolve further details\")),\r\n};\r\nexport const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');\r\nexport class CompletionItem {\r\n constructor(position, completion, container, provider) {\r\n this.position = position;\r\n this.completion = completion;\r\n this.container = container;\r\n this.provider = provider;\r\n // validation\r\n this.isInvalid = false;\r\n // sorting, filtering\r\n this.score = FuzzyScore.Default;\r\n this.distance = 0;\r\n this.textLabel = typeof completion.label === 'string'\r\n ? completion.label\r\n : completion.label.label;\r\n // ensure lower-variants (perf)\r\n this.labelLow = this.textLabel.toLowerCase();\r\n // validate label\r\n this.isInvalid = !this.textLabel;\r\n this.sortTextLow = completion.sortText && completion.sortText.toLowerCase();\r\n this.filterTextLow = completion.filterText && completion.filterText.toLowerCase();\r\n // normalize ranges\r\n if (Range.isIRange(completion.range)) {\r\n this.editStart = new Position(completion.range.startLineNumber, completion.range.startColumn);\r\n this.editInsertEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\r\n this.editReplaceEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\r\n // validate range\r\n this.isInvalid = this.isInvalid\r\n || Range.spansMultipleLines(completion.range) || completion.range.startLineNumber !== position.lineNumber;\r\n }\r\n else {\r\n this.editStart = new Position(completion.range.insert.startLineNumber, completion.range.insert.startColumn);\r\n this.editInsertEnd = new Position(completion.range.insert.endLineNumber, completion.range.insert.endColumn);\r\n this.editReplaceEnd = new Position(completion.range.replace.endLineNumber, completion.range.replace.endColumn);\r\n // validate ranges\r\n this.isInvalid = this.isInvalid\r\n || Range.spansMultipleLines(completion.range.insert) || Range.spansMultipleLines(completion.range.replace)\r\n || completion.range.insert.startLineNumber !== position.lineNumber || completion.range.replace.startLineNumber !== position.lineNumber\r\n || completion.range.insert.startColumn !== completion.range.replace.startColumn;\r\n }\r\n // create the suggestion resolver\r\n if (typeof provider.resolveCompletionItem !== 'function') {\r\n this._resolveCache = Promise.resolve();\r\n this._isResolved = true;\r\n }\r\n }\r\n // ---- resolving\r\n get isResolved() {\r\n return !!this._isResolved;\r\n }\r\n resolve(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._resolveCache) {\r\n const sub = token.onCancellationRequested(() => {\r\n this._resolveCache = undefined;\r\n this._isResolved = false;\r\n });\r\n this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem(this.completion, token)).then(value => {\r\n Object.assign(this.completion, value);\r\n this._isResolved = true;\r\n sub.dispose();\r\n }, err => {\r\n if (isPromiseCanceledError(err)) {\r\n // the IPC queue will reject the request with the\r\n // cancellation error -> reset cached\r\n this._resolveCache = undefined;\r\n this._isResolved = false;\r\n }\r\n });\r\n }\r\n return this._resolveCache;\r\n });\r\n }\r\n}\r\nexport class CompletionOptions {\r\n constructor(snippetSortOrder = 2 /* Bottom */, kindFilter = new Set(), providerFilter = new Set(), showDeprecated = true) {\r\n this.snippetSortOrder = snippetSortOrder;\r\n this.kindFilter = kindFilter;\r\n this.providerFilter = providerFilter;\r\n this.showDeprecated = showDeprecated;\r\n }\r\n}\r\nCompletionOptions.default = new CompletionOptions();\r\nlet _snippetSuggestSupport;\r\nexport function getSnippetSuggestSupport() {\r\n return _snippetSuggestSupport;\r\n}\r\nexport class CompletionItemModel {\r\n constructor(items, needsClipboard, durations, disposable) {\r\n this.items = items;\r\n this.needsClipboard = needsClipboard;\r\n this.durations = durations;\r\n this.disposable = disposable;\r\n }\r\n}\r\nexport function provideSuggestionItems(model, position, options = CompletionOptions.default, context = { triggerKind: 0 /* Invoke */ }, token = CancellationToken.None) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const sw = new StopWatch(true);\r\n position = position.clone();\r\n const word = model.getWordAtPosition(position);\r\n const defaultReplaceRange = word ? new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn) : Range.fromPositions(position);\r\n const defaultRange = { replace: defaultReplaceRange, insert: defaultReplaceRange.setEndPosition(position.lineNumber, position.column) };\r\n const result = [];\r\n const disposables = new DisposableStore();\r\n const durations = [];\r\n let needsClipboard = false;\r\n const onCompletionList = (provider, container, sw) => {\r\n var _a, _b, _c;\r\n if (!container) {\r\n return;\r\n }\r\n for (let suggestion of container.suggestions) {\r\n if (!options.kindFilter.has(suggestion.kind)) {\r\n // skip if not showing deprecated suggestions\r\n if (!options.showDeprecated && ((_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.tags) === null || _a === void 0 ? void 0 : _a.includes(1 /* Deprecated */))) {\r\n continue;\r\n }\r\n // fill in default range when missing\r\n if (!suggestion.range) {\r\n suggestion.range = defaultRange;\r\n }\r\n // fill in default sortText when missing\r\n if (!suggestion.sortText) {\r\n suggestion.sortText = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.label;\r\n }\r\n if (!needsClipboard && suggestion.insertTextRules && suggestion.insertTextRules & 4 /* InsertAsSnippet */) {\r\n needsClipboard = SnippetParser.guessNeedsClipboard(suggestion.insertText);\r\n }\r\n result.push(new CompletionItem(position, suggestion, container, provider));\r\n }\r\n }\r\n if (isDisposable(container)) {\r\n disposables.add(container);\r\n }\r\n durations.push({\r\n providerName: (_b = provider._debugDisplayName) !== null && _b !== void 0 ? _b : 'unkown_provider', elapsedProvider: (_c = container.duration) !== null && _c !== void 0 ? _c : -1, elapsedOverall: sw.elapsed()\r\n });\r\n };\r\n // ask for snippets in parallel to asking \"real\" providers. Only do something if configured to\r\n // do so - no snippet filter, no special-providers-only request\r\n const snippetCompletions = (() => __awaiter(this, void 0, void 0, function* () {\r\n if (!_snippetSuggestSupport || options.kindFilter.has(27 /* Snippet */)) {\r\n return;\r\n }\r\n if (options.providerFilter.size > 0 && !options.providerFilter.has(_snippetSuggestSupport)) {\r\n return;\r\n }\r\n const sw = new StopWatch(true);\r\n const list = yield _snippetSuggestSupport.provideCompletionItems(model, position, context, token);\r\n onCompletionList(_snippetSuggestSupport, list, sw);\r\n }))();\r\n // add suggestions from contributed providers - providers are ordered in groups of\r\n // equal score and once a group produces a result the process stops\r\n // get provider groups, always add snippet suggestion provider\r\n for (let providerGroup of modes.CompletionProviderRegistry.orderedGroups(model)) {\r\n // for each support in the group ask for suggestions\r\n let lenBefore = result.length;\r\n yield Promise.all(providerGroup.map((provider) => __awaiter(this, void 0, void 0, function* () {\r\n if (options.providerFilter.size > 0 && !options.providerFilter.has(provider)) {\r\n return;\r\n }\r\n try {\r\n const sw = new StopWatch(true);\r\n const list = yield provider.provideCompletionItems(model, position, context, token);\r\n onCompletionList(provider, list, sw);\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n }\r\n })));\r\n if (lenBefore !== result.length || token.isCancellationRequested) {\r\n break;\r\n }\r\n }\r\n yield snippetCompletions;\r\n if (token.isCancellationRequested) {\r\n disposables.dispose();\r\n return Promise.reject(canceled());\r\n }\r\n return new CompletionItemModel(result.sort(getSuggestionComparator(options.snippetSortOrder)), needsClipboard, { entries: durations, elapsed: sw.elapsed() }, disposables);\r\n });\r\n}\r\nfunction defaultComparator(a, b) {\r\n // check with 'sortText'\r\n if (a.sortTextLow && b.sortTextLow) {\r\n if (a.sortTextLow < b.sortTextLow) {\r\n return -1;\r\n }\r\n else if (a.sortTextLow > b.sortTextLow) {\r\n return 1;\r\n }\r\n }\r\n // check with 'label'\r\n if (a.completion.label < b.completion.label) {\r\n return -1;\r\n }\r\n else if (a.completion.label > b.completion.label) {\r\n return 1;\r\n }\r\n // check with 'type'\r\n return a.completion.kind - b.completion.kind;\r\n}\r\nfunction snippetUpComparator(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n }\r\n return defaultComparator(a, b);\r\n}\r\nfunction snippetDownComparator(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n }\r\n return defaultComparator(a, b);\r\n}\r\nconst _snippetComparators = new Map();\r\n_snippetComparators.set(0 /* Top */, snippetUpComparator);\r\n_snippetComparators.set(2 /* Bottom */, snippetDownComparator);\r\n_snippetComparators.set(1 /* Inline */, defaultComparator);\r\nexport function getSuggestionComparator(snippetConfig) {\r\n return _snippetComparators.get(snippetConfig);\r\n}\r\nCommandsRegistry.registerCommand('_executeCompletionItemProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri, position, triggerCharacter, maxItemsToResolve] = args;\r\n assertType(URI.isUri(uri));\r\n assertType(Position.isIPosition(position));\r\n assertType(typeof triggerCharacter === 'string' || !triggerCharacter);\r\n assertType(typeof maxItemsToResolve === 'number' || !maxItemsToResolve);\r\n const ref = yield accessor.get(ITextModelService).createModelReference(uri);\r\n try {\r\n const result = {\r\n incomplete: false,\r\n suggestions: []\r\n };\r\n const resolving = [];\r\n const completions = yield provideSuggestionItems(ref.object.textEditorModel, Position.lift(position), undefined, { triggerCharacter, triggerKind: triggerCharacter ? 1 /* TriggerCharacter */ : 0 /* Invoke */ });\r\n for (const item of completions.items) {\r\n if (resolving.length < (maxItemsToResolve !== null && maxItemsToResolve !== void 0 ? maxItemsToResolve : 0)) {\r\n resolving.push(item.resolve(CancellationToken.None));\r\n }\r\n result.incomplete = result.incomplete || item.container.incomplete;\r\n result.suggestions.push(item.completion);\r\n }\r\n try {\r\n yield Promise.all(resolving);\r\n return result;\r\n }\r\n finally {\r\n setTimeout(() => completions.disposable.dispose(), 100);\r\n }\r\n }\r\n finally {\r\n ref.dispose();\r\n }\r\n}));\r\nconst _provider = new class {\r\n constructor() {\r\n this.onlyOnceSuggestions = [];\r\n }\r\n provideCompletionItems() {\r\n let suggestions = this.onlyOnceSuggestions.slice(0);\r\n let result = { suggestions };\r\n this.onlyOnceSuggestions.length = 0;\r\n return result;\r\n }\r\n};\r\nmodes.CompletionProviderRegistry.register('*', _provider);\r\nexport function showSimpleSuggestions(editor, suggestions) {\r\n setTimeout(() => {\r\n _provider.onlyOnceSuggestions.push(...suggestions);\r\n editor.getContribution('editor.contrib.suggestController').triggerSuggest(new Set().add(_provider));\r\n }, 0);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { showSimpleSuggestions } from '../suggest/suggest.js';\r\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { SnippetSession } from './snippetSession.js';\r\nimport { localize } from '../../../nls.js';\r\nconst _defaultOptions = {\r\n overwriteBefore: 0,\r\n overwriteAfter: 0,\r\n undoStopBefore: true,\r\n undoStopAfter: true,\r\n adjustWhitespace: true,\r\n clipboardText: undefined,\r\n overtypingCapturer: undefined\r\n};\r\nlet SnippetController2 = class SnippetController2 {\r\n constructor(_editor, _logService, contextKeyService) {\r\n this._editor = _editor;\r\n this._logService = _logService;\r\n this._snippetListener = new DisposableStore();\r\n this._modelVersionId = -1;\r\n this._inSnippet = SnippetController2.InSnippetMode.bindTo(contextKeyService);\r\n this._hasNextTabstop = SnippetController2.HasNextTabstop.bindTo(contextKeyService);\r\n this._hasPrevTabstop = SnippetController2.HasPrevTabstop.bindTo(contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SnippetController2.ID);\r\n }\r\n dispose() {\r\n var _a;\r\n this._inSnippet.reset();\r\n this._hasPrevTabstop.reset();\r\n this._hasNextTabstop.reset();\r\n (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._snippetListener.dispose();\r\n }\r\n insert(template, opts) {\r\n // this is here to find out more about the yet-not-understood\r\n // error that sometimes happens when we fail to inserted a nested\r\n // snippet\r\n try {\r\n this._doInsert(template, typeof opts === 'undefined' ? _defaultOptions : Object.assign(Object.assign({}, _defaultOptions), opts));\r\n }\r\n catch (e) {\r\n this.cancel();\r\n this._logService.error(e);\r\n this._logService.error('snippet_error');\r\n this._logService.error('insert_template=', template);\r\n this._logService.error('existing_template=', this._session ? this._session._logInfo() : '');\r\n }\r\n }\r\n _doInsert(template, opts) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n // don't listen while inserting the snippet\r\n // as that is the inflight state causing cancelation\r\n this._snippetListener.clear();\r\n if (opts.undoStopBefore) {\r\n this._editor.getModel().pushStackElement();\r\n }\r\n if (!this._session) {\r\n this._modelVersionId = this._editor.getModel().getAlternativeVersionId();\r\n this._session = new SnippetSession(this._editor, template, opts);\r\n this._session.insert();\r\n }\r\n else {\r\n this._session.merge(template, opts);\r\n }\r\n if (opts.undoStopAfter) {\r\n this._editor.getModel().pushStackElement();\r\n }\r\n this._updateState();\r\n this._snippetListener.add(this._editor.onDidChangeModelContent(e => e.isFlush && this.cancel()));\r\n this._snippetListener.add(this._editor.onDidChangeModel(() => this.cancel()));\r\n this._snippetListener.add(this._editor.onDidChangeCursorSelection(() => this._updateState()));\r\n }\r\n _updateState() {\r\n if (!this._session || !this._editor.hasModel()) {\r\n // canceled in the meanwhile\r\n return;\r\n }\r\n if (this._modelVersionId === this._editor.getModel().getAlternativeVersionId()) {\r\n // undo until the 'before' state happened\r\n // and makes use cancel snippet mode\r\n return this.cancel();\r\n }\r\n if (!this._session.hasPlaceholder) {\r\n // don't listen for selection changes and don't\r\n // update context keys when the snippet is plain text\r\n return this.cancel();\r\n }\r\n if (this._session.isAtLastPlaceholder || !this._session.isSelectionWithinPlaceholders()) {\r\n return this.cancel();\r\n }\r\n this._inSnippet.set(true);\r\n this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder);\r\n this._hasNextTabstop.set(!this._session.isAtLastPlaceholder);\r\n this._handleChoice();\r\n }\r\n _handleChoice() {\r\n if (!this._session || !this._editor.hasModel()) {\r\n this._currentChoice = undefined;\r\n return;\r\n }\r\n const { choice } = this._session;\r\n if (!choice) {\r\n this._currentChoice = undefined;\r\n return;\r\n }\r\n if (this._currentChoice !== choice) {\r\n this._currentChoice = choice;\r\n this._editor.setSelections(this._editor.getSelections()\r\n .map(s => Selection.fromPositions(s.getStartPosition())));\r\n const [first] = choice.options;\r\n showSimpleSuggestions(this._editor, choice.options.map((option, i) => {\r\n // let before = choice.options.slice(0, i);\r\n // let after = choice.options.slice(i);\r\n return {\r\n kind: 13 /* Value */,\r\n label: option.value,\r\n insertText: option.value,\r\n // insertText: `\\${1|${after.concat(before).join(',')}|}$0`,\r\n // snippetType: 'textmate',\r\n sortText: 'a'.repeat(i + 1),\r\n range: Range.fromPositions(this._editor.getPosition(), this._editor.getPosition().delta(0, first.value.length))\r\n };\r\n }));\r\n }\r\n }\r\n finish() {\r\n while (this._inSnippet.get()) {\r\n this.next();\r\n }\r\n }\r\n cancel(resetSelection = false) {\r\n var _a;\r\n this._inSnippet.reset();\r\n this._hasPrevTabstop.reset();\r\n this._hasNextTabstop.reset();\r\n this._snippetListener.clear();\r\n (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._session = undefined;\r\n this._modelVersionId = -1;\r\n if (resetSelection) {\r\n // reset selection to the primary cursor when being asked\r\n // for. this happens when explicitly cancelling snippet mode,\r\n // e.g. when pressing ESC\r\n this._editor.setSelections([this._editor.getSelection()]);\r\n }\r\n }\r\n prev() {\r\n if (this._session) {\r\n this._session.prev();\r\n }\r\n this._updateState();\r\n }\r\n next() {\r\n if (this._session) {\r\n this._session.next();\r\n }\r\n this._updateState();\r\n }\r\n isInSnippet() {\r\n return Boolean(this._inSnippet.get());\r\n }\r\n};\r\nSnippetController2.ID = 'snippetController2';\r\nSnippetController2.InSnippetMode = new RawContextKey('inSnippetMode', false, localize('inSnippetMode', \"Whether the editor in current in snippet mode\"));\r\nSnippetController2.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize('hasNextTabstop', \"Whether there is a next tab stop when in snippet mode\"));\r\nSnippetController2.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize('hasPrevTabstop', \"Whether there is a previous tab stop when in snippet mode\"));\r\nSnippetController2 = __decorate([\r\n __param(1, ILogService),\r\n __param(2, IContextKeyService)\r\n], SnippetController2);\r\nexport { SnippetController2 };\r\nregisterEditorContribution(SnippetController2.ID, SnippetController2);\r\nconst CommandCtor = EditorCommand.bindToContribution(SnippetController2.get);\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'jumpToNextSnippetPlaceholder',\r\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasNextTabstop),\r\n handler: ctrl => ctrl.next(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'jumpToPrevSnippetPlaceholder',\r\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasPrevTabstop),\r\n handler: ctrl => ctrl.prev(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'leaveSnippet',\r\n precondition: SnippetController2.InSnippetMode,\r\n handler: ctrl => ctrl.cancel(true),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'acceptSnippet',\r\n precondition: SnippetController2.InSnippetMode,\r\n handler: ctrl => ctrl.finish(),\r\n // kbOpts: {\r\n // \tweight: KeybindingWeight.EditorContrib + 30,\r\n // \tkbExpr: EditorContextKeys.textFocus,\r\n // \tprimary: KeyCode.Enter,\r\n // }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { LRUCache, TernarySearchTree } from '../../../base/common/map.js';\r\nimport { IStorageService, WillSaveStateReason } from '../../../platform/storage/common/storage.js';\r\nimport { completionKindFromString } from '../../common/modes.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nexport class Memory {\r\n constructor(name) {\r\n this.name = name;\r\n }\r\n select(model, pos, items) {\r\n if (items.length === 0) {\r\n return 0;\r\n }\r\n let topScore = items[0].score[0];\r\n for (let i = 0; i < items.length; i++) {\r\n const { score, completion: suggestion } = items[i];\r\n if (score[0] !== topScore) {\r\n // stop when leaving the group of top matches\r\n break;\r\n }\r\n if (suggestion.preselect) {\r\n // stop when seeing an auto-select-item\r\n return i;\r\n }\r\n }\r\n return 0;\r\n }\r\n}\r\nexport class NoMemory extends Memory {\r\n constructor() {\r\n super('first');\r\n }\r\n memorize(model, pos, item) {\r\n // no-op\r\n }\r\n toJSON() {\r\n return undefined;\r\n }\r\n fromJSON() {\r\n //\r\n }\r\n}\r\nexport class LRUMemory extends Memory {\r\n constructor() {\r\n super('recentlyUsed');\r\n this._cache = new LRUCache(300, 0.66);\r\n this._seq = 0;\r\n }\r\n memorize(model, pos, item) {\r\n const key = `${model.getLanguageIdentifier().language}/${item.textLabel}`;\r\n this._cache.set(key, {\r\n touch: this._seq++,\r\n type: item.completion.kind,\r\n insertText: item.completion.insertText\r\n });\r\n }\r\n select(model, pos, items) {\r\n if (items.length === 0) {\r\n return 0;\r\n }\r\n const lineSuffix = model.getLineContent(pos.lineNumber).substr(pos.column - 10, pos.column - 1);\r\n if (/\\s$/.test(lineSuffix)) {\r\n return super.select(model, pos, items);\r\n }\r\n let topScore = items[0].score[0];\r\n let indexPreselect = -1;\r\n let indexRecency = -1;\r\n let seq = -1;\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].score[0] !== topScore) {\r\n // consider only top items\r\n break;\r\n }\r\n const key = `${model.getLanguageIdentifier().language}/${items[i].textLabel}`;\r\n const item = this._cache.peek(key);\r\n if (item && item.touch > seq && item.type === items[i].completion.kind && item.insertText === items[i].completion.insertText) {\r\n seq = item.touch;\r\n indexRecency = i;\r\n }\r\n if (items[i].completion.preselect && indexPreselect === -1) {\r\n // stop when seeing an auto-select-item\r\n return indexPreselect = i;\r\n }\r\n }\r\n if (indexRecency !== -1) {\r\n return indexRecency;\r\n }\r\n else if (indexPreselect !== -1) {\r\n return indexPreselect;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n toJSON() {\r\n return this._cache.toJSON();\r\n }\r\n fromJSON(data) {\r\n this._cache.clear();\r\n let seq = 0;\r\n for (const [key, value] of data) {\r\n value.touch = seq;\r\n value.type = typeof value.type === 'number' ? value.type : completionKindFromString(value.type);\r\n this._cache.set(key, value);\r\n }\r\n this._seq = this._cache.size;\r\n }\r\n}\r\nexport class PrefixMemory extends Memory {\r\n constructor() {\r\n super('recentlyUsedByPrefix');\r\n this._trie = TernarySearchTree.forStrings();\r\n this._seq = 0;\r\n }\r\n memorize(model, pos, item) {\r\n const { word } = model.getWordUntilPosition(pos);\r\n const key = `${model.getLanguageIdentifier().language}/${word}`;\r\n this._trie.set(key, {\r\n type: item.completion.kind,\r\n insertText: item.completion.insertText,\r\n touch: this._seq++\r\n });\r\n }\r\n select(model, pos, items) {\r\n let { word } = model.getWordUntilPosition(pos);\r\n if (!word) {\r\n return super.select(model, pos, items);\r\n }\r\n let key = `${model.getLanguageIdentifier().language}/${word}`;\r\n let item = this._trie.get(key);\r\n if (!item) {\r\n item = this._trie.findSubstr(key);\r\n }\r\n if (item) {\r\n for (let i = 0; i < items.length; i++) {\r\n let { kind, insertText } = items[i].completion;\r\n if (kind === item.type && insertText === item.insertText) {\r\n return i;\r\n }\r\n }\r\n }\r\n return super.select(model, pos, items);\r\n }\r\n toJSON() {\r\n let entries = [];\r\n this._trie.forEach((value, key) => entries.push([key, value]));\r\n // sort by last recently used (touch), then\r\n // take the top 200 item and normalize their\r\n // touch\r\n entries\r\n .sort((a, b) => -(a[1].touch - b[1].touch))\r\n .forEach((value, i) => value[1].touch = i);\r\n return entries.slice(0, 200);\r\n }\r\n fromJSON(data) {\r\n this._trie.clear();\r\n if (data.length > 0) {\r\n this._seq = data[0][1].touch + 1;\r\n for (const [key, value] of data) {\r\n value.type = typeof value.type === 'number' ? value.type : completionKindFromString(value.type);\r\n this._trie.set(key, value);\r\n }\r\n }\r\n }\r\n}\r\nlet SuggestMemoryService = class SuggestMemoryService {\r\n constructor(_storageService, _modeService, _configService) {\r\n this._storageService = _storageService;\r\n this._modeService = _modeService;\r\n this._configService = _configService;\r\n this._disposables = new DisposableStore();\r\n this._persistSoon = new RunOnceScheduler(() => this._saveState(), 500);\r\n this._disposables.add(_storageService.onWillSaveState(e => {\r\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\r\n this._saveState();\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._persistSoon.dispose();\r\n }\r\n memorize(model, pos, item) {\r\n this._withStrategy(model, pos).memorize(model, pos, item);\r\n this._persistSoon.schedule();\r\n }\r\n select(model, pos, items) {\r\n return this._withStrategy(model, pos).select(model, pos, items);\r\n }\r\n _withStrategy(model, pos) {\r\n var _a, _b;\r\n const mode = this._configService.getValue('editor.suggestSelection', {\r\n overrideIdentifier: (_a = this._modeService.getLanguageIdentifier(model.getLanguageIdAtPosition(pos.lineNumber, pos.column))) === null || _a === void 0 ? void 0 : _a.language,\r\n resource: model.uri\r\n });\r\n if (((_b = this._strategy) === null || _b === void 0 ? void 0 : _b.name) !== mode) {\r\n this._saveState();\r\n const ctor = SuggestMemoryService._strategyCtors.get(mode) || NoMemory;\r\n this._strategy = new ctor();\r\n try {\r\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\r\n const scope = share ? 0 /* GLOBAL */ : 1 /* WORKSPACE */;\r\n const raw = this._storageService.get(`${SuggestMemoryService._storagePrefix}/${mode}`, scope);\r\n if (raw) {\r\n this._strategy.fromJSON(JSON.parse(raw));\r\n }\r\n }\r\n catch (e) {\r\n // things can go wrong with JSON...\r\n }\r\n }\r\n return this._strategy;\r\n }\r\n _saveState() {\r\n if (this._strategy) {\r\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\r\n const scope = share ? 0 /* GLOBAL */ : 1 /* WORKSPACE */;\r\n const raw = JSON.stringify(this._strategy);\r\n this._storageService.store(`${SuggestMemoryService._storagePrefix}/${this._strategy.name}`, raw, scope, 1 /* MACHINE */);\r\n }\r\n }\r\n};\r\nSuggestMemoryService._strategyCtors = new Map([\r\n ['recentlyUsedByPrefix', PrefixMemory],\r\n ['recentlyUsed', LRUMemory],\r\n ['first', NoMemory]\r\n]);\r\nSuggestMemoryService._storagePrefix = 'suggest/memories';\r\nSuggestMemoryService = __decorate([\r\n __param(0, IStorageService),\r\n __param(1, IModeService),\r\n __param(2, IConfigurationService)\r\n], SuggestMemoryService);\r\nexport { SuggestMemoryService };\r\nexport const ISuggestMemoryService = createDecorator('ISuggestMemories');\r\nregisterSingleton(ISuggestMemoryService, SuggestMemoryService, true);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nlet SuggestAlternatives = class SuggestAlternatives {\r\n constructor(_editor, contextKeyService) {\r\n this._editor = _editor;\r\n this._index = 0;\r\n this._ckOtherSuggestions = SuggestAlternatives.OtherSuggestions.bindTo(contextKeyService);\r\n }\r\n dispose() {\r\n this.reset();\r\n }\r\n reset() {\r\n var _a;\r\n this._ckOtherSuggestions.reset();\r\n (_a = this._listener) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._model = undefined;\r\n this._acceptNext = undefined;\r\n this._ignore = false;\r\n }\r\n set({ model, index }, acceptNext) {\r\n // no suggestions -> nothing to do\r\n if (model.items.length === 0) {\r\n this.reset();\r\n return;\r\n }\r\n // no alternative suggestions -> nothing to do\r\n let nextIndex = SuggestAlternatives._moveIndex(true, model, index);\r\n if (nextIndex === index) {\r\n this.reset();\r\n return;\r\n }\r\n this._acceptNext = acceptNext;\r\n this._model = model;\r\n this._index = index;\r\n this._listener = this._editor.onDidChangeCursorPosition(() => {\r\n if (!this._ignore) {\r\n this.reset();\r\n }\r\n });\r\n this._ckOtherSuggestions.set(true);\r\n }\r\n static _moveIndex(fwd, model, index) {\r\n let newIndex = index;\r\n while (true) {\r\n newIndex = (newIndex + model.items.length + (fwd ? +1 : -1)) % model.items.length;\r\n if (newIndex === index) {\r\n break;\r\n }\r\n if (!model.items[newIndex].completion.additionalTextEdits) {\r\n break;\r\n }\r\n }\r\n return newIndex;\r\n }\r\n next() {\r\n this._move(true);\r\n }\r\n prev() {\r\n this._move(false);\r\n }\r\n _move(fwd) {\r\n if (!this._model) {\r\n // nothing to reason about\r\n return;\r\n }\r\n try {\r\n this._ignore = true;\r\n this._index = SuggestAlternatives._moveIndex(fwd, this._model, this._index);\r\n this._acceptNext({ index: this._index, item: this._model.items[this._index], model: this._model });\r\n }\r\n finally {\r\n this._ignore = false;\r\n }\r\n }\r\n};\r\nSuggestAlternatives.OtherSuggestions = new RawContextKey('hasOtherSuggestions', false);\r\nSuggestAlternatives = __decorate([\r\n __param(1, IContextKeyService)\r\n], SuggestAlternatives);\r\nexport { SuggestAlternatives };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { fuzzyScore, fuzzyScoreGracefulAggressive, FuzzyScore, anyScore } from '../../../base/common/filters.js';\r\nimport { compareIgnoreCase } from '../../../base/common/strings.js';\r\nimport { quickSelect } from '../../../base/common/arrays.js';\r\nexport class LineContext {\r\n constructor(leadingLineContent, characterCountDelta) {\r\n this.leadingLineContent = leadingLineContent;\r\n this.characterCountDelta = characterCountDelta;\r\n }\r\n}\r\n/**\r\n * Sorted, filtered completion view model\r\n * */\r\nexport class CompletionModel {\r\n constructor(items, column, lineContext, wordDistance, options, snippetSuggestions, clipboardText) {\r\n this.clipboardText = clipboardText;\r\n this._snippetCompareFn = CompletionModel._compareCompletionItems;\r\n this._items = items;\r\n this._column = column;\r\n this._wordDistance = wordDistance;\r\n this._options = options;\r\n this._refilterKind = 1 /* All */;\r\n this._lineContext = lineContext;\r\n if (snippetSuggestions === 'top') {\r\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsUp;\r\n }\r\n else if (snippetSuggestions === 'bottom') {\r\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsDown;\r\n }\r\n }\r\n get lineContext() {\r\n return this._lineContext;\r\n }\r\n set lineContext(value) {\r\n if (this._lineContext.leadingLineContent !== value.leadingLineContent\r\n || this._lineContext.characterCountDelta !== value.characterCountDelta) {\r\n this._refilterKind = this._lineContext.characterCountDelta < value.characterCountDelta && this._filteredItems ? 2 /* Incr */ : 1 /* All */;\r\n this._lineContext = value;\r\n }\r\n }\r\n get items() {\r\n this._ensureCachedState();\r\n return this._filteredItems;\r\n }\r\n get allProvider() {\r\n this._ensureCachedState();\r\n return this._providerInfo.keys();\r\n }\r\n get incomplete() {\r\n this._ensureCachedState();\r\n const result = new Set();\r\n for (let [provider, incomplete] of this._providerInfo) {\r\n if (incomplete) {\r\n result.add(provider);\r\n }\r\n }\r\n return result;\r\n }\r\n adopt(except) {\r\n let res = [];\r\n for (let i = 0; i < this._items.length;) {\r\n if (!except.has(this._items[i].provider)) {\r\n res.push(this._items[i]);\r\n // unordered removed\r\n this._items[i] = this._items[this._items.length - 1];\r\n this._items.pop();\r\n }\r\n else {\r\n // continue with next item\r\n i++;\r\n }\r\n }\r\n this._refilterKind = 1 /* All */;\r\n return res;\r\n }\r\n get stats() {\r\n this._ensureCachedState();\r\n return this._stats;\r\n }\r\n _ensureCachedState() {\r\n if (this._refilterKind !== 0 /* Nothing */) {\r\n this._createCachedState();\r\n }\r\n }\r\n _createCachedState() {\r\n this._providerInfo = new Map();\r\n const labelLengths = [];\r\n const { leadingLineContent, characterCountDelta } = this._lineContext;\r\n let word = '';\r\n let wordLow = '';\r\n // incrementally filter less\r\n const source = this._refilterKind === 1 /* All */ ? this._items : this._filteredItems;\r\n const target = [];\r\n // picks a score function based on the number of\r\n // items that we have to score/filter and based on the\r\n // user-configuration\r\n const scoreFn = (!this._options.filterGraceful || source.length > 2000) ? fuzzyScore : fuzzyScoreGracefulAggressive;\r\n for (let i = 0; i < source.length; i++) {\r\n const item = source[i];\r\n if (item.isInvalid) {\r\n continue; // SKIP invalid items\r\n }\r\n // collect all support, know if their result is incomplete\r\n this._providerInfo.set(item.provider, Boolean(item.container.incomplete));\r\n // 'word' is that remainder of the current line that we\r\n // filter and score against. In theory each suggestion uses a\r\n // different word, but in practice not - that's why we cache\r\n const overwriteBefore = item.position.column - item.editStart.column;\r\n const wordLen = overwriteBefore + characterCountDelta - (item.position.column - this._column);\r\n if (word.length !== wordLen) {\r\n word = wordLen === 0 ? '' : leadingLineContent.slice(-wordLen);\r\n wordLow = word.toLowerCase();\r\n }\r\n // remember the word against which this item was\r\n // scored\r\n item.word = word;\r\n if (wordLen === 0) {\r\n // when there is nothing to score against, don't\r\n // event try to do. Use a const rank and rely on\r\n // the fallback-sort using the initial sort order.\r\n // use a score of `-100` because that is out of the\r\n // bound of values `fuzzyScore` will return\r\n item.score = FuzzyScore.Default;\r\n }\r\n else {\r\n // skip word characters that are whitespace until\r\n // we have hit the replace range (overwriteBefore)\r\n let wordPos = 0;\r\n while (wordPos < overwriteBefore) {\r\n const ch = word.charCodeAt(wordPos);\r\n if (ch === 32 /* Space */ || ch === 9 /* Tab */) {\r\n wordPos += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (wordPos >= wordLen) {\r\n // the wordPos at which scoring starts is the whole word\r\n // and therefore the same rules as not having a word apply\r\n item.score = FuzzyScore.Default;\r\n }\r\n else if (typeof item.completion.filterText === 'string') {\r\n // when there is a `filterText` it must match the `word`.\r\n // if it matches we check with the label to compute highlights\r\n // and if that doesn't yield a result we have no highlights,\r\n // despite having the match\r\n let match = scoreFn(word, wordLow, wordPos, item.completion.filterText, item.filterTextLow, 0, false);\r\n if (!match) {\r\n continue; // NO match\r\n }\r\n if (compareIgnoreCase(item.completion.filterText, item.textLabel) === 0) {\r\n // filterText and label are actually the same -> use good highlights\r\n item.score = match;\r\n }\r\n else {\r\n // re-run the scorer on the label in the hope of a result BUT use the rank\r\n // of the filterText-match\r\n item.score = anyScore(word, wordLow, wordPos, item.textLabel, item.labelLow, 0);\r\n item.score[0] = match[0]; // use score from filterText\r\n }\r\n }\r\n else {\r\n // by default match `word` against the `label`\r\n let match = scoreFn(word, wordLow, wordPos, item.textLabel, item.labelLow, 0, false);\r\n if (!match) {\r\n continue; // NO match\r\n }\r\n item.score = match;\r\n }\r\n }\r\n item.idx = i;\r\n item.distance = this._wordDistance.distance(item.position, item.completion);\r\n target.push(item);\r\n // update stats\r\n labelLengths.push(item.textLabel.length);\r\n }\r\n this._filteredItems = target.sort(this._snippetCompareFn);\r\n this._refilterKind = 0 /* Nothing */;\r\n this._stats = {\r\n pLabelLen: labelLengths.length ?\r\n quickSelect(labelLengths.length - .85, labelLengths, (a, b) => a - b)\r\n : 0\r\n };\r\n }\r\n static _compareCompletionItems(a, b) {\r\n if (a.score[0] > b.score[0]) {\r\n return -1;\r\n }\r\n else if (a.score[0] < b.score[0]) {\r\n return 1;\r\n }\r\n else if (a.distance < b.distance) {\r\n return -1;\r\n }\r\n else if (a.distance > b.distance) {\r\n return 1;\r\n }\r\n else if (a.idx < b.idx) {\r\n return -1;\r\n }\r\n else if (a.idx > b.idx) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n static _compareCompletionItemsSnippetsDown(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n }\r\n return CompletionModel._compareCompletionItems(a, b);\r\n }\r\n static _compareCompletionItemsSnippetsUp(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n }\r\n return CompletionModel._compareCompletionItems(a, b);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { binarySearch, isFalsyOrEmpty } from '../../../base/common/arrays.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { BracketSelectionRangeProvider } from '../smartSelect/bracketSelections.js';\r\nexport class WordDistance {\r\n static create(service, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.getOption(105 /* suggest */).localityBonus) {\r\n return WordDistance.None;\r\n }\r\n if (!editor.hasModel()) {\r\n return WordDistance.None;\r\n }\r\n const model = editor.getModel();\r\n const position = editor.getPosition();\r\n if (!service.canComputeWordRanges(model.uri)) {\r\n return WordDistance.None;\r\n }\r\n const [ranges] = yield new BracketSelectionRangeProvider().provideSelectionRanges(model, [position]);\r\n if (ranges.length === 0) {\r\n return WordDistance.None;\r\n }\r\n const wordRanges = yield service.computeWordRanges(model.uri, ranges[0].range);\r\n if (!wordRanges) {\r\n return WordDistance.None;\r\n }\r\n // remove current word\r\n const wordUntilPos = model.getWordUntilPosition(position);\r\n delete wordRanges[wordUntilPos.word];\r\n return new class extends WordDistance {\r\n distance(anchor, item) {\r\n if (!position.equals(editor.getPosition())) {\r\n return 0;\r\n }\r\n if (item.kind === 17 /* Keyword */) {\r\n return 2 << 20;\r\n }\r\n let word = typeof item.label === 'string' ? item.label : item.label.label;\r\n let wordLines = wordRanges[word];\r\n if (isFalsyOrEmpty(wordLines)) {\r\n return 2 << 20;\r\n }\r\n let idx = binarySearch(wordLines, Range.fromPositions(anchor), Range.compareRangesUsingStarts);\r\n let bestWordRange = idx >= 0 ? wordLines[idx] : wordLines[Math.max(0, ~idx - 1)];\r\n let blockDistance = ranges.length;\r\n for (const range of ranges) {\r\n if (!Range.containsRange(range.range, bestWordRange)) {\r\n break;\r\n }\r\n blockDistance -= 1;\r\n }\r\n return blockDistance;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nWordDistance.None = new class extends WordDistance {\r\n distance() { return 0; }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { CompletionProviderRegistry } from '../../common/modes.js';\r\nimport { CompletionModel } from './completionModel.js';\r\nimport { getSuggestionComparator, provideSuggestionItems, getSnippetSuggestSupport, CompletionOptions } from './suggest.js';\r\nimport { SnippetController2 } from '../snippet/snippetController2.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { WordDistance } from './wordDistance.js';\r\nimport { isLowSurrogate, isHighSurrogate, getLeadingWhitespace } from '../../../base/common/strings.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nexport class LineContext {\r\n constructor(model, position, auto, shy) {\r\n this.leadingLineContent = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\r\n this.leadingWord = model.getWordUntilPosition(position);\r\n this.lineNumber = position.lineNumber;\r\n this.column = position.column;\r\n this.auto = auto;\r\n this.shy = shy;\r\n }\r\n static shouldAutoTrigger(editor) {\r\n if (!editor.hasModel()) {\r\n return false;\r\n }\r\n const model = editor.getModel();\r\n const pos = editor.getPosition();\r\n model.tokenizeIfCheap(pos.lineNumber);\r\n const word = model.getWordAtPosition(pos);\r\n if (!word) {\r\n return false;\r\n }\r\n if (word.endColumn !== pos.column) {\r\n return false;\r\n }\r\n if (!isNaN(Number(word.word))) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\nfunction shouldPreventQuickSuggest(contextKeyService, configurationService) {\r\n return (Boolean(contextKeyService.getContextKeyValue('inlineSuggestionVisible'))\r\n && !Boolean(configurationService.getValue('editor.inlineSuggest.allowQuickSuggestions')));\r\n}\r\nfunction shouldPreventSuggestOnTriggerCharacters(contextKeyService, configurationService) {\r\n return (Boolean(contextKeyService.getContextKeyValue('inlineSuggestionVisible'))\r\n && !Boolean(configurationService.getValue('editor.inlineSuggest.allowSuggestOnTriggerCharacters')));\r\n}\r\nlet SuggestModel = class SuggestModel {\r\n constructor(_editor, _editorWorkerService, _clipboardService, _telemetryService, _logService, _contextKeyService, _configurationService) {\r\n this._editor = _editor;\r\n this._editorWorkerService = _editorWorkerService;\r\n this._clipboardService = _clipboardService;\r\n this._telemetryService = _telemetryService;\r\n this._logService = _logService;\r\n this._contextKeyService = _contextKeyService;\r\n this._configurationService = _configurationService;\r\n this._toDispose = new DisposableStore();\r\n this._quickSuggestDelay = 10;\r\n this._triggerCharacterListener = new DisposableStore();\r\n this._triggerQuickSuggest = new TimeoutTimer();\r\n this._state = 0 /* Idle */;\r\n this._completionDisposables = new DisposableStore();\r\n this._onDidCancel = new Emitter();\r\n this._onDidTrigger = new Emitter();\r\n this._onDidSuggest = new Emitter();\r\n this.onDidCancel = this._onDidCancel.event;\r\n this.onDidTrigger = this._onDidTrigger.event;\r\n this.onDidSuggest = this._onDidSuggest.event;\r\n this._telemetryGate = 0;\r\n this._currentSelection = this._editor.getSelection() || new Selection(1, 1, 1, 1);\r\n // wire up various listeners\r\n this._toDispose.add(this._editor.onDidChangeModel(() => {\r\n this._updateTriggerCharacters();\r\n this.cancel();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeModelLanguage(() => {\r\n this._updateTriggerCharacters();\r\n this.cancel();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeConfiguration(() => {\r\n this._updateTriggerCharacters();\r\n this._updateQuickSuggest();\r\n }));\r\n this._toDispose.add(CompletionProviderRegistry.onDidChange(() => {\r\n this._updateTriggerCharacters();\r\n this._updateActiveSuggestSession();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeCursorSelection(e => {\r\n this._onCursorChange(e);\r\n }));\r\n let editorIsComposing = false;\r\n this._toDispose.add(this._editor.onDidCompositionStart(() => {\r\n editorIsComposing = true;\r\n }));\r\n this._toDispose.add(this._editor.onDidCompositionEnd(() => {\r\n // refilter when composition ends\r\n editorIsComposing = false;\r\n this._refilterCompletionItems();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeModelContent(() => {\r\n // only filter completions when the editor isn't\r\n // composing a character, e.g. ¨ + u makes ü but just\r\n // ¨ cannot be used for filtering\r\n if (!editorIsComposing) {\r\n this._refilterCompletionItems();\r\n }\r\n }));\r\n this._updateTriggerCharacters();\r\n this._updateQuickSuggest();\r\n }\r\n dispose() {\r\n dispose(this._triggerCharacterListener);\r\n dispose([this._onDidCancel, this._onDidSuggest, this._onDidTrigger, this._triggerQuickSuggest]);\r\n this._toDispose.dispose();\r\n this._completionDisposables.dispose();\r\n this.cancel();\r\n }\r\n // --- handle configuration & precondition changes\r\n _updateQuickSuggest() {\r\n this._quickSuggestDelay = this._editor.getOption(78 /* quickSuggestionsDelay */);\r\n if (isNaN(this._quickSuggestDelay) || (!this._quickSuggestDelay && this._quickSuggestDelay !== 0) || this._quickSuggestDelay < 0) {\r\n this._quickSuggestDelay = 10;\r\n }\r\n }\r\n _updateTriggerCharacters() {\r\n this._triggerCharacterListener.clear();\r\n if (this._editor.getOption(79 /* readOnly */)\r\n || !this._editor.hasModel()\r\n || !this._editor.getOption(108 /* suggestOnTriggerCharacters */)) {\r\n return;\r\n }\r\n const supportsByTriggerCharacter = new Map();\r\n for (const support of CompletionProviderRegistry.all(this._editor.getModel())) {\r\n for (const ch of support.triggerCharacters || []) {\r\n let set = supportsByTriggerCharacter.get(ch);\r\n if (!set) {\r\n set = new Set();\r\n set.add(getSnippetSuggestSupport());\r\n supportsByTriggerCharacter.set(ch, set);\r\n }\r\n set.add(support);\r\n }\r\n }\r\n const checkTriggerCharacter = (text) => {\r\n if (shouldPreventSuggestOnTriggerCharacters(this._contextKeyService, this._configurationService)) {\r\n return;\r\n }\r\n if (LineContext.shouldAutoTrigger(this._editor)) {\r\n // don't trigger by trigger characters when this is a case for quick suggest\r\n return;\r\n }\r\n if (!text) {\r\n // came here from the compositionEnd-event\r\n const position = this._editor.getPosition();\r\n const model = this._editor.getModel();\r\n text = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\r\n }\r\n let lastChar = '';\r\n if (isLowSurrogate(text.charCodeAt(text.length - 1))) {\r\n if (isHighSurrogate(text.charCodeAt(text.length - 2))) {\r\n lastChar = text.substr(text.length - 2);\r\n }\r\n }\r\n else {\r\n lastChar = text.charAt(text.length - 1);\r\n }\r\n const supports = supportsByTriggerCharacter.get(lastChar);\r\n if (supports) {\r\n // keep existing items that where not computed by the\r\n // supports/providers that want to trigger now\r\n const existing = this._completionModel\r\n ? { items: this._completionModel.adopt(supports), clipboardText: this._completionModel.clipboardText }\r\n : undefined;\r\n this.trigger({ auto: true, shy: false, triggerCharacter: lastChar }, Boolean(this._completionModel), supports, existing);\r\n }\r\n };\r\n this._triggerCharacterListener.add(this._editor.onDidType(checkTriggerCharacter));\r\n this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(checkTriggerCharacter));\r\n }\r\n // --- trigger/retrigger/cancel suggest\r\n get state() {\r\n return this._state;\r\n }\r\n cancel(retrigger = false) {\r\n var _a;\r\n if (this._state !== 0 /* Idle */) {\r\n this._triggerQuickSuggest.cancel();\r\n (_a = this._requestToken) === null || _a === void 0 ? void 0 : _a.cancel();\r\n this._requestToken = undefined;\r\n this._state = 0 /* Idle */;\r\n this._completionModel = undefined;\r\n this._context = undefined;\r\n this._onDidCancel.fire({ retrigger });\r\n }\r\n }\r\n clear() {\r\n this._completionDisposables.clear();\r\n }\r\n _updateActiveSuggestSession() {\r\n if (this._state !== 0 /* Idle */) {\r\n if (!this._editor.hasModel() || !CompletionProviderRegistry.has(this._editor.getModel())) {\r\n this.cancel();\r\n }\r\n else {\r\n this.trigger({ auto: this._state === 2 /* Auto */, shy: false }, true);\r\n }\r\n }\r\n }\r\n _onCursorChange(e) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const prevSelection = this._currentSelection;\r\n this._currentSelection = this._editor.getSelection();\r\n if (!e.selection.isEmpty()\r\n || (e.reason !== 0 /* NotSet */ && e.reason !== 3 /* Explicit */)\r\n || (e.source !== 'keyboard' && e.source !== 'deleteLeft')) {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n this.cancel();\r\n return;\r\n }\r\n if (!CompletionProviderRegistry.has(model)) {\r\n return;\r\n }\r\n if (this._state === 0 /* Idle */ && e.reason === 0 /* NotSet */) {\r\n if (this._editor.getOption(77 /* quickSuggestions */) === false) {\r\n // not enabled\r\n return;\r\n }\r\n if (!prevSelection.containsRange(this._currentSelection) && !prevSelection.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition())) {\r\n // cursor didn't move RIGHT\r\n return;\r\n }\r\n if (this._editor.getOption(105 /* suggest */).snippetsPreventQuickSuggestions && SnippetController2.get(this._editor).isInSnippet()) {\r\n // no quick suggestion when in snippet mode\r\n return;\r\n }\r\n this.cancel();\r\n this._triggerQuickSuggest.cancelAndSet(() => {\r\n if (this._state !== 0 /* Idle */) {\r\n return;\r\n }\r\n if (!LineContext.shouldAutoTrigger(this._editor)) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const pos = this._editor.getPosition();\r\n // validate enabled now\r\n const quickSuggestions = this._editor.getOption(77 /* quickSuggestions */);\r\n if (quickSuggestions === false) {\r\n return;\r\n }\r\n else if (quickSuggestions === true) {\r\n // all good\r\n }\r\n else {\r\n // Check the type of the token that triggered this\r\n model.tokenizeIfCheap(pos.lineNumber);\r\n const lineTokens = model.getLineTokens(pos.lineNumber);\r\n const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(pos.column - 1 - 1, 0)));\r\n const inValidScope = quickSuggestions.other && tokenType === 0 /* Other */\r\n || quickSuggestions.comments && tokenType === 1 /* Comment */\r\n || quickSuggestions.strings && tokenType === 2 /* String */;\r\n if (!inValidScope) {\r\n return;\r\n }\r\n }\r\n if (shouldPreventQuickSuggest(this._contextKeyService, this._configurationService)) {\r\n // do not trigger quick suggestions if inline suggestions are shown\r\n return;\r\n }\r\n // we made it till here -> trigger now\r\n this.trigger({ auto: true, shy: false });\r\n }, this._quickSuggestDelay);\r\n }\r\n else if (this._state !== 0 /* Idle */ && e.reason === 3 /* Explicit */) {\r\n // suggest is active and something like cursor keys are used to move\r\n // the cursor. this means we can refilter at the new position\r\n this._refilterCompletionItems();\r\n }\r\n }\r\n _refilterCompletionItems() {\r\n // Re-filter suggestions. This MUST run async because filtering/scoring\r\n // uses the model content AND the cursor position. The latter is NOT\r\n // updated when the document has changed (the event which drives this method)\r\n // and therefore a little pause (next mirco task) is needed. See:\r\n // https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context#25933985\r\n Promise.resolve().then(() => {\r\n if (this._state === 0 /* Idle */) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const position = this._editor.getPosition();\r\n const ctx = new LineContext(model, position, this._state === 2 /* Auto */, false);\r\n this._onNewContext(ctx);\r\n });\r\n }\r\n trigger(context, retrigger = false, onlyFrom, existing) {\r\n var _a;\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const auto = context.auto;\r\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy);\r\n // Cancel previous requests, change state & update UI\r\n this.cancel(retrigger);\r\n this._state = auto ? 2 /* Auto */ : 1 /* Manual */;\r\n this._onDidTrigger.fire({ auto, shy: context.shy, position: this._editor.getPosition() });\r\n // Capture context when request was sent\r\n this._context = ctx;\r\n // Build context for request\r\n let suggestCtx = { triggerKind: (_a = context.triggerKind) !== null && _a !== void 0 ? _a : 0 /* Invoke */ };\r\n if (context.triggerCharacter) {\r\n suggestCtx = {\r\n triggerKind: 1 /* TriggerCharacter */,\r\n triggerCharacter: context.triggerCharacter\r\n };\r\n }\r\n this._requestToken = new CancellationTokenSource();\r\n // kind filter and snippet sort rules\r\n const snippetSuggestions = this._editor.getOption(100 /* snippetSuggestions */);\r\n let snippetSortOrder = 1 /* Inline */;\r\n switch (snippetSuggestions) {\r\n case 'top':\r\n snippetSortOrder = 0 /* Top */;\r\n break;\r\n // \t↓ that's the default anyways...\r\n // case 'inline':\r\n // \tsnippetSortOrder = SnippetSortOrder.Inline;\r\n // \tbreak;\r\n case 'bottom':\r\n snippetSortOrder = 2 /* Bottom */;\r\n break;\r\n }\r\n const { itemKind: itemKindFilter, showDeprecated } = SuggestModel._createSuggestFilter(this._editor);\r\n const wordDistance = WordDistance.create(this._editorWorkerService, this._editor);\r\n const completions = provideSuggestionItems(model, this._editor.getPosition(), new CompletionOptions(snippetSortOrder, itemKindFilter, onlyFrom, showDeprecated), suggestCtx, this._requestToken.token);\r\n Promise.all([completions, wordDistance]).then(([completions, wordDistance]) => __awaiter(this, void 0, void 0, function* () {\r\n var _b;\r\n (_b = this._requestToken) === null || _b === void 0 ? void 0 : _b.dispose();\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n let clipboardText = existing === null || existing === void 0 ? void 0 : existing.clipboardText;\r\n if (!clipboardText && completions.needsClipboard) {\r\n clipboardText = yield this._clipboardService.readText();\r\n }\r\n if (this._state === 0 /* Idle */) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n let items = completions.items;\r\n if (existing) {\r\n const cmpFn = getSuggestionComparator(snippetSortOrder);\r\n items = items.concat(existing.items).sort(cmpFn);\r\n }\r\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy);\r\n this._completionModel = new CompletionModel(items, this._context.column, {\r\n leadingLineContent: ctx.leadingLineContent,\r\n characterCountDelta: ctx.column - this._context.column\r\n }, wordDistance, this._editor.getOption(105 /* suggest */), this._editor.getOption(100 /* snippetSuggestions */), clipboardText);\r\n // store containers so that they can be disposed later\r\n this._completionDisposables.add(completions.disposable);\r\n this._onNewContext(ctx);\r\n // finally report telemetry about durations\r\n this._reportDurationsTelemetry(completions.durations);\r\n })).catch(onUnexpectedError);\r\n }\r\n _reportDurationsTelemetry(durations) {\r\n if (this._telemetryGate++ % 230 !== 0) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n this._telemetryService.publicLog2('suggest.durations.json', { data: JSON.stringify(durations) });\r\n this._logService.debug('suggest.durations.json', durations);\r\n });\r\n }\r\n static _createSuggestFilter(editor) {\r\n // kind filter and snippet sort rules\r\n const result = new Set();\r\n // snippet setting\r\n const snippetSuggestions = editor.getOption(100 /* snippetSuggestions */);\r\n if (snippetSuggestions === 'none') {\r\n result.add(27 /* Snippet */);\r\n }\r\n // type setting\r\n const suggestOptions = editor.getOption(105 /* suggest */);\r\n if (!suggestOptions.showMethods) {\r\n result.add(0 /* Method */);\r\n }\r\n if (!suggestOptions.showFunctions) {\r\n result.add(1 /* Function */);\r\n }\r\n if (!suggestOptions.showConstructors) {\r\n result.add(2 /* Constructor */);\r\n }\r\n if (!suggestOptions.showFields) {\r\n result.add(3 /* Field */);\r\n }\r\n if (!suggestOptions.showVariables) {\r\n result.add(4 /* Variable */);\r\n }\r\n if (!suggestOptions.showClasses) {\r\n result.add(5 /* Class */);\r\n }\r\n if (!suggestOptions.showStructs) {\r\n result.add(6 /* Struct */);\r\n }\r\n if (!suggestOptions.showInterfaces) {\r\n result.add(7 /* Interface */);\r\n }\r\n if (!suggestOptions.showModules) {\r\n result.add(8 /* Module */);\r\n }\r\n if (!suggestOptions.showProperties) {\r\n result.add(9 /* Property */);\r\n }\r\n if (!suggestOptions.showEvents) {\r\n result.add(10 /* Event */);\r\n }\r\n if (!suggestOptions.showOperators) {\r\n result.add(11 /* Operator */);\r\n }\r\n if (!suggestOptions.showUnits) {\r\n result.add(12 /* Unit */);\r\n }\r\n if (!suggestOptions.showValues) {\r\n result.add(13 /* Value */);\r\n }\r\n if (!suggestOptions.showConstants) {\r\n result.add(14 /* Constant */);\r\n }\r\n if (!suggestOptions.showEnums) {\r\n result.add(15 /* Enum */);\r\n }\r\n if (!suggestOptions.showEnumMembers) {\r\n result.add(16 /* EnumMember */);\r\n }\r\n if (!suggestOptions.showKeywords) {\r\n result.add(17 /* Keyword */);\r\n }\r\n if (!suggestOptions.showWords) {\r\n result.add(18 /* Text */);\r\n }\r\n if (!suggestOptions.showColors) {\r\n result.add(19 /* Color */);\r\n }\r\n if (!suggestOptions.showFiles) {\r\n result.add(20 /* File */);\r\n }\r\n if (!suggestOptions.showReferences) {\r\n result.add(21 /* Reference */);\r\n }\r\n if (!suggestOptions.showColors) {\r\n result.add(22 /* Customcolor */);\r\n }\r\n if (!suggestOptions.showFolders) {\r\n result.add(23 /* Folder */);\r\n }\r\n if (!suggestOptions.showTypeParameters) {\r\n result.add(24 /* TypeParameter */);\r\n }\r\n if (!suggestOptions.showSnippets) {\r\n result.add(27 /* Snippet */);\r\n }\r\n if (!suggestOptions.showUsers) {\r\n result.add(25 /* User */);\r\n }\r\n if (!suggestOptions.showIssues) {\r\n result.add(26 /* Issue */);\r\n }\r\n return { itemKind: result, showDeprecated: suggestOptions.showDeprecated };\r\n }\r\n _onNewContext(ctx) {\r\n if (!this._context) {\r\n // happens when 24x7 IntelliSense is enabled and still in its delay\r\n return;\r\n }\r\n if (ctx.lineNumber !== this._context.lineNumber) {\r\n // e.g. happens when pressing Enter while IntelliSense is computed\r\n this.cancel();\r\n return;\r\n }\r\n if (getLeadingWhitespace(ctx.leadingLineContent) !== getLeadingWhitespace(this._context.leadingLineContent)) {\r\n // cancel IntelliSense when line start changes\r\n // happens when the current word gets outdented\r\n this.cancel();\r\n return;\r\n }\r\n if (ctx.column < this._context.column) {\r\n // typed -> moved cursor LEFT -> retrigger if still on a word\r\n if (ctx.leadingWord.word) {\r\n this.trigger({ auto: this._context.auto, shy: false }, true);\r\n }\r\n else {\r\n this.cancel();\r\n }\r\n return;\r\n }\r\n if (!this._completionModel) {\r\n // happens when IntelliSense is not yet computed\r\n return;\r\n }\r\n if (ctx.leadingWord.word.length !== 0 && ctx.leadingWord.startColumn > this._context.leadingWord.startColumn) {\r\n // started a new word while IntelliSense shows -> retrigger\r\n // Select those providers have not contributed to this completion model and re-trigger completions for\r\n // them. Also adopt the existing items and merge them into the new completion model\r\n const inactiveProvider = new Set(CompletionProviderRegistry.all(this._editor.getModel()));\r\n for (let provider of this._completionModel.allProvider) {\r\n inactiveProvider.delete(provider);\r\n }\r\n const items = this._completionModel.adopt(new Set());\r\n this.trigger({ auto: this._context.auto, shy: false }, true, inactiveProvider, { items, clipboardText: this._completionModel.clipboardText });\r\n return;\r\n }\r\n if (ctx.column > this._context.column && this._completionModel.incomplete.size > 0 && ctx.leadingWord.word.length !== 0) {\r\n // typed -> moved cursor RIGHT & incomple model & still on a word -> retrigger\r\n const { incomplete } = this._completionModel;\r\n const items = this._completionModel.adopt(incomplete);\r\n this.trigger({ auto: this._state === 2 /* Auto */, shy: false, triggerKind: 2 /* TriggerForIncompleteCompletions */ }, true, incomplete, { items, clipboardText: this._completionModel.clipboardText });\r\n }\r\n else {\r\n // typed -> moved cursor RIGHT -> update UI\r\n let oldLineContext = this._completionModel.lineContext;\r\n let isFrozen = false;\r\n this._completionModel.lineContext = {\r\n leadingLineContent: ctx.leadingLineContent,\r\n characterCountDelta: ctx.column - this._context.column\r\n };\r\n if (this._completionModel.items.length === 0) {\r\n if (LineContext.shouldAutoTrigger(this._editor) && this._context.leadingWord.endColumn < ctx.leadingWord.startColumn) {\r\n // retrigger when heading into a new word\r\n this.trigger({ auto: this._context.auto, shy: false }, true);\r\n return;\r\n }\r\n if (!this._context.auto) {\r\n // freeze when IntelliSense was manually requested\r\n this._completionModel.lineContext = oldLineContext;\r\n isFrozen = this._completionModel.items.length > 0;\r\n if (isFrozen && ctx.leadingWord.word.length === 0) {\r\n // there were results before but now there aren't\r\n // and also we are not on a word anymore -> cancel\r\n this.cancel();\r\n return;\r\n }\r\n }\r\n else {\r\n // nothing left\r\n this.cancel();\r\n return;\r\n }\r\n }\r\n this._onDidSuggest.fire({\r\n completionModel: this._completionModel,\r\n auto: this._context.auto,\r\n shy: this._context.shy,\r\n isFrozen,\r\n });\r\n }\r\n }\r\n};\r\nSuggestModel = __decorate([\r\n __param(1, IEditorWorkerService),\r\n __param(2, IClipboardService),\r\n __param(3, ITelemetryService),\r\n __param(4, ILogService),\r\n __param(5, IContextKeyService),\r\n __param(6, IConfigurationService)\r\n], SuggestModel);\r\nexport { SuggestModel };\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./suggest.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./suggest.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { localize } from '../../../nls.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, foreground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport const SYMBOL_ICON_ARRAY_FOREGROUND = registerColor('symbolIcon.arrayForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.arrayForeground', 'The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_BOOLEAN_FOREGROUND = registerColor('symbolIcon.booleanForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.booleanForeground', 'The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CLASS_FOREGROUND = registerColor('symbolIcon.classForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.classForeground', 'The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_COLOR_FOREGROUND = registerColor('symbolIcon.colorForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.colorForeground', 'The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CONSTANT_FOREGROUND = registerColor('symbolIcon.constantForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.constantForeground', 'The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CONSTRUCTOR_FOREGROUND = registerColor('symbolIcon.constructorForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.constructorForeground', 'The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_ENUMERATOR_FOREGROUND = registerColor('symbolIcon.enumeratorForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.enumeratorForeground', 'The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND = registerColor('symbolIcon.enumeratorMemberForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.enumeratorMemberForeground', 'The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_EVENT_FOREGROUND = registerColor('symbolIcon.eventForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.eventForeground', 'The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FIELD_FOREGROUND = registerColor('symbolIcon.fieldForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.fieldForeground', 'The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FILE_FOREGROUND = registerColor('symbolIcon.fileForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.fileForeground', 'The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FOLDER_FOREGROUND = registerColor('symbolIcon.folderForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.folderForeground', 'The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FUNCTION_FOREGROUND = registerColor('symbolIcon.functionForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.functionForeground', 'The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_INTERFACE_FOREGROUND = registerColor('symbolIcon.interfaceForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.interfaceForeground', 'The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_KEY_FOREGROUND = registerColor('symbolIcon.keyForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.keyForeground', 'The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_KEYWORD_FOREGROUND = registerColor('symbolIcon.keywordForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.keywordForeground', 'The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_METHOD_FOREGROUND = registerColor('symbolIcon.methodForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.methodForeground', 'The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_MODULE_FOREGROUND = registerColor('symbolIcon.moduleForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.moduleForeground', 'The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NAMESPACE_FOREGROUND = registerColor('symbolIcon.namespaceForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.namespaceForeground', 'The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NULL_FOREGROUND = registerColor('symbolIcon.nullForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.nullForeground', 'The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NUMBER_FOREGROUND = registerColor('symbolIcon.numberForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.numberForeground', 'The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_OBJECT_FOREGROUND = registerColor('symbolIcon.objectForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.objectForeground', 'The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_OPERATOR_FOREGROUND = registerColor('symbolIcon.operatorForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.operatorForeground', 'The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_PACKAGE_FOREGROUND = registerColor('symbolIcon.packageForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.packageForeground', 'The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_PROPERTY_FOREGROUND = registerColor('symbolIcon.propertyForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.propertyForeground', 'The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_REFERENCE_FOREGROUND = registerColor('symbolIcon.referenceForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.referenceForeground', 'The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_SNIPPET_FOREGROUND = registerColor('symbolIcon.snippetForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.snippetForeground', 'The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_STRING_FOREGROUND = registerColor('symbolIcon.stringForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.stringForeground', 'The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_STRUCT_FOREGROUND = registerColor('symbolIcon.structForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.structForeground', 'The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_TEXT_FOREGROUND = registerColor('symbolIcon.textForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.textForeground', 'The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_TYPEPARAMETER_FOREGROUND = registerColor('symbolIcon.typeParameterForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.typeParameterForeground', 'The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_UNIT_FOREGROUND = registerColor('symbolIcon.unitForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.unitForeground', 'The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_VARIABLE_FOREGROUND = registerColor('symbolIcon.variableForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.variableForeground', 'The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const symbolIconArrayColor = theme.getColor(SYMBOL_ICON_ARRAY_FOREGROUND);\r\n if (symbolIconArrayColor) {\r\n collector.addRule(`${Codicon.symbolArray.cssSelector} { color: ${symbolIconArrayColor}; }`);\r\n }\r\n const symbolIconBooleanColor = theme.getColor(SYMBOL_ICON_BOOLEAN_FOREGROUND);\r\n if (symbolIconBooleanColor) {\r\n collector.addRule(`${Codicon.symbolBoolean.cssSelector} { color: ${symbolIconBooleanColor}; }`);\r\n }\r\n const symbolIconClassColor = theme.getColor(SYMBOL_ICON_CLASS_FOREGROUND);\r\n if (symbolIconClassColor) {\r\n collector.addRule(`${Codicon.symbolClass.cssSelector} { color: ${symbolIconClassColor}; }`);\r\n }\r\n const symbolIconMethodColor = theme.getColor(SYMBOL_ICON_METHOD_FOREGROUND);\r\n if (symbolIconMethodColor) {\r\n collector.addRule(`${Codicon.symbolMethod.cssSelector} { color: ${symbolIconMethodColor}; }`);\r\n }\r\n const symbolIconColorColor = theme.getColor(SYMBOL_ICON_COLOR_FOREGROUND);\r\n if (symbolIconColorColor) {\r\n collector.addRule(`${Codicon.symbolColor.cssSelector} { color: ${symbolIconColorColor}; }`);\r\n }\r\n const symbolIconConstantColor = theme.getColor(SYMBOL_ICON_CONSTANT_FOREGROUND);\r\n if (symbolIconConstantColor) {\r\n collector.addRule(`${Codicon.symbolConstant.cssSelector} { color: ${symbolIconConstantColor}; }`);\r\n }\r\n const symbolIconConstructorColor = theme.getColor(SYMBOL_ICON_CONSTRUCTOR_FOREGROUND);\r\n if (symbolIconConstructorColor) {\r\n collector.addRule(`${Codicon.symbolConstructor.cssSelector} { color: ${symbolIconConstructorColor}; }`);\r\n }\r\n const symbolIconEnumeratorColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_FOREGROUND);\r\n if (symbolIconEnumeratorColor) {\r\n collector.addRule(`\n\t\t\t${Codicon.symbolValue.cssSelector},${Codicon.symbolEnum.cssSelector} { color: ${symbolIconEnumeratorColor}; }`);\r\n }\r\n const symbolIconEnumeratorMemberColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND);\r\n if (symbolIconEnumeratorMemberColor) {\r\n collector.addRule(`${Codicon.symbolEnumMember.cssSelector} { color: ${symbolIconEnumeratorMemberColor}; }`);\r\n }\r\n const symbolIconEventColor = theme.getColor(SYMBOL_ICON_EVENT_FOREGROUND);\r\n if (symbolIconEventColor) {\r\n collector.addRule(`${Codicon.symbolEvent.cssSelector} { color: ${symbolIconEventColor}; }`);\r\n }\r\n const symbolIconFieldColor = theme.getColor(SYMBOL_ICON_FIELD_FOREGROUND);\r\n if (symbolIconFieldColor) {\r\n collector.addRule(`${Codicon.symbolField.cssSelector} { color: ${symbolIconFieldColor}; }`);\r\n }\r\n const symbolIconFileColor = theme.getColor(SYMBOL_ICON_FILE_FOREGROUND);\r\n if (symbolIconFileColor) {\r\n collector.addRule(`${Codicon.symbolFile.cssSelector} { color: ${symbolIconFileColor}; }`);\r\n }\r\n const symbolIconFolderColor = theme.getColor(SYMBOL_ICON_FOLDER_FOREGROUND);\r\n if (symbolIconFolderColor) {\r\n collector.addRule(`${Codicon.symbolFolder.cssSelector} { color: ${symbolIconFolderColor}; }`);\r\n }\r\n const symbolIconFunctionColor = theme.getColor(SYMBOL_ICON_FUNCTION_FOREGROUND);\r\n if (symbolIconFunctionColor) {\r\n collector.addRule(`${Codicon.symbolFunction.cssSelector} { color: ${symbolIconFunctionColor}; }`);\r\n }\r\n const symbolIconInterfaceColor = theme.getColor(SYMBOL_ICON_INTERFACE_FOREGROUND);\r\n if (symbolIconInterfaceColor) {\r\n collector.addRule(`${Codicon.symbolInterface.cssSelector} { color: ${symbolIconInterfaceColor}; }`);\r\n }\r\n const symbolIconKeyColor = theme.getColor(SYMBOL_ICON_KEY_FOREGROUND);\r\n if (symbolIconKeyColor) {\r\n collector.addRule(`${Codicon.symbolKey.cssSelector} { color: ${symbolIconKeyColor}; }`);\r\n }\r\n const symbolIconKeywordColor = theme.getColor(SYMBOL_ICON_KEYWORD_FOREGROUND);\r\n if (symbolIconKeywordColor) {\r\n collector.addRule(`${Codicon.symbolKeyword.cssSelector} { color: ${symbolIconKeywordColor}; }`);\r\n }\r\n const symbolIconModuleColor = theme.getColor(SYMBOL_ICON_MODULE_FOREGROUND);\r\n if (symbolIconModuleColor) {\r\n collector.addRule(`${Codicon.symbolModule.cssSelector} { color: ${symbolIconModuleColor}; }`);\r\n }\r\n const outlineNamespaceColor = theme.getColor(SYMBOL_ICON_NAMESPACE_FOREGROUND);\r\n if (outlineNamespaceColor) {\r\n collector.addRule(`${Codicon.symbolNamespace.cssSelector} { color: ${outlineNamespaceColor}; }`);\r\n }\r\n const symbolIconNullColor = theme.getColor(SYMBOL_ICON_NULL_FOREGROUND);\r\n if (symbolIconNullColor) {\r\n collector.addRule(`${Codicon.symbolNull.cssSelector} { color: ${symbolIconNullColor}; }`);\r\n }\r\n const symbolIconNumberColor = theme.getColor(SYMBOL_ICON_NUMBER_FOREGROUND);\r\n if (symbolIconNumberColor) {\r\n collector.addRule(`${Codicon.symbolNumber.cssSelector} { color: ${symbolIconNumberColor}; }`);\r\n }\r\n const symbolIconObjectColor = theme.getColor(SYMBOL_ICON_OBJECT_FOREGROUND);\r\n if (symbolIconObjectColor) {\r\n collector.addRule(`${Codicon.symbolObject.cssSelector} { color: ${symbolIconObjectColor}; }`);\r\n }\r\n const symbolIconOperatorColor = theme.getColor(SYMBOL_ICON_OPERATOR_FOREGROUND);\r\n if (symbolIconOperatorColor) {\r\n collector.addRule(`${Codicon.symbolOperator.cssSelector} { color: ${symbolIconOperatorColor}; }`);\r\n }\r\n const symbolIconPackageColor = theme.getColor(SYMBOL_ICON_PACKAGE_FOREGROUND);\r\n if (symbolIconPackageColor) {\r\n collector.addRule(`${Codicon.symbolPackage.cssSelector} { color: ${symbolIconPackageColor}; }`);\r\n }\r\n const symbolIconPropertyColor = theme.getColor(SYMBOL_ICON_PROPERTY_FOREGROUND);\r\n if (symbolIconPropertyColor) {\r\n collector.addRule(`${Codicon.symbolProperty.cssSelector} { color: ${symbolIconPropertyColor}; }`);\r\n }\r\n const symbolIconReferenceColor = theme.getColor(SYMBOL_ICON_REFERENCE_FOREGROUND);\r\n if (symbolIconReferenceColor) {\r\n collector.addRule(`${Codicon.symbolReference.cssSelector} { color: ${symbolIconReferenceColor}; }`);\r\n }\r\n const symbolIconSnippetColor = theme.getColor(SYMBOL_ICON_SNIPPET_FOREGROUND);\r\n if (symbolIconSnippetColor) {\r\n collector.addRule(`${Codicon.symbolSnippet.cssSelector} { color: ${symbolIconSnippetColor}; }`);\r\n }\r\n const symbolIconStringColor = theme.getColor(SYMBOL_ICON_STRING_FOREGROUND);\r\n if (symbolIconStringColor) {\r\n collector.addRule(`${Codicon.symbolString.cssSelector} { color: ${symbolIconStringColor}; }`);\r\n }\r\n const symbolIconStructColor = theme.getColor(SYMBOL_ICON_STRUCT_FOREGROUND);\r\n if (symbolIconStructColor) {\r\n collector.addRule(`${Codicon.symbolStruct.cssSelector} { color: ${symbolIconStructColor}; }`);\r\n }\r\n const symbolIconTextColor = theme.getColor(SYMBOL_ICON_TEXT_FOREGROUND);\r\n if (symbolIconTextColor) {\r\n collector.addRule(`${Codicon.symbolText.cssSelector} { color: ${symbolIconTextColor}; }`);\r\n }\r\n const symbolIconTypeParameterColor = theme.getColor(SYMBOL_ICON_TYPEPARAMETER_FOREGROUND);\r\n if (symbolIconTypeParameterColor) {\r\n collector.addRule(`${Codicon.symbolTypeParameter.cssSelector} { color: ${symbolIconTypeParameterColor}; }`);\r\n }\r\n const symbolIconUnitColor = theme.getColor(SYMBOL_ICON_UNIT_FOREGROUND);\r\n if (symbolIconUnitColor) {\r\n collector.addRule(`${Codicon.symbolUnit.cssSelector} { color: ${symbolIconUnitColor}; }`);\r\n }\r\n const symbolIconVariableColor = theme.getColor(SYMBOL_ICON_VARIABLE_FOREGROUND);\r\n if (symbolIconVariableColor) {\r\n collector.addRule(`${Codicon.symbolVariable.cssSelector} { color: ${symbolIconVariableColor}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Event, Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Dimension } from '../../../base/browser/dom.js';\r\nimport { OrthogonalEdge, Sash } from '../../../base/browser/ui/sash/sash.js';\r\nexport class ResizableHTMLElement {\r\n constructor() {\r\n this._onDidWillResize = new Emitter();\r\n this.onDidWillResize = this._onDidWillResize.event;\r\n this._onDidResize = new Emitter();\r\n this.onDidResize = this._onDidResize.event;\r\n this._sashListener = new DisposableStore();\r\n this._size = new Dimension(0, 0);\r\n this._minSize = new Dimension(0, 0);\r\n this._maxSize = new Dimension(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\r\n this.domNode = document.createElement('div');\r\n this._eastSash = new Sash(this.domNode, { getVerticalSashLeft: () => this._size.width }, { orientation: 0 /* VERTICAL */ });\r\n this._westSash = new Sash(this.domNode, { getVerticalSashLeft: () => 0 }, { orientation: 0 /* VERTICAL */ });\r\n this._northSash = new Sash(this.domNode, { getHorizontalSashTop: () => 0 }, { orientation: 1 /* HORIZONTAL */, orthogonalEdge: OrthogonalEdge.North });\r\n this._southSash = new Sash(this.domNode, { getHorizontalSashTop: () => this._size.height }, { orientation: 1 /* HORIZONTAL */, orthogonalEdge: OrthogonalEdge.South });\r\n this._northSash.orthogonalStartSash = this._westSash;\r\n this._northSash.orthogonalEndSash = this._eastSash;\r\n this._southSash.orthogonalStartSash = this._westSash;\r\n this._southSash.orthogonalEndSash = this._eastSash;\r\n let currentSize;\r\n let deltaY = 0;\r\n let deltaX = 0;\r\n this._sashListener.add(Event.any(this._northSash.onDidStart, this._eastSash.onDidStart, this._southSash.onDidStart, this._westSash.onDidStart)(() => {\r\n if (currentSize === undefined) {\r\n this._onDidWillResize.fire();\r\n currentSize = this._size;\r\n deltaY = 0;\r\n deltaX = 0;\r\n }\r\n }));\r\n this._sashListener.add(Event.any(this._northSash.onDidEnd, this._eastSash.onDidEnd, this._southSash.onDidEnd, this._westSash.onDidEnd)(() => {\r\n if (currentSize !== undefined) {\r\n currentSize = undefined;\r\n deltaY = 0;\r\n deltaX = 0;\r\n this._onDidResize.fire({ dimension: this._size, done: true });\r\n }\r\n }));\r\n this._sashListener.add(this._eastSash.onDidChange(e => {\r\n if (currentSize) {\r\n deltaX = e.currentX - e.startX;\r\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\r\n this._onDidResize.fire({ dimension: this._size, done: false, east: true });\r\n }\r\n }));\r\n this._sashListener.add(this._westSash.onDidChange(e => {\r\n if (currentSize) {\r\n deltaX = -(e.currentX - e.startX);\r\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\r\n this._onDidResize.fire({ dimension: this._size, done: false, west: true });\r\n }\r\n }));\r\n this._sashListener.add(this._northSash.onDidChange(e => {\r\n if (currentSize) {\r\n deltaY = -(e.currentY - e.startY);\r\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\r\n this._onDidResize.fire({ dimension: this._size, done: false, north: true });\r\n }\r\n }));\r\n this._sashListener.add(this._southSash.onDidChange(e => {\r\n if (currentSize) {\r\n deltaY = e.currentY - e.startY;\r\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\r\n this._onDidResize.fire({ dimension: this._size, done: false, south: true });\r\n }\r\n }));\r\n this._sashListener.add(Event.any(this._eastSash.onDidReset, this._westSash.onDidReset)(e => {\r\n if (this._preferredSize) {\r\n this.layout(this._size.height, this._preferredSize.width);\r\n this._onDidResize.fire({ dimension: this._size, done: true });\r\n }\r\n }));\r\n this._sashListener.add(Event.any(this._northSash.onDidReset, this._southSash.onDidReset)(e => {\r\n if (this._preferredSize) {\r\n this.layout(this._preferredSize.height, this._size.width);\r\n this._onDidResize.fire({ dimension: this._size, done: true });\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._northSash.dispose();\r\n this._southSash.dispose();\r\n this._eastSash.dispose();\r\n this._westSash.dispose();\r\n this._sashListener.dispose();\r\n this._onDidResize.dispose();\r\n this._onDidWillResize.dispose();\r\n this.domNode.remove();\r\n }\r\n enableSashes(north, east, south, west) {\r\n this._northSash.state = north ? 3 /* Enabled */ : 0 /* Disabled */;\r\n this._eastSash.state = east ? 3 /* Enabled */ : 0 /* Disabled */;\r\n this._southSash.state = south ? 3 /* Enabled */ : 0 /* Disabled */;\r\n this._westSash.state = west ? 3 /* Enabled */ : 0 /* Disabled */;\r\n }\r\n layout(height = this.size.height, width = this.size.width) {\r\n const { height: minHeight, width: minWidth } = this._minSize;\r\n const { height: maxHeight, width: maxWidth } = this._maxSize;\r\n height = Math.max(minHeight, Math.min(maxHeight, height));\r\n width = Math.max(minWidth, Math.min(maxWidth, width));\r\n const newSize = new Dimension(width, height);\r\n if (!Dimension.equals(newSize, this._size)) {\r\n this.domNode.style.height = height + 'px';\r\n this.domNode.style.width = width + 'px';\r\n this._size = newSize;\r\n this._northSash.layout();\r\n this._eastSash.layout();\r\n this._southSash.layout();\r\n this._westSash.layout();\r\n }\r\n }\r\n clearSashHoverState() {\r\n this._eastSash.clearSashHoverState();\r\n this._westSash.clearSashHoverState();\r\n this._northSash.clearSashHoverState();\r\n this._southSash.clearSashHoverState();\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n set maxSize(value) {\r\n this._maxSize = value;\r\n }\r\n get maxSize() {\r\n return this._maxSize;\r\n }\r\n set minSize(value) {\r\n this._minSize = value;\r\n }\r\n get minSize() {\r\n return this._minSize;\r\n }\r\n set preferredSize(value) {\r\n this._preferredSize = value;\r\n }\r\n get preferredSize() {\r\n return this._preferredSize;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { MarkdownRenderer } from '../../browser/core/markdownRenderer.js';\r\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { ResizableHTMLElement } from './resizable.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nexport function canExpandCompletionItem(item) {\r\n return !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);\r\n}\r\nlet SuggestDetailsWidget = class SuggestDetailsWidget {\r\n constructor(_editor, instaService) {\r\n this._editor = _editor;\r\n this._onDidClose = new Emitter();\r\n this.onDidClose = this._onDidClose.event;\r\n this._onDidChangeContents = new Emitter();\r\n this.onDidChangeContents = this._onDidChangeContents.event;\r\n this._disposables = new DisposableStore();\r\n this._renderDisposeable = new DisposableStore();\r\n this._borderWidth = 1;\r\n this._size = new dom.Dimension(330, 0);\r\n this.domNode = dom.$('.suggest-details');\r\n this.domNode.classList.add('no-docs');\r\n this._markdownRenderer = instaService.createInstance(MarkdownRenderer, { editor: _editor });\r\n this._body = dom.$('.body');\r\n this._scrollbar = new DomScrollableElement(this._body, {});\r\n dom.append(this.domNode, this._scrollbar.getDomNode());\r\n this._disposables.add(this._scrollbar);\r\n this._header = dom.append(this._body, dom.$('.header'));\r\n this._close = dom.append(this._header, dom.$('span' + Codicon.close.cssSelector));\r\n this._close.title = nls.localize('details.close', \"Close\");\r\n this._type = dom.append(this._header, dom.$('p.type'));\r\n this._docs = dom.append(this._body, dom.$('p.docs'));\r\n this._configureFont();\r\n this._disposables.add(this._editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(41 /* fontInfo */)) {\r\n this._configureFont();\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._renderDisposeable.dispose();\r\n }\r\n _configureFont() {\r\n const options = this._editor.getOptions();\r\n const fontInfo = options.get(41 /* fontInfo */);\r\n const fontFamily = fontInfo.fontFamily;\r\n const fontSize = options.get(106 /* suggestFontSize */) || fontInfo.fontSize;\r\n const lineHeight = options.get(107 /* suggestLineHeight */) || fontInfo.lineHeight;\r\n const fontWeight = fontInfo.fontWeight;\r\n const fontSizePx = `${fontSize}px`;\r\n const lineHeightPx = `${lineHeight}px`;\r\n this.domNode.style.fontSize = fontSizePx;\r\n this.domNode.style.lineHeight = lineHeightPx;\r\n this.domNode.style.fontWeight = fontWeight;\r\n this.domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n this._type.style.fontFamily = fontFamily;\r\n this._close.style.height = lineHeightPx;\r\n this._close.style.width = lineHeightPx;\r\n }\r\n getLayoutInfo() {\r\n const lineHeight = this._editor.getOption(107 /* suggestLineHeight */) || this._editor.getOption(41 /* fontInfo */).lineHeight;\r\n const borderWidth = this._borderWidth;\r\n const borderHeight = borderWidth * 2;\r\n return {\r\n lineHeight,\r\n borderWidth,\r\n borderHeight,\r\n verticalPadding: 22,\r\n horizontalPadding: 14\r\n };\r\n }\r\n renderLoading() {\r\n this._type.textContent = nls.localize('loading', \"Loading...\");\r\n this._docs.textContent = '';\r\n this.domNode.classList.remove('no-docs', 'no-type');\r\n this.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);\r\n this._onDidChangeContents.fire(this);\r\n }\r\n renderItem(item, explainMode) {\r\n var _a, _b;\r\n this._renderDisposeable.clear();\r\n let { detail, documentation } = item.completion;\r\n if (explainMode) {\r\n let md = '';\r\n md += `score: ${item.score[0]}\\n`;\r\n md += `prefix: ${(_a = item.word) !== null && _a !== void 0 ? _a : '(no prefix)'}\\n`;\r\n md += `word: ${item.completion.filterText ? item.completion.filterText + ' (filterText)' : item.textLabel}\\n`;\r\n md += `distance: ${item.distance} (localityBonus-setting)\\n`;\r\n md += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\r\n md += `commit_chars: ${(_b = item.completion.commitCharacters) === null || _b === void 0 ? void 0 : _b.join('')}\\n`;\r\n documentation = new MarkdownString().appendCodeblock('empty', md);\r\n detail = `Provider: ${item.provider._debugDisplayName}`;\r\n }\r\n if (!explainMode && !canExpandCompletionItem(item)) {\r\n this.clearContents();\r\n return;\r\n }\r\n this.domNode.classList.remove('no-docs', 'no-type');\r\n // --- details\r\n if (detail) {\r\n const cappedDetail = detail.length > 100000 ? `${detail.substr(0, 100000)}…` : detail;\r\n this._type.textContent = cappedDetail;\r\n this._type.title = cappedDetail;\r\n dom.show(this._type);\r\n this._type.classList.toggle('auto-wrap', !/\\r?\\n^\\s+/gmi.test(cappedDetail));\r\n }\r\n else {\r\n dom.clearNode(this._type);\r\n this._type.title = '';\r\n dom.hide(this._type);\r\n this.domNode.classList.add('no-type');\r\n }\r\n // --- documentation\r\n dom.clearNode(this._docs);\r\n if (typeof documentation === 'string') {\r\n this._docs.classList.remove('markdown-docs');\r\n this._docs.textContent = documentation;\r\n }\r\n else if (documentation) {\r\n this._docs.classList.add('markdown-docs');\r\n dom.clearNode(this._docs);\r\n const renderedContents = this._markdownRenderer.render(documentation);\r\n this._docs.appendChild(renderedContents.element);\r\n this._renderDisposeable.add(renderedContents);\r\n this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(() => {\r\n this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\r\n this._onDidChangeContents.fire(this);\r\n }));\r\n }\r\n this.domNode.style.userSelect = 'text';\r\n this.domNode.tabIndex = -1;\r\n this._close.onmousedown = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n this._close.onclick = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._onDidClose.fire();\r\n };\r\n this._body.scrollTop = 0;\r\n this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\r\n this._onDidChangeContents.fire(this);\r\n }\r\n clearContents() {\r\n this.domNode.classList.add('no-docs');\r\n this._type.textContent = '';\r\n this._docs.textContent = '';\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n layout(width, height) {\r\n const newSize = new dom.Dimension(width, height);\r\n if (!dom.Dimension.equals(newSize, this._size)) {\r\n this._size = newSize;\r\n dom.size(this.domNode, width, height);\r\n }\r\n this._scrollbar.scanDomNode();\r\n }\r\n scrollDown(much = 8) {\r\n this._body.scrollTop += much;\r\n }\r\n scrollUp(much = 8) {\r\n this._body.scrollTop -= much;\r\n }\r\n scrollTop() {\r\n this._body.scrollTop = 0;\r\n }\r\n scrollBottom() {\r\n this._body.scrollTop = this._body.scrollHeight;\r\n }\r\n pageDown() {\r\n this.scrollDown(80);\r\n }\r\n pageUp() {\r\n this.scrollUp(80);\r\n }\r\n set borderWidth(width) {\r\n this._borderWidth = width;\r\n }\r\n get borderWidth() {\r\n return this._borderWidth;\r\n }\r\n};\r\nSuggestDetailsWidget = __decorate([\r\n __param(1, IInstantiationService)\r\n], SuggestDetailsWidget);\r\nexport { SuggestDetailsWidget };\r\nexport class SuggestDetailsOverlay {\r\n constructor(widget, _editor) {\r\n this.widget = widget;\r\n this._editor = _editor;\r\n this._disposables = new DisposableStore();\r\n this._added = false;\r\n this._resizable = new ResizableHTMLElement();\r\n this._resizable.domNode.classList.add('suggest-details-container');\r\n this._resizable.domNode.appendChild(widget.domNode);\r\n this._resizable.enableSashes(false, true, true, false);\r\n let topLeftNow;\r\n let sizeNow;\r\n let deltaTop = 0;\r\n let deltaLeft = 0;\r\n this._disposables.add(this._resizable.onDidWillResize(() => {\r\n topLeftNow = this._topLeft;\r\n sizeNow = this._resizable.size;\r\n }));\r\n this._disposables.add(this._resizable.onDidResize(e => {\r\n if (topLeftNow && sizeNow) {\r\n this.widget.layout(e.dimension.width, e.dimension.height);\r\n let updateTopLeft = false;\r\n if (e.west) {\r\n deltaLeft = sizeNow.width - e.dimension.width;\r\n updateTopLeft = true;\r\n }\r\n if (e.north) {\r\n deltaTop = sizeNow.height - e.dimension.height;\r\n updateTopLeft = true;\r\n }\r\n if (updateTopLeft) {\r\n this._applyTopLeft({\r\n top: topLeftNow.top + deltaTop,\r\n left: topLeftNow.left + deltaLeft,\r\n });\r\n }\r\n }\r\n if (e.done) {\r\n topLeftNow = undefined;\r\n sizeNow = undefined;\r\n deltaTop = 0;\r\n deltaLeft = 0;\r\n this._userSize = e.dimension;\r\n }\r\n }));\r\n this._disposables.add(this.widget.onDidChangeContents(() => {\r\n var _a;\r\n if (this._anchorBox) {\r\n this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size);\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._resizable.dispose();\r\n this._disposables.dispose();\r\n this.hide();\r\n }\r\n getId() {\r\n return 'suggest.details';\r\n }\r\n getDomNode() {\r\n return this._resizable.domNode;\r\n }\r\n getPosition() {\r\n return null;\r\n }\r\n show() {\r\n if (!this._added) {\r\n this._editor.addOverlayWidget(this);\r\n this.getDomNode().style.position = 'fixed';\r\n this._added = true;\r\n }\r\n }\r\n hide(sessionEnded = false) {\r\n this._resizable.clearSashHoverState();\r\n if (this._added) {\r\n this._editor.removeOverlayWidget(this);\r\n this._added = false;\r\n this._anchorBox = undefined;\r\n this._topLeft = undefined;\r\n }\r\n if (sessionEnded) {\r\n this._userSize = undefined;\r\n this.widget.clearContents();\r\n }\r\n }\r\n placeAtAnchor(anchor) {\r\n var _a;\r\n const anchorBox = dom.getDomNodePagePosition(anchor);\r\n this._anchorBox = anchorBox;\r\n this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size);\r\n }\r\n _placeAtAnchor(anchorBox, size) {\r\n const bodyBox = dom.getClientArea(document.body);\r\n const info = this.widget.getLayoutInfo();\r\n let maxSizeTop;\r\n let maxSizeBottom;\r\n let minSize = new dom.Dimension(220, 2 * info.lineHeight);\r\n let left = 0;\r\n let top = anchorBox.top;\r\n let bottom = anchorBox.top + anchorBox.height - info.borderHeight;\r\n let alignAtTop;\r\n let alignEast;\r\n // position: EAST, west, south\r\n let width = bodyBox.width - (anchorBox.left + anchorBox.width + info.borderWidth + info.horizontalPadding);\r\n left = -info.borderWidth + anchorBox.left + anchorBox.width;\r\n alignEast = true;\r\n maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\r\n maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\r\n // find a better place if the widget is wider than there is space available\r\n if (size.width > width) {\r\n // position: east, WEST, south\r\n if (anchorBox.left > width) {\r\n // pos = SuggestDetailsPosition.West;\r\n width = anchorBox.left - info.borderWidth - info.horizontalPadding;\r\n alignEast = false;\r\n left = Math.max(info.horizontalPadding, anchorBox.left - size.width - info.borderWidth);\r\n maxSizeTop = maxSizeTop.with(width);\r\n maxSizeBottom = maxSizeTop.with(undefined, maxSizeBottom.height);\r\n }\r\n // position: east, west, SOUTH\r\n if (anchorBox.width > width * 1.3 && bodyBox.height - (anchorBox.top + anchorBox.height) > anchorBox.height) {\r\n width = anchorBox.width;\r\n left = anchorBox.left;\r\n top = -info.borderWidth + anchorBox.top + anchorBox.height;\r\n maxSizeTop = new dom.Dimension(anchorBox.width - info.borderHeight, bodyBox.height - anchorBox.top - anchorBox.height - info.verticalPadding);\r\n maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top - info.verticalPadding);\r\n minSize = minSize.with(maxSizeTop.width);\r\n }\r\n }\r\n // top/bottom placement\r\n let height = size.height;\r\n let maxHeight = Math.max(maxSizeTop.height, maxSizeBottom.height);\r\n if (height > maxHeight) {\r\n height = maxHeight;\r\n }\r\n let maxSize;\r\n if (height <= maxSizeTop.height) {\r\n alignAtTop = true;\r\n maxSize = maxSizeTop;\r\n }\r\n else {\r\n alignAtTop = false;\r\n maxSize = maxSizeBottom;\r\n }\r\n this._applyTopLeft({ left, top: alignAtTop ? top : bottom - height });\r\n this.getDomNode().style.position = 'fixed';\r\n this._resizable.enableSashes(!alignAtTop, alignEast, alignAtTop, !alignEast);\r\n this._resizable.minSize = minSize;\r\n this._resizable.maxSize = maxSize;\r\n this._resizable.layout(height, Math.min(maxSize.width, size.width));\r\n this.widget.layout(this._resizable.size.width, this._resizable.size.height);\r\n }\r\n _applyTopLeft(topLeft) {\r\n this._topLeft = topLeft;\r\n this.getDomNode().style.left = `${this._topLeft.left}px`;\r\n this.getDomNode().style.top = `${this._topLeft.top}px`;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { suggestWidgetStatusbarMenu } from './suggest.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { MenuEntryActionViewItem } from '../../../platform/actions/browser/menuEntryActionViewItem.js';\r\nimport { IMenuService, MenuItemAction } from '../../../platform/actions/common/actions.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nclass StatusBarViewItem extends MenuEntryActionViewItem {\r\n updateLabel() {\r\n const kb = this._keybindingService.lookupKeybinding(this._action.id, this._contextKeyService);\r\n if (!kb) {\r\n return super.updateLabel();\r\n }\r\n if (this.label) {\r\n this.label.textContent = localize('ddd', '{0} ({1})', this._action.label, StatusBarViewItem.symbolPrintEnter(kb));\r\n }\r\n }\r\n static symbolPrintEnter(kb) {\r\n var _a;\r\n return (_a = kb.getLabel()) === null || _a === void 0 ? void 0 : _a.replace(/\\benter\\b/gi, '\\u23CE');\r\n }\r\n}\r\nlet SuggestWidgetStatus = class SuggestWidgetStatus {\r\n constructor(container, instantiationService, _menuService, _contextKeyService) {\r\n this._menuService = _menuService;\r\n this._contextKeyService = _contextKeyService;\r\n this._menuDisposables = new DisposableStore();\r\n this.element = dom.append(container, dom.$('.suggest-status-bar'));\r\n const actionViewItemProvider = (action => {\r\n return action instanceof MenuItemAction ? instantiationService.createInstance(StatusBarViewItem, action, undefined) : undefined;\r\n });\r\n this._leftActions = new ActionBar(this.element, { actionViewItemProvider });\r\n this._rightActions = new ActionBar(this.element, { actionViewItemProvider });\r\n this._leftActions.domNode.classList.add('left');\r\n this._rightActions.domNode.classList.add('right');\r\n }\r\n dispose() {\r\n this._menuDisposables.dispose();\r\n this.element.remove();\r\n }\r\n show() {\r\n const menu = this._menuService.createMenu(suggestWidgetStatusbarMenu, this._contextKeyService);\r\n const renderMenu = () => {\r\n const left = [];\r\n const right = [];\r\n for (let [group, actions] of menu.getActions()) {\r\n if (group === 'left') {\r\n left.push(...actions);\r\n }\r\n else {\r\n right.push(...actions);\r\n }\r\n }\r\n this._leftActions.clear();\r\n this._leftActions.push(left);\r\n this._rightActions.clear();\r\n this._rightActions.push(right);\r\n };\r\n this._menuDisposables.add(menu.onDidChange(() => renderMenu()));\r\n this._menuDisposables.add(menu);\r\n }\r\n hide() {\r\n this._menuDisposables.clear();\r\n }\r\n};\r\nSuggestWidgetStatus = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IMenuService),\r\n __param(3, IContextKeyService)\r\n], SuggestWidgetStatus);\r\nexport { SuggestWidgetStatus };\r\n","//#endregion\r\n//#region Utilities\r\nexport var FileKind;\r\n(function (FileKind) {\r\n FileKind[FileKind[\"FILE\"] = 0] = \"FILE\";\r\n FileKind[FileKind[\"FOLDER\"] = 1] = \"FOLDER\";\r\n FileKind[FileKind[\"ROOT_FOLDER\"] = 2] = \"ROOT_FOLDER\";\r\n})(FileKind || (FileKind = {}));\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { DataUri, basenameOrAuthority } from '../../../base/common/resources.js';\r\nimport { PLAINTEXT_MODE_ID } from '../modes/modesRegistry.js';\r\nimport { FileKind } from '../../../platform/files/common/files.js';\r\nexport function getIconClasses(modelService, modeService, resource, fileKind) {\r\n // we always set these base classes even if we do not have a path\r\n const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon'];\r\n if (resource) {\r\n // Get the path and name of the resource. For data-URIs, we need to parse specially\r\n let name;\r\n if (resource.scheme === Schemas.data) {\r\n const metadata = DataUri.parseMetaData(resource);\r\n name = metadata.get(DataUri.META_DATA_LABEL);\r\n }\r\n else {\r\n name = cssEscape(basenameOrAuthority(resource).toLowerCase());\r\n }\r\n // Folders\r\n if (fileKind === FileKind.FOLDER) {\r\n classes.push(`${name}-name-folder-icon`);\r\n }\r\n // Files\r\n else {\r\n // Name & Extension(s)\r\n if (name) {\r\n classes.push(`${name}-name-file-icon`);\r\n // Avoid doing an explosive combination of extensions for very long filenames\r\n // (most file systems do not allow files > 255 length) with lots of `.` characters\r\n // https://github.com/microsoft/vscode/issues/116199\r\n if (name.length <= 255) {\r\n const dotSegments = name.split('.');\r\n for (let i = 1; i < dotSegments.length; i++) {\r\n classes.push(`${dotSegments.slice(i).join('.')}-ext-file-icon`); // add each combination of all found extensions if more than one\r\n }\r\n }\r\n classes.push(`ext-file-icon`); // extra segment to increase file-ext score\r\n }\r\n // Detected Mode\r\n const detectedModeId = detectModeId(modelService, modeService, resource);\r\n if (detectedModeId) {\r\n classes.push(`${cssEscape(detectedModeId)}-lang-file-icon`);\r\n }\r\n }\r\n }\r\n return classes;\r\n}\r\nexport function detectModeId(modelService, modeService, resource) {\r\n if (!resource) {\r\n return null; // we need a resource at least\r\n }\r\n let modeId = null;\r\n // Data URI: check for encoded metadata\r\n if (resource.scheme === Schemas.data) {\r\n const metadata = DataUri.parseMetaData(resource);\r\n const mime = metadata.get(DataUri.META_DATA_MIME);\r\n if (mime) {\r\n modeId = modeService.getModeId(mime);\r\n }\r\n }\r\n // Any other URI: check for model if existing\r\n else {\r\n const model = modelService.getModel(resource);\r\n if (model) {\r\n modeId = model.getModeId();\r\n }\r\n }\r\n // only take if the mode is specific (aka no just plain text)\r\n if (modeId && modeId !== PLAINTEXT_MODE_ID) {\r\n return modeId;\r\n }\r\n // otherwise fallback to path based detection\r\n return modeService.getModeIdByFilepathOrFirstLine(resource);\r\n}\r\nexport function cssEscape(str) {\r\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.\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar _a;\r\nimport * as nls from '../../../nls.js';\r\nimport { createMatches } from '../../../base/common/filters.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { append, $, hide, show } from '../../../base/browser/dom.js';\r\nimport { IThemeService, ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { completionKindToCssClass } from '../../common/modes.js';\r\nimport { IconLabel } from '../../../base/browser/ui/iconLabel/iconLabel.js';\r\nimport { getIconClasses } from '../../common/services/getIconClasses.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { FileKind } from '../../../platform/files/common/files.js';\r\nimport { flatten } from '../../../base/common/arrays.js';\r\nimport { canExpandCompletionItem } from './suggestWidgetDetails.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\r\nexport function getAriaId(index) {\r\n return `suggest-aria-id:${index}`;\r\n}\r\nexport const suggestMoreInfoIcon = registerIcon('suggest-more-info', Codicon.chevronRight, nls.localize('suggestMoreInfoIcon', 'Icon for more information in the suggest widget.'));\r\nconst _completionItemColor = new (_a = class ColorExtractor {\r\n extract(item, out) {\r\n if (item.textLabel.match(ColorExtractor._regexStrict)) {\r\n out[0] = item.textLabel;\r\n return true;\r\n }\r\n if (item.completion.detail && item.completion.detail.match(ColorExtractor._regexStrict)) {\r\n out[0] = item.completion.detail;\r\n return true;\r\n }\r\n if (typeof item.completion.documentation === 'string') {\r\n const match = ColorExtractor._regexRelaxed.exec(item.completion.documentation);\r\n if (match && (match.index === 0 || match.index + match[0].length === item.completion.documentation.length)) {\r\n out[0] = match[0];\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n },\r\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*\\))/,\r\n _a._regexStrict = new RegExp(`^${_a._regexRelaxed.source}$`, 'i'),\r\n _a);\r\nlet ItemRenderer = class ItemRenderer {\r\n constructor(_editor, _modelService, _modeService, _themeService) {\r\n this._editor = _editor;\r\n this._modelService = _modelService;\r\n this._modeService = _modeService;\r\n this._themeService = _themeService;\r\n this._onDidToggleDetails = new Emitter();\r\n this.onDidToggleDetails = this._onDidToggleDetails.event;\r\n this.templateId = 'suggestion';\r\n }\r\n dispose() {\r\n this._onDidToggleDetails.dispose();\r\n }\r\n renderTemplate(container) {\r\n const data = Object.create(null);\r\n data.disposables = new DisposableStore();\r\n data.root = container;\r\n data.root.classList.add('show-file-icons');\r\n data.icon = append(container, $('.icon'));\r\n data.colorspan = append(data.icon, $('span.colorspan'));\r\n const text = append(container, $('.contents'));\r\n const main = append(text, $('.main'));\r\n data.iconContainer = append(main, $('.icon-label.codicon'));\r\n data.left = append(main, $('span.left'));\r\n data.right = append(main, $('span.right'));\r\n data.iconLabel = new IconLabel(data.left, { supportHighlights: true, supportIcons: true });\r\n data.disposables.add(data.iconLabel);\r\n data.parametersLabel = append(data.left, $('span.signature-label'));\r\n data.qualifierLabel = append(data.left, $('span.qualifier-label'));\r\n data.detailsLabel = append(data.right, $('span.details-label'));\r\n data.readMore = append(data.right, $('span.readMore' + ThemeIcon.asCSSSelector(suggestMoreInfoIcon)));\r\n data.readMore.title = nls.localize('readMore', \"Read More\");\r\n const configureFont = () => {\r\n const options = this._editor.getOptions();\r\n const fontInfo = options.get(41 /* fontInfo */);\r\n const fontFamily = fontInfo.fontFamily;\r\n const fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n const fontSize = options.get(106 /* suggestFontSize */) || fontInfo.fontSize;\r\n const lineHeight = options.get(107 /* suggestLineHeight */) || fontInfo.lineHeight;\r\n const fontWeight = fontInfo.fontWeight;\r\n const fontSizePx = `${fontSize}px`;\r\n const lineHeightPx = `${lineHeight}px`;\r\n data.root.style.fontSize = fontSizePx;\r\n data.root.style.fontWeight = fontWeight;\r\n main.style.fontFamily = fontFamily;\r\n main.style.fontFeatureSettings = fontFeatureSettings;\r\n main.style.lineHeight = lineHeightPx;\r\n data.icon.style.height = lineHeightPx;\r\n data.icon.style.width = lineHeightPx;\r\n data.readMore.style.height = lineHeightPx;\r\n data.readMore.style.width = lineHeightPx;\r\n };\r\n configureFont();\r\n data.disposables.add(this._editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(41 /* fontInfo */) || e.hasChanged(106 /* suggestFontSize */) || e.hasChanged(107 /* suggestLineHeight */)) {\r\n configureFont();\r\n }\r\n }));\r\n return data;\r\n }\r\n renderElement(element, index, data) {\r\n const { completion } = element;\r\n data.root.id = getAriaId(index);\r\n data.colorspan.style.backgroundColor = '';\r\n const labelOptions = {\r\n labelEscapeNewLines: true,\r\n matches: createMatches(element.score)\r\n };\r\n let color = [];\r\n if (completion.kind === 19 /* Color */ && _completionItemColor.extract(element, color)) {\r\n // special logic for 'color' completion items\r\n data.icon.className = 'icon customcolor';\r\n data.iconContainer.className = 'icon hide';\r\n data.colorspan.style.backgroundColor = color[0];\r\n }\r\n else if (completion.kind === 20 /* File */ && this._themeService.getFileIconTheme().hasFileIcons) {\r\n // special logic for 'file' completion items\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = 'icon hide';\r\n const labelClasses = getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FILE);\r\n const detailClasses = getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FILE);\r\n labelOptions.extraClasses = labelClasses.length > detailClasses.length ? labelClasses : detailClasses;\r\n }\r\n else if (completion.kind === 23 /* Folder */ && this._themeService.getFileIconTheme().hasFolderIcons) {\r\n // special logic for 'folder' completion items\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = 'icon hide';\r\n labelOptions.extraClasses = flatten([\r\n getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FOLDER),\r\n getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FOLDER)\r\n ]);\r\n }\r\n else {\r\n // normal icon\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = '';\r\n data.iconContainer.classList.add('suggest-icon', ...completionKindToCssClass(completion.kind).split(' '));\r\n }\r\n if (completion.tags && completion.tags.indexOf(1 /* Deprecated */) >= 0) {\r\n labelOptions.extraClasses = (labelOptions.extraClasses || []).concat(['deprecated']);\r\n labelOptions.matches = [];\r\n }\r\n data.iconLabel.setLabel(element.textLabel, undefined, labelOptions);\r\n if (typeof completion.label === 'string') {\r\n data.parametersLabel.textContent = '';\r\n data.detailsLabel.textContent = stripNewLines(completion.detail || '');\r\n data.root.classList.add('string-label');\r\n }\r\n else {\r\n data.parametersLabel.textContent = stripNewLines(completion.label.detail || '');\r\n data.detailsLabel.textContent = stripNewLines(completion.label.description || '');\r\n data.root.classList.remove('string-label');\r\n }\r\n if (this._editor.getOption(105 /* suggest */).showInlineDetails) {\r\n show(data.detailsLabel);\r\n }\r\n else {\r\n hide(data.detailsLabel);\r\n }\r\n if (canExpandCompletionItem(element)) {\r\n data.right.classList.add('can-expand-details');\r\n show(data.readMore);\r\n data.readMore.onmousedown = e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n data.readMore.onclick = e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this._onDidToggleDetails.fire();\r\n };\r\n }\r\n else {\r\n data.right.classList.remove('can-expand-details');\r\n hide(data.readMore);\r\n data.readMore.onmousedown = null;\r\n data.readMore.onclick = null;\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n templateData.disposables.dispose();\r\n }\r\n};\r\nItemRenderer = __decorate([\r\n __param(1, IModelService),\r\n __param(2, IModeService),\r\n __param(3, IThemeService)\r\n], ItemRenderer);\r\nexport { ItemRenderer };\r\nfunction stripNewLines(str) {\r\n return str.replace(/\\r\\n|\\r|\\n/g, '');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/suggest.css';\r\nimport '../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\r\nimport '../symbolIcons/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\r\nimport * as nls from '../../../nls.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { List } from '../../../base/browser/ui/list/listWidget.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Context as SuggestContext } from './suggest.js';\r\nimport { attachListStyler } from '../../../platform/theme/common/styler.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, editorWidgetBackground, quickInputListFocusBackground, activeContrastBorder, listHighlightForeground, editorForeground, editorWidgetBorder, focusBorder, textLinkForeground, textCodeBlockBackground, quickInputListFocusForeground, listFocusHighlightForeground, quickInputListFocusIconForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { TimeoutTimer, createCancelablePromise, disposableTimeout } from '../../../base/common/async.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { SuggestDetailsWidget, canExpandCompletionItem, SuggestDetailsOverlay } from './suggestWidgetDetails.js';\r\nimport { SuggestWidgetStatus } from './suggestWidgetStatus.js';\r\nimport { getAriaId, ItemRenderer } from './suggestWidgetRenderer.js';\r\nimport { ResizableHTMLElement } from './resizable.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../browser/widget/embeddedCodeEditorWidget.js';\r\nimport { clamp } from '../../../base/common/numbers.js';\r\n/**\r\n * Suggest widget colors\r\n */\r\nexport const editorSuggestWidgetBackground = registerColor('editorSuggestWidget.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hc: editorWidgetBackground }, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\r\nexport const editorSuggestWidgetBorder = registerColor('editorSuggestWidget.border', { dark: editorWidgetBorder, light: editorWidgetBorder, hc: editorWidgetBorder }, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\r\nexport const editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', { dark: editorForeground, light: editorForeground, hc: editorForeground }, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\r\nexport const editorSuggestWidgetSelectedForeground = registerColor('editorSuggestWidget.selectedForeground', { dark: quickInputListFocusForeground, light: quickInputListFocusForeground, hc: quickInputListFocusForeground }, nls.localize('editorSuggestWidgetSelectedForeground', 'Foreground color of the selected entry in the suggest widget.'));\r\nexport const editorSuggestWidgetSelectedIconForeground = registerColor('editorSuggestWidget.selectedIconForeground', { dark: quickInputListFocusIconForeground, light: quickInputListFocusIconForeground, hc: quickInputListFocusIconForeground }, nls.localize('editorSuggestWidgetSelectedIconForeground', 'Icon foreground color of the selected entry in the suggest widget.'));\r\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', { dark: quickInputListFocusBackground, light: quickInputListFocusBackground, hc: quickInputListFocusBackground }, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\r\nexport const editorSuggestWidgetHighlightForeground = registerColor('editorSuggestWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hc: listHighlightForeground }, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\r\nexport const editorSuggestWidgetHighlightFocusForeground = registerColor('editorSuggestWidget.focusHighlightForeground', { dark: listFocusHighlightForeground, light: listFocusHighlightForeground, hc: listFocusHighlightForeground }, nls.localize('editorSuggestWidgetFocusHighlightForeground', 'Color of the match highlights in the suggest widget when an item is focused.'));\r\nclass PersistedWidgetSize {\r\n constructor(_service, editor) {\r\n this._service = _service;\r\n this._key = `suggestWidget.size/${editor.getEditorType()}/${editor instanceof EmbeddedCodeEditorWidget}`;\r\n }\r\n restore() {\r\n var _a;\r\n const raw = (_a = this._service.get(this._key, 0 /* GLOBAL */)) !== null && _a !== void 0 ? _a : '';\r\n try {\r\n const obj = JSON.parse(raw);\r\n if (dom.Dimension.is(obj)) {\r\n return dom.Dimension.lift(obj);\r\n }\r\n }\r\n catch (_b) {\r\n // ignore\r\n }\r\n return undefined;\r\n }\r\n store(size) {\r\n this._service.store(this._key, JSON.stringify(size), 0 /* GLOBAL */, 1 /* MACHINE */);\r\n }\r\n reset() {\r\n this._service.remove(this._key, 0 /* GLOBAL */);\r\n }\r\n}\r\nlet SuggestWidget = class SuggestWidget {\r\n constructor(editor, _storageService, _contextKeyService, _themeService, instantiationService) {\r\n this.editor = editor;\r\n this._storageService = _storageService;\r\n this._state = 0 /* Hidden */;\r\n this._isAuto = false;\r\n this._ignoreFocusEvents = false;\r\n this._forceRenderingAbove = false;\r\n this._explainMode = false;\r\n this._showTimeout = new TimeoutTimer();\r\n this._disposables = new DisposableStore();\r\n this._onDidSelect = new Emitter();\r\n this._onDidFocus = new Emitter();\r\n this._onDidHide = new Emitter();\r\n this._onDidShow = new Emitter();\r\n this.onDidSelect = this._onDidSelect.event;\r\n this.onDidFocus = this._onDidFocus.event;\r\n this.onDidHide = this._onDidHide.event;\r\n this.onDidShow = this._onDidShow.event;\r\n this._onDetailsKeydown = new Emitter();\r\n this.onDetailsKeyDown = this._onDetailsKeydown.event;\r\n this.element = new ResizableHTMLElement();\r\n this.element.domNode.classList.add('editor-widget', 'suggest-widget');\r\n this._contentWidget = new SuggestContentWidget(this, editor);\r\n this._persistedSize = new PersistedWidgetSize(_storageService, editor);\r\n class ResizeState {\r\n constructor(persistedSize, currentSize, persistHeight = false, persistWidth = false) {\r\n this.persistedSize = persistedSize;\r\n this.currentSize = currentSize;\r\n this.persistHeight = persistHeight;\r\n this.persistWidth = persistWidth;\r\n }\r\n }\r\n let state;\r\n this._disposables.add(this.element.onDidWillResize(() => {\r\n this._contentWidget.lockPreference();\r\n state = new ResizeState(this._persistedSize.restore(), this.element.size);\r\n }));\r\n this._disposables.add(this.element.onDidResize(e => {\r\n var _a, _b, _c, _d;\r\n this._resize(e.dimension.width, e.dimension.height);\r\n if (state) {\r\n state.persistHeight = state.persistHeight || !!e.north || !!e.south;\r\n state.persistWidth = state.persistWidth || !!e.east || !!e.west;\r\n }\r\n if (!e.done) {\r\n return;\r\n }\r\n if (state) {\r\n // only store width or height value that have changed and also\r\n // only store changes that are above a certain threshold\r\n const { itemHeight, defaultSize } = this.getLayoutInfo();\r\n const threshold = Math.round(itemHeight / 2);\r\n let { width, height } = this.element.size;\r\n if (!state.persistHeight || Math.abs(state.currentSize.height - height) <= threshold) {\r\n height = (_b = (_a = state.persistedSize) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : defaultSize.height;\r\n }\r\n if (!state.persistWidth || Math.abs(state.currentSize.width - width) <= threshold) {\r\n width = (_d = (_c = state.persistedSize) === null || _c === void 0 ? void 0 : _c.width) !== null && _d !== void 0 ? _d : defaultSize.width;\r\n }\r\n this._persistedSize.store(new dom.Dimension(width, height));\r\n }\r\n // reset working state\r\n this._contentWidget.unlockPreference();\r\n state = undefined;\r\n }));\r\n this._messageElement = dom.append(this.element.domNode, dom.$('.message'));\r\n this._listElement = dom.append(this.element.domNode, dom.$('.tree'));\r\n const details = instantiationService.createInstance(SuggestDetailsWidget, this.editor);\r\n details.onDidClose(this.toggleDetails, this, this._disposables);\r\n this._details = new SuggestDetailsOverlay(details, this.editor);\r\n const applyIconStyle = () => this.element.domNode.classList.toggle('no-icons', !this.editor.getOption(105 /* suggest */).showIcons);\r\n applyIconStyle();\r\n const renderer = instantiationService.createInstance(ItemRenderer, this.editor);\r\n this._disposables.add(renderer);\r\n this._disposables.add(renderer.onDidToggleDetails(() => this.toggleDetails()));\r\n this._list = new List('SuggestWidget', this._listElement, {\r\n getHeight: (_element) => this.getLayoutInfo().itemHeight,\r\n getTemplateId: (_element) => 'suggestion'\r\n }, [renderer], {\r\n alwaysConsumeMouseWheel: true,\r\n useShadows: false,\r\n mouseSupport: false,\r\n accessibilityProvider: {\r\n getRole: () => 'option',\r\n getAriaLabel: (item) => {\r\n if (item.isResolved && this._isDetailsVisible()) {\r\n const { documentation, detail } = item.completion;\r\n const docs = strings.format('{0}{1}', detail || '', documentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\r\n return nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", item.textLabel, docs);\r\n }\r\n else {\r\n return item.textLabel;\r\n }\r\n },\r\n getWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\r\n getWidgetRole: () => 'listbox'\r\n }\r\n });\r\n this._status = instantiationService.createInstance(SuggestWidgetStatus, this.element.domNode);\r\n const applyStatusBarStyle = () => this.element.domNode.classList.toggle('with-status-bar', this.editor.getOption(105 /* suggest */).showStatusBar);\r\n applyStatusBarStyle();\r\n this._disposables.add(attachListStyler(this._list, _themeService, {\r\n listInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\r\n listInactiveFocusOutline: activeContrastBorder\r\n }));\r\n this._disposables.add(_themeService.onDidColorThemeChange(t => this._onThemeChange(t)));\r\n this._onThemeChange(_themeService.getColorTheme());\r\n this._disposables.add(this._list.onMouseDown(e => this._onListMouseDownOrTap(e)));\r\n this._disposables.add(this._list.onTap(e => this._onListMouseDownOrTap(e)));\r\n this._disposables.add(this._list.onDidChangeSelection(e => this._onListSelection(e)));\r\n this._disposables.add(this._list.onDidChangeFocus(e => this._onListFocus(e)));\r\n this._disposables.add(this.editor.onDidChangeCursorSelection(() => this._onCursorSelectionChanged()));\r\n this._disposables.add(this.editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(105 /* suggest */)) {\r\n applyStatusBarStyle();\r\n applyIconStyle();\r\n }\r\n }));\r\n this._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);\r\n this._ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(_contextKeyService);\r\n this._ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(_contextKeyService);\r\n this._disposables.add(dom.addStandardDisposableListener(this._details.widget.domNode, 'keydown', e => {\r\n this._onDetailsKeydown.fire(e);\r\n }));\r\n this._disposables.add(this.editor.onMouseDown((e) => this._onEditorMouseDown(e)));\r\n }\r\n dispose() {\r\n var _a;\r\n this._details.widget.dispose();\r\n this._details.dispose();\r\n this._list.dispose();\r\n this._status.dispose();\r\n this._disposables.dispose();\r\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._showTimeout.dispose();\r\n this._contentWidget.dispose();\r\n this.element.dispose();\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n if (this._details.widget.domNode.contains(mouseEvent.target.element)) {\r\n // Clicking inside details\r\n this._details.widget.domNode.focus();\r\n }\r\n else {\r\n // Clicking outside details and inside suggest\r\n if (this.element.domNode.contains(mouseEvent.target.element)) {\r\n this.editor.focus();\r\n }\r\n }\r\n }\r\n _onCursorSelectionChanged() {\r\n if (this._state !== 0 /* Hidden */) {\r\n this._contentWidget.layout();\r\n }\r\n }\r\n _onListMouseDownOrTap(e) {\r\n if (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\r\n return;\r\n }\r\n // prevent stealing browser focus from the editor\r\n e.browserEvent.preventDefault();\r\n e.browserEvent.stopPropagation();\r\n this._select(e.element, e.index);\r\n }\r\n _onListSelection(e) {\r\n if (e.elements.length) {\r\n this._select(e.elements[0], e.indexes[0]);\r\n }\r\n }\r\n _select(item, index) {\r\n const completionModel = this._completionModel;\r\n if (completionModel) {\r\n this._onDidSelect.fire({ item, index, model: completionModel });\r\n this.editor.focus();\r\n }\r\n }\r\n _onThemeChange(theme) {\r\n const backgroundColor = theme.getColor(editorSuggestWidgetBackground);\r\n if (backgroundColor) {\r\n this.element.domNode.style.backgroundColor = backgroundColor.toString();\r\n this._messageElement.style.backgroundColor = backgroundColor.toString();\r\n this._details.widget.domNode.style.backgroundColor = backgroundColor.toString();\r\n }\r\n const borderColor = theme.getColor(editorSuggestWidgetBorder);\r\n if (borderColor) {\r\n this.element.domNode.style.borderColor = borderColor.toString();\r\n this._messageElement.style.borderColor = borderColor.toString();\r\n this._status.element.style.borderTopColor = borderColor.toString();\r\n this._details.widget.domNode.style.borderColor = borderColor.toString();\r\n this._detailsBorderColor = borderColor.toString();\r\n }\r\n const focusBorderColor = theme.getColor(focusBorder);\r\n if (focusBorderColor) {\r\n this._detailsFocusBorderColor = focusBorderColor.toString();\r\n }\r\n this._details.widget.borderWidth = theme.type === 'hc' ? 2 : 1;\r\n }\r\n _onListFocus(e) {\r\n var _a;\r\n if (this._ignoreFocusEvents) {\r\n return;\r\n }\r\n if (!e.elements.length) {\r\n if (this._currentSuggestionDetails) {\r\n this._currentSuggestionDetails.cancel();\r\n this._currentSuggestionDetails = undefined;\r\n this._focusedItem = undefined;\r\n }\r\n this.editor.setAriaOptions({ activeDescendant: undefined });\r\n return;\r\n }\r\n if (!this._completionModel) {\r\n return;\r\n }\r\n const item = e.elements[0];\r\n const index = e.indexes[0];\r\n if (item !== this._focusedItem) {\r\n (_a = this._currentSuggestionDetails) === null || _a === void 0 ? void 0 : _a.cancel();\r\n this._currentSuggestionDetails = undefined;\r\n this._focusedItem = item;\r\n this._list.reveal(index);\r\n this._currentSuggestionDetails = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\r\n const loading = disposableTimeout(() => {\r\n if (this._isDetailsVisible()) {\r\n this.showDetails(true);\r\n }\r\n }, 250);\r\n token.onCancellationRequested(() => loading.dispose());\r\n const result = yield item.resolve(token);\r\n loading.dispose();\r\n return result;\r\n }));\r\n this._currentSuggestionDetails.then(() => {\r\n if (index >= this._list.length || item !== this._list.element(index)) {\r\n return;\r\n }\r\n // item can have extra information, so re-render\r\n this._ignoreFocusEvents = true;\r\n this._list.splice(index, 1, [item]);\r\n this._list.setFocus([index]);\r\n this._ignoreFocusEvents = false;\r\n if (this._isDetailsVisible()) {\r\n this.showDetails(false);\r\n }\r\n else {\r\n this.element.domNode.classList.remove('docs-side');\r\n }\r\n this.editor.setAriaOptions({ activeDescendant: getAriaId(index) });\r\n }).catch(onUnexpectedError);\r\n }\r\n // emit an event\r\n this._onDidFocus.fire({ item, index, model: this._completionModel });\r\n }\r\n _setState(state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n this._state = state;\r\n this.element.domNode.classList.toggle('frozen', state === 4 /* Frozen */);\r\n this.element.domNode.classList.remove('message');\r\n switch (state) {\r\n case 0 /* Hidden */:\r\n dom.hide(this._messageElement, this._listElement, this._status.element);\r\n this._details.hide(true);\r\n this._status.hide();\r\n this._contentWidget.hide();\r\n this._ctxSuggestWidgetVisible.reset();\r\n this._ctxSuggestWidgetMultipleSuggestions.reset();\r\n this._showTimeout.cancel();\r\n this.element.domNode.classList.remove('visible');\r\n this._list.splice(0, this._list.length);\r\n this._focusedItem = undefined;\r\n this._cappedHeight = undefined;\r\n this._explainMode = false;\r\n break;\r\n case 1 /* Loading */:\r\n this.element.domNode.classList.add('message');\r\n this._messageElement.textContent = SuggestWidget.LOADING_MESSAGE;\r\n dom.hide(this._listElement, this._status.element);\r\n dom.show(this._messageElement);\r\n this._details.hide();\r\n this._show();\r\n this._focusedItem = undefined;\r\n break;\r\n case 2 /* Empty */:\r\n this.element.domNode.classList.add('message');\r\n this._messageElement.textContent = SuggestWidget.NO_SUGGESTIONS_MESSAGE;\r\n dom.hide(this._listElement, this._status.element);\r\n dom.show(this._messageElement);\r\n this._details.hide();\r\n this._show();\r\n this._focusedItem = undefined;\r\n break;\r\n case 3 /* Open */:\r\n dom.hide(this._messageElement);\r\n dom.show(this._listElement, this._status.element);\r\n this._show();\r\n break;\r\n case 4 /* Frozen */:\r\n dom.hide(this._messageElement);\r\n dom.show(this._listElement, this._status.element);\r\n this._show();\r\n break;\r\n case 5 /* Details */:\r\n dom.hide(this._messageElement);\r\n dom.show(this._listElement, this._status.element);\r\n this._details.show();\r\n this._show();\r\n break;\r\n }\r\n }\r\n _show() {\r\n this._status.show();\r\n this._contentWidget.show();\r\n this._layout(this._persistedSize.restore());\r\n this._ctxSuggestWidgetVisible.set(true);\r\n this._showTimeout.cancelAndSet(() => {\r\n this.element.domNode.classList.add('visible');\r\n this._onDidShow.fire(this);\r\n }, 100);\r\n }\r\n showTriggered(auto, delay) {\r\n if (this._state !== 0 /* Hidden */) {\r\n return;\r\n }\r\n this._contentWidget.setPosition(this.editor.getPosition());\r\n this._isAuto = !!auto;\r\n if (!this._isAuto) {\r\n this._loadingTimeout = disposableTimeout(() => this._setState(1 /* Loading */), delay);\r\n }\r\n }\r\n showSuggestions(completionModel, selectionIndex, isFrozen, isAuto) {\r\n var _a, _b;\r\n this._contentWidget.setPosition(this.editor.getPosition());\r\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this._currentSuggestionDetails) === null || _b === void 0 ? void 0 : _b.cancel();\r\n this._currentSuggestionDetails = undefined;\r\n if (this._completionModel !== completionModel) {\r\n this._completionModel = completionModel;\r\n }\r\n if (isFrozen && this._state !== 2 /* Empty */ && this._state !== 0 /* Hidden */) {\r\n this._setState(4 /* Frozen */);\r\n return;\r\n }\r\n const visibleCount = this._completionModel.items.length;\r\n const isEmpty = visibleCount === 0;\r\n this._ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\r\n if (isEmpty) {\r\n this._setState(isAuto ? 0 /* Hidden */ : 2 /* Empty */);\r\n this._completionModel = undefined;\r\n return;\r\n }\r\n this._focusedItem = undefined;\r\n this._list.splice(0, this._list.length, this._completionModel.items);\r\n this._setState(isFrozen ? 4 /* Frozen */ : 3 /* Open */);\r\n this._list.reveal(selectionIndex, 0);\r\n this._list.setFocus([selectionIndex]);\r\n this._layout(this.element.size);\r\n // Reset focus border\r\n if (this._detailsBorderColor) {\r\n this._details.widget.domNode.style.borderColor = this._detailsBorderColor;\r\n }\r\n }\r\n selectNextPage() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this._details.widget.pageDown();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusNextPage();\r\n return true;\r\n }\r\n }\r\n selectNext() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusNext(1, true);\r\n return true;\r\n }\r\n }\r\n selectLast() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this._details.widget.scrollBottom();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusLast();\r\n return true;\r\n }\r\n }\r\n selectPreviousPage() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this._details.widget.pageUp();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusPreviousPage();\r\n return true;\r\n }\r\n }\r\n selectPrevious() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusPrevious(1, true);\r\n return false;\r\n }\r\n }\r\n selectFirst() {\r\n switch (this._state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this._details.widget.scrollTop();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this._isAuto;\r\n default:\r\n this._list.focusFirst();\r\n return true;\r\n }\r\n }\r\n getFocusedItem() {\r\n if (this._state !== 0 /* Hidden */\r\n && this._state !== 2 /* Empty */\r\n && this._state !== 1 /* Loading */\r\n && this._completionModel) {\r\n return {\r\n item: this._list.getFocusedElements()[0],\r\n index: this._list.getFocus()[0],\r\n model: this._completionModel\r\n };\r\n }\r\n return undefined;\r\n }\r\n toggleDetailsFocus() {\r\n if (this._state === 5 /* Details */) {\r\n this._setState(3 /* Open */);\r\n if (this._detailsBorderColor) {\r\n this._details.widget.domNode.style.borderColor = this._detailsBorderColor;\r\n }\r\n }\r\n else if (this._state === 3 /* Open */ && this._isDetailsVisible()) {\r\n this._setState(5 /* Details */);\r\n if (this._detailsFocusBorderColor) {\r\n this._details.widget.domNode.style.borderColor = this._detailsFocusBorderColor;\r\n }\r\n }\r\n }\r\n toggleDetails() {\r\n if (this._isDetailsVisible()) {\r\n // hide details widget\r\n this._ctxSuggestWidgetDetailsVisible.set(false);\r\n this._setDetailsVisible(false);\r\n this._details.hide();\r\n this.element.domNode.classList.remove('shows-details');\r\n }\r\n else if ((canExpandCompletionItem(this._list.getFocusedElements()[0]) || this._explainMode) && (this._state === 3 /* Open */ || this._state === 5 /* Details */ || this._state === 4 /* Frozen */)) {\r\n // show details widget (iff possible)\r\n this._ctxSuggestWidgetDetailsVisible.set(true);\r\n this._setDetailsVisible(true);\r\n this.showDetails(false);\r\n }\r\n }\r\n showDetails(loading) {\r\n this._details.show();\r\n if (loading) {\r\n this._details.widget.renderLoading();\r\n }\r\n else {\r\n this._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);\r\n }\r\n this._positionDetails();\r\n this.editor.focus();\r\n this.element.domNode.classList.add('shows-details');\r\n }\r\n toggleExplainMode() {\r\n if (this._list.getFocusedElements()[0]) {\r\n this._explainMode = !this._explainMode;\r\n if (!this._isDetailsVisible()) {\r\n this.toggleDetails();\r\n }\r\n else {\r\n this.showDetails(false);\r\n }\r\n }\r\n }\r\n resetPersistedSize() {\r\n this._persistedSize.reset();\r\n }\r\n hideWidget() {\r\n var _a;\r\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._setState(0 /* Hidden */);\r\n this._onDidHide.fire(this);\r\n this.element.clearSashHoverState();\r\n // ensure that a reasonable widget height is persisted so that\r\n // accidential \"resize-to-single-items\" cases aren't happening\r\n const dim = this._persistedSize.restore();\r\n const minPersistedHeight = Math.ceil(this.getLayoutInfo().itemHeight * 4.3);\r\n if (dim && dim.height < minPersistedHeight) {\r\n this._persistedSize.store(dim.with(undefined, minPersistedHeight));\r\n }\r\n }\r\n isFrozen() {\r\n return this._state === 4 /* Frozen */;\r\n }\r\n _afterRender(position) {\r\n if (position === null) {\r\n if (this._isDetailsVisible()) {\r\n this._details.hide(); //todo@jrieken soft-hide\r\n }\r\n return;\r\n }\r\n if (this._state === 2 /* Empty */ || this._state === 1 /* Loading */) {\r\n // no special positioning when widget isn't showing list\r\n return;\r\n }\r\n if (this._isDetailsVisible()) {\r\n this._details.show();\r\n }\r\n this._positionDetails();\r\n }\r\n _layout(size) {\r\n var _a, _b, _c;\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n if (!this.editor.getDomNode()) {\r\n // happens when running tests\r\n return;\r\n }\r\n const bodyBox = dom.getClientArea(document.body);\r\n const info = this.getLayoutInfo();\r\n if (!size) {\r\n size = info.defaultSize;\r\n }\r\n let height = size.height;\r\n let width = size.width;\r\n // status bar\r\n this._status.element.style.lineHeight = `${info.itemHeight}px`;\r\n if (this._state === 2 /* Empty */ || this._state === 1 /* Loading */) {\r\n // showing a message only\r\n height = info.itemHeight + info.borderHeight;\r\n width = info.defaultSize.width / 2;\r\n this.element.enableSashes(false, false, false, false);\r\n this.element.minSize = this.element.maxSize = new dom.Dimension(width, height);\r\n this._contentWidget.setPreference(2 /* BELOW */);\r\n }\r\n else {\r\n // showing items\r\n // width math\r\n const maxWidth = bodyBox.width - info.borderHeight - 2 * info.horizontalPadding;\r\n if (width > maxWidth) {\r\n width = maxWidth;\r\n }\r\n const preferredWidth = this._completionModel ? this._completionModel.stats.pLabelLen * info.typicalHalfwidthCharacterWidth : width;\r\n // height math\r\n const fullHeight = info.statusBarHeight + this._list.contentHeight + info.borderHeight;\r\n const minHeight = info.itemHeight + info.statusBarHeight;\r\n const editorBox = dom.getDomNodePagePosition(this.editor.getDomNode());\r\n const cursorBox = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\r\n const cursorBottom = editorBox.top + cursorBox.top + cursorBox.height;\r\n const maxHeightBelow = Math.min(bodyBox.height - cursorBottom - info.verticalPadding, fullHeight);\r\n const maxHeightAbove = Math.min(editorBox.top + cursorBox.top - info.verticalPadding, fullHeight);\r\n let maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow) + info.borderHeight, fullHeight);\r\n if (height === ((_a = this._cappedHeight) === null || _a === void 0 ? void 0 : _a.capped)) {\r\n // Restore the old (wanted) height when the current\r\n // height is capped to fit\r\n height = this._cappedHeight.wanted;\r\n }\r\n if (height < minHeight) {\r\n height = minHeight;\r\n }\r\n if (height > maxHeight) {\r\n height = maxHeight;\r\n }\r\n const forceRenderingAboveRequiredSpace = 100;\r\n if (height > maxHeightBelow || (this._forceRenderingAbove && maxHeightAbove > forceRenderingAboveRequiredSpace)) {\r\n this._contentWidget.setPreference(1 /* ABOVE */);\r\n this.element.enableSashes(true, true, false, false);\r\n maxHeight = maxHeightAbove;\r\n }\r\n else {\r\n this._contentWidget.setPreference(2 /* BELOW */);\r\n this.element.enableSashes(false, true, true, false);\r\n maxHeight = maxHeightBelow;\r\n }\r\n this.element.preferredSize = new dom.Dimension(preferredWidth, info.defaultSize.height);\r\n this.element.maxSize = new dom.Dimension(maxWidth, maxHeight);\r\n this.element.minSize = new dom.Dimension(220, minHeight);\r\n // Know when the height was capped to fit and remember\r\n // the wanted height for later. This is required when going\r\n // left to widen suggestions.\r\n this._cappedHeight = height === fullHeight\r\n ? { wanted: (_c = (_b = this._cappedHeight) === null || _b === void 0 ? void 0 : _b.wanted) !== null && _c !== void 0 ? _c : size.height, capped: height }\r\n : undefined;\r\n }\r\n this._resize(width, height);\r\n }\r\n _resize(width, height) {\r\n const { width: maxWidth, height: maxHeight } = this.element.maxSize;\r\n width = Math.min(maxWidth, width);\r\n height = Math.min(maxHeight, height);\r\n const { statusBarHeight } = this.getLayoutInfo();\r\n this._list.layout(height - statusBarHeight, width);\r\n this._listElement.style.height = `${height - statusBarHeight}px`;\r\n this.element.layout(height, width);\r\n this._contentWidget.layout();\r\n this._positionDetails();\r\n }\r\n _positionDetails() {\r\n if (this._isDetailsVisible()) {\r\n this._details.placeAtAnchor(this.element.domNode);\r\n }\r\n }\r\n getLayoutInfo() {\r\n const fontInfo = this.editor.getOption(41 /* fontInfo */);\r\n const itemHeight = clamp(this.editor.getOption(107 /* suggestLineHeight */) || fontInfo.lineHeight, 8, 1000);\r\n const statusBarHeight = !this.editor.getOption(105 /* suggest */).showStatusBar || this._state === 2 /* Empty */ || this._state === 1 /* Loading */ ? 0 : itemHeight;\r\n const borderWidth = this._details.widget.borderWidth;\r\n const borderHeight = 2 * borderWidth;\r\n return {\r\n itemHeight,\r\n statusBarHeight,\r\n borderWidth,\r\n borderHeight,\r\n typicalHalfwidthCharacterWidth: fontInfo.typicalHalfwidthCharacterWidth,\r\n verticalPadding: 22,\r\n horizontalPadding: 14,\r\n defaultSize: new dom.Dimension(430, statusBarHeight + 12 * itemHeight + borderHeight)\r\n };\r\n }\r\n _isDetailsVisible() {\r\n return this._storageService.getBoolean('expandSuggestionDocs', 0 /* GLOBAL */, false);\r\n }\r\n _setDetailsVisible(value) {\r\n this._storageService.store('expandSuggestionDocs', value, 0 /* GLOBAL */, 0 /* USER */);\r\n }\r\n forceRenderingAbove() {\r\n if (!this._forceRenderingAbove) {\r\n this._forceRenderingAbove = true;\r\n this._layout(this._persistedSize.restore());\r\n }\r\n }\r\n stopForceRenderingAbove() {\r\n this._forceRenderingAbove = false;\r\n }\r\n};\r\nSuggestWidget.LOADING_MESSAGE = nls.localize('suggestWidget.loading', \"Loading...\");\r\nSuggestWidget.NO_SUGGESTIONS_MESSAGE = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\r\nSuggestWidget = __decorate([\r\n __param(1, IStorageService),\r\n __param(2, IContextKeyService),\r\n __param(3, IThemeService),\r\n __param(4, IInstantiationService)\r\n], SuggestWidget);\r\nexport { SuggestWidget };\r\nexport class SuggestContentWidget {\r\n constructor(_widget, _editor) {\r\n this._widget = _widget;\r\n this._editor = _editor;\r\n this.allowEditorOverflow = true;\r\n this.suppressMouseDown = false;\r\n this._preferenceLocked = false;\r\n this._added = false;\r\n this._hidden = false;\r\n }\r\n dispose() {\r\n if (this._added) {\r\n this._added = false;\r\n this._editor.removeContentWidget(this);\r\n }\r\n }\r\n getId() {\r\n return 'editor.widget.suggestWidget';\r\n }\r\n getDomNode() {\r\n return this._widget.element.domNode;\r\n }\r\n show() {\r\n this._hidden = false;\r\n if (!this._added) {\r\n this._added = true;\r\n this._editor.addContentWidget(this);\r\n }\r\n }\r\n hide() {\r\n if (!this._hidden) {\r\n this._hidden = true;\r\n this.layout();\r\n }\r\n }\r\n layout() {\r\n this._editor.layoutContentWidget(this);\r\n }\r\n getPosition() {\r\n if (this._hidden || !this._position || !this._preference) {\r\n return null;\r\n }\r\n return {\r\n position: this._position,\r\n preference: [this._preference]\r\n };\r\n }\r\n beforeRender() {\r\n const { height, width } = this._widget.element.size;\r\n const { borderWidth, horizontalPadding } = this._widget.getLayoutInfo();\r\n return new dom.Dimension(width + 2 * borderWidth + horizontalPadding, height + 2 * borderWidth);\r\n }\r\n afterRender(position) {\r\n this._widget._afterRender(position);\r\n }\r\n setPreference(preference) {\r\n if (!this._preferenceLocked) {\r\n this._preference = preference;\r\n }\r\n }\r\n lockPreference() {\r\n this._preferenceLocked = true;\r\n }\r\n unlockPreference() {\r\n this._preferenceLocked = false;\r\n }\r\n setPosition(position) {\r\n this._position = position;\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const matchHighlight = theme.getColor(editorSuggestWidgetHighlightForeground);\r\n if (matchHighlight) {\r\n collector.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight { color: ${matchHighlight}; }`);\r\n }\r\n const matchHighlightFocus = theme.getColor(editorSuggestWidgetHighlightFocusForeground);\r\n if (matchHighlight) {\r\n collector.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .monaco-highlighted-label .highlight { color: ${matchHighlightFocus}; }`);\r\n }\r\n const foreground = theme.getColor(editorSuggestWidgetForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .suggest-widget, .monaco-editor .suggest-details { color: ${foreground}; }`);\r\n }\r\n const selectedForeground = theme.getColor(editorSuggestWidgetSelectedForeground);\r\n if (selectedForeground) {\r\n collector.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused { color: ${selectedForeground}; }`);\r\n }\r\n const selectedIconForeground = theme.getColor(editorSuggestWidgetSelectedIconForeground);\r\n if (selectedIconForeground) {\r\n collector.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon { color: ${selectedIconForeground}; }`);\r\n }\r\n const link = theme.getColor(textLinkForeground);\r\n if (link) {\r\n collector.addRule(`.monaco-editor .suggest-details a { color: ${link}; }`);\r\n }\r\n const codeBackground = theme.getColor(textCodeBlockBackground);\r\n if (codeBackground) {\r\n collector.addRule(`.monaco-editor .suggest-details code { background-color: ${codeBackground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nlet WordContextKey = class WordContextKey {\r\n constructor(_editor, contextKeyService) {\r\n this._editor = _editor;\r\n this._enabled = false;\r\n this._ckAtEnd = WordContextKey.AtEnd.bindTo(contextKeyService);\r\n this._configListener = this._editor.onDidChangeConfiguration(e => e.hasChanged(110 /* tabCompletion */) && this._update());\r\n this._update();\r\n }\r\n dispose() {\r\n var _a;\r\n this._configListener.dispose();\r\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._ckAtEnd.reset();\r\n }\r\n _update() {\r\n // only update this when tab completions are enabled\r\n const enabled = this._editor.getOption(110 /* tabCompletion */) === 'on';\r\n if (this._enabled === enabled) {\r\n return;\r\n }\r\n this._enabled = enabled;\r\n if (this._enabled) {\r\n const checkForWordEnd = () => {\r\n if (!this._editor.hasModel()) {\r\n this._ckAtEnd.set(false);\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const selection = this._editor.getSelection();\r\n const word = model.getWordAtPosition(selection.getStartPosition());\r\n if (!word) {\r\n this._ckAtEnd.set(false);\r\n return;\r\n }\r\n this._ckAtEnd.set(word.endColumn === selection.getStartPosition().column);\r\n };\r\n this._selectionListener = this._editor.onDidChangeCursorSelection(checkForWordEnd);\r\n checkForWordEnd();\r\n }\r\n else if (this._selectionListener) {\r\n this._ckAtEnd.reset();\r\n this._selectionListener.dispose();\r\n this._selectionListener = undefined;\r\n }\r\n }\r\n};\r\nWordContextKey.AtEnd = new RawContextKey('atEndOfWord', false);\r\nWordContextKey = __decorate([\r\n __param(1, IContextKeyService)\r\n], WordContextKey);\r\nexport { WordContextKey };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { CharacterSet } from '../../common/core/characterClassifier.js';\r\nexport class CommitCharacterController {\r\n constructor(editor, widget, accept) {\r\n this._disposables = new DisposableStore();\r\n this._disposables.add(widget.onDidShow(() => this._onItem(widget.getFocusedItem())));\r\n this._disposables.add(widget.onDidFocus(this._onItem, this));\r\n this._disposables.add(widget.onDidHide(this.reset, this));\r\n this._disposables.add(editor.onWillType(text => {\r\n if (this._active && !widget.isFrozen()) {\r\n const ch = text.charCodeAt(text.length - 1);\r\n if (this._active.acceptCharacters.has(ch) && editor.getOption(0 /* acceptSuggestionOnCommitCharacter */)) {\r\n accept(this._active.item);\r\n }\r\n }\r\n }));\r\n }\r\n _onItem(selected) {\r\n if (!selected || !isNonEmptyArray(selected.item.completion.commitCharacters)) {\r\n // no item or no commit characters\r\n this.reset();\r\n return;\r\n }\r\n if (this._active && this._active.item.item === selected.item) {\r\n // still the same item\r\n return;\r\n }\r\n // keep item and its commit characters\r\n const acceptCharacters = new CharacterSet();\r\n for (const ch of selected.item.completion.commitCharacters) {\r\n if (ch.length > 0) {\r\n acceptCharacters.add(ch.charCodeAt(0));\r\n }\r\n }\r\n this._active = { acceptCharacters, item: selected };\r\n }\r\n reset() {\r\n this._active = undefined;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nexport class OvertypingCapturer {\r\n constructor(editor, suggestModel) {\r\n this._disposables = new DisposableStore();\r\n this._lastOvertyped = [];\r\n this._empty = true;\r\n this._disposables.add(editor.onWillType(() => {\r\n if (!this._empty) {\r\n return;\r\n }\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const selections = editor.getSelections();\r\n const selectionsLength = selections.length;\r\n // Check if it will overtype any selections\r\n let willOvertype = false;\r\n for (let i = 0; i < selectionsLength; i++) {\r\n if (!selections[i].isEmpty()) {\r\n willOvertype = true;\r\n break;\r\n }\r\n }\r\n if (!willOvertype) {\r\n return;\r\n }\r\n this._lastOvertyped = [];\r\n const model = editor.getModel();\r\n for (let i = 0; i < selectionsLength; i++) {\r\n const selection = selections[i];\r\n // Check for overtyping capturer restrictions\r\n if (model.getValueLengthInRange(selection) > OvertypingCapturer._maxSelectionLength) {\r\n return;\r\n }\r\n this._lastOvertyped[i] = { value: model.getValueInRange(selection), multiline: selection.startLineNumber !== selection.endLineNumber };\r\n }\r\n this._empty = false;\r\n }));\r\n this._disposables.add(suggestModel.onDidCancel(e => {\r\n if (!this._empty && !e.retrigger) {\r\n this._empty = true;\r\n }\r\n }));\r\n }\r\n getLastOvertypedInfo(idx) {\r\n if (!this._empty && idx >= 0 && idx < this._lastOvertyped.length) {\r\n return this._lastOvertyped[idx];\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n}\r\nOvertypingCapturer._maxSelectionLength = 51200;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { SimpleKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { dispose, DisposableStore, toDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { StableEditorScrollState } from '../../browser/core/editorState.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { SnippetController2 } from '../snippet/snippetController2.js';\r\nimport { SnippetParser } from '../snippet/snippetParser.js';\r\nimport { ISuggestMemoryService } from './suggestMemory.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ICommandService, CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\r\nimport { SuggestAlternatives } from './suggestAlternatives.js';\r\nimport { SuggestModel } from './suggestModel.js';\r\nimport { SuggestWidget } from './suggestWidget.js';\r\nimport { WordContextKey } from './wordContextKey.js';\r\nimport { Event } from '../../../base/common/event.js';\r\nimport { IdleValue } from '../../../base/common/async.js';\r\nimport { isObject, assertType } from '../../../base/common/types.js';\r\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\r\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\n// sticky suggest widget which doesn't disappear on focus out and such\r\nlet _sticky = false;\r\n// _sticky = Boolean(\"true\"); // done \"weirdly\" so that a lint warning prevents you from pushing this\r\nclass LineSuffix {\r\n constructor(_model, _position) {\r\n this._model = _model;\r\n this._position = _position;\r\n // spy on what's happening right of the cursor. two cases:\r\n // 1. end of line -> check that it's still end of line\r\n // 2. mid of line -> add a marker and compute the delta\r\n const maxColumn = _model.getLineMaxColumn(_position.lineNumber);\r\n if (maxColumn !== _position.column) {\r\n const offset = _model.getOffsetAt(_position);\r\n const end = _model.getPositionAt(offset + 1);\r\n this._marker = _model.deltaDecorations([], [{\r\n range: Range.fromPositions(_position, end),\r\n options: { description: 'suggest-line-suffix', stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ }\r\n }]);\r\n }\r\n }\r\n dispose() {\r\n if (this._marker && !this._model.isDisposed()) {\r\n this._model.deltaDecorations(this._marker, []);\r\n }\r\n }\r\n delta(position) {\r\n if (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\r\n // bail out early if things seems fishy\r\n return 0;\r\n }\r\n // read the marker (in case suggest was triggered at line end) or compare\r\n // the cursor to the line end.\r\n if (this._marker) {\r\n const range = this._model.getDecorationRange(this._marker[0]);\r\n const end = this._model.getOffsetAt(range.getStartPosition());\r\n return end - this._model.getOffsetAt(position);\r\n }\r\n else {\r\n return this._model.getLineMaxColumn(position.lineNumber) - position.column;\r\n }\r\n }\r\n}\r\nlet SuggestController = class SuggestController {\r\n constructor(editor, _memoryService, _commandService, _contextKeyService, _instantiationService, _logService) {\r\n this._memoryService = _memoryService;\r\n this._commandService = _commandService;\r\n this._contextKeyService = _contextKeyService;\r\n this._instantiationService = _instantiationService;\r\n this._logService = _logService;\r\n this._lineSuffix = new MutableDisposable();\r\n this._toDispose = new DisposableStore();\r\n this.editor = editor;\r\n this.model = _instantiationService.createInstance(SuggestModel, this.editor);\r\n // context key: update insert/replace mode\r\n const ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService);\r\n ctxInsertMode.set(editor.getOption(105 /* suggest */).insertMode);\r\n this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(105 /* suggest */).insertMode));\r\n this.widget = this._toDispose.add(new IdleValue(() => {\r\n const widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\r\n this._toDispose.add(widget);\r\n this._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, 0), this));\r\n // Wire up logic to accept a suggestion on certain characters\r\n const commitCharacterController = new CommitCharacterController(this.editor, widget, item => this._insertSuggestion(item, 2 /* NoAfterUndoStop */));\r\n this._toDispose.add(commitCharacterController);\r\n this._toDispose.add(this.model.onDidSuggest(e => {\r\n if (e.completionModel.items.length === 0) {\r\n commitCharacterController.reset();\r\n }\r\n }));\r\n // Wire up makes text edit context key\r\n const ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\r\n const ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\r\n const ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\r\n this._toDispose.add(toDisposable(() => {\r\n ctxMakesTextEdit.reset();\r\n ctxHasInsertAndReplace.reset();\r\n ctxCanResolve.reset();\r\n }));\r\n this._toDispose.add(widget.onDidFocus(({ item }) => {\r\n // (ctx: makesTextEdit)\r\n const position = this.editor.getPosition();\r\n const startColumn = item.editStart.column;\r\n const endColumn = position.column;\r\n let value = true;\r\n if (this.editor.getOption(1 /* acceptSuggestionOnEnter */) === 'smart'\r\n && this.model.state === 2 /* Auto */\r\n && !item.completion.command\r\n && !item.completion.additionalTextEdits\r\n && !(item.completion.insertTextRules & 4 /* InsertAsSnippet */)\r\n && endColumn - startColumn === item.completion.insertText.length) {\r\n const oldText = this.editor.getModel().getValueInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn,\r\n endLineNumber: position.lineNumber,\r\n endColumn\r\n });\r\n value = oldText !== item.completion.insertText;\r\n }\r\n ctxMakesTextEdit.set(value);\r\n // (ctx: hasInsertAndReplaceRange)\r\n ctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\r\n // (ctx: canResolve)\r\n ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\r\n }));\r\n this._toDispose.add(widget.onDetailsKeyDown(e => {\r\n // cmd + c on macOS, ctrl + c on Win / Linux\r\n if (e.toKeybinding().equals(new SimpleKeybinding(true, false, false, false, 33 /* KEY_C */)) ||\r\n (platform.isMacintosh && e.toKeybinding().equals(new SimpleKeybinding(false, false, false, true, 33 /* KEY_C */)))) {\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (!e.toKeybinding().isModifierKey()) {\r\n this.editor.focus();\r\n }\r\n }));\r\n return widget;\r\n }));\r\n // Wire up text overtyping capture\r\n this._overtypingCapturer = this._toDispose.add(new IdleValue(() => {\r\n return this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\r\n }));\r\n this._alternatives = this._toDispose.add(new IdleValue(() => {\r\n return this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\r\n }));\r\n this._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\r\n this._toDispose.add(this.model.onDidTrigger(e => {\r\n this.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\r\n this._lineSuffix.value = new LineSuffix(this.editor.getModel(), e.position);\r\n }));\r\n this._toDispose.add(this.model.onDidSuggest(e => {\r\n if (!e.shy) {\r\n let index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), e.completionModel.items);\r\n this.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.auto);\r\n }\r\n }));\r\n this._toDispose.add(this.model.onDidCancel(e => {\r\n if (!e.retrigger) {\r\n this.widget.value.hideWidget();\r\n }\r\n }));\r\n this._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\r\n if (!_sticky) {\r\n this.model.cancel();\r\n this.model.clear();\r\n }\r\n }));\r\n // Manage the acceptSuggestionsOnEnter context key\r\n let acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\r\n let updateFromConfig = () => {\r\n const acceptSuggestionOnEnter = this.editor.getOption(1 /* acceptSuggestionOnEnter */);\r\n acceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\r\n };\r\n this._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\r\n updateFromConfig();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SuggestController.ID);\r\n }\r\n dispose() {\r\n this._alternatives.dispose();\r\n this._toDispose.dispose();\r\n this.widget.dispose();\r\n this.model.dispose();\r\n this._lineSuffix.dispose();\r\n }\r\n _insertSuggestion(event, flags) {\r\n if (!event || !event.item) {\r\n this._alternatives.value.reset();\r\n this.model.cancel();\r\n this.model.clear();\r\n return;\r\n }\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n const modelVersionNow = model.getAlternativeVersionId();\r\n const { item } = event;\r\n //\r\n const tasks = [];\r\n const cts = new CancellationTokenSource();\r\n // pushing undo stops *before* additional text edits and\r\n // *after* the main edit\r\n if (!(flags & 1 /* NoBeforeUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n // compute overwrite[Before|After] deltas BEFORE applying extra edits\r\n const info = this.getOverwriteInfo(item, Boolean(flags & 8 /* AlternativeOverwriteConfig */));\r\n // keep item in memory\r\n this._memoryService.memorize(model, this.editor.getPosition(), item);\r\n if (Array.isArray(item.completion.additionalTextEdits)) {\r\n // sync additional edits\r\n const scrollState = StableEditorScrollState.capture(this.editor);\r\n this.editor.executeEdits('suggestController.additionalTextEdits.sync', item.completion.additionalTextEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\r\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\r\n }\r\n else if (!item.isResolved) {\r\n // async additional edits\r\n const sw = new StopWatch(true);\r\n let position;\r\n const docListener = model.onDidChangeContent(e => {\r\n if (e.isFlush) {\r\n cts.cancel();\r\n docListener.dispose();\r\n return;\r\n }\r\n for (let change of e.changes) {\r\n const thisPosition = Range.getEndPosition(change.range);\r\n if (!position || Position.isBefore(thisPosition, position)) {\r\n position = thisPosition;\r\n }\r\n }\r\n });\r\n let oldFlags = flags;\r\n flags |= 2 /* NoAfterUndoStop */;\r\n let didType = false;\r\n let typeListener = this.editor.onWillType(() => {\r\n typeListener.dispose();\r\n didType = true;\r\n if (!(oldFlags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n });\r\n tasks.push(item.resolve(cts.token).then(() => {\r\n if (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\r\n return false;\r\n }\r\n if (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position, Range.getStartPosition(edit.range)))) {\r\n return false;\r\n }\r\n if (didType) {\r\n this.editor.pushUndoStop();\r\n }\r\n const scrollState = StableEditorScrollState.capture(this.editor);\r\n this.editor.executeEdits('suggestController.additionalTextEdits.async', item.completion.additionalTextEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\r\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\r\n if (didType || !(oldFlags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n return true;\r\n }).then(applied => {\r\n this._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\r\n docListener.dispose();\r\n typeListener.dispose();\r\n }));\r\n }\r\n let { insertText } = item.completion;\r\n if (!(item.completion.insertTextRules & 4 /* InsertAsSnippet */)) {\r\n insertText = SnippetParser.escape(insertText);\r\n }\r\n SnippetController2.get(this.editor).insert(insertText, {\r\n overwriteBefore: info.overwriteBefore,\r\n overwriteAfter: info.overwriteAfter,\r\n undoStopBefore: false,\r\n undoStopAfter: false,\r\n adjustWhitespace: !(item.completion.insertTextRules & 1 /* KeepWhitespace */),\r\n clipboardText: event.model.clipboardText,\r\n overtypingCapturer: this._overtypingCapturer.value\r\n });\r\n if (!(flags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n if (!item.completion.command) {\r\n // done\r\n this.model.cancel();\r\n }\r\n else if (item.completion.command.id === TriggerSuggestAction.id) {\r\n // retigger\r\n this.model.trigger({ auto: true, shy: false }, true);\r\n }\r\n else {\r\n // exec command, done\r\n tasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(onUnexpectedError));\r\n this.model.cancel();\r\n }\r\n if (flags & 4 /* KeepAlternativeSuggestions */) {\r\n this._alternatives.value.set(event, next => {\r\n // cancel resolving of additional edits\r\n cts.cancel();\r\n // this is not so pretty. when inserting the 'next'\r\n // suggestion we undo until we are at the state at\r\n // which we were before inserting the previous suggestion...\r\n while (model.canUndo()) {\r\n if (modelVersionNow !== model.getAlternativeVersionId()) {\r\n model.undo();\r\n }\r\n this._insertSuggestion(next, 1 /* NoBeforeUndoStop */ | 2 /* NoAfterUndoStop */ | (flags & 8 /* AlternativeOverwriteConfig */ ? 8 /* AlternativeOverwriteConfig */ : 0));\r\n break;\r\n }\r\n });\r\n }\r\n this._alertCompletionItem(item);\r\n // clear only now - after all tasks are done\r\n Promise.all(tasks).finally(() => {\r\n this.model.clear();\r\n cts.dispose();\r\n });\r\n }\r\n getOverwriteInfo(item, toggleMode) {\r\n assertType(this.editor.hasModel());\r\n let replace = this.editor.getOption(105 /* suggest */).insertMode === 'replace';\r\n if (toggleMode) {\r\n replace = !replace;\r\n }\r\n const overwriteBefore = item.position.column - item.editStart.column;\r\n const overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\r\n const columnDelta = this.editor.getPosition().column - item.position.column;\r\n const suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\r\n return {\r\n overwriteBefore: overwriteBefore + columnDelta,\r\n overwriteAfter: overwriteAfter + suffixDelta\r\n };\r\n }\r\n _alertCompletionItem(item) {\r\n if (isNonEmptyArray(item.completion.additionalTextEdits)) {\r\n let msg = nls.localize('aria.alert.snippet', \"Accepting '{0}' made {1} additional edits\", item.textLabel, item.completion.additionalTextEdits.length);\r\n alert(msg);\r\n }\r\n }\r\n triggerSuggest(onlyFrom) {\r\n if (this.editor.hasModel()) {\r\n this.model.trigger({ auto: false, shy: false }, false, onlyFrom);\r\n this.editor.revealLine(this.editor.getPosition().lineNumber, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n }\r\n triggerSuggestAndAcceptBest(arg) {\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const positionNow = this.editor.getPosition();\r\n const fallback = () => {\r\n if (positionNow.equals(this.editor.getPosition())) {\r\n this._commandService.executeCommand(arg.fallback);\r\n }\r\n };\r\n const makesTextEdit = (item) => {\r\n if (item.completion.insertTextRules & 4 /* InsertAsSnippet */ || item.completion.additionalTextEdits) {\r\n // snippet, other editor -> makes edit\r\n return true;\r\n }\r\n const position = this.editor.getPosition();\r\n const startColumn = item.editStart.column;\r\n const endColumn = position.column;\r\n if (endColumn - startColumn !== item.completion.insertText.length) {\r\n // unequal lengths -> makes edit\r\n return true;\r\n }\r\n const textNow = this.editor.getModel().getValueInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn,\r\n endLineNumber: position.lineNumber,\r\n endColumn\r\n });\r\n // unequal text -> makes edit\r\n return textNow !== item.completion.insertText;\r\n };\r\n Event.once(this.model.onDidTrigger)(_ => {\r\n // wait for trigger because only then the cancel-event is trustworthy\r\n let listener = [];\r\n Event.any(this.model.onDidTrigger, this.model.onDidCancel)(() => {\r\n // retrigger or cancel -> try to type default text\r\n dispose(listener);\r\n fallback();\r\n }, undefined, listener);\r\n this.model.onDidSuggest(({ completionModel }) => {\r\n dispose(listener);\r\n if (completionModel.items.length === 0) {\r\n fallback();\r\n return;\r\n }\r\n const index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), completionModel.items);\r\n const item = completionModel.items[index];\r\n if (!makesTextEdit(item)) {\r\n fallback();\r\n return;\r\n }\r\n this.editor.pushUndoStop();\r\n this._insertSuggestion({ index, item, model: completionModel }, 4 /* KeepAlternativeSuggestions */ | 1 /* NoBeforeUndoStop */ | 2 /* NoAfterUndoStop */);\r\n }, undefined, listener);\r\n });\r\n this.model.trigger({ auto: false, shy: true });\r\n this.editor.revealLine(positionNow.lineNumber, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n acceptSelectedSuggestion(keepAlternativeSuggestions, alternativeOverwriteConfig) {\r\n const item = this.widget.value.getFocusedItem();\r\n let flags = 0;\r\n if (keepAlternativeSuggestions) {\r\n flags |= 4 /* KeepAlternativeSuggestions */;\r\n }\r\n if (alternativeOverwriteConfig) {\r\n flags |= 8 /* AlternativeOverwriteConfig */;\r\n }\r\n this._insertSuggestion(item, flags);\r\n }\r\n acceptNextSuggestion() {\r\n this._alternatives.value.next();\r\n }\r\n acceptPrevSuggestion() {\r\n this._alternatives.value.prev();\r\n }\r\n cancelSuggestWidget() {\r\n this.model.cancel();\r\n this.model.clear();\r\n this.widget.value.hideWidget();\r\n }\r\n selectNextSuggestion() {\r\n this.widget.value.selectNext();\r\n }\r\n selectNextPageSuggestion() {\r\n this.widget.value.selectNextPage();\r\n }\r\n selectLastSuggestion() {\r\n this.widget.value.selectLast();\r\n }\r\n selectPrevSuggestion() {\r\n this.widget.value.selectPrevious();\r\n }\r\n selectPrevPageSuggestion() {\r\n this.widget.value.selectPreviousPage();\r\n }\r\n selectFirstSuggestion() {\r\n this.widget.value.selectFirst();\r\n }\r\n toggleSuggestionDetails() {\r\n this.widget.value.toggleDetails();\r\n }\r\n toggleExplainMode() {\r\n this.widget.value.toggleExplainMode();\r\n }\r\n toggleSuggestionFocus() {\r\n this.widget.value.toggleDetailsFocus();\r\n }\r\n resetWidgetSize() {\r\n this.widget.value.resetPersistedSize();\r\n }\r\n forceRenderingAbove() {\r\n this.widget.value.forceRenderingAbove();\r\n }\r\n stopForceRenderingAbove() {\r\n this.widget.value.stopForceRenderingAbove();\r\n }\r\n};\r\nSuggestController.ID = 'editor.contrib.suggestController';\r\nSuggestController = __decorate([\r\n __param(1, ISuggestMemoryService),\r\n __param(2, ICommandService),\r\n __param(3, IContextKeyService),\r\n __param(4, IInstantiationService),\r\n __param(5, ILogService)\r\n], SuggestController);\r\nexport { SuggestController };\r\nexport class TriggerSuggestAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: TriggerSuggestAction.id,\r\n label: nls.localize('suggest.trigger.label', \"Trigger Suggest\"),\r\n alias: 'Trigger Suggest',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 10 /* Space */,\r\n secondary: [2048 /* CtrlCmd */ | 39 /* KEY_I */],\r\n mac: { primary: 256 /* WinCtrl */ | 10 /* Space */, secondary: [512 /* Alt */ | 9 /* Escape */, 2048 /* CtrlCmd */ | 39 /* KEY_I */] },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const controller = SuggestController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.triggerSuggest();\r\n }\r\n}\r\nTriggerSuggestAction.id = 'editor.action.triggerSuggest';\r\nregisterEditorContribution(SuggestController.ID, SuggestController);\r\nregisterEditorAction(TriggerSuggestAction);\r\nconst weight = 100 /* EditorContrib */ + 90;\r\nconst SuggestCommand = EditorCommand.bindToContribution(SuggestController.get);\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'acceptSelectedSuggestion',\r\n precondition: SuggestContext.Visible,\r\n handler(x) {\r\n x.acceptSelectedSuggestion(true, false);\r\n }\r\n}));\r\n// normal tab\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'acceptSelectedSuggestion',\r\n when: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\r\n primary: 2 /* Tab */,\r\n weight\r\n});\r\n// accept on enter has special rules\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'acceptSelectedSuggestion',\r\n when: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\r\n primary: 3 /* Enter */,\r\n weight,\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize('accept.insert', \"Insert\") },\r\n group: 'left',\r\n order: 1,\r\n when: SuggestContext.HasInsertAndReplaceRange.toNegated()\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize('accept.insert', \"Insert\") },\r\n group: 'left',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize('accept.replace', \"Replace\") },\r\n group: 'left',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))\r\n});\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'acceptAlternativeSelectedSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 3 /* Enter */,\r\n secondary: [1024 /* Shift */ | 2 /* Tab */],\r\n },\r\n handler(x) {\r\n x.acceptSelectedSuggestion(false, true);\r\n },\r\n menuOpts: [{\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'left',\r\n order: 2,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),\r\n title: nls.localize('accept.replace', \"Replace\")\r\n }, {\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'left',\r\n order: 2,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),\r\n title: nls.localize('accept.insert', \"Insert\")\r\n }]\r\n}));\r\n// continue to support the old command\r\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'hideSuggestWidget',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.cancelSuggestWidget(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectNextSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectNextSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 18 /* DownArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */],\r\n mac: { primary: 18 /* DownArrow */, secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */, 256 /* WinCtrl */ | 44 /* KEY_N */] }\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectNextPageSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectNextPageSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 12 /* PageDown */,\r\n secondary: [2048 /* CtrlCmd */ | 12 /* PageDown */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectLastSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectLastSuggestion()\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectPrevSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectPrevSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 16 /* UpArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 16 /* UpArrow */],\r\n mac: { primary: 16 /* UpArrow */, secondary: [2048 /* CtrlCmd */ | 16 /* UpArrow */, 256 /* WinCtrl */ | 46 /* KEY_P */] }\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectPrevPageSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectPrevPageSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 11 /* PageUp */,\r\n secondary: [2048 /* CtrlCmd */ | 11 /* PageUp */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectFirstSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectFirstSuggestion()\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleSuggestionDetails',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleSuggestionDetails(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 10 /* Space */,\r\n mac: { primary: 256 /* WinCtrl */ | 10 /* Space */ }\r\n },\r\n menuOpts: [{\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'right',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\r\n title: nls.localize('detail.more', \"show less\")\r\n }, {\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'right',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\r\n title: nls.localize('detail.less', \"show more\")\r\n }]\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleExplainMode',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleExplainMode(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */,\r\n primary: 2048 /* CtrlCmd */ | 85 /* US_SLASH */,\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleSuggestionFocus',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleSuggestionFocus(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 10 /* Space */,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 10 /* Space */ }\r\n }\r\n}));\r\n//#region tab completions\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertBestCompletion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), WordContextKey.AtEnd, SuggestContext.Visible.toNegated(), SuggestAlternatives.OtherSuggestions.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: (x, arg) => {\r\n x.triggerSuggestAndAcceptBest(isObject(arg) ? Object.assign({ fallback: 'tab' }, arg) : { fallback: 'tab' });\r\n },\r\n kbOpts: {\r\n weight,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertNextSuggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: x => x.acceptNextSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertPrevSuggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: x => x.acceptPrevSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorAction(class extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.resetSuggestSize',\r\n label: nls.localize('suggest.reset.label', \"Reset Suggest Widget Size\"),\r\n alias: 'Reset Suggest Widget Size',\r\n precondition: undefined\r\n });\r\n }\r\n run(_accessor, editor) {\r\n SuggestController.get(editor).resetWidgetSize();\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Event } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { BaseGhostTextWidgetModel, GhostText } from './ghostText.js';\r\nimport { inlineCompletionToGhostText } from './inlineCompletionsModel.js';\r\nimport { SnippetParser } from '../snippet/snippetParser.js';\r\nimport { SnippetSession } from '../snippet/snippetSession.js';\r\nimport { SuggestController } from '../suggest/suggestController.js';\r\nexport class SuggestWidgetAdapterModel extends BaseGhostTextWidgetModel {\r\n constructor(editor) {\r\n super(editor);\r\n this.isSuggestWidgetVisible = false;\r\n this.currentGhostText = undefined;\r\n this._isActive = false;\r\n this.isShiftKeyPressed = false;\r\n this.minReservedLineCount = 0;\r\n // This delay fixes an suggest widget issue when typing \".\" immediately restarts the suggestion session.\r\n this.setInactiveDelayed = this._register(new RunOnceScheduler(() => {\r\n if (!this.isSuggestWidgetVisible) {\r\n if (this.isActive) {\r\n this._isActive = false;\r\n this.onDidChangeEmitter.fire();\r\n }\r\n }\r\n }, 100));\r\n const suggestController = SuggestController.get(this.editor);\r\n if (suggestController) {\r\n let isBoundToSuggestWidget = false;\r\n const bindToSuggestWidget = () => {\r\n if (isBoundToSuggestWidget) {\r\n return;\r\n }\r\n isBoundToSuggestWidget = true;\r\n this._register(suggestController.widget.value.onDidShow(() => {\r\n this.isSuggestWidgetVisible = true;\r\n this._isActive = true;\r\n this.updateFromSuggestion();\r\n }));\r\n this._register(suggestController.widget.value.onDidHide(() => {\r\n this.isSuggestWidgetVisible = false;\r\n this.setInactiveDelayed.schedule();\r\n this.minReservedLineCount = 0;\r\n this.updateFromSuggestion();\r\n }));\r\n this._register(suggestController.widget.value.onDidFocus(() => {\r\n this.isSuggestWidgetVisible = true;\r\n this._isActive = true;\r\n this.updateFromSuggestion();\r\n }));\r\n };\r\n this._register(Event.once(suggestController.model.onDidTrigger)(e => {\r\n bindToSuggestWidget();\r\n }));\r\n }\r\n this.updateFromSuggestion();\r\n this._register(this.editor.onDidChangeCursorPosition((e) => {\r\n if (this.isSuggestionPreviewEnabled()) {\r\n this.update();\r\n }\r\n }));\r\n this._register(toDisposable(() => {\r\n const suggestController = SuggestController.get(this.editor);\r\n if (suggestController) {\r\n suggestController.stopForceRenderingAbove();\r\n }\r\n }));\r\n // See the command acceptAlternativeSelectedSuggestion that is bound to shift+tab\r\n this._register(editor.onKeyDown(e => {\r\n if (e.shiftKey && !this.isShiftKeyPressed) {\r\n this.isShiftKeyPressed = true;\r\n this.updateFromSuggestion();\r\n }\r\n }));\r\n this._register(editor.onKeyUp(e => {\r\n if (e.shiftKey && this.isShiftKeyPressed) {\r\n this.isShiftKeyPressed = false;\r\n this.updateFromSuggestion();\r\n }\r\n }));\r\n }\r\n get isActive() { return this._isActive; }\r\n setExpanded(expanded) {\r\n super.setExpanded(expanded);\r\n this.updateFromSuggestion();\r\n }\r\n isSuggestionPreviewEnabled() {\r\n const suggestOptions = this.editor.getOption(105 /* suggest */);\r\n return suggestOptions.preview;\r\n }\r\n updateFromSuggestion() {\r\n const suggestController = SuggestController.get(this.editor);\r\n if (!suggestController) {\r\n this.setCurrentInlineCompletion(undefined);\r\n return;\r\n }\r\n if (!this.isSuggestWidgetVisible) {\r\n this.setCurrentInlineCompletion(undefined);\r\n return;\r\n }\r\n const focusedItem = suggestController.widget.value.getFocusedItem();\r\n if (!focusedItem) {\r\n this.setCurrentInlineCompletion(undefined);\r\n return;\r\n }\r\n // TODO: item.isResolved\r\n this.setCurrentInlineCompletion(getInlineCompletion(suggestController, this.editor.getPosition(), focusedItem, this.isShiftKeyPressed));\r\n }\r\n setCurrentInlineCompletion(completion) {\r\n this.currentCompletion = completion;\r\n this.update();\r\n }\r\n update() {\r\n const completion = this.currentCompletion;\r\n const mode = this.editor.getOptions().get(105 /* suggest */).previewMode;\r\n this.setGhostText(completion\r\n ? (inlineCompletionToGhostText(completion, this.editor.getModel(), mode, this.editor.getPosition()) ||\r\n // Show an invisible ghost text to reserve space\r\n new GhostText(completion.range.endLineNumber, [], this.minReservedLineCount))\r\n : undefined);\r\n }\r\n setGhostText(newGhostText) {\r\n if (GhostText.equals(this.currentGhostText, newGhostText)) {\r\n return;\r\n }\r\n this.currentGhostText = newGhostText;\r\n if (this.currentGhostText && this.expanded) {\r\n this.minReservedLineCount = Math.max(this.minReservedLineCount, ...this.currentGhostText.parts.map(p => p.lines.length - 1));\r\n }\r\n const suggestController = SuggestController.get(this.editor);\r\n if (suggestController) {\r\n if (this.minReservedLineCount >= 1 && this.isSuggestionPreviewEnabled()) {\r\n suggestController.forceRenderingAbove();\r\n }\r\n else {\r\n suggestController.stopForceRenderingAbove();\r\n }\r\n }\r\n this.onDidChangeEmitter.fire();\r\n }\r\n get ghostText() {\r\n return this.isSuggestionPreviewEnabled()\r\n ? this.currentGhostText\r\n : undefined;\r\n }\r\n}\r\nfunction getInlineCompletion(suggestController, position, suggestion, toggleMode) {\r\n const item = suggestion.item;\r\n if (Array.isArray(item.completion.additionalTextEdits)) {\r\n // cannot represent additional text edits\r\n return {\r\n text: '',\r\n range: Range.fromPositions(position, position),\r\n };\r\n }\r\n let { insertText } = item.completion;\r\n if (item.completion.insertTextRules & 4 /* InsertAsSnippet */) {\r\n const snippet = new SnippetParser().parse(insertText);\r\n const model = suggestController.editor.getModel();\r\n SnippetSession.adjustWhitespace(model, position, snippet, true, true);\r\n insertText = snippet.toString();\r\n }\r\n const info = suggestController.getOverwriteInfo(item, toggleMode);\r\n return {\r\n text: insertText,\r\n range: Range.fromPositions(position.delta(0, -info.overwriteBefore), position.delta(0, Math.max(info.overwriteAfter, 0))),\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { InlineCompletionsModel } from './inlineCompletionsModel.js';\r\nimport { SuggestWidgetAdapterModel } from './suggestWidgetAdapterModel.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { createDisposableRef } from './utils.js';\r\nexport class DelegatingModel extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this.onDidChangeEmitter = new Emitter();\r\n this.onDidChange = this.onDidChangeEmitter.event;\r\n this.hasCachedGhostText = false;\r\n this.currentModelRef = this._register(new MutableDisposable());\r\n }\r\n get targetModel() {\r\n var _a;\r\n return (_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object;\r\n }\r\n setTargetModel(model) {\r\n var _a;\r\n if (((_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object) === model) {\r\n return;\r\n }\r\n this.currentModelRef.clear();\r\n this.currentModelRef.value = model ? createDisposableRef(model, model.onDidChange(() => {\r\n this.hasCachedGhostText = false;\r\n this.onDidChangeEmitter.fire();\r\n })) : undefined;\r\n this.hasCachedGhostText = false;\r\n this.onDidChangeEmitter.fire();\r\n }\r\n get ghostText() {\r\n var _a, _b;\r\n if (!this.hasCachedGhostText) {\r\n this.cachedGhostText = (_b = (_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object) === null || _b === void 0 ? void 0 : _b.ghostText;\r\n this.hasCachedGhostText = true;\r\n }\r\n return this.cachedGhostText;\r\n }\r\n setExpanded(expanded) {\r\n var _a;\r\n (_a = this.targetModel) === null || _a === void 0 ? void 0 : _a.setExpanded(expanded);\r\n }\r\n get expanded() {\r\n return this.targetModel ? this.targetModel.expanded : false;\r\n }\r\n get minReservedLineCount() {\r\n return this.targetModel ? this.targetModel.minReservedLineCount : 0;\r\n }\r\n}\r\n/**\r\n * A ghost text model that is both driven by inline completions and the suggest widget.\r\n*/\r\nlet GhostTextModel = class GhostTextModel extends DelegatingModel {\r\n constructor(editor, commandService) {\r\n super();\r\n this.editor = editor;\r\n this.commandService = commandService;\r\n this.suggestWidgetAdapterModel = this._register(new SuggestWidgetAdapterModel(this.editor));\r\n this.inlineCompletionsModel = this._register(new InlineCompletionsModel(this.editor, this.commandService));\r\n this._register(this.suggestWidgetAdapterModel.onDidChange(() => {\r\n this.updateModel();\r\n }));\r\n this.updateModel();\r\n }\r\n get activeInlineCompletionsModel() {\r\n if (this.targetModel === this.inlineCompletionsModel) {\r\n return this.inlineCompletionsModel;\r\n }\r\n return undefined;\r\n }\r\n updateModel() {\r\n this.setTargetModel(this.suggestWidgetAdapterModel.isActive\r\n ? this.suggestWidgetAdapterModel\r\n : this.inlineCompletionsModel);\r\n this.inlineCompletionsModel.setActive(this.targetModel === this.inlineCompletionsModel);\r\n }\r\n shouldShowHoverAt(hoverRange) {\r\n var _a;\r\n const ghostText = (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.ghostText;\r\n if (ghostText) {\r\n return ghostText.parts.some(p => hoverRange.containsPosition(new Position(ghostText.lineNumber, p.column)));\r\n }\r\n return false;\r\n }\r\n triggerInlineCompletion() {\r\n var _a;\r\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.trigger();\r\n }\r\n commitInlineCompletion() {\r\n var _a;\r\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.commitCurrentSuggestion();\r\n }\r\n hideInlineCompletion() {\r\n var _a;\r\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.hide();\r\n }\r\n showNextInlineCompletion() {\r\n var _a;\r\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.showNext();\r\n }\r\n showPreviousInlineCompletion() {\r\n var _a;\r\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.showPrevious();\r\n }\r\n hasMultipleInlineCompletions() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield ((_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\r\n return result !== undefined ? result : false;\r\n });\r\n }\r\n};\r\nGhostTextModel = __decorate([\r\n __param(1, ICommandService)\r\n], GhostTextModel);\r\nexport { GhostTextModel };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function createDisposableRef(object, disposable) {\r\n return {\r\n object,\r\n dispose: () => disposable === null || disposable === void 0 ? void 0 : disposable.dispose(),\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Disposable, MutableDisposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { GhostTextWidget } from './ghostTextWidget.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { GhostTextModel } from './ghostTextModel.js';\r\nlet GhostTextController = class GhostTextController extends Disposable {\r\n constructor(editor, instantiationService) {\r\n super();\r\n this.editor = editor;\r\n this.instantiationService = instantiationService;\r\n this.triggeredExplicitly = false;\r\n this.activeController = this._register(new MutableDisposable());\r\n this._register(this.editor.onDidChangeModel(() => {\r\n this.updateModelController();\r\n }));\r\n this._register(this.editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(105 /* suggest */)) {\r\n this.updateModelController();\r\n }\r\n if (e.hasChanged(53 /* inlineSuggest */)) {\r\n this.updateModelController();\r\n }\r\n }));\r\n this.updateModelController();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(GhostTextController.ID);\r\n }\r\n get activeModel() {\r\n var _a;\r\n return (_a = this.activeController.value) === null || _a === void 0 ? void 0 : _a.model;\r\n }\r\n // Don't call this method when not neccessary. It will recreate the activeController.\r\n updateModelController() {\r\n const suggestOptions = this.editor.getOption(105 /* suggest */);\r\n const inlineSuggestOptions = this.editor.getOption(53 /* inlineSuggest */);\r\n this.activeController.value = undefined;\r\n // ActiveGhostTextController is only created if one of those settings is set or if the inline completions are triggered explicitly.\r\n this.activeController.value =\r\n this.editor.hasModel() && (suggestOptions.preview || inlineSuggestOptions.enabled || this.triggeredExplicitly)\r\n ? this.instantiationService.createInstance(ActiveGhostTextController, this.editor)\r\n : undefined;\r\n }\r\n shouldShowHoverAt(hoverRange) {\r\n var _a;\r\n return ((_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.shouldShowHoverAt(hoverRange)) || false;\r\n }\r\n shouldShowHoverAtViewZone(viewZoneId) {\r\n var _a, _b;\r\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;\r\n }\r\n trigger() {\r\n var _a;\r\n this.triggeredExplicitly = true;\r\n if (!this.activeController.value) {\r\n this.updateModelController();\r\n }\r\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.triggerInlineCompletion();\r\n }\r\n commit() {\r\n var _a;\r\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.commitInlineCompletion();\r\n }\r\n hide() {\r\n var _a;\r\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.hideInlineCompletion();\r\n }\r\n showNextInlineCompletion() {\r\n var _a;\r\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.showNextInlineCompletion();\r\n }\r\n showPreviousInlineCompletion() {\r\n var _a;\r\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.showPreviousInlineCompletion();\r\n }\r\n hasMultipleInlineCompletions() {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield ((_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\r\n return result !== undefined ? result : false;\r\n });\r\n }\r\n};\r\nGhostTextController.inlineSuggestionVisible = new RawContextKey('inlineSuggestionVisible', false, nls.localize('inlineSuggestionVisible', \"Whether an inline suggestion is visible\"));\r\nGhostTextController.inlineSuggestionHasIndentation = new RawContextKey('inlineSuggestionHasIndentation', false, nls.localize('inlineSuggestionHasIndentation', \"Whether the inline suggestion starts with whitespace\"));\r\nGhostTextController.ID = 'editor.contrib.ghostTextController';\r\nGhostTextController = __decorate([\r\n __param(1, IInstantiationService)\r\n], GhostTextController);\r\nexport { GhostTextController };\r\nclass GhostTextContextKeys {\r\n constructor(contextKeyService) {\r\n this.contextKeyService = contextKeyService;\r\n this.inlineCompletionVisible = GhostTextController.inlineSuggestionVisible.bindTo(this.contextKeyService);\r\n this.inlineCompletionSuggestsIndentation = GhostTextController.inlineSuggestionHasIndentation.bindTo(this.contextKeyService);\r\n }\r\n}\r\n/**\r\n * The controller for a text editor with an initialized text model.\r\n * Must be disposed as soon as the model detaches from the editor.\r\n*/\r\nlet ActiveGhostTextController = class ActiveGhostTextController extends Disposable {\r\n constructor(editor, instantiationService, contextKeyService) {\r\n super();\r\n this.editor = editor;\r\n this.instantiationService = instantiationService;\r\n this.contextKeyService = contextKeyService;\r\n this.contextKeys = new GhostTextContextKeys(this.contextKeyService);\r\n this.model = this._register(this.instantiationService.createInstance(GhostTextModel, this.editor));\r\n this.widget = this._register(this.instantiationService.createInstance(GhostTextWidget, this.editor, this.model));\r\n this._register(toDisposable(() => {\r\n this.contextKeys.inlineCompletionVisible.set(false);\r\n this.contextKeys.inlineCompletionSuggestsIndentation.set(false);\r\n }));\r\n this._register(this.model.onDidChange(() => {\r\n this.updateContextKeys();\r\n }));\r\n this.updateContextKeys();\r\n }\r\n updateContextKeys() {\r\n var _a;\r\n this.contextKeys.inlineCompletionVisible.set(((_a = this.model.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.ghostText) !== undefined);\r\n const ghostText = this.model.inlineCompletionsModel.ghostText;\r\n if (ghostText && ghostText.parts.length > 0) {\r\n const { column, lines } = ghostText.parts[0];\r\n const suggestionStartsWithWs = lines[0].startsWith(' ') || lines[0].startsWith('\\t');\r\n const indentationEndColumn = this.editor.getModel().getLineIndentColumn(ghostText.lineNumber);\r\n const inIndentation = column <= indentationEndColumn;\r\n this.contextKeys.inlineCompletionSuggestsIndentation.set(!!this.model.activeInlineCompletionsModel\r\n && suggestionStartsWithWs && inIndentation);\r\n }\r\n else {\r\n this.contextKeys.inlineCompletionSuggestsIndentation.set(false);\r\n }\r\n }\r\n};\r\nActiveGhostTextController = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IContextKeyService)\r\n], ActiveGhostTextController);\r\nexport { ActiveGhostTextController };\r\nconst GhostTextCommand = EditorCommand.bindToContribution(GhostTextController.get);\r\nexport const commitInlineSuggestionAction = new GhostTextCommand({\r\n id: 'editor.action.inlineSuggest.commit',\r\n precondition: ContextKeyExpr.and(GhostTextController.inlineSuggestionVisible, GhostTextController.inlineSuggestionHasIndentation.toNegated(), EditorContextKeys.tabMovesFocus.toNegated()),\r\n kbOpts: {\r\n weight: 200,\r\n primary: 2 /* Tab */,\r\n },\r\n handler(x) {\r\n x.commit();\r\n x.editor.focus();\r\n }\r\n});\r\nregisterEditorCommand(commitInlineSuggestionAction);\r\nregisterEditorCommand(new GhostTextCommand({\r\n id: 'editor.action.inlineSuggest.hide',\r\n precondition: GhostTextController.inlineSuggestionVisible,\r\n kbOpts: {\r\n weight: 100,\r\n primary: 9 /* Escape */,\r\n },\r\n handler(x) {\r\n x.hide();\r\n }\r\n}));\r\nexport class ShowNextInlineSuggestionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: ShowNextInlineSuggestionAction.ID,\r\n label: nls.localize('action.inlineSuggest.showNext', \"Show Next Inline Suggestion\"),\r\n alias: 'Show Next Inline Suggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, GhostTextController.inlineSuggestionVisible),\r\n kbOpts: {\r\n weight: 100,\r\n primary: 512 /* Alt */ | 89 /* US_CLOSE_SQUARE_BRACKET */,\r\n },\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = GhostTextController.get(editor);\r\n if (controller) {\r\n controller.showNextInlineCompletion();\r\n editor.focus();\r\n }\r\n });\r\n }\r\n}\r\nShowNextInlineSuggestionAction.ID = 'editor.action.inlineSuggest.showNext';\r\nexport class ShowPreviousInlineSuggestionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: ShowPreviousInlineSuggestionAction.ID,\r\n label: nls.localize('action.inlineSuggest.showPrevious', \"Show Previous Inline Suggestion\"),\r\n alias: 'Show Previous Inline Suggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, GhostTextController.inlineSuggestionVisible),\r\n kbOpts: {\r\n weight: 100,\r\n primary: 512 /* Alt */ | 87 /* US_OPEN_SQUARE_BRACKET */,\r\n },\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = GhostTextController.get(editor);\r\n if (controller) {\r\n controller.showPreviousInlineCompletion();\r\n editor.focus();\r\n }\r\n });\r\n }\r\n}\r\nShowPreviousInlineSuggestionAction.ID = 'editor.action.inlineSuggest.showPrevious';\r\nexport class TriggerInlineSuggestionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.inlineSuggest.trigger',\r\n label: nls.localize('action.inlineSuggest.trigger', \"Trigger Inline Suggestion\"),\r\n alias: 'Trigger Inline Suggestion',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = GhostTextController.get(editor);\r\n if (controller) {\r\n controller.trigger();\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(GhostTextController.ID, GhostTextController);\r\nregisterEditorAction(TriggerInlineSuggestionAction);\r\nregisterEditorAction(ShowNextInlineSuggestionAction);\r\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { HoverForeignElementAnchor } from '../hover/hoverTypes.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { commitInlineSuggestionAction, GhostTextController, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction } from './ghostTextController.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IMenuService, MenuId, MenuItemAction } from '../../../platform/actions/common/actions.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nexport class InlineCompletionsHover {\r\n constructor(owner, range, controller) {\r\n this.owner = owner;\r\n this.range = range;\r\n this.controller = controller;\r\n }\r\n isValidForHoverAnchor(anchor) {\r\n return (anchor.type === 1 /* Range */\r\n && this.range.startColumn <= anchor.range.startColumn\r\n && this.range.endColumn >= anchor.range.endColumn);\r\n }\r\n hasMultipleSuggestions() {\r\n return this.controller.hasMultipleInlineCompletions();\r\n }\r\n}\r\nlet InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant {\r\n constructor(_editor, hover, _commandService, _menuService, _contextKeyService) {\r\n this._editor = _editor;\r\n this._commandService = _commandService;\r\n this._menuService = _menuService;\r\n this._contextKeyService = _contextKeyService;\r\n }\r\n suggestHoverAnchor(mouseEvent) {\r\n const controller = GhostTextController.get(this._editor);\r\n if (!controller) {\r\n return null;\r\n }\r\n if (mouseEvent.target.type === 8 /* CONTENT_VIEW_ZONE */) {\r\n // handle the case where the mouse is over the view zone\r\n const viewZoneData = mouseEvent.target.detail;\r\n if (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\r\n return new HoverForeignElementAnchor(1000, this, Range.fromPositions(viewZoneData.positionBefore || viewZoneData.position, viewZoneData.positionBefore || viewZoneData.position));\r\n }\r\n }\r\n if (mouseEvent.target.type === 7 /* CONTENT_EMPTY */ && mouseEvent.target.range) {\r\n // handle the case where the mouse is over the empty portion of a line following ghost text\r\n if (controller.shouldShowHoverAt(mouseEvent.target.range)) {\r\n return new HoverForeignElementAnchor(1000, this, mouseEvent.target.range);\r\n }\r\n }\r\n if (mouseEvent.target.type === 6 /* CONTENT_TEXT */ && mouseEvent.target.range && mouseEvent.target.detail) {\r\n // handle the case where the mouse is directly over ghost text\r\n const mightBeForeignElement = mouseEvent.target.detail.mightBeForeignElement;\r\n if (mightBeForeignElement && controller.shouldShowHoverAt(mouseEvent.target.range)) {\r\n return new HoverForeignElementAnchor(1000, this, mouseEvent.target.range);\r\n }\r\n }\r\n return null;\r\n }\r\n computeSync(anchor, lineDecorations) {\r\n const controller = GhostTextController.get(this._editor);\r\n if (controller && controller.shouldShowHoverAt(anchor.range)) {\r\n return [new InlineCompletionsHover(this, anchor.range, controller)];\r\n }\r\n return [];\r\n }\r\n renderHoverParts(hoverParts, fragment, statusBar) {\r\n const disposableStore = new DisposableStore();\r\n const menu = disposableStore.add(this._menuService.createMenu(MenuId.InlineCompletionsActions, this._contextKeyService));\r\n const previousAction = statusBar.addAction({\r\n label: nls.localize('showNextInlineSuggestion', \"Next\"),\r\n commandId: ShowNextInlineSuggestionAction.ID,\r\n run: () => this._commandService.executeCommand(ShowNextInlineSuggestionAction.ID)\r\n });\r\n const nextAction = statusBar.addAction({\r\n label: nls.localize('showPreviousInlineSuggestion', \"Previous\"),\r\n commandId: ShowPreviousInlineSuggestionAction.ID,\r\n run: () => this._commandService.executeCommand(ShowPreviousInlineSuggestionAction.ID)\r\n });\r\n statusBar.addAction({\r\n label: nls.localize('acceptInlineSuggestion', \"Accept\"),\r\n commandId: commitInlineSuggestionAction.id,\r\n run: () => this._commandService.executeCommand(commitInlineSuggestionAction.id)\r\n });\r\n const actions = [previousAction, nextAction];\r\n for (const action of actions) {\r\n action.setEnabled(false);\r\n }\r\n hoverParts[0].hasMultipleSuggestions().then(hasMore => {\r\n for (const action of actions) {\r\n action.setEnabled(hasMore);\r\n }\r\n });\r\n for (const [_, group] of menu.getActions()) {\r\n for (const action of group) {\r\n if (action instanceof MenuItemAction) {\r\n statusBar.addAction({\r\n label: action.label,\r\n commandId: action.item.id,\r\n run: () => this._commandService.executeCommand(action.item.id)\r\n });\r\n }\r\n }\r\n }\r\n return disposableStore;\r\n }\r\n};\r\nInlineCompletionsHoverParticipant = __decorate([\r\n __param(2, ICommandService),\r\n __param(3, IMenuService),\r\n __param(4, IContextKeyService)\r\n], InlineCompletionsHoverParticipant);\r\nexport { InlineCompletionsHoverParticipant };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ColorProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nexport function getColors(model, token) {\r\n const colors = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, token)).then(result => {\r\n if (Array.isArray(result)) {\r\n for (let colorInfo of result) {\r\n colors.push({ colorInfo, provider });\r\n }\r\n }\r\n }));\r\n return Promise.all(promises).then(() => colors);\r\n}\r\nexport function getColorPresentations(model, colorInfo, provider, token) {\r\n return Promise.resolve(provider.provideColorPresentations(model, colorInfo, token));\r\n}\r\nCommandsRegistry.registerCommand('_executeDocumentColorProvider', function (accessor, ...args) {\r\n const [resource] = args;\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument();\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const rawCIs = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, CancellationToken.None)).then(result => {\r\n if (Array.isArray(result)) {\r\n for (let ci of result) {\r\n rawCIs.push({ range: ci.range, color: [ci.color.red, ci.color.green, ci.color.blue, ci.color.alpha] });\r\n }\r\n }\r\n }));\r\n return Promise.all(promises).then(() => rawCIs);\r\n});\r\nCommandsRegistry.registerCommand('_executeColorPresentationProvider', function (accessor, ...args) {\r\n const [color, context] = args;\r\n const { uri, range } = context;\r\n if (!(uri instanceof URI) || !Array.isArray(color) || color.length !== 4 || !Range.isIRange(range)) {\r\n throw illegalArgument();\r\n }\r\n const [red, green, blue, alpha] = color;\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const colorInfo = {\r\n range,\r\n color: { red, green, blue, alpha }\r\n };\r\n const presentations = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideColorPresentations(model, colorInfo, CancellationToken.None)).then(result => {\r\n if (Array.isArray(result)) {\r\n presentations.push(...result);\r\n }\r\n }));\r\n return Promise.all(promises).then(() => presentations);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { TimeoutTimer, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { RGBA } from '../../../base/common/color.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { ColorProviderRegistry } from '../../common/modes.js';\r\nimport { getColors } from './color.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nconst MAX_DECORATORS = 500;\r\nlet ColorDetector = class ColorDetector extends Disposable {\r\n constructor(_editor, _codeEditorService, _configurationService) {\r\n super();\r\n this._editor = _editor;\r\n this._codeEditorService = _codeEditorService;\r\n this._configurationService = _configurationService;\r\n this._localToDispose = this._register(new DisposableStore());\r\n this._decorationsIds = [];\r\n this._colorDatas = new Map();\r\n this._colorDecoratorIds = [];\r\n this._decorationsTypes = new Set();\r\n this._register(_editor.onDidChangeModel(() => {\r\n this._isEnabled = this.isEnabled();\r\n this.onModelChanged();\r\n }));\r\n this._register(_editor.onDidChangeModelLanguage(() => this.onModelChanged()));\r\n this._register(ColorProviderRegistry.onDidChange(() => this.onModelChanged()));\r\n this._register(_editor.onDidChangeConfiguration(() => {\r\n let prevIsEnabled = this._isEnabled;\r\n this._isEnabled = this.isEnabled();\r\n if (prevIsEnabled !== this._isEnabled) {\r\n if (this._isEnabled) {\r\n this.onModelChanged();\r\n }\r\n else {\r\n this.removeAllDecorations();\r\n }\r\n }\r\n }));\r\n this._timeoutTimer = null;\r\n this._computePromise = null;\r\n this._isEnabled = this.isEnabled();\r\n this.onModelChanged();\r\n }\r\n isEnabled() {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return false;\r\n }\r\n const languageId = model.getLanguageIdentifier();\r\n // handle deprecated settings. [languageId].colorDecorators.enable\r\n const deprecatedConfig = this._configurationService.getValue(languageId.language);\r\n if (deprecatedConfig && typeof deprecatedConfig === 'object') {\r\n const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\r\n if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\r\n return colorDecorators['enable'];\r\n }\r\n }\r\n return this._editor.getOption(15 /* colorDecorators */);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(this.ID);\r\n }\r\n dispose() {\r\n this.stop();\r\n this.removeAllDecorations();\r\n super.dispose();\r\n }\r\n onModelChanged() {\r\n this.stop();\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n if (!model || !ColorProviderRegistry.has(model)) {\r\n return;\r\n }\r\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\r\n if (!this._timeoutTimer) {\r\n this._timeoutTimer = new TimeoutTimer();\r\n this._timeoutTimer.cancelAndSet(() => {\r\n this._timeoutTimer = null;\r\n this.beginCompute();\r\n }, ColorDetector.RECOMPUTE_TIME);\r\n }\r\n }));\r\n this.beginCompute();\r\n }\r\n beginCompute() {\r\n this._computePromise = createCancelablePromise(token => {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return Promise.resolve([]);\r\n }\r\n return getColors(model, token);\r\n });\r\n this._computePromise.then((colorInfos) => {\r\n this.updateDecorations(colorInfos);\r\n this.updateColorDecorators(colorInfos);\r\n this._computePromise = null;\r\n }, onUnexpectedError);\r\n }\r\n stop() {\r\n if (this._timeoutTimer) {\r\n this._timeoutTimer.cancel();\r\n this._timeoutTimer = null;\r\n }\r\n if (this._computePromise) {\r\n this._computePromise.cancel();\r\n this._computePromise = null;\r\n }\r\n this._localToDispose.clear();\r\n }\r\n updateDecorations(colorDatas) {\r\n const decorations = colorDatas.map(c => ({\r\n range: {\r\n startLineNumber: c.colorInfo.range.startLineNumber,\r\n startColumn: c.colorInfo.range.startColumn,\r\n endLineNumber: c.colorInfo.range.endLineNumber,\r\n endColumn: c.colorInfo.range.endColumn\r\n },\r\n options: ModelDecorationOptions.EMPTY\r\n }));\r\n this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, decorations);\r\n this._colorDatas = new Map();\r\n this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\r\n }\r\n updateColorDecorators(colorData) {\r\n let decorations = [];\r\n let newDecorationsTypes = {};\r\n for (let i = 0; i < colorData.length && decorations.length < MAX_DECORATORS; i++) {\r\n const { red, green, blue, alpha } = colorData[i].colorInfo.color;\r\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\r\n let subKey = hash(`rgba(${rgba.r},${rgba.g},${rgba.b},${rgba.a})`).toString(16);\r\n let color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\r\n let key = 'colorBox-' + subKey;\r\n if (!this._decorationsTypes.has(key) && !newDecorationsTypes[key]) {\r\n this._codeEditorService.registerDecorationType('color-detector-color', key, {\r\n before: {\r\n contentText: ' ',\r\n border: 'solid 0.1em #000',\r\n margin: '0.1em 0.2em 0 0.2em',\r\n width: '0.8em',\r\n height: '0.8em',\r\n backgroundColor: color\r\n },\r\n dark: {\r\n before: {\r\n border: 'solid 0.1em #eee'\r\n }\r\n }\r\n }, undefined, this._editor);\r\n }\r\n newDecorationsTypes[key] = true;\r\n decorations.push({\r\n range: {\r\n startLineNumber: colorData[i].colorInfo.range.startLineNumber,\r\n startColumn: colorData[i].colorInfo.range.startColumn,\r\n endLineNumber: colorData[i].colorInfo.range.endLineNumber,\r\n endColumn: colorData[i].colorInfo.range.endColumn\r\n },\r\n options: this._codeEditorService.resolveDecorationOptions(key, true)\r\n });\r\n }\r\n this._decorationsTypes.forEach(subType => {\r\n if (!newDecorationsTypes[subType]) {\r\n this._codeEditorService.removeDecorationType(subType);\r\n }\r\n });\r\n this._colorDecoratorIds = this._editor.deltaDecorations(this._colorDecoratorIds, decorations);\r\n }\r\n removeAllDecorations() {\r\n this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, []);\r\n this._colorDecoratorIds = this._editor.deltaDecorations(this._colorDecoratorIds, []);\r\n this._decorationsTypes.forEach(subType => {\r\n this._codeEditorService.removeDecorationType(subType);\r\n });\r\n }\r\n getColorData(position) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return null;\r\n }\r\n const decorations = model\r\n .getDecorationsInRange(Range.fromPositions(position, position))\r\n .filter(d => this._colorDatas.has(d.id));\r\n if (decorations.length === 0) {\r\n return null;\r\n }\r\n return this._colorDatas.get(decorations[0].id);\r\n }\r\n};\r\nColorDetector.ID = 'editor.contrib.colorDetector';\r\nColorDetector.RECOMPUTE_TIME = 1000; // ms\r\nColorDetector = __decorate([\r\n __param(1, ICodeEditorService),\r\n __param(2, IConfigurationService)\r\n], ColorDetector);\r\nexport { ColorDetector };\r\nregisterEditorContribution(ColorDetector.ID, ColorDetector);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport class ColorPickerModel {\r\n constructor(color, availableColorPresentations, presentationIndex) {\r\n this.presentationIndex = presentationIndex;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this._onDidChangeColor = new Emitter();\r\n this.onDidChangeColor = this._onDidChangeColor.event;\r\n this._onDidChangePresentation = new Emitter();\r\n this.onDidChangePresentation = this._onDidChangePresentation.event;\r\n this.originalColor = color;\r\n this._color = color;\r\n this._colorPresentations = availableColorPresentations;\r\n }\r\n get color() {\r\n return this._color;\r\n }\r\n set color(color) {\r\n if (this._color.equals(color)) {\r\n return;\r\n }\r\n this._color = color;\r\n this._onDidChangeColor.fire(color);\r\n }\r\n get presentation() { return this.colorPresentations[this.presentationIndex]; }\r\n get colorPresentations() {\r\n return this._colorPresentations;\r\n }\r\n set colorPresentations(colorPresentations) {\r\n this._colorPresentations = colorPresentations;\r\n if (this.presentationIndex > colorPresentations.length - 1) {\r\n this.presentationIndex = 0;\r\n }\r\n this._onDidChangePresentation.fire(this.presentation);\r\n }\r\n selectNextColorPresentation() {\r\n this.presentationIndex = (this.presentationIndex + 1) % this.colorPresentations.length;\r\n this.flushColor();\r\n this._onDidChangePresentation.fire(this.presentation);\r\n }\r\n guessColorPresentation(color, originalText) {\r\n for (let i = 0; i < this.colorPresentations.length; i++) {\r\n if (originalText.toLowerCase() === this.colorPresentations[i].label) {\r\n this.presentationIndex = i;\r\n this._onDidChangePresentation.fire(this.presentation);\r\n break;\r\n }\r\n }\r\n }\r\n flushColor() {\r\n this._onColorFlushed.fire(this._color);\r\n }\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./colorPicker.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./colorPicker.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './colorPicker.css';\r\nimport { onDidChangeZoomLevel } from '../../../base/browser/browser.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../../base/browser/globalMouseMoveMonitor.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { Color, HSVA, RGBA } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { editorHoverBackground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nconst $ = dom.$;\r\nexport class ColorPickerHeader extends Disposable {\r\n constructor(container, model, themeService) {\r\n super();\r\n this.model = model;\r\n this.domNode = $('.colorpicker-header');\r\n dom.append(container, this.domNode);\r\n this.pickedColorNode = dom.append(this.domNode, $('.picked-color'));\r\n const colorBox = dom.append(this.domNode, $('.original-color'));\r\n colorBox.style.backgroundColor = Color.Format.CSS.format(this.model.originalColor) || '';\r\n this.backgroundColor = themeService.getColorTheme().getColor(editorHoverBackground) || Color.white;\r\n this._register(registerThemingParticipant((theme, collector) => {\r\n this.backgroundColor = theme.getColor(editorHoverBackground) || Color.white;\r\n }));\r\n this._register(dom.addDisposableListener(this.pickedColorNode, dom.EventType.CLICK, () => this.model.selectNextColorPresentation()));\r\n this._register(dom.addDisposableListener(colorBox, dom.EventType.CLICK, () => {\r\n this.model.color = this.model.originalColor;\r\n this.model.flushColor();\r\n }));\r\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\r\n this._register(model.onDidChangePresentation(this.onDidChangePresentation, this));\r\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(model.color) || '';\r\n this.pickedColorNode.classList.toggle('light', model.color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : model.color.isLighter());\r\n }\r\n onDidChangeColor(color) {\r\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(color) || '';\r\n this.pickedColorNode.classList.toggle('light', color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : color.isLighter());\r\n this.onDidChangePresentation();\r\n }\r\n onDidChangePresentation() {\r\n this.pickedColorNode.textContent = this.model.presentation ? this.model.presentation.label : '';\r\n }\r\n}\r\nexport class ColorPickerBody extends Disposable {\r\n constructor(container, model, pixelRatio) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this.domNode = $('.colorpicker-body');\r\n dom.append(container, this.domNode);\r\n this.saturationBox = new SaturationBox(this.domNode, this.model, this.pixelRatio);\r\n this._register(this.saturationBox);\r\n this._register(this.saturationBox.onDidChange(this.onDidSaturationValueChange, this));\r\n this._register(this.saturationBox.onColorFlushed(this.flushColor, this));\r\n this.opacityStrip = new OpacityStrip(this.domNode, this.model);\r\n this._register(this.opacityStrip);\r\n this._register(this.opacityStrip.onDidChange(this.onDidOpacityChange, this));\r\n this._register(this.opacityStrip.onColorFlushed(this.flushColor, this));\r\n this.hueStrip = new HueStrip(this.domNode, this.model);\r\n this._register(this.hueStrip);\r\n this._register(this.hueStrip.onDidChange(this.onDidHueChange, this));\r\n this._register(this.hueStrip.onColorFlushed(this.flushColor, this));\r\n }\r\n flushColor() {\r\n this.model.flushColor();\r\n }\r\n onDidSaturationValueChange({ s, v }) {\r\n const hsva = this.model.color.hsva;\r\n this.model.color = new Color(new HSVA(hsva.h, s, v, hsva.a));\r\n }\r\n onDidOpacityChange(a) {\r\n const hsva = this.model.color.hsva;\r\n this.model.color = new Color(new HSVA(hsva.h, hsva.s, hsva.v, a));\r\n }\r\n onDidHueChange(value) {\r\n const hsva = this.model.color.hsva;\r\n const h = (1 - value) * 360;\r\n this.model.color = new Color(new HSVA(h === 360 ? 0 : h, hsva.s, hsva.v, hsva.a));\r\n }\r\n layout() {\r\n this.saturationBox.layout();\r\n this.opacityStrip.layout();\r\n this.hueStrip.layout();\r\n }\r\n}\r\nclass SaturationBox extends Disposable {\r\n constructor(container, model, pixelRatio) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this.domNode = $('.saturation-wrap');\r\n dom.append(container, this.domNode);\r\n // Create canvas, draw selected color\r\n this.canvas = document.createElement('canvas');\r\n this.canvas.className = 'saturation-box';\r\n dom.append(this.domNode, this.canvas);\r\n // Add selection circle\r\n this.selection = $('.saturation-selection');\r\n dom.append(this.domNode, this.selection);\r\n this.layout();\r\n this._register(dom.addDisposableGenericMouseDownListner(this.domNode, e => this.onMouseDown(e)));\r\n this._register(this.model.onDidChangeColor(this.onDidChangeColor, this));\r\n this.monitor = null;\r\n }\r\n onMouseDown(e) {\r\n this.monitor = this._register(new GlobalMouseMoveMonitor());\r\n const origin = dom.getDomNodePagePosition(this.domNode);\r\n if (e.target !== this.selection) {\r\n this.onDidChangePosition(e.offsetX, e.offsetY);\r\n }\r\n this.monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, event => this.onDidChangePosition(event.posx - origin.left, event.posy - origin.top), () => null);\r\n const mouseUpListener = dom.addDisposableGenericMouseUpListner(document, () => {\r\n this._onColorFlushed.fire();\r\n mouseUpListener.dispose();\r\n if (this.monitor) {\r\n this.monitor.stopMonitoring(true);\r\n this.monitor = null;\r\n }\r\n }, true);\r\n }\r\n onDidChangePosition(left, top) {\r\n const s = Math.max(0, Math.min(1, left / this.width));\r\n const v = Math.max(0, Math.min(1, 1 - (top / this.height)));\r\n this.paintSelection(s, v);\r\n this._onDidChange.fire({ s, v });\r\n }\r\n layout() {\r\n this.width = this.domNode.offsetWidth;\r\n this.height = this.domNode.offsetHeight;\r\n this.canvas.width = this.width * this.pixelRatio;\r\n this.canvas.height = this.height * this.pixelRatio;\r\n this.paint();\r\n const hsva = this.model.color.hsva;\r\n this.paintSelection(hsva.s, hsva.v);\r\n }\r\n paint() {\r\n const hsva = this.model.color.hsva;\r\n const saturatedColor = new Color(new HSVA(hsva.h, 1, 1, 1));\r\n const ctx = this.canvas.getContext('2d');\r\n const whiteGradient = ctx.createLinearGradient(0, 0, this.canvas.width, 0);\r\n whiteGradient.addColorStop(0, 'rgba(255, 255, 255, 1)');\r\n whiteGradient.addColorStop(0.5, 'rgba(255, 255, 255, 0.5)');\r\n whiteGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\r\n const blackGradient = ctx.createLinearGradient(0, 0, 0, this.canvas.height);\r\n blackGradient.addColorStop(0, 'rgba(0, 0, 0, 0)');\r\n blackGradient.addColorStop(1, 'rgba(0, 0, 0, 1)');\r\n ctx.rect(0, 0, this.canvas.width, this.canvas.height);\r\n ctx.fillStyle = Color.Format.CSS.format(saturatedColor);\r\n ctx.fill();\r\n ctx.fillStyle = whiteGradient;\r\n ctx.fill();\r\n ctx.fillStyle = blackGradient;\r\n ctx.fill();\r\n }\r\n paintSelection(s, v) {\r\n this.selection.style.left = `${s * this.width}px`;\r\n this.selection.style.top = `${this.height - v * this.height}px`;\r\n }\r\n onDidChangeColor() {\r\n if (this.monitor && this.monitor.isMonitoring()) {\r\n return;\r\n }\r\n this.paint();\r\n }\r\n}\r\nclass Strip extends Disposable {\r\n constructor(container, model) {\r\n super();\r\n this.model = model;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this.domNode = dom.append(container, $('.strip'));\r\n this.overlay = dom.append(this.domNode, $('.overlay'));\r\n this.slider = dom.append(this.domNode, $('.slider'));\r\n this.slider.style.top = `0px`;\r\n this._register(dom.addDisposableGenericMouseDownListner(this.domNode, e => this.onMouseDown(e)));\r\n this.layout();\r\n }\r\n layout() {\r\n this.height = this.domNode.offsetHeight - this.slider.offsetHeight;\r\n const value = this.getValue(this.model.color);\r\n this.updateSliderPosition(value);\r\n }\r\n onMouseDown(e) {\r\n const monitor = this._register(new GlobalMouseMoveMonitor());\r\n const origin = dom.getDomNodePagePosition(this.domNode);\r\n this.domNode.classList.add('grabbing');\r\n if (e.target !== this.slider) {\r\n this.onDidChangeTop(e.offsetY);\r\n }\r\n monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, event => this.onDidChangeTop(event.posy - origin.top), () => null);\r\n const mouseUpListener = dom.addDisposableGenericMouseUpListner(document, () => {\r\n this._onColorFlushed.fire();\r\n mouseUpListener.dispose();\r\n monitor.stopMonitoring(true);\r\n this.domNode.classList.remove('grabbing');\r\n }, true);\r\n }\r\n onDidChangeTop(top) {\r\n const value = Math.max(0, Math.min(1, 1 - (top / this.height)));\r\n this.updateSliderPosition(value);\r\n this._onDidChange.fire(value);\r\n }\r\n updateSliderPosition(value) {\r\n this.slider.style.top = `${(1 - value) * this.height}px`;\r\n }\r\n}\r\nclass OpacityStrip extends Strip {\r\n constructor(container, model) {\r\n super(container, model);\r\n this.domNode.classList.add('opacity-strip');\r\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\r\n this.onDidChangeColor(this.model.color);\r\n }\r\n onDidChangeColor(color) {\r\n const { r, g, b } = color.rgba;\r\n const opaque = new Color(new RGBA(r, g, b, 1));\r\n const transparent = new Color(new RGBA(r, g, b, 0));\r\n this.overlay.style.background = `linear-gradient(to bottom, ${opaque} 0%, ${transparent} 100%)`;\r\n }\r\n getValue(color) {\r\n return color.hsva.a;\r\n }\r\n}\r\nclass HueStrip extends Strip {\r\n constructor(container, model) {\r\n super(container, model);\r\n this.domNode.classList.add('hue-strip');\r\n }\r\n getValue(color) {\r\n return 1 - (color.hsva.h / 360);\r\n }\r\n}\r\nexport class ColorPickerWidget extends Widget {\r\n constructor(container, model, pixelRatio, themeService) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this._register(onDidChangeZoomLevel(() => this.layout()));\r\n const element = $('.colorpicker-widget');\r\n container.appendChild(element);\r\n const header = new ColorPickerHeader(element, this.model, themeService);\r\n this.body = new ColorPickerBody(element, this.model, this.pixelRatio);\r\n this._register(header);\r\n this._register(this.body);\r\n }\r\n layout() {\r\n this.body.layout();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { getColorPresentations } from '../colorPicker/color.js';\r\nimport { ColorDetector } from '../colorPicker/colorDetector.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { ColorPickerModel } from '../colorPicker/colorPickerModel.js';\r\nimport { ColorPickerWidget } from '../colorPicker/colorPickerWidget.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nexport class ColorHover {\r\n constructor(owner, range, model, provider) {\r\n this.owner = owner;\r\n this.range = range;\r\n this.model = model;\r\n this.provider = provider;\r\n /**\r\n * Force the hover to always be rendered at this specific range,\r\n * even in the case of multiple hover parts.\r\n */\r\n this.forceShowAtRange = true;\r\n }\r\n isValidForHoverAnchor(anchor) {\r\n return (anchor.type === 1 /* Range */\r\n && this.range.startColumn <= anchor.range.startColumn\r\n && this.range.endColumn >= anchor.range.endColumn);\r\n }\r\n}\r\nlet ColorHoverParticipant = class ColorHoverParticipant {\r\n constructor(_editor, _hover, _themeService) {\r\n this._editor = _editor;\r\n this._hover = _hover;\r\n this._themeService = _themeService;\r\n }\r\n computeSync(anchor, lineDecorations) {\r\n return [];\r\n }\r\n computeAsync(anchor, lineDecorations, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel()) {\r\n return [];\r\n }\r\n const colorDetector = ColorDetector.get(this._editor);\r\n for (const d of lineDecorations) {\r\n const colorData = colorDetector.getColorData(d.range.getStartPosition());\r\n if (colorData) {\r\n const colorHover = yield this._createColorHover(this._editor.getModel(), colorData.colorInfo, colorData.provider);\r\n return [colorHover];\r\n }\r\n }\r\n return [];\r\n });\r\n }\r\n _createColorHover(editorModel, colorInfo, provider) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const originalText = editorModel.getValueInRange(colorInfo.range);\r\n const { red, green, blue, alpha } = colorInfo.color;\r\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\r\n const color = new Color(rgba);\r\n const colorPresentations = yield getColorPresentations(editorModel, colorInfo, provider, CancellationToken.None);\r\n const model = new ColorPickerModel(color, [], 0);\r\n model.colorPresentations = colorPresentations || [];\r\n model.guessColorPresentation(color, originalText);\r\n return new ColorHover(this, Range.lift(colorInfo.range), model, provider);\r\n });\r\n }\r\n renderHoverParts(hoverParts, fragment, statusBar) {\r\n if (hoverParts.length === 0 || !this._editor.hasModel()) {\r\n return Disposable.None;\r\n }\r\n const disposables = new DisposableStore();\r\n const colorHover = hoverParts[0];\r\n const editorModel = this._editor.getModel();\r\n const model = colorHover.model;\r\n const widget = disposables.add(new ColorPickerWidget(fragment, model, this._editor.getOption(127 /* pixelRatio */), this._themeService));\r\n let range = new Range(colorHover.range.startLineNumber, colorHover.range.startColumn, colorHover.range.endLineNumber, colorHover.range.endColumn);\r\n const updateEditorModel = () => {\r\n let textEdits;\r\n let newRange;\r\n if (model.presentation.textEdit) {\r\n textEdits = [model.presentation.textEdit];\r\n newRange = new Range(model.presentation.textEdit.range.startLineNumber, model.presentation.textEdit.range.startColumn, model.presentation.textEdit.range.endLineNumber, model.presentation.textEdit.range.endColumn);\r\n const trackedRange = this._editor.getModel()._setTrackedRange(null, newRange, 3 /* GrowsOnlyWhenTypingAfter */);\r\n this._editor.pushUndoStop();\r\n this._editor.executeEdits('colorpicker', textEdits);\r\n newRange = this._editor.getModel()._getTrackedRange(trackedRange) || newRange;\r\n }\r\n else {\r\n textEdits = [{ identifier: null, range, text: model.presentation.label, forceMoveMarkers: false }];\r\n newRange = range.setEndPosition(range.endLineNumber, range.startColumn + model.presentation.label.length);\r\n this._editor.pushUndoStop();\r\n this._editor.executeEdits('colorpicker', textEdits);\r\n }\r\n if (model.presentation.additionalTextEdits) {\r\n textEdits = [...model.presentation.additionalTextEdits];\r\n this._editor.executeEdits('colorpicker', textEdits);\r\n this._hover.hide();\r\n }\r\n this._editor.pushUndoStop();\r\n range = newRange;\r\n };\r\n const updateColorPresentations = (color) => {\r\n return getColorPresentations(editorModel, {\r\n range: range,\r\n color: {\r\n red: color.rgba.r / 255,\r\n green: color.rgba.g / 255,\r\n blue: color.rgba.b / 255,\r\n alpha: color.rgba.a\r\n }\r\n }, colorHover.provider, CancellationToken.None).then((colorPresentations) => {\r\n model.colorPresentations = colorPresentations || [];\r\n });\r\n };\r\n disposables.add(model.onColorFlushed((color) => {\r\n updateColorPresentations(color).then(updateEditorModel);\r\n }));\r\n disposables.add(model.onDidChangeColor(updateColorPresentations));\r\n this._hover.setColorPicker(widget);\r\n return disposables;\r\n }\r\n};\r\nColorHoverParticipant = __decorate([\r\n __param(2, IThemeService)\r\n], ColorHoverParticipant);\r\nexport { ColorHoverParticipant };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\nimport { HoverOperation } from './hoverOperation.js';\r\nimport { coalesce, flatten } from '../../../base/common/arrays.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { HoverWidget, HoverAction } from '../../../base/browser/ui/hover/hoverWidget.js';\r\nimport { MarkerHoverParticipant } from './markerHoverParticipant.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { MarkdownHoverParticipant } from './markdownHoverParticipant.js';\r\nimport { InlineCompletionsHoverParticipant } from '../inlineCompletions/inlineCompletionsHoverParticipant.js';\r\nimport { ColorHoverParticipant } from './colorHoverParticipant.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { HoverRangeAnchor } from './hoverTypes.js';\r\nconst $ = dom.$;\r\nlet EditorHoverStatusBar = class EditorHoverStatusBar extends Disposable {\r\n constructor(_keybindingService) {\r\n super();\r\n this._keybindingService = _keybindingService;\r\n this._hasContent = false;\r\n this.hoverElement = $('div.hover-row.status-bar');\r\n this.actionsElement = dom.append(this.hoverElement, $('div.actions'));\r\n }\r\n get hasContent() {\r\n return this._hasContent;\r\n }\r\n addAction(actionOptions) {\r\n const keybinding = this._keybindingService.lookupKeybinding(actionOptions.commandId);\r\n const keybindingLabel = keybinding ? keybinding.getLabel() : null;\r\n this._hasContent = true;\r\n return this._register(HoverAction.render(this.actionsElement, actionOptions, keybindingLabel));\r\n }\r\n append(element) {\r\n const result = dom.append(this.actionsElement, element);\r\n this._hasContent = true;\r\n return result;\r\n }\r\n};\r\nEditorHoverStatusBar = __decorate([\r\n __param(0, IKeybindingService)\r\n], EditorHoverStatusBar);\r\nclass ModesContentComputer {\r\n constructor(editor, _participants) {\r\n this._participants = _participants;\r\n this._editor = editor;\r\n this._result = [];\r\n this._anchor = null;\r\n }\r\n setAnchor(anchor) {\r\n this._anchor = anchor;\r\n this._result = [];\r\n }\r\n clearResult() {\r\n this._result = [];\r\n }\r\n static _getLineDecorations(editor, anchor) {\r\n if (anchor.type !== 1 /* Range */) {\r\n return [];\r\n }\r\n const model = editor.getModel();\r\n const lineNumber = anchor.range.startLineNumber;\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n return editor.getLineDecorations(lineNumber).filter((d) => {\r\n if (d.options.isWholeLine) {\r\n return true;\r\n }\r\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\r\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\r\n if (startColumn > anchor.range.startColumn || anchor.range.endColumn > endColumn) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n computeAsync(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const anchor = this._anchor;\r\n if (!this._editor.hasModel() || !anchor) {\r\n return Promise.resolve([]);\r\n }\r\n const lineDecorations = ModesContentComputer._getLineDecorations(this._editor, anchor);\r\n const allResults = yield Promise.all(this._participants.map(p => this._computeAsync(p, lineDecorations, anchor, token)));\r\n return flatten(allResults);\r\n });\r\n }\r\n _computeAsync(participant, lineDecorations, anchor, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!participant.computeAsync) {\r\n return [];\r\n }\r\n return participant.computeAsync(anchor, lineDecorations, token);\r\n });\r\n }\r\n computeSync() {\r\n if (!this._editor.hasModel() || !this._anchor) {\r\n return [];\r\n }\r\n const lineDecorations = ModesContentComputer._getLineDecorations(this._editor, this._anchor);\r\n let result = [];\r\n for (const participant of this._participants) {\r\n result = result.concat(participant.computeSync(this._anchor, lineDecorations));\r\n }\r\n return coalesce(result);\r\n }\r\n onResult(result, isFromSynchronousComputation) {\r\n // Always put synchronous messages before asynchronous ones\r\n if (isFromSynchronousComputation) {\r\n this._result = result.concat(this._result);\r\n }\r\n else {\r\n this._result = this._result.concat(result);\r\n }\r\n }\r\n getResult() {\r\n return this._result.slice(0);\r\n }\r\n getResultWithLoadingMessage() {\r\n if (this._anchor) {\r\n for (const participant of this._participants) {\r\n if (participant.createLoadingMessage) {\r\n const loadingMessage = participant.createLoadingMessage(this._anchor);\r\n if (loadingMessage) {\r\n return this._result.slice(0).concat([loadingMessage]);\r\n }\r\n }\r\n }\r\n }\r\n return this._result.slice(0);\r\n }\r\n}\r\nlet ModesContentHoverWidget = class ModesContentHoverWidget extends Widget {\r\n constructor(editor, _hoverVisibleKey, instantiationService, _keybindingService) {\r\n super();\r\n this._hoverVisibleKey = _hoverVisibleKey;\r\n this._keybindingService = _keybindingService;\r\n // IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this._participants = [\r\n instantiationService.createInstance(ColorHoverParticipant, editor, this),\r\n instantiationService.createInstance(MarkdownHoverParticipant, editor, this),\r\n instantiationService.createInstance(InlineCompletionsHoverParticipant, editor, this),\r\n instantiationService.createInstance(MarkerHoverParticipant, editor, this),\r\n ];\r\n this._hover = this._register(new HoverWidget());\r\n this._id = ModesContentHoverWidget.ID;\r\n this._editor = editor;\r\n this._isVisible = false;\r\n this._stoleFocus = false;\r\n this._renderDisposable = null;\r\n this.onkeydown(this._hover.containerDomNode, (e) => {\r\n if (e.equals(9 /* Escape */)) {\r\n this.hide();\r\n }\r\n });\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(41 /* fontInfo */)) {\r\n this._updateFont();\r\n }\r\n }));\r\n this._editor.onDidLayoutChange(() => this.layout());\r\n this.layout();\r\n this._editor.addContentWidget(this);\r\n this._showAtPosition = null;\r\n this._showAtRange = null;\r\n this._stoleFocus = false;\r\n this._messages = [];\r\n this._lastAnchor = null;\r\n this._computer = new ModesContentComputer(this._editor, this._participants);\r\n this._highlightDecorations = [];\r\n this._isChangingDecorations = false;\r\n this._shouldFocus = false;\r\n this._colorPicker = null;\r\n this._hoverOperation = new HoverOperation(this._computer, result => this._withResult(result, true), null, result => this._withResult(result, false), this._editor.getOption(51 /* hover */).delay);\r\n this._register(dom.addStandardDisposableListener(this.getDomNode(), dom.EventType.FOCUS, () => {\r\n if (this._colorPicker) {\r\n this.getDomNode().classList.add('colorpicker-hover');\r\n }\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.getDomNode(), dom.EventType.BLUR, () => {\r\n this.getDomNode().classList.remove('colorpicker-hover');\r\n }));\r\n this._register(editor.onDidChangeConfiguration(() => {\r\n this._hoverOperation.setHoverTime(this._editor.getOption(51 /* hover */).delay);\r\n }));\r\n this._register(TokenizationRegistry.onDidChange(() => {\r\n if (this._isVisible && this._lastAnchor && this._messages.length > 0) {\r\n this._hover.contentsDomNode.textContent = '';\r\n this._renderMessages(this._lastAnchor, this._messages);\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._hoverOperation.cancel();\r\n this._editor.removeContentWidget(this);\r\n super.dispose();\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._hover.containerDomNode;\r\n }\r\n _shouldShowAt(mouseEvent) {\r\n const targetType = mouseEvent.target.type;\r\n if (targetType === 6 /* CONTENT_TEXT */) {\r\n return true;\r\n }\r\n if (targetType === 7 /* CONTENT_EMPTY */) {\r\n const epsilon = this._editor.getOption(41 /* fontInfo */).typicalHalfwidthCharacterWidth / 2;\r\n const data = mouseEvent.target.detail;\r\n if (data && !data.isAfterLines && typeof data.horizontalDistanceToText === 'number' && data.horizontalDistanceToText < epsilon) {\r\n // Let hover kick in even when the mouse is technically in the empty area after a line, given the distance is small enough\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n maybeShowAt(mouseEvent) {\r\n var _a;\r\n const anchorCandidates = [];\r\n for (const participant of this._participants) {\r\n if (typeof participant.suggestHoverAnchor === 'function') {\r\n const anchor = participant.suggestHoverAnchor(mouseEvent);\r\n if (anchor) {\r\n anchorCandidates.push(anchor);\r\n }\r\n }\r\n }\r\n if (this._shouldShowAt(mouseEvent) && mouseEvent.target.range) {\r\n // TODO@rebornix. This should be removed if we move Color Picker out of Hover component.\r\n // Check if mouse is hovering on color decorator\r\n const hoverOnColorDecorator = [...((_a = mouseEvent.target.element) === null || _a === void 0 ? void 0 : _a.classList.values()) || []].find(className => className.startsWith('ced-colorBox'))\r\n && mouseEvent.target.range.endColumn - mouseEvent.target.range.startColumn === 1;\r\n const showAtRange = (hoverOnColorDecorator // shift the mouse focus by one as color decorator is a `before` decoration of next character.\r\n ? new Range(mouseEvent.target.range.startLineNumber, mouseEvent.target.range.startColumn + 1, mouseEvent.target.range.endLineNumber, mouseEvent.target.range.endColumn + 1)\r\n : mouseEvent.target.range);\r\n anchorCandidates.push(new HoverRangeAnchor(0, showAtRange));\r\n }\r\n if (anchorCandidates.length === 0) {\r\n return false;\r\n }\r\n anchorCandidates.sort((a, b) => b.priority - a.priority);\r\n this._startShowingAt(anchorCandidates[0], 0 /* Delayed */, false);\r\n return true;\r\n }\r\n _showAt(position, range, focus) {\r\n // Position has changed\r\n this._showAtPosition = position;\r\n this._showAtRange = range;\r\n this._hoverVisibleKey.set(true);\r\n this._isVisible = true;\r\n this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\r\n this._editor.layoutContentWidget(this);\r\n // Simply force a synchronous render on the editor\r\n // such that the widget does not really render with left = '0px'\r\n this._editor.render();\r\n this._stoleFocus = focus;\r\n if (focus) {\r\n this._hover.containerDomNode.focus();\r\n }\r\n }\r\n getPosition() {\r\n if (this._isVisible) {\r\n return {\r\n position: this._showAtPosition,\r\n range: this._showAtRange,\r\n preference: [\r\n 1 /* ABOVE */,\r\n 2 /* BELOW */\r\n ]\r\n };\r\n }\r\n return null;\r\n }\r\n _updateFont() {\r\n const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\r\n codeClasses.forEach(node => this._editor.applyFontInfo(node));\r\n }\r\n _updateContents(node) {\r\n this._hover.contentsDomNode.textContent = '';\r\n this._hover.contentsDomNode.appendChild(node);\r\n this._updateFont();\r\n this._editor.layoutContentWidget(this);\r\n this._hover.onContentsChanged();\r\n }\r\n layout() {\r\n const height = Math.max(this._editor.getLayoutInfo().height / 4, 250);\r\n const { fontSize, lineHeight } = this._editor.getOption(41 /* fontInfo */);\r\n this._hover.contentsDomNode.style.fontSize = `${fontSize}px`;\r\n this._hover.contentsDomNode.style.lineHeight = `${lineHeight}px`;\r\n this._hover.contentsDomNode.style.maxHeight = `${height}px`;\r\n this._hover.contentsDomNode.style.maxWidth = `${Math.max(this._editor.getLayoutInfo().width * 0.66, 500)}px`;\r\n }\r\n onModelDecorationsChanged() {\r\n if (this._isChangingDecorations) {\r\n return;\r\n }\r\n if (this._isVisible) {\r\n // The decorations have changed and the hover is visible,\r\n // we need to recompute the displayed text\r\n this._hoverOperation.cancel();\r\n this._computer.clearResult();\r\n if (!this._colorPicker) { // TODO@Michel ensure that displayed text for other decorations is computed even if color picker is in place\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n }\r\n }\r\n startShowingAtRange(range, mode, focus) {\r\n this._startShowingAt(new HoverRangeAnchor(0, range), mode, focus);\r\n }\r\n _startShowingAt(anchor, mode, focus) {\r\n if (this._lastAnchor && this._lastAnchor.equals(anchor)) {\r\n // We have to show the widget at the exact same range as before, so no work is needed\r\n return;\r\n }\r\n this._hoverOperation.cancel();\r\n if (this._isVisible) {\r\n // The range might have changed, but the hover is visible\r\n // Instead of hiding it completely, filter out messages that are still in the new range and\r\n // kick off a new computation\r\n if (!this._showAtPosition || !this._lastAnchor || !anchor.canAdoptVisibleHover(this._lastAnchor, this._showAtPosition)) {\r\n this.hide();\r\n }\r\n else {\r\n const filteredMessages = this._messages.filter((m) => m.isValidForHoverAnchor(anchor));\r\n if (filteredMessages.length === 0) {\r\n this.hide();\r\n }\r\n else if (filteredMessages.length === this._messages.length) {\r\n // no change\r\n return;\r\n }\r\n else {\r\n this._renderMessages(anchor, filteredMessages);\r\n }\r\n }\r\n }\r\n this._lastAnchor = anchor;\r\n this._computer.setAnchor(anchor);\r\n this._shouldFocus = focus;\r\n this._hoverOperation.start(mode);\r\n }\r\n hide() {\r\n this._lastAnchor = null;\r\n this._hoverOperation.cancel();\r\n if (this._isVisible) {\r\n setTimeout(() => {\r\n // Give commands a chance to see the key\r\n if (!this._isVisible) {\r\n this._hoverVisibleKey.set(false);\r\n }\r\n }, 0);\r\n this._isVisible = false;\r\n this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\r\n this._editor.layoutContentWidget(this);\r\n if (this._stoleFocus) {\r\n this._editor.focus();\r\n }\r\n }\r\n this._isChangingDecorations = true;\r\n this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, []);\r\n this._isChangingDecorations = false;\r\n if (this._renderDisposable) {\r\n this._renderDisposable.dispose();\r\n this._renderDisposable = null;\r\n }\r\n this._colorPicker = null;\r\n }\r\n isColorPickerVisible() {\r\n return !!this._colorPicker;\r\n }\r\n setColorPicker(widget) {\r\n this._colorPicker = widget;\r\n }\r\n onContentsChanged() {\r\n this._hover.onContentsChanged();\r\n }\r\n _withResult(result, complete) {\r\n this._messages = result;\r\n if (this._lastAnchor && this._messages.length > 0) {\r\n this._renderMessages(this._lastAnchor, this._messages);\r\n }\r\n else if (complete) {\r\n this.hide();\r\n }\r\n }\r\n _renderMessages(anchor, messages) {\r\n if (this._renderDisposable) {\r\n this._renderDisposable.dispose();\r\n this._renderDisposable = null;\r\n }\r\n this._colorPicker = null; // TODO: TypeScript thinks this is always null\r\n // update column from which to show\r\n let renderColumn = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n let highlightRange = messages[0].range;\r\n let forceShowAtRange = null;\r\n let fragment = document.createDocumentFragment();\r\n const disposables = new DisposableStore();\r\n const hoverParts = new Map();\r\n for (const msg of messages) {\r\n renderColumn = Math.min(renderColumn, msg.range.startColumn);\r\n highlightRange = Range.plusRange(highlightRange, msg.range);\r\n if (msg.forceShowAtRange) {\r\n forceShowAtRange = msg.range;\r\n }\r\n if (!hoverParts.has(msg.owner)) {\r\n hoverParts.set(msg.owner, []);\r\n }\r\n const dest = hoverParts.get(msg.owner);\r\n dest.push(msg);\r\n }\r\n const statusBar = disposables.add(new EditorHoverStatusBar(this._keybindingService));\r\n for (const [participant, participantHoverParts] of hoverParts) {\r\n disposables.add(participant.renderHoverParts(participantHoverParts, fragment, statusBar));\r\n }\r\n if (statusBar.hasContent) {\r\n fragment.appendChild(statusBar.hoverElement);\r\n }\r\n this._renderDisposable = disposables;\r\n // show\r\n if (fragment.hasChildNodes()) {\r\n if (forceShowAtRange) {\r\n this._showAt(forceShowAtRange.getStartPosition(), forceShowAtRange, this._shouldFocus);\r\n }\r\n else {\r\n this._showAt(new Position(anchor.range.startLineNumber, renderColumn), highlightRange, this._shouldFocus);\r\n }\r\n this._updateContents(fragment);\r\n }\r\n if (this._colorPicker) {\r\n this._colorPicker.layout();\r\n }\r\n this._isChangingDecorations = true;\r\n this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, highlightRange ? [{\r\n range: highlightRange,\r\n options: ModesContentHoverWidget._DECORATION_OPTIONS\r\n }] : []);\r\n this._isChangingDecorations = false;\r\n }\r\n};\r\nModesContentHoverWidget.ID = 'editor.contrib.modesContentHoverWidget';\r\nModesContentHoverWidget._DECORATION_OPTIONS = ModelDecorationOptions.register({\r\n description: 'content-hover-highlight',\r\n className: 'hoverHighlight'\r\n});\r\nModesContentHoverWidget = __decorate([\r\n __param(2, IInstantiationService),\r\n __param(3, IKeybindingService)\r\n], ModesContentHoverWidget);\r\nexport { ModesContentHoverWidget };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nexport class GlyphHoverWidget extends Widget {\r\n constructor(id, editor) {\r\n super();\r\n this._id = id;\r\n this._editor = editor;\r\n this._isVisible = false;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'monaco-hover hidden';\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._domNode.setAttribute('role', 'tooltip');\r\n this._showAtLineNumber = -1;\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(41 /* fontInfo */)) {\r\n this.updateFont();\r\n }\r\n }));\r\n this._editor.addOverlayWidget(this);\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n set isVisible(value) {\r\n this._isVisible = value;\r\n this._domNode.classList.toggle('hidden', !this._isVisible);\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n showAt(lineNumber) {\r\n this._showAtLineNumber = lineNumber;\r\n if (!this.isVisible) {\r\n this.isVisible = true;\r\n }\r\n const editorLayout = this._editor.getLayoutInfo();\r\n const topForLineNumber = this._editor.getTopForLineNumber(this._showAtLineNumber);\r\n const editorScrollTop = this._editor.getScrollTop();\r\n const lineHeight = this._editor.getOption(57 /* lineHeight */);\r\n const nodeHeight = this._domNode.clientHeight;\r\n const top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\r\n this._domNode.style.left = `${editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth}px`;\r\n this._domNode.style.top = `${Math.max(Math.round(top), 0)}px`;\r\n }\r\n hide() {\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n this.isVisible = false;\r\n }\r\n getPosition() {\r\n return null;\r\n }\r\n dispose() {\r\n this._editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n updateFont() {\r\n const codeTags = Array.prototype.slice.call(this._domNode.getElementsByTagName('code'));\r\n const codeClasses = Array.prototype.slice.call(this._domNode.getElementsByClassName('code'));\r\n [...codeTags, ...codeClasses].forEach(node => this._editor.applyFontInfo(node));\r\n }\r\n updateContents(node) {\r\n this._domNode.textContent = '';\r\n this._domNode.appendChild(node);\r\n this.updateFont();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { $ } from '../../../base/browser/dom.js';\r\nimport { isEmptyMarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { HoverOperation } from './hoverOperation.js';\r\nimport { GlyphHoverWidget } from './hoverWidgets.js';\r\nimport { MarkdownRenderer } from '../../browser/core/markdownRenderer.js';\r\nimport { NullOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { asArray } from '../../../base/common/arrays.js';\r\nclass MarginComputer {\r\n constructor(editor) {\r\n this._editor = editor;\r\n this._lineNumber = -1;\r\n this._result = [];\r\n }\r\n setLineNumber(lineNumber) {\r\n this._lineNumber = lineNumber;\r\n this._result = [];\r\n }\r\n clearResult() {\r\n this._result = [];\r\n }\r\n computeSync() {\r\n const toHoverMessage = (contents) => {\r\n return {\r\n value: contents\r\n };\r\n };\r\n const lineDecorations = this._editor.getLineDecorations(this._lineNumber);\r\n const result = [];\r\n if (!lineDecorations) {\r\n return result;\r\n }\r\n for (const d of lineDecorations) {\r\n if (!d.options.glyphMarginClassName) {\r\n continue;\r\n }\r\n const hoverMessage = d.options.glyphMarginHoverMessage;\r\n if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\r\n continue;\r\n }\r\n result.push(...asArray(hoverMessage).map(toHoverMessage));\r\n }\r\n return result;\r\n }\r\n onResult(result, isFromSynchronousComputation) {\r\n this._result = this._result.concat(result);\r\n }\r\n getResult() {\r\n return this._result;\r\n }\r\n getResultWithLoadingMessage() {\r\n return this.getResult();\r\n }\r\n}\r\nexport class ModesGlyphHoverWidget extends GlyphHoverWidget {\r\n constructor(editor, modeService, openerService = NullOpenerService) {\r\n super(ModesGlyphHoverWidget.ID, editor);\r\n this._renderDisposeables = this._register(new DisposableStore());\r\n this._messages = [];\r\n this._lastLineNumber = -1;\r\n this._markdownRenderer = this._register(new MarkdownRenderer({ editor: this._editor }, modeService, openerService));\r\n this._computer = new MarginComputer(this._editor);\r\n this._hoverOperation = new HoverOperation(this._computer, (result) => this._withResult(result), undefined, (result) => this._withResult(result), 300);\r\n }\r\n dispose() {\r\n this._hoverOperation.cancel();\r\n super.dispose();\r\n }\r\n onModelDecorationsChanged() {\r\n if (this.isVisible) {\r\n // The decorations have changed and the hover is visible,\r\n // we need to recompute the displayed text\r\n this._hoverOperation.cancel();\r\n this._computer.clearResult();\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n }\r\n startShowingAt(lineNumber) {\r\n if (this._lastLineNumber === lineNumber) {\r\n // We have to show the widget at the exact same line number as before, so no work is needed\r\n return;\r\n }\r\n this._hoverOperation.cancel();\r\n this.hide();\r\n this._lastLineNumber = lineNumber;\r\n this._computer.setLineNumber(lineNumber);\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n hide() {\r\n this._lastLineNumber = -1;\r\n this._hoverOperation.cancel();\r\n super.hide();\r\n }\r\n _withResult(result) {\r\n this._messages = result;\r\n if (this._messages.length > 0) {\r\n this._renderMessages(this._lastLineNumber, this._messages);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n _renderMessages(lineNumber, messages) {\r\n this._renderDisposeables.clear();\r\n const fragment = document.createDocumentFragment();\r\n for (const msg of messages) {\r\n const renderedContents = this._markdownRenderer.render(msg.value);\r\n this._renderDisposeables.add(renderedContents);\r\n fragment.appendChild($('div.hover-row', undefined, renderedContents.element));\r\n }\r\n this.updateContents(fragment);\r\n this.showAt(lineNumber);\r\n }\r\n}\r\nModesGlyphHoverWidget.ID = 'editor.contrib.modesGlyphHoverWidget';\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./goToDefinitionAtPosition.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./goToDefinitionAtPosition.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { localize } from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { basename, extUri } from '../../../base/common/resources.js';\r\nimport { dispose } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { defaultGenerator } from '../../../base/common/idGenerator.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nexport class OneReference {\r\n constructor(isProviderFirst, parent, link, _rangeCallback) {\r\n this.isProviderFirst = isProviderFirst;\r\n this.parent = parent;\r\n this.link = link;\r\n this._rangeCallback = _rangeCallback;\r\n this.id = defaultGenerator.nextId();\r\n }\r\n get uri() {\r\n return this.link.uri;\r\n }\r\n get range() {\r\n var _a, _b;\r\n return (_b = (_a = this._range) !== null && _a !== void 0 ? _a : this.link.targetSelectionRange) !== null && _b !== void 0 ? _b : this.link.range;\r\n }\r\n set range(value) {\r\n this._range = value;\r\n this._rangeCallback(this);\r\n }\r\n get ariaMessage() {\r\n var _a;\r\n const preview = (_a = this.parent.getPreview(this)) === null || _a === void 0 ? void 0 : _a.preview(this.range);\r\n if (!preview) {\r\n return localize('aria.oneReference', \"symbol in {0} on line {1} at column {2}\", basename(this.uri), this.range.startLineNumber, this.range.startColumn);\r\n }\r\n else {\r\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);\r\n }\r\n }\r\n}\r\nexport class FilePreview {\r\n constructor(_modelReference) {\r\n this._modelReference = _modelReference;\r\n }\r\n dispose() {\r\n this._modelReference.dispose();\r\n }\r\n preview(range, n = 8) {\r\n const model = this._modelReference.object.textEditorModel;\r\n if (!model) {\r\n return undefined;\r\n }\r\n const { startLineNumber, startColumn, endLineNumber, endColumn } = range;\r\n const word = model.getWordUntilPosition({ lineNumber: startLineNumber, column: startColumn - n });\r\n const beforeRange = new Range(startLineNumber, word.startColumn, startLineNumber, startColumn);\r\n const afterRange = new Range(endLineNumber, endColumn, endLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n const before = model.getValueInRange(beforeRange).replace(/^\\s+/, '');\r\n const inside = model.getValueInRange(range);\r\n const after = model.getValueInRange(afterRange).replace(/\\s+$/, '');\r\n return {\r\n value: before + inside + after,\r\n highlight: { start: before.length, end: before.length + inside.length }\r\n };\r\n }\r\n}\r\nexport class FileReferences {\r\n constructor(parent, uri) {\r\n this.parent = parent;\r\n this.uri = uri;\r\n this.children = [];\r\n this._previews = new ResourceMap();\r\n }\r\n dispose() {\r\n dispose(this._previews.values());\r\n this._previews.clear();\r\n }\r\n getPreview(child) {\r\n return this._previews.get(child.uri);\r\n }\r\n get ariaMessage() {\r\n const len = this.children.length;\r\n if (len === 1) {\r\n return localize('aria.fileReferences.1', \"1 symbol in {0}, full path {1}\", basename(this.uri), this.uri.fsPath);\r\n }\r\n else {\r\n return localize('aria.fileReferences.N', \"{0} symbols in {1}, full path {2}\", len, basename(this.uri), this.uri.fsPath);\r\n }\r\n }\r\n resolve(textModelResolverService) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._previews.size !== 0) {\r\n return this;\r\n }\r\n for (let child of this.children) {\r\n if (this._previews.has(child.uri)) {\r\n continue;\r\n }\r\n try {\r\n const ref = yield textModelResolverService.createModelReference(child.uri);\r\n this._previews.set(child.uri, new FilePreview(ref));\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n }\r\n return this;\r\n });\r\n }\r\n}\r\nexport class ReferencesModel {\r\n constructor(links, title) {\r\n this.groups = [];\r\n this.references = [];\r\n this._onDidChangeReferenceRange = new Emitter();\r\n this.onDidChangeReferenceRange = this._onDidChangeReferenceRange.event;\r\n this._links = links;\r\n this._title = title;\r\n // grouping and sorting\r\n const [providersFirst] = links;\r\n links.sort(ReferencesModel._compareReferences);\r\n let current;\r\n for (let link of links) {\r\n if (!current || !extUri.isEqual(current.uri, link.uri, true)) {\r\n // new group\r\n current = new FileReferences(this, link.uri);\r\n this.groups.push(current);\r\n }\r\n // append, check for equality first!\r\n if (current.children.length === 0 || ReferencesModel._compareReferences(link, current.children[current.children.length - 1]) !== 0) {\r\n const oneRef = new OneReference(providersFirst === link, current, link, ref => this._onDidChangeReferenceRange.fire(ref));\r\n this.references.push(oneRef);\r\n current.children.push(oneRef);\r\n }\r\n }\r\n }\r\n dispose() {\r\n dispose(this.groups);\r\n this._onDidChangeReferenceRange.dispose();\r\n this.groups.length = 0;\r\n }\r\n clone() {\r\n return new ReferencesModel(this._links, this._title);\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get isEmpty() {\r\n return this.groups.length === 0;\r\n }\r\n get ariaMessage() {\r\n if (this.isEmpty) {\r\n return localize('aria.result.0', \"No results found\");\r\n }\r\n else if (this.references.length === 1) {\r\n return localize('aria.result.1', \"Found 1 symbol in {0}\", this.references[0].uri.fsPath);\r\n }\r\n else if (this.groups.length === 1) {\r\n return localize('aria.result.n1', \"Found {0} symbols in {1}\", this.references.length, this.groups[0].uri.fsPath);\r\n }\r\n else {\r\n return localize('aria.result.nm', \"Found {0} symbols in {1} files\", this.references.length, this.groups.length);\r\n }\r\n }\r\n nextOrPreviousReference(reference, next) {\r\n let { parent } = reference;\r\n let idx = parent.children.indexOf(reference);\r\n let childCount = parent.children.length;\r\n let groupCount = parent.parent.groups.length;\r\n if (groupCount === 1 || next && idx + 1 < childCount || !next && idx > 0) {\r\n // cycling within one file\r\n if (next) {\r\n idx = (idx + 1) % childCount;\r\n }\r\n else {\r\n idx = (idx + childCount - 1) % childCount;\r\n }\r\n return parent.children[idx];\r\n }\r\n idx = parent.parent.groups.indexOf(parent);\r\n if (next) {\r\n idx = (idx + 1) % groupCount;\r\n return parent.parent.groups[idx].children[0];\r\n }\r\n else {\r\n idx = (idx + groupCount - 1) % groupCount;\r\n return parent.parent.groups[idx].children[parent.parent.groups[idx].children.length - 1];\r\n }\r\n }\r\n nearestReference(resource, position) {\r\n const nearest = this.references.map((ref, idx) => {\r\n return {\r\n idx,\r\n prefixLen: strings.commonPrefixLength(ref.uri.toString(), resource.toString()),\r\n offsetDist: Math.abs(ref.range.startLineNumber - position.lineNumber) * 100 + Math.abs(ref.range.startColumn - position.column)\r\n };\r\n }).sort((a, b) => {\r\n if (a.prefixLen > b.prefixLen) {\r\n return -1;\r\n }\r\n else if (a.prefixLen < b.prefixLen) {\r\n return 1;\r\n }\r\n else if (a.offsetDist < b.offsetDist) {\r\n return -1;\r\n }\r\n else if (a.offsetDist > b.offsetDist) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n })[0];\r\n if (nearest) {\r\n return this.references[nearest.idx];\r\n }\r\n return undefined;\r\n }\r\n referenceAt(resource, position) {\r\n for (const ref of this.references) {\r\n if (ref.uri.toString() === resource.toString()) {\r\n if (Range.containsPosition(ref.range, position)) {\r\n return ref;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n firstReference() {\r\n for (const ref of this.references) {\r\n if (ref.isProviderFirst) {\r\n return ref;\r\n }\r\n }\r\n return this.references[0];\r\n }\r\n static _compareReferences(a, b) {\r\n return extUri.compare(a.uri, b.uri) || Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry, ReferenceProviderRegistry } from '../../common/modes.js';\r\nimport { ReferencesModel } from './referencesModel.js';\r\nfunction getLocationLinks(model, position, registry, provide) {\r\n const provider = registry.ordered(model);\r\n // get results\r\n const promises = provider.map((provider) => {\r\n return Promise.resolve(provide(provider, model, position)).then(undefined, err => {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n });\r\n });\r\n return Promise.all(promises).then(values => {\r\n const result = [];\r\n for (let value of values) {\r\n if (Array.isArray(value)) {\r\n result.push(...value);\r\n }\r\n else if (value) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\nexport function getDefinitionsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, DefinitionProviderRegistry, (provider, model, position) => {\r\n return provider.provideDefinition(model, position, token);\r\n });\r\n}\r\nexport function getDeclarationsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, DeclarationProviderRegistry, (provider, model, position) => {\r\n return provider.provideDeclaration(model, position, token);\r\n });\r\n}\r\nexport function getImplementationsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, ImplementationProviderRegistry, (provider, model, position) => {\r\n return provider.provideImplementation(model, position, token);\r\n });\r\n}\r\nexport function getTypeDefinitionsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, TypeDefinitionProviderRegistry, (provider, model, position) => {\r\n return provider.provideTypeDefinition(model, position, token);\r\n });\r\n}\r\nexport function getReferencesAtPosition(model, position, compact, token) {\r\n return getLocationLinks(model, position, ReferenceProviderRegistry, (provider, model, position) => __awaiter(this, void 0, void 0, function* () {\r\n const result = yield provider.provideReferences(model, position, { includeDeclaration: true }, token);\r\n if (!compact || !result || result.length !== 2) {\r\n return result;\r\n }\r\n const resultWithoutDeclaration = yield provider.provideReferences(model, position, { includeDeclaration: false }, token);\r\n if (resultWithoutDeclaration && resultWithoutDeclaration.length === 1) {\r\n return resultWithoutDeclaration;\r\n }\r\n return result;\r\n }));\r\n}\r\n// -- API commands ----\r\nfunction _sortedAndDeduped(callback) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const rawLinks = yield callback();\r\n const model = new ReferencesModel(rawLinks, '');\r\n const modelLinks = model.references.map(ref => ref.link);\r\n model.dispose();\r\n return modelLinks;\r\n });\r\n}\r\nregisterModelAndPositionCommand('_executeDefinitionProvider', (model, position) => _sortedAndDeduped(() => getDefinitionsAtPosition(model, position, CancellationToken.None)));\r\nregisterModelAndPositionCommand('_executeDeclarationProvider', (model, position) => _sortedAndDeduped(() => getDeclarationsAtPosition(model, position, CancellationToken.None)));\r\nregisterModelAndPositionCommand('_executeImplementationProvider', (model, position) => _sortedAndDeduped(() => getImplementationsAtPosition(model, position, CancellationToken.None)));\r\nregisterModelAndPositionCommand('_executeTypeDefinitionProvider', (model, position) => _sortedAndDeduped(() => getTypeDefinitionsAtPosition(model, position, CancellationToken.None)));\r\nregisterModelAndPositionCommand('_executeReferenceProvider', (model, position) => _sortedAndDeduped(() => getReferencesAtPosition(model, position, false, CancellationToken.None)));\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./referencesWidget.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./referencesWidget.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ReferencesModel, FileReferences, OneReference } from '../referencesModel.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\r\nimport { CountBadge } from '../../../../base/browser/ui/countBadge/countBadge.js';\r\nimport { ILabelService } from '../../../../platform/label/common/label.js';\r\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\r\nimport { attachBadgeStyler } from '../../../../platform/theme/common/styler.js';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { getBaseLabel } from '../../../../base/common/labels.js';\r\nimport { dirname, basename } from '../../../../base/common/resources.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nimport { FuzzyScore, createMatches } from '../../../../base/common/filters.js';\r\nimport { HighlightedLabel } from '../../../../base/browser/ui/highlightedlabel/highlightedLabel.js';\r\nlet DataSource = class DataSource {\r\n constructor(_resolverService) {\r\n this._resolverService = _resolverService;\r\n }\r\n hasChildren(element) {\r\n if (element instanceof ReferencesModel) {\r\n return true;\r\n }\r\n if (element instanceof FileReferences) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getChildren(element) {\r\n if (element instanceof ReferencesModel) {\r\n return element.groups;\r\n }\r\n if (element instanceof FileReferences) {\r\n return element.resolve(this._resolverService).then(val => {\r\n // if (element.failure) {\r\n // \t// refresh the element on failure so that\r\n // \t// we can update its rendering\r\n // \treturn tree.refresh(element).then(() => val.children);\r\n // }\r\n return val.children;\r\n });\r\n }\r\n throw new Error('bad tree');\r\n }\r\n};\r\nDataSource = __decorate([\r\n __param(0, ITextModelService)\r\n], DataSource);\r\nexport { DataSource };\r\n//#endregion\r\nexport class Delegate {\r\n getHeight() {\r\n return 23;\r\n }\r\n getTemplateId(element) {\r\n if (element instanceof FileReferences) {\r\n return FileReferencesRenderer.id;\r\n }\r\n else {\r\n return OneReferenceRenderer.id;\r\n }\r\n }\r\n}\r\nlet StringRepresentationProvider = class StringRepresentationProvider {\r\n constructor(_keybindingService) {\r\n this._keybindingService = _keybindingService;\r\n }\r\n getKeyboardNavigationLabel(element) {\r\n var _a;\r\n if (element instanceof OneReference) {\r\n const parts = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\r\n if (parts) {\r\n return parts.value;\r\n }\r\n }\r\n // FileReferences or unresolved OneReference\r\n return basename(element.uri);\r\n }\r\n};\r\nStringRepresentationProvider = __decorate([\r\n __param(0, IKeybindingService)\r\n], StringRepresentationProvider);\r\nexport { StringRepresentationProvider };\r\nexport class IdentityProvider {\r\n getId(element) {\r\n return element instanceof OneReference ? element.id : element.uri;\r\n }\r\n}\r\n//#region render: File\r\nlet FileReferencesTemplate = class FileReferencesTemplate extends Disposable {\r\n constructor(container, _uriLabel, themeService) {\r\n super();\r\n this._uriLabel = _uriLabel;\r\n const parent = document.createElement('div');\r\n parent.classList.add('reference-file');\r\n this.file = this._register(new IconLabel(parent, { supportHighlights: true }));\r\n this.badge = new CountBadge(dom.append(parent, dom.$('.count')));\r\n this._register(attachBadgeStyler(this.badge, themeService));\r\n container.appendChild(parent);\r\n }\r\n set(element, matches) {\r\n let parent = dirname(element.uri);\r\n this.file.setLabel(getBaseLabel(element.uri), this._uriLabel.getUriLabel(parent, { relative: true }), { title: this._uriLabel.getUriLabel(element.uri), matches });\r\n const len = element.children.length;\r\n this.badge.setCount(len);\r\n if (len > 1) {\r\n this.badge.setTitleFormat(localize('referencesCount', \"{0} references\", len));\r\n }\r\n else {\r\n this.badge.setTitleFormat(localize('referenceCount', \"{0} reference\", len));\r\n }\r\n }\r\n};\r\nFileReferencesTemplate = __decorate([\r\n __param(1, ILabelService),\r\n __param(2, IThemeService)\r\n], FileReferencesTemplate);\r\nlet FileReferencesRenderer = class FileReferencesRenderer {\r\n constructor(_instantiationService) {\r\n this._instantiationService = _instantiationService;\r\n this.templateId = FileReferencesRenderer.id;\r\n }\r\n renderTemplate(container) {\r\n return this._instantiationService.createInstance(FileReferencesTemplate, container);\r\n }\r\n renderElement(node, index, template) {\r\n template.set(node.element, createMatches(node.filterData));\r\n }\r\n disposeTemplate(templateData) {\r\n templateData.dispose();\r\n }\r\n};\r\nFileReferencesRenderer.id = 'FileReferencesRenderer';\r\nFileReferencesRenderer = __decorate([\r\n __param(0, IInstantiationService)\r\n], FileReferencesRenderer);\r\nexport { FileReferencesRenderer };\r\n//#endregion\r\n//#region render: Reference\r\nclass OneReferenceTemplate {\r\n constructor(container) {\r\n this.label = new HighlightedLabel(container, false);\r\n }\r\n set(element, score) {\r\n var _a;\r\n const preview = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\r\n if (!preview || !preview.value) {\r\n // this means we FAILED to resolve the document or the value is the empty string\r\n this.label.set(`${basename(element.uri)}:${element.range.startLineNumber + 1}:${element.range.startColumn + 1}`);\r\n }\r\n else {\r\n // render search match as highlight unless\r\n // we have score, then render the score\r\n const { value, highlight } = preview;\r\n if (score && !FuzzyScore.isDefault(score)) {\r\n this.label.element.classList.toggle('referenceMatch', false);\r\n this.label.set(value, createMatches(score));\r\n }\r\n else {\r\n this.label.element.classList.toggle('referenceMatch', true);\r\n this.label.set(value, [highlight]);\r\n }\r\n }\r\n }\r\n}\r\nexport class OneReferenceRenderer {\r\n constructor() {\r\n this.templateId = OneReferenceRenderer.id;\r\n }\r\n renderTemplate(container) {\r\n return new OneReferenceTemplate(container);\r\n }\r\n renderElement(node, index, templateData) {\r\n templateData.set(node.element, node.filterData);\r\n }\r\n disposeTemplate() {\r\n }\r\n}\r\nOneReferenceRenderer.id = 'OneReferenceRenderer';\r\n//#endregion\r\nexport class AccessibilityProvider {\r\n getWidgetAriaLabel() {\r\n return localize('treeAriaLabel', \"References\");\r\n }\r\n getAriaLabel(element) {\r\n return element.ariaMessage;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './referencesWidget.css';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { Color } from '../../../../base/common/color.js';\r\nimport { Emitter, Event } from '../../../../base/common/event.js';\r\nimport { dispose, DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { Schemas } from '../../../../base/common/network.js';\r\nimport { basenameOrAuthority, dirname } from '../../../../base/common/resources.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/embeddedCodeEditorWidget.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { ModelDecorationOptions, TextModel } from '../../../common/model/textModel.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { AccessibilityProvider, DataSource, Delegate, FileReferencesRenderer, OneReferenceRenderer, StringRepresentationProvider, IdentityProvider } from './referencesTree.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { ILabelService } from '../../../../platform/label/common/label.js';\r\nimport { WorkbenchAsyncDataTree } from '../../../../platform/list/browser/listService.js';\r\nimport { activeContrastBorder } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport * as peekView from '../../peekView/peekView.js';\r\nimport { FileReferences, OneReference } from '../referencesModel.js';\r\nimport { SplitView, Sizing } from '../../../../base/browser/ui/splitview/splitview.js';\r\nimport { IUndoRedoService } from '../../../../platform/undoRedo/common/undoRedo.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nclass DecorationsManager {\r\n constructor(_editor, _model) {\r\n this._editor = _editor;\r\n this._model = _model;\r\n this._decorations = new Map();\r\n this._decorationIgnoreSet = new Set();\r\n this._callOnDispose = new DisposableStore();\r\n this._callOnModelChange = new DisposableStore();\r\n this._callOnDispose.add(this._editor.onDidChangeModel(() => this._onModelChanged()));\r\n this._onModelChanged();\r\n }\r\n dispose() {\r\n this._callOnModelChange.dispose();\r\n this._callOnDispose.dispose();\r\n this.removeDecorations();\r\n }\r\n _onModelChanged() {\r\n this._callOnModelChange.clear();\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n for (let ref of this._model.references) {\r\n if (ref.uri.toString() === model.uri.toString()) {\r\n this._addDecorations(ref.parent);\r\n return;\r\n }\r\n }\r\n }\r\n _addDecorations(reference) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(() => this._onDecorationChanged()));\r\n const newDecorations = [];\r\n const newDecorationsActualIndex = [];\r\n for (let i = 0, len = reference.children.length; i < len; i++) {\r\n let oneReference = reference.children[i];\r\n if (this._decorationIgnoreSet.has(oneReference.id)) {\r\n continue;\r\n }\r\n if (oneReference.uri.toString() !== this._editor.getModel().uri.toString()) {\r\n continue;\r\n }\r\n newDecorations.push({\r\n range: oneReference.range,\r\n options: DecorationsManager.DecorationOptions\r\n });\r\n newDecorationsActualIndex.push(i);\r\n }\r\n const decorations = this._editor.deltaDecorations([], newDecorations);\r\n for (let i = 0; i < decorations.length; i++) {\r\n this._decorations.set(decorations[i], reference.children[newDecorationsActualIndex[i]]);\r\n }\r\n }\r\n _onDecorationChanged() {\r\n const toRemove = [];\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n for (let [decorationId, reference] of this._decorations) {\r\n const newRange = model.getDecorationRange(decorationId);\r\n if (!newRange) {\r\n continue;\r\n }\r\n let ignore = false;\r\n if (Range.equalsRange(newRange, reference.range)) {\r\n continue;\r\n }\r\n if (Range.spansMultipleLines(newRange)) {\r\n ignore = true;\r\n }\r\n else {\r\n const lineLength = reference.range.endColumn - reference.range.startColumn;\r\n const newLineLength = newRange.endColumn - newRange.startColumn;\r\n if (lineLength !== newLineLength) {\r\n ignore = true;\r\n }\r\n }\r\n if (ignore) {\r\n this._decorationIgnoreSet.add(reference.id);\r\n toRemove.push(decorationId);\r\n }\r\n else {\r\n reference.range = newRange;\r\n }\r\n }\r\n for (let i = 0, len = toRemove.length; i < len; i++) {\r\n this._decorations.delete(toRemove[i]);\r\n }\r\n this._editor.deltaDecorations(toRemove, []);\r\n }\r\n removeDecorations() {\r\n this._editor.deltaDecorations([...this._decorations.keys()], []);\r\n this._decorations.clear();\r\n }\r\n}\r\nDecorationsManager.DecorationOptions = ModelDecorationOptions.register({\r\n description: 'reference-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'reference-decoration'\r\n});\r\nexport class LayoutData {\r\n constructor() {\r\n this.ratio = 0.7;\r\n this.heightInLines = 18;\r\n }\r\n static fromJSON(raw) {\r\n let ratio;\r\n let heightInLines;\r\n try {\r\n const data = JSON.parse(raw);\r\n ratio = data.ratio;\r\n heightInLines = data.heightInLines;\r\n }\r\n catch (_a) {\r\n //\r\n }\r\n return {\r\n ratio: ratio || 0.7,\r\n heightInLines: heightInLines || 18\r\n };\r\n }\r\n}\r\nclass ReferencesTree extends WorkbenchAsyncDataTree {\r\n}\r\n/**\r\n * ZoneWidget that is shown inside the editor\r\n */\r\nlet ReferenceWidget = class ReferenceWidget extends peekView.PeekViewWidget {\r\n constructor(editor, _defaultTreeKeyboardSupport, layoutData, themeService, _textModelResolverService, _instantiationService, _peekViewService, _uriLabel, _undoRedoService, _keybindingService) {\r\n super(editor, { showFrame: false, showArrow: true, isResizeable: true, isAccessible: true }, _instantiationService);\r\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\r\n this.layoutData = layoutData;\r\n this._textModelResolverService = _textModelResolverService;\r\n this._instantiationService = _instantiationService;\r\n this._peekViewService = _peekViewService;\r\n this._uriLabel = _uriLabel;\r\n this._undoRedoService = _undoRedoService;\r\n this._keybindingService = _keybindingService;\r\n this._disposeOnNewModel = new DisposableStore();\r\n this._callOnDispose = new DisposableStore();\r\n this._onDidSelectReference = new Emitter();\r\n this.onDidSelectReference = this._onDidSelectReference.event;\r\n this._dim = new dom.Dimension(0, 0);\r\n this._applyTheme(themeService.getColorTheme());\r\n this._callOnDispose.add(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this._peekViewService.addExclusiveWidget(editor, this);\r\n this.create();\r\n }\r\n dispose() {\r\n this.setModel(undefined);\r\n this._callOnDispose.dispose();\r\n this._disposeOnNewModel.dispose();\r\n dispose(this._preview);\r\n dispose(this._previewNotAvailableMessage);\r\n dispose(this._tree);\r\n dispose(this._previewModelReference);\r\n this._splitView.dispose();\r\n super.dispose();\r\n }\r\n _applyTheme(theme) {\r\n const borderColor = theme.getColor(peekView.peekViewBorder) || Color.transparent;\r\n this.style({\r\n arrowColor: borderColor,\r\n frameColor: borderColor,\r\n headerBackgroundColor: theme.getColor(peekView.peekViewTitleBackground) || Color.transparent,\r\n primaryHeadingColor: theme.getColor(peekView.peekViewTitleForeground),\r\n secondaryHeadingColor: theme.getColor(peekView.peekViewTitleInfoForeground)\r\n });\r\n }\r\n show(where) {\r\n this.editor.revealRangeInCenterIfOutsideViewport(where, 0 /* Smooth */);\r\n super.show(where, this.layoutData.heightInLines || 18);\r\n }\r\n focusOnReferenceTree() {\r\n this._tree.domFocus();\r\n }\r\n focusOnPreviewEditor() {\r\n this._preview.focus();\r\n }\r\n isPreviewEditorFocused() {\r\n return this._preview.hasTextFocus();\r\n }\r\n _onTitleClick(e) {\r\n if (this._preview && this._preview.getModel()) {\r\n this._onDidSelectReference.fire({\r\n element: this._getFocusedReference(),\r\n kind: e.ctrlKey || e.metaKey || e.altKey ? 'side' : 'open',\r\n source: 'title'\r\n });\r\n }\r\n }\r\n _fillBody(containerElement) {\r\n this.setCssClass('reference-zone-widget');\r\n // message pane\r\n this._messageContainer = dom.append(containerElement, dom.$('div.messages'));\r\n dom.hide(this._messageContainer);\r\n this._splitView = new SplitView(containerElement, { orientation: 1 /* HORIZONTAL */ });\r\n // editor\r\n this._previewContainer = dom.append(containerElement, dom.$('div.preview.inline'));\r\n let options = {\r\n scrollBeyondLastLine: false,\r\n scrollbar: {\r\n verticalScrollbarSize: 14,\r\n horizontal: 'auto',\r\n useShadows: true,\r\n verticalHasArrows: false,\r\n horizontalHasArrows: false,\r\n alwaysConsumeMouseWheel: false\r\n },\r\n overviewRulerLanes: 2,\r\n fixedOverflowWidgets: true,\r\n minimap: {\r\n enabled: false\r\n }\r\n };\r\n this._preview = this._instantiationService.createInstance(EmbeddedCodeEditorWidget, this._previewContainer, options, this.editor);\r\n dom.hide(this._previewContainer);\r\n this._previewNotAvailableMessage = new TextModel(nls.localize('missingPreviewMessage', \"no preview available\"), TextModel.DEFAULT_CREATION_OPTIONS, null, null, this._undoRedoService);\r\n // tree\r\n this._treeContainer = dom.append(containerElement, dom.$('div.ref-tree.inline'));\r\n const treeOptions = {\r\n keyboardSupport: this._defaultTreeKeyboardSupport,\r\n accessibilityProvider: new AccessibilityProvider(),\r\n keyboardNavigationLabelProvider: this._instantiationService.createInstance(StringRepresentationProvider),\r\n identityProvider: new IdentityProvider(),\r\n openOnSingleClick: true,\r\n selectionNavigation: true,\r\n overrideStyles: {\r\n listBackground: peekView.peekViewResultsBackground\r\n }\r\n };\r\n if (this._defaultTreeKeyboardSupport) {\r\n // the tree will consume `Escape` and prevent the widget from closing\r\n this._callOnDispose.add(dom.addStandardDisposableListener(this._treeContainer, 'keydown', (e) => {\r\n if (e.equals(9 /* Escape */)) {\r\n this._keybindingService.dispatchEvent(e, e.target);\r\n e.stopPropagation();\r\n }\r\n }, true));\r\n }\r\n this._tree = this._instantiationService.createInstance(ReferencesTree, 'ReferencesWidget', this._treeContainer, new Delegate(), [\r\n this._instantiationService.createInstance(FileReferencesRenderer),\r\n this._instantiationService.createInstance(OneReferenceRenderer),\r\n ], this._instantiationService.createInstance(DataSource), treeOptions);\r\n // split stuff\r\n this._splitView.addView({\r\n onDidChange: Event.None,\r\n element: this._previewContainer,\r\n minimumSize: 200,\r\n maximumSize: Number.MAX_VALUE,\r\n layout: (width) => {\r\n this._preview.layout({ height: this._dim.height, width });\r\n }\r\n }, Sizing.Distribute);\r\n this._splitView.addView({\r\n onDidChange: Event.None,\r\n element: this._treeContainer,\r\n minimumSize: 100,\r\n maximumSize: Number.MAX_VALUE,\r\n layout: (width) => {\r\n this._treeContainer.style.height = `${this._dim.height}px`;\r\n this._treeContainer.style.width = `${width}px`;\r\n this._tree.layout(this._dim.height, width);\r\n }\r\n }, Sizing.Distribute);\r\n this._disposables.add(this._splitView.onDidSashChange(() => {\r\n if (this._dim.width) {\r\n this.layoutData.ratio = this._splitView.getViewSize(0) / this._dim.width;\r\n }\r\n }, undefined));\r\n // listen on selection and focus\r\n let onEvent = (element, kind) => {\r\n if (element instanceof OneReference) {\r\n if (kind === 'show') {\r\n this._revealReference(element, false);\r\n }\r\n this._onDidSelectReference.fire({ element, kind, source: 'tree' });\r\n }\r\n };\r\n this._tree.onDidOpen(e => {\r\n if (e.sideBySide) {\r\n onEvent(e.element, 'side');\r\n }\r\n else if (e.editorOptions.pinned) {\r\n onEvent(e.element, 'goto');\r\n }\r\n else {\r\n onEvent(e.element, 'show');\r\n }\r\n });\r\n dom.hide(this._treeContainer);\r\n }\r\n _onWidth(width) {\r\n if (this._dim) {\r\n this._doLayoutBody(this._dim.height, width);\r\n }\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n super._doLayoutBody(heightInPixel, widthInPixel);\r\n this._dim = new dom.Dimension(widthInPixel, heightInPixel);\r\n this.layoutData.heightInLines = this._viewZone ? this._viewZone.heightInLines : this.layoutData.heightInLines;\r\n this._splitView.layout(widthInPixel);\r\n this._splitView.resizeView(0, widthInPixel * this.layoutData.ratio);\r\n }\r\n setSelection(selection) {\r\n return this._revealReference(selection, true).then(() => {\r\n if (!this._model) {\r\n // disposed\r\n return;\r\n }\r\n // show in tree\r\n this._tree.setSelection([selection]);\r\n this._tree.setFocus([selection]);\r\n });\r\n }\r\n setModel(newModel) {\r\n // clean up\r\n this._disposeOnNewModel.clear();\r\n this._model = newModel;\r\n if (this._model) {\r\n return this._onNewModel();\r\n }\r\n return Promise.resolve();\r\n }\r\n _onNewModel() {\r\n if (!this._model) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (this._model.isEmpty) {\r\n this.setTitle('');\r\n this._messageContainer.innerText = nls.localize('noResults', \"No results\");\r\n dom.show(this._messageContainer);\r\n return Promise.resolve(undefined);\r\n }\r\n dom.hide(this._messageContainer);\r\n this._decorationsManager = new DecorationsManager(this._preview, this._model);\r\n this._disposeOnNewModel.add(this._decorationsManager);\r\n // listen on model changes\r\n this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(reference => this._tree.rerender(reference)));\r\n // listen on editor\r\n this._disposeOnNewModel.add(this._preview.onMouseDown(e => {\r\n const { event, target } = e;\r\n if (event.detail !== 2) {\r\n return;\r\n }\r\n const element = this._getFocusedReference();\r\n if (!element) {\r\n return;\r\n }\r\n this._onDidSelectReference.fire({\r\n element: { uri: element.uri, range: target.range },\r\n kind: (event.ctrlKey || event.metaKey || event.altKey) ? 'side' : 'open',\r\n source: 'editor'\r\n });\r\n }));\r\n // make sure things are rendered\r\n this.container.classList.add('results-loaded');\r\n dom.show(this._treeContainer);\r\n dom.show(this._previewContainer);\r\n this._splitView.layout(this._dim.width);\r\n this.focusOnReferenceTree();\r\n // pick input and a reference to begin with\r\n return this._tree.setInput(this._model.groups.length === 1 ? this._model.groups[0] : this._model);\r\n }\r\n _getFocusedReference() {\r\n const [element] = this._tree.getFocus();\r\n if (element instanceof OneReference) {\r\n return element;\r\n }\r\n else if (element instanceof FileReferences) {\r\n if (element.children.length > 0) {\r\n return element.children[0];\r\n }\r\n }\r\n return undefined;\r\n }\r\n revealReference(reference) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this._revealReference(reference, false);\r\n this._onDidSelectReference.fire({ element: reference, kind: 'goto', source: 'tree' });\r\n });\r\n }\r\n _revealReference(reference, revealParent) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // check if there is anything to do...\r\n if (this._revealedReference === reference) {\r\n return;\r\n }\r\n this._revealedReference = reference;\r\n // Update widget header\r\n if (reference.uri.scheme !== Schemas.inMemory) {\r\n this.setTitle(basenameOrAuthority(reference.uri), this._uriLabel.getUriLabel(dirname(reference.uri)));\r\n }\r\n else {\r\n this.setTitle(nls.localize('peekView.alternateTitle', \"References\"));\r\n }\r\n const promise = this._textModelResolverService.createModelReference(reference.uri);\r\n if (this._tree.getInput() === reference.parent) {\r\n this._tree.reveal(reference);\r\n }\r\n else {\r\n if (revealParent) {\r\n this._tree.reveal(reference.parent);\r\n }\r\n yield this._tree.expand(reference.parent);\r\n this._tree.reveal(reference);\r\n }\r\n const ref = yield promise;\r\n if (!this._model) {\r\n // disposed\r\n ref.dispose();\r\n return;\r\n }\r\n dispose(this._previewModelReference);\r\n // show in editor\r\n const model = ref.object;\r\n if (model) {\r\n const scrollType = this._preview.getModel() === model.textEditorModel ? 0 /* Smooth */ : 1 /* Immediate */;\r\n const sel = Range.lift(reference.range).collapseToStart();\r\n this._previewModelReference = ref;\r\n this._preview.setModel(model.textEditorModel);\r\n this._preview.setSelection(sel);\r\n this._preview.revealRangeInCenter(sel, scrollType);\r\n }\r\n else {\r\n this._preview.setModel(this._previewNotAvailableMessage);\r\n ref.dispose();\r\n }\r\n });\r\n }\r\n};\r\nReferenceWidget = __decorate([\r\n __param(3, IThemeService),\r\n __param(4, ITextModelService),\r\n __param(5, IInstantiationService),\r\n __param(6, peekView.IPeekViewService),\r\n __param(7, ILabelService),\r\n __param(8, IUndoRedoService),\r\n __param(9, IKeybindingService)\r\n], ReferenceWidget);\r\nexport { ReferenceWidget };\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const findMatchHighlightColor = theme.getColor(peekView.peekViewResultsMatchHighlight);\r\n if (findMatchHighlightColor) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { background-color: ${findMatchHighlightColor}; }`);\r\n }\r\n const referenceHighlightColor = theme.getColor(peekView.peekViewEditorMatchHighlight);\r\n if (referenceHighlightColor) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: ${referenceHighlightColor}; }`);\r\n }\r\n const referenceHighlightBorder = theme.getColor(peekView.peekViewEditorMatchHighlightBorder);\r\n if (referenceHighlightBorder) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ${referenceHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const hcOutline = theme.getColor(activeContrastBorder);\r\n if (hcOutline) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { border: 1px dotted ${hcOutline}; box-sizing: border-box; }`);\r\n }\r\n const resultsBackground = theme.getColor(peekView.peekViewResultsBackground);\r\n if (resultsBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree { background-color: ${resultsBackground}; }`);\r\n }\r\n const resultsMatchForeground = theme.getColor(peekView.peekViewResultsMatchForeground);\r\n if (resultsMatchForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree { color: ${resultsMatchForeground}; }`);\r\n }\r\n const resultsFileForeground = theme.getColor(peekView.peekViewResultsFileForeground);\r\n if (resultsFileForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .reference-file { color: ${resultsFileForeground}; }`);\r\n }\r\n const resultsSelectedBackground = theme.getColor(peekView.peekViewResultsSelectionBackground);\r\n if (resultsSelectedBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`);\r\n }\r\n const resultsSelectedForeground = theme.getColor(peekView.peekViewResultsSelectionForeground);\r\n if (resultsSelectedForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`);\r\n }\r\n const editorBackground = theme.getColor(peekView.peekViewEditorBackground);\r\n if (editorBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,` +\r\n `.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {` +\r\n `\tbackground-color: ${editorBackground};` +\r\n `}`);\r\n }\r\n const editorGutterBackground = theme.getColor(peekView.peekViewEditorGutterBackground);\r\n if (editorGutterBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .margin {` +\r\n `\tbackground-color: ${editorGutterBackground};` +\r\n `}`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../../nls.js';\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IContextKeyService, RawContextKey, ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\r\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\r\nimport { OneReference } from '../referencesModel.js';\r\nimport { ReferenceWidget, LayoutData } from './referencesWidget.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\r\nimport { createCancelablePromise } from '../../../../base/common/async.js';\r\nimport { getOuterEditor, PeekContext } from '../../peekView/peekView.js';\r\nimport { IListService, WorkbenchListFocusContextKey } from '../../../../platform/list/browser/listService.js';\r\nimport { KeybindingsRegistry } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\r\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\r\nexport const ctxReferenceSearchVisible = new RawContextKey('referenceSearchVisible', false, nls.localize('referenceSearchVisible', \"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'\"));\r\nlet ReferencesController = class ReferencesController {\r\n constructor(_defaultTreeKeyboardSupport, _editor, contextKeyService, _editorService, _notificationService, _instantiationService, _storageService, _configurationService) {\r\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\r\n this._editor = _editor;\r\n this._editorService = _editorService;\r\n this._notificationService = _notificationService;\r\n this._instantiationService = _instantiationService;\r\n this._storageService = _storageService;\r\n this._configurationService = _configurationService;\r\n this._disposables = new DisposableStore();\r\n this._requestIdPool = 0;\r\n this._ignoreModelChangeEvent = false;\r\n this._referenceSearchVisible = ctxReferenceSearchVisible.bindTo(contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ReferencesController.ID);\r\n }\r\n dispose() {\r\n var _a, _b;\r\n this._referenceSearchVisible.reset();\r\n this._disposables.dispose();\r\n (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\r\n this._widget = undefined;\r\n this._model = undefined;\r\n }\r\n toggleWidget(range, modelPromise, peekMode) {\r\n // close current widget and return early is position didn't change\r\n let widgetPosition;\r\n if (this._widget) {\r\n widgetPosition = this._widget.position;\r\n }\r\n this.closeWidget();\r\n if (!!widgetPosition && range.containsPosition(widgetPosition)) {\r\n return;\r\n }\r\n this._peekMode = peekMode;\r\n this._referenceSearchVisible.set(true);\r\n // close the widget on model/mode changes\r\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => { this.closeWidget(); }));\r\n this._disposables.add(this._editor.onDidChangeModel(() => {\r\n if (!this._ignoreModelChangeEvent) {\r\n this.closeWidget();\r\n }\r\n }));\r\n const storageKey = 'peekViewLayout';\r\n const data = LayoutData.fromJSON(this._storageService.get(storageKey, 0 /* GLOBAL */, '{}'));\r\n this._widget = this._instantiationService.createInstance(ReferenceWidget, this._editor, this._defaultTreeKeyboardSupport, data);\r\n this._widget.setTitle(nls.localize('labelLoading', \"Loading...\"));\r\n this._widget.show(range);\r\n this._disposables.add(this._widget.onDidClose(() => {\r\n modelPromise.cancel();\r\n if (this._widget) {\r\n this._storageService.store(storageKey, JSON.stringify(this._widget.layoutData), 0 /* GLOBAL */, 1 /* MACHINE */);\r\n this._widget = undefined;\r\n }\r\n this.closeWidget();\r\n }));\r\n this._disposables.add(this._widget.onDidSelectReference(event => {\r\n let { element, kind } = event;\r\n if (!element) {\r\n return;\r\n }\r\n switch (kind) {\r\n case 'open':\r\n if (event.source !== 'editor' || !this._configurationService.getValue('editor.stablePeek')) {\r\n // when stable peek is configured we don't close\r\n // the peek window on selecting the editor\r\n this.openReference(element, false, false);\r\n }\r\n break;\r\n case 'side':\r\n this.openReference(element, true, false);\r\n break;\r\n case 'goto':\r\n if (peekMode) {\r\n this._gotoReference(element);\r\n }\r\n else {\r\n this.openReference(element, false, true);\r\n }\r\n break;\r\n }\r\n }));\r\n const requestId = ++this._requestIdPool;\r\n modelPromise.then(model => {\r\n var _a;\r\n // still current request? widget still open?\r\n if (requestId !== this._requestIdPool || !this._widget) {\r\n model.dispose();\r\n return undefined;\r\n }\r\n (_a = this._model) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._model = model;\r\n // show widget\r\n return this._widget.setModel(this._model).then(() => {\r\n if (this._widget && this._model && this._editor.hasModel()) { // might have been closed\r\n // set title\r\n if (!this._model.isEmpty) {\r\n this._widget.setMetaTitle(nls.localize('metaTitle.N', \"{0} ({1})\", this._model.title, this._model.references.length));\r\n }\r\n else {\r\n this._widget.setMetaTitle('');\r\n }\r\n // set 'best' selection\r\n let uri = this._editor.getModel().uri;\r\n let pos = new Position(range.startLineNumber, range.startColumn);\r\n let selection = this._model.nearestReference(uri, pos);\r\n if (selection) {\r\n return this._widget.setSelection(selection).then(() => {\r\n if (this._widget && this._editor.getOption(75 /* peekWidgetDefaultFocus */) === 'editor') {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n });\r\n }\r\n }\r\n return undefined;\r\n });\r\n }, error => {\r\n this._notificationService.error(error);\r\n });\r\n }\r\n changeFocusBetweenPreviewAndReferences() {\r\n if (!this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n if (this._widget.isPreviewEditorFocused()) {\r\n this._widget.focusOnReferenceTree();\r\n }\r\n else {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n }\r\n goToNextOrPreviousReference(fwd) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel() || !this._model || !this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n const currentPosition = this._widget.position;\r\n if (!currentPosition) {\r\n return;\r\n }\r\n const source = this._model.nearestReference(this._editor.getModel().uri, currentPosition);\r\n if (!source) {\r\n return;\r\n }\r\n const target = this._model.nextOrPreviousReference(source, fwd);\r\n const editorFocus = this._editor.hasTextFocus();\r\n const previewEditorFocus = this._widget.isPreviewEditorFocused();\r\n yield this._widget.setSelection(target);\r\n yield this._gotoReference(target);\r\n if (editorFocus) {\r\n this._editor.focus();\r\n }\r\n else if (this._widget && previewEditorFocus) {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n });\r\n }\r\n revealReference(reference) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel() || !this._model || !this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n yield this._widget.revealReference(reference);\r\n });\r\n }\r\n closeWidget(focusEditor = true) {\r\n var _a, _b;\r\n (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\r\n this._referenceSearchVisible.reset();\r\n this._disposables.clear();\r\n this._widget = undefined;\r\n this._model = undefined;\r\n if (focusEditor) {\r\n this._editor.focus();\r\n }\r\n this._requestIdPool += 1; // Cancel pending requests\r\n }\r\n _gotoReference(ref) {\r\n if (this._widget) {\r\n this._widget.hide();\r\n }\r\n this._ignoreModelChangeEvent = true;\r\n const range = Range.lift(ref.range).collapseToStart();\r\n return this._editorService.openCodeEditor({\r\n resource: ref.uri,\r\n options: { selection: range }\r\n }, this._editor).then(openedEditor => {\r\n var _a;\r\n this._ignoreModelChangeEvent = false;\r\n if (!openedEditor || !this._widget) {\r\n // something went wrong...\r\n this.closeWidget();\r\n return;\r\n }\r\n if (this._editor === openedEditor) {\r\n //\r\n this._widget.show(range);\r\n this._widget.focusOnReferenceTree();\r\n }\r\n else {\r\n // we opened a different editor instance which means a different controller instance.\r\n // therefore we stop with this controller and continue with the other\r\n const other = ReferencesController.get(openedEditor);\r\n const model = this._model.clone();\r\n this.closeWidget();\r\n openedEditor.focus();\r\n other.toggleWidget(range, createCancelablePromise(_ => Promise.resolve(model)), (_a = this._peekMode) !== null && _a !== void 0 ? _a : false);\r\n }\r\n }, (err) => {\r\n this._ignoreModelChangeEvent = false;\r\n onUnexpectedError(err);\r\n });\r\n }\r\n openReference(ref, sideBySide, pinned) {\r\n // clear stage\r\n if (!sideBySide) {\r\n this.closeWidget();\r\n }\r\n const { uri, range } = ref;\r\n this._editorService.openCodeEditor({\r\n resource: uri,\r\n options: { selection: range, pinned }\r\n }, this._editor, sideBySide);\r\n }\r\n};\r\nReferencesController.ID = 'editor.contrib.referencesController';\r\nReferencesController = __decorate([\r\n __param(2, IContextKeyService),\r\n __param(3, ICodeEditorService),\r\n __param(4, INotificationService),\r\n __param(5, IInstantiationService),\r\n __param(6, IStorageService),\r\n __param(7, IConfigurationService)\r\n], ReferencesController);\r\nexport { ReferencesController };\r\nfunction withController(accessor, fn) {\r\n const outerEditor = getOuterEditor(accessor);\r\n if (!outerEditor) {\r\n return;\r\n }\r\n let controller = ReferencesController.get(outerEditor);\r\n if (controller) {\r\n fn(controller);\r\n }\r\n}\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'togglePeekWidgetFocus',\r\n weight: 100 /* EditorContrib */,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 60 /* F2 */),\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.changeFocusBetweenPreviewAndReferences();\r\n });\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'goToNextReference',\r\n weight: 100 /* EditorContrib */ - 10,\r\n primary: 62 /* F4 */,\r\n secondary: [70 /* F12 */],\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.goToNextOrPreviousReference(true);\r\n });\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'goToPreviousReference',\r\n weight: 100 /* EditorContrib */ - 10,\r\n primary: 1024 /* Shift */ | 62 /* F4 */,\r\n secondary: [1024 /* Shift */ | 70 /* F12 */],\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.goToNextOrPreviousReference(false);\r\n });\r\n }\r\n});\r\n// commands that aren't needed anymore because there is now ContextKeyExpr.OR\r\nCommandsRegistry.registerCommandAlias('goToNextReferenceFromEmbeddedEditor', 'goToNextReference');\r\nCommandsRegistry.registerCommandAlias('goToPreviousReferenceFromEmbeddedEditor', 'goToPreviousReference');\r\n// close\r\nCommandsRegistry.registerCommandAlias('closeReferenceSearchEditor', 'closeReferenceSearch');\r\nCommandsRegistry.registerCommand('closeReferenceSearch', accessor => withController(accessor, controller => controller.closeWidget()));\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'closeReferenceSearch',\r\n weight: 100 /* EditorContrib */ - 101,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */],\r\n when: ContextKeyExpr.and(PeekContext.inPeekEditor, ContextKeyExpr.not('config.editor.stablePeek'))\r\n});\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'closeReferenceSearch',\r\n weight: 200 /* WorkbenchContrib */ + 50,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */],\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, ContextKeyExpr.not('config.editor.stablePeek'))\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'revealReference',\r\n weight: 200 /* WorkbenchContrib */,\r\n primary: 3 /* Enter */,\r\n mac: {\r\n primary: 3 /* Enter */,\r\n secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */]\r\n },\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey),\r\n handler(accessor) {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.revealReference(focus[0]));\r\n }\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'openReferenceToSide',\r\n weight: 100 /* EditorContrib */,\r\n primary: 2048 /* CtrlCmd */ | 3 /* Enter */,\r\n mac: {\r\n primary: 256 /* WinCtrl */ | 3 /* Enter */\r\n },\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey),\r\n handler(accessor) {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.openReference(focus[0], true, true));\r\n }\r\n }\r\n});\r\nCommandsRegistry.registerCommand('openReference', (accessor) => {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.openReference(focus[0], false, true));\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { registerEditorCommand, EditorCommand } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { dispose, combinedDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { isEqual } from '../../../base/common/resources.js';\r\nexport const ctxHasSymbols = new RawContextKey('hasSymbols', false, localize('hasSymbols', \"Whether there are symbol locations that can be navigated via keyboard-only.\"));\r\nexport const ISymbolNavigationService = createDecorator('ISymbolNavigationService');\r\nlet SymbolNavigationService = class SymbolNavigationService {\r\n constructor(contextKeyService, _editorService, _notificationService, _keybindingService) {\r\n this._editorService = _editorService;\r\n this._notificationService = _notificationService;\r\n this._keybindingService = _keybindingService;\r\n this._currentModel = undefined;\r\n this._currentIdx = -1;\r\n this._ignoreEditorChange = false;\r\n this._ctxHasSymbols = ctxHasSymbols.bindTo(contextKeyService);\r\n }\r\n reset() {\r\n var _a, _b;\r\n this._ctxHasSymbols.reset();\r\n (_a = this._currentState) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this._currentMessage) === null || _b === void 0 ? void 0 : _b.dispose();\r\n this._currentModel = undefined;\r\n this._currentIdx = -1;\r\n }\r\n put(anchor) {\r\n const refModel = anchor.parent.parent;\r\n if (refModel.references.length <= 1) {\r\n this.reset();\r\n return;\r\n }\r\n this._currentModel = refModel;\r\n this._currentIdx = refModel.references.indexOf(anchor);\r\n this._ctxHasSymbols.set(true);\r\n this._showMessage();\r\n const editorState = new EditorState(this._editorService);\r\n const listener = editorState.onDidChange(_ => {\r\n if (this._ignoreEditorChange) {\r\n return;\r\n }\r\n const editor = this._editorService.getActiveCodeEditor();\r\n if (!editor) {\r\n return;\r\n }\r\n const model = editor.getModel();\r\n const position = editor.getPosition();\r\n if (!model || !position) {\r\n return;\r\n }\r\n let seenUri = false;\r\n let seenPosition = false;\r\n for (const reference of refModel.references) {\r\n if (isEqual(reference.uri, model.uri)) {\r\n seenUri = true;\r\n seenPosition = seenPosition || Range.containsPosition(reference.range, position);\r\n }\r\n else if (seenUri) {\r\n break;\r\n }\r\n }\r\n if (!seenUri || !seenPosition) {\r\n this.reset();\r\n }\r\n });\r\n this._currentState = combinedDisposable(editorState, listener);\r\n }\r\n revealNext(source) {\r\n if (!this._currentModel) {\r\n return Promise.resolve();\r\n }\r\n // get next result and advance\r\n this._currentIdx += 1;\r\n this._currentIdx %= this._currentModel.references.length;\r\n const reference = this._currentModel.references[this._currentIdx];\r\n // status\r\n this._showMessage();\r\n // open editor, ignore events while that happens\r\n this._ignoreEditorChange = true;\r\n return this._editorService.openCodeEditor({\r\n resource: reference.uri,\r\n options: {\r\n selection: Range.collapseToStart(reference.range),\r\n selectionRevealType: 3 /* NearTopIfOutsideViewport */\r\n }\r\n }, source).finally(() => {\r\n this._ignoreEditorChange = false;\r\n });\r\n }\r\n _showMessage() {\r\n var _a;\r\n (_a = this._currentMessage) === null || _a === void 0 ? void 0 : _a.dispose();\r\n const kb = this._keybindingService.lookupKeybinding('editor.gotoNextSymbolFromResult');\r\n const message = kb\r\n ? localize('location.kb', \"Symbol {0} of {1}, {2} for next\", this._currentIdx + 1, this._currentModel.references.length, kb.getLabel())\r\n : localize('location', \"Symbol {0} of {1}\", this._currentIdx + 1, this._currentModel.references.length);\r\n this._currentMessage = this._notificationService.status(message);\r\n }\r\n};\r\nSymbolNavigationService = __decorate([\r\n __param(0, IContextKeyService),\r\n __param(1, ICodeEditorService),\r\n __param(2, INotificationService),\r\n __param(3, IKeybindingService)\r\n], SymbolNavigationService);\r\nregisterSingleton(ISymbolNavigationService, SymbolNavigationService, true);\r\nregisterEditorCommand(new class extends EditorCommand {\r\n constructor() {\r\n super({\r\n id: 'editor.gotoNextSymbolFromResult',\r\n precondition: ctxHasSymbols,\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */,\r\n primary: 70 /* F12 */\r\n }\r\n });\r\n }\r\n runEditorCommand(accessor, editor) {\r\n return accessor.get(ISymbolNavigationService).revealNext(editor);\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'editor.gotoNextSymbolFromResult.cancel',\r\n weight: 100 /* EditorContrib */,\r\n when: ctxHasSymbols,\r\n primary: 9 /* Escape */,\r\n handler(accessor) {\r\n accessor.get(ISymbolNavigationService).reset();\r\n }\r\n});\r\n//\r\nlet EditorState = class EditorState {\r\n constructor(editorService) {\r\n this._listener = new Map();\r\n this._disposables = new DisposableStore();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._disposables.add(editorService.onCodeEditorRemove(this._onDidRemoveEditor, this));\r\n this._disposables.add(editorService.onCodeEditorAdd(this._onDidAddEditor, this));\r\n editorService.listCodeEditors().forEach(this._onDidAddEditor, this);\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._onDidChange.dispose();\r\n dispose(this._listener.values());\r\n }\r\n _onDidAddEditor(editor) {\r\n this._listener.set(editor, combinedDisposable(editor.onDidChangeCursorPosition(_ => this._onDidChange.fire({ editor })), editor.onDidChangeModelContent(_ => this._onDidChange.fire({ editor }))));\r\n }\r\n _onDidRemoveEditor(editor) {\r\n var _a;\r\n (_a = this._listener.get(editor)) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._listener.delete(editor);\r\n }\r\n};\r\nEditorState = __decorate([\r\n __param(0, ICodeEditorService)\r\n], EditorState);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar _a, _b, _c, _d, _e, _f, _g, _h;\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { createCancelablePromise, raceCancellation } from '../../../base/common/async.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { isWeb } from '../../../base/common/platform.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { EditorAction, registerInstantiatedEditorAction } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport * as corePosition from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { isLocationLink } from '../../common/modes.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport { PeekContext } from '../peekView/peekView.js';\r\nimport { ReferencesController } from './peek/referencesController.js';\r\nimport { ReferencesModel } from './referencesModel.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { getDefinitionsAtPosition, getImplementationsAtPosition, getTypeDefinitionsAtPosition, getDeclarationsAtPosition, getReferencesAtPosition } from './goToSymbol.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { EditorStateCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { ISymbolNavigationService } from './symbolNavigation.js';\r\nimport { isStandalone } from '../../../base/browser/browser.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../browser/widget/embeddedCodeEditorWidget.js';\r\nMenuRegistry.appendMenuItem(MenuId.EditorContext, {\r\n submenu: MenuId.EditorContextPeek,\r\n title: nls.localize('peek.submenu', \"Peek\"),\r\n group: 'navigation',\r\n order: 100\r\n});\r\nconst _goToActionIds = new Set();\r\nfunction registerGoToAction(ctor) {\r\n const result = new ctor();\r\n registerInstantiatedEditorAction(result);\r\n _goToActionIds.add(result.id);\r\n return result;\r\n}\r\nclass SymbolNavigationAction extends EditorAction {\r\n constructor(configuration, opts) {\r\n super(opts);\r\n this._configuration = configuration;\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return Promise.resolve(undefined);\r\n }\r\n const notificationService = accessor.get(INotificationService);\r\n const editorService = accessor.get(ICodeEditorService);\r\n const progressService = accessor.get(IEditorProgressService);\r\n const symbolNavService = accessor.get(ISymbolNavigationService);\r\n const model = editor.getModel();\r\n const pos = editor.getPosition();\r\n const cts = new EditorStateCancellationTokenSource(editor, 1 /* Value */ | 4 /* Position */);\r\n const promise = raceCancellation(this._getLocationModel(model, pos, cts.token), cts.token).then((references) => __awaiter(this, void 0, void 0, function* () {\r\n if (!references || cts.token.isCancellationRequested) {\r\n return;\r\n }\r\n alert(references.ariaMessage);\r\n let altAction;\r\n if (references.referenceAt(model.uri, pos)) {\r\n const altActionId = this._getAlternativeCommand(editor);\r\n if (altActionId !== this.id && _goToActionIds.has(altActionId)) {\r\n altAction = editor.getAction(altActionId);\r\n }\r\n }\r\n const referenceCount = references.references.length;\r\n if (referenceCount === 0) {\r\n // no result -> show message\r\n if (!this._configuration.muteMessage) {\r\n const info = model.getWordAtPosition(pos);\r\n MessageController.get(editor).showMessage(this._getNoResultFoundMessage(info), pos);\r\n }\r\n }\r\n else if (referenceCount === 1 && altAction) {\r\n // already at the only result, run alternative\r\n altAction.run();\r\n }\r\n else {\r\n // normal results handling\r\n return this._onResult(editorService, symbolNavService, editor, references);\r\n }\r\n }), (err) => {\r\n // report an error\r\n notificationService.error(err);\r\n }).finally(() => {\r\n cts.dispose();\r\n });\r\n progressService.showWhile(promise, 250);\r\n return promise;\r\n }\r\n _onResult(editorService, symbolNavService, editor, model) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const gotoLocation = this._getGoToPreference(editor);\r\n if (!(editor instanceof EmbeddedCodeEditorWidget) && (this._configuration.openInPeek || (gotoLocation === 'peek' && model.references.length > 1))) {\r\n this._openInPeek(editor, model);\r\n }\r\n else {\r\n const next = model.firstReference();\r\n const peek = model.references.length > 1 && gotoLocation === 'gotoAndPeek';\r\n const targetEditor = yield this._openReference(editor, editorService, next, this._configuration.openToSide, !peek);\r\n if (peek && targetEditor) {\r\n this._openInPeek(targetEditor, model);\r\n }\r\n else {\r\n model.dispose();\r\n }\r\n // keep remaining locations around when using\r\n // 'goto'-mode\r\n if (gotoLocation === 'goto') {\r\n symbolNavService.put(next);\r\n }\r\n }\r\n });\r\n }\r\n _openReference(editor, editorService, reference, sideBySide, highlight) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // range is the target-selection-range when we have one\r\n // and the fallback is the 'full' range\r\n let range = undefined;\r\n if (isLocationLink(reference)) {\r\n range = reference.targetSelectionRange;\r\n }\r\n if (!range) {\r\n range = reference.range;\r\n }\r\n if (!range) {\r\n return undefined;\r\n }\r\n const targetEditor = yield editorService.openCodeEditor({\r\n resource: reference.uri,\r\n options: {\r\n selection: Range.collapseToStart(range),\r\n selectionRevealType: 3 /* NearTopIfOutsideViewport */\r\n }\r\n }, editor, sideBySide);\r\n if (!targetEditor) {\r\n return undefined;\r\n }\r\n if (highlight) {\r\n const modelNow = targetEditor.getModel();\r\n const ids = targetEditor.deltaDecorations([], [{ range, options: { description: 'symbol-navigate-action-highlight', className: 'symbolHighlight' } }]);\r\n setTimeout(() => {\r\n if (targetEditor.getModel() === modelNow) {\r\n targetEditor.deltaDecorations(ids, []);\r\n }\r\n }, 350);\r\n }\r\n return targetEditor;\r\n });\r\n }\r\n _openInPeek(target, model) {\r\n let controller = ReferencesController.get(target);\r\n if (controller && target.hasModel()) {\r\n controller.toggleWidget(target.getSelection(), createCancelablePromise(_ => Promise.resolve(model)), this._configuration.openInPeek);\r\n }\r\n else {\r\n model.dispose();\r\n }\r\n }\r\n}\r\n//#region --- DEFINITION\r\nexport class DefinitionAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getDefinitionsAtPosition(model, position, token), nls.localize('def.title', 'Definitions'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('noResultWord', \"No definition found for '{0}'\", info.word)\r\n : nls.localize('generic.noResults', \"No definition found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(48 /* gotoLocation */).alternativeDefinitionCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(48 /* gotoLocation */).multipleDefinitions;\r\n }\r\n}\r\nconst goToDefinitionKb = isWeb && !isStandalone\r\n ? 2048 /* CtrlCmd */ | 70 /* F12 */\r\n : 70 /* F12 */;\r\nregisterGoToAction((_a = class GoToDefinitionAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToDefinitionAction.id,\r\n label: nls.localize('actions.goToDecl.label', \"Go to Definition\"),\r\n alias: 'Go to Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: goToDefinitionKb,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.1\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 2,\r\n title: nls.localize({ key: 'miGotoDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Definition\")\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.goToDeclaration', GoToDefinitionAction.id);\r\n }\r\n },\r\n _a.id = 'editor.action.revealDefinition',\r\n _a));\r\nregisterGoToAction((_b = class OpenDefinitionToSideAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: true,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: OpenDefinitionToSideAction.id,\r\n label: nls.localize('actions.goToDeclToSide.label', \"Open Definition to the Side\"),\r\n alias: 'Open Definition to the Side',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, goToDefinitionKb),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.openDeclarationToTheSide', OpenDefinitionToSideAction.id);\r\n }\r\n },\r\n _b.id = 'editor.action.revealDefinitionAside',\r\n _b));\r\nregisterGoToAction((_c = class PeekDefinitionAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekDefinitionAction.id,\r\n label: nls.localize('actions.previewDecl.label', \"Peek Definition\"),\r\n alias: 'Peek Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 70 /* F12 */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 68 /* F10 */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 2\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.previewDeclaration', PeekDefinitionAction.id);\r\n }\r\n },\r\n _c.id = 'editor.action.peekDefinition',\r\n _c));\r\n//#endregion\r\n//#region --- DECLARATION\r\nclass DeclarationAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getDeclarationsAtPosition(model, position, token), nls.localize('decl.title', 'Declarations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\r\n : nls.localize('decl.generic.noResults', \"No declaration found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(48 /* gotoLocation */).alternativeDeclarationCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(48 /* gotoLocation */).multipleDeclarations;\r\n }\r\n}\r\nregisterGoToAction((_d = class GoToDeclarationAction extends DeclarationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToDeclarationAction.id,\r\n label: nls.localize('actions.goToDeclaration.label', \"Go to Declaration\"),\r\n alias: 'Go to Declaration',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.3\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 3,\r\n title: nls.localize({ key: 'miGotoDeclaration', comment: ['&& denotes a mnemonic'] }, \"Go to &&Declaration\")\r\n },\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\r\n : nls.localize('decl.generic.noResults', \"No declaration found\");\r\n }\r\n },\r\n _d.id = 'editor.action.revealDeclaration',\r\n _d));\r\nregisterGoToAction(class PeekDeclarationAction extends DeclarationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.peekDeclaration',\r\n label: nls.localize('actions.peekDecl.label', \"Peek Declaration\"),\r\n alias: 'Peek Declaration',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 3\r\n }\r\n });\r\n }\r\n});\r\n//#endregion\r\n//#region --- TYPE DEFINITION\r\nclass TypeDefinitionAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getTypeDefinitionsAtPosition(model, position, token), nls.localize('typedef.title', 'Type Definitions'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('goToTypeDefinition.noResultWord', \"No type definition found for '{0}'\", info.word)\r\n : nls.localize('goToTypeDefinition.generic.noResults', \"No type definition found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(48 /* gotoLocation */).alternativeTypeDefinitionCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(48 /* gotoLocation */).multipleTypeDefinitions;\r\n }\r\n}\r\nregisterGoToAction((_e = class GoToTypeDefinitionAction extends TypeDefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToTypeDefinitionAction.ID,\r\n label: nls.localize('actions.goToTypeDefinition.label', \"Go to Type Definition\"),\r\n alias: 'Go to Type Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.4\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 3,\r\n title: nls.localize({ key: 'miGotoTypeDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Type Definition\")\r\n }\r\n });\r\n }\r\n },\r\n _e.ID = 'editor.action.goToTypeDefinition',\r\n _e));\r\nregisterGoToAction((_f = class PeekTypeDefinitionAction extends TypeDefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekTypeDefinitionAction.ID,\r\n label: nls.localize('actions.peekTypeDefinition.label', \"Peek Type Definition\"),\r\n alias: 'Peek Type Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 4\r\n }\r\n });\r\n }\r\n },\r\n _f.ID = 'editor.action.peekTypeDefinition',\r\n _f));\r\n//#endregion\r\n//#region --- IMPLEMENTATION\r\nclass ImplementationAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getImplementationsAtPosition(model, position, token), nls.localize('impl.title', 'Implementations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('goToImplementation.noResultWord', \"No implementation found for '{0}'\", info.word)\r\n : nls.localize('goToImplementation.generic.noResults', \"No implementation found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(48 /* gotoLocation */).alternativeImplementationCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(48 /* gotoLocation */).multipleImplementations;\r\n }\r\n}\r\nregisterGoToAction((_g = class GoToImplementationAction extends ImplementationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToImplementationAction.ID,\r\n label: nls.localize('actions.goToImplementation.label', \"Go to Implementations\"),\r\n alias: 'Go to Implementations',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 4,\r\n title: nls.localize({ key: 'miGotoImplementation', comment: ['&& denotes a mnemonic'] }, \"Go to &&Implementations\")\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.45\r\n }\r\n });\r\n }\r\n },\r\n _g.ID = 'editor.action.goToImplementation',\r\n _g));\r\nregisterGoToAction((_h = class PeekImplementationAction extends ImplementationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekImplementationAction.ID,\r\n label: nls.localize('actions.peekImplementation.label', \"Peek Implementations\"),\r\n alias: 'Peek Implementations',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 5\r\n }\r\n });\r\n }\r\n },\r\n _h.ID = 'editor.action.peekImplementation',\r\n _h));\r\n//#endregion\r\n//#region --- REFERENCES\r\nclass ReferencesAction extends SymbolNavigationAction {\r\n _getNoResultFoundMessage(info) {\r\n return info\r\n ? nls.localize('references.no', \"No references found for '{0}'\", info.word)\r\n : nls.localize('references.noGeneric', \"No references found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(48 /* gotoLocation */).alternativeReferenceCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(48 /* gotoLocation */).multipleReferences;\r\n }\r\n}\r\nregisterGoToAction(class GoToReferencesAction extends ReferencesAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.goToReferences',\r\n label: nls.localize('goToReferences.label', \"Go to References\"),\r\n alias: 'Go to References',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.45\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 5,\r\n title: nls.localize({ key: 'miGotoReference', comment: ['&& denotes a mnemonic'] }, \"Go to &&References\")\r\n },\r\n });\r\n }\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getReferencesAtPosition(model, position, true, token), nls.localize('ref.title', 'References'));\r\n });\r\n }\r\n});\r\nregisterGoToAction(class PeekReferencesAction extends ReferencesAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.referenceSearch.trigger',\r\n label: nls.localize('references.action.label', \"Peek References\"),\r\n alias: 'Peek References',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 6\r\n }\r\n });\r\n }\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getReferencesAtPosition(model, position, false, token), nls.localize('ref.title', 'References'));\r\n });\r\n }\r\n});\r\n//#endregion\r\n//#region --- GENERIC goto symbols command\r\nclass GenericGoToLocationAction extends SymbolNavigationAction {\r\n constructor(config, _references, _gotoMultipleBehaviour) {\r\n super(config, {\r\n id: 'editor.action.goToLocation',\r\n label: nls.localize('label.generic', \"Go To Any Symbol\"),\r\n alias: 'Go To Any Symbol',\r\n precondition: ContextKeyExpr.and(PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n });\r\n this._references = _references;\r\n this._gotoMultipleBehaviour = _gotoMultipleBehaviour;\r\n }\r\n _getLocationModel(_model, _position, _token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(this._references, nls.localize('generic.title', 'Locations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && nls.localize('generic.noResult', \"No results for '{0}'\", info.word) || '';\r\n }\r\n _getGoToPreference(editor) {\r\n var _a;\r\n return (_a = this._gotoMultipleBehaviour) !== null && _a !== void 0 ? _a : editor.getOption(48 /* gotoLocation */).multipleReferences;\r\n }\r\n _getAlternativeCommand() { return ''; }\r\n}\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.goToLocations',\r\n description: {\r\n description: 'Go to locations from a position in a file',\r\n args: [\r\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\r\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\r\n { name: 'locations', description: 'An array of locations.', constraint: Array },\r\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\r\n { name: 'noResultsMessage', description: 'Human readable message that shows when locations is empty.' },\r\n ]\r\n },\r\n handler: (accessor, resource, position, references, multiple, noResultsMessage, openInPeek) => __awaiter(void 0, void 0, void 0, function* () {\r\n assertType(URI.isUri(resource));\r\n assertType(corePosition.Position.isIPosition(position));\r\n assertType(Array.isArray(references));\r\n assertType(typeof multiple === 'undefined' || typeof multiple === 'string');\r\n assertType(typeof openInPeek === 'undefined' || typeof openInPeek === 'boolean');\r\n const editorService = accessor.get(ICodeEditorService);\r\n const editor = yield editorService.openCodeEditor({ resource }, editorService.getFocusedCodeEditor());\r\n if (isCodeEditor(editor)) {\r\n editor.setPosition(position);\r\n editor.revealPositionInCenterIfOutsideViewport(position, 0 /* Smooth */);\r\n return editor.invokeWithinContext(accessor => {\r\n const command = new class extends GenericGoToLocationAction {\r\n _getNoResultFoundMessage(info) {\r\n return noResultsMessage || super._getNoResultFoundMessage(info);\r\n }\r\n }({\r\n muteMessage: !Boolean(noResultsMessage),\r\n openInPeek: Boolean(openInPeek),\r\n openToSide: false\r\n }, references, multiple);\r\n accessor.get(IInstantiationService).invokeFunction(command.run.bind(command), editor);\r\n });\r\n }\r\n })\r\n});\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.peekLocations',\r\n description: {\r\n description: 'Peek locations from a position in a file',\r\n args: [\r\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\r\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\r\n { name: 'locations', description: 'An array of locations.', constraint: Array },\r\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\r\n ]\r\n },\r\n handler: (accessor, resource, position, references, multiple) => __awaiter(void 0, void 0, void 0, function* () {\r\n accessor.get(ICommandService).executeCommand('editor.action.goToLocations', resource, position, references, multiple, undefined, true);\r\n })\r\n});\r\n//#endregion\r\n//#region --- REFERENCE search special commands\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.findReferences',\r\n handler: (accessor, resource, position) => {\r\n assertType(URI.isUri(resource));\r\n assertType(corePosition.Position.isIPosition(position));\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n return codeEditorService.openCodeEditor({ resource }, codeEditorService.getFocusedCodeEditor()).then(control => {\r\n if (!isCodeEditor(control) || !control.hasModel()) {\r\n return undefined;\r\n }\r\n const controller = ReferencesController.get(control);\r\n if (!controller) {\r\n return undefined;\r\n }\r\n const references = createCancelablePromise(token => getReferencesAtPosition(control.getModel(), corePosition.Position.lift(position), false, token).then(references => new ReferencesModel(references, nls.localize('ref.title', 'References'))));\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n return Promise.resolve(controller.toggleWidget(range, references, false));\r\n });\r\n }\r\n});\r\n// use NEW command\r\nCommandsRegistry.registerCommandAlias('editor.action.showReferences', 'editor.action.peekLocations');\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './goToDefinitionAtPosition.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport { createCancelablePromise } from '../../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\r\nimport { IModeService } from '../../../common/services/modeService.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { DefinitionProviderRegistry } from '../../../common/modes.js';\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { getDefinitionsAtPosition } from '../goToSymbol.js';\r\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { editorActiveLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { EditorState } from '../../../browser/core/editorState.js';\r\nimport { DefinitionAction } from '../goToCommands.js';\r\nimport { ClickLinkGesture } from './clickLinkGesture.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\r\nimport { PeekContext } from '../../peekView/peekView.js';\r\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\r\nlet GotoDefinitionAtPositionEditorContribution = class GotoDefinitionAtPositionEditorContribution {\r\n constructor(editor, textModelResolverService, modeService) {\r\n this.textModelResolverService = textModelResolverService;\r\n this.modeService = modeService;\r\n this.toUnhook = new DisposableStore();\r\n this.toUnhookForKeyboard = new DisposableStore();\r\n this.linkDecorations = [];\r\n this.currentWordAtPosition = null;\r\n this.previousPromise = null;\r\n this.editor = editor;\r\n let linkGesture = new ClickLinkGesture(editor);\r\n this.toUnhook.add(linkGesture);\r\n this.toUnhook.add(linkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\r\n this.startFindDefinitionFromMouse(mouseEvent, withNullAsUndefined(keyboardEvent));\r\n }));\r\n this.toUnhook.add(linkGesture.onExecute((mouseEvent) => {\r\n if (this.isEnabled(mouseEvent)) {\r\n this.gotoDefinition(mouseEvent.target.position, mouseEvent.hasSideBySideModifier).then(() => {\r\n this.removeLinkDecorations();\r\n }, (error) => {\r\n this.removeLinkDecorations();\r\n onUnexpectedError(error);\r\n });\r\n }\r\n }));\r\n this.toUnhook.add(linkGesture.onCancel(() => {\r\n this.removeLinkDecorations();\r\n this.currentWordAtPosition = null;\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(GotoDefinitionAtPositionEditorContribution.ID);\r\n }\r\n startFindDefinitionFromCursor(position) {\r\n // For issue: https://github.com/microsoft/vscode/issues/46257\r\n // equivalent to mouse move with meta/ctrl key\r\n // First find the definition and add decorations\r\n // to the editor to be shown with the content hover widget\r\n return this.startFindDefinition(position).then(() => {\r\n // Add listeners for editor cursor move and key down events\r\n // Dismiss the \"extended\" editor decorations when the user hides\r\n // the hover widget. There is no event for the widget itself so these\r\n // serve as a best effort. After removing the link decorations, the hover\r\n // widget is clean and will only show declarations per next request.\r\n this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(() => {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n this.toUnhookForKeyboard.clear();\r\n }));\r\n this.toUnhookForKeyboard.add(this.editor.onKeyDown((e) => {\r\n if (e) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n this.toUnhookForKeyboard.clear();\r\n }\r\n }));\r\n });\r\n }\r\n startFindDefinitionFromMouse(mouseEvent, withKey) {\r\n // check if we are active and on a content widget\r\n if (mouseEvent.target.type === 9 /* CONTENT_WIDGET */ && this.linkDecorations.length > 0) {\r\n return;\r\n }\r\n if (!this.editor.hasModel() || !this.isEnabled(mouseEvent, withKey)) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n return;\r\n }\r\n const position = mouseEvent.target.position;\r\n this.startFindDefinition(position);\r\n }\r\n startFindDefinition(position) {\r\n var _a;\r\n // Dispose listeners for updating decorations when using keyboard to show definition hover\r\n this.toUnhookForKeyboard.clear();\r\n // Find word at mouse position\r\n const word = position ? (_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getWordAtPosition(position) : null;\r\n if (!word) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n return Promise.resolve(0);\r\n }\r\n // Return early if word at position is still the same\r\n if (this.currentWordAtPosition && this.currentWordAtPosition.startColumn === word.startColumn && this.currentWordAtPosition.endColumn === word.endColumn && this.currentWordAtPosition.word === word.word) {\r\n return Promise.resolve(0);\r\n }\r\n this.currentWordAtPosition = word;\r\n // Find definition and decorate word if found\r\n let state = new EditorState(this.editor, 4 /* Position */ | 1 /* Value */ | 2 /* Selection */ | 8 /* Scroll */);\r\n if (this.previousPromise) {\r\n this.previousPromise.cancel();\r\n this.previousPromise = null;\r\n }\r\n this.previousPromise = createCancelablePromise(token => this.findDefinition(position, token));\r\n return this.previousPromise.then(results => {\r\n if (!results || !results.length || !state.validate(this.editor)) {\r\n this.removeLinkDecorations();\r\n return;\r\n }\r\n // Multiple results\r\n if (results.length > 1) {\r\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)));\r\n }\r\n // Single result\r\n else {\r\n let result = results[0];\r\n if (!result.uri) {\r\n return;\r\n }\r\n this.textModelResolverService.createModelReference(result.uri).then(ref => {\r\n if (!ref.object || !ref.object.textEditorModel) {\r\n ref.dispose();\r\n return;\r\n }\r\n const { object: { textEditorModel } } = ref;\r\n const { startLineNumber } = result.range;\r\n if (startLineNumber < 1 || startLineNumber > textEditorModel.getLineCount()) {\r\n // invalid range\r\n ref.dispose();\r\n return;\r\n }\r\n const previewValue = this.getPreviewValue(textEditorModel, startLineNumber, result);\r\n let wordRange;\r\n if (result.originSelectionRange) {\r\n wordRange = Range.lift(result.originSelectionRange);\r\n }\r\n else {\r\n wordRange = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n }\r\n const modeId = this.modeService.getModeIdByFilepathOrFirstLine(textEditorModel.uri);\r\n this.addDecoration(wordRange, new MarkdownString().appendCodeblock(modeId ? modeId : '', previewValue));\r\n ref.dispose();\r\n });\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n getPreviewValue(textEditorModel, startLineNumber, result) {\r\n let rangeToUse = result.targetSelectionRange ? result.range : this.getPreviewRangeBasedOnBrackets(textEditorModel, startLineNumber);\r\n const numberOfLinesInRange = rangeToUse.endLineNumber - rangeToUse.startLineNumber;\r\n if (numberOfLinesInRange >= GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES) {\r\n rangeToUse = this.getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber);\r\n }\r\n const previewValue = this.stripIndentationFromPreviewRange(textEditorModel, startLineNumber, rangeToUse);\r\n return previewValue;\r\n }\r\n stripIndentationFromPreviewRange(textEditorModel, startLineNumber, previewRange) {\r\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n let minIndent = startIndent;\r\n for (let endLineNumber = startLineNumber + 1; endLineNumber < previewRange.endLineNumber; endLineNumber++) {\r\n const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\r\n minIndent = Math.min(minIndent, endIndent);\r\n }\r\n const previewValue = textEditorModel.getValueInRange(previewRange).replace(new RegExp(`^\\\\s{${minIndent - 1}}`, 'gm'), '').trim();\r\n return previewValue;\r\n }\r\n getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber) {\r\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES);\r\n let endLineNumber = startLineNumber + 1;\r\n for (; endLineNumber < maxLineNumber; endLineNumber++) {\r\n let endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\r\n if (startIndent === endIndent) {\r\n break;\r\n }\r\n }\r\n return new Range(startLineNumber, 1, endLineNumber + 1, 1);\r\n }\r\n getPreviewRangeBasedOnBrackets(textEditorModel, startLineNumber) {\r\n const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES);\r\n const brackets = [];\r\n let ignoreFirstEmpty = true;\r\n let currentBracket = textEditorModel.findNextBracket(new Position(startLineNumber, 1));\r\n while (currentBracket !== null) {\r\n if (brackets.length === 0) {\r\n brackets.push(currentBracket);\r\n }\r\n else {\r\n const lastBracket = brackets[brackets.length - 1];\r\n if (lastBracket.open[0] === currentBracket.open[0] && lastBracket.isOpen && !currentBracket.isOpen) {\r\n brackets.pop();\r\n }\r\n else {\r\n brackets.push(currentBracket);\r\n }\r\n if (brackets.length === 0) {\r\n if (ignoreFirstEmpty) {\r\n ignoreFirstEmpty = false;\r\n }\r\n else {\r\n return new Range(startLineNumber, 1, currentBracket.range.endLineNumber + 1, 1);\r\n }\r\n }\r\n }\r\n const maxColumn = textEditorModel.getLineMaxColumn(startLineNumber);\r\n let nextLineNumber = currentBracket.range.endLineNumber;\r\n let nextColumn = currentBracket.range.endColumn;\r\n if (maxColumn === currentBracket.range.endColumn) {\r\n nextLineNumber++;\r\n nextColumn = 1;\r\n }\r\n if (nextLineNumber > maxLineNumber) {\r\n return new Range(startLineNumber, 1, maxLineNumber + 1, 1);\r\n }\r\n currentBracket = textEditorModel.findNextBracket(new Position(nextLineNumber, nextColumn));\r\n }\r\n return new Range(startLineNumber, 1, maxLineNumber + 1, 1);\r\n }\r\n addDecoration(range, hoverMessage) {\r\n const newDecorations = {\r\n range: range,\r\n options: {\r\n description: 'goto-definition-link',\r\n inlineClassName: 'goto-definition-link',\r\n hoverMessage\r\n }\r\n };\r\n this.linkDecorations = this.editor.deltaDecorations(this.linkDecorations, [newDecorations]);\r\n }\r\n removeLinkDecorations() {\r\n if (this.linkDecorations.length > 0) {\r\n this.linkDecorations = this.editor.deltaDecorations(this.linkDecorations, []);\r\n }\r\n }\r\n isEnabled(mouseEvent, withKey) {\r\n return this.editor.hasModel() &&\r\n mouseEvent.isNoneOrSingleMouseDown &&\r\n (mouseEvent.target.type === 6 /* CONTENT_TEXT */) &&\r\n (mouseEvent.hasTriggerModifier || (withKey ? withKey.keyCodeIsTriggerKey : false)) &&\r\n DefinitionProviderRegistry.has(this.editor.getModel());\r\n }\r\n findDefinition(position, token) {\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return Promise.resolve(null);\r\n }\r\n return getDefinitionsAtPosition(model, position, token);\r\n }\r\n gotoDefinition(position, openToSide) {\r\n this.editor.setPosition(position);\r\n return this.editor.invokeWithinContext((accessor) => {\r\n const canPeek = !openToSide && this.editor.getOption(76 /* definitionLinkOpensInPeek */) && !this.isInPeekEditor(accessor);\r\n const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined });\r\n return action.run(accessor, this.editor);\r\n });\r\n }\r\n isInPeekEditor(accessor) {\r\n const contextKeyService = accessor.get(IContextKeyService);\r\n return PeekContext.inPeekEditor.getValue(contextKeyService);\r\n }\r\n dispose() {\r\n this.toUnhook.dispose();\r\n }\r\n};\r\nGotoDefinitionAtPositionEditorContribution.ID = 'editor.contrib.gotodefinitionatposition';\r\nGotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES = 8;\r\nGotoDefinitionAtPositionEditorContribution = __decorate([\r\n __param(1, ITextModelService),\r\n __param(2, IModeService)\r\n], GotoDefinitionAtPositionEditorContribution);\r\nexport { GotoDefinitionAtPositionEditorContribution };\r\nregisterEditorContribution(GotoDefinitionAtPositionEditorContribution.ID, GotoDefinitionAtPositionEditorContribution);\r\nregisterThemingParticipant((theme, collector) => {\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .goto-definition-link { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { ModesContentHoverWidget } from './modesContentHover.js';\r\nimport { ModesGlyphHoverWidget } from './modesGlyphHover.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { editorHoverBackground, editorHoverBorder, editorHoverHighlight, textCodeBlockBackground, textLinkForeground, editorHoverStatusBarBackground, editorHoverForeground, textLinkActiveForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { GotoDefinitionAtPositionEditorContribution } from '../gotoSymbol/link/goToDefinitionAtPosition.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nlet ModesHoverController = class ModesHoverController {\r\n constructor(_editor, _instantiationService, _openerService, _modeService, _contextKeyService) {\r\n this._editor = _editor;\r\n this._instantiationService = _instantiationService;\r\n this._openerService = _openerService;\r\n this._modeService = _modeService;\r\n this._toUnhook = new DisposableStore();\r\n this._isMouseDown = false;\r\n this._hoverClicked = false;\r\n this._contentWidget = null;\r\n this._glyphWidget = null;\r\n this._hookEvents();\r\n this._didChangeConfigurationHandler = this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(51 /* hover */)) {\r\n this._unhookEvents();\r\n this._hookEvents();\r\n }\r\n });\r\n this._hoverVisibleKey = EditorContextKeys.hoverVisible.bindTo(_contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ModesHoverController.ID);\r\n }\r\n _hookEvents() {\r\n const hideWidgetsEventHandler = () => this._hideWidgets();\r\n const hoverOpts = this._editor.getOption(51 /* hover */);\r\n this._isHoverEnabled = hoverOpts.enabled;\r\n this._isHoverSticky = hoverOpts.sticky;\r\n if (this._isHoverEnabled) {\r\n this._toUnhook.add(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\r\n this._toUnhook.add(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\r\n this._toUnhook.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\r\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\r\n this._toUnhook.add(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\r\n }\r\n else {\r\n this._toUnhook.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\r\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\r\n }\r\n this._toUnhook.add(this._editor.onMouseLeave(hideWidgetsEventHandler));\r\n this._toUnhook.add(this._editor.onDidChangeModel(hideWidgetsEventHandler));\r\n this._toUnhook.add(this._editor.onDidScrollChange((e) => this._onEditorScrollChanged(e)));\r\n }\r\n _unhookEvents() {\r\n this._toUnhook.clear();\r\n }\r\n _onModelDecorationsChanged() {\r\n var _a, _b;\r\n (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.onModelDecorationsChanged();\r\n (_b = this._glyphWidget) === null || _b === void 0 ? void 0 : _b.onModelDecorationsChanged();\r\n }\r\n _onEditorScrollChanged(e) {\r\n if (e.scrollTopChanged || e.scrollLeftChanged) {\r\n this._hideWidgets();\r\n }\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n this._isMouseDown = true;\r\n const targetType = mouseEvent.target.type;\r\n if (targetType === 9 /* CONTENT_WIDGET */ && mouseEvent.target.detail === ModesContentHoverWidget.ID) {\r\n this._hoverClicked = true;\r\n // mouse down on top of content hover widget\r\n return;\r\n }\r\n if (targetType === 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail === ModesGlyphHoverWidget.ID) {\r\n // mouse down on top of overlay hover widget\r\n return;\r\n }\r\n if (targetType !== 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail !== ModesGlyphHoverWidget.ID) {\r\n this._hoverClicked = false;\r\n }\r\n this._hideWidgets();\r\n }\r\n _onEditorMouseUp(mouseEvent) {\r\n this._isMouseDown = false;\r\n }\r\n _onEditorMouseMove(mouseEvent) {\r\n var _a, _b, _c, _d, _e;\r\n let targetType = mouseEvent.target.type;\r\n if (this._isMouseDown && this._hoverClicked) {\r\n return;\r\n }\r\n if (this._isHoverSticky && targetType === 9 /* CONTENT_WIDGET */ && mouseEvent.target.detail === ModesContentHoverWidget.ID) {\r\n // mouse moved on top of content hover widget\r\n return;\r\n }\r\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)) {\r\n // selected text within content hover widget\r\n return;\r\n }\r\n if (!this._isHoverSticky && targetType === 9 /* CONTENT_WIDGET */ && mouseEvent.target.detail === ModesContentHoverWidget.ID\r\n && ((_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.isColorPickerVisible())) {\r\n // though the hover is not sticky, the color picker needs to.\r\n return;\r\n }\r\n if (this._isHoverSticky && targetType === 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail === ModesGlyphHoverWidget.ID) {\r\n // mouse moved on top of overlay hover widget\r\n return;\r\n }\r\n if (!this._isHoverEnabled) {\r\n this._hideWidgets();\r\n return;\r\n }\r\n const contentWidget = this._getOrCreateContentWidget();\r\n if (contentWidget.maybeShowAt(mouseEvent)) {\r\n (_d = this._glyphWidget) === null || _d === void 0 ? void 0 : _d.hide();\r\n return;\r\n }\r\n if (targetType === 2 /* GUTTER_GLYPH_MARGIN */ && mouseEvent.target.position) {\r\n (_e = this._contentWidget) === null || _e === void 0 ? void 0 : _e.hide();\r\n if (!this._glyphWidget) {\r\n this._glyphWidget = new ModesGlyphHoverWidget(this._editor, this._modeService, this._openerService);\r\n }\r\n this._glyphWidget.startShowingAt(mouseEvent.target.position.lineNumber);\r\n return;\r\n }\r\n this._hideWidgets();\r\n }\r\n _onKeyDown(e) {\r\n if (e.keyCode !== 5 /* Ctrl */ && e.keyCode !== 6 /* Alt */ && e.keyCode !== 57 /* Meta */ && e.keyCode !== 4 /* Shift */) {\r\n // Do not hide hover when a modifier key is pressed\r\n this._hideWidgets();\r\n }\r\n }\r\n _hideWidgets() {\r\n var _a, _b, _c;\r\n if ((this._isMouseDown && this._hoverClicked && ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible()))) {\r\n return;\r\n }\r\n this._hoverClicked = false;\r\n (_b = this._glyphWidget) === null || _b === void 0 ? void 0 : _b.hide();\r\n (_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.hide();\r\n }\r\n _getOrCreateContentWidget() {\r\n if (!this._contentWidget) {\r\n this._contentWidget = this._instantiationService.createInstance(ModesContentHoverWidget, this._editor, this._hoverVisibleKey);\r\n }\r\n return this._contentWidget;\r\n }\r\n isColorPickerVisible() {\r\n var _a;\r\n return ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible()) || false;\r\n }\r\n showContentHover(range, mode, focus) {\r\n this._getOrCreateContentWidget().startShowingAtRange(range, mode, focus);\r\n }\r\n dispose() {\r\n var _a, _b;\r\n this._unhookEvents();\r\n this._toUnhook.dispose();\r\n this._didChangeConfigurationHandler.dispose();\r\n (_a = this._glyphWidget) === null || _a === void 0 ? void 0 : _a.dispose();\r\n (_b = this._contentWidget) === null || _b === void 0 ? void 0 : _b.dispose();\r\n }\r\n};\r\nModesHoverController.ID = 'editor.contrib.hover';\r\nModesHoverController = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IOpenerService),\r\n __param(3, IModeService),\r\n __param(4, IContextKeyService)\r\n], ModesHoverController);\r\nexport { ModesHoverController };\r\nclass ShowHoverAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showHover',\r\n label: nls.localize({\r\n key: 'showHover',\r\n comment: [\r\n 'Label for action that will trigger the showing of a hover in the editor.',\r\n 'This allows for users to show the hover without using the mouse.'\r\n ]\r\n }, \"Show Hover\"),\r\n alias: 'Show Hover',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 39 /* KEY_I */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let controller = ModesHoverController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n const position = editor.getPosition();\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n const focus = editor.getOption(2 /* accessibilitySupport */) === 2 /* Enabled */;\r\n controller.showContentHover(range, 1 /* Immediate */, focus);\r\n }\r\n}\r\nclass ShowDefinitionPreviewHoverAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showDefinitionPreviewHover',\r\n label: nls.localize({\r\n key: 'showDefinitionPreviewHover',\r\n comment: [\r\n 'Label for action that will trigger the showing of definition preview hover in the editor.',\r\n 'This allows for users to show the definition preview hover without using the mouse.'\r\n ]\r\n }, \"Show Definition Preview Hover\"),\r\n alias: 'Show Definition Preview Hover',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = ModesHoverController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n const position = editor.getPosition();\r\n if (!position) {\r\n return;\r\n }\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n const goto = GotoDefinitionAtPositionEditorContribution.get(editor);\r\n const promise = goto.startFindDefinitionFromCursor(position);\r\n promise.then(() => {\r\n controller.showContentHover(range, 1 /* Immediate */, true);\r\n });\r\n }\r\n}\r\nregisterEditorContribution(ModesHoverController.ID, ModesHoverController);\r\nregisterEditorAction(ShowHoverAction);\r\nregisterEditorAction(ShowDefinitionPreviewHoverAction);\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const editorHoverHighlightColor = theme.getColor(editorHoverHighlight);\r\n if (editorHoverHighlightColor) {\r\n collector.addRule(`.monaco-editor .hoverHighlight { background-color: ${editorHoverHighlightColor}; }`);\r\n }\r\n const hoverBackground = theme.getColor(editorHoverBackground);\r\n if (hoverBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover { background-color: ${hoverBackground}; }`);\r\n }\r\n const hoverBorder = theme.getColor(editorHoverBorder);\r\n if (hoverBorder) {\r\n collector.addRule(`.monaco-editor .monaco-hover { border: 1px solid ${hoverBorder}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${hoverBorder.transparent(0.5)}; }`);\r\n }\r\n const link = theme.getColor(textLinkForeground);\r\n if (link) {\r\n collector.addRule(`.monaco-editor .monaco-hover a { color: ${link}; }`);\r\n }\r\n const linkHover = theme.getColor(textLinkActiveForeground);\r\n if (linkHover) {\r\n collector.addRule(`.monaco-editor .monaco-hover a:hover { color: ${linkHover}; }`);\r\n }\r\n const hoverForeground = theme.getColor(editorHoverForeground);\r\n if (hoverForeground) {\r\n collector.addRule(`.monaco-editor .monaco-hover { color: ${hoverForeground}; }`);\r\n }\r\n const actionsBackground = theme.getColor(editorHoverStatusBarBackground);\r\n if (actionsBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover .hover-row .actions { background-color: ${actionsBackground}; }`);\r\n }\r\n const codeBackground = theme.getColor(textCodeBlockBackground);\r\n if (codeBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover code { background-color: ${codeBackground}; }`);\r\n }\r\n});\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./links.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./links.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { LinkProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { isDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nexport class Link {\r\n constructor(link, provider) {\r\n this._link = link;\r\n this._provider = provider;\r\n }\r\n toJSON() {\r\n return {\r\n range: this.range,\r\n url: this.url,\r\n tooltip: this.tooltip\r\n };\r\n }\r\n get range() {\r\n return this._link.range;\r\n }\r\n get url() {\r\n return this._link.url;\r\n }\r\n get tooltip() {\r\n return this._link.tooltip;\r\n }\r\n resolve(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._link.url) {\r\n return this._link.url;\r\n }\r\n if (typeof this._provider.resolveLink === 'function') {\r\n return Promise.resolve(this._provider.resolveLink(this._link, token)).then(value => {\r\n this._link = value || this._link;\r\n if (this._link.url) {\r\n // recurse\r\n return this.resolve(token);\r\n }\r\n return Promise.reject(new Error('missing'));\r\n });\r\n }\r\n return Promise.reject(new Error('missing'));\r\n });\r\n }\r\n}\r\nexport class LinksList {\r\n constructor(tuples) {\r\n this._disposables = new DisposableStore();\r\n let links = [];\r\n for (const [list, provider] of tuples) {\r\n // merge all links\r\n const newLinks = list.links.map(link => new Link(link, provider));\r\n links = LinksList._union(links, newLinks);\r\n // register disposables\r\n if (isDisposable(list)) {\r\n this._disposables.add(list);\r\n }\r\n }\r\n this.links = links;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this.links.length = 0;\r\n }\r\n static _union(oldLinks, newLinks) {\r\n // reunite oldLinks with newLinks and remove duplicates\r\n let result = [];\r\n let oldIndex;\r\n let oldLen;\r\n let newIndex;\r\n let newLen;\r\n for (oldIndex = 0, newIndex = 0, oldLen = oldLinks.length, newLen = newLinks.length; oldIndex < oldLen && newIndex < newLen;) {\r\n const oldLink = oldLinks[oldIndex];\r\n const newLink = newLinks[newIndex];\r\n if (Range.areIntersectingOrTouching(oldLink.range, newLink.range)) {\r\n // Remove the oldLink\r\n oldIndex++;\r\n continue;\r\n }\r\n const comparisonResult = Range.compareRangesUsingStarts(oldLink.range, newLink.range);\r\n if (comparisonResult < 0) {\r\n // oldLink is before\r\n result.push(oldLink);\r\n oldIndex++;\r\n }\r\n else {\r\n // newLink is before\r\n result.push(newLink);\r\n newIndex++;\r\n }\r\n }\r\n for (; oldIndex < oldLen; oldIndex++) {\r\n result.push(oldLinks[oldIndex]);\r\n }\r\n for (; newIndex < newLen; newIndex++) {\r\n result.push(newLinks[newIndex]);\r\n }\r\n return result;\r\n }\r\n}\r\nexport function getLinks(model, token) {\r\n const lists = [];\r\n // ask all providers for links in parallel\r\n const promises = LinkProviderRegistry.ordered(model).reverse().map((provider, i) => {\r\n return Promise.resolve(provider.provideLinks(model, token)).then(result => {\r\n if (result) {\r\n lists[i] = [result, provider];\r\n }\r\n }, onUnexpectedExternalError);\r\n });\r\n return Promise.all(promises).then(() => {\r\n const result = new LinksList(coalesce(lists));\r\n if (!token.isCancellationRequested) {\r\n return result;\r\n }\r\n result.dispose();\r\n return new LinksList([]);\r\n });\r\n}\r\nCommandsRegistry.registerCommand('_executeLinkProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n let [uri, resolveCount] = args;\r\n assertType(uri instanceof URI);\r\n if (typeof resolveCount !== 'number') {\r\n resolveCount = 0;\r\n }\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return [];\r\n }\r\n const list = yield getLinks(model, CancellationToken.None);\r\n if (!list) {\r\n return [];\r\n }\r\n // resolve links\r\n for (let i = 0; i < Math.min(resolveCount, list.links.length); i++) {\r\n yield list.links[i].resolve(CancellationToken.None);\r\n }\r\n const result = list.links.slice(0);\r\n list.dispose();\r\n return result;\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './links.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as async from '../../../base/common/async.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { LinkProviderRegistry } from '../../common/modes.js';\r\nimport { ClickLinkGesture } from '../gotoSymbol/link/clickLinkGesture.js';\r\nimport { getLinks } from './getLinks.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { editorActiveLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport * as resources from '../../../base/common/resources.js';\r\nfunction getHoverMessage(link, useMetaKey) {\r\n const executeCmd = link.url && /^command:/i.test(link.url.toString());\r\n const label = link.tooltip\r\n ? link.tooltip\r\n : executeCmd\r\n ? nls.localize('links.navigate.executeCmd', 'Execute command')\r\n : nls.localize('links.navigate.follow', 'Follow link');\r\n const kb = useMetaKey\r\n ? platform.isMacintosh\r\n ? nls.localize('links.navigate.kb.meta.mac', \"cmd + click\")\r\n : nls.localize('links.navigate.kb.meta', \"ctrl + click\")\r\n : platform.isMacintosh\r\n ? nls.localize('links.navigate.kb.alt.mac', \"option + click\")\r\n : nls.localize('links.navigate.kb.alt', \"alt + click\");\r\n if (link.url) {\r\n let nativeLabel = '';\r\n if (/^command:/i.test(link.url.toString())) {\r\n // Don't show complete command arguments in the native tooltip\r\n const match = link.url.toString().match(/^command:([^?#]+)/);\r\n if (match) {\r\n const commandId = match[1];\r\n const nativeLabelText = nls.localize('tooltip.explanation', \"Execute command {0}\", commandId);\r\n nativeLabel = ` \"${nativeLabelText}\"`;\r\n }\r\n }\r\n const hoverMessage = new MarkdownString('', true).appendMarkdown(`[${label}](${link.url.toString(true)}${nativeLabel}) (${kb})`);\r\n return hoverMessage;\r\n }\r\n else {\r\n return new MarkdownString().appendText(`${label} (${kb})`);\r\n }\r\n}\r\nconst decoration = {\r\n general: ModelDecorationOptions.register({\r\n description: 'detected-link',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n collapseOnReplaceEdit: true,\r\n inlineClassName: 'detected-link'\r\n }),\r\n active: ModelDecorationOptions.register({\r\n description: 'detected-link-active',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n collapseOnReplaceEdit: true,\r\n inlineClassName: 'detected-link-active'\r\n })\r\n};\r\nclass LinkOccurrence {\r\n constructor(link, decorationId) {\r\n this.link = link;\r\n this.decorationId = decorationId;\r\n }\r\n static decoration(link, useMetaKey) {\r\n return {\r\n range: link.range,\r\n options: LinkOccurrence._getOptions(link, useMetaKey, false)\r\n };\r\n }\r\n static _getOptions(link, useMetaKey, isActive) {\r\n const options = Object.assign({}, (isActive ? decoration.active : decoration.general));\r\n options.hoverMessage = getHoverMessage(link, useMetaKey);\r\n return options;\r\n }\r\n activate(changeAccessor, useMetaKey) {\r\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, true));\r\n }\r\n deactivate(changeAccessor, useMetaKey) {\r\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, false));\r\n }\r\n}\r\nlet LinkDetector = class LinkDetector {\r\n constructor(editor, openerService, notificationService) {\r\n this.listenersToRemove = new DisposableStore();\r\n this.editor = editor;\r\n this.openerService = openerService;\r\n this.notificationService = notificationService;\r\n let clickLinkGesture = new ClickLinkGesture(editor);\r\n this.listenersToRemove.add(clickLinkGesture);\r\n this.listenersToRemove.add(clickLinkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\r\n this._onEditorMouseMove(mouseEvent, keyboardEvent);\r\n }));\r\n this.listenersToRemove.add(clickLinkGesture.onExecute((e) => {\r\n this.onEditorMouseUp(e);\r\n }));\r\n this.listenersToRemove.add(clickLinkGesture.onCancel((e) => {\r\n this.cleanUpActiveLinkDecoration();\r\n }));\r\n this.enabled = editor.getOption(61 /* links */);\r\n this.listenersToRemove.add(editor.onDidChangeConfiguration((e) => {\r\n const enabled = editor.getOption(61 /* links */);\r\n if (this.enabled === enabled) {\r\n // No change in our configuration option\r\n return;\r\n }\r\n this.enabled = enabled;\r\n // Remove any links (for the getting disabled case)\r\n this.updateDecorations([]);\r\n // Stop any computation (for the getting disabled case)\r\n this.stop();\r\n // Start computing (for the getting enabled case)\r\n this.beginCompute();\r\n }));\r\n this.listenersToRemove.add(editor.onDidChangeModelContent((e) => this.onChange()));\r\n this.listenersToRemove.add(editor.onDidChangeModel((e) => this.onModelChanged()));\r\n this.listenersToRemove.add(editor.onDidChangeModelLanguage((e) => this.onModelModeChanged()));\r\n this.listenersToRemove.add(LinkProviderRegistry.onDidChange((e) => this.onModelModeChanged()));\r\n this.timeout = new async.TimeoutTimer();\r\n this.computePromise = null;\r\n this.activeLinksList = null;\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n this.beginCompute();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(LinkDetector.ID);\r\n }\r\n onModelChanged() {\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n this.stop();\r\n this.beginCompute();\r\n }\r\n onModelModeChanged() {\r\n this.stop();\r\n this.beginCompute();\r\n }\r\n onChange() {\r\n this.timeout.setIfNotSet(() => this.beginCompute(), LinkDetector.RECOMPUTE_TIME);\r\n }\r\n beginCompute() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.editor.hasModel() || !this.enabled) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n if (!LinkProviderRegistry.has(model)) {\r\n return;\r\n }\r\n if (this.activeLinksList) {\r\n this.activeLinksList.dispose();\r\n this.activeLinksList = null;\r\n }\r\n this.computePromise = async.createCancelablePromise(token => getLinks(model, token));\r\n try {\r\n this.activeLinksList = yield this.computePromise;\r\n this.updateDecorations(this.activeLinksList.links);\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n finally {\r\n this.computePromise = null;\r\n }\r\n });\r\n }\r\n updateDecorations(links) {\r\n const useMetaKey = (this.editor.getOption(68 /* multiCursorModifier */) === 'altKey');\r\n let oldDecorations = [];\r\n let keys = Object.keys(this.currentOccurrences);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n let decorationId = keys[i];\r\n let occurance = this.currentOccurrences[decorationId];\r\n oldDecorations.push(occurance.decorationId);\r\n }\r\n let newDecorations = [];\r\n if (links) {\r\n // Not sure why this is sometimes null\r\n for (const link of links) {\r\n newDecorations.push(LinkOccurrence.decoration(link, useMetaKey));\r\n }\r\n }\r\n let decorations = this.editor.deltaDecorations(oldDecorations, newDecorations);\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n let occurance = new LinkOccurrence(links[i], decorations[i]);\r\n this.currentOccurrences[occurance.decorationId] = occurance;\r\n }\r\n }\r\n _onEditorMouseMove(mouseEvent, withKey) {\r\n const useMetaKey = (this.editor.getOption(68 /* multiCursorModifier */) === 'altKey');\r\n if (this.isEnabled(mouseEvent, withKey)) {\r\n this.cleanUpActiveLinkDecoration(); // always remove previous link decoration as their can only be one\r\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\r\n if (occurrence) {\r\n this.editor.changeDecorations((changeAccessor) => {\r\n occurrence.activate(changeAccessor, useMetaKey);\r\n this.activeLinkDecorationId = occurrence.decorationId;\r\n });\r\n }\r\n }\r\n else {\r\n this.cleanUpActiveLinkDecoration();\r\n }\r\n }\r\n cleanUpActiveLinkDecoration() {\r\n const useMetaKey = (this.editor.getOption(68 /* multiCursorModifier */) === 'altKey');\r\n if (this.activeLinkDecorationId) {\r\n const occurrence = this.currentOccurrences[this.activeLinkDecorationId];\r\n if (occurrence) {\r\n this.editor.changeDecorations((changeAccessor) => {\r\n occurrence.deactivate(changeAccessor, useMetaKey);\r\n });\r\n }\r\n this.activeLinkDecorationId = null;\r\n }\r\n }\r\n onEditorMouseUp(mouseEvent) {\r\n if (!this.isEnabled(mouseEvent)) {\r\n return;\r\n }\r\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\r\n if (!occurrence) {\r\n return;\r\n }\r\n this.openLinkOccurrence(occurrence, mouseEvent.hasSideBySideModifier, true /* from user gesture */);\r\n }\r\n openLinkOccurrence(occurrence, openToSide, fromUserGesture = false) {\r\n if (!this.openerService) {\r\n return;\r\n }\r\n const { link } = occurrence;\r\n link.resolve(CancellationToken.None).then(uri => {\r\n // Support for relative file URIs of the shape file://./relativeFile.txt or file:///./relativeFile.txt\r\n if (typeof uri === 'string' && this.editor.hasModel()) {\r\n const modelUri = this.editor.getModel().uri;\r\n if (modelUri.scheme === Schemas.file && uri.startsWith(`${Schemas.file}:`)) {\r\n const parsedUri = URI.parse(uri);\r\n if (parsedUri.scheme === Schemas.file) {\r\n const fsPath = resources.originalFSPath(parsedUri);\r\n let relativePath = null;\r\n if (fsPath.startsWith('/./')) {\r\n relativePath = `.${fsPath.substr(1)}`;\r\n }\r\n else if (fsPath.startsWith('//./')) {\r\n relativePath = `.${fsPath.substr(2)}`;\r\n }\r\n if (relativePath) {\r\n uri = resources.joinPath(modelUri, relativePath);\r\n }\r\n }\r\n }\r\n }\r\n return this.openerService.open(uri, { openToSide, fromUserGesture, allowContributedOpeners: true, allowCommands: true });\r\n }, err => {\r\n const messageOrError = err instanceof Error ? err.message : err;\r\n // different error cases\r\n if (messageOrError === 'invalid') {\r\n this.notificationService.warn(nls.localize('invalid.url', 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));\r\n }\r\n else if (messageOrError === 'missing') {\r\n this.notificationService.warn(nls.localize('missing.url', 'Failed to open this link because its target is missing.'));\r\n }\r\n else {\r\n onUnexpectedError(err);\r\n }\r\n });\r\n }\r\n getLinkOccurrence(position) {\r\n if (!this.editor.hasModel() || !position) {\r\n return null;\r\n }\r\n const decorations = this.editor.getModel().getDecorationsInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn: position.column,\r\n endLineNumber: position.lineNumber,\r\n endColumn: position.column\r\n }, 0, true);\r\n for (const decoration of decorations) {\r\n const currentOccurrence = this.currentOccurrences[decoration.id];\r\n if (currentOccurrence) {\r\n return currentOccurrence;\r\n }\r\n }\r\n return null;\r\n }\r\n isEnabled(mouseEvent, withKey) {\r\n return Boolean((mouseEvent.target.type === 6 /* CONTENT_TEXT */)\r\n && (mouseEvent.hasTriggerModifier || (withKey && withKey.keyCodeIsTriggerKey)));\r\n }\r\n stop() {\r\n var _a;\r\n this.timeout.cancel();\r\n if (this.activeLinksList) {\r\n (_a = this.activeLinksList) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this.activeLinksList = null;\r\n }\r\n if (this.computePromise) {\r\n this.computePromise.cancel();\r\n this.computePromise = null;\r\n }\r\n }\r\n dispose() {\r\n this.listenersToRemove.dispose();\r\n this.stop();\r\n this.timeout.dispose();\r\n }\r\n};\r\nLinkDetector.ID = 'editor.linkDetector';\r\nLinkDetector.RECOMPUTE_TIME = 1000; // ms\r\nLinkDetector = __decorate([\r\n __param(1, IOpenerService),\r\n __param(2, INotificationService)\r\n], LinkDetector);\r\nexport { LinkDetector };\r\nclass OpenLinkAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.openLink',\r\n label: nls.localize('label', \"Open Link\"),\r\n alias: 'Open Link',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let linkDetector = LinkDetector.get(editor);\r\n if (!linkDetector) {\r\n return;\r\n }\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let selections = editor.getSelections();\r\n for (let sel of selections) {\r\n let link = linkDetector.getLinkOccurrence(sel.getEndPosition());\r\n if (link) {\r\n linkDetector.openLinkOccurrence(link, false);\r\n }\r\n }\r\n }\r\n}\r\nregisterEditorContribution(LinkDetector.ID, LinkDetector);\r\nregisterEditorAction(OpenLinkAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .detected-link-active { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nexport class BracketSelectionRangeProvider {\r\n provideSelectionRanges(model, positions) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = [];\r\n for (const position of positions) {\r\n const bucket = [];\r\n result.push(bucket);\r\n const ranges = new Map();\r\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsRightYield(resolve, 0, model, position, ranges));\r\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsLeftYield(resolve, 0, model, position, ranges, bucket));\r\n }\r\n return result;\r\n });\r\n }\r\n static _bracketsRightYield(resolve, round, model, pos, ranges) {\r\n const counts = new Map();\r\n const t1 = Date.now();\r\n while (true) {\r\n if (round >= BracketSelectionRangeProvider._maxRounds) {\r\n resolve();\r\n break;\r\n }\r\n if (!pos) {\r\n resolve();\r\n break;\r\n }\r\n let bracket = model.findNextBracket(pos);\r\n if (!bracket) {\r\n resolve();\r\n break;\r\n }\r\n let d = Date.now() - t1;\r\n if (d > BracketSelectionRangeProvider._maxDuration) {\r\n setTimeout(() => BracketSelectionRangeProvider._bracketsRightYield(resolve, round + 1, model, pos, ranges));\r\n break;\r\n }\r\n const key = bracket.close[0];\r\n if (bracket.isOpen) {\r\n // wait for closing\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n counts.set(key, val + 1);\r\n }\r\n else {\r\n // process closing\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n val -= 1;\r\n counts.set(key, Math.max(0, val));\r\n if (val < 0) {\r\n let list = ranges.get(key);\r\n if (!list) {\r\n list = new LinkedList();\r\n ranges.set(key, list);\r\n }\r\n list.push(bracket.range);\r\n }\r\n }\r\n pos = bracket.range.getEndPosition();\r\n }\r\n }\r\n static _bracketsLeftYield(resolve, round, model, pos, ranges, bucket) {\r\n const counts = new Map();\r\n const t1 = Date.now();\r\n while (true) {\r\n if (round >= BracketSelectionRangeProvider._maxRounds && ranges.size === 0) {\r\n resolve();\r\n break;\r\n }\r\n if (!pos) {\r\n resolve();\r\n break;\r\n }\r\n let bracket = model.findPrevBracket(pos);\r\n if (!bracket) {\r\n resolve();\r\n break;\r\n }\r\n let d = Date.now() - t1;\r\n if (d > BracketSelectionRangeProvider._maxDuration) {\r\n setTimeout(() => BracketSelectionRangeProvider._bracketsLeftYield(resolve, round + 1, model, pos, ranges, bucket));\r\n break;\r\n }\r\n const key = bracket.close[0];\r\n if (!bracket.isOpen) {\r\n // wait for opening\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n counts.set(key, val + 1);\r\n }\r\n else {\r\n // opening\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n val -= 1;\r\n counts.set(key, Math.max(0, val));\r\n if (val < 0) {\r\n let list = ranges.get(key);\r\n if (list) {\r\n let closing = list.shift();\r\n if (list.size === 0) {\r\n ranges.delete(key);\r\n }\r\n const innerBracket = Range.fromPositions(bracket.range.getEndPosition(), closing.getStartPosition());\r\n const outerBracket = Range.fromPositions(bracket.range.getStartPosition(), closing.getEndPosition());\r\n bucket.push({ range: innerBracket });\r\n bucket.push({ range: outerBracket });\r\n BracketSelectionRangeProvider._addBracketLeading(model, outerBracket, bucket);\r\n }\r\n }\r\n }\r\n pos = bracket.range.getStartPosition();\r\n }\r\n }\r\n static _addBracketLeading(model, bracket, bucket) {\r\n if (bracket.startLineNumber === bracket.endLineNumber) {\r\n return;\r\n }\r\n // xxxxxxxx {\r\n //\r\n // }\r\n const startLine = bracket.startLineNumber;\r\n const column = model.getLineFirstNonWhitespaceColumn(startLine);\r\n if (column !== 0 && column !== bracket.startColumn) {\r\n bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()) });\r\n bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()) });\r\n }\r\n // xxxxxxxx\r\n // {\r\n //\r\n // }\r\n const aboveLine = startLine - 1;\r\n if (aboveLine > 0) {\r\n const column = model.getLineFirstNonWhitespaceColumn(aboveLine);\r\n if (column === bracket.startColumn && column !== model.getLineLastNonWhitespaceColumn(aboveLine)) {\r\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()) });\r\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()) });\r\n }\r\n }\r\n }\r\n}\r\nBracketSelectionRangeProvider._maxDuration = 30;\r\nBracketSelectionRangeProvider._maxRounds = 2;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelCommand } from '../../browser/editorExtensions.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { WordSelectionRangeProvider } from './wordSelections.js';\r\nimport { BracketSelectionRangeProvider } from './bracketSelections.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nclass SelectionRanges {\r\n constructor(index, ranges) {\r\n this.index = index;\r\n this.ranges = ranges;\r\n }\r\n mov(fwd) {\r\n let index = this.index + (fwd ? 1 : -1);\r\n if (index < 0 || index >= this.ranges.length) {\r\n return this;\r\n }\r\n const res = new SelectionRanges(index, this.ranges);\r\n if (res.ranges[index].equalsRange(this.ranges[this.index])) {\r\n // next range equals this range, retry with next-next\r\n return res.mov(fwd);\r\n }\r\n return res;\r\n }\r\n}\r\nclass SmartSelectController {\r\n constructor(_editor) {\r\n this._editor = _editor;\r\n this._ignoreSelection = false;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SmartSelectController.ID);\r\n }\r\n dispose() {\r\n var _a;\r\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\r\n }\r\n run(forward) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const selections = this._editor.getSelections();\r\n const model = this._editor.getModel();\r\n if (!modes.SelectionRangeRegistry.has(model)) {\r\n return;\r\n }\r\n if (!this._state) {\r\n yield provideSelectionRanges(model, selections.map(s => s.getPosition()), this._editor.getOption(101 /* smartSelect */), CancellationToken.None).then(ranges => {\r\n var _a;\r\n if (!arrays.isNonEmptyArray(ranges) || ranges.length !== selections.length) {\r\n // invalid result\r\n return;\r\n }\r\n if (!this._editor.hasModel() || !arrays.equals(this._editor.getSelections(), selections, (a, b) => a.equalsSelection(b))) {\r\n // invalid editor state\r\n return;\r\n }\r\n for (let i = 0; i < ranges.length; i++) {\r\n ranges[i] = ranges[i].filter(range => {\r\n // filter ranges inside the selection\r\n return range.containsPosition(selections[i].getStartPosition()) && range.containsPosition(selections[i].getEndPosition());\r\n });\r\n // prepend current selection\r\n ranges[i].unshift(selections[i]);\r\n }\r\n this._state = ranges.map(ranges => new SelectionRanges(0, ranges));\r\n // listen to caret move and forget about state\r\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._selectionListener = this._editor.onDidChangeCursorPosition(() => {\r\n var _a;\r\n if (!this._ignoreSelection) {\r\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\r\n this._state = undefined;\r\n }\r\n });\r\n });\r\n }\r\n if (!this._state) {\r\n // no state\r\n return;\r\n }\r\n this._state = this._state.map(state => state.mov(forward));\r\n const newSelections = this._state.map(state => Selection.fromPositions(state.ranges[state.index].getStartPosition(), state.ranges[state.index].getEndPosition()));\r\n this._ignoreSelection = true;\r\n try {\r\n this._editor.setSelections(newSelections);\r\n }\r\n finally {\r\n this._ignoreSelection = false;\r\n }\r\n });\r\n }\r\n}\r\nSmartSelectController.ID = 'editor.contrib.smartSelectController';\r\nclass AbstractSmartSelect extends EditorAction {\r\n constructor(forward, opts) {\r\n super(opts);\r\n this._forward = forward;\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = SmartSelectController.get(editor);\r\n if (controller) {\r\n yield controller.run(this._forward);\r\n }\r\n });\r\n }\r\n}\r\nclass GrowSelectionAction extends AbstractSmartSelect {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.smartSelect.expand',\r\n label: nls.localize('smartSelect.expand', \"Expand Selection\"),\r\n alias: 'Expand Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 17 /* RightArrow */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 256 /* WinCtrl */ | 1024 /* Shift */ | 17 /* RightArrow */,\r\n secondary: [256 /* WinCtrl */ | 1024 /* Shift */ | 17 /* RightArrow */],\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSmartSelectGrow', comment: ['&& denotes a mnemonic'] }, \"&&Expand Selection\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\n// renamed command id\r\nCommandsRegistry.registerCommandAlias('editor.action.smartSelect.grow', 'editor.action.smartSelect.expand');\r\nclass ShrinkSelectionAction extends AbstractSmartSelect {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.smartSelect.shrink',\r\n label: nls.localize('smartSelect.shrink', \"Shrink Selection\"),\r\n alias: 'Shrink Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 15 /* LeftArrow */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 256 /* WinCtrl */ | 1024 /* Shift */ | 15 /* LeftArrow */,\r\n secondary: [256 /* WinCtrl */ | 1024 /* Shift */ | 15 /* LeftArrow */],\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSmartSelectShrink', comment: ['&& denotes a mnemonic'] }, \"&&Shrink Selection\"),\r\n order: 3\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(SmartSelectController.ID, SmartSelectController);\r\nregisterEditorAction(GrowSelectionAction);\r\nregisterEditorAction(ShrinkSelectionAction);\r\n// word selection\r\nmodes.SelectionRangeRegistry.register('*', new WordSelectionRangeProvider());\r\nexport function provideSelectionRanges(model, positions, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const providers = modes.SelectionRangeRegistry.all(model);\r\n if (providers.length === 1) {\r\n // add word selection and bracket selection when no provider exists\r\n providers.unshift(new BracketSelectionRangeProvider());\r\n }\r\n let work = [];\r\n let allRawRanges = [];\r\n for (const provider of providers) {\r\n work.push(Promise.resolve(provider.provideSelectionRanges(model, positions, token)).then(allProviderRanges => {\r\n if (arrays.isNonEmptyArray(allProviderRanges) && allProviderRanges.length === positions.length) {\r\n for (let i = 0; i < positions.length; i++) {\r\n if (!allRawRanges[i]) {\r\n allRawRanges[i] = [];\r\n }\r\n for (const oneProviderRanges of allProviderRanges[i]) {\r\n if (Range.isIRange(oneProviderRanges.range) && Range.containsPosition(oneProviderRanges.range, positions[i])) {\r\n allRawRanges[i].push(Range.lift(oneProviderRanges.range));\r\n }\r\n }\r\n }\r\n }\r\n }, onUnexpectedExternalError));\r\n }\r\n yield Promise.all(work);\r\n return allRawRanges.map(oneRawRanges => {\r\n if (oneRawRanges.length === 0) {\r\n return [];\r\n }\r\n // sort all by start/end position\r\n oneRawRanges.sort((a, b) => {\r\n if (Position.isBefore(a.getStartPosition(), b.getStartPosition())) {\r\n return 1;\r\n }\r\n else if (Position.isBefore(b.getStartPosition(), a.getStartPosition())) {\r\n return -1;\r\n }\r\n else if (Position.isBefore(a.getEndPosition(), b.getEndPosition())) {\r\n return -1;\r\n }\r\n else if (Position.isBefore(b.getEndPosition(), a.getEndPosition())) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n // remove ranges that don't contain the former range or that are equal to the\r\n // former range\r\n let oneRanges = [];\r\n let last;\r\n for (const range of oneRawRanges) {\r\n if (!last || (Range.containsRange(range, last) && !Range.equalsRange(range, last))) {\r\n oneRanges.push(range);\r\n last = range;\r\n }\r\n }\r\n if (!options.selectLeadingAndTrailingWhitespace) {\r\n return oneRanges;\r\n }\r\n // add ranges that expand trivia at line starts and ends whenever a range\r\n // wraps onto the a new line\r\n let oneRangesWithTrivia = [oneRanges[0]];\r\n for (let i = 1; i < oneRanges.length; i++) {\r\n const prev = oneRanges[i - 1];\r\n const cur = oneRanges[i];\r\n if (cur.startLineNumber !== prev.startLineNumber || cur.endLineNumber !== prev.endLineNumber) {\r\n // add line/block range without leading/failing whitespace\r\n const rangeNoWhitespace = new Range(prev.startLineNumber, model.getLineFirstNonWhitespaceColumn(prev.startLineNumber), prev.endLineNumber, model.getLineLastNonWhitespaceColumn(prev.endLineNumber));\r\n if (rangeNoWhitespace.containsRange(prev) && !rangeNoWhitespace.equalsRange(prev) && cur.containsRange(rangeNoWhitespace) && !cur.equalsRange(rangeNoWhitespace)) {\r\n oneRangesWithTrivia.push(rangeNoWhitespace);\r\n }\r\n // add line/block range\r\n const rangeFull = new Range(prev.startLineNumber, 1, prev.endLineNumber, model.getLineMaxColumn(prev.endLineNumber));\r\n if (rangeFull.containsRange(prev) && !rangeFull.equalsRange(rangeNoWhitespace) && cur.containsRange(rangeFull) && !cur.equalsRange(rangeFull)) {\r\n oneRangesWithTrivia.push(rangeFull);\r\n }\r\n }\r\n oneRangesWithTrivia.push(cur);\r\n }\r\n return oneRangesWithTrivia;\r\n });\r\n });\r\n}\r\nregisterModelCommand('_executeSelectionRangeProvider', function (model, ...args) {\r\n const [positions] = args;\r\n return provideSelectionRanges(model, positions, { selectLeadingAndTrailingWhitespace: true }, CancellationToken.None);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { isUpperAsciiLetter, isLowerAsciiLetter } from '../../../base/common/strings.js';\r\nexport class WordSelectionRangeProvider {\r\n provideSelectionRanges(model, positions) {\r\n const result = [];\r\n for (const position of positions) {\r\n const bucket = [];\r\n result.push(bucket);\r\n this._addInWordRanges(bucket, model, position);\r\n this._addWordRanges(bucket, model, position);\r\n this._addWhitespaceLine(bucket, model, position);\r\n bucket.push({ range: model.getFullModelRange() });\r\n }\r\n return result;\r\n }\r\n _addInWordRanges(bucket, model, pos) {\r\n const obj = model.getWordAtPosition(pos);\r\n if (!obj) {\r\n return;\r\n }\r\n let { word, startColumn } = obj;\r\n let offset = pos.column - startColumn;\r\n let start = offset;\r\n let end = offset;\r\n let lastCh = 0;\r\n // LEFT anchor (start)\r\n for (; start >= 0; start--) {\r\n let ch = word.charCodeAt(start);\r\n if ((start !== offset) && (ch === 95 /* Underline */ || ch === 45 /* Dash */)) {\r\n // foo-bar OR foo_bar\r\n break;\r\n }\r\n else if (isLowerAsciiLetter(ch) && isUpperAsciiLetter(lastCh)) {\r\n // fooBar\r\n break;\r\n }\r\n lastCh = ch;\r\n }\r\n start += 1;\r\n // RIGHT anchor (end)\r\n for (; end < word.length; end++) {\r\n let ch = word.charCodeAt(end);\r\n if (isUpperAsciiLetter(ch) && isLowerAsciiLetter(lastCh)) {\r\n // fooBar\r\n break;\r\n }\r\n else if (ch === 95 /* Underline */ || ch === 45 /* Dash */) {\r\n // foo-bar OR foo_bar\r\n break;\r\n }\r\n lastCh = ch;\r\n }\r\n if (start < end) {\r\n bucket.push({ range: new Range(pos.lineNumber, startColumn + start, pos.lineNumber, startColumn + end) });\r\n }\r\n }\r\n _addWordRanges(bucket, model, pos) {\r\n const word = model.getWordAtPosition(pos);\r\n if (word) {\r\n bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn) });\r\n }\r\n }\r\n _addWhitespaceLine(bucket, model, pos) {\r\n if (model.getLineLength(pos.lineNumber) > 0\r\n && model.getLineFirstNonWhitespaceColumn(pos.lineNumber) === 0\r\n && model.getLineLastNonWhitespaceColumn(pos.lineNumber) === 0) {\r\n bucket.push({ range: new Range(pos.lineNumber, 1, pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)) });\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { TabFocus } from '../../common/config/commonEditorConfig.js';\r\nexport class ToggleTabFocusModeAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: ToggleTabFocusModeAction.ID,\r\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\"),\r\n alias: 'Toggle Tab Key Moves Focus',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 43 /* KEY_M */,\r\n mac: { primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 43 /* KEY_M */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const oldValue = TabFocus.getTabFocusMode();\r\n const newValue = !oldValue;\r\n TabFocus.setTabFocusMode(newValue);\r\n if (newValue) {\r\n alert(nls.localize('toggle.tabMovesFocus.on', \"Pressing Tab will now move focus to the next focusable element\"));\r\n }\r\n else {\r\n alert(nls.localize('toggle.tabMovesFocus.off', \"Pressing Tab will now insert the tab character\"));\r\n }\r\n }\r\n}\r\nToggleTabFocusModeAction.ID = 'editor.action.toggleTabFocusMode';\r\nregisterEditorAction(ToggleTabFocusModeAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { createCancelablePromise, first, timeout } from '../../../base/common/async.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { DocumentHighlightKind, DocumentHighlightProviderRegistry } from '../../common/modes.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { activeContrastBorder, editorSelectionHighlight, editorSelectionHighlightBorder, overviewRulerSelectionHighlightForeground, registerColor } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nconst editorWordHighlight = registerColor('editor.wordHighlightBackground', { dark: '#575757B8', light: '#57575740', hc: 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);\r\nconst editorWordHighlightStrong = registerColor('editor.wordHighlightStrongBackground', { dark: '#004972B8', light: '#0e639c40', hc: 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);\r\nconst editorWordHighlightBorder = registerColor('editor.wordHighlightBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('wordHighlightBorder', 'Border color of a symbol during read-access, like reading a variable.'));\r\nconst editorWordHighlightStrongBorder = registerColor('editor.wordHighlightStrongBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('wordHighlightStrongBorder', 'Border color of a symbol during write-access, like writing to a variable.'));\r\nconst overviewRulerWordHighlightForeground = registerColor('editorOverviewRuler.wordHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hc: '#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);\r\nconst overviewRulerWordHighlightStrongForeground = registerColor('editorOverviewRuler.wordHighlightStrongForeground', { dark: '#C0A0C0CC', light: '#C0A0C0CC', hc: '#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);\r\nconst ctxHasWordHighlights = new RawContextKey('hasWordHighlights', false);\r\nexport function getOccurrencesAtPosition(model, position, token) {\r\n const orderedByScore = DocumentHighlightProviderRegistry.ordered(model);\r\n // in order of score ask the occurrences provider\r\n // until someone response with a good result\r\n // (good = none empty array)\r\n return first(orderedByScore.map(provider => () => {\r\n return Promise.resolve(provider.provideDocumentHighlights(model, position, token))\r\n .then(undefined, onUnexpectedExternalError);\r\n }), arrays.isNonEmptyArray);\r\n}\r\nclass OccurenceAtPositionRequest {\r\n constructor(model, selection, wordSeparators) {\r\n this._wordRange = this._getCurrentWordRange(model, selection);\r\n this.result = createCancelablePromise(token => this._compute(model, selection, wordSeparators, token));\r\n }\r\n _getCurrentWordRange(model, selection) {\r\n const word = model.getWordAtPosition(selection.getPosition());\r\n if (word) {\r\n return new Range(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\r\n }\r\n return null;\r\n }\r\n isValid(model, selection, decorationIds) {\r\n const lineNumber = selection.startLineNumber;\r\n const startColumn = selection.startColumn;\r\n const endColumn = selection.endColumn;\r\n const currentWordRange = this._getCurrentWordRange(model, selection);\r\n let requestIsValid = Boolean(this._wordRange && this._wordRange.equalsRange(currentWordRange));\r\n // Even if we are on a different word, if that word is in the decorations ranges, the request is still valid\r\n // (Same symbol)\r\n for (let i = 0, len = decorationIds.length; !requestIsValid && i < len; i++) {\r\n let range = model.getDecorationRange(decorationIds[i]);\r\n if (range && range.startLineNumber === lineNumber) {\r\n if (range.startColumn <= startColumn && range.endColumn >= endColumn) {\r\n requestIsValid = true;\r\n }\r\n }\r\n }\r\n return requestIsValid;\r\n }\r\n cancel() {\r\n this.result.cancel();\r\n }\r\n}\r\nclass SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\r\n _compute(model, selection, wordSeparators, token) {\r\n return getOccurrencesAtPosition(model, selection.getPosition(), token).then(value => value || []);\r\n }\r\n}\r\nclass TextualOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\r\n constructor(model, selection, wordSeparators) {\r\n super(model, selection, wordSeparators);\r\n this._selectionIsEmpty = selection.isEmpty();\r\n }\r\n _compute(model, selection, wordSeparators, token) {\r\n return timeout(250, token).then(() => {\r\n if (!selection.isEmpty()) {\r\n return [];\r\n }\r\n const word = model.getWordAtPosition(selection.getPosition());\r\n if (!word || word.word.length > 1000) {\r\n return [];\r\n }\r\n const matches = model.findMatches(word.word, true, false, true, wordSeparators, false);\r\n return matches.map(m => {\r\n return {\r\n range: m.range,\r\n kind: DocumentHighlightKind.Text\r\n };\r\n });\r\n });\r\n }\r\n isValid(model, selection, decorationIds) {\r\n const currentSelectionIsEmpty = selection.isEmpty();\r\n if (this._selectionIsEmpty !== currentSelectionIsEmpty) {\r\n return false;\r\n }\r\n return super.isValid(model, selection, decorationIds);\r\n }\r\n}\r\nfunction computeOccurencesAtPosition(model, selection, wordSeparators) {\r\n if (DocumentHighlightProviderRegistry.has(model)) {\r\n return new SemanticOccurenceAtPositionRequest(model, selection, wordSeparators);\r\n }\r\n return new TextualOccurenceAtPositionRequest(model, selection, wordSeparators);\r\n}\r\nregisterModelAndPositionCommand('_executeDocumentHighlights', (model, position) => getOccurrencesAtPosition(model, position, CancellationToken.None));\r\nclass WordHighlighter {\r\n constructor(editor, contextKeyService) {\r\n this.toUnhook = new DisposableStore();\r\n this.workerRequestTokenId = 0;\r\n this.workerRequestCompleted = false;\r\n this.workerRequestValue = [];\r\n this.lastCursorPositionChangeTime = 0;\r\n this.renderDecorationsTimer = -1;\r\n this.editor = editor;\r\n this._hasWordHighlights = ctxHasWordHighlights.bindTo(contextKeyService);\r\n this._ignorePositionChangeEvent = false;\r\n this.occurrencesHighlight = this.editor.getOption(70 /* occurrencesHighlight */);\r\n this.model = this.editor.getModel();\r\n this.toUnhook.add(editor.onDidChangeCursorPosition((e) => {\r\n if (this._ignorePositionChangeEvent) {\r\n // We are changing the position => ignore this event\r\n return;\r\n }\r\n if (!this.occurrencesHighlight) {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n return;\r\n }\r\n this._onPositionChanged(e);\r\n }));\r\n this.toUnhook.add(editor.onDidChangeModelContent((e) => {\r\n this._stopAll();\r\n }));\r\n this.toUnhook.add(editor.onDidChangeConfiguration((e) => {\r\n let newValue = this.editor.getOption(70 /* occurrencesHighlight */);\r\n if (this.occurrencesHighlight !== newValue) {\r\n this.occurrencesHighlight = newValue;\r\n this._stopAll();\r\n }\r\n }));\r\n this._decorationIds = [];\r\n this.workerRequestTokenId = 0;\r\n this.workerRequest = null;\r\n this.workerRequestCompleted = false;\r\n this.lastCursorPositionChangeTime = 0;\r\n this.renderDecorationsTimer = -1;\r\n }\r\n hasDecorations() {\r\n return (this._decorationIds.length > 0);\r\n }\r\n restore() {\r\n if (!this.occurrencesHighlight) {\r\n return;\r\n }\r\n this._run();\r\n }\r\n _getSortedHighlights() {\r\n return arrays.coalesce(this._decorationIds\r\n .map((id) => this.model.getDecorationRange(id))\r\n .sort(Range.compareRangesUsingStarts));\r\n }\r\n moveNext() {\r\n let highlights = this._getSortedHighlights();\r\n let index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\r\n let newIndex = ((index + 1) % highlights.length);\r\n let dest = highlights[newIndex];\r\n try {\r\n this._ignorePositionChangeEvent = true;\r\n this.editor.setPosition(dest.getStartPosition());\r\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\r\n const word = this._getWord();\r\n if (word) {\r\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\r\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\r\n }\r\n }\r\n finally {\r\n this._ignorePositionChangeEvent = false;\r\n }\r\n }\r\n moveBack() {\r\n let highlights = this._getSortedHighlights();\r\n let index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\r\n let newIndex = ((index - 1 + highlights.length) % highlights.length);\r\n let dest = highlights[newIndex];\r\n try {\r\n this._ignorePositionChangeEvent = true;\r\n this.editor.setPosition(dest.getStartPosition());\r\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\r\n const word = this._getWord();\r\n if (word) {\r\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\r\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\r\n }\r\n }\r\n finally {\r\n this._ignorePositionChangeEvent = false;\r\n }\r\n }\r\n _removeDecorations() {\r\n if (this._decorationIds.length > 0) {\r\n // remove decorations\r\n this._decorationIds = this.editor.deltaDecorations(this._decorationIds, []);\r\n this._hasWordHighlights.set(false);\r\n }\r\n }\r\n _stopAll() {\r\n // Remove any existing decorations\r\n this._removeDecorations();\r\n // Cancel any renderDecorationsTimer\r\n if (this.renderDecorationsTimer !== -1) {\r\n clearTimeout(this.renderDecorationsTimer);\r\n this.renderDecorationsTimer = -1;\r\n }\r\n // Cancel any worker request\r\n if (this.workerRequest !== null) {\r\n this.workerRequest.cancel();\r\n this.workerRequest = null;\r\n }\r\n // Invalidate any worker request callback\r\n if (!this.workerRequestCompleted) {\r\n this.workerRequestTokenId++;\r\n this.workerRequestCompleted = true;\r\n }\r\n }\r\n _onPositionChanged(e) {\r\n // disabled\r\n if (!this.occurrencesHighlight) {\r\n this._stopAll();\r\n return;\r\n }\r\n // ignore typing & other\r\n if (e.reason !== 3 /* Explicit */) {\r\n this._stopAll();\r\n return;\r\n }\r\n this._run();\r\n }\r\n _getWord() {\r\n let editorSelection = this.editor.getSelection();\r\n let lineNumber = editorSelection.startLineNumber;\r\n let startColumn = editorSelection.startColumn;\r\n return this.model.getWordAtPosition({\r\n lineNumber: lineNumber,\r\n column: startColumn\r\n });\r\n }\r\n _run() {\r\n let editorSelection = this.editor.getSelection();\r\n // ignore multiline selection\r\n if (editorSelection.startLineNumber !== editorSelection.endLineNumber) {\r\n this._stopAll();\r\n return;\r\n }\r\n let startColumn = editorSelection.startColumn;\r\n let endColumn = editorSelection.endColumn;\r\n const word = this._getWord();\r\n // The selection must be inside a word or surround one word at most\r\n if (!word || word.startColumn > startColumn || word.endColumn < endColumn) {\r\n this._stopAll();\r\n return;\r\n }\r\n // All the effort below is trying to achieve this:\r\n // - when cursor is moved to a word, trigger immediately a findOccurrences request\r\n // - 250ms later after the last cursor move event, render the occurrences\r\n // - no flickering!\r\n const workerRequestIsValid = (this.workerRequest && this.workerRequest.isValid(this.model, editorSelection, this._decorationIds));\r\n // There are 4 cases:\r\n // a) old workerRequest is valid & completed, renderDecorationsTimer fired\r\n // b) old workerRequest is valid & completed, renderDecorationsTimer not fired\r\n // c) old workerRequest is valid, but not completed\r\n // d) old workerRequest is not valid\r\n // For a) no action is needed\r\n // For c), member 'lastCursorPositionChangeTime' will be used when installing the timer so no action is needed\r\n this.lastCursorPositionChangeTime = (new Date()).getTime();\r\n if (workerRequestIsValid) {\r\n if (this.workerRequestCompleted && this.renderDecorationsTimer !== -1) {\r\n // case b)\r\n // Delay the firing of renderDecorationsTimer by an extra 250 ms\r\n clearTimeout(this.renderDecorationsTimer);\r\n this.renderDecorationsTimer = -1;\r\n this._beginRenderDecorations();\r\n }\r\n }\r\n else {\r\n // case d)\r\n // Stop all previous actions and start fresh\r\n this._stopAll();\r\n let myRequestId = ++this.workerRequestTokenId;\r\n this.workerRequestCompleted = false;\r\n this.workerRequest = computeOccurencesAtPosition(this.model, this.editor.getSelection(), this.editor.getOption(115 /* wordSeparators */));\r\n this.workerRequest.result.then(data => {\r\n if (myRequestId === this.workerRequestTokenId) {\r\n this.workerRequestCompleted = true;\r\n this.workerRequestValue = data || [];\r\n this._beginRenderDecorations();\r\n }\r\n }, onUnexpectedError);\r\n }\r\n }\r\n _beginRenderDecorations() {\r\n let currentTime = (new Date()).getTime();\r\n let minimumRenderTime = this.lastCursorPositionChangeTime + 250;\r\n if (currentTime >= minimumRenderTime) {\r\n // Synchronous\r\n this.renderDecorationsTimer = -1;\r\n this.renderDecorations();\r\n }\r\n else {\r\n // Asynchronous\r\n this.renderDecorationsTimer = setTimeout(() => {\r\n this.renderDecorations();\r\n }, (minimumRenderTime - currentTime));\r\n }\r\n }\r\n renderDecorations() {\r\n this.renderDecorationsTimer = -1;\r\n let decorations = [];\r\n for (const info of this.workerRequestValue) {\r\n if (info.range) {\r\n decorations.push({\r\n range: info.range,\r\n options: WordHighlighter._getDecorationOptions(info.kind)\r\n });\r\n }\r\n }\r\n this._decorationIds = this.editor.deltaDecorations(this._decorationIds, decorations);\r\n this._hasWordHighlights.set(this.hasDecorations());\r\n }\r\n static _getDecorationOptions(kind) {\r\n if (kind === DocumentHighlightKind.Write) {\r\n return this._WRITE_OPTIONS;\r\n }\r\n else if (kind === DocumentHighlightKind.Text) {\r\n return this._TEXT_OPTIONS;\r\n }\r\n else {\r\n return this._REGULAR_OPTIONS;\r\n }\r\n }\r\n dispose() {\r\n this._stopAll();\r\n this.toUnhook.dispose();\r\n }\r\n}\r\nWordHighlighter._WRITE_OPTIONS = ModelDecorationOptions.register({\r\n description: 'word-highlight-strong',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'wordHighlightStrong',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerWordHighlightStrongForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nWordHighlighter._TEXT_OPTIONS = ModelDecorationOptions.register({\r\n description: 'selection-highlight',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'selectionHighlight',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerSelectionHighlightForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nWordHighlighter._REGULAR_OPTIONS = ModelDecorationOptions.register({\r\n description: 'word-highlight',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'wordHighlight',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerWordHighlightForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nlet WordHighlighterContribution = class WordHighlighterContribution extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this.wordHighlighter = null;\r\n const createWordHighlighterIfPossible = () => {\r\n if (editor.hasModel()) {\r\n this.wordHighlighter = new WordHighlighter(editor, contextKeyService);\r\n }\r\n };\r\n this._register(editor.onDidChangeModel((e) => {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.dispose();\r\n this.wordHighlighter = null;\r\n }\r\n createWordHighlighterIfPossible();\r\n }));\r\n createWordHighlighterIfPossible();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(WordHighlighterContribution.ID);\r\n }\r\n saveViewState() {\r\n if (this.wordHighlighter && this.wordHighlighter.hasDecorations()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n moveNext() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.moveNext();\r\n }\r\n }\r\n moveBack() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.moveBack();\r\n }\r\n }\r\n restoreViewState(state) {\r\n if (this.wordHighlighter && state) {\r\n this.wordHighlighter.restore();\r\n }\r\n }\r\n dispose() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.dispose();\r\n this.wordHighlighter = null;\r\n }\r\n super.dispose();\r\n }\r\n};\r\nWordHighlighterContribution.ID = 'editor.contrib.wordHighlighter';\r\nWordHighlighterContribution = __decorate([\r\n __param(1, IContextKeyService)\r\n], WordHighlighterContribution);\r\nclass WordHighlightNavigationAction extends EditorAction {\r\n constructor(next, opts) {\r\n super(opts);\r\n this._isNext = next;\r\n }\r\n run(accessor, editor) {\r\n const controller = WordHighlighterContribution.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n if (this._isNext) {\r\n controller.moveNext();\r\n }\r\n else {\r\n controller.moveBack();\r\n }\r\n }\r\n}\r\nclass NextWordHighlightAction extends WordHighlightNavigationAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.wordHighlight.next',\r\n label: nls.localize('wordHighlight.next.label', \"Go to Next Symbol Highlight\"),\r\n alias: 'Go to Next Symbol Highlight',\r\n precondition: ctxHasWordHighlights,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass PrevWordHighlightAction extends WordHighlightNavigationAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.wordHighlight.prev',\r\n label: nls.localize('wordHighlight.previous.label', \"Go to Previous Symbol Highlight\"),\r\n alias: 'Go to Previous Symbol Highlight',\r\n precondition: ctxHasWordHighlights,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass TriggerWordHighlightAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.wordHighlight.trigger',\r\n label: nls.localize('wordHighlight.trigger.label', \"Trigger Symbol Highlight\"),\r\n alias: 'Trigger Symbol Highlight',\r\n precondition: ctxHasWordHighlights.toNegated(),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n const controller = WordHighlighterContribution.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.restoreViewState(true);\r\n }\r\n}\r\nregisterEditorContribution(WordHighlighterContribution.ID, WordHighlighterContribution);\r\nregisterEditorAction(NextWordHighlightAction);\r\nregisterEditorAction(PrevWordHighlightAction);\r\nregisterEditorAction(TriggerWordHighlightAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const selectionHighlight = theme.getColor(editorSelectionHighlight);\r\n if (selectionHighlight) {\r\n collector.addRule(`.monaco-editor .focused .selectionHighlight { background-color: ${selectionHighlight}; }`);\r\n collector.addRule(`.monaco-editor .selectionHighlight { background-color: ${selectionHighlight.transparent(0.5)}; }`);\r\n }\r\n const wordHighlight = theme.getColor(editorWordHighlight);\r\n if (wordHighlight) {\r\n collector.addRule(`.monaco-editor .wordHighlight { background-color: ${wordHighlight}; }`);\r\n }\r\n const wordHighlightStrong = theme.getColor(editorWordHighlightStrong);\r\n if (wordHighlightStrong) {\r\n collector.addRule(`.monaco-editor .wordHighlightStrong { background-color: ${wordHighlightStrong}; }`);\r\n }\r\n const selectionHighlightBorder = theme.getColor(editorSelectionHighlightBorder);\r\n if (selectionHighlightBorder) {\r\n collector.addRule(`.monaco-editor .selectionHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${selectionHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const wordHighlightBorder = theme.getColor(editorWordHighlightBorder);\r\n if (wordHighlightBorder) {\r\n collector.addRule(`.monaco-editor .wordHighlight { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${wordHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const wordHighlightStrongBorder = theme.getColor(editorWordHighlightStrongBorder);\r\n if (wordHighlightStrongBorder) {\r\n collector.addRule(`.monaco-editor .wordHighlightStrong { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${wordHighlightStrongBorder}; box-sizing: border-box; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorCommand, registerEditorCommand, EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { ReplaceCommand } from '../../common/commands/replaceCommand.js';\r\nimport { CursorState } from '../../common/controller/cursorCommon.js';\r\nimport { WordOperations } from '../../common/controller/cursorWordOperations.js';\r\nimport { getMapForWordSeparators } from '../../common/controller/wordCharacterClassifier.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { EditorOptions } from '../../common/config/editorOptions.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { IsWindowsContext } from '../../../platform/contextkey/common/contextkeys.js';\r\nexport class MoveWordCommand extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n this._wordNavigationType = opts.wordNavigationType;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const wordSeparators = getMapForWordSeparators(editor.getOption(115 /* wordSeparators */));\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n const result = selections.map((sel) => {\r\n const inPosition = new Position(sel.positionLineNumber, sel.positionColumn);\r\n const outPosition = this._move(wordSeparators, model, inPosition, this._wordNavigationType);\r\n return this._moveTo(sel, outPosition, this._inSelectionMode);\r\n });\r\n model.pushStackElement();\r\n editor._getViewModel().setCursorStates('moveWordCommand', 3 /* Explicit */, result.map(r => CursorState.fromModelSelection(r)));\r\n if (result.length === 1) {\r\n const pos = new Position(result[0].positionLineNumber, result[0].positionColumn);\r\n editor.revealPosition(pos, 0 /* Smooth */);\r\n }\r\n }\r\n _moveTo(from, to, inSelectionMode) {\r\n if (inSelectionMode) {\r\n // move just position\r\n return new Selection(from.selectionStartLineNumber, from.selectionStartColumn, to.lineNumber, to.column);\r\n }\r\n else {\r\n // move everything\r\n return new Selection(to.lineNumber, to.column, to.lineNumber, to.column);\r\n }\r\n }\r\n}\r\nexport class WordLeftCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordOperations.moveWordLeft(wordSeparators, model, position, wordNavigationType);\r\n }\r\n}\r\nexport class WordRightCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordOperations.moveWordRight(wordSeparators, model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordStartLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartLeft',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndLeft',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordLeft extends WordLeftCommand {\r\n constructor() {\r\n var _a;\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 1 /* WordStartFast */,\r\n id: 'cursorWordLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\r\n primary: 2048 /* CtrlCmd */ | 15 /* LeftArrow */,\r\n mac: { primary: 512 /* Alt */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordStartLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartLeftSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndLeftSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n var _a;\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 1 /* WordStartFast */,\r\n id: 'cursorWordLeftSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 15 /* LeftArrow */,\r\n mac: { primary: 512 /* Alt */ | 1024 /* Shift */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\n// Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects\r\nexport class CursorWordAccessibilityLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityLeft',\r\n precondition: undefined\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordAccessibilityLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityLeftSelect',\r\n precondition: undefined\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordStartRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartRight',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndRight extends WordRightCommand {\r\n constructor() {\r\n var _a;\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\r\n primary: 2048 /* CtrlCmd */ | 17 /* RightArrow */,\r\n mac: { primary: 512 /* Alt */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordRight',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordStartRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartRightSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndRightSelect extends WordRightCommand {\r\n constructor() {\r\n var _a;\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndRightSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 17 /* RightArrow */,\r\n mac: { primary: 512 /* Alt */ | 1024 /* Shift */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordRightSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordAccessibilityRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityRight',\r\n precondition: undefined\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordAccessibilityRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityRightSelect',\r\n precondition: undefined\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class DeleteWordCommand extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._whitespaceHeuristics = opts.whitespaceHeuristics;\r\n this._wordNavigationType = opts.wordNavigationType;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const wordSeparators = getMapForWordSeparators(editor.getOption(115 /* wordSeparators */));\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n const autoClosingBrackets = editor.getOption(5 /* autoClosingBrackets */);\r\n const autoClosingQuotes = editor.getOption(8 /* autoClosingQuotes */);\r\n const autoClosingPairs = LanguageConfigurationRegistry.getAutoClosingPairs(model.getLanguageIdentifier().id);\r\n const viewModel = editor._getViewModel();\r\n const commands = selections.map((sel) => {\r\n const deleteRange = this._delete({\r\n wordSeparators,\r\n model,\r\n selection: sel,\r\n whitespaceHeuristics: this._whitespaceHeuristics,\r\n autoClosingDelete: editor.getOption(6 /* autoClosingDelete */),\r\n autoClosingBrackets,\r\n autoClosingQuotes,\r\n autoClosingPairs,\r\n autoClosedCharacters: viewModel.getCursorAutoClosedCharacters()\r\n }, this._wordNavigationType);\r\n return new ReplaceCommand(deleteRange, '');\r\n });\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class DeleteWordLeftCommand extends DeleteWordCommand {\r\n _delete(ctx, wordNavigationType) {\r\n let r = WordOperations.deleteWordLeft(ctx, wordNavigationType);\r\n if (r) {\r\n return r;\r\n }\r\n return new Range(1, 1, 1, 1);\r\n }\r\n}\r\nexport class DeleteWordRightCommand extends DeleteWordCommand {\r\n _delete(ctx, wordNavigationType) {\r\n let r = WordOperations.deleteWordRight(ctx, wordNavigationType);\r\n if (r) {\r\n return r;\r\n }\r\n const lineCount = ctx.model.getLineCount();\r\n const maxColumn = ctx.model.getLineMaxColumn(lineCount);\r\n return new Range(lineCount, maxColumn, lineCount, maxColumn);\r\n }\r\n}\r\nexport class DeleteWordStartLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordStartLeft',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordEndLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordEndLeft',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordLeft',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1 /* Backspace */,\r\n mac: { primary: 512 /* Alt */ | 1 /* Backspace */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class DeleteWordStartRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordStartRight',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordEndRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordEndRight',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordRight',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 20 /* Delete */,\r\n mac: { primary: 512 /* Alt */ | 20 /* Delete */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class DeleteInsideWord extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'deleteInsideWord',\r\n precondition: EditorContextKeys.writable,\r\n label: nls.localize('deleteInsideWord', \"Delete Word\"),\r\n alias: 'Delete Word'\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const wordSeparators = getMapForWordSeparators(editor.getOption(115 /* wordSeparators */));\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n const commands = selections.map((sel) => {\r\n const deleteRange = WordOperations.deleteInsideWord(wordSeparators, model, sel);\r\n return new ReplaceCommand(deleteRange, '');\r\n });\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nregisterEditorCommand(new CursorWordStartLeft());\r\nregisterEditorCommand(new CursorWordEndLeft());\r\nregisterEditorCommand(new CursorWordLeft());\r\nregisterEditorCommand(new CursorWordStartLeftSelect());\r\nregisterEditorCommand(new CursorWordEndLeftSelect());\r\nregisterEditorCommand(new CursorWordLeftSelect());\r\nregisterEditorCommand(new CursorWordStartRight());\r\nregisterEditorCommand(new CursorWordEndRight());\r\nregisterEditorCommand(new CursorWordRight());\r\nregisterEditorCommand(new CursorWordStartRightSelect());\r\nregisterEditorCommand(new CursorWordEndRightSelect());\r\nregisterEditorCommand(new CursorWordRightSelect());\r\nregisterEditorCommand(new CursorWordAccessibilityLeft());\r\nregisterEditorCommand(new CursorWordAccessibilityLeftSelect());\r\nregisterEditorCommand(new CursorWordAccessibilityRight());\r\nregisterEditorCommand(new CursorWordAccessibilityRightSelect());\r\nregisterEditorCommand(new DeleteWordStartLeft());\r\nregisterEditorCommand(new DeleteWordEndLeft());\r\nregisterEditorCommand(new DeleteWordLeft());\r\nregisterEditorCommand(new DeleteWordStartRight());\r\nregisterEditorCommand(new DeleteWordEndRight());\r\nregisterEditorCommand(new DeleteWordRight());\r\nregisterEditorAction(DeleteInsideWord);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nexport var AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nexport var CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nexport var CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nexport var ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nexport var CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nexport var DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nexport var EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nexport var EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingDelete\"] = 6] = \"autoClosingDelete\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 7] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 8] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 9] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 10] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 11] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 12] = \"codeLens\";\r\n EditorOption[EditorOption[\"codeLensFontFamily\"] = 13] = \"codeLensFontFamily\";\r\n EditorOption[EditorOption[\"codeLensFontSize\"] = 14] = \"codeLensFontSize\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 15] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 16] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 17] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 18] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 19] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 20] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 21] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 22] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 23] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 24] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 25] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 26] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 27] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"domReadOnly\"] = 28] = \"domReadOnly\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 29] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 30] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 31] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 32] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 33] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 34] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 35] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 36] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 37] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"foldingImportsByDefault\"] = 38] = \"foldingImportsByDefault\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 39] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 40] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 41] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 42] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 43] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 44] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 45] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 46] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 47] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 48] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 49] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 50] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 51] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 52] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"inlineSuggest\"] = 53] = \"inlineSuggest\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 54] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 55] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 56] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 57] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 58] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 59] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"linkedEditing\"] = 60] = \"linkedEditing\";\r\n EditorOption[EditorOption[\"links\"] = 61] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 62] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 63] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 64] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 65] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 66] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 67] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 68] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 69] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 70] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 71] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 72] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 73] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 74] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 75] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 76] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 77] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 78] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 79] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 80] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 81] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 82] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 83] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 84] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 85] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 86] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 87] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 88] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 89] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 90] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 91] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 92] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 93] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 94] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 95] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 96] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 97] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 98] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 99] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 100] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smartSelect\"] = 101] = \"smartSelect\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 102] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stickyTabStops\"] = 103] = \"stickyTabStops\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 104] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 105] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 106] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 107] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 108] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 109] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 110] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 111] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 112] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useShadowDOM\"] = 113] = \"useShadowDOM\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 114] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 115] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 116] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 117] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 118] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 119] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapOverride1\"] = 120] = \"wordWrapOverride1\";\r\n EditorOption[EditorOption[\"wordWrapOverride2\"] = 121] = \"wordWrapOverride2\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 122] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 123] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 124] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"inlayHints\"] = 125] = \"inlayHints\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 126] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 127] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 128] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 129] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 130] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\nexport var InlayHintKind;\r\n(function (InlayHintKind) {\r\n InlayHintKind[InlayHintKind[\"Other\"] = 0] = \"Other\";\r\n InlayHintKind[InlayHintKind[\"Type\"] = 1] = \"Type\";\r\n InlayHintKind[InlayHintKind[\"Parameter\"] = 2] = \"Parameter\";\r\n})(InlayHintKind || (InlayHintKind = {}));\r\n/**\r\n * How an {@link InlineCompletionsProvider inline completion provider} was triggered.\r\n */\r\nexport var InlineCompletionTriggerKind;\r\n(function (InlineCompletionTriggerKind) {\r\n /**\r\n * Completion was triggered automatically while editing.\r\n * It is sufficient to return a single completion item in this case.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Automatic\"] = 0] = \"Automatic\";\r\n /**\r\n * Completion was triggered explicitly by a user gesture.\r\n * Return multiple completion items to enable cycling through them.\r\n */\r\n InlineCompletionTriggerKind[InlineCompletionTriggerKind[\"Explicit\"] = 1] = \"Explicit\";\r\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nexport var KeyCode;\r\n(function (KeyCode) {\r\n KeyCode[KeyCode[\"DependsOnKbLayout\"] = -1] = \"DependsOnKbLayout\";\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nexport var MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nexport var OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nexport var RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nexport var RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nexport var ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nexport var ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nexport var SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nexport var TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nexport var WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { Token } from '../core/token.js';\r\nimport * as standaloneEnums from './standaloneEnums.js';\r\nexport class KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return KeyChord(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nexport function createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: CancellationTokenSource,\r\n Emitter: Emitter,\r\n KeyCode: standaloneEnums.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: Position,\r\n Range: Range,\r\n Selection: Selection,\r\n SelectionDirection: standaloneEnums.SelectionDirection,\r\n MarkerSeverity: standaloneEnums.MarkerSeverity,\r\n MarkerTag: standaloneEnums.MarkerTag,\r\n Uri: URI,\r\n Token: Token\r\n };\r\n}\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./standalone-tokens.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./standalone-tokens.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var EditorOpenContext;\r\n(function (EditorOpenContext) {\r\n /**\r\n * Default: the editor is opening via a programmatic call\r\n * to the editor service API.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"API\"] = 0] = \"API\";\r\n /**\r\n * Indicates that a user action triggered the opening, e.g.\r\n * via mouse or keyboard use.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"USER\"] = 1] = \"USER\";\r\n})(EditorOpenContext || (EditorOpenContext = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { parse } from '../../../base/common/marshalling.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { normalizePath } from '../../../base/common/resources.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ICodeEditorService } from './codeEditorService.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { EditorOpenContext } from '../../../platform/editor/common/editor.js';\r\nimport { matchesScheme } from '../../../platform/opener/common/opener.js';\r\nlet CommandOpener = class CommandOpener {\r\n constructor(_commandService) {\r\n this._commandService = _commandService;\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!matchesScheme(target, Schemas.command)) {\r\n return false;\r\n }\r\n if (!(options === null || options === void 0 ? void 0 : options.allowCommands)) {\r\n // silently ignore commands when command-links are disabled, also\r\n // surpress other openers by returning TRUE\r\n return true;\r\n }\r\n // run command or bail out if command isn't known\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n // execute as command\r\n let args = [];\r\n try {\r\n args = parse(decodeURIComponent(target.query));\r\n }\r\n catch (_a) {\r\n // ignore and retry\r\n try {\r\n args = parse(target.query);\r\n }\r\n catch (_b) {\r\n // ignore error\r\n }\r\n }\r\n if (!Array.isArray(args)) {\r\n args = [args];\r\n }\r\n yield this._commandService.executeCommand(target.path, ...args);\r\n return true;\r\n });\r\n }\r\n};\r\nCommandOpener = __decorate([\r\n __param(0, ICommandService)\r\n], CommandOpener);\r\nlet EditorOpener = class EditorOpener {\r\n constructor(_editorService) {\r\n this._editorService = _editorService;\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n let selection = undefined;\r\n const match = /^L?(\\d+)(?:,(\\d+))?/.exec(target.fragment);\r\n if (match) {\r\n // support file:///some/file.js#73,84\r\n // support file:///some/file.js#L73\r\n selection = {\r\n startLineNumber: parseInt(match[1]),\r\n startColumn: match[2] ? parseInt(match[2]) : 1\r\n };\r\n // remove fragment\r\n target = target.with({ fragment: '' });\r\n }\r\n if (target.scheme === Schemas.file) {\r\n target = normalizePath(target); // workaround for non-normalized paths (https://github.com/microsoft/vscode/issues/12954)\r\n }\r\n yield this._editorService.openCodeEditor({\r\n resource: target,\r\n options: Object.assign({ selection, context: (options === null || options === void 0 ? void 0 : options.fromUserGesture) ? EditorOpenContext.USER : EditorOpenContext.API }, options === null || options === void 0 ? void 0 : options.editorOptions)\r\n }, this._editorService.getFocusedCodeEditor(), options === null || options === void 0 ? void 0 : options.openToSide);\r\n return true;\r\n });\r\n }\r\n};\r\nEditorOpener = __decorate([\r\n __param(0, ICodeEditorService)\r\n], EditorOpener);\r\nlet OpenerService = class OpenerService {\r\n constructor(editorService, commandService) {\r\n this._openers = new LinkedList();\r\n this._validators = new LinkedList();\r\n this._resolvers = new LinkedList();\r\n this._resolvedUriTargets = new ResourceMap(uri => uri.with({ path: null, fragment: null, query: null }).toString());\r\n this._externalOpeners = new LinkedList();\r\n // Default external opener is going through window.open()\r\n this._defaultExternalOpener = {\r\n openExternal: (href) => __awaiter(this, void 0, void 0, function* () {\r\n // ensure to open HTTP/HTTPS links into new windows\r\n // to not trigger a navigation. Any other link is\r\n // safe to be set as HREF to prevent a blank window\r\n // from opening.\r\n if (matchesScheme(href, Schemas.http) || matchesScheme(href, Schemas.https)) {\r\n dom.windowOpenNoOpener(href);\r\n }\r\n else {\r\n window.location.href = href;\r\n }\r\n return true;\r\n })\r\n };\r\n // Default opener: any external, maito, http(s), command, and catch-all-editors\r\n this._openers.push({\r\n open: (target, options) => __awaiter(this, void 0, void 0, function* () {\r\n if ((options === null || options === void 0 ? void 0 : options.openExternal) || matchesScheme(target, Schemas.mailto) || matchesScheme(target, Schemas.http) || matchesScheme(target, Schemas.https)) {\r\n // open externally\r\n yield this._doOpenExternal(target, options);\r\n return true;\r\n }\r\n return false;\r\n })\r\n });\r\n this._openers.push(new CommandOpener(commandService));\r\n this._openers.push(new EditorOpener(editorService));\r\n }\r\n registerOpener(opener) {\r\n const remove = this._openers.unshift(opener);\r\n return { dispose: remove };\r\n }\r\n registerValidator(validator) {\r\n const remove = this._validators.push(validator);\r\n return { dispose: remove };\r\n }\r\n registerExternalUriResolver(resolver) {\r\n const remove = this._resolvers.push(resolver);\r\n return { dispose: remove };\r\n }\r\n setDefaultExternalOpener(externalOpener) {\r\n this._defaultExternalOpener = externalOpener;\r\n }\r\n registerExternalOpener(opener) {\r\n const remove = this._externalOpeners.push(opener);\r\n return { dispose: remove };\r\n }\r\n open(target, options) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // check with contributed validators\r\n const targetURI = typeof target === 'string' ? URI.parse(target) : target;\r\n // validate against the original URI that this URI resolves to, if one exists\r\n const validationTarget = (_a = this._resolvedUriTargets.get(targetURI)) !== null && _a !== void 0 ? _a : target;\r\n for (const validator of this._validators) {\r\n if (!(yield validator.shouldOpen(validationTarget))) {\r\n return false;\r\n }\r\n }\r\n // check with contributed openers\r\n for (const opener of this._openers) {\r\n const handled = yield opener.open(target, options);\r\n if (handled) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n resolveExternalUri(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n for (const resolver of this._resolvers) {\r\n try {\r\n const result = yield resolver.resolveExternalUri(resource, options);\r\n if (result) {\r\n if (!this._resolvedUriTargets.has(result.resolved)) {\r\n this._resolvedUriTargets.set(result.resolved, resource);\r\n }\r\n return result;\r\n }\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n throw new Error('Could not resolve external URI: ' + resource.toString());\r\n });\r\n }\r\n _doOpenExternal(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n //todo@jrieken IExternalUriResolver should support `uri: URI | string`\r\n const uri = typeof resource === 'string' ? URI.parse(resource) : resource;\r\n let externalUri;\r\n try {\r\n externalUri = (yield this.resolveExternalUri(uri, options)).resolved;\r\n }\r\n catch (_a) {\r\n externalUri = uri;\r\n }\r\n let href;\r\n if (typeof resource === 'string' && uri.toString() === externalUri.toString()) {\r\n // open the url-string AS IS\r\n href = resource;\r\n }\r\n else {\r\n // open URI using the toString(noEncode)+encodeURI-trick\r\n href = encodeURI(externalUri.toString(true));\r\n }\r\n if (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) {\r\n const preferredOpenerId = typeof (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) === 'string' ? options === null || options === void 0 ? void 0 : options.allowContributedOpeners : undefined;\r\n for (const opener of this._externalOpeners) {\r\n const didOpen = yield opener.openExternal(href, {\r\n sourceUri: uri,\r\n preferredOpenerId,\r\n }, CancellationToken.None);\r\n if (didOpen) {\r\n return true;\r\n }\r\n }\r\n }\r\n return this._defaultExternalOpener.openExternal(href, { sourceUri: uri }, CancellationToken.None);\r\n });\r\n }\r\n dispose() {\r\n this._validators.clear();\r\n }\r\n};\r\nOpenerService = __decorate([\r\n __param(0, ICodeEditorService),\r\n __param(1, ICommandService)\r\n], OpenerService);\r\nexport { OpenerService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as assert from '../../../base/common/assert.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Range } from '../../common/core/range.js';\r\nconst defaultOptions = {\r\n followsCaret: true,\r\n ignoreCharChanges: true,\r\n alwaysRevealFirst: true\r\n};\r\n/**\r\n * Create a new diff navigator for the provided diff editor.\r\n */\r\nexport class DiffNavigator extends Disposable {\r\n constructor(editor, options = {}) {\r\n super();\r\n this._onDidUpdate = this._register(new Emitter());\r\n this._editor = editor;\r\n this._options = objects.mixin(options, defaultOptions, false);\r\n this.disposed = false;\r\n this.nextIdx = -1;\r\n this.ranges = [];\r\n this.ignoreSelectionChange = false;\r\n this.revealFirst = Boolean(this._options.alwaysRevealFirst);\r\n // hook up to diff editor for diff, disposal, and caret move\r\n this._register(this._editor.onDidDispose(() => this.dispose()));\r\n this._register(this._editor.onDidUpdateDiff(() => this._onDiffUpdated()));\r\n if (this._options.followsCaret) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition((e) => {\r\n if (this.ignoreSelectionChange) {\r\n return;\r\n }\r\n this.nextIdx = -1;\r\n }));\r\n }\r\n if (this._options.alwaysRevealFirst) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeModel((e) => {\r\n this.revealFirst = true;\r\n }));\r\n }\r\n // init things\r\n this._init();\r\n }\r\n _init() {\r\n let changes = this._editor.getLineChanges();\r\n if (!changes) {\r\n return;\r\n }\r\n }\r\n _onDiffUpdated() {\r\n this._init();\r\n this._compute(this._editor.getLineChanges());\r\n if (this.revealFirst) {\r\n // Only reveal first on first non-null changes\r\n if (this._editor.getLineChanges() !== null) {\r\n this.revealFirst = false;\r\n this.nextIdx = -1;\r\n this.next(1 /* Immediate */);\r\n }\r\n }\r\n }\r\n _compute(lineChanges) {\r\n // new ranges\r\n this.ranges = [];\r\n if (lineChanges) {\r\n // create ranges from changes\r\n lineChanges.forEach((lineChange) => {\r\n if (!this._options.ignoreCharChanges && lineChange.charChanges) {\r\n lineChange.charChanges.forEach((charChange) => {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn)\r\n });\r\n });\r\n }\r\n else {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber, 1)\r\n });\r\n }\r\n });\r\n }\r\n // sort\r\n this.ranges.sort((left, right) => {\r\n if (left.range.getStartPosition().isBeforeOrEqual(right.range.getStartPosition())) {\r\n return -1;\r\n }\r\n else if (right.range.getStartPosition().isBeforeOrEqual(left.range.getStartPosition())) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this._onDidUpdate.fire(this);\r\n }\r\n _initIdx(fwd) {\r\n let found = false;\r\n let position = this._editor.getPosition();\r\n if (!position) {\r\n this.nextIdx = 0;\r\n return;\r\n }\r\n for (let i = 0, len = this.ranges.length; i < len && !found; i++) {\r\n let range = this.ranges[i].range;\r\n if (position.isBeforeOrEqual(range.getStartPosition())) {\r\n this.nextIdx = i + (fwd ? 0 : -1);\r\n found = true;\r\n }\r\n }\r\n if (!found) {\r\n // after the last change\r\n this.nextIdx = fwd ? 0 : this.ranges.length - 1;\r\n }\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n _move(fwd, scrollType) {\r\n assert.ok(!this.disposed, 'Illegal State - diff navigator has been disposed');\r\n if (!this.canNavigate()) {\r\n return;\r\n }\r\n if (this.nextIdx === -1) {\r\n this._initIdx(fwd);\r\n }\r\n else if (fwd) {\r\n this.nextIdx += 1;\r\n if (this.nextIdx >= this.ranges.length) {\r\n this.nextIdx = 0;\r\n }\r\n }\r\n else {\r\n this.nextIdx -= 1;\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n let info = this.ranges[this.nextIdx];\r\n this.ignoreSelectionChange = true;\r\n try {\r\n let pos = info.range.getStartPosition();\r\n this._editor.setPosition(pos);\r\n this._editor.revealPositionInCenter(pos, scrollType);\r\n }\r\n finally {\r\n this.ignoreSelectionChange = false;\r\n }\r\n }\r\n canNavigate() {\r\n return this.ranges && this.ranges.length > 0;\r\n }\r\n next(scrollType = 0 /* Smooth */) {\r\n this._move(true, scrollType);\r\n }\r\n previous(scrollType = 0 /* Smooth */) {\r\n this._move(false, scrollType);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.ranges = [];\r\n this.disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { transformErrorForSerialization } from '../errors.js';\r\nimport { Disposable } from '../lifecycle.js';\r\nimport { isWeb } from '../platform.js';\r\nimport * as types from '../types.js';\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nexport function logOnceWebWorkerWarning(err) {\r\n if (!isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\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');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = transformErrorForSerialization(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: transformErrorForSerialization(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nexport class SimpleWorkerClient extends Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = types.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(types.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nexport class SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = types.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n if (typeof loaderConfig.trustedTypesPolicy !== undefined) {\r\n // don't use, it has been destroyed during serialize\r\n delete loaderConfig['trustedTypesPolicy'];\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(types.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nexport function create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport { globals } from '../common/platform.js';\r\nimport { logOnceWebWorkerWarning } from '../common/worker/simpleWorker.js';\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });\r\nfunction getWorker(workerId, label) {\r\n // Option for hosts to overwrite the worker script (used in the standalone editor)\r\n if (globals.MonacoEnvironment) {\r\n if (typeof globals.MonacoEnvironment.getWorker === 'function') {\r\n return globals.MonacoEnvironment.getWorker(workerId, label);\r\n }\r\n if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') {\r\n const wokerUrl = globals.MonacoEnvironment.getWorkerUrl(workerId, label);\r\n return new Worker(ttPolicy ? ttPolicy.createScriptURL(wokerUrl) : wokerUrl, { name: label });\r\n }\r\n }\r\n // ESM-comment-begin\r\n // \tif (typeof require === 'function') {\r\n // \t\t// check if the JS lives on a different origin\r\n // \t\tconst workerMain = require.toUrl('./' + workerId); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\r\n // \t\tconst workerUrl = getWorkerBootstrapUrl(workerMain, label);\r\n // \t\treturn new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label });\r\n // \t}\r\n // ESM-comment-end\r\n throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`);\r\n}\r\n// ESM-comment-begin\r\n// export function getWorkerBootstrapUrl(scriptPath: string, label: string): string {\r\n// \tif (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, self.origin.length) !== self.origin) {\r\n// \t\t// this is the cross-origin case\r\n// \t\t// i.e. the webpage is running at a different origin than where the scripts are loaded from\r\n// \t\tconst myPath = 'vs/base/worker/defaultWorkerFactory.js';\r\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\r\n// \t\tconst js = `/*${label}*/self.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = self.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;\r\n// \t\tconst blob = new Blob([js], { type: 'application/javascript' });\r\n// \t\treturn URL.createObjectURL(blob);\r\n// \t}\r\n// \treturn scriptPath + '#' + label;\r\n// }\r\n// ESM-comment-end\r\nfunction isPromiseLike(obj) {\r\n if (typeof obj.then === 'function') {\r\n return true;\r\n }\r\n return false;\r\n}\r\n/**\r\n * A worker that uses HTML5 web workers so that is has\r\n * its own global scope and its own thread.\r\n */\r\nclass WebWorker {\r\n constructor(moduleId, id, label, onMessageCallback, onErrorCallback) {\r\n this.id = id;\r\n const workerOrPromise = getWorker('workerMain.js', label);\r\n if (isPromiseLike(workerOrPromise)) {\r\n this.worker = workerOrPromise;\r\n }\r\n else {\r\n this.worker = Promise.resolve(workerOrPromise);\r\n }\r\n this.postMessage(moduleId, []);\r\n this.worker.then((w) => {\r\n w.onmessage = function (ev) {\r\n onMessageCallback(ev.data);\r\n };\r\n w.onmessageerror = onErrorCallback;\r\n if (typeof w.addEventListener === 'function') {\r\n w.addEventListener('error', onErrorCallback);\r\n }\r\n });\r\n }\r\n getId() {\r\n return this.id;\r\n }\r\n postMessage(message, transfer) {\r\n if (this.worker) {\r\n this.worker.then(w => w.postMessage(message, transfer));\r\n }\r\n }\r\n dispose() {\r\n if (this.worker) {\r\n this.worker.then(w => w.terminate());\r\n }\r\n this.worker = null;\r\n }\r\n}\r\nexport class DefaultWorkerFactory {\r\n constructor(label) {\r\n this._label = label;\r\n this._webWorkerFailedBeforeError = false;\r\n }\r\n create(moduleId, onMessageCallback, onErrorCallback) {\r\n let workerId = (++DefaultWorkerFactory.LAST_WORKER_ID);\r\n if (this._webWorkerFailedBeforeError) {\r\n throw this._webWorkerFailedBeforeError;\r\n }\r\n return new WebWorker(moduleId, workerId, this._label || 'anonymous' + workerId, onMessageCallback, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._webWorkerFailedBeforeError = err;\r\n onErrorCallback(err);\r\n });\r\n }\r\n}\r\nDefaultWorkerFactory.LAST_WORKER_ID = 0;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStrictElement(index) {\r\n return this.lines[index];\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nexport class DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n return {\r\n quitEarly: false,\r\n changes: []\r\n };\r\n }\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = strings.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = strings.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { splitLines } from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { PrefixSumComputer } from '../viewModel/prefixSumComputer.js';\r\nexport class MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = splitLines(insertText);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nexport class StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nexport class LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nexport function computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { stringDiff } from '../../../base/common/diff/diff.js';\r\nimport { globals } from '../../../base/common/platform.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { DiffComputer } from '../diff/diffComputer.js';\r\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\r\nimport { ensureValidWordDefinition, getWordAtText } from '../model/wordHelper.js';\r\nimport { computeLinks } from '../modes/linkComputer.js';\r\nimport { BasicInplaceReplace } from '../modes/supports/inplaceReplaceSupport.js';\r\nimport { createMonacoBaseAPI } from '../standalone/standaloneBase.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends BaseMirrorModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = edits.slice(0).sort((a, b) => {\r\n if (a.range && b.range) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = stringDiff(original, text, false);\r\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return computeLinks(model);\r\n });\r\n }\r\n textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const sw = new StopWatch(true);\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const seen = new Set();\r\n outer: for (let url of modelUrls) {\r\n const model = this._getModel(url);\r\n if (!model) {\r\n continue;\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (word === leadingWord || !isNaN(Number(word))) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break outer;\r\n }\r\n }\r\n }\r\n return { words: Array.from(seen), duration: sw.elapsed() };\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nexport function create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n globals.monaco = createMonacoBaseAPI();\r\n}\r\n","import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextResourceConfigurationService = createDecorator('textResourceConfigurationService');\r\nexport const ITextResourcePropertiesService = createDecorator('textResourcePropertiesService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { IntervalTimer, timeout } from '../../../base/common/async.js';\r\nimport { Disposable, dispose, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { SimpleWorkerClient, logOnceWebWorkerWarning } from '../../../base/common/worker/simpleWorker.js';\r\nimport { DefaultWorkerFactory } from '../../../base/worker/defaultWorkerFactory.js';\r\nimport { Range } from '../core/range.js';\r\nimport * as modes from '../modes.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { EditorSimpleWorker } from './editorSimpleWorker.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { ITextResourceConfigurationService } from './textResourceConfigurationService.js';\r\nimport { regExpFlags } from '../../../base/common/strings.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { canceled } from '../../../base/common/errors.js';\r\n/**\r\n * Stop syncing a model to the worker if it was not needed for 1 min.\r\n */\r\nconst STOP_SYNC_MODEL_DELTA_TIME_MS = 60 * 1000;\r\n/**\r\n * Stop the worker if it was not needed for 5 min.\r\n */\r\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\r\nfunction canSyncModel(modelService, resource) {\r\n let model = modelService.getModel(resource);\r\n if (!model) {\r\n return false;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nlet EditorWorkerServiceImpl = class EditorWorkerServiceImpl extends Disposable {\r\n constructor(modelService, configurationService, logService) {\r\n super();\r\n this._modelService = modelService;\r\n this._workerManager = this._register(new WorkerManager(this._modelService));\r\n this._logService = logService;\r\n // register default link-provider and default completions-provider\r\n this._register(modes.LinkProviderRegistry.register('*', {\r\n provideLinks: (model, token) => {\r\n if (!canSyncModel(this._modelService, model.uri)) {\r\n return Promise.resolve({ links: [] }); // File too large\r\n }\r\n return this._workerManager.withWorker().then(client => client.computeLinks(model.uri)).then(links => {\r\n return links && { links };\r\n });\r\n }\r\n }));\r\n this._register(modes.CompletionProviderRegistry.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService)));\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n canComputeDiff(original, modified) {\r\n return (canSyncModel(this._modelService, original) && canSyncModel(this._modelService, modified));\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._workerManager.withWorker().then(client => client.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime));\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n if (isNonEmptyArray(edits)) {\r\n if (!canSyncModel(this._modelService, resource)) {\r\n return Promise.resolve(edits); // File too large\r\n }\r\n const sw = StopWatch.create(true);\r\n const result = this._workerManager.withWorker().then(client => client.computeMoreMinimalEdits(resource, edits));\r\n result.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\r\n return Promise.race([result, timeout(1000).then(() => edits)]);\r\n }\r\n else {\r\n return Promise.resolve(undefined);\r\n }\r\n }\r\n canNavigateValueSet(resource) {\r\n return (canSyncModel(this._modelService, resource));\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._workerManager.withWorker().then(client => client.navigateValueSet(resource, range, up));\r\n }\r\n canComputeWordRanges(resource) {\r\n return canSyncModel(this._modelService, resource);\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._workerManager.withWorker().then(client => client.computeWordRanges(resource, range));\r\n }\r\n};\r\nEditorWorkerServiceImpl = __decorate([\r\n __param(0, IModelService),\r\n __param(1, ITextResourceConfigurationService),\r\n __param(2, ILogService)\r\n], EditorWorkerServiceImpl);\r\nexport { EditorWorkerServiceImpl };\r\nclass WordBasedCompletionItemProvider {\r\n constructor(workerManager, configurationService, modelService) {\r\n this._debugDisplayName = 'wordbasedCompletions';\r\n this._workerManager = workerManager;\r\n this._configurationService = configurationService;\r\n this._modelService = modelService;\r\n }\r\n provideCompletionItems(model, position) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const config = this._configurationService.getValue(model.uri, position, 'editor');\r\n if (!config.wordBasedSuggestions) {\r\n return undefined;\r\n }\r\n const models = [];\r\n if (config.wordBasedSuggestionsMode === 'currentDocument') {\r\n // only current file and only if not too large\r\n if (canSyncModel(this._modelService, model.uri)) {\r\n models.push(model.uri);\r\n }\r\n }\r\n else {\r\n // either all files or files of same language\r\n for (const candidate of this._modelService.getModels()) {\r\n if (!canSyncModel(this._modelService, candidate.uri)) {\r\n continue;\r\n }\r\n if (candidate === model) {\r\n models.unshift(candidate.uri);\r\n }\r\n else if (config.wordBasedSuggestionsMode === 'allDocuments' || candidate.getLanguageIdentifier().id === model.getLanguageIdentifier().id) {\r\n models.push(candidate.uri);\r\n }\r\n }\r\n }\r\n if (models.length === 0) {\r\n return undefined; // File too large, no other files\r\n }\r\n const wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n const word = model.getWordAtPosition(position);\r\n const replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n const insert = replace.setEndPosition(position.lineNumber, position.column);\r\n const client = yield this._workerManager.withWorker();\r\n const data = yield client.textualSuggest(models, word === null || word === void 0 ? void 0 : word.word, wordDefRegExp);\r\n if (!data) {\r\n return undefined;\r\n }\r\n return {\r\n duration: data.duration,\r\n suggestions: data.words.map((word) => {\r\n return {\r\n kind: 18 /* Text */,\r\n label: word,\r\n insertText: word,\r\n range: { insert, replace }\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n}\r\nclass WorkerManager extends Disposable {\r\n constructor(modelService) {\r\n super();\r\n this._modelService = modelService;\r\n this._editorWorkerClient = null;\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n let stopWorkerInterval = this._register(new IntervalTimer());\r\n stopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2));\r\n this._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\r\n }\r\n dispose() {\r\n if (this._editorWorkerClient) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n super.dispose();\r\n }\r\n /**\r\n * Check if the model service has no more models and stop the worker if that is the case.\r\n */\r\n _checkStopEmptyWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let models = this._modelService.getModels();\r\n if (models.length === 0) {\r\n // There are no more models => nothing possible for me to do\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n /**\r\n * Check if the worker has been idle for a while and then stop it.\r\n */\r\n _checkStopIdleWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\r\n if (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n withWorker() {\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n if (!this._editorWorkerClient) {\r\n this._editorWorkerClient = new EditorWorkerClient(this._modelService, false, 'editorWorkerService');\r\n }\r\n return Promise.resolve(this._editorWorkerClient);\r\n }\r\n}\r\nclass EditorModelManager extends Disposable {\r\n constructor(proxy, modelService, keepIdleModels) {\r\n super();\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n this._proxy = proxy;\r\n this._modelService = modelService;\r\n if (!keepIdleModels) {\r\n let timer = new IntervalTimer();\r\n timer.cancelAndSet(() => this._checkStopModelSync(), Math.round(STOP_SYNC_MODEL_DELTA_TIME_MS / 2));\r\n this._register(timer);\r\n }\r\n }\r\n dispose() {\r\n for (let modelUrl in this._syncedModels) {\r\n dispose(this._syncedModels[modelUrl]);\r\n }\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n super.dispose();\r\n }\r\n ensureSyncedResources(resources) {\r\n for (const resource of resources) {\r\n let resourceStr = resource.toString();\r\n if (!this._syncedModels[resourceStr]) {\r\n this._beginModelSync(resource);\r\n }\r\n if (this._syncedModels[resourceStr]) {\r\n this._syncedModelsLastUsedTime[resourceStr] = (new Date()).getTime();\r\n }\r\n }\r\n }\r\n _checkStopModelSync() {\r\n let currentTime = (new Date()).getTime();\r\n let toRemove = [];\r\n for (let modelUrl in this._syncedModelsLastUsedTime) {\r\n let elapsedTime = currentTime - this._syncedModelsLastUsedTime[modelUrl];\r\n if (elapsedTime > STOP_SYNC_MODEL_DELTA_TIME_MS) {\r\n toRemove.push(modelUrl);\r\n }\r\n }\r\n for (const e of toRemove) {\r\n this._stopModelSync(e);\r\n }\r\n }\r\n _beginModelSync(resource) {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return;\r\n }\r\n let modelUrl = resource.toString();\r\n this._proxy.acceptNewModel({\r\n url: model.uri.toString(),\r\n lines: model.getLinesContent(),\r\n EOL: model.getEOL(),\r\n versionId: model.getVersionId()\r\n });\r\n const toDispose = new DisposableStore();\r\n toDispose.add(model.onDidChangeContent((e) => {\r\n this._proxy.acceptModelChanged(modelUrl.toString(), e);\r\n }));\r\n toDispose.add(model.onWillDispose(() => {\r\n this._stopModelSync(modelUrl);\r\n }));\r\n toDispose.add(toDisposable(() => {\r\n this._proxy.acceptRemovedModel(modelUrl);\r\n }));\r\n this._syncedModels[modelUrl] = toDispose;\r\n }\r\n _stopModelSync(modelUrl) {\r\n let toDispose = this._syncedModels[modelUrl];\r\n delete this._syncedModels[modelUrl];\r\n delete this._syncedModelsLastUsedTime[modelUrl];\r\n dispose(toDispose);\r\n }\r\n}\r\nclass SynchronousWorkerClient {\r\n constructor(instance) {\r\n this._instance = instance;\r\n this._proxyObj = Promise.resolve(this._instance);\r\n }\r\n dispose() {\r\n this._instance.dispose();\r\n }\r\n getProxyObject() {\r\n return this._proxyObj;\r\n }\r\n}\r\nexport class EditorWorkerHost {\r\n constructor(workerClient) {\r\n this._workerClient = workerClient;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n return this._workerClient.fhr(method, args);\r\n }\r\n}\r\nexport class EditorWorkerClient extends Disposable {\r\n constructor(modelService, keepIdleModels, label) {\r\n super();\r\n this._disposed = false;\r\n this._modelService = modelService;\r\n this._keepIdleModels = keepIdleModels;\r\n this._workerFactory = new DefaultWorkerFactory(label);\r\n this._worker = null;\r\n this._modelManager = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n throw new Error(`Not implemented!`);\r\n }\r\n _getOrCreateWorker() {\r\n if (!this._worker) {\r\n try {\r\n this._worker = this._register(new SimpleWorkerClient(this._workerFactory, 'vs/editor/common/services/editorSimpleWorker', new EditorWorkerHost(this)));\r\n }\r\n catch (err) {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n }\r\n }\r\n return this._worker;\r\n }\r\n _getProxy() {\r\n return this._getOrCreateWorker().getProxyObject().then(undefined, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n return this._getOrCreateWorker().getProxyObject();\r\n });\r\n }\r\n _getOrCreateModelManager(proxy) {\r\n if (!this._modelManager) {\r\n this._modelManager = this._register(new EditorModelManager(proxy, this._modelService, this._keepIdleModels));\r\n }\r\n return this._modelManager;\r\n }\r\n _withSyncedResources(resources) {\r\n if (this._disposed) {\r\n return Promise.reject(canceled());\r\n }\r\n return this._getProxy().then((proxy) => {\r\n this._getOrCreateModelManager(proxy).ensureSyncedResources(resources);\r\n return proxy;\r\n });\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._withSyncedResources([original, modified]).then(proxy => {\r\n return proxy.computeDiff(original.toString(), modified.toString(), ignoreTrimWhitespace, maxComputationTime);\r\n });\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeMoreMinimalEdits(resource.toString(), edits);\r\n });\r\n }\r\n computeLinks(resource) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeLinks(resource.toString());\r\n });\r\n }\r\n textualSuggest(resources, leadingWord, wordDefRegExp) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const proxy = yield this._withSyncedResources(resources);\r\n const wordDef = wordDefRegExp.source;\r\n const wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\r\n });\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return Promise.resolve(null);\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\r\n });\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\r\n });\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorWorkerClient } from './editorWorkerServiceImpl.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * Create a new web worker that has model syncing capabilities built in.\r\n * Specify an AMD module to load that will `create` an object that will be proxied.\r\n */\r\nexport function createWebWorker(modelService, opts) {\r\n return new MonacoWebWorkerImpl(modelService, opts);\r\n}\r\nclass MonacoWebWorkerImpl extends EditorWorkerClient {\r\n constructor(modelService, opts) {\r\n super(modelService, opts.keepIdleModels || false, opts.label);\r\n this._foreignModuleId = opts.moduleId;\r\n this._foreignModuleCreateData = opts.createData || null;\r\n this._foreignModuleHost = opts.host || null;\r\n this._foreignProxy = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n if (!this._foreignModuleHost || typeof this._foreignModuleHost[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' or missing main thread foreign host.'));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModuleHost[method].apply(this._foreignModuleHost, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n _getForeignProxy() {\r\n if (!this._foreignProxy) {\r\n this._foreignProxy = this._getProxy().then((proxy) => {\r\n const foreignHostMethods = this._foreignModuleHost ? types.getAllMethodNames(this._foreignModuleHost) : [];\r\n return proxy.loadForeignModule(this._foreignModuleId, this._foreignModuleCreateData, foreignHostMethods).then((foreignMethods) => {\r\n this._foreignModuleCreateData = null;\r\n const proxyMethodRequest = (method, args) => {\r\n return proxy.fmr(method, args);\r\n };\r\n const createProxyMethod = (method, proxyMethodRequest) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return proxyMethodRequest(method, args);\r\n };\r\n };\r\n let foreignProxy = {};\r\n for (const foreignMethod of foreignMethods) {\r\n foreignProxy[foreignMethod] = createProxyMethod(foreignMethod, proxyMethodRequest);\r\n }\r\n return foreignProxy;\r\n });\r\n });\r\n }\r\n return this._foreignProxy;\r\n }\r\n getProxy() {\r\n return this._getForeignProxy();\r\n }\r\n withSyncedResources(resources) {\r\n return this._withSyncedResources(resources).then(_ => this.getProxy());\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { MonarchTokenizer } from '../common/monarch/monarchLexer.js';\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('standaloneColorizer', { createHTML: value => value });\r\nexport class Colorizer {\r\n static colorizeElement(themeService, modeService, domNode, options) {\r\n options = options || {};\r\n let theme = options.theme || 'vs';\r\n let mimeType = options.mimeType || domNode.getAttribute('lang') || domNode.getAttribute('data-lang');\r\n if (!mimeType) {\r\n console.error('Mode not detected');\r\n return Promise.resolve();\r\n }\r\n themeService.setTheme(theme);\r\n let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';\r\n domNode.className += ' ' + theme;\r\n let render = (str) => {\r\n var _a;\r\n const trustedhtml = (_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _a !== void 0 ? _a : str;\r\n domNode.innerHTML = trustedhtml;\r\n };\r\n return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));\r\n }\r\n static colorize(modeService, text, mimeType, options) {\r\n let tabSize = 4;\r\n if (options && typeof options.tabSize === 'number') {\r\n tabSize = options.tabSize;\r\n }\r\n if (strings.startsWithUTF8BOM(text)) {\r\n text = text.substr(1);\r\n }\r\n let lines = strings.splitLines(text);\r\n let language = modeService.getModeId(mimeType);\r\n if (!language) {\r\n return Promise.resolve(_fakeColorize(lines, tabSize));\r\n }\r\n // Send out the event to create the mode\r\n modeService.triggerMode(language);\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n return _colorize(lines, tabSize, tokenizationSupport);\r\n }\r\n const tokenizationSupportPromise = TokenizationRegistry.getPromise(language);\r\n if (tokenizationSupportPromise) {\r\n // A tokenizer will be registered soon\r\n return new Promise((resolve, reject) => {\r\n tokenizationSupportPromise.then(tokenizationSupport => {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n return new Promise((resolve, reject) => {\r\n let listener = null;\r\n let timeout = null;\r\n const execute = () => {\r\n if (listener) {\r\n listener.dispose();\r\n listener = null;\r\n }\r\n if (timeout) {\r\n timeout.dispose();\r\n timeout = null;\r\n }\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n return;\r\n }\r\n resolve(_fakeColorize(lines, tabSize));\r\n };\r\n // wait 500ms for mode to load, then give up\r\n timeout = new TimeoutTimer();\r\n timeout.cancelAndSet(execute, 500);\r\n listener = TokenizationRegistry.onDidChange((e) => {\r\n if (e.changedLanguages.indexOf(language) >= 0) {\r\n execute();\r\n }\r\n });\r\n });\r\n }\r\n static colorizeLine(line, mightContainNonBasicASCII, mightContainRTL, tokens, tabSize = 4) {\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, mightContainNonBasicASCII);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, mightContainRTL);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, tokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n return renderResult.html;\r\n }\r\n static colorizeModelLine(model, lineNumber, tabSize = 4) {\r\n let content = model.getLineContent(lineNumber);\r\n model.forceTokenization(lineNumber);\r\n let tokens = model.getLineTokens(lineNumber);\r\n let inflatedTokens = tokens.inflate();\r\n return this.colorizeLine(content, model.mightContainNonBasicASCII(), model.mightContainRTL(), inflatedTokens, tabSize);\r\n }\r\n}\r\nfunction _colorize(lines, tabSize, tokenizationSupport) {\r\n return new Promise((c, e) => {\r\n const execute = () => {\r\n const result = _actualColorize(lines, tabSize, tokenizationSupport);\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const status = tokenizationSupport.getLoadStatus();\r\n if (status.loaded === false) {\r\n status.promise.then(execute, e);\r\n return;\r\n }\r\n }\r\n c(result);\r\n };\r\n execute();\r\n });\r\n}\r\nfunction _fakeColorize(lines, tabSize) {\r\n let html = [];\r\n const defaultMetadata = ((0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = 0;\r\n tokens[1] = defaultMetadata;\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n tokens[0] = line.length;\r\n const lineTokens = new LineTokens(tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('
    ');\r\n }\r\n return html.join('');\r\n}\r\nfunction _actualColorize(lines, tabSize, tokenizationSupport) {\r\n let html = [];\r\n let state = tokenizationSupport.getInitialState();\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n let tokenizeResult = tokenizationSupport.tokenize2(line, true, state, 0);\r\n LineTokens.convertToEndOffset(tokenizeResult.tokens, line.length);\r\n let lineTokens = new LineTokens(tokenizeResult.tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens.inflate(), [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('
    ');\r\n state = tokenizeResult.endState;\r\n }\r\n return html.join('');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFuzzyActionArr(what) {\r\n return (Array.isArray(what));\r\n}\r\nexport function isFuzzyAction(what) {\r\n return !isFuzzyActionArr(what);\r\n}\r\nexport function isString(what) {\r\n return (typeof what === 'string');\r\n}\r\nexport function isIAction(what) {\r\n return !isString(what);\r\n}\r\n// Small helper functions\r\n/**\r\n * Is a string null, undefined, or empty?\r\n */\r\nexport function empty(s) {\r\n return (s ? false : true);\r\n}\r\n/**\r\n * Puts a string to lower case if 'ignoreCase' is set.\r\n */\r\nexport function fixCase(lexer, str) {\r\n return (lexer.ignoreCase && str ? str.toLowerCase() : str);\r\n}\r\n/**\r\n * Ensures there are no bad characters in a CSS token class.\r\n */\r\nexport function sanitize(s) {\r\n return s.replace(/[&<>'\"_]/g, '-'); // used on all output token CSS classes\r\n}\r\n// Logging\r\n/**\r\n * Logs a message.\r\n */\r\nexport function log(lexer, msg) {\r\n console.log(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Throwing errors\r\nexport function createError(lexer, msg) {\r\n return new Error(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Helper functions for rule finding and substitution\r\n/**\r\n * substituteMatches is used on lexer strings and can substitutes predefined patterns:\r\n * \t\t$$ => $\r\n * \t\t$# => id\r\n * \t\t$n => matched entry n\r\n * \t\t@attr => contents of lexer[attr]\r\n *\r\n * See documentation for more info\r\n */\r\nexport function substituteMatches(lexer, str, id, matches, state) {\r\n const re = /\\$((\\$)|(#)|(\\d\\d?)|[sS](\\d\\d?)|@(\\w+))/g;\r\n let stateMatches = null;\r\n return str.replace(re, function (full, sub, dollar, hash, n, s, attr, ofs, total) {\r\n if (!empty(dollar)) {\r\n return '$'; // $$\r\n }\r\n if (!empty(hash)) {\r\n return fixCase(lexer, id); // default $#\r\n }\r\n if (!empty(n) && n < matches.length) {\r\n return fixCase(lexer, matches[n]); // $n\r\n }\r\n if (!empty(attr) && lexer && typeof (lexer[attr]) === 'string') {\r\n return lexer[attr]; //@attribute\r\n }\r\n if (stateMatches === null) { // split state on demand\r\n stateMatches = state.split('.');\r\n stateMatches.unshift(state);\r\n }\r\n if (!empty(s) && s < stateMatches.length) {\r\n return fixCase(lexer, stateMatches[s]); //$Sn\r\n }\r\n return '';\r\n });\r\n}\r\n/**\r\n * Find the tokenizer rules for a specific state (i.e. next action)\r\n */\r\nexport function findRules(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const rules = lexer.tokenizer[state];\r\n if (rules) {\r\n return rules;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Is a certain state defined? In contrast to 'findRules' this works on a ILexerMin.\r\n * This is used during compilation where we may know the defined states\r\n * but not yet whether the corresponding rules are correct.\r\n */\r\nexport function stateExists(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const exist = lexer.stateNames[state];\r\n if (exist) {\r\n return true;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return false;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../../../common/core/token.js';\r\nimport * as modes from '../../../common/modes.js';\r\nimport { NULL_MODE_ID, NULL_STATE } from '../../../common/modes/nullMode.js';\r\nimport * as monarchCommon from './monarchCommon.js';\r\nconst CACHE_STACK_DEPTH = 5;\r\n/**\r\n * Reuse the same stack elements up to a certain depth.\r\n */\r\nclass MonarchStackElementFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(parent, state) {\r\n return this._INSTANCE.create(parent, state);\r\n }\r\n create(parent, state) {\r\n if (parent !== null && parent.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchStackElement(parent, state);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(parent);\r\n if (stackElementId.length > 0) {\r\n stackElementId += '|';\r\n }\r\n stackElementId += state;\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchStackElement(parent, state);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchStackElementFactory._INSTANCE = new MonarchStackElementFactory(CACHE_STACK_DEPTH);\r\nclass MonarchStackElement {\r\n constructor(parent, state) {\r\n this.parent = parent;\r\n this.state = state;\r\n this.depth = (this.parent ? this.parent.depth : 0) + 1;\r\n }\r\n static getStackElementId(element) {\r\n let result = '';\r\n while (element !== null) {\r\n if (result.length > 0) {\r\n result += '|';\r\n }\r\n result += element.state;\r\n element = element.parent;\r\n }\r\n return result;\r\n }\r\n static _equals(a, b) {\r\n while (a !== null && b !== null) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a.state !== b.state) {\r\n return false;\r\n }\r\n a = a.parent;\r\n b = b.parent;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n equals(other) {\r\n return MonarchStackElement._equals(this, other);\r\n }\r\n push(state) {\r\n return MonarchStackElementFactory.create(this, state);\r\n }\r\n pop() {\r\n return this.parent;\r\n }\r\n popall() {\r\n let result = this;\r\n while (result.parent) {\r\n result = result.parent;\r\n }\r\n return result;\r\n }\r\n switchTo(state) {\r\n return MonarchStackElementFactory.create(this.parent, state);\r\n }\r\n}\r\nclass EmbeddedModeData {\r\n constructor(modeId, state) {\r\n this.modeId = modeId;\r\n this.state = state;\r\n }\r\n equals(other) {\r\n return (this.modeId === other.modeId\r\n && this.state.equals(other.state));\r\n }\r\n clone() {\r\n let stateClone = this.state.clone();\r\n // save an object\r\n if (stateClone === this.state) {\r\n return this;\r\n }\r\n return new EmbeddedModeData(this.modeId, this.state);\r\n }\r\n}\r\n/**\r\n * Reuse the same line states up to a certain depth.\r\n */\r\nclass MonarchLineStateFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(stack, embeddedModeData) {\r\n return this._INSTANCE.create(stack, embeddedModeData);\r\n }\r\n create(stack, embeddedModeData) {\r\n if (embeddedModeData !== null) {\r\n // no caching when embedding\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n if (stack !== null && stack.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(stack);\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchLineState(stack, null);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchLineStateFactory._INSTANCE = new MonarchLineStateFactory(CACHE_STACK_DEPTH);\r\nclass MonarchLineState {\r\n constructor(stack, embeddedModeData) {\r\n this.stack = stack;\r\n this.embeddedModeData = embeddedModeData;\r\n }\r\n clone() {\r\n let embeddedModeDataClone = this.embeddedModeData ? this.embeddedModeData.clone() : null;\r\n // save an object\r\n if (embeddedModeDataClone === this.embeddedModeData) {\r\n return this;\r\n }\r\n return MonarchLineStateFactory.create(this.stack, this.embeddedModeData);\r\n }\r\n equals(other) {\r\n if (!(other instanceof MonarchLineState)) {\r\n return false;\r\n }\r\n if (!this.stack.equals(other.stack)) {\r\n return false;\r\n }\r\n if (this.embeddedModeData === null && other.embeddedModeData === null) {\r\n return true;\r\n }\r\n if (this.embeddedModeData === null || other.embeddedModeData === null) {\r\n return false;\r\n }\r\n return this.embeddedModeData.equals(other.embeddedModeData);\r\n }\r\n}\r\nclass MonarchClassicTokensCollector {\r\n constructor() {\r\n this._tokens = [];\r\n this._language = null;\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._language = modeId;\r\n }\r\n emit(startOffset, type) {\r\n if (this._lastTokenType === type && this._lastTokenLanguage === this._language) {\r\n return;\r\n }\r\n this._lastTokenType = type;\r\n this._lastTokenLanguage = this._language;\r\n this._tokens.push(new Token(startOffset, type, this._language));\r\n }\r\n nestedModeTokenize(embeddedModeLine, hasEOL, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize(embeddedModeLine, hasEOL, embeddedModeState, offsetDelta);\r\n this._tokens = this._tokens.concat(nestedResult.tokens);\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n this._language = null;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult(this._tokens, endState);\r\n }\r\n}\r\nclass MonarchModernTokensCollector {\r\n constructor(modeService, theme) {\r\n this._modeService = modeService;\r\n this._theme = theme;\r\n this._prependTokens = null;\r\n this._tokens = [];\r\n this._currentLanguageId = 0 /* Null */;\r\n this._lastTokenMetadata = 0;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._currentLanguageId = this._modeService.getLanguageIdentifier(modeId).id;\r\n }\r\n emit(startOffset, type) {\r\n let metadata = this._theme.match(this._currentLanguageId, type);\r\n if (this._lastTokenMetadata === metadata) {\r\n return;\r\n }\r\n this._lastTokenMetadata = metadata;\r\n this._tokens.push(startOffset);\r\n this._tokens.push(metadata);\r\n }\r\n static _merge(a, b, c) {\r\n let aLen = (a !== null ? a.length : 0);\r\n let bLen = b.length;\r\n let cLen = (c !== null ? c.length : 0);\r\n if (aLen === 0 && bLen === 0 && cLen === 0) {\r\n return new Uint32Array(0);\r\n }\r\n if (aLen === 0 && bLen === 0) {\r\n return c;\r\n }\r\n if (bLen === 0 && cLen === 0) {\r\n return a;\r\n }\r\n let result = new Uint32Array(aLen + bLen + cLen);\r\n if (a !== null) {\r\n result.set(a);\r\n }\r\n for (let i = 0; i < bLen; i++) {\r\n result[aLen + i] = b[i];\r\n }\r\n if (c !== null) {\r\n result.set(c, aLen + bLen);\r\n }\r\n return result;\r\n }\r\n nestedModeTokenize(embeddedModeLine, hasEOL, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize2(embeddedModeLine, hasEOL, embeddedModeState, offsetDelta);\r\n this._prependTokens = MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, nestedResult.tokens);\r\n this._tokens = [];\r\n this._currentLanguageId = 0;\r\n this._lastTokenMetadata = 0;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult2(MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, null), endState);\r\n }\r\n}\r\nexport class MonarchTokenizer {\r\n constructor(modeService, standaloneThemeService, modeId, lexer) {\r\n this._modeService = modeService;\r\n this._standaloneThemeService = standaloneThemeService;\r\n this._modeId = modeId;\r\n this._lexer = lexer;\r\n this._embeddedModes = Object.create(null);\r\n this.embeddedLoaded = Promise.resolve(undefined);\r\n // Set up listening for embedded modes\r\n let emitting = false;\r\n this._tokenizationRegistryListener = modes.TokenizationRegistry.onDidChange((e) => {\r\n if (emitting) {\r\n return;\r\n }\r\n let isOneOfMyEmbeddedModes = false;\r\n for (let i = 0, len = e.changedLanguages.length; i < len; i++) {\r\n let language = e.changedLanguages[i];\r\n if (this._embeddedModes[language]) {\r\n isOneOfMyEmbeddedModes = true;\r\n break;\r\n }\r\n }\r\n if (isOneOfMyEmbeddedModes) {\r\n emitting = true;\r\n modes.TokenizationRegistry.fire([this._modeId]);\r\n emitting = false;\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._tokenizationRegistryListener.dispose();\r\n }\r\n getLoadStatus() {\r\n let promises = [];\r\n for (let nestedModeId in this._embeddedModes) {\r\n const tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n // The nested mode is already loaded\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const nestedModeStatus = tokenizationSupport.getLoadStatus();\r\n if (nestedModeStatus.loaded === false) {\r\n promises.push(nestedModeStatus.promise);\r\n }\r\n }\r\n continue;\r\n }\r\n const tokenizationSupportPromise = modes.TokenizationRegistry.getPromise(nestedModeId);\r\n if (tokenizationSupportPromise) {\r\n // The nested mode is in the process of being loaded\r\n promises.push(tokenizationSupportPromise);\r\n }\r\n }\r\n if (promises.length === 0) {\r\n return {\r\n loaded: true\r\n };\r\n }\r\n return {\r\n loaded: false,\r\n promise: Promise.all(promises).then(_ => undefined)\r\n };\r\n }\r\n getInitialState() {\r\n let rootState = MonarchStackElementFactory.create(null, this._lexer.start);\r\n return MonarchLineStateFactory.create(rootState, null);\r\n }\r\n tokenize(line, hasEOL, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchClassicTokensCollector();\r\n let endLineState = this._tokenize(line, hasEOL, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n tokenize2(line, hasEOL, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchModernTokensCollector(this._modeService, this._standaloneThemeService.getColorTheme().tokenTheme);\r\n let endLineState = this._tokenize(line, hasEOL, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n _tokenize(line, hasEOL, lineState, offsetDelta, collector) {\r\n if (lineState.embeddedModeData) {\r\n return this._nestedTokenize(line, hasEOL, lineState, offsetDelta, collector);\r\n }\r\n else {\r\n return this._myTokenize(line, hasEOL, lineState, offsetDelta, collector);\r\n }\r\n }\r\n _findLeavingNestedModeOffset(line, state) {\r\n let rules = this._lexer.tokenizer[state.stack.state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state.stack.state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state.stack.state);\r\n }\r\n }\r\n let popOffset = -1;\r\n let hasEmbeddedPopRule = false;\r\n for (const rule of rules) {\r\n if (!monarchCommon.isIAction(rule.action) || rule.action.nextEmbedded !== '@pop') {\r\n continue;\r\n }\r\n hasEmbeddedPopRule = true;\r\n let regex = rule.regex;\r\n let regexSource = rule.regex.source;\r\n if (regexSource.substr(0, 4) === '^(?:' && regexSource.substr(regexSource.length - 1, 1) === ')') {\r\n let flags = (regex.ignoreCase ? 'i' : '') + (regex.unicode ? 'u' : '');\r\n regex = new RegExp(regexSource.substr(4, regexSource.length - 5), flags);\r\n }\r\n let result = line.search(regex);\r\n if (result === -1 || (result !== 0 && rule.matchOnlyAtLineStart)) {\r\n continue;\r\n }\r\n if (popOffset === -1 || result < popOffset) {\r\n popOffset = result;\r\n }\r\n }\r\n if (!hasEmbeddedPopRule) {\r\n throw monarchCommon.createError(this._lexer, 'no rule containing nextEmbedded: \"@pop\" in tokenizer embedded state: ' + state.stack.state);\r\n }\r\n return popOffset;\r\n }\r\n _nestedTokenize(line, hasEOL, lineState, offsetDelta, tokensCollector) {\r\n let popOffset = this._findLeavingNestedModeOffset(line, lineState);\r\n if (popOffset === -1) {\r\n // tokenization will not leave nested mode\r\n let nestedEndState = tokensCollector.nestedModeTokenize(line, hasEOL, lineState.embeddedModeData, offsetDelta);\r\n return MonarchLineStateFactory.create(lineState.stack, new EmbeddedModeData(lineState.embeddedModeData.modeId, nestedEndState));\r\n }\r\n let nestedModeLine = line.substring(0, popOffset);\r\n if (nestedModeLine.length > 0) {\r\n // tokenize with the nested mode\r\n tokensCollector.nestedModeTokenize(nestedModeLine, false, lineState.embeddedModeData, offsetDelta);\r\n }\r\n let restOfTheLine = line.substring(popOffset);\r\n return this._myTokenize(restOfTheLine, hasEOL, lineState, offsetDelta + popOffset, tokensCollector);\r\n }\r\n _safeRuleName(rule) {\r\n if (rule) {\r\n return rule.name;\r\n }\r\n return '(unknown)';\r\n }\r\n _myTokenize(lineWithoutLF, hasEOL, lineState, offsetDelta, tokensCollector) {\r\n tokensCollector.enterMode(offsetDelta, this._modeId);\r\n const lineWithoutLFLength = lineWithoutLF.length;\r\n const line = (hasEOL && this._lexer.includeLF ? lineWithoutLF + '\\n' : lineWithoutLF);\r\n const lineLength = line.length;\r\n let embeddedModeData = lineState.embeddedModeData;\r\n let stack = lineState.stack;\r\n let pos = 0;\r\n let groupMatching = null;\r\n // See https://github.com/microsoft/monaco-editor/issues/1235\r\n // Evaluate rules at least once for an empty line\r\n let forceEvaluation = true;\r\n while (forceEvaluation || pos < lineLength) {\r\n const pos0 = pos;\r\n const stackLen0 = stack.depth;\r\n const groupLen0 = groupMatching ? groupMatching.groups.length : 0;\r\n const state = stack.state;\r\n let matches = null;\r\n let matched = null;\r\n let action = null;\r\n let rule = null;\r\n let enteringEmbeddedMode = null;\r\n // check if we need to process group matches first\r\n if (groupMatching) {\r\n matches = groupMatching.matches;\r\n const groupEntry = groupMatching.groups.shift();\r\n matched = groupEntry.matched;\r\n action = groupEntry.action;\r\n rule = groupMatching.rule;\r\n // cleanup if necessary\r\n if (groupMatching.groups.length === 0) {\r\n groupMatching = null;\r\n }\r\n }\r\n else {\r\n // otherwise we match on the token stream\r\n if (!forceEvaluation && pos >= lineLength) {\r\n // nothing to do\r\n break;\r\n }\r\n forceEvaluation = false;\r\n // get the rules for this state\r\n let rules = this._lexer.tokenizer[state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state);\r\n }\r\n }\r\n // try each rule until we match\r\n let restOfLine = line.substr(pos);\r\n for (const rule of rules) {\r\n if (pos === 0 || !rule.matchOnlyAtLineStart) {\r\n matches = restOfLine.match(rule.regex);\r\n if (matches) {\r\n matched = matches[0];\r\n action = rule.action;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // We matched 'rule' with 'matches' and 'action'\r\n if (!matches) {\r\n matches = [''];\r\n matched = '';\r\n }\r\n if (!action) {\r\n // bad: we didn't match anything, and there is no action to take\r\n // we need to advance the stream or we get progress trouble\r\n if (pos < lineLength) {\r\n matches = [line.charAt(pos)];\r\n matched = matches[0];\r\n }\r\n action = this._lexer.defaultToken;\r\n }\r\n if (matched === null) {\r\n // should never happen, needed for strict null checking\r\n break;\r\n }\r\n // advance stream\r\n pos += matched.length;\r\n // maybe call action function (used for 'cases')\r\n while (monarchCommon.isFuzzyAction(action) && monarchCommon.isIAction(action) && action.test) {\r\n action = action.test(matched, matches, state, pos === lineLength);\r\n }\r\n let result = null;\r\n // set the result: either a string or an array of actions\r\n if (typeof action === 'string' || Array.isArray(action)) {\r\n result = action;\r\n }\r\n else if (action.group) {\r\n result = action.group;\r\n }\r\n else if (action.token !== null && action.token !== undefined) {\r\n // do $n replacements?\r\n if (action.tokenSubst) {\r\n result = monarchCommon.substituteMatches(this._lexer, action.token, matched, matches, state);\r\n }\r\n else {\r\n result = action.token;\r\n }\r\n // enter embedded mode?\r\n if (action.nextEmbedded) {\r\n if (action.nextEmbedded === '@pop') {\r\n if (!embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot pop embedded mode if not inside one');\r\n }\r\n embeddedModeData = null;\r\n }\r\n else if (embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot enter embedded mode from within an embedded mode');\r\n }\r\n else {\r\n enteringEmbeddedMode = monarchCommon.substituteMatches(this._lexer, action.nextEmbedded, matched, matches, state);\r\n }\r\n }\r\n // state transformations\r\n if (action.goBack) { // back up the stream..\r\n pos = Math.max(0, pos - action.goBack);\r\n }\r\n if (action.switchTo && typeof action.switchTo === 'string') {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.switchTo, matched, matches, state); // switch state without a push...\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to switch to a state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.switchTo(nextState);\r\n }\r\n }\r\n else if (action.transform && typeof action.transform === 'function') {\r\n throw monarchCommon.createError(this._lexer, 'action.transform not supported');\r\n }\r\n else if (action.next) {\r\n if (action.next === '@push') {\r\n if (stack.depth >= this._lexer.maxStack) {\r\n throw monarchCommon.createError(this._lexer, 'maximum tokenizer stack size reached: [' +\r\n stack.state + ',' + stack.parent.state + ',...]');\r\n }\r\n else {\r\n stack = stack.push(state);\r\n }\r\n }\r\n else if (action.next === '@pop') {\r\n if (stack.depth <= 1) {\r\n throw monarchCommon.createError(this._lexer, 'trying to pop an empty stack in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.pop();\r\n }\r\n }\r\n else if (action.next === '@popall') {\r\n stack = stack.popall();\r\n }\r\n else {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.next, matched, matches, state);\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to set a next state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.push(nextState);\r\n }\r\n }\r\n }\r\n if (action.log && typeof (action.log) === 'string') {\r\n monarchCommon.log(this._lexer, this._lexer.languageId + ': ' + monarchCommon.substituteMatches(this._lexer, action.log, matched, matches, state));\r\n }\r\n }\r\n // check result\r\n if (result === null) {\r\n throw monarchCommon.createError(this._lexer, 'lexer rule has no well-defined action in rule: ' + this._safeRuleName(rule));\r\n }\r\n const computeNewStateForEmbeddedMode = (enteringEmbeddedMode) => {\r\n // substitute language alias to known modes to support syntax highlighting\r\n let enteringEmbeddedModeId = this._modeService.getModeIdForLanguageName(enteringEmbeddedMode);\r\n if (enteringEmbeddedModeId) {\r\n enteringEmbeddedMode = enteringEmbeddedModeId;\r\n }\r\n const embeddedModeData = this._getNestedEmbeddedModeData(enteringEmbeddedMode);\r\n if (pos < lineLength) {\r\n // there is content from the embedded mode on this line\r\n const restOfLine = lineWithoutLF.substr(pos);\r\n return this._nestedTokenize(restOfLine, hasEOL, MonarchLineStateFactory.create(stack, embeddedModeData), offsetDelta + pos, tokensCollector);\r\n }\r\n else {\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n };\r\n // is the result a group match?\r\n if (Array.isArray(result)) {\r\n if (groupMatching && groupMatching.groups.length > 0) {\r\n throw monarchCommon.createError(this._lexer, 'groups cannot be nested: ' + this._safeRuleName(rule));\r\n }\r\n if (matches.length !== result.length + 1) {\r\n throw monarchCommon.createError(this._lexer, 'matched number of groups does not match the number of actions in rule: ' + this._safeRuleName(rule));\r\n }\r\n let totalLen = 0;\r\n for (let i = 1; i < matches.length; i++) {\r\n totalLen += matches[i].length;\r\n }\r\n if (totalLen !== matched.length) {\r\n throw monarchCommon.createError(this._lexer, 'with groups, all characters should be matched in consecutive groups in rule: ' + this._safeRuleName(rule));\r\n }\r\n groupMatching = {\r\n rule: rule,\r\n matches: matches,\r\n groups: []\r\n };\r\n for (let i = 0; i < result.length; i++) {\r\n groupMatching.groups[i] = {\r\n action: result[i],\r\n matched: matches[i + 1]\r\n };\r\n }\r\n pos -= matched.length;\r\n // call recursively to initiate first result match\r\n continue;\r\n }\r\n else {\r\n // regular result\r\n // check for '@rematch'\r\n if (result === '@rematch') {\r\n pos -= matched.length;\r\n matched = ''; // better set the next state too..\r\n matches = null;\r\n result = '';\r\n // Even though `@rematch` was specified, if `nextEmbedded` also specified,\r\n // a state transition should occur.\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n // check progress\r\n if (matched.length === 0) {\r\n if (lineLength === 0 || stackLen0 !== stack.depth || state !== stack.state || (!groupMatching ? 0 : groupMatching.groups.length) !== groupLen0) {\r\n continue;\r\n }\r\n else {\r\n throw monarchCommon.createError(this._lexer, 'no progress in tokenizer in rule: ' + this._safeRuleName(rule));\r\n }\r\n }\r\n // return the result (and check for brace matching)\r\n // todo: for efficiency we could pre-sanitize tokenPostfix and substitutions\r\n let tokenType = null;\r\n if (monarchCommon.isString(result) && result.indexOf('@brackets') === 0) {\r\n let rest = result.substr('@brackets'.length);\r\n let bracket = findBracket(this._lexer, matched);\r\n if (!bracket) {\r\n throw monarchCommon.createError(this._lexer, '@brackets token returned but no bracket defined as: ' + matched);\r\n }\r\n tokenType = monarchCommon.sanitize(bracket.token + rest);\r\n }\r\n else {\r\n let token = (result === '' ? '' : result + this._lexer.tokenPostfix);\r\n tokenType = monarchCommon.sanitize(token);\r\n }\r\n if (pos0 < lineWithoutLFLength) {\r\n tokensCollector.emit(pos0 + offsetDelta, tokenType);\r\n }\r\n }\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n _getNestedEmbeddedModeData(mimetypeOrModeId) {\r\n let nestedModeId = this._locateMode(mimetypeOrModeId);\r\n if (nestedModeId) {\r\n let tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n return new EmbeddedModeData(nestedModeId, tokenizationSupport.getInitialState());\r\n }\r\n }\r\n return new EmbeddedModeData(nestedModeId || NULL_MODE_ID, NULL_STATE);\r\n }\r\n _locateMode(mimetypeOrModeId) {\r\n if (!mimetypeOrModeId || !this._modeService.isRegisteredMode(mimetypeOrModeId)) {\r\n return null;\r\n }\r\n if (mimetypeOrModeId === this._modeId) {\r\n // embedding myself...\r\n return mimetypeOrModeId;\r\n }\r\n let modeId = this._modeService.getModeId(mimetypeOrModeId);\r\n if (modeId) {\r\n // Fire mode loading event\r\n this._modeService.triggerMode(modeId);\r\n this._embeddedModes[modeId] = true;\r\n }\r\n return modeId;\r\n }\r\n}\r\n/**\r\n * Searches for a bracket in the 'brackets' attribute that matches the input.\r\n */\r\nfunction findBracket(lexer, matched) {\r\n if (!matched) {\r\n return null;\r\n }\r\n matched = monarchCommon.fixCase(lexer, matched);\r\n let brackets = lexer.brackets;\r\n for (const bracket of brackets) {\r\n if (bracket.open === matched) {\r\n return { token: bracket.token, bracketType: 1 /* Open */ };\r\n }\r\n else if (bracket.close === matched) {\r\n return { token: bracket.token, bracketType: -1 /* Close */ };\r\n }\r\n }\r\n return null;\r\n}\r\nexport function createTokenizationSupport(modeService, standaloneThemeService, modeId, lexer) {\r\n return new MonarchTokenizer(modeService, standaloneThemeService, modeId, lexer);\r\n}\r\n","import { ResourceMap } from '../../../base/common/map.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { OVERRIDE_PROPERTY_PATTERN, overrideIdentifierFromKey } from './configurationRegistry.js';\r\nimport { addToValueTree, toValuesTree, getConfigurationValue, getDefaultValues, getConfigurationKeys, removeFromValueTree } from './configuration.js';\r\nexport class ConfigurationModel {\r\n constructor(_contents = {}, _keys = [], _overrides = []) {\r\n this._contents = _contents;\r\n this._keys = _keys;\r\n this._overrides = _overrides;\r\n this.isFrozen = false;\r\n }\r\n get contents() {\r\n return this.checkAndFreeze(this._contents);\r\n }\r\n get overrides() {\r\n return this.checkAndFreeze(this._overrides);\r\n }\r\n get keys() {\r\n return this.checkAndFreeze(this._keys);\r\n }\r\n isEmpty() {\r\n return this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\r\n }\r\n getValue(section) {\r\n return section ? getConfigurationValue(this.contents, section) : this.contents;\r\n }\r\n override(identifier) {\r\n const overrideContents = this.getContentsForOverrideIdentifer(identifier);\r\n if (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\r\n // If there are no valid overrides, return self\r\n return this;\r\n }\r\n let contents = {};\r\n for (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\r\n let contentsForKey = this.contents[key];\r\n let overrideContentsForKey = overrideContents[key];\r\n // If there are override contents for the key, clone and merge otherwise use base contents\r\n if (overrideContentsForKey) {\r\n // Clone and merge only if base contents and override contents are of type object otherwise just override\r\n if (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\r\n contentsForKey = objects.deepClone(contentsForKey);\r\n this.mergeContents(contentsForKey, overrideContentsForKey);\r\n }\r\n else {\r\n contentsForKey = overrideContentsForKey;\r\n }\r\n }\r\n contents[key] = contentsForKey;\r\n }\r\n return new ConfigurationModel(contents, this.keys, this.overrides);\r\n }\r\n merge(...others) {\r\n const contents = objects.deepClone(this.contents);\r\n const overrides = objects.deepClone(this.overrides);\r\n const keys = [...this.keys];\r\n for (const other of others) {\r\n this.mergeContents(contents, other.contents);\r\n for (const otherOverride of other.overrides) {\r\n const [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\r\n if (override) {\r\n this.mergeContents(override.contents, otherOverride.contents);\r\n }\r\n else {\r\n overrides.push(objects.deepClone(otherOverride));\r\n }\r\n }\r\n for (const key of other.keys) {\r\n if (keys.indexOf(key) === -1) {\r\n keys.push(key);\r\n }\r\n }\r\n }\r\n return new ConfigurationModel(contents, keys, overrides);\r\n }\r\n freeze() {\r\n this.isFrozen = true;\r\n return this;\r\n }\r\n mergeContents(source, target) {\r\n for (const key of Object.keys(target)) {\r\n if (key in source) {\r\n if (types.isObject(source[key]) && types.isObject(target[key])) {\r\n this.mergeContents(source[key], target[key]);\r\n continue;\r\n }\r\n }\r\n source[key] = objects.deepClone(target[key]);\r\n }\r\n }\r\n checkAndFreeze(data) {\r\n if (this.isFrozen && !Object.isFrozen(data)) {\r\n return objects.deepFreeze(data);\r\n }\r\n return data;\r\n }\r\n getContentsForOverrideIdentifer(identifier) {\r\n for (const override of this.overrides) {\r\n if (override.identifiers.indexOf(identifier) !== -1) {\r\n return override.contents;\r\n }\r\n }\r\n return null;\r\n }\r\n toJSON() {\r\n return {\r\n contents: this.contents,\r\n overrides: this.overrides,\r\n keys: this.keys\r\n };\r\n }\r\n // Update methods\r\n setValue(key, value) {\r\n this.addKey(key);\r\n addToValueTree(this.contents, key, value, e => { throw new Error(e); });\r\n }\r\n removeValue(key) {\r\n if (this.removeKey(key)) {\r\n removeFromValueTree(this.contents, key);\r\n }\r\n }\r\n addKey(key) {\r\n let index = this.keys.length;\r\n for (let i = 0; i < index; i++) {\r\n if (key.indexOf(this.keys[i]) === 0) {\r\n index = i;\r\n }\r\n }\r\n this.keys.splice(index, 1, key);\r\n }\r\n removeKey(key) {\r\n let index = this.keys.indexOf(key);\r\n if (index !== -1) {\r\n this.keys.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexport class DefaultConfigurationModel extends ConfigurationModel {\r\n constructor() {\r\n const contents = getDefaultValues();\r\n const keys = getConfigurationKeys();\r\n const overrides = [];\r\n for (const key of Object.keys(contents)) {\r\n if (OVERRIDE_PROPERTY_PATTERN.test(key)) {\r\n overrides.push({\r\n identifiers: [overrideIdentifierFromKey(key).trim()],\r\n keys: Object.keys(contents[key]),\r\n contents: toValuesTree(contents[key], message => console.error(`Conflict in default settings file: ${message}`)),\r\n });\r\n }\r\n }\r\n super(contents, keys, overrides);\r\n }\r\n}\r\nexport class Configuration {\r\n constructor(_defaultConfiguration, _localUserConfiguration, _remoteUserConfiguration = new ConfigurationModel(), _workspaceConfiguration = new ConfigurationModel(), _folderConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {\r\n this._defaultConfiguration = _defaultConfiguration;\r\n this._localUserConfiguration = _localUserConfiguration;\r\n this._remoteUserConfiguration = _remoteUserConfiguration;\r\n this._workspaceConfiguration = _workspaceConfiguration;\r\n this._folderConfigurations = _folderConfigurations;\r\n this._memoryConfiguration = _memoryConfiguration;\r\n this._memoryConfigurationByResource = _memoryConfigurationByResource;\r\n this._freeze = _freeze;\r\n this._workspaceConsolidatedConfiguration = null;\r\n this._foldersConsolidatedConfigurations = new ResourceMap();\r\n this._userConfiguration = null;\r\n }\r\n getValue(section, overrides, workspace) {\r\n const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace);\r\n return consolidateConfigurationModel.getValue(section);\r\n }\r\n updateValue(key, value, overrides = {}) {\r\n let memoryConfiguration;\r\n if (overrides.resource) {\r\n memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\r\n if (!memoryConfiguration) {\r\n memoryConfiguration = new ConfigurationModel();\r\n this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\r\n }\r\n }\r\n else {\r\n memoryConfiguration = this._memoryConfiguration;\r\n }\r\n if (value === undefined) {\r\n memoryConfiguration.removeValue(key);\r\n }\r\n else {\r\n memoryConfiguration.setValue(key, value);\r\n }\r\n if (!overrides.resource) {\r\n this._workspaceConsolidatedConfiguration = null;\r\n }\r\n }\r\n get userConfiguration() {\r\n if (!this._userConfiguration) {\r\n this._userConfiguration = this._remoteUserConfiguration.isEmpty() ? this._localUserConfiguration : this._localUserConfiguration.merge(this._remoteUserConfiguration);\r\n if (this._freeze) {\r\n this._userConfiguration.freeze();\r\n }\r\n }\r\n return this._userConfiguration;\r\n }\r\n getConsolidateConfigurationModel(overrides, workspace) {\r\n let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\r\n return overrides.overrideIdentifier ? configurationModel.override(overrides.overrideIdentifier) : configurationModel;\r\n }\r\n getConsolidatedConfigurationModelForResource({ resource }, workspace) {\r\n let consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n if (workspace && resource) {\r\n const root = workspace.getFolder(resource);\r\n if (root) {\r\n consolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\r\n }\r\n const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\r\n if (memoryConfigurationForResource) {\r\n consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\r\n }\r\n }\r\n return consolidateConfiguration;\r\n }\r\n getWorkspaceConsolidatedConfiguration() {\r\n if (!this._workspaceConsolidatedConfiguration) {\r\n this._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\r\n if (this._freeze) {\r\n this._workspaceConfiguration = this._workspaceConfiguration.freeze();\r\n }\r\n }\r\n return this._workspaceConsolidatedConfiguration;\r\n }\r\n getFolderConsolidatedConfiguration(folder) {\r\n let folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\r\n if (!folderConsolidatedConfiguration) {\r\n const workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n const folderConfiguration = this._folderConfigurations.get(folder);\r\n if (folderConfiguration) {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\r\n if (this._freeze) {\r\n folderConsolidatedConfiguration = folderConsolidatedConfiguration.freeze();\r\n }\r\n this._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\r\n }\r\n else {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration;\r\n }\r\n }\r\n return folderConsolidatedConfiguration;\r\n }\r\n toData() {\r\n return {\r\n defaults: {\r\n contents: this._defaultConfiguration.contents,\r\n overrides: this._defaultConfiguration.overrides,\r\n keys: this._defaultConfiguration.keys\r\n },\r\n user: {\r\n contents: this.userConfiguration.contents,\r\n overrides: this.userConfiguration.overrides,\r\n keys: this.userConfiguration.keys\r\n },\r\n workspace: {\r\n contents: this._workspaceConfiguration.contents,\r\n overrides: this._workspaceConfiguration.overrides,\r\n keys: this._workspaceConfiguration.keys\r\n },\r\n folders: [...this._folderConfigurations.keys()].reduce((result, folder) => {\r\n const { contents, overrides, keys } = this._folderConfigurations.get(folder);\r\n result.push([folder, { contents, overrides, keys }]);\r\n return result;\r\n }, [])\r\n };\r\n }\r\n static parse(data) {\r\n const defaultConfiguration = this.parseConfigurationModel(data.defaults);\r\n const userConfiguration = this.parseConfigurationModel(data.user);\r\n const workspaceConfiguration = this.parseConfigurationModel(data.workspace);\r\n const folders = data.folders.reduce((result, value) => {\r\n result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));\r\n return result;\r\n }, new ResourceMap());\r\n return new Configuration(defaultConfiguration, userConfiguration, new ConfigurationModel(), workspaceConfiguration, folders, new ConfigurationModel(), new ResourceMap(), false);\r\n }\r\n static parseConfigurationModel(model) {\r\n return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();\r\n }\r\n}\r\nexport class ConfigurationChangeEvent {\r\n constructor(change, previous, currentConfiguraiton, currentWorkspace) {\r\n this.change = change;\r\n this.previous = previous;\r\n this.currentConfiguraiton = currentConfiguraiton;\r\n this.currentWorkspace = currentWorkspace;\r\n this._previousConfiguration = undefined;\r\n const keysSet = new Set();\r\n change.keys.forEach(key => keysSet.add(key));\r\n change.overrides.forEach(([, keys]) => keys.forEach(key => keysSet.add(key)));\r\n this.affectedKeys = [...keysSet.values()];\r\n const configurationModel = new ConfigurationModel();\r\n this.affectedKeys.forEach(key => configurationModel.setValue(key, {}));\r\n this.affectedKeysTree = configurationModel.contents;\r\n }\r\n get previousConfiguration() {\r\n if (!this._previousConfiguration && this.previous) {\r\n this._previousConfiguration = Configuration.parse(this.previous.data);\r\n }\r\n return this._previousConfiguration;\r\n }\r\n affectsConfiguration(section, overrides) {\r\n var _a;\r\n if (this.doesAffectedKeysTreeContains(this.affectedKeysTree, section)) {\r\n if (overrides) {\r\n const value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, (_a = this.previous) === null || _a === void 0 ? void 0 : _a.workspace) : undefined;\r\n const value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\r\n return !objects.equals(value1, value2);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n doesAffectedKeysTreeContains(affectedKeysTree, section) {\r\n let requestedTree = toValuesTree({ [section]: true }, () => { });\r\n let key;\r\n while (typeof requestedTree === 'object' && (key = Object.keys(requestedTree)[0])) { // Only one key should present, since we added only one property\r\n affectedKeysTree = affectedKeysTree[key];\r\n if (!affectedKeysTree) {\r\n return false; // Requested tree is not found\r\n }\r\n requestedTree = requestedTree[key];\r\n }\r\n return true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { IntervalTimer, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class AbstractKeybindingService extends Disposable {\r\n constructor(_contextKeyService, _commandService, _telemetryService, _notificationService, _logService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._commandService = _commandService;\r\n this._telemetryService = _telemetryService;\r\n this._notificationService = _notificationService;\r\n this._logService = _logService;\r\n this._onDidUpdateKeybindings = this._register(new Emitter());\r\n this._currentChord = null;\r\n this._currentChordChecker = new IntervalTimer();\r\n this._currentChordStatusMessage = null;\r\n this._currentSingleModifier = null;\r\n this._currentSingleModifierClearTimeout = new TimeoutTimer();\r\n this._logging = false;\r\n }\r\n get onDidUpdateKeybindings() {\r\n return this._onDidUpdateKeybindings ? this._onDidUpdateKeybindings.event : Event.None; // Sinon stubbing walks properties on prototype\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _log(str) {\r\n if (this._logging) {\r\n this._logService.info(`[KeybindingService]: ${str}`);\r\n }\r\n }\r\n getKeybindings() {\r\n return this._getResolver().getKeybindings();\r\n }\r\n lookupKeybinding(commandId, context) {\r\n const result = this._getResolver().lookupPrimaryKeybinding(commandId, context || this._contextKeyService);\r\n if (!result) {\r\n return undefined;\r\n }\r\n return result.resolvedKeybinding;\r\n }\r\n dispatchEvent(e, target) {\r\n return this._dispatch(e, target);\r\n }\r\n softDispatch(e, target) {\r\n const keybinding = this.resolveKeyboardEvent(e);\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return null;\r\n }\r\n const [firstPart,] = keybinding.getDispatchParts();\r\n if (firstPart === null) {\r\n // cannot be dispatched, probably only modifier keys\r\n return null;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n return this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n }\r\n _enterChordMode(firstPart, keypressLabel) {\r\n this._currentChord = {\r\n keypress: firstPart,\r\n label: keypressLabel\r\n };\r\n this._currentChordStatusMessage = this._notificationService.status(nls.localize('first.chord', \"({0}) was pressed. Waiting for second key of chord...\", keypressLabel));\r\n const chordEnterTime = Date.now();\r\n this._currentChordChecker.cancelAndSet(() => {\r\n if (!this._documentHasFocus()) {\r\n // Focus has been lost => leave chord mode\r\n this._leaveChordMode();\r\n return;\r\n }\r\n if (Date.now() - chordEnterTime > 5000) {\r\n // 5 seconds elapsed => leave chord mode\r\n this._leaveChordMode();\r\n }\r\n }, 500);\r\n }\r\n _leaveChordMode() {\r\n if (this._currentChordStatusMessage) {\r\n this._currentChordStatusMessage.dispose();\r\n this._currentChordStatusMessage = null;\r\n }\r\n this._currentChordChecker.cancel();\r\n this._currentChord = null;\r\n }\r\n _dispatch(e, target) {\r\n return this._doDispatch(this.resolveKeyboardEvent(e), target, /*isSingleModiferChord*/ false);\r\n }\r\n _singleModifierDispatch(e, target) {\r\n const keybinding = this.resolveKeyboardEvent(e);\r\n const [singleModifier,] = keybinding.getSingleModifierDispatchParts();\r\n if (singleModifier !== null && this._currentSingleModifier === null) {\r\n // we have a valid `singleModifier`, store it for the next keyup, but clear it in 300ms\r\n this._log(`+ Storing single modifier for possible chord ${singleModifier}.`);\r\n this._currentSingleModifier = singleModifier;\r\n this._currentSingleModifierClearTimeout.cancelAndSet(() => {\r\n this._log(`+ Clearing single modifier due to 300ms elapsed.`);\r\n this._currentSingleModifier = null;\r\n }, 300);\r\n return false;\r\n }\r\n if (singleModifier !== null && singleModifier === this._currentSingleModifier) {\r\n // bingo!\r\n this._log(`/ Dispatching single modifier chord ${singleModifier} ${singleModifier}`);\r\n this._currentSingleModifierClearTimeout.cancel();\r\n this._currentSingleModifier = null;\r\n return this._doDispatch(keybinding, target, /*isSingleModiferChord*/ true);\r\n }\r\n this._currentSingleModifierClearTimeout.cancel();\r\n this._currentSingleModifier = null;\r\n return false;\r\n }\r\n _doDispatch(keybinding, target, isSingleModiferChord = false) {\r\n let shouldPreventDefault = false;\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return false;\r\n }\r\n let firstPart = null; // the first keybinding i.e. Ctrl+K\r\n let currentChord = null; // the \"second\" keybinding i.e. Ctrl+K \"Ctrl+D\"\r\n if (isSingleModiferChord) {\r\n const [dispatchKeyname,] = keybinding.getSingleModifierDispatchParts();\r\n firstPart = dispatchKeyname;\r\n currentChord = dispatchKeyname;\r\n }\r\n else {\r\n [firstPart,] = keybinding.getDispatchParts();\r\n currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n }\r\n if (firstPart === null) {\r\n this._log(`\\\\ Keyboard event cannot be dispatched in keydown phase.`);\r\n // cannot be dispatched, probably only modifier keys\r\n return shouldPreventDefault;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const keypressLabel = keybinding.getLabel();\r\n const resolveResult = this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n this._logService.trace('KeybindingService#dispatch', keypressLabel, resolveResult === null || resolveResult === void 0 ? void 0 : resolveResult.commandId);\r\n if (resolveResult && resolveResult.enterChord) {\r\n shouldPreventDefault = true;\r\n this._enterChordMode(firstPart, keypressLabel);\r\n return shouldPreventDefault;\r\n }\r\n if (this._currentChord) {\r\n if (!resolveResult || !resolveResult.commandId) {\r\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 */ });\r\n shouldPreventDefault = true;\r\n }\r\n }\r\n this._leaveChordMode();\r\n if (resolveResult && resolveResult.commandId) {\r\n if (!resolveResult.bubble) {\r\n shouldPreventDefault = true;\r\n }\r\n if (typeof resolveResult.commandArgs === 'undefined') {\r\n this._commandService.executeCommand(resolveResult.commandId).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n else {\r\n this._commandService.executeCommand(resolveResult.commandId, resolveResult.commandArgs).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' });\r\n }\r\n return shouldPreventDefault;\r\n }\r\n mightProducePrintableCharacter(event) {\r\n if (event.ctrlKey || event.metaKey) {\r\n // ignore ctrl/cmd-combination but not shift/alt-combinatios\r\n return false;\r\n }\r\n // weak check for certain ranges. this is properly implemented in a subclass\r\n // with access to the KeyboardMapperFactory.\r\n if ((event.keyCode >= 31 /* KEY_A */ && event.keyCode <= 56 /* KEY_Z */)\r\n || (event.keyCode >= 21 /* KEY_0 */ && event.keyCode <= 30 /* KEY_9 */)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class KeybindingResolver {\r\n constructor(defaultKeybindings, overrides, log) {\r\n this._log = log;\r\n this._defaultKeybindings = defaultKeybindings;\r\n this._defaultBoundCommands = new Map();\r\n for (let i = 0, len = defaultKeybindings.length; i < len; i++) {\r\n const command = defaultKeybindings[i].command;\r\n if (command) {\r\n this._defaultBoundCommands.set(command, true);\r\n }\r\n }\r\n this._map = new Map();\r\n this._lookupMap = new Map();\r\n this._keybindings = KeybindingResolver.combine(defaultKeybindings, overrides);\r\n for (let i = 0, len = this._keybindings.length; i < len; i++) {\r\n let k = this._keybindings[i];\r\n if (k.keypressParts.length === 0) {\r\n // unbound\r\n continue;\r\n }\r\n if (k.when && k.when.type === 0 /* False */) {\r\n // when condition is false\r\n continue;\r\n }\r\n // TODO@chords\r\n this._addKeyPress(k.keypressParts[0], k);\r\n }\r\n }\r\n static _isTargetedForRemoval(defaultKb, keypressFirstPart, keypressChordPart, command, when) {\r\n if (defaultKb.command !== command) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressFirstPart && defaultKb.keypressParts[0] !== keypressFirstPart) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressChordPart && defaultKb.keypressParts[1] !== keypressChordPart) {\r\n return false;\r\n }\r\n if (when) {\r\n if (!defaultKb.when) {\r\n return false;\r\n }\r\n if (!when.equals(defaultKb.when)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Looks for rules containing -command in `overrides` and removes them directly from `defaults`.\r\n */\r\n static combine(defaults, rawOverrides) {\r\n defaults = defaults.slice(0);\r\n let overrides = [];\r\n for (const override of rawOverrides) {\r\n if (!override.command || override.command.length === 0 || override.command.charAt(0) !== '-') {\r\n overrides.push(override);\r\n continue;\r\n }\r\n const command = override.command.substr(1);\r\n // TODO@chords\r\n const keypressFirstPart = override.keypressParts[0];\r\n const keypressChordPart = override.keypressParts[1];\r\n const when = override.when;\r\n for (let j = defaults.length - 1; j >= 0; j--) {\r\n if (this._isTargetedForRemoval(defaults[j], keypressFirstPart, keypressChordPart, command, when)) {\r\n defaults.splice(j, 1);\r\n }\r\n }\r\n }\r\n return defaults.concat(overrides);\r\n }\r\n _addKeyPress(keypress, item) {\r\n const conflicts = this._map.get(keypress);\r\n if (typeof conflicts === 'undefined') {\r\n // There is no conflict so far\r\n this._map.set(keypress, [item]);\r\n this._addToLookupMap(item);\r\n return;\r\n }\r\n for (let i = conflicts.length - 1; i >= 0; i--) {\r\n let conflict = conflicts[i];\r\n if (conflict.command === item.command) {\r\n continue;\r\n }\r\n const conflictIsChord = (conflict.keypressParts.length > 1);\r\n const itemIsChord = (item.keypressParts.length > 1);\r\n // TODO@chords\r\n if (conflictIsChord && itemIsChord && conflict.keypressParts[1] !== item.keypressParts[1]) {\r\n // The conflict only shares the chord start with this command\r\n continue;\r\n }\r\n if (KeybindingResolver.whenIsEntirelyIncluded(conflict.when, item.when)) {\r\n // `item` completely overwrites `conflict`\r\n // Remove conflict from the lookupMap\r\n this._removeFromLookupMap(conflict);\r\n }\r\n }\r\n conflicts.push(item);\r\n this._addToLookupMap(item);\r\n }\r\n _addToLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n arr = [item];\r\n this._lookupMap.set(item.command, arr);\r\n }\r\n else {\r\n arr.push(item);\r\n }\r\n }\r\n _removeFromLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n return;\r\n }\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i] === item) {\r\n arr.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n /**\r\n * Returns true if it is provable `a` implies `b`.\r\n */\r\n static whenIsEntirelyIncluded(a, b) {\r\n if (!b || b.type === 1 /* True */) {\r\n return true;\r\n }\r\n if (!a || a.type === 1 /* True */) {\r\n return false;\r\n }\r\n return this._implies(a, b);\r\n }\r\n /**\r\n * Returns true if it is provable `p` implies `q`.\r\n */\r\n static _implies(p, q) {\r\n const notP = p.negate();\r\n const terminals = (node) => {\r\n if (node.type === 9 /* Or */) {\r\n return node.expr;\r\n }\r\n return [node];\r\n };\r\n let expr = terminals(notP).concat(terminals(q));\r\n for (let i = 0; i < expr.length; i++) {\r\n const a = expr[i];\r\n const notA = a.negate();\r\n for (let j = i + 1; j < expr.length; j++) {\r\n const b = expr[j];\r\n if (notA.equals(b)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n getKeybindings() {\r\n return this._keybindings;\r\n }\r\n lookupPrimaryKeybinding(commandId, context) {\r\n const items = this._lookupMap.get(commandId);\r\n if (typeof items === 'undefined' || items.length === 0) {\r\n return null;\r\n }\r\n if (items.length === 1) {\r\n return items[0];\r\n }\r\n for (let i = items.length - 1; i >= 0; i--) {\r\n const item = items[i];\r\n if (context.contextMatchesRules(item.when)) {\r\n return item;\r\n }\r\n }\r\n return items[items.length - 1];\r\n }\r\n resolve(context, currentChord, keypress) {\r\n this._log(`| Resolving ${keypress}${currentChord ? ` chorded from ${currentChord}` : ``}`);\r\n let lookupMap = null;\r\n if (currentChord !== null) {\r\n // Fetch all chord bindings for `currentChord`\r\n const candidates = this._map.get(currentChord);\r\n if (typeof candidates === 'undefined') {\r\n // No chords starting with `currentChord`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = [];\r\n for (let i = 0, len = candidates.length; i < len; i++) {\r\n let candidate = candidates[i];\r\n // TODO@chords\r\n if (candidate.keypressParts[1] === keypress) {\r\n lookupMap.push(candidate);\r\n }\r\n }\r\n }\r\n else {\r\n const candidates = this._map.get(keypress);\r\n if (typeof candidates === 'undefined') {\r\n // No bindings with `keypress`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = candidates;\r\n }\r\n let result = this._findCommand(context, lookupMap);\r\n if (!result) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, no when clauses matched the context.`);\r\n return null;\r\n }\r\n // TODO@chords\r\n if (currentChord === null && result.keypressParts.length > 1 && result.keypressParts[1] !== null) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched chord, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: true,\r\n leaveChord: false,\r\n commandId: null,\r\n commandArgs: null,\r\n bubble: false\r\n };\r\n }\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched ${result.command}, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: false,\r\n leaveChord: result.keypressParts.length > 1,\r\n commandId: result.command,\r\n commandArgs: result.commandArgs,\r\n bubble: result.bubble\r\n };\r\n }\r\n _findCommand(context, matches) {\r\n for (let i = matches.length - 1; i >= 0; i--) {\r\n let k = matches[i];\r\n if (!KeybindingResolver.contextMatchesRules(context, k.when)) {\r\n continue;\r\n }\r\n return k;\r\n }\r\n return null;\r\n }\r\n static contextMatchesRules(context, rules) {\r\n if (!rules) {\r\n return true;\r\n }\r\n return rules.evaluate(context);\r\n }\r\n}\r\nfunction printWhenExplanation(when) {\r\n if (!when) {\r\n return `no when condition`;\r\n }\r\n return `${when.serialize()}`;\r\n}\r\nfunction printSourceExplanation(kb) {\r\n return (kb.extensionId\r\n ? (kb.isBuiltinExtension ? `built-in extension ${kb.extensionId}` : `user extension ${kb.extensionId}`)\r\n : (kb.isDefault ? `built-in` : `user`));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ResolvedKeybindingItem {\r\n constructor(resolvedKeybinding, command, commandArgs, when, isDefault, extensionId, isBuiltinExtension) {\r\n this._resolvedKeybindingItemBrand = undefined;\r\n this.resolvedKeybinding = resolvedKeybinding;\r\n this.keypressParts = resolvedKeybinding ? removeElementsAfterNulls(resolvedKeybinding.getDispatchParts()) : [];\r\n if (resolvedKeybinding && this.keypressParts.length === 0) {\r\n // handle possible single modifier chord keybindings\r\n this.keypressParts = removeElementsAfterNulls(resolvedKeybinding.getSingleModifierDispatchParts());\r\n }\r\n this.bubble = (command ? command.charCodeAt(0) === 94 /* Caret */ : false);\r\n this.command = this.bubble ? command.substr(1) : command;\r\n this.commandArgs = commandArgs;\r\n this.when = when;\r\n this.isDefault = isDefault;\r\n this.extensionId = extensionId;\r\n this.isBuiltinExtension = isBuiltinExtension;\r\n }\r\n}\r\nexport function removeElementsAfterNulls(arr) {\r\n let result = [];\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n const element = arr[i];\r\n if (!element) {\r\n // stop processing at first encountered null\r\n return result;\r\n }\r\n result.push(element);\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from '../../../base/common/errors.js';\r\nimport { UILabelProvider, AriaLabelProvider } from '../../../base/common/keybindingLabels.js';\r\nimport { ResolvedKeybinding, ResolvedKeybindingPart } from '../../../base/common/keyCodes.js';\r\nexport class BaseResolvedKeybinding extends ResolvedKeybinding {\r\n constructor(os, parts) {\r\n super();\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this._os = os;\r\n this._parts = parts;\r\n }\r\n getLabel() {\r\n return UILabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getLabel(keybinding));\r\n }\r\n getAriaLabel() {\r\n return AriaLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getAriaLabel(keybinding));\r\n }\r\n isChord() {\r\n return (this._parts.length > 1);\r\n }\r\n getParts() {\r\n return this._parts.map((keybinding) => this._getPart(keybinding));\r\n }\r\n _getPart(keybinding) {\r\n return new ResolvedKeybindingPart(keybinding.ctrlKey, keybinding.shiftKey, keybinding.altKey, keybinding.metaKey, this._getLabel(keybinding), this._getAriaLabel(keybinding));\r\n }\r\n getDispatchParts() {\r\n return this._parts.map((keybinding) => this._getDispatchPart(keybinding));\r\n }\r\n getSingleModifierDispatchParts() {\r\n return this._parts.map((keybinding) => this._getSingleModifierDispatchPart(keybinding));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { KeyCodeUtils } from '../../../base/common/keyCodes.js';\r\nimport { BaseResolvedKeybinding } from './baseResolvedKeybinding.js';\r\n/**\r\n * Do not instantiate. Use KeybindingService to get a ResolvedKeybinding seeded with information about the current kb layout.\r\n */\r\nexport class USLayoutResolvedKeybinding extends BaseResolvedKeybinding {\r\n constructor(actual, os) {\r\n super(os, actual.parts);\r\n }\r\n _keyCodeToUILabel(keyCode) {\r\n if (this._os === 2 /* Macintosh */) {\r\n switch (keyCode) {\r\n case 15 /* LeftArrow */:\r\n return '←';\r\n case 16 /* UpArrow */:\r\n return '↑';\r\n case 17 /* RightArrow */:\r\n return '→';\r\n case 18 /* DownArrow */:\r\n return '↓';\r\n }\r\n }\r\n return KeyCodeUtils.toString(keyCode);\r\n }\r\n _getLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return this._keyCodeToUILabel(keybinding.keyCode);\r\n }\r\n _getAriaLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return KeyCodeUtils.toString(keybinding.keyCode);\r\n }\r\n _getDispatchPart(keybinding) {\r\n return USLayoutResolvedKeybinding.getDispatchStr(keybinding);\r\n }\r\n static getDispatchStr(keybinding) {\r\n if (keybinding.isModifierKey()) {\r\n return null;\r\n }\r\n let result = '';\r\n if (keybinding.ctrlKey) {\r\n result += 'ctrl+';\r\n }\r\n if (keybinding.shiftKey) {\r\n result += 'shift+';\r\n }\r\n if (keybinding.altKey) {\r\n result += 'alt+';\r\n }\r\n if (keybinding.metaKey) {\r\n result += 'meta+';\r\n }\r\n result += KeyCodeUtils.toString(keybinding.keyCode);\r\n return result;\r\n }\r\n _getSingleModifierDispatchPart(keybinding) {\r\n if (keybinding.keyCode === 5 /* Ctrl */ && !keybinding.shiftKey && !keybinding.altKey && !keybinding.metaKey) {\r\n return 'ctrl';\r\n }\r\n if (keybinding.keyCode === 4 /* Shift */ && !keybinding.ctrlKey && !keybinding.altKey && !keybinding.metaKey) {\r\n return 'shift';\r\n }\r\n if (keybinding.keyCode === 6 /* Alt */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.metaKey) {\r\n return 'alt';\r\n }\r\n if (keybinding.keyCode === 57 /* Meta */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.altKey) {\r\n return 'meta';\r\n }\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { SimpleKeybinding, createKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { ImmortalReference, toDisposable, DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { OS, isLinux, isMacintosh } from '../../../base/common/platform.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { ResourceTextEdit } from '../../browser/services/bulkEditService.js';\r\nimport { isDiffEditorConfigurationKey, isEditorConfigurationKey } from '../../common/config/commonEditorConfig.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position as Pos } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { Configuration, ConfigurationModel, DefaultConfigurationModel, ConfigurationChangeEvent } from '../../../platform/configuration/common/configurationModels.js';\r\nimport { AbstractKeybindingService } from '../../../platform/keybinding/common/abstractKeybindingService.js';\r\nimport { KeybindingResolver } from '../../../platform/keybinding/common/keybindingResolver.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { ResolvedKeybindingItem } from '../../../platform/keybinding/common/resolvedKeybindingItem.js';\r\nimport { USLayoutResolvedKeybinding } from '../../../platform/keybinding/common/usLayoutResolvedKeybinding.js';\r\nimport { NoOpNotification } from '../../../platform/notification/common/notification.js';\r\nimport { WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';\r\nimport { SimpleServicesNLS } from '../../common/standaloneStrings.js';\r\nexport class SimpleModel {\r\n constructor(model) {\r\n this.disposed = false;\r\n this.model = model;\r\n this._onWillDispose = new Emitter();\r\n }\r\n get textEditorModel() {\r\n return this.model;\r\n }\r\n dispose() {\r\n this.disposed = true;\r\n this._onWillDispose.fire();\r\n }\r\n}\r\nfunction withTypedEditor(widget, codeEditorCallback, diffEditorCallback) {\r\n if (isCodeEditor(widget)) {\r\n // Single Editor\r\n return codeEditorCallback(widget);\r\n }\r\n else {\r\n // Diff Editor\r\n return diffEditorCallback(widget);\r\n }\r\n}\r\nlet SimpleEditorModelResolverService = class SimpleEditorModelResolverService {\r\n constructor(modelService) {\r\n this.modelService = modelService;\r\n }\r\n setEditor(editor) {\r\n this.editor = editor;\r\n }\r\n createModelReference(resource) {\r\n let model = null;\r\n if (this.editor) {\r\n model = withTypedEditor(this.editor, (editor) => this.findModel(editor, resource), (diffEditor) => this.findModel(diffEditor.getOriginalEditor(), resource) || this.findModel(diffEditor.getModifiedEditor(), resource));\r\n }\r\n if (!model) {\r\n return Promise.reject(new Error(`Model not found`));\r\n }\r\n return Promise.resolve(new ImmortalReference(new SimpleModel(model)));\r\n }\r\n findModel(editor, resource) {\r\n let model = this.modelService.getModel(resource);\r\n if (model && model.uri.toString() !== resource.toString()) {\r\n return null;\r\n }\r\n return model;\r\n }\r\n};\r\nSimpleEditorModelResolverService = __decorate([\r\n __param(0, IModelService)\r\n], SimpleEditorModelResolverService);\r\nexport { SimpleEditorModelResolverService };\r\nexport class SimpleEditorProgressService {\r\n show() {\r\n return SimpleEditorProgressService.NULL_PROGRESS_RUNNER;\r\n }\r\n showWhile(promise, delay) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield promise;\r\n });\r\n }\r\n}\r\nSimpleEditorProgressService.NULL_PROGRESS_RUNNER = {\r\n done: () => { },\r\n total: () => { },\r\n worked: () => { }\r\n};\r\nexport class SimpleDialogService {\r\n confirm(confirmation) {\r\n return this.doConfirm(confirmation).then(confirmed => {\r\n return {\r\n confirmed,\r\n checkboxChecked: false // unsupported\r\n };\r\n });\r\n }\r\n doConfirm(confirmation) {\r\n let messageText = confirmation.message;\r\n if (confirmation.detail) {\r\n messageText = messageText + '\\n\\n' + confirmation.detail;\r\n }\r\n return Promise.resolve(window.confirm(messageText));\r\n }\r\n show(severity, message, buttons, options) {\r\n return Promise.resolve({ choice: 0 });\r\n }\r\n}\r\nexport class SimpleNotificationService {\r\n info(message) {\r\n return this.notify({ severity: Severity.Info, message });\r\n }\r\n warn(message) {\r\n return this.notify({ severity: Severity.Warning, message });\r\n }\r\n error(error) {\r\n return this.notify({ severity: Severity.Error, message: error });\r\n }\r\n notify(notification) {\r\n switch (notification.severity) {\r\n case Severity.Error:\r\n console.error(notification.message);\r\n break;\r\n case Severity.Warning:\r\n console.warn(notification.message);\r\n break;\r\n default:\r\n console.log(notification.message);\r\n break;\r\n }\r\n return SimpleNotificationService.NO_OP;\r\n }\r\n status(message, options) {\r\n return Disposable.None;\r\n }\r\n}\r\nSimpleNotificationService.NO_OP = new NoOpNotification();\r\nexport class StandaloneCommandService {\r\n constructor(instantiationService) {\r\n this._onWillExecuteCommand = new Emitter();\r\n this._onDidExecuteCommand = new Emitter();\r\n this.onDidExecuteCommand = this._onDidExecuteCommand.event;\r\n this._instantiationService = instantiationService;\r\n }\r\n executeCommand(id, ...args) {\r\n const command = CommandsRegistry.getCommand(id);\r\n if (!command) {\r\n return Promise.reject(new Error(`command '${id}' not found`));\r\n }\r\n try {\r\n this._onWillExecuteCommand.fire({ commandId: id, args });\r\n const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]);\r\n this._onDidExecuteCommand.fire({ commandId: id, args });\r\n return Promise.resolve(result);\r\n }\r\n catch (err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n}\r\nexport class StandaloneKeybindingService extends AbstractKeybindingService {\r\n constructor(contextKeyService, commandService, telemetryService, notificationService, logService, domNode) {\r\n super(contextKeyService, commandService, telemetryService, notificationService, logService);\r\n this._cachedResolver = null;\r\n this._dynamicKeybindings = [];\r\n // for standard keybindings\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => {\r\n const keyEvent = new StandardKeyboardEvent(e);\r\n const shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target);\r\n if (shouldPreventDefault) {\r\n keyEvent.preventDefault();\r\n keyEvent.stopPropagation();\r\n }\r\n }));\r\n // for single modifier chord keybindings (e.g. shift shift)\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_UP, (e) => {\r\n const keyEvent = new StandardKeyboardEvent(e);\r\n const shouldPreventDefault = this._singleModifierDispatch(keyEvent, keyEvent.target);\r\n if (shouldPreventDefault) {\r\n keyEvent.preventDefault();\r\n }\r\n }));\r\n }\r\n addDynamicKeybinding(commandId, _keybinding, handler, when) {\r\n const keybinding = createKeybinding(_keybinding, OS);\r\n const toDispose = new DisposableStore();\r\n if (keybinding) {\r\n this._dynamicKeybindings.push({\r\n keybinding: keybinding,\r\n command: commandId,\r\n when: when,\r\n weight1: 1000,\r\n weight2: 0,\r\n extensionId: null,\r\n isBuiltinExtension: false\r\n });\r\n toDispose.add(toDisposable(() => {\r\n for (let i = 0; i < this._dynamicKeybindings.length; i++) {\r\n let kb = this._dynamicKeybindings[i];\r\n if (kb.command === commandId) {\r\n this._dynamicKeybindings.splice(i, 1);\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return;\r\n }\r\n }\r\n }));\r\n }\r\n toDispose.add(CommandsRegistry.registerCommand(commandId, handler));\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return toDispose;\r\n }\r\n updateResolver(event) {\r\n this._cachedResolver = null;\r\n this._onDidUpdateKeybindings.fire(event);\r\n }\r\n _getResolver() {\r\n if (!this._cachedResolver) {\r\n const defaults = this._toNormalizedKeybindingItems(KeybindingsRegistry.getDefaultKeybindings(), true);\r\n const overrides = this._toNormalizedKeybindingItems(this._dynamicKeybindings, false);\r\n this._cachedResolver = new KeybindingResolver(defaults, overrides, (str) => this._log(str));\r\n }\r\n return this._cachedResolver;\r\n }\r\n _documentHasFocus() {\r\n return document.hasFocus();\r\n }\r\n _toNormalizedKeybindingItems(items, isDefault) {\r\n let result = [], resultLen = 0;\r\n for (const item of items) {\r\n const when = item.when || undefined;\r\n const keybinding = item.keybinding;\r\n if (!keybinding) {\r\n // This might be a removal keybinding item in user settings => accept it\r\n result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false);\r\n }\r\n else {\r\n const resolvedKeybindings = this.resolveKeybinding(keybinding);\r\n for (const resolvedKeybinding of resolvedKeybindings) {\r\n result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n resolveKeybinding(keybinding) {\r\n return [new USLayoutResolvedKeybinding(keybinding, OS)];\r\n }\r\n resolveKeyboardEvent(keyboardEvent) {\r\n let keybinding = new SimpleKeybinding(keyboardEvent.ctrlKey, keyboardEvent.shiftKey, keyboardEvent.altKey, keyboardEvent.metaKey, keyboardEvent.keyCode).toChord();\r\n return new USLayoutResolvedKeybinding(keybinding, OS);\r\n }\r\n}\r\nfunction isConfigurationOverrides(thing) {\r\n return thing\r\n && typeof thing === 'object'\r\n && (!thing.overrideIdentifier || typeof thing.overrideIdentifier === 'string')\r\n && (!thing.resource || thing.resource instanceof URI);\r\n}\r\nexport class SimpleConfigurationService {\r\n constructor() {\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.onDidChangeConfiguration = this._onDidChangeConfiguration.event;\r\n this._configuration = new Configuration(new DefaultConfigurationModel(), new ConfigurationModel());\r\n }\r\n getValue(arg1, arg2) {\r\n const section = typeof arg1 === 'string' ? arg1 : undefined;\r\n const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {};\r\n return this._configuration.getValue(section, overrides, undefined);\r\n }\r\n updateValues(values) {\r\n const previous = { data: this._configuration.toData() };\r\n let changedKeys = [];\r\n for (const entry of values) {\r\n const [key, value] = entry;\r\n if (this.getValue(key) === value) {\r\n continue;\r\n }\r\n this._configuration.updateValue(key, value);\r\n changedKeys.push(key);\r\n }\r\n if (changedKeys.length > 0) {\r\n const configurationChangeEvent = new ConfigurationChangeEvent({ keys: changedKeys, overrides: [] }, previous, this._configuration);\r\n configurationChangeEvent.source = 7 /* MEMORY */;\r\n configurationChangeEvent.sourceConfig = null;\r\n this._onDidChangeConfiguration.fire(configurationChangeEvent);\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nexport class SimpleResourceConfigurationService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.configurationService.onDidChangeConfiguration((e) => {\r\n this._onDidChangeConfiguration.fire({ affectedKeys: e.affectedKeys, affectsConfiguration: (resource, configuration) => e.affectsConfiguration(configuration) });\r\n });\r\n }\r\n getValue(resource, arg2, arg3) {\r\n const position = Pos.isIPosition(arg2) ? arg2 : null;\r\n const section = position ? (typeof arg3 === 'string' ? arg3 : undefined) : (typeof arg2 === 'string' ? arg2 : undefined);\r\n if (typeof section === 'undefined') {\r\n return this.configurationService.getValue();\r\n }\r\n return this.configurationService.getValue(section);\r\n }\r\n}\r\nlet SimpleResourcePropertiesService = class SimpleResourcePropertiesService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n }\r\n getEOL(resource, language) {\r\n const eol = this.configurationService.getValue('files.eol', { overrideIdentifier: language, resource });\r\n if (eol && typeof eol === 'string' && eol !== 'auto') {\r\n return eol;\r\n }\r\n return (isLinux || isMacintosh) ? '\\n' : '\\r\\n';\r\n }\r\n};\r\nSimpleResourcePropertiesService = __decorate([\r\n __param(0, IConfigurationService)\r\n], SimpleResourcePropertiesService);\r\nexport { SimpleResourcePropertiesService };\r\nexport class StandaloneTelemetryService {\r\n publicLog(eventName, data) {\r\n return Promise.resolve(undefined);\r\n }\r\n publicLog2(eventName, data) {\r\n return this.publicLog(eventName, data);\r\n }\r\n}\r\nexport class SimpleWorkspaceContextService {\r\n constructor() {\r\n const resource = URI.from({ scheme: SimpleWorkspaceContextService.SCHEME, authority: 'model', path: '/' });\r\n this.workspace = { id: '4064f6ec-cb38-4ad0-af64-ee6467e63c82', folders: [new WorkspaceFolder({ uri: resource, name: '', index: 0 })] };\r\n }\r\n getWorkspace() {\r\n return this.workspace;\r\n }\r\n}\r\nSimpleWorkspaceContextService.SCHEME = 'inmemory';\r\nexport function updateConfigurationService(configurationService, source, isDiffEditor) {\r\n if (!source) {\r\n return;\r\n }\r\n if (!(configurationService instanceof SimpleConfigurationService)) {\r\n return;\r\n }\r\n let toUpdate = [];\r\n Object.keys(source).forEach((key) => {\r\n if (isEditorConfigurationKey(key)) {\r\n toUpdate.push([`editor.${key}`, source[key]]);\r\n }\r\n if (isDiffEditor && isDiffEditorConfigurationKey(key)) {\r\n toUpdate.push([`diffEditor.${key}`, source[key]]);\r\n }\r\n });\r\n if (toUpdate.length > 0) {\r\n configurationService.updateValues(toUpdate);\r\n }\r\n}\r\nexport class SimpleBulkEditService {\r\n constructor(_modelService) {\r\n this._modelService = _modelService;\r\n //\r\n }\r\n hasPreviewHandler() {\r\n return false;\r\n }\r\n apply(edits, _options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const textEdits = new Map();\r\n for (let edit of edits) {\r\n if (!(edit instanceof ResourceTextEdit)) {\r\n throw new Error('bad edit - only text edits are supported');\r\n }\r\n const model = this._modelService.getModel(edit.resource);\r\n if (!model) {\r\n throw new Error('bad edit - model not found');\r\n }\r\n if (typeof edit.versionId === 'number' && model.getVersionId() !== edit.versionId) {\r\n throw new Error('bad state - model changed in the meantime');\r\n }\r\n let array = textEdits.get(model);\r\n if (!array) {\r\n array = [];\r\n textEdits.set(model, array);\r\n }\r\n array.push(EditOperation.replaceMove(Range.lift(edit.textEdit.range), edit.textEdit.text));\r\n }\r\n let totalEdits = 0;\r\n let totalFiles = 0;\r\n for (const [model, edits] of textEdits) {\r\n model.pushStackElement();\r\n model.pushEditOperations([], edits, () => []);\r\n model.pushStackElement();\r\n totalFiles += 1;\r\n totalEdits += edits.length;\r\n }\r\n return {\r\n ariaSummary: strings.format(SimpleServicesNLS.bulkEditServiceSummary, totalEdits, totalFiles)\r\n };\r\n });\r\n }\r\n}\r\nexport class SimpleUriLabelService {\r\n getUriLabel(resource, options) {\r\n if (resource.scheme === 'file') {\r\n return resource.fsPath;\r\n }\r\n return resource.path;\r\n }\r\n}\r\nexport class SimpleLayoutService {\r\n constructor(_codeEditorService, _container) {\r\n this._codeEditorService = _codeEditorService;\r\n this._container = _container;\r\n this.onDidLayout = Event.None;\r\n }\r\n get dimension() {\r\n if (!this._dimension) {\r\n this._dimension = dom.getClientArea(window.document.body);\r\n }\r\n return this._dimension;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._codeEditorService.getFocusedCodeEditor()) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./diffEditor.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./diffEditor.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./diffReview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./diffReview.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar _a;\r\nimport './media/diffReview.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { EditorAction, registerEditorAction } from '../editorExtensions.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { editorLineNumbers } from '../../common/view/editorColorRegistry.js';\r\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { scrollbarShadow } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\r\nconst DIFF_LINES_PADDING = 3;\r\nclass DiffEntry {\r\n constructor(originalLineStart, originalLineEnd, modifiedLineStart, modifiedLineEnd) {\r\n this.originalLineStart = originalLineStart;\r\n this.originalLineEnd = originalLineEnd;\r\n this.modifiedLineStart = modifiedLineStart;\r\n this.modifiedLineEnd = modifiedLineEnd;\r\n }\r\n getType() {\r\n if (this.originalLineStart === 0) {\r\n return 1 /* Insert */;\r\n }\r\n if (this.modifiedLineStart === 0) {\r\n return 2 /* Delete */;\r\n }\r\n return 0 /* Equal */;\r\n }\r\n}\r\nclass Diff {\r\n constructor(entries) {\r\n this.entries = entries;\r\n }\r\n}\r\nconst diffReviewInsertIcon = registerIcon('diff-review-insert', Codicon.add, nls.localize('diffReviewInsertIcon', 'Icon for \\'Insert\\' in diff review.'));\r\nconst diffReviewRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, nls.localize('diffReviewRemoveIcon', 'Icon for \\'Remove\\' in diff review.'));\r\nconst diffReviewCloseIcon = registerIcon('diff-review-close', Codicon.close, nls.localize('diffReviewCloseIcon', 'Icon for \\'Close\\' in diff review.'));\r\nexport class DiffReview extends Disposable {\r\n constructor(diffEditor) {\r\n super();\r\n this._width = 0;\r\n this._diffEditor = diffEditor;\r\n this._isVisible = false;\r\n this.shadow = createFastDomNode(document.createElement('div'));\r\n this.shadow.setClassName('diff-review-shadow');\r\n this.actionBarContainer = createFastDomNode(document.createElement('div'));\r\n this.actionBarContainer.setClassName('diff-review-actions');\r\n this._actionBar = this._register(new ActionBar(this.actionBarContainer.domNode));\r\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 });\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setClassName('diff-review monaco-editor-background');\r\n this._content = createFastDomNode(document.createElement('div'));\r\n this._content.setClassName('diff-review-content');\r\n this._content.setAttribute('role', 'code');\r\n this.scrollbar = this._register(new DomScrollableElement(this._content.domNode, {}));\r\n this.domNode.domNode.appendChild(this.scrollbar.getDomNode());\r\n this._register(diffEditor.onDidUpdateDiff(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._diffs = this._compute();\r\n this._render();\r\n }));\r\n this._register(diffEditor.getModifiedEditor().onDidChangeCursorPosition(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._render();\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'click', (e) => {\r\n e.preventDefault();\r\n let row = dom.findParentWithClass(e.target, 'diff-review-row');\r\n if (row) {\r\n this._goToRow(row);\r\n }\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'keydown', (e) => {\r\n if (e.equals(18 /* DownArrow */)\r\n || e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)\r\n || e.equals(512 /* Alt */ | 18 /* DownArrow */)) {\r\n e.preventDefault();\r\n this._goToRow(this._getNextRow());\r\n }\r\n if (e.equals(16 /* UpArrow */)\r\n || e.equals(2048 /* CtrlCmd */ | 16 /* UpArrow */)\r\n || e.equals(512 /* Alt */ | 16 /* UpArrow */)) {\r\n e.preventDefault();\r\n this._goToRow(this._getPrevRow());\r\n }\r\n if (e.equals(9 /* Escape */)\r\n || e.equals(2048 /* CtrlCmd */ | 9 /* Escape */)\r\n || e.equals(512 /* Alt */ | 9 /* Escape */)\r\n || e.equals(1024 /* Shift */ | 9 /* Escape */)) {\r\n e.preventDefault();\r\n this.hide();\r\n }\r\n if (e.equals(10 /* Space */)\r\n || e.equals(3 /* Enter */)) {\r\n e.preventDefault();\r\n this.accept();\r\n }\r\n }));\r\n this._diffs = [];\r\n this._currentDiff = null;\r\n }\r\n prev() {\r\n let index = 0;\r\n if (!this._isVisible) {\r\n this._diffs = this._compute();\r\n }\r\n if (this._isVisible) {\r\n let currentIndex = -1;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n if (this._diffs[i] === this._currentDiff) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n index = (this._diffs.length + currentIndex - 1);\r\n }\r\n else {\r\n index = this._findDiffIndex(this._diffEditor.getPosition());\r\n }\r\n if (this._diffs.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n index = index % this._diffs.length;\r\n const entries = this._diffs[index].entries;\r\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\r\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\r\n this._isVisible = true;\r\n this._diffEditor.doLayout();\r\n this._render();\r\n this._goToRow(this._getNextRow());\r\n }\r\n next() {\r\n let index = 0;\r\n if (!this._isVisible) {\r\n this._diffs = this._compute();\r\n }\r\n if (this._isVisible) {\r\n let currentIndex = -1;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n if (this._diffs[i] === this._currentDiff) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n index = (currentIndex + 1);\r\n }\r\n else {\r\n index = this._findDiffIndex(this._diffEditor.getPosition());\r\n }\r\n if (this._diffs.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n index = index % this._diffs.length;\r\n const entries = this._diffs[index].entries;\r\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\r\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\r\n this._isVisible = true;\r\n this._diffEditor.doLayout();\r\n this._render();\r\n this._goToRow(this._getNextRow());\r\n }\r\n accept() {\r\n let jumpToLineNumber = -1;\r\n let current = this._getCurrentFocusedRow();\r\n if (current) {\r\n let lineNumber = parseInt(current.getAttribute('data-line'), 10);\r\n if (!isNaN(lineNumber)) {\r\n jumpToLineNumber = lineNumber;\r\n }\r\n }\r\n this.hide();\r\n if (jumpToLineNumber !== -1) {\r\n this._diffEditor.setPosition(new Position(jumpToLineNumber, 1));\r\n this._diffEditor.revealPosition(new Position(jumpToLineNumber, 1), 1 /* Immediate */);\r\n }\r\n }\r\n hide() {\r\n this._isVisible = false;\r\n this._diffEditor.updateOptions({ readOnly: false });\r\n this._diffEditor.focus();\r\n this._diffEditor.doLayout();\r\n this._render();\r\n }\r\n _getPrevRow() {\r\n let current = this._getCurrentFocusedRow();\r\n if (!current) {\r\n return this._getFirstRow();\r\n }\r\n if (current.previousElementSibling) {\r\n return current.previousElementSibling;\r\n }\r\n return current;\r\n }\r\n _getNextRow() {\r\n let current = this._getCurrentFocusedRow();\r\n if (!current) {\r\n return this._getFirstRow();\r\n }\r\n if (current.nextElementSibling) {\r\n return current.nextElementSibling;\r\n }\r\n return current;\r\n }\r\n _getFirstRow() {\r\n return this.domNode.domNode.querySelector('.diff-review-row');\r\n }\r\n _getCurrentFocusedRow() {\r\n let result = document.activeElement;\r\n if (result && /diff-review-row/.test(result.className)) {\r\n return result;\r\n }\r\n return null;\r\n }\r\n _goToRow(row) {\r\n let prev = this._getCurrentFocusedRow();\r\n row.tabIndex = 0;\r\n row.focus();\r\n if (prev && prev !== row) {\r\n prev.tabIndex = -1;\r\n }\r\n this.scrollbar.scanDomNode();\r\n }\r\n isVisible() {\r\n return this._isVisible;\r\n }\r\n layout(top, width, height) {\r\n this._width = width;\r\n this.shadow.setTop(top - 6);\r\n this.shadow.setWidth(width);\r\n this.shadow.setHeight(this._isVisible ? 6 : 0);\r\n this.domNode.setTop(top);\r\n this.domNode.setWidth(width);\r\n this.domNode.setHeight(height);\r\n this._content.setHeight(height);\r\n this._content.setWidth(width);\r\n if (this._isVisible) {\r\n this.actionBarContainer.setAttribute('aria-hidden', 'false');\r\n this.actionBarContainer.setDisplay('block');\r\n }\r\n else {\r\n this.actionBarContainer.setAttribute('aria-hidden', 'true');\r\n this.actionBarContainer.setDisplay('none');\r\n }\r\n }\r\n _compute() {\r\n const lineChanges = this._diffEditor.getLineChanges();\r\n if (!lineChanges || lineChanges.length === 0) {\r\n return [];\r\n }\r\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\r\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\r\n if (!originalModel || !modifiedModel) {\r\n return [];\r\n }\r\n return DiffReview._mergeAdjacent(lineChanges, originalModel.getLineCount(), modifiedModel.getLineCount());\r\n }\r\n static _mergeAdjacent(lineChanges, originalLineCount, modifiedLineCount) {\r\n if (!lineChanges || lineChanges.length === 0) {\r\n return [];\r\n }\r\n let diffs = [], diffsLength = 0;\r\n for (let i = 0, len = lineChanges.length; i < len; i++) {\r\n const lineChange = lineChanges[i];\r\n const originalStart = lineChange.originalStartLineNumber;\r\n const originalEnd = lineChange.originalEndLineNumber;\r\n const modifiedStart = lineChange.modifiedStartLineNumber;\r\n const modifiedEnd = lineChange.modifiedEndLineNumber;\r\n let r = [], rLength = 0;\r\n // Emit before anchors\r\n {\r\n const originalEqualAbove = (originalEnd === 0 ? originalStart : originalStart - 1);\r\n const modifiedEqualAbove = (modifiedEnd === 0 ? modifiedStart : modifiedStart - 1);\r\n // Make sure we don't step into the previous diff\r\n let minOriginal = 1;\r\n let minModified = 1;\r\n if (i > 0) {\r\n const prevLineChange = lineChanges[i - 1];\r\n if (prevLineChange.originalEndLineNumber === 0) {\r\n minOriginal = prevLineChange.originalStartLineNumber + 1;\r\n }\r\n else {\r\n minOriginal = prevLineChange.originalEndLineNumber + 1;\r\n }\r\n if (prevLineChange.modifiedEndLineNumber === 0) {\r\n minModified = prevLineChange.modifiedStartLineNumber + 1;\r\n }\r\n else {\r\n minModified = prevLineChange.modifiedEndLineNumber + 1;\r\n }\r\n }\r\n let fromOriginal = originalEqualAbove - DIFF_LINES_PADDING + 1;\r\n let fromModified = modifiedEqualAbove - DIFF_LINES_PADDING + 1;\r\n if (fromOriginal < minOriginal) {\r\n const delta = minOriginal - fromOriginal;\r\n fromOriginal = fromOriginal + delta;\r\n fromModified = fromModified + delta;\r\n }\r\n if (fromModified < minModified) {\r\n const delta = minModified - fromModified;\r\n fromOriginal = fromOriginal + delta;\r\n fromModified = fromModified + delta;\r\n }\r\n r[rLength++] = new DiffEntry(fromOriginal, originalEqualAbove, fromModified, modifiedEqualAbove);\r\n }\r\n // Emit deleted lines\r\n {\r\n if (originalEnd !== 0) {\r\n r[rLength++] = new DiffEntry(originalStart, originalEnd, 0, 0);\r\n }\r\n }\r\n // Emit inserted lines\r\n {\r\n if (modifiedEnd !== 0) {\r\n r[rLength++] = new DiffEntry(0, 0, modifiedStart, modifiedEnd);\r\n }\r\n }\r\n // Emit after anchors\r\n {\r\n const originalEqualBelow = (originalEnd === 0 ? originalStart + 1 : originalEnd + 1);\r\n const modifiedEqualBelow = (modifiedEnd === 0 ? modifiedStart + 1 : modifiedEnd + 1);\r\n // Make sure we don't step into the next diff\r\n let maxOriginal = originalLineCount;\r\n let maxModified = modifiedLineCount;\r\n if (i + 1 < len) {\r\n const nextLineChange = lineChanges[i + 1];\r\n if (nextLineChange.originalEndLineNumber === 0) {\r\n maxOriginal = nextLineChange.originalStartLineNumber;\r\n }\r\n else {\r\n maxOriginal = nextLineChange.originalStartLineNumber - 1;\r\n }\r\n if (nextLineChange.modifiedEndLineNumber === 0) {\r\n maxModified = nextLineChange.modifiedStartLineNumber;\r\n }\r\n else {\r\n maxModified = nextLineChange.modifiedStartLineNumber - 1;\r\n }\r\n }\r\n let toOriginal = originalEqualBelow + DIFF_LINES_PADDING - 1;\r\n let toModified = modifiedEqualBelow + DIFF_LINES_PADDING - 1;\r\n if (toOriginal > maxOriginal) {\r\n const delta = maxOriginal - toOriginal;\r\n toOriginal = toOriginal + delta;\r\n toModified = toModified + delta;\r\n }\r\n if (toModified > maxModified) {\r\n const delta = maxModified - toModified;\r\n toOriginal = toOriginal + delta;\r\n toModified = toModified + delta;\r\n }\r\n r[rLength++] = new DiffEntry(originalEqualBelow, toOriginal, modifiedEqualBelow, toModified);\r\n }\r\n diffs[diffsLength++] = new Diff(r);\r\n }\r\n // Merge adjacent diffs\r\n let curr = diffs[0].entries;\r\n let r = [], rLength = 0;\r\n for (let i = 1, len = diffs.length; i < len; i++) {\r\n const thisDiff = diffs[i].entries;\r\n const currLast = curr[curr.length - 1];\r\n const thisFirst = thisDiff[0];\r\n if (currLast.getType() === 0 /* Equal */\r\n && thisFirst.getType() === 0 /* Equal */\r\n && thisFirst.originalLineStart <= currLast.originalLineEnd) {\r\n // We are dealing with equal lines that overlap\r\n curr[curr.length - 1] = new DiffEntry(currLast.originalLineStart, thisFirst.originalLineEnd, currLast.modifiedLineStart, thisFirst.modifiedLineEnd);\r\n curr = curr.concat(thisDiff.slice(1));\r\n continue;\r\n }\r\n r[rLength++] = new Diff(curr);\r\n curr = thisDiff;\r\n }\r\n r[rLength++] = new Diff(curr);\r\n return r;\r\n }\r\n _findDiffIndex(pos) {\r\n const lineNumber = pos.lineNumber;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n const diff = this._diffs[i].entries;\r\n const lastModifiedLine = diff[diff.length - 1].modifiedLineEnd;\r\n if (lineNumber <= lastModifiedLine) {\r\n return i;\r\n }\r\n }\r\n return 0;\r\n }\r\n _render() {\r\n const originalOptions = this._diffEditor.getOriginalEditor().getOptions();\r\n const modifiedOptions = this._diffEditor.getModifiedEditor().getOptions();\r\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\r\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\r\n const originalModelOpts = originalModel.getOptions();\r\n const modifiedModelOpts = modifiedModel.getOptions();\r\n if (!this._isVisible || !originalModel || !modifiedModel) {\r\n dom.clearNode(this._content.domNode);\r\n this._currentDiff = null;\r\n this.scrollbar.scanDomNode();\r\n return;\r\n }\r\n this._diffEditor.updateOptions({ readOnly: true });\r\n const diffIndex = this._findDiffIndex(this._diffEditor.getPosition());\r\n if (this._diffs[diffIndex] === this._currentDiff) {\r\n return;\r\n }\r\n this._currentDiff = this._diffs[diffIndex];\r\n const diffs = this._diffs[diffIndex].entries;\r\n let container = document.createElement('div');\r\n container.className = 'diff-review-table';\r\n container.setAttribute('role', 'list');\r\n container.setAttribute('aria-label', 'Difference review. Use \"Stage | Unstage | Revert Selected Ranges\" commands');\r\n Configuration.applyFontInfoSlow(container, modifiedOptions.get(41 /* fontInfo */));\r\n let minOriginalLine = 0;\r\n let maxOriginalLine = 0;\r\n let minModifiedLine = 0;\r\n let maxModifiedLine = 0;\r\n for (let i = 0, len = diffs.length; i < len; i++) {\r\n const diffEntry = diffs[i];\r\n const originalLineStart = diffEntry.originalLineStart;\r\n const originalLineEnd = diffEntry.originalLineEnd;\r\n const modifiedLineStart = diffEntry.modifiedLineStart;\r\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\r\n if (originalLineStart !== 0 && ((minOriginalLine === 0 || originalLineStart < minOriginalLine))) {\r\n minOriginalLine = originalLineStart;\r\n }\r\n if (originalLineEnd !== 0 && ((maxOriginalLine === 0 || originalLineEnd > maxOriginalLine))) {\r\n maxOriginalLine = originalLineEnd;\r\n }\r\n if (modifiedLineStart !== 0 && ((minModifiedLine === 0 || modifiedLineStart < minModifiedLine))) {\r\n minModifiedLine = modifiedLineStart;\r\n }\r\n if (modifiedLineEnd !== 0 && ((maxModifiedLine === 0 || modifiedLineEnd > maxModifiedLine))) {\r\n maxModifiedLine = modifiedLineEnd;\r\n }\r\n }\r\n let header = document.createElement('div');\r\n header.className = 'diff-review-row';\r\n let cell = document.createElement('div');\r\n cell.className = 'diff-review-cell diff-review-summary';\r\n const originalChangedLinesCnt = maxOriginalLine - minOriginalLine + 1;\r\n const modifiedChangedLinesCnt = maxModifiedLine - minModifiedLine + 1;\r\n cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${originalChangedLinesCnt} +${minModifiedLine},${modifiedChangedLinesCnt} @@`));\r\n header.setAttribute('data-line', String(minModifiedLine));\r\n const getAriaLines = (lines) => {\r\n if (lines === 0) {\r\n return nls.localize('no_lines_changed', \"no lines changed\");\r\n }\r\n else if (lines === 1) {\r\n return nls.localize('one_line_changed', \"1 line changed\");\r\n }\r\n else {\r\n return nls.localize('more_lines_changed', \"{0} lines changed\", lines);\r\n }\r\n };\r\n const originalChangedLinesCntAria = getAriaLines(originalChangedLinesCnt);\r\n const modifiedChangedLinesCntAria = getAriaLines(modifiedChangedLinesCnt);\r\n header.setAttribute('aria-label', nls.localize({\r\n key: 'header',\r\n comment: [\r\n 'This is the ARIA label for a git diff header.',\r\n 'A git diff header looks like this: @@ -154,12 +159,39 @@.',\r\n 'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\r\n 'Variables 0 and 1 refer to the diff index out of total number of diffs.',\r\n 'Variables 2 and 4 will be numbers (a line number).',\r\n 'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\r\n ]\r\n }, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\", (diffIndex + 1), this._diffs.length, minOriginalLine, originalChangedLinesCntAria, minModifiedLine, modifiedChangedLinesCntAria));\r\n header.appendChild(cell);\r\n // @@ -504,7 +517,7 @@\r\n header.setAttribute('role', 'listitem');\r\n container.appendChild(header);\r\n const lineHeight = modifiedOptions.get(57 /* lineHeight */);\r\n let modLine = minModifiedLine;\r\n for (let i = 0, len = diffs.length; i < len; i++) {\r\n const diffEntry = diffs[i];\r\n DiffReview._renderSection(container, diffEntry, modLine, lineHeight, this._width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts);\r\n if (diffEntry.modifiedLineStart !== 0) {\r\n modLine = diffEntry.modifiedLineEnd;\r\n }\r\n }\r\n dom.clearNode(this._content.domNode);\r\n this._content.domNode.appendChild(container);\r\n this.scrollbar.scanDomNode();\r\n }\r\n static _renderSection(dest, diffEntry, modLine, lineHeight, width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts) {\r\n const type = diffEntry.getType();\r\n let rowClassName = 'diff-review-row';\r\n let lineNumbersExtraClassName = '';\r\n const spacerClassName = 'diff-review-spacer';\r\n let spacerIcon = null;\r\n switch (type) {\r\n case 1 /* Insert */:\r\n rowClassName = 'diff-review-row line-insert';\r\n lineNumbersExtraClassName = ' char-insert';\r\n spacerIcon = diffReviewInsertIcon;\r\n break;\r\n case 2 /* Delete */:\r\n rowClassName = 'diff-review-row line-delete';\r\n lineNumbersExtraClassName = ' char-delete';\r\n spacerIcon = diffReviewRemoveIcon;\r\n break;\r\n }\r\n const originalLineStart = diffEntry.originalLineStart;\r\n const originalLineEnd = diffEntry.originalLineEnd;\r\n const modifiedLineStart = diffEntry.modifiedLineStart;\r\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\r\n const cnt = Math.max(modifiedLineEnd - modifiedLineStart, originalLineEnd - originalLineStart);\r\n const originalLayoutInfo = originalOptions.get(129 /* layoutInfo */);\r\n const originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\r\n const modifiedLayoutInfo = modifiedOptions.get(129 /* layoutInfo */);\r\n const modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\r\n for (let i = 0; i <= cnt; i++) {\r\n const originalLine = (originalLineStart === 0 ? 0 : originalLineStart + i);\r\n const modifiedLine = (modifiedLineStart === 0 ? 0 : modifiedLineStart + i);\r\n const row = document.createElement('div');\r\n row.style.minWidth = width + 'px';\r\n row.className = rowClassName;\r\n row.setAttribute('role', 'listitem');\r\n if (modifiedLine !== 0) {\r\n modLine = modifiedLine;\r\n }\r\n row.setAttribute('data-line', String(modLine));\r\n let cell = document.createElement('div');\r\n cell.className = 'diff-review-cell';\r\n cell.style.height = `${lineHeight}px`;\r\n row.appendChild(cell);\r\n const originalLineNumber = document.createElement('span');\r\n originalLineNumber.style.width = (originalLineNumbersWidth + 'px');\r\n originalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\r\n originalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\r\n if (originalLine !== 0) {\r\n originalLineNumber.appendChild(document.createTextNode(String(originalLine)));\r\n }\r\n else {\r\n originalLineNumber.innerText = '\\u00a0';\r\n }\r\n cell.appendChild(originalLineNumber);\r\n const modifiedLineNumber = document.createElement('span');\r\n modifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\r\n modifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\r\n modifiedLineNumber.style.paddingRight = '10px';\r\n modifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\r\n if (modifiedLine !== 0) {\r\n modifiedLineNumber.appendChild(document.createTextNode(String(modifiedLine)));\r\n }\r\n else {\r\n modifiedLineNumber.innerText = '\\u00a0';\r\n }\r\n cell.appendChild(modifiedLineNumber);\r\n const spacer = document.createElement('span');\r\n spacer.className = spacerClassName;\r\n if (spacerIcon) {\r\n const spacerCodicon = document.createElement('span');\r\n spacerCodicon.className = ThemeIcon.asClassName(spacerIcon);\r\n spacerCodicon.innerText = '\\u00a0\\u00a0';\r\n spacer.appendChild(spacerCodicon);\r\n }\r\n else {\r\n spacer.innerText = '\\u00a0\\u00a0';\r\n }\r\n cell.appendChild(spacer);\r\n let lineContent;\r\n if (modifiedLine !== 0) {\r\n let html = this._renderLine(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, modifiedLine);\r\n if (DiffReview._ttPolicy) {\r\n html = DiffReview._ttPolicy.createHTML(html);\r\n }\r\n cell.insertAdjacentHTML('beforeend', html);\r\n lineContent = modifiedModel.getLineContent(modifiedLine);\r\n }\r\n else {\r\n let html = this._renderLine(originalModel, originalOptions, originalModelOpts.tabSize, originalLine);\r\n if (DiffReview._ttPolicy) {\r\n html = DiffReview._ttPolicy.createHTML(html);\r\n }\r\n cell.insertAdjacentHTML('beforeend', html);\r\n lineContent = originalModel.getLineContent(originalLine);\r\n }\r\n if (lineContent.length === 0) {\r\n lineContent = nls.localize('blankLine', \"blank\");\r\n }\r\n let ariaLabel = '';\r\n switch (type) {\r\n case 0 /* Equal */:\r\n if (originalLine === modifiedLine) {\r\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);\r\n }\r\n else {\r\n ariaLabel = nls.localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, originalLine, modifiedLine);\r\n }\r\n break;\r\n case 1 /* Insert */:\r\n ariaLabel = nls.localize('insertLine', \"+ {0} modified line {1}\", lineContent, modifiedLine);\r\n break;\r\n case 2 /* Delete */:\r\n ariaLabel = nls.localize('deleteLine', \"- {0} original line {1}\", lineContent, originalLine);\r\n break;\r\n }\r\n row.setAttribute('aria-label', ariaLabel);\r\n dest.appendChild(row);\r\n }\r\n }\r\n static _renderLine(model, options, tabSize, lineNumber) {\r\n const lineContent = model.getLineContent(lineNumber);\r\n const fontInfo = options.get(41 /* fontInfo */);\r\n const lineTokens = LineTokens.createEmpty(lineContent);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\r\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\r\n const r = renderViewLine(new RenderLineInput((fontInfo.isMonospace && !options.get(27 /* disableMonospaceOptimizations */)), fontInfo.canUseHalfwidthRightwardsArrow, lineContent, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, options.get(104 /* stopRenderingLineAfter */), options.get(87 /* renderWhitespace */), options.get(81 /* renderControlCharacters */), options.get(42 /* fontLigatures */) !== EditorFontLigatures.OFF, null));\r\n return r.html;\r\n }\r\n}\r\nDiffReview._ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('diffReview', { createHTML: value => value });\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const lineNumbers = theme.getColor(editorLineNumbers);\r\n if (lineNumbers) {\r\n collector.addRule(`.monaco-diff-editor .diff-review-line-number { color: ${lineNumbers}; }`);\r\n }\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-diff-editor .diff-review-shadow { box-shadow: ${shadow} 0 -6px 6px -6px inset; }`);\r\n }\r\n});\r\nclass DiffReviewNext extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.diffReview.next',\r\n label: nls.localize('editor.action.diffReview.next', \"Go to Next Difference\"),\r\n alias: 'Go to Next Difference',\r\n precondition: ContextKeyExpr.has('isInDiffEditor'),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const diffEditor = findFocusedDiffEditor(accessor);\r\n if (diffEditor) {\r\n diffEditor.diffReviewNext();\r\n }\r\n }\r\n}\r\nclass DiffReviewPrev extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.diffReview.prev',\r\n label: nls.localize('editor.action.diffReview.prev', \"Go to Previous Difference\"),\r\n alias: 'Go to Previous Difference',\r\n precondition: ContextKeyExpr.has('isInDiffEditor'),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 1024 /* Shift */ | 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const diffEditor = findFocusedDiffEditor(accessor);\r\n if (diffEditor) {\r\n diffEditor.diffReviewPrev();\r\n }\r\n }\r\n}\r\nfunction findFocusedDiffEditor(accessor) {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n const diffEditors = codeEditorService.listDiffEditors();\r\n const activeCodeEditor = codeEditorService.getActiveCodeEditor();\r\n if (!activeCodeEditor) {\r\n return null;\r\n }\r\n for (let i = 0, len = diffEditors.length; i < len; i++) {\r\n const diffEditor = diffEditors[i];\r\n if (diffEditor.getModifiedEditor().getId() === activeCodeEditor.getId() || diffEditor.getOriginalEditor().getId() === activeCodeEditor.getId()) {\r\n return diffEditor;\r\n }\r\n }\r\n return null;\r\n}\r\nregisterEditorAction(DiffReviewNext);\r\nregisterEditorAction(DiffReviewPrev);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport class InlineDiffMargin extends Disposable {\r\n constructor(_viewZoneId, _marginDomNode, editor, diff, _contextMenuService, _clipboardService) {\r\n super();\r\n this._viewZoneId = _viewZoneId;\r\n this._marginDomNode = _marginDomNode;\r\n this.editor = editor;\r\n this.diff = diff;\r\n this._contextMenuService = _contextMenuService;\r\n this._clipboardService = _clipboardService;\r\n this._visibility = false;\r\n // make sure the diff margin shows above overlay.\r\n this._marginDomNode.style.zIndex = '10';\r\n this._diffActions = document.createElement('div');\r\n this._diffActions.className = Codicon.lightBulb.classNames + ' lightbulb-glyph';\r\n this._diffActions.style.position = 'absolute';\r\n const lineHeight = editor.getOption(57 /* lineHeight */);\r\n const lineFeed = editor.getModel().getEOL();\r\n this._diffActions.style.right = '0px';\r\n this._diffActions.style.visibility = 'hidden';\r\n this._diffActions.style.height = `${lineHeight}px`;\r\n this._diffActions.style.lineHeight = `${lineHeight}px`;\r\n this._marginDomNode.appendChild(this._diffActions);\r\n const actions = [];\r\n // default action\r\n actions.push(new Action('diff.clipboard.copyDeletedContent', diff.originalEndLineNumber > diff.modifiedStartLineNumber\r\n ? nls.localize('diff.clipboard.copyDeletedLinesContent.label', \"Copy deleted lines\")\r\n : nls.localize('diff.clipboard.copyDeletedLinesContent.single.label', \"Copy deleted line\"), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\r\n const range = new Range(diff.originalStartLineNumber, 1, diff.originalEndLineNumber + 1, 1);\r\n const deletedText = diff.originalModel.getValueInRange(range);\r\n yield this._clipboardService.writeText(deletedText);\r\n })));\r\n let currentLineNumberOffset = 0;\r\n let copyLineAction = undefined;\r\n if (diff.originalEndLineNumber > diff.modifiedStartLineNumber) {\r\n copyLineAction = new Action('diff.clipboard.copyDeletedLineContent', nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\r\n const lineContent = diff.originalModel.getLineContent(diff.originalStartLineNumber + currentLineNumberOffset);\r\n yield this._clipboardService.writeText(lineContent);\r\n }));\r\n actions.push(copyLineAction);\r\n }\r\n const readOnly = editor.getOption(79 /* readOnly */);\r\n if (!readOnly) {\r\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* () {\r\n const range = new Range(diff.originalStartLineNumber, 1, diff.originalEndLineNumber, diff.originalModel.getLineMaxColumn(diff.originalEndLineNumber));\r\n const deletedText = diff.originalModel.getValueInRange(range);\r\n if (diff.modifiedEndLineNumber === 0) {\r\n // deletion only\r\n const column = editor.getModel().getLineMaxColumn(diff.modifiedStartLineNumber);\r\n editor.executeEdits('diffEditor', [\r\n {\r\n range: new Range(diff.modifiedStartLineNumber, column, diff.modifiedStartLineNumber, column),\r\n text: lineFeed + deletedText\r\n }\r\n ]);\r\n }\r\n else {\r\n const column = editor.getModel().getLineMaxColumn(diff.modifiedEndLineNumber);\r\n editor.executeEdits('diffEditor', [\r\n {\r\n range: new Range(diff.modifiedStartLineNumber, 1, diff.modifiedEndLineNumber, column),\r\n text: deletedText\r\n }\r\n ]);\r\n }\r\n })));\r\n }\r\n const showContextMenu = (x, y) => {\r\n this._contextMenuService.showContextMenu({\r\n getAnchor: () => {\r\n return {\r\n x,\r\n y\r\n };\r\n },\r\n getActions: () => {\r\n if (copyLineAction) {\r\n copyLineAction.label = nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber + currentLineNumberOffset);\r\n }\r\n return actions;\r\n },\r\n autoSelectFirstItem: true\r\n });\r\n };\r\n this._register(dom.addStandardDisposableListener(this._diffActions, 'mousedown', e => {\r\n const { top, height } = dom.getDomNodePagePosition(this._diffActions);\r\n let pad = Math.floor(lineHeight / 3);\r\n e.preventDefault();\r\n showContextMenu(e.posx, top + height + pad);\r\n }));\r\n this._register(editor.onMouseMove((e) => {\r\n if (e.target.type === 8 /* CONTENT_VIEW_ZONE */ || e.target.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const viewZoneId = e.target.detail.viewZoneId;\r\n if (viewZoneId === this._viewZoneId) {\r\n this.visibility = true;\r\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\r\n }\r\n else {\r\n this.visibility = false;\r\n }\r\n }\r\n else {\r\n this.visibility = false;\r\n }\r\n }));\r\n this._register(editor.onMouseDown((e) => {\r\n if (!e.event.rightButton) {\r\n return;\r\n }\r\n if (e.target.type === 8 /* CONTENT_VIEW_ZONE */ || e.target.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const viewZoneId = e.target.detail.viewZoneId;\r\n if (viewZoneId === this._viewZoneId) {\r\n e.event.preventDefault();\r\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\r\n showContextMenu(e.event.posx, e.event.posy + lineHeight);\r\n }\r\n }\r\n }));\r\n }\r\n get visibility() {\r\n return this._visibility;\r\n }\r\n set visibility(_visibility) {\r\n if (this._visibility !== _visibility) {\r\n this._visibility = _visibility;\r\n if (_visibility) {\r\n this._diffActions.style.visibility = 'visible';\r\n }\r\n else {\r\n this._diffActions.style.visibility = 'hidden';\r\n }\r\n }\r\n }\r\n _updateLightBulbPosition(marginDomNode, y, lineHeight) {\r\n const { top } = dom.getDomNodePagePosition(marginDomNode);\r\n const offset = y - top;\r\n const lineNumberOffset = Math.floor(offset / lineHeight);\r\n const newTop = lineNumberOffset * lineHeight;\r\n this._diffActions.style.top = `${newTop}px`;\r\n if (this.diff.viewLineCounts) {\r\n let acc = 0;\r\n for (let i = 0; i < this.diff.viewLineCounts.length; i++) {\r\n acc += this.diff.viewLineCounts[i];\r\n if (lineNumberOffset < acc) {\r\n return i;\r\n }\r\n }\r\n }\r\n return lineNumberOffset;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar _a;\r\nimport './media/diffEditor.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { StableEditorScrollState } from '../core/editorState.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { CodeEditorWidget } from './codeEditorWidget.js';\r\nimport { DiffReview } from './diffReview.js';\r\nimport { EditorOptions, EditorFontLigatures, stringSet as validateStringSetOption, boolean as validateBooleanOption } from '../../common/config/editorOptions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\r\nimport * as editorCommon from '../../common/editorCommon.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { OverviewRulerZone } from '../../common/view/overviewZoneManager.js';\r\nimport { LineDecoration } from '../../common/viewLayout/lineDecorations.js';\r\nimport { RenderLineInput, renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { InlineDecoration, ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { defaultInsertColor, defaultRemoveColor, diffBorder, diffInserted, diffInsertedOutline, diffRemoved, diffRemovedOutline, scrollbarShadow, scrollbarSliderBackground, scrollbarSliderHoverBackground, scrollbarSliderActiveBackground, diffDiagonalFill } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, getThemeTypeSelector, registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\r\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { InlineDiffMargin } from './inlineDiffMargin.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { EditorExtensionsRegistry } from '../editorExtensions.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { ElementSizeObserver } from '../config/elementSizeObserver.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../base/browser/ui/mouseCursor/mouseCursor.js';\r\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\r\nclass VisualEditorState {\r\n constructor(_contextMenuService, _clipboardService) {\r\n this._contextMenuService = _contextMenuService;\r\n this._clipboardService = _clipboardService;\r\n this._zones = [];\r\n this._inlineDiffMargins = [];\r\n this._zonesMap = {};\r\n this._decorations = [];\r\n }\r\n getForeignViewZones(allViewZones) {\r\n return allViewZones.filter((z) => !this._zonesMap[String(z.id)]);\r\n }\r\n clean(editor) {\r\n // (1) View zones\r\n if (this._zones.length > 0) {\r\n editor.changeViewZones((viewChangeAccessor) => {\r\n for (const zoneId of this._zones) {\r\n viewChangeAccessor.removeZone(zoneId);\r\n }\r\n });\r\n }\r\n this._zones = [];\r\n this._zonesMap = {};\r\n // (2) Model decorations\r\n this._decorations = editor.deltaDecorations(this._decorations, []);\r\n }\r\n apply(editor, overviewRuler, newDecorations, restoreScrollState) {\r\n const scrollState = restoreScrollState ? StableEditorScrollState.capture(editor) : null;\r\n // view zones\r\n editor.changeViewZones((viewChangeAccessor) => {\r\n for (const zoneId of this._zones) {\r\n viewChangeAccessor.removeZone(zoneId);\r\n }\r\n for (const inlineDiffMargin of this._inlineDiffMargins) {\r\n inlineDiffMargin.dispose();\r\n }\r\n this._zones = [];\r\n this._zonesMap = {};\r\n this._inlineDiffMargins = [];\r\n for (let i = 0, length = newDecorations.zones.length; i < length; i++) {\r\n const viewZone = newDecorations.zones[i];\r\n viewZone.suppressMouseDown = true;\r\n const zoneId = viewChangeAccessor.addZone(viewZone);\r\n this._zones.push(zoneId);\r\n this._zonesMap[String(zoneId)] = true;\r\n if (newDecorations.zones[i].diff && viewZone.marginDomNode) {\r\n viewZone.suppressMouseDown = false;\r\n this._inlineDiffMargins.push(new InlineDiffMargin(zoneId, viewZone.marginDomNode, editor, newDecorations.zones[i].diff, this._contextMenuService, this._clipboardService));\r\n }\r\n }\r\n });\r\n if (scrollState) {\r\n scrollState.restore(editor);\r\n }\r\n // decorations\r\n this._decorations = editor.deltaDecorations(this._decorations, newDecorations.decorations);\r\n // overview ruler\r\n if (overviewRuler) {\r\n overviewRuler.setZones(newDecorations.overviewZones);\r\n }\r\n }\r\n}\r\nlet DIFF_EDITOR_ID = 0;\r\nconst diffInsertIcon = registerIcon('diff-insert', Codicon.add, nls.localize('diffInsertIcon', 'Line decoration for inserts in the diff editor.'));\r\nconst diffRemoveIcon = registerIcon('diff-remove', Codicon.remove, nls.localize('diffRemoveIcon', 'Line decoration for removals in the diff editor.'));\r\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('diffEditorWidget', { createHTML: value => value });\r\nlet DiffEditorWidget = class DiffEditorWidget extends Disposable {\r\n constructor(domElement, options, codeEditorWidgetOptions, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, _editorProgressService) {\r\n super();\r\n this._editorProgressService = _editorProgressService;\r\n this._onDidDispose = this._register(new Emitter());\r\n this.onDidDispose = this._onDidDispose.event;\r\n this._onDidUpdateDiff = this._register(new Emitter());\r\n this.onDidUpdateDiff = this._onDidUpdateDiff.event;\r\n this._onDidContentSizeChange = this._register(new Emitter());\r\n this._lastOriginalWarning = null;\r\n this._lastModifiedWarning = null;\r\n this._editorWorkerService = editorWorkerService;\r\n this._codeEditorService = codeEditorService;\r\n this._contextKeyService = this._register(contextKeyService.createScoped(domElement));\r\n this._instantiationService = instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService]));\r\n this._contextKeyService.createKey('isInDiffEditor', true);\r\n this._themeService = themeService;\r\n this._notificationService = notificationService;\r\n this._id = (++DIFF_EDITOR_ID);\r\n this._state = 0 /* Idle */;\r\n this._updatingDiffProgress = null;\r\n this._domElement = domElement;\r\n options = options || {};\r\n // renderSideBySide\r\n this._renderSideBySide = true;\r\n if (typeof options.renderSideBySide !== 'undefined') {\r\n this._renderSideBySide = options.renderSideBySide;\r\n }\r\n // maxComputationTime\r\n this._maxComputationTime = 5000;\r\n if (typeof options.maxComputationTime !== 'undefined') {\r\n this._maxComputationTime = options.maxComputationTime;\r\n }\r\n // ignoreTrimWhitespace\r\n this._ignoreTrimWhitespace = true;\r\n if (typeof options.ignoreTrimWhitespace !== 'undefined') {\r\n this._ignoreTrimWhitespace = options.ignoreTrimWhitespace;\r\n }\r\n // renderIndicators\r\n this._renderIndicators = true;\r\n if (typeof options.renderIndicators !== 'undefined') {\r\n this._renderIndicators = options.renderIndicators;\r\n }\r\n this._originalIsEditable = validateBooleanOption(options.originalEditable, false);\r\n this._diffCodeLens = validateBooleanOption(options.diffCodeLens, false);\r\n this._diffWordWrap = validateDiffWordWrap(options.diffWordWrap, 'inherit');\r\n if (typeof options.isInEmbeddedEditor !== 'undefined') {\r\n this._contextKeyService.createKey('isInEmbeddedDiffEditor', options.isInEmbeddedEditor);\r\n }\r\n else {\r\n this._contextKeyService.createKey('isInEmbeddedDiffEditor', false);\r\n }\r\n this._renderOverviewRuler = true;\r\n if (typeof options.renderOverviewRuler !== 'undefined') {\r\n this._renderOverviewRuler = Boolean(options.renderOverviewRuler);\r\n }\r\n this._updateDecorationsRunner = this._register(new RunOnceScheduler(() => this._updateDecorations(), 0));\r\n this._containerDomElement = document.createElement('div');\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n this._containerDomElement.style.position = 'relative';\r\n this._containerDomElement.style.height = '100%';\r\n this._domElement.appendChild(this._containerDomElement);\r\n this._overviewViewportDomElement = createFastDomNode(document.createElement('div'));\r\n this._overviewViewportDomElement.setClassName('diffViewport');\r\n this._overviewViewportDomElement.setPosition('absolute');\r\n this._overviewDomElement = document.createElement('div');\r\n this._overviewDomElement.className = 'diffOverview';\r\n this._overviewDomElement.style.position = 'absolute';\r\n this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode);\r\n this._register(dom.addStandardDisposableListener(this._overviewDomElement, 'mousedown', (e) => {\r\n this._modifiedEditor.delegateVerticalScrollbarMouseDown(e);\r\n }));\r\n if (this._renderOverviewRuler) {\r\n this._containerDomElement.appendChild(this._overviewDomElement);\r\n }\r\n // Create left side\r\n this._originalDomNode = document.createElement('div');\r\n this._originalDomNode.className = 'editor original';\r\n this._originalDomNode.style.position = 'absolute';\r\n this._originalDomNode.style.height = '100%';\r\n this._containerDomElement.appendChild(this._originalDomNode);\r\n // Create right side\r\n this._modifiedDomNode = document.createElement('div');\r\n this._modifiedDomNode.className = 'editor modified';\r\n this._modifiedDomNode.style.position = 'absolute';\r\n this._modifiedDomNode.style.height = '100%';\r\n this._containerDomElement.appendChild(this._modifiedDomNode);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n this._currentlyChangingViewZones = false;\r\n this._diffComputationToken = 0;\r\n this._originalEditorState = new VisualEditorState(contextMenuService, clipboardService);\r\n this._modifiedEditorState = new VisualEditorState(contextMenuService, clipboardService);\r\n this._isVisible = true;\r\n this._isHandlingScrollEvent = false;\r\n this._elementSizeObserver = this._register(new ElementSizeObserver(this._containerDomElement, options.dimension, () => this._onDidContainerSizeChanged()));\r\n if (options.automaticLayout) {\r\n this._elementSizeObserver.startObserving();\r\n }\r\n this._diffComputationResult = null;\r\n this._originalEditor = this._createLeftHandSideEditor(options, codeEditorWidgetOptions.originalEditor || {});\r\n this._modifiedEditor = this._createRightHandSideEditor(options, codeEditorWidgetOptions.modifiedEditor || {});\r\n this._originalOverviewRuler = null;\r\n this._modifiedOverviewRuler = null;\r\n this._reviewPane = new DiffReview(this);\r\n this._containerDomElement.appendChild(this._reviewPane.domNode.domNode);\r\n this._containerDomElement.appendChild(this._reviewPane.shadow.domNode);\r\n this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode);\r\n // enableSplitViewResizing\r\n this._enableSplitViewResizing = true;\r\n if (typeof options.enableSplitViewResizing !== 'undefined') {\r\n this._enableSplitViewResizing = options.enableSplitViewResizing;\r\n }\r\n if (this._renderSideBySide) {\r\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n else {\r\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n this._register(themeService.onDidColorThemeChange(t => {\r\n if (this._strategy && this._strategy.applyColors(t)) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n }));\r\n const contributions = EditorExtensionsRegistry.getDiffEditorContributions();\r\n for (const desc of contributions) {\r\n try {\r\n this._register(instantiationService.createInstance(desc.ctor, this));\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n }\r\n this._codeEditorService.addDiffEditor(this);\r\n }\r\n _setState(newState) {\r\n if (this._state === newState) {\r\n return;\r\n }\r\n this._state = newState;\r\n if (this._updatingDiffProgress) {\r\n this._updatingDiffProgress.done();\r\n this._updatingDiffProgress = null;\r\n }\r\n if (this._state === 1 /* ComputingDiff */) {\r\n this._updatingDiffProgress = this._editorProgressService.show(true, 1000);\r\n }\r\n }\r\n diffReviewNext() {\r\n this._reviewPane.next();\r\n }\r\n diffReviewPrev() {\r\n this._reviewPane.prev();\r\n }\r\n static _getClassName(theme, renderSideBySide) {\r\n let result = 'monaco-diff-editor monaco-editor-background ';\r\n if (renderSideBySide) {\r\n result += 'side-by-side ';\r\n }\r\n result += getThemeTypeSelector(theme.type);\r\n return result;\r\n }\r\n _recreateOverviewRulers() {\r\n if (!this._renderOverviewRuler) {\r\n return;\r\n }\r\n if (this._originalOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\r\n this._originalOverviewRuler.dispose();\r\n }\r\n if (this._originalEditor.hasModel()) {\r\n this._originalOverviewRuler = this._originalEditor.createOverviewRuler('original diffOverviewRuler');\r\n this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode());\r\n }\r\n if (this._modifiedOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\r\n this._modifiedOverviewRuler.dispose();\r\n }\r\n if (this._modifiedEditor.hasModel()) {\r\n this._modifiedOverviewRuler = this._modifiedEditor.createOverviewRuler('modified diffOverviewRuler');\r\n this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode());\r\n }\r\n this._layoutOverviewRulers();\r\n }\r\n _createLeftHandSideEditor(options, codeEditorWidgetOptions) {\r\n const editor = this._createInnerEditor(this._instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(options), codeEditorWidgetOptions);\r\n this._register(editor.onDidScrollChange((e) => {\r\n if (this._isHandlingScrollEvent) {\r\n return;\r\n }\r\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\r\n return;\r\n }\r\n this._isHandlingScrollEvent = true;\r\n this._modifiedEditor.setScrollPosition({\r\n scrollLeft: e.scrollLeft,\r\n scrollTop: e.scrollTop\r\n });\r\n this._isHandlingScrollEvent = false;\r\n this._layoutOverviewViewport();\r\n }));\r\n this._register(editor.onDidChangeViewZones(() => {\r\n this._onViewZonesChanged();\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (!editor.getModel()) {\r\n return;\r\n }\r\n if (e.hasChanged(41 /* fontInfo */)) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n if (e.hasChanged(130 /* wrappingInfo */)) {\r\n this._updateDecorationsRunner.cancel();\r\n this._updateDecorations();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModelContent(() => {\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }));\r\n const isInDiffLeftEditorKey = this._contextKeyService.createKey('isInDiffLeftEditor', editor.hasWidgetFocus());\r\n this._register(editor.onDidFocusEditorWidget(() => isInDiffLeftEditorKey.set(true)));\r\n this._register(editor.onDidBlurEditorWidget(() => isInDiffLeftEditorKey.set(false)));\r\n this._register(editor.onDidContentSizeChange(e => {\r\n const width = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n const height = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());\r\n this._onDidContentSizeChange.fire({\r\n contentHeight: height,\r\n contentWidth: width,\r\n contentHeightChanged: e.contentHeightChanged,\r\n contentWidthChanged: e.contentWidthChanged\r\n });\r\n }));\r\n return editor;\r\n }\r\n _createRightHandSideEditor(options, codeEditorWidgetOptions) {\r\n const editor = this._createInnerEditor(this._instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(options), codeEditorWidgetOptions);\r\n this._register(editor.onDidScrollChange((e) => {\r\n if (this._isHandlingScrollEvent) {\r\n return;\r\n }\r\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\r\n return;\r\n }\r\n this._isHandlingScrollEvent = true;\r\n this._originalEditor.setScrollPosition({\r\n scrollLeft: e.scrollLeft,\r\n scrollTop: e.scrollTop\r\n });\r\n this._isHandlingScrollEvent = false;\r\n this._layoutOverviewViewport();\r\n }));\r\n this._register(editor.onDidChangeViewZones(() => {\r\n this._onViewZonesChanged();\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (!editor.getModel()) {\r\n return;\r\n }\r\n if (e.hasChanged(41 /* fontInfo */)) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n if (e.hasChanged(130 /* wrappingInfo */)) {\r\n this._updateDecorationsRunner.cancel();\r\n this._updateDecorations();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModelContent(() => {\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModelOptions((e) => {\r\n if (e.tabSize) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n }));\r\n const isInDiffRightEditorKey = this._contextKeyService.createKey('isInDiffRightEditor', editor.hasWidgetFocus());\r\n this._register(editor.onDidFocusEditorWidget(() => isInDiffRightEditorKey.set(true)));\r\n this._register(editor.onDidBlurEditorWidget(() => isInDiffRightEditorKey.set(false)));\r\n this._register(editor.onDidContentSizeChange(e => {\r\n const width = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n const height = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());\r\n this._onDidContentSizeChange.fire({\r\n contentHeight: height,\r\n contentWidth: width,\r\n contentHeightChanged: e.contentHeightChanged,\r\n contentWidthChanged: e.contentWidthChanged\r\n });\r\n }));\r\n return editor;\r\n }\r\n _createInnerEditor(instantiationService, container, options, editorWidgetOptions) {\r\n return instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\r\n }\r\n dispose() {\r\n this._codeEditorService.removeDiffEditor(this);\r\n if (this._beginUpdateDecorationsTimeout !== -1) {\r\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n }\r\n this._cleanViewZonesAndDecorations();\r\n if (this._originalOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\r\n this._originalOverviewRuler.dispose();\r\n }\r\n if (this._modifiedOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\r\n this._modifiedOverviewRuler.dispose();\r\n }\r\n this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode);\r\n if (this._renderOverviewRuler) {\r\n this._containerDomElement.removeChild(this._overviewDomElement);\r\n }\r\n this._containerDomElement.removeChild(this._originalDomNode);\r\n this._originalEditor.dispose();\r\n this._containerDomElement.removeChild(this._modifiedDomNode);\r\n this._modifiedEditor.dispose();\r\n this._strategy.dispose();\r\n this._containerDomElement.removeChild(this._reviewPane.domNode.domNode);\r\n this._containerDomElement.removeChild(this._reviewPane.shadow.domNode);\r\n this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode);\r\n this._reviewPane.dispose();\r\n this._domElement.removeChild(this._containerDomElement);\r\n this._onDidDispose.fire();\r\n super.dispose();\r\n }\r\n //------------ begin IDiffEditor methods\r\n getId() {\r\n return this.getEditorType() + ':' + this._id;\r\n }\r\n getEditorType() {\r\n return editorCommon.EditorType.IDiffEditor;\r\n }\r\n getLineChanges() {\r\n if (!this._diffComputationResult) {\r\n return null;\r\n }\r\n return this._diffComputationResult.changes;\r\n }\r\n getOriginalEditor() {\r\n return this._originalEditor;\r\n }\r\n getModifiedEditor() {\r\n return this._modifiedEditor;\r\n }\r\n updateOptions(newOptions) {\r\n // Handle side by side\r\n let renderSideBySideChanged = false;\r\n if (typeof newOptions.renderSideBySide !== 'undefined') {\r\n if (this._renderSideBySide !== newOptions.renderSideBySide) {\r\n this._renderSideBySide = newOptions.renderSideBySide;\r\n renderSideBySideChanged = true;\r\n }\r\n }\r\n if (typeof newOptions.maxComputationTime !== 'undefined') {\r\n this._maxComputationTime = newOptions.maxComputationTime;\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }\r\n let beginUpdateDecorations = false;\r\n if (typeof newOptions.ignoreTrimWhitespace !== 'undefined') {\r\n if (this._ignoreTrimWhitespace !== newOptions.ignoreTrimWhitespace) {\r\n this._ignoreTrimWhitespace = newOptions.ignoreTrimWhitespace;\r\n // Begin comparing\r\n beginUpdateDecorations = true;\r\n }\r\n }\r\n if (typeof newOptions.renderIndicators !== 'undefined') {\r\n if (this._renderIndicators !== newOptions.renderIndicators) {\r\n this._renderIndicators = newOptions.renderIndicators;\r\n beginUpdateDecorations = true;\r\n }\r\n }\r\n if (beginUpdateDecorations) {\r\n this._beginUpdateDecorations();\r\n }\r\n this._originalIsEditable = validateBooleanOption(newOptions.originalEditable, this._originalIsEditable);\r\n this._diffCodeLens = validateBooleanOption(newOptions.diffCodeLens, this._diffCodeLens);\r\n this._diffWordWrap = validateDiffWordWrap(newOptions.diffWordWrap, this._diffWordWrap);\r\n this._modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(newOptions));\r\n this._originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(newOptions));\r\n // enableSplitViewResizing\r\n if (typeof newOptions.enableSplitViewResizing !== 'undefined') {\r\n this._enableSplitViewResizing = newOptions.enableSplitViewResizing;\r\n }\r\n this._strategy.setEnableSplitViewResizing(this._enableSplitViewResizing);\r\n // renderSideBySide\r\n if (renderSideBySideChanged) {\r\n if (this._renderSideBySide) {\r\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n else {\r\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n // Update class name\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n }\r\n // renderOverviewRuler\r\n if (typeof newOptions.renderOverviewRuler !== 'undefined' && this._renderOverviewRuler !== newOptions.renderOverviewRuler) {\r\n this._renderOverviewRuler = newOptions.renderOverviewRuler;\r\n if (this._renderOverviewRuler) {\r\n this._containerDomElement.appendChild(this._overviewDomElement);\r\n }\r\n else {\r\n this._containerDomElement.removeChild(this._overviewDomElement);\r\n }\r\n }\r\n }\r\n getModel() {\r\n return {\r\n original: this._originalEditor.getModel(),\r\n modified: this._modifiedEditor.getModel()\r\n };\r\n }\r\n setModel(model) {\r\n // Guard us against partial null model\r\n if (model && (!model.original || !model.modified)) {\r\n throw new Error(!model.original ? 'DiffEditorWidget.setModel: Original model is null' : 'DiffEditorWidget.setModel: Modified model is null');\r\n }\r\n // Remove all view zones & decorations\r\n this._cleanViewZonesAndDecorations();\r\n // Update code editor models\r\n this._originalEditor.setModel(model ? model.original : null);\r\n this._modifiedEditor.setModel(model ? model.modified : null);\r\n this._updateDecorationsRunner.cancel();\r\n // this.originalEditor.onDidChangeModelOptions\r\n if (model) {\r\n this._originalEditor.setScrollTop(0);\r\n this._modifiedEditor.setScrollTop(0);\r\n }\r\n // Disable any diff computations that will come in\r\n this._diffComputationResult = null;\r\n this._diffComputationToken++;\r\n this._setState(0 /* Idle */);\r\n if (model) {\r\n this._recreateOverviewRulers();\r\n // Begin comparing\r\n this._beginUpdateDecorations();\r\n }\r\n this._layoutOverviewViewport();\r\n }\r\n getDomNode() {\r\n return this._domElement;\r\n }\r\n getVisibleColumnFromPosition(position) {\r\n return this._modifiedEditor.getVisibleColumnFromPosition(position);\r\n }\r\n getPosition() {\r\n return this._modifiedEditor.getPosition();\r\n }\r\n setPosition(position) {\r\n this._modifiedEditor.setPosition(position);\r\n }\r\n revealLine(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLine(lineNumber, scrollType);\r\n }\r\n revealLineInCenter(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLineInCenter(lineNumber, scrollType);\r\n }\r\n revealLineInCenterIfOutsideViewport(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLineInCenterIfOutsideViewport(lineNumber, scrollType);\r\n }\r\n revealLineNearTop(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLineNearTop(lineNumber, scrollType);\r\n }\r\n revealPosition(position, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealPosition(position, scrollType);\r\n }\r\n revealPositionInCenter(position, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealPositionInCenter(position, scrollType);\r\n }\r\n revealPositionInCenterIfOutsideViewport(position, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealPositionInCenterIfOutsideViewport(position, scrollType);\r\n }\r\n revealPositionNearTop(position, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealPositionNearTop(position, scrollType);\r\n }\r\n getSelection() {\r\n return this._modifiedEditor.getSelection();\r\n }\r\n getSelections() {\r\n return this._modifiedEditor.getSelections();\r\n }\r\n setSelection(something) {\r\n this._modifiedEditor.setSelection(something);\r\n }\r\n setSelections(ranges) {\r\n this._modifiedEditor.setSelections(ranges);\r\n }\r\n revealLines(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLines(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesInCenter(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLinesInCenter(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesNearTop(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealLinesNearTop(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealRange(range, scrollType = 0 /* Smooth */, revealVerticalInCenter = false, revealHorizontal = true) {\r\n this._modifiedEditor.revealRange(range, scrollType, revealVerticalInCenter, revealHorizontal);\r\n }\r\n revealRangeInCenter(range, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealRangeInCenter(range, scrollType);\r\n }\r\n revealRangeInCenterIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealRangeInCenterIfOutsideViewport(range, scrollType);\r\n }\r\n revealRangeNearTop(range, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealRangeNearTop(range, scrollType);\r\n }\r\n revealRangeNearTopIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealRangeNearTopIfOutsideViewport(range, scrollType);\r\n }\r\n revealRangeAtTop(range, scrollType = 0 /* Smooth */) {\r\n this._modifiedEditor.revealRangeAtTop(range, scrollType);\r\n }\r\n getSupportedActions() {\r\n return this._modifiedEditor.getSupportedActions();\r\n }\r\n saveViewState() {\r\n const originalViewState = this._originalEditor.saveViewState();\r\n const modifiedViewState = this._modifiedEditor.saveViewState();\r\n return {\r\n original: originalViewState,\r\n modified: modifiedViewState\r\n };\r\n }\r\n restoreViewState(s) {\r\n if (s && s.original && s.modified) {\r\n const diffEditorState = s;\r\n this._originalEditor.restoreViewState(diffEditorState.original);\r\n this._modifiedEditor.restoreViewState(diffEditorState.modified);\r\n }\r\n }\r\n layout(dimension) {\r\n this._elementSizeObserver.observe(dimension);\r\n }\r\n focus() {\r\n this._modifiedEditor.focus();\r\n }\r\n hasTextFocus() {\r\n return this._originalEditor.hasTextFocus() || this._modifiedEditor.hasTextFocus();\r\n }\r\n trigger(source, handlerId, payload) {\r\n this._modifiedEditor.trigger(source, handlerId, payload);\r\n }\r\n changeDecorations(callback) {\r\n return this._modifiedEditor.changeDecorations(callback);\r\n }\r\n //------------ end IDiffEditor methods\r\n //------------ begin layouting methods\r\n _onDidContainerSizeChanged() {\r\n this._doLayout();\r\n }\r\n _getReviewHeight() {\r\n return this._reviewPane.isVisible() ? this._elementSizeObserver.getHeight() : 0;\r\n }\r\n _layoutOverviewRulers() {\r\n if (!this._renderOverviewRuler) {\r\n return;\r\n }\r\n if (!this._originalOverviewRuler || !this._modifiedOverviewRuler) {\r\n return;\r\n }\r\n const height = this._elementSizeObserver.getHeight();\r\n const reviewHeight = this._getReviewHeight();\r\n const freeSpace = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH - 2 * DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n const layoutInfo = this._modifiedEditor.getLayoutInfo();\r\n if (layoutInfo) {\r\n this._originalOverviewRuler.setLayout({\r\n top: 0,\r\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n right: freeSpace + DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n height: (height - reviewHeight)\r\n });\r\n this._modifiedOverviewRuler.setLayout({\r\n top: 0,\r\n right: 0,\r\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n height: (height - reviewHeight)\r\n });\r\n }\r\n }\r\n //------------ end layouting methods\r\n _onViewZonesChanged() {\r\n if (this._currentlyChangingViewZones) {\r\n return;\r\n }\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n _beginUpdateDecorationsSoon() {\r\n // Clear previous timeout if necessary\r\n if (this._beginUpdateDecorationsTimeout !== -1) {\r\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n }\r\n this._beginUpdateDecorationsTimeout = window.setTimeout(() => this._beginUpdateDecorations(), DiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY);\r\n }\r\n static _equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n return (a.toString() === b.toString());\r\n }\r\n _beginUpdateDecorations() {\r\n this._beginUpdateDecorationsTimeout = -1;\r\n const currentOriginalModel = this._originalEditor.getModel();\r\n const currentModifiedModel = this._modifiedEditor.getModel();\r\n if (!currentOriginalModel || !currentModifiedModel) {\r\n return;\r\n }\r\n // Prevent old diff requests to come if a new request has been initiated\r\n // The best method would be to call cancel on the Promise, but this is not\r\n // yet supported, so using tokens for now.\r\n this._diffComputationToken++;\r\n const currentToken = this._diffComputationToken;\r\n this._setState(1 /* ComputingDiff */);\r\n if (!this._editorWorkerService.canComputeDiff(currentOriginalModel.uri, currentModifiedModel.uri)) {\r\n if (!DiffEditorWidget._equals(currentOriginalModel.uri, this._lastOriginalWarning)\r\n || !DiffEditorWidget._equals(currentModifiedModel.uri, this._lastModifiedWarning)) {\r\n this._lastOriginalWarning = currentOriginalModel.uri;\r\n this._lastModifiedWarning = currentModifiedModel.uri;\r\n this._notificationService.warn(nls.localize(\"diff.tooLarge\", \"Cannot compare files because one file is too large.\"));\r\n }\r\n return;\r\n }\r\n this._editorWorkerService.computeDiff(currentOriginalModel.uri, currentModifiedModel.uri, this._ignoreTrimWhitespace, this._maxComputationTime).then((result) => {\r\n if (currentToken === this._diffComputationToken\r\n && currentOriginalModel === this._originalEditor.getModel()\r\n && currentModifiedModel === this._modifiedEditor.getModel()) {\r\n this._setState(2 /* DiffComputed */);\r\n this._diffComputationResult = result;\r\n this._updateDecorationsRunner.schedule();\r\n this._onDidUpdateDiff.fire();\r\n }\r\n }, (error) => {\r\n if (currentToken === this._diffComputationToken\r\n && currentOriginalModel === this._originalEditor.getModel()\r\n && currentModifiedModel === this._modifiedEditor.getModel()) {\r\n this._setState(2 /* DiffComputed */);\r\n this._diffComputationResult = null;\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n });\r\n }\r\n _cleanViewZonesAndDecorations() {\r\n this._originalEditorState.clean(this._originalEditor);\r\n this._modifiedEditorState.clean(this._modifiedEditor);\r\n }\r\n _updateDecorations() {\r\n if (!this._originalEditor.getModel() || !this._modifiedEditor.getModel()) {\r\n return;\r\n }\r\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\r\n const foreignOriginal = this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces());\r\n const foreignModified = this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces());\r\n const diffDecorations = this._strategy.getEditorsDiffDecorations(lineChanges, this._ignoreTrimWhitespace, this._renderIndicators, foreignOriginal, foreignModified);\r\n try {\r\n this._currentlyChangingViewZones = true;\r\n this._originalEditorState.apply(this._originalEditor, this._originalOverviewRuler, diffDecorations.original, false);\r\n this._modifiedEditorState.apply(this._modifiedEditor, this._modifiedOverviewRuler, diffDecorations.modified, true);\r\n }\r\n finally {\r\n this._currentlyChangingViewZones = false;\r\n }\r\n }\r\n _adjustOptionsForSubEditor(options) {\r\n const clonedOptions = Object.assign({}, options);\r\n clonedOptions.inDiffEditor = true;\r\n clonedOptions.automaticLayout = false;\r\n // Clone scrollbar options before changing them\r\n clonedOptions.scrollbar = Object.assign({}, (clonedOptions.scrollbar || {}));\r\n clonedOptions.scrollbar.vertical = 'visible';\r\n clonedOptions.folding = false;\r\n clonedOptions.codeLens = this._diffCodeLens;\r\n clonedOptions.fixedOverflowWidgets = true;\r\n // clonedOptions.lineDecorationsWidth = '2ch';\r\n // Clone minimap options before changing them\r\n clonedOptions.minimap = Object.assign({}, (clonedOptions.minimap || {}));\r\n clonedOptions.minimap.enabled = false;\r\n return clonedOptions;\r\n }\r\n _adjustOptionsForLeftHandSide(options) {\r\n const result = this._adjustOptionsForSubEditor(options);\r\n if (!this._renderSideBySide) {\r\n // never wrap hidden editor\r\n result.wordWrapOverride1 = 'off';\r\n }\r\n else {\r\n result.wordWrapOverride1 = this._diffWordWrap;\r\n }\r\n if (options.originalAriaLabel) {\r\n result.ariaLabel = options.originalAriaLabel;\r\n }\r\n result.readOnly = !this._originalIsEditable;\r\n result.extraEditorClassName = 'original-in-monaco-diff-editor';\r\n return Object.assign(Object.assign({}, result), { dimension: {\r\n height: 0,\r\n width: 0\r\n } });\r\n }\r\n _adjustOptionsForRightHandSide(options) {\r\n const result = this._adjustOptionsForSubEditor(options);\r\n if (options.modifiedAriaLabel) {\r\n result.ariaLabel = options.modifiedAriaLabel;\r\n }\r\n result.wordWrapOverride1 = this._diffWordWrap;\r\n result.revealHorizontalRightPadding = EditorOptions.revealHorizontalRightPadding.defaultValue + DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;\r\n result.scrollbar.verticalHasArrows = false;\r\n result.extraEditorClassName = 'modified-in-monaco-diff-editor';\r\n return Object.assign(Object.assign({}, result), { dimension: {\r\n height: 0,\r\n width: 0\r\n } });\r\n }\r\n doLayout() {\r\n this._elementSizeObserver.observe();\r\n this._doLayout();\r\n }\r\n _doLayout() {\r\n const width = this._elementSizeObserver.getWidth();\r\n const height = this._elementSizeObserver.getHeight();\r\n const reviewHeight = this._getReviewHeight();\r\n const splitPoint = this._strategy.layout();\r\n this._originalDomNode.style.width = splitPoint + 'px';\r\n this._originalDomNode.style.left = '0px';\r\n this._modifiedDomNode.style.width = (width - splitPoint) + 'px';\r\n this._modifiedDomNode.style.left = splitPoint + 'px';\r\n this._overviewDomElement.style.top = '0px';\r\n this._overviewDomElement.style.height = (height - reviewHeight) + 'px';\r\n this._overviewDomElement.style.width = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH + 'px';\r\n this._overviewDomElement.style.left = (width - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH) + 'px';\r\n this._overviewViewportDomElement.setWidth(DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH);\r\n this._overviewViewportDomElement.setHeight(30);\r\n this._originalEditor.layout({ width: splitPoint, height: (height - reviewHeight) });\r\n this._modifiedEditor.layout({ width: width - splitPoint - (this._renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0), height: (height - reviewHeight) });\r\n if (this._originalOverviewRuler || this._modifiedOverviewRuler) {\r\n this._layoutOverviewRulers();\r\n }\r\n this._reviewPane.layout(height - reviewHeight, width, reviewHeight);\r\n this._layoutOverviewViewport();\r\n }\r\n _layoutOverviewViewport() {\r\n const layout = this._computeOverviewViewport();\r\n if (!layout) {\r\n this._overviewViewportDomElement.setTop(0);\r\n this._overviewViewportDomElement.setHeight(0);\r\n }\r\n else {\r\n this._overviewViewportDomElement.setTop(layout.top);\r\n this._overviewViewportDomElement.setHeight(layout.height);\r\n }\r\n }\r\n _computeOverviewViewport() {\r\n const layoutInfo = this._modifiedEditor.getLayoutInfo();\r\n if (!layoutInfo) {\r\n return null;\r\n }\r\n const scrollTop = this._modifiedEditor.getScrollTop();\r\n const scrollHeight = this._modifiedEditor.getScrollHeight();\r\n const computedAvailableSize = Math.max(0, layoutInfo.height);\r\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * 0);\r\n const computedRatio = scrollHeight > 0 ? (computedRepresentableSize / scrollHeight) : 0;\r\n const computedSliderSize = Math.max(0, Math.floor(layoutInfo.height * computedRatio));\r\n const computedSliderPosition = Math.floor(scrollTop * computedRatio);\r\n return {\r\n height: computedSliderSize,\r\n top: computedSliderPosition\r\n };\r\n }\r\n _createDataSource() {\r\n return {\r\n getWidth: () => {\r\n return this._elementSizeObserver.getWidth();\r\n },\r\n getHeight: () => {\r\n return (this._elementSizeObserver.getHeight() - this._getReviewHeight());\r\n },\r\n getOptions: () => {\r\n return {\r\n renderOverviewRuler: this._renderOverviewRuler\r\n };\r\n },\r\n getContainerDomNode: () => {\r\n return this._containerDomElement;\r\n },\r\n relayoutEditors: () => {\r\n this._doLayout();\r\n },\r\n getOriginalEditor: () => {\r\n return this._originalEditor;\r\n },\r\n getModifiedEditor: () => {\r\n return this._modifiedEditor;\r\n }\r\n };\r\n }\r\n _setStrategy(newStrategy) {\r\n if (this._strategy) {\r\n this._strategy.dispose();\r\n }\r\n this._strategy = newStrategy;\r\n newStrategy.applyColors(this._themeService.getColorTheme());\r\n if (this._diffComputationResult) {\r\n this._updateDecorations();\r\n }\r\n // Just do a layout, the strategy might need it\r\n this._doLayout();\r\n }\r\n _getLineChangeAtOrBeforeLineNumber(lineNumber, startLineNumberExtractor) {\r\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\r\n if (lineChanges.length === 0 || lineNumber < startLineNumberExtractor(lineChanges[0])) {\r\n // There are no changes or `lineNumber` is before the first change\r\n return null;\r\n }\r\n let min = 0;\r\n let max = lineChanges.length - 1;\r\n while (min < max) {\r\n const mid = Math.floor((min + max) / 2);\r\n const midStart = startLineNumberExtractor(lineChanges[mid]);\r\n const midEnd = (mid + 1 <= max ? startLineNumberExtractor(lineChanges[mid + 1]) : 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n if (lineNumber < midStart) {\r\n max = mid - 1;\r\n }\r\n else if (lineNumber >= midEnd) {\r\n min = mid + 1;\r\n }\r\n else {\r\n // HIT!\r\n min = mid;\r\n max = mid;\r\n }\r\n }\r\n return lineChanges[min];\r\n }\r\n _getEquivalentLineForOriginalLineNumber(lineNumber) {\r\n const lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.originalStartLineNumber);\r\n if (!lineChange) {\r\n return lineNumber;\r\n }\r\n const originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n const modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n const lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\r\n const lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\r\n const delta = lineNumber - originalEquivalentLineNumber;\r\n if (delta <= lineChangeOriginalLength) {\r\n return modifiedEquivalentLineNumber + Math.min(delta, lineChangeModifiedLength);\r\n }\r\n return modifiedEquivalentLineNumber + lineChangeModifiedLength - lineChangeOriginalLength + delta;\r\n }\r\n _getEquivalentLineForModifiedLineNumber(lineNumber) {\r\n const lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.modifiedStartLineNumber);\r\n if (!lineChange) {\r\n return lineNumber;\r\n }\r\n const originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n const modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n const lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\r\n const lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\r\n const delta = lineNumber - modifiedEquivalentLineNumber;\r\n if (delta <= lineChangeModifiedLength) {\r\n return originalEquivalentLineNumber + Math.min(delta, lineChangeOriginalLength);\r\n }\r\n return originalEquivalentLineNumber + lineChangeOriginalLength - lineChangeModifiedLength + delta;\r\n }\r\n getDiffLineInformationForOriginal(lineNumber) {\r\n if (!this._diffComputationResult) {\r\n // Cannot answer that which I don't know\r\n return null;\r\n }\r\n return {\r\n equivalentLineNumber: this._getEquivalentLineForOriginalLineNumber(lineNumber)\r\n };\r\n }\r\n getDiffLineInformationForModified(lineNumber) {\r\n if (!this._diffComputationResult) {\r\n // Cannot answer that which I don't know\r\n return null;\r\n }\r\n return {\r\n equivalentLineNumber: this._getEquivalentLineForModifiedLineNumber(lineNumber)\r\n };\r\n }\r\n};\r\nDiffEditorWidget.ONE_OVERVIEW_WIDTH = 15;\r\nDiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH = 30;\r\nDiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY = 200; // ms\r\nDiffEditorWidget = __decorate([\r\n __param(3, IClipboardService),\r\n __param(4, IEditorWorkerService),\r\n __param(5, IContextKeyService),\r\n __param(6, IInstantiationService),\r\n __param(7, ICodeEditorService),\r\n __param(8, IThemeService),\r\n __param(9, INotificationService),\r\n __param(10, IContextMenuService),\r\n __param(11, IEditorProgressService)\r\n], DiffEditorWidget);\r\nexport { DiffEditorWidget };\r\nclass DiffEditorWidgetStyle extends Disposable {\r\n constructor(dataSource) {\r\n super();\r\n this._dataSource = dataSource;\r\n this._insertColor = null;\r\n this._removeColor = null;\r\n }\r\n applyColors(theme) {\r\n const newInsertColor = (theme.getColor(diffInserted) || defaultInsertColor).transparent(2);\r\n const newRemoveColor = (theme.getColor(diffRemoved) || defaultRemoveColor).transparent(2);\r\n const hasChanges = !newInsertColor.equals(this._insertColor) || !newRemoveColor.equals(this._removeColor);\r\n this._insertColor = newInsertColor;\r\n this._removeColor = newRemoveColor;\r\n return hasChanges;\r\n }\r\n getEditorsDiffDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalWhitespaces, modifiedWhitespaces) {\r\n // Get view zones\r\n modifiedWhitespaces = modifiedWhitespaces.sort((a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n originalWhitespaces = originalWhitespaces.sort((a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n const zones = this._getViewZones(lineChanges, originalWhitespaces, modifiedWhitespaces, renderIndicators);\r\n // Get decorations & overview ruler zones\r\n const originalDecorations = this._getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators);\r\n const modifiedDecorations = this._getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators);\r\n return {\r\n original: {\r\n decorations: originalDecorations.decorations,\r\n overviewZones: originalDecorations.overviewZones,\r\n zones: zones.original\r\n },\r\n modified: {\r\n decorations: modifiedDecorations.decorations,\r\n overviewZones: modifiedDecorations.overviewZones,\r\n zones: zones.modified\r\n }\r\n };\r\n }\r\n}\r\nclass ForeignViewZonesIterator {\r\n constructor(source) {\r\n this._source = source;\r\n this._index = -1;\r\n this.current = null;\r\n this.advance();\r\n }\r\n advance() {\r\n this._index++;\r\n if (this._index < this._source.length) {\r\n this.current = this._source[this._index];\r\n }\r\n else {\r\n this.current = null;\r\n }\r\n }\r\n}\r\nclass ViewZonesComputer {\r\n constructor(_lineChanges, _originalForeignVZ, _modifiedForeignVZ, _originalEditor, _modifiedEditor) {\r\n this._lineChanges = _lineChanges;\r\n this._originalForeignVZ = _originalForeignVZ;\r\n this._modifiedForeignVZ = _modifiedForeignVZ;\r\n this._originalEditor = _originalEditor;\r\n this._modifiedEditor = _modifiedEditor;\r\n }\r\n static _getViewLineCount(editor, startLineNumber, endLineNumber) {\r\n const model = editor.getModel();\r\n const viewModel = editor._getViewModel();\r\n if (model && viewModel) {\r\n const viewRange = getViewRange(model, viewModel, startLineNumber, endLineNumber);\r\n return (viewRange.endLineNumber - viewRange.startLineNumber + 1);\r\n }\r\n return (endLineNumber - startLineNumber + 1);\r\n }\r\n getViewZones() {\r\n const originalLineHeight = this._originalEditor.getOption(57 /* lineHeight */);\r\n const modifiedLineHeight = this._modifiedEditor.getOption(57 /* lineHeight */);\r\n const originalHasWrapping = (this._originalEditor.getOption(130 /* wrappingInfo */).wrappingColumn !== -1);\r\n const modifiedHasWrapping = (this._modifiedEditor.getOption(130 /* wrappingInfo */).wrappingColumn !== -1);\r\n const hasWrapping = (originalHasWrapping || modifiedHasWrapping);\r\n const originalModel = this._originalEditor.getModel();\r\n const originalCoordinatesConverter = this._originalEditor._getViewModel().coordinatesConverter;\r\n const modifiedCoordinatesConverter = this._modifiedEditor._getViewModel().coordinatesConverter;\r\n const result = {\r\n original: [],\r\n modified: []\r\n };\r\n let lineChangeModifiedLength = 0;\r\n let lineChangeOriginalLength = 0;\r\n let originalEquivalentLineNumber = 0;\r\n let modifiedEquivalentLineNumber = 0;\r\n let originalEndEquivalentLineNumber = 0;\r\n let modifiedEndEquivalentLineNumber = 0;\r\n const sortMyViewZones = (a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n };\r\n const addAndCombineIfPossible = (destination, item) => {\r\n if (item.domNode === null && destination.length > 0) {\r\n const lastItem = destination[destination.length - 1];\r\n if (lastItem.afterLineNumber === item.afterLineNumber && lastItem.domNode === null) {\r\n lastItem.heightInLines += item.heightInLines;\r\n return;\r\n }\r\n }\r\n destination.push(item);\r\n };\r\n const modifiedForeignVZ = new ForeignViewZonesIterator(this._modifiedForeignVZ);\r\n const originalForeignVZ = new ForeignViewZonesIterator(this._originalForeignVZ);\r\n let lastOriginalLineNumber = 1;\r\n let lastModifiedLineNumber = 1;\r\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\r\n for (let i = 0, length = this._lineChanges.length; i <= length; i++) {\r\n const lineChange = (i < length ? this._lineChanges[i] : null);\r\n if (lineChange !== null) {\r\n originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? ViewZonesComputer._getViewLineCount(this._originalEditor, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber) : 0);\r\n lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? ViewZonesComputer._getViewLineCount(this._modifiedEditor, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber) : 0);\r\n originalEndEquivalentLineNumber = Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\r\n modifiedEndEquivalentLineNumber = Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\r\n }\r\n else {\r\n // Increase to very large value to get the producing tests of foreign view zones running\r\n originalEquivalentLineNumber += 10000000 + lineChangeOriginalLength;\r\n modifiedEquivalentLineNumber += 10000000 + lineChangeModifiedLength;\r\n originalEndEquivalentLineNumber = originalEquivalentLineNumber;\r\n modifiedEndEquivalentLineNumber = modifiedEquivalentLineNumber;\r\n }\r\n // Each step produces view zones, and after producing them, we try to cancel them out, to avoid empty-empty view zone cases\r\n let stepOriginal = [];\r\n let stepModified = [];\r\n // ---------------------------- PRODUCE VIEW ZONES\r\n // [PRODUCE] View zones due to line mapping differences (equal lines but wrapped differently)\r\n if (hasWrapping) {\r\n let count;\r\n if (lineChange) {\r\n if (lineChange.originalEndLineNumber > 0) {\r\n count = lineChange.originalStartLineNumber - lastOriginalLineNumber;\r\n }\r\n else {\r\n count = lineChange.modifiedStartLineNumber - lastModifiedLineNumber;\r\n }\r\n }\r\n else {\r\n count = originalModel.getLineCount() - lastOriginalLineNumber;\r\n }\r\n for (let i = 0; i < count; i++) {\r\n const originalLineNumber = lastOriginalLineNumber + i;\r\n const modifiedLineNumber = lastModifiedLineNumber + i;\r\n const originalViewLineCount = originalCoordinatesConverter.getModelLineViewLineCount(originalLineNumber);\r\n const modifiedViewLineCount = modifiedCoordinatesConverter.getModelLineViewLineCount(modifiedLineNumber);\r\n if (originalViewLineCount < modifiedViewLineCount) {\r\n stepOriginal.push({\r\n afterLineNumber: originalLineNumber,\r\n heightInLines: modifiedViewLineCount - originalViewLineCount,\r\n domNode: null,\r\n marginDomNode: null\r\n });\r\n }\r\n else if (originalViewLineCount > modifiedViewLineCount) {\r\n stepModified.push({\r\n afterLineNumber: modifiedLineNumber,\r\n heightInLines: originalViewLineCount - modifiedViewLineCount,\r\n domNode: null,\r\n marginDomNode: null\r\n });\r\n }\r\n }\r\n if (lineChange) {\r\n lastOriginalLineNumber = (lineChange.originalEndLineNumber > 0 ? lineChange.originalEndLineNumber : lineChange.originalStartLineNumber) + 1;\r\n lastModifiedLineNumber = (lineChange.modifiedEndLineNumber > 0 ? lineChange.modifiedEndLineNumber : lineChange.modifiedStartLineNumber) + 1;\r\n }\r\n }\r\n // [PRODUCE] View zone(s) in original-side due to foreign view zone(s) in modified-side\r\n while (modifiedForeignVZ.current && modifiedForeignVZ.current.afterLineNumber <= modifiedEndEquivalentLineNumber) {\r\n let viewZoneLineNumber;\r\n if (modifiedForeignVZ.current.afterLineNumber <= modifiedEquivalentLineNumber) {\r\n viewZoneLineNumber = originalEquivalentLineNumber - modifiedEquivalentLineNumber + modifiedForeignVZ.current.afterLineNumber;\r\n }\r\n else {\r\n viewZoneLineNumber = originalEndEquivalentLineNumber;\r\n }\r\n let marginDomNode = null;\r\n if (lineChange && lineChange.modifiedStartLineNumber <= modifiedForeignVZ.current.afterLineNumber && modifiedForeignVZ.current.afterLineNumber <= lineChange.modifiedEndLineNumber) {\r\n marginDomNode = this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion();\r\n }\r\n stepOriginal.push({\r\n afterLineNumber: viewZoneLineNumber,\r\n heightInLines: modifiedForeignVZ.current.height / modifiedLineHeight,\r\n domNode: null,\r\n marginDomNode: marginDomNode\r\n });\r\n modifiedForeignVZ.advance();\r\n }\r\n // [PRODUCE] View zone(s) in modified-side due to foreign view zone(s) in original-side\r\n while (originalForeignVZ.current && originalForeignVZ.current.afterLineNumber <= originalEndEquivalentLineNumber) {\r\n let viewZoneLineNumber;\r\n if (originalForeignVZ.current.afterLineNumber <= originalEquivalentLineNumber) {\r\n viewZoneLineNumber = modifiedEquivalentLineNumber - originalEquivalentLineNumber + originalForeignVZ.current.afterLineNumber;\r\n }\r\n else {\r\n viewZoneLineNumber = modifiedEndEquivalentLineNumber;\r\n }\r\n stepModified.push({\r\n afterLineNumber: viewZoneLineNumber,\r\n heightInLines: originalForeignVZ.current.height / originalLineHeight,\r\n domNode: null\r\n });\r\n originalForeignVZ.advance();\r\n }\r\n if (lineChange !== null && isChangeOrInsert(lineChange)) {\r\n const r = this._produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\r\n if (r) {\r\n stepOriginal.push(r);\r\n }\r\n }\r\n if (lineChange !== null && isChangeOrDelete(lineChange)) {\r\n const r = this._produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\r\n if (r) {\r\n stepModified.push(r);\r\n }\r\n }\r\n // ---------------------------- END PRODUCE VIEW ZONES\r\n // ---------------------------- EMIT MINIMAL VIEW ZONES\r\n // [CANCEL & EMIT] Try to cancel view zones out\r\n let stepOriginalIndex = 0;\r\n let stepModifiedIndex = 0;\r\n stepOriginal = stepOriginal.sort(sortMyViewZones);\r\n stepModified = stepModified.sort(sortMyViewZones);\r\n while (stepOriginalIndex < stepOriginal.length && stepModifiedIndex < stepModified.length) {\r\n const original = stepOriginal[stepOriginalIndex];\r\n const modified = stepModified[stepModifiedIndex];\r\n const originalDelta = original.afterLineNumber - originalEquivalentLineNumber;\r\n const modifiedDelta = modified.afterLineNumber - modifiedEquivalentLineNumber;\r\n if (originalDelta < modifiedDelta) {\r\n addAndCombineIfPossible(result.original, original);\r\n stepOriginalIndex++;\r\n }\r\n else if (modifiedDelta < originalDelta) {\r\n addAndCombineIfPossible(result.modified, modified);\r\n stepModifiedIndex++;\r\n }\r\n else if (original.shouldNotShrink) {\r\n addAndCombineIfPossible(result.original, original);\r\n stepOriginalIndex++;\r\n }\r\n else if (modified.shouldNotShrink) {\r\n addAndCombineIfPossible(result.modified, modified);\r\n stepModifiedIndex++;\r\n }\r\n else {\r\n if (original.heightInLines >= modified.heightInLines) {\r\n // modified view zone gets removed\r\n original.heightInLines -= modified.heightInLines;\r\n stepModifiedIndex++;\r\n }\r\n else {\r\n // original view zone gets removed\r\n modified.heightInLines -= original.heightInLines;\r\n stepOriginalIndex++;\r\n }\r\n }\r\n }\r\n // [EMIT] Remaining original view zones\r\n while (stepOriginalIndex < stepOriginal.length) {\r\n addAndCombineIfPossible(result.original, stepOriginal[stepOriginalIndex]);\r\n stepOriginalIndex++;\r\n }\r\n // [EMIT] Remaining modified view zones\r\n while (stepModifiedIndex < stepModified.length) {\r\n addAndCombineIfPossible(result.modified, stepModified[stepModifiedIndex]);\r\n stepModifiedIndex++;\r\n }\r\n // ---------------------------- END EMIT MINIMAL VIEW ZONES\r\n }\r\n return {\r\n original: ViewZonesComputer._ensureDomNodes(result.original),\r\n modified: ViewZonesComputer._ensureDomNodes(result.modified),\r\n };\r\n }\r\n static _ensureDomNodes(zones) {\r\n return zones.map((z) => {\r\n if (!z.domNode) {\r\n z.domNode = createFakeLinesDiv();\r\n }\r\n return z;\r\n });\r\n }\r\n}\r\nfunction createDecoration(startLineNumber, startColumn, endLineNumber, endColumn, options) {\r\n return {\r\n range: new Range(startLineNumber, startColumn, endLineNumber, endColumn),\r\n options: options\r\n };\r\n}\r\nconst DECORATIONS = {\r\n charDelete: ModelDecorationOptions.register({\r\n description: 'diff-editor-char-delete',\r\n className: 'char-delete'\r\n }),\r\n charDeleteWholeLine: ModelDecorationOptions.register({\r\n description: 'diff-editor-char-delete-whole-line',\r\n className: 'char-delete',\r\n isWholeLine: true\r\n }),\r\n charInsert: ModelDecorationOptions.register({\r\n description: 'diff-editor-char-insert',\r\n className: 'char-insert'\r\n }),\r\n charInsertWholeLine: ModelDecorationOptions.register({\r\n description: 'diff-editor-char-insert-whole-line',\r\n className: 'char-insert',\r\n isWholeLine: true\r\n }),\r\n lineInsert: ModelDecorationOptions.register({\r\n description: 'diff-editor-line-insert',\r\n className: 'line-insert',\r\n marginClassName: 'line-insert',\r\n isWholeLine: true\r\n }),\r\n lineInsertWithSign: ModelDecorationOptions.register({\r\n description: 'diff-editor-line-insert-with-sign',\r\n className: 'line-insert',\r\n linesDecorationsClassName: 'insert-sign ' + ThemeIcon.asClassName(diffInsertIcon),\r\n marginClassName: 'line-insert',\r\n isWholeLine: true\r\n }),\r\n lineDelete: ModelDecorationOptions.register({\r\n description: 'diff-editor-line-delete',\r\n className: 'line-delete',\r\n marginClassName: 'line-delete',\r\n isWholeLine: true\r\n }),\r\n lineDeleteWithSign: ModelDecorationOptions.register({\r\n description: 'diff-editor-line-delete-with-sign',\r\n className: 'line-delete',\r\n linesDecorationsClassName: 'delete-sign ' + ThemeIcon.asClassName(diffRemoveIcon),\r\n marginClassName: 'line-delete',\r\n isWholeLine: true\r\n }),\r\n lineDeleteMargin: ModelDecorationOptions.register({\r\n description: 'diff-editor-line-delete-margin',\r\n marginClassName: 'line-delete',\r\n })\r\n};\r\nclass DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle {\r\n constructor(dataSource, enableSplitViewResizing) {\r\n super(dataSource);\r\n this._disableSash = (enableSplitViewResizing === false);\r\n this._sashRatio = null;\r\n this._sashPosition = null;\r\n this._startSashPosition = null;\r\n this._sash = this._register(new Sash(this._dataSource.getContainerDomNode(), this, { orientation: 0 /* VERTICAL */ }));\r\n if (this._disableSash) {\r\n this._sash.state = 0 /* Disabled */;\r\n }\r\n this._sash.onDidStart(() => this._onSashDragStart());\r\n this._sash.onDidChange((e) => this._onSashDrag(e));\r\n this._sash.onDidEnd(() => this._onSashDragEnd());\r\n this._sash.onDidReset(() => this._onSashReset());\r\n }\r\n setEnableSplitViewResizing(enableSplitViewResizing) {\r\n const newDisableSash = (enableSplitViewResizing === false);\r\n if (this._disableSash !== newDisableSash) {\r\n this._disableSash = newDisableSash;\r\n this._sash.state = this._disableSash ? 0 /* Disabled */ : 3 /* Enabled */;\r\n }\r\n }\r\n layout(sashRatio = this._sashRatio) {\r\n const w = this._dataSource.getWidth();\r\n const contentWidth = w - (this._dataSource.getOptions().renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);\r\n let sashPosition = Math.floor((sashRatio || 0.5) * contentWidth);\r\n const midPoint = Math.floor(0.5 * contentWidth);\r\n sashPosition = this._disableSash ? midPoint : sashPosition || midPoint;\r\n if (contentWidth > DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH * 2) {\r\n if (sashPosition < DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\r\n sashPosition = DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\r\n }\r\n if (sashPosition > contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\r\n sashPosition = contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\r\n }\r\n }\r\n else {\r\n sashPosition = midPoint;\r\n }\r\n if (this._sashPosition !== sashPosition) {\r\n this._sashPosition = sashPosition;\r\n this._sash.layout();\r\n }\r\n return this._sashPosition;\r\n }\r\n _onSashDragStart() {\r\n this._startSashPosition = this._sashPosition;\r\n }\r\n _onSashDrag(e) {\r\n const w = this._dataSource.getWidth();\r\n const contentWidth = w - (this._dataSource.getOptions().renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);\r\n const sashPosition = this.layout((this._startSashPosition + (e.currentX - e.startX)) / contentWidth);\r\n this._sashRatio = sashPosition / contentWidth;\r\n this._dataSource.relayoutEditors();\r\n }\r\n _onSashDragEnd() {\r\n this._sash.layout();\r\n }\r\n _onSashReset() {\r\n this._sashRatio = 0.5;\r\n this._dataSource.relayoutEditors();\r\n this._sash.layout();\r\n }\r\n getVerticalSashTop(sash) {\r\n return 0;\r\n }\r\n getVerticalSashLeft(sash) {\r\n return this._sashPosition;\r\n }\r\n getVerticalSashHeight(sash) {\r\n return this._dataSource.getHeight();\r\n }\r\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ) {\r\n const originalEditor = this._dataSource.getOriginalEditor();\r\n const modifiedEditor = this._dataSource.getModifiedEditor();\r\n const c = new SideBySideViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\r\n return c.getViewZones();\r\n }\r\n _getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators) {\r\n const originalEditor = this._dataSource.getOriginalEditor();\r\n const overviewZoneColor = String(this._removeColor);\r\n const result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n const originalModel = originalEditor.getModel();\r\n const originalViewModel = originalEditor._getViewModel();\r\n for (const lineChange of lineChanges) {\r\n if (isChangeOrDelete(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineDeleteWithSign : DECORATIONS.lineDelete)\r\n });\r\n if (!isChangeOrInsert(lineChange) || !lineChange.charChanges) {\r\n result.decorations.push(createDecoration(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charDeleteWholeLine));\r\n }\r\n const viewRange = getViewRange(originalModel, originalViewModel, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\r\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (const charChange of lineChange.charChanges) {\r\n if (isChangeOrDelete(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.originalStartLineNumber; lineNumber <= charChange.originalEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.originalStartLineNumber) {\r\n startColumn = charChange.originalStartColumn;\r\n }\r\n else {\r\n startColumn = originalModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.originalEndLineNumber) {\r\n endColumn = charChange.originalEndColumn;\r\n }\r\n else {\r\n endColumn = originalModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charDelete));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn, DECORATIONS.charDelete));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n _getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators) {\r\n const modifiedEditor = this._dataSource.getModifiedEditor();\r\n const overviewZoneColor = String(this._insertColor);\r\n const result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n const modifiedModel = modifiedEditor.getModel();\r\n const modifiedViewModel = modifiedEditor._getViewModel();\r\n for (const lineChange of lineChanges) {\r\n if (isChangeOrInsert(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\r\n });\r\n if (!isChangeOrDelete(lineChange) || !lineChange.charChanges) {\r\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\r\n }\r\n const viewRange = getViewRange(modifiedModel, modifiedViewModel, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\r\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (const charChange of lineChange.charChanges) {\r\n if (isChangeOrInsert(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.modifiedStartLineNumber) {\r\n startColumn = charChange.modifiedStartColumn;\r\n }\r\n else {\r\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.modifiedEndLineNumber) {\r\n endColumn = charChange.modifiedEndColumn;\r\n }\r\n else {\r\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nDiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH = 100;\r\nclass SideBySideViewZonesComputer extends ViewZonesComputer {\r\n constructor(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor) {\r\n super(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\r\n }\r\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\r\n return null;\r\n }\r\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n if (lineChangeModifiedLength > lineChangeOriginalLength) {\r\n return {\r\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\r\n heightInLines: (lineChangeModifiedLength - lineChangeOriginalLength),\r\n domNode: null\r\n };\r\n }\r\n return null;\r\n }\r\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n if (lineChangeOriginalLength > lineChangeModifiedLength) {\r\n return {\r\n afterLineNumber: Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber),\r\n heightInLines: (lineChangeOriginalLength - lineChangeModifiedLength),\r\n domNode: null\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\nclass DiffEditorWidgetInline extends DiffEditorWidgetStyle {\r\n constructor(dataSource, enableSplitViewResizing) {\r\n super(dataSource);\r\n this._decorationsLeft = dataSource.getOriginalEditor().getLayoutInfo().decorationsLeft;\r\n this._register(dataSource.getOriginalEditor().onDidLayoutChange((layoutInfo) => {\r\n if (this._decorationsLeft !== layoutInfo.decorationsLeft) {\r\n this._decorationsLeft = layoutInfo.decorationsLeft;\r\n dataSource.relayoutEditors();\r\n }\r\n }));\r\n }\r\n setEnableSplitViewResizing(enableSplitViewResizing) {\r\n // Nothing to do..\r\n }\r\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ, renderIndicators) {\r\n const originalEditor = this._dataSource.getOriginalEditor();\r\n const modifiedEditor = this._dataSource.getModifiedEditor();\r\n const computer = new InlineViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators);\r\n return computer.getViewZones();\r\n }\r\n _getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators) {\r\n const overviewZoneColor = String(this._removeColor);\r\n const result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n const originalEditor = this._dataSource.getOriginalEditor();\r\n const originalModel = originalEditor.getModel();\r\n const originalViewModel = originalEditor._getViewModel();\r\n for (const lineChange of lineChanges) {\r\n // Add overview zones in the overview ruler\r\n if (isChangeOrDelete(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: DECORATIONS.lineDeleteMargin\r\n });\r\n const viewRange = getViewRange(originalModel, originalViewModel, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\r\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, overviewZoneColor));\r\n }\r\n }\r\n return result;\r\n }\r\n _getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators) {\r\n const modifiedEditor = this._dataSource.getModifiedEditor();\r\n const overviewZoneColor = String(this._insertColor);\r\n const result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n const modifiedModel = modifiedEditor.getModel();\r\n const modifiedViewModel = modifiedEditor._getViewModel();\r\n for (const lineChange of lineChanges) {\r\n // Add decorations & overview zones\r\n if (isChangeOrInsert(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\r\n });\r\n const viewRange = getViewRange(modifiedModel, modifiedViewModel, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\r\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (const charChange of lineChange.charChanges) {\r\n if (isChangeOrInsert(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.modifiedStartLineNumber) {\r\n startColumn = charChange.modifiedStartColumn;\r\n }\r\n else {\r\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.modifiedEndLineNumber) {\r\n endColumn = charChange.modifiedEndColumn;\r\n }\r\n else {\r\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n layout() {\r\n // An editor should not be smaller than 5px\r\n return Math.max(5, this._decorationsLeft);\r\n }\r\n}\r\nclass InlineViewZonesComputer extends ViewZonesComputer {\r\n constructor(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators) {\r\n super(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\r\n this._originalModel = originalEditor.getModel();\r\n this._renderIndicators = renderIndicators;\r\n this._pendingLineChange = [];\r\n this._pendingViewZones = [];\r\n this._lineBreaksComputer = this._modifiedEditor._getViewModel().createLineBreaksComputer();\r\n }\r\n getViewZones() {\r\n const result = super.getViewZones();\r\n this._finalize(result);\r\n return result;\r\n }\r\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\r\n const result = document.createElement('div');\r\n result.className = 'inline-added-margin-view-zone';\r\n return result;\r\n }\r\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n const marginDomNode = document.createElement('div');\r\n marginDomNode.className = 'inline-added-margin-view-zone';\r\n return {\r\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\r\n heightInLines: lineChangeModifiedLength,\r\n domNode: document.createElement('div'),\r\n marginDomNode: marginDomNode\r\n };\r\n }\r\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n const domNode = document.createElement('div');\r\n domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;\r\n const marginDomNode = document.createElement('div');\r\n marginDomNode.className = 'inline-deleted-margin-view-zone';\r\n const viewZone = {\r\n shouldNotShrink: true,\r\n afterLineNumber: (lineChange.modifiedEndLineNumber === 0 ? lineChange.modifiedStartLineNumber : lineChange.modifiedStartLineNumber - 1),\r\n heightInLines: lineChangeOriginalLength,\r\n minWidthInPx: 0,\r\n domNode: domNode,\r\n marginDomNode: marginDomNode,\r\n diff: {\r\n originalStartLineNumber: lineChange.originalStartLineNumber,\r\n originalEndLineNumber: lineChange.originalEndLineNumber,\r\n modifiedStartLineNumber: lineChange.modifiedStartLineNumber,\r\n modifiedEndLineNumber: lineChange.modifiedEndLineNumber,\r\n originalModel: this._originalModel,\r\n viewLineCounts: null,\r\n }\r\n };\r\n for (let lineNumber = lineChange.originalStartLineNumber; lineNumber <= lineChange.originalEndLineNumber; lineNumber++) {\r\n this._lineBreaksComputer.addRequest(this._originalModel.getLineContent(lineNumber), null, null);\r\n }\r\n this._pendingLineChange.push(lineChange);\r\n this._pendingViewZones.push(viewZone);\r\n return viewZone;\r\n }\r\n _finalize(result) {\r\n const modifiedEditorOptions = this._modifiedEditor.getOptions();\r\n const tabSize = this._modifiedEditor.getModel().getOptions().tabSize;\r\n const fontInfo = modifiedEditorOptions.get(41 /* fontInfo */);\r\n const disableMonospaceOptimizations = modifiedEditorOptions.get(27 /* disableMonospaceOptimizations */);\r\n const typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n const scrollBeyondLastColumn = modifiedEditorOptions.get(92 /* scrollBeyondLastColumn */);\r\n const mightContainNonBasicASCII = this._originalModel.mightContainNonBasicASCII();\r\n const mightContainRTL = this._originalModel.mightContainRTL();\r\n const lineHeight = modifiedEditorOptions.get(57 /* lineHeight */);\r\n const layoutInfo = modifiedEditorOptions.get(129 /* layoutInfo */);\r\n const lineDecorationsWidth = layoutInfo.decorationsWidth;\r\n const stopRenderingLineAfter = modifiedEditorOptions.get(104 /* stopRenderingLineAfter */);\r\n const renderWhitespace = modifiedEditorOptions.get(87 /* renderWhitespace */);\r\n const renderControlCharacters = modifiedEditorOptions.get(81 /* renderControlCharacters */);\r\n const fontLigatures = modifiedEditorOptions.get(42 /* fontLigatures */);\r\n const lineBreaks = this._lineBreaksComputer.finalize();\r\n let lineBreakIndex = 0;\r\n for (let i = 0; i < this._pendingLineChange.length; i++) {\r\n const lineChange = this._pendingLineChange[i];\r\n const viewZone = this._pendingViewZones[i];\r\n const domNode = viewZone.domNode;\r\n Configuration.applyFontInfoSlow(domNode, fontInfo);\r\n const marginDomNode = viewZone.marginDomNode;\r\n Configuration.applyFontInfoSlow(marginDomNode, fontInfo);\r\n const decorations = [];\r\n if (lineChange.charChanges) {\r\n for (const charChange of lineChange.charChanges) {\r\n if (isChangeOrDelete(charChange)) {\r\n decorations.push(new InlineDecoration(new Range(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn), 'char-delete', 0 /* Regular */));\r\n }\r\n }\r\n }\r\n const hasCharChanges = (decorations.length > 0);\r\n const sb = createStringBuilder(10000);\r\n let maxCharsPerLine = 0;\r\n let renderedLineCount = 0;\r\n let viewLineCounts = null;\r\n for (let lineNumber = lineChange.originalStartLineNumber; lineNumber <= lineChange.originalEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - lineChange.originalStartLineNumber;\r\n const lineTokens = this._originalModel.getLineTokens(lineNumber);\r\n const lineContent = lineTokens.getLineContent();\r\n const lineBreakData = lineBreaks[lineBreakIndex++];\r\n const actualDecorations = LineDecoration.filter(decorations, lineNumber, 1, lineContent.length + 1);\r\n if (lineBreakData) {\r\n let lastBreakOffset = 0;\r\n for (const breakOffset of lineBreakData.breakOffsets) {\r\n const viewLineTokens = lineTokens.sliceAndInflate(lastBreakOffset, breakOffset, 0);\r\n const viewLineContent = lineContent.substring(lastBreakOffset, breakOffset);\r\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));\r\n lastBreakOffset = breakOffset;\r\n }\r\n if (!viewLineCounts) {\r\n viewLineCounts = [];\r\n }\r\n // make sure all lines before this one have an entry in `viewLineCounts`\r\n while (viewLineCounts.length < lineIndex) {\r\n viewLineCounts[viewLineCounts.length] = 1;\r\n }\r\n viewLineCounts[lineIndex] = lineBreakData.breakOffsets.length;\r\n viewZone.heightInLines += (lineBreakData.breakOffsets.length - 1);\r\n const marginDomNode2 = document.createElement('div');\r\n marginDomNode2.className = 'line-delete';\r\n result.original.push({\r\n afterLineNumber: lineNumber,\r\n afterColumn: 0,\r\n heightInLines: lineBreakData.breakOffsets.length - 1,\r\n domNode: createFakeLinesDiv(),\r\n marginDomNode: marginDomNode2\r\n });\r\n }\r\n else {\r\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));\r\n }\r\n }\r\n maxCharsPerLine += scrollBeyondLastColumn;\r\n const html = sb.build();\r\n const trustedhtml = ttPolicy ? ttPolicy.createHTML(html) : html;\r\n domNode.innerHTML = trustedhtml;\r\n viewZone.minWidthInPx = (maxCharsPerLine * typicalHalfwidthCharacterWidth);\r\n if (viewLineCounts) {\r\n // make sure all lines have an entry in `viewLineCounts`\r\n const cnt = lineChange.originalEndLineNumber - lineChange.originalStartLineNumber;\r\n while (viewLineCounts.length <= cnt) {\r\n viewLineCounts[viewLineCounts.length] = 1;\r\n }\r\n }\r\n viewZone.diff.viewLineCounts = viewLineCounts;\r\n }\r\n result.original.sort((a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n }\r\n _renderOriginalLine(renderedLineCount, lineContent, lineTokens, decorations, hasCharChanges, mightContainNonBasicASCII, mightContainRTL, fontInfo, disableMonospaceOptimizations, lineHeight, lineDecorationsWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, tabSize, sb, marginDomNode) {\r\n sb.appendASCIIString('
    ');\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, mightContainNonBasicASCII);\r\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, mightContainRTL);\r\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\r\n ), sb);\r\n sb.appendASCIIString('
    ');\r\n if (this._renderIndicators) {\r\n const marginElement = document.createElement('div');\r\n marginElement.className = `delete-sign ${ThemeIcon.asClassName(diffRemoveIcon)}`;\r\n marginElement.setAttribute('style', `position:absolute;top:${renderedLineCount * lineHeight}px;width:${lineDecorationsWidth}px;height:${lineHeight}px;right:0;`);\r\n marginDomNode.appendChild(marginElement);\r\n }\r\n return output.characterMapping.getAbsoluteOffset(output.characterMapping.length);\r\n }\r\n}\r\nfunction validateDiffWordWrap(value, defaultValue) {\r\n return validateStringSetOption(value, defaultValue, ['off', 'on', 'inherit']);\r\n}\r\nfunction isChangeOrInsert(lineChange) {\r\n return lineChange.modifiedEndLineNumber > 0;\r\n}\r\nfunction isChangeOrDelete(lineChange) {\r\n return lineChange.originalEndLineNumber > 0;\r\n}\r\nfunction createFakeLinesDiv() {\r\n const r = document.createElement('div');\r\n r.className = 'diagonal-fill';\r\n return r;\r\n}\r\nfunction getViewRange(model, viewModel, startLineNumber, endLineNumber) {\r\n const lineCount = model.getLineCount();\r\n startLineNumber = Math.min(lineCount, Math.max(1, startLineNumber));\r\n endLineNumber = Math.min(lineCount, Math.max(1, endLineNumber));\r\n return viewModel.coordinatesConverter.convertModelRangeToViewRange(new Range(startLineNumber, model.getLineMinColumn(startLineNumber), endLineNumber, model.getLineMaxColumn(endLineNumber)));\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const added = theme.getColor(diffInserted);\r\n if (added) {\r\n collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ${added}; }`);\r\n collector.addRule(`.monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ${added}; }`);\r\n collector.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${added}; }`);\r\n }\r\n const removed = theme.getColor(diffRemoved);\r\n if (removed) {\r\n collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ${removed}; }`);\r\n collector.addRule(`.monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ${removed}; }`);\r\n collector.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${removed}; }`);\r\n }\r\n const addedOutline = theme.getColor(diffInsertedOutline);\r\n if (addedOutline) {\r\n collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${addedOutline}; }`);\r\n }\r\n const removedOutline = theme.getColor(diffRemovedOutline);\r\n if (removedOutline) {\r\n collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${removedOutline}; }`);\r\n }\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${shadow}; }`);\r\n }\r\n const border = theme.getColor(diffBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ${border}; }`);\r\n }\r\n const scrollbarSliderBackgroundColor = theme.getColor(scrollbarSliderBackground);\r\n if (scrollbarSliderBackgroundColor) {\r\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ${scrollbarSliderBackgroundColor};\n\t\t\t}\n\t\t`);\r\n }\r\n const scrollbarSliderHoverBackgroundColor = theme.getColor(scrollbarSliderHoverBackground);\r\n if (scrollbarSliderHoverBackgroundColor) {\r\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`);\r\n }\r\n const scrollbarSliderActiveBackgroundColor = theme.getColor(scrollbarSliderActiveBackground);\r\n if (scrollbarSliderActiveBackgroundColor) {\r\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`);\r\n }\r\n const diffDiagonalFillColor = theme.getColor(diffDiagonalFill);\r\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`);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class AbstractCodeEditorService extends Disposable {\r\n constructor() {\r\n super();\r\n this._onCodeEditorAdd = this._register(new Emitter());\r\n this.onCodeEditorAdd = this._onCodeEditorAdd.event;\r\n this._onCodeEditorRemove = this._register(new Emitter());\r\n this.onCodeEditorRemove = this._onCodeEditorRemove.event;\r\n this._onDiffEditorAdd = this._register(new Emitter());\r\n this._onDiffEditorRemove = this._register(new Emitter());\r\n this._onDecorationTypeRegistered = this._register(new Emitter());\r\n this._modelProperties = new Map();\r\n this._codeEditors = Object.create(null);\r\n this._diffEditors = Object.create(null);\r\n }\r\n addCodeEditor(editor) {\r\n this._codeEditors[editor.getId()] = editor;\r\n this._onCodeEditorAdd.fire(editor);\r\n }\r\n removeCodeEditor(editor) {\r\n if (delete this._codeEditors[editor.getId()]) {\r\n this._onCodeEditorRemove.fire(editor);\r\n }\r\n }\r\n listCodeEditors() {\r\n return Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\r\n }\r\n addDiffEditor(editor) {\r\n this._diffEditors[editor.getId()] = editor;\r\n this._onDiffEditorAdd.fire(editor);\r\n }\r\n removeDiffEditor(editor) {\r\n if (delete this._diffEditors[editor.getId()]) {\r\n this._onDiffEditorRemove.fire(editor);\r\n }\r\n }\r\n listDiffEditors() {\r\n return Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\r\n }\r\n getFocusedCodeEditor() {\r\n let editorWithWidgetFocus = null;\r\n const editors = this.listCodeEditors();\r\n for (const editor of editors) {\r\n if (editor.hasTextFocus()) {\r\n // bingo!\r\n return editor;\r\n }\r\n if (editor.hasWidgetFocus()) {\r\n editorWithWidgetFocus = editor;\r\n }\r\n }\r\n return editorWithWidgetFocus;\r\n }\r\n setModelProperty(resource, key, value) {\r\n const key1 = resource.toString();\r\n let dest;\r\n if (this._modelProperties.has(key1)) {\r\n dest = this._modelProperties.get(key1);\r\n }\r\n else {\r\n dest = new Map();\r\n this._modelProperties.set(key1, dest);\r\n }\r\n dest.set(key, value);\r\n }\r\n getModelProperty(resource, key) {\r\n const key1 = resource.toString();\r\n if (this._modelProperties.has(key1)) {\r\n const innerMap = this._modelProperties.get(key1);\r\n return innerMap.get(key);\r\n }\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { AbstractCodeEditorService } from './abstractCodeEditorService.js';\r\nimport { isThemeColor } from '../../common/editorCommon.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nexport class RefCountedStyleSheet {\r\n constructor(parent, editorId, styleSheet) {\r\n this._parent = parent;\r\n this._editorId = editorId;\r\n this._styleSheet = styleSheet;\r\n this._refCount = 0;\r\n }\r\n ref() {\r\n this._refCount++;\r\n }\r\n unref() {\r\n var _a;\r\n this._refCount--;\r\n if (this._refCount === 0) {\r\n (_a = this._styleSheet.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this._styleSheet);\r\n this._parent._removeEditorStyleSheets(this._editorId);\r\n }\r\n }\r\n insertRule(rule, index) {\r\n const sheet = this._styleSheet.sheet;\r\n sheet.insertRule(rule, index);\r\n }\r\n removeRulesContainingSelector(ruleName) {\r\n dom.removeCSSRulesContainingSelector(ruleName, this._styleSheet);\r\n }\r\n}\r\nexport class GlobalStyleSheet {\r\n constructor(styleSheet) {\r\n this._styleSheet = styleSheet;\r\n }\r\n ref() {\r\n }\r\n unref() {\r\n }\r\n insertRule(rule, index) {\r\n const sheet = this._styleSheet.sheet;\r\n sheet.insertRule(rule, index);\r\n }\r\n removeRulesContainingSelector(ruleName) {\r\n dom.removeCSSRulesContainingSelector(ruleName, this._styleSheet);\r\n }\r\n}\r\nlet CodeEditorServiceImpl = class CodeEditorServiceImpl extends AbstractCodeEditorService {\r\n constructor(styleSheet, themeService) {\r\n super();\r\n this._decorationOptionProviders = new Map();\r\n this._editorStyleSheets = new Map();\r\n this._globalStyleSheet = styleSheet ? styleSheet : null;\r\n this._themeService = themeService;\r\n }\r\n _getOrCreateGlobalStyleSheet() {\r\n if (!this._globalStyleSheet) {\r\n this._globalStyleSheet = new GlobalStyleSheet(dom.createStyleSheet());\r\n }\r\n return this._globalStyleSheet;\r\n }\r\n _getOrCreateStyleSheet(editor) {\r\n if (!editor) {\r\n return this._getOrCreateGlobalStyleSheet();\r\n }\r\n const domNode = editor.getContainerDomNode();\r\n if (!dom.isInShadowDOM(domNode)) {\r\n return this._getOrCreateGlobalStyleSheet();\r\n }\r\n const editorId = editor.getId();\r\n if (!this._editorStyleSheets.has(editorId)) {\r\n const refCountedStyleSheet = new RefCountedStyleSheet(this, editorId, dom.createStyleSheet(domNode));\r\n this._editorStyleSheets.set(editorId, refCountedStyleSheet);\r\n }\r\n return this._editorStyleSheets.get(editorId);\r\n }\r\n _removeEditorStyleSheets(editorId) {\r\n this._editorStyleSheets.delete(editorId);\r\n }\r\n registerDecorationType(description, key, options, parentTypeKey, editor) {\r\n let provider = this._decorationOptionProviders.get(key);\r\n if (!provider) {\r\n const styleSheet = this._getOrCreateStyleSheet(editor);\r\n const providerArgs = {\r\n styleSheet: styleSheet,\r\n key: key,\r\n parentTypeKey: parentTypeKey,\r\n options: options || Object.create(null)\r\n };\r\n if (!parentTypeKey) {\r\n provider = new DecorationTypeOptionsProvider(description, this._themeService, styleSheet, providerArgs);\r\n }\r\n else {\r\n provider = new DecorationSubTypeOptionsProvider(this._themeService, styleSheet, providerArgs);\r\n }\r\n this._decorationOptionProviders.set(key, provider);\r\n this._onDecorationTypeRegistered.fire(key);\r\n }\r\n provider.refCount++;\r\n }\r\n removeDecorationType(key) {\r\n const provider = this._decorationOptionProviders.get(key);\r\n if (provider) {\r\n provider.refCount--;\r\n if (provider.refCount <= 0) {\r\n this._decorationOptionProviders.delete(key);\r\n provider.dispose();\r\n this.listCodeEditors().forEach((ed) => ed.removeDecorations(key));\r\n }\r\n }\r\n }\r\n resolveDecorationOptions(decorationTypeKey, writable) {\r\n const provider = this._decorationOptionProviders.get(decorationTypeKey);\r\n if (!provider) {\r\n throw new Error('Unknown decoration type key: ' + decorationTypeKey);\r\n }\r\n return provider.getOptions(this, writable);\r\n }\r\n};\r\nCodeEditorServiceImpl = __decorate([\r\n __param(1, IThemeService)\r\n], CodeEditorServiceImpl);\r\nexport { CodeEditorServiceImpl };\r\nexport class DecorationSubTypeOptionsProvider {\r\n constructor(themeService, styleSheet, providerArgs) {\r\n this._styleSheet = styleSheet;\r\n this._styleSheet.ref();\r\n this._parentTypeKey = providerArgs.parentTypeKey;\r\n this.refCount = 0;\r\n this._beforeContentRules = new DecorationCSSRules(3 /* BeforeContentClassName */, providerArgs, themeService);\r\n this._afterContentRules = new DecorationCSSRules(4 /* AfterContentClassName */, providerArgs, themeService);\r\n }\r\n getOptions(codeEditorService, writable) {\r\n const options = codeEditorService.resolveDecorationOptions(this._parentTypeKey, true);\r\n if (this._beforeContentRules) {\r\n options.beforeContentClassName = this._beforeContentRules.className;\r\n }\r\n if (this._afterContentRules) {\r\n options.afterContentClassName = this._afterContentRules.className;\r\n }\r\n return options;\r\n }\r\n dispose() {\r\n if (this._beforeContentRules) {\r\n this._beforeContentRules.dispose();\r\n this._beforeContentRules = null;\r\n }\r\n if (this._afterContentRules) {\r\n this._afterContentRules.dispose();\r\n this._afterContentRules = null;\r\n }\r\n this._styleSheet.unref();\r\n }\r\n}\r\nexport class DecorationTypeOptionsProvider {\r\n constructor(description, themeService, styleSheet, providerArgs) {\r\n this._disposables = new DisposableStore();\r\n this.description = description;\r\n this._styleSheet = styleSheet;\r\n this._styleSheet.ref();\r\n this.refCount = 0;\r\n const createCSSRules = (type) => {\r\n const rules = new DecorationCSSRules(type, providerArgs, themeService);\r\n this._disposables.add(rules);\r\n if (rules.hasContent) {\r\n return rules.className;\r\n }\r\n return undefined;\r\n };\r\n const createInlineCSSRules = (type) => {\r\n const rules = new DecorationCSSRules(type, providerArgs, themeService);\r\n this._disposables.add(rules);\r\n if (rules.hasContent) {\r\n return { className: rules.className, hasLetterSpacing: rules.hasLetterSpacing };\r\n }\r\n return null;\r\n };\r\n this.className = createCSSRules(0 /* ClassName */);\r\n const inlineData = createInlineCSSRules(1 /* InlineClassName */);\r\n if (inlineData) {\r\n this.inlineClassName = inlineData.className;\r\n this.inlineClassNameAffectsLetterSpacing = inlineData.hasLetterSpacing;\r\n }\r\n this.beforeContentClassName = createCSSRules(3 /* BeforeContentClassName */);\r\n this.afterContentClassName = createCSSRules(4 /* AfterContentClassName */);\r\n if (providerArgs.options.beforeInjectedText && providerArgs.options.beforeInjectedText.contentText) {\r\n const beforeInlineData = createInlineCSSRules(5 /* BeforeInjectedTextClassName */);\r\n this.beforeInjectedText = {\r\n content: providerArgs.options.beforeInjectedText.contentText,\r\n inlineClassName: beforeInlineData === null || beforeInlineData === void 0 ? void 0 : beforeInlineData.className,\r\n inlineClassNameAffectsLetterSpacing: (beforeInlineData === null || beforeInlineData === void 0 ? void 0 : beforeInlineData.hasLetterSpacing) || providerArgs.options.beforeInjectedText.affectsLetterSpacing\r\n };\r\n }\r\n if (providerArgs.options.afterInjectedText && providerArgs.options.afterInjectedText.contentText) {\r\n const afterInlineData = createInlineCSSRules(6 /* AfterInjectedTextClassName */);\r\n this.afterInjectedText = {\r\n content: providerArgs.options.afterInjectedText.contentText,\r\n inlineClassName: afterInlineData === null || afterInlineData === void 0 ? void 0 : afterInlineData.className,\r\n inlineClassNameAffectsLetterSpacing: (afterInlineData === null || afterInlineData === void 0 ? void 0 : afterInlineData.hasLetterSpacing) || providerArgs.options.afterInjectedText.affectsLetterSpacing\r\n };\r\n }\r\n this.glyphMarginClassName = createCSSRules(2 /* GlyphMarginClassName */);\r\n const options = providerArgs.options;\r\n this.isWholeLine = Boolean(options.isWholeLine);\r\n this.stickiness = options.rangeBehavior;\r\n const lightOverviewRulerColor = options.light && options.light.overviewRulerColor || options.overviewRulerColor;\r\n const darkOverviewRulerColor = options.dark && options.dark.overviewRulerColor || options.overviewRulerColor;\r\n if (typeof lightOverviewRulerColor !== 'undefined'\r\n || typeof darkOverviewRulerColor !== 'undefined') {\r\n this.overviewRuler = {\r\n color: lightOverviewRulerColor || darkOverviewRulerColor,\r\n darkColor: darkOverviewRulerColor || lightOverviewRulerColor,\r\n position: options.overviewRulerLane || OverviewRulerLane.Center\r\n };\r\n }\r\n }\r\n getOptions(codeEditorService, writable) {\r\n if (!writable) {\r\n return this;\r\n }\r\n return {\r\n description: this.description,\r\n inlineClassName: this.inlineClassName,\r\n beforeContentClassName: this.beforeContentClassName,\r\n afterContentClassName: this.afterContentClassName,\r\n className: this.className,\r\n glyphMarginClassName: this.glyphMarginClassName,\r\n isWholeLine: this.isWholeLine,\r\n overviewRuler: this.overviewRuler,\r\n stickiness: this.stickiness,\r\n before: this.beforeInjectedText\r\n };\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._styleSheet.unref();\r\n }\r\n}\r\nexport const _CSS_MAP = {\r\n color: 'color:{0} !important;',\r\n opacity: 'opacity:{0};',\r\n backgroundColor: 'background-color:{0};',\r\n outline: 'outline:{0};',\r\n outlineColor: 'outline-color:{0};',\r\n outlineStyle: 'outline-style:{0};',\r\n outlineWidth: 'outline-width:{0};',\r\n border: 'border:{0};',\r\n borderColor: 'border-color:{0};',\r\n borderRadius: 'border-radius:{0};',\r\n borderSpacing: 'border-spacing:{0};',\r\n borderStyle: 'border-style:{0};',\r\n borderWidth: 'border-width:{0};',\r\n fontStyle: 'font-style:{0};',\r\n fontWeight: 'font-weight:{0};',\r\n fontSize: 'font-size:{0};',\r\n fontFamily: 'font-family:{0};',\r\n textDecoration: 'text-decoration:{0};',\r\n cursor: 'cursor:{0};',\r\n letterSpacing: 'letter-spacing:{0};',\r\n gutterIconPath: 'background:{0} center center no-repeat;',\r\n gutterIconSize: 'background-size:{0};',\r\n contentText: 'content:\\'{0}\\';',\r\n contentIconPath: 'content:{0};',\r\n margin: 'margin:{0};',\r\n padding: 'padding:{0};',\r\n width: 'width:{0};',\r\n height: 'height:{0};'\r\n};\r\nclass DecorationCSSRules {\r\n constructor(ruleType, providerArgs, themeService) {\r\n this._theme = themeService.getColorTheme();\r\n this._ruleType = ruleType;\r\n this._providerArgs = providerArgs;\r\n this._usesThemeColors = false;\r\n this._hasContent = false;\r\n this._hasLetterSpacing = false;\r\n let className = CSSNameHelper.getClassName(this._providerArgs.key, ruleType);\r\n if (this._providerArgs.parentTypeKey) {\r\n className = className + ' ' + CSSNameHelper.getClassName(this._providerArgs.parentTypeKey, ruleType);\r\n }\r\n this._className = className;\r\n this._unThemedSelector = CSSNameHelper.getSelector(this._providerArgs.key, this._providerArgs.parentTypeKey, ruleType);\r\n this._buildCSS();\r\n if (this._usesThemeColors) {\r\n this._themeListener = themeService.onDidColorThemeChange(theme => {\r\n this._theme = themeService.getColorTheme();\r\n this._removeCSS();\r\n this._buildCSS();\r\n });\r\n }\r\n else {\r\n this._themeListener = null;\r\n }\r\n }\r\n dispose() {\r\n if (this._hasContent) {\r\n this._removeCSS();\r\n this._hasContent = false;\r\n }\r\n if (this._themeListener) {\r\n this._themeListener.dispose();\r\n this._themeListener = null;\r\n }\r\n }\r\n get hasContent() {\r\n return this._hasContent;\r\n }\r\n get hasLetterSpacing() {\r\n return this._hasLetterSpacing;\r\n }\r\n get className() {\r\n return this._className;\r\n }\r\n _buildCSS() {\r\n const options = this._providerArgs.options;\r\n let unthemedCSS, lightCSS, darkCSS;\r\n switch (this._ruleType) {\r\n case 0 /* ClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationClassName(options.dark);\r\n break;\r\n case 1 /* InlineClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationInlineClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationInlineClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationInlineClassName(options.dark);\r\n break;\r\n case 2 /* GlyphMarginClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options.dark);\r\n break;\r\n case 3 /* BeforeContentClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.before);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.before);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.before);\r\n break;\r\n case 4 /* AfterContentClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.after);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.after);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.after);\r\n break;\r\n case 5 /* BeforeInjectedTextClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.beforeInjectedText);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.beforeInjectedText);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.beforeInjectedText);\r\n break;\r\n case 6 /* AfterInjectedTextClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.afterInjectedText);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.afterInjectedText);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.afterInjectedText);\r\n break;\r\n default:\r\n throw new Error('Unknown rule type: ' + this._ruleType);\r\n }\r\n const sheet = this._providerArgs.styleSheet;\r\n let hasContent = false;\r\n if (unthemedCSS.length > 0) {\r\n sheet.insertRule(`${this._unThemedSelector} {${unthemedCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n if (lightCSS.length > 0) {\r\n sheet.insertRule(`.vs${this._unThemedSelector} {${lightCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n if (darkCSS.length > 0) {\r\n sheet.insertRule(`.vs-dark${this._unThemedSelector}, .hc-black${this._unThemedSelector} {${darkCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n this._hasContent = hasContent;\r\n }\r\n _removeCSS() {\r\n this._providerArgs.styleSheet.removeRulesContainingSelector(this._unThemedSelector);\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `className`.\r\n */\r\n getCSSTextForModelDecorationClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n this.collectCSSText(opts, ['backgroundColor'], cssTextArr);\r\n this.collectCSSText(opts, ['outline', 'outlineColor', 'outlineStyle', 'outlineWidth'], cssTextArr);\r\n this.collectBorderSettingsCSSText(opts, cssTextArr);\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `inlineClassName`.\r\n */\r\n getCSSTextForModelDecorationInlineClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'cursor', 'color', 'opacity', 'letterSpacing'], cssTextArr);\r\n if (opts.letterSpacing) {\r\n this._hasLetterSpacing = true;\r\n }\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled before or after content.\r\n */\r\n getCSSTextForModelDecorationContentClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n if (typeof opts !== 'undefined') {\r\n this.collectBorderSettingsCSSText(opts, cssTextArr);\r\n if (typeof opts.contentIconPath !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.contentIconPath, dom.asCSSUrl(URI.revive(opts.contentIconPath))));\r\n }\r\n if (typeof opts.contentText === 'string') {\r\n const truncated = opts.contentText.match(/^.*$/m)[0]; // only take first line\r\n const escaped = truncated.replace(/['\\\\]/g, '\\\\$&');\r\n cssTextArr.push(strings.format(_CSS_MAP.contentText, escaped));\r\n }\r\n this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textDecoration', 'color', 'opacity', 'backgroundColor', 'margin', 'padding'], cssTextArr);\r\n if (this.collectCSSText(opts, ['width', 'height'], cssTextArr)) {\r\n cssTextArr.push('display:inline-block;');\r\n }\r\n }\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `glpyhMarginClassName`.\r\n */\r\n getCSSTextForModelDecorationGlyphMarginClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n if (typeof opts.gutterIconPath !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.gutterIconPath, dom.asCSSUrl(URI.revive(opts.gutterIconPath))));\r\n if (typeof opts.gutterIconSize !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.gutterIconSize, opts.gutterIconSize));\r\n }\r\n }\r\n return cssTextArr.join('');\r\n }\r\n collectBorderSettingsCSSText(opts, cssTextArr) {\r\n if (this.collectCSSText(opts, ['border', 'borderColor', 'borderRadius', 'borderSpacing', 'borderStyle', 'borderWidth'], cssTextArr)) {\r\n cssTextArr.push(strings.format('box-sizing: border-box;'));\r\n return true;\r\n }\r\n return false;\r\n }\r\n collectCSSText(opts, properties, cssTextArr) {\r\n const lenBefore = cssTextArr.length;\r\n for (let property of properties) {\r\n const value = this.resolveValue(opts[property]);\r\n if (typeof value === 'string') {\r\n cssTextArr.push(strings.format(_CSS_MAP[property], value));\r\n }\r\n }\r\n return cssTextArr.length !== lenBefore;\r\n }\r\n resolveValue(value) {\r\n if (isThemeColor(value)) {\r\n this._usesThemeColors = true;\r\n const color = this._theme.getColor(value.id);\r\n if (color) {\r\n return color.toString();\r\n }\r\n return 'transparent';\r\n }\r\n return value;\r\n }\r\n}\r\nclass CSSNameHelper {\r\n static getClassName(key, type) {\r\n return 'ced-' + key + '-' + type;\r\n }\r\n static getSelector(key, parentKey, ruleType) {\r\n let selector = '.monaco-editor .' + this.getClassName(key, ruleType);\r\n if (parentKey) {\r\n selector = selector + '.' + this.getClassName(parentKey, ruleType);\r\n }\r\n if (ruleType === 3 /* BeforeContentClassName */) {\r\n selector += '::before';\r\n }\r\n else if (ruleType === 4 /* AfterContentClassName */) {\r\n selector += '::after';\r\n }\r\n return selector;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { windowOpenNoOpener } from '../../../base/browser/dom.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { CodeEditorServiceImpl } from '../../browser/services/codeEditorServiceImpl.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nlet StandaloneCodeEditorServiceImpl = class StandaloneCodeEditorServiceImpl extends CodeEditorServiceImpl {\r\n constructor(styleSheet, contextKeyService, themeService) {\r\n super(styleSheet, themeService);\r\n this.onCodeEditorAdd(() => this._checkContextKey());\r\n this.onCodeEditorRemove(() => this._checkContextKey());\r\n this._editorIsOpen = contextKeyService.createKey('editorIsOpen', false);\r\n this._activeCodeEditor = null;\r\n }\r\n _checkContextKey() {\r\n let hasCodeEditor = false;\r\n for (const editor of this.listCodeEditors()) {\r\n if (!editor.isSimpleWidget) {\r\n hasCodeEditor = true;\r\n break;\r\n }\r\n }\r\n this._editorIsOpen.set(hasCodeEditor);\r\n }\r\n setActiveCodeEditor(activeCodeEditor) {\r\n this._activeCodeEditor = activeCodeEditor;\r\n }\r\n getActiveCodeEditor() {\r\n return this._activeCodeEditor;\r\n }\r\n openCodeEditor(input, source, sideBySide) {\r\n if (!source) {\r\n return Promise.resolve(null);\r\n }\r\n return Promise.resolve(this.doOpenEditor(source, input));\r\n }\r\n doOpenEditor(editor, input) {\r\n const model = this.findModel(editor, input.resource);\r\n if (!model) {\r\n if (input.resource) {\r\n const schema = input.resource.scheme;\r\n if (schema === Schemas.http || schema === Schemas.https) {\r\n // This is a fully qualified http or https URL\r\n windowOpenNoOpener(input.resource.toString());\r\n return editor;\r\n }\r\n }\r\n return null;\r\n }\r\n const selection = (input.options ? input.options.selection : null);\r\n if (selection) {\r\n if (typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {\r\n editor.setSelection(selection);\r\n editor.revealRangeInCenter(selection, 1 /* Immediate */);\r\n }\r\n else {\r\n const pos = {\r\n lineNumber: selection.startLineNumber,\r\n column: selection.startColumn\r\n };\r\n editor.setPosition(pos);\r\n editor.revealPositionInCenter(pos, 1 /* Immediate */);\r\n }\r\n }\r\n return editor;\r\n }\r\n findModel(editor, resource) {\r\n const model = editor.getModel();\r\n if (model && model.uri.toString() !== resource.toString()) {\r\n return null;\r\n }\r\n return model;\r\n }\r\n};\r\nStandaloneCodeEditorServiceImpl = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, IThemeService)\r\n], StandaloneCodeEditorServiceImpl);\r\nexport { StandaloneCodeEditorServiceImpl };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as aria from '../../../base/browser/ui/aria/aria.js';\r\nimport { Disposable, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { CodeEditorWidget } from '../../browser/widget/codeEditorWidget.js';\r\nimport { DiffEditorWidget } from '../../browser/widget/diffEditorWidget.js';\r\nimport { InternalEditorAction } from '../../common/editorAction.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { StandaloneKeybindingService, updateConfigurationService } from './simpleServices.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService, IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { StandaloneCodeEditorNLS } from '../../common/standaloneStrings.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { StandaloneCodeEditorServiceImpl } from './standaloneCodeServiceImpl.js';\r\nimport { Mimes } from '../../../base/common/mime.js';\r\nlet LAST_GENERATED_COMMAND_ID = 0;\r\nlet ariaDomNodeCreated = false;\r\nfunction createAriaDomNode() {\r\n if (ariaDomNodeCreated) {\r\n return;\r\n }\r\n ariaDomNodeCreated = true;\r\n aria.setARIAContainer(document.body);\r\n}\r\n/**\r\n * A code editor to be used both by the standalone editor and the standalone diff editor.\r\n */\r\nlet StandaloneCodeEditor = class StandaloneCodeEditor extends CodeEditorWidget {\r\n constructor(domElement, _options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService) {\r\n const options = Object.assign({}, _options);\r\n options.ariaLabel = options.ariaLabel || StandaloneCodeEditorNLS.editorViewAccessibleLabel;\r\n options.ariaLabel = options.ariaLabel + ';' + (StandaloneCodeEditorNLS.accessibilityHelpMessage);\r\n super(domElement, options, {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService);\r\n if (keybindingService instanceof StandaloneKeybindingService) {\r\n this._standaloneKeybindingService = keybindingService;\r\n }\r\n else {\r\n this._standaloneKeybindingService = null;\r\n }\r\n // Create the ARIA dom node as soon as the first editor is instantiated\r\n createAriaDomNode();\r\n }\r\n addCommand(keybinding, handler, context) {\r\n if (!this._standaloneKeybindingService) {\r\n console.warn('Cannot add command because the editor is configured with an unrecognized KeybindingService');\r\n return null;\r\n }\r\n let commandId = 'DYNAMIC_' + (++LAST_GENERATED_COMMAND_ID);\r\n let whenExpression = ContextKeyExpr.deserialize(context);\r\n this._standaloneKeybindingService.addDynamicKeybinding(commandId, keybinding, handler, whenExpression);\r\n return commandId;\r\n }\r\n createContextKey(key, defaultValue) {\r\n return this._contextKeyService.createKey(key, defaultValue);\r\n }\r\n addAction(_descriptor) {\r\n if ((typeof _descriptor.id !== 'string') || (typeof _descriptor.label !== 'string') || (typeof _descriptor.run !== 'function')) {\r\n throw new Error('Invalid action descriptor, `id`, `label` and `run` are required properties!');\r\n }\r\n if (!this._standaloneKeybindingService) {\r\n console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');\r\n return Disposable.None;\r\n }\r\n // Read descriptor options\r\n const id = _descriptor.id;\r\n const label = _descriptor.label;\r\n const precondition = ContextKeyExpr.and(ContextKeyExpr.equals('editorId', this.getId()), ContextKeyExpr.deserialize(_descriptor.precondition));\r\n const keybindings = _descriptor.keybindings;\r\n const keybindingsWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(_descriptor.keybindingContext));\r\n const contextMenuGroupId = _descriptor.contextMenuGroupId || null;\r\n const contextMenuOrder = _descriptor.contextMenuOrder || 0;\r\n const run = (accessor, ...args) => {\r\n return Promise.resolve(_descriptor.run(this, ...args));\r\n };\r\n const toDispose = new DisposableStore();\r\n // Generate a unique id to allow the same descriptor.id across multiple editor instances\r\n const uniqueId = this.getId() + ':' + id;\r\n // Register the command\r\n toDispose.add(CommandsRegistry.registerCommand(uniqueId, run));\r\n // Register the context menu item\r\n if (contextMenuGroupId) {\r\n let menuItem = {\r\n command: {\r\n id: uniqueId,\r\n title: label\r\n },\r\n when: precondition,\r\n group: contextMenuGroupId,\r\n order: contextMenuOrder\r\n };\r\n toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));\r\n }\r\n // Register the keybindings\r\n if (Array.isArray(keybindings)) {\r\n for (const kb of keybindings) {\r\n toDispose.add(this._standaloneKeybindingService.addDynamicKeybinding(uniqueId, kb, run, keybindingsWhen));\r\n }\r\n }\r\n // Finally, register an internal editor action\r\n let internalAction = new InternalEditorAction(uniqueId, label, label, precondition, run, this._contextKeyService);\r\n // Store it under the original id, such that trigger with the original id will work\r\n this._actions[id] = internalAction;\r\n toDispose.add(toDisposable(() => {\r\n delete this._actions[id];\r\n }));\r\n return toDispose;\r\n }\r\n _triggerCommand(handlerId, payload) {\r\n if (this._codeEditorService instanceof StandaloneCodeEditorServiceImpl) {\r\n // Help commands find this editor as the active editor\r\n try {\r\n this._codeEditorService.setActiveCodeEditor(this);\r\n super._triggerCommand(handlerId, payload);\r\n }\r\n finally {\r\n this._codeEditorService.setActiveCodeEditor(null);\r\n }\r\n }\r\n else {\r\n super._triggerCommand(handlerId, payload);\r\n }\r\n }\r\n};\r\nStandaloneCodeEditor = __decorate([\r\n __param(2, IInstantiationService),\r\n __param(3, ICodeEditorService),\r\n __param(4, ICommandService),\r\n __param(5, IContextKeyService),\r\n __param(6, IKeybindingService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IAccessibilityService)\r\n], StandaloneCodeEditor);\r\nexport { StandaloneCodeEditor };\r\nlet StandaloneEditor = class StandaloneEditor extends StandaloneCodeEditor {\r\n constructor(domElement, _options, toDispose, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, contextViewService, themeService, notificationService, configurationService, accessibilityService, modelService, modeService) {\r\n const options = Object.assign({}, _options);\r\n updateConfigurationService(configurationService, options, false);\r\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\r\n if (typeof options.theme === 'string') {\r\n themeService.setTheme(options.theme);\r\n }\r\n if (typeof options.autoDetectHighContrast !== 'undefined') {\r\n themeService.setAutoDetectHighContrast(Boolean(options.autoDetectHighContrast));\r\n }\r\n let _model = options.model;\r\n delete options.model;\r\n super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService);\r\n this._contextViewService = contextViewService;\r\n this._configurationService = configurationService;\r\n this._standaloneThemeService = themeService;\r\n this._register(toDispose);\r\n this._register(themeDomRegistration);\r\n let model;\r\n if (typeof _model === 'undefined') {\r\n model = createTextModel(modelService, modeService, options.value || '', options.language || Mimes.text, undefined);\r\n this._ownsModel = true;\r\n }\r\n else {\r\n model = _model;\r\n this._ownsModel = false;\r\n }\r\n this._attachModel(model);\r\n if (model) {\r\n let e = {\r\n oldModelUrl: null,\r\n newModelUrl: model.uri\r\n };\r\n this._onDidChangeModel.fire(e);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n updateOptions(newOptions) {\r\n updateConfigurationService(this._configurationService, newOptions, false);\r\n if (typeof newOptions.theme === 'string') {\r\n this._standaloneThemeService.setTheme(newOptions.theme);\r\n }\r\n if (typeof newOptions.autoDetectHighContrast !== 'undefined') {\r\n this._standaloneThemeService.setAutoDetectHighContrast(Boolean(newOptions.autoDetectHighContrast));\r\n }\r\n super.updateOptions(newOptions);\r\n }\r\n _attachModel(model) {\r\n super._attachModel(model);\r\n if (this._modelData) {\r\n this._contextViewService.setContainer(this._modelData.view.domNode.domNode);\r\n }\r\n }\r\n _postDetachModelCleanup(detachedModel) {\r\n super._postDetachModelCleanup(detachedModel);\r\n if (detachedModel && this._ownsModel) {\r\n detachedModel.dispose();\r\n this._ownsModel = false;\r\n }\r\n }\r\n};\r\nStandaloneEditor = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, ICodeEditorService),\r\n __param(5, ICommandService),\r\n __param(6, IContextKeyService),\r\n __param(7, IKeybindingService),\r\n __param(8, IContextViewService),\r\n __param(9, IStandaloneThemeService),\r\n __param(10, INotificationService),\r\n __param(11, IConfigurationService),\r\n __param(12, IAccessibilityService),\r\n __param(13, IModelService),\r\n __param(14, IModeService)\r\n], StandaloneEditor);\r\nexport { StandaloneEditor };\r\nlet StandaloneDiffEditor = class StandaloneDiffEditor extends DiffEditorWidget {\r\n constructor(domElement, _options, toDispose, instantiationService, contextKeyService, keybindingService, contextViewService, editorWorkerService, codeEditorService, themeService, notificationService, configurationService, contextMenuService, editorProgressService, clipboardService) {\r\n const options = Object.assign({}, _options);\r\n updateConfigurationService(configurationService, options, true);\r\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\r\n if (typeof options.theme === 'string') {\r\n themeService.setTheme(options.theme);\r\n }\r\n if (typeof options.autoDetectHighContrast !== 'undefined') {\r\n themeService.setAutoDetectHighContrast(Boolean(options.autoDetectHighContrast));\r\n }\r\n super(domElement, options, {}, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);\r\n this._contextViewService = contextViewService;\r\n this._configurationService = configurationService;\r\n this._standaloneThemeService = themeService;\r\n this._register(toDispose);\r\n this._register(themeDomRegistration);\r\n this._contextViewService.setContainer(this._containerDomElement);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n updateOptions(newOptions) {\r\n updateConfigurationService(this._configurationService, newOptions, true);\r\n if (typeof newOptions.theme === 'string') {\r\n this._standaloneThemeService.setTheme(newOptions.theme);\r\n }\r\n if (typeof newOptions.autoDetectHighContrast !== 'undefined') {\r\n this._standaloneThemeService.setAutoDetectHighContrast(Boolean(newOptions.autoDetectHighContrast));\r\n }\r\n super.updateOptions(newOptions);\r\n }\r\n _createInnerEditor(instantiationService, container, options) {\r\n return instantiationService.createInstance(StandaloneCodeEditor, container, options);\r\n }\r\n getOriginalEditor() {\r\n return super.getOriginalEditor();\r\n }\r\n getModifiedEditor() {\r\n return super.getModifiedEditor();\r\n }\r\n addCommand(keybinding, handler, context) {\r\n return this.getModifiedEditor().addCommand(keybinding, handler, context);\r\n }\r\n createContextKey(key, defaultValue) {\r\n return this.getModifiedEditor().createContextKey(key, defaultValue);\r\n }\r\n addAction(descriptor) {\r\n return this.getModifiedEditor().addAction(descriptor);\r\n }\r\n};\r\nStandaloneDiffEditor = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, IContextKeyService),\r\n __param(5, IKeybindingService),\r\n __param(6, IContextViewService),\r\n __param(7, IEditorWorkerService),\r\n __param(8, ICodeEditorService),\r\n __param(9, IStandaloneThemeService),\r\n __param(10, INotificationService),\r\n __param(11, IConfigurationService),\r\n __param(12, IContextMenuService),\r\n __param(13, IEditorProgressService),\r\n __param(14, IClipboardService)\r\n], StandaloneDiffEditor);\r\nexport { StandaloneDiffEditor };\r\n/**\r\n * @internal\r\n */\r\nexport function createTextModel(modelService, modeService, value, language, uri) {\r\n value = value || '';\r\n if (!language) {\r\n const firstLF = value.indexOf('\\n');\r\n let firstLine = value;\r\n if (firstLF !== -1) {\r\n firstLine = value.substring(0, firstLF);\r\n }\r\n return doCreateModel(modelService, value, modeService.createByFilepathOrFirstLine(uri || null, firstLine), uri);\r\n }\r\n return doCreateModel(modelService, value, modeService.create(language), uri);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction doCreateModel(modelService, value, languageSelection, uri) {\r\n return modelService.createModel(value, languageSelection, uri);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class FrankensteinMode {\r\n constructor(languageIdentifier) {\r\n this._languageIdentifier = languageIdentifier;\r\n }\r\n getId() {\r\n return this._languageIdentifier.language;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as mime from '../../../base/common/mime.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nimport { ModesRegistry } from '../modes/modesRegistry.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER, NULL_MODE_ID } from '../modes/nullMode.js';\r\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport class LanguagesRegistry extends Disposable {\r\n constructor(useModesRegistry = true, warnOnOverwrite = false) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._warnOnOverwrite = warnOnOverwrite;\r\n this._nextLanguageId2 = 1;\r\n this._languageIdToLanguage = [];\r\n this._languageToLanguageId = Object.create(null);\r\n this._languages = {};\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n if (useModesRegistry) {\r\n this._initializeFromRegistry();\r\n this._register(ModesRegistry.onDidChangeLanguages((m) => this._initializeFromRegistry()));\r\n }\r\n }\r\n _initializeFromRegistry() {\r\n this._languages = {};\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n const desc = ModesRegistry.getLanguages();\r\n this._registerLanguages(desc);\r\n }\r\n _registerLanguages(desc) {\r\n for (const d of desc) {\r\n this._registerLanguage(d);\r\n }\r\n // Rebuild fast path maps\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n Object.keys(this._languages).forEach((langId) => {\r\n let language = this._languages[langId];\r\n if (language.name) {\r\n this._nameMap[language.name] = language.identifier;\r\n }\r\n language.aliases.forEach((alias) => {\r\n this._lowercaseNameMap[alias.toLowerCase()] = language.identifier;\r\n });\r\n language.mimetypes.forEach((mimetype) => {\r\n this._mimeTypesMap[mimetype] = language.identifier;\r\n });\r\n });\r\n Registry.as(Extensions.Configuration).registerOverrideIdentifiers(ModesRegistry.getLanguages().map(language => language.id));\r\n this._onDidChange.fire();\r\n }\r\n _getLanguageId(language) {\r\n if (this._languageToLanguageId[language]) {\r\n return this._languageToLanguageId[language];\r\n }\r\n const languageId = this._nextLanguageId2++;\r\n this._languageIdToLanguage[languageId] = language;\r\n this._languageToLanguageId[language] = languageId;\r\n return languageId;\r\n }\r\n _registerLanguage(lang) {\r\n const langId = lang.id;\r\n let resolvedLanguage;\r\n if (hasOwnProperty.call(this._languages, langId)) {\r\n resolvedLanguage = this._languages[langId];\r\n }\r\n else {\r\n const languageId = this._getLanguageId(langId);\r\n resolvedLanguage = {\r\n identifier: new LanguageIdentifier(langId, languageId),\r\n name: null,\r\n mimetypes: [],\r\n aliases: [],\r\n extensions: [],\r\n filenames: [],\r\n configurationFiles: []\r\n };\r\n this._languages[langId] = resolvedLanguage;\r\n }\r\n this._mergeLanguage(resolvedLanguage, lang);\r\n }\r\n _mergeLanguage(resolvedLanguage, lang) {\r\n const langId = lang.id;\r\n let primaryMime = null;\r\n if (Array.isArray(lang.mimetypes) && lang.mimetypes.length > 0) {\r\n resolvedLanguage.mimetypes.push(...lang.mimetypes);\r\n primaryMime = lang.mimetypes[0];\r\n }\r\n if (!primaryMime) {\r\n primaryMime = `text/x-${langId}`;\r\n resolvedLanguage.mimetypes.push(primaryMime);\r\n }\r\n if (Array.isArray(lang.extensions)) {\r\n if (lang.configuration) {\r\n // insert first as this appears to be the 'primary' language definition\r\n resolvedLanguage.extensions = lang.extensions.concat(resolvedLanguage.extensions);\r\n }\r\n else {\r\n resolvedLanguage.extensions = resolvedLanguage.extensions.concat(lang.extensions);\r\n }\r\n for (let extension of lang.extensions) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, extension: extension }, this._warnOnOverwrite);\r\n }\r\n }\r\n if (Array.isArray(lang.filenames)) {\r\n for (let filename of lang.filenames) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, filename: filename }, this._warnOnOverwrite);\r\n resolvedLanguage.filenames.push(filename);\r\n }\r\n }\r\n if (Array.isArray(lang.filenamePatterns)) {\r\n for (let filenamePattern of lang.filenamePatterns) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, filepattern: filenamePattern }, this._warnOnOverwrite);\r\n }\r\n }\r\n if (typeof lang.firstLine === 'string' && lang.firstLine.length > 0) {\r\n let firstLineRegexStr = lang.firstLine;\r\n if (firstLineRegexStr.charAt(0) !== '^') {\r\n firstLineRegexStr = '^' + firstLineRegexStr;\r\n }\r\n try {\r\n let firstLineRegex = new RegExp(firstLineRegexStr);\r\n if (!strings.regExpLeadsToEndlessLoop(firstLineRegex)) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, firstline: firstLineRegex }, this._warnOnOverwrite);\r\n }\r\n }\r\n catch (err) {\r\n // Most likely, the regex was bad\r\n onUnexpectedError(err);\r\n }\r\n }\r\n resolvedLanguage.aliases.push(langId);\r\n let langAliases = null;\r\n if (typeof lang.aliases !== 'undefined' && Array.isArray(lang.aliases)) {\r\n if (lang.aliases.length === 0) {\r\n // signal that this language should not get a name\r\n langAliases = [null];\r\n }\r\n else {\r\n langAliases = lang.aliases;\r\n }\r\n }\r\n if (langAliases !== null) {\r\n for (const langAlias of langAliases) {\r\n if (!langAlias || langAlias.length === 0) {\r\n continue;\r\n }\r\n resolvedLanguage.aliases.push(langAlias);\r\n }\r\n }\r\n let containsAliases = (langAliases !== null && langAliases.length > 0);\r\n if (containsAliases && langAliases[0] === null) {\r\n // signal that this language should not get a name\r\n }\r\n else {\r\n let bestName = (containsAliases ? langAliases[0] : null) || langId;\r\n if (containsAliases || !resolvedLanguage.name) {\r\n resolvedLanguage.name = bestName;\r\n }\r\n }\r\n if (lang.configuration) {\r\n resolvedLanguage.configurationFiles.push(lang.configuration);\r\n }\r\n }\r\n isRegisteredMode(mimetypeOrModeId) {\r\n // Is this a known mime type ?\r\n if (hasOwnProperty.call(this._mimeTypesMap, mimetypeOrModeId)) {\r\n return true;\r\n }\r\n // Is this a known mode id ?\r\n return hasOwnProperty.call(this._languages, mimetypeOrModeId);\r\n }\r\n getModeIdForLanguageNameLowercase(languageNameLower) {\r\n if (!hasOwnProperty.call(this._lowercaseNameMap, languageNameLower)) {\r\n return null;\r\n }\r\n return this._lowercaseNameMap[languageNameLower].language;\r\n }\r\n extractModeIds(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n if (!commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n return [];\r\n }\r\n return (commaSeparatedMimetypesOrCommaSeparatedIds.\r\n split(',').\r\n map((mimeTypeOrId) => mimeTypeOrId.trim()).\r\n map((mimeTypeOrId) => {\r\n if (hasOwnProperty.call(this._mimeTypesMap, mimeTypeOrId)) {\r\n return this._mimeTypesMap[mimeTypeOrId].language;\r\n }\r\n return mimeTypeOrId;\r\n }).\r\n filter((modeId) => {\r\n return hasOwnProperty.call(this._languages, modeId);\r\n }));\r\n }\r\n getLanguageIdentifier(_modeId) {\r\n if (_modeId === NULL_MODE_ID || _modeId === 0 /* Null */) {\r\n return NULL_LANGUAGE_IDENTIFIER;\r\n }\r\n let modeId;\r\n if (typeof _modeId === 'string') {\r\n modeId = _modeId;\r\n }\r\n else {\r\n modeId = this._languageIdToLanguage[_modeId];\r\n if (!modeId) {\r\n return null;\r\n }\r\n }\r\n if (!hasOwnProperty.call(this._languages, modeId)) {\r\n return null;\r\n }\r\n return this._languages[modeId].identifier;\r\n }\r\n getModeIdsFromFilepathOrFirstLine(resource, firstLine) {\r\n if (!resource && !firstLine) {\r\n return [];\r\n }\r\n let mimeTypes = mime.guessMimeTypes(resource, firstLine);\r\n return this.extractModeIds(mimeTypes.join(','));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { FrankensteinMode } from '../modes/abstractMode.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER } from '../modes/nullMode.js';\r\nimport { LanguagesRegistry } from './languagesRegistry.js';\r\nimport { firstOrDefault } from '../../../base/common/arrays.js';\r\nclass LanguageSelection {\r\n constructor(onLanguagesMaybeChanged, selector) {\r\n this._selector = selector;\r\n this.languageIdentifier = this._selector();\r\n let listener;\r\n this._onDidChange = new Emitter({\r\n onFirstListenerAdd: () => {\r\n listener = onLanguagesMaybeChanged(() => this._evaluate());\r\n },\r\n onLastListenerRemove: () => {\r\n listener.dispose();\r\n }\r\n });\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n _evaluate() {\r\n let languageIdentifier = this._selector();\r\n if (languageIdentifier.id === this.languageIdentifier.id) {\r\n // no change\r\n return;\r\n }\r\n this.languageIdentifier = languageIdentifier;\r\n this._onDidChange.fire(this.languageIdentifier);\r\n }\r\n}\r\nexport class ModeServiceImpl extends Disposable {\r\n constructor(warnOnOverwrite = false) {\r\n super();\r\n this._onDidCreateMode = this._register(new Emitter());\r\n this.onDidCreateMode = this._onDidCreateMode.event;\r\n this._onLanguagesMaybeChanged = this._register(new Emitter({ leakWarningThreshold: 200 /* https://github.com/microsoft/vscode/issues/119968 */ }));\r\n this.onLanguagesMaybeChanged = this._onLanguagesMaybeChanged.event;\r\n this._instantiatedModes = {};\r\n this._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\r\n this._register(this._registry.onDidChange(() => this._onLanguagesMaybeChanged.fire()));\r\n }\r\n isRegisteredMode(mimetypeOrModeId) {\r\n return this._registry.isRegisteredMode(mimetypeOrModeId);\r\n }\r\n getModeIdForLanguageName(alias) {\r\n return this._registry.getModeIdForLanguageNameLowercase(alias);\r\n }\r\n getModeIdByFilepathOrFirstLine(resource, firstLine) {\r\n const modeIds = this._registry.getModeIdsFromFilepathOrFirstLine(resource, firstLine);\r\n return firstOrDefault(modeIds, null);\r\n }\r\n getModeId(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n const modeIds = this._registry.extractModeIds(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n return firstOrDefault(modeIds, null);\r\n }\r\n getLanguageIdentifier(modeId) {\r\n return this._registry.getLanguageIdentifier(modeId);\r\n }\r\n // --- instantiation\r\n create(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n return new LanguageSelection(this.onLanguagesMaybeChanged, () => {\r\n const modeId = this.getModeId(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n return this._createModeAndGetLanguageIdentifier(modeId);\r\n });\r\n }\r\n createByFilepathOrFirstLine(resource, firstLine) {\r\n return new LanguageSelection(this.onLanguagesMaybeChanged, () => {\r\n const modeId = this.getModeIdByFilepathOrFirstLine(resource, firstLine);\r\n return this._createModeAndGetLanguageIdentifier(modeId);\r\n });\r\n }\r\n _createModeAndGetLanguageIdentifier(modeId) {\r\n // Fall back to plain text if no mode was found\r\n const languageIdentifier = this.getLanguageIdentifier(modeId || 'plaintext') || NULL_LANGUAGE_IDENTIFIER;\r\n this._getOrCreateMode(languageIdentifier.language);\r\n return languageIdentifier;\r\n }\r\n triggerMode(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n const modeId = this.getModeId(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n // Fall back to plain text if no mode was found\r\n this._getOrCreateMode(modeId || 'plaintext');\r\n }\r\n _getOrCreateMode(modeId) {\r\n if (!this._instantiatedModes.hasOwnProperty(modeId)) {\r\n let languageIdentifier = this.getLanguageIdentifier(modeId) || NULL_LANGUAGE_IDENTIFIER;\r\n this._instantiatedModes[modeId] = new FrankensteinMode(languageIdentifier);\r\n this._onDidCreateMode.fire(this._instantiatedModes[modeId]);\r\n }\r\n return this._instantiatedModes[modeId];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TokenMetadata } from '../modes.js';\r\nimport { LogLevel } from '../../../platform/log/common/log.js';\r\nimport { MultilineTokens2, SparseEncodedTokens } from '../model/tokensStore.js';\r\nexport class SemanticTokensProviderStyling {\r\n constructor(_legend, _themeService, _logService) {\r\n this._legend = _legend;\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._hashTable = new HashTable();\r\n this._hasWarnedOverlappingTokens = false;\r\n }\r\n getMetadata(tokenTypeIndex, tokenModifierSet, languageId) {\r\n const entry = this._hashTable.get(tokenTypeIndex, tokenModifierSet, languageId.id);\r\n let metadata;\r\n if (entry) {\r\n metadata = entry.metadata;\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${tokenTypeIndex} / ${tokenModifierSet}: foreground ${TokenMetadata.getForeground(metadata)}, fontStyle ${TokenMetadata.getFontStyle(metadata).toString(2)}`);\r\n }\r\n }\r\n else {\r\n let tokenType = this._legend.tokenTypes[tokenTypeIndex];\r\n const tokenModifiers = [];\r\n if (tokenType) {\r\n let modifierSet = tokenModifierSet;\r\n for (let modifierIndex = 0; modifierSet > 0 && modifierIndex < this._legend.tokenModifiers.length; modifierIndex++) {\r\n if (modifierSet & 1) {\r\n tokenModifiers.push(this._legend.tokenModifiers[modifierIndex]);\r\n }\r\n modifierSet = modifierSet >> 1;\r\n }\r\n if (modifierSet > 0 && this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${tokenModifierSet.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`);\r\n tokenModifiers.push('not-in-legend');\r\n }\r\n const tokenStyle = this._themeService.getColorTheme().getTokenStyleMetadata(tokenType, tokenModifiers, languageId.language);\r\n if (typeof tokenStyle === 'undefined') {\r\n metadata = 2147483647 /* NO_STYLING */;\r\n }\r\n else {\r\n metadata = 0;\r\n if (typeof tokenStyle.italic !== 'undefined') {\r\n const italicBit = (tokenStyle.italic ? 1 /* Italic */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= italicBit | 1 /* SEMANTIC_USE_ITALIC */;\r\n }\r\n if (typeof tokenStyle.bold !== 'undefined') {\r\n const boldBit = (tokenStyle.bold ? 2 /* Bold */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= boldBit | 2 /* SEMANTIC_USE_BOLD */;\r\n }\r\n if (typeof tokenStyle.underline !== 'undefined') {\r\n const underlineBit = (tokenStyle.underline ? 4 /* Underline */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= underlineBit | 4 /* SEMANTIC_USE_UNDERLINE */;\r\n }\r\n if (tokenStyle.foreground) {\r\n const foregroundBits = (tokenStyle.foreground) << 14 /* FOREGROUND_OFFSET */;\r\n metadata |= foregroundBits | 8 /* SEMANTIC_USE_FOREGROUND */;\r\n }\r\n if (metadata === 0) {\r\n // Nothing!\r\n metadata = 2147483647 /* NO_STYLING */;\r\n }\r\n }\r\n }\r\n else {\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${tokenTypeIndex} for legend: ${JSON.stringify(this._legend.tokenTypes)}`);\r\n }\r\n metadata = 2147483647 /* NO_STYLING */;\r\n tokenType = 'not-in-legend';\r\n }\r\n this._hashTable.add(tokenTypeIndex, tokenModifierSet, languageId.id, metadata);\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling ${tokenTypeIndex} (${tokenType}) / ${tokenModifierSet} (${tokenModifiers.join(' ')}): foreground ${TokenMetadata.getForeground(metadata)}, fontStyle ${TokenMetadata.getFontStyle(metadata).toString(2)}`);\r\n }\r\n }\r\n return metadata;\r\n }\r\n warnOverlappingSemanticTokens(lineNumber, startColumn) {\r\n if (!this._hasWarnedOverlappingTokens) {\r\n this._hasWarnedOverlappingTokens = true;\r\n console.warn(`Overlapping semantic tokens detected at lineNumber ${lineNumber}, column ${startColumn}`);\r\n }\r\n }\r\n}\r\nexport function toMultilineTokens2(tokens, styling, languageId) {\r\n const srcData = tokens.data;\r\n const tokenCount = (tokens.data.length / 5) | 0;\r\n const tokensPerArea = Math.max(Math.ceil(tokenCount / 1024 /* DesiredMaxAreas */), 400 /* DesiredTokensPerArea */);\r\n const result = [];\r\n let tokenIndex = 0;\r\n let lastLineNumber = 1;\r\n let lastStartCharacter = 0;\r\n while (tokenIndex < tokenCount) {\r\n const tokenStartIndex = tokenIndex;\r\n let tokenEndIndex = Math.min(tokenStartIndex + tokensPerArea, tokenCount);\r\n // Keep tokens on the same line in the same area...\r\n if (tokenEndIndex < tokenCount) {\r\n let smallTokenEndIndex = tokenEndIndex;\r\n while (smallTokenEndIndex - 1 > tokenStartIndex && srcData[5 * smallTokenEndIndex] === 0) {\r\n smallTokenEndIndex--;\r\n }\r\n if (smallTokenEndIndex - 1 === tokenStartIndex) {\r\n // there are so many tokens on this line that our area would be empty, we must now go right\r\n let bigTokenEndIndex = tokenEndIndex;\r\n while (bigTokenEndIndex + 1 < tokenCount && srcData[5 * bigTokenEndIndex] === 0) {\r\n bigTokenEndIndex++;\r\n }\r\n tokenEndIndex = bigTokenEndIndex;\r\n }\r\n else {\r\n tokenEndIndex = smallTokenEndIndex;\r\n }\r\n }\r\n let destData = new Uint32Array((tokenEndIndex - tokenStartIndex) * 4);\r\n let destOffset = 0;\r\n let areaLine = 0;\r\n let prevLineNumber = 0;\r\n let prevStartCharacter = 0;\r\n let prevEndCharacter = 0;\r\n while (tokenIndex < tokenEndIndex) {\r\n const srcOffset = 5 * tokenIndex;\r\n const deltaLine = srcData[srcOffset];\r\n const deltaCharacter = srcData[srcOffset + 1];\r\n const lineNumber = lastLineNumber + deltaLine;\r\n const startCharacter = (deltaLine === 0 ? lastStartCharacter + deltaCharacter : deltaCharacter);\r\n const length = srcData[srcOffset + 2];\r\n const tokenTypeIndex = srcData[srcOffset + 3];\r\n const tokenModifierSet = srcData[srcOffset + 4];\r\n const metadata = styling.getMetadata(tokenTypeIndex, tokenModifierSet, languageId);\r\n if (metadata !== 2147483647 /* NO_STYLING */) {\r\n if (areaLine === 0) {\r\n areaLine = lineNumber;\r\n }\r\n if (prevLineNumber === lineNumber && prevEndCharacter > startCharacter) {\r\n styling.warnOverlappingSemanticTokens(lineNumber, startCharacter + 1);\r\n if (prevStartCharacter < startCharacter) {\r\n // the previous token survives after the overlapping one\r\n destData[destOffset - 4 + 2] = startCharacter;\r\n }\r\n else {\r\n // the previous token is entirely covered by the overlapping one\r\n destOffset -= 4;\r\n }\r\n }\r\n destData[destOffset] = lineNumber - areaLine;\r\n destData[destOffset + 1] = startCharacter;\r\n destData[destOffset + 2] = startCharacter + length;\r\n destData[destOffset + 3] = metadata;\r\n destOffset += 4;\r\n prevLineNumber = lineNumber;\r\n prevStartCharacter = startCharacter;\r\n prevEndCharacter = startCharacter + length;\r\n }\r\n lastLineNumber = lineNumber;\r\n lastStartCharacter = startCharacter;\r\n tokenIndex++;\r\n }\r\n if (destOffset !== destData.length) {\r\n destData = destData.subarray(0, destOffset);\r\n }\r\n const tokens = new MultilineTokens2(areaLine, new SparseEncodedTokens(destData));\r\n result.push(tokens);\r\n }\r\n return result;\r\n}\r\nclass HashTableEntry {\r\n constructor(tokenTypeIndex, tokenModifierSet, languageId, metadata) {\r\n this.tokenTypeIndex = tokenTypeIndex;\r\n this.tokenModifierSet = tokenModifierSet;\r\n this.languageId = languageId;\r\n this.metadata = metadata;\r\n this.next = null;\r\n }\r\n}\r\nclass HashTable {\r\n constructor() {\r\n this._elementsCount = 0;\r\n this._currentLengthIndex = 0;\r\n this._currentLength = HashTable._SIZES[this._currentLengthIndex];\r\n this._growCount = Math.round(this._currentLengthIndex + 1 < HashTable._SIZES.length ? 2 / 3 * this._currentLength : 0);\r\n this._elements = [];\r\n HashTable._nullOutEntries(this._elements, this._currentLength);\r\n }\r\n static _nullOutEntries(entries, length) {\r\n for (let i = 0; i < length; i++) {\r\n entries[i] = null;\r\n }\r\n }\r\n _hash2(n1, n2) {\r\n return (((n1 << 5) - n1) + n2) | 0; // n1 * 31 + n2, keep as int32\r\n }\r\n _hashFunc(tokenTypeIndex, tokenModifierSet, languageId) {\r\n return this._hash2(this._hash2(tokenTypeIndex, tokenModifierSet), languageId) % this._currentLength;\r\n }\r\n get(tokenTypeIndex, tokenModifierSet, languageId) {\r\n const hash = this._hashFunc(tokenTypeIndex, tokenModifierSet, languageId);\r\n let p = this._elements[hash];\r\n while (p) {\r\n if (p.tokenTypeIndex === tokenTypeIndex && p.tokenModifierSet === tokenModifierSet && p.languageId === languageId) {\r\n return p;\r\n }\r\n p = p.next;\r\n }\r\n return null;\r\n }\r\n add(tokenTypeIndex, tokenModifierSet, languageId, metadata) {\r\n this._elementsCount++;\r\n if (this._growCount !== 0 && this._elementsCount >= this._growCount) {\r\n // expand!\r\n const oldElements = this._elements;\r\n this._currentLengthIndex++;\r\n this._currentLength = HashTable._SIZES[this._currentLengthIndex];\r\n this._growCount = Math.round(this._currentLengthIndex + 1 < HashTable._SIZES.length ? 2 / 3 * this._currentLength : 0);\r\n this._elements = [];\r\n HashTable._nullOutEntries(this._elements, this._currentLength);\r\n for (const first of oldElements) {\r\n let p = first;\r\n while (p) {\r\n const oldNext = p.next;\r\n p.next = null;\r\n this._add(p);\r\n p = oldNext;\r\n }\r\n }\r\n }\r\n this._add(new HashTableEntry(tokenTypeIndex, tokenModifierSet, languageId, metadata));\r\n }\r\n _add(element) {\r\n const hash = this._hashFunc(element.tokenTypeIndex, element.tokenModifierSet, element.languageId);\r\n element.next = this._elements[hash];\r\n this._elements[hash] = element;\r\n }\r\n}\r\nHashTable._SIZES = [3, 7, 13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521, 131071, 262139, 524287, 1048573, 2097143];\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { VSBuffer } from '../../../base/common/buffer.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nfunction reverseEndianness(arr) {\r\n for (let i = 0, len = arr.length; i < len; i += 4) {\r\n // flip bytes 0<->3 and 1<->2\r\n const b0 = arr[i + 0];\r\n const b1 = arr[i + 1];\r\n const b2 = arr[i + 2];\r\n const b3 = arr[i + 3];\r\n arr[i + 0] = b3;\r\n arr[i + 1] = b2;\r\n arr[i + 2] = b1;\r\n arr[i + 3] = b0;\r\n }\r\n}\r\nfunction toLittleEndianBuffer(arr) {\r\n const uint8Arr = new Uint8Array(arr.buffer, arr.byteOffset, arr.length * 4);\r\n if (!platform.isLittleEndian()) {\r\n // the byte order must be changed\r\n reverseEndianness(uint8Arr);\r\n }\r\n return VSBuffer.wrap(uint8Arr);\r\n}\r\nexport function encodeSemanticTokensDto(semanticTokens) {\r\n const dest = new Uint32Array(encodeSemanticTokensDtoSize(semanticTokens));\r\n let offset = 0;\r\n dest[offset++] = semanticTokens.id;\r\n if (semanticTokens.type === 'full') {\r\n dest[offset++] = 1 /* Full */;\r\n dest[offset++] = semanticTokens.data.length;\r\n dest.set(semanticTokens.data, offset);\r\n offset += semanticTokens.data.length;\r\n }\r\n else {\r\n dest[offset++] = 2 /* Delta */;\r\n dest[offset++] = semanticTokens.deltas.length;\r\n for (const delta of semanticTokens.deltas) {\r\n dest[offset++] = delta.start;\r\n dest[offset++] = delta.deleteCount;\r\n if (delta.data) {\r\n dest[offset++] = delta.data.length;\r\n dest.set(delta.data, offset);\r\n offset += delta.data.length;\r\n }\r\n else {\r\n dest[offset++] = 0;\r\n }\r\n }\r\n }\r\n return toLittleEndianBuffer(dest);\r\n}\r\nfunction encodeSemanticTokensDtoSize(semanticTokens) {\r\n let result = 0;\r\n result += (+1 // id\r\n + 1 // type\r\n );\r\n if (semanticTokens.type === 'full') {\r\n result += (+1 // data length\r\n + semanticTokens.data.length);\r\n }\r\n else {\r\n result += (+1 // delta count\r\n );\r\n result += (+1 // start\r\n + 1 // deleteCount\r\n + 1 // data length\r\n ) * semanticTokens.deltas.length;\r\n for (const delta of semanticTokens.deltas) {\r\n if (delta.data) {\r\n result += delta.data.length;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { DocumentSemanticTokensProviderRegistry, DocumentRangeSemanticTokensProviderRegistry } from '../modes.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { encodeSemanticTokensDto } from './semanticTokensDto.js';\r\nimport { Range } from '../core/range.js';\r\nexport function isSemanticTokens(v) {\r\n return v && !!(v.data);\r\n}\r\nexport function isSemanticTokensEdits(v) {\r\n return v && Array.isArray(v.edits);\r\n}\r\nexport function getDocumentSemanticTokens(model, lastResultId, token) {\r\n const provider = _getDocumentSemanticTokensProvider(model);\r\n if (!provider) {\r\n return null;\r\n }\r\n return {\r\n provider: provider,\r\n request: Promise.resolve(provider.provideDocumentSemanticTokens(model, lastResultId, token))\r\n };\r\n}\r\nfunction _getDocumentSemanticTokensProvider(model) {\r\n const result = DocumentSemanticTokensProviderRegistry.ordered(model);\r\n return (result.length > 0 ? result[0] : null);\r\n}\r\nexport function getDocumentRangeSemanticTokensProvider(model) {\r\n const result = DocumentRangeSemanticTokensProviderRegistry.ordered(model);\r\n return (result.length > 0 ? result[0] : null);\r\n}\r\nCommandsRegistry.registerCommand('_provideDocumentSemanticTokensLegend', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri] = args;\r\n assertType(uri instanceof URI);\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return undefined;\r\n }\r\n const provider = _getDocumentSemanticTokensProvider(model);\r\n if (!provider) {\r\n // there is no provider => fall back to a document range semantic tokens provider\r\n return accessor.get(ICommandService).executeCommand('_provideDocumentRangeSemanticTokensLegend', uri);\r\n }\r\n return provider.getLegend();\r\n}));\r\nCommandsRegistry.registerCommand('_provideDocumentSemanticTokens', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri] = args;\r\n assertType(uri instanceof URI);\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return undefined;\r\n }\r\n const r = getDocumentSemanticTokens(model, null, CancellationToken.None);\r\n if (!r) {\r\n // there is no provider => fall back to a document range semantic tokens provider\r\n return accessor.get(ICommandService).executeCommand('_provideDocumentRangeSemanticTokens', uri, model.getFullModelRange());\r\n }\r\n const { provider, request } = r;\r\n let result;\r\n try {\r\n result = yield request;\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n }\r\n if (!result || !isSemanticTokens(result)) {\r\n return undefined;\r\n }\r\n const buff = encodeSemanticTokensDto({\r\n id: 0,\r\n type: 'full',\r\n data: result.data\r\n });\r\n if (result.resultId) {\r\n provider.releaseDocumentSemanticTokens(result.resultId);\r\n }\r\n return buff;\r\n}));\r\nCommandsRegistry.registerCommand('_provideDocumentRangeSemanticTokensLegend', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri] = args;\r\n assertType(uri instanceof URI);\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return undefined;\r\n }\r\n const provider = getDocumentRangeSemanticTokensProvider(model);\r\n if (!provider) {\r\n return undefined;\r\n }\r\n return provider.getLegend();\r\n}));\r\nCommandsRegistry.registerCommand('_provideDocumentRangeSemanticTokens', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri, range] = args;\r\n assertType(uri instanceof URI);\r\n assertType(Range.isIRange(range));\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return undefined;\r\n }\r\n const provider = getDocumentRangeSemanticTokensProvider(model);\r\n if (!provider) {\r\n // there is no provider\r\n return undefined;\r\n }\r\n let result;\r\n try {\r\n result = yield provider.provideDocumentRangeSemanticTokens(model, Range.lift(range), CancellationToken.None);\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n }\r\n if (!result || !isSemanticTokens(result)) {\r\n return undefined;\r\n }\r\n return encodeSemanticTokensDto({\r\n id: 0,\r\n type: 'full',\r\n data: result.data\r\n });\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, DisposableStore, dispose } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as errors from '../../../base/common/errors.js';\r\nimport { EDITOR_MODEL_DEFAULTS } from '../config/editorOptions.js';\r\nimport { TextModel } from '../model/textModel.js';\r\nimport { DocumentSemanticTokensProviderRegistry } from '../modes.js';\r\nimport { PLAINTEXT_LANGUAGE_IDENTIFIER } from '../modes/modesRegistry.js';\r\nimport { ITextResourcePropertiesService } from './textResourceConfigurationService.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { IUndoRedoService } from '../../../platform/undoRedo/common/undoRedo.js';\r\nimport { StringSHA1 } from '../../../base/common/hash.js';\r\nimport { isEditStackElement } from '../model/editStack.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { SemanticTokensProviderStyling, toMultilineTokens2 } from './semanticTokensProviderStyling.js';\r\nimport { getDocumentSemanticTokens, isSemanticTokens, isSemanticTokensEdits } from './getSemanticTokens.js';\r\nfunction MODEL_ID(resource) {\r\n return resource.toString();\r\n}\r\nfunction computeModelSha1(model) {\r\n // compute the sha1\r\n const shaComputer = new StringSHA1();\r\n const snapshot = model.createSnapshot();\r\n let text;\r\n while ((text = snapshot.read())) {\r\n shaComputer.update(text);\r\n }\r\n return shaComputer.digest();\r\n}\r\nclass ModelData {\r\n constructor(model, onWillDispose, onDidChangeLanguage) {\r\n this._modelEventListeners = new DisposableStore();\r\n this.model = model;\r\n this._languageSelection = null;\r\n this._languageSelectionListener = null;\r\n this._modelEventListeners.add(model.onWillDispose(() => onWillDispose(model)));\r\n this._modelEventListeners.add(model.onDidChangeLanguage((e) => onDidChangeLanguage(model, e)));\r\n }\r\n _disposeLanguageSelection() {\r\n if (this._languageSelectionListener) {\r\n this._languageSelectionListener.dispose();\r\n this._languageSelectionListener = null;\r\n }\r\n }\r\n dispose() {\r\n this._modelEventListeners.dispose();\r\n this._disposeLanguageSelection();\r\n }\r\n setLanguage(languageSelection) {\r\n this._disposeLanguageSelection();\r\n this._languageSelection = languageSelection;\r\n this._languageSelectionListener = this._languageSelection.onDidChange(() => this.model.setMode(languageSelection.languageIdentifier));\r\n this.model.setMode(languageSelection.languageIdentifier);\r\n }\r\n}\r\nconst DEFAULT_EOL = (platform.isLinux || platform.isMacintosh) ? 1 /* LF */ : 2 /* CRLF */;\r\nclass DisposedModelInfo {\r\n constructor(uri, initialUndoRedoSnapshot, time, sharesUndoRedoStack, heapSize, sha1, versionId, alternativeVersionId) {\r\n this.uri = uri;\r\n this.initialUndoRedoSnapshot = initialUndoRedoSnapshot;\r\n this.time = time;\r\n this.sharesUndoRedoStack = sharesUndoRedoStack;\r\n this.heapSize = heapSize;\r\n this.sha1 = sha1;\r\n this.versionId = versionId;\r\n this.alternativeVersionId = alternativeVersionId;\r\n }\r\n}\r\nfunction schemaShouldMaintainUndoRedoElements(resource) {\r\n return (resource.scheme === Schemas.file\r\n || resource.scheme === Schemas.vscodeRemote\r\n || resource.scheme === Schemas.userData\r\n || resource.scheme === 'fake-fs' // for tests\r\n );\r\n}\r\nlet ModelServiceImpl = class ModelServiceImpl extends Disposable {\r\n constructor(_configurationService, _resourcePropertiesService, _themeService, _logService, _undoRedoService) {\r\n super();\r\n this._configurationService = _configurationService;\r\n this._resourcePropertiesService = _resourcePropertiesService;\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._undoRedoService = _undoRedoService;\r\n this._onModelAdded = this._register(new Emitter());\r\n this.onModelAdded = this._onModelAdded.event;\r\n this._onModelRemoved = this._register(new Emitter());\r\n this.onModelRemoved = this._onModelRemoved.event;\r\n this._onModelModeChanged = this._register(new Emitter());\r\n this.onModelModeChanged = this._onModelModeChanged.event;\r\n this._modelCreationOptionsByLanguageAndResource = Object.create(null);\r\n this._models = {};\r\n this._disposedModels = new Map();\r\n this._disposedModelsHeapSize = 0;\r\n this._semanticStyling = this._register(new SemanticStyling(this._themeService, this._logService));\r\n this._register(this._configurationService.onDidChangeConfiguration(() => this._updateModelOptions()));\r\n this._updateModelOptions();\r\n this._register(new SemanticColoringFeature(this, this._themeService, this._configurationService, this._semanticStyling));\r\n }\r\n static _readModelOptions(config, isForSimpleWidget) {\r\n let tabSize = EDITOR_MODEL_DEFAULTS.tabSize;\r\n if (config.editor && typeof config.editor.tabSize !== 'undefined') {\r\n const parsedTabSize = parseInt(config.editor.tabSize, 10);\r\n if (!isNaN(parsedTabSize)) {\r\n tabSize = parsedTabSize;\r\n }\r\n if (tabSize < 1) {\r\n tabSize = 1;\r\n }\r\n }\r\n let indentSize = tabSize;\r\n if (config.editor && typeof config.editor.indentSize !== 'undefined' && config.editor.indentSize !== 'tabSize') {\r\n const parsedIndentSize = parseInt(config.editor.indentSize, 10);\r\n if (!isNaN(parsedIndentSize)) {\r\n indentSize = parsedIndentSize;\r\n }\r\n if (indentSize < 1) {\r\n indentSize = 1;\r\n }\r\n }\r\n let insertSpaces = EDITOR_MODEL_DEFAULTS.insertSpaces;\r\n if (config.editor && typeof config.editor.insertSpaces !== 'undefined') {\r\n insertSpaces = (config.editor.insertSpaces === 'false' ? false : Boolean(config.editor.insertSpaces));\r\n }\r\n let newDefaultEOL = DEFAULT_EOL;\r\n const eol = config.eol;\r\n if (eol === '\\r\\n') {\r\n newDefaultEOL = 2 /* CRLF */;\r\n }\r\n else if (eol === '\\n') {\r\n newDefaultEOL = 1 /* LF */;\r\n }\r\n let trimAutoWhitespace = EDITOR_MODEL_DEFAULTS.trimAutoWhitespace;\r\n if (config.editor && typeof config.editor.trimAutoWhitespace !== 'undefined') {\r\n trimAutoWhitespace = (config.editor.trimAutoWhitespace === 'false' ? false : Boolean(config.editor.trimAutoWhitespace));\r\n }\r\n let detectIndentation = EDITOR_MODEL_DEFAULTS.detectIndentation;\r\n if (config.editor && typeof config.editor.detectIndentation !== 'undefined') {\r\n detectIndentation = (config.editor.detectIndentation === 'false' ? false : Boolean(config.editor.detectIndentation));\r\n }\r\n let largeFileOptimizations = EDITOR_MODEL_DEFAULTS.largeFileOptimizations;\r\n if (config.editor && typeof config.editor.largeFileOptimizations !== 'undefined') {\r\n largeFileOptimizations = (config.editor.largeFileOptimizations === 'false' ? false : Boolean(config.editor.largeFileOptimizations));\r\n }\r\n return {\r\n isForSimpleWidget: isForSimpleWidget,\r\n tabSize: tabSize,\r\n indentSize: indentSize,\r\n insertSpaces: insertSpaces,\r\n detectIndentation: detectIndentation,\r\n defaultEOL: newDefaultEOL,\r\n trimAutoWhitespace: trimAutoWhitespace,\r\n largeFileOptimizations: largeFileOptimizations\r\n };\r\n }\r\n _getEOL(resource, language) {\r\n if (resource) {\r\n return this._resourcePropertiesService.getEOL(resource, language);\r\n }\r\n const eol = this._configurationService.getValue('files.eol', { overrideIdentifier: language });\r\n if (eol && typeof eol === 'string' && eol !== 'auto') {\r\n return eol;\r\n }\r\n return platform.OS === 3 /* Linux */ || platform.OS === 2 /* Macintosh */ ? '\\n' : '\\r\\n';\r\n }\r\n _shouldRestoreUndoStack() {\r\n const result = this._configurationService.getValue('files.restoreUndoStack');\r\n if (typeof result === 'boolean') {\r\n return result;\r\n }\r\n return true;\r\n }\r\n getCreationOptions(language, resource, isForSimpleWidget) {\r\n let creationOptions = this._modelCreationOptionsByLanguageAndResource[language + resource];\r\n if (!creationOptions) {\r\n const editor = this._configurationService.getValue('editor', { overrideIdentifier: language, resource });\r\n const eol = this._getEOL(resource, language);\r\n creationOptions = ModelServiceImpl._readModelOptions({ editor, eol }, isForSimpleWidget);\r\n this._modelCreationOptionsByLanguageAndResource[language + resource] = creationOptions;\r\n }\r\n return creationOptions;\r\n }\r\n _updateModelOptions() {\r\n const oldOptionsByLanguageAndResource = this._modelCreationOptionsByLanguageAndResource;\r\n this._modelCreationOptionsByLanguageAndResource = Object.create(null);\r\n // Update options on all models\r\n const keys = Object.keys(this._models);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const modelId = keys[i];\r\n const modelData = this._models[modelId];\r\n const language = modelData.model.getLanguageIdentifier().language;\r\n const uri = modelData.model.uri;\r\n const oldOptions = oldOptionsByLanguageAndResource[language + uri];\r\n const newOptions = this.getCreationOptions(language, uri, modelData.model.isForSimpleWidget);\r\n ModelServiceImpl._setModelOptionsForModel(modelData.model, newOptions, oldOptions);\r\n }\r\n }\r\n static _setModelOptionsForModel(model, newOptions, currentOptions) {\r\n if (currentOptions && currentOptions.defaultEOL !== newOptions.defaultEOL && model.getLineCount() === 1) {\r\n model.setEOL(newOptions.defaultEOL === 1 /* LF */ ? 0 /* LF */ : 1 /* CRLF */);\r\n }\r\n if (currentOptions\r\n && (currentOptions.detectIndentation === newOptions.detectIndentation)\r\n && (currentOptions.insertSpaces === newOptions.insertSpaces)\r\n && (currentOptions.tabSize === newOptions.tabSize)\r\n && (currentOptions.indentSize === newOptions.indentSize)\r\n && (currentOptions.trimAutoWhitespace === newOptions.trimAutoWhitespace)) {\r\n // Same indent opts, no need to touch the model\r\n return;\r\n }\r\n if (newOptions.detectIndentation) {\r\n model.detectIndentation(newOptions.insertSpaces, newOptions.tabSize);\r\n model.updateOptions({\r\n trimAutoWhitespace: newOptions.trimAutoWhitespace\r\n });\r\n }\r\n else {\r\n model.updateOptions({\r\n insertSpaces: newOptions.insertSpaces,\r\n tabSize: newOptions.tabSize,\r\n indentSize: newOptions.indentSize,\r\n trimAutoWhitespace: newOptions.trimAutoWhitespace\r\n });\r\n }\r\n }\r\n // --- begin IModelService\r\n _insertDisposedModel(disposedModelData) {\r\n this._disposedModels.set(MODEL_ID(disposedModelData.uri), disposedModelData);\r\n this._disposedModelsHeapSize += disposedModelData.heapSize;\r\n }\r\n _removeDisposedModel(resource) {\r\n const disposedModelData = this._disposedModels.get(MODEL_ID(resource));\r\n if (disposedModelData) {\r\n this._disposedModelsHeapSize -= disposedModelData.heapSize;\r\n }\r\n this._disposedModels.delete(MODEL_ID(resource));\r\n return disposedModelData;\r\n }\r\n _ensureDisposedModelsHeapSize(maxModelsHeapSize) {\r\n if (this._disposedModelsHeapSize > maxModelsHeapSize) {\r\n // we must remove some old undo stack elements to free up some memory\r\n const disposedModels = [];\r\n this._disposedModels.forEach(entry => {\r\n if (!entry.sharesUndoRedoStack) {\r\n disposedModels.push(entry);\r\n }\r\n });\r\n disposedModels.sort((a, b) => a.time - b.time);\r\n while (disposedModels.length > 0 && this._disposedModelsHeapSize > maxModelsHeapSize) {\r\n const disposedModel = disposedModels.shift();\r\n this._removeDisposedModel(disposedModel.uri);\r\n if (disposedModel.initialUndoRedoSnapshot !== null) {\r\n this._undoRedoService.restoreSnapshot(disposedModel.initialUndoRedoSnapshot);\r\n }\r\n }\r\n }\r\n }\r\n _createModelData(value, languageIdentifier, resource, isForSimpleWidget) {\r\n // create & save the model\r\n const options = this.getCreationOptions(languageIdentifier.language, resource, isForSimpleWidget);\r\n const model = new TextModel(value, options, languageIdentifier, resource, this._undoRedoService);\r\n if (resource && this._disposedModels.has(MODEL_ID(resource))) {\r\n const disposedModelData = this._removeDisposedModel(resource);\r\n const elements = this._undoRedoService.getElements(resource);\r\n const sha1IsEqual = (computeModelSha1(model) === disposedModelData.sha1);\r\n if (sha1IsEqual || disposedModelData.sharesUndoRedoStack) {\r\n for (const element of elements.past) {\r\n if (isEditStackElement(element) && element.matchesResource(resource)) {\r\n element.setModel(model);\r\n }\r\n }\r\n for (const element of elements.future) {\r\n if (isEditStackElement(element) && element.matchesResource(resource)) {\r\n element.setModel(model);\r\n }\r\n }\r\n this._undoRedoService.setElementsValidFlag(resource, true, (element) => (isEditStackElement(element) && element.matchesResource(resource)));\r\n if (sha1IsEqual) {\r\n model._overwriteVersionId(disposedModelData.versionId);\r\n model._overwriteAlternativeVersionId(disposedModelData.alternativeVersionId);\r\n model._overwriteInitialUndoRedoSnapshot(disposedModelData.initialUndoRedoSnapshot);\r\n }\r\n }\r\n else {\r\n if (disposedModelData.initialUndoRedoSnapshot !== null) {\r\n this._undoRedoService.restoreSnapshot(disposedModelData.initialUndoRedoSnapshot);\r\n }\r\n }\r\n }\r\n const modelId = MODEL_ID(model.uri);\r\n if (this._models[modelId]) {\r\n // There already exists a model with this id => this is a programmer error\r\n throw new Error('ModelService: Cannot add model because it already exists!');\r\n }\r\n const modelData = new ModelData(model, (model) => this._onWillDispose(model), (model, e) => this._onDidChangeLanguage(model, e));\r\n this._models[modelId] = modelData;\r\n return modelData;\r\n }\r\n createModel(value, languageSelection, resource, isForSimpleWidget = false) {\r\n let modelData;\r\n if (languageSelection) {\r\n modelData = this._createModelData(value, languageSelection.languageIdentifier, resource, isForSimpleWidget);\r\n this.setMode(modelData.model, languageSelection);\r\n }\r\n else {\r\n modelData = this._createModelData(value, PLAINTEXT_LANGUAGE_IDENTIFIER, resource, isForSimpleWidget);\r\n }\r\n this._onModelAdded.fire(modelData.model);\r\n return modelData.model;\r\n }\r\n setMode(model, languageSelection) {\r\n if (!languageSelection) {\r\n return;\r\n }\r\n const modelData = this._models[MODEL_ID(model.uri)];\r\n if (!modelData) {\r\n return;\r\n }\r\n modelData.setLanguage(languageSelection);\r\n }\r\n getModels() {\r\n const ret = [];\r\n const keys = Object.keys(this._models);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const modelId = keys[i];\r\n ret.push(this._models[modelId].model);\r\n }\r\n return ret;\r\n }\r\n getModel(resource) {\r\n const modelId = MODEL_ID(resource);\r\n const modelData = this._models[modelId];\r\n if (!modelData) {\r\n return null;\r\n }\r\n return modelData.model;\r\n }\r\n getSemanticTokensProviderStyling(provider) {\r\n return this._semanticStyling.get(provider);\r\n }\r\n // --- end IModelService\r\n _onWillDispose(model) {\r\n const modelId = MODEL_ID(model.uri);\r\n const modelData = this._models[modelId];\r\n const sharesUndoRedoStack = (this._undoRedoService.getUriComparisonKey(model.uri) !== model.uri.toString());\r\n let maintainUndoRedoStack = false;\r\n let heapSize = 0;\r\n if (sharesUndoRedoStack || (this._shouldRestoreUndoStack() && schemaShouldMaintainUndoRedoElements(model.uri))) {\r\n const elements = this._undoRedoService.getElements(model.uri);\r\n if (elements.past.length > 0 || elements.future.length > 0) {\r\n for (const element of elements.past) {\r\n if (isEditStackElement(element) && element.matchesResource(model.uri)) {\r\n maintainUndoRedoStack = true;\r\n heapSize += element.heapSize(model.uri);\r\n element.setModel(model.uri); // remove reference from text buffer instance\r\n }\r\n }\r\n for (const element of elements.future) {\r\n if (isEditStackElement(element) && element.matchesResource(model.uri)) {\r\n maintainUndoRedoStack = true;\r\n heapSize += element.heapSize(model.uri);\r\n element.setModel(model.uri); // remove reference from text buffer instance\r\n }\r\n }\r\n }\r\n }\r\n const maxMemory = ModelServiceImpl.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK;\r\n if (!maintainUndoRedoStack) {\r\n if (!sharesUndoRedoStack) {\r\n const initialUndoRedoSnapshot = modelData.model.getInitialUndoRedoSnapshot();\r\n if (initialUndoRedoSnapshot !== null) {\r\n this._undoRedoService.restoreSnapshot(initialUndoRedoSnapshot);\r\n }\r\n }\r\n }\r\n else if (!sharesUndoRedoStack && heapSize > maxMemory) {\r\n // the undo stack for this file would never fit in the configured memory, so don't bother with it.\r\n const initialUndoRedoSnapshot = modelData.model.getInitialUndoRedoSnapshot();\r\n if (initialUndoRedoSnapshot !== null) {\r\n this._undoRedoService.restoreSnapshot(initialUndoRedoSnapshot);\r\n }\r\n }\r\n else {\r\n this._ensureDisposedModelsHeapSize(maxMemory - heapSize);\r\n // We only invalidate the elements, but they remain in the undo-redo service.\r\n this._undoRedoService.setElementsValidFlag(model.uri, false, (element) => (isEditStackElement(element) && element.matchesResource(model.uri)));\r\n this._insertDisposedModel(new DisposedModelInfo(model.uri, modelData.model.getInitialUndoRedoSnapshot(), Date.now(), sharesUndoRedoStack, heapSize, computeModelSha1(model), model.getVersionId(), model.getAlternativeVersionId()));\r\n }\r\n delete this._models[modelId];\r\n modelData.dispose();\r\n // clean up cache\r\n delete this._modelCreationOptionsByLanguageAndResource[model.getLanguageIdentifier().language + model.uri];\r\n this._onModelRemoved.fire(model);\r\n }\r\n _onDidChangeLanguage(model, e) {\r\n const oldModeId = e.oldLanguage;\r\n const newModeId = model.getLanguageIdentifier().language;\r\n const oldOptions = this.getCreationOptions(oldModeId, model.uri, model.isForSimpleWidget);\r\n const newOptions = this.getCreationOptions(newModeId, model.uri, model.isForSimpleWidget);\r\n ModelServiceImpl._setModelOptionsForModel(model, newOptions, oldOptions);\r\n this._onModelModeChanged.fire({ model, oldModeId });\r\n }\r\n};\r\nModelServiceImpl.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK = 20 * 1024 * 1024;\r\nModelServiceImpl = __decorate([\r\n __param(0, IConfigurationService),\r\n __param(1, ITextResourcePropertiesService),\r\n __param(2, IThemeService),\r\n __param(3, ILogService),\r\n __param(4, IUndoRedoService)\r\n], ModelServiceImpl);\r\nexport { ModelServiceImpl };\r\nexport const SEMANTIC_HIGHLIGHTING_SETTING_ID = 'editor.semanticHighlighting';\r\nexport function isSemanticColoringEnabled(model, themeService, configurationService) {\r\n var _a;\r\n const setting = (_a = configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: model.getLanguageIdentifier().language, resource: model.uri })) === null || _a === void 0 ? void 0 : _a.enabled;\r\n if (typeof setting === 'boolean') {\r\n return setting;\r\n }\r\n return themeService.getColorTheme().semanticHighlighting;\r\n}\r\nclass SemanticColoringFeature extends Disposable {\r\n constructor(modelService, themeService, configurationService, semanticStyling) {\r\n super();\r\n this._watchers = Object.create(null);\r\n this._semanticStyling = semanticStyling;\r\n const register = (model) => {\r\n this._watchers[model.uri.toString()] = new ModelSemanticColoring(model, themeService, this._semanticStyling);\r\n };\r\n const deregister = (model, modelSemanticColoring) => {\r\n modelSemanticColoring.dispose();\r\n delete this._watchers[model.uri.toString()];\r\n };\r\n const handleSettingOrThemeChange = () => {\r\n for (let model of modelService.getModels()) {\r\n const curr = this._watchers[model.uri.toString()];\r\n if (isSemanticColoringEnabled(model, themeService, configurationService)) {\r\n if (!curr) {\r\n register(model);\r\n }\r\n }\r\n else {\r\n if (curr) {\r\n deregister(model, curr);\r\n }\r\n }\r\n }\r\n };\r\n this._register(modelService.onModelAdded((model) => {\r\n if (isSemanticColoringEnabled(model, themeService, configurationService)) {\r\n register(model);\r\n }\r\n }));\r\n this._register(modelService.onModelRemoved((model) => {\r\n const curr = this._watchers[model.uri.toString()];\r\n if (curr) {\r\n deregister(model, curr);\r\n }\r\n }));\r\n this._register(configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\r\n handleSettingOrThemeChange();\r\n }\r\n }));\r\n this._register(themeService.onDidColorThemeChange(handleSettingOrThemeChange));\r\n }\r\n}\r\nclass SemanticStyling extends Disposable {\r\n constructor(_themeService, _logService) {\r\n super();\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._caches = new WeakMap();\r\n this._register(this._themeService.onDidColorThemeChange(() => {\r\n this._caches = new WeakMap();\r\n }));\r\n }\r\n get(provider) {\r\n if (!this._caches.has(provider)) {\r\n this._caches.set(provider, new SemanticTokensProviderStyling(provider.getLegend(), this._themeService, this._logService));\r\n }\r\n return this._caches.get(provider);\r\n }\r\n}\r\nclass SemanticTokensResponse {\r\n constructor(_provider, resultId, data) {\r\n this._provider = _provider;\r\n this.resultId = resultId;\r\n this.data = data;\r\n }\r\n dispose() {\r\n this._provider.releaseDocumentSemanticTokens(this.resultId);\r\n }\r\n}\r\nexport class ModelSemanticColoring extends Disposable {\r\n constructor(model, themeService, stylingProvider) {\r\n super();\r\n this._isDisposed = false;\r\n this._model = model;\r\n this._semanticStyling = stylingProvider;\r\n this._fetchDocumentSemanticTokens = this._register(new RunOnceScheduler(() => this._fetchDocumentSemanticTokensNow(), ModelSemanticColoring.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY));\r\n this._currentDocumentResponse = null;\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n this._documentProvidersChangeListeners = [];\r\n this._register(this._model.onDidChangeContent(() => {\r\n if (!this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n }));\r\n this._register(this._model.onDidChangeLanguage(() => {\r\n // clear any outstanding state\r\n if (this._currentDocumentResponse) {\r\n this._currentDocumentResponse.dispose();\r\n this._currentDocumentResponse = null;\r\n }\r\n if (this._currentDocumentRequestCancellationTokenSource) {\r\n this._currentDocumentRequestCancellationTokenSource.cancel();\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n }\r\n this._setDocumentSemanticTokens(null, null, null, []);\r\n this._fetchDocumentSemanticTokens.schedule(0);\r\n }));\r\n const bindDocumentChangeListeners = () => {\r\n dispose(this._documentProvidersChangeListeners);\r\n this._documentProvidersChangeListeners = [];\r\n for (const provider of DocumentSemanticTokensProviderRegistry.all(model)) {\r\n if (typeof provider.onDidChange === 'function') {\r\n this._documentProvidersChangeListeners.push(provider.onDidChange(() => this._fetchDocumentSemanticTokens.schedule(0)));\r\n }\r\n }\r\n };\r\n bindDocumentChangeListeners();\r\n this._register(DocumentSemanticTokensProviderRegistry.onDidChange(() => {\r\n bindDocumentChangeListeners();\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }));\r\n this._register(themeService.onDidColorThemeChange(_ => {\r\n // clear out existing tokens\r\n this._setDocumentSemanticTokens(null, null, null, []);\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }));\r\n this._fetchDocumentSemanticTokens.schedule(0);\r\n }\r\n dispose() {\r\n if (this._currentDocumentResponse) {\r\n this._currentDocumentResponse.dispose();\r\n this._currentDocumentResponse = null;\r\n }\r\n if (this._currentDocumentRequestCancellationTokenSource) {\r\n this._currentDocumentRequestCancellationTokenSource.cancel();\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n }\r\n this._setDocumentSemanticTokens(null, null, null, []);\r\n this._isDisposed = true;\r\n super.dispose();\r\n }\r\n _fetchDocumentSemanticTokensNow() {\r\n if (this._currentDocumentRequestCancellationTokenSource) {\r\n // there is already a request running, let it finish...\r\n return;\r\n }\r\n const cancellationTokenSource = new CancellationTokenSource();\r\n const lastResultId = this._currentDocumentResponse ? this._currentDocumentResponse.resultId || null : null;\r\n const r = getDocumentSemanticTokens(this._model, lastResultId, cancellationTokenSource.token);\r\n if (!r) {\r\n // there is no provider\r\n if (this._currentDocumentResponse) {\r\n // there are semantic tokens set\r\n this._model.setSemanticTokens(null, false);\r\n }\r\n return;\r\n }\r\n const { provider, request } = r;\r\n this._currentDocumentRequestCancellationTokenSource = cancellationTokenSource;\r\n const pendingChanges = [];\r\n const contentChangeListener = this._model.onDidChangeContent((e) => {\r\n pendingChanges.push(e);\r\n });\r\n const styling = this._semanticStyling.get(provider);\r\n request.then((res) => {\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n contentChangeListener.dispose();\r\n this._setDocumentSemanticTokens(provider, res || null, styling, pendingChanges);\r\n }, (err) => {\r\n const isExpectedError = err && (errors.isPromiseCanceledError(err) || (typeof err.message === 'string' && err.message.indexOf('busy') !== -1));\r\n if (!isExpectedError) {\r\n errors.onUnexpectedError(err);\r\n }\r\n // Semantic tokens eats up all errors and considers errors to mean that the result is temporarily not available\r\n // The API does not have a special error kind to express this...\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n contentChangeListener.dispose();\r\n if (pendingChanges.length > 0) {\r\n // More changes occurred while the request was running\r\n if (!this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n }\r\n });\r\n }\r\n static _copy(src, srcOffset, dest, destOffset, length) {\r\n for (let i = 0; i < length; i++) {\r\n dest[destOffset + i] = src[srcOffset + i];\r\n }\r\n }\r\n _setDocumentSemanticTokens(provider, tokens, styling, pendingChanges) {\r\n const currentResponse = this._currentDocumentResponse;\r\n const rescheduleIfNeeded = () => {\r\n if (pendingChanges.length > 0 && !this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n };\r\n if (this._currentDocumentResponse) {\r\n this._currentDocumentResponse.dispose();\r\n this._currentDocumentResponse = null;\r\n }\r\n if (this._isDisposed) {\r\n // disposed!\r\n if (provider && tokens) {\r\n provider.releaseDocumentSemanticTokens(tokens.resultId);\r\n }\r\n return;\r\n }\r\n if (!provider || !styling) {\r\n this._model.setSemanticTokens(null, false);\r\n return;\r\n }\r\n if (!tokens) {\r\n this._model.setSemanticTokens(null, true);\r\n rescheduleIfNeeded();\r\n return;\r\n }\r\n if (isSemanticTokensEdits(tokens)) {\r\n if (!currentResponse) {\r\n // not possible!\r\n this._model.setSemanticTokens(null, true);\r\n return;\r\n }\r\n if (tokens.edits.length === 0) {\r\n // nothing to do!\r\n tokens = {\r\n resultId: tokens.resultId,\r\n data: currentResponse.data\r\n };\r\n }\r\n else {\r\n let deltaLength = 0;\r\n for (const edit of tokens.edits) {\r\n deltaLength += (edit.data ? edit.data.length : 0) - edit.deleteCount;\r\n }\r\n const srcData = currentResponse.data;\r\n const destData = new Uint32Array(srcData.length + deltaLength);\r\n let srcLastStart = srcData.length;\r\n let destLastStart = destData.length;\r\n for (let i = tokens.edits.length - 1; i >= 0; i--) {\r\n const edit = tokens.edits[i];\r\n const copyCount = srcLastStart - (edit.start + edit.deleteCount);\r\n if (copyCount > 0) {\r\n ModelSemanticColoring._copy(srcData, srcLastStart - copyCount, destData, destLastStart - copyCount, copyCount);\r\n destLastStart -= copyCount;\r\n }\r\n if (edit.data) {\r\n ModelSemanticColoring._copy(edit.data, 0, destData, destLastStart - edit.data.length, edit.data.length);\r\n destLastStart -= edit.data.length;\r\n }\r\n srcLastStart = edit.start;\r\n }\r\n if (srcLastStart > 0) {\r\n ModelSemanticColoring._copy(srcData, 0, destData, 0, srcLastStart);\r\n }\r\n tokens = {\r\n resultId: tokens.resultId,\r\n data: destData\r\n };\r\n }\r\n }\r\n if (isSemanticTokens(tokens)) {\r\n this._currentDocumentResponse = new SemanticTokensResponse(provider, tokens.resultId, tokens.data);\r\n const result = toMultilineTokens2(tokens, styling, this._model.getLanguageIdentifier());\r\n // Adjust incoming semantic tokens\r\n if (pendingChanges.length > 0) {\r\n // More changes occurred while the request was running\r\n // We need to:\r\n // 1. Adjust incoming semantic tokens\r\n // 2. Request them again\r\n for (const change of pendingChanges) {\r\n for (const area of result) {\r\n for (const singleChange of change.changes) {\r\n area.applyEdit(singleChange.range, singleChange.text);\r\n }\r\n }\r\n }\r\n }\r\n this._model.setSemanticTokens(result, true);\r\n }\r\n else {\r\n this._model.setSemanticTokens(null, true);\r\n }\r\n rescheduleIfNeeded();\r\n }\r\n}\r\nModelSemanticColoring.FETCH_DOCUMENT_SEMANTIC_TOKENS_DELAY = 300;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Color } from '../../../../base/common/color.js';\r\nexport class ParsedTokenThemeRule {\r\n constructor(token, index, fontStyle, foreground, background) {\r\n this._parsedThemeRuleBrand = undefined;\r\n this.token = token;\r\n this.index = index;\r\n this.fontStyle = fontStyle;\r\n this.foreground = foreground;\r\n this.background = background;\r\n }\r\n}\r\n/**\r\n * Parse a raw theme into rules.\r\n */\r\nexport function parseTokenTheme(source) {\r\n if (!source || !Array.isArray(source)) {\r\n return [];\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n let entry = source[i];\r\n let fontStyle = -1 /* NotSet */;\r\n if (typeof entry.fontStyle === 'string') {\r\n fontStyle = 0 /* None */;\r\n let segments = entry.fontStyle.split(' ');\r\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\r\n let segment = segments[j];\r\n switch (segment) {\r\n case 'italic':\r\n fontStyle = fontStyle | 1 /* Italic */;\r\n break;\r\n case 'bold':\r\n fontStyle = fontStyle | 2 /* Bold */;\r\n break;\r\n case 'underline':\r\n fontStyle = fontStyle | 4 /* Underline */;\r\n break;\r\n }\r\n }\r\n }\r\n let foreground = null;\r\n if (typeof entry.foreground === 'string') {\r\n foreground = entry.foreground;\r\n }\r\n let background = null;\r\n if (typeof entry.background === 'string') {\r\n background = entry.background;\r\n }\r\n result[resultLen++] = new ParsedTokenThemeRule(entry.token || '', i, fontStyle, foreground, background);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Resolve rules (i.e. inheritance).\r\n */\r\nfunction resolveParsedTokenThemeRules(parsedThemeRules, customTokenColors) {\r\n // Sort rules lexicographically, and then by index if necessary\r\n parsedThemeRules.sort((a, b) => {\r\n let r = strcmp(a.token, b.token);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n return a.index - b.index;\r\n });\r\n // Determine defaults\r\n let defaultFontStyle = 0 /* None */;\r\n let defaultForeground = '000000';\r\n let defaultBackground = 'ffffff';\r\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].token === '') {\r\n let incomingDefaults = parsedThemeRules.shift();\r\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\r\n defaultFontStyle = incomingDefaults.fontStyle;\r\n }\r\n if (incomingDefaults.foreground !== null) {\r\n defaultForeground = incomingDefaults.foreground;\r\n }\r\n if (incomingDefaults.background !== null) {\r\n defaultBackground = incomingDefaults.background;\r\n }\r\n }\r\n let colorMap = new ColorMap();\r\n // start with token colors from custom token themes\r\n for (let color of customTokenColors) {\r\n colorMap.getId(color);\r\n }\r\n let foregroundColorId = colorMap.getId(defaultForeground);\r\n let backgroundColorId = colorMap.getId(defaultBackground);\r\n let defaults = new ThemeTrieElementRule(defaultFontStyle, foregroundColorId, backgroundColorId);\r\n let root = new ThemeTrieElement(defaults);\r\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\r\n let rule = parsedThemeRules[i];\r\n root.insert(rule.token, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\r\n }\r\n return new TokenTheme(colorMap, root);\r\n}\r\nconst colorRegExp = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;\r\nexport class ColorMap {\r\n constructor() {\r\n this._lastColorId = 0;\r\n this._id2color = [];\r\n this._color2id = new Map();\r\n }\r\n getId(color) {\r\n if (color === null) {\r\n return 0;\r\n }\r\n const match = color.match(colorRegExp);\r\n if (!match) {\r\n throw new Error('Illegal value for token color: ' + color);\r\n }\r\n color = match[1].toUpperCase();\r\n let value = this._color2id.get(color);\r\n if (value) {\r\n return value;\r\n }\r\n value = ++this._lastColorId;\r\n this._color2id.set(color, value);\r\n this._id2color[value] = Color.fromHex('#' + color);\r\n return value;\r\n }\r\n getColorMap() {\r\n return this._id2color.slice(0);\r\n }\r\n}\r\nexport class TokenTheme {\r\n constructor(colorMap, root) {\r\n this._colorMap = colorMap;\r\n this._root = root;\r\n this._cache = new Map();\r\n }\r\n static createFromRawTokenTheme(source, customTokenColors) {\r\n return this.createFromParsedTokenTheme(parseTokenTheme(source), customTokenColors);\r\n }\r\n static createFromParsedTokenTheme(source, customTokenColors) {\r\n return resolveParsedTokenThemeRules(source, customTokenColors);\r\n }\r\n getColorMap() {\r\n return this._colorMap.getColorMap();\r\n }\r\n _match(token) {\r\n return this._root.match(token);\r\n }\r\n match(languageId, token) {\r\n // The cache contains the metadata without the language bits set.\r\n let result = this._cache.get(token);\r\n if (typeof result === 'undefined') {\r\n let rule = this._match(token);\r\n let standardToken = toStandardTokenType(token);\r\n result = (rule.metadata\r\n | (standardToken << 8 /* TOKEN_TYPE_OFFSET */)) >>> 0;\r\n this._cache.set(token, result);\r\n }\r\n return (result\r\n | (languageId << 0 /* LANGUAGEID_OFFSET */)) >>> 0;\r\n }\r\n}\r\nconst STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|regexp)\\b/;\r\nexport function toStandardTokenType(tokenType) {\r\n let m = tokenType.match(STANDARD_TOKEN_TYPE_REGEXP);\r\n if (!m) {\r\n return 0 /* Other */;\r\n }\r\n switch (m[1]) {\r\n case 'comment':\r\n return 1 /* Comment */;\r\n case 'string':\r\n return 2 /* String */;\r\n case 'regex':\r\n return 4 /* RegEx */;\r\n case 'regexp':\r\n return 4 /* RegEx */;\r\n }\r\n throw new Error('Unexpected match for standard token type!');\r\n}\r\nexport function strcmp(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n if (a > b) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport class ThemeTrieElementRule {\r\n constructor(fontStyle, foreground, background) {\r\n this._themeTrieElementRuleBrand = undefined;\r\n this._fontStyle = fontStyle;\r\n this._foreground = foreground;\r\n this._background = background;\r\n this.metadata = ((this._fontStyle << 11 /* FONT_STYLE_OFFSET */)\r\n | (this._foreground << 14 /* FOREGROUND_OFFSET */)\r\n | (this._background << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n }\r\n clone() {\r\n return new ThemeTrieElementRule(this._fontStyle, this._foreground, this._background);\r\n }\r\n acceptOverwrite(fontStyle, foreground, background) {\r\n if (fontStyle !== -1 /* NotSet */) {\r\n this._fontStyle = fontStyle;\r\n }\r\n if (foreground !== 0 /* None */) {\r\n this._foreground = foreground;\r\n }\r\n if (background !== 0 /* None */) {\r\n this._background = background;\r\n }\r\n this.metadata = ((this._fontStyle << 11 /* FONT_STYLE_OFFSET */)\r\n | (this._foreground << 14 /* FOREGROUND_OFFSET */)\r\n | (this._background << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n }\r\n}\r\nexport class ThemeTrieElement {\r\n constructor(mainRule) {\r\n this._themeTrieElementBrand = undefined;\r\n this._mainRule = mainRule;\r\n this._children = new Map();\r\n }\r\n match(token) {\r\n if (token === '') {\r\n return this._mainRule;\r\n }\r\n let dotIndex = token.indexOf('.');\r\n let head;\r\n let tail;\r\n if (dotIndex === -1) {\r\n head = token;\r\n tail = '';\r\n }\r\n else {\r\n head = token.substring(0, dotIndex);\r\n tail = token.substring(dotIndex + 1);\r\n }\r\n let child = this._children.get(head);\r\n if (typeof child !== 'undefined') {\r\n return child.match(tail);\r\n }\r\n return this._mainRule;\r\n }\r\n insert(token, fontStyle, foreground, background) {\r\n if (token === '') {\r\n // Merge into the main rule\r\n this._mainRule.acceptOverwrite(fontStyle, foreground, background);\r\n return;\r\n }\r\n let dotIndex = token.indexOf('.');\r\n let head;\r\n let tail;\r\n if (dotIndex === -1) {\r\n head = token;\r\n tail = '';\r\n }\r\n else {\r\n head = token.substring(0, dotIndex);\r\n tail = token.substring(dotIndex + 1);\r\n }\r\n let child = this._children.get(head);\r\n if (typeof child === 'undefined') {\r\n child = new ThemeTrieElement(this._mainRule.clone());\r\n this._children.set(head, child);\r\n }\r\n child.insert(tail, fontStyle, foreground, background);\r\n }\r\n}\r\nexport function generateTokensCSSForColorMap(colorMap) {\r\n let rules = [];\r\n for (let i = 1, len = colorMap.length; i < len; i++) {\r\n let color = colorMap[i];\r\n rules[i] = `.mtk${i} { color: ${color}; }`;\r\n }\r\n rules.push('.mtki { font-style: italic; }');\r\n rules.push('.mtkb { font-weight: bold; }');\r\n rules.push('.mtku { text-decoration: underline; text-underline-position: under; }');\r\n return rules.join('\\n');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { editorActiveIndentGuides, editorIndentGuides } from '../../common/view/editorColorRegistry.js';\r\nimport { editorBackground, editorForeground, editorInactiveSelection, editorSelectionHighlight } from '../../../platform/theme/common/colorRegistry.js';\r\n/* -------------------------------- Begin vs theme -------------------------------- */\r\nexport const vs = {\r\n base: 'vs',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: '000000', background: 'fffffe' },\r\n { token: 'invalid', foreground: 'cd3131' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '001188' },\r\n { token: 'variable.predefined', foreground: '4864AA' },\r\n { token: 'constant', foreground: 'dd0000' },\r\n { token: 'comment', foreground: '008000' },\r\n { token: 'number', foreground: '098658' },\r\n { token: 'number.hex', foreground: '3030c0' },\r\n { token: 'regexp', foreground: '800000' },\r\n { token: 'annotation', foreground: '808080' },\r\n { token: 'type', foreground: '008080' },\r\n { token: 'delimiter', foreground: '000000' },\r\n { token: 'delimiter.html', foreground: '383838' },\r\n { token: 'delimiter.xml', foreground: '0000FF' },\r\n { token: 'tag', foreground: '800000' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta.scss', foreground: '800000' },\r\n { token: 'metatag', foreground: 'e00000' },\r\n { token: 'metatag.content.html', foreground: 'FF0000' },\r\n { token: 'metatag.html', foreground: '808080' },\r\n { token: 'metatag.xml', foreground: '808080' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '863B00' },\r\n { token: 'string.key.json', foreground: 'A31515' },\r\n { token: 'string.value.json', foreground: '0451A5' },\r\n { token: 'attribute.name', foreground: 'FF0000' },\r\n { token: 'attribute.value', foreground: '0451A5' },\r\n { token: 'attribute.value.number', foreground: '098658' },\r\n { token: 'attribute.value.unit', foreground: '098658' },\r\n { token: 'attribute.value.html', foreground: '0000FF' },\r\n { token: 'attribute.value.xml', foreground: '0000FF' },\r\n { token: 'string', foreground: 'A31515' },\r\n { token: 'string.html', foreground: '0000FF' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'string.yaml', foreground: '0451A5' },\r\n { token: 'keyword', foreground: '0000FF' },\r\n { token: 'keyword.json', foreground: '0451A5' },\r\n { token: 'keyword.flow', foreground: 'AF00DB' },\r\n { token: 'keyword.flow.scss', foreground: '0000FF' },\r\n { token: 'operator.scss', foreground: '666666' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '666666' },\r\n { token: 'predefined.sql', foreground: 'C700C7' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#FFFFFE',\r\n [editorForeground]: '#000000',\r\n [editorInactiveSelection]: '#E5EBF1',\r\n [editorIndentGuides]: '#D3D3D3',\r\n [editorActiveIndentGuides]: '#939393',\r\n [editorSelectionHighlight]: '#ADD6FF4D'\r\n }\r\n};\r\n/* -------------------------------- End vs theme -------------------------------- */\r\n/* -------------------------------- Begin vs-dark theme -------------------------------- */\r\nexport const vs_dark = {\r\n base: 'vs-dark',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: 'D4D4D4', background: '1E1E1E' },\r\n { token: 'invalid', foreground: 'f44747' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '74B0DF' },\r\n { token: 'variable.predefined', foreground: '4864AA' },\r\n { token: 'variable.parameter', foreground: '9CDCFE' },\r\n { token: 'constant', foreground: '569CD6' },\r\n { token: 'comment', foreground: '608B4E' },\r\n { token: 'number', foreground: 'B5CEA8' },\r\n { token: 'number.hex', foreground: '5BB498' },\r\n { token: 'regexp', foreground: 'B46695' },\r\n { token: 'annotation', foreground: 'cc6666' },\r\n { token: 'type', foreground: '3DC9B0' },\r\n { token: 'delimiter', foreground: 'DCDCDC' },\r\n { token: 'delimiter.html', foreground: '808080' },\r\n { token: 'delimiter.xml', foreground: '808080' },\r\n { token: 'tag', foreground: '569CD6' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta.scss', foreground: 'A79873' },\r\n { token: 'meta.tag', foreground: 'CE9178' },\r\n { token: 'metatag', foreground: 'DD6A6F' },\r\n { token: 'metatag.content.html', foreground: '9CDCFE' },\r\n { token: 'metatag.html', foreground: '569CD6' },\r\n { token: 'metatag.xml', foreground: '569CD6' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '9CDCFE' },\r\n { token: 'string.key.json', foreground: '9CDCFE' },\r\n { token: 'string.value.json', foreground: 'CE9178' },\r\n { token: 'attribute.name', foreground: '9CDCFE' },\r\n { token: 'attribute.value', foreground: 'CE9178' },\r\n { token: 'attribute.value.number.css', foreground: 'B5CEA8' },\r\n { token: 'attribute.value.unit.css', foreground: 'B5CEA8' },\r\n { token: 'attribute.value.hex.css', foreground: 'D4D4D4' },\r\n { token: 'string', foreground: 'CE9178' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'keyword', foreground: '569CD6' },\r\n { token: 'keyword.flow', foreground: 'C586C0' },\r\n { token: 'keyword.json', foreground: 'CE9178' },\r\n { token: 'keyword.flow.scss', foreground: '569CD6' },\r\n { token: 'operator.scss', foreground: '909090' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '909090' },\r\n { token: 'predefined.sql', foreground: 'FF00FF' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#1E1E1E',\r\n [editorForeground]: '#D4D4D4',\r\n [editorInactiveSelection]: '#3A3D41',\r\n [editorIndentGuides]: '#404040',\r\n [editorActiveIndentGuides]: '#707070',\r\n [editorSelectionHighlight]: '#ADD6FF26'\r\n }\r\n};\r\n/* -------------------------------- End vs-dark theme -------------------------------- */\r\n/* -------------------------------- Begin hc-black theme -------------------------------- */\r\nexport const hc_black = {\r\n base: 'hc-black',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: 'FFFFFF', background: '000000' },\r\n { token: 'invalid', foreground: 'f44747' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '1AEBFF' },\r\n { token: 'variable.parameter', foreground: '9CDCFE' },\r\n { token: 'constant', foreground: '569CD6' },\r\n { token: 'comment', foreground: '608B4E' },\r\n { token: 'number', foreground: 'FFFFFF' },\r\n { token: 'regexp', foreground: 'C0C0C0' },\r\n { token: 'annotation', foreground: '569CD6' },\r\n { token: 'type', foreground: '3DC9B0' },\r\n { token: 'delimiter', foreground: 'FFFF00' },\r\n { token: 'delimiter.html', foreground: 'FFFF00' },\r\n { token: 'tag', foreground: '569CD6' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta', foreground: 'D4D4D4' },\r\n { token: 'meta.tag', foreground: 'CE9178' },\r\n { token: 'metatag', foreground: '569CD6' },\r\n { token: 'metatag.content.html', foreground: '1AEBFF' },\r\n { token: 'metatag.html', foreground: '569CD6' },\r\n { token: 'metatag.xml', foreground: '569CD6' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '9CDCFE' },\r\n { token: 'string.key', foreground: '9CDCFE' },\r\n { token: 'string.value', foreground: 'CE9178' },\r\n { token: 'attribute.name', foreground: '569CD6' },\r\n { token: 'attribute.value', foreground: '3FF23F' },\r\n { token: 'string', foreground: 'CE9178' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'keyword', foreground: '569CD6' },\r\n { token: 'keyword.flow', foreground: 'C586C0' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '909090' },\r\n { token: 'predefined.sql', foreground: 'FF00FF' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#000000',\r\n [editorForeground]: '#FFFFFF',\r\n [editorIndentGuides]: '#FFFFFF',\r\n [editorActiveIndentGuides]: '#FFFFFF',\r\n }\r\n};\r\n/* -------------------------------- End hc-black theme -------------------------------- */\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { TokenizationRegistry, TokenMetadata } from '../../common/modes.js';\r\nimport { TokenTheme, generateTokensCSSForColorMap } from '../../common/modes/supports/tokenization.js';\r\nimport { hc_black, vs, vs_dark } from '../common/themes.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Extensions as ThemingExtensions } from '../../../platform/theme/common/themeService.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { ColorScheme } from '../../../platform/theme/common/theme.js';\r\nimport { getIconsStyleSheet } from '../../../platform/theme/browser/iconsStyleSheet.js';\r\nconst VS_THEME_NAME = 'vs';\r\nconst VS_DARK_THEME_NAME = 'vs-dark';\r\nconst HC_BLACK_THEME_NAME = 'hc-black';\r\nconst colorRegistry = Registry.as(Extensions.ColorContribution);\r\nconst themingRegistry = Registry.as(ThemingExtensions.ThemingContribution);\r\nclass StandaloneTheme {\r\n constructor(name, standaloneThemeData) {\r\n this.semanticHighlighting = false;\r\n this.themeData = standaloneThemeData;\r\n let base = standaloneThemeData.base;\r\n if (name.length > 0) {\r\n if (isBuiltinTheme(name)) {\r\n this.id = name;\r\n }\r\n else {\r\n this.id = base + ' ' + name;\r\n }\r\n this.themeName = name;\r\n }\r\n else {\r\n this.id = base;\r\n this.themeName = base;\r\n }\r\n this.colors = null;\r\n this.defaultColors = Object.create(null);\r\n this._tokenTheme = null;\r\n }\r\n get base() {\r\n return this.themeData.base;\r\n }\r\n notifyBaseUpdated() {\r\n if (this.themeData.inherit) {\r\n this.colors = null;\r\n this._tokenTheme = null;\r\n }\r\n }\r\n getColors() {\r\n if (!this.colors) {\r\n const colors = new Map();\r\n for (let id in this.themeData.colors) {\r\n colors.set(id, Color.fromHex(this.themeData.colors[id]));\r\n }\r\n if (this.themeData.inherit) {\r\n let baseData = getBuiltinRules(this.themeData.base);\r\n for (let id in baseData.colors) {\r\n if (!colors.has(id)) {\r\n colors.set(id, Color.fromHex(baseData.colors[id]));\r\n }\r\n }\r\n }\r\n this.colors = colors;\r\n }\r\n return this.colors;\r\n }\r\n getColor(colorId, useDefault) {\r\n const color = this.getColors().get(colorId);\r\n if (color) {\r\n return color;\r\n }\r\n if (useDefault !== false) {\r\n return this.getDefault(colorId);\r\n }\r\n return undefined;\r\n }\r\n getDefault(colorId) {\r\n let color = this.defaultColors[colorId];\r\n if (color) {\r\n return color;\r\n }\r\n color = colorRegistry.resolveDefaultColor(colorId, this);\r\n this.defaultColors[colorId] = color;\r\n return color;\r\n }\r\n defines(colorId) {\r\n return Object.prototype.hasOwnProperty.call(this.getColors(), colorId);\r\n }\r\n get type() {\r\n switch (this.base) {\r\n case VS_THEME_NAME: return ColorScheme.LIGHT;\r\n case HC_BLACK_THEME_NAME: return ColorScheme.HIGH_CONTRAST;\r\n default: return ColorScheme.DARK;\r\n }\r\n }\r\n get tokenTheme() {\r\n if (!this._tokenTheme) {\r\n let rules = [];\r\n let encodedTokensColors = [];\r\n if (this.themeData.inherit) {\r\n let baseData = getBuiltinRules(this.themeData.base);\r\n rules = baseData.rules;\r\n if (baseData.encodedTokensColors) {\r\n encodedTokensColors = baseData.encodedTokensColors;\r\n }\r\n }\r\n rules = rules.concat(this.themeData.rules);\r\n if (this.themeData.encodedTokensColors) {\r\n encodedTokensColors = this.themeData.encodedTokensColors;\r\n }\r\n this._tokenTheme = TokenTheme.createFromRawTokenTheme(rules, encodedTokensColors);\r\n }\r\n return this._tokenTheme;\r\n }\r\n getTokenStyleMetadata(type, modifiers, modelLanguage) {\r\n // use theme rules match\r\n const style = this.tokenTheme._match([type].concat(modifiers).join('.'));\r\n const metadata = style.metadata;\r\n const foreground = TokenMetadata.getForeground(metadata);\r\n const fontStyle = TokenMetadata.getFontStyle(metadata);\r\n return {\r\n foreground: foreground,\r\n italic: Boolean(fontStyle & 1 /* Italic */),\r\n bold: Boolean(fontStyle & 2 /* Bold */),\r\n underline: Boolean(fontStyle & 4 /* Underline */)\r\n };\r\n }\r\n}\r\nfunction isBuiltinTheme(themeName) {\r\n return (themeName === VS_THEME_NAME\r\n || themeName === VS_DARK_THEME_NAME\r\n || themeName === HC_BLACK_THEME_NAME);\r\n}\r\nfunction getBuiltinRules(builtinTheme) {\r\n switch (builtinTheme) {\r\n case VS_THEME_NAME:\r\n return vs;\r\n case VS_DARK_THEME_NAME:\r\n return vs_dark;\r\n case HC_BLACK_THEME_NAME:\r\n return hc_black;\r\n }\r\n}\r\nfunction newBuiltInTheme(builtinTheme) {\r\n let themeData = getBuiltinRules(builtinTheme);\r\n return new StandaloneTheme(builtinTheme, themeData);\r\n}\r\nexport class StandaloneThemeServiceImpl extends Disposable {\r\n constructor() {\r\n super();\r\n this._onColorThemeChange = this._register(new Emitter());\r\n this.onDidColorThemeChange = this._onColorThemeChange.event;\r\n this._environment = Object.create(null);\r\n this._autoDetectHighContrast = true;\r\n this._knownThemes = new Map();\r\n this._knownThemes.set(VS_THEME_NAME, newBuiltInTheme(VS_THEME_NAME));\r\n this._knownThemes.set(VS_DARK_THEME_NAME, newBuiltInTheme(VS_DARK_THEME_NAME));\r\n this._knownThemes.set(HC_BLACK_THEME_NAME, newBuiltInTheme(HC_BLACK_THEME_NAME));\r\n const iconsStyleSheet = getIconsStyleSheet();\r\n this._codiconCSS = iconsStyleSheet.getCSS();\r\n this._themeCSS = '';\r\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\r\n this._globalStyleElement = null;\r\n this._styleElements = [];\r\n this._colorMapOverride = null;\r\n this.setTheme(VS_THEME_NAME);\r\n iconsStyleSheet.onDidChange(() => {\r\n this._codiconCSS = iconsStyleSheet.getCSS();\r\n this._updateCSS();\r\n });\r\n dom.addMatchMediaChangeListener('(forced-colors: active)', () => {\r\n this._updateActualTheme();\r\n });\r\n }\r\n registerEditorContainer(domNode) {\r\n if (dom.isInShadowDOM(domNode)) {\r\n return this._registerShadowDomContainer(domNode);\r\n }\r\n return this._registerRegularEditorContainer();\r\n }\r\n _registerRegularEditorContainer() {\r\n if (!this._globalStyleElement) {\r\n this._globalStyleElement = dom.createStyleSheet();\r\n this._globalStyleElement.className = 'monaco-colors';\r\n this._globalStyleElement.textContent = this._allCSS;\r\n this._styleElements.push(this._globalStyleElement);\r\n }\r\n return Disposable.None;\r\n }\r\n _registerShadowDomContainer(domNode) {\r\n const styleElement = dom.createStyleSheet(domNode);\r\n styleElement.className = 'monaco-colors';\r\n styleElement.textContent = this._allCSS;\r\n this._styleElements.push(styleElement);\r\n return {\r\n dispose: () => {\r\n for (let i = 0; i < this._styleElements.length; i++) {\r\n if (this._styleElements[i] === styleElement) {\r\n this._styleElements.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n defineTheme(themeName, themeData) {\r\n if (!/^[a-z0-9\\-]+$/i.test(themeName)) {\r\n throw new Error('Illegal theme name!');\r\n }\r\n if (!isBuiltinTheme(themeData.base) && !isBuiltinTheme(themeName)) {\r\n throw new Error('Illegal theme base!');\r\n }\r\n // set or replace theme\r\n this._knownThemes.set(themeName, new StandaloneTheme(themeName, themeData));\r\n if (isBuiltinTheme(themeName)) {\r\n this._knownThemes.forEach(theme => {\r\n if (theme.base === themeName) {\r\n theme.notifyBaseUpdated();\r\n }\r\n });\r\n }\r\n if (this._theme.themeName === themeName) {\r\n this.setTheme(themeName); // refresh theme\r\n }\r\n }\r\n getColorTheme() {\r\n return this._theme;\r\n }\r\n setColorMapOverride(colorMapOverride) {\r\n this._colorMapOverride = colorMapOverride;\r\n this._updateThemeOrColorMap();\r\n }\r\n setTheme(themeName) {\r\n let theme;\r\n if (this._knownThemes.has(themeName)) {\r\n theme = this._knownThemes.get(themeName);\r\n }\r\n else {\r\n theme = this._knownThemes.get(VS_THEME_NAME);\r\n }\r\n this._desiredTheme = theme;\r\n this._updateActualTheme();\r\n }\r\n _updateActualTheme() {\r\n const theme = (this._autoDetectHighContrast && window.matchMedia(`(forced-colors: active)`).matches\r\n ? this._knownThemes.get(HC_BLACK_THEME_NAME)\r\n : this._desiredTheme);\r\n if (this._theme === theme) {\r\n // Nothing to do\r\n return;\r\n }\r\n this._theme = theme;\r\n this._updateThemeOrColorMap();\r\n }\r\n setAutoDetectHighContrast(autoDetectHighContrast) {\r\n this._autoDetectHighContrast = autoDetectHighContrast;\r\n this._updateActualTheme();\r\n }\r\n _updateThemeOrColorMap() {\r\n let cssRules = [];\r\n let hasRule = {};\r\n let ruleCollector = {\r\n addRule: (rule) => {\r\n if (!hasRule[rule]) {\r\n cssRules.push(rule);\r\n hasRule[rule] = true;\r\n }\r\n }\r\n };\r\n themingRegistry.getThemingParticipants().forEach(p => p(this._theme, ruleCollector, this._environment));\r\n const colorMap = this._colorMapOverride || this._theme.tokenTheme.getColorMap();\r\n ruleCollector.addRule(generateTokensCSSForColorMap(colorMap));\r\n this._themeCSS = cssRules.join('\\n');\r\n this._updateCSS();\r\n TokenizationRegistry.setColorMap(colorMap);\r\n this._onColorThemeChange.fire(this._theme);\r\n }\r\n _updateCSS() {\r\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\r\n this._styleElements.forEach(styleElement => styleElement.textContent = this._allCSS);\r\n }\r\n getFileIconTheme() {\r\n return {\r\n hasFileIcons: false,\r\n hasFolderIcons: false,\r\n hidesExplorerArrows: false\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ThemeIcon } from '../common/themeService.js';\r\nimport { getIconRegistry } from '../common/iconRegistry.js';\r\nimport { asCSSPropertyValue, asCSSUrl } from '../../../base/browser/dom.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport function getIconsStyleSheet() {\r\n const onDidChangeEmmiter = new Emitter();\r\n const iconRegistry = getIconRegistry();\r\n iconRegistry.onDidChange(() => onDidChangeEmmiter.fire());\r\n return {\r\n onDidChange: onDidChangeEmmiter.event,\r\n getCSS() {\r\n const usedFontIds = {};\r\n const formatIconRule = (contribution) => {\r\n let definition = contribution.defaults;\r\n while (ThemeIcon.isThemeIcon(definition)) {\r\n const c = iconRegistry.getIcon(definition.id);\r\n if (!c) {\r\n return undefined;\r\n }\r\n definition = c.defaults;\r\n }\r\n const fontId = definition.fontId;\r\n if (fontId) {\r\n const fontContribution = iconRegistry.getIconFont(fontId);\r\n if (fontContribution) {\r\n usedFontIds[fontId] = fontContribution;\r\n return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; font-family: ${asCSSPropertyValue(fontId)}; }`;\r\n }\r\n }\r\n return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; }`;\r\n };\r\n const rules = [];\r\n for (let contribution of iconRegistry.getIcons()) {\r\n const rule = formatIconRule(contribution);\r\n if (rule) {\r\n rules.push(rule);\r\n }\r\n }\r\n for (let id in usedFontIds) {\r\n const fontContribution = usedFontIds[id];\r\n const src = fontContribution.definition.src.map(l => `${asCSSUrl(l.location)} format('${l.format}')`).join(', ');\r\n rules.push(`@font-face { src: ${src}; font-family: ${asCSSPropertyValue(id)}; }`);\r\n }\r\n return rules.join('\\n');\r\n }\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { PauseableEmitter } from '../../../base/common/event.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nimport { DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { TernarySearchTree } from '../../../base/common/map.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { CommandsRegistry } from '../../commands/common/commands.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nimport { IContextKeyService, SET_CONTEXT_COMMAND_ID, RawContextKey } from '../common/contextkey.js';\r\nimport { KeybindingResolver } from '../../keybinding/common/keybindingResolver.js';\r\nconst KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';\r\nexport class Context {\r\n constructor(id, parent) {\r\n this._id = id;\r\n this._parent = parent;\r\n this._value = Object.create(null);\r\n this._value['_contextId'] = id;\r\n }\r\n setValue(key, value) {\r\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\r\n if (this._value[key] !== value) {\r\n this._value[key] = value;\r\n return true;\r\n }\r\n return false;\r\n }\r\n removeValue(key) {\r\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\r\n if (key in this._value) {\r\n delete this._value[key];\r\n return true;\r\n }\r\n return false;\r\n }\r\n getValue(key) {\r\n const ret = this._value[key];\r\n if (typeof ret === 'undefined' && this._parent) {\r\n return this._parent.getValue(key);\r\n }\r\n return ret;\r\n }\r\n}\r\nclass NullContext extends Context {\r\n constructor() {\r\n super(-1, null);\r\n }\r\n setValue(key, value) {\r\n return false;\r\n }\r\n removeValue(key) {\r\n return false;\r\n }\r\n getValue(key) {\r\n return undefined;\r\n }\r\n}\r\nNullContext.INSTANCE = new NullContext();\r\nclass ConfigAwareContextValuesContainer extends Context {\r\n constructor(id, _configurationService, emitter) {\r\n super(id, null);\r\n this._configurationService = _configurationService;\r\n this._values = TernarySearchTree.forConfigKeys();\r\n this._listener = this._configurationService.onDidChangeConfiguration(event => {\r\n if (event.source === 6 /* DEFAULT */) {\r\n // new setting, reset everything\r\n const allKeys = Array.from(Iterable.map(this._values, ([k]) => k));\r\n this._values.clear();\r\n emitter.fire(new ArrayContextKeyChangeEvent(allKeys));\r\n }\r\n else {\r\n const changedKeys = [];\r\n for (const configKey of event.affectedKeys) {\r\n const contextKey = `config.${configKey}`;\r\n const cachedItems = this._values.findSuperstr(contextKey);\r\n if (cachedItems !== undefined) {\r\n changedKeys.push(...Iterable.map(cachedItems, ([key]) => key));\r\n this._values.deleteSuperstr(contextKey);\r\n }\r\n if (this._values.has(contextKey)) {\r\n changedKeys.push(contextKey);\r\n this._values.delete(contextKey);\r\n }\r\n }\r\n emitter.fire(new ArrayContextKeyChangeEvent(changedKeys));\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._listener.dispose();\r\n }\r\n getValue(key) {\r\n if (key.indexOf(ConfigAwareContextValuesContainer._keyPrefix) !== 0) {\r\n return super.getValue(key);\r\n }\r\n if (this._values.has(key)) {\r\n return this._values.get(key);\r\n }\r\n const configKey = key.substr(ConfigAwareContextValuesContainer._keyPrefix.length);\r\n const configValue = this._configurationService.getValue(configKey);\r\n let value = undefined;\r\n switch (typeof configValue) {\r\n case 'number':\r\n case 'boolean':\r\n case 'string':\r\n value = configValue;\r\n break;\r\n default:\r\n if (Array.isArray(configValue)) {\r\n value = JSON.stringify(configValue);\r\n }\r\n else {\r\n value = configValue;\r\n }\r\n }\r\n this._values.set(key, value);\r\n return value;\r\n }\r\n setValue(key, value) {\r\n return super.setValue(key, value);\r\n }\r\n removeValue(key) {\r\n return super.removeValue(key);\r\n }\r\n}\r\nConfigAwareContextValuesContainer._keyPrefix = 'config.';\r\nclass ContextKey {\r\n constructor(service, key, defaultValue) {\r\n this._service = service;\r\n this._key = key;\r\n this._defaultValue = defaultValue;\r\n this.reset();\r\n }\r\n set(value) {\r\n this._service.setContext(this._key, value);\r\n }\r\n reset() {\r\n if (typeof this._defaultValue === 'undefined') {\r\n this._service.removeContext(this._key);\r\n }\r\n else {\r\n this._service.setContext(this._key, this._defaultValue);\r\n }\r\n }\r\n get() {\r\n return this._service.getContextKeyValue(this._key);\r\n }\r\n}\r\nclass SimpleContextKeyChangeEvent {\r\n constructor(key) {\r\n this.key = key;\r\n }\r\n affectsSome(keys) {\r\n return keys.has(this.key);\r\n }\r\n}\r\nclass ArrayContextKeyChangeEvent {\r\n constructor(keys) {\r\n this.keys = keys;\r\n }\r\n affectsSome(keys) {\r\n for (const key of this.keys) {\r\n if (keys.has(key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nclass CompositeContextKeyChangeEvent {\r\n constructor(events) {\r\n this.events = events;\r\n }\r\n affectsSome(keys) {\r\n for (const e of this.events) {\r\n if (e.affectsSome(keys)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexport class AbstractContextKeyService {\r\n constructor(myContextId) {\r\n this._onDidChangeContext = new PauseableEmitter({ merge: input => new CompositeContextKeyChangeEvent(input) });\r\n this.onDidChangeContext = this._onDidChangeContext.event;\r\n this._isDisposed = false;\r\n this._myContextId = myContextId;\r\n }\r\n createKey(key, defaultValue) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n return new ContextKey(this, key, defaultValue);\r\n }\r\n bufferChangeEvents(callback) {\r\n this._onDidChangeContext.pause();\r\n try {\r\n callback();\r\n }\r\n finally {\r\n this._onDidChangeContext.resume();\r\n }\r\n }\r\n createScoped(domNode) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n return new ScopedContextKeyService(this, domNode);\r\n }\r\n contextMatchesRules(rules) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n const context = this.getContextValuesContainer(this._myContextId);\r\n const result = KeybindingResolver.contextMatchesRules(context, rules);\r\n // console.group(rules.serialize() + ' -> ' + result);\r\n // rules.keys().forEach(key => { console.log(key, ctx[key]); });\r\n // console.groupEnd();\r\n return result;\r\n }\r\n getContextKeyValue(key) {\r\n if (this._isDisposed) {\r\n return undefined;\r\n }\r\n return this.getContextValuesContainer(this._myContextId).getValue(key);\r\n }\r\n setContext(key, value) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n const myContext = this.getContextValuesContainer(this._myContextId);\r\n if (!myContext) {\r\n return;\r\n }\r\n if (myContext.setValue(key, value)) {\r\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\r\n }\r\n }\r\n removeContext(key) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n if (this.getContextValuesContainer(this._myContextId).removeValue(key)) {\r\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\r\n }\r\n }\r\n getContext(target) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this.getContextValuesContainer(findContextAttr(target));\r\n }\r\n}\r\nlet ContextKeyService = class ContextKeyService extends AbstractContextKeyService {\r\n constructor(configurationService) {\r\n super(0);\r\n this._contexts = new Map();\r\n this._toDispose = new DisposableStore();\r\n this._lastContextId = 0;\r\n const myContext = new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext);\r\n this._contexts.set(this._myContextId, myContext);\r\n this._toDispose.add(myContext);\r\n // Uncomment this to see the contexts continuously logged\r\n // let lastLoggedValue: string | null = null;\r\n // setInterval(() => {\r\n // \tlet values = Object.keys(this._contexts).map((key) => this._contexts[key]);\r\n // \tlet logValue = values.map(v => JSON.stringify(v._value, null, '\\t')).join('\\n');\r\n // \tif (lastLoggedValue !== logValue) {\r\n // \t\tlastLoggedValue = logValue;\r\n // \t\tconsole.log(lastLoggedValue);\r\n // \t}\r\n // }, 2000);\r\n }\r\n dispose() {\r\n this._onDidChangeContext.dispose();\r\n this._isDisposed = true;\r\n this._toDispose.dispose();\r\n }\r\n getContextValuesContainer(contextId) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this._contexts.get(contextId) || NullContext.INSTANCE;\r\n }\r\n createChildContext(parentContextId = this._myContextId) {\r\n if (this._isDisposed) {\r\n throw new Error(`ContextKeyService has been disposed`);\r\n }\r\n let id = (++this._lastContextId);\r\n this._contexts.set(id, new Context(id, this.getContextValuesContainer(parentContextId)));\r\n return id;\r\n }\r\n disposeContext(contextId) {\r\n if (!this._isDisposed) {\r\n this._contexts.delete(contextId);\r\n }\r\n }\r\n};\r\nContextKeyService = __decorate([\r\n __param(0, IConfigurationService)\r\n], ContextKeyService);\r\nexport { ContextKeyService };\r\nclass ScopedContextKeyService extends AbstractContextKeyService {\r\n constructor(parent, domNode) {\r\n super(parent.createChildContext());\r\n this._parentChangeListener = new MutableDisposable();\r\n this._parent = parent;\r\n this._updateParentChangeListener();\r\n this._domNode = domNode;\r\n if (this._domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\r\n let extraInfo = '';\r\n if (this._domNode.classList) {\r\n extraInfo = Array.from(this._domNode.classList.values()).join(', ');\r\n }\r\n console.error(`Element already has context attribute${extraInfo ? ': ' + extraInfo : ''}`);\r\n }\r\n this._domNode.setAttribute(KEYBINDING_CONTEXT_ATTR, String(this._myContextId));\r\n }\r\n _updateParentChangeListener() {\r\n // Forward parent events to this listener. Parent will change.\r\n this._parentChangeListener.value = this._parent.onDidChangeContext(this._onDidChangeContext.fire, this._onDidChangeContext);\r\n }\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n this._onDidChangeContext.dispose();\r\n this._parent.disposeContext(this._myContextId);\r\n this._parentChangeListener.dispose();\r\n this._domNode.removeAttribute(KEYBINDING_CONTEXT_ATTR);\r\n this._isDisposed = true;\r\n }\r\n getContextValuesContainer(contextId) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this._parent.getContextValuesContainer(contextId);\r\n }\r\n createChildContext(parentContextId = this._myContextId) {\r\n if (this._isDisposed) {\r\n throw new Error(`ScopedContextKeyService has been disposed`);\r\n }\r\n return this._parent.createChildContext(parentContextId);\r\n }\r\n disposeContext(contextId) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n this._parent.disposeContext(contextId);\r\n }\r\n}\r\nfunction findContextAttr(domNode) {\r\n while (domNode) {\r\n if (domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\r\n const attr = domNode.getAttribute(KEYBINDING_CONTEXT_ATTR);\r\n if (attr) {\r\n return parseInt(attr, 10);\r\n }\r\n return NaN;\r\n }\r\n domNode = domNode.parentElement;\r\n }\r\n return 0;\r\n}\r\nCommandsRegistry.registerCommand(SET_CONTEXT_COMMAND_ID, function (accessor, contextKey, contextValue) {\r\n accessor.get(IContextKeyService).createKey(String(contextKey), contextValue);\r\n});\r\nCommandsRegistry.registerCommand({\r\n id: 'getContextKeyInfo',\r\n handler() {\r\n return [...RawContextKey.all()].sort((a, b) => a.key.localeCompare(b.key));\r\n },\r\n description: {\r\n description: localize('getContextKeyInfo', \"A command that returns information about context keys\"),\r\n args: []\r\n }\r\n});\r\nCommandsRegistry.registerCommand('_generateContextKeyInfo', function () {\r\n const result = [];\r\n const seen = new Set();\r\n for (let info of RawContextKey.all()) {\r\n if (!seen.has(info.key)) {\r\n seen.add(info.key);\r\n result.push(info);\r\n }\r\n }\r\n result.sort((a, b) => a.key.localeCompare(b.key));\r\n console.log(JSON.stringify(result, undefined, 2));\r\n});\r\n","\n import API from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../css-loader/dist/cjs.js!./contextMenuHandler.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../css-loader/dist/cjs.js!./contextMenuHandler.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./contextview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./contextview.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './contextview.css';\r\nimport * as DOM from '../../dom.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { toDisposable, Disposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { BrowserFeatures } from '../../canIUse.js';\r\nexport var LayoutAnchorMode;\r\n(function (LayoutAnchorMode) {\r\n LayoutAnchorMode[LayoutAnchorMode[\"AVOID\"] = 0] = \"AVOID\";\r\n LayoutAnchorMode[LayoutAnchorMode[\"ALIGN\"] = 1] = \"ALIGN\";\r\n})(LayoutAnchorMode || (LayoutAnchorMode = {}));\r\n/**\r\n * Lays out a one dimensional view next to an anchor in a viewport.\r\n *\r\n * @returns The view offset within the viewport.\r\n */\r\nexport function layout(viewportSize, viewSize, anchor) {\r\n const layoutAfterAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset : anchor.offset + anchor.size;\r\n const layoutBeforeAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset + anchor.size : anchor.offset;\r\n if (anchor.position === 0 /* Before */) {\r\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\r\n return layoutAfterAnchorBoundary; // happy case, lay it out after the anchor\r\n }\r\n if (viewSize <= layoutBeforeAnchorBoundary) {\r\n return layoutBeforeAnchorBoundary - viewSize; // ok case, lay it out before the anchor\r\n }\r\n return Math.max(viewportSize - viewSize, 0); // sad case, lay it over the anchor\r\n }\r\n else {\r\n if (viewSize <= layoutBeforeAnchorBoundary) {\r\n return layoutBeforeAnchorBoundary - viewSize; // happy case, lay it out before the anchor\r\n }\r\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\r\n return layoutAfterAnchorBoundary; // ok case, lay it out after the anchor\r\n }\r\n return 0; // sad case, lay it over the anchor\r\n }\r\n}\r\nexport class ContextView extends Disposable {\r\n constructor(container, domPosition) {\r\n super();\r\n this.container = null;\r\n this.delegate = null;\r\n this.toDisposeOnClean = Disposable.None;\r\n this.toDisposeOnSetContainer = Disposable.None;\r\n this.shadowRoot = null;\r\n this.shadowRootHostElement = null;\r\n this.view = DOM.$('.context-view');\r\n this.useFixedPosition = false;\r\n this.useShadowDOM = false;\r\n DOM.hide(this.view);\r\n this.setContainer(container, domPosition);\r\n this._register(toDisposable(() => this.setContainer(null, 1 /* ABSOLUTE */)));\r\n }\r\n setContainer(container, domPosition) {\r\n var _a;\r\n if (this.container) {\r\n this.toDisposeOnSetContainer.dispose();\r\n if (this.shadowRoot) {\r\n this.shadowRoot.removeChild(this.view);\r\n this.shadowRoot = null;\r\n (_a = this.shadowRootHostElement) === null || _a === void 0 ? void 0 : _a.remove();\r\n this.shadowRootHostElement = null;\r\n }\r\n else {\r\n this.container.removeChild(this.view);\r\n }\r\n this.container = null;\r\n }\r\n if (container) {\r\n this.container = container;\r\n this.useFixedPosition = domPosition !== 1 /* ABSOLUTE */;\r\n this.useShadowDOM = domPosition === 3 /* FIXED_SHADOW */;\r\n if (this.useShadowDOM) {\r\n this.shadowRootHostElement = DOM.$('.shadow-root-host');\r\n this.container.appendChild(this.shadowRootHostElement);\r\n this.shadowRoot = this.shadowRootHostElement.attachShadow({ mode: 'open' });\r\n const style = document.createElement('style');\r\n style.textContent = SHADOW_ROOT_CSS;\r\n this.shadowRoot.appendChild(style);\r\n this.shadowRoot.appendChild(this.view);\r\n this.shadowRoot.appendChild(DOM.$('slot'));\r\n }\r\n else {\r\n this.container.appendChild(this.view);\r\n }\r\n const toDisposeOnSetContainer = new DisposableStore();\r\n ContextView.BUBBLE_UP_EVENTS.forEach(event => {\r\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\r\n this.onDOMEvent(e, false);\r\n }));\r\n });\r\n ContextView.BUBBLE_DOWN_EVENTS.forEach(event => {\r\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\r\n this.onDOMEvent(e, true);\r\n }, true));\r\n });\r\n this.toDisposeOnSetContainer = toDisposeOnSetContainer;\r\n }\r\n }\r\n show(delegate) {\r\n if (this.isVisible()) {\r\n this.hide();\r\n }\r\n // Show static box\r\n DOM.clearNode(this.view);\r\n this.view.className = 'context-view';\r\n this.view.style.top = '0px';\r\n this.view.style.left = '0px';\r\n this.view.style.zIndex = '2500';\r\n this.view.style.position = this.useFixedPosition ? 'fixed' : 'absolute';\r\n DOM.show(this.view);\r\n // Render content\r\n this.toDisposeOnClean = delegate.render(this.view) || Disposable.None;\r\n // Set active delegate\r\n this.delegate = delegate;\r\n // Layout\r\n this.doLayout();\r\n // Focus\r\n if (this.delegate.focus) {\r\n this.delegate.focus();\r\n }\r\n }\r\n getViewElement() {\r\n return this.view;\r\n }\r\n layout() {\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n if (this.delegate.canRelayout === false && !(platform.isIOS && BrowserFeatures.pointerEvents)) {\r\n this.hide();\r\n return;\r\n }\r\n if (this.delegate.layout) {\r\n this.delegate.layout();\r\n }\r\n this.doLayout();\r\n }\r\n doLayout() {\r\n // Check that we still have a delegate - this.delegate.layout may have hidden\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n // Get anchor\r\n let anchor = this.delegate.getAnchor();\r\n // Compute around\r\n let around;\r\n // Get the element's position and size (to anchor the view)\r\n if (DOM.isHTMLElement(anchor)) {\r\n let elementPosition = DOM.getDomNodePagePosition(anchor);\r\n around = {\r\n top: elementPosition.top,\r\n left: elementPosition.left,\r\n width: elementPosition.width,\r\n height: elementPosition.height\r\n };\r\n }\r\n else {\r\n around = {\r\n top: anchor.y,\r\n left: anchor.x,\r\n width: anchor.width || 1,\r\n height: anchor.height || 2\r\n };\r\n }\r\n const viewSizeWidth = DOM.getTotalWidth(this.view);\r\n const viewSizeHeight = DOM.getTotalHeight(this.view);\r\n const anchorPosition = this.delegate.anchorPosition || 0 /* BELOW */;\r\n const anchorAlignment = this.delegate.anchorAlignment || 0 /* LEFT */;\r\n const anchorAxisAlignment = this.delegate.anchorAxisAlignment || 0 /* VERTICAL */;\r\n let top;\r\n let left;\r\n if (anchorAxisAlignment === 0 /* VERTICAL */) {\r\n const verticalAnchor = { offset: around.top - window.pageYOffset, size: around.height, position: anchorPosition === 0 /* BELOW */ ? 0 /* Before */ : 1 /* After */ };\r\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* LEFT */ ? 0 /* Before */ : 1 /* After */, mode: LayoutAnchorMode.ALIGN };\r\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\r\n // if view intersects vertically with anchor, we must avoid the anchor\r\n if (Range.intersects({ start: top, end: top + viewSizeHeight }, { start: verticalAnchor.offset, end: verticalAnchor.offset + verticalAnchor.size })) {\r\n horizontalAnchor.mode = LayoutAnchorMode.AVOID;\r\n }\r\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\r\n }\r\n else {\r\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* LEFT */ ? 0 /* Before */ : 1 /* After */ };\r\n const verticalAnchor = { offset: around.top, size: around.height, position: anchorPosition === 0 /* BELOW */ ? 0 /* Before */ : 1 /* After */, mode: LayoutAnchorMode.ALIGN };\r\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\r\n // if view intersects horizontally with anchor, we must avoid the anchor\r\n if (Range.intersects({ start: left, end: left + viewSizeWidth }, { start: horizontalAnchor.offset, end: horizontalAnchor.offset + horizontalAnchor.size })) {\r\n verticalAnchor.mode = LayoutAnchorMode.AVOID;\r\n }\r\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\r\n }\r\n this.view.classList.remove('top', 'bottom', 'left', 'right');\r\n this.view.classList.add(anchorPosition === 0 /* BELOW */ ? 'bottom' : 'top');\r\n this.view.classList.add(anchorAlignment === 0 /* LEFT */ ? 'left' : 'right');\r\n this.view.classList.toggle('fixed', this.useFixedPosition);\r\n const containerPosition = DOM.getDomNodePagePosition(this.container);\r\n this.view.style.top = `${top - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).top : containerPosition.top)}px`;\r\n this.view.style.left = `${left - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).left : containerPosition.left)}px`;\r\n this.view.style.width = 'initial';\r\n }\r\n hide(data) {\r\n const delegate = this.delegate;\r\n this.delegate = null;\r\n if (delegate === null || delegate === void 0 ? void 0 : delegate.onHide) {\r\n delegate.onHide(data);\r\n }\r\n this.toDisposeOnClean.dispose();\r\n DOM.hide(this.view);\r\n }\r\n isVisible() {\r\n return !!this.delegate;\r\n }\r\n onDOMEvent(e, onCapture) {\r\n if (this.delegate) {\r\n if (this.delegate.onDOMEvent) {\r\n this.delegate.onDOMEvent(e, document.activeElement);\r\n }\r\n else if (onCapture && !DOM.isAncestor(e.target, this.container)) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.hide();\r\n super.dispose();\r\n }\r\n}\r\nContextView.BUBBLE_UP_EVENTS = ['click', 'keydown', 'focus', 'blur'];\r\nContextView.BUBBLE_DOWN_EVENTS = ['click'];\r\nlet 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\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`;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../../nls.js';\r\nimport * as strings from '../../../common/strings.js';\r\nimport { SubmenuAction, Separator, EmptySubmenuAction } from '../../../common/actions.js';\r\nimport { ActionBar } from '../actionbar/actionbar.js';\r\nimport { EventType, EventHelper, isAncestor, addDisposableListener, append, $, clearNode, createStyleSheet, isInShadowDOM, getActiveElement, Dimension } from '../../dom.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { RunOnceScheduler } from '../../../common/async.js';\r\nimport { DisposableStore } from '../../../common/lifecycle.js';\r\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { layout } from '../contextview/contextview.js';\r\nimport { isLinux, isMacintosh } from '../../../common/platform.js';\r\nimport { Codicon, registerCodicon } from '../../../common/codicons.js';\r\nimport { BaseActionViewItem, ActionViewItem } from '../actionbar/actionViewItems.js';\r\nimport { formatRule } from '../codicons/codiconStyles.js';\r\nimport { isFirefox } from '../../browser.js';\r\nimport { StandardMouseEvent } from '../../mouseEvent.js';\r\nimport { stripIcons } from '../../../common/iconLabels.js';\r\nexport const MENU_MNEMONIC_REGEX = /\\(&([^\\s&])\\)|(^|[^&])&([^\\s&])/;\r\nexport const MENU_ESCAPED_MNEMONIC_REGEX = /(&)?(&)([^\\s&])/g;\r\nconst menuSelectionIcon = registerCodicon('menu-selection', Codicon.check);\r\nconst menuSubmenuIcon = registerCodicon('menu-submenu', Codicon.chevronRight);\r\nexport var Direction;\r\n(function (Direction) {\r\n Direction[Direction[\"Right\"] = 0] = \"Right\";\r\n Direction[Direction[\"Left\"] = 1] = \"Left\";\r\n})(Direction || (Direction = {}));\r\nexport class Menu extends ActionBar {\r\n constructor(container, actions, options = {}) {\r\n container.classList.add('monaco-menu-container');\r\n container.setAttribute('role', 'presentation');\r\n const menuElement = document.createElement('div');\r\n menuElement.classList.add('monaco-menu');\r\n menuElement.setAttribute('role', 'presentation');\r\n super(menuElement, {\r\n orientation: 1 /* VERTICAL */,\r\n actionViewItemProvider: action => this.doGetActionViewItem(action, options, parentData),\r\n context: options.context,\r\n actionRunner: options.actionRunner,\r\n ariaLabel: options.ariaLabel,\r\n focusOnlyEnabledItems: true,\r\n triggerKeys: { keys: [3 /* Enter */, ...(isMacintosh || isLinux ? [10 /* Space */] : [])], keyDown: true }\r\n });\r\n this.menuElement = menuElement;\r\n this.actionsList.setAttribute('role', 'menu');\r\n this.actionsList.tabIndex = 0;\r\n this.menuDisposables = this._register(new DisposableStore());\r\n this.initializeStyleSheet(container);\r\n addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\r\n const event = new StandardKeyboardEvent(e);\r\n // Stop tab navigation of menus\r\n if (event.equals(2 /* Tab */)) {\r\n e.preventDefault();\r\n }\r\n });\r\n if (options.enableMnemonics) {\r\n this.menuDisposables.add(addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\r\n const key = e.key.toLocaleLowerCase();\r\n if (this.mnemonics.has(key)) {\r\n EventHelper.stop(e, true);\r\n const actions = this.mnemonics.get(key);\r\n if (actions.length === 1) {\r\n if (actions[0] instanceof SubmenuMenuActionViewItem && actions[0].container) {\r\n this.focusItemByElement(actions[0].container);\r\n }\r\n actions[0].onClick(e);\r\n }\r\n if (actions.length > 1) {\r\n const action = actions.shift();\r\n if (action && action.container) {\r\n this.focusItemByElement(action.container);\r\n actions.push(action);\r\n }\r\n this.mnemonics.set(key, actions);\r\n }\r\n }\r\n }));\r\n }\r\n if (isLinux) {\r\n this._register(addDisposableListener(menuElement, EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(14 /* Home */) || event.equals(11 /* PageUp */)) {\r\n this.focusedItem = this.viewItems.length - 1;\r\n this.focusNext();\r\n EventHelper.stop(e, true);\r\n }\r\n else if (event.equals(13 /* End */) || event.equals(12 /* PageDown */)) {\r\n this.focusedItem = 0;\r\n this.focusPrevious();\r\n EventHelper.stop(e, true);\r\n }\r\n }));\r\n }\r\n this._register(addDisposableListener(this.domNode, EventType.MOUSE_OUT, e => {\r\n let relatedTarget = e.relatedTarget;\r\n if (!isAncestor(relatedTarget, this.domNode)) {\r\n this.focusedItem = undefined;\r\n this.updateFocus();\r\n e.stopPropagation();\r\n }\r\n }));\r\n this._register(addDisposableListener(this.actionsList, EventType.MOUSE_OVER, e => {\r\n let target = e.target;\r\n if (!target || !isAncestor(target, this.actionsList) || target === this.actionsList) {\r\n return;\r\n }\r\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\r\n target = target.parentElement;\r\n }\r\n if (target.classList.contains('action-item')) {\r\n const lastFocusedItem = this.focusedItem;\r\n this.setFocusedItem(target);\r\n if (lastFocusedItem !== this.focusedItem) {\r\n this.updateFocus();\r\n }\r\n }\r\n }));\r\n let parentData = {\r\n parent: this\r\n };\r\n this.mnemonics = new Map();\r\n // Scroll Logic\r\n this.scrollableElement = this._register(new DomScrollableElement(menuElement, {\r\n alwaysConsumeMouseWheel: true,\r\n horizontal: 2 /* Hidden */,\r\n vertical: 3 /* Visible */,\r\n verticalScrollbarSize: 7,\r\n handleMouseWheel: true,\r\n useShadows: true\r\n }));\r\n const scrollElement = this.scrollableElement.getDomNode();\r\n scrollElement.style.position = '';\r\n this._register(addDisposableListener(scrollElement, EventType.MOUSE_UP, e => {\r\n // Absorb clicks in menu dead space https://github.com/microsoft/vscode/issues/63575\r\n // We do this on the scroll element so the scroll bar doesn't dismiss the menu either\r\n e.preventDefault();\r\n }));\r\n menuElement.style.maxHeight = `${Math.max(10, window.innerHeight - container.getBoundingClientRect().top - 35)}px`;\r\n actions = actions.filter(a => {\r\n var _a;\r\n if ((_a = options.submenuIds) === null || _a === void 0 ? void 0 : _a.has(a.id)) {\r\n console.warn(`Found submenu cycle: ${a.id}`);\r\n return false;\r\n }\r\n return true;\r\n });\r\n this.push(actions, { icon: true, label: true, isMenu: true });\r\n container.appendChild(this.scrollableElement.getDomNode());\r\n this.scrollableElement.scanDomNode();\r\n this.viewItems.filter(item => !(item instanceof MenuSeparatorActionViewItem)).forEach((item, index, array) => {\r\n item.updatePositionInSet(index + 1, array.length);\r\n });\r\n }\r\n initializeStyleSheet(container) {\r\n if (isInShadowDOM(container)) {\r\n this.styleSheet = createStyleSheet(container);\r\n this.styleSheet.textContent = MENU_WIDGET_CSS;\r\n }\r\n else {\r\n if (!Menu.globalStyleSheet) {\r\n Menu.globalStyleSheet = createStyleSheet();\r\n Menu.globalStyleSheet.textContent = MENU_WIDGET_CSS;\r\n }\r\n this.styleSheet = Menu.globalStyleSheet;\r\n }\r\n }\r\n style(style) {\r\n const container = this.getContainer();\r\n const fgColor = style.foregroundColor ? `${style.foregroundColor}` : '';\r\n const bgColor = style.backgroundColor ? `${style.backgroundColor}` : '';\r\n const border = style.borderColor ? `1px solid ${style.borderColor}` : '';\r\n const shadow = style.shadowColor ? `0 2px 4px ${style.shadowColor}` : '';\r\n container.style.border = border;\r\n this.domNode.style.color = fgColor;\r\n this.domNode.style.backgroundColor = bgColor;\r\n container.style.boxShadow = shadow;\r\n if (this.viewItems) {\r\n this.viewItems.forEach(item => {\r\n if (item instanceof BaseMenuActionViewItem || item instanceof MenuSeparatorActionViewItem) {\r\n item.style(style);\r\n }\r\n });\r\n }\r\n }\r\n getContainer() {\r\n return this.scrollableElement.getDomNode();\r\n }\r\n get onScroll() {\r\n return this.scrollableElement.onScroll;\r\n }\r\n focusItemByElement(element) {\r\n const lastFocusedItem = this.focusedItem;\r\n this.setFocusedItem(element);\r\n if (lastFocusedItem !== this.focusedItem) {\r\n this.updateFocus();\r\n }\r\n }\r\n setFocusedItem(element) {\r\n for (let i = 0; i < this.actionsList.children.length; i++) {\r\n let elem = this.actionsList.children[i];\r\n if (element === elem) {\r\n this.focusedItem = i;\r\n break;\r\n }\r\n }\r\n }\r\n updateFocus(fromRight) {\r\n super.updateFocus(fromRight, true);\r\n if (typeof this.focusedItem !== 'undefined') {\r\n // Workaround for #80047 caused by an issue in chromium\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=414283\r\n // When that's fixed, just call this.scrollableElement.scanDomNode()\r\n this.scrollableElement.setScrollPosition({\r\n scrollTop: Math.round(this.menuElement.scrollTop)\r\n });\r\n }\r\n }\r\n doGetActionViewItem(action, options, parentData) {\r\n if (action instanceof Separator) {\r\n return new MenuSeparatorActionViewItem(options.context, action, { icon: true });\r\n }\r\n else if (action instanceof SubmenuAction) {\r\n const menuActionViewItem = new SubmenuMenuActionViewItem(action, action.actions, parentData, Object.assign(Object.assign({}, options), { submenuIds: new Set([...(options.submenuIds || []), action.id]) }));\r\n if (options.enableMnemonics) {\r\n const mnemonic = menuActionViewItem.getMnemonic();\r\n if (mnemonic && menuActionViewItem.isEnabled()) {\r\n let actionViewItems = [];\r\n if (this.mnemonics.has(mnemonic)) {\r\n actionViewItems = this.mnemonics.get(mnemonic);\r\n }\r\n actionViewItems.push(menuActionViewItem);\r\n this.mnemonics.set(mnemonic, actionViewItems);\r\n }\r\n }\r\n return menuActionViewItem;\r\n }\r\n else {\r\n const menuItemOptions = { enableMnemonics: options.enableMnemonics, useEventAsContext: options.useEventAsContext };\r\n if (options.getKeyBinding) {\r\n const keybinding = options.getKeyBinding(action);\r\n if (keybinding) {\r\n const keybindingLabel = keybinding.getLabel();\r\n if (keybindingLabel) {\r\n menuItemOptions.keybinding = keybindingLabel;\r\n }\r\n }\r\n }\r\n const menuActionViewItem = new BaseMenuActionViewItem(options.context, action, menuItemOptions);\r\n if (options.enableMnemonics) {\r\n const mnemonic = menuActionViewItem.getMnemonic();\r\n if (mnemonic && menuActionViewItem.isEnabled()) {\r\n let actionViewItems = [];\r\n if (this.mnemonics.has(mnemonic)) {\r\n actionViewItems = this.mnemonics.get(mnemonic);\r\n }\r\n actionViewItems.push(menuActionViewItem);\r\n this.mnemonics.set(mnemonic, actionViewItems);\r\n }\r\n }\r\n return menuActionViewItem;\r\n }\r\n }\r\n}\r\nclass BaseMenuActionViewItem extends BaseActionViewItem {\r\n constructor(ctx, action, options = {}) {\r\n options.isMenu = true;\r\n super(action, action, options);\r\n this.options = options;\r\n this.options.icon = options.icon !== undefined ? options.icon : false;\r\n this.options.label = options.label !== undefined ? options.label : true;\r\n this.cssClass = '';\r\n // Set mnemonic\r\n if (this.options.label && options.enableMnemonics) {\r\n let label = this.getAction().label;\r\n if (label) {\r\n let matches = MENU_MNEMONIC_REGEX.exec(label);\r\n if (matches) {\r\n this.mnemonic = (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase();\r\n }\r\n }\r\n }\r\n // Add mouse up listener later to avoid accidental clicks\r\n this.runOnceToEnableMouseUp = new RunOnceScheduler(() => {\r\n if (!this.element) {\r\n return;\r\n }\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_UP, e => {\r\n // removed default prevention as it conflicts\r\n // with BaseActionViewItem #101537\r\n // add back if issues arise and link new issue\r\n EventHelper.stop(e, true);\r\n // See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard\r\n // > Writing to the clipboard\r\n // > You can use the \"cut\" and \"copy\" commands without any special\r\n // permission if you are using them in a short-lived event handler\r\n // for a user action (for example, a click handler).\r\n // => to get the Copy and Paste context menu actions working on Firefox,\r\n // there should be no timeout here\r\n if (isFirefox) {\r\n const mouseEvent = new StandardMouseEvent(e);\r\n // Allowing right click to trigger the event causes the issue described below,\r\n // but since the solution below does not work in FF, we must disable right click\r\n if (mouseEvent.rightButton) {\r\n return;\r\n }\r\n this.onClick(e);\r\n }\r\n // In all other cases, set timout to allow context menu cancellation to trigger\r\n // otherwise the action will destroy the menu and a second context menu\r\n // will still trigger for right click.\r\n else {\r\n setTimeout(() => {\r\n this.onClick(e);\r\n }, 0);\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.CONTEXT_MENU, e => {\r\n EventHelper.stop(e, true);\r\n }));\r\n }, 100);\r\n this._register(this.runOnceToEnableMouseUp);\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (!this.element) {\r\n return;\r\n }\r\n this.container = container;\r\n this.item = append(this.element, $('a.action-menu-item'));\r\n if (this._action.id === Separator.ID) {\r\n // A separator is a presentation item\r\n this.item.setAttribute('role', 'presentation');\r\n }\r\n else {\r\n this.item.setAttribute('role', 'menuitem');\r\n if (this.mnemonic) {\r\n this.item.setAttribute('aria-keyshortcuts', `${this.mnemonic}`);\r\n }\r\n }\r\n this.check = append(this.item, $('span.menu-item-check' + menuSelectionIcon.cssSelector));\r\n this.check.setAttribute('role', 'none');\r\n this.label = append(this.item, $('span.action-label'));\r\n if (this.options.label && this.options.keybinding) {\r\n append(this.item, $('span.keybinding')).textContent = this.options.keybinding;\r\n }\r\n // Adds mouse up listener to actually run the action\r\n this.runOnceToEnableMouseUp.schedule();\r\n this.updateClass();\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateEnabled();\r\n this.updateChecked();\r\n }\r\n blur() {\r\n super.blur();\r\n this.applyStyle();\r\n }\r\n focus() {\r\n super.focus();\r\n if (this.item) {\r\n this.item.focus();\r\n }\r\n this.applyStyle();\r\n }\r\n updatePositionInSet(pos, setSize) {\r\n if (this.item) {\r\n this.item.setAttribute('aria-posinset', `${pos}`);\r\n this.item.setAttribute('aria-setsize', `${setSize}`);\r\n }\r\n }\r\n updateLabel() {\r\n if (!this.label) {\r\n return;\r\n }\r\n if (this.options.label) {\r\n clearNode(this.label);\r\n let label = stripIcons(this.getAction().label);\r\n if (label) {\r\n const cleanLabel = cleanMnemonic(label);\r\n if (!this.options.enableMnemonics) {\r\n label = cleanLabel;\r\n }\r\n this.label.setAttribute('aria-label', cleanLabel.replace(/&&/g, '&'));\r\n const matches = MENU_MNEMONIC_REGEX.exec(label);\r\n if (matches) {\r\n label = strings.escape(label);\r\n // This is global, reset it\r\n MENU_ESCAPED_MNEMONIC_REGEX.lastIndex = 0;\r\n let escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\r\n // We can't use negative lookbehind so if we match our negative and skip\r\n while (escMatch && escMatch[1]) {\r\n escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\r\n }\r\n const replaceDoubleEscapes = (str) => str.replace(/&&/g, '&');\r\n if (escMatch) {\r\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)), ' '));\r\n }\r\n else {\r\n this.label.innerText = replaceDoubleEscapes(label).trim();\r\n }\r\n if (this.item) {\r\n this.item.setAttribute('aria-keyshortcuts', (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase());\r\n }\r\n }\r\n else {\r\n this.label.innerText = label.replace(/&&/g, '&').trim();\r\n }\r\n }\r\n }\r\n }\r\n updateTooltip() {\r\n let title = null;\r\n if (this.getAction().tooltip) {\r\n title = this.getAction().tooltip;\r\n }\r\n else if (!this.options.label && this.getAction().label && this.options.icon) {\r\n title = this.getAction().label;\r\n if (this.options.keybinding) {\r\n title = nls.localize({ key: 'titleLabel', comment: ['action title', 'action keybinding'] }, \"{0} ({1})\", title, this.options.keybinding);\r\n }\r\n }\r\n if (title && this.item) {\r\n this.item.title = title;\r\n }\r\n }\r\n updateClass() {\r\n if (this.cssClass && this.item) {\r\n this.item.classList.remove(...this.cssClass.split(' '));\r\n }\r\n if (this.options.icon && this.label) {\r\n this.cssClass = this.getAction().class || '';\r\n this.label.classList.add('icon');\r\n if (this.cssClass) {\r\n this.label.classList.add(...this.cssClass.split(' '));\r\n }\r\n this.updateEnabled();\r\n }\r\n else if (this.label) {\r\n this.label.classList.remove('icon');\r\n }\r\n }\r\n updateEnabled() {\r\n if (this.getAction().enabled) {\r\n if (this.element) {\r\n this.element.classList.remove('disabled');\r\n this.element.removeAttribute('aria-disabled');\r\n }\r\n if (this.item) {\r\n this.item.classList.remove('disabled');\r\n this.item.removeAttribute('aria-disabled');\r\n this.item.tabIndex = 0;\r\n }\r\n }\r\n else {\r\n if (this.element) {\r\n this.element.classList.add('disabled');\r\n this.element.setAttribute('aria-disabled', 'true');\r\n }\r\n if (this.item) {\r\n this.item.classList.add('disabled');\r\n this.item.setAttribute('aria-disabled', 'true');\r\n }\r\n }\r\n }\r\n updateChecked() {\r\n if (!this.item) {\r\n return;\r\n }\r\n if (this.getAction().checked) {\r\n this.item.classList.add('checked');\r\n this.item.setAttribute('role', 'menuitemcheckbox');\r\n this.item.setAttribute('aria-checked', 'true');\r\n }\r\n else {\r\n this.item.classList.remove('checked');\r\n this.item.setAttribute('role', 'menuitem');\r\n this.item.setAttribute('aria-checked', 'false');\r\n }\r\n }\r\n getMnemonic() {\r\n return this.mnemonic;\r\n }\r\n applyStyle() {\r\n if (!this.menuStyle) {\r\n return;\r\n }\r\n const isSelected = this.element && this.element.classList.contains('focused');\r\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\r\n const bgColor = isSelected && this.menuStyle.selectionBackgroundColor ? this.menuStyle.selectionBackgroundColor : undefined;\r\n const border = isSelected && this.menuStyle.selectionBorderColor ? `thin solid ${this.menuStyle.selectionBorderColor}` : '';\r\n if (this.item) {\r\n this.item.style.color = fgColor ? fgColor.toString() : '';\r\n this.item.style.backgroundColor = bgColor ? bgColor.toString() : '';\r\n }\r\n if (this.check) {\r\n this.check.style.color = fgColor ? fgColor.toString() : '';\r\n }\r\n if (this.container) {\r\n this.container.style.border = border;\r\n }\r\n }\r\n style(style) {\r\n this.menuStyle = style;\r\n this.applyStyle();\r\n }\r\n}\r\nclass SubmenuMenuActionViewItem extends BaseMenuActionViewItem {\r\n constructor(action, submenuActions, parentData, submenuOptions) {\r\n super(action, action, submenuOptions);\r\n this.submenuActions = submenuActions;\r\n this.parentData = parentData;\r\n this.submenuOptions = submenuOptions;\r\n this.mysubmenu = null;\r\n this.submenuDisposables = this._register(new DisposableStore());\r\n this.mouseOver = false;\r\n this.expandDirection = submenuOptions && submenuOptions.expandDirection !== undefined ? submenuOptions.expandDirection : Direction.Right;\r\n this.showScheduler = new RunOnceScheduler(() => {\r\n if (this.mouseOver) {\r\n this.cleanupExistingSubmenu(false);\r\n this.createSubmenu(false);\r\n }\r\n }, 250);\r\n this.hideScheduler = new RunOnceScheduler(() => {\r\n if (this.element && (!isAncestor(getActiveElement(), this.element) && this.parentData.submenu === this.mysubmenu)) {\r\n this.parentData.parent.focus(false);\r\n this.cleanupExistingSubmenu(true);\r\n }\r\n }, 750);\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (!this.element) {\r\n return;\r\n }\r\n if (this.item) {\r\n this.item.classList.add('monaco-submenu-item');\r\n this.item.tabIndex = 0;\r\n this.item.setAttribute('aria-haspopup', 'true');\r\n this.updateAriaExpanded('false');\r\n this.submenuIndicator = append(this.item, $('span.submenu-indicator' + menuSubmenuIcon.cssSelector));\r\n this.submenuIndicator.setAttribute('aria-hidden', 'true');\r\n }\r\n this._register(addDisposableListener(this.element, EventType.KEY_UP, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(17 /* RightArrow */) || event.equals(3 /* Enter */)) {\r\n EventHelper.stop(e, true);\r\n this.createSubmenu(true);\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (getActiveElement() === this.item) {\r\n if (event.equals(17 /* RightArrow */) || event.equals(3 /* Enter */)) {\r\n EventHelper.stop(e, true);\r\n }\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_OVER, e => {\r\n if (!this.mouseOver) {\r\n this.mouseOver = true;\r\n this.showScheduler.schedule();\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_LEAVE, e => {\r\n this.mouseOver = false;\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.FOCUS_OUT, e => {\r\n if (this.element && !isAncestor(getActiveElement(), this.element)) {\r\n this.hideScheduler.schedule();\r\n }\r\n }));\r\n this._register(this.parentData.parent.onScroll(() => {\r\n this.parentData.parent.focus(false);\r\n this.cleanupExistingSubmenu(false);\r\n }));\r\n }\r\n updateEnabled() {\r\n // override on submenu entry\r\n // native menus do not observe enablement on sumbenus\r\n // we mimic that behavior\r\n }\r\n onClick(e) {\r\n // stop clicking from trying to run an action\r\n EventHelper.stop(e, true);\r\n this.cleanupExistingSubmenu(false);\r\n this.createSubmenu(true);\r\n }\r\n cleanupExistingSubmenu(force) {\r\n if (this.parentData.submenu && (force || (this.parentData.submenu !== this.mysubmenu))) {\r\n // disposal may throw if the submenu has already been removed\r\n try {\r\n this.parentData.submenu.dispose();\r\n }\r\n catch (_a) { }\r\n this.parentData.submenu = undefined;\r\n this.updateAriaExpanded('false');\r\n if (this.submenuContainer) {\r\n this.submenuDisposables.clear();\r\n this.submenuContainer = undefined;\r\n }\r\n }\r\n }\r\n calculateSubmenuMenuLayout(windowDimensions, submenu, entry, expandDirection) {\r\n const ret = { top: 0, left: 0 };\r\n // Start with horizontal\r\n ret.left = layout(windowDimensions.width, submenu.width, { position: expandDirection === Direction.Right ? 0 /* Before */ : 1 /* After */, offset: entry.left, size: entry.width });\r\n // We don't have enough room to layout the menu fully, so we are overlapping the menu\r\n if (ret.left >= entry.left && ret.left < entry.left + entry.width) {\r\n if (entry.left + 10 + submenu.width <= windowDimensions.width) {\r\n ret.left = entry.left + 10;\r\n }\r\n entry.top += 10;\r\n entry.height = 0;\r\n }\r\n // Now that we have a horizontal position, try layout vertically\r\n ret.top = layout(windowDimensions.height, submenu.height, { position: 0 /* Before */, offset: entry.top, size: 0 });\r\n // We didn't have enough room below, but we did above, so we shift down to align the menu\r\n if (ret.top + submenu.height === entry.top && ret.top + entry.height + submenu.height <= windowDimensions.height) {\r\n ret.top += entry.height;\r\n }\r\n return ret;\r\n }\r\n createSubmenu(selectFirstItem = true) {\r\n if (!this.element) {\r\n return;\r\n }\r\n if (!this.parentData.submenu) {\r\n this.updateAriaExpanded('true');\r\n this.submenuContainer = append(this.element, $('div.monaco-submenu'));\r\n this.submenuContainer.classList.add('menubar-menu-items-holder', 'context-view');\r\n // Set the top value of the menu container before construction\r\n // This allows the menu constructor to calculate the proper max height\r\n const computedStyles = getComputedStyle(this.parentData.parent.domNode);\r\n const paddingTop = parseFloat(computedStyles.paddingTop || '0') || 0;\r\n // this.submenuContainer.style.top = `${this.element.offsetTop - this.parentData.parent.scrollOffset - paddingTop}px`;\r\n this.submenuContainer.style.zIndex = '1';\r\n this.submenuContainer.style.position = 'fixed';\r\n this.submenuContainer.style.top = '0';\r\n this.submenuContainer.style.left = '0';\r\n this.parentData.submenu = new Menu(this.submenuContainer, this.submenuActions.length ? this.submenuActions : [new EmptySubmenuAction()], this.submenuOptions);\r\n if (this.menuStyle) {\r\n this.parentData.submenu.style(this.menuStyle);\r\n }\r\n // layout submenu\r\n const entryBox = this.element.getBoundingClientRect();\r\n const entryBoxUpdated = {\r\n top: entryBox.top - paddingTop,\r\n left: entryBox.left,\r\n height: entryBox.height + 2 * paddingTop,\r\n width: entryBox.width\r\n };\r\n const viewBox = this.submenuContainer.getBoundingClientRect();\r\n const { top, left } = this.calculateSubmenuMenuLayout(new Dimension(window.innerWidth, window.innerHeight), Dimension.lift(viewBox), entryBoxUpdated, this.expandDirection);\r\n this.submenuContainer.style.left = `${left}px`;\r\n this.submenuContainer.style.top = `${top}px`;\r\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_UP, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(15 /* LeftArrow */)) {\r\n EventHelper.stop(e, true);\r\n this.parentData.parent.focus();\r\n this.cleanupExistingSubmenu(true);\r\n }\r\n }));\r\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_DOWN, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(15 /* LeftArrow */)) {\r\n EventHelper.stop(e, true);\r\n }\r\n }));\r\n this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => {\r\n this.parentData.parent.focus();\r\n this.cleanupExistingSubmenu(true);\r\n }));\r\n this.parentData.submenu.focus(selectFirstItem);\r\n this.mysubmenu = this.parentData.submenu;\r\n }\r\n else {\r\n this.parentData.submenu.focus(false);\r\n }\r\n }\r\n updateAriaExpanded(value) {\r\n var _a;\r\n if (this.item) {\r\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', value);\r\n }\r\n }\r\n applyStyle() {\r\n super.applyStyle();\r\n if (!this.menuStyle) {\r\n return;\r\n }\r\n const isSelected = this.element && this.element.classList.contains('focused');\r\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\r\n if (this.submenuIndicator) {\r\n this.submenuIndicator.style.color = fgColor ? `${fgColor}` : '';\r\n }\r\n if (this.parentData.submenu) {\r\n this.parentData.submenu.style(this.menuStyle);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.hideScheduler.dispose();\r\n if (this.mysubmenu) {\r\n this.mysubmenu.dispose();\r\n this.mysubmenu = null;\r\n }\r\n if (this.submenuContainer) {\r\n this.submenuContainer = undefined;\r\n }\r\n }\r\n}\r\nclass MenuSeparatorActionViewItem extends ActionViewItem {\r\n style(style) {\r\n if (this.label) {\r\n this.label.style.borderBottomColor = style.separatorColor ? `${style.separatorColor}` : '';\r\n }\r\n }\r\n}\r\nexport function cleanMnemonic(label) {\r\n const regex = MENU_MNEMONIC_REGEX;\r\n const matches = regex.exec(label);\r\n if (!matches) {\r\n return label;\r\n }\r\n const mnemonicInText = !matches[1];\r\n return label.replace(regex, mnemonicInText ? '$2$3' : '').trim();\r\n}\r\nlet MENU_WIDGET_CSS = `\n.monaco-menu {\n\tfont-size: 13px;\n\n}\n\n${formatRule(menuSelectionIcon)}\n${formatRule(menuSubmenuIcon)}\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\topacity: 0.4;\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 #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\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-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\tpadding: 0.5em 0 0 0;\n\tmargin-bottom: 0.5em;\n\twidth: 100%;\n\theight: 0px !important;\n\tmargin-left: .8em !important;\n\tmargin-right: .8em !important;\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.monaco-menu .monaco-action-bar.vertical .action-item {\n\tborder: thin solid transparent; /* prevents jumping behaviour on hover or focus */\n}\n\n\n/* High Contrast Theming */\n:host-context(.hc-black) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .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: .5em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 1.8em;\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\tpadding: 0.2em 0 0 0;\n\tmargin-bottom: 0.2em;\n}\n\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: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\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\n}\n\n/* ---------- Default Style ---------- */\n\n:host-context(.vs) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(100, 100, 100, .4);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(121, 121, 121, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(111, 195, 223, .6);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(100, 100, 100, .7);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(111, 195, 223, .8);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(0, 0, 0, .6);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(191, 191, 191, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(111, 195, 223, 1);\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: #000 6px 0 6px -6px inset;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: #000 6px 6px 6px -6px inset;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: none;\n}\n`;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './contextMenuHandler.css';\r\nimport { ActionRunner } from '../../../base/common/actions.js';\r\nimport { combinedDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Menu } from '../../../base/browser/ui/menu/menu.js';\r\nimport { EventType, $, isHTMLElement, addDisposableListener } from '../../../base/browser/dom.js';\r\nimport { attachMenuStyler } from '../../theme/common/styler.js';\r\nimport { StandardMouseEvent } from '../../../base/browser/mouseEvent.js';\r\nimport { isPromiseCanceledError } from '../../../base/common/errors.js';\r\nexport class ContextMenuHandler {\r\n constructor(contextViewService, telemetryService, notificationService, keybindingService, themeService) {\r\n this.contextViewService = contextViewService;\r\n this.telemetryService = telemetryService;\r\n this.notificationService = notificationService;\r\n this.keybindingService = keybindingService;\r\n this.themeService = themeService;\r\n this.focusToReturn = null;\r\n this.block = null;\r\n this.options = { blockMouse: true };\r\n }\r\n configure(options) {\r\n this.options = options;\r\n }\r\n showContextMenu(delegate) {\r\n const actions = delegate.getActions();\r\n if (!actions.length) {\r\n return; // Don't render an empty context menu\r\n }\r\n this.focusToReturn = document.activeElement;\r\n let menu;\r\n let shadowRootElement = isHTMLElement(delegate.domForShadowRoot) ? delegate.domForShadowRoot : undefined;\r\n this.contextViewService.showContextView({\r\n getAnchor: () => delegate.getAnchor(),\r\n canRelayout: false,\r\n anchorAlignment: delegate.anchorAlignment,\r\n anchorAxisAlignment: delegate.anchorAxisAlignment,\r\n render: (container) => {\r\n let className = delegate.getMenuClassName ? delegate.getMenuClassName() : '';\r\n if (className) {\r\n container.className += ' ' + className;\r\n }\r\n // Render invisible div to block mouse interaction in the rest of the UI\r\n if (this.options.blockMouse) {\r\n this.block = container.appendChild($('.context-view-block'));\r\n this.block.style.position = 'fixed';\r\n this.block.style.cursor = 'initial';\r\n this.block.style.left = '0';\r\n this.block.style.top = '0';\r\n this.block.style.width = '100%';\r\n this.block.style.height = '100%';\r\n this.block.style.zIndex = '-1';\r\n // TODO@Steven: this is never getting disposed\r\n addDisposableListener(this.block, EventType.MOUSE_DOWN, e => e.stopPropagation());\r\n }\r\n const menuDisposables = new DisposableStore();\r\n const actionRunner = delegate.actionRunner || new ActionRunner();\r\n actionRunner.onBeforeRun(this.onActionRun, this, menuDisposables);\r\n actionRunner.onDidRun(this.onDidActionRun, this, menuDisposables);\r\n menu = new Menu(container, actions, {\r\n actionViewItemProvider: delegate.getActionViewItem,\r\n context: delegate.getActionsContext ? delegate.getActionsContext() : null,\r\n actionRunner,\r\n getKeyBinding: delegate.getKeyBinding ? delegate.getKeyBinding : action => this.keybindingService.lookupKeybinding(action.id)\r\n });\r\n menuDisposables.add(attachMenuStyler(menu, this.themeService));\r\n menu.onDidCancel(() => this.contextViewService.hideContextView(true), null, menuDisposables);\r\n menu.onDidBlur(() => this.contextViewService.hideContextView(true), null, menuDisposables);\r\n menuDisposables.add(addDisposableListener(window, EventType.BLUR, () => this.contextViewService.hideContextView(true)));\r\n menuDisposables.add(addDisposableListener(window, EventType.MOUSE_DOWN, (e) => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n let event = new StandardMouseEvent(e);\r\n let element = event.target;\r\n // Don't do anything as we are likely creating a context menu\r\n if (event.rightButton) {\r\n return;\r\n }\r\n while (element) {\r\n if (element === container) {\r\n return;\r\n }\r\n element = element.parentElement;\r\n }\r\n this.contextViewService.hideContextView(true);\r\n }));\r\n return combinedDisposable(menuDisposables, menu);\r\n },\r\n focus: () => {\r\n if (menu) {\r\n menu.focus(!!delegate.autoSelectFirstItem);\r\n }\r\n },\r\n onHide: (didCancel) => {\r\n if (delegate.onHide) {\r\n delegate.onHide(!!didCancel);\r\n }\r\n if (this.block) {\r\n this.block.remove();\r\n this.block = null;\r\n }\r\n if (this.focusToReturn) {\r\n this.focusToReturn.focus();\r\n }\r\n }\r\n }, shadowRootElement, !!shadowRootElement);\r\n }\r\n onActionRun(e) {\r\n this.telemetryService.publicLog2('workbenchActionExecuted', { id: e.action.id, from: 'contextMenu' });\r\n this.contextViewService.hideContextView(false);\r\n // Restore focus here\r\n if (this.focusToReturn) {\r\n this.focusToReturn.focus();\r\n }\r\n }\r\n onDidActionRun(e) {\r\n if (e.error && !isPromiseCanceledError(e.error)) {\r\n this.notificationService.error(e.error);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ContextMenuHandler } from './contextMenuHandler.js';\r\nimport { IContextViewService } from './contextView.js';\r\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { IThemeService } from '../../theme/common/themeService.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { ModifierKeyEmitter } from '../../../base/browser/dom.js';\r\nlet ContextMenuService = class ContextMenuService extends Disposable {\r\n constructor(telemetryService, notificationService, contextViewService, keybindingService, themeService) {\r\n super();\r\n this.contextMenuHandler = new ContextMenuHandler(contextViewService, telemetryService, notificationService, keybindingService, themeService);\r\n }\r\n configure(options) {\r\n this.contextMenuHandler.configure(options);\r\n }\r\n // ContextMenu\r\n showContextMenu(delegate) {\r\n this.contextMenuHandler.showContextMenu(delegate);\r\n ModifierKeyEmitter.getInstance().resetKeyStatus();\r\n }\r\n};\r\nContextMenuService = __decorate([\r\n __param(0, ITelemetryService),\r\n __param(1, INotificationService),\r\n __param(2, IContextViewService),\r\n __param(3, IKeybindingService),\r\n __param(4, IThemeService)\r\n], ContextMenuService);\r\nexport { ContextMenuService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const ILayoutService = createDecorator('layoutService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ContextView } from '../../../base/browser/ui/contextview/contextview.js';\r\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\r\nlet ContextViewService = class ContextViewService extends Disposable {\r\n constructor(layoutService) {\r\n super();\r\n this.layoutService = layoutService;\r\n this.currentViewDisposable = Disposable.None;\r\n this.container = layoutService.container;\r\n this.contextView = this._register(new ContextView(this.container, 1 /* ABSOLUTE */));\r\n this.layout();\r\n this._register(layoutService.onDidLayout(() => this.layout()));\r\n }\r\n // ContextView\r\n setContainer(container, domPosition) {\r\n this.contextView.setContainer(container, domPosition || 1 /* ABSOLUTE */);\r\n }\r\n showContextView(delegate, container, shadowRoot) {\r\n if (container) {\r\n if (container !== this.container) {\r\n this.container = container;\r\n this.setContainer(container, shadowRoot ? 3 /* FIXED_SHADOW */ : 2 /* FIXED */);\r\n }\r\n }\r\n else {\r\n if (this.container !== this.layoutService.container) {\r\n this.container = this.layoutService.container;\r\n this.setContainer(this.container, 1 /* ABSOLUTE */);\r\n }\r\n }\r\n this.contextView.show(delegate);\r\n const disposable = toDisposable(() => {\r\n if (this.currentViewDisposable === disposable) {\r\n this.hideContextView();\r\n }\r\n });\r\n this.currentViewDisposable = disposable;\r\n return disposable;\r\n }\r\n getContextViewElement() {\r\n return this.contextView.getViewElement();\r\n }\r\n layout() {\r\n this.contextView.layout();\r\n }\r\n hideContextView(data) {\r\n this.contextView.hide(data);\r\n }\r\n};\r\nContextViewService = __decorate([\r\n __param(0, ILayoutService)\r\n], ContextViewService);\r\nexport { ContextViewService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IDialogService = createDecorator('dialogService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Node {\r\n constructor(data) {\r\n this.incoming = new Map();\r\n this.outgoing = new Map();\r\n this.data = data;\r\n }\r\n}\r\nexport class Graph {\r\n constructor(_hashFn) {\r\n this._hashFn = _hashFn;\r\n this._nodes = new Map();\r\n // empty\r\n }\r\n roots() {\r\n const ret = [];\r\n for (let node of this._nodes.values()) {\r\n if (node.outgoing.size === 0) {\r\n ret.push(node);\r\n }\r\n }\r\n return ret;\r\n }\r\n insertEdge(from, to) {\r\n const fromNode = this.lookupOrInsertNode(from);\r\n const toNode = this.lookupOrInsertNode(to);\r\n fromNode.outgoing.set(this._hashFn(to), toNode);\r\n toNode.incoming.set(this._hashFn(from), fromNode);\r\n }\r\n removeNode(data) {\r\n const key = this._hashFn(data);\r\n this._nodes.delete(key);\r\n for (let node of this._nodes.values()) {\r\n node.outgoing.delete(key);\r\n node.incoming.delete(key);\r\n }\r\n }\r\n lookupOrInsertNode(data) {\r\n const key = this._hashFn(data);\r\n let node = this._nodes.get(key);\r\n if (!node) {\r\n node = new Node(data);\r\n this._nodes.set(key, node);\r\n }\r\n return node;\r\n }\r\n isEmpty() {\r\n return this._nodes.size === 0;\r\n }\r\n toString() {\r\n let data = [];\r\n for (let [key, value] of this._nodes) {\r\n data.push(`${key}, (incoming)[${[...value.incoming.keys()].join(', ')}], (outgoing)[${[...value.outgoing.keys()].join(',')}]`);\r\n }\r\n return data.join('\\n');\r\n }\r\n /**\r\n * This is brute force and slow and **only** be used\r\n * to trouble shoot.\r\n */\r\n findCycleSlow() {\r\n for (let [id, node] of this._nodes) {\r\n const seen = new Set([id]);\r\n const res = this._findCycle(node, seen);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n return undefined;\r\n }\r\n _findCycle(node, seen) {\r\n for (let [id, outgoing] of node.outgoing) {\r\n if (seen.has(id)) {\r\n return [...seen, id].join(' -> ');\r\n }\r\n seen.add(id);\r\n const value = this._findCycle(outgoing, seen);\r\n if (value) {\r\n return value;\r\n }\r\n seen.delete(id);\r\n }\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalState } from '../../../base/common/errors.js';\r\nimport { Graph } from './graph.js';\r\nimport { SyncDescriptor } from './descriptors.js';\r\nimport { IInstantiationService, _util, optional } from './instantiation.js';\r\nimport { ServiceCollection } from './serviceCollection.js';\r\nimport { IdleValue } from '../../../base/common/async.js';\r\n// TRACING\r\nconst _enableTracing = false;\r\nclass CyclicDependencyError extends Error {\r\n constructor(graph) {\r\n var _a;\r\n super('cyclic dependency between services');\r\n this.message = (_a = graph.findCycleSlow()) !== null && _a !== void 0 ? _a : `UNABLE to detect cycle, dumping graph: \\n${graph.toString()}`;\r\n }\r\n}\r\nexport class InstantiationService {\r\n constructor(services = new ServiceCollection(), strict = false, parent) {\r\n this._activeInstantiations = new Set();\r\n this._services = services;\r\n this._strict = strict;\r\n this._parent = parent;\r\n this._services.set(IInstantiationService, this);\r\n }\r\n createChild(services) {\r\n return new InstantiationService(services, this._strict, this);\r\n }\r\n invokeFunction(fn, ...args) {\r\n let _trace = Trace.traceInvocation(fn);\r\n let _done = false;\r\n try {\r\n const accessor = {\r\n get: (id, isOptional) => {\r\n if (_done) {\r\n throw illegalState('service accessor is only valid during the invocation of its target method');\r\n }\r\n const result = this._getOrCreateServiceInstance(id, _trace);\r\n if (!result && isOptional !== optional) {\r\n throw new Error(`[invokeFunction] unknown service '${id}'`);\r\n }\r\n return result;\r\n }\r\n };\r\n return fn(accessor, ...args);\r\n }\r\n finally {\r\n _done = true;\r\n _trace.stop();\r\n }\r\n }\r\n createInstance(ctorOrDescriptor, ...rest) {\r\n let _trace;\r\n let result;\r\n if (ctorOrDescriptor instanceof SyncDescriptor) {\r\n _trace = Trace.traceCreation(ctorOrDescriptor.ctor);\r\n result = this._createInstance(ctorOrDescriptor.ctor, ctorOrDescriptor.staticArguments.concat(rest), _trace);\r\n }\r\n else {\r\n _trace = Trace.traceCreation(ctorOrDescriptor);\r\n result = this._createInstance(ctorOrDescriptor, rest, _trace);\r\n }\r\n _trace.stop();\r\n return result;\r\n }\r\n _createInstance(ctor, args = [], _trace) {\r\n // arguments defined by service decorators\r\n let serviceDependencies = _util.getServiceDependencies(ctor).sort((a, b) => a.index - b.index);\r\n let serviceArgs = [];\r\n for (const dependency of serviceDependencies) {\r\n let service = this._getOrCreateServiceInstance(dependency.id, _trace);\r\n if (!service && this._strict && !dependency.optional) {\r\n throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`);\r\n }\r\n serviceArgs.push(service);\r\n }\r\n let firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;\r\n // check for argument mismatches, adjust static args if needed\r\n if (args.length !== firstServiceArgPos) {\r\n console.warn(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);\r\n let delta = firstServiceArgPos - args.length;\r\n if (delta > 0) {\r\n args = args.concat(new Array(delta));\r\n }\r\n else {\r\n args = args.slice(0, firstServiceArgPos);\r\n }\r\n }\r\n // now create the instance\r\n return new ctor(...[...args, ...serviceArgs]);\r\n }\r\n _setServiceInstance(id, instance) {\r\n if (this._services.get(id) instanceof SyncDescriptor) {\r\n this._services.set(id, instance);\r\n }\r\n else if (this._parent) {\r\n this._parent._setServiceInstance(id, instance);\r\n }\r\n else {\r\n throw new Error('illegalState - setting UNKNOWN service instance');\r\n }\r\n }\r\n _getServiceInstanceOrDescriptor(id) {\r\n let instanceOrDesc = this._services.get(id);\r\n if (!instanceOrDesc && this._parent) {\r\n return this._parent._getServiceInstanceOrDescriptor(id);\r\n }\r\n else {\r\n return instanceOrDesc;\r\n }\r\n }\r\n _getOrCreateServiceInstance(id, _trace) {\r\n let thing = this._getServiceInstanceOrDescriptor(id);\r\n if (thing instanceof SyncDescriptor) {\r\n return this._safeCreateAndCacheServiceInstance(id, thing, _trace.branch(id, true));\r\n }\r\n else {\r\n _trace.branch(id, false);\r\n return thing;\r\n }\r\n }\r\n _safeCreateAndCacheServiceInstance(id, desc, _trace) {\r\n if (this._activeInstantiations.has(id)) {\r\n throw new Error(`illegal state - RECURSIVELY instantiating service '${id}'`);\r\n }\r\n this._activeInstantiations.add(id);\r\n try {\r\n return this._createAndCacheServiceInstance(id, desc, _trace);\r\n }\r\n finally {\r\n this._activeInstantiations.delete(id);\r\n }\r\n }\r\n _createAndCacheServiceInstance(id, desc, _trace) {\r\n const graph = new Graph(data => data.id.toString());\r\n let cycleCount = 0;\r\n const stack = [{ id, desc, _trace }];\r\n while (stack.length) {\r\n const item = stack.pop();\r\n graph.lookupOrInsertNode(item);\r\n // a weak but working heuristic for cycle checks\r\n if (cycleCount++ > 1000) {\r\n throw new CyclicDependencyError(graph);\r\n }\r\n // check all dependencies for existence and if they need to be created first\r\n for (let dependency of _util.getServiceDependencies(item.desc.ctor)) {\r\n let instanceOrDesc = this._getServiceInstanceOrDescriptor(dependency.id);\r\n if (!instanceOrDesc && !dependency.optional) {\r\n console.warn(`[createInstance] ${id} depends on ${dependency.id} which is NOT registered.`);\r\n }\r\n if (instanceOrDesc instanceof SyncDescriptor) {\r\n const d = { id: dependency.id, desc: instanceOrDesc, _trace: item._trace.branch(dependency.id, true) };\r\n graph.insertEdge(item, d);\r\n stack.push(d);\r\n }\r\n }\r\n }\r\n while (true) {\r\n const roots = graph.roots();\r\n // if there is no more roots but still\r\n // nodes in the graph we have a cycle\r\n if (roots.length === 0) {\r\n if (!graph.isEmpty()) {\r\n throw new CyclicDependencyError(graph);\r\n }\r\n break;\r\n }\r\n for (const { data } of roots) {\r\n // Repeat the check for this still being a service sync descriptor. That's because\r\n // instantiating a dependency might have side-effect and recursively trigger instantiation\r\n // so that some dependencies are now fullfilled already.\r\n const instanceOrDesc = this._getServiceInstanceOrDescriptor(data.id);\r\n if (instanceOrDesc instanceof SyncDescriptor) {\r\n // create instance and overwrite the service collections\r\n const instance = this._createServiceInstanceWithOwner(data.id, data.desc.ctor, data.desc.staticArguments, data.desc.supportsDelayedInstantiation, data._trace);\r\n this._setServiceInstance(data.id, instance);\r\n }\r\n graph.removeNode(data);\r\n }\r\n }\r\n return this._getServiceInstanceOrDescriptor(id);\r\n }\r\n _createServiceInstanceWithOwner(id, ctor, args = [], supportsDelayedInstantiation, _trace) {\r\n if (this._services.get(id) instanceof SyncDescriptor) {\r\n return this._createServiceInstance(ctor, args, supportsDelayedInstantiation, _trace);\r\n }\r\n else if (this._parent) {\r\n return this._parent._createServiceInstanceWithOwner(id, ctor, args, supportsDelayedInstantiation, _trace);\r\n }\r\n else {\r\n throw new Error(`illegalState - creating UNKNOWN service instance ${ctor.name}`);\r\n }\r\n }\r\n _createServiceInstance(ctor, args = [], _supportsDelayedInstantiation, _trace) {\r\n if (!_supportsDelayedInstantiation) {\r\n // eager instantiation\r\n return this._createInstance(ctor, args, _trace);\r\n }\r\n else {\r\n // Return a proxy object that's backed by an idle value. That\r\n // strategy is to instantiate services in our idle time or when actually\r\n // needed but not when injected into a consumer\r\n const idle = new IdleValue(() => this._createInstance(ctor, args, _trace));\r\n return new Proxy(Object.create(null), {\r\n get(target, key) {\r\n if (key in target) {\r\n return target[key];\r\n }\r\n let obj = idle.value;\r\n let prop = obj[key];\r\n if (typeof prop !== 'function') {\r\n return prop;\r\n }\r\n prop = prop.bind(obj);\r\n target[key] = prop;\r\n return prop;\r\n },\r\n set(_target, p, value) {\r\n idle.value[p] = value;\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n}\r\nclass Trace {\r\n constructor(type, name) {\r\n this.type = type;\r\n this.name = name;\r\n this._start = Date.now();\r\n this._dep = [];\r\n }\r\n static traceInvocation(ctor) {\r\n return !_enableTracing ? Trace._None : new Trace(1 /* Invocation */, ctor.name || ctor.toString().substring(0, 42).replace(/\\n/g, ''));\r\n }\r\n static traceCreation(ctor) {\r\n return !_enableTracing ? Trace._None : new Trace(0 /* Creation */, ctor.name);\r\n }\r\n branch(id, first) {\r\n let child = new Trace(2 /* Branch */, id.toString());\r\n this._dep.push([id, first, child]);\r\n return child;\r\n }\r\n stop() {\r\n let dur = Date.now() - this._start;\r\n Trace._totals += dur;\r\n let causedCreation = false;\r\n function printChild(n, trace) {\r\n let res = [];\r\n let prefix = new Array(n + 1).join('\\t');\r\n for (const [id, first, child] of trace._dep) {\r\n if (first && child) {\r\n causedCreation = true;\r\n res.push(`${prefix}CREATES -> ${id}`);\r\n let nested = printChild(n + 1, child);\r\n if (nested) {\r\n res.push(nested);\r\n }\r\n }\r\n else {\r\n res.push(`${prefix}uses -> ${id}`);\r\n }\r\n }\r\n return res.join('\\n');\r\n }\r\n let lines = [\r\n `${this.type === 0 /* Creation */ ? 'CREATE' : 'CALL'} ${this.name}`,\r\n `${printChild(1, this)}`,\r\n `DONE, took ${dur.toFixed(2)}ms (grand total ${Trace._totals.toFixed(2)}ms)`\r\n ];\r\n if (dur > 2 || causedCreation) {\r\n console.log(lines.join('\\n'));\r\n }\r\n }\r\n}\r\nTrace._None = new class extends Trace {\r\n constructor() { super(-1, null); }\r\n stop() { }\r\n branch() { return this; }\r\n};\r\nTrace._totals = 0;\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isFalsyOrEmpty } from '../../../base/common/arrays.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { DebounceEmitter } from '../../../base/common/event.js';\r\nimport { MarkerSeverity } from './markers.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nclass DoubleResourceMap {\r\n constructor() {\r\n this._byResource = new ResourceMap();\r\n this._byOwner = new Map();\r\n }\r\n set(resource, owner, value) {\r\n let ownerMap = this._byResource.get(resource);\r\n if (!ownerMap) {\r\n ownerMap = new Map();\r\n this._byResource.set(resource, ownerMap);\r\n }\r\n ownerMap.set(owner, value);\r\n let resourceMap = this._byOwner.get(owner);\r\n if (!resourceMap) {\r\n resourceMap = new ResourceMap();\r\n this._byOwner.set(owner, resourceMap);\r\n }\r\n resourceMap.set(resource, value);\r\n }\r\n get(resource, owner) {\r\n let ownerMap = this._byResource.get(resource);\r\n return ownerMap === null || ownerMap === void 0 ? void 0 : ownerMap.get(owner);\r\n }\r\n delete(resource, owner) {\r\n let removedA = false;\r\n let removedB = false;\r\n let ownerMap = this._byResource.get(resource);\r\n if (ownerMap) {\r\n removedA = ownerMap.delete(owner);\r\n }\r\n let resourceMap = this._byOwner.get(owner);\r\n if (resourceMap) {\r\n removedB = resourceMap.delete(resource);\r\n }\r\n if (removedA !== removedB) {\r\n throw new Error('illegal state');\r\n }\r\n return removedA && removedB;\r\n }\r\n values(key) {\r\n var _a, _b, _c, _d;\r\n if (typeof key === 'string') {\r\n return (_b = (_a = this._byOwner.get(key)) === null || _a === void 0 ? void 0 : _a.values()) !== null && _b !== void 0 ? _b : Iterable.empty();\r\n }\r\n if (URI.isUri(key)) {\r\n return (_d = (_c = this._byResource.get(key)) === null || _c === void 0 ? void 0 : _c.values()) !== null && _d !== void 0 ? _d : Iterable.empty();\r\n }\r\n return Iterable.map(Iterable.concat(...this._byOwner.values()), map => map[1]);\r\n }\r\n}\r\nclass MarkerStats {\r\n constructor(service) {\r\n this.errors = 0;\r\n this.infos = 0;\r\n this.warnings = 0;\r\n this.unknowns = 0;\r\n this._data = new ResourceMap();\r\n this._service = service;\r\n this._subscription = service.onMarkerChanged(this._update, this);\r\n }\r\n dispose() {\r\n this._subscription.dispose();\r\n }\r\n _update(resources) {\r\n for (const resource of resources) {\r\n const oldStats = this._data.get(resource);\r\n if (oldStats) {\r\n this._substract(oldStats);\r\n }\r\n const newStats = this._resourceStats(resource);\r\n this._add(newStats);\r\n this._data.set(resource, newStats);\r\n }\r\n }\r\n _resourceStats(resource) {\r\n const result = { errors: 0, warnings: 0, infos: 0, unknowns: 0 };\r\n // TODO this is a hack\r\n if (resource.scheme === Schemas.inMemory || resource.scheme === Schemas.walkThrough || resource.scheme === Schemas.walkThroughSnippet) {\r\n return result;\r\n }\r\n for (const { severity } of this._service.read({ resource })) {\r\n if (severity === MarkerSeverity.Error) {\r\n result.errors += 1;\r\n }\r\n else if (severity === MarkerSeverity.Warning) {\r\n result.warnings += 1;\r\n }\r\n else if (severity === MarkerSeverity.Info) {\r\n result.infos += 1;\r\n }\r\n else {\r\n result.unknowns += 1;\r\n }\r\n }\r\n return result;\r\n }\r\n _substract(op) {\r\n this.errors -= op.errors;\r\n this.warnings -= op.warnings;\r\n this.infos -= op.infos;\r\n this.unknowns -= op.unknowns;\r\n }\r\n _add(op) {\r\n this.errors += op.errors;\r\n this.warnings += op.warnings;\r\n this.infos += op.infos;\r\n this.unknowns += op.unknowns;\r\n }\r\n}\r\nexport class MarkerService {\r\n constructor() {\r\n this._onMarkerChanged = new DebounceEmitter({\r\n delay: 0,\r\n merge: MarkerService._merge\r\n });\r\n this.onMarkerChanged = this._onMarkerChanged.event;\r\n this._data = new DoubleResourceMap();\r\n this._stats = new MarkerStats(this);\r\n }\r\n dispose() {\r\n this._stats.dispose();\r\n this._onMarkerChanged.dispose();\r\n }\r\n remove(owner, resources) {\r\n for (const resource of resources || []) {\r\n this.changeOne(owner, resource, []);\r\n }\r\n }\r\n changeOne(owner, resource, markerData) {\r\n if (isFalsyOrEmpty(markerData)) {\r\n // remove marker for this (owner,resource)-tuple\r\n const removed = this._data.delete(resource, owner);\r\n if (removed) {\r\n this._onMarkerChanged.fire([resource]);\r\n }\r\n }\r\n else {\r\n // insert marker for this (owner,resource)-tuple\r\n const markers = [];\r\n for (const data of markerData) {\r\n const marker = MarkerService._toMarker(owner, resource, data);\r\n if (marker) {\r\n markers.push(marker);\r\n }\r\n }\r\n this._data.set(resource, owner, markers);\r\n this._onMarkerChanged.fire([resource]);\r\n }\r\n }\r\n static _toMarker(owner, resource, data) {\r\n let { code, severity, message, source, startLineNumber, startColumn, endLineNumber, endColumn, relatedInformation, tags, } = data;\r\n if (!message) {\r\n return undefined;\r\n }\r\n // santize data\r\n startLineNumber = startLineNumber > 0 ? startLineNumber : 1;\r\n startColumn = startColumn > 0 ? startColumn : 1;\r\n endLineNumber = endLineNumber >= startLineNumber ? endLineNumber : startLineNumber;\r\n endColumn = endColumn > 0 ? endColumn : startColumn;\r\n return {\r\n resource,\r\n owner,\r\n code,\r\n severity,\r\n message,\r\n source,\r\n startLineNumber,\r\n startColumn,\r\n endLineNumber,\r\n endColumn,\r\n relatedInformation,\r\n tags,\r\n };\r\n }\r\n read(filter = Object.create(null)) {\r\n let { owner, resource, severities, take } = filter;\r\n if (!take || take < 0) {\r\n take = -1;\r\n }\r\n if (owner && resource) {\r\n // exactly one owner AND resource\r\n const data = this._data.get(resource, owner);\r\n if (!data) {\r\n return [];\r\n }\r\n else {\r\n const result = [];\r\n for (const marker of data) {\r\n if (MarkerService._accept(marker, severities)) {\r\n const newLen = result.push(marker);\r\n if (take > 0 && newLen === take) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n else if (!owner && !resource) {\r\n // all\r\n const result = [];\r\n for (let markers of this._data.values()) {\r\n for (let data of markers) {\r\n if (MarkerService._accept(data, severities)) {\r\n const newLen = result.push(data);\r\n if (take > 0 && newLen === take) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n else {\r\n // of one resource OR owner\r\n const iterable = this._data.values(resource !== null && resource !== void 0 ? resource : owner);\r\n const result = [];\r\n for (const markers of iterable) {\r\n for (const data of markers) {\r\n if (MarkerService._accept(data, severities)) {\r\n const newLen = result.push(data);\r\n if (take > 0 && newLen === take) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n static _accept(marker, severities) {\r\n return severities === undefined || (severities & marker.severity) === marker.severity;\r\n }\r\n // --- event debounce logic\r\n static _merge(all) {\r\n const set = new ResourceMap();\r\n for (let array of all) {\r\n for (let item of array) {\r\n set.set(item, true);\r\n }\r\n }\r\n return Array.from(set.keys());\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { IMenuService, isIMenuItem, MenuItemAction, MenuRegistry, SubmenuItemAction } from './actions.js';\r\nimport { ICommandService } from '../../commands/common/commands.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nlet MenuService = class MenuService {\r\n constructor(_commandService) {\r\n this._commandService = _commandService;\r\n //\r\n }\r\n /**\r\n * Create a new menu for the given menu identifier. A menu sends events when it's entries\r\n * have changed (placement, enablement, checked-state). By default it does send events for\r\n * sub menu entries. That is more expensive and must be explicitly enabled with the\r\n * `emitEventsForSubmenuChanges` flag.\r\n */\r\n createMenu(id, contextKeyService, emitEventsForSubmenuChanges = false) {\r\n return new Menu(id, emitEventsForSubmenuChanges, this._commandService, contextKeyService, this);\r\n }\r\n};\r\nMenuService = __decorate([\r\n __param(0, ICommandService)\r\n], MenuService);\r\nexport { MenuService };\r\nlet Menu = class Menu {\r\n constructor(_id, _fireEventsForSubmenuChanges, _commandService, _contextKeyService, _menuService) {\r\n this._id = _id;\r\n this._fireEventsForSubmenuChanges = _fireEventsForSubmenuChanges;\r\n this._commandService = _commandService;\r\n this._contextKeyService = _contextKeyService;\r\n this._menuService = _menuService;\r\n this._disposables = new DisposableStore();\r\n this._menuGroups = [];\r\n this._contextKeys = new Set();\r\n this._build();\r\n // Rebuild this menu whenever the menu registry reports an event for this MenuId.\r\n // This usually happen while code and extensions are loaded and affects the over\r\n // structure of the menu\r\n const rebuildMenuSoon = new RunOnceScheduler(() => {\r\n this._build();\r\n this._onDidChange.fire(this);\r\n }, 50);\r\n this._disposables.add(rebuildMenuSoon);\r\n this._disposables.add(MenuRegistry.onDidChangeMenu(e => {\r\n if (e.has(_id)) {\r\n rebuildMenuSoon.schedule();\r\n }\r\n }));\r\n // When context keys change we need to check if the menu also has changed. However,\r\n // we only do that when someone listens on this menu because (1) context key events are\r\n // firing often and (2) menu are often leaked\r\n const contextKeyListener = this._disposables.add(new DisposableStore());\r\n const startContextKeyListener = () => {\r\n const fireChangeSoon = new RunOnceScheduler(() => this._onDidChange.fire(this), 50);\r\n contextKeyListener.add(fireChangeSoon);\r\n contextKeyListener.add(_contextKeyService.onDidChangeContext(e => {\r\n if (e.affectsSome(this._contextKeys)) {\r\n fireChangeSoon.schedule();\r\n }\r\n }));\r\n };\r\n this._onDidChange = new Emitter({\r\n // start/stop context key listener\r\n onFirstListenerAdd: startContextKeyListener,\r\n onLastListenerRemove: contextKeyListener.clear.bind(contextKeyListener)\r\n });\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._onDidChange.dispose();\r\n }\r\n _build() {\r\n // reset\r\n this._menuGroups.length = 0;\r\n this._contextKeys.clear();\r\n const menuItems = MenuRegistry.getMenuItems(this._id);\r\n let group;\r\n menuItems.sort(Menu._compareMenuItems);\r\n for (const item of menuItems) {\r\n // group by groupId\r\n const groupName = item.group || '';\r\n if (!group || group[0] !== groupName) {\r\n group = [groupName, []];\r\n this._menuGroups.push(group);\r\n }\r\n group[1].push(item);\r\n // keep keys for eventing\r\n this._collectContextKeys(item);\r\n }\r\n }\r\n _collectContextKeys(item) {\r\n Menu._fillInKbExprKeys(item.when, this._contextKeys);\r\n if (isIMenuItem(item)) {\r\n // keep precondition keys for event if applicable\r\n if (item.command.precondition) {\r\n Menu._fillInKbExprKeys(item.command.precondition, this._contextKeys);\r\n }\r\n // keep toggled keys for event if applicable\r\n if (item.command.toggled) {\r\n const toggledExpression = item.command.toggled.condition || item.command.toggled;\r\n Menu._fillInKbExprKeys(toggledExpression, this._contextKeys);\r\n }\r\n }\r\n else if (this._fireEventsForSubmenuChanges) {\r\n // recursively collect context keys from submenus so that this\r\n // menu fires events when context key changes affect submenus\r\n MenuRegistry.getMenuItems(item.submenu).forEach(this._collectContextKeys, this);\r\n }\r\n }\r\n getActions(options) {\r\n const result = [];\r\n for (let group of this._menuGroups) {\r\n const [id, items] = group;\r\n const activeActions = [];\r\n for (const item of items) {\r\n if (this._contextKeyService.contextMatchesRules(item.when)) {\r\n const action = isIMenuItem(item)\r\n ? new MenuItemAction(item.command, item.alt, options, this._contextKeyService, this._commandService)\r\n : new SubmenuItemAction(item, this._menuService, this._contextKeyService, options);\r\n activeActions.push(action);\r\n }\r\n }\r\n if (activeActions.length > 0) {\r\n result.push([id, activeActions]);\r\n }\r\n }\r\n return result;\r\n }\r\n static _fillInKbExprKeys(exp, set) {\r\n if (exp) {\r\n for (let key of exp.keys()) {\r\n set.add(key);\r\n }\r\n }\r\n }\r\n static _compareMenuItems(a, b) {\r\n let aGroup = a.group;\r\n let bGroup = b.group;\r\n if (aGroup !== bGroup) {\r\n // Falsy groups come last\r\n if (!aGroup) {\r\n return 1;\r\n }\r\n else if (!bGroup) {\r\n return -1;\r\n }\r\n // 'navigation' group comes first\r\n if (aGroup === 'navigation') {\r\n return -1;\r\n }\r\n else if (bGroup === 'navigation') {\r\n return 1;\r\n }\r\n // lexical sort for groups\r\n let value = aGroup.localeCompare(bGroup);\r\n if (value !== 0) {\r\n return value;\r\n }\r\n }\r\n // sort on priority - default is 0\r\n let aPrio = a.order || 0;\r\n let bPrio = b.order || 0;\r\n if (aPrio < bPrio) {\r\n return -1;\r\n }\r\n else if (aPrio > bPrio) {\r\n return 1;\r\n }\r\n // sort on titles\r\n return Menu._compareTitles(isIMenuItem(a) ? a.command.title : a.title, isIMenuItem(b) ? b.command.title : b.title);\r\n }\r\n static _compareTitles(a, b) {\r\n const aStr = typeof a === 'string' ? a : a.original;\r\n const bStr = typeof b === 'string' ? b : b.original;\r\n return aStr.localeCompare(bStr);\r\n }\r\n};\r\nMenu = __decorate([\r\n __param(2, ICommandService),\r\n __param(3, IContextKeyService),\r\n __param(4, IMenuService)\r\n], Menu);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IMarkerService, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { OverviewRulerLane, MinimapPosition } from '../model.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { overviewRulerWarning, overviewRulerInfo, overviewRulerError } from '../view/editorColorRegistry.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { minimapWarning, minimapError } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nclass MarkerDecorations extends Disposable {\r\n constructor(model) {\r\n super();\r\n this.model = model;\r\n this._markersData = new Map();\r\n this._register(toDisposable(() => {\r\n this.model.deltaDecorations([...this._markersData.keys()], []);\r\n this._markersData.clear();\r\n }));\r\n }\r\n update(markers, newDecorations) {\r\n const oldIds = [...this._markersData.keys()];\r\n this._markersData.clear();\r\n const ids = this.model.deltaDecorations(oldIds, newDecorations);\r\n for (let index = 0; index < ids.length; index++) {\r\n this._markersData.set(ids[index], markers[index]);\r\n }\r\n return oldIds.length !== 0 || ids.length !== 0;\r\n }\r\n getMarker(decoration) {\r\n return this._markersData.get(decoration.id);\r\n }\r\n}\r\nlet MarkerDecorationsService = class MarkerDecorationsService extends Disposable {\r\n constructor(modelService, _markerService) {\r\n super();\r\n this._markerService = _markerService;\r\n this._onDidChangeMarker = this._register(new Emitter());\r\n this._markerDecorations = new ResourceMap();\r\n modelService.getModels().forEach(model => this._onModelAdded(model));\r\n this._register(modelService.onModelAdded(this._onModelAdded, this));\r\n this._register(modelService.onModelRemoved(this._onModelRemoved, this));\r\n this._register(this._markerService.onMarkerChanged(this._handleMarkerChange, this));\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._markerDecorations.forEach(value => value.dispose());\r\n this._markerDecorations.clear();\r\n }\r\n getMarker(uri, decoration) {\r\n const markerDecorations = this._markerDecorations.get(uri);\r\n return markerDecorations ? (markerDecorations.getMarker(decoration) || null) : null;\r\n }\r\n _handleMarkerChange(changedResources) {\r\n changedResources.forEach((resource) => {\r\n const markerDecorations = this._markerDecorations.get(resource);\r\n if (markerDecorations) {\r\n this._updateDecorations(markerDecorations);\r\n }\r\n });\r\n }\r\n _onModelAdded(model) {\r\n const markerDecorations = new MarkerDecorations(model);\r\n this._markerDecorations.set(model.uri, markerDecorations);\r\n this._updateDecorations(markerDecorations);\r\n }\r\n _onModelRemoved(model) {\r\n const markerDecorations = this._markerDecorations.get(model.uri);\r\n if (markerDecorations) {\r\n markerDecorations.dispose();\r\n this._markerDecorations.delete(model.uri);\r\n }\r\n // clean up markers for internal, transient models\r\n if (model.uri.scheme === Schemas.inMemory\r\n || model.uri.scheme === Schemas.internal\r\n || model.uri.scheme === Schemas.vscode) {\r\n if (this._markerService) {\r\n this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService.remove(owner, [model.uri]));\r\n }\r\n }\r\n }\r\n _updateDecorations(markerDecorations) {\r\n // Limit to the first 500 errors/warnings\r\n const markers = this._markerService.read({ resource: markerDecorations.model.uri, take: 500 });\r\n let newModelDecorations = markers.map((marker) => {\r\n return {\r\n range: this._createDecorationRange(markerDecorations.model, marker),\r\n options: this._createDecorationOption(marker)\r\n };\r\n });\r\n if (markerDecorations.update(markers, newModelDecorations)) {\r\n this._onDidChangeMarker.fire(markerDecorations.model);\r\n }\r\n }\r\n _createDecorationRange(model, rawMarker) {\r\n let ret = Range.lift(rawMarker);\r\n if (rawMarker.severity === MarkerSeverity.Hint && !this._hasMarkerTag(rawMarker, 1 /* Unnecessary */) && !this._hasMarkerTag(rawMarker, 2 /* Deprecated */)) {\r\n // * never render hints on multiple lines\r\n // * make enough space for three dots\r\n ret = ret.setEndPosition(ret.startLineNumber, ret.startColumn + 2);\r\n }\r\n ret = model.validateRange(ret);\r\n if (ret.isEmpty()) {\r\n let word = model.getWordAtPosition(ret.getStartPosition());\r\n if (word) {\r\n ret = new Range(ret.startLineNumber, word.startColumn, ret.endLineNumber, word.endColumn);\r\n }\r\n else {\r\n let maxColumn = model.getLineLastNonWhitespaceColumn(ret.startLineNumber) ||\r\n model.getLineMaxColumn(ret.startLineNumber);\r\n if (maxColumn === 1) {\r\n // empty line\r\n // console.warn('marker on empty line:', marker);\r\n }\r\n else if (ret.endColumn >= maxColumn) {\r\n // behind eol\r\n ret = new Range(ret.startLineNumber, maxColumn - 1, ret.endLineNumber, maxColumn);\r\n }\r\n else {\r\n // extend marker to width = 1\r\n ret = new Range(ret.startLineNumber, ret.startColumn, ret.endLineNumber, ret.endColumn + 1);\r\n }\r\n }\r\n }\r\n else if (rawMarker.endColumn === Number.MAX_VALUE && rawMarker.startColumn === 1 && ret.startLineNumber === ret.endLineNumber) {\r\n let minColumn = model.getLineFirstNonWhitespaceColumn(rawMarker.startLineNumber);\r\n if (minColumn < ret.endColumn) {\r\n ret = new Range(ret.startLineNumber, minColumn, ret.endLineNumber, ret.endColumn);\r\n rawMarker.startColumn = minColumn;\r\n }\r\n }\r\n return ret;\r\n }\r\n _createDecorationOption(marker) {\r\n let className;\r\n let color = undefined;\r\n let zIndex;\r\n let inlineClassName = undefined;\r\n let minimap;\r\n switch (marker.severity) {\r\n case MarkerSeverity.Hint:\r\n if (this._hasMarkerTag(marker, 2 /* Deprecated */)) {\r\n className = undefined;\r\n }\r\n else if (this._hasMarkerTag(marker, 1 /* Unnecessary */)) {\r\n className = \"squiggly-unnecessary\" /* EditorUnnecessaryDecoration */;\r\n }\r\n else {\r\n className = \"squiggly-hint\" /* EditorHintDecoration */;\r\n }\r\n zIndex = 0;\r\n break;\r\n case MarkerSeverity.Warning:\r\n className = \"squiggly-warning\" /* EditorWarningDecoration */;\r\n color = themeColorFromId(overviewRulerWarning);\r\n zIndex = 20;\r\n minimap = {\r\n color: themeColorFromId(minimapWarning),\r\n position: MinimapPosition.Inline\r\n };\r\n break;\r\n case MarkerSeverity.Info:\r\n className = \"squiggly-info\" /* EditorInfoDecoration */;\r\n color = themeColorFromId(overviewRulerInfo);\r\n zIndex = 10;\r\n break;\r\n case MarkerSeverity.Error:\r\n default:\r\n className = \"squiggly-error\" /* EditorErrorDecoration */;\r\n color = themeColorFromId(overviewRulerError);\r\n zIndex = 30;\r\n minimap = {\r\n color: themeColorFromId(minimapError),\r\n position: MinimapPosition.Inline\r\n };\r\n break;\r\n }\r\n if (marker.tags) {\r\n if (marker.tags.indexOf(1 /* Unnecessary */) !== -1) {\r\n inlineClassName = \"squiggly-inline-unnecessary\" /* EditorUnnecessaryInlineDecoration */;\r\n }\r\n if (marker.tags.indexOf(2 /* Deprecated */) !== -1) {\r\n inlineClassName = \"squiggly-inline-deprecated\" /* EditorDeprecatedInlineDecoration */;\r\n }\r\n }\r\n return {\r\n description: 'marker-decoration',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className,\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color,\r\n position: OverviewRulerLane.Right\r\n },\r\n minimap,\r\n zIndex,\r\n inlineClassName,\r\n };\r\n }\r\n _hasMarkerTag(marker, tag) {\r\n if (marker.tags) {\r\n return marker.tags.indexOf(tag) >= 0;\r\n }\r\n return false;\r\n }\r\n};\r\nMarkerDecorationsService = __decorate([\r\n __param(0, IModelService),\r\n __param(1, IMarkerService)\r\n], MarkerDecorationsService);\r\nexport { MarkerDecorationsService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from './accessibility.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nlet AccessibilityService = class AccessibilityService extends Disposable {\r\n constructor(_contextKeyService, _configurationService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._configurationService = _configurationService;\r\n this._accessibilitySupport = 0 /* Unknown */;\r\n this._onDidChangeScreenReaderOptimized = new Emitter();\r\n this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);\r\n const updateContextKey = () => this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());\r\n this._register(this._configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration('editor.accessibilitySupport')) {\r\n updateContextKey();\r\n this._onDidChangeScreenReaderOptimized.fire();\r\n }\r\n }));\r\n updateContextKey();\r\n this.onDidChangeScreenReaderOptimized(() => updateContextKey());\r\n }\r\n get onDidChangeScreenReaderOptimized() {\r\n return this._onDidChangeScreenReaderOptimized.event;\r\n }\r\n isScreenReaderOptimized() {\r\n const config = this._configurationService.getValue('editor.accessibilitySupport');\r\n return config === 'on' || (config === 'auto' && this._accessibilitySupport === 2 /* Enabled */);\r\n }\r\n getAccessibilitySupport() {\r\n return this._accessibilitySupport;\r\n }\r\n};\r\nAccessibilityService = __decorate([\r\n __param(0, IContextKeyService),\r\n __param(1, IConfigurationService)\r\n], AccessibilityService);\r\nexport { AccessibilityService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { $ } from '../../../base/browser/dom.js';\r\nexport class BrowserClipboardService {\r\n constructor() {\r\n this.mapTextToType = new Map(); // unsupported in web (only in-memory)\r\n this.findText = ''; // unsupported in web (only in-memory)\r\n }\r\n writeText(text, type) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // With type: only in-memory is supported\r\n if (type) {\r\n this.mapTextToType.set(type, text);\r\n return;\r\n }\r\n // Guard access to navigator.clipboard with try/catch\r\n // as we have seen DOMExceptions in certain browsers\r\n // due to security policies.\r\n try {\r\n return yield navigator.clipboard.writeText(text);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n // Fallback to textarea and execCommand solution\r\n const activeElement = document.activeElement;\r\n const textArea = document.body.appendChild($('textarea', { 'aria-hidden': true }));\r\n textArea.style.height = '1px';\r\n textArea.style.width = '1px';\r\n textArea.style.position = 'absolute';\r\n textArea.value = text;\r\n textArea.focus();\r\n textArea.select();\r\n document.execCommand('copy');\r\n if (activeElement instanceof HTMLElement) {\r\n activeElement.focus();\r\n }\r\n document.body.removeChild(textArea);\r\n return;\r\n });\r\n }\r\n readText(type) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // With type: only in-memory is supported\r\n if (type) {\r\n return this.mapTextToType.get(type) || '';\r\n }\r\n // Guard access to navigator.clipboard with try/catch\r\n // as we have seen DOMExceptions in certain browsers\r\n // due to security policies.\r\n try {\r\n return yield navigator.clipboard.readText();\r\n }\r\n catch (error) {\r\n console.error(error);\r\n return '';\r\n }\r\n });\r\n }\r\n readFindText() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return this.findText;\r\n });\r\n }\r\n writeFindText(text) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.findText = text;\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { IUndoRedoService, ResourceEditStackSnapshot, UndoRedoGroup, UndoRedoSource } from './undoRedo.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { registerSingleton } from '../../instantiation/common/extensions.js';\r\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { Disposable, isDisposable } from '../../../base/common/lifecycle.js';\r\nconst DEBUG = false;\r\nfunction getResourceLabel(resource) {\r\n return resource.scheme === Schemas.file ? resource.fsPath : resource.path;\r\n}\r\nlet stackElementCounter = 0;\r\nclass ResourceStackElement {\r\n constructor(actual, resourceLabel, strResource, groupId, groupOrder, sourceId, sourceOrder) {\r\n this.id = (++stackElementCounter);\r\n this.type = 0 /* Resource */;\r\n this.actual = actual;\r\n this.label = actual.label;\r\n this.confirmBeforeUndo = actual.confirmBeforeUndo || false;\r\n this.resourceLabel = resourceLabel;\r\n this.strResource = strResource;\r\n this.resourceLabels = [this.resourceLabel];\r\n this.strResources = [this.strResource];\r\n this.groupId = groupId;\r\n this.groupOrder = groupOrder;\r\n this.sourceId = sourceId;\r\n this.sourceOrder = sourceOrder;\r\n this.isValid = true;\r\n }\r\n setValid(isValid) {\r\n this.isValid = isValid;\r\n }\r\n toString() {\r\n return `[id:${this.id}] [group:${this.groupId}] [${this.isValid ? ' VALID' : 'INVALID'}] ${this.actual.constructor.name} - ${this.actual}`;\r\n }\r\n}\r\nclass ResourceReasonPair {\r\n constructor(resourceLabel, reason) {\r\n this.resourceLabel = resourceLabel;\r\n this.reason = reason;\r\n }\r\n}\r\nclass RemovedResources {\r\n constructor() {\r\n this.elements = new Map();\r\n }\r\n createMessage() {\r\n const externalRemoval = [];\r\n const noParallelUniverses = [];\r\n for (const [, element] of this.elements) {\r\n const dest = (element.reason === 0 /* ExternalRemoval */\r\n ? externalRemoval\r\n : noParallelUniverses);\r\n dest.push(element.resourceLabel);\r\n }\r\n let messages = [];\r\n if (externalRemoval.length > 0) {\r\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(', ')));\r\n }\r\n if (noParallelUniverses.length > 0) {\r\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(', ')));\r\n }\r\n return messages.join('\\n');\r\n }\r\n get size() {\r\n return this.elements.size;\r\n }\r\n has(strResource) {\r\n return this.elements.has(strResource);\r\n }\r\n set(strResource, value) {\r\n this.elements.set(strResource, value);\r\n }\r\n delete(strResource) {\r\n return this.elements.delete(strResource);\r\n }\r\n}\r\nclass WorkspaceStackElement {\r\n constructor(actual, resourceLabels, strResources, groupId, groupOrder, sourceId, sourceOrder) {\r\n this.id = (++stackElementCounter);\r\n this.type = 1 /* Workspace */;\r\n this.actual = actual;\r\n this.label = actual.label;\r\n this.confirmBeforeUndo = actual.confirmBeforeUndo || false;\r\n this.resourceLabels = resourceLabels;\r\n this.strResources = strResources;\r\n this.groupId = groupId;\r\n this.groupOrder = groupOrder;\r\n this.sourceId = sourceId;\r\n this.sourceOrder = sourceOrder;\r\n this.removedResources = null;\r\n this.invalidatedResources = null;\r\n }\r\n canSplit() {\r\n return (typeof this.actual.split === 'function');\r\n }\r\n removeResource(resourceLabel, strResource, reason) {\r\n if (!this.removedResources) {\r\n this.removedResources = new RemovedResources();\r\n }\r\n if (!this.removedResources.has(strResource)) {\r\n this.removedResources.set(strResource, new ResourceReasonPair(resourceLabel, reason));\r\n }\r\n }\r\n setValid(resourceLabel, strResource, isValid) {\r\n if (isValid) {\r\n if (this.invalidatedResources) {\r\n this.invalidatedResources.delete(strResource);\r\n if (this.invalidatedResources.size === 0) {\r\n this.invalidatedResources = null;\r\n }\r\n }\r\n }\r\n else {\r\n if (!this.invalidatedResources) {\r\n this.invalidatedResources = new RemovedResources();\r\n }\r\n if (!this.invalidatedResources.has(strResource)) {\r\n this.invalidatedResources.set(strResource, new ResourceReasonPair(resourceLabel, 0 /* ExternalRemoval */));\r\n }\r\n }\r\n }\r\n toString() {\r\n return `[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources ? 'INVALID' : ' VALID'}] ${this.actual.constructor.name} - ${this.actual}`;\r\n }\r\n}\r\nclass ResourceEditStack {\r\n constructor(resourceLabel, strResource) {\r\n this.resourceLabel = resourceLabel;\r\n this.strResource = strResource;\r\n this._past = [];\r\n this._future = [];\r\n this.locked = false;\r\n this.versionId = 1;\r\n }\r\n dispose() {\r\n for (const element of this._past) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n for (const element of this._future) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n toString() {\r\n let result = [];\r\n result.push(`* ${this.strResource}:`);\r\n for (let i = 0; i < this._past.length; i++) {\r\n result.push(` * [UNDO] ${this._past[i]}`);\r\n }\r\n for (let i = this._future.length - 1; i >= 0; i--) {\r\n result.push(` * [REDO] ${this._future[i]}`);\r\n }\r\n return result.join('\\n');\r\n }\r\n flushAllElements() {\r\n this._past = [];\r\n this._future = [];\r\n this.versionId++;\r\n }\r\n _setElementValidFlag(element, isValid) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.setValid(this.resourceLabel, this.strResource, isValid);\r\n }\r\n else {\r\n element.setValid(isValid);\r\n }\r\n }\r\n setElementsValidFlag(isValid, filter) {\r\n for (const element of this._past) {\r\n if (filter(element.actual)) {\r\n this._setElementValidFlag(element, isValid);\r\n }\r\n }\r\n for (const element of this._future) {\r\n if (filter(element.actual)) {\r\n this._setElementValidFlag(element, isValid);\r\n }\r\n }\r\n }\r\n pushElement(element) {\r\n // remove the future\r\n for (const futureElement of this._future) {\r\n if (futureElement.type === 1 /* Workspace */) {\r\n futureElement.removeResource(this.resourceLabel, this.strResource, 1 /* NoParallelUniverses */);\r\n }\r\n }\r\n this._future = [];\r\n this._past.push(element);\r\n this.versionId++;\r\n }\r\n createSnapshot(resource) {\r\n const elements = [];\r\n for (let i = 0, len = this._past.length; i < len; i++) {\r\n elements.push(this._past[i].id);\r\n }\r\n for (let i = this._future.length - 1; i >= 0; i--) {\r\n elements.push(this._future[i].id);\r\n }\r\n return new ResourceEditStackSnapshot(resource, elements);\r\n }\r\n restoreSnapshot(snapshot) {\r\n const snapshotLength = snapshot.elements.length;\r\n let isOK = true;\r\n let snapshotIndex = 0;\r\n let removePastAfter = -1;\r\n for (let i = 0, len = this._past.length; i < len; i++, snapshotIndex++) {\r\n const element = this._past[i];\r\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\r\n isOK = false;\r\n removePastAfter = 0;\r\n }\r\n if (!isOK && element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n let removeFutureBefore = -1;\r\n for (let i = this._future.length - 1; i >= 0; i--, snapshotIndex++) {\r\n const element = this._future[i];\r\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\r\n isOK = false;\r\n removeFutureBefore = i;\r\n }\r\n if (!isOK && element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n if (removePastAfter !== -1) {\r\n this._past = this._past.slice(0, removePastAfter);\r\n }\r\n if (removeFutureBefore !== -1) {\r\n this._future = this._future.slice(removeFutureBefore + 1);\r\n }\r\n this.versionId++;\r\n }\r\n getElements() {\r\n const past = [];\r\n const future = [];\r\n for (const element of this._past) {\r\n past.push(element.actual);\r\n }\r\n for (const element of this._future) {\r\n future.push(element.actual);\r\n }\r\n return { past, future };\r\n }\r\n getClosestPastElement() {\r\n if (this._past.length === 0) {\r\n return null;\r\n }\r\n return this._past[this._past.length - 1];\r\n }\r\n getSecondClosestPastElement() {\r\n if (this._past.length < 2) {\r\n return null;\r\n }\r\n return this._past[this._past.length - 2];\r\n }\r\n getClosestFutureElement() {\r\n if (this._future.length === 0) {\r\n return null;\r\n }\r\n return this._future[this._future.length - 1];\r\n }\r\n hasPastElements() {\r\n return (this._past.length > 0);\r\n }\r\n hasFutureElements() {\r\n return (this._future.length > 0);\r\n }\r\n splitPastWorkspaceElement(toRemove, individualMap) {\r\n for (let j = this._past.length - 1; j >= 0; j--) {\r\n if (this._past[j] === toRemove) {\r\n if (individualMap.has(this.strResource)) {\r\n // gets replaced\r\n this._past[j] = individualMap.get(this.strResource);\r\n }\r\n else {\r\n // gets deleted\r\n this._past.splice(j, 1);\r\n }\r\n break;\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n splitFutureWorkspaceElement(toRemove, individualMap) {\r\n for (let j = this._future.length - 1; j >= 0; j--) {\r\n if (this._future[j] === toRemove) {\r\n if (individualMap.has(this.strResource)) {\r\n // gets replaced\r\n this._future[j] = individualMap.get(this.strResource);\r\n }\r\n else {\r\n // gets deleted\r\n this._future.splice(j, 1);\r\n }\r\n break;\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n moveBackward(element) {\r\n this._past.pop();\r\n this._future.push(element);\r\n this.versionId++;\r\n }\r\n moveForward(element) {\r\n this._future.pop();\r\n this._past.push(element);\r\n this.versionId++;\r\n }\r\n}\r\nclass EditStackSnapshot {\r\n constructor(editStacks) {\r\n this.editStacks = editStacks;\r\n this._versionIds = [];\r\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\r\n this._versionIds[i] = this.editStacks[i].versionId;\r\n }\r\n }\r\n isValid() {\r\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\r\n if (this._versionIds[i] !== this.editStacks[i].versionId) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\nconst missingEditStack = new ResourceEditStack('', '');\r\nmissingEditStack.locked = true;\r\nlet UndoRedoService = class UndoRedoService {\r\n constructor(_dialogService, _notificationService) {\r\n this._dialogService = _dialogService;\r\n this._notificationService = _notificationService;\r\n this._editStacks = new Map();\r\n this._uriComparisonKeyComputers = [];\r\n }\r\n getUriComparisonKey(resource) {\r\n for (const uriComparisonKeyComputer of this._uriComparisonKeyComputers) {\r\n if (uriComparisonKeyComputer[0] === resource.scheme) {\r\n return uriComparisonKeyComputer[1].getComparisonKey(resource);\r\n }\r\n }\r\n return resource.toString();\r\n }\r\n _print(label) {\r\n console.log(`------------------------------------`);\r\n console.log(`AFTER ${label}: `);\r\n let str = [];\r\n for (const element of this._editStacks) {\r\n str.push(element[1].toString());\r\n }\r\n console.log(str.join('\\n'));\r\n }\r\n pushElement(element, group = UndoRedoGroup.None, source = UndoRedoSource.None) {\r\n if (element.type === 0 /* Resource */) {\r\n const resourceLabel = getResourceLabel(element.resource);\r\n const strResource = this.getUriComparisonKey(element.resource);\r\n this._pushElement(new ResourceStackElement(element, resourceLabel, strResource, group.id, group.nextOrder(), source.id, source.nextOrder()));\r\n }\r\n else {\r\n const seen = new Set();\r\n const resourceLabels = [];\r\n const strResources = [];\r\n for (const resource of element.resources) {\r\n const resourceLabel = getResourceLabel(resource);\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (seen.has(strResource)) {\r\n continue;\r\n }\r\n seen.add(strResource);\r\n resourceLabels.push(resourceLabel);\r\n strResources.push(strResource);\r\n }\r\n if (resourceLabels.length === 1) {\r\n this._pushElement(new ResourceStackElement(element, resourceLabels[0], strResources[0], group.id, group.nextOrder(), source.id, source.nextOrder()));\r\n }\r\n else {\r\n this._pushElement(new WorkspaceStackElement(element, resourceLabels, strResources, group.id, group.nextOrder(), source.id, source.nextOrder()));\r\n }\r\n }\r\n if (DEBUG) {\r\n this._print('pushElement');\r\n }\r\n }\r\n _pushElement(element) {\r\n for (let i = 0, len = element.strResources.length; i < len; i++) {\r\n const resourceLabel = element.resourceLabels[i];\r\n const strResource = element.strResources[i];\r\n let editStack;\r\n if (this._editStacks.has(strResource)) {\r\n editStack = this._editStacks.get(strResource);\r\n }\r\n else {\r\n editStack = new ResourceEditStack(resourceLabel, strResource);\r\n this._editStacks.set(strResource, editStack);\r\n }\r\n editStack.pushElement(element);\r\n }\r\n }\r\n getLastElement(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n if (editStack.hasFutureElements()) {\r\n return null;\r\n }\r\n const closestPastElement = editStack.getClosestPastElement();\r\n return closestPastElement ? closestPastElement.actual : null;\r\n }\r\n return null;\r\n }\r\n _splitPastWorkspaceElement(toRemove, ignoreResources) {\r\n const individualArr = toRemove.actual.split();\r\n const individualMap = new Map();\r\n for (const _element of individualArr) {\r\n const resourceLabel = getResourceLabel(_element.resource);\r\n const strResource = this.getUriComparisonKey(_element.resource);\r\n const element = new ResourceStackElement(_element, resourceLabel, strResource, 0, 0, 0, 0);\r\n individualMap.set(element.strResource, element);\r\n }\r\n for (const strResource of toRemove.strResources) {\r\n if (ignoreResources && ignoreResources.has(strResource)) {\r\n continue;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.splitPastWorkspaceElement(toRemove, individualMap);\r\n }\r\n }\r\n _splitFutureWorkspaceElement(toRemove, ignoreResources) {\r\n const individualArr = toRemove.actual.split();\r\n const individualMap = new Map();\r\n for (const _element of individualArr) {\r\n const resourceLabel = getResourceLabel(_element.resource);\r\n const strResource = this.getUriComparisonKey(_element.resource);\r\n const element = new ResourceStackElement(_element, resourceLabel, strResource, 0, 0, 0, 0);\r\n individualMap.set(element.strResource, element);\r\n }\r\n for (const strResource of toRemove.strResources) {\r\n if (ignoreResources && ignoreResources.has(strResource)) {\r\n continue;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.splitFutureWorkspaceElement(toRemove, individualMap);\r\n }\r\n }\r\n removeElements(resource) {\r\n const strResource = typeof resource === 'string' ? resource : this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.dispose();\r\n this._editStacks.delete(strResource);\r\n }\r\n if (DEBUG) {\r\n this._print('removeElements');\r\n }\r\n }\r\n setElementsValidFlag(resource, isValid, filter) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.setElementsValidFlag(isValid, filter);\r\n }\r\n if (DEBUG) {\r\n this._print('setElementsValidFlag');\r\n }\r\n }\r\n createSnapshot(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.createSnapshot(resource);\r\n }\r\n return new ResourceEditStackSnapshot(resource, []);\r\n }\r\n restoreSnapshot(snapshot) {\r\n const strResource = this.getUriComparisonKey(snapshot.resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.restoreSnapshot(snapshot);\r\n if (!editStack.hasPastElements() && !editStack.hasFutureElements()) {\r\n // the edit stack is now empty, just remove it entirely\r\n editStack.dispose();\r\n this._editStacks.delete(strResource);\r\n }\r\n }\r\n if (DEBUG) {\r\n this._print('restoreSnapshot');\r\n }\r\n }\r\n getElements(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.getElements();\r\n }\r\n return { past: [], future: [] };\r\n }\r\n _findClosestUndoElementWithSource(sourceId) {\r\n if (!sourceId) {\r\n return [null, null];\r\n }\r\n // find an element with the sourceId and with the highest sourceOrder ready to be undone\r\n let matchedElement = null;\r\n let matchedStrResource = null;\r\n for (const [strResource, editStack] of this._editStacks) {\r\n const candidate = editStack.getClosestPastElement();\r\n if (!candidate) {\r\n continue;\r\n }\r\n if (candidate.sourceId === sourceId) {\r\n if (!matchedElement || candidate.sourceOrder > matchedElement.sourceOrder) {\r\n matchedElement = candidate;\r\n matchedStrResource = strResource;\r\n }\r\n }\r\n }\r\n return [matchedElement, matchedStrResource];\r\n }\r\n canUndo(resourceOrSource) {\r\n if (resourceOrSource instanceof UndoRedoSource) {\r\n const [, matchedStrResource] = this._findClosestUndoElementWithSource(resourceOrSource.id);\r\n return matchedStrResource ? true : false;\r\n }\r\n const strResource = this.getUriComparisonKey(resourceOrSource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.hasPastElements();\r\n }\r\n return false;\r\n }\r\n _onError(err, element) {\r\n onUnexpectedError(err);\r\n // An error occurred while undoing or redoing => drop the undo/redo stack for all affected resources\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.error(err);\r\n }\r\n _acquireLocks(editStackSnapshot) {\r\n // first, check if all locks can be acquired\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n throw new Error('Cannot acquire edit stack lock');\r\n }\r\n }\r\n // can acquire all locks\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.locked = true;\r\n }\r\n return () => {\r\n // release all locks\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.locked = false;\r\n }\r\n };\r\n }\r\n _safeInvokeWithLocks(element, invoke, editStackSnapshot, cleanup, continuation) {\r\n const releaseLocks = this._acquireLocks(editStackSnapshot);\r\n let result;\r\n try {\r\n result = invoke();\r\n }\r\n catch (err) {\r\n releaseLocks();\r\n cleanup.dispose();\r\n return this._onError(err, element);\r\n }\r\n if (result) {\r\n // result is Promise\r\n return result.then(() => {\r\n releaseLocks();\r\n cleanup.dispose();\r\n return continuation();\r\n }, (err) => {\r\n releaseLocks();\r\n cleanup.dispose();\r\n return this._onError(err, element);\r\n });\r\n }\r\n else {\r\n // result is void\r\n releaseLocks();\r\n cleanup.dispose();\r\n return continuation();\r\n }\r\n }\r\n _invokeWorkspacePrepare(element) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof element.actual.prepareUndoRedo === 'undefined') {\r\n return Disposable.None;\r\n }\r\n const result = element.actual.prepareUndoRedo();\r\n if (typeof result === 'undefined') {\r\n return Disposable.None;\r\n }\r\n return result;\r\n });\r\n }\r\n _invokeResourcePrepare(element, callback) {\r\n if (element.actual.type !== 1 /* Workspace */ || typeof element.actual.prepareUndoRedo === 'undefined') {\r\n // no preparation needed\r\n return callback(Disposable.None);\r\n }\r\n const r = element.actual.prepareUndoRedo();\r\n if (!r) {\r\n // nothing to clean up\r\n return callback(Disposable.None);\r\n }\r\n if (isDisposable(r)) {\r\n return callback(r);\r\n }\r\n return r.then((disposable) => {\r\n return callback(disposable);\r\n });\r\n }\r\n _getAffectedEditStacks(element) {\r\n const affectedEditStacks = [];\r\n for (const strResource of element.strResources) {\r\n affectedEditStacks.push(this._editStacks.get(strResource) || missingEditStack);\r\n }\r\n return new EditStackSnapshot(affectedEditStacks);\r\n }\r\n _tryToSplitAndUndo(strResource, element, ignoreResources, message) {\r\n if (element.canSplit()) {\r\n this._splitPastWorkspaceElement(element, ignoreResources);\r\n this._notificationService.warn(message);\r\n return new WorkspaceVerificationError(this._undo(strResource, 0, true));\r\n }\r\n else {\r\n // Cannot safely split this workspace element => flush all undo/redo stacks\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.warn(message);\r\n return new WorkspaceVerificationError();\r\n }\r\n }\r\n _checkWorkspaceUndo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\r\n if (element.removedResources) {\r\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()));\r\n }\r\n if (checkInvalidatedResources && element.invalidatedResources) {\r\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()));\r\n }\r\n // this must be the last past element in all the impacted resources!\r\n const cannotUndoDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.getClosestPastElement() !== element) {\r\n cannotUndoDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotUndoDueToResources.length > 0) {\r\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(', ')));\r\n }\r\n const cannotLockDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n cannotLockDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotLockDueToResources.length > 0) {\r\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(', ')));\r\n }\r\n // check if new stack elements were added in the meantime...\r\n if (!editStackSnapshot.isValid()) {\r\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));\r\n }\r\n return null;\r\n }\r\n _workspaceUndo(strResource, element, undoConfirmed) {\r\n const affectedEditStacks = this._getAffectedEditStacks(element);\r\n const verificationError = this._checkWorkspaceUndo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError) {\r\n return verificationError.returnValue;\r\n }\r\n return this._confirmAndExecuteWorkspaceUndo(strResource, element, affectedEditStacks, undoConfirmed);\r\n }\r\n _isPartOfUndoGroup(element) {\r\n if (!element.groupId) {\r\n return false;\r\n }\r\n // check that there is at least another element with the same groupId ready to be undone\r\n for (const [, editStack] of this._editStacks) {\r\n const pastElement = editStack.getClosestPastElement();\r\n if (!pastElement) {\r\n continue;\r\n }\r\n if (pastElement === element) {\r\n const secondPastElement = editStack.getSecondClosestPastElement();\r\n if (secondPastElement && secondPastElement.groupId === element.groupId) {\r\n // there is another element with the same group id in the same stack!\r\n return true;\r\n }\r\n }\r\n if (pastElement.groupId === element.groupId) {\r\n // there is another element with the same group id in another stack!\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _confirmAndExecuteWorkspaceUndo(strResource, element, editStackSnapshot, undoConfirmed) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (element.canSplit() && !this._isPartOfUndoGroup(element)) {\r\n // this element can be split\r\n const result = yield this._dialogService.show(Severity.Info, nls.localize('confirmWorkspace', \"Would you like to undo '{0}' across all files?\", element.label), [\r\n nls.localize({ key: 'ok', comment: ['{0} denotes a number that is > 1'] }, \"Undo in {0} Files\", editStackSnapshot.editStacks.length),\r\n nls.localize('nok', \"Undo this File\"),\r\n nls.localize('cancel', \"Cancel\"),\r\n ], {\r\n cancelId: 2\r\n });\r\n if (result.choice === 2) {\r\n // choice: cancel\r\n return;\r\n }\r\n if (result.choice === 1) {\r\n // choice: undo this file\r\n this._splitPastWorkspaceElement(element, null);\r\n return this._undo(strResource, 0, true);\r\n }\r\n // choice: undo in all files\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the confirmation await)\r\n const verificationError1 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError1) {\r\n return verificationError1.returnValue;\r\n }\r\n undoConfirmed = true;\r\n }\r\n // prepare\r\n let cleanup;\r\n try {\r\n cleanup = yield this._invokeWorkspacePrepare(element);\r\n }\r\n catch (err) {\r\n return this._onError(err, element);\r\n }\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\r\n const verificationError2 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\r\n if (verificationError2) {\r\n cleanup.dispose();\r\n return verificationError2.returnValue;\r\n }\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.moveBackward(element);\r\n }\r\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), editStackSnapshot, cleanup, () => this._continueUndoInGroup(element.groupId, undoConfirmed));\r\n });\r\n }\r\n _resourceUndo(editStack, element, undoConfirmed) {\r\n if (!element.isValid) {\r\n // invalid element => immediately flush edit stack!\r\n editStack.flushAllElements();\r\n return;\r\n }\r\n if (editStack.locked) {\r\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);\r\n this._notificationService.warn(message);\r\n return;\r\n }\r\n return this._invokeResourcePrepare(element, (cleanup) => {\r\n editStack.moveBackward(element);\r\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), new EditStackSnapshot([editStack]), cleanup, () => this._continueUndoInGroup(element.groupId, undoConfirmed));\r\n });\r\n }\r\n _findClosestUndoElementInGroup(groupId) {\r\n if (!groupId) {\r\n return [null, null];\r\n }\r\n // find another element with the same groupId and with the highest groupOrder ready to be undone\r\n let matchedElement = null;\r\n let matchedStrResource = null;\r\n for (const [strResource, editStack] of this._editStacks) {\r\n const candidate = editStack.getClosestPastElement();\r\n if (!candidate) {\r\n continue;\r\n }\r\n if (candidate.groupId === groupId) {\r\n if (!matchedElement || candidate.groupOrder > matchedElement.groupOrder) {\r\n matchedElement = candidate;\r\n matchedStrResource = strResource;\r\n }\r\n }\r\n }\r\n return [matchedElement, matchedStrResource];\r\n }\r\n _continueUndoInGroup(groupId, undoConfirmed) {\r\n if (!groupId) {\r\n return;\r\n }\r\n const [, matchedStrResource] = this._findClosestUndoElementInGroup(groupId);\r\n if (matchedStrResource) {\r\n return this._undo(matchedStrResource, 0, undoConfirmed);\r\n }\r\n }\r\n undo(resourceOrSource) {\r\n if (resourceOrSource instanceof UndoRedoSource) {\r\n const [, matchedStrResource] = this._findClosestUndoElementWithSource(resourceOrSource.id);\r\n return matchedStrResource ? this._undo(matchedStrResource, resourceOrSource.id, false) : undefined;\r\n }\r\n if (typeof resourceOrSource === 'string') {\r\n return this._undo(resourceOrSource, 0, false);\r\n }\r\n return this._undo(this.getUriComparisonKey(resourceOrSource), 0, false);\r\n }\r\n _undo(strResource, sourceId = 0, undoConfirmed) {\r\n if (!this._editStacks.has(strResource)) {\r\n return;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n const element = editStack.getClosestPastElement();\r\n if (!element) {\r\n return;\r\n }\r\n if (element.groupId) {\r\n // this element is a part of a group, we need to make sure undoing in a group is in order\r\n const [matchedElement, matchedStrResource] = this._findClosestUndoElementInGroup(element.groupId);\r\n if (element !== matchedElement && matchedStrResource) {\r\n // there is an element in the same group that should be undone before this one\r\n return this._undo(matchedStrResource, sourceId, undoConfirmed);\r\n }\r\n }\r\n const shouldPromptForConfirmation = (element.sourceId !== sourceId || element.confirmBeforeUndo);\r\n if (shouldPromptForConfirmation && !undoConfirmed) {\r\n // Hit a different source or the element asks for prompt before undo, prompt for confirmation\r\n return this._confirmAndContinueUndo(strResource, sourceId, element);\r\n }\r\n try {\r\n if (element.type === 1 /* Workspace */) {\r\n return this._workspaceUndo(strResource, element, undoConfirmed);\r\n }\r\n else {\r\n return this._resourceUndo(editStack, element, undoConfirmed);\r\n }\r\n }\r\n finally {\r\n if (DEBUG) {\r\n this._print('undo');\r\n }\r\n }\r\n }\r\n _confirmAndContinueUndo(strResource, sourceId, element) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this._dialogService.show(Severity.Info, nls.localize('confirmDifferentSource', \"Would you like to undo '{0}'?\", element.label), [\r\n nls.localize('confirmDifferentSource.yes', \"Yes\"),\r\n nls.localize('cancel', \"Cancel\"),\r\n ], {\r\n cancelId: 1\r\n });\r\n if (result.choice === 1) {\r\n // choice: cancel\r\n return;\r\n }\r\n // choice: undo\r\n return this._undo(strResource, sourceId, true);\r\n });\r\n }\r\n _findClosestRedoElementWithSource(sourceId) {\r\n if (!sourceId) {\r\n return [null, null];\r\n }\r\n // find an element with sourceId and with the lowest sourceOrder ready to be redone\r\n let matchedElement = null;\r\n let matchedStrResource = null;\r\n for (const [strResource, editStack] of this._editStacks) {\r\n const candidate = editStack.getClosestFutureElement();\r\n if (!candidate) {\r\n continue;\r\n }\r\n if (candidate.sourceId === sourceId) {\r\n if (!matchedElement || candidate.sourceOrder < matchedElement.sourceOrder) {\r\n matchedElement = candidate;\r\n matchedStrResource = strResource;\r\n }\r\n }\r\n }\r\n return [matchedElement, matchedStrResource];\r\n }\r\n canRedo(resourceOrSource) {\r\n if (resourceOrSource instanceof UndoRedoSource) {\r\n const [, matchedStrResource] = this._findClosestRedoElementWithSource(resourceOrSource.id);\r\n return matchedStrResource ? true : false;\r\n }\r\n const strResource = this.getUriComparisonKey(resourceOrSource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.hasFutureElements();\r\n }\r\n return false;\r\n }\r\n _tryToSplitAndRedo(strResource, element, ignoreResources, message) {\r\n if (element.canSplit()) {\r\n this._splitFutureWorkspaceElement(element, ignoreResources);\r\n this._notificationService.warn(message);\r\n return new WorkspaceVerificationError(this._redo(strResource));\r\n }\r\n else {\r\n // Cannot safely split this workspace element => flush all undo/redo stacks\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.warn(message);\r\n return new WorkspaceVerificationError();\r\n }\r\n }\r\n _checkWorkspaceRedo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\r\n if (element.removedResources) {\r\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()));\r\n }\r\n if (checkInvalidatedResources && element.invalidatedResources) {\r\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()));\r\n }\r\n // this must be the last future element in all the impacted resources!\r\n const cannotRedoDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.getClosestFutureElement() !== element) {\r\n cannotRedoDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotRedoDueToResources.length > 0) {\r\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(', ')));\r\n }\r\n const cannotLockDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n cannotLockDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotLockDueToResources.length > 0) {\r\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(', ')));\r\n }\r\n // check if new stack elements were added in the meantime...\r\n if (!editStackSnapshot.isValid()) {\r\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));\r\n }\r\n return null;\r\n }\r\n _workspaceRedo(strResource, element) {\r\n const affectedEditStacks = this._getAffectedEditStacks(element);\r\n const verificationError = this._checkWorkspaceRedo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError) {\r\n return verificationError.returnValue;\r\n }\r\n return this._executeWorkspaceRedo(strResource, element, affectedEditStacks);\r\n }\r\n _executeWorkspaceRedo(strResource, element, editStackSnapshot) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // prepare\r\n let cleanup;\r\n try {\r\n cleanup = yield this._invokeWorkspacePrepare(element);\r\n }\r\n catch (err) {\r\n return this._onError(err, element);\r\n }\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\r\n const verificationError = this._checkWorkspaceRedo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\r\n if (verificationError) {\r\n cleanup.dispose();\r\n return verificationError.returnValue;\r\n }\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.moveForward(element);\r\n }\r\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), editStackSnapshot, cleanup, () => this._continueRedoInGroup(element.groupId));\r\n });\r\n }\r\n _resourceRedo(editStack, element) {\r\n if (!element.isValid) {\r\n // invalid element => immediately flush edit stack!\r\n editStack.flushAllElements();\r\n return;\r\n }\r\n if (editStack.locked) {\r\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);\r\n this._notificationService.warn(message);\r\n return;\r\n }\r\n return this._invokeResourcePrepare(element, (cleanup) => {\r\n editStack.moveForward(element);\r\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), new EditStackSnapshot([editStack]), cleanup, () => this._continueRedoInGroup(element.groupId));\r\n });\r\n }\r\n _findClosestRedoElementInGroup(groupId) {\r\n if (!groupId) {\r\n return [null, null];\r\n }\r\n // find another element with the same groupId and with the lowest groupOrder ready to be redone\r\n let matchedElement = null;\r\n let matchedStrResource = null;\r\n for (const [strResource, editStack] of this._editStacks) {\r\n const candidate = editStack.getClosestFutureElement();\r\n if (!candidate) {\r\n continue;\r\n }\r\n if (candidate.groupId === groupId) {\r\n if (!matchedElement || candidate.groupOrder < matchedElement.groupOrder) {\r\n matchedElement = candidate;\r\n matchedStrResource = strResource;\r\n }\r\n }\r\n }\r\n return [matchedElement, matchedStrResource];\r\n }\r\n _continueRedoInGroup(groupId) {\r\n if (!groupId) {\r\n return;\r\n }\r\n const [, matchedStrResource] = this._findClosestRedoElementInGroup(groupId);\r\n if (matchedStrResource) {\r\n return this._redo(matchedStrResource);\r\n }\r\n }\r\n redo(resourceOrSource) {\r\n if (resourceOrSource instanceof UndoRedoSource) {\r\n const [, matchedStrResource] = this._findClosestRedoElementWithSource(resourceOrSource.id);\r\n return matchedStrResource ? this._redo(matchedStrResource) : undefined;\r\n }\r\n if (typeof resourceOrSource === 'string') {\r\n return this._redo(resourceOrSource);\r\n }\r\n return this._redo(this.getUriComparisonKey(resourceOrSource));\r\n }\r\n _redo(strResource) {\r\n if (!this._editStacks.has(strResource)) {\r\n return;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n const element = editStack.getClosestFutureElement();\r\n if (!element) {\r\n return;\r\n }\r\n if (element.groupId) {\r\n // this element is a part of a group, we need to make sure redoing in a group is in order\r\n const [matchedElement, matchedStrResource] = this._findClosestRedoElementInGroup(element.groupId);\r\n if (element !== matchedElement && matchedStrResource) {\r\n // there is an element in the same group that should be redone before this one\r\n return this._redo(matchedStrResource);\r\n }\r\n }\r\n try {\r\n if (element.type === 1 /* Workspace */) {\r\n return this._workspaceRedo(strResource, element);\r\n }\r\n else {\r\n return this._resourceRedo(editStack, element);\r\n }\r\n }\r\n finally {\r\n if (DEBUG) {\r\n this._print('redo');\r\n }\r\n }\r\n }\r\n};\r\nUndoRedoService = __decorate([\r\n __param(0, IDialogService),\r\n __param(1, INotificationService)\r\n], UndoRedoService);\r\nexport { UndoRedoService };\r\nclass WorkspaceVerificationError {\r\n constructor(returnValue) {\r\n this.returnValue = returnValue;\r\n }\r\n}\r\nregisterSingleton(IUndoRedoService, UndoRedoService);\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./standaloneQuickInput.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./standaloneQuickInput.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../../css-loader/dist/cjs.js!./quickInput.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../../css-loader/dist/cjs.js!./quickInput.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { IdleValue } from './async.js';\r\n// When comparing large numbers of strings it's better for performance to create an\r\n// Intl.Collator object and use the function provided by its compare property\r\n// than it is to use String.prototype.localeCompare()\r\n// A collator with numeric sorting enabled, and no sensitivity to case, accents or diacritics.\r\nconst intlFileNameCollatorBaseNumeric = new IdleValue(() => {\r\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\r\n return {\r\n collator: collator,\r\n collatorIsNumeric: collator.resolvedOptions().numeric\r\n };\r\n});\r\n/** Compares filenames without distinguishing the name from the extension. Disambiguates by unicode comparison. */\r\nexport function compareFileNames(one, other, caseSensitive = false) {\r\n const a = one || '';\r\n const b = other || '';\r\n const result = intlFileNameCollatorBaseNumeric.value.collator.compare(a, b);\r\n // Using the numeric option will make compare(`foo1`, `foo01`) === 0. Disambiguate.\r\n if (intlFileNameCollatorBaseNumeric.value.collatorIsNumeric && result === 0 && a !== b) {\r\n return a < b ? -1 : 1;\r\n }\r\n return result;\r\n}\r\nexport function compareAnything(one, other, lookFor) {\r\n const elementAName = one.toLowerCase();\r\n const elementBName = other.toLowerCase();\r\n // Sort prefix matches over non prefix matches\r\n const prefixCompare = compareByPrefix(one, other, lookFor);\r\n if (prefixCompare) {\r\n return prefixCompare;\r\n }\r\n // Sort suffix matches over non suffix matches\r\n const elementASuffixMatch = elementAName.endsWith(lookFor);\r\n const elementBSuffixMatch = elementBName.endsWith(lookFor);\r\n if (elementASuffixMatch !== elementBSuffixMatch) {\r\n return elementASuffixMatch ? -1 : 1;\r\n }\r\n // Understand file names\r\n const r = compareFileNames(elementAName, elementBName);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n // Compare by name\r\n return elementAName.localeCompare(elementBName);\r\n}\r\nexport function compareByPrefix(one, other, lookFor) {\r\n const elementAName = one.toLowerCase();\r\n const elementBName = other.toLowerCase();\r\n // Sort prefix matches over non prefix matches\r\n const elementAPrefixMatch = elementAName.startsWith(lookFor);\r\n const elementBPrefixMatch = elementBName.startsWith(lookFor);\r\n if (elementAPrefixMatch !== elementBPrefixMatch) {\r\n return elementAPrefixMatch ? -1 : 1;\r\n }\r\n // Same prefix: Sort shorter matches to the top to have those on top that match more precisely\r\n else if (elementAPrefixMatch && elementBPrefixMatch) {\r\n if (elementAName.length < elementBName.length) {\r\n return -1;\r\n }\r\n if (elementAName.length > elementBName.length) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { IdGenerator } from '../../../common/idGenerator.js';\r\nconst iconPathToClass = {};\r\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\r\nexport function getIconClass(iconPath) {\r\n if (!iconPath) {\r\n return undefined;\r\n }\r\n let iconClass;\r\n const key = iconPath.dark.toString();\r\n if (iconPathToClass[key]) {\r\n iconClass = iconPathToClass[key];\r\n }\r\n else {\r\n iconClass = iconClassGenerator.nextId();\r\n dom.createCSSRule(`.${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.light || iconPath.dark)}`);\r\n dom.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.dark)}`);\r\n iconPathToClass[key] = iconClass;\r\n }\r\n return iconClass;\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./keybindingLabel.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./keybindingLabel.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './keybindingLabel.css';\r\nimport { equals } from '../../../common/objects.js';\r\nimport { UILabelProvider } from '../../../common/keybindingLabels.js';\r\nimport * as dom from '../../dom.js';\r\nimport { localize } from '../../../../nls.js';\r\nconst $ = dom.$;\r\nexport class KeybindingLabel {\r\n constructor(container, os, options) {\r\n this.os = os;\r\n this.keyElements = new Set();\r\n this.options = options || Object.create(null);\r\n this.labelBackground = this.options.keybindingLabelBackground;\r\n this.labelForeground = this.options.keybindingLabelForeground;\r\n this.labelBorder = this.options.keybindingLabelBorder;\r\n this.labelBottomBorder = this.options.keybindingLabelBottomBorder;\r\n this.labelShadow = this.options.keybindingLabelShadow;\r\n this.domNode = dom.append(container, $('.monaco-keybinding'));\r\n this.didEverRender = false;\r\n container.appendChild(this.domNode);\r\n }\r\n get element() {\r\n return this.domNode;\r\n }\r\n set(keybinding, matches) {\r\n if (this.didEverRender && this.keybinding === keybinding && KeybindingLabel.areSame(this.matches, matches)) {\r\n return;\r\n }\r\n this.keybinding = keybinding;\r\n this.matches = matches;\r\n this.render();\r\n }\r\n render() {\r\n this.clear();\r\n if (this.keybinding) {\r\n let [firstPart, chordPart] = this.keybinding.getParts();\r\n if (firstPart) {\r\n this.renderPart(this.domNode, firstPart, this.matches ? this.matches.firstPart : null);\r\n }\r\n if (chordPart) {\r\n dom.append(this.domNode, $('span.monaco-keybinding-key-chord-separator', undefined, ' '));\r\n this.renderPart(this.domNode, chordPart, this.matches ? this.matches.chordPart : null);\r\n }\r\n this.domNode.title = this.keybinding.getAriaLabel() || '';\r\n }\r\n else if (this.options && this.options.renderUnboundKeybindings) {\r\n this.renderUnbound(this.domNode);\r\n }\r\n this.applyStyles();\r\n this.didEverRender = true;\r\n }\r\n clear() {\r\n dom.clearNode(this.domNode);\r\n this.keyElements.clear();\r\n }\r\n renderPart(parent, part, match) {\r\n const modifierLabels = UILabelProvider.modifierLabels[this.os];\r\n if (part.ctrlKey) {\r\n this.renderKey(parent, modifierLabels.ctrlKey, Boolean(match === null || match === void 0 ? void 0 : match.ctrlKey), modifierLabels.separator);\r\n }\r\n if (part.shiftKey) {\r\n this.renderKey(parent, modifierLabels.shiftKey, Boolean(match === null || match === void 0 ? void 0 : match.shiftKey), modifierLabels.separator);\r\n }\r\n if (part.altKey) {\r\n this.renderKey(parent, modifierLabels.altKey, Boolean(match === null || match === void 0 ? void 0 : match.altKey), modifierLabels.separator);\r\n }\r\n if (part.metaKey) {\r\n this.renderKey(parent, modifierLabels.metaKey, Boolean(match === null || match === void 0 ? void 0 : match.metaKey), modifierLabels.separator);\r\n }\r\n const keyLabel = part.keyLabel;\r\n if (keyLabel) {\r\n this.renderKey(parent, keyLabel, Boolean(match === null || match === void 0 ? void 0 : match.keyCode), '');\r\n }\r\n }\r\n renderKey(parent, label, highlight, separator) {\r\n dom.append(parent, this.createKeyElement(label, highlight ? '.highlight' : ''));\r\n if (separator) {\r\n dom.append(parent, $('span.monaco-keybinding-key-separator', undefined, separator));\r\n }\r\n }\r\n renderUnbound(parent) {\r\n dom.append(parent, this.createKeyElement(localize('unbound', \"Unbound\")));\r\n }\r\n createKeyElement(label, extraClass = '') {\r\n const keyElement = $('span.monaco-keybinding-key' + extraClass, undefined, label);\r\n this.keyElements.add(keyElement);\r\n return keyElement;\r\n }\r\n style(styles) {\r\n this.labelBackground = styles.keybindingLabelBackground;\r\n this.labelForeground = styles.keybindingLabelForeground;\r\n this.labelBorder = styles.keybindingLabelBorder;\r\n this.labelBottomBorder = styles.keybindingLabelBottomBorder;\r\n this.labelShadow = styles.keybindingLabelShadow;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n var _a;\r\n if (this.element) {\r\n for (const keyElement of this.keyElements) {\r\n if (this.labelBackground) {\r\n keyElement.style.backgroundColor = (_a = this.labelBackground) === null || _a === void 0 ? void 0 : _a.toString();\r\n }\r\n if (this.labelBorder) {\r\n keyElement.style.borderColor = this.labelBorder.toString();\r\n }\r\n if (this.labelBottomBorder) {\r\n keyElement.style.borderBottomColor = this.labelBottomBorder.toString();\r\n }\r\n if (this.labelShadow) {\r\n keyElement.style.boxShadow = `inset 0 -1px 0 ${this.labelShadow}`;\r\n }\r\n }\r\n if (this.labelForeground) {\r\n this.element.style.color = this.labelForeground.toString();\r\n }\r\n }\r\n }\r\n static areSame(a, b) {\r\n if (a === b || (!a && !b)) {\r\n return true;\r\n }\r\n return !!a && !!b && equals(a.firstPart, b.firstPart) && equals(a.chordPart, b.chordPart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { dispose } from '../../../common/lifecycle.js';\r\nimport { matchesFuzzyIconAware, parseLabelWithIcons } from '../../../common/iconLabels.js';\r\nimport { compareAnything } from '../../../common/comparers.js';\r\nimport { Emitter, Event } from '../../../common/event.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport { IconLabel } from '../../../browser/ui/iconLabel/iconLabel.js';\r\nimport { HighlightedLabel } from '../../../browser/ui/highlightedlabel/highlightedLabel.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport { range } from '../../../common/arrays.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../common/actions.js';\r\nimport { getIconClass } from './quickInputUtils.js';\r\nimport { withNullAsUndefined } from '../../../common/types.js';\r\nimport { KeybindingLabel } from '../../../browser/ui/keybindingLabel/keybindingLabel.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { getCodiconAriaLabel } from '../../../common/codicons.js';\r\nconst $ = dom.$;\r\nclass ListElement {\r\n constructor(init) {\r\n this.hidden = false;\r\n this._onChecked = new Emitter();\r\n this.onChecked = this._onChecked.event;\r\n Object.assign(this, init);\r\n }\r\n get checked() {\r\n return !!this._checked;\r\n }\r\n set checked(value) {\r\n if (value !== this._checked) {\r\n this._checked = value;\r\n this._onChecked.fire(value);\r\n }\r\n }\r\n dispose() {\r\n this._onChecked.dispose();\r\n }\r\n}\r\nclass ListElementRenderer {\r\n get templateId() {\r\n return ListElementRenderer.ID;\r\n }\r\n renderTemplate(container) {\r\n const data = Object.create(null);\r\n data.toDisposeElement = [];\r\n data.toDisposeTemplate = [];\r\n data.entry = dom.append(container, $('.quick-input-list-entry'));\r\n // Checkbox\r\n const label = dom.append(data.entry, $('label.quick-input-list-label'));\r\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(label, dom.EventType.CLICK, e => {\r\n if (!data.checkbox.offsetParent) { // If checkbox not visible:\r\n e.preventDefault(); // Prevent toggle of checkbox when it is immediately shown afterwards. #91740\r\n }\r\n }));\r\n data.checkbox = dom.append(label, $('input.quick-input-list-checkbox'));\r\n data.checkbox.type = 'checkbox';\r\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(data.checkbox, dom.EventType.CHANGE, e => {\r\n data.element.checked = data.checkbox.checked;\r\n }));\r\n // Rows\r\n const rows = dom.append(label, $('.quick-input-list-rows'));\r\n const row1 = dom.append(rows, $('.quick-input-list-row'));\r\n const row2 = dom.append(rows, $('.quick-input-list-row'));\r\n // Label\r\n data.label = new IconLabel(row1, { supportHighlights: true, supportDescriptionHighlights: true, supportIcons: true });\r\n // Keybinding\r\n const keybindingContainer = dom.append(row1, $('.quick-input-list-entry-keybinding'));\r\n data.keybinding = new KeybindingLabel(keybindingContainer, platform.OS);\r\n // Detail\r\n const detailContainer = dom.append(row2, $('.quick-input-list-label-meta'));\r\n data.detail = new HighlightedLabel(detailContainer, true);\r\n // Separator\r\n data.separator = dom.append(data.entry, $('.quick-input-list-separator'));\r\n // Actions\r\n data.actionBar = new ActionBar(data.entry);\r\n data.actionBar.domNode.classList.add('quick-input-list-entry-action-bar');\r\n data.toDisposeTemplate.push(data.actionBar);\r\n return data;\r\n }\r\n renderElement(element, index, data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n data.element = element;\r\n data.checkbox.checked = element.checked;\r\n data.toDisposeElement.push(element.onChecked(checked => data.checkbox.checked = checked));\r\n const { labelHighlights, descriptionHighlights, detailHighlights } = element;\r\n // Label\r\n const options = Object.create(null);\r\n options.matches = labelHighlights || [];\r\n options.descriptionTitle = element.saneDescription;\r\n options.descriptionMatches = descriptionHighlights || [];\r\n options.extraClasses = element.item.iconClasses;\r\n options.italic = element.item.italic;\r\n options.strikethrough = element.item.strikethrough;\r\n data.label.setLabel(element.saneLabel, element.saneDescription, options);\r\n // Keybinding\r\n data.keybinding.set(element.item.keybinding);\r\n // Meta\r\n data.detail.set(element.saneDetail, detailHighlights);\r\n // Separator\r\n if (element.separator && element.separator.label) {\r\n data.separator.textContent = element.separator.label;\r\n data.separator.style.display = '';\r\n }\r\n else {\r\n data.separator.style.display = 'none';\r\n }\r\n data.entry.classList.toggle('quick-input-list-separator-border', !!element.separator);\r\n // Actions\r\n data.actionBar.clear();\r\n const buttons = element.item.buttons;\r\n if (buttons && buttons.length) {\r\n data.actionBar.push(buttons.map((button, index) => {\r\n let cssClasses = button.iconClass || (button.iconPath ? getIconClass(button.iconPath) : undefined);\r\n if (button.alwaysVisible) {\r\n cssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\r\n }\r\n const action = new Action(`id-${index}`, '', cssClasses, true, () => __awaiter(this, void 0, void 0, function* () {\r\n element.fireButtonTriggered({\r\n button,\r\n item: element.item\r\n });\r\n }));\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n data.entry.classList.add('has-actions');\r\n }\r\n else {\r\n data.entry.classList.remove('has-actions');\r\n }\r\n }\r\n disposeElement(element, index, data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n }\r\n disposeTemplate(data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n data.toDisposeTemplate = dispose(data.toDisposeTemplate);\r\n }\r\n}\r\nListElementRenderer.ID = 'listelement';\r\nclass ListElementDelegate {\r\n getHeight(element) {\r\n return element.saneDetail ? 44 : 22;\r\n }\r\n getTemplateId(element) {\r\n return ListElementRenderer.ID;\r\n }\r\n}\r\nexport var QuickInputListFocus;\r\n(function (QuickInputListFocus) {\r\n QuickInputListFocus[QuickInputListFocus[\"First\"] = 1] = \"First\";\r\n QuickInputListFocus[QuickInputListFocus[\"Second\"] = 2] = \"Second\";\r\n QuickInputListFocus[QuickInputListFocus[\"Last\"] = 3] = \"Last\";\r\n QuickInputListFocus[QuickInputListFocus[\"Next\"] = 4] = \"Next\";\r\n QuickInputListFocus[QuickInputListFocus[\"Previous\"] = 5] = \"Previous\";\r\n QuickInputListFocus[QuickInputListFocus[\"NextPage\"] = 6] = \"NextPage\";\r\n QuickInputListFocus[QuickInputListFocus[\"PreviousPage\"] = 7] = \"PreviousPage\";\r\n})(QuickInputListFocus || (QuickInputListFocus = {}));\r\nexport class QuickInputList {\r\n constructor(parent, id, options) {\r\n this.parent = parent;\r\n this.inputElements = [];\r\n this.elements = [];\r\n this.elementsToIndexes = new Map();\r\n this.matchOnDescription = false;\r\n this.matchOnDetail = false;\r\n this.matchOnLabel = true;\r\n this.matchOnMeta = true;\r\n this.sortByLabel = true;\r\n this._onChangedAllVisibleChecked = new Emitter();\r\n this.onChangedAllVisibleChecked = this._onChangedAllVisibleChecked.event;\r\n this._onChangedCheckedCount = new Emitter();\r\n this.onChangedCheckedCount = this._onChangedCheckedCount.event;\r\n this._onChangedVisibleCount = new Emitter();\r\n this.onChangedVisibleCount = this._onChangedVisibleCount.event;\r\n this._onChangedCheckedElements = new Emitter();\r\n this.onChangedCheckedElements = this._onChangedCheckedElements.event;\r\n this._onButtonTriggered = new Emitter();\r\n this.onButtonTriggered = this._onButtonTriggered.event;\r\n this._onKeyDown = new Emitter();\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onLeave = new Emitter();\r\n this.onLeave = this._onLeave.event;\r\n this._fireCheckedEvents = true;\r\n this.elementDisposables = [];\r\n this.disposables = [];\r\n this.id = id;\r\n this.container = dom.append(this.parent, $('.quick-input-list'));\r\n const delegate = new ListElementDelegate();\r\n const accessibilityProvider = new QuickInputAccessibilityProvider();\r\n this.list = options.createList('QuickInput', this.container, delegate, [new ListElementRenderer()], {\r\n identityProvider: { getId: element => element.saneLabel },\r\n setRowLineHeight: false,\r\n multipleSelectionSupport: false,\r\n horizontalScrolling: false,\r\n accessibilityProvider\r\n });\r\n this.list.getHTMLElement().id = id;\r\n this.disposables.push(this.list);\r\n this.disposables.push(this.list.onKeyDown(e => {\r\n const event = new StandardKeyboardEvent(e);\r\n switch (event.keyCode) {\r\n case 10 /* Space */:\r\n this.toggleCheckbox();\r\n break;\r\n case 31 /* KEY_A */:\r\n if (platform.isMacintosh ? e.metaKey : e.ctrlKey) {\r\n this.list.setFocus(range(this.list.length));\r\n }\r\n break;\r\n case 16 /* UpArrow */:\r\n const focus1 = this.list.getFocus();\r\n if (focus1.length === 1 && focus1[0] === 0) {\r\n this._onLeave.fire();\r\n }\r\n break;\r\n case 18 /* DownArrow */:\r\n const focus2 = this.list.getFocus();\r\n if (focus2.length === 1 && focus2[0] === this.list.length - 1) {\r\n this._onLeave.fire();\r\n }\r\n break;\r\n }\r\n this._onKeyDown.fire(event);\r\n }));\r\n this.disposables.push(this.list.onMouseDown(e => {\r\n if (e.browserEvent.button !== 2) {\r\n // Works around / fixes #64350.\r\n e.browserEvent.preventDefault();\r\n }\r\n }));\r\n this.disposables.push(dom.addDisposableListener(this.container, dom.EventType.CLICK, e => {\r\n if (e.x || e.y) { // Avoid 'click' triggered by 'space' on checkbox.\r\n this._onLeave.fire();\r\n }\r\n }));\r\n this.disposables.push(this.list.onMouseMiddleClick(e => {\r\n this._onLeave.fire();\r\n }));\r\n this.disposables.push(this.list.onContextMenu(e => {\r\n if (typeof e.index === 'number') {\r\n e.browserEvent.preventDefault();\r\n // we want to treat a context menu event as\r\n // a gesture to open the item at the index\r\n // since we do not have any context menu\r\n // this enables for example macOS to Ctrl-\r\n // click on an item to open it.\r\n this.list.setSelection([e.index]);\r\n }\r\n }));\r\n this.disposables.push(this._onChangedAllVisibleChecked, this._onChangedCheckedCount, this._onChangedVisibleCount, this._onChangedCheckedElements, this._onButtonTriggered, this._onLeave, this._onKeyDown);\r\n }\r\n get onDidChangeFocus() {\r\n return Event.map(this.list.onDidChangeFocus, e => e.elements.map(e => e.item));\r\n }\r\n get onDidChangeSelection() {\r\n return Event.map(this.list.onDidChangeSelection, e => ({ items: e.elements.map(e => e.item), event: e.browserEvent }));\r\n }\r\n getAllVisibleChecked() {\r\n return this.allVisibleChecked(this.elements, false);\r\n }\r\n allVisibleChecked(elements, whenNoneVisible = true) {\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n const element = elements[i];\r\n if (!element.hidden) {\r\n if (!element.checked) {\r\n return false;\r\n }\r\n else {\r\n whenNoneVisible = true;\r\n }\r\n }\r\n }\r\n return whenNoneVisible;\r\n }\r\n getCheckedCount() {\r\n let count = 0;\r\n const elements = this.elements;\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n if (elements[i].checked) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n getVisibleCount() {\r\n let count = 0;\r\n const elements = this.elements;\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n if (!elements[i].hidden) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n setAllVisibleChecked(checked) {\r\n try {\r\n this._fireCheckedEvents = false;\r\n this.elements.forEach(element => {\r\n if (!element.hidden) {\r\n element.checked = checked;\r\n }\r\n });\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n setElements(inputElements) {\r\n this.elementDisposables = dispose(this.elementDisposables);\r\n const fireButtonTriggered = (event) => this.fireButtonTriggered(event);\r\n this.inputElements = inputElements;\r\n this.elements = inputElements.reduce((result, item, index) => {\r\n var _a, _b, _c;\r\n if (item.type !== 'separator') {\r\n const previous = index && inputElements[index - 1];\r\n const saneLabel = item.label && item.label.replace(/\\r?\\n/g, ' ');\r\n const saneMeta = item.meta && item.meta.replace(/\\r?\\n/g, ' ');\r\n const saneDescription = item.description && item.description.replace(/\\r?\\n/g, ' ');\r\n const saneDetail = item.detail && item.detail.replace(/\\r?\\n/g, ' ');\r\n const saneAriaLabel = item.ariaLabel || [saneLabel, saneDescription, saneDetail]\r\n .map(s => getCodiconAriaLabel(s))\r\n .filter(s => !!s)\r\n .join(', ');\r\n result.push(new ListElement({\r\n index,\r\n item,\r\n saneLabel,\r\n saneMeta,\r\n saneAriaLabel,\r\n saneDescription,\r\n saneDetail,\r\n labelHighlights: (_a = item.highlights) === null || _a === void 0 ? void 0 : _a.label,\r\n descriptionHighlights: (_b = item.highlights) === null || _b === void 0 ? void 0 : _b.description,\r\n detailHighlights: (_c = item.highlights) === null || _c === void 0 ? void 0 : _c.detail,\r\n checked: false,\r\n separator: previous && previous.type === 'separator' ? previous : undefined,\r\n fireButtonTriggered\r\n }));\r\n }\r\n return result;\r\n }, []);\r\n this.elementDisposables.push(...this.elements);\r\n this.elementDisposables.push(...this.elements.map(element => element.onChecked(() => this.fireCheckedEvents())));\r\n this.elementsToIndexes = this.elements.reduce((map, element, index) => {\r\n map.set(element.item, index);\r\n return map;\r\n }, new Map());\r\n this.list.splice(0, this.list.length); // Clear focus and selection first, sending the events when the list is empty.\r\n this.list.splice(0, this.list.length, this.elements);\r\n this._onChangedVisibleCount.fire(this.elements.length);\r\n }\r\n getFocusedElements() {\r\n return this.list.getFocusedElements()\r\n .map(e => e.item);\r\n }\r\n setFocusedElements(items) {\r\n this.list.setFocus(items\r\n .filter(item => this.elementsToIndexes.has(item))\r\n .map(item => this.elementsToIndexes.get(item)));\r\n if (items.length > 0) {\r\n const focused = this.list.getFocus()[0];\r\n if (typeof focused === 'number') {\r\n this.list.reveal(focused);\r\n }\r\n }\r\n }\r\n getActiveDescendant() {\r\n return this.list.getHTMLElement().getAttribute('aria-activedescendant');\r\n }\r\n setSelectedElements(items) {\r\n this.list.setSelection(items\r\n .filter(item => this.elementsToIndexes.has(item))\r\n .map(item => this.elementsToIndexes.get(item)));\r\n }\r\n getCheckedElements() {\r\n return this.elements.filter(e => e.checked)\r\n .map(e => e.item);\r\n }\r\n setCheckedElements(items) {\r\n try {\r\n this._fireCheckedEvents = false;\r\n const checked = new Set();\r\n for (const item of items) {\r\n checked.add(item);\r\n }\r\n for (const element of this.elements) {\r\n element.checked = checked.has(element.item);\r\n }\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n set enabled(value) {\r\n this.list.getHTMLElement().style.pointerEvents = value ? '' : 'none';\r\n }\r\n focus(what) {\r\n if (!this.list.length) {\r\n return;\r\n }\r\n if (what === QuickInputListFocus.Next && this.list.getFocus()[0] === this.list.length - 1) {\r\n what = QuickInputListFocus.First;\r\n }\r\n if (what === QuickInputListFocus.Previous && this.list.getFocus()[0] === 0) {\r\n what = QuickInputListFocus.Last;\r\n }\r\n if (what === QuickInputListFocus.Second && this.list.length < 2) {\r\n what = QuickInputListFocus.First;\r\n }\r\n switch (what) {\r\n case QuickInputListFocus.First:\r\n this.list.focusFirst();\r\n break;\r\n case QuickInputListFocus.Second:\r\n this.list.focusNth(1);\r\n break;\r\n case QuickInputListFocus.Last:\r\n this.list.focusLast();\r\n break;\r\n case QuickInputListFocus.Next:\r\n this.list.focusNext();\r\n break;\r\n case QuickInputListFocus.Previous:\r\n this.list.focusPrevious();\r\n break;\r\n case QuickInputListFocus.NextPage:\r\n this.list.focusNextPage();\r\n break;\r\n case QuickInputListFocus.PreviousPage:\r\n this.list.focusPreviousPage();\r\n break;\r\n }\r\n const focused = this.list.getFocus()[0];\r\n if (typeof focused === 'number') {\r\n this.list.reveal(focused);\r\n }\r\n }\r\n clearFocus() {\r\n this.list.setFocus([]);\r\n }\r\n domFocus() {\r\n this.list.domFocus();\r\n }\r\n layout(maxHeight) {\r\n this.list.getHTMLElement().style.maxHeight = maxHeight ? `calc(${Math.floor(maxHeight / 44) * 44}px)` : '';\r\n this.list.layout();\r\n }\r\n filter(query) {\r\n if (!(this.sortByLabel || this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\r\n this.list.layout();\r\n return false;\r\n }\r\n query = query.trim();\r\n // Reset filtering\r\n if (!query || !(this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\r\n this.elements.forEach(element => {\r\n element.labelHighlights = undefined;\r\n element.descriptionHighlights = undefined;\r\n element.detailHighlights = undefined;\r\n element.hidden = false;\r\n const previous = element.index && this.inputElements[element.index - 1];\r\n element.separator = previous && previous.type === 'separator' ? previous : undefined;\r\n });\r\n }\r\n // Filter by value (since we support icons in labels, use $(..) aware fuzzy matching)\r\n else {\r\n let currentSeparator;\r\n this.elements.forEach(element => {\r\n const labelHighlights = this.matchOnLabel ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneLabel))) : undefined;\r\n const descriptionHighlights = this.matchOnDescription ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDescription || ''))) : undefined;\r\n const detailHighlights = this.matchOnDetail ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDetail || ''))) : undefined;\r\n const metaHighlights = this.matchOnMeta ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneMeta || ''))) : undefined;\r\n if (labelHighlights || descriptionHighlights || detailHighlights || metaHighlights) {\r\n element.labelHighlights = labelHighlights;\r\n element.descriptionHighlights = descriptionHighlights;\r\n element.detailHighlights = detailHighlights;\r\n element.hidden = false;\r\n }\r\n else {\r\n element.labelHighlights = undefined;\r\n element.descriptionHighlights = undefined;\r\n element.detailHighlights = undefined;\r\n element.hidden = !element.item.alwaysShow;\r\n }\r\n element.separator = undefined;\r\n // we can show the separator unless the list gets sorted by match\r\n if (!this.sortByLabel) {\r\n const previous = element.index && this.inputElements[element.index - 1];\r\n currentSeparator = previous && previous.type === 'separator' ? previous : currentSeparator;\r\n if (currentSeparator && !element.hidden) {\r\n element.separator = currentSeparator;\r\n currentSeparator = undefined;\r\n }\r\n }\r\n });\r\n }\r\n const shownElements = this.elements.filter(element => !element.hidden);\r\n // Sort by value\r\n if (this.sortByLabel && query) {\r\n const normalizedSearchValue = query.toLowerCase();\r\n shownElements.sort((a, b) => {\r\n return compareEntries(a, b, normalizedSearchValue);\r\n });\r\n }\r\n this.elementsToIndexes = shownElements.reduce((map, element, index) => {\r\n map.set(element.item, index);\r\n return map;\r\n }, new Map());\r\n this.list.splice(0, this.list.length, shownElements);\r\n this.list.setFocus([]);\r\n this.list.layout();\r\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\r\n this._onChangedVisibleCount.fire(shownElements.length);\r\n return true;\r\n }\r\n toggleCheckbox() {\r\n try {\r\n this._fireCheckedEvents = false;\r\n const elements = this.list.getFocusedElements();\r\n const allChecked = this.allVisibleChecked(elements);\r\n for (const element of elements) {\r\n element.checked = !allChecked;\r\n }\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n display(display) {\r\n this.container.style.display = display ? '' : 'none';\r\n }\r\n isDisplayed() {\r\n return this.container.style.display !== 'none';\r\n }\r\n dispose() {\r\n this.elementDisposables = dispose(this.elementDisposables);\r\n this.disposables = dispose(this.disposables);\r\n }\r\n fireCheckedEvents() {\r\n if (this._fireCheckedEvents) {\r\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\r\n this._onChangedCheckedCount.fire(this.getCheckedCount());\r\n this._onChangedCheckedElements.fire(this.getCheckedElements());\r\n }\r\n }\r\n fireButtonTriggered(event) {\r\n this._onButtonTriggered.fire(event);\r\n }\r\n style(styles) {\r\n this.list.style(styles);\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], QuickInputList.prototype, \"onDidChangeFocus\", null);\r\n__decorate([\r\n memoize\r\n], QuickInputList.prototype, \"onDidChangeSelection\", null);\r\nfunction compareEntries(elementA, elementB, lookFor) {\r\n const labelHighlightsA = elementA.labelHighlights || [];\r\n const labelHighlightsB = elementB.labelHighlights || [];\r\n if (labelHighlightsA.length && !labelHighlightsB.length) {\r\n return -1;\r\n }\r\n if (!labelHighlightsA.length && labelHighlightsB.length) {\r\n return 1;\r\n }\r\n if (labelHighlightsA.length === 0 && labelHighlightsB.length === 0) {\r\n return 0;\r\n }\r\n return compareAnything(elementA.saneLabel, elementB.saneLabel, lookFor);\r\n}\r\nclass QuickInputAccessibilityProvider {\r\n getWidgetAriaLabel() {\r\n return localize('quickInput', \"Quick Input\");\r\n }\r\n getAriaLabel(element) {\r\n return element.saneAriaLabel;\r\n }\r\n getWidgetRole() {\r\n return 'listbox';\r\n }\r\n getRole() {\r\n return 'option';\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { InputBox } from '../../../browser/ui/inputbox/inputBox.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport Severity from '../../../common/severity.js';\r\nimport { StandardMouseEvent } from '../../../browser/mouseEvent.js';\r\nconst $ = dom.$;\r\nexport class QuickInputBox extends Disposable {\r\n constructor(parent) {\r\n super();\r\n this.parent = parent;\r\n this.onKeyDown = (handler) => {\r\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.KEY_DOWN, (e) => {\r\n handler(new StandardKeyboardEvent(e));\r\n });\r\n };\r\n this.onMouseDown = (handler) => {\r\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.MOUSE_DOWN, (e) => {\r\n handler(new StandardMouseEvent(e));\r\n });\r\n };\r\n this.onDidChange = (handler) => {\r\n return this.inputBox.onDidChange(handler);\r\n };\r\n this.container = dom.append(this.parent, $('.quick-input-box'));\r\n this.inputBox = this._register(new InputBox(this.container, undefined));\r\n }\r\n get value() {\r\n return this.inputBox.value;\r\n }\r\n set value(value) {\r\n this.inputBox.value = value;\r\n }\r\n select(range = null) {\r\n this.inputBox.select(range);\r\n }\r\n isSelectionAtEnd() {\r\n return this.inputBox.isSelectionAtEnd();\r\n }\r\n get placeholder() {\r\n return this.inputBox.inputElement.getAttribute('placeholder') || '';\r\n }\r\n set placeholder(placeholder) {\r\n this.inputBox.setPlaceHolder(placeholder);\r\n }\r\n get ariaLabel() {\r\n return this.inputBox.getAriaLabel();\r\n }\r\n set ariaLabel(ariaLabel) {\r\n this.inputBox.setAriaLabel(ariaLabel);\r\n }\r\n get password() {\r\n return this.inputBox.inputElement.type === 'password';\r\n }\r\n set password(password) {\r\n this.inputBox.inputElement.type = password ? 'password' : 'text';\r\n }\r\n setAttribute(name, value) {\r\n this.inputBox.inputElement.setAttribute(name, value);\r\n }\r\n removeAttribute(name) {\r\n this.inputBox.inputElement.removeAttribute(name);\r\n }\r\n showDecoration(decoration) {\r\n if (decoration === Severity.Ignore) {\r\n this.inputBox.hideMessage();\r\n }\r\n else {\r\n this.inputBox.showMessage({ type: decoration === Severity.Info ? 1 /* INFO */ : decoration === Severity.Warning ? 2 /* WARNING */ : 3 /* ERROR */, content: '' });\r\n }\r\n }\r\n stylesForType(decoration) {\r\n return this.inputBox.stylesForType(decoration === Severity.Info ? 1 /* INFO */ : decoration === Severity.Warning ? 2 /* WARNING */ : 3 /* ERROR */);\r\n }\r\n setFocus() {\r\n this.inputBox.focus();\r\n }\r\n layout() {\r\n this.inputBox.layout();\r\n }\r\n style(styles) {\r\n this.inputBox.style(styles);\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./progressbar.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./progressbar.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './progressbar.css';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { show } from '../../dom.js';\r\nimport { RunOnceScheduler } from '../../../common/async.js';\r\nconst CSS_DONE = 'done';\r\nconst CSS_ACTIVE = 'active';\r\nconst CSS_INFINITE = 'infinite';\r\nconst CSS_DISCRETE = 'discrete';\r\nconst defaultOpts = {\r\n progressBarBackground: Color.fromHex('#0E70C0')\r\n};\r\n/**\r\n * A progress bar with support for infinite or discrete progress.\r\n */\r\nexport class ProgressBar extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.workedVal = 0;\r\n this.progressBarBackground = this.options.progressBarBackground;\r\n this._register(this.showDelayedScheduler = new RunOnceScheduler(() => show(this.element), 0));\r\n this.create(container);\r\n }\r\n create(container) {\r\n this.element = document.createElement('div');\r\n this.element.classList.add('monaco-progress-container');\r\n this.element.setAttribute('role', 'progressbar');\r\n this.element.setAttribute('aria-valuemin', '0');\r\n container.appendChild(this.element);\r\n this.bit = document.createElement('div');\r\n this.bit.classList.add('progress-bit');\r\n this.element.appendChild(this.bit);\r\n this.applyStyles();\r\n }\r\n off() {\r\n this.bit.style.width = 'inherit';\r\n this.bit.style.opacity = '1';\r\n this.element.classList.remove(CSS_ACTIVE, CSS_INFINITE, CSS_DISCRETE);\r\n this.workedVal = 0;\r\n this.totalWork = undefined;\r\n }\r\n /**\r\n * Stops the progressbar from showing any progress instantly without fading out.\r\n */\r\n stop() {\r\n return this.doDone(false);\r\n }\r\n doDone(delayed) {\r\n this.element.classList.add(CSS_DONE);\r\n // let it grow to 100% width and hide afterwards\r\n if (!this.element.classList.contains(CSS_INFINITE)) {\r\n this.bit.style.width = 'inherit';\r\n if (delayed) {\r\n setTimeout(() => this.off(), 200);\r\n }\r\n else {\r\n this.off();\r\n }\r\n }\r\n // let it fade out and hide afterwards\r\n else {\r\n this.bit.style.opacity = '0';\r\n if (delayed) {\r\n setTimeout(() => this.off(), 200);\r\n }\r\n else {\r\n this.off();\r\n }\r\n }\r\n return this;\r\n }\r\n /**\r\n * Use this mode to indicate progress that has no total number of work units.\r\n */\r\n infinite() {\r\n this.bit.style.width = '2%';\r\n this.bit.style.opacity = '1';\r\n this.element.classList.remove(CSS_DISCRETE, CSS_DONE);\r\n this.element.classList.add(CSS_ACTIVE, CSS_INFINITE);\r\n return this;\r\n }\r\n getContainer() {\r\n return this.element;\r\n }\r\n style(styles) {\r\n this.progressBarBackground = styles.progressBarBackground;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.bit) {\r\n const background = this.progressBarBackground ? this.progressBarBackground.toString() : '';\r\n this.bit.style.backgroundColor = background;\r\n }\r\n }\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./button.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./button.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './button.css';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Gesture, EventType as TouchEventType } from '../../touch.js';\r\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\r\nimport { addDisposableListener, EventType, EventHelper, trackFocus, reset } from '../../dom.js';\r\nconst defaultOptions = {\r\n buttonBackground: Color.fromHex('#0E639C'),\r\n buttonHoverBackground: Color.fromHex('#006BB3'),\r\n buttonForeground: Color.white\r\n};\r\nexport class Button extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this._onDidClick = this._register(new Emitter());\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOptions, false);\r\n this.buttonForeground = this.options.buttonForeground;\r\n this.buttonBackground = this.options.buttonBackground;\r\n this.buttonHoverBackground = this.options.buttonHoverBackground;\r\n this.buttonSecondaryForeground = this.options.buttonSecondaryForeground;\r\n this.buttonSecondaryBackground = this.options.buttonSecondaryBackground;\r\n this.buttonSecondaryHoverBackground = this.options.buttonSecondaryHoverBackground;\r\n this.buttonBorder = this.options.buttonBorder;\r\n this._element = document.createElement('a');\r\n this._element.classList.add('monaco-button');\r\n this._element.tabIndex = 0;\r\n this._element.setAttribute('role', 'button');\r\n container.appendChild(this._element);\r\n this._register(Gesture.addTarget(this._element));\r\n [EventType.CLICK, TouchEventType.Tap].forEach(eventType => {\r\n this._register(addDisposableListener(this._element, eventType, e => {\r\n if (!this.enabled) {\r\n EventHelper.stop(e);\r\n return;\r\n }\r\n this._onDidClick.fire(e);\r\n }));\r\n });\r\n this._register(addDisposableListener(this._element, EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n let eventHandled = false;\r\n if (this.enabled && (event.equals(3 /* Enter */) || event.equals(10 /* Space */))) {\r\n this._onDidClick.fire(e);\r\n eventHandled = true;\r\n }\r\n else if (event.equals(9 /* Escape */)) {\r\n this._element.blur();\r\n eventHandled = true;\r\n }\r\n if (eventHandled) {\r\n EventHelper.stop(event, true);\r\n }\r\n }));\r\n this._register(addDisposableListener(this._element, EventType.MOUSE_OVER, e => {\r\n if (!this._element.classList.contains('disabled')) {\r\n this.setHoverBackground();\r\n }\r\n }));\r\n this._register(addDisposableListener(this._element, EventType.MOUSE_OUT, e => {\r\n this.applyStyles(); // restore standard styles\r\n }));\r\n // Also set hover background when button is focused for feedback\r\n this.focusTracker = this._register(trackFocus(this._element));\r\n this._register(this.focusTracker.onDidFocus(() => this.setHoverBackground()));\r\n this._register(this.focusTracker.onDidBlur(() => this.applyStyles())); // restore standard styles\r\n this.applyStyles();\r\n }\r\n get onDidClick() { return this._onDidClick.event; }\r\n setHoverBackground() {\r\n let hoverBackground;\r\n if (this.options.secondary) {\r\n hoverBackground = this.buttonSecondaryHoverBackground ? this.buttonSecondaryHoverBackground.toString() : null;\r\n }\r\n else {\r\n hoverBackground = this.buttonHoverBackground ? this.buttonHoverBackground.toString() : null;\r\n }\r\n if (hoverBackground) {\r\n this._element.style.backgroundColor = hoverBackground;\r\n }\r\n }\r\n style(styles) {\r\n this.buttonForeground = styles.buttonForeground;\r\n this.buttonBackground = styles.buttonBackground;\r\n this.buttonHoverBackground = styles.buttonHoverBackground;\r\n this.buttonSecondaryForeground = styles.buttonSecondaryForeground;\r\n this.buttonSecondaryBackground = styles.buttonSecondaryBackground;\r\n this.buttonSecondaryHoverBackground = styles.buttonSecondaryHoverBackground;\r\n this.buttonBorder = styles.buttonBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this._element) {\r\n let background, foreground;\r\n if (this.options.secondary) {\r\n foreground = this.buttonSecondaryForeground ? this.buttonSecondaryForeground.toString() : '';\r\n background = this.buttonSecondaryBackground ? this.buttonSecondaryBackground.toString() : '';\r\n }\r\n else {\r\n foreground = this.buttonForeground ? this.buttonForeground.toString() : '';\r\n background = this.buttonBackground ? this.buttonBackground.toString() : '';\r\n }\r\n const border = this.buttonBorder ? this.buttonBorder.toString() : '';\r\n this._element.style.color = foreground;\r\n this._element.style.backgroundColor = background;\r\n this._element.style.borderWidth = border ? '1px' : '';\r\n this._element.style.borderStyle = border ? 'solid' : '';\r\n this._element.style.borderColor = border;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n set label(value) {\r\n this._element.classList.add('monaco-text-button');\r\n if (this.options.supportIcons) {\r\n reset(this._element, ...renderLabelWithIcons(value));\r\n }\r\n else {\r\n this._element.textContent = value;\r\n }\r\n if (typeof this.options.title === 'string') {\r\n this._element.title = this.options.title;\r\n }\r\n else if (this.options.title) {\r\n this._element.title = value;\r\n }\r\n }\r\n set enabled(value) {\r\n if (value) {\r\n this._element.classList.remove('disabled');\r\n this._element.setAttribute('aria-disabled', String(false));\r\n this._element.tabIndex = 0;\r\n }\r\n else {\r\n this._element.classList.add('disabled');\r\n this._element.setAttribute('aria-disabled', String(true));\r\n }\r\n }\r\n get enabled() {\r\n return !this._element.classList.contains('disabled');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/quickInput.css';\r\nimport { NO_KEY_MODS, ItemActivation, QuickInputHideReason } from '../common/quickInput.js';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { CancellationToken } from '../../../common/cancellation.js';\r\nimport { QuickInputList, QuickInputListFocus } from './quickInputList.js';\r\nimport { QuickInputBox } from './quickInputBox.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { CountBadge } from '../../../browser/ui/countBadge/countBadge.js';\r\nimport { ProgressBar } from '../../../browser/ui/progressbar/progressbar.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Button } from '../../../browser/ui/button/button.js';\r\nimport { dispose, Disposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport Severity from '../../../common/severity.js';\r\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../common/actions.js';\r\nimport { equals } from '../../../common/arrays.js';\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { getIconClass } from './quickInputUtils.js';\r\nimport { registerCodicon, Codicon } from '../../../common/codicons.js';\r\nimport { renderLabelWithIcons } from '../../../browser/ui/iconLabel/iconLabels.js';\r\nimport { isIOS } from '../../../common/platform.js';\r\nconst $ = dom.$;\r\nconst backButtonIcon = registerCodicon('quick-input-back', Codicon.arrowLeft);\r\nconst backButton = {\r\n iconClass: backButtonIcon.classNames,\r\n tooltip: localize('quickInput.back', \"Back\"),\r\n handle: -1 // TODO\r\n};\r\nclass QuickInput extends Disposable {\r\n constructor(ui) {\r\n super();\r\n this.ui = ui;\r\n this.visible = false;\r\n this._enabled = true;\r\n this._busy = false;\r\n this._ignoreFocusOut = false;\r\n this._buttons = [];\r\n this.noValidationMessage = QuickInput.noPromptMessage;\r\n this._severity = Severity.Ignore;\r\n this.buttonsUpdated = false;\r\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\r\n this.onDidHideEmitter = this._register(new Emitter());\r\n this.onDisposeEmitter = this._register(new Emitter());\r\n this.visibleDisposables = this._register(new DisposableStore());\r\n this.onDidHide = this.onDidHideEmitter.event;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n set title(title) {\r\n this._title = title;\r\n this.update();\r\n }\r\n get description() {\r\n return this._description;\r\n }\r\n set description(description) {\r\n this._description = description;\r\n this.update();\r\n }\r\n get step() {\r\n return this._steps;\r\n }\r\n set step(step) {\r\n this._steps = step;\r\n this.update();\r\n }\r\n get totalSteps() {\r\n return this._totalSteps;\r\n }\r\n set totalSteps(totalSteps) {\r\n this._totalSteps = totalSteps;\r\n this.update();\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(enabled) {\r\n this._enabled = enabled;\r\n this.update();\r\n }\r\n get contextKey() {\r\n return this._contextKey;\r\n }\r\n set contextKey(contextKey) {\r\n this._contextKey = contextKey;\r\n this.update();\r\n }\r\n get busy() {\r\n return this._busy;\r\n }\r\n set busy(busy) {\r\n this._busy = busy;\r\n this.update();\r\n }\r\n get ignoreFocusOut() {\r\n return this._ignoreFocusOut;\r\n }\r\n set ignoreFocusOut(ignoreFocusOut) {\r\n const shouldUpdate = this._ignoreFocusOut !== ignoreFocusOut && !isIOS;\r\n this._ignoreFocusOut = ignoreFocusOut && !isIOS;\r\n if (shouldUpdate) {\r\n this.update();\r\n }\r\n }\r\n get buttons() {\r\n return this._buttons;\r\n }\r\n set buttons(buttons) {\r\n this._buttons = buttons;\r\n this.buttonsUpdated = true;\r\n this.update();\r\n }\r\n get validationMessage() {\r\n return this._validationMessage;\r\n }\r\n set validationMessage(validationMessage) {\r\n this._validationMessage = validationMessage;\r\n this.update();\r\n }\r\n get severity() {\r\n return this._severity;\r\n }\r\n set severity(severity) {\r\n this._severity = severity;\r\n this.update();\r\n }\r\n show() {\r\n if (this.visible) {\r\n return;\r\n }\r\n this.visibleDisposables.add(this.ui.onDidTriggerButton(button => {\r\n if (this.buttons.indexOf(button) !== -1) {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }\r\n }));\r\n this.ui.show(this);\r\n this.visible = true;\r\n this.update();\r\n }\r\n hide() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n this.ui.hide();\r\n }\r\n didHide(reason = QuickInputHideReason.Other) {\r\n this.visible = false;\r\n this.visibleDisposables.clear();\r\n this.onDidHideEmitter.fire({ reason });\r\n }\r\n update() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n const title = this.getTitle();\r\n if (title && this.ui.title.textContent !== title) {\r\n this.ui.title.textContent = title;\r\n }\r\n else if (!title && this.ui.title.innerHTML !== ' ') {\r\n this.ui.title.innerText = '\\u00a0;';\r\n }\r\n const description = this.getDescription();\r\n if (this.ui.description1.textContent !== description) {\r\n this.ui.description1.textContent = description;\r\n }\r\n if (this.ui.description2.textContent !== description) {\r\n this.ui.description2.textContent = description;\r\n }\r\n if (this.busy && !this.busyDelay) {\r\n this.busyDelay = new TimeoutTimer();\r\n this.busyDelay.setIfNotSet(() => {\r\n if (this.visible) {\r\n this.ui.progressBar.infinite();\r\n }\r\n }, 800);\r\n }\r\n if (!this.busy && this.busyDelay) {\r\n this.ui.progressBar.stop();\r\n this.busyDelay.cancel();\r\n this.busyDelay = undefined;\r\n }\r\n if (this.buttonsUpdated) {\r\n this.buttonsUpdated = false;\r\n this.ui.leftActionBar.clear();\r\n const leftButtons = this.buttons.filter(button => button === backButton);\r\n this.ui.leftActionBar.push(leftButtons.map((button, index) => {\r\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }));\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n this.ui.rightActionBar.clear();\r\n const rightButtons = this.buttons.filter(button => button !== backButton);\r\n this.ui.rightActionBar.push(rightButtons.map((button, index) => {\r\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }));\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n }\r\n this.ui.ignoreFocusOut = this.ignoreFocusOut;\r\n this.ui.setEnabled(this.enabled);\r\n this.ui.setContextKey(this.contextKey);\r\n const validationMessage = this.validationMessage || this.noValidationMessage;\r\n if (this._lastValidationMessage !== validationMessage) {\r\n this._lastValidationMessage = validationMessage;\r\n dom.reset(this.ui.message, ...renderLabelWithIcons(validationMessage));\r\n }\r\n if (this._lastSeverity !== this.severity) {\r\n this._lastSeverity = this.severity;\r\n this.showMessageDecoration(this.severity);\r\n }\r\n }\r\n getTitle() {\r\n if (this.title && this.step) {\r\n return `${this.title} (${this.getSteps()})`;\r\n }\r\n if (this.title) {\r\n return this.title;\r\n }\r\n if (this.step) {\r\n return this.getSteps();\r\n }\r\n return '';\r\n }\r\n getDescription() {\r\n return this.description || '';\r\n }\r\n getSteps() {\r\n if (this.step && this.totalSteps) {\r\n return localize('quickInput.steps', \"{0}/{1}\", this.step, this.totalSteps);\r\n }\r\n if (this.step) {\r\n return String(this.step);\r\n }\r\n return '';\r\n }\r\n showMessageDecoration(severity) {\r\n this.ui.inputBox.showDecoration(severity);\r\n if (severity !== Severity.Ignore) {\r\n const styles = this.ui.inputBox.stylesForType(severity);\r\n this.ui.message.style.color = styles.foreground ? `${styles.foreground}` : '';\r\n this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : '';\r\n this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n this.ui.message.style.paddingBottom = '4px';\r\n }\r\n else {\r\n this.ui.message.style.color = '';\r\n this.ui.message.style.backgroundColor = '';\r\n this.ui.message.style.border = '';\r\n this.ui.message.style.paddingBottom = '';\r\n }\r\n }\r\n dispose() {\r\n this.hide();\r\n this.onDisposeEmitter.fire();\r\n super.dispose();\r\n }\r\n}\r\nQuickInput.noPromptMessage = localize('inputModeEntry', \"Press 'Enter' to confirm your input or 'Escape' to cancel\");\r\nclass QuickPick extends QuickInput {\r\n constructor() {\r\n super(...arguments);\r\n this._value = '';\r\n this.onDidChangeValueEmitter = this._register(new Emitter());\r\n this.onWillAcceptEmitter = this._register(new Emitter());\r\n this.onDidAcceptEmitter = this._register(new Emitter());\r\n this.onDidCustomEmitter = this._register(new Emitter());\r\n this._items = [];\r\n this.itemsUpdated = false;\r\n this._canSelectMany = false;\r\n this._canAcceptInBackground = false;\r\n this._matchOnDescription = false;\r\n this._matchOnDetail = false;\r\n this._matchOnLabel = true;\r\n this._sortByLabel = true;\r\n this._autoFocusOnList = true;\r\n this._itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST;\r\n this._activeItems = [];\r\n this.activeItemsUpdated = false;\r\n this.activeItemsToConfirm = [];\r\n this.onDidChangeActiveEmitter = this._register(new Emitter());\r\n this._selectedItems = [];\r\n this.selectedItemsUpdated = false;\r\n this.selectedItemsToConfirm = [];\r\n this.onDidChangeSelectionEmitter = this._register(new Emitter());\r\n this.onDidTriggerItemButtonEmitter = this._register(new Emitter());\r\n this.valueSelectionUpdated = true;\r\n this._ok = 'default';\r\n this._customButton = false;\r\n this.filterValue = (value) => value;\r\n this.onDidChangeValue = this.onDidChangeValueEmitter.event;\r\n this.onWillAccept = this.onWillAcceptEmitter.event;\r\n this.onDidAccept = this.onDidAcceptEmitter.event;\r\n this.onDidChangeActive = this.onDidChangeActiveEmitter.event;\r\n this.onDidChangeSelection = this.onDidChangeSelectionEmitter.event;\r\n this.onDidTriggerItemButton = this.onDidTriggerItemButtonEmitter.event;\r\n }\r\n get quickNavigate() {\r\n return this._quickNavigate;\r\n }\r\n set quickNavigate(quickNavigate) {\r\n this._quickNavigate = quickNavigate;\r\n this.update();\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n set value(value) {\r\n if (this._value !== value) {\r\n this._value = value || '';\r\n this.update();\r\n this.onDidChangeValueEmitter.fire(this._value);\r\n }\r\n }\r\n set ariaLabel(ariaLabel) {\r\n this._ariaLabel = ariaLabel;\r\n this.update();\r\n }\r\n get ariaLabel() {\r\n return this._ariaLabel;\r\n }\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(placeholder) {\r\n this._placeholder = placeholder;\r\n this.update();\r\n }\r\n get items() {\r\n return this._items;\r\n }\r\n set items(items) {\r\n this._items = items;\r\n this.itemsUpdated = true;\r\n this.update();\r\n }\r\n get canSelectMany() {\r\n return this._canSelectMany;\r\n }\r\n set canSelectMany(canSelectMany) {\r\n this._canSelectMany = canSelectMany;\r\n this.update();\r\n }\r\n get canAcceptInBackground() {\r\n return this._canAcceptInBackground;\r\n }\r\n set canAcceptInBackground(canAcceptInBackground) {\r\n this._canAcceptInBackground = canAcceptInBackground;\r\n }\r\n get matchOnDescription() {\r\n return this._matchOnDescription;\r\n }\r\n set matchOnDescription(matchOnDescription) {\r\n this._matchOnDescription = matchOnDescription;\r\n this.update();\r\n }\r\n get matchOnDetail() {\r\n return this._matchOnDetail;\r\n }\r\n set matchOnDetail(matchOnDetail) {\r\n this._matchOnDetail = matchOnDetail;\r\n this.update();\r\n }\r\n get matchOnLabel() {\r\n return this._matchOnLabel;\r\n }\r\n set matchOnLabel(matchOnLabel) {\r\n this._matchOnLabel = matchOnLabel;\r\n this.update();\r\n }\r\n get sortByLabel() {\r\n return this._sortByLabel;\r\n }\r\n set sortByLabel(sortByLabel) {\r\n this._sortByLabel = sortByLabel;\r\n this.update();\r\n }\r\n get autoFocusOnList() {\r\n return this._autoFocusOnList;\r\n }\r\n set autoFocusOnList(autoFocusOnList) {\r\n this._autoFocusOnList = autoFocusOnList;\r\n this.update();\r\n }\r\n get itemActivation() {\r\n return this._itemActivation;\r\n }\r\n set itemActivation(itemActivation) {\r\n this._itemActivation = itemActivation;\r\n }\r\n get activeItems() {\r\n return this._activeItems;\r\n }\r\n set activeItems(activeItems) {\r\n this._activeItems = activeItems;\r\n this.activeItemsUpdated = true;\r\n this.update();\r\n }\r\n get selectedItems() {\r\n return this._selectedItems;\r\n }\r\n set selectedItems(selectedItems) {\r\n this._selectedItems = selectedItems;\r\n this.selectedItemsUpdated = true;\r\n this.update();\r\n }\r\n get keyMods() {\r\n if (this._quickNavigate) {\r\n // Disable keyMods when quick navigate is enabled\r\n // because in this model the interaction is purely\r\n // keyboard driven and Ctrl/Alt are typically\r\n // pressed and hold during this interaction.\r\n return NO_KEY_MODS;\r\n }\r\n return this.ui.keyMods;\r\n }\r\n set valueSelection(valueSelection) {\r\n this._valueSelection = valueSelection;\r\n this.valueSelectionUpdated = true;\r\n this.update();\r\n }\r\n get customButton() {\r\n return this._customButton;\r\n }\r\n set customButton(showCustomButton) {\r\n this._customButton = showCustomButton;\r\n this.update();\r\n }\r\n get customLabel() {\r\n return this._customButtonLabel;\r\n }\r\n set customLabel(label) {\r\n this._customButtonLabel = label;\r\n this.update();\r\n }\r\n get customHover() {\r\n return this._customButtonHover;\r\n }\r\n set customHover(hover) {\r\n this._customButtonHover = hover;\r\n this.update();\r\n }\r\n get ok() {\r\n return this._ok;\r\n }\r\n set ok(showOkButton) {\r\n this._ok = showOkButton;\r\n this.update();\r\n }\r\n get hideInput() {\r\n return !!this._hideInput;\r\n }\r\n set hideInput(hideInput) {\r\n this._hideInput = hideInput;\r\n this.update();\r\n }\r\n trySelectFirst() {\r\n if (this.autoFocusOnList) {\r\n if (!this.canSelectMany) {\r\n this.ui.list.focus(QuickInputListFocus.First);\r\n }\r\n }\r\n }\r\n show() {\r\n if (!this.visible) {\r\n this.visibleDisposables.add(this.ui.inputBox.onDidChange(value => {\r\n if (value === this.value) {\r\n return;\r\n }\r\n this._value = value;\r\n const didFilter = this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\r\n if (didFilter) {\r\n this.trySelectFirst();\r\n }\r\n this.onDidChangeValueEmitter.fire(value);\r\n }));\r\n this.visibleDisposables.add(this.ui.inputBox.onMouseDown(event => {\r\n if (!this.autoFocusOnList) {\r\n this.ui.list.clearFocus();\r\n }\r\n }));\r\n this.visibleDisposables.add((this._hideInput ? this.ui.list : this.ui.inputBox).onKeyDown((event) => {\r\n switch (event.keyCode) {\r\n case 18 /* DownArrow */:\r\n this.ui.list.focus(QuickInputListFocus.Next);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 16 /* UpArrow */:\r\n if (this.ui.list.getFocusedElements().length) {\r\n this.ui.list.focus(QuickInputListFocus.Previous);\r\n }\r\n else {\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n }\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 12 /* PageDown */:\r\n this.ui.list.focus(QuickInputListFocus.NextPage);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 11 /* PageUp */:\r\n this.ui.list.focus(QuickInputListFocus.PreviousPage);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 17 /* RightArrow */:\r\n if (!this._canAcceptInBackground) {\r\n return; // needs to be enabled\r\n }\r\n if (!this.ui.inputBox.isSelectionAtEnd()) {\r\n return; // ensure input box selection at end\r\n }\r\n if (this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n this.handleAccept(true);\r\n }\r\n break;\r\n case 14 /* Home */:\r\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\r\n this.ui.list.focus(QuickInputListFocus.First);\r\n dom.EventHelper.stop(event, true);\r\n }\r\n break;\r\n case 13 /* End */:\r\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n dom.EventHelper.stop(event, true);\r\n }\r\n break;\r\n }\r\n }));\r\n this.visibleDisposables.add(this.ui.onDidAccept(() => {\r\n if (!this.canSelectMany && this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n }\r\n this.handleAccept(false);\r\n }));\r\n this.visibleDisposables.add(this.ui.onDidCustom(() => {\r\n this.onDidCustomEmitter.fire();\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onDidChangeFocus(focusedItems => {\r\n if (this.activeItemsUpdated) {\r\n return; // Expect another event.\r\n }\r\n if (this.activeItemsToConfirm !== this._activeItems && equals(focusedItems, this._activeItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._activeItems = focusedItems;\r\n this.onDidChangeActiveEmitter.fire(focusedItems);\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({ items: selectedItems, event }) => {\r\n if (this.canSelectMany) {\r\n if (selectedItems.length) {\r\n this.ui.list.setSelectedElements([]);\r\n }\r\n return;\r\n }\r\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(selectedItems, this._selectedItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._selectedItems = selectedItems;\r\n this.onDidChangeSelectionEmitter.fire(selectedItems);\r\n if (selectedItems.length) {\r\n this.handleAccept(event instanceof MouseEvent && event.button === 1 /* mouse middle click */);\r\n }\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(checkedItems => {\r\n if (!this.canSelectMany) {\r\n return;\r\n }\r\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(checkedItems, this._selectedItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._selectedItems = checkedItems;\r\n this.onDidChangeSelectionEmitter.fire(checkedItems);\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onButtonTriggered(event => this.onDidTriggerItemButtonEmitter.fire(event)));\r\n this.visibleDisposables.add(this.registerQuickNavigation());\r\n this.valueSelectionUpdated = true;\r\n }\r\n super.show(); // TODO: Why have show() bubble up while update() trickles down? (Could move setComboboxAccessibility() here.)\r\n }\r\n handleAccept(inBackground) {\r\n // Figure out veto via `onWillAccept` event\r\n let veto = false;\r\n this.onWillAcceptEmitter.fire({ veto: () => veto = true });\r\n // Continue with `onDidAccpet` if no veto\r\n if (!veto) {\r\n this.onDidAcceptEmitter.fire({ inBackground });\r\n }\r\n }\r\n registerQuickNavigation() {\r\n return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {\r\n if (this.canSelectMany || !this._quickNavigate) {\r\n return;\r\n }\r\n const keyboardEvent = new StandardKeyboardEvent(e);\r\n const keyCode = keyboardEvent.keyCode;\r\n // Select element when keys are pressed that signal it\r\n const quickNavKeys = this._quickNavigate.keybindings;\r\n const wasTriggerKeyPressed = quickNavKeys.some(k => {\r\n const [firstPart, chordPart] = k.getParts();\r\n if (chordPart) {\r\n return false;\r\n }\r\n if (firstPart.shiftKey && keyCode === 4 /* Shift */) {\r\n if (keyboardEvent.ctrlKey || keyboardEvent.altKey || keyboardEvent.metaKey) {\r\n return false; // this is an optimistic check for the shift key being used to navigate back in quick input\r\n }\r\n return true;\r\n }\r\n if (firstPart.altKey && keyCode === 6 /* Alt */) {\r\n return true;\r\n }\r\n if (firstPart.ctrlKey && keyCode === 5 /* Ctrl */) {\r\n return true;\r\n }\r\n if (firstPart.metaKey && keyCode === 57 /* Meta */) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (wasTriggerKeyPressed) {\r\n if (this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n this.handleAccept(false);\r\n }\r\n // Unset quick navigate after press. It is only valid once\r\n // and should not result in any behaviour change afterwards\r\n // if the picker remains open because there was no active item\r\n this._quickNavigate = undefined;\r\n }\r\n });\r\n }\r\n update() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n const hideInput = !!this._hideInput && this._items.length > 0;\r\n this.ui.container.classList.toggle('hidden-input', hideInput && !this.description);\r\n const visibilities = {\r\n title: !!this.title || !!this.step || !!this.buttons.length,\r\n description: !!this.description,\r\n checkAll: this.canSelectMany && !this._hideCheckAll,\r\n checkBox: this.canSelectMany,\r\n inputBox: !hideInput,\r\n progressBar: !hideInput,\r\n visibleCount: true,\r\n count: this.canSelectMany,\r\n ok: this.ok === 'default' ? this.canSelectMany : this.ok,\r\n list: true,\r\n message: !!this.validationMessage,\r\n customButton: this.customButton\r\n };\r\n this.ui.setVisibilities(visibilities);\r\n super.update();\r\n if (this.ui.inputBox.value !== this.value) {\r\n this.ui.inputBox.value = this.value;\r\n }\r\n if (this.valueSelectionUpdated) {\r\n this.valueSelectionUpdated = false;\r\n this.ui.inputBox.select(this._valueSelection && { start: this._valueSelection[0], end: this._valueSelection[1] });\r\n }\r\n if (this.ui.inputBox.placeholder !== (this.placeholder || '')) {\r\n this.ui.inputBox.placeholder = (this.placeholder || '');\r\n }\r\n const ariaLabel = this.ariaLabel || this.placeholder || QuickPick.DEFAULT_ARIA_LABEL;\r\n if (this.ui.inputBox.ariaLabel !== ariaLabel) {\r\n this.ui.inputBox.ariaLabel = ariaLabel;\r\n }\r\n this.ui.list.matchOnDescription = this.matchOnDescription;\r\n this.ui.list.matchOnDetail = this.matchOnDetail;\r\n this.ui.list.matchOnLabel = this.matchOnLabel;\r\n this.ui.list.sortByLabel = this.sortByLabel;\r\n if (this.itemsUpdated) {\r\n this.itemsUpdated = false;\r\n this.ui.list.setElements(this.items);\r\n this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\r\n this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked();\r\n this.ui.visibleCount.setCount(this.ui.list.getVisibleCount());\r\n this.ui.count.setCount(this.ui.list.getCheckedCount());\r\n switch (this._itemActivation) {\r\n case ItemActivation.NONE:\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n case ItemActivation.SECOND:\r\n this.ui.list.focus(QuickInputListFocus.Second);\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n case ItemActivation.LAST:\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n default:\r\n this.trySelectFirst();\r\n break;\r\n }\r\n }\r\n if (this.ui.container.classList.contains('show-checkboxes') !== !!this.canSelectMany) {\r\n if (this.canSelectMany) {\r\n this.ui.list.clearFocus();\r\n }\r\n else {\r\n this.trySelectFirst();\r\n }\r\n }\r\n if (this.activeItemsUpdated) {\r\n this.activeItemsUpdated = false;\r\n this.activeItemsToConfirm = this._activeItems;\r\n this.ui.list.setFocusedElements(this.activeItems);\r\n if (this.activeItemsToConfirm === this._activeItems) {\r\n this.activeItemsToConfirm = null;\r\n }\r\n }\r\n if (this.selectedItemsUpdated) {\r\n this.selectedItemsUpdated = false;\r\n this.selectedItemsToConfirm = this._selectedItems;\r\n if (this.canSelectMany) {\r\n this.ui.list.setCheckedElements(this.selectedItems);\r\n }\r\n else {\r\n this.ui.list.setSelectedElements(this.selectedItems);\r\n }\r\n if (this.selectedItemsToConfirm === this._selectedItems) {\r\n this.selectedItemsToConfirm = null;\r\n }\r\n }\r\n this.ui.customButton.label = this.customLabel || '';\r\n this.ui.customButton.element.title = this.customHover || '';\r\n this.ui.setComboboxAccessibility(true);\r\n if (!visibilities.inputBox) {\r\n // we need to move focus into the tree to detect keybindings\r\n // properly when the input box is not visible (quick nav)\r\n this.ui.list.domFocus();\r\n // Focus the first element in the list if multiselect is enabled\r\n if (this.canSelectMany) {\r\n this.ui.list.focus(QuickInputListFocus.First);\r\n }\r\n }\r\n }\r\n}\r\nQuickPick.DEFAULT_ARIA_LABEL = localize('quickInputBox.ariaLabel', \"Type to narrow down results.\");\r\nexport class QuickInputController extends Disposable {\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this.comboboxAccessibility = false;\r\n this.enabled = true;\r\n this.onDidAcceptEmitter = this._register(new Emitter());\r\n this.onDidCustomEmitter = this._register(new Emitter());\r\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\r\n this.keyMods = { ctrlCmd: false, alt: false };\r\n this.controller = null;\r\n this.onShowEmitter = this._register(new Emitter());\r\n this.onShow = this.onShowEmitter.event;\r\n this.onHideEmitter = this._register(new Emitter());\r\n this.onHide = this.onHideEmitter.event;\r\n this.idPrefix = options.idPrefix;\r\n this.parentElement = options.container;\r\n this.styles = options.styles;\r\n this.registerKeyModsListeners();\r\n }\r\n registerKeyModsListeners() {\r\n const listener = (e) => {\r\n this.keyMods.ctrlCmd = e.ctrlKey || e.metaKey;\r\n this.keyMods.alt = e.altKey;\r\n };\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_DOWN, listener, true));\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_UP, listener, true));\r\n this._register(dom.addDisposableListener(window, dom.EventType.MOUSE_DOWN, listener, true));\r\n }\r\n getUI() {\r\n if (this.ui) {\r\n return this.ui;\r\n }\r\n const container = dom.append(this.parentElement, $('.quick-input-widget.show-file-icons'));\r\n container.tabIndex = -1;\r\n container.style.display = 'none';\r\n const styleSheet = dom.createStyleSheet(container);\r\n const titleBar = dom.append(container, $('.quick-input-titlebar'));\r\n const leftActionBar = this._register(new ActionBar(titleBar));\r\n leftActionBar.domNode.classList.add('quick-input-left-action-bar');\r\n const title = dom.append(titleBar, $('.quick-input-title'));\r\n const rightActionBar = this._register(new ActionBar(titleBar));\r\n rightActionBar.domNode.classList.add('quick-input-right-action-bar');\r\n const description1 = dom.append(container, $('.quick-input-description'));\r\n const headerContainer = dom.append(container, $('.quick-input-header'));\r\n const checkAll = dom.append(headerContainer, $('input.quick-input-check-all'));\r\n checkAll.type = 'checkbox';\r\n this._register(dom.addStandardDisposableListener(checkAll, dom.EventType.CHANGE, e => {\r\n const checked = checkAll.checked;\r\n list.setAllVisibleChecked(checked);\r\n }));\r\n this._register(dom.addDisposableListener(checkAll, dom.EventType.CLICK, e => {\r\n if (e.x || e.y) { // Avoid 'click' triggered by 'space'...\r\n inputBox.setFocus();\r\n }\r\n }));\r\n const description2 = dom.append(headerContainer, $('.quick-input-description'));\r\n const extraContainer = dom.append(headerContainer, $('.quick-input-and-message'));\r\n const filterContainer = dom.append(extraContainer, $('.quick-input-filter'));\r\n const inputBox = this._register(new QuickInputBox(filterContainer));\r\n inputBox.setAttribute('aria-describedby', `${this.idPrefix}message`);\r\n const visibleCountContainer = dom.append(filterContainer, $('.quick-input-visible-count'));\r\n visibleCountContainer.setAttribute('aria-live', 'polite');\r\n visibleCountContainer.setAttribute('aria-atomic', 'true');\r\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\") });\r\n const countContainer = dom.append(filterContainer, $('.quick-input-count'));\r\n countContainer.setAttribute('aria-live', 'polite');\r\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\") });\r\n const okContainer = dom.append(headerContainer, $('.quick-input-action'));\r\n const ok = new Button(okContainer);\r\n ok.label = localize('ok', \"OK\");\r\n this._register(ok.onDidClick(e => {\r\n this.onDidAcceptEmitter.fire();\r\n }));\r\n const customButtonContainer = dom.append(headerContainer, $('.quick-input-action'));\r\n const customButton = new Button(customButtonContainer);\r\n customButton.label = localize('custom', \"Custom\");\r\n this._register(customButton.onDidClick(e => {\r\n this.onDidCustomEmitter.fire();\r\n }));\r\n const message = dom.append(extraContainer, $(`#${this.idPrefix}message.quick-input-message`));\r\n const list = this._register(new QuickInputList(container, this.idPrefix + 'list', this.options));\r\n this._register(list.onChangedAllVisibleChecked(checked => {\r\n checkAll.checked = checked;\r\n }));\r\n this._register(list.onChangedVisibleCount(c => {\r\n visibleCount.setCount(c);\r\n }));\r\n this._register(list.onChangedCheckedCount(c => {\r\n count.setCount(c);\r\n }));\r\n this._register(list.onLeave(() => {\r\n // Defer to avoid the input field reacting to the triggering key.\r\n setTimeout(() => {\r\n inputBox.setFocus();\r\n if (this.controller instanceof QuickPick && this.controller.canSelectMany) {\r\n list.clearFocus();\r\n }\r\n }, 0);\r\n }));\r\n this._register(list.onDidChangeFocus(() => {\r\n if (this.comboboxAccessibility) {\r\n this.getUI().inputBox.setAttribute('aria-activedescendant', this.getUI().list.getActiveDescendant() || '');\r\n }\r\n }));\r\n const progressBar = new ProgressBar(container);\r\n progressBar.getContainer().classList.add('quick-input-progress');\r\n const focusTracker = dom.trackFocus(container);\r\n this._register(focusTracker);\r\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, e => {\r\n this.previousFocusElement = e.relatedTarget instanceof HTMLElement ? e.relatedTarget : undefined;\r\n }, true));\r\n this._register(focusTracker.onDidBlur(() => {\r\n if (!this.getUI().ignoreFocusOut && !this.options.ignoreFocusOut()) {\r\n this.hide(QuickInputHideReason.Blur);\r\n }\r\n this.previousFocusElement = undefined;\r\n }));\r\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, (e) => {\r\n inputBox.setFocus();\r\n }));\r\n this._register(dom.addDisposableListener(container, dom.EventType.KEY_DOWN, (e) => {\r\n const event = new StandardKeyboardEvent(e);\r\n switch (event.keyCode) {\r\n case 3 /* Enter */:\r\n dom.EventHelper.stop(e, true);\r\n this.onDidAcceptEmitter.fire();\r\n break;\r\n case 9 /* Escape */:\r\n dom.EventHelper.stop(e, true);\r\n this.hide(QuickInputHideReason.Gesture);\r\n break;\r\n case 2 /* Tab */:\r\n if (!event.altKey && !event.ctrlKey && !event.metaKey) {\r\n const selectors = ['.action-label.codicon'];\r\n if (container.classList.contains('show-checkboxes')) {\r\n selectors.push('input');\r\n }\r\n else {\r\n selectors.push('input[type=text]');\r\n }\r\n if (this.getUI().list.isDisplayed()) {\r\n selectors.push('.monaco-list');\r\n }\r\n const stops = container.querySelectorAll(selectors.join(', '));\r\n if (event.shiftKey && event.target === stops[0]) {\r\n dom.EventHelper.stop(e, true);\r\n stops[stops.length - 1].focus();\r\n }\r\n else if (!event.shiftKey && event.target === stops[stops.length - 1]) {\r\n dom.EventHelper.stop(e, true);\r\n stops[0].focus();\r\n }\r\n }\r\n break;\r\n }\r\n }));\r\n this.ui = {\r\n container,\r\n styleSheet,\r\n leftActionBar,\r\n titleBar,\r\n title,\r\n description1,\r\n description2,\r\n rightActionBar,\r\n checkAll,\r\n filterContainer,\r\n inputBox,\r\n visibleCountContainer,\r\n visibleCount,\r\n countContainer,\r\n count,\r\n okContainer,\r\n ok,\r\n message,\r\n customButtonContainer,\r\n customButton,\r\n list,\r\n progressBar,\r\n onDidAccept: this.onDidAcceptEmitter.event,\r\n onDidCustom: this.onDidCustomEmitter.event,\r\n onDidTriggerButton: this.onDidTriggerButtonEmitter.event,\r\n ignoreFocusOut: false,\r\n keyMods: this.keyMods,\r\n isScreenReaderOptimized: () => this.options.isScreenReaderOptimized(),\r\n show: controller => this.show(controller),\r\n hide: () => this.hide(),\r\n setVisibilities: visibilities => this.setVisibilities(visibilities),\r\n setComboboxAccessibility: enabled => this.setComboboxAccessibility(enabled),\r\n setEnabled: enabled => this.setEnabled(enabled),\r\n setContextKey: contextKey => this.options.setContextKey(contextKey),\r\n };\r\n this.updateStyles();\r\n return this.ui;\r\n }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return new Promise((doResolve, reject) => {\r\n let resolve = (result) => {\r\n resolve = doResolve;\r\n if (options.onKeyMods) {\r\n options.onKeyMods(input.keyMods);\r\n }\r\n doResolve(result);\r\n };\r\n if (token.isCancellationRequested) {\r\n resolve(undefined);\r\n return;\r\n }\r\n const input = this.createQuickPick();\r\n let activeItem;\r\n const disposables = [\r\n input,\r\n input.onDidAccept(() => {\r\n if (input.canSelectMany) {\r\n resolve(input.selectedItems.slice());\r\n input.hide();\r\n }\r\n else {\r\n const result = input.activeItems[0];\r\n if (result) {\r\n resolve(result);\r\n input.hide();\r\n }\r\n }\r\n }),\r\n input.onDidChangeActive(items => {\r\n const focused = items[0];\r\n if (focused && options.onDidFocus) {\r\n options.onDidFocus(focused);\r\n }\r\n }),\r\n input.onDidChangeSelection(items => {\r\n if (!input.canSelectMany) {\r\n const result = items[0];\r\n if (result) {\r\n resolve(result);\r\n input.hide();\r\n }\r\n }\r\n }),\r\n input.onDidTriggerItemButton(event => options.onDidTriggerItemButton && options.onDidTriggerItemButton(Object.assign(Object.assign({}, event), { removeItem: () => {\r\n const index = input.items.indexOf(event.item);\r\n if (index !== -1) {\r\n const items = input.items.slice();\r\n const removed = items.splice(index, 1);\r\n const activeItems = input.activeItems.filter((ai) => ai !== removed[0]);\r\n input.items = items;\r\n if (activeItems) {\r\n input.activeItems = activeItems;\r\n }\r\n }\r\n } }))),\r\n input.onDidChangeValue(value => {\r\n if (activeItem && !value && (input.activeItems.length !== 1 || input.activeItems[0] !== activeItem)) {\r\n input.activeItems = [activeItem];\r\n }\r\n }),\r\n token.onCancellationRequested(() => {\r\n input.hide();\r\n }),\r\n input.onDidHide(() => {\r\n dispose(disposables);\r\n resolve(undefined);\r\n }),\r\n ];\r\n input.title = options.title;\r\n input.canSelectMany = !!options.canPickMany;\r\n input.placeholder = options.placeHolder;\r\n input.ignoreFocusOut = !!options.ignoreFocusLost;\r\n input.matchOnDescription = !!options.matchOnDescription;\r\n input.matchOnDetail = !!options.matchOnDetail;\r\n input.matchOnLabel = (options.matchOnLabel === undefined) || options.matchOnLabel; // default to true\r\n input.autoFocusOnList = (options.autoFocusOnList === undefined) || options.autoFocusOnList; // default to true\r\n input.quickNavigate = options.quickNavigate;\r\n input.contextKey = options.contextKey;\r\n input.busy = true;\r\n Promise.all([picks, options.activeItem])\r\n .then(([items, _activeItem]) => {\r\n activeItem = _activeItem;\r\n input.busy = false;\r\n input.items = items;\r\n if (input.canSelectMany) {\r\n input.selectedItems = items.filter(item => item.type !== 'separator' && item.picked);\r\n }\r\n if (activeItem) {\r\n input.activeItems = [activeItem];\r\n }\r\n });\r\n input.show();\r\n Promise.resolve(picks).then(undefined, err => {\r\n reject(err);\r\n input.hide();\r\n });\r\n });\r\n }\r\n createQuickPick() {\r\n const ui = this.getUI();\r\n return new QuickPick(ui);\r\n }\r\n show(controller) {\r\n const ui = this.getUI();\r\n this.onShowEmitter.fire();\r\n const oldController = this.controller;\r\n this.controller = controller;\r\n if (oldController) {\r\n oldController.didHide();\r\n }\r\n this.setEnabled(true);\r\n ui.leftActionBar.clear();\r\n ui.title.textContent = '';\r\n ui.description1.textContent = '';\r\n ui.description2.textContent = '';\r\n ui.rightActionBar.clear();\r\n ui.checkAll.checked = false;\r\n // ui.inputBox.value = ''; Avoid triggering an event.\r\n ui.inputBox.placeholder = '';\r\n ui.inputBox.password = false;\r\n ui.inputBox.showDecoration(Severity.Ignore);\r\n ui.visibleCount.setCount(0);\r\n ui.count.setCount(0);\r\n dom.reset(ui.message);\r\n ui.progressBar.stop();\r\n ui.list.setElements([]);\r\n ui.list.matchOnDescription = false;\r\n ui.list.matchOnDetail = false;\r\n ui.list.matchOnLabel = true;\r\n ui.list.sortByLabel = true;\r\n ui.ignoreFocusOut = false;\r\n this.setComboboxAccessibility(false);\r\n ui.inputBox.ariaLabel = '';\r\n const backKeybindingLabel = this.options.backKeybindingLabel();\r\n backButton.tooltip = backKeybindingLabel ? localize('quickInput.backWithKeybinding', \"Back ({0})\", backKeybindingLabel) : localize('quickInput.back', \"Back\");\r\n ui.container.style.display = '';\r\n this.updateLayout();\r\n ui.inputBox.setFocus();\r\n }\r\n setVisibilities(visibilities) {\r\n const ui = this.getUI();\r\n ui.title.style.display = visibilities.title ? '' : 'none';\r\n ui.description1.style.display = visibilities.description && (visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\r\n ui.description2.style.display = visibilities.description && !(visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\r\n ui.checkAll.style.display = visibilities.checkAll ? '' : 'none';\r\n ui.filterContainer.style.display = visibilities.inputBox ? '' : 'none';\r\n ui.visibleCountContainer.style.display = visibilities.visibleCount ? '' : 'none';\r\n ui.countContainer.style.display = visibilities.count ? '' : 'none';\r\n ui.okContainer.style.display = visibilities.ok ? '' : 'none';\r\n ui.customButtonContainer.style.display = visibilities.customButton ? '' : 'none';\r\n ui.message.style.display = visibilities.message ? '' : 'none';\r\n ui.progressBar.getContainer().style.display = visibilities.progressBar ? '' : 'none';\r\n ui.list.display(!!visibilities.list);\r\n ui.container.classList[visibilities.checkBox ? 'add' : 'remove']('show-checkboxes');\r\n this.updateLayout(); // TODO\r\n }\r\n setComboboxAccessibility(enabled) {\r\n if (enabled !== this.comboboxAccessibility) {\r\n const ui = this.getUI();\r\n this.comboboxAccessibility = enabled;\r\n if (this.comboboxAccessibility) {\r\n ui.inputBox.setAttribute('role', 'combobox');\r\n ui.inputBox.setAttribute('aria-haspopup', 'true');\r\n ui.inputBox.setAttribute('aria-autocomplete', 'list');\r\n ui.inputBox.setAttribute('aria-activedescendant', ui.list.getActiveDescendant() || '');\r\n }\r\n else {\r\n ui.inputBox.removeAttribute('role');\r\n ui.inputBox.removeAttribute('aria-haspopup');\r\n ui.inputBox.removeAttribute('aria-autocomplete');\r\n ui.inputBox.removeAttribute('aria-activedescendant');\r\n }\r\n }\r\n }\r\n setEnabled(enabled) {\r\n if (enabled !== this.enabled) {\r\n this.enabled = enabled;\r\n for (const item of this.getUI().leftActionBar.viewItems) {\r\n item.getAction().enabled = enabled;\r\n }\r\n for (const item of this.getUI().rightActionBar.viewItems) {\r\n item.getAction().enabled = enabled;\r\n }\r\n this.getUI().checkAll.disabled = !enabled;\r\n // this.getUI().inputBox.enabled = enabled; Avoid loosing focus.\r\n this.getUI().ok.enabled = enabled;\r\n this.getUI().list.enabled = enabled;\r\n }\r\n }\r\n hide(reason) {\r\n var _a;\r\n const controller = this.controller;\r\n if (controller) {\r\n const focusChanged = !((_a = this.ui) === null || _a === void 0 ? void 0 : _a.container.contains(document.activeElement));\r\n this.controller = null;\r\n this.onHideEmitter.fire();\r\n this.getUI().container.style.display = 'none';\r\n if (!focusChanged) {\r\n if (this.previousFocusElement && this.previousFocusElement.offsetParent) {\r\n this.previousFocusElement.focus();\r\n this.previousFocusElement = undefined;\r\n }\r\n else {\r\n this.options.returnFocus();\r\n }\r\n }\r\n controller.didHide(reason);\r\n }\r\n }\r\n layout(dimension, titleBarOffset) {\r\n this.dimension = dimension;\r\n this.titleBarOffset = titleBarOffset;\r\n this.updateLayout();\r\n }\r\n updateLayout() {\r\n if (this.ui) {\r\n this.ui.container.style.top = `${this.titleBarOffset}px`;\r\n const style = this.ui.container.style;\r\n const width = Math.min(this.dimension.width * 0.62 /* golden cut */, QuickInputController.MAX_WIDTH);\r\n style.width = width + 'px';\r\n style.marginLeft = '-' + (width / 2) + 'px';\r\n this.ui.inputBox.layout();\r\n this.ui.list.layout(this.dimension && this.dimension.height * 0.4);\r\n }\r\n }\r\n applyStyles(styles) {\r\n this.styles = styles;\r\n this.updateStyles();\r\n }\r\n updateStyles() {\r\n if (this.ui) {\r\n const { quickInputTitleBackground, quickInputBackground, quickInputForeground, contrastBorder, widgetShadow, } = this.styles.widget;\r\n this.ui.titleBar.style.backgroundColor = quickInputTitleBackground ? quickInputTitleBackground.toString() : '';\r\n this.ui.container.style.backgroundColor = quickInputBackground ? quickInputBackground.toString() : '';\r\n this.ui.container.style.color = quickInputForeground ? quickInputForeground.toString() : '';\r\n this.ui.container.style.border = contrastBorder ? `1px solid ${contrastBorder}` : '';\r\n this.ui.container.style.boxShadow = widgetShadow ? `0 0 8px 2px ${widgetShadow}` : '';\r\n this.ui.inputBox.style(this.styles.inputBox);\r\n this.ui.count.style(this.styles.countBadge);\r\n this.ui.ok.style(this.styles.button);\r\n this.ui.customButton.style(this.styles.button);\r\n this.ui.progressBar.style(this.styles.progressBar);\r\n this.ui.list.style(this.styles.list);\r\n const content = [];\r\n if (this.styles.list.pickerGroupBorder) {\r\n content.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.list.pickerGroupBorder}; }`);\r\n }\r\n if (this.styles.list.pickerGroupForeground) {\r\n content.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.list.pickerGroupForeground}; }`);\r\n }\r\n if (this.styles.keybindingLabel.keybindingLabelBackground ||\r\n this.styles.keybindingLabel.keybindingLabelBorder ||\r\n this.styles.keybindingLabel.keybindingLabelBottomBorder ||\r\n this.styles.keybindingLabel.keybindingLabelShadow ||\r\n this.styles.keybindingLabel.keybindingLabelForeground) {\r\n content.push('.quick-input-list .monaco-keybinding > .monaco-keybinding-key {');\r\n if (this.styles.keybindingLabel.keybindingLabelBackground) {\r\n content.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`);\r\n }\r\n if (this.styles.keybindingLabel.keybindingLabelBorder) {\r\n // Order matters here. `border-color` must come before `border-bottom-color`.\r\n content.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`);\r\n }\r\n if (this.styles.keybindingLabel.keybindingLabelBottomBorder) {\r\n content.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`);\r\n }\r\n if (this.styles.keybindingLabel.keybindingLabelShadow) {\r\n content.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`);\r\n }\r\n if (this.styles.keybindingLabel.keybindingLabelForeground) {\r\n content.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`);\r\n }\r\n content.push('}');\r\n }\r\n const newStyles = content.join('\\n');\r\n if (newStyles !== this.ui.styleSheet.textContent) {\r\n this.ui.styleSheet.textContent = newStyles;\r\n }\r\n }\r\n }\r\n}\r\nQuickInputController.MAX_WIDTH = 600; // Max total width of quick input widget\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nexport var DefaultQuickAccessFilterValue;\r\n(function (DefaultQuickAccessFilterValue) {\r\n /**\r\n * Keep the value as it is given to quick access.\r\n */\r\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"PRESERVE\"] = 0] = \"PRESERVE\";\r\n /**\r\n * Use the value that was used last time something was accepted from the picker.\r\n */\r\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"LAST\"] = 1] = \"LAST\";\r\n})(DefaultQuickAccessFilterValue || (DefaultQuickAccessFilterValue = {}));\r\nexport const Extensions = {\r\n Quickaccess: 'workbench.contributions.quickaccess'\r\n};\r\nexport class QuickAccessRegistry {\r\n constructor() {\r\n this.providers = [];\r\n this.defaultProvider = undefined;\r\n }\r\n registerQuickAccessProvider(provider) {\r\n // Extract the default provider when no prefix is present\r\n if (provider.prefix.length === 0) {\r\n this.defaultProvider = provider;\r\n }\r\n else {\r\n this.providers.push(provider);\r\n }\r\n // sort the providers by decreasing prefix length, such that longer\r\n // prefixes take priority: 'ext' vs 'ext install' - the latter should win\r\n this.providers.sort((providerA, providerB) => providerB.prefix.length - providerA.prefix.length);\r\n return toDisposable(() => {\r\n this.providers.splice(this.providers.indexOf(provider), 1);\r\n if (this.defaultProvider === provider) {\r\n this.defaultProvider = undefined;\r\n }\r\n });\r\n }\r\n getQuickAccessProviders() {\r\n return coalesce([this.defaultProvider, ...this.providers]);\r\n }\r\n getQuickAccessProvider(prefix) {\r\n const result = prefix ? (this.providers.find(provider => prefix.startsWith(provider.prefix)) || undefined) : undefined;\r\n return result || this.defaultProvider;\r\n }\r\n}\r\nRegistry.add(Extensions.Quickaccess, new QuickAccessRegistry());\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IQuickInputService, ItemActivation } from '../common/quickInput.js';\r\nimport { Disposable, DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Extensions, DefaultQuickAccessFilterValue } from '../common/quickAccess.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { once } from '../../../base/common/functional.js';\r\nlet QuickAccessController = class QuickAccessController extends Disposable {\r\n constructor(quickInputService, instantiationService) {\r\n super();\r\n this.quickInputService = quickInputService;\r\n this.instantiationService = instantiationService;\r\n this.registry = Registry.as(Extensions.Quickaccess);\r\n this.mapProviderToDescriptor = new Map();\r\n this.lastAcceptedPickerValues = new Map();\r\n this.visibleQuickAccess = undefined;\r\n }\r\n show(value = '', options) {\r\n this.doShowOrPick(value, false, options);\r\n }\r\n doShowOrPick(value, pick, options) {\r\n var _a;\r\n // Find provider for the value to show\r\n const [provider, descriptor] = this.getOrInstantiateProvider(value);\r\n // Return early if quick access is already showing on that same prefix\r\n const visibleQuickAccess = this.visibleQuickAccess;\r\n const visibleDescriptor = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.descriptor;\r\n if (visibleQuickAccess && descriptor && visibleDescriptor === descriptor) {\r\n // Apply value only if it is more specific than the prefix\r\n // from the provider and we are not instructed to preserve\r\n if (value !== descriptor.prefix && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\r\n visibleQuickAccess.picker.value = value;\r\n }\r\n // Always adjust selection\r\n this.adjustValueSelection(visibleQuickAccess.picker, descriptor, options);\r\n return;\r\n }\r\n // Rewrite the filter value based on certain rules unless disabled\r\n if (descriptor && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\r\n let newValue = undefined;\r\n // If we have a visible provider with a value, take it's filter value but\r\n // rewrite to new provider prefix in case they differ\r\n if (visibleQuickAccess && visibleDescriptor && visibleDescriptor !== descriptor) {\r\n const newValueCandidateWithoutPrefix = visibleQuickAccess.value.substr(visibleDescriptor.prefix.length);\r\n if (newValueCandidateWithoutPrefix) {\r\n newValue = `${descriptor.prefix}${newValueCandidateWithoutPrefix}`;\r\n }\r\n }\r\n // Otherwise, take a default value as instructed\r\n if (!newValue) {\r\n const defaultFilterValue = provider === null || provider === void 0 ? void 0 : provider.defaultFilterValue;\r\n if (defaultFilterValue === DefaultQuickAccessFilterValue.LAST) {\r\n newValue = this.lastAcceptedPickerValues.get(descriptor);\r\n }\r\n else if (typeof defaultFilterValue === 'string') {\r\n newValue = `${descriptor.prefix}${defaultFilterValue}`;\r\n }\r\n }\r\n if (typeof newValue === 'string') {\r\n value = newValue;\r\n }\r\n }\r\n // Create a picker for the provider to use with the initial value\r\n // and adjust the filtering to exclude the prefix from filtering\r\n const disposables = new DisposableStore();\r\n const picker = disposables.add(this.quickInputService.createQuickPick());\r\n picker.value = value;\r\n this.adjustValueSelection(picker, descriptor, options);\r\n picker.placeholder = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\r\n picker.quickNavigate = options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration;\r\n picker.hideInput = !!picker.quickNavigate && !visibleQuickAccess; // only hide input if there was no picker opened already\r\n if (typeof (options === null || options === void 0 ? void 0 : options.itemActivation) === 'number' || (options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration)) {\r\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 */;\r\n }\r\n picker.contextKey = descriptor === null || descriptor === void 0 ? void 0 : descriptor.contextKey;\r\n picker.filterValue = (value) => value.substring(descriptor ? descriptor.prefix.length : 0);\r\n if (descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder) {\r\n picker.ariaLabel = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\r\n }\r\n // Pick mode: setup a promise that can be resolved\r\n // with the selected items and prevent execution\r\n let pickPromise = undefined;\r\n let pickResolve = undefined;\r\n if (pick) {\r\n pickPromise = new Promise(resolve => pickResolve = resolve);\r\n disposables.add(once(picker.onWillAccept)(e => {\r\n e.veto();\r\n picker.hide();\r\n }));\r\n }\r\n // Register listeners\r\n disposables.add(this.registerPickerListeners(picker, provider, descriptor, value));\r\n // Ask provider to fill the picker as needed if we have one\r\n // and pass over a cancellation token that will indicate when\r\n // the picker is hiding without a pick being made.\r\n const cts = disposables.add(new CancellationTokenSource());\r\n if (provider) {\r\n disposables.add(provider.provide(picker, cts.token));\r\n }\r\n // Finally, trigger disposal and cancellation when the picker\r\n // hides depending on items selected or not.\r\n once(picker.onDidHide)(() => {\r\n if (picker.selectedItems.length === 0) {\r\n cts.cancel();\r\n }\r\n // Start to dispose once picker hides\r\n disposables.dispose();\r\n // Resolve pick promise with selected items\r\n pickResolve === null || pickResolve === void 0 ? void 0 : pickResolve(picker.selectedItems);\r\n });\r\n // Finally, show the picker. This is important because a provider\r\n // may not call this and then our disposables would leak that rely\r\n // on the onDidHide event.\r\n picker.show();\r\n // Pick mode: return with promise\r\n if (pick) {\r\n return pickPromise;\r\n }\r\n }\r\n adjustValueSelection(picker, descriptor, options) {\r\n var _a;\r\n let valueSelection;\r\n // Preserve: just always put the cursor at the end\r\n if (options === null || options === void 0 ? void 0 : options.preserveValue) {\r\n valueSelection = [picker.value.length, picker.value.length];\r\n }\r\n // Otherwise: select the value up until the prefix\r\n else {\r\n valueSelection = [(_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.prefix.length) !== null && _a !== void 0 ? _a : 0, picker.value.length];\r\n }\r\n picker.valueSelection = valueSelection;\r\n }\r\n registerPickerListeners(picker, provider, descriptor, value) {\r\n const disposables = new DisposableStore();\r\n // Remember as last visible picker and clean up once picker get's disposed\r\n const visibleQuickAccess = this.visibleQuickAccess = { picker, descriptor, value };\r\n disposables.add(toDisposable(() => {\r\n if (visibleQuickAccess === this.visibleQuickAccess) {\r\n this.visibleQuickAccess = undefined;\r\n }\r\n }));\r\n // Whenever the value changes, check if the provider has\r\n // changed and if so - re-create the picker from the beginning\r\n disposables.add(picker.onDidChangeValue(value => {\r\n const [providerForValue] = this.getOrInstantiateProvider(value);\r\n if (providerForValue !== provider) {\r\n this.show(value, { preserveValue: true } /* do not rewrite value from user typing! */);\r\n }\r\n else {\r\n visibleQuickAccess.value = value; // remember the value in our visible one\r\n }\r\n }));\r\n // Remember picker input for future use when accepting\r\n if (descriptor) {\r\n disposables.add(picker.onDidAccept(() => {\r\n this.lastAcceptedPickerValues.set(descriptor, picker.value);\r\n }));\r\n }\r\n return disposables;\r\n }\r\n getOrInstantiateProvider(value) {\r\n const providerDescriptor = this.registry.getQuickAccessProvider(value);\r\n if (!providerDescriptor) {\r\n return [undefined, undefined];\r\n }\r\n let provider = this.mapProviderToDescriptor.get(providerDescriptor);\r\n if (!provider) {\r\n provider = this.instantiationService.createInstance(providerDescriptor.ctor);\r\n this.mapProviderToDescriptor.set(providerDescriptor, provider);\r\n }\r\n return [provider, providerDescriptor];\r\n }\r\n};\r\nQuickAccessController = __decorate([\r\n __param(0, IQuickInputService),\r\n __param(1, IInstantiationService)\r\n], QuickAccessController);\r\nexport { QuickAccessController };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { IThemeService, Themable } from '../../theme/common/themeService.js';\r\nimport { inputBackground, inputForeground, inputBorder, inputValidationInfoBackground, inputValidationInfoForeground, inputValidationInfoBorder, inputValidationWarningBackground, inputValidationWarningForeground, inputValidationWarningBorder, inputValidationErrorBackground, inputValidationErrorForeground, inputValidationErrorBorder, badgeBackground, badgeForeground, contrastBorder, buttonForeground, buttonBackground, buttonHoverBackground, progressBarBackground, widgetShadow, activeContrastBorder, pickerGroupBorder, pickerGroupForeground, quickInputForeground, quickInputBackground, quickInputTitleBackground, quickInputListFocusBackground, keybindingLabelBackground, keybindingLabelForeground, keybindingLabelBorder, keybindingLabelBottomBorder, quickInputListFocusForeground, quickInputListFocusIconForeground } from '../../theme/common/colorRegistry.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { computeStyles } from '../../theme/common/styler.js';\r\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\r\nimport { IAccessibilityService } from '../../accessibility/common/accessibility.js';\r\nimport { QuickInputController } from '../../../base/parts/quickinput/browser/quickInput.js';\r\nimport { WorkbenchList } from '../../list/browser/listService.js';\r\nimport { QuickAccessController } from './quickAccess.js';\r\nlet QuickInputService = class QuickInputService extends Themable {\r\n constructor(instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {\r\n super(themeService);\r\n this.instantiationService = instantiationService;\r\n this.contextKeyService = contextKeyService;\r\n this.accessibilityService = accessibilityService;\r\n this.layoutService = layoutService;\r\n this.contexts = new Map();\r\n }\r\n get controller() {\r\n if (!this._controller) {\r\n this._controller = this._register(this.createController());\r\n }\r\n return this._controller;\r\n }\r\n get quickAccess() {\r\n if (!this._quickAccess) {\r\n this._quickAccess = this._register(this.instantiationService.createInstance(QuickAccessController));\r\n }\r\n return this._quickAccess;\r\n }\r\n createController(host = this.layoutService, options) {\r\n var _a, _b;\r\n const defaultOptions = {\r\n idPrefix: 'quickInput_',\r\n container: host.container,\r\n ignoreFocusOut: () => false,\r\n isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),\r\n backKeybindingLabel: () => undefined,\r\n setContextKey: (id) => this.setContextKey(id),\r\n returnFocus: () => host.focus(),\r\n createList: (user, container, delegate, renderers, options) => this.instantiationService.createInstance(WorkbenchList, user, container, delegate, renderers, options),\r\n styles: this.computeStyles()\r\n };\r\n const controller = this._register(new QuickInputController(Object.assign(Object.assign({}, defaultOptions), options)));\r\n controller.layout(host.dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0);\r\n // Layout changes\r\n this._register(host.onDidLayout(dimension => { var _a, _b; return controller.layout(dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0); }));\r\n // Context keys\r\n this._register(controller.onShow(() => this.resetContextKeys()));\r\n this._register(controller.onHide(() => this.resetContextKeys()));\r\n return controller;\r\n }\r\n setContextKey(id) {\r\n let key;\r\n if (id) {\r\n key = this.contexts.get(id);\r\n if (!key) {\r\n key = new RawContextKey(id, false)\r\n .bindTo(this.contextKeyService);\r\n this.contexts.set(id, key);\r\n }\r\n }\r\n if (key && key.get()) {\r\n return; // already active context\r\n }\r\n this.resetContextKeys();\r\n if (key) {\r\n key.set(true);\r\n }\r\n }\r\n resetContextKeys() {\r\n this.contexts.forEach(context => {\r\n if (context.get()) {\r\n context.reset();\r\n }\r\n });\r\n }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return this.controller.pick(picks, options, token);\r\n }\r\n createQuickPick() {\r\n return this.controller.createQuickPick();\r\n }\r\n updateStyles() {\r\n this.controller.applyStyles(this.computeStyles());\r\n }\r\n computeStyles() {\r\n return {\r\n widget: Object.assign({}, computeStyles(this.theme, {\r\n quickInputBackground,\r\n quickInputForeground,\r\n quickInputTitleBackground,\r\n contrastBorder,\r\n widgetShadow\r\n })),\r\n inputBox: computeStyles(this.theme, {\r\n inputForeground,\r\n inputBackground,\r\n inputBorder,\r\n inputValidationInfoBackground,\r\n inputValidationInfoForeground,\r\n inputValidationInfoBorder,\r\n inputValidationWarningBackground,\r\n inputValidationWarningForeground,\r\n inputValidationWarningBorder,\r\n inputValidationErrorBackground,\r\n inputValidationErrorForeground,\r\n inputValidationErrorBorder\r\n }),\r\n countBadge: computeStyles(this.theme, {\r\n badgeBackground,\r\n badgeForeground,\r\n badgeBorder: contrastBorder\r\n }),\r\n button: computeStyles(this.theme, {\r\n buttonForeground,\r\n buttonBackground,\r\n buttonHoverBackground,\r\n buttonBorder: contrastBorder\r\n }),\r\n progressBar: computeStyles(this.theme, {\r\n progressBarBackground\r\n }),\r\n keybindingLabel: computeStyles(this.theme, {\r\n keybindingLabelBackground,\r\n keybindingLabelForeground,\r\n keybindingLabelBorder,\r\n keybindingLabelBottomBorder,\r\n keybindingLabelShadow: widgetShadow\r\n }),\r\n list: computeStyles(this.theme, {\r\n listBackground: quickInputBackground,\r\n // Look like focused when inactive.\r\n listInactiveFocusForeground: quickInputListFocusForeground,\r\n listInactiveSelectionIconForeground: quickInputListFocusIconForeground,\r\n listInactiveFocusBackground: quickInputListFocusBackground,\r\n listFocusOutline: activeContrastBorder,\r\n listInactiveFocusOutline: activeContrastBorder,\r\n pickerGroupBorder,\r\n pickerGroupForeground\r\n })\r\n };\r\n }\r\n};\r\nQuickInputService = __decorate([\r\n __param(0, IInstantiationService),\r\n __param(1, IContextKeyService),\r\n __param(2, IThemeService),\r\n __param(3, IAccessibilityService),\r\n __param(4, ILayoutService)\r\n], QuickInputService);\r\nexport { QuickInputService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './standaloneQuickInput.css';\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\r\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\r\nimport { ILayoutService } from '../../../../platform/layout/browser/layoutService.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInput.js';\r\nimport { once } from '../../../../base/common/functional.js';\r\nlet EditorScopedQuickInputServiceImpl = class EditorScopedQuickInputServiceImpl extends QuickInputService {\r\n constructor(editor, instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {\r\n super(instantiationService, contextKeyService, themeService, accessibilityService, layoutService);\r\n this.host = undefined;\r\n // Use the passed in code editor as host for the quick input widget\r\n const contribution = QuickInputEditorContribution.get(editor);\r\n this.host = {\r\n _serviceBrand: undefined,\r\n get container() { return contribution.widget.getDomNode(); },\r\n get dimension() { return editor.getLayoutInfo(); },\r\n get onDidLayout() { return editor.onDidLayoutChange; },\r\n focus: () => editor.focus()\r\n };\r\n }\r\n createController() {\r\n return super.createController(this.host);\r\n }\r\n};\r\nEditorScopedQuickInputServiceImpl = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IContextKeyService),\r\n __param(3, IThemeService),\r\n __param(4, IAccessibilityService),\r\n __param(5, ILayoutService)\r\n], EditorScopedQuickInputServiceImpl);\r\nexport { EditorScopedQuickInputServiceImpl };\r\nlet StandaloneQuickInputServiceImpl = class StandaloneQuickInputServiceImpl {\r\n constructor(instantiationService, codeEditorService) {\r\n this.instantiationService = instantiationService;\r\n this.codeEditorService = codeEditorService;\r\n this.mapEditorToService = new Map();\r\n }\r\n get activeService() {\r\n const editor = this.codeEditorService.getFocusedCodeEditor();\r\n if (!editor) {\r\n throw new Error('Quick input service needs a focused editor to work.');\r\n }\r\n // Find the quick input implementation for the focused\r\n // editor or create it lazily if not yet created\r\n let quickInputService = this.mapEditorToService.get(editor);\r\n if (!quickInputService) {\r\n const newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputServiceImpl, editor);\r\n this.mapEditorToService.set(editor, quickInputService);\r\n once(editor.onDidDispose)(() => {\r\n newQuickInputService.dispose();\r\n this.mapEditorToService.delete(editor);\r\n });\r\n }\r\n return quickInputService;\r\n }\r\n get quickAccess() { return this.activeService.quickAccess; }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return this.activeService /* TS fail */.pick(picks, options, token);\r\n }\r\n createQuickPick() {\r\n return this.activeService.createQuickPick();\r\n }\r\n};\r\nStandaloneQuickInputServiceImpl = __decorate([\r\n __param(0, IInstantiationService),\r\n __param(1, ICodeEditorService)\r\n], StandaloneQuickInputServiceImpl);\r\nexport { StandaloneQuickInputServiceImpl };\r\nexport class QuickInputEditorContribution {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this.widget = new QuickInputEditorWidget(this.editor);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(QuickInputEditorContribution.ID);\r\n }\r\n dispose() {\r\n this.widget.dispose();\r\n }\r\n}\r\nQuickInputEditorContribution.ID = 'editor.controller.quickInput';\r\nexport class QuickInputEditorWidget {\r\n constructor(codeEditor) {\r\n this.codeEditor = codeEditor;\r\n this.domNode = document.createElement('div');\r\n this.codeEditor.addOverlayWidget(this);\r\n }\r\n getId() {\r\n return QuickInputEditorWidget.ID;\r\n }\r\n getDomNode() {\r\n return this.domNode;\r\n }\r\n getPosition() {\r\n return { preference: 2 /* TOP_CENTER */ };\r\n }\r\n dispose() {\r\n this.codeEditor.removeOverlayWidget(this);\r\n }\r\n}\r\nQuickInputEditorWidget.ID = 'editor.contrib.quickInputWidget';\r\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { IBulkEditService } from '../../browser/services/bulkEditService.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { EditorWorkerServiceImpl } from '../../common/services/editorWorkerServiceImpl.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { ModeServiceImpl } from '../../common/services/modeServiceImpl.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { ModelServiceImpl } from '../../common/services/modelServiceImpl.js';\r\nimport { ITextResourceConfigurationService, ITextResourcePropertiesService } from '../../common/services/textResourceConfigurationService.js';\r\nimport { SimpleBulkEditService, SimpleConfigurationService, SimpleDialogService, SimpleNotificationService, SimpleEditorProgressService, SimpleResourceConfigurationService, SimpleResourcePropertiesService, SimpleUriLabelService, SimpleWorkspaceContextService, StandaloneCommandService, StandaloneKeybindingService, StandaloneTelemetryService, SimpleLayoutService } from './simpleServices.js';\r\nimport { StandaloneCodeEditorServiceImpl } from './standaloneCodeServiceImpl.js';\r\nimport { StandaloneThemeServiceImpl } from './standaloneThemeServiceImpl.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { IMenuService } from '../../../platform/actions/common/actions.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { ContextKeyService } from '../../../platform/contextkey/browser/contextKeyService.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { ContextMenuService } from '../../../platform/contextview/browser/contextMenuService.js';\r\nimport { IContextMenuService, IContextViewService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { ContextViewService } from '../../../platform/contextview/browser/contextViewService.js';\r\nimport { IDialogService } from '../../../platform/dialogs/common/dialogs.js';\r\nimport { IInstantiationService, createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { InstantiationService } from '../../../platform/instantiation/common/instantiationService.js';\r\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { ILabelService } from '../../../platform/label/common/label.js';\r\nimport { IListService, ListService } from '../../../platform/list/browser/listService.js';\r\nimport { ConsoleLogger, ILogService, LogService } from '../../../platform/log/common/log.js';\r\nimport { MarkerService } from '../../../platform/markers/common/markerService.js';\r\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { IStorageService, InMemoryStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IWorkspaceContextService } from '../../../platform/workspace/common/workspace.js';\r\nimport { MenuService } from '../../../platform/actions/common/menuService.js';\r\nimport { IMarkerDecorationsService } from '../../common/services/markersDecorationService.js';\r\nimport { MarkerDecorationsService } from '../../common/services/markerDecorationsServiceImpl.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { ILayoutService } from '../../../platform/layout/browser/layoutService.js';\r\nimport { getSingletonServiceDescriptors } from '../../../platform/instantiation/common/extensions.js';\r\nimport { AccessibilityService } from '../../../platform/accessibility/common/accessibilityService.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { BrowserClipboardService } from '../../../platform/clipboard/browser/clipboardService.js';\r\nimport { IUndoRedoService } from '../../../platform/undoRedo/common/undoRedo.js';\r\nimport { UndoRedoService } from '../../../platform/undoRedo/common/undoRedoService.js';\r\nimport { StandaloneQuickInputServiceImpl } from './quickInput/standaloneQuickInputServiceImpl.js';\r\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\r\nexport var StaticServices;\r\n(function (StaticServices) {\r\n const _serviceCollection = new ServiceCollection();\r\n class LazyStaticService {\r\n constructor(serviceId, factory) {\r\n this._serviceId = serviceId;\r\n this._factory = factory;\r\n this._value = null;\r\n }\r\n get id() { return this._serviceId; }\r\n get(overrides) {\r\n if (!this._value) {\r\n if (overrides) {\r\n this._value = overrides[this._serviceId.toString()];\r\n }\r\n if (!this._value) {\r\n this._value = this._factory(overrides);\r\n }\r\n if (!this._value) {\r\n throw new Error('Service ' + this._serviceId + ' is missing!');\r\n }\r\n _serviceCollection.set(this._serviceId, this._value);\r\n }\r\n return this._value;\r\n }\r\n }\r\n StaticServices.LazyStaticService = LazyStaticService;\r\n let _all = [];\r\n function define(serviceId, factory) {\r\n let r = new LazyStaticService(serviceId, factory);\r\n _all.push(r);\r\n return r;\r\n }\r\n function init(overrides) {\r\n // Create a fresh service collection\r\n let result = new ServiceCollection();\r\n // make sure to add all services that use `registerSingleton`\r\n for (const [id, descriptor] of getSingletonServiceDescriptors()) {\r\n result.set(id, descriptor);\r\n }\r\n // Initialize the service collection with the overrides\r\n for (let serviceId in overrides) {\r\n if (overrides.hasOwnProperty(serviceId)) {\r\n result.set(createDecorator(serviceId), overrides[serviceId]);\r\n }\r\n }\r\n // Make sure the same static services are present in all service collections\r\n _all.forEach(service => result.set(service.id, service.get(overrides)));\r\n // Ensure the collection gets the correct instantiation service\r\n let instantiationService = new InstantiationService(result, true);\r\n result.set(IInstantiationService, instantiationService);\r\n return [result, instantiationService];\r\n }\r\n StaticServices.init = init;\r\n StaticServices.instantiationService = define(IInstantiationService, () => new InstantiationService(_serviceCollection, true));\r\n const configurationServiceImpl = new SimpleConfigurationService();\r\n StaticServices.configurationService = define(IConfigurationService, () => configurationServiceImpl);\r\n StaticServices.resourceConfigurationService = define(ITextResourceConfigurationService, () => new SimpleResourceConfigurationService(configurationServiceImpl));\r\n StaticServices.resourcePropertiesService = define(ITextResourcePropertiesService, () => new SimpleResourcePropertiesService(configurationServiceImpl));\r\n StaticServices.contextService = define(IWorkspaceContextService, () => new SimpleWorkspaceContextService());\r\n StaticServices.labelService = define(ILabelService, () => new SimpleUriLabelService());\r\n StaticServices.telemetryService = define(ITelemetryService, () => new StandaloneTelemetryService());\r\n StaticServices.dialogService = define(IDialogService, () => new SimpleDialogService());\r\n StaticServices.notificationService = define(INotificationService, () => new SimpleNotificationService());\r\n StaticServices.markerService = define(IMarkerService, () => new MarkerService());\r\n StaticServices.modeService = define(IModeService, (o) => new ModeServiceImpl());\r\n StaticServices.standaloneThemeService = define(IStandaloneThemeService, () => new StandaloneThemeServiceImpl());\r\n StaticServices.logService = define(ILogService, () => new LogService(new ConsoleLogger()));\r\n StaticServices.undoRedoService = define(IUndoRedoService, (o) => new UndoRedoService(StaticServices.dialogService.get(o), StaticServices.notificationService.get(o)));\r\n StaticServices.modelService = define(IModelService, (o) => new ModelServiceImpl(StaticServices.configurationService.get(o), StaticServices.resourcePropertiesService.get(o), StaticServices.standaloneThemeService.get(o), StaticServices.logService.get(o), StaticServices.undoRedoService.get(o)));\r\n StaticServices.markerDecorationsService = define(IMarkerDecorationsService, (o) => new MarkerDecorationsService(StaticServices.modelService.get(o), StaticServices.markerService.get(o)));\r\n StaticServices.contextKeyService = define(IContextKeyService, (o) => new ContextKeyService(StaticServices.configurationService.get(o)));\r\n StaticServices.codeEditorService = define(ICodeEditorService, (o) => new StandaloneCodeEditorServiceImpl(null, StaticServices.contextKeyService.get(o), StaticServices.standaloneThemeService.get(o)));\r\n StaticServices.editorProgressService = define(IEditorProgressService, () => new SimpleEditorProgressService());\r\n StaticServices.storageService = define(IStorageService, () => new InMemoryStorageService());\r\n StaticServices.editorWorkerService = define(IEditorWorkerService, (o) => new EditorWorkerServiceImpl(StaticServices.modelService.get(o), StaticServices.resourceConfigurationService.get(o), StaticServices.logService.get(o)));\r\n})(StaticServices || (StaticServices = {}));\r\nexport class DynamicStandaloneServices extends Disposable {\r\n constructor(domElement, overrides) {\r\n super();\r\n const [_serviceCollection, _instantiationService] = StaticServices.init(overrides);\r\n this._serviceCollection = _serviceCollection;\r\n this._instantiationService = _instantiationService;\r\n const configurationService = this.get(IConfigurationService);\r\n const notificationService = this.get(INotificationService);\r\n const telemetryService = this.get(ITelemetryService);\r\n const themeService = this.get(IThemeService);\r\n const logService = this.get(ILogService);\r\n const contextKeyService = this.get(IContextKeyService);\r\n let ensure = (serviceId, factory) => {\r\n let value = null;\r\n if (overrides) {\r\n value = overrides[serviceId.toString()];\r\n }\r\n if (!value) {\r\n value = factory();\r\n }\r\n this._serviceCollection.set(serviceId, value);\r\n return value;\r\n };\r\n ensure(IAccessibilityService, () => new AccessibilityService(contextKeyService, configurationService));\r\n ensure(IListService, () => new ListService(themeService));\r\n let commandService = ensure(ICommandService, () => new StandaloneCommandService(this._instantiationService));\r\n let keybindingService = ensure(IKeybindingService, () => this._register(new StandaloneKeybindingService(contextKeyService, commandService, telemetryService, notificationService, logService, domElement)));\r\n let layoutService = ensure(ILayoutService, () => new SimpleLayoutService(StaticServices.codeEditorService.get(ICodeEditorService), domElement));\r\n ensure(IQuickInputService, () => new StandaloneQuickInputServiceImpl(_instantiationService, StaticServices.codeEditorService.get(ICodeEditorService)));\r\n let contextViewService = ensure(IContextViewService, () => this._register(new ContextViewService(layoutService)));\r\n ensure(IClipboardService, () => new BrowserClipboardService());\r\n ensure(IContextMenuService, () => {\r\n const contextMenuService = new ContextMenuService(telemetryService, notificationService, contextViewService, keybindingService, themeService);\r\n contextMenuService.configure({ blockMouse: false }); // we do not want that in the standalone editor\r\n return this._register(contextMenuService);\r\n });\r\n ensure(IMenuService, () => new MenuService(commandService));\r\n ensure(IBulkEditService, () => new SimpleBulkEditService(StaticServices.modelService.get(IModelService)));\r\n }\r\n get(serviceId) {\r\n let r = this._serviceCollection.get(serviceId);\r\n if (!r) {\r\n throw new Error('Missing service ' + serviceId);\r\n }\r\n return r;\r\n }\r\n set(serviceId, instance) {\r\n this._serviceCollection.set(serviceId, instance);\r\n }\r\n has(serviceId) {\r\n return this._serviceCollection.has(serviceId);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './standalone-tokens.css';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { OpenerService } from '../../browser/services/openerService.js';\r\nimport { DiffNavigator } from '../../browser/widget/diffNavigator.js';\r\nimport { EditorOptions, ConfigurationChangedEvent } from '../../common/config/editorOptions.js';\r\nimport { BareFontInfo, FontInfo } from '../../common/config/fontInfo.js';\r\nimport { EditorType } from '../../common/editorCommon.js';\r\nimport { FindMatch, TextModelResolvedOptions } from '../../common/model.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { NULL_STATE, nullTokenize } from '../../common/modes/nullMode.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { ITextModelService } from '../../common/services/resolverService.js';\r\nimport { createWebWorker as actualCreateWebWorker } from '../../common/services/webWorker.js';\r\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\r\nimport { Colorizer } from './colorizer.js';\r\nimport { SimpleEditorModelResolverService } from './simpleServices.js';\r\nimport { StandaloneDiffEditor, StandaloneEditor, createTextModel } from './standaloneCodeEditor.js';\r\nimport { DynamicStandaloneServices, StaticServices } from './standaloneServices.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService, IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { clearAllFontInfos } from '../../browser/config/configuration.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { splitLines } from '../../../base/common/strings.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nfunction withAllStandaloneServices(domElement, override, callback) {\r\n let services = new DynamicStandaloneServices(domElement, override);\r\n let simpleEditorModelResolverService = null;\r\n if (!services.has(ITextModelService)) {\r\n simpleEditorModelResolverService = new SimpleEditorModelResolverService(StaticServices.modelService.get());\r\n services.set(ITextModelService, simpleEditorModelResolverService);\r\n }\r\n if (!services.has(IOpenerService)) {\r\n services.set(IOpenerService, new OpenerService(services.get(ICodeEditorService), services.get(ICommandService)));\r\n }\r\n let result = callback(services);\r\n if (simpleEditorModelResolverService) {\r\n simpleEditorModelResolverService.setEditor(result);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new editor under `domElement`.\r\n * `domElement` should be empty (not contain other dom nodes).\r\n * The editor will read the size of `domElement`.\r\n */\r\nexport function create(domElement, options, override) {\r\n return withAllStandaloneServices(domElement, override || {}, (services) => {\r\n return new StandaloneEditor(domElement, options, services, services.get(IInstantiationService), services.get(ICodeEditorService), services.get(ICommandService), services.get(IContextKeyService), services.get(IKeybindingService), services.get(IContextViewService), services.get(IStandaloneThemeService), services.get(INotificationService), services.get(IConfigurationService), services.get(IAccessibilityService), services.get(IModelService), services.get(IModeService));\r\n });\r\n}\r\n/**\r\n * Emitted when an editor is created.\r\n * Creating a diff editor might cause this listener to be invoked with the two editors.\r\n * @event\r\n */\r\nexport function onDidCreateEditor(listener) {\r\n return StaticServices.codeEditorService.get().onCodeEditorAdd((editor) => {\r\n listener(editor);\r\n });\r\n}\r\n/**\r\n * Create a new diff editor under `domElement`.\r\n * `domElement` should be empty (not contain other dom nodes).\r\n * The editor will read the size of `domElement`.\r\n */\r\nexport function createDiffEditor(domElement, options, override) {\r\n return withAllStandaloneServices(domElement, override || {}, (services) => {\r\n return new StandaloneDiffEditor(domElement, options, services, services.get(IInstantiationService), services.get(IContextKeyService), services.get(IKeybindingService), services.get(IContextViewService), services.get(IEditorWorkerService), services.get(ICodeEditorService), services.get(IStandaloneThemeService), services.get(INotificationService), services.get(IConfigurationService), services.get(IContextMenuService), services.get(IEditorProgressService), services.get(IClipboardService));\r\n });\r\n}\r\nexport function createDiffNavigator(diffEditor, opts) {\r\n return new DiffNavigator(diffEditor, opts);\r\n}\r\n/**\r\n * Create a new editor model.\r\n * You can specify the language that should be set for this model or let the language be inferred from the `uri`.\r\n */\r\nexport function createModel(value, language, uri) {\r\n return createTextModel(StaticServices.modelService.get(), StaticServices.modeService.get(), value, language, uri);\r\n}\r\n/**\r\n * Change the language for a model.\r\n */\r\nexport function setModelLanguage(model, languageId) {\r\n StaticServices.modelService.get().setMode(model, StaticServices.modeService.get().create(languageId));\r\n}\r\n/**\r\n * Set the markers for a model.\r\n */\r\nexport function setModelMarkers(model, owner, markers) {\r\n if (model) {\r\n StaticServices.markerService.get().changeOne(owner, model.uri, markers);\r\n }\r\n}\r\n/**\r\n * Get markers for owner and/or resource\r\n *\r\n * @returns list of markers\r\n */\r\nexport function getModelMarkers(filter) {\r\n return StaticServices.markerService.get().read(filter);\r\n}\r\n/**\r\n * Emitted when markers change for a model.\r\n * @event\r\n */\r\nexport function onDidChangeMarkers(listener) {\r\n return StaticServices.markerService.get().onMarkerChanged(listener);\r\n}\r\n/**\r\n * Get the model that has `uri` if it exists.\r\n */\r\nexport function getModel(uri) {\r\n return StaticServices.modelService.get().getModel(uri);\r\n}\r\n/**\r\n * Get all the created models.\r\n */\r\nexport function getModels() {\r\n return StaticServices.modelService.get().getModels();\r\n}\r\n/**\r\n * Emitted when a model is created.\r\n * @event\r\n */\r\nexport function onDidCreateModel(listener) {\r\n return StaticServices.modelService.get().onModelAdded(listener);\r\n}\r\n/**\r\n * Emitted right before a model is disposed.\r\n * @event\r\n */\r\nexport function onWillDisposeModel(listener) {\r\n return StaticServices.modelService.get().onModelRemoved(listener);\r\n}\r\n/**\r\n * Emitted when a different language is set to a model.\r\n * @event\r\n */\r\nexport function onDidChangeModelLanguage(listener) {\r\n return StaticServices.modelService.get().onModelModeChanged((e) => {\r\n listener({\r\n model: e.model,\r\n oldLanguage: e.oldModeId\r\n });\r\n });\r\n}\r\n/**\r\n * Create a new web worker that has model syncing capabilities built in.\r\n * Specify an AMD module to load that will `create` an object that will be proxied.\r\n */\r\nexport function createWebWorker(opts) {\r\n return actualCreateWebWorker(StaticServices.modelService.get(), opts);\r\n}\r\n/**\r\n * Colorize the contents of `domNode` using attribute `data-lang`.\r\n */\r\nexport function colorizeElement(domNode, options) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(domNode);\r\n return Colorizer.colorizeElement(themeService, StaticServices.modeService.get(), domNode, options);\r\n}\r\n/**\r\n * Colorize `text` using language `languageId`.\r\n */\r\nexport function colorize(text, languageId, options) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(document.body);\r\n return Colorizer.colorize(StaticServices.modeService.get(), text, languageId, options);\r\n}\r\n/**\r\n * Colorize a line in a model.\r\n */\r\nexport function colorizeModelLine(model, lineNumber, tabSize = 4) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(document.body);\r\n return Colorizer.colorizeModelLine(model, lineNumber, tabSize);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction getSafeTokenizationSupport(language) {\r\n let tokenizationSupport = modes.TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n return tokenizationSupport;\r\n }\r\n return {\r\n getInitialState: () => NULL_STATE,\r\n tokenize: (line, hasEOL, state, deltaOffset) => nullTokenize(language, line, state, deltaOffset)\r\n };\r\n}\r\n/**\r\n * Tokenize `text` using language `languageId`\r\n */\r\nexport function tokenize(text, languageId) {\r\n let modeService = StaticServices.modeService.get();\r\n // Needed in order to get the mode registered for subsequent look-ups\r\n modeService.triggerMode(languageId);\r\n let tokenizationSupport = getSafeTokenizationSupport(languageId);\r\n let lines = splitLines(text);\r\n let result = [];\r\n let state = tokenizationSupport.getInitialState();\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n let line = lines[i];\r\n let tokenizationResult = tokenizationSupport.tokenize(line, true, state, 0);\r\n result[i] = tokenizationResult.tokens;\r\n state = tokenizationResult.endState;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Define a new theme or update an existing theme.\r\n */\r\nexport function defineTheme(themeName, themeData) {\r\n StaticServices.standaloneThemeService.get().defineTheme(themeName, themeData);\r\n}\r\n/**\r\n * Switches to a theme.\r\n */\r\nexport function setTheme(themeName) {\r\n StaticServices.standaloneThemeService.get().setTheme(themeName);\r\n}\r\n/**\r\n * Clears all cached font measurements and triggers re-measurement.\r\n */\r\nexport function remeasureFonts() {\r\n clearAllFontInfos();\r\n}\r\n/**\r\n * Register a command.\r\n */\r\nexport function registerCommand(id, handler) {\r\n return CommandsRegistry.registerCommand({ id, handler });\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function createMonacoEditorAPI() {\r\n return {\r\n // methods\r\n create: create,\r\n onDidCreateEditor: onDidCreateEditor,\r\n createDiffEditor: createDiffEditor,\r\n createDiffNavigator: createDiffNavigator,\r\n createModel: createModel,\r\n setModelLanguage: setModelLanguage,\r\n setModelMarkers: setModelMarkers,\r\n getModelMarkers: getModelMarkers,\r\n onDidChangeMarkers: onDidChangeMarkers,\r\n getModels: getModels,\r\n getModel: getModel,\r\n onDidCreateModel: onDidCreateModel,\r\n onWillDisposeModel: onWillDisposeModel,\r\n onDidChangeModelLanguage: onDidChangeModelLanguage,\r\n createWebWorker: createWebWorker,\r\n colorizeElement: colorizeElement,\r\n colorize: colorize,\r\n colorizeModelLine: colorizeModelLine,\r\n tokenize: tokenize,\r\n defineTheme: defineTheme,\r\n setTheme: setTheme,\r\n remeasureFonts: remeasureFonts,\r\n registerCommand: registerCommand,\r\n // enums\r\n AccessibilitySupport: standaloneEnums.AccessibilitySupport,\r\n ContentWidgetPositionPreference: standaloneEnums.ContentWidgetPositionPreference,\r\n CursorChangeReason: standaloneEnums.CursorChangeReason,\r\n DefaultEndOfLine: standaloneEnums.DefaultEndOfLine,\r\n EditorAutoIndentStrategy: standaloneEnums.EditorAutoIndentStrategy,\r\n EditorOption: standaloneEnums.EditorOption,\r\n EndOfLinePreference: standaloneEnums.EndOfLinePreference,\r\n EndOfLineSequence: standaloneEnums.EndOfLineSequence,\r\n MinimapPosition: standaloneEnums.MinimapPosition,\r\n MouseTargetType: standaloneEnums.MouseTargetType,\r\n OverlayWidgetPositionPreference: standaloneEnums.OverlayWidgetPositionPreference,\r\n OverviewRulerLane: standaloneEnums.OverviewRulerLane,\r\n RenderLineNumbersType: standaloneEnums.RenderLineNumbersType,\r\n RenderMinimap: standaloneEnums.RenderMinimap,\r\n ScrollbarVisibility: standaloneEnums.ScrollbarVisibility,\r\n ScrollType: standaloneEnums.ScrollType,\r\n TextEditorCursorBlinkingStyle: standaloneEnums.TextEditorCursorBlinkingStyle,\r\n TextEditorCursorStyle: standaloneEnums.TextEditorCursorStyle,\r\n TrackedRangeStickiness: standaloneEnums.TrackedRangeStickiness,\r\n WrappingIndent: standaloneEnums.WrappingIndent,\r\n // classes\r\n ConfigurationChangedEvent: ConfigurationChangedEvent,\r\n BareFontInfo: BareFontInfo,\r\n FontInfo: FontInfo,\r\n TextModelResolvedOptions: TextModelResolvedOptions,\r\n FindMatch: FindMatch,\r\n // vars\r\n EditorType: EditorType,\r\n EditorOptions: EditorOptions\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/*\r\n * This module only exports 'compile' which compiles a JSON language definition\r\n * into a typed and checked ILexer definition.\r\n */\r\nimport * as monarchCommon from './monarchCommon.js';\r\n/*\r\n * Type helpers\r\n *\r\n * Note: this is just for sanity checks on the JSON description which is\r\n * helpful for the programmer. No checks are done anymore once the lexer is\r\n * already 'compiled and checked'.\r\n *\r\n */\r\nfunction isArrayOf(elemType, obj) {\r\n if (!obj) {\r\n return false;\r\n }\r\n if (!(Array.isArray(obj))) {\r\n return false;\r\n }\r\n for (const el of obj) {\r\n if (!(elemType(el))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction bool(prop, defValue) {\r\n if (typeof prop === 'boolean') {\r\n return prop;\r\n }\r\n return defValue;\r\n}\r\nfunction string(prop, defValue) {\r\n if (typeof (prop) === 'string') {\r\n return prop;\r\n }\r\n return defValue;\r\n}\r\nfunction arrayToHash(array) {\r\n const result = {};\r\n for (const e of array) {\r\n result[e] = true;\r\n }\r\n return result;\r\n}\r\nfunction createKeywordMatcher(arr, caseInsensitive = false) {\r\n if (caseInsensitive) {\r\n arr = arr.map(function (x) { return x.toLowerCase(); });\r\n }\r\n const hash = arrayToHash(arr);\r\n if (caseInsensitive) {\r\n return function (word) {\r\n return hash[word.toLowerCase()] !== undefined && hash.hasOwnProperty(word.toLowerCase());\r\n };\r\n }\r\n else {\r\n return function (word) {\r\n return hash[word] !== undefined && hash.hasOwnProperty(word);\r\n };\r\n }\r\n}\r\n// Lexer helpers\r\n/**\r\n * Compiles a regular expression string, adding the 'i' flag if 'ignoreCase' is set, and the 'u' flag if 'unicode' is set.\r\n * Also replaces @\\w+ or sequences with the content of the specified attribute\r\n * @\\w+ replacement can be avoided by escaping `@` signs with another `@` sign.\r\n * @example /@attr/ will be replaced with the value of lexer[attr]\r\n * @example /@@text/ will not be replaced and will become /@text/.\r\n */\r\nfunction compileRegExp(lexer, str) {\r\n // @@ must be interpreted as a literal @, so we replace all occurences of @@ with a placeholder character\r\n str = str.replace(/@@/g, `\\x01`);\r\n let n = 0;\r\n let hadExpansion;\r\n do {\r\n hadExpansion = false;\r\n str = str.replace(/@(\\w+)/g, function (s, attr) {\r\n hadExpansion = true;\r\n let sub = '';\r\n if (typeof (lexer[attr]) === 'string') {\r\n sub = lexer[attr];\r\n }\r\n else if (lexer[attr] && lexer[attr] instanceof RegExp) {\r\n sub = lexer[attr].source;\r\n }\r\n else {\r\n if (lexer[attr] === undefined) {\r\n throw monarchCommon.createError(lexer, 'language definition does not contain attribute \\'' + attr + '\\', used at: ' + str);\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'attribute reference \\'' + attr + '\\' must be a string, used at: ' + str);\r\n }\r\n }\r\n return (monarchCommon.empty(sub) ? '' : '(?:' + sub + ')');\r\n });\r\n n++;\r\n } while (hadExpansion && n < 5);\r\n // handle escaped @@\r\n str = str.replace(/\\x01/g, '@');\r\n let flags = (lexer.ignoreCase ? 'i' : '') + (lexer.unicode ? 'u' : '');\r\n return new RegExp(str, flags);\r\n}\r\n/**\r\n * Compiles guard functions for case matches.\r\n * This compiles 'cases' attributes into efficient match functions.\r\n *\r\n */\r\nfunction selectScrutinee(id, matches, state, num) {\r\n if (num < 0) {\r\n return id;\r\n }\r\n if (num < matches.length) {\r\n return matches[num];\r\n }\r\n if (num >= 100) {\r\n num = num - 100;\r\n let parts = state.split('.');\r\n parts.unshift(state);\r\n if (num < parts.length) {\r\n return parts[num];\r\n }\r\n }\r\n return null;\r\n}\r\nfunction createGuard(lexer, ruleName, tkey, val) {\r\n // get the scrutinee and pattern\r\n let scrut = -1; // -1: $!, 0-99: $n, 100+n: $Sn\r\n let oppat = tkey;\r\n let matches = tkey.match(/^\\$(([sS]?)(\\d\\d?)|#)(.*)$/);\r\n if (matches) {\r\n if (matches[3]) { // if digits\r\n scrut = parseInt(matches[3]);\r\n if (matches[2]) {\r\n scrut = scrut + 100; // if [sS] present\r\n }\r\n }\r\n oppat = matches[4];\r\n }\r\n // get operator\r\n let op = '~';\r\n let pat = oppat;\r\n if (!oppat || oppat.length === 0) {\r\n op = '!=';\r\n pat = '';\r\n }\r\n else if (/^\\w*$/.test(pat)) { // just a word\r\n op = '==';\r\n }\r\n else {\r\n matches = oppat.match(/^(@|!@|~|!~|==|!=)(.*)$/);\r\n if (matches) {\r\n op = matches[1];\r\n pat = matches[2];\r\n }\r\n }\r\n // set the tester function\r\n let tester;\r\n // special case a regexp that matches just words\r\n if ((op === '~' || op === '!~') && /^(\\w|\\|)*$/.test(pat)) {\r\n let inWords = createKeywordMatcher(pat.split('|'), lexer.ignoreCase);\r\n tester = function (s) { return (op === '~' ? inWords(s) : !inWords(s)); };\r\n }\r\n else if (op === '@' || op === '!@') {\r\n let words = lexer[pat];\r\n if (!words) {\r\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' is not defined, in rule: ' + ruleName);\r\n }\r\n if (!(isArrayOf(function (elem) { return (typeof (elem) === 'string'); }, words))) {\r\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' must be an array of strings, in rule: ' + ruleName);\r\n }\r\n let inWords = createKeywordMatcher(words, lexer.ignoreCase);\r\n tester = function (s) { return (op === '@' ? inWords(s) : !inWords(s)); };\r\n }\r\n else if (op === '~' || op === '!~') {\r\n if (pat.indexOf('$') < 0) {\r\n // precompile regular expression\r\n let re = compileRegExp(lexer, '^' + pat + '$');\r\n tester = function (s) { return (op === '~' ? re.test(s) : !re.test(s)); };\r\n }\r\n else {\r\n tester = function (s, id, matches, state) {\r\n let re = compileRegExp(lexer, '^' + monarchCommon.substituteMatches(lexer, pat, id, matches, state) + '$');\r\n return re.test(s);\r\n };\r\n }\r\n }\r\n else { // if (op==='==' || op==='!=') {\r\n if (pat.indexOf('$') < 0) {\r\n let patx = monarchCommon.fixCase(lexer, pat);\r\n tester = function (s) { return (op === '==' ? s === patx : s !== patx); };\r\n }\r\n else {\r\n let patx = monarchCommon.fixCase(lexer, pat);\r\n tester = function (s, id, matches, state, eos) {\r\n let patexp = monarchCommon.substituteMatches(lexer, patx, id, matches, state);\r\n return (op === '==' ? s === patexp : s !== patexp);\r\n };\r\n }\r\n }\r\n // return the branch object\r\n if (scrut === -1) {\r\n return {\r\n name: tkey, value: val, test: function (id, matches, state, eos) {\r\n return tester(id, id, matches, state, eos);\r\n }\r\n };\r\n }\r\n else {\r\n return {\r\n name: tkey, value: val, test: function (id, matches, state, eos) {\r\n let scrutinee = selectScrutinee(id, matches, state, scrut);\r\n return tester(!scrutinee ? '' : scrutinee, id, matches, state, eos);\r\n }\r\n };\r\n }\r\n}\r\n/**\r\n * Compiles an action: i.e. optimize regular expressions and case matches\r\n * and do many sanity checks.\r\n *\r\n * This is called only during compilation but if the lexer definition\r\n * contains user functions as actions (which is usually not allowed), then this\r\n * may be called during lexing. It is important therefore to compile common cases efficiently\r\n */\r\nfunction compileAction(lexer, ruleName, action) {\r\n if (!action) {\r\n return { token: '' };\r\n }\r\n else if (typeof (action) === 'string') {\r\n return action; // { token: action };\r\n }\r\n else if (action.token || action.token === '') {\r\n if (typeof (action.token) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'a \\'token\\' attribute must be of type string, in rule: ' + ruleName);\r\n }\r\n else {\r\n // only copy specific typed fields (only happens once during compile Lexer)\r\n let newAction = { token: action.token };\r\n if (action.token.indexOf('$') >= 0) {\r\n newAction.tokenSubst = true;\r\n }\r\n if (typeof (action.bracket) === 'string') {\r\n if (action.bracket === '@open') {\r\n newAction.bracket = 1 /* Open */;\r\n }\r\n else if (action.bracket === '@close') {\r\n newAction.bracket = -1 /* Close */;\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'a \\'bracket\\' attribute must be either \\'@open\\' or \\'@close\\', in rule: ' + ruleName);\r\n }\r\n }\r\n if (action.next) {\r\n if (typeof (action.next) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'the next state must be a string value in rule: ' + ruleName);\r\n }\r\n else {\r\n let next = action.next;\r\n if (!/^(@pop|@push|@popall)$/.test(next)) {\r\n if (next[0] === '@') {\r\n next = next.substr(1); // peel off starting @ sign\r\n }\r\n if (next.indexOf('$') < 0) { // no dollar substitution, we can check if the state exists\r\n if (!monarchCommon.stateExists(lexer, monarchCommon.substituteMatches(lexer, next, '', [], ''))) {\r\n throw monarchCommon.createError(lexer, 'the next state \\'' + action.next + '\\' is not defined in rule: ' + ruleName);\r\n }\r\n }\r\n }\r\n newAction.next = next;\r\n }\r\n }\r\n if (typeof (action.goBack) === 'number') {\r\n newAction.goBack = action.goBack;\r\n }\r\n if (typeof (action.switchTo) === 'string') {\r\n newAction.switchTo = action.switchTo;\r\n }\r\n if (typeof (action.log) === 'string') {\r\n newAction.log = action.log;\r\n }\r\n if (typeof (action.nextEmbedded) === 'string') {\r\n newAction.nextEmbedded = action.nextEmbedded;\r\n lexer.usesEmbedded = true;\r\n }\r\n return newAction;\r\n }\r\n }\r\n else if (Array.isArray(action)) {\r\n let results = [];\r\n for (let i = 0, len = action.length; i < len; i++) {\r\n results[i] = compileAction(lexer, ruleName, action[i]);\r\n }\r\n return { group: results };\r\n }\r\n else if (action.cases) {\r\n // build an array of test cases\r\n let cases = [];\r\n // for each case, push a test function and result value\r\n for (let tkey in action.cases) {\r\n if (action.cases.hasOwnProperty(tkey)) {\r\n const val = compileAction(lexer, ruleName, action.cases[tkey]);\r\n // what kind of case\r\n if (tkey === '@default' || tkey === '@' || tkey === '') {\r\n cases.push({ test: undefined, value: val, name: tkey });\r\n }\r\n else if (tkey === '@eos') {\r\n cases.push({ test: function (id, matches, state, eos) { return eos; }, value: val, name: tkey });\r\n }\r\n else {\r\n cases.push(createGuard(lexer, ruleName, tkey, val)); // call separate function to avoid local variable capture\r\n }\r\n }\r\n }\r\n // create a matching function\r\n const def = lexer.defaultToken;\r\n return {\r\n test: function (id, matches, state, eos) {\r\n for (const _case of cases) {\r\n const didmatch = (!_case.test || _case.test(id, matches, state, eos));\r\n if (didmatch) {\r\n return _case.value;\r\n }\r\n }\r\n return def;\r\n }\r\n };\r\n }\r\n else {\r\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);\r\n }\r\n}\r\n/**\r\n * Helper class for creating matching rules\r\n */\r\nclass Rule {\r\n constructor(name) {\r\n this.regex = new RegExp('');\r\n this.action = { token: '' };\r\n this.matchOnlyAtLineStart = false;\r\n this.name = '';\r\n this.name = name;\r\n }\r\n setRegex(lexer, re) {\r\n let sregex;\r\n if (typeof (re) === 'string') {\r\n sregex = re;\r\n }\r\n else if (re instanceof RegExp) {\r\n sregex = re.source;\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'rules must start with a match string or regular expression: ' + this.name);\r\n }\r\n this.matchOnlyAtLineStart = (sregex.length > 0 && sregex[0] === '^');\r\n this.name = this.name + ': ' + sregex;\r\n this.regex = compileRegExp(lexer, '^(?:' + (this.matchOnlyAtLineStart ? sregex.substr(1) : sregex) + ')');\r\n }\r\n setAction(lexer, act) {\r\n this.action = compileAction(lexer, this.name, act);\r\n }\r\n}\r\n/**\r\n * Compiles a json description function into json where all regular expressions,\r\n * case matches etc, are compiled and all include rules are expanded.\r\n * We also compile the bracket definitions, supply defaults, and do many sanity checks.\r\n * If the 'jsonStrict' parameter is 'false', we allow at certain locations\r\n * regular expression objects and functions that get called during lexing.\r\n * (Currently we have no samples that need this so perhaps we should always have\r\n * jsonStrict to true).\r\n */\r\nexport function compile(languageId, json) {\r\n if (!json || typeof (json) !== 'object') {\r\n throw new Error('Monarch: expecting a language definition object');\r\n }\r\n // Create our lexer\r\n let lexer = {};\r\n lexer.languageId = languageId;\r\n lexer.includeLF = bool(json.includeLF, false);\r\n lexer.noThrow = false; // raise exceptions during compilation\r\n lexer.maxStack = 100;\r\n // Set standard fields: be defensive about types\r\n lexer.start = (typeof json.start === 'string' ? json.start : null);\r\n lexer.ignoreCase = bool(json.ignoreCase, false);\r\n lexer.unicode = bool(json.unicode, false);\r\n lexer.tokenPostfix = string(json.tokenPostfix, '.' + lexer.languageId);\r\n lexer.defaultToken = string(json.defaultToken, 'source');\r\n lexer.usesEmbedded = false; // becomes true if we find a nextEmbedded action\r\n // For calling compileAction later on\r\n let lexerMin = json;\r\n lexerMin.languageId = languageId;\r\n lexerMin.includeLF = lexer.includeLF;\r\n lexerMin.ignoreCase = lexer.ignoreCase;\r\n lexerMin.unicode = lexer.unicode;\r\n lexerMin.noThrow = lexer.noThrow;\r\n lexerMin.usesEmbedded = lexer.usesEmbedded;\r\n lexerMin.stateNames = json.tokenizer;\r\n lexerMin.defaultToken = lexer.defaultToken;\r\n // Compile an array of rules into newrules where RegExp objects are created.\r\n function addRules(state, newrules, rules) {\r\n for (const rule of rules) {\r\n let include = rule.include;\r\n if (include) {\r\n if (typeof (include) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'an \\'include\\' attribute must be a string at: ' + state);\r\n }\r\n if (include[0] === '@') {\r\n include = include.substr(1); // peel off starting @\r\n }\r\n if (!json.tokenizer[include]) {\r\n throw monarchCommon.createError(lexer, 'include target \\'' + include + '\\' is not defined at: ' + state);\r\n }\r\n addRules(state + '.' + include, newrules, json.tokenizer[include]);\r\n }\r\n else {\r\n const newrule = new Rule(state);\r\n // Set up new rule attributes\r\n if (Array.isArray(rule) && rule.length >= 1 && rule.length <= 3) {\r\n newrule.setRegex(lexerMin, rule[0]);\r\n if (rule.length >= 3) {\r\n if (typeof (rule[1]) === 'string') {\r\n newrule.setAction(lexerMin, { token: rule[1], next: rule[2] });\r\n }\r\n else if (typeof (rule[1]) === 'object') {\r\n const rule1 = rule[1];\r\n rule1.next = rule[2];\r\n newrule.setAction(lexerMin, rule1);\r\n }\r\n else {\r\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);\r\n }\r\n }\r\n else {\r\n newrule.setAction(lexerMin, rule[1]);\r\n }\r\n }\r\n else {\r\n if (!rule.regex) {\r\n throw monarchCommon.createError(lexer, 'a rule must either be an array, or an object with a \\'regex\\' or \\'include\\' field at: ' + state);\r\n }\r\n if (rule.name) {\r\n if (typeof rule.name === 'string') {\r\n newrule.name = rule.name;\r\n }\r\n }\r\n if (rule.matchOnlyAtStart) {\r\n newrule.matchOnlyAtLineStart = bool(rule.matchOnlyAtLineStart, false);\r\n }\r\n newrule.setRegex(lexerMin, rule.regex);\r\n newrule.setAction(lexerMin, rule.action);\r\n }\r\n newrules.push(newrule);\r\n }\r\n }\r\n }\r\n // compile the tokenizer rules\r\n if (!json.tokenizer || typeof (json.tokenizer) !== 'object') {\r\n throw monarchCommon.createError(lexer, 'a language definition must define the \\'tokenizer\\' attribute as an object');\r\n }\r\n lexer.tokenizer = [];\r\n for (let key in json.tokenizer) {\r\n if (json.tokenizer.hasOwnProperty(key)) {\r\n if (!lexer.start) {\r\n lexer.start = key;\r\n }\r\n const rules = json.tokenizer[key];\r\n lexer.tokenizer[key] = new Array();\r\n addRules('tokenizer.' + key, lexer.tokenizer[key], rules);\r\n }\r\n }\r\n lexer.usesEmbedded = lexerMin.usesEmbedded; // can be set during compileAction\r\n // Set simple brackets\r\n if (json.brackets) {\r\n if (!(Array.isArray(json.brackets))) {\r\n throw monarchCommon.createError(lexer, 'the \\'brackets\\' attribute must be defined as an array');\r\n }\r\n }\r\n else {\r\n json.brackets = [\r\n { open: '{', close: '}', token: 'delimiter.curly' },\r\n { open: '[', close: ']', token: 'delimiter.square' },\r\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\r\n { open: '<', close: '>', token: 'delimiter.angle' }\r\n ];\r\n }\r\n let brackets = [];\r\n for (let el of json.brackets) {\r\n let desc = el;\r\n if (desc && Array.isArray(desc) && desc.length === 3) {\r\n desc = { token: desc[2], open: desc[0], close: desc[1] };\r\n }\r\n if (desc.open === desc.close) {\r\n throw monarchCommon.createError(lexer, 'open and close brackets in a \\'brackets\\' attribute must be different: ' + desc.open +\r\n '\\n hint: use the \\'bracket\\' attribute if matching on equal brackets is required.');\r\n }\r\n if (typeof desc.open === 'string' && typeof desc.token === 'string' && typeof desc.close === 'string') {\r\n brackets.push({\r\n token: desc.token + lexer.tokenPostfix,\r\n open: monarchCommon.fixCase(lexer, desc.open),\r\n close: monarchCommon.fixCase(lexer, desc.close)\r\n });\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'every element in the \\'brackets\\' array must be a \\'{open,close,token}\\' object or array');\r\n }\r\n }\r\n lexer.brackets = brackets;\r\n // Disable throw so the syntax highlighter goes, no matter what\r\n lexer.noThrow = true;\r\n return lexer;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../../common/core/token.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { ModesRegistry } from '../../common/modes/modesRegistry.js';\r\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\r\nimport { StaticServices } from './standaloneServices.js';\r\nimport { compile } from '../common/monarch/monarchCompile.js';\r\nimport { createTokenizationSupport } from '../common/monarch/monarchLexer.js';\r\n/**\r\n * Register information about a new language.\r\n */\r\nexport function register(language) {\r\n ModesRegistry.registerLanguage(language);\r\n}\r\n/**\r\n * Get the information of all the registered languages.\r\n */\r\nexport function getLanguages() {\r\n let result = [];\r\n result = result.concat(ModesRegistry.getLanguages());\r\n return result;\r\n}\r\nexport function getEncodedLanguageId(languageId) {\r\n let lid = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n return lid ? lid.id : 0;\r\n}\r\n/**\r\n * An event emitted when a language is first time needed (e.g. a model has it set).\r\n * @event\r\n */\r\nexport function onLanguage(languageId, callback) {\r\n let disposable = StaticServices.modeService.get().onDidCreateMode((mode) => {\r\n if (mode.getId() === languageId) {\r\n // stop listening\r\n disposable.dispose();\r\n // invoke actual listener\r\n callback();\r\n }\r\n });\r\n return disposable;\r\n}\r\n/**\r\n * Set the editing configuration for a language.\r\n */\r\nexport function setLanguageConfiguration(languageId, configuration) {\r\n let languageIdentifier = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n if (!languageIdentifier) {\r\n throw new Error(`Cannot set configuration for unknown language ${languageId}`);\r\n }\r\n return LanguageConfigurationRegistry.register(languageIdentifier, configuration, 100);\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EncodedTokenizationSupport2Adapter {\r\n constructor(languageIdentifier, actual) {\r\n this._languageIdentifier = languageIdentifier;\r\n this._actual = actual;\r\n }\r\n getInitialState() {\r\n return this._actual.getInitialState();\r\n }\r\n tokenize(line, hasEOL, state, offsetDelta) {\r\n if (typeof this._actual.tokenize === 'function') {\r\n return TokenizationSupport2Adapter.adaptTokenize(this._languageIdentifier.language, this._actual, line, state, offsetDelta);\r\n }\r\n throw new Error('Not supported!');\r\n }\r\n tokenize2(line, hasEOL, state) {\r\n let result = this._actual.tokenizeEncoded(line, state);\r\n return new TokenizationResult2(result.tokens, result.endState);\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class TokenizationSupport2Adapter {\r\n constructor(standaloneThemeService, languageIdentifier, actual) {\r\n this._standaloneThemeService = standaloneThemeService;\r\n this._languageIdentifier = languageIdentifier;\r\n this._actual = actual;\r\n }\r\n getInitialState() {\r\n return this._actual.getInitialState();\r\n }\r\n static _toClassicTokens(tokens, language, offsetDelta) {\r\n let result = [];\r\n let previousStartIndex = 0;\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const t = tokens[i];\r\n let startIndex = t.startIndex;\r\n // Prevent issues stemming from a buggy external tokenizer.\r\n if (i === 0) {\r\n // Force first token to start at first index!\r\n startIndex = 0;\r\n }\r\n else if (startIndex < previousStartIndex) {\r\n // Force tokens to be after one another!\r\n startIndex = previousStartIndex;\r\n }\r\n result[i] = new Token(startIndex + offsetDelta, t.scopes, language);\r\n previousStartIndex = startIndex;\r\n }\r\n return result;\r\n }\r\n static adaptTokenize(language, actual, line, state, offsetDelta) {\r\n let actualResult = actual.tokenize(line, state);\r\n let tokens = TokenizationSupport2Adapter._toClassicTokens(actualResult.tokens, language, offsetDelta);\r\n let endState;\r\n // try to save an object if possible\r\n if (actualResult.endState.equals(state)) {\r\n endState = state;\r\n }\r\n else {\r\n endState = actualResult.endState;\r\n }\r\n return new TokenizationResult(tokens, endState);\r\n }\r\n tokenize(line, hasEOL, state, offsetDelta) {\r\n return TokenizationSupport2Adapter.adaptTokenize(this._languageIdentifier.language, this._actual, line, state, offsetDelta);\r\n }\r\n _toBinaryTokens(tokens, offsetDelta) {\r\n const languageId = this._languageIdentifier.id;\r\n const tokenTheme = this._standaloneThemeService.getColorTheme().tokenTheme;\r\n let result = [], resultLen = 0;\r\n let previousStartIndex = 0;\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const t = tokens[i];\r\n const metadata = tokenTheme.match(languageId, t.scopes);\r\n if (resultLen > 0 && result[resultLen - 1] === metadata) {\r\n // same metadata\r\n continue;\r\n }\r\n let startIndex = t.startIndex;\r\n // Prevent issues stemming from a buggy external tokenizer.\r\n if (i === 0) {\r\n // Force first token to start at first index!\r\n startIndex = 0;\r\n }\r\n else if (startIndex < previousStartIndex) {\r\n // Force tokens to be after one another!\r\n startIndex = previousStartIndex;\r\n }\r\n result[resultLen++] = startIndex + offsetDelta;\r\n result[resultLen++] = metadata;\r\n previousStartIndex = startIndex;\r\n }\r\n let actualResult = new Uint32Array(resultLen);\r\n for (let i = 0; i < resultLen; i++) {\r\n actualResult[i] = result[i];\r\n }\r\n return actualResult;\r\n }\r\n tokenize2(line, hasEOL, state, offsetDelta) {\r\n let actualResult = this._actual.tokenize(line, state);\r\n let tokens = this._toBinaryTokens(actualResult.tokens, offsetDelta);\r\n let endState;\r\n // try to save an object if possible\r\n if (actualResult.endState.equals(state)) {\r\n endState = state;\r\n }\r\n else {\r\n endState = actualResult.endState;\r\n }\r\n return new TokenizationResult2(tokens, endState);\r\n }\r\n}\r\nfunction isEncodedTokensProvider(provider) {\r\n return 'tokenizeEncoded' in provider;\r\n}\r\nfunction isThenable(obj) {\r\n return obj && typeof obj.then === 'function';\r\n}\r\n/**\r\n * Change the color map that is used for token colors.\r\n * Supported formats (hex): #RRGGBB, $RRGGBBAA, #RGB, #RGBA\r\n */\r\nexport function setColorMap(colorMap) {\r\n if (colorMap) {\r\n const result = [null];\r\n for (let i = 1, len = colorMap.length; i < len; i++) {\r\n result[i] = Color.fromHex(colorMap[i]);\r\n }\r\n StaticServices.standaloneThemeService.get().setColorMapOverride(result);\r\n }\r\n else {\r\n StaticServices.standaloneThemeService.get().setColorMapOverride(null);\r\n }\r\n}\r\n/**\r\n * Set the tokens provider for a language (manual implementation).\r\n */\r\nexport function setTokensProvider(languageId, provider) {\r\n let languageIdentifier = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n if (!languageIdentifier) {\r\n throw new Error(`Cannot set tokens provider for unknown language ${languageId}`);\r\n }\r\n const create = (provider) => {\r\n if (isEncodedTokensProvider(provider)) {\r\n return new EncodedTokenizationSupport2Adapter(languageIdentifier, provider);\r\n }\r\n else {\r\n return new TokenizationSupport2Adapter(StaticServices.standaloneThemeService.get(), languageIdentifier, provider);\r\n }\r\n };\r\n if (isThenable(provider)) {\r\n return modes.TokenizationRegistry.registerPromise(languageId, provider.then(provider => create(provider)));\r\n }\r\n return modes.TokenizationRegistry.register(languageId, create(provider));\r\n}\r\n/**\r\n * Set the tokens provider for a language (monarch implementation).\r\n */\r\nexport function setMonarchTokensProvider(languageId, languageDef) {\r\n const create = (languageDef) => {\r\n return createTokenizationSupport(StaticServices.modeService.get(), StaticServices.standaloneThemeService.get(), languageId, compile(languageId, languageDef));\r\n };\r\n if (isThenable(languageDef)) {\r\n return modes.TokenizationRegistry.registerPromise(languageId, languageDef.then(languageDef => create(languageDef)));\r\n }\r\n return modes.TokenizationRegistry.register(languageId, create(languageDef));\r\n}\r\n/**\r\n * Register a reference provider (used by e.g. reference search).\r\n */\r\nexport function registerReferenceProvider(languageId, provider) {\r\n return modes.ReferenceProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a rename provider (used by e.g. rename symbol).\r\n */\r\nexport function registerRenameProvider(languageId, provider) {\r\n return modes.RenameProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a signature help provider (used by e.g. parameter hints).\r\n */\r\nexport function registerSignatureHelpProvider(languageId, provider) {\r\n return modes.SignatureHelpProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a hover provider (used by e.g. editor hover).\r\n */\r\nexport function registerHoverProvider(languageId, provider) {\r\n return modes.HoverProviderRegistry.register(languageId, {\r\n provideHover: (model, position, token) => {\r\n let word = model.getWordAtPosition(position);\r\n return Promise.resolve(provider.provideHover(model, position, token)).then((value) => {\r\n if (!value) {\r\n return undefined;\r\n }\r\n if (!value.range && word) {\r\n value.range = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n }\r\n if (!value.range) {\r\n value.range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n }\r\n return value;\r\n });\r\n }\r\n });\r\n}\r\n/**\r\n * Register a document symbol provider (used by e.g. outline).\r\n */\r\nexport function registerDocumentSymbolProvider(languageId, provider) {\r\n return modes.DocumentSymbolProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document highlight provider (used by e.g. highlight occurrences).\r\n */\r\nexport function registerDocumentHighlightProvider(languageId, provider) {\r\n return modes.DocumentHighlightProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register an linked editing range provider.\r\n */\r\nexport function registerLinkedEditingRangeProvider(languageId, provider) {\r\n return modes.LinkedEditingRangeProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a definition provider (used by e.g. go to definition).\r\n */\r\nexport function registerDefinitionProvider(languageId, provider) {\r\n return modes.DefinitionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a implementation provider (used by e.g. go to implementation).\r\n */\r\nexport function registerImplementationProvider(languageId, provider) {\r\n return modes.ImplementationProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a type definition provider (used by e.g. go to type definition).\r\n */\r\nexport function registerTypeDefinitionProvider(languageId, provider) {\r\n return modes.TypeDefinitionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a code lens provider (used by e.g. inline code lenses).\r\n */\r\nexport function registerCodeLensProvider(languageId, provider) {\r\n return modes.CodeLensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a code action provider (used by e.g. quick fix).\r\n */\r\nexport function registerCodeActionProvider(languageId, provider) {\r\n return modes.CodeActionProviderRegistry.register(languageId, {\r\n provideCodeActions: (model, range, context, token) => {\r\n let markers = StaticServices.markerService.get().read({ resource: model.uri }).filter(m => {\r\n return Range.areIntersectingOrTouching(m, range);\r\n });\r\n return provider.provideCodeActions(model, range, { markers, only: context.only }, token);\r\n }\r\n });\r\n}\r\n/**\r\n * Register a formatter that can handle only entire models.\r\n */\r\nexport function registerDocumentFormattingEditProvider(languageId, provider) {\r\n return modes.DocumentFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a formatter that can handle a range inside a model.\r\n */\r\nexport function registerDocumentRangeFormattingEditProvider(languageId, provider) {\r\n return modes.DocumentRangeFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a formatter than can do formatting as the user types.\r\n */\r\nexport function registerOnTypeFormattingEditProvider(languageId, provider) {\r\n return modes.OnTypeFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a link provider that can find links in text.\r\n */\r\nexport function registerLinkProvider(languageId, provider) {\r\n return modes.LinkProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a completion item provider (use by e.g. suggestions).\r\n */\r\nexport function registerCompletionItemProvider(languageId, provider) {\r\n return modes.CompletionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document color provider (used by Color Picker, Color Decorator).\r\n */\r\nexport function registerColorProvider(languageId, provider) {\r\n return modes.ColorProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a folding range provider\r\n */\r\nexport function registerFoldingRangeProvider(languageId, provider) {\r\n return modes.FoldingRangeProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a declaration provider\r\n */\r\nexport function registerDeclarationProvider(languageId, provider) {\r\n return modes.DeclarationProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a selection range provider\r\n */\r\nexport function registerSelectionRangeProvider(languageId, provider) {\r\n return modes.SelectionRangeRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document semantic tokens provider\r\n */\r\nexport function registerDocumentSemanticTokensProvider(languageId, provider) {\r\n return modes.DocumentSemanticTokensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document range semantic tokens provider\r\n */\r\nexport function registerDocumentRangeSemanticTokensProvider(languageId, provider) {\r\n return modes.DocumentRangeSemanticTokensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register an inline completions provider.\r\n */\r\nexport function registerInlineCompletionsProvider(languageId, provider) {\r\n return modes.InlineCompletionsProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register an inlay hints provider.\r\n */\r\nexport function registerInlayHintsProvider(languageId, provider) {\r\n return modes.InlayHintsProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function createMonacoLanguagesAPI() {\r\n return {\r\n register: register,\r\n getLanguages: getLanguages,\r\n onLanguage: onLanguage,\r\n getEncodedLanguageId: getEncodedLanguageId,\r\n // provider methods\r\n setLanguageConfiguration: setLanguageConfiguration,\r\n setColorMap: setColorMap,\r\n setTokensProvider: setTokensProvider,\r\n setMonarchTokensProvider: setMonarchTokensProvider,\r\n registerReferenceProvider: registerReferenceProvider,\r\n registerRenameProvider: registerRenameProvider,\r\n registerCompletionItemProvider: registerCompletionItemProvider,\r\n registerSignatureHelpProvider: registerSignatureHelpProvider,\r\n registerHoverProvider: registerHoverProvider,\r\n registerDocumentSymbolProvider: registerDocumentSymbolProvider,\r\n registerDocumentHighlightProvider: registerDocumentHighlightProvider,\r\n registerLinkedEditingRangeProvider: registerLinkedEditingRangeProvider,\r\n registerDefinitionProvider: registerDefinitionProvider,\r\n registerImplementationProvider: registerImplementationProvider,\r\n registerTypeDefinitionProvider: registerTypeDefinitionProvider,\r\n registerCodeLensProvider: registerCodeLensProvider,\r\n registerCodeActionProvider: registerCodeActionProvider,\r\n registerDocumentFormattingEditProvider: registerDocumentFormattingEditProvider,\r\n registerDocumentRangeFormattingEditProvider: registerDocumentRangeFormattingEditProvider,\r\n registerOnTypeFormattingEditProvider: registerOnTypeFormattingEditProvider,\r\n registerLinkProvider: registerLinkProvider,\r\n registerColorProvider: registerColorProvider,\r\n registerFoldingRangeProvider: registerFoldingRangeProvider,\r\n registerDeclarationProvider: registerDeclarationProvider,\r\n registerSelectionRangeProvider: registerSelectionRangeProvider,\r\n registerDocumentSemanticTokensProvider: registerDocumentSemanticTokensProvider,\r\n registerDocumentRangeSemanticTokensProvider: registerDocumentRangeSemanticTokensProvider,\r\n registerInlineCompletionsProvider: registerInlineCompletionsProvider,\r\n registerInlayHintsProvider: registerInlayHintsProvider,\r\n // enums\r\n DocumentHighlightKind: standaloneEnums.DocumentHighlightKind,\r\n CompletionItemKind: standaloneEnums.CompletionItemKind,\r\n CompletionItemTag: standaloneEnums.CompletionItemTag,\r\n CompletionItemInsertTextRule: standaloneEnums.CompletionItemInsertTextRule,\r\n SymbolKind: standaloneEnums.SymbolKind,\r\n SymbolTag: standaloneEnums.SymbolTag,\r\n IndentAction: standaloneEnums.IndentAction,\r\n CompletionTriggerKind: standaloneEnums.CompletionTriggerKind,\r\n SignatureHelpTriggerKind: standaloneEnums.SignatureHelpTriggerKind,\r\n InlayHintKind: standaloneEnums.InlayHintKind,\r\n InlineCompletionTriggerKind: standaloneEnums.InlineCompletionTriggerKind,\r\n // classes\r\n FoldingRangeKind: modes.FoldingRangeKind,\r\n };\r\n}\r\n","/**\r\n * **!Do not construct directly!**\r\n *\r\n * **!Only static methods because it gets serialized!**\r\n *\r\n * This represents the \"canonical\" version for an extension identifier. Extension ids\r\n * have to be case-insensitive (due to the marketplace), but we must ensure case\r\n * preservation because the extension API is already public at this time.\r\n *\r\n * For example, given an extension with the publisher `\"Hello\"` and the name `\"World\"`,\r\n * its canonical extension identifier is `\"Hello.World\"`. This extension could be\r\n * referenced in some other extension's dependencies using the string `\"hello.world\"`.\r\n *\r\n * To make matters more complicated, an extension can optionally have an UUID. When two\r\n * extensions have the same UUID, they are considered equal even if their identifier is different.\r\n */\r\nexport class ExtensionIdentifier {\r\n constructor(value) {\r\n this.value = value;\r\n this._lower = value.toLowerCase();\r\n }\r\n /**\r\n * Gives the value by which to index (for equality).\r\n */\r\n static toKey(id) {\r\n if (typeof id === 'string') {\r\n return id.toLowerCase();\r\n }\r\n return id._lower;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { asArray, isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { DocumentFormattingEditProviderRegistry, DocumentRangeFormattingEditProviderRegistry, OnTypeFormattingEditProviderRegistry } from '../../common/modes.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { FormattingEdit } from './formattingEdit.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ExtensionIdentifier } from '../../../platform/extensions/common/extensions.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nexport function alertFormattingEdits(edits) {\r\n edits = edits.filter(edit => edit.range);\r\n if (!edits.length) {\r\n return;\r\n }\r\n let { range } = edits[0];\r\n for (let i = 1; i < edits.length; i++) {\r\n range = Range.plusRange(range, edits[i].range);\r\n }\r\n const { startLineNumber, endLineNumber } = range;\r\n if (startLineNumber === endLineNumber) {\r\n if (edits.length === 1) {\r\n alert(nls.localize('hint11', \"Made 1 formatting edit on line {0}\", startLineNumber));\r\n }\r\n else {\r\n alert(nls.localize('hintn1', \"Made {0} formatting edits on line {1}\", edits.length, startLineNumber));\r\n }\r\n }\r\n else {\r\n if (edits.length === 1) {\r\n alert(nls.localize('hint1n', \"Made 1 formatting edit between lines {0} and {1}\", startLineNumber, endLineNumber));\r\n }\r\n else {\r\n alert(nls.localize('hintnn', \"Made {0} formatting edits between lines {1} and {2}\", edits.length, startLineNumber, endLineNumber));\r\n }\r\n }\r\n}\r\nexport function getRealAndSyntheticDocumentFormattersOrdered(model) {\r\n const result = [];\r\n const seen = new Set();\r\n // (1) add all document formatter\r\n const docFormatter = DocumentFormattingEditProviderRegistry.ordered(model);\r\n for (const formatter of docFormatter) {\r\n result.push(formatter);\r\n if (formatter.extensionId) {\r\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\r\n }\r\n }\r\n // (2) add all range formatter as document formatter (unless the same extension already did that)\r\n const rangeFormatter = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n for (const formatter of rangeFormatter) {\r\n if (formatter.extensionId) {\r\n if (seen.has(ExtensionIdentifier.toKey(formatter.extensionId))) {\r\n continue;\r\n }\r\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\r\n }\r\n result.push({\r\n displayName: formatter.displayName,\r\n extensionId: formatter.extensionId,\r\n provideDocumentFormattingEdits(model, options, token) {\r\n return formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\r\n }\r\n });\r\n }\r\n return result;\r\n}\r\nexport class FormattingConflicts {\r\n static setFormatterSelector(selector) {\r\n const remove = FormattingConflicts._selectors.unshift(selector);\r\n return { dispose: remove };\r\n }\r\n static select(formatter, document, mode) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (formatter.length === 0) {\r\n return undefined;\r\n }\r\n const selector = Iterable.first(FormattingConflicts._selectors);\r\n if (selector) {\r\n return yield selector(formatter, document, mode);\r\n }\r\n return undefined;\r\n });\r\n }\r\n}\r\nFormattingConflicts._selectors = new LinkedList();\r\nexport function formatDocumentRangesWithSelectedProvider(accessor, editorOrModel, rangeOrRanges, mode, progress, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const instaService = accessor.get(IInstantiationService);\r\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\r\n const provider = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n const selected = yield FormattingConflicts.select(provider, model, mode);\r\n if (selected) {\r\n progress.report(selected);\r\n yield instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token);\r\n }\r\n });\r\n}\r\nexport function formatDocumentRangesWithProvider(accessor, provider, editorOrModel, rangeOrRanges, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const workerService = accessor.get(IEditorWorkerService);\r\n let model;\r\n let cts;\r\n if (isCodeEditor(editorOrModel)) {\r\n model = editorOrModel.getModel();\r\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* Value */ | 4 /* Position */, undefined, token);\r\n }\r\n else {\r\n model = editorOrModel;\r\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\r\n }\r\n // make sure that ranges don't overlap nor touch each other\r\n let ranges = [];\r\n let len = 0;\r\n for (let range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\r\n if (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\r\n ranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\r\n }\r\n else {\r\n len = ranges.push(range);\r\n }\r\n }\r\n const computeEdits = (range) => __awaiter(this, void 0, void 0, function* () {\r\n return (yield provider.provideDocumentRangeFormattingEdits(model, range, model.getFormattingOptions(), cts.token)) || [];\r\n });\r\n const hasIntersectingEdit = (a, b) => {\r\n if (!a.length || !b.length) {\r\n return false;\r\n }\r\n // quick exit if the list of ranges are completely unrelated [O(n)]\r\n const mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\r\n if (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\r\n return false;\r\n }\r\n // fallback to a complete check [O(n^2)]\r\n for (let edit of a) {\r\n for (let otherEdit of b) {\r\n if (Range.intersectRanges(edit.range, otherEdit.range)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n const allEdits = [];\r\n const rawEditsList = [];\r\n try {\r\n for (let range of ranges) {\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n rawEditsList.push(yield computeEdits(range));\r\n }\r\n for (let i = 0; i < ranges.length; ++i) {\r\n for (let j = i + 1; j < ranges.length; ++j) {\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n if (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\r\n // Merge ranges i and j into a single range, recompute the associated edits\r\n const mergedRange = Range.plusRange(ranges[i], ranges[j]);\r\n const edits = yield computeEdits(mergedRange);\r\n ranges.splice(j, 1);\r\n ranges.splice(i, 1);\r\n ranges.push(mergedRange);\r\n rawEditsList.splice(j, 1);\r\n rawEditsList.splice(i, 1);\r\n rawEditsList.push(edits);\r\n // Restart scanning\r\n i = 0;\r\n j = 0;\r\n }\r\n }\r\n }\r\n for (let rawEdits of rawEditsList) {\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n const minimalEdits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n if (minimalEdits) {\r\n allEdits.push(...minimalEdits);\r\n }\r\n }\r\n }\r\n finally {\r\n cts.dispose();\r\n }\r\n if (allEdits.length === 0) {\r\n return false;\r\n }\r\n if (isCodeEditor(editorOrModel)) {\r\n // use editor to apply edits\r\n FormattingEdit.execute(editorOrModel, allEdits, true);\r\n alertFormattingEdits(allEdits);\r\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* Immediate */);\r\n }\r\n else {\r\n // use model to apply edits\r\n const [{ range }] = allEdits;\r\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n model.pushEditOperations([initialSelection], allEdits.map(edit => {\r\n return {\r\n text: edit.text,\r\n range: Range.lift(edit.range),\r\n forceMoveMarkers: true\r\n };\r\n }), undoEdits => {\r\n for (const { range } of undoEdits) {\r\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\r\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n return true;\r\n });\r\n}\r\nexport function formatDocumentWithSelectedProvider(accessor, editorOrModel, mode, progress, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const instaService = accessor.get(IInstantiationService);\r\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\r\n const provider = getRealAndSyntheticDocumentFormattersOrdered(model);\r\n const selected = yield FormattingConflicts.select(provider, model, mode);\r\n if (selected) {\r\n progress.report(selected);\r\n yield instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token);\r\n }\r\n });\r\n}\r\nexport function formatDocumentWithProvider(accessor, provider, editorOrModel, mode, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const workerService = accessor.get(IEditorWorkerService);\r\n let model;\r\n let cts;\r\n if (isCodeEditor(editorOrModel)) {\r\n model = editorOrModel.getModel();\r\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* Value */ | 4 /* Position */, undefined, token);\r\n }\r\n else {\r\n model = editorOrModel;\r\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\r\n }\r\n let edits;\r\n try {\r\n const rawEdits = yield provider.provideDocumentFormattingEdits(model, model.getFormattingOptions(), cts.token);\r\n edits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n }\r\n finally {\r\n cts.dispose();\r\n }\r\n if (!edits || edits.length === 0) {\r\n return false;\r\n }\r\n if (isCodeEditor(editorOrModel)) {\r\n // use editor to apply edits\r\n FormattingEdit.execute(editorOrModel, edits, mode !== 2 /* Silent */);\r\n if (mode !== 2 /* Silent */) {\r\n alertFormattingEdits(edits);\r\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* Immediate */);\r\n }\r\n }\r\n else {\r\n // use model to apply edits\r\n const [{ range }] = edits;\r\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n model.pushEditOperations([initialSelection], edits.map(edit => {\r\n return {\r\n text: edit.text,\r\n range: Range.lift(edit.range),\r\n forceMoveMarkers: true\r\n };\r\n }), undoEdits => {\r\n for (const { range } of undoEdits) {\r\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\r\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n return true;\r\n });\r\n}\r\nexport function getDocumentRangeFormattingEditsUntilResult(workerService, model, range, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const providers = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n for (const provider of providers) {\r\n let rawEdits = yield Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\r\n if (isNonEmptyArray(rawEdits)) {\r\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n }\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function getDocumentFormattingEditsUntilResult(workerService, model, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const providers = getRealAndSyntheticDocumentFormattersOrdered(model);\r\n for (const provider of providers) {\r\n let rawEdits = yield Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\r\n if (isNonEmptyArray(rawEdits)) {\r\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n }\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function getOnTypeFormattingEdits(workerService, model, position, ch, options) {\r\n const providers = OnTypeFormattingEditProviderRegistry.ordered(model);\r\n if (providers.length === 0) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\r\n return Promise.resolve(undefined);\r\n }\r\n return Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, CancellationToken.None)).catch(onUnexpectedExternalError).then(edits => {\r\n return workerService.computeMoreMinimalEdits(model.uri, edits);\r\n });\r\n}\r\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', function (accessor, ...args) {\r\n const [resource, range, options] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Range.isIRange(range));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getDocumentRangeFormattingEditsUntilResult(accessor.get(IEditorWorkerService), model, Range.lift(range), options, CancellationToken.None);\r\n});\r\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', function (accessor, ...args) {\r\n const [resource, options] = args;\r\n assertType(URI.isUri(resource));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getDocumentFormattingEditsUntilResult(accessor.get(IEditorWorkerService), model, options, CancellationToken.None);\r\n});\r\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', function (accessor, ...args) {\r\n const [resource, position, ch, options] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Position.isIPosition(position));\r\n assertType(typeof ch === 'string');\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getOnTypeFormattingEdits(accessor.get(IEditorWorkerService), model, Position.lift(position), ch, options);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar _a;\r\nimport { EditorOptions } from './common/config/editorOptions.js';\r\nimport { createMonacoBaseAPI } from './common/standalone/standaloneBase.js';\r\nimport { createMonacoEditorAPI } from './standalone/browser/standaloneEditor.js';\r\nimport { createMonacoLanguagesAPI } from './standalone/browser/standaloneLanguages.js';\r\nimport { globals } from '../base/common/platform.js';\r\nimport { FormattingConflicts } from './contrib/format/format.js';\r\n// Set defaults for standalone editor\r\nEditorOptions.wrappingIndent.defaultValue = 0 /* None */;\r\nEditorOptions.glyphMargin.defaultValue = false;\r\nEditorOptions.autoIndent.defaultValue = 3 /* Advanced */;\r\nEditorOptions.overviewRulerLanes.defaultValue = 2;\r\n// We need to register a formatter selector which simply picks the first available formatter.\r\n// See https://github.com/microsoft/monaco-editor/issues/2327\r\nFormattingConflicts.setFormatterSelector((formatter, document, mode) => Promise.resolve(formatter[0]));\r\nconst api = createMonacoBaseAPI();\r\napi.editor = createMonacoEditorAPI();\r\napi.languages = createMonacoLanguagesAPI();\r\nexport const CancellationTokenSource = api.CancellationTokenSource;\r\nexport const Emitter = api.Emitter;\r\nexport const KeyCode = api.KeyCode;\r\nexport const KeyMod = api.KeyMod;\r\nexport const Position = api.Position;\r\nexport const Range = api.Range;\r\nexport const Selection = api.Selection;\r\nexport const SelectionDirection = api.SelectionDirection;\r\nexport const MarkerSeverity = api.MarkerSeverity;\r\nexport const MarkerTag = api.MarkerTag;\r\nexport const Uri = api.Uri;\r\nexport const Token = api.Token;\r\nexport const editor = api.editor;\r\nexport const languages = api.languages;\r\nif (((_a = globals.MonacoEnvironment) === null || _a === void 0 ? void 0 : _a.globalAPI) || (typeof define === 'function' && define.amd)) {\r\n self.monaco = api;\r\n}\r\nif (typeof self.require !== 'undefined' && typeof self.require.config === 'function') {\r\n self.require.config({\r\n ignoreDuplicateModules: [\r\n 'vscode-languageserver-types',\r\n 'vscode-languageserver-types/main',\r\n 'vscode-languageserver-textdocument',\r\n 'vscode-languageserver-textdocument/main',\r\n 'vscode-nls',\r\n 'vscode-nls/vscode-nls',\r\n 'jsonc-parser',\r\n 'jsonc-parser/main',\r\n 'vscode-uri',\r\n 'vscode-uri/index',\r\n 'vs/basic-languages/typescript/typescript'\r\n ]\r\n });\r\n}\r\n","\n import API from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../../css-loader/dist/cjs.js!./inspectTokens.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../../css-loader/dist/cjs.js!./inspectTokens.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './inspectTokens.css';\r\nimport { $, append, reset } from '../../../../base/browser/dom.js';\r\nimport { Color } from '../../../../base/common/color.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { TokenMetadata, TokenizationRegistry } from '../../../common/modes.js';\r\nimport { NULL_STATE, nullTokenize, nullTokenize2 } from '../../../common/modes/nullMode.js';\r\nimport { IModeService } from '../../../common/services/modeService.js';\r\nimport { IStandaloneThemeService } from '../../common/standaloneThemeService.js';\r\nimport { editorHoverBackground, editorHoverBorder, editorHoverForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { InspectTokensNLS } from '../../../common/standaloneStrings.js';\r\nimport { ColorScheme } from '../../../../platform/theme/common/theme.js';\r\nlet InspectTokensController = class InspectTokensController extends Disposable {\r\n constructor(editor, standaloneColorService, modeService) {\r\n super();\r\n this._editor = editor;\r\n this._modeService = modeService;\r\n this._widget = null;\r\n this._register(this._editor.onDidChangeModel((e) => this.stop()));\r\n this._register(this._editor.onDidChangeModelLanguage((e) => this.stop()));\r\n this._register(TokenizationRegistry.onDidChange((e) => this.stop()));\r\n this._register(this._editor.onKeyUp((e) => e.keyCode === 9 /* Escape */ && this.stop()));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(InspectTokensController.ID);\r\n }\r\n dispose() {\r\n this.stop();\r\n super.dispose();\r\n }\r\n launch() {\r\n if (this._widget) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._widget = new InspectTokensWidget(this._editor, this._modeService);\r\n }\r\n stop() {\r\n if (this._widget) {\r\n this._widget.dispose();\r\n this._widget = null;\r\n }\r\n }\r\n};\r\nInspectTokensController.ID = 'editor.contrib.inspectTokens';\r\nInspectTokensController = __decorate([\r\n __param(1, IStandaloneThemeService),\r\n __param(2, IModeService)\r\n], InspectTokensController);\r\nclass InspectTokens extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.inspectTokens',\r\n label: InspectTokensNLS.inspectTokensAction,\r\n alias: 'Developer: Inspect Tokens',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = InspectTokensController.get(editor);\r\n if (controller) {\r\n controller.launch();\r\n }\r\n }\r\n}\r\nfunction renderTokenText(tokenText) {\r\n let result = '';\r\n for (let charIndex = 0, len = tokenText.length; charIndex < len; charIndex++) {\r\n let charCode = tokenText.charCodeAt(charIndex);\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n result += '\\u2192'; // →\r\n break;\r\n case 32 /* Space */:\r\n result += '\\u00B7'; // ·\r\n break;\r\n default:\r\n result += String.fromCharCode(charCode);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction getSafeTokenizationSupport(languageIdentifier) {\r\n let tokenizationSupport = TokenizationRegistry.get(languageIdentifier.language);\r\n if (tokenizationSupport) {\r\n return tokenizationSupport;\r\n }\r\n return {\r\n getInitialState: () => NULL_STATE,\r\n tokenize: (line, hasEOL, state, deltaOffset) => nullTokenize(languageIdentifier.language, line, state, deltaOffset),\r\n tokenize2: (line, hasEOL, state, deltaOffset) => nullTokenize2(languageIdentifier.id, line, state, deltaOffset)\r\n };\r\n}\r\nclass InspectTokensWidget extends Disposable {\r\n constructor(editor, modeService) {\r\n super();\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this._editor = editor;\r\n this._modeService = modeService;\r\n this._model = this._editor.getModel();\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'tokens-inspect-widget';\r\n this._tokenizationSupport = getSafeTokenizationSupport(this._model.getLanguageIdentifier());\r\n this._compute(this._editor.getPosition());\r\n this._register(this._editor.onDidChangeCursorPosition((e) => this._compute(this._editor.getPosition())));\r\n this._editor.addContentWidget(this);\r\n }\r\n dispose() {\r\n this._editor.removeContentWidget(this);\r\n super.dispose();\r\n }\r\n getId() {\r\n return InspectTokensWidget._ID;\r\n }\r\n _compute(position) {\r\n let data = this._getTokensAtLine(position.lineNumber);\r\n let token1Index = 0;\r\n for (let i = data.tokens1.length - 1; i >= 0; i--) {\r\n let t = data.tokens1[i];\r\n if (position.column - 1 >= t.offset) {\r\n token1Index = i;\r\n break;\r\n }\r\n }\r\n let token2Index = 0;\r\n for (let i = (data.tokens2.length >>> 1); i >= 0; i--) {\r\n if (position.column - 1 >= data.tokens2[(i << 1)]) {\r\n token2Index = i;\r\n break;\r\n }\r\n }\r\n let lineContent = this._model.getLineContent(position.lineNumber);\r\n let tokenText = '';\r\n if (token1Index < data.tokens1.length) {\r\n let tokenStartIndex = data.tokens1[token1Index].offset;\r\n let tokenEndIndex = token1Index + 1 < data.tokens1.length ? data.tokens1[token1Index + 1].offset : lineContent.length;\r\n tokenText = lineContent.substring(tokenStartIndex, tokenEndIndex);\r\n }\r\n reset(this._domNode, $('h2.tm-token', undefined, renderTokenText(tokenText), $('span.tm-token-length', undefined, `${tokenText.length} ${tokenText.length === 1 ? 'char' : 'chars'}`)));\r\n append(this._domNode, $('hr.tokens-inspect-separator', { 'style': 'clear:both' }));\r\n const metadata = (token2Index << 1) + 1 < data.tokens2.length ? this._decodeMetadata(data.tokens2[(token2Index << 1) + 1]) : null;\r\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.languageIdentifier.language : '-?-'}`)), $('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) : '-?-'}`)))));\r\n append(this._domNode, $('hr.tokens-inspect-separator'));\r\n if (token1Index < data.tokens1.length) {\r\n append(this._domNode, $('span.tm-token-type', undefined, data.tokens1[token1Index].type));\r\n }\r\n this._editor.layoutContentWidget(this);\r\n }\r\n _decodeMetadata(metadata) {\r\n let colorMap = TokenizationRegistry.getColorMap();\r\n let languageId = TokenMetadata.getLanguageId(metadata);\r\n let tokenType = TokenMetadata.getTokenType(metadata);\r\n let fontStyle = TokenMetadata.getFontStyle(metadata);\r\n let foreground = TokenMetadata.getForeground(metadata);\r\n let background = TokenMetadata.getBackground(metadata);\r\n return {\r\n languageIdentifier: this._modeService.getLanguageIdentifier(languageId),\r\n tokenType: tokenType,\r\n fontStyle: fontStyle,\r\n foreground: colorMap[foreground],\r\n background: colorMap[background]\r\n };\r\n }\r\n _tokenTypeToString(tokenType) {\r\n switch (tokenType) {\r\n case 0 /* Other */: return 'Other';\r\n case 1 /* Comment */: return 'Comment';\r\n case 2 /* String */: return 'String';\r\n case 4 /* RegEx */: return 'RegEx';\r\n default: return '??';\r\n }\r\n }\r\n _fontStyleToString(fontStyle) {\r\n let r = '';\r\n if (fontStyle & 1 /* Italic */) {\r\n r += 'italic ';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n r += 'bold ';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n r += 'underline ';\r\n }\r\n if (r.length === 0) {\r\n r = '---';\r\n }\r\n return r;\r\n }\r\n _getTokensAtLine(lineNumber) {\r\n let stateBeforeLine = this._getStateBeforeLine(lineNumber);\r\n let tokenizationResult1 = this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber), true, stateBeforeLine, 0);\r\n let tokenizationResult2 = this._tokenizationSupport.tokenize2(this._model.getLineContent(lineNumber), true, stateBeforeLine, 0);\r\n return {\r\n startState: stateBeforeLine,\r\n tokens1: tokenizationResult1.tokens,\r\n tokens2: tokenizationResult2.tokens,\r\n endState: tokenizationResult1.endState\r\n };\r\n }\r\n _getStateBeforeLine(lineNumber) {\r\n let state = this._tokenizationSupport.getInitialState();\r\n for (let i = 1; i < lineNumber; i++) {\r\n let tokenizationResult = this._tokenizationSupport.tokenize(this._model.getLineContent(i), true, state, 0);\r\n state = tokenizationResult.endState;\r\n }\r\n return state;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return {\r\n position: this._editor.getPosition(),\r\n preference: [2 /* BELOW */, 1 /* ABOVE */]\r\n };\r\n }\r\n}\r\nInspectTokensWidget._ID = 'editor.contrib.inspectTokensWidget';\r\nregisterEditorContribution(InspectTokensController.ID, InspectTokensController);\r\nregisterEditorAction(InspectTokens);\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(editorHoverBorder);\r\n if (border) {\r\n let borderWidth = theme.type === ColorScheme.HIGH_CONTRAST ? 2 : 1;\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { border: ${borderWidth}px solid ${border}; }`);\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget .tokens-inspect-separator { background-color: ${border}; }`);\r\n }\r\n const background = theme.getColor(editorHoverBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(editorHoverForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { color: ${foreground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IStandaloneThemeService = createDecorator('themeService');\r\n","/*---------------------------------------------------------------------------------------------\n * 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'use strict';\nexport var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"Ident\"] = 0] = \"Ident\";\n TokenType[TokenType[\"AtKeyword\"] = 1] = \"AtKeyword\";\n TokenType[TokenType[\"String\"] = 2] = \"String\";\n TokenType[TokenType[\"BadString\"] = 3] = \"BadString\";\n TokenType[TokenType[\"UnquotedString\"] = 4] = \"UnquotedString\";\n TokenType[TokenType[\"Hash\"] = 5] = \"Hash\";\n TokenType[TokenType[\"Num\"] = 6] = \"Num\";\n TokenType[TokenType[\"Percentage\"] = 7] = \"Percentage\";\n TokenType[TokenType[\"Dimension\"] = 8] = \"Dimension\";\n TokenType[TokenType[\"UnicodeRange\"] = 9] = \"UnicodeRange\";\n TokenType[TokenType[\"CDO\"] = 10] = \"CDO\";\n TokenType[TokenType[\"CDC\"] = 11] = \"CDC\";\n TokenType[TokenType[\"Colon\"] = 12] = \"Colon\";\n TokenType[TokenType[\"SemiColon\"] = 13] = \"SemiColon\";\n TokenType[TokenType[\"CurlyL\"] = 14] = \"CurlyL\";\n TokenType[TokenType[\"CurlyR\"] = 15] = \"CurlyR\";\n TokenType[TokenType[\"ParenthesisL\"] = 16] = \"ParenthesisL\";\n TokenType[TokenType[\"ParenthesisR\"] = 17] = \"ParenthesisR\";\n TokenType[TokenType[\"BracketL\"] = 18] = \"BracketL\";\n TokenType[TokenType[\"BracketR\"] = 19] = \"BracketR\";\n TokenType[TokenType[\"Whitespace\"] = 20] = \"Whitespace\";\n TokenType[TokenType[\"Includes\"] = 21] = \"Includes\";\n TokenType[TokenType[\"Dashmatch\"] = 22] = \"Dashmatch\";\n TokenType[TokenType[\"SubstringOperator\"] = 23] = \"SubstringOperator\";\n TokenType[TokenType[\"PrefixOperator\"] = 24] = \"PrefixOperator\";\n TokenType[TokenType[\"SuffixOperator\"] = 25] = \"SuffixOperator\";\n TokenType[TokenType[\"Delim\"] = 26] = \"Delim\";\n TokenType[TokenType[\"EMS\"] = 27] = \"EMS\";\n TokenType[TokenType[\"EXS\"] = 28] = \"EXS\";\n TokenType[TokenType[\"Length\"] = 29] = \"Length\";\n TokenType[TokenType[\"Angle\"] = 30] = \"Angle\";\n TokenType[TokenType[\"Time\"] = 31] = \"Time\";\n TokenType[TokenType[\"Freq\"] = 32] = \"Freq\";\n TokenType[TokenType[\"Exclamation\"] = 33] = \"Exclamation\";\n TokenType[TokenType[\"Resolution\"] = 34] = \"Resolution\";\n TokenType[TokenType[\"Comma\"] = 35] = \"Comma\";\n TokenType[TokenType[\"Charset\"] = 36] = \"Charset\";\n TokenType[TokenType[\"EscapedJavaScript\"] = 37] = \"EscapedJavaScript\";\n TokenType[TokenType[\"BadEscapedJavaScript\"] = 38] = \"BadEscapedJavaScript\";\n TokenType[TokenType[\"Comment\"] = 39] = \"Comment\";\n TokenType[TokenType[\"SingleLineComment\"] = 40] = \"SingleLineComment\";\n TokenType[TokenType[\"EOF\"] = 41] = \"EOF\";\n TokenType[TokenType[\"CustomToken\"] = 42] = \"CustomToken\";\n})(TokenType || (TokenType = {}));\nvar MultiLineStream = /** @class */ (function () {\n function MultiLineStream(source) {\n this.source = source;\n this.len = source.length;\n this.position = 0;\n }\n MultiLineStream.prototype.substring = function (from, to) {\n if (to === void 0) { to = this.position; }\n return this.source.substring(from, to);\n };\n MultiLineStream.prototype.eos = function () {\n return this.len <= this.position;\n };\n MultiLineStream.prototype.pos = function () {\n return this.position;\n };\n MultiLineStream.prototype.goBackTo = function (pos) {\n this.position = pos;\n };\n MultiLineStream.prototype.goBack = function (n) {\n this.position -= n;\n };\n MultiLineStream.prototype.advance = function (n) {\n this.position += n;\n };\n MultiLineStream.prototype.nextChar = function () {\n return this.source.charCodeAt(this.position++) || 0;\n };\n MultiLineStream.prototype.peekChar = function (n) {\n if (n === void 0) { n = 0; }\n return this.source.charCodeAt(this.position + n) || 0;\n };\n MultiLineStream.prototype.lookbackChar = function (n) {\n if (n === void 0) { n = 0; }\n return this.source.charCodeAt(this.position - n) || 0;\n };\n MultiLineStream.prototype.advanceIfChar = function (ch) {\n if (ch === this.source.charCodeAt(this.position)) {\n this.position++;\n return true;\n }\n return false;\n };\n MultiLineStream.prototype.advanceIfChars = function (ch) {\n if (this.position + ch.length > this.source.length) {\n return false;\n }\n var i = 0;\n for (; i < ch.length; i++) {\n if (this.source.charCodeAt(this.position + i) !== ch[i]) {\n return false;\n }\n }\n this.advance(i);\n return true;\n };\n MultiLineStream.prototype.advanceWhileChar = function (condition) {\n var posNow = this.position;\n while (this.position < this.len && condition(this.source.charCodeAt(this.position))) {\n this.position++;\n }\n return this.position - posNow;\n };\n return MultiLineStream;\n}());\nexport { MultiLineStream };\nvar _a = 'a'.charCodeAt(0);\nvar _f = 'f'.charCodeAt(0);\nvar _z = 'z'.charCodeAt(0);\nvar _A = 'A'.charCodeAt(0);\nvar _F = 'F'.charCodeAt(0);\nvar _Z = 'Z'.charCodeAt(0);\nvar _0 = '0'.charCodeAt(0);\nvar _9 = '9'.charCodeAt(0);\nvar _TLD = '~'.charCodeAt(0);\nvar _HAT = '^'.charCodeAt(0);\nvar _EQS = '='.charCodeAt(0);\nvar _PIP = '|'.charCodeAt(0);\nvar _MIN = '-'.charCodeAt(0);\nvar _USC = '_'.charCodeAt(0);\nvar _PRC = '%'.charCodeAt(0);\nvar _MUL = '*'.charCodeAt(0);\nvar _LPA = '('.charCodeAt(0);\nvar _RPA = ')'.charCodeAt(0);\nvar _LAN = '<'.charCodeAt(0);\nvar _RAN = '>'.charCodeAt(0);\nvar _ATS = '@'.charCodeAt(0);\nvar _HSH = '#'.charCodeAt(0);\nvar _DLR = '$'.charCodeAt(0);\nvar _BSL = '\\\\'.charCodeAt(0);\nvar _FSL = '/'.charCodeAt(0);\nvar _NWL = '\\n'.charCodeAt(0);\nvar _CAR = '\\r'.charCodeAt(0);\nvar _LFD = '\\f'.charCodeAt(0);\nvar _DQO = '\"'.charCodeAt(0);\nvar _SQO = '\\''.charCodeAt(0);\nvar _WSP = ' '.charCodeAt(0);\nvar _TAB = '\\t'.charCodeAt(0);\nvar _SEM = ';'.charCodeAt(0);\nvar _COL = ':'.charCodeAt(0);\nvar _CUL = '{'.charCodeAt(0);\nvar _CUR = '}'.charCodeAt(0);\nvar _BRL = '['.charCodeAt(0);\nvar _BRR = ']'.charCodeAt(0);\nvar _CMA = ','.charCodeAt(0);\nvar _DOT = '.'.charCodeAt(0);\nvar _BNG = '!'.charCodeAt(0);\nvar staticTokenTable = {};\nstaticTokenTable[_SEM] = TokenType.SemiColon;\nstaticTokenTable[_COL] = TokenType.Colon;\nstaticTokenTable[_CUL] = TokenType.CurlyL;\nstaticTokenTable[_CUR] = TokenType.CurlyR;\nstaticTokenTable[_BRR] = TokenType.BracketR;\nstaticTokenTable[_BRL] = TokenType.BracketL;\nstaticTokenTable[_LPA] = TokenType.ParenthesisL;\nstaticTokenTable[_RPA] = TokenType.ParenthesisR;\nstaticTokenTable[_CMA] = TokenType.Comma;\nvar staticUnitTable = {};\nstaticUnitTable['em'] = TokenType.EMS;\nstaticUnitTable['ex'] = TokenType.EXS;\nstaticUnitTable['px'] = TokenType.Length;\nstaticUnitTable['cm'] = TokenType.Length;\nstaticUnitTable['mm'] = TokenType.Length;\nstaticUnitTable['in'] = TokenType.Length;\nstaticUnitTable['pt'] = TokenType.Length;\nstaticUnitTable['pc'] = TokenType.Length;\nstaticUnitTable['deg'] = TokenType.Angle;\nstaticUnitTable['rad'] = TokenType.Angle;\nstaticUnitTable['grad'] = TokenType.Angle;\nstaticUnitTable['ms'] = TokenType.Time;\nstaticUnitTable['s'] = TokenType.Time;\nstaticUnitTable['hz'] = TokenType.Freq;\nstaticUnitTable['khz'] = TokenType.Freq;\nstaticUnitTable['%'] = TokenType.Percentage;\nstaticUnitTable['fr'] = TokenType.Percentage;\nstaticUnitTable['dpi'] = TokenType.Resolution;\nstaticUnitTable['dpcm'] = TokenType.Resolution;\nvar Scanner = /** @class */ (function () {\n function Scanner() {\n this.stream = new MultiLineStream('');\n this.ignoreComment = true;\n this.ignoreWhitespace = true;\n this.inURL = false;\n }\n Scanner.prototype.setSource = function (input) {\n this.stream = new MultiLineStream(input);\n };\n Scanner.prototype.finishToken = function (offset, type, text) {\n return {\n offset: offset,\n len: this.stream.pos() - offset,\n type: type,\n text: text || this.stream.substring(offset)\n };\n };\n Scanner.prototype.substring = function (offset, len) {\n return this.stream.substring(offset, offset + len);\n };\n Scanner.prototype.pos = function () {\n return this.stream.pos();\n };\n Scanner.prototype.goBackTo = function (pos) {\n this.stream.goBackTo(pos);\n };\n Scanner.prototype.scanUnquotedString = function () {\n var offset = this.stream.pos();\n var content = [];\n if (this._unquotedString(content)) {\n return this.finishToken(offset, TokenType.UnquotedString, content.join(''));\n }\n return null;\n };\n Scanner.prototype.scan = function () {\n // processes all whitespaces and comments\n var triviaToken = this.trivia();\n if (triviaToken !== null) {\n return triviaToken;\n }\n var offset = this.stream.pos();\n // End of file/input\n if (this.stream.eos()) {\n return this.finishToken(offset, TokenType.EOF);\n }\n return this.scanNext(offset);\n };\n Scanner.prototype.scanNext = function (offset) {\n // CDO \n if (this.stream.advanceIfChars([_MIN, _MIN, _RAN])) {\n return this.finishToken(offset, TokenType.CDC);\n }\n var content = [];\n if (this.ident(content)) {\n return this.finishToken(offset, TokenType.Ident, content.join(''));\n }\n // at-keyword\n if (this.stream.advanceIfChar(_ATS)) {\n content = ['@'];\n if (this._name(content)) {\n var keywordText = content.join('');\n if (keywordText === '@charset') {\n return this.finishToken(offset, TokenType.Charset, keywordText);\n }\n return this.finishToken(offset, TokenType.AtKeyword, keywordText);\n }\n else {\n return this.finishToken(offset, TokenType.Delim);\n }\n }\n // hash\n if (this.stream.advanceIfChar(_HSH)) {\n content = ['#'];\n if (this._name(content)) {\n return this.finishToken(offset, TokenType.Hash, content.join(''));\n }\n else {\n return this.finishToken(offset, TokenType.Delim);\n }\n }\n // Important\n if (this.stream.advanceIfChar(_BNG)) {\n return this.finishToken(offset, TokenType.Exclamation);\n }\n // Numbers\n if (this._number()) {\n var pos = this.stream.pos();\n content = [this.stream.substring(offset, pos)];\n if (this.stream.advanceIfChar(_PRC)) {\n // Percentage 43%\n return this.finishToken(offset, TokenType.Percentage);\n }\n else if (this.ident(content)) {\n var dim = this.stream.substring(pos).toLowerCase();\n var tokenType_1 = staticUnitTable[dim];\n if (typeof tokenType_1 !== 'undefined') {\n // Known dimension 43px\n return this.finishToken(offset, tokenType_1, content.join(''));\n }\n else {\n // Unknown dimension 43ft\n return this.finishToken(offset, TokenType.Dimension, content.join(''));\n }\n }\n return this.finishToken(offset, TokenType.Num);\n }\n // String, BadString\n content = [];\n var tokenType = this._string(content);\n if (tokenType !== null) {\n return this.finishToken(offset, tokenType, content.join(''));\n }\n // single character tokens\n tokenType = staticTokenTable[this.stream.peekChar()];\n if (typeof tokenType !== 'undefined') {\n this.stream.advance(1);\n return this.finishToken(offset, tokenType);\n }\n // includes ~=\n if (this.stream.peekChar(0) === _TLD && this.stream.peekChar(1) === _EQS) {\n this.stream.advance(2);\n return this.finishToken(offset, TokenType.Includes);\n }\n // DashMatch |=\n if (this.stream.peekChar(0) === _PIP && this.stream.peekChar(1) === _EQS) {\n this.stream.advance(2);\n return this.finishToken(offset, TokenType.Dashmatch);\n }\n // Substring operator *=\n if (this.stream.peekChar(0) === _MUL && this.stream.peekChar(1) === _EQS) {\n this.stream.advance(2);\n return this.finishToken(offset, TokenType.SubstringOperator);\n }\n // Substring operator ^=\n if (this.stream.peekChar(0) === _HAT && this.stream.peekChar(1) === _EQS) {\n this.stream.advance(2);\n return this.finishToken(offset, TokenType.PrefixOperator);\n }\n // Substring operator $=\n if (this.stream.peekChar(0) === _DLR && this.stream.peekChar(1) === _EQS) {\n this.stream.advance(2);\n return this.finishToken(offset, TokenType.SuffixOperator);\n }\n // Delim\n this.stream.nextChar();\n return this.finishToken(offset, TokenType.Delim);\n };\n Scanner.prototype.trivia = function () {\n while (true) {\n var offset = this.stream.pos();\n if (this._whitespace()) {\n if (!this.ignoreWhitespace) {\n return this.finishToken(offset, TokenType.Whitespace);\n }\n }\n else if (this.comment()) {\n if (!this.ignoreComment) {\n return this.finishToken(offset, TokenType.Comment);\n }\n }\n else {\n return null;\n }\n }\n };\n Scanner.prototype.comment = function () {\n if (this.stream.advanceIfChars([_FSL, _MUL])) {\n var success_1 = false, hot_1 = false;\n this.stream.advanceWhileChar(function (ch) {\n if (hot_1 && ch === _FSL) {\n success_1 = true;\n return false;\n }\n hot_1 = ch === _MUL;\n return true;\n });\n if (success_1) {\n this.stream.advance(1);\n }\n return true;\n }\n return false;\n };\n Scanner.prototype._number = function () {\n var npeek = 0, ch;\n if (this.stream.peekChar() === _DOT) {\n npeek = 1;\n }\n ch = this.stream.peekChar(npeek);\n if (ch >= _0 && ch <= _9) {\n this.stream.advance(npeek + 1);\n this.stream.advanceWhileChar(function (ch) {\n return ch >= _0 && ch <= _9 || npeek === 0 && ch === _DOT;\n });\n return true;\n }\n return false;\n };\n Scanner.prototype._newline = function (result) {\n var ch = this.stream.peekChar();\n switch (ch) {\n case _CAR:\n case _LFD:\n case _NWL:\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n if (ch === _CAR && this.stream.advanceIfChar(_NWL)) {\n result.push('\\n');\n }\n return true;\n }\n return false;\n };\n Scanner.prototype._escape = function (result, includeNewLines) {\n var ch = this.stream.peekChar();\n if (ch === _BSL) {\n this.stream.advance(1);\n ch = this.stream.peekChar();\n var hexNumCount = 0;\n while (hexNumCount < 6 && (ch >= _0 && ch <= _9 || ch >= _a && ch <= _f || ch >= _A && ch <= _F)) {\n this.stream.advance(1);\n ch = this.stream.peekChar();\n hexNumCount++;\n }\n if (hexNumCount > 0) {\n try {\n var hexVal = parseInt(this.stream.substring(this.stream.pos() - hexNumCount), 16);\n if (hexVal) {\n result.push(String.fromCharCode(hexVal));\n }\n }\n catch (e) {\n // ignore\n }\n // optional whitespace or new line, not part of result text\n if (ch === _WSP || ch === _TAB) {\n this.stream.advance(1);\n }\n else {\n this._newline([]);\n }\n return true;\n }\n if (ch !== _CAR && ch !== _LFD && ch !== _NWL) {\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n else if (includeNewLines) {\n return this._newline(result);\n }\n }\n return false;\n };\n Scanner.prototype._stringChar = function (closeQuote, result) {\n // not closeQuote, not backslash, not newline\n var ch = this.stream.peekChar();\n if (ch !== 0 && ch !== closeQuote && ch !== _BSL && ch !== _CAR && ch !== _LFD && ch !== _NWL) {\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n return false;\n };\n Scanner.prototype._string = function (result) {\n if (this.stream.peekChar() === _SQO || this.stream.peekChar() === _DQO) {\n var closeQuote = this.stream.nextChar();\n result.push(String.fromCharCode(closeQuote));\n while (this._stringChar(closeQuote, result) || this._escape(result, true)) {\n // loop\n }\n if (this.stream.peekChar() === closeQuote) {\n this.stream.nextChar();\n result.push(String.fromCharCode(closeQuote));\n return TokenType.String;\n }\n else {\n return TokenType.BadString;\n }\n }\n return null;\n };\n Scanner.prototype._unquotedChar = function (result) {\n // not closeQuote, not backslash, not newline\n var ch = this.stream.peekChar();\n if (ch !== 0 && ch !== _BSL && ch !== _SQO && ch !== _DQO && ch !== _LPA && ch !== _RPA && ch !== _WSP && ch !== _TAB && ch !== _NWL && ch !== _LFD && ch !== _CAR) {\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n return false;\n };\n Scanner.prototype._unquotedString = function (result) {\n var hasContent = false;\n while (this._unquotedChar(result) || this._escape(result)) {\n hasContent = true;\n }\n return hasContent;\n };\n Scanner.prototype._whitespace = function () {\n var n = this.stream.advanceWhileChar(function (ch) {\n return ch === _WSP || ch === _TAB || ch === _NWL || ch === _LFD || ch === _CAR;\n });\n return n > 0;\n };\n Scanner.prototype._name = function (result) {\n var matched = false;\n while (this._identChar(result) || this._escape(result)) {\n matched = true;\n }\n return matched;\n };\n Scanner.prototype.ident = function (result) {\n var pos = this.stream.pos();\n var hasMinus = this._minus(result);\n if (hasMinus && this._minus(result) /* -- */) {\n if (this._identFirstChar(result) || this._escape(result)) {\n while (this._identChar(result) || this._escape(result)) {\n // loop\n }\n return true;\n }\n }\n else if (this._identFirstChar(result) || this._escape(result)) {\n while (this._identChar(result) || this._escape(result)) {\n // loop\n }\n return true;\n }\n this.stream.goBackTo(pos);\n return false;\n };\n Scanner.prototype._identFirstChar = function (result) {\n var ch = this.stream.peekChar();\n if (ch === _USC || // _\n ch >= _a && ch <= _z || // a-z\n ch >= _A && ch <= _Z || // A-Z\n ch >= 0x80 && ch <= 0xFFFF) { // nonascii\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n return false;\n };\n Scanner.prototype._minus = function (result) {\n var ch = this.stream.peekChar();\n if (ch === _MIN) {\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n return false;\n };\n Scanner.prototype._identChar = function (result) {\n var ch = this.stream.peekChar();\n if (ch === _USC || // _\n ch === _MIN || // -\n ch >= _a && ch <= _z || // a-z\n ch >= _A && ch <= _Z || // A-Z\n ch >= _0 && ch <= _9 || // 0/9\n ch >= 0x80 && ch <= 0xFFFF) { // nonascii\n this.stream.advance(1);\n result.push(String.fromCharCode(ch));\n return true;\n }\n return false;\n };\n return Scanner;\n}());\nexport { Scanner };\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { editor } from './fillers/monaco-editor-core.js';\r\nvar STOP_WHEN_IDLE_FOR = 2 * 60 * 1000; // 2min\r\nvar WorkerManager = /** @class */ (function () {\r\n function WorkerManager(defaults) {\r\n var _this = this;\r\n this._defaults = defaults;\r\n this._worker = null;\r\n this._idleCheckInterval = window.setInterval(function () { return _this._checkIfIdle(); }, 30 * 1000);\r\n this._lastUsedTime = 0;\r\n this._configChangeListener = this._defaults.onDidChange(function () { return _this._stopWorker(); });\r\n }\r\n WorkerManager.prototype._stopWorker = function () {\r\n if (this._worker) {\r\n this._worker.dispose();\r\n this._worker = null;\r\n }\r\n this._client = null;\r\n };\r\n WorkerManager.prototype.dispose = function () {\r\n clearInterval(this._idleCheckInterval);\r\n this._configChangeListener.dispose();\r\n this._stopWorker();\r\n };\r\n WorkerManager.prototype._checkIfIdle = function () {\r\n if (!this._worker) {\r\n return;\r\n }\r\n var timePassedSinceLastUsed = Date.now() - this._lastUsedTime;\r\n if (timePassedSinceLastUsed > STOP_WHEN_IDLE_FOR) {\r\n this._stopWorker();\r\n }\r\n };\r\n WorkerManager.prototype._getClient = function () {\r\n this._lastUsedTime = Date.now();\r\n if (!this._client) {\r\n this._worker = editor.createWebWorker({\r\n // module that exports the create() method and returns a `CSSWorker` instance\r\n moduleId: 'vs/language/css/cssWorker',\r\n label: this._defaults.languageId,\r\n // passed in to the create() method\r\n createData: {\r\n options: this._defaults.options,\r\n languageId: this._defaults.languageId\r\n }\r\n });\r\n this._client = this._worker.getProxy();\r\n }\r\n return this._client;\r\n };\r\n WorkerManager.prototype.getLanguageServiceWorker = function () {\r\n var _this = this;\r\n var resources = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n resources[_i] = arguments[_i];\r\n }\r\n var _client;\r\n return this._getClient()\r\n .then(function (client) {\r\n _client = client;\r\n })\r\n .then(function (_) {\r\n return _this._worker.withSyncedResources(resources);\r\n })\r\n .then(function (_) { return _client; });\r\n };\r\n return WorkerManager;\r\n}());\r\nexport { WorkerManager };\r\n","/*---------------------------------------------------------------------------------------------\n * 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'use strict';\nexport function startsWith(haystack, needle) {\n if (haystack.length < needle.length) {\n return false;\n }\n for (var i = 0; i < needle.length; i++) {\n if (haystack[i] !== needle[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Determines if haystack ends with needle.\n */\nexport function endsWith(haystack, needle) {\n var diff = haystack.length - needle.length;\n if (diff > 0) {\n return haystack.lastIndexOf(needle) === diff;\n }\n else if (diff === 0) {\n return haystack === needle;\n }\n else {\n return false;\n }\n}\n/**\n * Computes the difference score for two strings. More similar strings have a higher score.\n * We use largest common subsequence dynamic programming approach but penalize in the end for length differences.\n * Strings that have a large length difference will get a bad default score 0.\n * Complexity - both time and space O(first.length * second.length)\n * Dynamic programming LCS computation http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n *\n * @param first a string\n * @param second a string\n */\nexport function difference(first, second, maxLenDelta) {\n if (maxLenDelta === void 0) { maxLenDelta = 4; }\n var lengthDifference = Math.abs(first.length - second.length);\n // We only compute score if length of the currentWord and length of entry.name are similar.\n if (lengthDifference > maxLenDelta) {\n return 0;\n }\n // Initialize LCS (largest common subsequence) matrix.\n var LCS = [];\n var zeroArray = [];\n var i, j;\n for (i = 0; i < second.length + 1; ++i) {\n zeroArray.push(0);\n }\n for (i = 0; i < first.length + 1; ++i) {\n LCS.push(zeroArray);\n }\n for (i = 1; i < first.length + 1; ++i) {\n for (j = 1; j < second.length + 1; ++j) {\n if (first[i - 1] === second[j - 1]) {\n LCS[i][j] = LCS[i - 1][j - 1] + 1;\n }\n else {\n LCS[i][j] = Math.max(LCS[i - 1][j], LCS[i][j - 1]);\n }\n }\n }\n return LCS[first.length][second.length] - Math.sqrt(lengthDifference);\n}\n/**\n * Limit of string length.\n */\nexport function getLimitedString(str, ellipsis) {\n if (ellipsis === void 0) { ellipsis = true; }\n if (!str) {\n return '';\n }\n if (str.length < 140) {\n return str;\n }\n return str.slice(0, 140) + (ellipsis ? '\\u2026' : '');\n}\n/**\n * Limit of string length.\n */\nexport function trim(str, regexp) {\n var m = regexp.exec(str);\n if (m && m[0].length) {\n return str.substr(0, str.length - m[0].length);\n }\n return str;\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'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { trim } from \"../utils/strings.js\";\n/// \n/// Nodes for the css 2.1 specification. See for reference:\n/// http://www.w3.org/TR/CSS21/grammar.html#grammar\n/// \nexport var NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Undefined\"] = 0] = \"Undefined\";\n NodeType[NodeType[\"Identifier\"] = 1] = \"Identifier\";\n NodeType[NodeType[\"Stylesheet\"] = 2] = \"Stylesheet\";\n NodeType[NodeType[\"Ruleset\"] = 3] = \"Ruleset\";\n NodeType[NodeType[\"Selector\"] = 4] = \"Selector\";\n NodeType[NodeType[\"SimpleSelector\"] = 5] = \"SimpleSelector\";\n NodeType[NodeType[\"SelectorInterpolation\"] = 6] = \"SelectorInterpolation\";\n NodeType[NodeType[\"SelectorCombinator\"] = 7] = \"SelectorCombinator\";\n NodeType[NodeType[\"SelectorCombinatorParent\"] = 8] = \"SelectorCombinatorParent\";\n NodeType[NodeType[\"SelectorCombinatorSibling\"] = 9] = \"SelectorCombinatorSibling\";\n NodeType[NodeType[\"SelectorCombinatorAllSiblings\"] = 10] = \"SelectorCombinatorAllSiblings\";\n NodeType[NodeType[\"SelectorCombinatorShadowPiercingDescendant\"] = 11] = \"SelectorCombinatorShadowPiercingDescendant\";\n NodeType[NodeType[\"Page\"] = 12] = \"Page\";\n NodeType[NodeType[\"PageBoxMarginBox\"] = 13] = \"PageBoxMarginBox\";\n NodeType[NodeType[\"ClassSelector\"] = 14] = \"ClassSelector\";\n NodeType[NodeType[\"IdentifierSelector\"] = 15] = \"IdentifierSelector\";\n NodeType[NodeType[\"ElementNameSelector\"] = 16] = \"ElementNameSelector\";\n NodeType[NodeType[\"PseudoSelector\"] = 17] = \"PseudoSelector\";\n NodeType[NodeType[\"AttributeSelector\"] = 18] = \"AttributeSelector\";\n NodeType[NodeType[\"Declaration\"] = 19] = \"Declaration\";\n NodeType[NodeType[\"Declarations\"] = 20] = \"Declarations\";\n NodeType[NodeType[\"Property\"] = 21] = \"Property\";\n NodeType[NodeType[\"Expression\"] = 22] = \"Expression\";\n NodeType[NodeType[\"BinaryExpression\"] = 23] = \"BinaryExpression\";\n NodeType[NodeType[\"Term\"] = 24] = \"Term\";\n NodeType[NodeType[\"Operator\"] = 25] = \"Operator\";\n NodeType[NodeType[\"Value\"] = 26] = \"Value\";\n NodeType[NodeType[\"StringLiteral\"] = 27] = \"StringLiteral\";\n NodeType[NodeType[\"URILiteral\"] = 28] = \"URILiteral\";\n NodeType[NodeType[\"EscapedValue\"] = 29] = \"EscapedValue\";\n NodeType[NodeType[\"Function\"] = 30] = \"Function\";\n NodeType[NodeType[\"NumericValue\"] = 31] = \"NumericValue\";\n NodeType[NodeType[\"HexColorValue\"] = 32] = \"HexColorValue\";\n NodeType[NodeType[\"MixinDeclaration\"] = 33] = \"MixinDeclaration\";\n NodeType[NodeType[\"MixinReference\"] = 34] = \"MixinReference\";\n NodeType[NodeType[\"VariableName\"] = 35] = \"VariableName\";\n NodeType[NodeType[\"VariableDeclaration\"] = 36] = \"VariableDeclaration\";\n NodeType[NodeType[\"Prio\"] = 37] = \"Prio\";\n NodeType[NodeType[\"Interpolation\"] = 38] = \"Interpolation\";\n NodeType[NodeType[\"NestedProperties\"] = 39] = \"NestedProperties\";\n NodeType[NodeType[\"ExtendsReference\"] = 40] = \"ExtendsReference\";\n NodeType[NodeType[\"SelectorPlaceholder\"] = 41] = \"SelectorPlaceholder\";\n NodeType[NodeType[\"Debug\"] = 42] = \"Debug\";\n NodeType[NodeType[\"If\"] = 43] = \"If\";\n NodeType[NodeType[\"Else\"] = 44] = \"Else\";\n NodeType[NodeType[\"For\"] = 45] = \"For\";\n NodeType[NodeType[\"Each\"] = 46] = \"Each\";\n NodeType[NodeType[\"While\"] = 47] = \"While\";\n NodeType[NodeType[\"MixinContentReference\"] = 48] = \"MixinContentReference\";\n NodeType[NodeType[\"MixinContentDeclaration\"] = 49] = \"MixinContentDeclaration\";\n NodeType[NodeType[\"Media\"] = 50] = \"Media\";\n NodeType[NodeType[\"Keyframe\"] = 51] = \"Keyframe\";\n NodeType[NodeType[\"FontFace\"] = 52] = \"FontFace\";\n NodeType[NodeType[\"Import\"] = 53] = \"Import\";\n NodeType[NodeType[\"Namespace\"] = 54] = \"Namespace\";\n NodeType[NodeType[\"Invocation\"] = 55] = \"Invocation\";\n NodeType[NodeType[\"FunctionDeclaration\"] = 56] = \"FunctionDeclaration\";\n NodeType[NodeType[\"ReturnStatement\"] = 57] = \"ReturnStatement\";\n NodeType[NodeType[\"MediaQuery\"] = 58] = \"MediaQuery\";\n NodeType[NodeType[\"FunctionParameter\"] = 59] = \"FunctionParameter\";\n NodeType[NodeType[\"FunctionArgument\"] = 60] = \"FunctionArgument\";\n NodeType[NodeType[\"KeyframeSelector\"] = 61] = \"KeyframeSelector\";\n NodeType[NodeType[\"ViewPort\"] = 62] = \"ViewPort\";\n NodeType[NodeType[\"Document\"] = 63] = \"Document\";\n NodeType[NodeType[\"AtApplyRule\"] = 64] = \"AtApplyRule\";\n NodeType[NodeType[\"CustomPropertyDeclaration\"] = 65] = \"CustomPropertyDeclaration\";\n NodeType[NodeType[\"CustomPropertySet\"] = 66] = \"CustomPropertySet\";\n NodeType[NodeType[\"ListEntry\"] = 67] = \"ListEntry\";\n NodeType[NodeType[\"Supports\"] = 68] = \"Supports\";\n NodeType[NodeType[\"SupportsCondition\"] = 69] = \"SupportsCondition\";\n NodeType[NodeType[\"NamespacePrefix\"] = 70] = \"NamespacePrefix\";\n NodeType[NodeType[\"GridLine\"] = 71] = \"GridLine\";\n NodeType[NodeType[\"Plugin\"] = 72] = \"Plugin\";\n NodeType[NodeType[\"UnknownAtRule\"] = 73] = \"UnknownAtRule\";\n NodeType[NodeType[\"Use\"] = 74] = \"Use\";\n NodeType[NodeType[\"ModuleConfiguration\"] = 75] = \"ModuleConfiguration\";\n NodeType[NodeType[\"Forward\"] = 76] = \"Forward\";\n NodeType[NodeType[\"ForwardVisibility\"] = 77] = \"ForwardVisibility\";\n NodeType[NodeType[\"Module\"] = 78] = \"Module\";\n})(NodeType || (NodeType = {}));\nexport var ReferenceType;\n(function (ReferenceType) {\n ReferenceType[ReferenceType[\"Mixin\"] = 0] = \"Mixin\";\n ReferenceType[ReferenceType[\"Rule\"] = 1] = \"Rule\";\n ReferenceType[ReferenceType[\"Variable\"] = 2] = \"Variable\";\n ReferenceType[ReferenceType[\"Function\"] = 3] = \"Function\";\n ReferenceType[ReferenceType[\"Keyframe\"] = 4] = \"Keyframe\";\n ReferenceType[ReferenceType[\"Unknown\"] = 5] = \"Unknown\";\n ReferenceType[ReferenceType[\"Module\"] = 6] = \"Module\";\n ReferenceType[ReferenceType[\"Forward\"] = 7] = \"Forward\";\n ReferenceType[ReferenceType[\"ForwardVisibility\"] = 8] = \"ForwardVisibility\";\n})(ReferenceType || (ReferenceType = {}));\nexport function getNodeAtOffset(node, offset) {\n var candidate = null;\n if (!node || offset < node.offset || offset > node.end) {\n return null;\n }\n // Find the shortest node at the position\n node.accept(function (node) {\n if (node.offset === -1 && node.length === -1) {\n return true;\n }\n if (node.offset <= offset && node.end >= offset) {\n if (!candidate) {\n candidate = node;\n }\n else if (node.length <= candidate.length) {\n candidate = node;\n }\n return true;\n }\n return false;\n });\n return candidate;\n}\nexport function getNodePath(node, offset) {\n var candidate = getNodeAtOffset(node, offset);\n var path = [];\n while (candidate) {\n path.unshift(candidate);\n candidate = candidate.parent;\n }\n return path;\n}\nexport function getParentDeclaration(node) {\n var decl = node.findParent(NodeType.Declaration);\n var value = decl && decl.getValue();\n if (value && value.encloses(node)) {\n return decl;\n }\n return null;\n}\nvar Node = /** @class */ (function () {\n function Node(offset, len, nodeType) {\n if (offset === void 0) { offset = -1; }\n if (len === void 0) { len = -1; }\n this.parent = null;\n this.offset = offset;\n this.length = len;\n if (nodeType) {\n this.nodeType = nodeType;\n }\n }\n Object.defineProperty(Node.prototype, \"end\", {\n get: function () { return this.offset + this.length; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"type\", {\n get: function () {\n return this.nodeType || NodeType.Undefined;\n },\n set: function (type) {\n this.nodeType = type;\n },\n enumerable: false,\n configurable: true\n });\n Node.prototype.getTextProvider = function () {\n var node = this;\n while (node && !node.textProvider) {\n node = node.parent;\n }\n if (node) {\n return node.textProvider;\n }\n return function () { return 'unknown'; };\n };\n Node.prototype.getText = function () {\n return this.getTextProvider()(this.offset, this.length);\n };\n Node.prototype.matches = function (str) {\n return this.length === str.length && this.getTextProvider()(this.offset, this.length) === str;\n };\n Node.prototype.startsWith = function (str) {\n return this.length >= str.length && this.getTextProvider()(this.offset, str.length) === str;\n };\n Node.prototype.endsWith = function (str) {\n return this.length >= str.length && this.getTextProvider()(this.end - str.length, str.length) === str;\n };\n Node.prototype.accept = function (visitor) {\n if (visitor(this) && this.children) {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n child.accept(visitor);\n }\n }\n };\n Node.prototype.acceptVisitor = function (visitor) {\n this.accept(visitor.visitNode.bind(visitor));\n };\n Node.prototype.adoptChild = function (node, index) {\n if (index === void 0) { index = -1; }\n if (node.parent && node.parent.children) {\n var idx = node.parent.children.indexOf(node);\n if (idx >= 0) {\n node.parent.children.splice(idx, 1);\n }\n }\n node.parent = this;\n var children = this.children;\n if (!children) {\n children = this.children = [];\n }\n if (index !== -1) {\n children.splice(index, 0, node);\n }\n else {\n children.push(node);\n }\n return node;\n };\n Node.prototype.attachTo = function (parent, index) {\n if (index === void 0) { index = -1; }\n if (parent) {\n parent.adoptChild(this, index);\n }\n return this;\n };\n Node.prototype.collectIssues = function (results) {\n if (this.issues) {\n results.push.apply(results, this.issues);\n }\n };\n Node.prototype.addIssue = function (issue) {\n if (!this.issues) {\n this.issues = [];\n }\n this.issues.push(issue);\n };\n Node.prototype.hasIssue = function (rule) {\n return Array.isArray(this.issues) && this.issues.some(function (i) { return i.getRule() === rule; });\n };\n Node.prototype.isErroneous = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n if (this.issues && this.issues.length > 0) {\n return true;\n }\n return recursive && Array.isArray(this.children) && this.children.some(function (c) { return c.isErroneous(true); });\n };\n Node.prototype.setNode = function (field, node, index) {\n if (index === void 0) { index = -1; }\n if (node) {\n node.attachTo(this, index);\n this[field] = node;\n return true;\n }\n return false;\n };\n Node.prototype.addChild = function (node) {\n if (node) {\n if (!this.children) {\n this.children = [];\n }\n node.attachTo(this);\n this.updateOffsetAndLength(node);\n return true;\n }\n return false;\n };\n Node.prototype.updateOffsetAndLength = function (node) {\n if (node.offset < this.offset || this.offset === -1) {\n this.offset = node.offset;\n }\n var nodeEnd = node.end;\n if ((nodeEnd > this.end) || this.length === -1) {\n this.length = nodeEnd - this.offset;\n }\n };\n Node.prototype.hasChildren = function () {\n return !!this.children && this.children.length > 0;\n };\n Node.prototype.getChildren = function () {\n return this.children ? this.children.slice(0) : [];\n };\n Node.prototype.getChild = function (index) {\n if (this.children && index < this.children.length) {\n return this.children[index];\n }\n return null;\n };\n Node.prototype.addChildren = function (nodes) {\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n this.addChild(node);\n }\n };\n Node.prototype.findFirstChildBeforeOffset = function (offset) {\n if (this.children) {\n var current = null;\n for (var i = this.children.length - 1; i >= 0; i--) {\n // iterate until we find a child that has a start offset smaller than the input offset\n current = this.children[i];\n if (current.offset <= offset) {\n return current;\n }\n }\n }\n return null;\n };\n Node.prototype.findChildAtOffset = function (offset, goDeep) {\n var current = this.findFirstChildBeforeOffset(offset);\n if (current && current.end >= offset) {\n if (goDeep) {\n return current.findChildAtOffset(offset, true) || current;\n }\n return current;\n }\n return null;\n };\n Node.prototype.encloses = function (candidate) {\n return this.offset <= candidate.offset && this.offset + this.length >= candidate.offset + candidate.length;\n };\n Node.prototype.getParent = function () {\n var result = this.parent;\n while (result instanceof Nodelist) {\n result = result.parent;\n }\n return result;\n };\n Node.prototype.findParent = function (type) {\n var result = this;\n while (result && result.type !== type) {\n result = result.parent;\n }\n return result;\n };\n Node.prototype.findAParent = function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n var result = this;\n while (result && !types.some(function (t) { return result.type === t; })) {\n result = result.parent;\n }\n return result;\n };\n Node.prototype.setData = function (key, value) {\n if (!this.options) {\n this.options = {};\n }\n this.options[key] = value;\n };\n Node.prototype.getData = function (key) {\n if (!this.options || !this.options.hasOwnProperty(key)) {\n return null;\n }\n return this.options[key];\n };\n return Node;\n}());\nexport { Node };\nvar Nodelist = /** @class */ (function (_super) {\n __extends(Nodelist, _super);\n function Nodelist(parent, index) {\n if (index === void 0) { index = -1; }\n var _this = _super.call(this, -1, -1) || this;\n _this.attachTo(parent, index);\n _this.offset = -1;\n _this.length = -1;\n return _this;\n }\n return Nodelist;\n}(Node));\nexport { Nodelist };\nvar Identifier = /** @class */ (function (_super) {\n __extends(Identifier, _super);\n function Identifier(offset, length) {\n var _this = _super.call(this, offset, length) || this;\n _this.isCustomProperty = false;\n return _this;\n }\n Object.defineProperty(Identifier.prototype, \"type\", {\n get: function () {\n return NodeType.Identifier;\n },\n enumerable: false,\n configurable: true\n });\n Identifier.prototype.containsInterpolation = function () {\n return this.hasChildren();\n };\n return Identifier;\n}(Node));\nexport { Identifier };\nvar Stylesheet = /** @class */ (function (_super) {\n __extends(Stylesheet, _super);\n function Stylesheet(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Stylesheet.prototype, \"type\", {\n get: function () {\n return NodeType.Stylesheet;\n },\n enumerable: false,\n configurable: true\n });\n return Stylesheet;\n}(Node));\nexport { Stylesheet };\nvar Declarations = /** @class */ (function (_super) {\n __extends(Declarations, _super);\n function Declarations(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Declarations.prototype, \"type\", {\n get: function () {\n return NodeType.Declarations;\n },\n enumerable: false,\n configurable: true\n });\n return Declarations;\n}(Node));\nexport { Declarations };\nvar BodyDeclaration = /** @class */ (function (_super) {\n __extends(BodyDeclaration, _super);\n function BodyDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n BodyDeclaration.prototype.getDeclarations = function () {\n return this.declarations;\n };\n BodyDeclaration.prototype.setDeclarations = function (decls) {\n return this.setNode('declarations', decls);\n };\n return BodyDeclaration;\n}(Node));\nexport { BodyDeclaration };\nvar RuleSet = /** @class */ (function (_super) {\n __extends(RuleSet, _super);\n function RuleSet(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(RuleSet.prototype, \"type\", {\n get: function () {\n return NodeType.Ruleset;\n },\n enumerable: false,\n configurable: true\n });\n RuleSet.prototype.getSelectors = function () {\n if (!this.selectors) {\n this.selectors = new Nodelist(this);\n }\n return this.selectors;\n };\n RuleSet.prototype.isNested = function () {\n return !!this.parent && this.parent.findParent(NodeType.Declarations) !== null;\n };\n return RuleSet;\n}(BodyDeclaration));\nexport { RuleSet };\nvar Selector = /** @class */ (function (_super) {\n __extends(Selector, _super);\n function Selector(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Selector.prototype, \"type\", {\n get: function () {\n return NodeType.Selector;\n },\n enumerable: false,\n configurable: true\n });\n return Selector;\n}(Node));\nexport { Selector };\nvar SimpleSelector = /** @class */ (function (_super) {\n __extends(SimpleSelector, _super);\n function SimpleSelector(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(SimpleSelector.prototype, \"type\", {\n get: function () {\n return NodeType.SimpleSelector;\n },\n enumerable: false,\n configurable: true\n });\n return SimpleSelector;\n}(Node));\nexport { SimpleSelector };\nvar AtApplyRule = /** @class */ (function (_super) {\n __extends(AtApplyRule, _super);\n function AtApplyRule(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(AtApplyRule.prototype, \"type\", {\n get: function () {\n return NodeType.AtApplyRule;\n },\n enumerable: false,\n configurable: true\n });\n AtApplyRule.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n AtApplyRule.prototype.getIdentifier = function () {\n return this.identifier;\n };\n AtApplyRule.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n return AtApplyRule;\n}(Node));\nexport { AtApplyRule };\nvar AbstractDeclaration = /** @class */ (function (_super) {\n __extends(AbstractDeclaration, _super);\n function AbstractDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n return AbstractDeclaration;\n}(Node));\nexport { AbstractDeclaration };\nvar CustomPropertySet = /** @class */ (function (_super) {\n __extends(CustomPropertySet, _super);\n function CustomPropertySet(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(CustomPropertySet.prototype, \"type\", {\n get: function () {\n return NodeType.CustomPropertySet;\n },\n enumerable: false,\n configurable: true\n });\n return CustomPropertySet;\n}(BodyDeclaration));\nexport { CustomPropertySet };\nvar Declaration = /** @class */ (function (_super) {\n __extends(Declaration, _super);\n function Declaration(offset, length) {\n var _this = _super.call(this, offset, length) || this;\n _this.property = null;\n return _this;\n }\n Object.defineProperty(Declaration.prototype, \"type\", {\n get: function () {\n return NodeType.Declaration;\n },\n enumerable: false,\n configurable: true\n });\n Declaration.prototype.setProperty = function (node) {\n return this.setNode('property', node);\n };\n Declaration.prototype.getProperty = function () {\n return this.property;\n };\n Declaration.prototype.getFullPropertyName = function () {\n var propertyName = this.property ? this.property.getName() : 'unknown';\n if (this.parent instanceof Declarations && this.parent.getParent() instanceof NestedProperties) {\n var parentDecl = this.parent.getParent().getParent();\n if (parentDecl instanceof Declaration) {\n return parentDecl.getFullPropertyName() + propertyName;\n }\n }\n return propertyName;\n };\n Declaration.prototype.getNonPrefixedPropertyName = function () {\n var propertyName = this.getFullPropertyName();\n if (propertyName && propertyName.charAt(0) === '-') {\n var vendorPrefixEnd = propertyName.indexOf('-', 1);\n if (vendorPrefixEnd !== -1) {\n return propertyName.substring(vendorPrefixEnd + 1);\n }\n }\n return propertyName;\n };\n Declaration.prototype.setValue = function (value) {\n return this.setNode('value', value);\n };\n Declaration.prototype.getValue = function () {\n return this.value;\n };\n Declaration.prototype.setNestedProperties = function (value) {\n return this.setNode('nestedProperties', value);\n };\n Declaration.prototype.getNestedProperties = function () {\n return this.nestedProperties;\n };\n return Declaration;\n}(AbstractDeclaration));\nexport { Declaration };\nvar CustomPropertyDeclaration = /** @class */ (function (_super) {\n __extends(CustomPropertyDeclaration, _super);\n function CustomPropertyDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(CustomPropertyDeclaration.prototype, \"type\", {\n get: function () {\n return NodeType.CustomPropertyDeclaration;\n },\n enumerable: false,\n configurable: true\n });\n CustomPropertyDeclaration.prototype.setPropertySet = function (value) {\n return this.setNode('propertySet', value);\n };\n CustomPropertyDeclaration.prototype.getPropertySet = function () {\n return this.propertySet;\n };\n return CustomPropertyDeclaration;\n}(Declaration));\nexport { CustomPropertyDeclaration };\nvar Property = /** @class */ (function (_super) {\n __extends(Property, _super);\n function Property(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Property.prototype, \"type\", {\n get: function () {\n return NodeType.Property;\n },\n enumerable: false,\n configurable: true\n });\n Property.prototype.setIdentifier = function (value) {\n return this.setNode('identifier', value);\n };\n Property.prototype.getIdentifier = function () {\n return this.identifier;\n };\n Property.prototype.getName = function () {\n return trim(this.getText(), /[_\\+]+$/); /* +_: less merge */\n };\n Property.prototype.isCustomProperty = function () {\n return !!this.identifier && this.identifier.isCustomProperty;\n };\n return Property;\n}(Node));\nexport { Property };\nvar Invocation = /** @class */ (function (_super) {\n __extends(Invocation, _super);\n function Invocation(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Invocation.prototype, \"type\", {\n get: function () {\n return NodeType.Invocation;\n },\n enumerable: false,\n configurable: true\n });\n Invocation.prototype.getArguments = function () {\n if (!this.arguments) {\n this.arguments = new Nodelist(this);\n }\n return this.arguments;\n };\n return Invocation;\n}(Node));\nexport { Invocation };\nvar Function = /** @class */ (function (_super) {\n __extends(Function, _super);\n function Function(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Function.prototype, \"type\", {\n get: function () {\n return NodeType.Function;\n },\n enumerable: false,\n configurable: true\n });\n Function.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n Function.prototype.getIdentifier = function () {\n return this.identifier;\n };\n Function.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n return Function;\n}(Invocation));\nexport { Function };\nvar FunctionParameter = /** @class */ (function (_super) {\n __extends(FunctionParameter, _super);\n function FunctionParameter(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(FunctionParameter.prototype, \"type\", {\n get: function () {\n return NodeType.FunctionParameter;\n },\n enumerable: false,\n configurable: true\n });\n FunctionParameter.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n FunctionParameter.prototype.getIdentifier = function () {\n return this.identifier;\n };\n FunctionParameter.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n FunctionParameter.prototype.setDefaultValue = function (node) {\n return this.setNode('defaultValue', node, 0);\n };\n FunctionParameter.prototype.getDefaultValue = function () {\n return this.defaultValue;\n };\n return FunctionParameter;\n}(Node));\nexport { FunctionParameter };\nvar FunctionArgument = /** @class */ (function (_super) {\n __extends(FunctionArgument, _super);\n function FunctionArgument(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(FunctionArgument.prototype, \"type\", {\n get: function () {\n return NodeType.FunctionArgument;\n },\n enumerable: false,\n configurable: true\n });\n FunctionArgument.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n FunctionArgument.prototype.getIdentifier = function () {\n return this.identifier;\n };\n FunctionArgument.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n FunctionArgument.prototype.setValue = function (node) {\n return this.setNode('value', node, 0);\n };\n FunctionArgument.prototype.getValue = function () {\n return this.value;\n };\n return FunctionArgument;\n}(Node));\nexport { FunctionArgument };\nvar IfStatement = /** @class */ (function (_super) {\n __extends(IfStatement, _super);\n function IfStatement(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(IfStatement.prototype, \"type\", {\n get: function () {\n return NodeType.If;\n },\n enumerable: false,\n configurable: true\n });\n IfStatement.prototype.setExpression = function (node) {\n return this.setNode('expression', node, 0);\n };\n IfStatement.prototype.setElseClause = function (elseClause) {\n return this.setNode('elseClause', elseClause);\n };\n return IfStatement;\n}(BodyDeclaration));\nexport { IfStatement };\nvar ForStatement = /** @class */ (function (_super) {\n __extends(ForStatement, _super);\n function ForStatement(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(ForStatement.prototype, \"type\", {\n get: function () {\n return NodeType.For;\n },\n enumerable: false,\n configurable: true\n });\n ForStatement.prototype.setVariable = function (node) {\n return this.setNode('variable', node, 0);\n };\n return ForStatement;\n}(BodyDeclaration));\nexport { ForStatement };\nvar EachStatement = /** @class */ (function (_super) {\n __extends(EachStatement, _super);\n function EachStatement(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(EachStatement.prototype, \"type\", {\n get: function () {\n return NodeType.Each;\n },\n enumerable: false,\n configurable: true\n });\n EachStatement.prototype.getVariables = function () {\n if (!this.variables) {\n this.variables = new Nodelist(this);\n }\n return this.variables;\n };\n return EachStatement;\n}(BodyDeclaration));\nexport { EachStatement };\nvar WhileStatement = /** @class */ (function (_super) {\n __extends(WhileStatement, _super);\n function WhileStatement(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(WhileStatement.prototype, \"type\", {\n get: function () {\n return NodeType.While;\n },\n enumerable: false,\n configurable: true\n });\n return WhileStatement;\n}(BodyDeclaration));\nexport { WhileStatement };\nvar ElseStatement = /** @class */ (function (_super) {\n __extends(ElseStatement, _super);\n function ElseStatement(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(ElseStatement.prototype, \"type\", {\n get: function () {\n return NodeType.Else;\n },\n enumerable: false,\n configurable: true\n });\n return ElseStatement;\n}(BodyDeclaration));\nexport { ElseStatement };\nvar FunctionDeclaration = /** @class */ (function (_super) {\n __extends(FunctionDeclaration, _super);\n function FunctionDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(FunctionDeclaration.prototype, \"type\", {\n get: function () {\n return NodeType.FunctionDeclaration;\n },\n enumerable: false,\n configurable: true\n });\n FunctionDeclaration.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n FunctionDeclaration.prototype.getIdentifier = function () {\n return this.identifier;\n };\n FunctionDeclaration.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n FunctionDeclaration.prototype.getParameters = function () {\n if (!this.parameters) {\n this.parameters = new Nodelist(this);\n }\n return this.parameters;\n };\n return FunctionDeclaration;\n}(BodyDeclaration));\nexport { FunctionDeclaration };\nvar ViewPort = /** @class */ (function (_super) {\n __extends(ViewPort, _super);\n function ViewPort(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(ViewPort.prototype, \"type\", {\n get: function () {\n return NodeType.ViewPort;\n },\n enumerable: false,\n configurable: true\n });\n return ViewPort;\n}(BodyDeclaration));\nexport { ViewPort };\nvar FontFace = /** @class */ (function (_super) {\n __extends(FontFace, _super);\n function FontFace(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(FontFace.prototype, \"type\", {\n get: function () {\n return NodeType.FontFace;\n },\n enumerable: false,\n configurable: true\n });\n return FontFace;\n}(BodyDeclaration));\nexport { FontFace };\nvar NestedProperties = /** @class */ (function (_super) {\n __extends(NestedProperties, _super);\n function NestedProperties(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(NestedProperties.prototype, \"type\", {\n get: function () {\n return NodeType.NestedProperties;\n },\n enumerable: false,\n configurable: true\n });\n return NestedProperties;\n}(BodyDeclaration));\nexport { NestedProperties };\nvar Keyframe = /** @class */ (function (_super) {\n __extends(Keyframe, _super);\n function Keyframe(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Keyframe.prototype, \"type\", {\n get: function () {\n return NodeType.Keyframe;\n },\n enumerable: false,\n configurable: true\n });\n Keyframe.prototype.setKeyword = function (keyword) {\n return this.setNode('keyword', keyword, 0);\n };\n Keyframe.prototype.getKeyword = function () {\n return this.keyword;\n };\n Keyframe.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n Keyframe.prototype.getIdentifier = function () {\n return this.identifier;\n };\n Keyframe.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n return Keyframe;\n}(BodyDeclaration));\nexport { Keyframe };\nvar KeyframeSelector = /** @class */ (function (_super) {\n __extends(KeyframeSelector, _super);\n function KeyframeSelector(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(KeyframeSelector.prototype, \"type\", {\n get: function () {\n return NodeType.KeyframeSelector;\n },\n enumerable: false,\n configurable: true\n });\n return KeyframeSelector;\n}(BodyDeclaration));\nexport { KeyframeSelector };\nvar Import = /** @class */ (function (_super) {\n __extends(Import, _super);\n function Import(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Import.prototype, \"type\", {\n get: function () {\n return NodeType.Import;\n },\n enumerable: false,\n configurable: true\n });\n Import.prototype.setMedialist = function (node) {\n if (node) {\n node.attachTo(this);\n return true;\n }\n return false;\n };\n return Import;\n}(Node));\nexport { Import };\nvar Use = /** @class */ (function (_super) {\n __extends(Use, _super);\n function Use() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Use.prototype, \"type\", {\n get: function () {\n return NodeType.Use;\n },\n enumerable: false,\n configurable: true\n });\n Use.prototype.getParameters = function () {\n if (!this.parameters) {\n this.parameters = new Nodelist(this);\n }\n return this.parameters;\n };\n Use.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n Use.prototype.getIdentifier = function () {\n return this.identifier;\n };\n return Use;\n}(Node));\nexport { Use };\nvar ModuleConfiguration = /** @class */ (function (_super) {\n __extends(ModuleConfiguration, _super);\n function ModuleConfiguration() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ModuleConfiguration.prototype, \"type\", {\n get: function () {\n return NodeType.ModuleConfiguration;\n },\n enumerable: false,\n configurable: true\n });\n ModuleConfiguration.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n ModuleConfiguration.prototype.getIdentifier = function () {\n return this.identifier;\n };\n ModuleConfiguration.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n ModuleConfiguration.prototype.setValue = function (node) {\n return this.setNode('value', node, 0);\n };\n ModuleConfiguration.prototype.getValue = function () {\n return this.value;\n };\n return ModuleConfiguration;\n}(Node));\nexport { ModuleConfiguration };\nvar Forward = /** @class */ (function (_super) {\n __extends(Forward, _super);\n function Forward() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Forward.prototype, \"type\", {\n get: function () {\n return NodeType.Forward;\n },\n enumerable: false,\n configurable: true\n });\n Forward.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n Forward.prototype.getIdentifier = function () {\n return this.identifier;\n };\n Forward.prototype.getMembers = function () {\n if (!this.members) {\n this.members = new Nodelist(this);\n }\n return this.members;\n };\n Forward.prototype.getParameters = function () {\n if (!this.parameters) {\n this.parameters = new Nodelist(this);\n }\n return this.parameters;\n };\n return Forward;\n}(Node));\nexport { Forward };\nvar ForwardVisibility = /** @class */ (function (_super) {\n __extends(ForwardVisibility, _super);\n function ForwardVisibility() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ForwardVisibility.prototype, \"type\", {\n get: function () {\n return NodeType.ForwardVisibility;\n },\n enumerable: false,\n configurable: true\n });\n ForwardVisibility.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n ForwardVisibility.prototype.getIdentifier = function () {\n return this.identifier;\n };\n return ForwardVisibility;\n}(Node));\nexport { ForwardVisibility };\nvar Namespace = /** @class */ (function (_super) {\n __extends(Namespace, _super);\n function Namespace(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Namespace.prototype, \"type\", {\n get: function () {\n return NodeType.Namespace;\n },\n enumerable: false,\n configurable: true\n });\n return Namespace;\n}(Node));\nexport { Namespace };\nvar Media = /** @class */ (function (_super) {\n __extends(Media, _super);\n function Media(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Media.prototype, \"type\", {\n get: function () {\n return NodeType.Media;\n },\n enumerable: false,\n configurable: true\n });\n return Media;\n}(BodyDeclaration));\nexport { Media };\nvar Supports = /** @class */ (function (_super) {\n __extends(Supports, _super);\n function Supports(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Supports.prototype, \"type\", {\n get: function () {\n return NodeType.Supports;\n },\n enumerable: false,\n configurable: true\n });\n return Supports;\n}(BodyDeclaration));\nexport { Supports };\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Document.prototype, \"type\", {\n get: function () {\n return NodeType.Document;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(BodyDeclaration));\nexport { Document };\nvar Medialist = /** @class */ (function (_super) {\n __extends(Medialist, _super);\n function Medialist(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Medialist.prototype.getMediums = function () {\n if (!this.mediums) {\n this.mediums = new Nodelist(this);\n }\n return this.mediums;\n };\n return Medialist;\n}(Node));\nexport { Medialist };\nvar MediaQuery = /** @class */ (function (_super) {\n __extends(MediaQuery, _super);\n function MediaQuery(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(MediaQuery.prototype, \"type\", {\n get: function () {\n return NodeType.MediaQuery;\n },\n enumerable: false,\n configurable: true\n });\n return MediaQuery;\n}(Node));\nexport { MediaQuery };\nvar SupportsCondition = /** @class */ (function (_super) {\n __extends(SupportsCondition, _super);\n function SupportsCondition(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(SupportsCondition.prototype, \"type\", {\n get: function () {\n return NodeType.SupportsCondition;\n },\n enumerable: false,\n configurable: true\n });\n return SupportsCondition;\n}(Node));\nexport { SupportsCondition };\nvar Page = /** @class */ (function (_super) {\n __extends(Page, _super);\n function Page(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Page.prototype, \"type\", {\n get: function () {\n return NodeType.Page;\n },\n enumerable: false,\n configurable: true\n });\n return Page;\n}(BodyDeclaration));\nexport { Page };\nvar PageBoxMarginBox = /** @class */ (function (_super) {\n __extends(PageBoxMarginBox, _super);\n function PageBoxMarginBox(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(PageBoxMarginBox.prototype, \"type\", {\n get: function () {\n return NodeType.PageBoxMarginBox;\n },\n enumerable: false,\n configurable: true\n });\n return PageBoxMarginBox;\n}(BodyDeclaration));\nexport { PageBoxMarginBox };\nvar Expression = /** @class */ (function (_super) {\n __extends(Expression, _super);\n function Expression(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Expression.prototype, \"type\", {\n get: function () {\n return NodeType.Expression;\n },\n enumerable: false,\n configurable: true\n });\n return Expression;\n}(Node));\nexport { Expression };\nvar BinaryExpression = /** @class */ (function (_super) {\n __extends(BinaryExpression, _super);\n function BinaryExpression(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(BinaryExpression.prototype, \"type\", {\n get: function () {\n return NodeType.BinaryExpression;\n },\n enumerable: false,\n configurable: true\n });\n BinaryExpression.prototype.setLeft = function (left) {\n return this.setNode('left', left);\n };\n BinaryExpression.prototype.getLeft = function () {\n return this.left;\n };\n BinaryExpression.prototype.setRight = function (right) {\n return this.setNode('right', right);\n };\n BinaryExpression.prototype.getRight = function () {\n return this.right;\n };\n BinaryExpression.prototype.setOperator = function (value) {\n return this.setNode('operator', value);\n };\n BinaryExpression.prototype.getOperator = function () {\n return this.operator;\n };\n return BinaryExpression;\n}(Node));\nexport { BinaryExpression };\nvar Term = /** @class */ (function (_super) {\n __extends(Term, _super);\n function Term(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Term.prototype, \"type\", {\n get: function () {\n return NodeType.Term;\n },\n enumerable: false,\n configurable: true\n });\n Term.prototype.setOperator = function (value) {\n return this.setNode('operator', value);\n };\n Term.prototype.getOperator = function () {\n return this.operator;\n };\n Term.prototype.setExpression = function (value) {\n return this.setNode('expression', value);\n };\n Term.prototype.getExpression = function () {\n return this.expression;\n };\n return Term;\n}(Node));\nexport { Term };\nvar AttributeSelector = /** @class */ (function (_super) {\n __extends(AttributeSelector, _super);\n function AttributeSelector(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(AttributeSelector.prototype, \"type\", {\n get: function () {\n return NodeType.AttributeSelector;\n },\n enumerable: false,\n configurable: true\n });\n AttributeSelector.prototype.setNamespacePrefix = function (value) {\n return this.setNode('namespacePrefix', value);\n };\n AttributeSelector.prototype.getNamespacePrefix = function () {\n return this.namespacePrefix;\n };\n AttributeSelector.prototype.setIdentifier = function (value) {\n return this.setNode('identifier', value);\n };\n AttributeSelector.prototype.getIdentifier = function () {\n return this.identifier;\n };\n AttributeSelector.prototype.setOperator = function (operator) {\n return this.setNode('operator', operator);\n };\n AttributeSelector.prototype.getOperator = function () {\n return this.operator;\n };\n AttributeSelector.prototype.setValue = function (value) {\n return this.setNode('value', value);\n };\n AttributeSelector.prototype.getValue = function () {\n return this.value;\n };\n return AttributeSelector;\n}(Node));\nexport { AttributeSelector };\nvar Operator = /** @class */ (function (_super) {\n __extends(Operator, _super);\n function Operator(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Operator.prototype, \"type\", {\n get: function () {\n return NodeType.Operator;\n },\n enumerable: false,\n configurable: true\n });\n return Operator;\n}(Node));\nexport { Operator };\nvar HexColorValue = /** @class */ (function (_super) {\n __extends(HexColorValue, _super);\n function HexColorValue(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(HexColorValue.prototype, \"type\", {\n get: function () {\n return NodeType.HexColorValue;\n },\n enumerable: false,\n configurable: true\n });\n return HexColorValue;\n}(Node));\nexport { HexColorValue };\nvar _dot = '.'.charCodeAt(0), _0 = '0'.charCodeAt(0), _9 = '9'.charCodeAt(0);\nvar NumericValue = /** @class */ (function (_super) {\n __extends(NumericValue, _super);\n function NumericValue(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(NumericValue.prototype, \"type\", {\n get: function () {\n return NodeType.NumericValue;\n },\n enumerable: false,\n configurable: true\n });\n NumericValue.prototype.getValue = function () {\n var raw = this.getText();\n var unitIdx = 0;\n var code;\n for (var i = 0, len = raw.length; i < len; i++) {\n code = raw.charCodeAt(i);\n if (!(_0 <= code && code <= _9 || code === _dot)) {\n break;\n }\n unitIdx += 1;\n }\n return {\n value: raw.substring(0, unitIdx),\n unit: unitIdx < raw.length ? raw.substring(unitIdx) : undefined\n };\n };\n return NumericValue;\n}(Node));\nexport { NumericValue };\nvar VariableDeclaration = /** @class */ (function (_super) {\n __extends(VariableDeclaration, _super);\n function VariableDeclaration(offset, length) {\n var _this = _super.call(this, offset, length) || this;\n _this.variable = null;\n _this.value = null;\n _this.needsSemicolon = true;\n return _this;\n }\n Object.defineProperty(VariableDeclaration.prototype, \"type\", {\n get: function () {\n return NodeType.VariableDeclaration;\n },\n enumerable: false,\n configurable: true\n });\n VariableDeclaration.prototype.setVariable = function (node) {\n if (node) {\n node.attachTo(this);\n this.variable = node;\n return true;\n }\n return false;\n };\n VariableDeclaration.prototype.getVariable = function () {\n return this.variable;\n };\n VariableDeclaration.prototype.getName = function () {\n return this.variable ? this.variable.getName() : '';\n };\n VariableDeclaration.prototype.setValue = function (node) {\n if (node) {\n node.attachTo(this);\n this.value = node;\n return true;\n }\n return false;\n };\n VariableDeclaration.prototype.getValue = function () {\n return this.value;\n };\n return VariableDeclaration;\n}(AbstractDeclaration));\nexport { VariableDeclaration };\nvar Interpolation = /** @class */ (function (_super) {\n __extends(Interpolation, _super);\n // private _interpolations: void; // workaround for https://github.com/Microsoft/TypeScript/issues/18276\n function Interpolation(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Interpolation.prototype, \"type\", {\n get: function () {\n return NodeType.Interpolation;\n },\n enumerable: false,\n configurable: true\n });\n return Interpolation;\n}(Node));\nexport { Interpolation };\nvar Variable = /** @class */ (function (_super) {\n __extends(Variable, _super);\n function Variable(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(Variable.prototype, \"type\", {\n get: function () {\n return NodeType.VariableName;\n },\n enumerable: false,\n configurable: true\n });\n Variable.prototype.getName = function () {\n return this.getText();\n };\n return Variable;\n}(Node));\nexport { Variable };\nvar ExtendsReference = /** @class */ (function (_super) {\n __extends(ExtendsReference, _super);\n function ExtendsReference(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(ExtendsReference.prototype, \"type\", {\n get: function () {\n return NodeType.ExtendsReference;\n },\n enumerable: false,\n configurable: true\n });\n ExtendsReference.prototype.getSelectors = function () {\n if (!this.selectors) {\n this.selectors = new Nodelist(this);\n }\n return this.selectors;\n };\n return ExtendsReference;\n}(Node));\nexport { ExtendsReference };\nvar MixinContentReference = /** @class */ (function (_super) {\n __extends(MixinContentReference, _super);\n function MixinContentReference(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(MixinContentReference.prototype, \"type\", {\n get: function () {\n return NodeType.MixinContentReference;\n },\n enumerable: false,\n configurable: true\n });\n MixinContentReference.prototype.getArguments = function () {\n if (!this.arguments) {\n this.arguments = new Nodelist(this);\n }\n return this.arguments;\n };\n return MixinContentReference;\n}(Node));\nexport { MixinContentReference };\nvar MixinContentDeclaration = /** @class */ (function (_super) {\n __extends(MixinContentDeclaration, _super);\n function MixinContentDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(MixinContentDeclaration.prototype, \"type\", {\n get: function () {\n return NodeType.MixinContentReference;\n },\n enumerable: false,\n configurable: true\n });\n MixinContentDeclaration.prototype.getParameters = function () {\n if (!this.parameters) {\n this.parameters = new Nodelist(this);\n }\n return this.parameters;\n };\n return MixinContentDeclaration;\n}(BodyDeclaration));\nexport { MixinContentDeclaration };\nvar MixinReference = /** @class */ (function (_super) {\n __extends(MixinReference, _super);\n function MixinReference(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(MixinReference.prototype, \"type\", {\n get: function () {\n return NodeType.MixinReference;\n },\n enumerable: false,\n configurable: true\n });\n MixinReference.prototype.getNamespaces = function () {\n if (!this.namespaces) {\n this.namespaces = new Nodelist(this);\n }\n return this.namespaces;\n };\n MixinReference.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n MixinReference.prototype.getIdentifier = function () {\n return this.identifier;\n };\n MixinReference.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n MixinReference.prototype.getArguments = function () {\n if (!this.arguments) {\n this.arguments = new Nodelist(this);\n }\n return this.arguments;\n };\n MixinReference.prototype.setContent = function (node) {\n return this.setNode('content', node);\n };\n MixinReference.prototype.getContent = function () {\n return this.content;\n };\n return MixinReference;\n}(Node));\nexport { MixinReference };\nvar MixinDeclaration = /** @class */ (function (_super) {\n __extends(MixinDeclaration, _super);\n function MixinDeclaration(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(MixinDeclaration.prototype, \"type\", {\n get: function () {\n return NodeType.MixinDeclaration;\n },\n enumerable: false,\n configurable: true\n });\n MixinDeclaration.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n MixinDeclaration.prototype.getIdentifier = function () {\n return this.identifier;\n };\n MixinDeclaration.prototype.getName = function () {\n return this.identifier ? this.identifier.getText() : '';\n };\n MixinDeclaration.prototype.getParameters = function () {\n if (!this.parameters) {\n this.parameters = new Nodelist(this);\n }\n return this.parameters;\n };\n MixinDeclaration.prototype.setGuard = function (node) {\n if (node) {\n node.attachTo(this);\n this.guard = node;\n }\n return false;\n };\n return MixinDeclaration;\n}(BodyDeclaration));\nexport { MixinDeclaration };\nvar UnknownAtRule = /** @class */ (function (_super) {\n __extends(UnknownAtRule, _super);\n function UnknownAtRule(offset, length) {\n return _super.call(this, offset, length) || this;\n }\n Object.defineProperty(UnknownAtRule.prototype, \"type\", {\n get: function () {\n return NodeType.UnknownAtRule;\n },\n enumerable: false,\n configurable: true\n });\n UnknownAtRule.prototype.setAtRuleName = function (atRuleName) {\n this.atRuleName = atRuleName;\n };\n UnknownAtRule.prototype.getAtRuleName = function () {\n return this.atRuleName;\n };\n return UnknownAtRule;\n}(BodyDeclaration));\nexport { UnknownAtRule };\nvar ListEntry = /** @class */ (function (_super) {\n __extends(ListEntry, _super);\n function ListEntry() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(ListEntry.prototype, \"type\", {\n get: function () {\n return NodeType.ListEntry;\n },\n enumerable: false,\n configurable: true\n });\n ListEntry.prototype.setKey = function (node) {\n return this.setNode('key', node, 0);\n };\n ListEntry.prototype.setValue = function (node) {\n return this.setNode('value', node, 1);\n };\n return ListEntry;\n}(Node));\nexport { ListEntry };\nvar LessGuard = /** @class */ (function (_super) {\n __extends(LessGuard, _super);\n function LessGuard() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LessGuard.prototype.getConditions = function () {\n if (!this.conditions) {\n this.conditions = new Nodelist(this);\n }\n return this.conditions;\n };\n return LessGuard;\n}(Node));\nexport { LessGuard };\nvar GuardCondition = /** @class */ (function (_super) {\n __extends(GuardCondition, _super);\n function GuardCondition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GuardCondition.prototype.setVariable = function (node) {\n return this.setNode('variable', node);\n };\n return GuardCondition;\n}(Node));\nexport { GuardCondition };\nvar Module = /** @class */ (function (_super) {\n __extends(Module, _super);\n function Module() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(Module.prototype, \"type\", {\n get: function () {\n return NodeType.Module;\n },\n enumerable: false,\n configurable: true\n });\n Module.prototype.setIdentifier = function (node) {\n return this.setNode('identifier', node, 0);\n };\n Module.prototype.getIdentifier = function () {\n return this.identifier;\n };\n return Module;\n}(Node));\nexport { Module };\nexport var Level;\n(function (Level) {\n Level[Level[\"Ignore\"] = 1] = \"Ignore\";\n Level[Level[\"Warning\"] = 2] = \"Warning\";\n Level[Level[\"Error\"] = 4] = \"Error\";\n})(Level || (Level = {}));\nvar Marker = /** @class */ (function () {\n function Marker(node, rule, level, message, offset, length) {\n if (offset === void 0) { offset = node.offset; }\n if (length === void 0) { length = node.length; }\n this.node = node;\n this.rule = rule;\n this.level = level;\n this.message = message || rule.message;\n this.offset = offset;\n this.length = length;\n }\n Marker.prototype.getRule = function () {\n return this.rule;\n };\n Marker.prototype.getLevel = function () {\n return this.level;\n };\n Marker.prototype.getOffset = function () {\n return this.offset;\n };\n Marker.prototype.getLength = function () {\n return this.length;\n };\n Marker.prototype.getNode = function () {\n return this.node;\n };\n Marker.prototype.getMessage = function () {\n return this.message;\n };\n return Marker;\n}());\nexport { Marker };\n/*\nexport class DefaultVisitor implements IVisitor {\n\n public visitNode(node:Node):boolean {\n switch (node.type) {\n case NodeType.Stylesheet:\n return this.visitStylesheet( node);\n case NodeType.FontFace:\n return this.visitFontFace( node);\n case NodeType.Ruleset:\n return this.visitRuleSet( node);\n case NodeType.Selector:\n return this.visitSelector( node);\n case NodeType.SimpleSelector:\n return this.visitSimpleSelector( node);\n case NodeType.Declaration:\n return this.visitDeclaration( node);\n case NodeType.Function:\n return this.visitFunction( node);\n case NodeType.FunctionDeclaration:\n return this.visitFunctionDeclaration( node);\n case NodeType.FunctionParameter:\n return this.visitFunctionParameter( node);\n case NodeType.FunctionArgument:\n return this.visitFunctionArgument( node);\n case NodeType.Term:\n return this.visitTerm( node);\n case NodeType.Declaration:\n return this.visitExpression( node);\n case NodeType.NumericValue:\n return this.visitNumericValue( node);\n case NodeType.Page:\n return this.visitPage( node);\n case NodeType.PageBoxMarginBox:\n return this.visitPageBoxMarginBox( node);\n case NodeType.Property:\n return this.visitProperty( node);\n case NodeType.NumericValue:\n return this.visitNodelist( node);\n case NodeType.Import:\n return this.visitImport( node);\n case NodeType.Namespace:\n return this.visitNamespace( node);\n case NodeType.Keyframe:\n return this.visitKeyframe( node);\n case NodeType.KeyframeSelector:\n return this.visitKeyframeSelector( node);\n case NodeType.MixinDeclaration:\n return this.visitMixinDeclaration( node);\n case NodeType.MixinReference:\n return this.visitMixinReference( node);\n case NodeType.Variable:\n return this.visitVariable( node);\n case NodeType.VariableDeclaration:\n return this.visitVariableDeclaration( node);\n }\n return this.visitUnknownNode(node);\n }\n\n public visitFontFace(node:FontFace):boolean {\n return true;\n }\n\n public visitKeyframe(node:Keyframe):boolean {\n return true;\n }\n\n public visitKeyframeSelector(node:KeyframeSelector):boolean {\n return true;\n }\n\n public visitStylesheet(node:Stylesheet):boolean {\n return true;\n }\n\n public visitProperty(Node:Property):boolean {\n return true;\n }\n\n public visitRuleSet(node:RuleSet):boolean {\n return true;\n }\n\n public visitSelector(node:Selector):boolean {\n return true;\n }\n\n public visitSimpleSelector(node:SimpleSelector):boolean {\n return true;\n }\n\n public visitDeclaration(node:Declaration):boolean {\n return true;\n }\n\n public visitFunction(node:Function):boolean {\n return true;\n }\n\n public visitFunctionDeclaration(node:FunctionDeclaration):boolean {\n return true;\n }\n\n public visitInvocation(node:Invocation):boolean {\n return true;\n }\n\n public visitTerm(node:Term):boolean {\n return true;\n }\n\n public visitImport(node:Import):boolean {\n return true;\n }\n\n public visitNamespace(node:Namespace):boolean {\n return true;\n }\n\n public visitExpression(node:Expression):boolean {\n return true;\n }\n\n public visitNumericValue(node:NumericValue):boolean {\n return true;\n }\n\n public visitPage(node:Page):boolean {\n return true;\n }\n\n public visitPageBoxMarginBox(node:PageBoxMarginBox):boolean {\n return true;\n }\n\n public visitNodelist(node:Nodelist):boolean {\n return true;\n }\n\n public visitVariableDeclaration(node:VariableDeclaration):boolean {\n return true;\n }\n\n public visitVariable(node:Variable):boolean {\n return true;\n }\n\n public visitMixinDeclaration(node:MixinDeclaration):boolean {\n return true;\n }\n\n public visitMixinReference(node:MixinReference):boolean {\n return true;\n }\n\n public visitUnknownNode(node:Node):boolean {\n return true;\n }\n}\n*/\nvar ParseErrorCollector = /** @class */ (function () {\n function ParseErrorCollector() {\n this.entries = [];\n }\n ParseErrorCollector.entries = function (node) {\n var visitor = new ParseErrorCollector();\n node.acceptVisitor(visitor);\n return visitor.entries;\n };\n ParseErrorCollector.prototype.visitNode = function (node) {\n if (node.isErroneous()) {\n node.collectIssues(this.entries);\n }\n return true;\n };\n return ParseErrorCollector;\n}());\nexport { ParseErrorCollector };\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction format(message, args) {\r\n var result;\r\n if (args.length === 0) {\r\n result = message;\r\n }\r\n else {\r\n result = message.replace(/\\{(\\d+)\\}/g, function (match, rest) {\r\n var index = rest[0];\r\n return typeof args[index] !== 'undefined' ? args[index] : match;\r\n });\r\n }\r\n return result;\r\n}\r\nfunction localize(key, message) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n return format(message, args);\r\n}\r\nexport function loadMessageBundle(file) {\r\n return localize;\r\n}\r\nexport function config(opt) {\r\n return loadMessageBundle;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\n * 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'use strict';\nimport * as nls from './../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nvar CSSIssueType = /** @class */ (function () {\n function CSSIssueType(id, message) {\n this.id = id;\n this.message = message;\n }\n return CSSIssueType;\n}());\nexport { CSSIssueType };\nexport var ParseError = {\n NumberExpected: new CSSIssueType('css-numberexpected', localize('expected.number', \"number expected\")),\n ConditionExpected: new CSSIssueType('css-conditionexpected', localize('expected.condt', \"condition expected\")),\n RuleOrSelectorExpected: new CSSIssueType('css-ruleorselectorexpected', localize('expected.ruleorselector', \"at-rule or selector expected\")),\n DotExpected: new CSSIssueType('css-dotexpected', localize('expected.dot', \"dot expected\")),\n ColonExpected: new CSSIssueType('css-colonexpected', localize('expected.colon', \"colon expected\")),\n SemiColonExpected: new CSSIssueType('css-semicolonexpected', localize('expected.semicolon', \"semi-colon expected\")),\n TermExpected: new CSSIssueType('css-termexpected', localize('expected.term', \"term expected\")),\n ExpressionExpected: new CSSIssueType('css-expressionexpected', localize('expected.expression', \"expression expected\")),\n OperatorExpected: new CSSIssueType('css-operatorexpected', localize('expected.operator', \"operator expected\")),\n IdentifierExpected: new CSSIssueType('css-identifierexpected', localize('expected.ident', \"identifier expected\")),\n PercentageExpected: new CSSIssueType('css-percentageexpected', localize('expected.percentage', \"percentage expected\")),\n URIOrStringExpected: new CSSIssueType('css-uriorstringexpected', localize('expected.uriorstring', \"uri or string expected\")),\n URIExpected: new CSSIssueType('css-uriexpected', localize('expected.uri', \"URI expected\")),\n VariableNameExpected: new CSSIssueType('css-varnameexpected', localize('expected.varname', \"variable name expected\")),\n VariableValueExpected: new CSSIssueType('css-varvalueexpected', localize('expected.varvalue', \"variable value expected\")),\n PropertyValueExpected: new CSSIssueType('css-propertyvalueexpected', localize('expected.propvalue', \"property value expected\")),\n LeftCurlyExpected: new CSSIssueType('css-lcurlyexpected', localize('expected.lcurly', \"{ expected\")),\n RightCurlyExpected: new CSSIssueType('css-rcurlyexpected', localize('expected.rcurly', \"} expected\")),\n LeftSquareBracketExpected: new CSSIssueType('css-rbracketexpected', localize('expected.lsquare', \"[ expected\")),\n RightSquareBracketExpected: new CSSIssueType('css-lbracketexpected', localize('expected.rsquare', \"] expected\")),\n LeftParenthesisExpected: new CSSIssueType('css-lparentexpected', localize('expected.lparen', \"( expected\")),\n RightParenthesisExpected: new CSSIssueType('css-rparentexpected', localize('expected.rparent', \") expected\")),\n CommaExpected: new CSSIssueType('css-commaexpected', localize('expected.comma', \"comma expected\")),\n PageDirectiveOrDeclarationExpected: new CSSIssueType('css-pagedirordeclexpected', localize('expected.pagedirordecl', \"page directive or declaraton expected\")),\n UnknownAtRule: new CSSIssueType('css-unknownatrule', localize('unknown.atrule', \"at-rule unknown\")),\n UnknownKeyword: new CSSIssueType('css-unknownkeyword', localize('unknown.keyword', \"unknown keyword\")),\n SelectorExpected: new CSSIssueType('css-selectorexpected', localize('expected.selector', \"selector expected\")),\n StringLiteralExpected: new CSSIssueType('css-stringliteralexpected', localize('expected.stringliteral', \"string literal expected\")),\n WhitespaceExpected: new CSSIssueType('css-whitespaceexpected', localize('expected.whitespace', \"whitespace expected\")),\n MediaQueryExpected: new CSSIssueType('css-mediaqueryexpected', localize('expected.mediaquery', \"media query expected\")),\n IdentifierOrWildcardExpected: new CSSIssueType('css-idorwildcardexpected', localize('expected.idorwildcard', \"identifier or wildcard expected\")),\n WildcardExpected: new CSSIssueType('css-wildcardexpected', localize('expected.wildcard', \"wildcard expected\")),\n IdentifierOrVariableExpected: new CSSIssueType('css-idorvarexpected', localize('expected.idorvar', \"identifier or variable expected\")),\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'use strict';\nexport var browserNames = {\n E: 'Edge',\n FF: 'Firefox',\n S: 'Safari',\n C: 'Chrome',\n IE: 'IE',\n O: 'Opera'\n};\nfunction getEntryStatus(status) {\n switch (status) {\n case 'experimental':\n return '⚠️ Property is experimental. Be cautious when using it.️\\n\\n';\n case 'nonstandard':\n return '🚨️ Property is nonstandard. Avoid using it.\\n\\n';\n case 'obsolete':\n return '🚨️️️ Property is obsolete. Avoid using it.\\n\\n';\n default:\n return '';\n }\n}\nexport function getEntryDescription(entry, doesSupportMarkdown, settings) {\n var result;\n if (doesSupportMarkdown) {\n result = {\n kind: 'markdown',\n value: getEntryMarkdownDescription(entry, settings)\n };\n }\n else {\n result = {\n kind: 'plaintext',\n value: getEntryStringDescription(entry, settings)\n };\n }\n if (result.value === '') {\n return undefined;\n }\n return result;\n}\nexport function textToMarkedString(text) {\n text = text.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n return text.replace(//g, '>');\n}\nfunction getEntryStringDescription(entry, settings) {\n if (!entry.description || entry.description === '') {\n return '';\n }\n if (typeof entry.description !== 'string') {\n return entry.description.value;\n }\n var result = '';\n if ((settings === null || settings === void 0 ? void 0 : settings.documentation) !== false) {\n if (entry.status) {\n result += getEntryStatus(entry.status);\n }\n result += entry.description;\n var browserLabel = getBrowserLabel(entry.browsers);\n if (browserLabel) {\n result += '\\n(' + browserLabel + ')';\n }\n if ('syntax' in entry) {\n result += \"\\n\\nSyntax: \" + entry.syntax;\n }\n }\n if (entry.references && entry.references.length > 0 && (settings === null || settings === void 0 ? void 0 : settings.references) !== false) {\n if (result.length > 0) {\n result += '\\n\\n';\n }\n result += entry.references.map(function (r) {\n return r.name + \": \" + r.url;\n }).join(' | ');\n }\n return result;\n}\nfunction getEntryMarkdownDescription(entry, settings) {\n if (!entry.description || entry.description === '') {\n return '';\n }\n var result = '';\n if ((settings === null || settings === void 0 ? void 0 : settings.documentation) !== false) {\n if (entry.status) {\n result += getEntryStatus(entry.status);\n }\n var description = typeof entry.description === 'string' ? entry.description : entry.description.value;\n result += textToMarkedString(description);\n var browserLabel = getBrowserLabel(entry.browsers);\n if (browserLabel) {\n result += '\\n\\n(' + textToMarkedString(browserLabel) + ')';\n }\n if ('syntax' in entry && entry.syntax) {\n result += \"\\n\\nSyntax: \" + textToMarkedString(entry.syntax);\n }\n }\n if (entry.references && entry.references.length > 0 && (settings === null || settings === void 0 ? void 0 : settings.references) !== false) {\n if (result.length > 0) {\n result += '\\n\\n';\n }\n result += entry.references.map(function (r) {\n return \"[\" + r.name + \"](\" + r.url + \")\";\n }).join(' | ');\n }\n return result;\n}\n/**\n * Input is like `[\"E12\",\"FF49\",\"C47\",\"IE\",\"O\"]`\n * Output is like `Edge 12, Firefox 49, Chrome 47, IE, Opera`\n */\nexport function getBrowserLabel(browsers) {\n if (browsers === void 0) { browsers = []; }\n if (browsers.length === 0) {\n return null;\n }\n return browsers\n .map(function (b) {\n var result = '';\n var matches = b.match(/([A-Z]+)(\\d+)?/);\n var name = matches[1];\n var version = matches[2];\n if (name in browserNames) {\n result += browserNames[name];\n }\n if (version) {\n result += ' ' + version;\n }\n return result;\n })\n .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 *--------------------------------------------------------------------------------------------*/\nimport * as nodes from '../parser/cssNodes.js';\nimport * as nls from './../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nexport var colorFunctions = [\n { func: 'rgb($red, $green, $blue)', desc: localize('css.builtin.rgb', 'Creates a Color from red, green, and blue values.') },\n { func: 'rgba($red, $green, $blue, $alpha)', desc: localize('css.builtin.rgba', 'Creates a Color from red, green, blue, and alpha values.') },\n { func: 'hsl($hue, $saturation, $lightness)', desc: localize('css.builtin.hsl', 'Creates a Color from hue, saturation, and lightness values.') },\n { func: 'hsla($hue, $saturation, $lightness, $alpha)', desc: localize('css.builtin.hsla', 'Creates a Color from hue, saturation, lightness, and alpha values.') }\n];\nexport var colors = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgrey: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rebeccapurple: '#663399',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n};\nexport var colorKeywords = {\n 'currentColor': 'The value of the \\'color\\' property. The computed value of the \\'currentColor\\' keyword is the computed value of the \\'color\\' property. If the \\'currentColor\\' keyword is set on the \\'color\\' property itself, it is treated as \\'color:inherit\\' at parse time.',\n 'transparent': 'Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value.',\n};\nfunction getNumericValue(node, factor) {\n var val = node.getText();\n var m = val.match(/^([-+]?[0-9]*\\.?[0-9]+)(%?)$/);\n if (m) {\n if (m[2]) {\n factor = 100.0;\n }\n var result = parseFloat(m[1]) / factor;\n if (result >= 0 && result <= 1) {\n return result;\n }\n }\n throw new Error();\n}\nfunction getAngle(node) {\n var val = node.getText();\n var m = val.match(/^([-+]?[0-9]*\\.?[0-9]+)(deg)?$/);\n if (m) {\n return parseFloat(val) % 360;\n }\n throw new Error();\n}\nexport function isColorConstructor(node) {\n var name = node.getName();\n if (!name) {\n return false;\n }\n return /^(rgb|rgba|hsl|hsla)$/gi.test(name);\n}\n/**\n * Returns true if the node is a color value - either\n * defined a hex number, as rgb or rgba function, or\n * as color name.\n */\nexport function isColorValue(node) {\n if (node.type === nodes.NodeType.HexColorValue) {\n return true;\n }\n else if (node.type === nodes.NodeType.Function) {\n return isColorConstructor(node);\n }\n else if (node.type === nodes.NodeType.Identifier) {\n if (node.parent && node.parent.type !== nodes.NodeType.Term) {\n return false;\n }\n var candidateColor = node.getText().toLowerCase();\n if (candidateColor === 'none') {\n return false;\n }\n if (colors[candidateColor]) {\n return true;\n }\n }\n return false;\n}\nvar Digit0 = 48;\nvar Digit9 = 57;\nvar A = 65;\nvar F = 70;\nvar a = 97;\nvar f = 102;\nexport function hexDigit(charCode) {\n if (charCode < Digit0) {\n return 0;\n }\n if (charCode <= Digit9) {\n return charCode - Digit0;\n }\n if (charCode < a) {\n charCode += (a - A);\n }\n if (charCode >= a && charCode <= f) {\n return charCode - a + 10;\n }\n return 0;\n}\nexport function colorFromHex(text) {\n if (text[0] !== '#') {\n return null;\n }\n switch (text.length) {\n case 4:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0,\n green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0,\n blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0,\n alpha: 1\n };\n case 5:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0,\n green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0,\n blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0,\n alpha: (hexDigit(text.charCodeAt(4)) * 0x11) / 255.0,\n };\n case 7:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0,\n green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0,\n blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0,\n alpha: 1\n };\n case 9:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0,\n green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0,\n blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0,\n alpha: (hexDigit(text.charCodeAt(7)) * 0x10 + hexDigit(text.charCodeAt(8))) / 255.0\n };\n }\n return null;\n}\nexport function colorFrom256RGB(red, green, blue, alpha) {\n if (alpha === void 0) { alpha = 1.0; }\n return {\n red: red / 255.0,\n green: green / 255.0,\n blue: blue / 255.0,\n alpha: alpha\n };\n}\nexport function colorFromHSL(hue, sat, light, alpha) {\n if (alpha === void 0) { alpha = 1.0; }\n hue = hue / 60.0;\n if (sat === 0) {\n return { red: light, green: light, blue: light, alpha: alpha };\n }\n else {\n var hueToRgb = function (t1, t2, hue) {\n while (hue < 0) {\n hue += 6;\n }\n while (hue >= 6) {\n hue -= 6;\n }\n if (hue < 1) {\n return (t2 - t1) * hue + t1;\n }\n if (hue < 3) {\n return t2;\n }\n if (hue < 4) {\n return (t2 - t1) * (4 - hue) + t1;\n }\n return t1;\n };\n var t2 = light <= 0.5 ? (light * (sat + 1)) : (light + sat - (light * sat));\n var t1 = light * 2 - t2;\n return { red: hueToRgb(t1, t2, hue + 2), green: hueToRgb(t1, t2, hue), blue: hueToRgb(t1, t2, hue - 2), alpha: alpha };\n }\n}\nexport function hslFromColor(rgba) {\n var r = rgba.red;\n var g = rgba.green;\n var b = rgba.blue;\n var a = rgba.alpha;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (min + max) / 2;\n var chroma = max - min;\n if (chroma > 0) {\n s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1);\n switch (max) {\n case r:\n h = (g - b) / chroma + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / chroma + 2;\n break;\n case b:\n h = (r - g) / chroma + 4;\n break;\n }\n h *= 60;\n h = Math.round(h);\n }\n return { h: h, s: s, l: l, a: a };\n}\nexport function getColorValue(node) {\n if (node.type === nodes.NodeType.HexColorValue) {\n var text = node.getText();\n return colorFromHex(text);\n }\n else if (node.type === nodes.NodeType.Function) {\n var functionNode = node;\n var name = functionNode.getName();\n var colorValues = functionNode.getArguments().getChildren();\n if (!name || colorValues.length < 3 || colorValues.length > 4) {\n return null;\n }\n try {\n var alpha = colorValues.length === 4 ? getNumericValue(colorValues[3], 1) : 1;\n if (name === 'rgb' || name === 'rgba') {\n return {\n red: getNumericValue(colorValues[0], 255.0),\n green: getNumericValue(colorValues[1], 255.0),\n blue: getNumericValue(colorValues[2], 255.0),\n alpha: alpha\n };\n }\n else if (name === 'hsl' || name === 'hsla') {\n var h = getAngle(colorValues[0]);\n var s = getNumericValue(colorValues[1], 100.0);\n var l = getNumericValue(colorValues[2], 100.0);\n return colorFromHSL(h, s, l, alpha);\n }\n }\n catch (e) {\n // parse error on numeric value\n return null;\n }\n }\n else if (node.type === nodes.NodeType.Identifier) {\n if (node.parent && node.parent.type !== nodes.NodeType.Term) {\n return null;\n }\n var term = node.parent;\n if (term && term.parent && term.parent.type === nodes.NodeType.BinaryExpression) {\n var expression = term.parent;\n if (expression.parent && expression.parent.type === nodes.NodeType.ListEntry && expression.parent.key === expression) {\n return null;\n }\n }\n var candidateColor = node.getText().toLowerCase();\n if (candidateColor === 'none') {\n return null;\n }\n var colorHex = colors[candidateColor];\n if (colorHex) {\n return colorFromHex(colorHex);\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 *--------------------------------------------------------------------------------------------*/\n'use strict';\nexport var positionKeywords = {\n 'bottom': 'Computes to ‘100%’ for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.',\n 'center': 'Computes to ‘50%’ (‘left 50%’) for the horizontal position if the horizontal position is not otherwise specified, or ‘50%’ (‘top 50%’) for the vertical position if it is.',\n 'left': 'Computes to ‘0%’ for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.',\n 'right': 'Computes to ‘100%’ for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.',\n 'top': 'Computes to ‘0%’ for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset.'\n};\nexport var repeatStyleKeywords = {\n 'no-repeat': 'Placed once and not repeated in this direction.',\n 'repeat': 'Repeated in this direction as often as needed to cover the background painting area.',\n 'repeat-x': 'Computes to ‘repeat no-repeat’.',\n 'repeat-y': 'Computes to ‘no-repeat repeat’.',\n 'round': 'Repeated as often as will fit within the background positioning area. If it doesn’t fit a whole number of times, it is rescaled so that it does.',\n 'space': 'Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area.'\n};\nexport var lineStyleKeywords = {\n 'dashed': 'A series of square-ended dashes.',\n 'dotted': 'A series of round dots.',\n 'double': 'Two parallel solid lines with some space between them.',\n 'groove': 'Looks as if it were carved in the canvas.',\n 'hidden': 'Same as ‘none’, but has different behavior in the border conflict resolution rules for border-collapsed tables.',\n 'inset': 'Looks as if the content on the inside of the border is sunken into the canvas.',\n 'none': 'No border. Color and width are ignored.',\n 'outset': 'Looks as if the content on the inside of the border is coming out of the canvas.',\n 'ridge': 'Looks as if it were coming out of the canvas.',\n 'solid': 'A single line segment.'\n};\nexport var lineWidthKeywords = ['medium', 'thick', 'thin'];\nexport var boxKeywords = {\n 'border-box': 'The background is painted within (clipped to) the border box.',\n 'content-box': 'The background is painted within (clipped to) the content box.',\n 'padding-box': 'The background is painted within (clipped to) the padding box.'\n};\nexport var geometryBoxKeywords = {\n 'margin-box': 'Uses the margin box as reference box.',\n 'fill-box': 'Uses the object bounding box as reference box.',\n 'stroke-box': 'Uses the stroke bounding box as reference box.',\n 'view-box': 'Uses the nearest SVG viewport as reference box.'\n};\nexport var cssWideKeywords = {\n 'initial': 'Represents the value specified as the property’s initial value.',\n 'inherit': 'Represents the computed value of the property on the element’s parent.',\n 'unset': 'Acts as either `inherit` or `initial`, depending on whether the property is inherited or not.'\n};\nexport var imageFunctions = {\n 'url()': 'Reference an image file by URL',\n 'image()': 'Provide image fallbacks and annotations.',\n '-webkit-image-set()': 'Provide multiple resolutions. Remember to use unprefixed image-set() in addition.',\n 'image-set()': 'Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.',\n '-moz-element()': 'Use an element in the document as an image. Remember to use unprefixed element() in addition.',\n 'element()': 'Use an element in the document as an image.',\n 'cross-fade()': 'Indicates the two images to be combined and how far along in the transition the combination is.',\n '-webkit-gradient()': 'Deprecated. Use modern linear-gradient() or radial-gradient() instead.',\n '-webkit-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.',\n '-moz-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.',\n '-o-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.',\n 'linear-gradient()': 'A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.',\n '-webkit-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.',\n '-moz-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.',\n '-o-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.',\n 'repeating-linear-gradient()': 'Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.',\n '-webkit-radial-gradient()': 'Radial gradient. Remember to use unprefixed version in addition.',\n '-moz-radial-gradient()': 'Radial gradient. Remember to use unprefixed version in addition.',\n 'radial-gradient()': 'Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.',\n '-webkit-repeating-radial-gradient()': 'Repeating radial gradient. Remember to use unprefixed version in addition.',\n '-moz-repeating-radial-gradient()': 'Repeating radial gradient. Remember to use unprefixed version in addition.',\n 'repeating-radial-gradient()': 'Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.'\n};\nexport var transitionTimingFunctions = {\n 'ease': 'Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).',\n 'ease-in': 'Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).',\n 'ease-in-out': 'Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).',\n 'ease-out': 'Equivalent to cubic-bezier(0, 0, 0.58, 1.0).',\n 'linear': 'Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).',\n 'step-end': 'Equivalent to steps(1, end).',\n 'step-start': 'Equivalent to steps(1, start).',\n 'steps()': 'The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value “start” or “end”.',\n 'cubic-bezier()': 'Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).',\n 'cubic-bezier(0.6, -0.28, 0.735, 0.045)': 'Ease-in Back. Overshoots.',\n 'cubic-bezier(0.68, -0.55, 0.265, 1.55)': 'Ease-in-out Back. Overshoots.',\n 'cubic-bezier(0.175, 0.885, 0.32, 1.275)': 'Ease-out Back. Overshoots.',\n 'cubic-bezier(0.6, 0.04, 0.98, 0.335)': 'Ease-in Circular. Based on half circle.',\n 'cubic-bezier(0.785, 0.135, 0.15, 0.86)': 'Ease-in-out Circular. Based on half circle.',\n 'cubic-bezier(0.075, 0.82, 0.165, 1)': 'Ease-out Circular. Based on half circle.',\n 'cubic-bezier(0.55, 0.055, 0.675, 0.19)': 'Ease-in Cubic. Based on power of three.',\n 'cubic-bezier(0.645, 0.045, 0.355, 1)': 'Ease-in-out Cubic. Based on power of three.',\n 'cubic-bezier(0.215, 0.610, 0.355, 1)': 'Ease-out Cubic. Based on power of three.',\n 'cubic-bezier(0.95, 0.05, 0.795, 0.035)': 'Ease-in Exponential. Based on two to the power ten.',\n 'cubic-bezier(1, 0, 0, 1)': 'Ease-in-out Exponential. Based on two to the power ten.',\n 'cubic-bezier(0.19, 1, 0.22, 1)': 'Ease-out Exponential. Based on two to the power ten.',\n 'cubic-bezier(0.47, 0, 0.745, 0.715)': 'Ease-in Sine.',\n 'cubic-bezier(0.445, 0.05, 0.55, 0.95)': 'Ease-in-out Sine.',\n 'cubic-bezier(0.39, 0.575, 0.565, 1)': 'Ease-out Sine.',\n 'cubic-bezier(0.55, 0.085, 0.68, 0.53)': 'Ease-in Quadratic. Based on power of two.',\n 'cubic-bezier(0.455, 0.03, 0.515, 0.955)': 'Ease-in-out Quadratic. Based on power of two.',\n 'cubic-bezier(0.25, 0.46, 0.45, 0.94)': 'Ease-out Quadratic. Based on power of two.',\n 'cubic-bezier(0.895, 0.03, 0.685, 0.22)': 'Ease-in Quartic. Based on power of four.',\n 'cubic-bezier(0.77, 0, 0.175, 1)': 'Ease-in-out Quartic. Based on power of four.',\n 'cubic-bezier(0.165, 0.84, 0.44, 1)': 'Ease-out Quartic. Based on power of four.',\n 'cubic-bezier(0.755, 0.05, 0.855, 0.06)': 'Ease-in Quintic. Based on power of five.',\n 'cubic-bezier(0.86, 0, 0.07, 1)': 'Ease-in-out Quintic. Based on power of five.',\n 'cubic-bezier(0.23, 1, 0.320, 1)': 'Ease-out Quintic. Based on power of five.'\n};\nexport var basicShapeFunctions = {\n 'circle()': 'Defines a circle.',\n 'ellipse()': 'Defines an ellipse.',\n 'inset()': 'Defines an inset rectangle.',\n 'polygon()': 'Defines a polygon.'\n};\nexport var units = {\n 'length': ['em', 'rem', 'ex', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ch', 'vw', 'vh', 'vmin', 'vmax'],\n 'angle': ['deg', 'rad', 'grad', 'turn'],\n 'time': ['ms', 's'],\n 'frequency': ['Hz', 'kHz'],\n 'resolution': ['dpi', 'dpcm', 'dppx'],\n 'percentage': ['%', 'fr']\n};\nexport var html5Tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption',\n 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link',\n 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td',\n 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'const', 'video', 'wbr'];\nexport var svgElements = ['circle', 'clipPath', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting',\n 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology',\n 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'foreignObject', 'g', 'hatch', 'hatchpath', 'image', 'line', 'linearGradient',\n 'marker', 'mask', 'mesh', 'meshpatch', 'meshrow', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'set', 'solidcolor', 'stop', 'svg', 'switch',\n 'symbol', 'text', 'textPath', 'tspan', 'use', 'view'];\nexport var pageBoxDirectives = [\n '@bottom-center', '@bottom-left', '@bottom-left-corner', '@bottom-right', '@bottom-right-corner',\n '@left-bottom', '@left-middle', '@left-top', '@right-bottom', '@right-middle', '@right-top',\n '@top-center', '@top-left', '@top-left-corner', '@top-right', '@top-right-corner'\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'use strict';\nexport function values(obj) {\n return Object.keys(obj).map(function (key) { return obj[key]; });\n}\nexport function isDefined(obj) {\n return typeof obj !== '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 *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { TokenType, Scanner } from './cssScanner.js';\nimport * as nodes from './cssNodes.js';\nimport { ParseError } from './cssErrors.js';\nimport * as languageFacts from '../languageFacts/facts.js';\nimport { isDefined } from '../utils/objects.js';\n/// \n/// A parser for the css core specification. See for reference:\n/// https://www.w3.org/TR/CSS21/grammar.html\n/// http://www.w3.org/TR/CSS21/syndata.html#tokenization\n/// \nvar Parser = /** @class */ (function () {\n function Parser(scnr) {\n if (scnr === void 0) { scnr = new Scanner(); }\n this.keyframeRegex = /^@(\\-(webkit|ms|moz|o)\\-)?keyframes$/i;\n this.scanner = scnr;\n this.token = { type: TokenType.EOF, offset: -1, len: 0, text: '' };\n this.prevToken = undefined;\n }\n Parser.prototype.peekIdent = function (text) {\n return TokenType.Ident === this.token.type && text.length === this.token.text.length && text === this.token.text.toLowerCase();\n };\n Parser.prototype.peekKeyword = function (text) {\n return TokenType.AtKeyword === this.token.type && text.length === this.token.text.length && text === this.token.text.toLowerCase();\n };\n Parser.prototype.peekDelim = function (text) {\n return TokenType.Delim === this.token.type && text === this.token.text;\n };\n Parser.prototype.peek = function (type) {\n return type === this.token.type;\n };\n Parser.prototype.peekOne = function (types) {\n return types.indexOf(this.token.type) !== -1;\n };\n Parser.prototype.peekRegExp = function (type, regEx) {\n if (type !== this.token.type) {\n return false;\n }\n return regEx.test(this.token.text);\n };\n Parser.prototype.hasWhitespace = function () {\n return !!this.prevToken && (this.prevToken.offset + this.prevToken.len !== this.token.offset);\n };\n Parser.prototype.consumeToken = function () {\n this.prevToken = this.token;\n this.token = this.scanner.scan();\n };\n Parser.prototype.mark = function () {\n return {\n prev: this.prevToken,\n curr: this.token,\n pos: this.scanner.pos()\n };\n };\n Parser.prototype.restoreAtMark = function (mark) {\n this.prevToken = mark.prev;\n this.token = mark.curr;\n this.scanner.goBackTo(mark.pos);\n };\n Parser.prototype.try = function (func) {\n var pos = this.mark();\n var node = func();\n if (!node) {\n this.restoreAtMark(pos);\n return null;\n }\n return node;\n };\n Parser.prototype.acceptOneKeyword = function (keywords) {\n if (TokenType.AtKeyword === this.token.type) {\n for (var _i = 0, keywords_1 = keywords; _i < keywords_1.length; _i++) {\n var keyword = keywords_1[_i];\n if (keyword.length === this.token.text.length && keyword === this.token.text.toLowerCase()) {\n this.consumeToken();\n return true;\n }\n }\n }\n return false;\n };\n Parser.prototype.accept = function (type) {\n if (type === this.token.type) {\n this.consumeToken();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptIdent = function (text) {\n if (this.peekIdent(text)) {\n this.consumeToken();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptKeyword = function (text) {\n if (this.peekKeyword(text)) {\n this.consumeToken();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptDelim = function (text) {\n if (this.peekDelim(text)) {\n this.consumeToken();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptRegexp = function (regEx) {\n if (regEx.test(this.token.text)) {\n this.consumeToken();\n return true;\n }\n return false;\n };\n Parser.prototype._parseRegexp = function (regEx) {\n var node = this.createNode(nodes.NodeType.Identifier);\n do { } while (this.acceptRegexp(regEx));\n return this.finish(node);\n };\n Parser.prototype.acceptUnquotedString = function () {\n var pos = this.scanner.pos();\n this.scanner.goBackTo(this.token.offset);\n var unquoted = this.scanner.scanUnquotedString();\n if (unquoted) {\n this.token = unquoted;\n this.consumeToken();\n return true;\n }\n this.scanner.goBackTo(pos);\n return false;\n };\n Parser.prototype.resync = function (resyncTokens, resyncStopTokens) {\n while (true) {\n if (resyncTokens && resyncTokens.indexOf(this.token.type) !== -1) {\n this.consumeToken();\n return true;\n }\n else if (resyncStopTokens && resyncStopTokens.indexOf(this.token.type) !== -1) {\n return true;\n }\n else {\n if (this.token.type === TokenType.EOF) {\n return false;\n }\n this.token = this.scanner.scan();\n }\n }\n };\n Parser.prototype.createNode = function (nodeType) {\n return new nodes.Node(this.token.offset, this.token.len, nodeType);\n };\n Parser.prototype.create = function (ctor) {\n return new ctor(this.token.offset, this.token.len);\n };\n Parser.prototype.finish = function (node, error, resyncTokens, resyncStopTokens) {\n // parseNumeric misuses error for boolean flagging (however the real error mustn't be a false)\n // + nodelist offsets mustn't be modified, because there is a offset hack in rulesets for smartselection\n if (!(node instanceof nodes.Nodelist)) {\n if (error) {\n this.markError(node, error, resyncTokens, resyncStopTokens);\n }\n // set the node end position\n if (this.prevToken) {\n // length with more elements belonging together\n var prevEnd = this.prevToken.offset + this.prevToken.len;\n node.length = prevEnd > node.offset ? prevEnd - node.offset : 0; // offset is taken from current token, end from previous: Use 0 for empty nodes\n }\n }\n return node;\n };\n Parser.prototype.markError = function (node, error, resyncTokens, resyncStopTokens) {\n if (this.token !== this.lastErrorToken) { // do not report twice on the same token\n node.addIssue(new nodes.Marker(node, error, nodes.Level.Error, undefined, this.token.offset, this.token.len));\n this.lastErrorToken = this.token;\n }\n if (resyncTokens || resyncStopTokens) {\n this.resync(resyncTokens, resyncStopTokens);\n }\n };\n Parser.prototype.parseStylesheet = function (textDocument) {\n var versionId = textDocument.version;\n var text = textDocument.getText();\n var textProvider = function (offset, length) {\n if (textDocument.version !== versionId) {\n throw new Error('Underlying model has changed, AST is no longer valid');\n }\n return text.substr(offset, length);\n };\n return this.internalParse(text, this._parseStylesheet, textProvider);\n };\n Parser.prototype.internalParse = function (input, parseFunc, textProvider) {\n this.scanner.setSource(input);\n this.token = this.scanner.scan();\n var node = parseFunc.bind(this)();\n if (node) {\n if (textProvider) {\n node.textProvider = textProvider;\n }\n else {\n node.textProvider = function (offset, length) { return input.substr(offset, length); };\n }\n }\n return node;\n };\n Parser.prototype._parseStylesheet = function () {\n var node = this.create(nodes.Stylesheet);\n while (node.addChild(this._parseStylesheetStart())) {\n // Parse statements only valid at the beginning of stylesheets.\n }\n var inRecovery = false;\n do {\n var hasMatch = false;\n do {\n hasMatch = false;\n var statement = this._parseStylesheetStatement();\n if (statement) {\n node.addChild(statement);\n hasMatch = true;\n inRecovery = false;\n if (!this.peek(TokenType.EOF) && this._needsSemicolonAfter(statement) && !this.accept(TokenType.SemiColon)) {\n this.markError(node, ParseError.SemiColonExpected);\n }\n }\n while (this.accept(TokenType.SemiColon) || this.accept(TokenType.CDO) || this.accept(TokenType.CDC)) {\n // accept empty statements\n hasMatch = true;\n inRecovery = false;\n }\n } while (hasMatch);\n if (this.peek(TokenType.EOF)) {\n break;\n }\n if (!inRecovery) {\n if (this.peek(TokenType.AtKeyword)) {\n this.markError(node, ParseError.UnknownAtRule);\n }\n else {\n this.markError(node, ParseError.RuleOrSelectorExpected);\n }\n inRecovery = true;\n }\n this.consumeToken();\n } while (!this.peek(TokenType.EOF));\n return this.finish(node);\n };\n Parser.prototype._parseStylesheetStart = function () {\n return this._parseCharset();\n };\n Parser.prototype._parseStylesheetStatement = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n if (this.peek(TokenType.AtKeyword)) {\n return this._parseStylesheetAtStatement(isNested);\n }\n return this._parseRuleset(isNested);\n };\n Parser.prototype._parseStylesheetAtStatement = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n return this._parseImport()\n || this._parseMedia(isNested)\n || this._parsePage()\n || this._parseFontFace()\n || this._parseKeyframe()\n || this._parseSupports(isNested)\n || this._parseViewPort()\n || this._parseNamespace()\n || this._parseDocument()\n || this._parseUnknownAtRule();\n };\n Parser.prototype._tryParseRuleset = function (isNested) {\n var mark = this.mark();\n if (this._parseSelector(isNested)) {\n while (this.accept(TokenType.Comma) && this._parseSelector(isNested)) {\n // loop\n }\n if (this.accept(TokenType.CurlyL)) {\n this.restoreAtMark(mark);\n return this._parseRuleset(isNested);\n }\n }\n this.restoreAtMark(mark);\n return null;\n };\n Parser.prototype._parseRuleset = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n var node = this.create(nodes.RuleSet);\n var selectors = node.getSelectors();\n if (!selectors.addChild(this._parseSelector(isNested))) {\n return null;\n }\n while (this.accept(TokenType.Comma)) {\n if (!selectors.addChild(this._parseSelector(isNested))) {\n return this.finish(node, ParseError.SelectorExpected);\n }\n }\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._parseRuleSetDeclarationAtStatement = function () {\n return this._parseUnknownAtRule();\n };\n Parser.prototype._parseRuleSetDeclaration = function () {\n // https://www.w3.org/TR/css-syntax-3/#consume-a-list-of-declarations0\n if (this.peek(TokenType.AtKeyword)) {\n return this._parseRuleSetDeclarationAtStatement();\n }\n return this._parseDeclaration();\n };\n Parser.prototype._needsSemicolonAfter = function (node) {\n switch (node.type) {\n case nodes.NodeType.Keyframe:\n case nodes.NodeType.ViewPort:\n case nodes.NodeType.Media:\n case nodes.NodeType.Ruleset:\n case nodes.NodeType.Namespace:\n case nodes.NodeType.If:\n case nodes.NodeType.For:\n case nodes.NodeType.Each:\n case nodes.NodeType.While:\n case nodes.NodeType.MixinDeclaration:\n case nodes.NodeType.FunctionDeclaration:\n case nodes.NodeType.MixinContentDeclaration:\n return false;\n case nodes.NodeType.ExtendsReference:\n case nodes.NodeType.MixinContentReference:\n case nodes.NodeType.ReturnStatement:\n case nodes.NodeType.MediaQuery:\n case nodes.NodeType.Debug:\n case nodes.NodeType.Import:\n case nodes.NodeType.AtApplyRule:\n case nodes.NodeType.CustomPropertyDeclaration:\n return true;\n case nodes.NodeType.VariableDeclaration:\n return node.needsSemicolon;\n case nodes.NodeType.MixinReference:\n return !node.getContent();\n case nodes.NodeType.Declaration:\n return !node.getNestedProperties();\n }\n return false;\n };\n Parser.prototype._parseDeclarations = function (parseDeclaration) {\n var node = this.create(nodes.Declarations);\n if (!this.accept(TokenType.CurlyL)) {\n return null;\n }\n var decl = parseDeclaration();\n while (node.addChild(decl)) {\n if (this.peek(TokenType.CurlyR)) {\n break;\n }\n if (this._needsSemicolonAfter(decl) && !this.accept(TokenType.SemiColon)) {\n return this.finish(node, ParseError.SemiColonExpected, [TokenType.SemiColon, TokenType.CurlyR]);\n }\n // We accepted semicolon token. Link it to declaration.\n if (decl && this.prevToken && this.prevToken.type === TokenType.SemiColon) {\n decl.semicolonPosition = this.prevToken.offset;\n }\n while (this.accept(TokenType.SemiColon)) {\n // accept empty statements\n }\n decl = parseDeclaration();\n }\n if (!this.accept(TokenType.CurlyR)) {\n return this.finish(node, ParseError.RightCurlyExpected, [TokenType.CurlyR, TokenType.SemiColon]);\n }\n return this.finish(node);\n };\n Parser.prototype._parseBody = function (node, parseDeclaration) {\n if (!node.setDeclarations(this._parseDeclarations(parseDeclaration))) {\n return this.finish(node, ParseError.LeftCurlyExpected, [TokenType.CurlyR, TokenType.SemiColon]);\n }\n return this.finish(node);\n };\n Parser.prototype._parseSelector = function (isNested) {\n var node = this.create(nodes.Selector);\n var hasContent = false;\n if (isNested) {\n // nested selectors can start with a combinator\n hasContent = node.addChild(this._parseCombinator());\n }\n while (node.addChild(this._parseSimpleSelector())) {\n hasContent = true;\n node.addChild(this._parseCombinator()); // optional\n }\n return hasContent ? this.finish(node) : null;\n };\n Parser.prototype._parseDeclaration = function (stopTokens) {\n var custonProperty = this._tryParseCustomPropertyDeclaration(stopTokens);\n if (custonProperty) {\n return custonProperty;\n }\n var node = this.create(nodes.Declaration);\n if (!node.setProperty(this._parseProperty())) {\n return null;\n }\n if (!this.accept(TokenType.Colon)) {\n return this.finish(node, ParseError.ColonExpected, [TokenType.Colon], stopTokens || [TokenType.SemiColon]);\n }\n if (this.prevToken) {\n node.colonPosition = this.prevToken.offset;\n }\n if (!node.setValue(this._parseExpr())) {\n return this.finish(node, ParseError.PropertyValueExpected);\n }\n node.addChild(this._parsePrio());\n if (this.peek(TokenType.SemiColon)) {\n node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist\n }\n return this.finish(node);\n };\n Parser.prototype._tryParseCustomPropertyDeclaration = function (stopTokens) {\n if (!this.peekRegExp(TokenType.Ident, /^--/)) {\n return null;\n }\n var node = this.create(nodes.CustomPropertyDeclaration);\n if (!node.setProperty(this._parseProperty())) {\n return null;\n }\n if (!this.accept(TokenType.Colon)) {\n return this.finish(node, ParseError.ColonExpected, [TokenType.Colon]);\n }\n if (this.prevToken) {\n node.colonPosition = this.prevToken.offset;\n }\n var mark = this.mark();\n if (this.peek(TokenType.CurlyL)) {\n // try to parse it as nested declaration\n var propertySet = this.create(nodes.CustomPropertySet);\n var declarations = this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));\n if (propertySet.setDeclarations(declarations) && !declarations.isErroneous(true)) {\n propertySet.addChild(this._parsePrio());\n if (this.peek(TokenType.SemiColon)) {\n this.finish(propertySet);\n node.setPropertySet(propertySet);\n node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist\n return this.finish(node);\n }\n }\n this.restoreAtMark(mark);\n }\n // try tp parse as expression\n var expression = this._parseExpr();\n if (expression && !expression.isErroneous(true)) {\n this._parsePrio();\n if (this.peekOne(stopTokens || [TokenType.SemiColon])) {\n node.setValue(expression);\n node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist\n return this.finish(node);\n }\n }\n this.restoreAtMark(mark);\n node.addChild(this._parseCustomPropertyValue(stopTokens));\n node.addChild(this._parsePrio());\n if (isDefined(node.colonPosition) && this.token.offset === node.colonPosition + 1) {\n return this.finish(node, ParseError.PropertyValueExpected);\n }\n return this.finish(node);\n };\n /**\n * Parse custom property values.\n *\n * Based on https://www.w3.org/TR/css-variables/#syntax\n *\n * This code is somewhat unusual, as the allowed syntax is incredibly broad,\n * parsing almost any sequence of tokens, save for a small set of exceptions.\n * Unbalanced delimitors, invalid tokens, and declaration\n * terminators like semicolons and !important directives (when not inside\n * of delimitors).\n */\n Parser.prototype._parseCustomPropertyValue = function (stopTokens) {\n var _this = this;\n if (stopTokens === void 0) { stopTokens = [TokenType.CurlyR]; }\n var node = this.create(nodes.Node);\n var isTopLevel = function () { return curlyDepth === 0 && parensDepth === 0 && bracketsDepth === 0; };\n var onStopToken = function () { return stopTokens.indexOf(_this.token.type) !== -1; };\n var curlyDepth = 0;\n var parensDepth = 0;\n var bracketsDepth = 0;\n done: while (true) {\n switch (this.token.type) {\n case TokenType.SemiColon:\n // A semicolon only ends things if we're not inside a delimitor.\n if (isTopLevel()) {\n break done;\n }\n break;\n case TokenType.Exclamation:\n // An exclamation ends the value if we're not inside delims.\n if (isTopLevel()) {\n break done;\n }\n break;\n case TokenType.CurlyL:\n curlyDepth++;\n break;\n case TokenType.CurlyR:\n curlyDepth--;\n if (curlyDepth < 0) {\n // The property value has been terminated without a semicolon, and\n // this is the last declaration in the ruleset.\n if (onStopToken() && parensDepth === 0 && bracketsDepth === 0) {\n break done;\n }\n return this.finish(node, ParseError.LeftCurlyExpected);\n }\n break;\n case TokenType.ParenthesisL:\n parensDepth++;\n break;\n case TokenType.ParenthesisR:\n parensDepth--;\n if (parensDepth < 0) {\n if (onStopToken() && bracketsDepth === 0 && curlyDepth === 0) {\n break done;\n }\n return this.finish(node, ParseError.LeftParenthesisExpected);\n }\n break;\n case TokenType.BracketL:\n bracketsDepth++;\n break;\n case TokenType.BracketR:\n bracketsDepth--;\n if (bracketsDepth < 0) {\n return this.finish(node, ParseError.LeftSquareBracketExpected);\n }\n break;\n case TokenType.BadString: // fall through\n break done;\n case TokenType.EOF:\n // We shouldn't have reached the end of input, something is\n // unterminated.\n var error = ParseError.RightCurlyExpected;\n if (bracketsDepth > 0) {\n error = ParseError.RightSquareBracketExpected;\n }\n else if (parensDepth > 0) {\n error = ParseError.RightParenthesisExpected;\n }\n return this.finish(node, error);\n }\n this.consumeToken();\n }\n return this.finish(node);\n };\n Parser.prototype._tryToParseDeclaration = function (stopTokens) {\n var mark = this.mark();\n if (this._parseProperty() && this.accept(TokenType.Colon)) {\n // looks like a declaration, go ahead\n this.restoreAtMark(mark);\n return this._parseDeclaration(stopTokens);\n }\n this.restoreAtMark(mark);\n return null;\n };\n Parser.prototype._parseProperty = function () {\n var node = this.create(nodes.Property);\n var mark = this.mark();\n if (this.acceptDelim('*') || this.acceptDelim('_')) {\n // support for IE 5.x, 6 and 7 star hack: see http://en.wikipedia.org/wiki/CSS_filter#Star_hack\n if (this.hasWhitespace()) {\n this.restoreAtMark(mark);\n return null;\n }\n }\n if (node.setIdentifier(this._parsePropertyIdentifier())) {\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._parsePropertyIdentifier = function () {\n return this._parseIdent();\n };\n Parser.prototype._parseCharset = function () {\n if (!this.peek(TokenType.Charset)) {\n return null;\n }\n var node = this.create(nodes.Node);\n this.consumeToken(); // charset\n if (!this.accept(TokenType.String)) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n if (!this.accept(TokenType.SemiColon)) {\n return this.finish(node, ParseError.SemiColonExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseImport = function () {\n if (!this.peekKeyword('@import')) {\n return null;\n }\n var node = this.create(nodes.Import);\n this.consumeToken(); // @import\n if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) {\n return this.finish(node, ParseError.URIOrStringExpected);\n }\n if (!this.peek(TokenType.SemiColon) && !this.peek(TokenType.EOF)) {\n node.setMedialist(this._parseMediaQueryList());\n }\n return this.finish(node);\n };\n Parser.prototype._parseNamespace = function () {\n // http://www.w3.org/TR/css3-namespace/\n // namespace : NAMESPACE_SYM S* [IDENT S*]? [STRING|URI] S* ';' S*\n if (!this.peekKeyword('@namespace')) {\n return null;\n }\n var node = this.create(nodes.Namespace);\n this.consumeToken(); // @namespace\n if (!node.addChild(this._parseURILiteral())) { // url literal also starts with ident\n node.addChild(this._parseIdent()); // optional prefix\n if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) {\n return this.finish(node, ParseError.URIExpected, [TokenType.SemiColon]);\n }\n }\n if (!this.accept(TokenType.SemiColon)) {\n return this.finish(node, ParseError.SemiColonExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseFontFace = function () {\n if (!this.peekKeyword('@font-face')) {\n return null;\n }\n var node = this.create(nodes.FontFace);\n this.consumeToken(); // @font-face\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._parseViewPort = function () {\n if (!this.peekKeyword('@-ms-viewport') &&\n !this.peekKeyword('@-o-viewport') &&\n !this.peekKeyword('@viewport')) {\n return null;\n }\n var node = this.create(nodes.ViewPort);\n this.consumeToken(); // @-ms-viewport\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._parseKeyframe = function () {\n if (!this.peekRegExp(TokenType.AtKeyword, this.keyframeRegex)) {\n return null;\n }\n var node = this.create(nodes.Keyframe);\n var atNode = this.create(nodes.Node);\n this.consumeToken(); // atkeyword\n node.setKeyword(this.finish(atNode));\n if (atNode.matches('@-ms-keyframes')) { // -ms-keyframes never existed\n this.markError(atNode, ParseError.UnknownKeyword);\n }\n if (!node.setIdentifier(this._parseKeyframeIdent())) {\n return this.finish(node, ParseError.IdentifierExpected, [TokenType.CurlyR]);\n }\n return this._parseBody(node, this._parseKeyframeSelector.bind(this));\n };\n Parser.prototype._parseKeyframeIdent = function () {\n return this._parseIdent([nodes.ReferenceType.Keyframe]);\n };\n Parser.prototype._parseKeyframeSelector = function () {\n var node = this.create(nodes.KeyframeSelector);\n if (!node.addChild(this._parseIdent()) && !this.accept(TokenType.Percentage)) {\n return null;\n }\n while (this.accept(TokenType.Comma)) {\n if (!node.addChild(this._parseIdent()) && !this.accept(TokenType.Percentage)) {\n return this.finish(node, ParseError.PercentageExpected);\n }\n }\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._tryParseKeyframeSelector = function () {\n var node = this.create(nodes.KeyframeSelector);\n var pos = this.mark();\n if (!node.addChild(this._parseIdent()) && !this.accept(TokenType.Percentage)) {\n return null;\n }\n while (this.accept(TokenType.Comma)) {\n if (!node.addChild(this._parseIdent()) && !this.accept(TokenType.Percentage)) {\n this.restoreAtMark(pos);\n return null;\n }\n }\n if (!this.peek(TokenType.CurlyL)) {\n this.restoreAtMark(pos);\n return null;\n }\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._parseSupports = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n // SUPPORTS_SYM S* supports_condition '{' S* ruleset* '}' S*\n if (!this.peekKeyword('@supports')) {\n return null;\n }\n var node = this.create(nodes.Supports);\n this.consumeToken(); // @supports\n node.addChild(this._parseSupportsCondition());\n return this._parseBody(node, this._parseSupportsDeclaration.bind(this, isNested));\n };\n Parser.prototype._parseSupportsDeclaration = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n if (isNested) {\n // if nested, the body can contain rulesets, but also declarations\n return this._tryParseRuleset(true)\n || this._tryToParseDeclaration()\n || this._parseStylesheetStatement(true);\n }\n return this._parseStylesheetStatement(false);\n };\n Parser.prototype._parseSupportsCondition = function () {\n // supports_condition : supports_negation | supports_conjunction | supports_disjunction | supports_condition_in_parens ;\n // supports_condition_in_parens: ( '(' S* supports_condition S* ')' ) | supports_declaration_condition | general_enclosed ;\n // supports_negation: NOT S+ supports_condition_in_parens ;\n // supports_conjunction: supports_condition_in_parens ( S+ AND S+ supports_condition_in_parens )+;\n // supports_disjunction: supports_condition_in_parens ( S+ OR S+ supports_condition_in_parens )+;\n // supports_declaration_condition: '(' S* declaration ')';\n // general_enclosed: ( FUNCTION | '(' ) ( any | unused )* ')' ;\n var node = this.create(nodes.SupportsCondition);\n if (this.acceptIdent('not')) {\n node.addChild(this._parseSupportsConditionInParens());\n }\n else {\n node.addChild(this._parseSupportsConditionInParens());\n if (this.peekRegExp(TokenType.Ident, /^(and|or)$/i)) {\n var text = this.token.text.toLowerCase();\n while (this.acceptIdent(text)) {\n node.addChild(this._parseSupportsConditionInParens());\n }\n }\n }\n return this.finish(node);\n };\n Parser.prototype._parseSupportsConditionInParens = function () {\n var node = this.create(nodes.SupportsCondition);\n if (this.accept(TokenType.ParenthesisL)) {\n if (this.prevToken) {\n node.lParent = this.prevToken.offset;\n }\n if (!node.addChild(this._tryToParseDeclaration([TokenType.ParenthesisR]))) {\n if (!this._parseSupportsCondition()) {\n return this.finish(node, ParseError.ConditionExpected);\n }\n }\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected, [TokenType.ParenthesisR], []);\n }\n if (this.prevToken) {\n node.rParent = this.prevToken.offset;\n }\n return this.finish(node);\n }\n else if (this.peek(TokenType.Ident)) {\n var pos = this.mark();\n this.consumeToken();\n if (!this.hasWhitespace() && this.accept(TokenType.ParenthesisL)) {\n var openParentCount = 1;\n while (this.token.type !== TokenType.EOF && openParentCount !== 0) {\n if (this.token.type === TokenType.ParenthesisL) {\n openParentCount++;\n }\n else if (this.token.type === TokenType.ParenthesisR) {\n openParentCount--;\n }\n this.consumeToken();\n }\n return this.finish(node);\n }\n else {\n this.restoreAtMark(pos);\n }\n }\n return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType.ParenthesisL]);\n };\n Parser.prototype._parseMediaDeclaration = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n if (isNested) {\n // if nested, the body can contain rulesets, but also declarations\n return this._tryParseRuleset(true)\n || this._tryToParseDeclaration()\n || this._parseStylesheetStatement(true);\n }\n return this._parseStylesheetStatement(false);\n };\n Parser.prototype._parseMedia = function (isNested) {\n if (isNested === void 0) { isNested = false; }\n // MEDIA_SYM S* media_query_list '{' S* ruleset* '}' S*\n // media_query_list : S* [media_query [ ',' S* media_query ]* ]?\n if (!this.peekKeyword('@media')) {\n return null;\n }\n var node = this.create(nodes.Media);\n this.consumeToken(); // @media\n if (!node.addChild(this._parseMediaQueryList())) {\n return this.finish(node, ParseError.MediaQueryExpected);\n }\n return this._parseBody(node, this._parseMediaDeclaration.bind(this, isNested));\n };\n Parser.prototype._parseMediaQueryList = function () {\n var node = this.create(nodes.Medialist);\n if (!node.addChild(this._parseMediaQuery([TokenType.CurlyL]))) {\n return this.finish(node, ParseError.MediaQueryExpected);\n }\n while (this.accept(TokenType.Comma)) {\n if (!node.addChild(this._parseMediaQuery([TokenType.CurlyL]))) {\n return this.finish(node, ParseError.MediaQueryExpected);\n }\n }\n return this.finish(node);\n };\n Parser.prototype._parseMediaQuery = function (resyncStopToken) {\n // http://www.w3.org/TR/css3-mediaqueries/\n // media_query : [ONLY | NOT]? S* IDENT S* [ AND S* expression ]* | expression [ AND S* expression ]*\n // expression : '(' S* IDENT S* [ ':' S* expr ]? ')' S*\n var node = this.create(nodes.MediaQuery);\n var parseExpression = true;\n var hasContent = false;\n if (!this.peek(TokenType.ParenthesisL)) {\n if (this.acceptIdent('only') || this.acceptIdent('not')) {\n // optional\n }\n if (!node.addChild(this._parseIdent())) {\n return null;\n }\n hasContent = true;\n parseExpression = this.acceptIdent('and');\n }\n while (parseExpression) {\n // Allow short-circuting for other language constructs.\n if (node.addChild(this._parseMediaContentStart())) {\n parseExpression = this.acceptIdent('and');\n continue;\n }\n if (!this.accept(TokenType.ParenthesisL)) {\n if (hasContent) {\n return this.finish(node, ParseError.LeftParenthesisExpected, [], resyncStopToken);\n }\n return null;\n }\n if (!node.addChild(this._parseMediaFeatureName())) {\n return this.finish(node, ParseError.IdentifierExpected, [], resyncStopToken);\n }\n if (this.accept(TokenType.Colon)) {\n if (!node.addChild(this._parseExpr())) {\n return this.finish(node, ParseError.TermExpected, [], resyncStopToken);\n }\n }\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected, [], resyncStopToken);\n }\n parseExpression = this.acceptIdent('and');\n }\n return this.finish(node);\n };\n Parser.prototype._parseMediaContentStart = function () {\n return null;\n };\n Parser.prototype._parseMediaFeatureName = function () {\n return this._parseIdent();\n };\n Parser.prototype._parseMedium = function () {\n var node = this.create(nodes.Node);\n if (node.addChild(this._parseIdent())) {\n return this.finish(node);\n }\n else {\n return null;\n }\n };\n Parser.prototype._parsePageDeclaration = function () {\n return this._parsePageMarginBox() || this._parseRuleSetDeclaration();\n };\n Parser.prototype._parsePage = function () {\n // http://www.w3.org/TR/css3-page/\n // page_rule : PAGE_SYM S* page_selector_list '{' S* page_body '}' S*\n // page_body : /* Can be empty */ declaration? [ ';' S* page_body ]? | page_margin_box page_body\n if (!this.peekKeyword('@page')) {\n return null;\n }\n var node = this.create(nodes.Page);\n this.consumeToken();\n if (node.addChild(this._parsePageSelector())) {\n while (this.accept(TokenType.Comma)) {\n if (!node.addChild(this._parsePageSelector())) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n }\n }\n return this._parseBody(node, this._parsePageDeclaration.bind(this));\n };\n Parser.prototype._parsePageMarginBox = function () {\n // page_margin_box : margin_sym S* '{' S* declaration? [ ';' S* declaration? ]* '}' S*\n if (!this.peek(TokenType.AtKeyword)) {\n return null;\n }\n var node = this.create(nodes.PageBoxMarginBox);\n if (!this.acceptOneKeyword(languageFacts.pageBoxDirectives)) {\n this.markError(node, ParseError.UnknownAtRule, [], [TokenType.CurlyL]);\n }\n return this._parseBody(node, this._parseRuleSetDeclaration.bind(this));\n };\n Parser.prototype._parsePageSelector = function () {\n // page_selector : pseudo_page+ | IDENT pseudo_page*\n // pseudo_page : ':' [ \"left\" | \"right\" | \"first\" | \"blank\" ];\n if (!this.peek(TokenType.Ident) && !this.peek(TokenType.Colon)) {\n return null;\n }\n var node = this.create(nodes.Node);\n node.addChild(this._parseIdent()); // optional ident\n if (this.accept(TokenType.Colon)) {\n if (!node.addChild(this._parseIdent())) { // optional ident\n return this.finish(node, ParseError.IdentifierExpected);\n }\n }\n return this.finish(node);\n };\n Parser.prototype._parseDocument = function () {\n // -moz-document is experimental but has been pushed to css4\n if (!this.peekKeyword('@-moz-document')) {\n return null;\n }\n var node = this.create(nodes.Document);\n this.consumeToken(); // @-moz-document\n this.resync([], [TokenType.CurlyL]); // ignore all the rules\n return this._parseBody(node, this._parseStylesheetStatement.bind(this));\n };\n // https://www.w3.org/TR/css-syntax-3/#consume-an-at-rule\n Parser.prototype._parseUnknownAtRule = function () {\n if (!this.peek(TokenType.AtKeyword)) {\n return null;\n }\n var node = this.create(nodes.UnknownAtRule);\n node.addChild(this._parseUnknownAtRuleName());\n var isTopLevel = function () { return curlyDepth === 0 && parensDepth === 0 && bracketsDepth === 0; };\n var curlyLCount = 0;\n var curlyDepth = 0;\n var parensDepth = 0;\n var bracketsDepth = 0;\n done: while (true) {\n switch (this.token.type) {\n case TokenType.SemiColon:\n if (isTopLevel()) {\n break done;\n }\n break;\n case TokenType.EOF:\n if (curlyDepth > 0) {\n return this.finish(node, ParseError.RightCurlyExpected);\n }\n else if (bracketsDepth > 0) {\n return this.finish(node, ParseError.RightSquareBracketExpected);\n }\n else if (parensDepth > 0) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n else {\n return this.finish(node);\n }\n case TokenType.CurlyL:\n curlyLCount++;\n curlyDepth++;\n break;\n case TokenType.CurlyR:\n curlyDepth--;\n // End of at-rule, consume CurlyR and return node\n if (curlyLCount > 0 && curlyDepth === 0) {\n this.consumeToken();\n if (bracketsDepth > 0) {\n return this.finish(node, ParseError.RightSquareBracketExpected);\n }\n else if (parensDepth > 0) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n break done;\n }\n if (curlyDepth < 0) {\n // The property value has been terminated without a semicolon, and\n // this is the last declaration in the ruleset.\n if (parensDepth === 0 && bracketsDepth === 0) {\n break done;\n }\n return this.finish(node, ParseError.LeftCurlyExpected);\n }\n break;\n case TokenType.ParenthesisL:\n parensDepth++;\n break;\n case TokenType.ParenthesisR:\n parensDepth--;\n if (parensDepth < 0) {\n return this.finish(node, ParseError.LeftParenthesisExpected);\n }\n break;\n case TokenType.BracketL:\n bracketsDepth++;\n break;\n case TokenType.BracketR:\n bracketsDepth--;\n if (bracketsDepth < 0) {\n return this.finish(node, ParseError.LeftSquareBracketExpected);\n }\n break;\n }\n this.consumeToken();\n }\n return node;\n };\n Parser.prototype._parseUnknownAtRuleName = function () {\n var node = this.create(nodes.Node);\n if (this.accept(TokenType.AtKeyword)) {\n return this.finish(node);\n }\n return node;\n };\n Parser.prototype._parseOperator = function () {\n // these are operators for binary expressions\n if (this.peekDelim('/') ||\n this.peekDelim('*') ||\n this.peekDelim('+') ||\n this.peekDelim('-') ||\n this.peek(TokenType.Dashmatch) ||\n this.peek(TokenType.Includes) ||\n this.peek(TokenType.SubstringOperator) ||\n this.peek(TokenType.PrefixOperator) ||\n this.peek(TokenType.SuffixOperator) ||\n this.peekDelim('=')) { // doesn't stick to the standard here\n var node = this.createNode(nodes.NodeType.Operator);\n this.consumeToken();\n return this.finish(node);\n }\n else {\n return null;\n }\n };\n Parser.prototype._parseUnaryOperator = function () {\n if (!this.peekDelim('+') && !this.peekDelim('-')) {\n return null;\n }\n var node = this.create(nodes.Node);\n this.consumeToken();\n return this.finish(node);\n };\n Parser.prototype._parseCombinator = function () {\n if (this.peekDelim('>')) {\n var node = this.create(nodes.Node);\n this.consumeToken();\n var mark = this.mark();\n if (!this.hasWhitespace() && this.acceptDelim('>')) {\n if (!this.hasWhitespace() && this.acceptDelim('>')) {\n node.type = nodes.NodeType.SelectorCombinatorShadowPiercingDescendant;\n return this.finish(node);\n }\n this.restoreAtMark(mark);\n }\n node.type = nodes.NodeType.SelectorCombinatorParent;\n return this.finish(node);\n }\n else if (this.peekDelim('+')) {\n var node = this.create(nodes.Node);\n this.consumeToken();\n node.type = nodes.NodeType.SelectorCombinatorSibling;\n return this.finish(node);\n }\n else if (this.peekDelim('~')) {\n var node = this.create(nodes.Node);\n this.consumeToken();\n node.type = nodes.NodeType.SelectorCombinatorAllSiblings;\n return this.finish(node);\n }\n else if (this.peekDelim('/')) {\n var node = this.create(nodes.Node);\n this.consumeToken();\n var mark = this.mark();\n if (!this.hasWhitespace() && this.acceptIdent('deep') && !this.hasWhitespace() && this.acceptDelim('/')) {\n node.type = nodes.NodeType.SelectorCombinatorShadowPiercingDescendant;\n return this.finish(node);\n }\n this.restoreAtMark(mark);\n }\n return null;\n };\n Parser.prototype._parseSimpleSelector = function () {\n // simple_selector\n // : element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+ ;\n var node = this.create(nodes.SimpleSelector);\n var c = 0;\n if (node.addChild(this._parseElementName())) {\n c++;\n }\n while ((c === 0 || !this.hasWhitespace()) && node.addChild(this._parseSimpleSelectorBody())) {\n c++;\n }\n return c > 0 ? this.finish(node) : null;\n };\n Parser.prototype._parseSimpleSelectorBody = function () {\n return this._parsePseudo() || this._parseHash() || this._parseClass() || this._parseAttrib();\n };\n Parser.prototype._parseSelectorIdent = function () {\n return this._parseIdent();\n };\n Parser.prototype._parseHash = function () {\n if (!this.peek(TokenType.Hash) && !this.peekDelim('#')) {\n return null;\n }\n var node = this.createNode(nodes.NodeType.IdentifierSelector);\n if (this.acceptDelim('#')) {\n if (this.hasWhitespace() || !node.addChild(this._parseSelectorIdent())) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n }\n else {\n this.consumeToken(); // TokenType.Hash\n }\n return this.finish(node);\n };\n Parser.prototype._parseClass = function () {\n // class: '.' IDENT ;\n if (!this.peekDelim('.')) {\n return null;\n }\n var node = this.createNode(nodes.NodeType.ClassSelector);\n this.consumeToken(); // '.'\n if (this.hasWhitespace() || !node.addChild(this._parseSelectorIdent())) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseElementName = function () {\n // element_name: (ns? '|')? IDENT | '*';\n var pos = this.mark();\n var node = this.createNode(nodes.NodeType.ElementNameSelector);\n node.addChild(this._parseNamespacePrefix());\n if (!node.addChild(this._parseSelectorIdent()) && !this.acceptDelim('*')) {\n this.restoreAtMark(pos);\n return null;\n }\n return this.finish(node);\n };\n Parser.prototype._parseNamespacePrefix = function () {\n var pos = this.mark();\n var node = this.createNode(nodes.NodeType.NamespacePrefix);\n if (!node.addChild(this._parseIdent()) && !this.acceptDelim('*')) {\n // ns is optional\n }\n if (!this.acceptDelim('|')) {\n this.restoreAtMark(pos);\n return null;\n }\n return this.finish(node);\n };\n Parser.prototype._parseAttrib = function () {\n // attrib : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']'\n if (!this.peek(TokenType.BracketL)) {\n return null;\n }\n var node = this.create(nodes.AttributeSelector);\n this.consumeToken(); // BracketL\n // Optional attrib namespace\n node.setNamespacePrefix(this._parseNamespacePrefix());\n if (!node.setIdentifier(this._parseIdent())) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n if (node.setOperator(this._parseOperator())) {\n node.setValue(this._parseBinaryExpr());\n this.acceptIdent('i'); // case insensitive matching\n }\n if (!this.accept(TokenType.BracketR)) {\n return this.finish(node, ParseError.RightSquareBracketExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parsePseudo = function () {\n var _this = this;\n // pseudo: ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ]\n var node = this._tryParsePseudoIdentifier();\n if (node) {\n if (!this.hasWhitespace() && this.accept(TokenType.ParenthesisL)) {\n var tryAsSelector = function () {\n var selectors = _this.create(nodes.Node);\n if (!selectors.addChild(_this._parseSelector(false))) {\n return null;\n }\n while (_this.accept(TokenType.Comma) && selectors.addChild(_this._parseSelector(false))) {\n // loop\n }\n if (_this.peek(TokenType.ParenthesisR)) {\n return _this.finish(selectors);\n }\n return null;\n };\n node.addChild(this.try(tryAsSelector) || this._parseBinaryExpr());\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n }\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._tryParsePseudoIdentifier = function () {\n if (!this.peek(TokenType.Colon)) {\n return null;\n }\n var pos = this.mark();\n var node = this.createNode(nodes.NodeType.PseudoSelector);\n this.consumeToken(); // Colon\n if (this.hasWhitespace()) {\n this.restoreAtMark(pos);\n return null;\n }\n // optional, support ::\n this.accept(TokenType.Colon);\n if (this.hasWhitespace() || !node.addChild(this._parseIdent())) {\n return this.finish(node, ParseError.IdentifierExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._tryParsePrio = function () {\n var mark = this.mark();\n var prio = this._parsePrio();\n if (prio) {\n return prio;\n }\n this.restoreAtMark(mark);\n return null;\n };\n Parser.prototype._parsePrio = function () {\n if (!this.peek(TokenType.Exclamation)) {\n return null;\n }\n var node = this.createNode(nodes.NodeType.Prio);\n if (this.accept(TokenType.Exclamation) && this.acceptIdent('important')) {\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._parseExpr = function (stopOnComma) {\n if (stopOnComma === void 0) { stopOnComma = false; }\n var node = this.create(nodes.Expression);\n if (!node.addChild(this._parseBinaryExpr())) {\n return null;\n }\n while (true) {\n if (this.peek(TokenType.Comma)) { // optional\n if (stopOnComma) {\n return this.finish(node);\n }\n this.consumeToken();\n }\n if (!node.addChild(this._parseBinaryExpr())) {\n break;\n }\n }\n return this.finish(node);\n };\n Parser.prototype._parseNamedLine = function () {\n // https://www.w3.org/TR/css-grid-1/#named-lines\n if (!this.peek(TokenType.BracketL)) {\n return null;\n }\n var node = this.createNode(nodes.NodeType.GridLine);\n this.consumeToken();\n while (node.addChild(this._parseIdent())) {\n // repeat\n }\n if (!this.accept(TokenType.BracketR)) {\n return this.finish(node, ParseError.RightSquareBracketExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseBinaryExpr = function (preparsedLeft, preparsedOper) {\n var node = this.create(nodes.BinaryExpression);\n if (!node.setLeft((preparsedLeft || this._parseTerm()))) {\n return null;\n }\n if (!node.setOperator(preparsedOper || this._parseOperator())) {\n return this.finish(node);\n }\n if (!node.setRight(this._parseTerm())) {\n return this.finish(node, ParseError.TermExpected);\n }\n // things needed for multiple binary expressions\n node = this.finish(node);\n var operator = this._parseOperator();\n if (operator) {\n node = this._parseBinaryExpr(node, operator);\n }\n return this.finish(node);\n };\n Parser.prototype._parseTerm = function () {\n var node = this.create(nodes.Term);\n node.setOperator(this._parseUnaryOperator()); // optional\n if (node.setExpression(this._parseTermExpression())) {\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._parseTermExpression = function () {\n return this._parseURILiteral() || // url before function\n this._parseFunction() || // function before ident\n this._parseIdent() ||\n this._parseStringLiteral() ||\n this._parseNumeric() ||\n this._parseHexColor() ||\n this._parseOperation() ||\n this._parseNamedLine();\n };\n Parser.prototype._parseOperation = function () {\n if (!this.peek(TokenType.ParenthesisL)) {\n return null;\n }\n var node = this.create(nodes.Node);\n this.consumeToken(); // ParenthesisL\n node.addChild(this._parseExpr());\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseNumeric = function () {\n if (this.peek(TokenType.Num) ||\n this.peek(TokenType.Percentage) ||\n this.peek(TokenType.Resolution) ||\n this.peek(TokenType.Length) ||\n this.peek(TokenType.EMS) ||\n this.peek(TokenType.EXS) ||\n this.peek(TokenType.Angle) ||\n this.peek(TokenType.Time) ||\n this.peek(TokenType.Dimension) ||\n this.peek(TokenType.Freq)) {\n var node = this.create(nodes.NumericValue);\n this.consumeToken();\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._parseStringLiteral = function () {\n if (!this.peek(TokenType.String) && !this.peek(TokenType.BadString)) {\n return null;\n }\n var node = this.createNode(nodes.NodeType.StringLiteral);\n this.consumeToken();\n return this.finish(node);\n };\n Parser.prototype._parseURILiteral = function () {\n if (!this.peekRegExp(TokenType.Ident, /^url(-prefix)?$/i)) {\n return null;\n }\n var pos = this.mark();\n var node = this.createNode(nodes.NodeType.URILiteral);\n this.accept(TokenType.Ident);\n if (this.hasWhitespace() || !this.peek(TokenType.ParenthesisL)) {\n this.restoreAtMark(pos);\n return null;\n }\n this.scanner.inURL = true;\n this.consumeToken(); // consume ()\n node.addChild(this._parseURLArgument()); // argument is optional\n this.scanner.inURL = false;\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseURLArgument = function () {\n var node = this.create(nodes.Node);\n if (!this.accept(TokenType.String) && !this.accept(TokenType.BadString) && !this.acceptUnquotedString()) {\n return null;\n }\n return this.finish(node);\n };\n Parser.prototype._parseIdent = function (referenceTypes) {\n if (!this.peek(TokenType.Ident)) {\n return null;\n }\n var node = this.create(nodes.Identifier);\n if (referenceTypes) {\n node.referenceTypes = referenceTypes;\n }\n node.isCustomProperty = this.peekRegExp(TokenType.Ident, /^--/);\n this.consumeToken();\n return this.finish(node);\n };\n Parser.prototype._parseFunction = function () {\n var pos = this.mark();\n var node = this.create(nodes.Function);\n if (!node.setIdentifier(this._parseFunctionIdentifier())) {\n return null;\n }\n if (this.hasWhitespace() || !this.accept(TokenType.ParenthesisL)) {\n this.restoreAtMark(pos);\n return null;\n }\n if (node.getArguments().addChild(this._parseFunctionArgument())) {\n while (this.accept(TokenType.Comma)) {\n if (this.peek(TokenType.ParenthesisR)) {\n break;\n }\n if (!node.getArguments().addChild(this._parseFunctionArgument())) {\n this.markError(node, ParseError.ExpressionExpected);\n }\n }\n }\n if (!this.accept(TokenType.ParenthesisR)) {\n return this.finish(node, ParseError.RightParenthesisExpected);\n }\n return this.finish(node);\n };\n Parser.prototype._parseFunctionIdentifier = function () {\n if (!this.peek(TokenType.Ident)) {\n return null;\n }\n var node = this.create(nodes.Identifier);\n node.referenceTypes = [nodes.ReferenceType.Function];\n if (this.acceptIdent('progid')) {\n // support for IE7 specific filters: 'progid:DXImageTransform.Microsoft.MotionBlur(strength=13, direction=310)'\n if (this.accept(TokenType.Colon)) {\n while (this.accept(TokenType.Ident) && this.acceptDelim('.')) {\n // loop\n }\n }\n return this.finish(node);\n }\n this.consumeToken();\n return this.finish(node);\n };\n Parser.prototype._parseFunctionArgument = function () {\n var node = this.create(nodes.FunctionArgument);\n if (node.setValue(this._parseExpr(true))) {\n return this.finish(node);\n }\n return null;\n };\n Parser.prototype._parseHexColor = function () {\n if (this.peekRegExp(TokenType.Hash, /^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)) {\n var node = this.create(nodes.HexColorValue);\n this.consumeToken();\n return this.finish(node);\n }\n else {\n return null;\n }\n };\n return Parser;\n}());\nexport { Parser };\n","/*---------------------------------------------------------------------------------------------\n * 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'use strict';\n/**\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\n * are located before all elements where p(x) is true.\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\n */\nexport function findFirst(array, p) {\n var low = 0, high = array.length;\n if (high === 0) {\n return 0; // no children\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (p(array[mid])) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n return low;\n}\nexport function includes(array, item) {\n return array.indexOf(item) !== -1;\n}\nexport function union() {\n var arrays = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arrays[_i] = arguments[_i];\n }\n var result = [];\n for (var _a = 0, arrays_1 = arrays; _a < arrays_1.length; _a++) {\n var array = arrays_1[_a];\n for (var _b = 0, array_1 = array; _b < array_1.length; _b++) {\n var item = array_1[_b];\n if (!includes(result, item)) {\n result.push(item);\n }\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 *--------------------------------------------------------------------------------------------*/\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as nodes from './cssNodes.js';\nimport { findFirst } from '../utils/arrays.js';\nvar Scope = /** @class */ (function () {\n function Scope(offset, length) {\n this.offset = offset;\n this.length = length;\n this.symbols = [];\n this.parent = null;\n this.children = [];\n }\n Scope.prototype.addChild = function (scope) {\n this.children.push(scope);\n scope.setParent(this);\n };\n Scope.prototype.setParent = function (scope) {\n this.parent = scope;\n };\n Scope.prototype.findScope = function (offset, length) {\n if (length === void 0) { length = 0; }\n if (this.offset <= offset && this.offset + this.length > offset + length || this.offset === offset && this.length === length) {\n return this.findInScope(offset, length);\n }\n return null;\n };\n Scope.prototype.findInScope = function (offset, length) {\n if (length === void 0) { length = 0; }\n // find the first scope child that has an offset larger than offset + length\n var end = offset + length;\n var idx = findFirst(this.children, function (s) { return s.offset > end; });\n if (idx === 0) {\n // all scopes have offsets larger than our end\n return this;\n }\n var res = this.children[idx - 1];\n if (res.offset <= offset && res.offset + res.length >= offset + length) {\n return res.findInScope(offset, length);\n }\n return this;\n };\n Scope.prototype.addSymbol = function (symbol) {\n this.symbols.push(symbol);\n };\n Scope.prototype.getSymbol = function (name, type) {\n for (var index = 0; index < this.symbols.length; index++) {\n var symbol = this.symbols[index];\n if (symbol.name === name && symbol.type === type) {\n return symbol;\n }\n }\n return null;\n };\n Scope.prototype.getSymbols = function () {\n return this.symbols;\n };\n return Scope;\n}());\nexport { Scope };\nvar GlobalScope = /** @class */ (function (_super) {\n __extends(GlobalScope, _super);\n function GlobalScope() {\n return _super.call(this, 0, Number.MAX_VALUE) || this;\n }\n return GlobalScope;\n}(Scope));\nexport { GlobalScope };\nvar Symbol = /** @class */ (function () {\n function Symbol(name, value, node, type) {\n this.name = name;\n this.value = value;\n this.node = node;\n this.type = type;\n }\n return Symbol;\n}());\nexport { Symbol };\nvar ScopeBuilder = /** @class */ (function () {\n function ScopeBuilder(scope) {\n this.scope = scope;\n }\n ScopeBuilder.prototype.addSymbol = function (node, name, value, type) {\n if (node.offset !== -1) {\n var current = this.scope.findScope(node.offset, node.length);\n if (current) {\n current.addSymbol(new Symbol(name, value, node, type));\n }\n }\n };\n ScopeBuilder.prototype.addScope = function (node) {\n if (node.offset !== -1) {\n var current = this.scope.findScope(node.offset, node.length);\n if (current && (current.offset !== node.offset || current.length !== node.length)) { // scope already known?\n var newScope = new Scope(node.offset, node.length);\n current.addChild(newScope);\n return newScope;\n }\n return current;\n }\n return null;\n };\n ScopeBuilder.prototype.addSymbolToChildScope = function (scopeNode, node, name, value, type) {\n if (scopeNode && scopeNode.offset !== -1) {\n var current = this.addScope(scopeNode); // create the scope or gets the existing one\n if (current) {\n current.addSymbol(new Symbol(name, value, node, type));\n }\n }\n };\n ScopeBuilder.prototype.visitNode = function (node) {\n switch (node.type) {\n case nodes.NodeType.Keyframe:\n this.addSymbol(node, node.getName(), void 0, nodes.ReferenceType.Keyframe);\n return true;\n case nodes.NodeType.CustomPropertyDeclaration:\n return this.visitCustomPropertyDeclarationNode(node);\n case nodes.NodeType.VariableDeclaration:\n return this.visitVariableDeclarationNode(node);\n case nodes.NodeType.Ruleset:\n return this.visitRuleSet(node);\n case nodes.NodeType.MixinDeclaration:\n this.addSymbol(node, node.getName(), void 0, nodes.ReferenceType.Mixin);\n return true;\n case nodes.NodeType.FunctionDeclaration:\n this.addSymbol(node, node.getName(), void 0, nodes.ReferenceType.Function);\n return true;\n case nodes.NodeType.FunctionParameter: {\n return this.visitFunctionParameterNode(node);\n }\n case nodes.NodeType.Declarations:\n this.addScope(node);\n return true;\n case nodes.NodeType.For:\n var forNode = node;\n var scopeNode = forNode.getDeclarations();\n if (scopeNode && forNode.variable) {\n this.addSymbolToChildScope(scopeNode, forNode.variable, forNode.variable.getName(), void 0, nodes.ReferenceType.Variable);\n }\n return true;\n case nodes.NodeType.Each: {\n var eachNode = node;\n var scopeNode_1 = eachNode.getDeclarations();\n if (scopeNode_1) {\n var variables = eachNode.getVariables().getChildren();\n for (var _i = 0, variables_1 = variables; _i < variables_1.length; _i++) {\n var variable = variables_1[_i];\n this.addSymbolToChildScope(scopeNode_1, variable, variable.getName(), void 0, nodes.ReferenceType.Variable);\n }\n }\n return true;\n }\n }\n return true;\n };\n ScopeBuilder.prototype.visitRuleSet = function (node) {\n var current = this.scope.findScope(node.offset, node.length);\n if (current) {\n for (var _i = 0, _a = node.getSelectors().getChildren(); _i < _a.length; _i++) {\n var child = _a[_i];\n if (child instanceof nodes.Selector) {\n if (child.getChildren().length === 1) { // only selectors with a single element can be extended\n current.addSymbol(new Symbol(child.getChild(0).getText(), void 0, child, nodes.ReferenceType.Rule));\n }\n }\n }\n }\n return true;\n };\n ScopeBuilder.prototype.visitVariableDeclarationNode = function (node) {\n var value = node.getValue() ? node.getValue().getText() : void 0;\n this.addSymbol(node, node.getName(), value, nodes.ReferenceType.Variable);\n return true;\n };\n ScopeBuilder.prototype.visitFunctionParameterNode = function (node) {\n // parameters are part of the body scope\n var scopeNode = node.getParent().getDeclarations();\n if (scopeNode) {\n var valueNode = node.getDefaultValue();\n var value = valueNode ? valueNode.getText() : void 0;\n this.addSymbolToChildScope(scopeNode, node, node.getName(), value, nodes.ReferenceType.Variable);\n }\n return true;\n };\n ScopeBuilder.prototype.visitCustomPropertyDeclarationNode = function (node) {\n var value = node.getValue() ? node.getValue().getText() : '';\n this.addCSSVariable(node.getProperty(), node.getProperty().getName(), value, nodes.ReferenceType.Variable);\n return true;\n };\n ScopeBuilder.prototype.addCSSVariable = function (node, name, value, type) {\n if (node.offset !== -1) {\n this.scope.addSymbol(new Symbol(name, value, node, type));\n }\n };\n return ScopeBuilder;\n}());\nexport { ScopeBuilder };\nvar Symbols = /** @class */ (function () {\n function Symbols(node) {\n this.global = new GlobalScope();\n node.acceptVisitor(new ScopeBuilder(this.global));\n }\n Symbols.prototype.findSymbolsAtOffset = function (offset, referenceType) {\n var scope = this.global.findScope(offset, 0);\n var result = [];\n var names = {};\n while (scope) {\n var symbols = scope.getSymbols();\n for (var i = 0; i < symbols.length; i++) {\n var symbol = symbols[i];\n if (symbol.type === referenceType && !names[symbol.name]) {\n result.push(symbol);\n names[symbol.name] = true;\n }\n }\n scope = scope.parent;\n }\n return result;\n };\n Symbols.prototype.internalFindSymbol = function (node, referenceTypes) {\n var scopeNode = node;\n if (node.parent instanceof nodes.FunctionParameter && node.parent.getParent() instanceof nodes.BodyDeclaration) {\n scopeNode = node.parent.getParent().getDeclarations();\n }\n if (node.parent instanceof nodes.FunctionArgument && node.parent.getParent() instanceof nodes.Function) {\n var funcId = node.parent.getParent().getIdentifier();\n if (funcId) {\n var functionSymbol = this.internalFindSymbol(funcId, [nodes.ReferenceType.Function]);\n if (functionSymbol) {\n scopeNode = functionSymbol.node.getDeclarations();\n }\n }\n }\n if (!scopeNode) {\n return null;\n }\n var name = node.getText();\n var scope = this.global.findScope(scopeNode.offset, scopeNode.length);\n while (scope) {\n for (var index = 0; index < referenceTypes.length; index++) {\n var type = referenceTypes[index];\n var symbol = scope.getSymbol(name, type);\n if (symbol) {\n return symbol;\n }\n }\n scope = scope.parent;\n }\n return null;\n };\n Symbols.prototype.evaluateReferenceTypes = function (node) {\n if (node instanceof nodes.Identifier) {\n var referenceTypes = node.referenceTypes;\n if (referenceTypes) {\n return referenceTypes;\n }\n else {\n if (node.isCustomProperty) {\n return [nodes.ReferenceType.Variable];\n }\n // are a reference to a keyframe?\n var decl = nodes.getParentDeclaration(node);\n if (decl) {\n var propertyName = decl.getNonPrefixedPropertyName();\n if ((propertyName === 'animation' || propertyName === 'animation-name')\n && decl.getValue() && decl.getValue().offset === node.offset) {\n return [nodes.ReferenceType.Keyframe];\n }\n }\n }\n }\n else if (node instanceof nodes.Variable) {\n return [nodes.ReferenceType.Variable];\n }\n var selector = node.findAParent(nodes.NodeType.Selector, nodes.NodeType.ExtendsReference);\n if (selector) {\n return [nodes.ReferenceType.Rule];\n }\n return null;\n };\n Symbols.prototype.findSymbolFromNode = function (node) {\n if (!node) {\n return null;\n }\n while (node.type === nodes.NodeType.Interpolation) {\n node = node.getParent();\n }\n var referenceTypes = this.evaluateReferenceTypes(node);\n if (referenceTypes) {\n return this.internalFindSymbol(node, referenceTypes);\n }\n return null;\n };\n Symbols.prototype.matchesSymbol = function (node, symbol) {\n if (!node) {\n return false;\n }\n while (node.type === nodes.NodeType.Interpolation) {\n node = node.getParent();\n }\n if (!node.matches(symbol.name)) {\n return false;\n }\n var referenceTypes = this.evaluateReferenceTypes(node);\n if (!referenceTypes || referenceTypes.indexOf(symbol.type) === -1) {\n return false;\n }\n var nodeSymbol = this.internalFindSymbol(node, referenceTypes);\n return nodeSymbol === symbol;\n };\n Symbols.prototype.findSymbol = function (name, type, offset) {\n var scope = this.global.findScope(offset);\n while (scope) {\n var symbol = scope.getSymbol(name, type);\n if (symbol) {\n return symbol;\n }\n scope = scope.parent;\n }\n return null;\n };\n return Symbols;\n}());\nexport { Symbols };\n","/* --------------------------------------------------------------------------------------------\n * 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'use strict';\nexport var integer;\n(function (integer) {\n integer.MIN_VALUE = -2147483648;\n integer.MAX_VALUE = 2147483647;\n})(integer || (integer = {}));\nexport var uinteger;\n(function (uinteger) {\n uinteger.MIN_VALUE = 0;\n uinteger.MAX_VALUE = 2147483647;\n})(uinteger || (uinteger = {}));\n/**\n * The Position namespace provides helper functions to work with\n * [Position](#Position) literals.\n */\nexport var Position;\n(function (Position) {\n /**\n * Creates a new Position literal from the given line and character.\n * @param line The position's line.\n * @param character The position's character.\n */\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: line, character: character };\n }\n Position.create = create;\n /**\n * Checks whether the given literal conforms to the [Position](#Position) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position.is = is;\n})(Position || (Position = {}));\n/**\n * The Range namespace provides helper functions to work with\n * [Range](#Range) literals.\n */\nexport var Range;\n(function (Range) {\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 }\n else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n }\n else {\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\n }\n }\n Range.create = create;\n /**\n * Checks whether the given literal conforms to the [Range](#Range) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range.is = is;\n})(Range || (Range = {}));\n/**\n * The Location namespace provides helper functions to work with\n * [Location](#Location) literals.\n */\nexport var Location;\n(function (Location) {\n /**\n * Creates a Location literal.\n * @param uri The location's uri.\n * @param range The location's range.\n */\n function create(uri, range) {\n return { uri: uri, range: range };\n }\n Location.create = create;\n /**\n * Checks whether the given literal conforms to the [Location](#Location) interface.\n */\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 Location.is = is;\n})(Location || (Location = {}));\n/**\n * The LocationLink namespace provides helper functions to work with\n * [LocationLink](#LocationLink) literals.\n */\nexport var LocationLink;\n(function (LocationLink) {\n /**\n * Creates a LocationLink literal.\n * @param targetUri The definition's uri.\n * @param targetRange The full range of the definition.\n * @param targetSelectionRange The span of the symbol definition at the target.\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\n */\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\n }\n LocationLink.create = create;\n /**\n * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\n && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange))\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink.is = is;\n})(LocationLink || (LocationLink = {}));\n/**\n * The Color namespace provides helper functions to work with\n * [Color](#Color) literals.\n */\nexport var Color;\n(function (Color) {\n /**\n * Creates a new Color literal.\n */\n function create(red, green, blue, alpha) {\n return {\n red: red,\n green: green,\n blue: blue,\n alpha: alpha,\n };\n }\n Color.create = create;\n /**\n * Checks whether the given literal conforms to the [Color](#Color) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.numberRange(candidate.red, 0, 1)\n && Is.numberRange(candidate.green, 0, 1)\n && Is.numberRange(candidate.blue, 0, 1)\n && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color.is = is;\n})(Color || (Color = {}));\n/**\n * The ColorInformation namespace provides helper functions to work with\n * [ColorInformation](#ColorInformation) literals.\n */\nexport var ColorInformation;\n(function (ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(range, color) {\n return {\n range: range,\n color: color,\n };\n }\n ColorInformation.create = create;\n /**\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\n */\n function is(value) {\n var candidate = value;\n return Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation.is = is;\n})(ColorInformation || (ColorInformation = {}));\n/**\n * The Color namespace provides helper functions to work with\n * [ColorPresentation](#ColorPresentation) literals.\n */\nexport var ColorPresentation;\n(function (ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label: label,\n textEdit: textEdit,\n additionalTextEdits: additionalTextEdits,\n };\n }\n ColorPresentation.create = create;\n /**\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.string(candidate.label)\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation.is = is;\n})(ColorPresentation || (ColorPresentation = {}));\n/**\n * Enum of known range kinds\n */\nexport var FoldingRangeKind;\n(function (FoldingRangeKind) {\n /**\n * Folding range for a comment\n */\n FoldingRangeKind[\"Comment\"] = \"comment\";\n /**\n * Folding range for a imports or includes\n */\n FoldingRangeKind[\"Imports\"] = \"imports\";\n /**\n * Folding range for a region (e.g. `#region`)\n */\n FoldingRangeKind[\"Region\"] = \"region\";\n})(FoldingRangeKind || (FoldingRangeKind = {}));\n/**\n * The folding range namespace provides helper functions to work with\n * [FoldingRange](#FoldingRange) literals.\n */\nexport var FoldingRange;\n(function (FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\n var result = {\n startLine: startLine,\n endLine: 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 FoldingRange.create = create;\n /**\n * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine)\n && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter))\n && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter))\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange.is = is;\n})(FoldingRange || (FoldingRange = {}));\n/**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.\n */\nexport var DiagnosticRelatedInformation;\n(function (DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\n */\n function create(location, message) {\n return {\n location: location,\n message: message\n };\n }\n DiagnosticRelatedInformation.create = create;\n /**\n * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n/**\n * The diagnostic's severity.\n */\nexport var DiagnosticSeverity;\n(function (DiagnosticSeverity) {\n /**\n * Reports an error.\n */\n DiagnosticSeverity.Error = 1;\n /**\n * Reports a warning.\n */\n DiagnosticSeverity.Warning = 2;\n /**\n * Reports an information.\n */\n DiagnosticSeverity.Information = 3;\n /**\n * Reports a hint.\n */\n DiagnosticSeverity.Hint = 4;\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\n/**\n * The diagnostic tags.\n *\n * @since 3.15.0\n */\nexport var DiagnosticTag;\n(function (DiagnosticTag) {\n /**\n * Unused or unnecessary code.\n *\n * Clients are allowed to render diagnostics with this tag faded out instead of having\n * an error squiggle.\n */\n DiagnosticTag.Unnecessary = 1;\n /**\n * Deprecated or obsolete code.\n *\n * Clients are allowed to rendered diagnostics with this tag strike through.\n */\n DiagnosticTag.Deprecated = 2;\n})(DiagnosticTag || (DiagnosticTag = {}));\n/**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\n */\nexport var CodeDescription;\n(function (CodeDescription) {\n function is(value) {\n var candidate = value;\n return candidate !== undefined && candidate !== null && Is.string(candidate.href);\n }\n CodeDescription.is = is;\n})(CodeDescription || (CodeDescription = {}));\n/**\n * The Diagnostic namespace provides helper functions to work with\n * [Diagnostic](#Diagnostic) literals.\n */\nexport var Diagnostic;\n(function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n var result = { range: range, message: 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 Diagnostic.create = create;\n /**\n * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface.\n */\n function is(value) {\n var _a;\n var candidate = value;\n return Is.defined(candidate)\n && Range.is(candidate.range)\n && Is.string(candidate.message)\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\n && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\n && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)))\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic.is = is;\n})(Diagnostic || (Diagnostic = {}));\n/**\n * The Command namespace provides helper functions to work with\n * [Command](#Command) literals.\n */\nexport var Command;\n(function (Command) {\n /**\n * Creates a new Command literal.\n */\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: title, command: command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command.create = create;\n /**\n * Checks whether the given literal conforms to the [Command](#Command) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command.is = is;\n})(Command || (Command = {}));\n/**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\n */\nexport var TextEdit;\n(function (TextEdit) {\n /**\n * Creates a replace text edit.\n * @param range The range of text to be replaced.\n * @param newText The new text.\n */\n function replace(range, newText) {\n return { range: range, newText: newText };\n }\n TextEdit.replace = replace;\n /**\n * Creates a insert text edit.\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n */\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText: newText };\n }\n TextEdit.insert = insert;\n /**\n * Creates a delete text edit.\n * @param range The range of text to be deleted.\n */\n function del(range) {\n return { range: range, newText: '' };\n }\n TextEdit.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate)\n && Is.string(candidate.newText)\n && Range.is(candidate.range);\n }\n TextEdit.is = is;\n})(TextEdit || (TextEdit = {}));\nexport var ChangeAnnotation;\n(function (ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n var result = { label: label };\n if (needsConfirmation !== undefined) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== undefined) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && Is.objectLiteral(candidate) && Is.string(candidate.label) &&\n (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) &&\n (Is.string(candidate.description) || candidate.description === undefined);\n }\n ChangeAnnotation.is = is;\n})(ChangeAnnotation || (ChangeAnnotation = {}));\nexport var ChangeAnnotationIdentifier;\n(function (ChangeAnnotationIdentifier) {\n function is(value) {\n var candidate = value;\n return typeof candidate === 'string';\n }\n ChangeAnnotationIdentifier.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nexport var AnnotatedTextEdit;\n(function (AnnotatedTextEdit) {\n /**\n * Creates an annotated replace text edit.\n *\n * @param range The range of text to be replaced.\n * @param newText The new text.\n * @param annotation The annotation.\n */\n function replace(range, newText, annotation) {\n return { range: range, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.replace = replace;\n /**\n * Creates an annotated insert text edit.\n *\n * @param position The position to insert the text at.\n * @param newText The text to be inserted.\n * @param annotation The annotation.\n */\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText: newText, annotationId: annotation };\n }\n AnnotatedTextEdit.insert = insert;\n /**\n * Creates an annotated delete text edit.\n *\n * @param range The range of text to be deleted.\n * @param annotation The annotation.\n */\n function del(range, annotation) {\n return { range: range, newText: '', annotationId: annotation };\n }\n AnnotatedTextEdit.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 AnnotatedTextEdit.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n/**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */\nexport var TextDocumentEdit;\n(function (TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */\n function create(textDocument, edits) {\n return { textDocument: textDocument, edits: edits };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate)\n && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nexport var CreateFile;\n(function (CreateFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'create',\n uri: uri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile.is = is;\n})(CreateFile || (CreateFile = {}));\nexport var RenameFile;\n(function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: 'rename',\n oldUri: oldUri,\n newUri: newUri\n };\n if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile.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 === undefined ||\n ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile.is = is;\n})(RenameFile || (RenameFile = {}));\nexport var DeleteFile;\n(function (DeleteFile) {\n function create(uri, options, annotation) {\n var result = {\n kind: 'delete',\n uri: uri\n };\n if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) {\n result.options = options;\n }\n if (annotation !== undefined) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined ||\n ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile.is = is;\n})(DeleteFile || (DeleteFile = {}));\nexport var WorkspaceEdit;\n(function (WorkspaceEdit) {\n function is(value) {\n var candidate = value;\n return candidate &&\n (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n (candidate.documentChanges === undefined || candidate.documentChanges.every(function (change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n }\n else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit.is = is;\n})(WorkspaceEdit || (WorkspaceEdit = {}));\nvar TextEditChangeImpl = /** @class */ (function () {\n function TextEditChangeImpl(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n TextEditChangeImpl.prototype.insert = function (position, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.insert(position, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n }\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 !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.replace = function (range, newText, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.replace(range, newText);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n }\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 !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.delete = function (range, annotation) {\n var edit;\n var id;\n if (annotation === undefined) {\n edit = TextEdit.del(range);\n }\n else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n }\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 !== undefined) {\n return id;\n }\n };\n TextEditChangeImpl.prototype.add = function (edit) {\n this.edits.push(edit);\n };\n TextEditChangeImpl.prototype.all = function () {\n return this.edits;\n };\n TextEditChangeImpl.prototype.clear = function () {\n this.edits.splice(0, this.edits.length);\n };\n TextEditChangeImpl.prototype.assertChangeAnnotations = function (value) {\n if (value === undefined) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n return TextEditChangeImpl;\n}());\n/**\n * A helper class\n */\nvar ChangeAnnotations = /** @class */ (function () {\n function ChangeAnnotations(annotations) {\n this._annotations = annotations === undefined ? Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n ChangeAnnotations.prototype.all = function () {\n return this._annotations;\n };\n Object.defineProperty(ChangeAnnotations.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n ChangeAnnotations.prototype.manage = function (idOrAnnotation, annotation) {\n var id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n }\n else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== undefined) {\n throw new Error(\"Id \" + id + \" is already in use.\");\n }\n if (annotation === undefined) {\n throw new Error(\"No annotation provided for id \" + id);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n ChangeAnnotations.prototype.nextId = function () {\n this._counter++;\n return this._counter.toString();\n };\n return ChangeAnnotations;\n}());\n/**\n * A workspace change helps constructing changes to a workspace.\n */\nvar WorkspaceChange = /** @class */ (function () {\n function WorkspaceChange(workspaceEdit) {\n var _this = this;\n this._textEditChanges = Object.create(null);\n if (workspaceEdit !== undefined) {\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 }\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 }\n else {\n this._workspaceEdit = {};\n }\n }\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n /**\n * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal\n * use to be returned from a workspace edit operation like rename.\n */\n get: function () {\n this.initDocumentChanges();\n if (this._changeAnnotations !== undefined) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = undefined;\n }\n else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n WorkspaceChange.prototype.getTextEditChange = function (key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\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: textDocument,\n edits: 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 }\n else {\n this.initChanges();\n if (this._workspaceEdit.changes === undefined) {\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 WorkspaceChange.prototype.initDocumentChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n WorkspaceChange.prototype.initChanges = function () {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._workspaceEdit.changes = Object.create(null);\n }\n };\n WorkspaceChange.prototype.createFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\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 }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = CreateFile.create(uri, options);\n }\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 !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\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 }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = RenameFile.create(oldUri, newUri, options);\n }\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 !== undefined) {\n return id;\n }\n };\n WorkspaceChange.prototype.deleteFile = function (uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === undefined) {\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 }\n else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === undefined) {\n operation = DeleteFile.create(uri, options);\n }\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 !== undefined) {\n return id;\n }\n };\n return WorkspaceChange;\n}());\nexport { WorkspaceChange };\n/**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * [TextDocumentIdentifier](#TextDocumentIdentifier) literals.\n */\nexport var TextDocumentIdentifier;\n(function (TextDocumentIdentifier) {\n /**\n * Creates a new TextDocumentIdentifier literal.\n * @param uri The document's uri.\n */\n function create(uri) {\n return { uri: uri };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n/**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals.\n */\nexport var VersionedTextDocumentIdentifier;\n(function (VersionedTextDocumentIdentifier) {\n /**\n * Creates a new VersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param uri The document's text.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n VersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n/**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * [OptionalVersionedTextDocumentIdentifier](#OptionalVersionedTextDocumentIdentifier) literals.\n */\nexport var OptionalVersionedTextDocumentIdentifier;\n(function (OptionalVersionedTextDocumentIdentifier) {\n /**\n * Creates a new OptionalVersionedTextDocumentIdentifier literal.\n * @param uri The document's uri.\n * @param uri The document's text.\n */\n function create(uri, version) {\n return { uri: uri, version: version };\n }\n OptionalVersionedTextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the [OptionalVersionedTextDocumentIdentifier](#OptionalVersionedTextDocumentIdentifier) interface.\n */\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 OptionalVersionedTextDocumentIdentifier.is = is;\n})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\n/**\n * The TextDocumentItem namespace provides helper functions to work with\n * [TextDocumentItem](#TextDocumentItem) literals.\n */\nexport var TextDocumentItem;\n(function (TextDocumentItem) {\n /**\n * Creates a new TextDocumentItem literal.\n * @param uri The document's uri.\n * @param languageId The document's language identifier.\n * @param version The document's version number.\n * @param text The document's text.\n */\n function create(uri, languageId, version, text) {\n return { uri: uri, languageId: languageId, version: version, text: text };\n }\n TextDocumentItem.create = create;\n /**\n * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface.\n */\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 TextDocumentItem.is = is;\n})(TextDocumentItem || (TextDocumentItem = {}));\n/**\n * Describes the content type that a client supports in various\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\n *\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\n * are reserved for internal usage.\n */\nexport var MarkupKind;\n(function (MarkupKind) {\n /**\n * Plain text is supported as a content format\n */\n MarkupKind.PlainText = 'plaintext';\n /**\n * Markdown is supported as a content format\n */\n MarkupKind.Markdown = 'markdown';\n})(MarkupKind || (MarkupKind = {}));\n(function (MarkupKind) {\n /**\n * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type.\n */\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n})(MarkupKind || (MarkupKind = {}));\nexport var MarkupContent;\n(function (MarkupContent) {\n /**\n * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent.is = is;\n})(MarkupContent || (MarkupContent = {}));\n/**\n * The kind of a completion entry.\n */\nexport var CompletionItemKind;\n(function (CompletionItemKind) {\n CompletionItemKind.Text = 1;\n CompletionItemKind.Method = 2;\n CompletionItemKind.Function = 3;\n CompletionItemKind.Constructor = 4;\n CompletionItemKind.Field = 5;\n CompletionItemKind.Variable = 6;\n CompletionItemKind.Class = 7;\n CompletionItemKind.Interface = 8;\n CompletionItemKind.Module = 9;\n CompletionItemKind.Property = 10;\n CompletionItemKind.Unit = 11;\n CompletionItemKind.Value = 12;\n CompletionItemKind.Enum = 13;\n CompletionItemKind.Keyword = 14;\n CompletionItemKind.Snippet = 15;\n CompletionItemKind.Color = 16;\n CompletionItemKind.File = 17;\n CompletionItemKind.Reference = 18;\n CompletionItemKind.Folder = 19;\n CompletionItemKind.EnumMember = 20;\n CompletionItemKind.Constant = 21;\n CompletionItemKind.Struct = 22;\n CompletionItemKind.Event = 23;\n CompletionItemKind.Operator = 24;\n CompletionItemKind.TypeParameter = 25;\n})(CompletionItemKind || (CompletionItemKind = {}));\n/**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */\nexport var InsertTextFormat;\n(function (InsertTextFormat) {\n /**\n * The primary text to be inserted is treated as a plain string.\n */\n InsertTextFormat.PlainText = 1;\n /**\n * The primary text to be inserted is treated as a snippet.\n *\n * A snippet can define tab stops and placeholders with `$1`, `$2`\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n * the end of the snippet. Placeholders with equal identifiers are linked,\n * that is typing in one will update others too.\n *\n * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax\n */\n InsertTextFormat.Snippet = 2;\n})(InsertTextFormat || (InsertTextFormat = {}));\n/**\n * Completion item tags are extra annotations that tweak the rendering of a completion\n * item.\n *\n * @since 3.15.0\n */\nexport var CompletionItemTag;\n(function (CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */\n CompletionItemTag.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\n/**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */\nexport var InsertReplaceEdit;\n(function (InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */\n function create(newText, insert, replace) {\n return { newText: newText, insert: insert, replace: replace };\n }\n InsertReplaceEdit.create = create;\n /**\n * Checks whether the given literal conforms to the [InsertReplaceEdit](#InsertReplaceEdit) interface.\n */\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 InsertReplaceEdit.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\n/**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\n */\nexport var InsertTextMode;\n(function (InsertTextMode) {\n /**\n * The insertion or replace strings is taken as it is. If the\n * value is multi line the lines below the cursor will be\n * inserted using the indentation defined in the string value.\n * The client will not apply any kind of adjustments to the\n * string.\n */\n InsertTextMode.asIs = 1;\n /**\n * The editor adjusts leading whitespace of new lines so that\n * they match the indentation up to the cursor of the line for\n * which the item is accepted.\n *\n * Consider a line like this: <2tabs><3tabs>foo. Accepting a\n * multi line completion item is indented using 2 tabs and all\n * following lines inserted will be indented using 2 tabs as well.\n */\n InsertTextMode.adjustIndentation = 2;\n})(InsertTextMode || (InsertTextMode = {}));\n/**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\n */\nexport var CompletionItem;\n(function (CompletionItem) {\n /**\n * Create a completion item and seed it with a label.\n * @param label The completion item's label\n */\n function create(label) {\n return { label: label };\n }\n CompletionItem.create = create;\n})(CompletionItem || (CompletionItem = {}));\n/**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\n */\nexport var CompletionList;\n(function (CompletionList) {\n /**\n * Creates a new completion list.\n *\n * @param items The completion items.\n * @param isIncomplete The list is not complete.\n */\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList.create = create;\n})(CompletionList || (CompletionList = {}));\nexport var MarkedString;\n(function (MarkedString) {\n /**\n * Creates a marked string from plain text.\n *\n * @param plainText The plain text.\n */\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n MarkedString.fromPlainText = fromPlainText;\n /**\n * Checks whether the given value conforms to the [MarkedString](#MarkedString) type.\n */\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 MarkedString.is = is;\n})(MarkedString || (MarkedString = {}));\nexport var Hover;\n(function (Hover) {\n /**\n * Checks whether the given value conforms to the [Hover](#Hover) interface.\n */\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\n MarkedString.is(candidate.contents) ||\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range));\n }\n Hover.is = is;\n})(Hover || (Hover = {}));\n/**\n * The ParameterInformation namespace provides helper functions to work with\n * [ParameterInformation](#ParameterInformation) literals.\n */\nexport var ParameterInformation;\n(function (ParameterInformation) {\n /**\n * Creates a new parameter information literal.\n *\n * @param label A label string.\n * @param documentation A doc string.\n */\n function create(label, documentation) {\n return documentation ? { label: label, documentation: documentation } : { label: label };\n }\n ParameterInformation.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\n/**\n * The SignatureInformation namespace provides helper functions to work with\n * [SignatureInformation](#SignatureInformation) literals.\n */\nexport var SignatureInformation;\n(function (SignatureInformation) {\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: label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n }\n else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation.create = create;\n})(SignatureInformation || (SignatureInformation = {}));\n/**\n * A document highlight kind.\n */\nexport var DocumentHighlightKind;\n(function (DocumentHighlightKind) {\n /**\n * A textual occurrence.\n */\n DocumentHighlightKind.Text = 1;\n /**\n * Read-access of a symbol, like reading a variable.\n */\n DocumentHighlightKind.Read = 2;\n /**\n * Write-access of a symbol, like writing to a variable.\n */\n DocumentHighlightKind.Write = 3;\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\n/**\n * DocumentHighlight namespace to provide helper functions to work with\n * [DocumentHighlight](#DocumentHighlight) literals.\n */\nexport var DocumentHighlight;\n(function (DocumentHighlight) {\n /**\n * Create a DocumentHighlight object.\n * @param range The range the highlight applies to.\n */\n function create(range, kind) {\n var result = { range: range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\n/**\n * A symbol kind.\n */\nexport var SymbolKind;\n(function (SymbolKind) {\n SymbolKind.File = 1;\n SymbolKind.Module = 2;\n SymbolKind.Namespace = 3;\n SymbolKind.Package = 4;\n SymbolKind.Class = 5;\n SymbolKind.Method = 6;\n SymbolKind.Property = 7;\n SymbolKind.Field = 8;\n SymbolKind.Constructor = 9;\n SymbolKind.Enum = 10;\n SymbolKind.Interface = 11;\n SymbolKind.Function = 12;\n SymbolKind.Variable = 13;\n SymbolKind.Constant = 14;\n SymbolKind.String = 15;\n SymbolKind.Number = 16;\n SymbolKind.Boolean = 17;\n SymbolKind.Array = 18;\n SymbolKind.Object = 19;\n SymbolKind.Key = 20;\n SymbolKind.Null = 21;\n SymbolKind.EnumMember = 22;\n SymbolKind.Struct = 23;\n SymbolKind.Event = 24;\n SymbolKind.Operator = 25;\n SymbolKind.TypeParameter = 26;\n})(SymbolKind || (SymbolKind = {}));\n/**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n * @since 3.16\n */\nexport var SymbolTag;\n(function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nexport var SymbolInformation;\n(function (SymbolInformation) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the location of the symbol.\n * @param uri The resource of the location of symbol, defaults to the current document.\n * @param containerName The name of the symbol containing the symbol.\n */\n function create(name, kind, range, uri, containerName) {\n var result = {\n name: name,\n kind: kind,\n location: { uri: uri, range: range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nexport var DocumentSymbol;\n(function (DocumentSymbol) {\n /**\n * Creates a new symbol information literal.\n *\n * @param name The name of the symbol.\n * @param detail The detail of the symbol.\n * @param kind The kind of the symbol.\n * @param range The range of the symbol.\n * @param selectionRange The selectionRange of the symbol.\n * @param children Children of the symbol.\n */\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name: name,\n detail: detail,\n kind: kind,\n range: range,\n selectionRange: selectionRange\n };\n if (children !== undefined) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol.create = create;\n /**\n * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface.\n */\n function is(value) {\n var candidate = value;\n return candidate &&\n Is.string(candidate.name) && Is.number(candidate.kind) &&\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\n (candidate.detail === undefined || Is.string(candidate.detail)) &&\n (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) &&\n (candidate.children === undefined || Array.isArray(candidate.children)) &&\n (candidate.tags === undefined || Array.isArray(candidate.tags));\n }\n DocumentSymbol.is = is;\n})(DocumentSymbol || (DocumentSymbol = {}));\n/**\n * A set of predefined code action kinds\n */\nexport var CodeActionKind;\n(function (CodeActionKind) {\n /**\n * Empty kind.\n */\n CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */\n CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\n */\n CodeActionKind.Refactor = 'refactor';\n /**\n * Base kind for refactoring extraction actions: 'refactor.extract'\n *\n * Example extract actions:\n *\n * - Extract method\n * - Extract function\n * - Extract variable\n * - Extract interface from class\n * - ...\n */\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\n * Base kind for refactoring inline actions: 'refactor.inline'\n *\n * Example inline actions:\n *\n * - Inline function\n * - Inline variable\n * - Inline constant\n * - ...\n */\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n *\n * Example rewrite actions:\n *\n * - Convert JavaScript function to class\n * - Add or remove parameter\n * - Encapsulate field\n * - Make method static\n * - Move method to base class\n * - ...\n */\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */\n CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\n */\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\n * Base kind for auto-fix source actions: `source.fixAll`.\n *\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n *\n * @since 3.15.0\n */\n CodeActionKind.SourceFixAll = 'source.fixAll';\n})(CodeActionKind || (CodeActionKind = {}));\n/**\n * The CodeActionContext namespace provides helper functions to work with\n * [CodeActionContext](#CodeActionContext) literals.\n */\nexport var CodeActionContext;\n(function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only) {\n var result = { diagnostics: diagnostics };\n if (only !== undefined && only !== null) {\n result.only = only;\n }\n return result;\n }\n CodeActionContext.create = create;\n /**\n * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string));\n }\n CodeActionContext.is = is;\n})(CodeActionContext || (CodeActionContext = {}));\nexport var CodeAction;\n(function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = { title: title };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === 'string') {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n }\n else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n }\n else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) &&\n (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n (candidate.kind === undefined || Is.string(candidate.kind)) &&\n (candidate.edit !== undefined || candidate.command !== undefined) &&\n (candidate.command === undefined || Command.is(candidate.command)) &&\n (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction.is = is;\n})(CodeAction || (CodeAction = {}));\n/**\n * The CodeLens namespace provides helper functions to work with\n * [CodeLens](#CodeLens) literals.\n */\nexport var CodeLens;\n(function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n var result = { range: range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens.create = create;\n /**\n * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface.\n */\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 CodeLens.is = is;\n})(CodeLens || (CodeLens = {}));\n/**\n * The FormattingOptions namespace provides helper functions to work with\n * [FormattingOptions](#FormattingOptions) literals.\n */\nexport var FormattingOptions;\n(function (FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */\n function create(tabSize, insertSpaces) {\n return { tabSize: tabSize, insertSpaces: insertSpaces };\n }\n FormattingOptions.create = create;\n /**\n * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface.\n */\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\n/**\n * The DocumentLink namespace provides helper functions to work with\n * [DocumentLink](#DocumentLink) literals.\n */\nexport var DocumentLink;\n(function (DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */\n function create(range, target, data) {\n return { range: range, target: target, data: data };\n }\n DocumentLink.create = create;\n /**\n * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface.\n */\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 DocumentLink.is = is;\n})(DocumentLink || (DocumentLink = {}));\n/**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */\nexport var SelectionRange;\n(function (SelectionRange) {\n /**\n * Creates a new SelectionRange\n * @param range the range.\n * @param parent an optional parent.\n */\n function create(range, parent) {\n return { range: range, parent: parent };\n }\n SelectionRange.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== undefined && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n }\n SelectionRange.is = is;\n})(SelectionRange || (SelectionRange = {}));\nexport var EOL = ['\\n', '\\r\\n', '\\r'];\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new ITextDocument literal from the given uri and content.\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface.\n */\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)\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument.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 }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\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 // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\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 = {}));\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nvar FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument.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 FullTextDocument.prototype.update = function (event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\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 FullTextDocument.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 }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\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(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument;\n}());\nvar Is;\n(function (Is) {\n var toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== 'undefined';\n }\n Is.defined = defined;\n function undefined(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined;\n function boolean(value) {\n return value === true || value === false;\n }\n Is.boolean = boolean;\n function string(value) {\n return toString.call(value) === '[object String]';\n }\n Is.string = string;\n function number(value) {\n return toString.call(value) === '[object Number]';\n }\n Is.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === '[object Number]' && min <= value && value <= max;\n }\n Is.numberRange = numberRange;\n function integer(value) {\n return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n }\n Is.integer = integer;\n function uinteger(value) {\n return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n }\n Is.uinteger = uinteger;\n function func(value) {\n return toString.call(value) === '[object Function]';\n }\n Is.func = func;\n function objectLiteral(value) {\n // Strictly speaking class instances pass this check as well. Since the LSP\n // doesn't use classes we ignore this for now. If we do we need to add something\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n return value !== null && typeof value === 'object';\n }\n Is.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is.typedArray = typedArray;\n})(Is || (Is = {}));\n","/* --------------------------------------------------------------------------------------------\n * 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'use strict';\nvar FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: true,\n configurable: true\n });\n FullTextDocument.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 FullTextDocument.prototype.update = function (changes, version) {\n for (var _i = 0, changes_1 = changes; _i < changes_1.length; _i++) {\n var change = changes_1[_i];\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n var range = getWellformedRange(change.range);\n // update content\n var startOffset = this.offsetAt(range.start);\n var endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n var startLine = Math.max(range.start.line, 0);\n var endLine = Math.max(range.end.line, 0);\n var lineOffsets = this._lineOffsets;\n var addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (var i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice.apply(lineOffsets, [startLine + 1, endLine - startLine].concat(addedLineOffsets));\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n var diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n };\n FullTextDocument.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 { line: 0, character: offset };\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n return { line: line, character: offset - lineOffsets[line] };\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\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(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: true,\n configurable: true\n });\n FullTextDocument.isIncremental = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n };\n FullTextDocument.isFull = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n };\n return FullTextDocument;\n}());\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifing its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits.map(getWellformedEdit), 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 = 0;\n var spans = [];\n for (var _i = 0, sortedEdits_1 = sortedEdits; _i < sortedEdits_1.length; _i++) {\n var e = sortedEdits_1[_i];\n var startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\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 // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\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}\nfunction computeLineOffsets(text, isAtLineStart, textOffset) {\n if (textOffset === void 0) { textOffset = 0; }\n var result = isAtLineStart ? [textOffset] : [];\n for (var i = 0; i < text.length; i++) {\n var ch = text.charCodeAt(i);\n if (ch === 13 /* CarriageReturn */ || ch === 10 /* LineFeed */) {\n if (ch === 13 /* CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction getWellformedRange(range) {\n var start = range.start;\n var end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n var range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range: range };\n }\n return textEdit;\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'use strict';\nimport { Range, Position, MarkupContent, MarkupKind, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, CompletionItemTag, InsertTextFormat, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, CodeActionContext, Command, CodeAction, DocumentHighlight, DocumentLink, WorkspaceEdit, TextEdit, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier, DocumentHighlightKind } from './../vscode-languageserver-types/main.js';\nimport { TextDocument } from './../vscode-languageserver-textdocument/lib/esm/main.js';\nexport { TextDocument, Range, Position, MarkupContent, MarkupKind, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, CompletionItemTag, InsertTextFormat, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, CodeActionContext, Command, CodeAction, DocumentHighlight, DocumentLink, WorkspaceEdit, TextEdit, CodeActionKind, TextDocumentEdit, VersionedTextDocumentIdentifier, DocumentHighlightKind };\nexport var ClientCapabilities;\n(function (ClientCapabilities) {\n ClientCapabilities.LATEST = {\n textDocument: {\n completion: {\n completionItem: {\n documentationFormat: [MarkupKind.Markdown, MarkupKind.PlainText]\n }\n },\n hover: {\n contentFormat: [MarkupKind.Markdown, MarkupKind.PlainText]\n }\n }\n };\n})(ClientCapabilities || (ClientCapabilities = {}));\nexport var FileType;\n(function (FileType) {\n /**\n * The file type is unknown.\n */\n FileType[FileType[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * A regular file.\n */\n FileType[FileType[\"File\"] = 1] = \"File\";\n /**\n * A directory.\n */\n FileType[FileType[\"Directory\"] = 2] = \"Directory\";\n /**\n * A symbolic link to a file.\n */\n FileType[FileType[\"SymbolicLink\"] = 64] = \"SymbolicLink\";\n})(FileType || (FileType = {}));\n","var LIB;LIB=(()=>{\"use strict\";var t={470:t=>{function e(t){if(\"string\"!=typeof t)throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(t))}function r(t,e){for(var r,n=\"\",o=0,i=-1,a=0,h=0;h<=t.length;++h){if(h2){var s=n.lastIndexOf(\"/\");if(s!==n.length-1){-1===s?(n=\"\",o=0):o=(n=n.slice(0,s)).length-1-n.lastIndexOf(\"/\"),i=h,a=0;continue}}else if(2===n.length||1===n.length){n=\"\",o=0,i=h,a=0;continue}e&&(n.length>0?n+=\"/..\":n=\"..\",o=2)}else n.length>0?n+=\"/\"+t.slice(i+1,h):n=t.slice(i+1,h),o=h-i-1;i=h,a=0}else 46===r&&-1!==a?++a:a=-1}return n}var n={resolve:function(){for(var t,n=\"\",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var a;i>=0?a=arguments[i]:(void 0===t&&(t=process.cwd()),a=t),e(a),0!==a.length&&(n=a+\"/\"+n,o=47===a.charCodeAt(0))}return n=r(n,!o),o?n.length>0?\"/\"+n:\"/\":n.length>0?n:\".\"},normalize:function(t){if(e(t),0===t.length)return\".\";var n=47===t.charCodeAt(0),o=47===t.charCodeAt(t.length-1);return 0!==(t=r(t,!n)).length||n||(t=\".\"),t.length>0&&o&&(t+=\"/\"),n?\"/\"+t:t},isAbsolute:function(t){return e(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return\".\";for(var t,r=0;r0&&(void 0===t?t=o:t+=\"/\"+o)}return void 0===t?\".\":n.normalize(t)},relative:function(t,r){if(e(t),e(r),t===r)return\"\";if((t=n.resolve(t))===(r=n.resolve(r)))return\"\";for(var o=1;of){if(47===r.charCodeAt(h+c))return r.slice(h+c+1);if(0===c)return r.slice(h+c)}else a>f&&(47===t.charCodeAt(o+c)?u=c:0===c&&(u=0));break}var l=t.charCodeAt(o+c);if(l!==r.charCodeAt(h+c))break;47===l&&(u=c)}var p=\"\";for(c=o+u+1;c<=i;++c)c!==i&&47!==t.charCodeAt(c)||(0===p.length?p+=\"..\":p+=\"/..\");return p.length>0?p+r.slice(h+u):(h+=u,47===r.charCodeAt(h)&&++h,r.slice(h))},_makeLong:function(t){return t},dirname:function(t){if(e(t),0===t.length)return\".\";for(var r=t.charCodeAt(0),n=47===r,o=-1,i=!0,a=t.length-1;a>=1;--a)if(47===(r=t.charCodeAt(a))){if(!i){o=a;break}}else i=!1;return-1===o?n?\"/\":\".\":n&&1===o?\"//\":t.slice(0,o)},basename:function(t,r){if(void 0!==r&&\"string\"!=typeof r)throw new TypeError('\"ext\" argument must be a string');e(t);var n,o=0,i=-1,a=!0;if(void 0!==r&&r.length>0&&r.length<=t.length){if(r.length===t.length&&r===t)return\"\";var h=r.length-1,s=-1;for(n=t.length-1;n>=0;--n){var f=t.charCodeAt(n);if(47===f){if(!a){o=n+1;break}}else-1===s&&(a=!1,s=n+1),h>=0&&(f===r.charCodeAt(h)?-1==--h&&(i=n):(h=-1,i=s))}return o===i?i=s:-1===i&&(i=t.length),t.slice(o,i)}for(n=t.length-1;n>=0;--n)if(47===t.charCodeAt(n)){if(!a){o=n+1;break}}else-1===i&&(a=!1,i=n+1);return-1===i?\"\":t.slice(o,i)},extname:function(t){e(t);for(var r=-1,n=0,o=-1,i=!0,a=0,h=t.length-1;h>=0;--h){var s=t.charCodeAt(h);if(47!==s)-1===o&&(i=!1,o=h+1),46===s?-1===r?r=h:1!==a&&(a=1):-1!==r&&(a=-1);else if(!i){n=h+1;break}}return-1===r||-1===o||0===a||1===a&&r===o-1&&r===n+1?\"\":t.slice(r,o)},format:function(t){if(null===t||\"object\"!=typeof t)throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof t);return function(t,e){var r=e.dir||e.root,n=e.base||(e.name||\"\")+(e.ext||\"\");return r?r===e.root?r+n:r+\"/\"+n:n}(0,t)},parse:function(t){e(t);var r={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(0===t.length)return r;var n,o=t.charCodeAt(0),i=47===o;i?(r.root=\"/\",n=1):n=0;for(var a=-1,h=0,s=-1,f=!0,u=t.length-1,c=0;u>=n;--u)if(47!==(o=t.charCodeAt(u)))-1===s&&(f=!1,s=u+1),46===o?-1===a?a=u:1!==c&&(c=1):-1!==a&&(c=-1);else if(!f){h=u+1;break}return-1===a||-1===s||0===c||1===c&&a===s-1&&a===h+1?-1!==s&&(r.base=r.name=0===h&&i?t.slice(1,s):t.slice(h,s)):(0===h&&i?(r.name=t.slice(1,a),r.base=t.slice(1,s)):(r.name=t.slice(h,a),r.base=t.slice(h,s)),r.ext=t.slice(a,s)),h>0?r.dir=t.slice(0,h-1):i&&(r.dir=\"/\"),r},sep:\"/\",delimiter:\":\",win32:null,posix:null};n.posix=n,t.exports=n},447:(t,e,r)=>{var n;if(r.r(e),r.d(e,{URI:()=>g,Utils:()=>O}),\"object\"==typeof process)n=\"win32\"===process.platform;else if(\"object\"==typeof navigator){var o=navigator.userAgent;n=o.indexOf(\"Windows\")>=0}var i,a,h=(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=/^\\w[\\w\\d+.-]*$/,f=/^\\//,u=/^\\/\\//,c=\"\",l=\"/\",p=/^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/,g=function(){function t(t,e,r,n,o,i){void 0===i&&(i=!1),\"object\"==typeof t?(this.scheme=t.scheme||c,this.authority=t.authority||c,this.path=t.path||c,this.query=t.query||c,this.fragment=t.fragment||c):(this.scheme=function(t,e){return t||e?t:\"file\"}(t,i),this.authority=e||c,this.path=function(t,e){switch(t){case\"https\":case\"http\":case\"file\":e?e[0]!==l&&(e=l+e):e=l}return e}(this.scheme,r||c),this.query=n||c,this.fragment=o||c,function(t,e){if(!t.scheme&&e)throw new Error('[UriError]: Scheme is missing: {scheme: \"\", authority: \"'+t.authority+'\", path: \"'+t.path+'\", query: \"'+t.query+'\", fragment: \"'+t.fragment+'\"}');if(t.scheme&&!s.test(t.scheme))throw new Error(\"[UriError]: Scheme contains illegal characters.\");if(t.path)if(t.authority){if(!f.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character')}else if(u.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")')}(this,i))}return t.isUri=function(e){return e instanceof t||!!e&&\"string\"==typeof e.authority&&\"string\"==typeof e.fragment&&\"string\"==typeof e.path&&\"string\"==typeof e.query&&\"string\"==typeof e.scheme&&\"function\"==typeof e.fsPath&&\"function\"==typeof e.with&&\"function\"==typeof e.toString},Object.defineProperty(t.prototype,\"fsPath\",{get:function(){return C(this,!1)},enumerable:!1,configurable:!0}),t.prototype.with=function(t){if(!t)return this;var e=t.scheme,r=t.authority,n=t.path,o=t.query,i=t.fragment;return void 0===e?e=this.scheme:null===e&&(e=c),void 0===r?r=this.authority:null===r&&(r=c),void 0===n?n=this.path:null===n&&(n=c),void 0===o?o=this.query:null===o&&(o=c),void 0===i?i=this.fragment:null===i&&(i=c),e===this.scheme&&r===this.authority&&n===this.path&&o===this.query&&i===this.fragment?this:new v(e,r,n,o,i)},t.parse=function(t,e){void 0===e&&(e=!1);var r=p.exec(t);return r?new v(r[2]||c,x(r[4]||c),x(r[5]||c),x(r[7]||c),x(r[9]||c),e):new v(c,c,c,c,c)},t.file=function(t){var e=c;if(n&&(t=t.replace(/\\\\/g,l)),t[0]===l&&t[1]===l){var r=t.indexOf(l,2);-1===r?(e=t.substring(2),t=l):(e=t.substring(2,r),t=t.substring(r)||l)}return new v(\"file\",e,t,c,c)},t.from=function(t){return new v(t.scheme,t.authority,t.path,t.query,t.fragment)},t.prototype.toString=function(t){return void 0===t&&(t=!1),A(this,t)},t.prototype.toJSON=function(){return this},t.revive=function(e){if(e){if(e instanceof t)return e;var r=new v(e);return r._formatted=e.external,r._fsPath=e._sep===d?e.fsPath:null,r}return e},t}(),d=n?1:void 0,v=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._formatted=null,e._fsPath=null,e}return h(e,t),Object.defineProperty(e.prototype,\"fsPath\",{get:function(){return this._fsPath||(this._fsPath=C(this,!1)),this._fsPath},enumerable:!1,configurable:!0}),e.prototype.toString=function(t){return void 0===t&&(t=!1),t?A(this,!0):(this._formatted||(this._formatted=A(this,!1)),this._formatted)},e.prototype.toJSON=function(){var t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=d),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t},e}(g),m=((a={})[58]=\"%3A\",a[47]=\"%2F\",a[63]=\"%3F\",a[35]=\"%23\",a[91]=\"%5B\",a[93]=\"%5D\",a[64]=\"%40\",a[33]=\"%21\",a[36]=\"%24\",a[38]=\"%26\",a[39]=\"%27\",a[40]=\"%28\",a[41]=\"%29\",a[42]=\"%2A\",a[43]=\"%2B\",a[44]=\"%2C\",a[59]=\"%3B\",a[61]=\"%3D\",a[32]=\"%20\",a);function y(t,e){for(var r=void 0,n=-1,o=0;o=97&&i<=122||i>=65&&i<=90||i>=48&&i<=57||45===i||46===i||95===i||126===i||e&&47===i)-1!==n&&(r+=encodeURIComponent(t.substring(n,o)),n=-1),void 0!==r&&(r+=t.charAt(o));else{void 0===r&&(r=t.substr(0,o));var a=m[i];void 0!==a?(-1!==n&&(r+=encodeURIComponent(t.substring(n,o)),n=-1),r+=a):-1===n&&(n=o)}}return-1!==n&&(r+=encodeURIComponent(t.substring(n))),void 0!==r?r:t}function b(t){for(var e=void 0,r=0;r1&&\"file\"===t.scheme?\"//\"+t.authority+t.path:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?e?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,n&&(r=r.replace(/\\//g,\"\\\\\")),r}function A(t,e){var r=e?b:y,n=\"\",o=t.scheme,i=t.authority,a=t.path,h=t.query,s=t.fragment;if(o&&(n+=o,n+=\":\"),(i||\"file\"===o)&&(n+=l,n+=l),i){var f=i.indexOf(\"@\");if(-1!==f){var u=i.substr(0,f);i=i.substr(f+1),-1===(f=u.indexOf(\":\"))?n+=r(u,!1):(n+=r(u.substr(0,f),!1),n+=\":\",n+=r(u.substr(f+1),!1)),n+=\"@\"}-1===(f=(i=i.toLowerCase()).indexOf(\":\"))?n+=r(i,!1):(n+=r(i.substr(0,f),!1),n+=i.substr(f))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2))(c=a.charCodeAt(1))>=65&&c<=90&&(a=\"/\"+String.fromCharCode(c+32)+\":\"+a.substr(3));else if(a.length>=2&&58===a.charCodeAt(1)){var c;(c=a.charCodeAt(0))>=65&&c<=90&&(a=String.fromCharCode(c+32)+\":\"+a.substr(2))}n+=r(a,!0)}return h&&(n+=\"?\",n+=r(h,!1)),s&&(n+=\"#\",n+=e?s:y(s,!1)),n}function w(t){try{return decodeURIComponent(t)}catch(e){return t.length>3?t.substr(0,3)+w(t.substr(3)):t}}var _=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function x(t){return t.match(_)?t.replace(_,(function(t){return w(t)})):t}var O,P=r(470),j=function(){for(var t=0,e=0,r=arguments.length;e{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r(447)})();export const{URI,Utils}=LIB;\n","/*---------------------------------------------------------------------------------------------\n * 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 __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nimport { URI, Utils } from './../../vscode-uri/index.js';\nexport function dirname(uriString) {\n return Utils.dirname(URI.parse(uriString)).toString();\n}\nexport function joinPath(uriString) {\n var paths = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n paths[_i - 1] = arguments[_i];\n }\n return Utils.joinPath.apply(Utils, __spreadArray([URI.parse(uriString)], paths)).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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { FileType, CompletionItemKind, TextEdit, Range, Position } from '../cssLanguageTypes.js';\nimport { startsWith, endsWith } from '../utils/strings.js';\nimport { joinPath } from '../utils/resources.js';\nvar PathCompletionParticipant = /** @class */ (function () {\n function PathCompletionParticipant(readDirectory) {\n this.readDirectory = readDirectory;\n this.literalCompletions = [];\n this.importCompletions = [];\n }\n PathCompletionParticipant.prototype.onCssURILiteralValue = function (context) {\n this.literalCompletions.push(context);\n };\n PathCompletionParticipant.prototype.onCssImportPath = function (context) {\n this.importCompletions.push(context);\n };\n PathCompletionParticipant.prototype.computeCompletions = function (document, documentContext) {\n return __awaiter(this, void 0, void 0, function () {\n var result, _i, _a, literalCompletion, uriValue, fullValue, items, _b, items_1, item, _c, _d, importCompletion, pathValue, fullValue, suggestions, _e, suggestions_1, item;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n result = { items: [], isIncomplete: false };\n _i = 0, _a = this.literalCompletions;\n _f.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 5];\n literalCompletion = _a[_i];\n uriValue = literalCompletion.uriValue;\n fullValue = stripQuotes(uriValue);\n if (!(fullValue === '.' || fullValue === '..')) return [3 /*break*/, 2];\n result.isIncomplete = true;\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.providePathSuggestions(uriValue, literalCompletion.position, literalCompletion.range, document, documentContext)];\n case 3:\n items = _f.sent();\n for (_b = 0, items_1 = items; _b < items_1.length; _b++) {\n item = items_1[_b];\n result.items.push(item);\n }\n _f.label = 4;\n case 4:\n _i++;\n return [3 /*break*/, 1];\n case 5:\n _c = 0, _d = this.importCompletions;\n _f.label = 6;\n case 6:\n if (!(_c < _d.length)) return [3 /*break*/, 10];\n importCompletion = _d[_c];\n pathValue = importCompletion.pathValue;\n fullValue = stripQuotes(pathValue);\n if (!(fullValue === '.' || fullValue === '..')) return [3 /*break*/, 7];\n result.isIncomplete = true;\n return [3 /*break*/, 9];\n case 7: return [4 /*yield*/, this.providePathSuggestions(pathValue, importCompletion.position, importCompletion.range, document, documentContext)];\n case 8:\n suggestions = _f.sent();\n if (document.languageId === 'scss') {\n suggestions.forEach(function (s) {\n if (startsWith(s.label, '_') && endsWith(s.label, '.scss')) {\n if (s.textEdit) {\n s.textEdit.newText = s.label.slice(1, -5);\n }\n else {\n s.label = s.label.slice(1, -5);\n }\n }\n });\n }\n for (_e = 0, suggestions_1 = suggestions; _e < suggestions_1.length; _e++) {\n item = suggestions_1[_e];\n result.items.push(item);\n }\n _f.label = 9;\n case 9:\n _c++;\n return [3 /*break*/, 6];\n case 10: return [2 /*return*/, result];\n }\n });\n });\n };\n PathCompletionParticipant.prototype.providePathSuggestions = function (pathValue, position, range, document, documentContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fullValue, isValueQuoted, valueBeforeCursor, currentDocUri, fullValueRange, replaceRange, valueBeforeLastSlash, parentDir, result, infos, _i, infos_1, _a, name, type, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n fullValue = stripQuotes(pathValue);\n isValueQuoted = startsWith(pathValue, \"'\") || startsWith(pathValue, \"\\\"\");\n valueBeforeCursor = isValueQuoted\n ? fullValue.slice(0, position.character - (range.start.character + 1))\n : fullValue.slice(0, position.character - range.start.character);\n currentDocUri = document.uri;\n fullValueRange = isValueQuoted ? shiftRange(range, 1, -1) : range;\n replaceRange = pathToReplaceRange(valueBeforeCursor, fullValue, fullValueRange);\n valueBeforeLastSlash = valueBeforeCursor.substring(0, valueBeforeCursor.lastIndexOf('/') + 1);\n parentDir = documentContext.resolveReference(valueBeforeLastSlash || '.', currentDocUri);\n if (!parentDir) return [3 /*break*/, 4];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n result = [];\n return [4 /*yield*/, this.readDirectory(parentDir)];\n case 2:\n infos = _b.sent();\n for (_i = 0, infos_1 = infos; _i < infos_1.length; _i++) {\n _a = infos_1[_i], name = _a[0], type = _a[1];\n // Exclude paths that start with `.`\n if (name.charCodeAt(0) !== CharCode_dot && (type === FileType.Directory || joinPath(parentDir, name) !== currentDocUri)) {\n result.push(createCompletionItem(name, type === FileType.Directory, replaceRange));\n }\n }\n return [2 /*return*/, result];\n case 3:\n e_1 = _b.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, []];\n }\n });\n });\n };\n return PathCompletionParticipant;\n}());\nexport { PathCompletionParticipant };\nvar CharCode_dot = '.'.charCodeAt(0);\nfunction stripQuotes(fullValue) {\n if (startsWith(fullValue, \"'\") || startsWith(fullValue, \"\\\"\")) {\n return fullValue.slice(1, -1);\n }\n else {\n return fullValue;\n }\n}\nfunction pathToReplaceRange(valueBeforeCursor, fullValue, fullValueRange) {\n var replaceRange;\n var lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/');\n if (lastIndexOfSlash === -1) {\n replaceRange = fullValueRange;\n }\n else {\n // For cases where cursor is in the middle of attribute value, like