arch-repo-manager/srv/static/node_modules/xterm-addon-search/lib/xterm-addon-search.js

2 lines
12 KiB
JavaScript

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SearchAddon=t():e.SearchAddon=t()}(self,(function(){return(()=>{"use strict";var e={345:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.forwardEvent=t.EventEmitter=void 0,t.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>(this._listeners.push(e),{dispose:()=>{if(!this._disposed)for(let t=0;t<this._listeners.length;t++)if(this._listeners[t]===e)return void this._listeners.splice(t,1)}})),this._event}fire(e,t){const i=[];for(let e=0;e<this._listeners.length;e++)i.push(this._listeners[e]);for(let s=0;s<i.length;s++)i[s].call(void 0,e,t)}dispose(){this._listeners&&(this._listeners.length=0),this._disposed=!0}},t.forwardEvent=function(e,t){return e((e=>t.fire(e)))}}},t={};function i(s){var r=t[s];if(void 0!==r)return r.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,i),n.exports}var s={};return(()=>{var e=s;Object.defineProperty(e,"__esModule",{value:!0}),e.SearchAddon=void 0;const t=i(345),r=" ~!@#$%^&*()+`-=[]{}|\\;:\"',./<>?";e.SearchAddon=class{constructor(){this._linesCacheTimeoutId=0,this._onDidChangeResults=new t.EventEmitter,this.onDidChangeResults=this._onDidChangeResults.event}activate(e){this._terminal=e,this._onDataDisposable=this._terminal.onWriteParsed((()=>this._updateMatches())),this._onResizeDisposable=this._terminal.onResize((()=>this._updateMatches()))}_updateMatches(){var e;this._highlightTimeout&&window.clearTimeout(this._highlightTimeout),this._cachedSearchTerm&&(null===(e=this._lastSearchOptions)||void 0===e?void 0:e.decorations)&&(this._highlightTimeout=setTimeout((()=>{var e,t;this.findPrevious(this._cachedSearchTerm,Object.assign(Object.assign({},this._lastSearchOptions),{incremental:!0,noScroll:!0})),this._resultIndex=this._searchResults?this._searchResults.size-1:-1,this._onDidChangeResults.fire({resultIndex:this._resultIndex,resultCount:null!==(t=null===(e=this._searchResults)||void 0===e?void 0:e.size)&&void 0!==t?t:-1})}),200))}dispose(){var e,t;this.clearDecorations(),null===(e=this._onDataDisposable)||void 0===e||e.dispose(),null===(t=this._onResizeDisposable)||void 0===t||t.dispose()}clearDecorations(e){var t,i,s,r;null===(t=this._selectedDecoration)||void 0===t||t.dispose(),null===(i=this._searchResults)||void 0===i||i.clear(),null===(s=this._resultDecorations)||void 0===s||s.forEach((e=>{for(const t of e)t.dispose()})),null===(r=this._resultDecorations)||void 0===r||r.clear(),this._searchResults=void 0,this._resultDecorations=void 0,e||(this._cachedSearchTerm=void 0)}clearActiveDecoration(){var e;null===(e=this._selectedDecoration)||void 0===e||e.dispose(),this._selectedDecoration=void 0}findNext(e,t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._lastSearchOptions=t,(null==t?void 0:t.decorations)&&(void 0===this._resultIndex&&void 0!==this._cachedSearchTerm&&e===this._cachedSearchTerm||this._highlightAllMatches(e,t)),this._fireResults(e,this._findNextAndSelect(e,t),t)}_highlightAllMatches(e,t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");if(!e||0===e.length)return void this.clearDecorations();t=t||{},this.clearDecorations(!0),this._searchResults=new Map,this._resultDecorations=new Map;const i=this._resultDecorations;let s=this._find(e,0,0,t);for(;s&&!this._searchResults.get(`${s.row}-${s.col}`);)if(this._searchResults.set(`${s.row}-${s.col}`,s),s=this._find(e,s.col+s.term.length>=this._terminal.cols?s.row+1:s.row,s.col+s.term.length>=this._terminal.cols?0:s.col+1,t),this._searchResults.size>1e3)return this.clearDecorations(),void(this._resultIndex=void 0);this._searchResults.forEach((e=>{const s=this._createResultDecoration(e,t.decorations);if(s){const e=i.get(s.marker.line)||[];e.push(s),i.set(s.marker.line,e)}}))}_find(e,t,i,s){var r;if(!this._terminal||!e||0===e.length)return null===(r=this._terminal)||void 0===r||r.clearSelection(),void this.clearDecorations();if(i>this._terminal.cols)throw new Error(`Invalid col: ${i} to search in terminal of ${this._terminal.cols} cols`);let n;this._initLinesCache();const o={startRow:t,startCol:i};if(n=this._findInLine(e,o,s),!n)for(let i=t+1;i<this._terminal.buffer.active.baseY+this._terminal.rows&&(o.startRow=i,o.startCol=0,n=this._findInLine(e,o,s),!n);i++);return n}_findNextAndSelect(e,t){var i;if(!this._terminal||!e||0===e.length)return null===(i=this._terminal)||void 0===i||i.clearSelection(),this.clearDecorations(),this._cachedSearchTerm=void 0,this._resultIndex=-1,!1;this._cachedSearchTerm!==e&&(this._resultIndex=void 0,this._terminal.clearSelection());let s,r=0,n=0;if(this._terminal.hasSelection()){const e=!!t&&t.incremental;s=this._terminal.getSelectionPosition(),n=e?s.start.y:s.end.y,r=e?s.start.x:s.end.x}this._initLinesCache();const o={startRow:n,startCol:r};let l=this._findInLine(e,o,t);if(!l)for(let i=n+1;i<this._terminal.buffer.active.baseY+this._terminal.rows&&(o.startRow=i,o.startCol=0,l=this._findInLine(e,o,t),!l);i++);if(!l&&0!==n)for(let i=0;i<n&&(o.startRow=i,o.startCol=0,l=this._findInLine(e,o,t),!l);i++);return!l&&s&&(o.startRow=s.start.y,o.startCol=0,l=this._findInLine(e,o,t)),this._searchResults&&(0===this._searchResults.size?this._resultIndex=-1:void 0===this._resultIndex?this._resultIndex=0:(this._resultIndex++,this._resultIndex>=this._searchResults.size&&(this._resultIndex=0))),this._selectResult(l,null==t?void 0:t.decorations,null==t?void 0:t.noScroll)}findPrevious(e,t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._lastSearchOptions=t,(null==t?void 0:t.decorations)&&(void 0===this._resultIndex&&void 0!==this._cachedSearchTerm&&e===this._cachedSearchTerm||this._highlightAllMatches(e,t)),this._fireResults(e,this._findPreviousAndSelect(e,t),t)}_fireResults(e,t,i){var s;return(null==i?void 0:i.decorations)&&(void 0!==this._resultIndex&&void 0!==(null===(s=this._searchResults)||void 0===s?void 0:s.size)?this._onDidChangeResults.fire({resultIndex:this._resultIndex,resultCount:this._searchResults.size}):this._onDidChangeResults.fire(void 0)),this._cachedSearchTerm=e,t}_findPreviousAndSelect(e,t){var i;if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let s;if(!this._terminal||!e||0===e.length)return s=void 0,null===(i=this._terminal)||void 0===i||i.clearSelection(),this.clearDecorations(),this._resultIndex=-1,!1;this._cachedSearchTerm!==e&&(this._resultIndex=void 0,this._terminal.clearSelection());let r=this._terminal.buffer.active.baseY+this._terminal.rows,n=this._terminal.cols;const o=!0,l=!!t&&t.incremental;let h;this._terminal.hasSelection()&&(h=this._terminal.getSelectionPosition(),r=h.start.y,n=h.start.x),this._initLinesCache();const a={startRow:r,startCol:n};if(l?(s=this._findInLine(e,a,t,!1),s&&s.row===r&&s.col===n||(h&&(a.startRow=h.end.y,a.startCol=h.end.x),s=this._findInLine(e,a,t,!0))):s=this._findInLine(e,a,t,o),!s){a.startCol=Math.max(a.startCol,this._terminal.cols);for(let i=r-1;i>=0&&(a.startRow=i,s=this._findInLine(e,a,t,o),!s);i--);}if(!s&&r!==this._terminal.buffer.active.baseY+this._terminal.rows)for(let i=this._terminal.buffer.active.baseY+this._terminal.rows;i>=r&&(a.startRow=i,s=this._findInLine(e,a,t,o),!s);i--);return this._searchResults&&(0===this._searchResults.size?this._resultIndex=-1:void 0===this._resultIndex||this._resultIndex<0?this._resultIndex=this._searchResults.size-1:(this._resultIndex--,-1===this._resultIndex&&(this._resultIndex=this._searchResults.size-1))),!(s||!h)||this._selectResult(s,null==t?void 0:t.decorations,null==t?void 0:t.noScroll)}_initLinesCache(){const e=this._terminal;this._linesCache||(this._linesCache=new Array(e.buffer.active.length),this._cursorMoveListener=e.onCursorMove((()=>this._destroyLinesCache())),this._resizeListener=e.onResize((()=>this._destroyLinesCache()))),window.clearTimeout(this._linesCacheTimeoutId),this._linesCacheTimeoutId=window.setTimeout((()=>this._destroyLinesCache()),15e3)}_destroyLinesCache(){this._linesCache=void 0,this._cursorMoveListener&&(this._cursorMoveListener.dispose(),this._cursorMoveListener=void 0),this._resizeListener&&(this._resizeListener.dispose(),this._resizeListener=void 0),this._linesCacheTimeoutId&&(window.clearTimeout(this._linesCacheTimeoutId),this._linesCacheTimeoutId=0)}_isWholeWord(e,t,i){return(0===e||r.includes(t[e-1]))&&(e+i.length===t.length||r.includes(t[e+i.length]))}_findInLine(e,t,i={},s=!1){var r;const n=this._terminal,o=t.startRow,l=t.startCol,h=n.buffer.active.getLine(o);if(null==h?void 0:h.isWrapped)return s?void(t.startCol+=n.cols):(t.startRow--,t.startCol+=n.cols,this._findInLine(e,t,i));let a=null===(r=this._linesCache)||void 0===r?void 0:r[o];a||(a=this._translateBufferLineToStringWithWrap(o,!0),this._linesCache&&(this._linesCache[o]=a));const[c,d]=a,u=this._bufferColsToStringOffset(o,l),_=i.caseSensitive?e:e.toLowerCase(),f=i.caseSensitive?c:c.toLowerCase();let v=-1;if(i.regex){const t=RegExp(_,"g");let i;if(s)for(;i=t.exec(f.slice(0,u));)v=t.lastIndex-i[0].length,e=i[0],t.lastIndex-=e.length-1;else i=t.exec(f.slice(u)),i&&i[0].length>0&&(v=u+(t.lastIndex-i[0].length),e=i[0])}else s?u-_.length>=0&&(v=f.lastIndexOf(_,u-_.length)):v=f.indexOf(_,u);if(v>=0){if(i.wholeWord&&!this._isWholeWord(v,f,e))return;let t=0;for(;t<d.length-1&&v>=d[t+1];)t++;let s=t;for(;s<d.length-1&&v+e.length>=d[s+1];)s++;const r=v-d[t],l=v+e.length-d[s],h=this._stringLengthToBufferSize(o+t,r);return{term:e,col:h,row:o+t,size:this._stringLengthToBufferSize(o+s,l)-h+n.cols*(s-t)}}}_stringLengthToBufferSize(e,t){const i=this._terminal.buffer.active.getLine(e);if(!i)return 0;for(let e=0;e<t;e++){const s=i.getCell(e);if(!s)break;const r=s.getChars();r.length>1&&(t-=r.length-1);const n=i.getCell(e+1);n&&0===n.getWidth()&&t++}return t}_bufferColsToStringOffset(e,t){const i=this._terminal;let s=e,r=0,n=i.buffer.active.getLine(s);for(;t>0&&n;){for(let e=0;e<t&&e<i.cols;e++){const t=n.getCell(e);if(!t)break;t.getWidth()&&(r+=0===t.getCode()?1:t.getChars().length)}if(s++,n=i.buffer.active.getLine(s),n&&!n.isWrapped)break;t-=i.cols}return r}_translateBufferLineToStringWithWrap(e,t){var i;const s=this._terminal,r=[],n=[0];let o=s.buffer.active.getLine(e);for(;o;){const l=s.buffer.active.getLine(e+1),h=!!l&&l.isWrapped;let a=o.translateToString(!h&&t);if(h&&l){const e=o.getCell(o.length-1);e&&0===e.getCode()&&1===e.getWidth()&&2===(null===(i=l.getCell(0))||void 0===i?void 0:i.getWidth())&&(a=a.slice(0,-1))}if(r.push(a),!h)break;n.push(n[n.length-1]+a.length),e++,o=l}return[r.join(""),n]}_selectResult(e,t,i){var s,r;const n=this._terminal;if(this.clearActiveDecoration(),!e)return n.clearSelection(),!1;if(n.select(e.col,e.row,e.size),t){const i=n.registerMarker(-n.buffer.active.baseY-n.buffer.active.cursorY+e.row);i&&(this._selectedDecoration=n.registerDecoration({marker:i,x:e.col,width:e.size,backgroundColor:t.activeMatchBackground,layer:"top",overviewRulerOptions:{color:t.activeMatchColorOverviewRuler}}),null===(s=this._selectedDecoration)||void 0===s||s.onRender((e=>this._applyStyles(e,t.activeMatchBorder,!0))),null===(r=this._selectedDecoration)||void 0===r||r.onDispose((()=>i.dispose())))}if(!i&&(e.row>=n.buffer.active.viewportY+n.rows||e.row<n.buffer.active.viewportY)){let t=e.row-n.buffer.active.viewportY;t-=Math.floor(n.rows/2),n.scrollLines(t)}return!0}_applyStyles(e,t,i){e.clientWidth<=0||(e.classList.contains("xterm-find-result-decoration")||(e.classList.add("xterm-find-result-decoration"),t&&(e.style.outline=`1px solid ${t}`)),i&&e.classList.add("xterm-find-active-result-decoration"))}_createResultDecoration(e,t){var i;const s=this._terminal,r=s.registerMarker(-s.buffer.active.baseY-s.buffer.active.cursorY+e.row);if(!r)return;const n=s.registerDecoration({marker:r,x:e.col,width:e.size,backgroundColor:t.matchBackground,overviewRulerOptions:(null===(i=this._resultDecorations)||void 0===i?void 0:i.get(r.line))?void 0:{color:t.matchOverviewRuler,position:"center"}});return null==n||n.onRender((e=>this._applyStyles(e,t.matchBorder,!1))),null==n||n.onDispose((()=>r.dispose())),n}}})(),s})()}));
//# sourceMappingURL=xterm-addon-search.js.map