ace.define( 'ace/ext/searchbox', [ 'require', 'exports', 'module', 'ace/lib/dom', 'ace/lib/lang', 'ace/lib/event', 'ace/keyboard/hash_handler', 'ace/lib/keys', ], function (e, t, n) { 'use strict' var r = e('../lib/dom'), i = e('../lib/lang'), s = e('../lib/event'), o = '.ace_search {background-color: #ddd;color: var(--el-color-text-secondary);border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;min-height: 1.8em;box-sizing: content-box;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;color: var(--el-color-text-secondary);}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: "";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width: 2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing: border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}', u = e('../keyboard/hash_handler').HashHandler, a = e('../lib/keys'), f = 999 r.importCssString(o, 'ace_searchbox') var l = function (e, t, n) { var i = r.createElement('div') r.buildDom( [ 'div', { class: 'ace_search right' }, ['span', { action: 'hide', class: 'ace_searchbtn_close' }], [ 'div', { class: 'ace_search_form' }, [ 'input', { class: 'ace_search_field', placeholder: 'Search for', spellcheck: 'false' }, ], ['span', { action: 'findPrev', class: 'ace_searchbtn prev' }, '\u200b'], ['span', { action: 'findNext', class: 'ace_searchbtn next' }, '\u200b'], ['span', { action: 'findAll', class: 'ace_searchbtn', title: 'Alt-Enter' }, 'All'], ], [ 'div', { class: 'ace_replace_form' }, [ 'input', { class: 'ace_search_field', placeholder: 'Replace with', spellcheck: 'false' }, ], ['span', { action: 'replaceAndFindNext', class: 'ace_searchbtn' }, 'Replace'], ['span', { action: 'replaceAll', class: 'ace_searchbtn' }, 'All'], ], [ 'div', { class: 'ace_search_options' }, [ 'span', { action: 'toggleReplace', class: 'ace_button', title: 'Toggle Replace mode', style: 'float:left;margin-top:-2px;padding:0 5px;', }, '+', ], ['span', { class: 'ace_search_counter' }], [ 'span', { action: 'toggleRegexpMode', class: 'ace_button', title: 'RegExp Search' }, '.*', ], [ 'span', { action: 'toggleCaseSensitive', class: 'ace_button', title: 'CaseSensitive Search' }, 'Aa', ], [ 'span', { action: 'toggleWholeWords', class: 'ace_button', title: 'Whole Word Search' }, '\\b', ], [ 'span', { action: 'searchInSelection', class: 'ace_button', title: 'Search In Selection' }, 'S', ], ], ], i ), (this.element = i.firstChild), (this.setSession = this.setSession.bind(this)), this.$init(), this.setEditor(e), r.importCssString(o, 'ace_searchbox', e.container) } ;(function () { ;(this.setEditor = function (e) { ;(e.searchBox = this), e.renderer.scroller.appendChild(this.element), (this.editor = e) }), (this.setSession = function (e) { ;(this.searchRange = null), this.$syncOptions(!0) }), (this.$initElements = function (e) { ;(this.searchBox = e.querySelector('.ace_search_form')), (this.replaceBox = e.querySelector('.ace_replace_form')), (this.searchOption = e.querySelector('[action=searchInSelection]')), (this.replaceOption = e.querySelector('[action=toggleReplace]')), (this.regExpOption = e.querySelector('[action=toggleRegexpMode]')), (this.caseSensitiveOption = e.querySelector('[action=toggleCaseSensitive]')), (this.wholeWordOption = e.querySelector('[action=toggleWholeWords]')), (this.searchInput = this.searchBox.querySelector('.ace_search_field')), (this.replaceInput = this.replaceBox.querySelector('.ace_search_field')), (this.searchCounter = e.querySelector('.ace_search_counter')) }), (this.$init = function () { var e = this.element this.$initElements(e) var t = this s.addListener(e, 'mousedown', function (e) { setTimeout(function () { t.activeInput.focus() }, 0), s.stopPropagation(e) }), s.addListener(e, 'click', function (e) { var n = e.target || e.srcElement, r = n.getAttribute('action') r && t[r] ? t[r]() : t.$searchBarKb.commands[r] && t.$searchBarKb.commands[r].exec(t), s.stopPropagation(e) }), s.addCommandKeyListener(e, function (e, n, r) { var i = a.keyCodeToString(r), o = t.$searchBarKb.findKeyCommand(n, i) o && o.exec && (o.exec(t), s.stopEvent(e)) }), (this.$onChange = i.delayedCall(function () { t.find(!1, !1) })), s.addListener(this.searchInput, 'input', function () { t.$onChange.schedule(20) }), s.addListener(this.searchInput, 'focus', function () { ;(t.activeInput = t.searchInput), t.searchInput.value && t.highlight() }), s.addListener(this.replaceInput, 'focus', function () { ;(t.activeInput = t.replaceInput), t.searchInput.value && t.highlight() }) }), (this.$closeSearchBarKb = new u([ { bindKey: 'Esc', name: 'closeSearchBar', exec: function (e) { e.searchBox.hide() }, }, ])), (this.$searchBarKb = new u()), this.$searchBarKb.bindKeys({ 'Ctrl-f|Command-f': function (e) { var t = (e.isReplace = !e.isReplace) ;(e.replaceBox.style.display = t ? '' : 'none'), (e.replaceOption.checked = !1), e.$syncOptions(), e.searchInput.focus() }, 'Ctrl-H|Command-Option-F': function (e) { if (e.editor.getReadOnly()) return ;(e.replaceOption.checked = !0), e.$syncOptions(), e.replaceInput.focus() }, 'Ctrl-G|Command-G': function (e) { e.findNext() }, 'Ctrl-Shift-G|Command-Shift-G': function (e) { e.findPrev() }, esc: function (e) { setTimeout(function () { e.hide() }) }, Return: function (e) { e.activeInput == e.replaceInput && e.replace(), e.findNext() }, 'Shift-Return': function (e) { e.activeInput == e.replaceInput && e.replace(), e.findPrev() }, 'Alt-Return': function (e) { e.activeInput == e.replaceInput && e.replaceAll(), e.findAll() }, Tab: function (e) { ;(e.activeInput == e.replaceInput ? e.searchInput : e.replaceInput).focus() }, }), this.$searchBarKb.addCommands([ { name: 'toggleRegexpMode', bindKey: { win: 'Alt-R|Alt-/', mac: 'Ctrl-Alt-R|Ctrl-Alt-/' }, exec: function (e) { ;(e.regExpOption.checked = !e.regExpOption.checked), e.$syncOptions() }, }, { name: 'toggleCaseSensitive', bindKey: { win: 'Alt-C|Alt-I', mac: 'Ctrl-Alt-R|Ctrl-Alt-I' }, exec: function (e) { ;(e.caseSensitiveOption.checked = !e.caseSensitiveOption.checked), e.$syncOptions() }, }, { name: 'toggleWholeWords', bindKey: { win: 'Alt-B|Alt-W', mac: 'Ctrl-Alt-B|Ctrl-Alt-W' }, exec: function (e) { ;(e.wholeWordOption.checked = !e.wholeWordOption.checked), e.$syncOptions() }, }, { name: 'toggleReplace', exec: function (e) { ;(e.replaceOption.checked = !e.replaceOption.checked), e.$syncOptions() }, }, { name: 'searchInSelection', exec: function (e) { ;(e.searchOption.checked = !e.searchRange), e.setSearchRange(e.searchOption.checked && e.editor.getSelectionRange()), e.$syncOptions() }, }, ]), (this.setSearchRange = function (e) { ;(this.searchRange = e), e ? (this.searchRangeMarker = this.editor.session.addMarker(e, 'ace_active-line')) : this.searchRangeMarker && (this.editor.session.removeMarker(this.searchRangeMarker), (this.searchRangeMarker = null)) }), (this.$syncOptions = function (e) { r.setCssClass(this.replaceOption, 'checked', this.searchRange), r.setCssClass(this.searchOption, 'checked', this.searchOption.checked), (this.replaceOption.textContent = this.replaceOption.checked ? '-' : '+'), r.setCssClass(this.regExpOption, 'checked', this.regExpOption.checked), r.setCssClass(this.wholeWordOption, 'checked', this.wholeWordOption.checked), r.setCssClass(this.caseSensitiveOption, 'checked', this.caseSensitiveOption.checked) var t = this.editor.getReadOnly() ;(this.replaceOption.style.display = t ? 'none' : ''), (this.replaceBox.style.display = this.replaceOption.checked && !t ? '' : 'none'), this.find(!1, !1, e) }), (this.highlight = function (e) { this.editor.session.highlight(e || this.editor.$search.$options.re), this.editor.renderer.updateBackMarkers() }), (this.find = function (e, t, n) { var i = this.editor.find(this.searchInput.value, { skipCurrent: e, backwards: t, wrap: !0, regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, preventScroll: n, range: this.searchRange, }), s = !i && this.searchInput.value r.setCssClass(this.searchBox, 'ace_nomatch', s), this.editor._emit('findSearchBox', { match: !s }), this.highlight(), this.updateCounter() }), (this.updateCounter = function () { var e = this.editor, t = e.$search.$options.re, n = 0, r = 0 if (t) { var i = this.searchRange ? e.session.getTextRange(this.searchRange) : e.getValue(), s = e.session.doc.positionToIndex(e.selection.anchor) this.searchRange && (s -= e.session.doc.positionToIndex(this.searchRange.start)) var o = (t.lastIndex = 0), u while ((u = t.exec(i))) { n++, (o = u.index), o <= s && r++ if (n > f) break if (!u[0]) { t.lastIndex = o += 1 if (o >= i.length) break } } } this.searchCounter.textContent = r + ' of ' + (n > f ? f + '+' : n) }), (this.findNext = function () { this.find(!0, !1) }), (this.findPrev = function () { this.find(!0, !0) }), (this.findAll = function () { var e = this.editor.findAll(this.searchInput.value, { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, }), t = !e && this.searchInput.value r.setCssClass(this.searchBox, 'ace_nomatch', t), this.editor._emit('findSearchBox', { match: !t }), this.highlight(), this.hide() }), (this.replace = function () { this.editor.getReadOnly() || this.editor.replace(this.replaceInput.value) }), (this.replaceAndFindNext = function () { this.editor.getReadOnly() || (this.editor.replace(this.replaceInput.value), this.findNext()) }), (this.replaceAll = function () { this.editor.getReadOnly() || this.editor.replaceAll(this.replaceInput.value) }), (this.hide = function () { ;(this.active = !1), this.setSearchRange(null), this.editor.off('changeSession', this.setSession), (this.element.style.display = 'none'), this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb), this.editor.focus() }), (this.show = function (e, t) { ;(this.active = !0), this.editor.on('changeSession', this.setSession), (this.element.style.display = ''), (this.replaceOption.checked = t), e && (this.searchInput.value = e), this.searchInput.focus(), this.searchInput.select(), this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb), this.$syncOptions(!0) }), (this.isFocused = function () { var e = document.activeElement return e == this.searchInput || e == this.replaceInput }) }).call(l.prototype), (t.SearchBox = l), (t.Search = function (e, t) { var n = e.searchBox || new l(e) n.show(e.session.getTextRange(), t) }) } ) ;(function () { ace.require(['ace/ext/searchbox'], function (m) { if (typeof module == 'object' && typeof exports == 'object' && module) { module.exports = m } }) })()