Files
2026-02-09 10:48:21 +01:00

1 line
6.8 KiB
JavaScript

define(["exports"],function(_exports){function _createForOfIteratorHelper(r,e){var o,a,u,n,t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return u=!(a=!0),{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}};if(Array.isArray(r)||(t=function(r,a){{var t;if(r)return"string"==typeof r?_arrayLikeToArray(r,a):"Map"===(t="Object"===(t={}.toString.call(r).slice(8,-1))&&r.constructor?r.constructor.name:t)||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}(r))||e&&r&&"number"==typeof r.length)return t&&(r=t),n=0,{s:e=function(){},n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:e};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.searchMatcher=_exports.search=void 0;function search(strs,query,options){var _options$granularity2=options.granularity,_options$sensitivity2=void 0===(_options$sensitivity2=options.sensitivity)?"base":_options$sensitivity2;return(null!=Intl&&Intl.Segmenter&&("grapheme"!==(void 0===_options$granularity2?"grapheme":_options$granularity2)||"variant"!==_options$sensitivity2&&"accent"!==_options$sensitivity2)?function(strs,query){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return function*(){var segmenter,collator,_options$locales2=options.locales,_options$locales2=void 0===_options$locales2?"en":_options$locales2,_options$granularity=options.granularity,_options$granularity=void 0===_options$granularity?"word":_options$granularity,_options$sensitivity=options.sensitivity,_options$sensitivity=void 0===_options$sensitivity?"base":_options$sensitivity;try{segmenter=new Intl.Segmenter(_options$locales2,{usage:"search",granularity:_options$granularity}),collator=new Intl.Collator(_options$locales2,{sensitivity:_options$sensitivity})}catch(e){console.warn(e),segmenter=new Intl.Segmenter("en",{usage:"search",granularity:_options$granularity}),collator=new Intl.Collator("en",{sensitivity:_options$sensitivity})}var queryLength=Array.from(segmenter.segment(query)).length,substrArr=[],strIndex=0,segments=segmenter.segment(strs[strIndex])[Symbol.iterator]();main:for(;strIndex<strs.length;){for(;substrArr.length<queryLength;){var _segments$next=segments.next(),done=_segments$next.done,_segments$next=_segments$next.value;if(done){if(++strIndex<strs.length){segments=segmenter.segment(strs[strIndex])[Symbol.iterator]();continue}break main}var done=_segments$next.index,segment=_segments$next.segment;/(?:[\0-\xAC\xAE-\u05FF\u0606-\u061B\u061D-\u06DC\u06DE-\u070E\u0710-\u088F\u0892-\u08E1\u08E3-\u180D\u180F-\u200A\u2010-\u2029\u202F-\u205F\u2065\u2070-\uD7FF\uE000-\uFEFE\uFF00-\uFFF8\uFFFC-\uFFFF]|[\uD800-\uD803\uD805-\uD80C\uD80E-\uD82E\uD830-\uD833\uD835-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD804[\uDC00-\uDCBC\uDCBE-\uDCCC\uDCCE-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC40-\uDFFF]|\uD82F[\uDC00-\uDC9F\uDCA4-\uDFFF]|\uD834[\uDC00-\uDD72\uDD7B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/.test(segment)&&(/[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/.test(segment)?/[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/.test(null==(segment=substrArr[substrArr.length-1])?void 0:segment.segment)||substrArr.push({strIndex:strIndex,index:done,segment:" "}):(_segments$next.strIndex=strIndex,substrArr.push(_segments$next)))}var lastSeg,substr=substrArr.map(function(x){return x.segment}).join("");0===collator.compare(query,substr)&&(substr=strIndex,lastSeg=(lastSeg=substrArr[substrArr.length-1]).index+lastSeg.segment.length,yield{range:substr={startIndex:substrArr[0].strIndex,startOffset:substrArr[0].index,endIndex:substr,endOffset:lastSeg},excerpt:makeExcerpt(strs,substr)}),substrArr.shift()}}()}:function(strs,query){var options=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return function*(){var _options$locales=options.locales,_options$locales=void 0===_options$locales?"en":_options$locales,matchCase="variant"===options.sensitivity,haystack=strs.join(""),lowerHaystack=matchCase?haystack:haystack.toLocaleLowerCase(_options$locales),needle=matchCase?query:query.toLocaleLowerCase(_options$locales),needleLength=needle.length,index=-1,strIndex=-1,sum=0;do{if(-1<(index=lowerHaystack.indexOf(needle,index+1))){for(;sum<=index;)sum+=strs[++strIndex].length;for(var startIndex=strIndex,startOffset=index-(sum-strs[strIndex].length),end=index+needleLength;sum<=end;)sum+=strs[++strIndex].length;startIndex={startIndex:startIndex,startOffset:startOffset,endIndex:strIndex,endOffset:end-(sum-strs[strIndex].length)};yield{range:startIndex,excerpt:makeExcerpt(strs,startIndex)}}}while(-1<index)}()})(strs,query,options)}var makeExcerpt=function(strs,_ref){var startIndex=_ref.startIndex,startOffset=_ref.startOffset,endIndex=_ref.endIndex,_ref=_ref.endOffset,startIndex=strs[startIndex],endIndex=strs[endIndex],strs=startIndex===endIndex?startIndex.slice(startOffset,_ref):startIndex.slice(startOffset)+strs.slice(startIndex+1,endIndex).join("")+endIndex.slice(0,_ref),startIndex=startIndex.slice(0,startOffset).replace(/\s+/g," ").trimStart(),startOffset=endIndex.slice(_ref).replace(/\s+/g," ").trimEnd(),endIndex=startIndex.length<50?"":"…",_ref=startOffset.length<50?"":"…";return{pre:"".concat(endIndex).concat(startIndex.slice(-50)),match:strs,post:"".concat(startOffset.slice(0,50)).concat(_ref)}};_exports.search=search;_exports.searchMatcher=function(textWalker,opts){var defaultLocale=opts.defaultLocale,matchCase=opts.matchCase,matchDiacritics=opts.matchDiacritics,matchWholeWords=opts.matchWholeWords;return function*(doc,query){var _step2,iter=textWalker(doc,function*(strs,makeRange){var _step,_iterator=_createForOfIteratorHelper(search(strs,query,{locales:doc.body.lang||doc.documentElement.lang||defaultLocale||"en",granularity:matchWholeWords?"word":"grapheme",sensitivity:matchDiacritics&&matchCase?"variant":matchDiacritics&&!matchCase?"accent":!matchDiacritics&&matchCase?"case":"base"}));try{for(_iterator.s();!(_step=_iterator.n()).done;){var result=_step.value,_result$range=result.range,startIndex=_result$range.startIndex,startOffset=_result$range.startOffset,endIndex=_result$range.endIndex,endOffset=_result$range.endOffset;result.range=makeRange(startIndex,startOffset,endIndex,endOffset),yield result}}catch(err){_iterator.e(err)}finally{_iterator.f()}}),_iterator2=_createForOfIteratorHelper(iter);try{for(_iterator2.s();!(_step2=_iterator2.n()).done;)yield _step2.value}catch(err){_iterator2.e(err)}finally{_iterator2.f()}}}});