{"version":3,"file":"static/js/8849_9672eb8aa95bec4d6c6e.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findDecorations.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replaceAllCommand.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replacePattern.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findModel.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findState.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findController.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { minimapFindMatch, overviewRulerFindMatchForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nexport class FindDecorations {\n constructor(editor) {\n this._editor = editor;\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n this._startPosition = this._editor.getPosition();\n }\n dispose() {\n this._editor.removeDecorations(this._allDecorations());\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n }\n reset() {\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n }\n getCount() {\n return this._decorations.length;\n }\n /** @deprecated use getFindScopes to support multiple selections */\n getFindScope() {\n if (this._findScopeDecorationIds[0]) {\n return this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]);\n }\n return null;\n }\n getFindScopes() {\n if (this._findScopeDecorationIds.length) {\n const scopes = this._findScopeDecorationIds.map(findScopeDecorationId => this._editor.getModel().getDecorationRange(findScopeDecorationId)).filter(element => !!element);\n if (scopes.length) {\n return scopes;\n }\n }\n return null;\n }\n getStartPosition() {\n return this._startPosition;\n }\n setStartPosition(newStartPosition) {\n this._startPosition = newStartPosition;\n this.setCurrentFindMatch(null);\n }\n _getDecorationIndex(decorationId) {\n const index = this._decorations.indexOf(decorationId);\n if (index >= 0) {\n return index + 1;\n }\n return 1;\n }\n getDecorationRangeAt(index) {\n const decorationId = index < this._decorations.length ? this._decorations[index] : null;\n if (decorationId) {\n return this._editor.getModel().getDecorationRange(decorationId);\n }\n return null;\n }\n getCurrentMatchesPosition(desiredRange) {\n const candidates = this._editor.getModel().getDecorationsInRange(desiredRange);\n for (const candidate of candidates) {\n const candidateOpts = candidate.options;\n if (candidateOpts === FindDecorations._FIND_MATCH_DECORATION || candidateOpts === FindDecorations._CURRENT_FIND_MATCH_DECORATION) {\n return this._getDecorationIndex(candidate.id);\n }\n }\n // We don't know the current match position, so returns zero to show '?' in find widget\n return 0;\n }\n setCurrentFindMatch(nextMatch) {\n let newCurrentDecorationId = null;\n let matchPosition = 0;\n if (nextMatch) {\n for (let i = 0, len = this._decorations.length; i < len; i++) {\n const range = this._editor.getModel().getDecorationRange(this._decorations[i]);\n if (nextMatch.equalsRange(range)) {\n newCurrentDecorationId = this._decorations[i];\n matchPosition = (i + 1);\n break;\n }\n }\n }\n if (this._highlightedDecorationId !== null || newCurrentDecorationId !== null) {\n this._editor.changeDecorations((changeAccessor) => {\n if (this._highlightedDecorationId !== null) {\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._FIND_MATCH_DECORATION);\n this._highlightedDecorationId = null;\n }\n if (newCurrentDecorationId !== null) {\n this._highlightedDecorationId = newCurrentDecorationId;\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._CURRENT_FIND_MATCH_DECORATION);\n }\n if (this._rangeHighlightDecorationId !== null) {\n changeAccessor.removeDecoration(this._rangeHighlightDecorationId);\n this._rangeHighlightDecorationId = null;\n }\n if (newCurrentDecorationId !== null) {\n let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);\n if (rng.startLineNumber !== rng.endLineNumber && rng.endColumn === 1) {\n const lineBeforeEnd = rng.endLineNumber - 1;\n const lineBeforeEndMaxColumn = this._editor.getModel().getLineMaxColumn(lineBeforeEnd);\n rng = new Range(rng.startLineNumber, rng.startColumn, lineBeforeEnd, lineBeforeEndMaxColumn);\n }\n this._rangeHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations._RANGE_HIGHLIGHT_DECORATION);\n }\n });\n }\n return matchPosition;\n }\n set(findMatches, findScopes) {\n this._editor.changeDecorations((accessor) => {\n let findMatchesOptions = FindDecorations._FIND_MATCH_DECORATION;\n const newOverviewRulerApproximateDecorations = [];\n if (findMatches.length > 1000) {\n // we go into a mode where the overview ruler gets \"approximate\" decorations\n // the reason is that the overview ruler paints all the decorations in the file and we don't want to cause freezes\n findMatchesOptions = FindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION;\n // approximate a distance in lines where matches should be merged\n const lineCount = this._editor.getModel().getLineCount();\n const height = this._editor.getLayoutInfo().height;\n const approxPixelsPerLine = height / lineCount;\n const mergeLinesDelta = Math.max(2, Math.ceil(3 / approxPixelsPerLine));\n // merge decorations as much as possible\n let prevStartLineNumber = findMatches[0].range.startLineNumber;\n let prevEndLineNumber = findMatches[0].range.endLineNumber;\n for (let i = 1, len = findMatches.length; i < len; i++) {\n const range = findMatches[i].range;\n if (prevEndLineNumber + mergeLinesDelta >= range.startLineNumber) {\n if (range.endLineNumber > prevEndLineNumber) {\n prevEndLineNumber = range.endLineNumber;\n }\n }\n else {\n newOverviewRulerApproximateDecorations.push({\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n });\n prevStartLineNumber = range.startLineNumber;\n prevEndLineNumber = range.endLineNumber;\n }\n }\n newOverviewRulerApproximateDecorations.push({\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n });\n }\n // Find matches\n const newFindMatchesDecorations = new Array(findMatches.length);\n for (let i = 0, len = findMatches.length; i < len; i++) {\n newFindMatchesDecorations[i] = {\n range: findMatches[i].range,\n options: findMatchesOptions\n };\n }\n this._decorations = accessor.deltaDecorations(this._decorations, newFindMatchesDecorations);\n // Overview ruler approximate decorations\n this._overviewRulerApproximateDecorations = accessor.deltaDecorations(this._overviewRulerApproximateDecorations, newOverviewRulerApproximateDecorations);\n // Range highlight\n if (this._rangeHighlightDecorationId) {\n accessor.removeDecoration(this._rangeHighlightDecorationId);\n this._rangeHighlightDecorationId = null;\n }\n // Find scope\n if (this._findScopeDecorationIds.length) {\n this._findScopeDecorationIds.forEach(findScopeDecorationId => accessor.removeDecoration(findScopeDecorationId));\n this._findScopeDecorationIds = [];\n }\n if (findScopes === null || findScopes === void 0 ? void 0 : findScopes.length) {\n this._findScopeDecorationIds = findScopes.map(findScope => accessor.addDecoration(findScope, FindDecorations._FIND_SCOPE_DECORATION));\n }\n });\n }\n matchBeforePosition(position) {\n if (this._decorations.length === 0) {\n return null;\n }\n for (let i = this._decorations.length - 1; i >= 0; i--) {\n const decorationId = this._decorations[i];\n const r = this._editor.getModel().getDecorationRange(decorationId);\n if (!r || r.endLineNumber > position.lineNumber) {\n continue;\n }\n if (r.endLineNumber < position.lineNumber) {\n return r;\n }\n if (r.endColumn > position.column) {\n continue;\n }\n return r;\n }\n return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1]);\n }\n matchAfterPosition(position) {\n if (this._decorations.length === 0) {\n return null;\n }\n for (let i = 0, len = this._decorations.length; i < len; i++) {\n const decorationId = this._decorations[i];\n const r = this._editor.getModel().getDecorationRange(decorationId);\n if (!r || r.startLineNumber < position.lineNumber) {\n continue;\n }\n if (r.startLineNumber > position.lineNumber) {\n return r;\n }\n if (r.startColumn < position.column) {\n continue;\n }\n return r;\n }\n return this._editor.getModel().getDecorationRange(this._decorations[0]);\n }\n _allDecorations() {\n let result = [];\n result = result.concat(this._decorations);\n result = result.concat(this._overviewRulerApproximateDecorations);\n if (this._findScopeDecorationIds.length) {\n result.push(...this._findScopeDecorationIds);\n }\n if (this._rangeHighlightDecorationId) {\n result.push(this._rangeHighlightDecorationId);\n }\n return result;\n }\n}\nFindDecorations._CURRENT_FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n description: 'current-find-match',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n zIndex: 13,\n className: 'currentFindMatch',\n inlineClassName: 'currentFindMatchInline',\n showIfCollapsed: true,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapFindMatch),\n position: 1 /* MinimapPosition.Inline */\n }\n});\nFindDecorations._FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n description: 'find-match',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n zIndex: 10,\n className: 'findMatch',\n inlineClassName: 'findMatchInline',\n showIfCollapsed: true,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapFindMatch),\n position: 1 /* MinimapPosition.Inline */\n }\n});\nFindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n description: 'find-match-no-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'findMatch',\n showIfCollapsed: true\n});\nFindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n description: 'find-match-only-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n }\n});\nFindDecorations._RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({\n description: 'find-range-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'rangeHighlight',\n isWholeLine: true\n});\nFindDecorations._FIND_SCOPE_DECORATION = ModelDecorationOptions.register({\n description: 'find-scope',\n className: 'findScope',\n isWholeLine: true\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nexport class ReplaceAllCommand {\n constructor(editorSelection, ranges, replaceStrings) {\n this._editorSelection = editorSelection;\n this._ranges = ranges;\n this._replaceStrings = replaceStrings;\n this._trackedEditorSelectionId = null;\n }\n getEditOperations(model, builder) {\n if (this._ranges.length > 0) {\n // Collect all edit operations\n const ops = [];\n for (let i = 0; i < this._ranges.length; i++) {\n ops.push({\n range: this._ranges[i],\n text: this._replaceStrings[i]\n });\n }\n // Sort them in ascending order by range starts\n ops.sort((o1, o2) => {\n return Range.compareRangesUsingStarts(o1.range, o2.range);\n });\n // Merge operations that touch each other\n const resultOps = [];\n let previousOp = ops[0];\n for (let i = 1; i < ops.length; i++) {\n if (previousOp.range.endLineNumber === ops[i].range.startLineNumber && previousOp.range.endColumn === ops[i].range.startColumn) {\n // These operations are one after another and can be merged\n previousOp.range = previousOp.range.plusRange(ops[i].range);\n previousOp.text = previousOp.text + ops[i].text;\n }\n else {\n resultOps.push(previousOp);\n previousOp = ops[i];\n }\n }\n resultOps.push(previousOp);\n for (const op of resultOps) {\n builder.addEditOperation(op.range, op.text);\n }\n }\n this._trackedEditorSelectionId = builder.trackSelection(this._editorSelection);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this._trackedEditorSelectionId);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { buildReplaceStringWithCasePreserved } from '../../../../base/common/search.js';\n/**\n * Assigned when the replace pattern is entirely static.\n */\nclass StaticValueReplacePattern {\n constructor(staticValue) {\n this.staticValue = staticValue;\n this.kind = 0 /* ReplacePatternKind.StaticValue */;\n }\n}\n/**\n * Assigned when the replace pattern has replacement patterns.\n */\nclass DynamicPiecesReplacePattern {\n constructor(pieces) {\n this.pieces = pieces;\n this.kind = 1 /* ReplacePatternKind.DynamicPieces */;\n }\n}\nexport class ReplacePattern {\n static fromStaticValue(value) {\n return new ReplacePattern([ReplacePiece.staticValue(value)]);\n }\n get hasReplacementPatterns() {\n return (this._state.kind === 1 /* ReplacePatternKind.DynamicPieces */);\n }\n constructor(pieces) {\n if (!pieces || pieces.length === 0) {\n this._state = new StaticValueReplacePattern('');\n }\n else if (pieces.length === 1 && pieces[0].staticValue !== null) {\n this._state = new StaticValueReplacePattern(pieces[0].staticValue);\n }\n else {\n this._state = new DynamicPiecesReplacePattern(pieces);\n }\n }\n buildReplaceString(matches, preserveCase) {\n if (this._state.kind === 0 /* ReplacePatternKind.StaticValue */) {\n if (preserveCase) {\n return buildReplaceStringWithCasePreserved(matches, this._state.staticValue);\n }\n else {\n return this._state.staticValue;\n }\n }\n let result = '';\n for (let i = 0, len = this._state.pieces.length; i < len; i++) {\n const piece = this._state.pieces[i];\n if (piece.staticValue !== null) {\n // static value ReplacePiece\n result += piece.staticValue;\n continue;\n }\n // match index ReplacePiece\n let match = ReplacePattern._substitute(piece.matchIndex, matches);\n if (piece.caseOps !== null && piece.caseOps.length > 0) {\n const repl = [];\n const lenOps = piece.caseOps.length;\n let opIdx = 0;\n for (let idx = 0, len = match.length; idx < len; idx++) {\n if (opIdx >= lenOps) {\n repl.push(match.slice(idx));\n break;\n }\n switch (piece.caseOps[opIdx]) {\n case 'U':\n repl.push(match[idx].toUpperCase());\n break;\n case 'u':\n repl.push(match[idx].toUpperCase());\n opIdx++;\n break;\n case 'L':\n repl.push(match[idx].toLowerCase());\n break;\n case 'l':\n repl.push(match[idx].toLowerCase());\n opIdx++;\n break;\n default:\n repl.push(match[idx]);\n }\n }\n match = repl.join('');\n }\n result += match;\n }\n return result;\n }\n static _substitute(matchIndex, matches) {\n if (matches === null) {\n return '';\n }\n if (matchIndex === 0) {\n return matches[0];\n }\n let remainder = '';\n while (matchIndex > 0) {\n if (matchIndex < matches.length) {\n // A match can be undefined\n const match = (matches[matchIndex] || '');\n return match + remainder;\n }\n remainder = String(matchIndex % 10) + remainder;\n matchIndex = Math.floor(matchIndex / 10);\n }\n return '$' + remainder;\n }\n}\n/**\n * A replace piece can either be a static string or an index to a specific match.\n */\nexport class ReplacePiece {\n static staticValue(value) {\n return new ReplacePiece(value, -1, null);\n }\n static caseOps(index, caseOps) {\n return new ReplacePiece(null, index, caseOps);\n }\n constructor(staticValue, matchIndex, caseOps) {\n this.staticValue = staticValue;\n this.matchIndex = matchIndex;\n if (!caseOps || caseOps.length === 0) {\n this.caseOps = null;\n }\n else {\n this.caseOps = caseOps.slice(0);\n }\n }\n}\nclass ReplacePieceBuilder {\n constructor(source) {\n this._source = source;\n this._lastCharIndex = 0;\n this._result = [];\n this._resultLen = 0;\n this._currentStaticPiece = '';\n }\n emitUnchanged(toCharIndex) {\n this._emitStatic(this._source.substring(this._lastCharIndex, toCharIndex));\n this._lastCharIndex = toCharIndex;\n }\n emitStatic(value, toCharIndex) {\n this._emitStatic(value);\n this._lastCharIndex = toCharIndex;\n }\n _emitStatic(value) {\n if (value.length === 0) {\n return;\n }\n this._currentStaticPiece += value;\n }\n emitMatchIndex(index, toCharIndex, caseOps) {\n if (this._currentStaticPiece.length !== 0) {\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n this._currentStaticPiece = '';\n }\n this._result[this._resultLen++] = ReplacePiece.caseOps(index, caseOps);\n this._lastCharIndex = toCharIndex;\n }\n finalize() {\n this.emitUnchanged(this._source.length);\n if (this._currentStaticPiece.length !== 0) {\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n this._currentStaticPiece = '';\n }\n return new ReplacePattern(this._result);\n }\n}\n/**\n * \\n\t\t\t=> inserts a LF\n * \\t\t\t\t=> inserts a TAB\n * \\\\\t\t\t=> inserts a \"\\\".\n * \\u\t\t\t=> upper-cases one character in a match.\n * \\U\t\t\t=> upper-cases ALL remaining characters in a match.\n * \\l\t\t\t=> lower-cases one character in a match.\n * \\L\t\t\t=> lower-cases ALL remaining characters in a match.\n * $$\t\t\t=> inserts a \"$\".\n * $& and $0\t=> inserts the matched substring.\n * $n\t\t\t=> Where n is a non-negative integer lesser than 100, inserts the nth parenthesized submatch string\n * everything else stays untouched\n *\n * Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter\n */\nexport function parseReplaceString(replaceString) {\n if (!replaceString || replaceString.length === 0) {\n return new ReplacePattern(null);\n }\n const caseOps = [];\n const result = new ReplacePieceBuilder(replaceString);\n for (let i = 0, len = replaceString.length; i < len; i++) {\n const chCode = replaceString.charCodeAt(i);\n if (chCode === 92 /* CharCode.Backslash */) {\n // move to next char\n i++;\n if (i >= len) {\n // string ends with a \\\n break;\n }\n const nextChCode = replaceString.charCodeAt(i);\n // let replaceWithCharacter: string | null = null;\n switch (nextChCode) {\n case 92 /* CharCode.Backslash */:\n // \\\\ => inserts a \"\\\"\n result.emitUnchanged(i - 1);\n result.emitStatic('\\\\', i + 1);\n break;\n case 110 /* CharCode.n */:\n // \\n => inserts a LF\n result.emitUnchanged(i - 1);\n result.emitStatic('\\n', i + 1);\n break;\n case 116 /* CharCode.t */:\n // \\t => inserts a TAB\n result.emitUnchanged(i - 1);\n result.emitStatic('\\t', i + 1);\n break;\n // Case modification of string replacements, patterned after Boost, but only applied\n // to the replacement text, not subsequent content.\n case 117 /* CharCode.u */:\n // \\u => upper-cases one character.\n case 85 /* CharCode.U */:\n // \\U => upper-cases ALL following characters.\n case 108 /* CharCode.l */:\n // \\l => lower-cases one character.\n case 76 /* CharCode.L */:\n // \\L => lower-cases ALL following characters.\n result.emitUnchanged(i - 1);\n result.emitStatic('', i + 1);\n caseOps.push(String.fromCharCode(nextChCode));\n break;\n }\n continue;\n }\n if (chCode === 36 /* CharCode.DollarSign */) {\n // move to next char\n i++;\n if (i >= len) {\n // string ends with a $\n break;\n }\n const nextChCode = replaceString.charCodeAt(i);\n if (nextChCode === 36 /* CharCode.DollarSign */) {\n // $$ => inserts a \"$\"\n result.emitUnchanged(i - 1);\n result.emitStatic('$', i + 1);\n continue;\n }\n if (nextChCode === 48 /* CharCode.Digit0 */ || nextChCode === 38 /* CharCode.Ampersand */) {\n // $& and $0 => inserts the matched substring.\n result.emitUnchanged(i - 1);\n result.emitMatchIndex(0, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n if (49 /* CharCode.Digit1 */ <= nextChCode && nextChCode <= 57 /* CharCode.Digit9 */) {\n // $n\n let matchIndex = nextChCode - 48 /* CharCode.Digit0 */;\n // peek next char to probe for $nn\n if (i + 1 < len) {\n const nextNextChCode = replaceString.charCodeAt(i + 1);\n if (48 /* CharCode.Digit0 */ <= nextNextChCode && nextNextChCode <= 57 /* CharCode.Digit9 */) {\n // $nn\n // move to next char\n i++;\n matchIndex = matchIndex * 10 + (nextNextChCode - 48 /* CharCode.Digit0 */);\n result.emitUnchanged(i - 2);\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n }\n result.emitUnchanged(i - 1);\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n }\n }\n return result.finalize();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { findFirstIdxMonotonousOrArrLen } from '../../../../base/common/arraysFind.js';\nimport { RunOnceScheduler, TimeoutTimer } from '../../../../base/common/async.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection } from '../../../common/commands/replaceCommand.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { SearchParams } from '../../../common/model/textModelSearch.js';\nimport { FindDecorations } from './findDecorations.js';\nimport { ReplaceAllCommand } from './replaceAllCommand.js';\nimport { parseReplaceString, ReplacePattern } from './replacePattern.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const CONTEXT_FIND_WIDGET_VISIBLE = new RawContextKey('findWidgetVisible', false);\nexport const CONTEXT_FIND_WIDGET_NOT_VISIBLE = CONTEXT_FIND_WIDGET_VISIBLE.toNegated();\n// Keep ContextKey use of 'Focussed' to not break when clauses\nexport const CONTEXT_FIND_INPUT_FOCUSED = new RawContextKey('findInputFocussed', false);\nexport const CONTEXT_REPLACE_INPUT_FOCUSED = new RawContextKey('replaceInputFocussed', false);\nexport const ToggleCaseSensitiveKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */ }\n};\nexport const ToggleWholeWordKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */ }\n};\nexport const ToggleRegexKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */ }\n};\nexport const ToggleSearchScopeKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */ }\n};\nexport const TogglePreserveCaseKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */ }\n};\nexport const FIND_IDS = {\n StartFindAction: 'actions.find',\n StartFindWithSelection: 'actions.findWithSelection',\n StartFindWithArgs: 'editor.actions.findWithArgs',\n NextMatchFindAction: 'editor.action.nextMatchFindAction',\n PreviousMatchFindAction: 'editor.action.previousMatchFindAction',\n GoToMatchFindAction: 'editor.action.goToMatchFindAction',\n NextSelectionMatchFindAction: 'editor.action.nextSelectionMatchFindAction',\n PreviousSelectionMatchFindAction: 'editor.action.previousSelectionMatchFindAction',\n StartFindReplaceAction: 'editor.action.startFindReplaceAction',\n CloseFindWidgetCommand: 'closeFindWidget',\n ToggleCaseSensitiveCommand: 'toggleFindCaseSensitive',\n ToggleWholeWordCommand: 'toggleFindWholeWord',\n ToggleRegexCommand: 'toggleFindRegex',\n ToggleSearchScopeCommand: 'toggleFindInSelection',\n TogglePreserveCaseCommand: 'togglePreserveCase',\n ReplaceOneAction: 'editor.action.replaceOne',\n ReplaceAllAction: 'editor.action.replaceAll',\n SelectAllMatchesAction: 'editor.action.selectAllMatches'\n};\nexport const MATCHES_LIMIT = 19999;\nconst RESEARCH_DELAY = 240;\nexport class FindModelBoundToEditorModel {\n constructor(editor, state) {\n this._toDispose = new DisposableStore();\n this._editor = editor;\n this._state = state;\n this._isDisposed = false;\n this._startSearchingTimer = new TimeoutTimer();\n this._decorations = new FindDecorations(editor);\n this._toDispose.add(this._decorations);\n this._updateDecorationsScheduler = new RunOnceScheduler(() => this.research(false), 100);\n this._toDispose.add(this._updateDecorationsScheduler);\n this._toDispose.add(this._editor.onDidChangeCursorPosition((e) => {\n if (e.reason === 3 /* CursorChangeReason.Explicit */\n || e.reason === 5 /* CursorChangeReason.Undo */\n || e.reason === 6 /* CursorChangeReason.Redo */) {\n this._decorations.setStartPosition(this._editor.getPosition());\n }\n }));\n this._ignoreModelContentChanged = false;\n this._toDispose.add(this._editor.onDidChangeModelContent((e) => {\n if (this._ignoreModelContentChanged) {\n return;\n }\n if (e.isFlush) {\n // a model.setValue() was called\n this._decorations.reset();\n }\n this._decorations.setStartPosition(this._editor.getPosition());\n this._updateDecorationsScheduler.schedule();\n }));\n this._toDispose.add(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this.research(false, this._state.searchScope);\n }\n dispose() {\n this._isDisposed = true;\n dispose(this._startSearchingTimer);\n this._toDispose.dispose();\n }\n _onStateChanged(e) {\n if (this._isDisposed) {\n // The find model is disposed during a find state changed event\n return;\n }\n if (!this._editor.hasModel()) {\n // The find model will be disposed momentarily\n return;\n }\n if (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope) {\n const model = this._editor.getModel();\n if (model.isTooLargeForSyncing()) {\n this._startSearchingTimer.cancel();\n this._startSearchingTimer.setIfNotSet(() => {\n if (e.searchScope) {\n this.research(e.moveCursor, this._state.searchScope);\n }\n else {\n this.research(e.moveCursor);\n }\n }, RESEARCH_DELAY);\n }\n else {\n if (e.searchScope) {\n this.research(e.moveCursor, this._state.searchScope);\n }\n else {\n this.research(e.moveCursor);\n }\n }\n }\n }\n static _getSearchRange(model, findScope) {\n // If we have set now or before a find scope, use it for computing the search range\n if (findScope) {\n return findScope;\n }\n return model.getFullModelRange();\n }\n research(moveCursor, newFindScope) {\n let findScopes = null;\n if (typeof newFindScope !== 'undefined') {\n if (newFindScope !== null) {\n if (!Array.isArray(newFindScope)) {\n findScopes = [newFindScope];\n }\n else {\n findScopes = newFindScope;\n }\n }\n }\n else {\n findScopes = this._decorations.getFindScopes();\n }\n if (findScopes !== null) {\n findScopes = findScopes.map(findScope => {\n if (findScope.startLineNumber !== findScope.endLineNumber) {\n let endLineNumber = findScope.endLineNumber;\n if (findScope.endColumn === 1) {\n endLineNumber = endLineNumber - 1;\n }\n return new Range(findScope.startLineNumber, 1, endLineNumber, this._editor.getModel().getLineMaxColumn(endLineNumber));\n }\n return findScope;\n });\n }\n const findMatches = this._findMatches(findScopes, false, MATCHES_LIMIT);\n this._decorations.set(findMatches, findScopes);\n const editorSelection = this._editor.getSelection();\n let currentMatchesPosition = this._decorations.getCurrentMatchesPosition(editorSelection);\n if (currentMatchesPosition === 0 && findMatches.length > 0) {\n // current selection is not on top of a match\n // try to find its nearest result from the top of the document\n const matchAfterSelection = findFirstIdxMonotonousOrArrLen(findMatches.map(match => match.range), range => Range.compareRangesUsingStarts(range, editorSelection) >= 0);\n currentMatchesPosition = matchAfterSelection > 0 ? matchAfterSelection - 1 + 1 /** match position is one based */ : currentMatchesPosition;\n }\n this._state.changeMatchInfo(currentMatchesPosition, this._decorations.getCount(), undefined);\n if (moveCursor && this._editor.getOption(41 /* EditorOption.find */).cursorMoveOnType) {\n this._moveToNextMatch(this._decorations.getStartPosition());\n }\n }\n _hasMatches() {\n return (this._state.matchesCount > 0);\n }\n _cannotFind() {\n if (!this._hasMatches()) {\n const findScope = this._decorations.getFindScope();\n if (findScope) {\n // Reveal the selection so user is reminded that 'selection find' is on.\n this._editor.revealRangeInCenterIfOutsideViewport(findScope, 0 /* ScrollType.Smooth */);\n }\n return true;\n }\n return false;\n }\n _setCurrentFindMatch(match) {\n const matchesPosition = this._decorations.setCurrentFindMatch(match);\n this._state.changeMatchInfo(matchesPosition, this._decorations.getCount(), match);\n this._editor.setSelection(match);\n this._editor.revealRangeInCenterIfOutsideViewport(match, 0 /* ScrollType.Smooth */);\n }\n _prevSearchPosition(before) {\n const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n || this._state.searchString.indexOf('$') >= 0);\n let { lineNumber, column } = before;\n const model = this._editor.getModel();\n if (isUsingLineStops || column === 1) {\n if (lineNumber === 1) {\n lineNumber = model.getLineCount();\n }\n else {\n lineNumber--;\n }\n column = model.getLineMaxColumn(lineNumber);\n }\n else {\n column--;\n }\n return new Position(lineNumber, column);\n }\n _moveToPrevMatch(before, isRecursed = false) {\n if (!this._state.canNavigateBack()) {\n // we are beyond the first matched find result\n // instead of doing nothing, we should refocus the first item\n const nextMatchRange = this._decorations.matchAfterPosition(before);\n if (nextMatchRange) {\n this._setCurrentFindMatch(nextMatchRange);\n }\n return;\n }\n if (this._decorations.getCount() < MATCHES_LIMIT) {\n let prevMatchRange = this._decorations.matchBeforePosition(before);\n if (prevMatchRange && prevMatchRange.isEmpty() && prevMatchRange.getStartPosition().equals(before)) {\n before = this._prevSearchPosition(before);\n prevMatchRange = this._decorations.matchBeforePosition(before);\n }\n if (prevMatchRange) {\n this._setCurrentFindMatch(prevMatchRange);\n }\n return;\n }\n if (this._cannotFind()) {\n return;\n }\n const findScope = this._decorations.getFindScope();\n const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n // ...(----)...|...\n if (searchRange.getEndPosition().isBefore(before)) {\n before = searchRange.getEndPosition();\n }\n // ...|...(----)...\n if (before.isBefore(searchRange.getStartPosition())) {\n before = searchRange.getEndPosition();\n }\n const { lineNumber, column } = before;\n const model = this._editor.getModel();\n let position = new Position(lineNumber, column);\n let prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n if (prevMatch && prevMatch.range.isEmpty() && prevMatch.range.getStartPosition().equals(position)) {\n // Looks like we're stuck at this position, unacceptable!\n position = this._prevSearchPosition(position);\n prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n }\n if (!prevMatch) {\n // there is precisely one match and selection is on top of it\n return;\n }\n if (!isRecursed && !searchRange.containsRange(prevMatch.range)) {\n return this._moveToPrevMatch(prevMatch.range.getStartPosition(), true);\n }\n this._setCurrentFindMatch(prevMatch.range);\n }\n moveToPrevMatch() {\n this._moveToPrevMatch(this._editor.getSelection().getStartPosition());\n }\n _nextSearchPosition(after) {\n const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n || this._state.searchString.indexOf('$') >= 0);\n let { lineNumber, column } = after;\n const model = this._editor.getModel();\n if (isUsingLineStops || column === model.getLineMaxColumn(lineNumber)) {\n if (lineNumber === model.getLineCount()) {\n lineNumber = 1;\n }\n else {\n lineNumber++;\n }\n column = 1;\n }\n else {\n column++;\n }\n return new Position(lineNumber, column);\n }\n _moveToNextMatch(after) {\n if (!this._state.canNavigateForward()) {\n // we are beyond the last matched find result\n // instead of doing nothing, we should refocus the last item\n const prevMatchRange = this._decorations.matchBeforePosition(after);\n if (prevMatchRange) {\n this._setCurrentFindMatch(prevMatchRange);\n }\n return;\n }\n if (this._decorations.getCount() < MATCHES_LIMIT) {\n let nextMatchRange = this._decorations.matchAfterPosition(after);\n if (nextMatchRange && nextMatchRange.isEmpty() && nextMatchRange.getStartPosition().equals(after)) {\n // Looks like we're stuck at this position, unacceptable!\n after = this._nextSearchPosition(after);\n nextMatchRange = this._decorations.matchAfterPosition(after);\n }\n if (nextMatchRange) {\n this._setCurrentFindMatch(nextMatchRange);\n }\n return;\n }\n const nextMatch = this._getNextMatch(after, false, true);\n if (nextMatch) {\n this._setCurrentFindMatch(nextMatch.range);\n }\n }\n _getNextMatch(after, captureMatches, forceMove, isRecursed = false) {\n if (this._cannotFind()) {\n return null;\n }\n const findScope = this._decorations.getFindScope();\n const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n // ...(----)...|...\n if (searchRange.getEndPosition().isBefore(after)) {\n after = searchRange.getStartPosition();\n }\n // ...|...(----)...\n if (after.isBefore(searchRange.getStartPosition())) {\n after = searchRange.getStartPosition();\n }\n const { lineNumber, column } = after;\n const model = this._editor.getModel();\n let position = new Position(lineNumber, column);\n let nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches);\n if (forceMove && nextMatch && nextMatch.range.isEmpty() && nextMatch.range.getStartPosition().equals(position)) {\n // Looks like we're stuck at this position, unacceptable!\n position = this._nextSearchPosition(position);\n nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches);\n }\n if (!nextMatch) {\n // there is precisely one match and selection is on top of it\n return null;\n }\n if (!isRecursed && !searchRange.containsRange(nextMatch.range)) {\n return this._getNextMatch(nextMatch.range.getEndPosition(), captureMatches, forceMove, true);\n }\n return nextMatch;\n }\n moveToNextMatch() {\n this._moveToNextMatch(this._editor.getSelection().getEndPosition());\n }\n _moveToMatch(index) {\n const decorationRange = this._decorations.getDecorationRangeAt(index);\n if (decorationRange) {\n this._setCurrentFindMatch(decorationRange);\n }\n }\n moveToMatch(index) {\n this._moveToMatch(index);\n }\n _getReplacePattern() {\n if (this._state.isRegex) {\n return parseReplaceString(this._state.replaceString);\n }\n return ReplacePattern.fromStaticValue(this._state.replaceString);\n }\n replace() {\n if (!this._hasMatches()) {\n return;\n }\n const replacePattern = this._getReplacePattern();\n const selection = this._editor.getSelection();\n const nextMatch = this._getNextMatch(selection.getStartPosition(), true, false);\n if (nextMatch) {\n if (selection.equalsRange(nextMatch.range)) {\n // selection sits on a find match => replace it!\n const replaceString = replacePattern.buildReplaceString(nextMatch.matches, this._state.preserveCase);\n const command = new ReplaceCommand(selection, replaceString);\n this._executeEditorCommand('replace', command);\n this._decorations.setStartPosition(new Position(selection.startLineNumber, selection.startColumn + replaceString.length));\n this.research(true);\n }\n else {\n this._decorations.setStartPosition(this._editor.getPosition());\n this._setCurrentFindMatch(nextMatch.range);\n }\n }\n }\n _findMatches(findScopes, captureMatches, limitResultCount) {\n const searchRanges = (findScopes || [null]).map((scope) => FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), scope));\n return this._editor.getModel().findMatches(this._state.searchString, searchRanges, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches, limitResultCount);\n }\n replaceAll() {\n if (!this._hasMatches()) {\n return;\n }\n const findScopes = this._decorations.getFindScopes();\n if (findScopes === null && this._state.matchesCount >= MATCHES_LIMIT) {\n // Doing a replace on the entire file that is over ${MATCHES_LIMIT} matches\n this._largeReplaceAll();\n }\n else {\n this._regularReplaceAll(findScopes);\n }\n this.research(false);\n }\n _largeReplaceAll() {\n const searchParams = new SearchParams(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null);\n const searchData = searchParams.parseSearchRequest();\n if (!searchData) {\n return;\n }\n let searchRegex = searchData.regex;\n if (!searchRegex.multiline) {\n let mod = 'mu';\n if (searchRegex.ignoreCase) {\n mod += 'i';\n }\n if (searchRegex.global) {\n mod += 'g';\n }\n searchRegex = new RegExp(searchRegex.source, mod);\n }\n const model = this._editor.getModel();\n const modelText = model.getValue(1 /* EndOfLinePreference.LF */);\n const fullModelRange = model.getFullModelRange();\n const replacePattern = this._getReplacePattern();\n let resultText;\n const preserveCase = this._state.preserveCase;\n if (replacePattern.hasReplacementPatterns || preserveCase) {\n resultText = modelText.replace(searchRegex, function () {\n return replacePattern.buildReplaceString(arguments, preserveCase);\n });\n }\n else {\n resultText = modelText.replace(searchRegex, replacePattern.buildReplaceString(null, preserveCase));\n }\n const command = new ReplaceCommandThatPreservesSelection(fullModelRange, resultText, this._editor.getSelection());\n this._executeEditorCommand('replaceAll', command);\n }\n _regularReplaceAll(findScopes) {\n const replacePattern = this._getReplacePattern();\n // Get all the ranges (even more than the highlighted ones)\n const matches = this._findMatches(findScopes, replacePattern.hasReplacementPatterns || this._state.preserveCase, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n const replaceStrings = [];\n for (let i = 0, len = matches.length; i < len; i++) {\n replaceStrings[i] = replacePattern.buildReplaceString(matches[i].matches, this._state.preserveCase);\n }\n const command = new ReplaceAllCommand(this._editor.getSelection(), matches.map(m => m.range), replaceStrings);\n this._executeEditorCommand('replaceAll', command);\n }\n selectAllMatches() {\n if (!this._hasMatches()) {\n return;\n }\n const findScopes = this._decorations.getFindScopes();\n // Get all the ranges (even more than the highlighted ones)\n const matches = this._findMatches(findScopes, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n let selections = matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn));\n // If one of the ranges is the editor selection, then maintain it as primary\n const editorSelection = this._editor.getSelection();\n for (let i = 0, len = selections.length; i < len; i++) {\n const sel = selections[i];\n if (sel.equalsRange(editorSelection)) {\n selections = [editorSelection].concat(selections.slice(0, i)).concat(selections.slice(i + 1));\n break;\n }\n }\n this._editor.setSelections(selections);\n }\n _executeEditorCommand(source, command) {\n try {\n this._ignoreModelContentChanged = true;\n this._editor.pushUndoStop();\n this._editor.executeCommand(source, command);\n this._editor.pushUndoStop();\n }\n finally {\n this._ignoreModelContentChanged = false;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { FIND_IDS } from './findModel.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { createInstantHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\nexport class FindOptionsWidget extends Widget {\n constructor(editor, state, keybindingService) {\n super();\n this._hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n this._isVisible = false;\n this._editor = editor;\n this._state = state;\n this._keybindingService = keybindingService;\n this._domNode = document.createElement('div');\n this._domNode.className = 'findOptionsWidget';\n this._domNode.style.display = 'none';\n this._domNode.style.top = '10px';\n this._domNode.style.zIndex = '12';\n this._domNode.setAttribute('role', 'presentation');\n this._domNode.setAttribute('aria-hidden', 'true');\n const toggleStyles = {\n inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n };\n const hoverDelegate = this._register(createInstantHoverDelegate());\n this.caseSensitive = this._register(new CaseSensitiveToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n isChecked: this._state.matchCase,\n hoverDelegate,\n ...toggleStyles\n }));\n this._domNode.appendChild(this.caseSensitive.domNode);\n this._register(this.caseSensitive.onChange(() => {\n this._state.change({\n matchCase: this.caseSensitive.checked\n }, false);\n }));\n this.wholeWords = this._register(new WholeWordsToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n isChecked: this._state.wholeWord,\n hoverDelegate,\n ...toggleStyles\n }));\n this._domNode.appendChild(this.wholeWords.domNode);\n this._register(this.wholeWords.onChange(() => {\n this._state.change({\n wholeWord: this.wholeWords.checked\n }, false);\n }));\n this.regex = this._register(new RegexToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n isChecked: this._state.isRegex,\n hoverDelegate,\n ...toggleStyles\n }));\n this._domNode.appendChild(this.regex.domNode);\n this._register(this.regex.onChange(() => {\n this._state.change({\n isRegex: this.regex.checked\n }, false);\n }));\n this._editor.addOverlayWidget(this);\n this._register(this._state.onFindReplaceStateChange((e) => {\n let somethingChanged = false;\n if (e.isRegex) {\n this.regex.checked = this._state.isRegex;\n somethingChanged = true;\n }\n if (e.wholeWord) {\n this.wholeWords.checked = this._state.wholeWord;\n somethingChanged = true;\n }\n if (e.matchCase) {\n this.caseSensitive.checked = this._state.matchCase;\n somethingChanged = true;\n }\n if (!this._state.isRevealed && somethingChanged) {\n this._revealTemporarily();\n }\n }));\n this._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n this._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n }\n _keybindingLabelFor(actionId) {\n const kb = this._keybindingService.lookupKeybinding(actionId);\n if (!kb) {\n return '';\n }\n return ` (${kb.getLabel()})`;\n }\n dispose() {\n this._editor.removeOverlayWidget(this);\n super.dispose();\n }\n // ----- IOverlayWidget API\n getId() {\n return FindOptionsWidget.ID;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n };\n }\n highlightFindOptions() {\n this._revealTemporarily();\n }\n _revealTemporarily() {\n this._show();\n this._hideSoon.schedule();\n }\n _onMouseLeave() {\n this._hideSoon.schedule();\n }\n _onMouseOver() {\n this._hideSoon.cancel();\n }\n _show() {\n if (this._isVisible) {\n return;\n }\n this._isVisible = true;\n this._domNode.style.display = 'block';\n }\n _hide() {\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n this._domNode.style.display = 'none';\n }\n}\nFindOptionsWidget.ID = 'editor.contrib.findOptionsWidget';\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { MATCHES_LIMIT } from './findModel.js';\nfunction effectiveOptionValue(override, value) {\n if (override === 1 /* FindOptionOverride.True */) {\n return true;\n }\n if (override === 2 /* FindOptionOverride.False */) {\n return false;\n }\n return value;\n}\nexport class FindReplaceState extends Disposable {\n get searchString() { return this._searchString; }\n get replaceString() { return this._replaceString; }\n get isRevealed() { return this._isRevealed; }\n get isReplaceRevealed() { return this._isReplaceRevealed; }\n get isRegex() { return effectiveOptionValue(this._isRegexOverride, this._isRegex); }\n get wholeWord() { return effectiveOptionValue(this._wholeWordOverride, this._wholeWord); }\n get matchCase() { return effectiveOptionValue(this._matchCaseOverride, this._matchCase); }\n get preserveCase() { return effectiveOptionValue(this._preserveCaseOverride, this._preserveCase); }\n get actualIsRegex() { return this._isRegex; }\n get actualWholeWord() { return this._wholeWord; }\n get actualMatchCase() { return this._matchCase; }\n get actualPreserveCase() { return this._preserveCase; }\n get searchScope() { return this._searchScope; }\n get matchesPosition() { return this._matchesPosition; }\n get matchesCount() { return this._matchesCount; }\n get currentMatch() { return this._currentMatch; }\n constructor() {\n super();\n this._onFindReplaceStateChange = this._register(new Emitter());\n this.onFindReplaceStateChange = this._onFindReplaceStateChange.event;\n this._searchString = '';\n this._replaceString = '';\n this._isRevealed = false;\n this._isReplaceRevealed = false;\n this._isRegex = false;\n this._isRegexOverride = 0 /* FindOptionOverride.NotSet */;\n this._wholeWord = false;\n this._wholeWordOverride = 0 /* FindOptionOverride.NotSet */;\n this._matchCase = false;\n this._matchCaseOverride = 0 /* FindOptionOverride.NotSet */;\n this._preserveCase = false;\n this._preserveCaseOverride = 0 /* FindOptionOverride.NotSet */;\n this._searchScope = null;\n this._matchesPosition = 0;\n this._matchesCount = 0;\n this._currentMatch = null;\n this._loop = true;\n this._isSearching = false;\n this._filters = null;\n }\n changeMatchInfo(matchesPosition, matchesCount, currentMatch) {\n const changeEvent = {\n moveCursor: false,\n updateHistory: false,\n searchString: false,\n replaceString: false,\n isRevealed: false,\n isReplaceRevealed: false,\n isRegex: false,\n wholeWord: false,\n matchCase: false,\n preserveCase: false,\n searchScope: false,\n matchesPosition: false,\n matchesCount: false,\n currentMatch: false,\n loop: false,\n isSearching: false,\n filters: false\n };\n let somethingChanged = false;\n if (matchesCount === 0) {\n matchesPosition = 0;\n }\n if (matchesPosition > matchesCount) {\n matchesPosition = matchesCount;\n }\n if (this._matchesPosition !== matchesPosition) {\n this._matchesPosition = matchesPosition;\n changeEvent.matchesPosition = true;\n somethingChanged = true;\n }\n if (this._matchesCount !== matchesCount) {\n this._matchesCount = matchesCount;\n changeEvent.matchesCount = true;\n somethingChanged = true;\n }\n if (typeof currentMatch !== 'undefined') {\n if (!Range.equalsRange(this._currentMatch, currentMatch)) {\n this._currentMatch = currentMatch;\n changeEvent.currentMatch = true;\n somethingChanged = true;\n }\n }\n if (somethingChanged) {\n this._onFindReplaceStateChange.fire(changeEvent);\n }\n }\n change(newState, moveCursor, updateHistory = true) {\n var _a;\n const changeEvent = {\n moveCursor: moveCursor,\n updateHistory: updateHistory,\n searchString: false,\n replaceString: false,\n isRevealed: false,\n isReplaceRevealed: false,\n isRegex: false,\n wholeWord: false,\n matchCase: false,\n preserveCase: false,\n searchScope: false,\n matchesPosition: false,\n matchesCount: false,\n currentMatch: false,\n loop: false,\n isSearching: false,\n filters: false\n };\n let somethingChanged = false;\n const oldEffectiveIsRegex = this.isRegex;\n const oldEffectiveWholeWords = this.wholeWord;\n const oldEffectiveMatchCase = this.matchCase;\n const oldEffectivePreserveCase = this.preserveCase;\n if (typeof newState.searchString !== 'undefined') {\n if (this._searchString !== newState.searchString) {\n this._searchString = newState.searchString;\n changeEvent.searchString = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.replaceString !== 'undefined') {\n if (this._replaceString !== newState.replaceString) {\n this._replaceString = newState.replaceString;\n changeEvent.replaceString = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isRevealed !== 'undefined') {\n if (this._isRevealed !== newState.isRevealed) {\n this._isRevealed = newState.isRevealed;\n changeEvent.isRevealed = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isReplaceRevealed !== 'undefined') {\n if (this._isReplaceRevealed !== newState.isReplaceRevealed) {\n this._isReplaceRevealed = newState.isReplaceRevealed;\n changeEvent.isReplaceRevealed = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isRegex !== 'undefined') {\n this._isRegex = newState.isRegex;\n }\n if (typeof newState.wholeWord !== 'undefined') {\n this._wholeWord = newState.wholeWord;\n }\n if (typeof newState.matchCase !== 'undefined') {\n this._matchCase = newState.matchCase;\n }\n if (typeof newState.preserveCase !== 'undefined') {\n this._preserveCase = newState.preserveCase;\n }\n if (typeof newState.searchScope !== 'undefined') {\n if (!((_a = newState.searchScope) === null || _a === void 0 ? void 0 : _a.every((newSearchScope) => {\n var _a;\n return (_a = this._searchScope) === null || _a === void 0 ? void 0 : _a.some(existingSearchScope => {\n return !Range.equalsRange(existingSearchScope, newSearchScope);\n });\n }))) {\n this._searchScope = newState.searchScope;\n changeEvent.searchScope = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.loop !== 'undefined') {\n if (this._loop !== newState.loop) {\n this._loop = newState.loop;\n changeEvent.loop = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isSearching !== 'undefined') {\n if (this._isSearching !== newState.isSearching) {\n this._isSearching = newState.isSearching;\n changeEvent.isSearching = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.filters !== 'undefined') {\n if (this._filters) {\n this._filters.update(newState.filters);\n }\n else {\n this._filters = newState.filters;\n }\n changeEvent.filters = true;\n somethingChanged = true;\n }\n // Overrides get set when they explicitly come in and get reset anytime something else changes\n this._isRegexOverride = (typeof newState.isRegexOverride !== 'undefined' ? newState.isRegexOverride : 0 /* FindOptionOverride.NotSet */);\n this._wholeWordOverride = (typeof newState.wholeWordOverride !== 'undefined' ? newState.wholeWordOverride : 0 /* FindOptionOverride.NotSet */);\n this._matchCaseOverride = (typeof newState.matchCaseOverride !== 'undefined' ? newState.matchCaseOverride : 0 /* FindOptionOverride.NotSet */);\n this._preserveCaseOverride = (typeof newState.preserveCaseOverride !== 'undefined' ? newState.preserveCaseOverride : 0 /* FindOptionOverride.NotSet */);\n if (oldEffectiveIsRegex !== this.isRegex) {\n somethingChanged = true;\n changeEvent.isRegex = true;\n }\n if (oldEffectiveWholeWords !== this.wholeWord) {\n somethingChanged = true;\n changeEvent.wholeWord = true;\n }\n if (oldEffectiveMatchCase !== this.matchCase) {\n somethingChanged = true;\n changeEvent.matchCase = true;\n }\n if (oldEffectivePreserveCase !== this.preserveCase) {\n somethingChanged = true;\n changeEvent.preserveCase = true;\n }\n if (somethingChanged) {\n this._onFindReplaceStateChange.fire(changeEvent);\n }\n }\n canNavigateBack() {\n return this.canNavigateInLoop() || (this.matchesPosition !== 1);\n }\n canNavigateForward() {\n return this.canNavigateInLoop() || (this.matchesPosition < this.matchesCount);\n }\n canNavigateInLoop() {\n return this._loop || (this.matchesCount >= MATCHES_LIMIT);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { alert as alertFn } from '../../../../base/browser/ui/aria/aria.js';\nimport { Toggle } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { Sash } from '../../../../base/browser/ui/sash/sash.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './findWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';\nimport { showHistoryKeybindingHint } from '../../../../platform/history/browser/historyWidgetKeybindingHint.js';\nimport { asCssVariable, contrastBorder, editorFindMatchForeground, editorFindMatchHighlightBorder, editorFindMatchHighlightForeground, editorFindRangeHighlightBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon, widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { assertIsDefined } from '../../../../base/common/types.js';\nimport { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { createInstantHoverDelegate, getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\nconst findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize('findCollapsedIcon', 'Icon to indicate that the editor find widget is collapsed.'));\nconst findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize('findExpandedIcon', 'Icon to indicate that the editor find widget is expanded.'));\nexport const findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize('findSelectionIcon', 'Icon for \\'Find in Selection\\' in the editor find widget.'));\nexport const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize('findReplaceIcon', 'Icon for \\'Replace\\' in the editor find widget.'));\nexport const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize('findReplaceAllIcon', 'Icon for \\'Replace All\\' in the editor find widget.'));\nexport const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize('findPreviousMatchIcon', 'Icon for \\'Find Previous\\' in the editor find widget.'));\nexport const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize('findNextMatchIcon', 'Icon for \\'Find Next\\' in the editor find widget.'));\nconst NLS_FIND_DIALOG_LABEL = nls.localize('label.findDialog', \"Find / Replace\");\nconst NLS_FIND_INPUT_LABEL = nls.localize('label.find', \"Find\");\nconst NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', \"Find\");\nconst NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', \"Previous Match\");\nconst NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', \"Next Match\");\nconst NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', \"Find in Selection\");\nconst NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', \"Close\");\nconst NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', \"Replace\");\nconst NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', \"Replace\");\nconst NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', \"Replace\");\nconst NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', \"Replace All\");\nconst NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', \"Toggle Replace\");\nconst NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize('title.matchesCountLimit', \"Only the first {0} results are highlighted, but all find operations work on the entire text.\", MATCHES_LIMIT);\nexport const NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', \"{0} of {1}\");\nexport const NLS_NO_RESULTS = nls.localize('label.noResults', \"No results\");\nconst FIND_WIDGET_INITIAL_WIDTH = 419;\nconst PART_WIDTH = 275;\nconst FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;\nlet MAX_MATCHES_COUNT_WIDTH = 69;\n// let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;\nconst FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.\nconst ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* KeyMod.WinCtrl */ : 2048 /* KeyMod.CtrlCmd */);\nexport class FindWidgetViewZone {\n constructor(afterLineNumber) {\n this.afterLineNumber = afterLineNumber;\n this.heightInPx = FIND_INPUT_AREA_HEIGHT;\n this.suppressMouseDown = false;\n this.domNode = document.createElement('div');\n this.domNode.className = 'dock-find-viewzone';\n }\n}\nfunction stopPropagationForMultiLineUpwards(event, value, textarea) {\n const isMultiline = !!value.match(/\\n/);\n if (textarea && isMultiline && textarea.selectionStart > 0) {\n event.stopPropagation();\n return;\n }\n}\nfunction stopPropagationForMultiLineDownwards(event, value, textarea) {\n const isMultiline = !!value.match(/\\n/);\n if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {\n event.stopPropagation();\n return;\n }\n}\nexport class FindWidget extends Widget {\n constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService, _hoverService) {\n super();\n this._hoverService = _hoverService;\n this._cachedHeight = null;\n this._revealTimeouts = [];\n this._codeEditor = codeEditor;\n this._controller = controller;\n this._state = state;\n this._contextViewProvider = contextViewProvider;\n this._keybindingService = keybindingService;\n this._contextKeyService = contextKeyService;\n this._storageService = storageService;\n this._notificationService = notificationService;\n this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* StorageScope.PROFILE */);\n this._isVisible = false;\n this._isReplaceVisible = false;\n this._ignoreChangeEvent = false;\n this._updateHistoryDelayer = new Delayer(500);\n this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this._buildDomNode();\n this._updateButtons();\n this._tryUpdateWidgetWidth();\n this._findInput.inputBox.layout();\n this._register(this._codeEditor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(91 /* EditorOption.readOnly */)) {\n if (this._codeEditor.getOption(91 /* EditorOption.readOnly */)) {\n // Hide replace part if editor becomes read only\n this._state.change({ isReplaceRevealed: false }, false);\n }\n this._updateButtons();\n }\n if (e.hasChanged(145 /* EditorOption.layoutInfo */)) {\n this._tryUpdateWidgetWidth();\n }\n if (e.hasChanged(2 /* EditorOption.accessibilitySupport */)) {\n this.updateAccessibilitySupport();\n }\n if (e.hasChanged(41 /* EditorOption.find */)) {\n const supportLoop = this._codeEditor.getOption(41 /* EditorOption.find */).loop;\n this._state.change({ loop: supportLoop }, false);\n const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n if (addExtraSpaceOnTop && !this._viewZone) {\n this._viewZone = new FindWidgetViewZone(0);\n this._showViewZone();\n }\n if (!addExtraSpaceOnTop && this._viewZone) {\n this._removeViewZone();\n }\n }\n }));\n this.updateAccessibilitySupport();\n this._register(this._codeEditor.onDidChangeCursorSelection(() => {\n if (this._isVisible) {\n this._updateToggleSelectionFindButton();\n }\n }));\n this._register(this._codeEditor.onDidFocusEditorWidget(async () => {\n if (this._isVisible) {\n const globalBufferTerm = await this._controller.getGlobalBufferTerm();\n if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {\n this._state.change({ searchString: globalBufferTerm }, false);\n this._findInput.select();\n }\n }\n }));\n this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);\n this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));\n this._register(this._findFocusTracker.onDidFocus(() => {\n this._findInputFocused.set(true);\n this._updateSearchScope();\n }));\n this._register(this._findFocusTracker.onDidBlur(() => {\n this._findInputFocused.set(false);\n }));\n this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);\n this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));\n this._register(this._replaceFocusTracker.onDidFocus(() => {\n this._replaceInputFocused.set(true);\n this._updateSearchScope();\n }));\n this._register(this._replaceFocusTracker.onDidBlur(() => {\n this._replaceInputFocused.set(false);\n }));\n this._codeEditor.addOverlayWidget(this);\n if (this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop) {\n this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.\n }\n this._register(this._codeEditor.onDidChangeModel(() => {\n if (!this._isVisible) {\n return;\n }\n this._viewZoneId = undefined;\n }));\n this._register(this._codeEditor.onDidScrollChange((e) => {\n if (e.scrollTopChanged) {\n this._layoutViewZone();\n return;\n }\n // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.\n setTimeout(() => {\n this._layoutViewZone();\n }, 0);\n }));\n }\n // ----- IOverlayWidget API\n getId() {\n return FindWidget.ID;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n if (this._isVisible) {\n return {\n preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n };\n }\n return null;\n }\n // ----- React to state changes\n _onStateChanged(e) {\n if (e.searchString) {\n try {\n this._ignoreChangeEvent = true;\n this._findInput.setValue(this._state.searchString);\n }\n finally {\n this._ignoreChangeEvent = false;\n }\n this._updateButtons();\n }\n if (e.replaceString) {\n this._replaceInput.inputBox.value = this._state.replaceString;\n }\n if (e.isRevealed) {\n if (this._state.isRevealed) {\n this._reveal();\n }\n else {\n this._hide(true);\n }\n }\n if (e.isReplaceRevealed) {\n if (this._state.isReplaceRevealed) {\n if (!this._codeEditor.getOption(91 /* EditorOption.readOnly */) && !this._isReplaceVisible) {\n this._isReplaceVisible = true;\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n this._updateButtons();\n this._replaceInput.inputBox.layout();\n }\n }\n else {\n if (this._isReplaceVisible) {\n this._isReplaceVisible = false;\n this._updateButtons();\n }\n }\n }\n if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {\n if (this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }\n if (e.isRegex) {\n this._findInput.setRegex(this._state.isRegex);\n }\n if (e.wholeWord) {\n this._findInput.setWholeWords(this._state.wholeWord);\n }\n if (e.matchCase) {\n this._findInput.setCaseSensitive(this._state.matchCase);\n }\n if (e.preserveCase) {\n this._replaceInput.setPreserveCase(this._state.preserveCase);\n }\n if (e.searchScope) {\n if (this._state.searchScope) {\n this._toggleSelectionFind.checked = true;\n }\n else {\n this._toggleSelectionFind.checked = false;\n }\n this._updateToggleSelectionFindButton();\n }\n if (e.searchString || e.matchesCount || e.matchesPosition) {\n const showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);\n this._domNode.classList.toggle('no-results', showRedOutline);\n this._updateMatchesCount();\n this._updateButtons();\n }\n if (e.searchString || e.currentMatch) {\n this._layoutViewZone();\n }\n if (e.updateHistory) {\n this._delayedUpdateHistory();\n }\n if (e.loop) {\n this._updateButtons();\n }\n }\n _delayedUpdateHistory() {\n this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError);\n }\n _updateHistory() {\n if (this._state.searchString) {\n this._findInput.inputBox.addToHistory();\n }\n if (this._state.replaceString) {\n this._replaceInput.inputBox.addToHistory();\n }\n }\n _updateMatchesCount() {\n this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';\n if (this._state.matchesCount >= MATCHES_LIMIT) {\n this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;\n }\n else {\n this._matchesCount.title = '';\n }\n // remove previous content\n if (this._matchesCount.firstChild) {\n this._matchesCount.removeChild(this._matchesCount.firstChild);\n }\n let label;\n if (this._state.matchesCount > 0) {\n let matchesCount = String(this._state.matchesCount);\n if (this._state.matchesCount >= MATCHES_LIMIT) {\n matchesCount += '+';\n }\n let matchesPosition = String(this._state.matchesPosition);\n if (matchesPosition === '0') {\n matchesPosition = '?';\n }\n label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);\n }\n else {\n label = NLS_NO_RESULTS;\n }\n this._matchesCount.appendChild(document.createTextNode(label));\n alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));\n MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);\n }\n // ----- actions\n _getAriaLabel(label, currentMatch, searchString) {\n if (label === NLS_NO_RESULTS) {\n return searchString === ''\n ? nls.localize('ariaSearchNoResultEmpty', \"{0} found\", label)\n : nls.localize('ariaSearchNoResult', \"{0} found for '{1}'\", label, searchString);\n }\n if (currentMatch) {\n const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', \"{0} found for '{1}', at {2}\", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);\n const model = this._codeEditor.getModel();\n if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {\n const lineContent = model.getLineContent(currentMatch.startLineNumber);\n return `${lineContent}, ${ariaLabel}`;\n }\n return ariaLabel;\n }\n return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', \"{0} found for '{1}'\", label, searchString);\n }\n /**\n * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').\n * If 'selection find' is OFF we enable the button only if there is a selection.\n */\n _updateToggleSelectionFindButton() {\n const selection = this._codeEditor.getSelection();\n const isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;\n const isChecked = this._toggleSelectionFind.checked;\n if (this._isVisible && (isChecked || isSelection)) {\n this._toggleSelectionFind.enable();\n }\n else {\n this._toggleSelectionFind.disable();\n }\n }\n _updateButtons() {\n this._findInput.setEnabled(this._isVisible);\n this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);\n this._updateToggleSelectionFindButton();\n this._closeBtn.setEnabled(this._isVisible);\n const findInputIsNonEmpty = (this._state.searchString.length > 0);\n const matchesCount = this._state.matchesCount ? true : false;\n this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());\n this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());\n this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n this._domNode.classList.toggle('replaceToggled', this._isReplaceVisible);\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n const canReplace = !this._codeEditor.getOption(91 /* EditorOption.readOnly */);\n this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);\n }\n _reveal() {\n this._revealTimeouts.forEach(e => {\n clearTimeout(e);\n });\n this._revealTimeouts = [];\n if (!this._isVisible) {\n this._isVisible = true;\n const selection = this._codeEditor.getSelection();\n switch (this._codeEditor.getOption(41 /* EditorOption.find */).autoFindInSelection) {\n case 'always':\n this._toggleSelectionFind.checked = true;\n break;\n case 'never':\n this._toggleSelectionFind.checked = false;\n break;\n case 'multiline': {\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n this._toggleSelectionFind.checked = isSelectionMultipleLine;\n break;\n }\n default:\n break;\n }\n this._tryUpdateWidgetWidth();\n this._updateButtons();\n this._revealTimeouts.push(setTimeout(() => {\n this._domNode.classList.add('visible');\n this._domNode.setAttribute('aria-hidden', 'false');\n }, 0));\n // validate query again as it's being dismissed when we hide the find widget.\n this._revealTimeouts.push(setTimeout(() => {\n this._findInput.validate();\n }, 200));\n this._codeEditor.layoutOverlayWidget(this);\n let adjustEditorScrollTop = true;\n if (this._codeEditor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection && selection) {\n const domNode = this._codeEditor.getDomNode();\n if (domNode) {\n const editorCoords = dom.getDomNodePagePosition(domNode);\n const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());\n const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);\n const startTop = startCoords ? startCoords.top : 0;\n if (this._viewZone && startTop < this._viewZone.heightInPx) {\n if (selection.endLineNumber > selection.startLineNumber) {\n adjustEditorScrollTop = false;\n }\n const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;\n if (startLeft > leftOfFindWidget) {\n adjustEditorScrollTop = false;\n }\n const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());\n const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);\n if (endLeft > leftOfFindWidget) {\n adjustEditorScrollTop = false;\n }\n }\n }\n }\n this._showViewZone(adjustEditorScrollTop);\n }\n }\n _hide(focusTheEditor) {\n this._revealTimeouts.forEach(e => {\n clearTimeout(e);\n });\n this._revealTimeouts = [];\n if (this._isVisible) {\n this._isVisible = false;\n this._updateButtons();\n this._domNode.classList.remove('visible');\n this._domNode.setAttribute('aria-hidden', 'true');\n this._findInput.clearMessage();\n if (focusTheEditor) {\n this._codeEditor.focus();\n }\n this._codeEditor.layoutOverlayWidget(this);\n this._removeViewZone();\n }\n }\n _layoutViewZone(targetScrollTop) {\n const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n if (!addExtraSpaceOnTop) {\n this._removeViewZone();\n return;\n }\n if (!this._isVisible) {\n return;\n }\n const viewZone = this._viewZone;\n if (this._viewZoneId !== undefined || !viewZone) {\n return;\n }\n this._codeEditor.changeViewZones((accessor) => {\n viewZone.heightInPx = this._getHeight();\n this._viewZoneId = accessor.addZone(viewZone);\n // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.\n this._codeEditor.setScrollTop(targetScrollTop || this._codeEditor.getScrollTop() + viewZone.heightInPx);\n });\n }\n _showViewZone(adjustScroll = true) {\n if (!this._isVisible) {\n return;\n }\n const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n if (!addExtraSpaceOnTop) {\n return;\n }\n if (this._viewZone === undefined) {\n this._viewZone = new FindWidgetViewZone(0);\n }\n const viewZone = this._viewZone;\n this._codeEditor.changeViewZones((accessor) => {\n if (this._viewZoneId !== undefined) {\n // the view zone already exists, we need to update the height\n const newHeight = this._getHeight();\n if (newHeight === viewZone.heightInPx) {\n return;\n }\n const scrollAdjustment = newHeight - viewZone.heightInPx;\n viewZone.heightInPx = newHeight;\n accessor.layoutZone(this._viewZoneId);\n if (adjustScroll) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n }\n return;\n }\n else {\n let scrollAdjustment = this._getHeight();\n // if the editor has top padding, factor that into the zone height\n scrollAdjustment -= this._codeEditor.getOption(84 /* EditorOption.padding */).top;\n if (scrollAdjustment <= 0) {\n return;\n }\n viewZone.heightInPx = scrollAdjustment;\n this._viewZoneId = accessor.addZone(viewZone);\n if (adjustScroll) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n }\n }\n });\n }\n _removeViewZone() {\n this._codeEditor.changeViewZones((accessor) => {\n if (this._viewZoneId !== undefined) {\n accessor.removeZone(this._viewZoneId);\n this._viewZoneId = undefined;\n if (this._viewZone) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);\n this._viewZone = undefined;\n }\n }\n });\n }\n _tryUpdateWidgetWidth() {\n if (!this._isVisible) {\n return;\n }\n if (!this._domNode.isConnected) {\n // the widget is not in the DOM\n return;\n }\n const layoutInfo = this._codeEditor.getLayoutInfo();\n const editorContentWidth = layoutInfo.contentWidth;\n if (editorContentWidth <= 0) {\n // for example, diff view original editor\n this._domNode.classList.add('hiddenEditor');\n return;\n }\n else if (this._domNode.classList.contains('hiddenEditor')) {\n this._domNode.classList.remove('hiddenEditor');\n }\n const editorWidth = layoutInfo.width;\n const minimapWidth = layoutInfo.minimap.minimapWidth;\n let collapsedFindWidget = false;\n let reducedFindWidget = false;\n let narrowFindWidget = false;\n if (this._resized) {\n const widgetWidth = dom.getTotalWidth(this._domNode);\n if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {\n // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n return;\n }\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {\n reducedFindWidget = true;\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {\n narrowFindWidget = true;\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {\n collapsedFindWidget = true;\n }\n this._domNode.classList.toggle('collapsed-find-widget', collapsedFindWidget);\n this._domNode.classList.toggle('narrow-find-widget', narrowFindWidget);\n this._domNode.classList.toggle('reduced-find-widget', reducedFindWidget);\n if (!narrowFindWidget && !collapsedFindWidget) {\n // the minimal left offset of findwidget is 15px.\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n }\n this._findInput.layout({ collapsedFindWidget, narrowFindWidget, reducedFindWidget });\n if (this._resized) {\n const findInputWidth = this._findInput.inputBox.element.clientWidth;\n if (findInputWidth > 0) {\n this._replaceInput.width = findInputWidth;\n }\n }\n else if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n }\n _getHeight() {\n let totalheight = 0;\n // find input margin top\n totalheight += 4;\n // find input height\n totalheight += this._findInput.inputBox.height + 2 /** input box border */;\n if (this._isReplaceVisible) {\n // replace input margin\n totalheight += 4;\n totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;\n }\n // margin bottom\n totalheight += 4;\n return totalheight;\n }\n _tryUpdateHeight() {\n const totalHeight = this._getHeight();\n if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {\n return false;\n }\n this._cachedHeight = totalHeight;\n this._domNode.style.height = `${totalHeight}px`;\n return true;\n }\n // ----- Public\n focusFindInput() {\n this._findInput.select();\n // Edge browser requires focus() in addition to select()\n this._findInput.focus();\n }\n focusReplaceInput() {\n this._replaceInput.select();\n // Edge browser requires focus() in addition to select()\n this._replaceInput.focus();\n }\n highlightFindOptions() {\n this._findInput.highlightFindOptions();\n }\n _updateSearchScope() {\n if (!this._codeEditor.hasModel()) {\n return;\n }\n if (this._toggleSelectionFind.checked) {\n const selections = this._codeEditor.getSelections();\n selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n const currentMatch = this._state.currentMatch;\n if (selection.startLineNumber !== selection.endLineNumber) {\n if (!Range.equalsRange(selection, currentMatch)) {\n return selection;\n }\n }\n return null;\n }).filter(element => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n _onFindInputMouseDown(e) {\n // on linux, middle key does pasting.\n if (e.middleButton) {\n e.stopPropagation();\n }\n }\n _onFindInputKeyDown(e) {\n if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n if (this._keybindingService.dispatchEvent(e, e.target)) {\n e.preventDefault();\n return;\n }\n else {\n this._findInput.inputBox.insertAtCursor('\\n');\n e.preventDefault();\n return;\n }\n }\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focus();\n }\n else {\n this._findInput.focusOnCaseSensitive();\n }\n e.preventDefault();\n return;\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n this._codeEditor.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(16 /* KeyCode.UpArrow */)) {\n return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n }\n if (e.equals(18 /* KeyCode.DownArrow */)) {\n return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n }\n }\n _onReplaceInputKeyDown(e) {\n if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n if (this._keybindingService.dispatchEvent(e, e.target)) {\n e.preventDefault();\n return;\n }\n else {\n if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {\n // this is the first time when users press Ctrl + Enter to replace all\n this._notificationService.info(nls.localize('ctrlEnter.keybindingChanged', 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.'));\n this._ctrlEnterReplaceAllWarningPrompted = true;\n this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n }\n this._replaceInput.inputBox.insertAtCursor('\\n');\n e.preventDefault();\n return;\n }\n }\n if (e.equals(2 /* KeyCode.Tab */)) {\n this._findInput.focusOnCaseSensitive();\n e.preventDefault();\n return;\n }\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n this._findInput.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n this._codeEditor.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(16 /* KeyCode.UpArrow */)) {\n return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n }\n if (e.equals(18 /* KeyCode.DownArrow */)) {\n return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n }\n }\n // ----- sash\n getVerticalSashLeft(_sash) {\n return 0;\n }\n // ----- initialization\n _keybindingLabelFor(actionId) {\n const kb = this._keybindingService.lookupKeybinding(actionId);\n if (!kb) {\n return '';\n }\n return ` (${kb.getLabel()})`;\n }\n _buildDomNode() {\n const flexibleHeight = true;\n const flexibleWidth = true;\n // Find input\n this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {\n width: FIND_INPUT_AREA_WIDTH,\n label: NLS_FIND_INPUT_LABEL,\n placeholder: NLS_FIND_INPUT_PLACEHOLDER,\n appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n validation: (value) => {\n if (value.length === 0 || !this._findInput.getRegex()) {\n return null;\n }\n try {\n // use `g` and `u` which are also used by the TextModel search\n new RegExp(value, 'gu');\n return null;\n }\n catch (e) {\n return { content: e.message };\n }\n },\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight: 118,\n showCommonFindToggles: true,\n showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),\n inputBoxStyles: defaultInputBoxStyles,\n toggleStyles: defaultToggleStyles\n }, this._contextKeyService));\n this._findInput.setRegex(!!this._state.isRegex);\n this._findInput.setCaseSensitive(!!this._state.matchCase);\n this._findInput.setWholeWords(!!this._state.wholeWord);\n this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));\n this._register(this._findInput.inputBox.onDidChange(() => {\n if (this._ignoreChangeEvent) {\n return;\n }\n this._state.change({ searchString: this._findInput.getValue() }, true);\n }));\n this._register(this._findInput.onDidOptionChange(() => {\n this._state.change({\n isRegex: this._findInput.getRegex(),\n wholeWord: this._findInput.getWholeWords(),\n matchCase: this._findInput.getCaseSensitive()\n }, true);\n }));\n this._register(this._findInput.onCaseSensitiveKeyDown((e) => {\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focus();\n e.preventDefault();\n }\n }\n }));\n this._register(this._findInput.onRegexKeyDown((e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focusOnPreserve();\n e.preventDefault();\n }\n }\n }));\n this._register(this._findInput.inputBox.onDidHeightChange((e) => {\n if (this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }));\n if (platform.isLinux) {\n this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));\n }\n this._matchesCount = document.createElement('div');\n this._matchesCount.className = 'matchesCount';\n this._updateMatchesCount();\n // Create a scoped hover delegate for all find related buttons\n const hoverDelegate = this._register(createInstantHoverDelegate());\n // Previous button\n this._prevBtn = this._register(new SimpleButton({\n label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),\n icon: findPreviousMatchIcon,\n hoverDelegate,\n onTrigger: () => {\n assertIsDefined(this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction)).run().then(undefined, onUnexpectedError);\n }\n }, this._hoverService));\n // Next button\n this._nextBtn = this._register(new SimpleButton({\n label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),\n icon: findNextMatchIcon,\n hoverDelegate,\n onTrigger: () => {\n assertIsDefined(this._codeEditor.getAction(FIND_IDS.NextMatchFindAction)).run().then(undefined, onUnexpectedError);\n }\n }, this._hoverService));\n const findPart = document.createElement('div');\n findPart.className = 'find-part';\n findPart.appendChild(this._findInput.domNode);\n const actionsContainer = document.createElement('div');\n actionsContainer.className = 'find-actions';\n findPart.appendChild(actionsContainer);\n actionsContainer.appendChild(this._matchesCount);\n actionsContainer.appendChild(this._prevBtn.domNode);\n actionsContainer.appendChild(this._nextBtn.domNode);\n // Toggle selection button\n this._toggleSelectionFind = this._register(new Toggle({\n icon: findSelectionIcon,\n title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),\n isChecked: false,\n hoverDelegate: hoverDelegate,\n inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n }));\n this._register(this._toggleSelectionFind.onChange(() => {\n if (this._toggleSelectionFind.checked) {\n if (this._codeEditor.hasModel()) {\n let selections = this._codeEditor.getSelections();\n selections = selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n if (!selection.isEmpty()) {\n return selection;\n }\n return null;\n }).filter((element) => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n else {\n this._state.change({ searchScope: null }, true);\n }\n }));\n actionsContainer.appendChild(this._toggleSelectionFind.domNode);\n // Close button\n this._closeBtn = this._register(new SimpleButton({\n label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),\n icon: widgetClose,\n hoverDelegate,\n onTrigger: () => {\n this._state.change({ isRevealed: false, searchScope: null }, false);\n },\n onKeyDown: (e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n if (this._replaceBtn.isEnabled()) {\n this._replaceBtn.focus();\n }\n else {\n this._codeEditor.focus();\n }\n e.preventDefault();\n }\n }\n }\n }, this._hoverService));\n // Replace input\n this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {\n label: NLS_REPLACE_INPUT_LABEL,\n placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,\n appendPreserveCaseLabel: this._keybindingLabelFor(FIND_IDS.TogglePreserveCaseCommand),\n history: [],\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight: 118,\n showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),\n inputBoxStyles: defaultInputBoxStyles,\n toggleStyles: defaultToggleStyles\n }, this._contextKeyService, true));\n this._replaceInput.setPreserveCase(!!this._state.preserveCase);\n this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));\n this._register(this._replaceInput.inputBox.onDidChange(() => {\n this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);\n }));\n this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {\n if (this._isReplaceVisible && this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }));\n this._register(this._replaceInput.onDidOptionChange(() => {\n this._state.change({\n preserveCase: this._replaceInput.getPreserveCase()\n }, true);\n }));\n this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._prevBtn.isEnabled()) {\n this._prevBtn.focus();\n }\n else if (this._nextBtn.isEnabled()) {\n this._nextBtn.focus();\n }\n else if (this._toggleSelectionFind.enabled) {\n this._toggleSelectionFind.focus();\n }\n else if (this._closeBtn.isEnabled()) {\n this._closeBtn.focus();\n }\n e.preventDefault();\n }\n }));\n // Create scoped hover delegate for replace actions\n const replaceHoverDelegate = this._register(createInstantHoverDelegate());\n // Replace one button\n this._replaceBtn = this._register(new SimpleButton({\n label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),\n icon: findReplaceIcon,\n hoverDelegate: replaceHoverDelegate,\n onTrigger: () => {\n this._controller.replace();\n },\n onKeyDown: (e) => {\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n this._closeBtn.focus();\n e.preventDefault();\n }\n }\n }, this._hoverService));\n // Replace all button\n this._replaceAllBtn = this._register(new SimpleButton({\n label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),\n icon: findReplaceAllIcon,\n hoverDelegate: replaceHoverDelegate,\n onTrigger: () => {\n this._controller.replaceAll();\n }\n }, this._hoverService));\n const replacePart = document.createElement('div');\n replacePart.className = 'replace-part';\n replacePart.appendChild(this._replaceInput.domNode);\n const replaceActionsContainer = document.createElement('div');\n replaceActionsContainer.className = 'replace-actions';\n replacePart.appendChild(replaceActionsContainer);\n replaceActionsContainer.appendChild(this._replaceBtn.domNode);\n replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);\n // Toggle replace button\n this._toggleReplaceBtn = this._register(new SimpleButton({\n label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,\n className: 'codicon toggle left',\n onTrigger: () => {\n this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n this._replaceInput.inputBox.layout();\n }\n this._showViewZone();\n }\n }, this._hoverService));\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n // Widget\n this._domNode = document.createElement('div');\n this._domNode.className = 'editor-widget find-widget';\n this._domNode.setAttribute('aria-hidden', 'true');\n this._domNode.ariaLabel = NLS_FIND_DIALOG_LABEL;\n this._domNode.role = 'dialog';\n // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.\n this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;\n this._domNode.appendChild(this._toggleReplaceBtn.domNode);\n this._domNode.appendChild(findPart);\n this._domNode.appendChild(this._closeBtn.domNode);\n this._domNode.appendChild(replacePart);\n this._resizeSash = this._register(new Sash(this._domNode, this, { orientation: 0 /* Orientation.VERTICAL */, size: 2 }));\n this._resized = false;\n let originalWidth = FIND_WIDGET_INITIAL_WIDTH;\n this._register(this._resizeSash.onDidStart(() => {\n originalWidth = dom.getTotalWidth(this._domNode);\n }));\n this._register(this._resizeSash.onDidChange((evt) => {\n this._resized = true;\n const width = originalWidth + evt.startX - evt.currentX;\n if (width < FIND_WIDGET_INITIAL_WIDTH) {\n // narrow down the find widget should be handled by CSS.\n return;\n }\n const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;\n if (width > maxWidth) {\n return;\n }\n this._domNode.style.width = `${width}px`;\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n this._findInput.inputBox.layout();\n this._tryUpdateHeight();\n }));\n this._register(this._resizeSash.onDidReset(() => {\n // users double click on the sash\n const currentWidth = dom.getTotalWidth(this._domNode);\n if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {\n // The editor is narrow and the width of the find widget is controlled fully by CSS.\n return;\n }\n let width = FIND_WIDGET_INITIAL_WIDTH;\n if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {\n // 1. never resized before, double click should maximizes it\n // 2. users resized it already but its width is the same as default\n const layoutInfo = this._codeEditor.getLayoutInfo();\n width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;\n this._resized = true;\n }\n else {\n /**\n * no op, the find widget should be shrinked to its default size.\n */\n }\n this._domNode.style.width = `${width}px`;\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n this._findInput.inputBox.layout();\n }));\n }\n updateAccessibilitySupport() {\n const value = this._codeEditor.getOption(2 /* EditorOption.accessibilitySupport */);\n this._findInput.setFocusInputOnOptionClick(value !== 2 /* AccessibilitySupport.Enabled */);\n }\n}\nFindWidget.ID = 'editor.contrib.findWidget';\nexport class SimpleButton extends Widget {\n constructor(opts, hoverService) {\n var _a;\n super();\n this._opts = opts;\n let className = 'button';\n if (this._opts.className) {\n className = className + ' ' + this._opts.className;\n }\n if (this._opts.icon) {\n className = className + ' ' + ThemeIcon.asClassName(this._opts.icon);\n }\n this._domNode = document.createElement('div');\n this._domNode.tabIndex = 0;\n this._domNode.className = className;\n this._domNode.setAttribute('role', 'button');\n this._domNode.setAttribute('aria-label', this._opts.label);\n this._register(hoverService.setupUpdatableHover((_a = opts.hoverDelegate) !== null && _a !== void 0 ? _a : getDefaultHoverDelegate('element'), this._domNode, this._opts.label));\n this.onclick(this._domNode, (e) => {\n this._opts.onTrigger();\n e.preventDefault();\n });\n this.onkeydown(this._domNode, (e) => {\n var _a, _b;\n if (e.equals(10 /* KeyCode.Space */) || e.equals(3 /* KeyCode.Enter */)) {\n this._opts.onTrigger();\n e.preventDefault();\n return;\n }\n (_b = (_a = this._opts).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n });\n }\n get domNode() {\n return this._domNode;\n }\n isEnabled() {\n return (this._domNode.tabIndex >= 0);\n }\n focus() {\n this._domNode.focus();\n }\n setEnabled(enabled) {\n this._domNode.classList.toggle('disabled', !enabled);\n this._domNode.setAttribute('aria-disabled', String(!enabled));\n this._domNode.tabIndex = enabled ? 0 : -1;\n }\n setExpanded(expanded) {\n this._domNode.setAttribute('aria-expanded', String(!!expanded));\n if (expanded) {\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findExpandedIcon));\n }\n else {\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findExpandedIcon));\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n }\n }\n}\n// theming\nregisterThemingParticipant((theme, collector) => {\n const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n if (findMatchHighlightBorder) {\n collector.addRule(`.monaco-editor .findMatch { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\n }\n const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);\n if (findRangeHighlightBorder) {\n collector.addRule(`.monaco-editor .findScope { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);\n }\n const hcBorder = theme.getColor(contrastBorder);\n if (hcBorder) {\n collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);\n }\n const findMatchForeground = theme.getColor(editorFindMatchForeground);\n if (findMatchForeground) {\n collector.addRule(`.monaco-editor .findMatchInline { color: ${findMatchForeground}; }`);\n }\n const findMatchHighlightForeground = theme.getColor(editorFindMatchHighlightForeground);\n if (findMatchHighlightForeground) {\n collector.addRule(`.monaco-editor .currentFindMatchInline { color: ${findMatchHighlightForeground}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar CommonFindController_1;\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditorAction, EditorCommand, MultiEditorAction, registerEditorAction, registerEditorCommand, registerEditorContribution, registerMultiEditorAction } from '../../../browser/editorExtensions.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_FIND_WIDGET_VISIBLE, CONTEXT_REPLACE_INPUT_FOCUSED, FindModelBoundToEditorModel, FIND_IDS, ToggleCaseSensitiveKeybinding, TogglePreserveCaseKeybinding, ToggleRegexKeybinding, ToggleSearchScopeKeybinding, ToggleWholeWordKeybinding } from './findModel.js';\nimport { FindOptionsWidget } from './findOptionsWidget.js';\nimport { FindReplaceState } from './findState.js';\nimport { FindWidget } from './findWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nimport { IThemeService, themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nconst SEARCH_STRING_MAX_LENGTH = 524288;\nexport function getSelectionSearchString(editor, seedSearchStringFromSelection = 'single', seedSearchStringFromNonEmptySelection = false) {\n if (!editor.hasModel()) {\n return null;\n }\n const selection = editor.getSelection();\n // if selection spans multiple lines, default search string to empty\n if ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\n || seedSearchStringFromSelection === 'multiple') {\n if (selection.isEmpty()) {\n const wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\n if (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\n return wordAtPosition.word;\n }\n }\n else {\n if (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\n return editor.getModel().getValueInRange(selection);\n }\n }\n }\n return null;\n}\nlet CommonFindController = CommonFindController_1 = class CommonFindController extends Disposable {\n get editor() {\n return this._editor;\n }\n static get(editor) {\n return editor.getContribution(CommonFindController_1.ID);\n }\n constructor(editor, contextKeyService, storageService, clipboardService, notificationService, hoverService) {\n super();\n this._editor = editor;\n this._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\n this._contextKeyService = contextKeyService;\n this._storageService = storageService;\n this._clipboardService = clipboardService;\n this._notificationService = notificationService;\n this._hoverService = hoverService;\n this._updateHistoryDelayer = new Delayer(500);\n this._state = this._register(new FindReplaceState());\n this.loadQueryState();\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this._model = null;\n this._register(this._editor.onDidChangeModel(() => {\n const shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\n this.disposeModel();\n this._state.change({\n searchScope: null,\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, false),\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, false),\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, false),\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, false)\n }, false);\n if (shouldRestartFind) {\n this._start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: 'none',\n seedSearchStringFromNonEmptySelection: false,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: false,\n updateSearchScope: false,\n loop: this._editor.getOption(41 /* EditorOption.find */).loop\n });\n }\n }));\n }\n dispose() {\n this.disposeModel();\n super.dispose();\n }\n disposeModel() {\n if (this._model) {\n this._model.dispose();\n this._model = null;\n }\n }\n _onStateChanged(e) {\n this.saveQueryState(e);\n if (e.isRevealed) {\n if (this._state.isRevealed) {\n this._findWidgetVisible.set(true);\n }\n else {\n this._findWidgetVisible.reset();\n this.disposeModel();\n }\n }\n if (e.searchString) {\n this.setGlobalBufferTerm(this._state.searchString);\n }\n }\n saveQueryState(e) {\n if (e.isRegex) {\n this._storageService.store('editor.isRegex', this._state.actualIsRegex, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n if (e.wholeWord) {\n this._storageService.store('editor.wholeWord', this._state.actualWholeWord, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n if (e.matchCase) {\n this._storageService.store('editor.matchCase', this._state.actualMatchCase, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n if (e.preserveCase) {\n this._storageService.store('editor.preserveCase', this._state.actualPreserveCase, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n }\n loadQueryState() {\n this._state.change({\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, this._state.matchCase),\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, this._state.wholeWord),\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, this._state.isRegex),\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, this._state.preserveCase)\n }, false);\n }\n isFindInputFocused() {\n return !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\n }\n getState() {\n return this._state;\n }\n closeFindWidget() {\n this._state.change({\n isRevealed: false,\n searchScope: null\n }, false);\n this._editor.focus();\n }\n toggleCaseSensitive() {\n this._state.change({ matchCase: !this._state.matchCase }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleWholeWords() {\n this._state.change({ wholeWord: !this._state.wholeWord }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleRegex() {\n this._state.change({ isRegex: !this._state.isRegex }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n togglePreserveCase() {\n this._state.change({ preserveCase: !this._state.preserveCase }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleSearchScope() {\n if (this._state.searchScope) {\n this._state.change({ searchScope: null }, true);\n }\n else {\n if (this._editor.hasModel()) {\n let selections = this._editor.getSelections();\n selections = selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n if (!selection.isEmpty()) {\n return selection;\n }\n return null;\n }).filter((element) => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n }\n setSearchString(searchString) {\n if (this._state.isRegex) {\n searchString = strings.escapeRegExpCharacters(searchString);\n }\n this._state.change({ searchString: searchString }, false);\n }\n highlightFindOptions(ignoreWhenVisible = false) {\n // overwritten in subclass\n }\n async _start(opts, newState) {\n this.disposeModel();\n if (!this._editor.hasModel()) {\n // cannot do anything with an editor that doesn't have a model...\n return;\n }\n const stateChanges = {\n ...newState,\n isRevealed: true\n };\n if (opts.seedSearchStringFromSelection === 'single') {\n const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\n if (selectionSearchString) {\n if (this._state.isRegex) {\n stateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\n }\n else {\n stateChanges.searchString = selectionSearchString;\n }\n }\n }\n else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\n const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\n if (selectionSearchString) {\n stateChanges.searchString = selectionSearchString;\n }\n }\n if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\n const selectionSearchString = await this.getGlobalBufferTerm();\n if (!this._editor.hasModel()) {\n // the editor has lost its model in the meantime\n return;\n }\n if (selectionSearchString) {\n stateChanges.searchString = selectionSearchString;\n }\n }\n // Overwrite isReplaceRevealed\n if (opts.forceRevealReplace || stateChanges.isReplaceRevealed) {\n stateChanges.isReplaceRevealed = true;\n }\n else if (!this._findWidgetVisible.get()) {\n stateChanges.isReplaceRevealed = false;\n }\n if (opts.updateSearchScope) {\n const currentSelections = this._editor.getSelections();\n if (currentSelections.some(selection => !selection.isEmpty())) {\n stateChanges.searchScope = currentSelections;\n }\n }\n stateChanges.loop = opts.loop;\n this._state.change(stateChanges, false);\n if (!this._model) {\n this._model = new FindModelBoundToEditorModel(this._editor, this._state);\n }\n }\n start(opts, newState) {\n return this._start(opts, newState);\n }\n moveToNextMatch() {\n if (this._model) {\n this._model.moveToNextMatch();\n return true;\n }\n return false;\n }\n moveToPrevMatch() {\n if (this._model) {\n this._model.moveToPrevMatch();\n return true;\n }\n return false;\n }\n goToMatch(index) {\n if (this._model) {\n this._model.moveToMatch(index);\n return true;\n }\n return false;\n }\n replace() {\n if (this._model) {\n this._model.replace();\n return true;\n }\n return false;\n }\n replaceAll() {\n var _a;\n if (this._model) {\n if ((_a = this._editor.getModel()) === null || _a === void 0 ? void 0 : _a.isTooLargeForHeapOperation()) {\n this._notificationService.warn(nls.localize('too.large.for.replaceall', \"The file is too large to perform a replace all operation.\"));\n return false;\n }\n this._model.replaceAll();\n return true;\n }\n return false;\n }\n selectAllMatches() {\n if (this._model) {\n this._model.selectAllMatches();\n this._editor.focus();\n return true;\n }\n return false;\n }\n async getGlobalBufferTerm() {\n if (this._editor.getOption(41 /* EditorOption.find */).globalFindClipboard\n && this._editor.hasModel()\n && !this._editor.getModel().isTooLargeForSyncing()) {\n return this._clipboardService.readFindText();\n }\n return '';\n }\n setGlobalBufferTerm(text) {\n if (this._editor.getOption(41 /* EditorOption.find */).globalFindClipboard\n && this._editor.hasModel()\n && !this._editor.getModel().isTooLargeForSyncing()) {\n // intentionally not awaited\n this._clipboardService.writeFindText(text);\n }\n }\n};\nCommonFindController.ID = 'editor.contrib.findController';\nCommonFindController = CommonFindController_1 = __decorate([\n __param(1, IContextKeyService),\n __param(2, IStorageService),\n __param(3, IClipboardService),\n __param(4, INotificationService),\n __param(5, IHoverService)\n], CommonFindController);\nexport { CommonFindController };\nlet FindController = class FindController extends CommonFindController {\n constructor(editor, _contextViewService, _contextKeyService, _keybindingService, _themeService, notificationService, _storageService, clipboardService, hoverService) {\n super(editor, _contextKeyService, _storageService, clipboardService, notificationService, hoverService);\n this._contextViewService = _contextViewService;\n this._keybindingService = _keybindingService;\n this._themeService = _themeService;\n this._widget = null;\n this._findOptionsWidget = null;\n }\n async _start(opts, newState) {\n if (!this._widget) {\n this._createFindWidget();\n }\n const selection = this._editor.getSelection();\n let updateSearchScope = false;\n switch (this._editor.getOption(41 /* EditorOption.find */).autoFindInSelection) {\n case 'always':\n updateSearchScope = true;\n break;\n case 'never':\n updateSearchScope = false;\n break;\n case 'multiline': {\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n updateSearchScope = isSelectionMultipleLine;\n break;\n }\n default:\n break;\n }\n opts.updateSearchScope = opts.updateSearchScope || updateSearchScope;\n await super._start(opts, newState);\n if (this._widget) {\n if (opts.shouldFocus === 2 /* FindStartFocusAction.FocusReplaceInput */) {\n this._widget.focusReplaceInput();\n }\n else if (opts.shouldFocus === 1 /* FindStartFocusAction.FocusFindInput */) {\n this._widget.focusFindInput();\n }\n }\n }\n highlightFindOptions(ignoreWhenVisible = false) {\n if (!this._widget) {\n this._createFindWidget();\n }\n if (this._state.isRevealed && !ignoreWhenVisible) {\n this._widget.highlightFindOptions();\n }\n else {\n this._findOptionsWidget.highlightFindOptions();\n }\n }\n _createFindWidget() {\n this._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService, this._hoverService));\n this._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService));\n }\n};\nFindController = __decorate([\n __param(1, IContextViewService),\n __param(2, IContextKeyService),\n __param(3, IKeybindingService),\n __param(4, IThemeService),\n __param(5, INotificationService),\n __param(6, IStorageService),\n __param(7, IClipboardService),\n __param(8, IHoverService)\n], FindController);\nexport { FindController };\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\n id: FIND_IDS.StartFindAction,\n label: nls.localize('startFindAction', \"Find\"),\n alias: 'Find',\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n kbOpts: {\n kbExpr: null,\n primary: 2048 /* KeyMod.CtrlCmd */ | 36 /* KeyCode.KeyF */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '3_find',\n title: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\n order: 1\n }\n}));\nStartFindAction.addImplementation(0, (accessor, editor, args) => {\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return false;\n }\n return controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: editor.getOption(41 /* EditorOption.find */).globalFindClipboard,\n shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n });\n});\nconst findArgDescription = {\n description: 'Open a new In-Editor Find Widget.',\n args: [{\n name: 'Open a new In-Editor Find Widget args',\n schema: {\n properties: {\n searchString: { type: 'string' },\n replaceString: { type: 'string' },\n isRegex: { type: 'boolean' },\n matchWholeWord: { type: 'boolean' },\n isCaseSensitive: { type: 'boolean' },\n preserveCase: { type: 'boolean' },\n findInSelection: { type: 'boolean' },\n }\n }\n }]\n};\nexport class StartFindWithArgsAction extends EditorAction {\n constructor() {\n super({\n id: FIND_IDS.StartFindWithArgs,\n label: nls.localize('startFindWithArgsAction', \"Find With Arguments\"),\n alias: 'Find With Arguments',\n precondition: undefined,\n kbOpts: {\n kbExpr: null,\n primary: 0,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n metadata: findArgDescription\n });\n }\n async run(accessor, editor, args) {\n const controller = CommonFindController.get(editor);\n if (controller) {\n const newState = args ? {\n searchString: args.searchString,\n replaceString: args.replaceString,\n isReplaceRevealed: args.replaceString !== undefined,\n isRegex: args.isRegex,\n // isRegexOverride: args.regexOverride,\n wholeWord: args.matchWholeWord,\n // wholeWordOverride: args.wholeWordOverride,\n matchCase: args.isCaseSensitive,\n // matchCaseOverride: args.matchCaseOverride,\n preserveCase: args.preserveCase,\n // preserveCaseOverride: args.preserveCaseOverride,\n } : {};\n await controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: true,\n shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n shouldAnimate: true,\n updateSearchScope: (args === null || args === void 0 ? void 0 : args.findInSelection) || false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n }, newState);\n controller.setGlobalBufferTerm(controller.getState().searchString);\n }\n }\n}\nexport class StartFindWithSelectionAction extends EditorAction {\n constructor() {\n super({\n id: FIND_IDS.StartFindWithSelection,\n label: nls.localize('startFindWithSelectionAction', \"Find With Selection\"),\n alias: 'Find With Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: null,\n primary: 0,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 35 /* KeyCode.KeyE */,\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n async run(accessor, editor) {\n const controller = CommonFindController.get(editor);\n if (controller) {\n await controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: 'multiple',\n seedSearchStringFromNonEmptySelection: false,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n });\n controller.setGlobalBufferTerm(controller.getState().searchString);\n }\n }\n}\nexport class MatchFindAction extends EditorAction {\n async run(accessor, editor) {\n const controller = CommonFindController.get(editor);\n if (controller && !this._run(controller)) {\n await controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: true,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n });\n this._run(controller);\n }\n }\n}\nexport class NextMatchFindAction extends MatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.NextMatchFindAction,\n label: nls.localize('findNextMatchAction', \"Find Next\"),\n alias: 'Find Next',\n precondition: undefined,\n kbOpts: [{\n kbExpr: EditorContextKeys.focus,\n primary: 61 /* KeyCode.F3 */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 37 /* KeyCode.KeyG */, secondary: [61 /* KeyCode.F3 */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }, {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n primary: 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }]\n });\n }\n _run(controller) {\n const result = controller.moveToNextMatch();\n if (result) {\n controller.editor.pushUndoStop();\n return true;\n }\n return false;\n }\n}\nexport class PreviousMatchFindAction extends MatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.PreviousMatchFindAction,\n label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\n alias: 'Find Previous',\n precondition: undefined,\n kbOpts: [{\n kbExpr: EditorContextKeys.focus,\n primary: 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 37 /* KeyCode.KeyG */, secondary: [1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }, {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n primary: 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n ]\n });\n }\n _run(controller) {\n return controller.moveToPrevMatch();\n }\n}\nexport class MoveToMatchFindAction extends EditorAction {\n constructor() {\n super({\n id: FIND_IDS.GoToMatchFindAction,\n label: nls.localize('findMatchAction.goToMatch', \"Go to Match...\"),\n alias: 'Go to Match...',\n precondition: CONTEXT_FIND_WIDGET_VISIBLE\n });\n this._highlightDecorations = [];\n }\n run(accessor, editor, args) {\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return;\n }\n const matchesCount = controller.getState().matchesCount;\n if (matchesCount < 1) {\n const notificationService = accessor.get(INotificationService);\n notificationService.notify({\n severity: Severity.Warning,\n message: nls.localize('findMatchAction.noResults', \"No matches. Try searching for something else.\")\n });\n return;\n }\n const quickInputService = accessor.get(IQuickInputService);\n const inputBox = quickInputService.createInputBox();\n inputBox.placeholder = nls.localize('findMatchAction.inputPlaceHolder', \"Type a number to go to a specific match (between 1 and {0})\", matchesCount);\n const toFindMatchIndex = (value) => {\n const index = parseInt(value);\n if (isNaN(index)) {\n return undefined;\n }\n const matchCount = controller.getState().matchesCount;\n if (index > 0 && index <= matchCount) {\n return index - 1; // zero based\n }\n else if (index < 0 && index >= -matchCount) {\n return matchCount + index;\n }\n return undefined;\n };\n const updatePickerAndEditor = (value) => {\n const index = toFindMatchIndex(value);\n if (typeof index === 'number') {\n // valid\n inputBox.validationMessage = undefined;\n controller.goToMatch(index);\n const currentMatch = controller.getState().currentMatch;\n if (currentMatch) {\n this.addDecorations(editor, currentMatch);\n }\n }\n else {\n inputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n this.clearDecorations(editor);\n }\n };\n inputBox.onDidChangeValue(value => {\n updatePickerAndEditor(value);\n });\n inputBox.onDidAccept(() => {\n const index = toFindMatchIndex(inputBox.value);\n if (typeof index === 'number') {\n controller.goToMatch(index);\n inputBox.hide();\n }\n else {\n inputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n }\n });\n inputBox.onDidHide(() => {\n this.clearDecorations(editor);\n inputBox.dispose();\n });\n inputBox.show();\n }\n clearDecorations(editor) {\n editor.changeDecorations(changeAccessor => {\n this._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, []);\n });\n }\n addDecorations(editor, range) {\n editor.changeDecorations(changeAccessor => {\n this._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, [\n {\n range,\n options: {\n description: 'find-match-quick-access-range-highlight',\n className: 'rangeHighlight',\n isWholeLine: true\n }\n },\n {\n range,\n options: {\n description: 'find-match-quick-access-range-highlight-overview',\n overviewRuler: {\n color: themeColorFromId(overviewRulerRangeHighlight),\n position: OverviewRulerLane.Full\n }\n }\n }\n ]);\n });\n }\n}\nexport class SelectionMatchFindAction extends EditorAction {\n async run(accessor, editor) {\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return;\n }\n const selectionSearchString = getSelectionSearchString(editor, 'single', false);\n if (selectionSearchString) {\n controller.setSearchString(selectionSearchString);\n }\n if (!this._run(controller)) {\n await controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: 'none',\n seedSearchStringFromNonEmptySelection: false,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n });\n this._run(controller);\n }\n }\n}\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.NextSelectionMatchFindAction,\n label: nls.localize('nextSelectionMatchFindAction', \"Find Next Selection\"),\n alias: 'Find Next Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 61 /* KeyCode.F3 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(controller) {\n return controller.moveToNextMatch();\n }\n}\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.PreviousSelectionMatchFindAction,\n label: nls.localize('previousSelectionMatchFindAction', \"Find Previous Selection\"),\n alias: 'Find Previous Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(controller) {\n return controller.moveToPrevMatch();\n }\n}\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\n id: FIND_IDS.StartFindReplaceAction,\n label: nls.localize('startReplace', \"Replace\"),\n alias: 'Replace',\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n kbOpts: {\n kbExpr: null,\n primary: 2048 /* KeyMod.CtrlCmd */ | 38 /* KeyCode.KeyH */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 36 /* KeyCode.KeyF */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '3_find',\n title: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\n order: 2\n }\n}));\nStartFindReplaceAction.addImplementation(0, (accessor, editor, args) => {\n if (!editor.hasModel() || editor.getOption(91 /* EditorOption.readOnly */)) {\n return false;\n }\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return false;\n }\n const currentSelection = editor.getSelection();\n const findInputFocused = controller.isFindInputFocused();\n // we only seed search string from selection when the current selection is single line and not empty,\n // + the find input is not focused\n const seedSearchStringFromSelection = !currentSelection.isEmpty()\n && currentSelection.startLineNumber === currentSelection.endLineNumber\n && (editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never')\n && !findInputFocused;\n /*\n * if the existing search string in find widget is empty and we don't seed search string from selection, it means the Find Input is still empty, so we should focus the Find Input instead of Replace Input.\n\n * findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\n * findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\n * findInputFocused false seedSearchStringFromSelection false FocusFindInput\n */\n const shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\n 2 /* FindStartFocusAction.FocusReplaceInput */ : 1 /* FindStartFocusAction.FocusFindInput */;\n return controller.start({\n forceRevealReplace: true,\n seedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never',\n shouldFocus: shouldFocus,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(41 /* EditorOption.find */).loop\n });\n});\nregisterEditorContribution(CommonFindController.ID, FindController, 0 /* EditorContributionInstantiation.Eager */); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(StartFindWithArgsAction);\nregisterEditorAction(StartFindWithSelectionAction);\nregisterEditorAction(NextMatchFindAction);\nregisterEditorAction(PreviousMatchFindAction);\nregisterEditorAction(MoveToMatchFindAction);\nregisterEditorAction(NextSelectionMatchFindAction);\nregisterEditorAction(PreviousSelectionMatchFindAction);\nconst FindCommand = EditorCommand.bindToContribution(CommonFindController.get);\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.CloseFindWidgetCommand,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.closeFindWidget(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleCaseSensitiveCommand,\n precondition: undefined,\n handler: x => x.toggleCaseSensitive(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleCaseSensitiveKeybinding.primary,\n mac: ToggleCaseSensitiveKeybinding.mac,\n win: ToggleCaseSensitiveKeybinding.win,\n linux: ToggleCaseSensitiveKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleWholeWordCommand,\n precondition: undefined,\n handler: x => x.toggleWholeWords(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleWholeWordKeybinding.primary,\n mac: ToggleWholeWordKeybinding.mac,\n win: ToggleWholeWordKeybinding.win,\n linux: ToggleWholeWordKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleRegexCommand,\n precondition: undefined,\n handler: x => x.toggleRegex(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleRegexKeybinding.primary,\n mac: ToggleRegexKeybinding.mac,\n win: ToggleRegexKeybinding.win,\n linux: ToggleRegexKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleSearchScopeCommand,\n precondition: undefined,\n handler: x => x.toggleSearchScope(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleSearchScopeKeybinding.primary,\n mac: ToggleSearchScopeKeybinding.mac,\n win: ToggleSearchScopeKeybinding.win,\n linux: ToggleSearchScopeKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.TogglePreserveCaseCommand,\n precondition: undefined,\n handler: x => x.togglePreserveCase(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: TogglePreserveCaseKeybinding.primary,\n mac: TogglePreserveCaseKeybinding.mac,\n win: TogglePreserveCaseKeybinding.win,\n linux: TogglePreserveCaseKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceOneAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replace(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 22 /* KeyCode.Digit1 */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceOneAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replace(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n primary: 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceAllAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replaceAll(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceAllAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replaceAll(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n primary: undefined,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n }\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.SelectAllMatchesAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.selectAllMatches(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\n }\n}));\n"],"names":["FindDecorations","constructor","editor","this","_editor","_decorations","_overviewRulerApproximateDecorations","_findScopeDecorationIds","_rangeHighlightDecorationId","_highlightedDecorationId","_startPosition","getPosition","dispose","removeDecorations","_allDecorations","reset","getCount","length","getFindScope","getModel","getDecorationRange","getFindScopes","scopes","map","findScopeDecorationId","filter","element","getStartPosition","setStartPosition","newStartPosition","setCurrentFindMatch","_getDecorationIndex","decorationId","index","indexOf","getDecorationRangeAt","getCurrentMatchesPosition","desiredRange","candidates","getDecorationsInRange","candidate","candidateOpts","options","_FIND_MATCH_DECORATION","_CURRENT_FIND_MATCH_DECORATION","id","nextMatch","newCurrentDecorationId","matchPosition","i","len","range","equalsRange","changeDecorations","changeAccessor","changeDecorationOptions","removeDecoration","rng","startLineNumber","endLineNumber","endColumn","lineBeforeEnd","lineBeforeEndMaxColumn","getLineMaxColumn","startColumn","addDecoration","_RANGE_HIGHLIGHT_DECORATION","set","findMatches","findScopes","accessor","findMatchesOptions","newOverviewRulerApproximateDecorations","_FIND_MATCH_NO_OVERVIEW_DECORATION","lineCount","getLineCount","approxPixelsPerLine","getLayoutInfo","height","mergeLinesDelta","Math","max","ceil","prevStartLineNumber","prevEndLineNumber","push","_FIND_MATCH_ONLY_OVERVIEW_DECORATION","newFindMatchesDecorations","Array","deltaDecorations","forEach","findScope","_FIND_SCOPE_DECORATION","matchBeforePosition","position","r","lineNumber","column","matchAfterPosition","result","concat","description","stickiness","zIndex","className","inlineClassName","showIfCollapsed","overviewRuler","color","minimap","isWholeLine","ReplaceAllCommand","editorSelection","ranges","replaceStrings","_editorSelection","_ranges","_replaceStrings","_trackedEditorSelectionId","getEditOperations","model","builder","ops","text","sort","o1","o2","resultOps","previousOp","plusRange","op","addEditOperation","trackSelection","computeCursorState","helper","getTrackedSelection","StaticValueReplacePattern","staticValue","kind","DynamicPiecesReplacePattern","pieces","ReplacePattern","fromStaticValue","value","ReplacePiece","hasReplacementPatterns","_state","buildReplaceString","matches","preserveCase","piece","match","_substitute","matchIndex","caseOps","repl","lenOps","opIdx","idx","slice","toUpperCase","toLowerCase","join","remainder","String","floor","ReplacePieceBuilder","source","_source","_lastCharIndex","_result","_resultLen","_currentStaticPiece","emitUnchanged","toCharIndex","_emitStatic","substring","emitStatic","emitMatchIndex","finalize","CONTEXT_FIND_WIDGET_VISIBLE","CONTEXT_FIND_INPUT_FOCUSED","toNegated","CONTEXT_REPLACE_INPUT_FOCUSED","ToggleCaseSensitiveKeybinding","primary","mac","ToggleWholeWordKeybinding","ToggleRegexKeybinding","ToggleSearchScopeKeybinding","TogglePreserveCaseKeybinding","FIND_IDS","MATCHES_LIMIT","FindModelBoundToEditorModel","state","_toDispose","_isDisposed","_startSearchingTimer","add","_updateDecorationsScheduler","research","onDidChangeCursorPosition","e","reason","_ignoreModelContentChanged","onDidChangeModelContent","isFlush","schedule","onFindReplaceStateChange","_onStateChanged","searchScope","hasModel","searchString","isReplaceRevealed","isRegex","wholeWord","matchCase","isTooLargeForSyncing","cancel","setIfNotSet","moveCursor","_getSearchRange","getFullModelRange","newFindScope","isArray","_findMatches","getSelection","currentMatchesPosition","matchAfterSelection","changeMatchInfo","undefined","getOption","cursorMoveOnType","_moveToNextMatch","_hasMatches","matchesCount","_cannotFind","revealRangeInCenterIfOutsideViewport","_setCurrentFindMatch","matchesPosition","setSelection","_prevSearchPosition","before","isUsingLineStops","_moveToPrevMatch","isRecursed","canNavigateBack","nextMatchRange","prevMatchRange","isEmpty","equals","searchRange","getEndPosition","isBefore","prevMatch","findPreviousMatch","containsRange","moveToPrevMatch","_nextSearchPosition","after","canNavigateForward","_getNextMatch","captureMatches","forceMove","findNextMatch","moveToNextMatch","_moveToMatch","decorationRange","moveToMatch","_getReplacePattern","replaceString","chCode","charCodeAt","nextChCode","nextNextChCode","fromCharCode","parseReplaceString","replace","replacePattern","selection","command","_executeEditorCommand","limitResultCount","searchRanges","scope","replaceAll","_largeReplaceAll","_regularReplaceAll","searchData","parseSearchRequest","searchRegex","regex","multiline","mod","ignoreCase","global","RegExp","modelText","getValue","fullModelRange","resultText","arguments","m","selectAllMatches","selections","setSelections","pushUndoStop","executeCommand","FindOptionsWidget","keybindingService","super","_hideSoon","_register","_hide","_isVisible","_keybindingService","_domNode","document","createElement","style","display","top","setAttribute","toggleStyles","inputActiveOptionBorder","inputActiveOptionForeground","inputActiveOptionBackground","hoverDelegate","caseSensitive","appendTitle","_keybindingLabelFor","isChecked","appendChild","domNode","onChange","change","checked","wholeWords","addOverlayWidget","somethingChanged","isRevealed","_revealTemporarily","dom","_onMouseLeave","_onMouseOver","actionId","kb","lookupKeybinding","getLabel","removeOverlayWidget","getId","ID","getDomNode","preference","highlightFindOptions","_show","effectiveOptionValue","override","FindReplaceState","_searchString","_replaceString","_isRevealed","_isReplaceRevealed","_isRegexOverride","_isRegex","_wholeWordOverride","_wholeWord","_matchCaseOverride","_matchCase","_preserveCaseOverride","_preserveCase","actualIsRegex","actualWholeWord","actualMatchCase","actualPreserveCase","_searchScope","_matchesPosition","_matchesCount","currentMatch","_currentMatch","_onFindReplaceStateChange","event","_loop","_isSearching","_filters","changeEvent","updateHistory","loop","isSearching","filters","fire","newState","_a","oldEffectiveIsRegex","oldEffectiveWholeWords","oldEffectiveMatchCase","oldEffectivePreserveCase","every","newSearchScope","some","existingSearchScope","update","isRegexOverride","wholeWordOverride","matchCaseOverride","preserveCaseOverride","canNavigateInLoop","findCollapsedIcon","nls","findExpandedIcon","findSelectionIcon","findReplaceIcon","findReplaceAllIcon","findPreviousMatchIcon","findNextMatchIcon","NLS_FIND_DIALOG_LABEL","NLS_FIND_INPUT_LABEL","NLS_FIND_INPUT_PLACEHOLDER","NLS_PREVIOUS_MATCH_BTN_LABEL","NLS_NEXT_MATCH_BTN_LABEL","NLS_TOGGLE_SELECTION_FIND_TITLE","NLS_CLOSE_BTN_LABEL","NLS_REPLACE_INPUT_LABEL","NLS_REPLACE_INPUT_PLACEHOLDER","NLS_REPLACE_BTN_LABEL","NLS_REPLACE_ALL_BTN_LABEL","NLS_TOGGLE_REPLACE_MODE_BTN_LABEL","NLS_MATCHES_COUNT_LIMIT_TITLE","NLS_MATCHES_LOCATION","NLS_NO_RESULTS","FIND_WIDGET_INITIAL_WIDTH","MAX_MATCHES_COUNT_WIDTH","ctrlEnterReplaceAllWarningPromptedKey","ctrlKeyMod","platform","FindWidgetViewZone","afterLineNumber","heightInPx","suppressMouseDown","stopPropagationForMultiLineUpwards","textarea","isMultiline","selectionStart","stopPropagation","stopPropagationForMultiLineDownwards","selectionEnd","FindWidget","codeEditor","controller","contextViewProvider","contextKeyService","themeService","storageService","notificationService","_hoverService","_cachedHeight","_revealTimeouts","_codeEditor","_controller","_contextViewProvider","_contextKeyService","_storageService","_notificationService","_ctrlEnterReplaceAllWarningPrompted","getBoolean","_isReplaceVisible","_ignoreChangeEvent","_updateHistoryDelayer","_buildDomNode","_updateButtons","_tryUpdateWidgetWidth","_findInput","inputBox","layout","onDidChangeConfiguration","hasChanged","updateAccessibilitySupport","supportLoop","addExtraSpaceOnTop","_viewZone","_showViewZone","_removeViewZone","onDidChangeCursorSelection","_updateToggleSelectionFindButton","onDidFocusEditorWidget","async","globalBufferTerm","getGlobalBufferTerm","select","_findInputFocused","bindTo","_findFocusTracker","inputElement","onDidFocus","_updateSearchScope","onDidBlur","_replaceInputFocused","_replaceFocusTracker","_replaceInput","onDidChangeModel","_viewZoneId","onDidScrollChange","scrollTopChanged","_layoutViewZone","setTimeout","setValue","_reveal","width","_tryUpdateHeight","setRegex","setWholeWords","setCaseSensitive","setPreserveCase","_toggleSelectionFind","showRedOutline","classList","toggle","_updateMatchesCount","_delayedUpdateHistory","trigger","_updateHistory","bind","then","addToHistory","label","minWidth","title","firstChild","removeChild","strings","createTextNode","_getAriaLabel","clientWidth","ariaLabel","getLineContent","isSelection","enable","disable","setEnabled","_closeBtn","findInputIsNonEmpty","_prevBtn","_nextBtn","_replaceBtn","_replaceAllBtn","_toggleReplaceBtn","setExpanded","canReplace","clearTimeout","autoFindInSelection","isSelectionMultipleLine","validate","layoutOverlayWidget","adjustEditorScrollTop","seedSearchStringFromSelection","editorCoords","startCoords","getScrolledVisiblePosition","startLeft","left","startTop","leftOfFindWidget","endCoords","focusTheEditor","remove","clearMessage","focus","targetScrollTop","viewZone","changeViewZones","_getHeight","addZone","setScrollTop","getScrollTop","adjustScroll","newHeight","scrollAdjustment","layoutZone","removeZone","isConnected","layoutInfo","contentWidth","contains","editorWidth","minimapWidth","collapsedFindWidget","reducedFindWidget","narrowFindWidget","_resized","maxWidth","findInputWidth","totalheight","totalHeight","focusFindInput","focusReplaceInput","getSelections","setEndPosition","_onFindInputMouseDown","middleButton","_onFindInputKeyDown","dispatchEvent","target","insertAtCursor","preventDefault","focusOnCaseSensitive","querySelector","_onReplaceInputKeyDown","info","store","getVerticalSashLeft","_sash","PART_WIDTH","placeholder","appendCaseSensitiveLabel","appendWholeWordsLabel","appendRegexLabel","validation","getRegex","content","message","flexibleHeight","flexibleWidth","flexibleMaxHeight","showCommonFindToggles","showHistoryHint","inputBoxStyles","onKeyDown","onDidChange","onDidOptionChange","getWholeWords","getCaseSensitive","onCaseSensitiveKeyDown","onRegexKeyDown","focusOnPreserve","onDidHeightChange","onMouseDown","SimpleButton","icon","onTrigger","getAction","run","findPart","actionsContainer","isEnabled","appendPreserveCaseLabel","history","getPreserveCase","onPreserveCaseKeyDown","enabled","replaceHoverDelegate","replacePart","replaceActionsContainer","role","_resizeSash","orientation","size","originalWidth","onDidStart","evt","startX","currentX","parseFloat","onDidReset","currentWidth","setFocusInputOnOptionClick","opts","hoverService","_opts","tabIndex","setupUpdatableHover","onclick","onkeydown","_b","call","expanded","theme","collector","findMatchHighlightBorder","getColor","addRule","type","findRangeHighlightBorder","hcBorder","findMatchForeground","findMatchHighlightForeground","CommonFindController_1","__decorate","decorators","key","desc","d","c","Object","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","getSelectionSearchString","seedSearchStringFromNonEmptySelection","wordAtPosition","getConfiguredWordAtPosition","word","getValueLengthInRange","getValueInRange","CommonFindController","get","getContribution","clipboardService","_findWidgetVisible","_clipboardService","loadQueryState","_model","shouldRestartFind","disposeModel","_start","forceRevealReplace","seedSearchStringFromGlobalClipboard","shouldFocus","shouldAnimate","updateSearchScope","saveQueryState","setGlobalBufferTerm","isFindInputFocused","getState","closeFindWidget","toggleCaseSensitive","toggleWholeWords","toggleRegex","togglePreserveCase","toggleSearchScope","setSearchString","ignoreWhenVisible","stateChanges","selectionSearchString","currentSelections","start","goToMatch","isTooLargeForHeapOperation","warn","globalFindClipboard","readFindText","writeFindText","FindController","_contextViewService","_themeService","_widget","_findOptionsWidget","_createFindWidget","alias","precondition","kbOpts","kbExpr","weight","menuOpts","menuId","group","comment","order","addImplementation","args","findArgDescription","name","schema","properties","matchWholeWord","isCaseSensitive","findInSelection","StartFindWithArgsAction","metadata","StartFindWithSelectionAction","MatchFindAction","_run","MoveToMatchFindAction","_highlightDecorations","notify","severity","createInputBox","toFindMatchIndex","parseInt","isNaN","matchCount","updatePickerAndEditor","validationMessage","addDecorations","clearDecorations","onDidChangeValue","onDidAccept","hide","onDidHide","show","SelectionMatchFindAction","currentSelection","findInputFocused","secondary","FindCommand","handler","x","win","linux"],"sourceRoot":""}