From 2dddf96065b5c3f8ab494c4e5cff46e57ececccd Mon Sep 17 00:00:00 2001 From: Sheldon Rong Date: Wed, 27 Sep 2017 23:45:40 +1000 Subject: [PATCH] Give better result for exact match when using weighted keys (#192) --- dist/fuse.js | 2 +- dist/fuse.js.map | 2 +- dist/fuse.min.js | 2 +- src/index.js | 2 +- test/index.js | 120 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 124 insertions(+), 4 deletions(-) diff --git a/dist/fuse.js b/dist/fuse.js index abcac3d..7b225b4 100644 --- a/dist/fuse.js +++ b/dist/fuse.js @@ -884,8 +884,8 @@ var Fuse = function () { var bestScore = 1; for (var j = 0; j < scoreLen; j += 1) { - var score = output[j].score; var weight = weights ? weights[output[j].key].weight : 1; + var score = weight === 1 ? output[j].score : output[j].score || 0.001; var nScore = score * weight; if (weight !== 1) { diff --git a/dist/fuse.js.map b/dist/fuse.js.map index 44cbacb..fe35e91 100644 --- a/dist/fuse.js.map +++ b/dist/fuse.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap f36445bce796bd7fc8a4","webpack:///./src/helpers/is_array.js","webpack:///./src/bitap/index.js","webpack:///./src/helpers/deep_value.js","webpack:///./src/bitap/bitap_matched_indices.js","webpack:///./src/bitap/bitap_pattern_alphabet.js","webpack:///./src/bitap/bitap_regex_search.js","webpack:///./src/bitap/bitap_score.js","webpack:///./src/bitap/bitap_search.js","webpack:///./src/index.js"],"names":["module","exports","Object","prototype","toString","call","obj","bitapRegexSearch","require","bitapSearch","patternAlphabet","Bitap","pattern","location","distance","threshold","maxPatternLength","isCaseSensitive","tokenSeparator","findAllMatches","minMatchCharLength","options","toLowerCase","length","text","isMatch","score","matchedIndices","isArray","deepValue","path","list","push","dotIndex","indexOf","firstSegment","remaining","slice","value","undefined","i","len","matchmask","start","end","match","mask","charAt","SPECIAL_CHARS_REGEX","regex","RegExp","replace","matches","matchesLen","errors","currentLocation","expectedLocation","accuracy","proximity","Math","abs","bitapScore","textLen","currentThreshold","bestLocation","patternLen","matchMask","min","lastIndexOf","lastBitArr","finalScore","binMax","binMin","binMid","floor","max","finish","bitArr","Array","j","charMatch","Fuse","caseSensitive","id","keys","shouldSort","getFn","sortFn","a","b","tokenize","matchAllTokens","includeMatches","includeScore","verbose","setCollection","_log","_prepareSearchers","tokenSearchers","fullSearcher","_search","weights","results","_computeScore","_sort","_format","tokens","split","resultMap","_analyze","key","record","index","item","keysLen","name","weight","Error","arrayIndex","exists","averageScore","numTextMatches","mainSearchResult","search","words","scores","tokenSearcher","hasMatchInText","word","tokenSearchResult","scoresLen","checkTextMatches","existingResult","output","scoreLen","totalScore","bestScore","nScore","sort","finalOutput","JSON","stringify","transformers","result","data","indices","hasOwnProperty","log","arguments"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;AChEAA,OAAOC,OAAP,GAAiB;AAAA,SAAOC,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BC,GAA/B,MAAwC,gBAA/C;AAAA,CAAjB,C;;;;;;;;;;;;;ACAA,IAAMC,mBAAmB,mBAAAC,CAAQ,CAAR,CAAzB;AACA,IAAMC,cAAc,mBAAAD,CAAQ,CAAR,CAApB;AACA,IAAME,kBAAkB,mBAAAF,CAAQ,CAAR,CAAxB;;IAEMG,K;AACJ,iBAAaC,OAAb,QAuBG;AAAA,6BArBDC,QAqBC;AAAA,QArBDA,QAqBC,iCArBU,CAqBV;AAAA,6BAfDC,QAeC;AAAA,QAfDA,QAeC,iCAfU,GAeV;AAAA,8BAZDC,SAYC;AAAA,QAZDA,SAYC,kCAZW,GAYX;AAAA,qCAVDC,gBAUC;AAAA,QAVDA,gBAUC,yCAVkB,EAUlB;AAAA,oCARDC,eAQC;AAAA,QARDA,eAQC,wCARiB,KAQjB;AAAA,mCANDC,cAMC;AAAA,QANDA,cAMC,uCANgB,KAMhB;AAAA,mCAHDC,cAGC;AAAA,QAHDA,cAGC,uCAHgB,KAGhB;AAAA,qCADDC,kBACC;AAAA,QADDA,kBACC,yCADoB,CACpB;;AAAA;;AACD,SAAKC,OAAL,GAAe;AACbR,wBADa;AAEbC,wBAFa;AAGbC,0BAHa;AAIbC,wCAJa;AAKbC,sCALa;AAMbC,oCANa;AAObC,oCAPa;AAQbC;AARa,KAAf;;AAWA,SAAKR,OAAL,GAAe,KAAKS,OAAL,CAAaJ,eAAb,GAA+BL,OAA/B,GAAyCA,QAAQU,WAAR,EAAxD;;AAEA,QAAI,KAAKV,OAAL,CAAaW,MAAb,IAAuBP,gBAA3B,EAA6C;AAC3C,WAAKN,eAAL,GAAuBA,gBAAgB,KAAKE,OAArB,CAAvB;AACD;AACF;;;;2BAEOY,I,EAAM;AACZ,UAAI,CAAC,KAAKH,OAAL,CAAaJ,eAAlB,EAAmC;AACjCO,eAAOA,KAAKF,WAAL,EAAP;AACD;;AAED;AACA,UAAI,KAAKV,OAAL,KAAiBY,IAArB,EAA2B;AACzB,eAAO;AACLC,mBAAS,IADJ;AAELC,iBAAO,CAFF;AAGLC,0BAAgB,CAAC,CAAC,CAAD,EAAIH,KAAKD,MAAL,GAAc,CAAlB,CAAD;AAHX,SAAP;AAKD;;AAED;AAdY,qBAeiC,KAAKF,OAftC;AAAA,UAeJL,gBAfI,YAeJA,gBAfI;AAAA,UAecE,cAfd,YAecA,cAfd;;AAgBZ,UAAI,KAAKN,OAAL,CAAaW,MAAb,GAAsBP,gBAA1B,EAA4C;AAC1C,eAAOT,iBAAiBiB,IAAjB,EAAuB,KAAKZ,OAA5B,EAAqCM,cAArC,CAAP;AACD;;AAED;AApBY,sBAqBkE,KAAKG,OArBvE;AAAA,UAqBJR,QArBI,aAqBJA,QArBI;AAAA,UAqBMC,QArBN,aAqBMA,QArBN;AAAA,UAqBgBC,SArBhB,aAqBgBA,SArBhB;AAAA,UAqB2BI,cArB3B,aAqB2BA,cArB3B;AAAA,UAqB2CC,kBArB3C,aAqB2CA,kBArB3C;;AAsBZ,aAAOX,YAAYe,IAAZ,EAAkB,KAAKZ,OAAvB,EAAgC,KAAKF,eAArC,EAAsD;AAC3DG,0BAD2D;AAE3DC,0BAF2D;AAG3DC,4BAH2D;AAI3DI,sCAJ2D;AAK3DC;AAL2D,OAAtD,CAAP;AAOD;;;;;;AAGH;AACA;AACA;;AAEApB,OAAOC,OAAP,GAAiBU,KAAjB,C;;;;;;;;;ACnFA,IAAMiB,UAAU,mBAAApB,CAAQ,CAAR,CAAhB;;AAEA,IAAMqB,YAAY,SAAZA,SAAY,CAACvB,GAAD,EAAMwB,IAAN,EAAYC,IAAZ,EAAqB;AACrC,MAAI,CAACD,IAAL,EAAW;AACT;AACAC,SAAKC,IAAL,CAAU1B,GAAV;AACD,GAHD,MAGO;AACL,QAAM2B,WAAWH,KAAKI,OAAL,CAAa,GAAb,CAAjB;AACA,QAAIC,eAAeL,IAAnB;AACA,QAAIM,YAAY,IAAhB;;AAEA,QAAIH,aAAa,CAAC,CAAlB,EAAqB;AACnBE,qBAAeL,KAAKO,KAAL,CAAW,CAAX,EAAcJ,QAAd,CAAf;AACAG,kBAAYN,KAAKO,KAAL,CAAWJ,WAAW,CAAtB,CAAZ;AACD;;AAED,QAAMK,QAAQhC,IAAI6B,YAAJ,CAAd;;AAEA,QAAIG,UAAU,IAAV,IAAkBA,UAAUC,SAAhC,EAA2C;AACzC,UAAI,CAACH,SAAD,KAAe,OAAOE,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAA7D,CAAJ,EAA4E;AAC1EP,aAAKC,IAAL,CAAUM,MAAMlC,QAAN,EAAV;AACD,OAFD,MAEO,IAAIwB,QAAQU,KAAR,CAAJ,EAAoB;AACzB;AACA,aAAK,IAAIE,IAAI,CAAR,EAAWC,MAAMH,MAAMf,MAA5B,EAAoCiB,IAAIC,GAAxC,EAA6CD,KAAK,CAAlD,EAAqD;AACnDX,oBAAUS,MAAME,CAAN,CAAV,EAAoBJ,SAApB,EAA+BL,IAA/B;AACD;AACF,OALM,MAKA,IAAIK,SAAJ,EAAe;AACpB;AACAP,kBAAUS,KAAV,EAAiBF,SAAjB,EAA4BL,IAA5B;AACD;AACF;AACF;;AAED,SAAOA,IAAP;AACD,CAhCD;;AAkCA/B,OAAOC,OAAP,GAAiB,UAACK,GAAD,EAAMwB,IAAN,EAAe;AAC9B,SAAOD,UAAUvB,GAAV,EAAewB,IAAf,EAAqB,EAArB,CAAP;AACD,CAFD,C;;;;;;;;;ACpCA9B,OAAOC,OAAP,GAAiB,YAA4C;AAAA,MAA3CyC,SAA2C,uEAA/B,EAA+B;AAAA,MAA3BtB,kBAA2B,uEAAN,CAAM;;AAC3D,MAAIO,iBAAiB,EAArB;AACA,MAAIgB,QAAQ,CAAC,CAAb;AACA,MAAIC,MAAM,CAAC,CAAX;AACA,MAAIJ,IAAI,CAAR;;AAEA,OAAK,IAAIC,MAAMC,UAAUnB,MAAzB,EAAiCiB,IAAIC,GAArC,EAA0CD,KAAK,CAA/C,EAAkD;AAChD,QAAIK,QAAQH,UAAUF,CAAV,CAAZ;AACA,QAAIK,SAASF,UAAU,CAAC,CAAxB,EAA2B;AACzBA,cAAQH,CAAR;AACD,KAFD,MAEO,IAAI,CAACK,KAAD,IAAUF,UAAU,CAAC,CAAzB,EAA4B;AACjCC,YAAMJ,IAAI,CAAV;AACA,UAAKI,MAAMD,KAAP,GAAgB,CAAhB,IAAqBvB,kBAAzB,EAA6C;AAC3CO,uBAAeK,IAAf,CAAoB,CAACW,KAAD,EAAQC,GAAR,CAApB;AACD;AACDD,cAAQ,CAAC,CAAT;AACD;AACF;;AAED;AACA,MAAID,UAAUF,IAAI,CAAd,KAAqBA,IAAIG,KAAL,IAAevB,kBAAvC,EAA2D;AACzDO,mBAAeK,IAAf,CAAoB,CAACW,KAAD,EAAQH,IAAI,CAAZ,CAApB;AACD;;AAED,SAAOb,cAAP;AACD,CAzBD,C;;;;;;;;;ACAA3B,OAAOC,OAAP,GAAiB,UAACW,OAAD,EAAa;AAC5B,MAAIkC,OAAO,EAAX;AACA,MAAIL,MAAM7B,QAAQW,MAAlB;;AAEA,OAAK,IAAIiB,IAAI,CAAb,EAAgBA,IAAIC,GAApB,EAAyBD,KAAK,CAA9B,EAAiC;AAC/BM,SAAKlC,QAAQmC,MAAR,CAAeP,CAAf,CAAL,IAA0B,CAA1B;AACD;;AAED,OAAK,IAAIA,KAAI,CAAb,EAAgBA,KAAIC,GAApB,EAAyBD,MAAK,CAA9B,EAAiC;AAC/BM,SAAKlC,QAAQmC,MAAR,CAAeP,EAAf,CAAL,KAA2B,KAAMC,MAAMD,EAAN,GAAU,CAA3C;AACD;;AAED,SAAOM,IAAP;AACD,CAbD,C;;;;;;;;;ACAA,IAAME,sBAAsB,qCAA5B;;AAEAhD,OAAOC,OAAP,GAAiB,UAACuB,IAAD,EAAOZ,OAAP,EAA2C;AAAA,MAA3BM,cAA2B,uEAAV,KAAU;;AAC1D,MAAI+B,QAAQ,IAAIC,MAAJ,CAAWtC,QAAQuC,OAAR,CAAgBH,mBAAhB,EAAqC,MAArC,EAA6CG,OAA7C,CAAqDjC,cAArD,EAAqE,GAArE,CAAX,CAAZ;AACA,MAAIkC,UAAU5B,KAAKqB,KAAL,CAAWI,KAAX,CAAd;AACA,MAAIxB,UAAU,CAAC,CAAC2B,OAAhB;AACA,MAAIzB,iBAAiB,EAArB;;AAEA,MAAIF,OAAJ,EAAa;AACX,SAAK,IAAIe,IAAI,CAAR,EAAWa,aAAaD,QAAQ7B,MAArC,EAA6CiB,IAAIa,UAAjD,EAA6Db,KAAK,CAAlE,EAAqE;AACnE,UAAIK,QAAQO,QAAQZ,CAAR,CAAZ;AACAb,qBAAeK,IAAf,CAAoB,CAACR,KAAKU,OAAL,CAAaW,KAAb,CAAD,EAAsBA,MAAMtB,MAAN,GAAe,CAArC,CAApB;AACD;AACF;;AAED,SAAO;AACL;AACAG,WAAOD,UAAU,GAAV,GAAgB,CAFlB;AAGLA,oBAHK;AAILE;AAJK,GAAP;AAMD,CAnBD,C;;;;;;;;;ACFA3B,OAAOC,OAAP,GAAiB,UAACW,OAAD,QAAwF;AAAA,yBAA5E0C,MAA4E;AAAA,MAA5EA,MAA4E,+BAAnE,CAAmE;AAAA,kCAAhEC,eAAgE;AAAA,MAAhEA,eAAgE,wCAA9C,CAA8C;AAAA,mCAA3CC,gBAA2C;AAAA,MAA3CA,gBAA2C,yCAAxB,CAAwB;AAAA,2BAArB1C,QAAqB;AAAA,MAArBA,QAAqB,iCAAV,GAAU;;AACvG,MAAM2C,WAAWH,SAAS1C,QAAQW,MAAlC;AACA,MAAMmC,YAAYC,KAAKC,GAAL,CAASJ,mBAAmBD,eAA5B,CAAlB;;AAEA,MAAI,CAACzC,QAAL,EAAe;AACb;AACA,WAAO4C,YAAY,GAAZ,GAAkBD,QAAzB;AACD;;AAED,SAAOA,WAAYC,YAAY5C,QAA/B;AACD,CAVD,C;;;;;;;;;ACAA,IAAM+C,aAAa,mBAAArD,CAAQ,CAAR,CAAnB;AACA,IAAMmB,iBAAiB,mBAAAnB,CAAQ,CAAR,CAAvB;;AAEAR,OAAOC,OAAP,GAAiB,UAACuB,IAAD,EAAOZ,OAAP,EAAgBF,eAAhB,QAAuI;AAAA,2BAApGG,QAAoG;AAAA,MAApGA,QAAoG,iCAAzF,CAAyF;AAAA,2BAAtFC,QAAsF;AAAA,MAAtFA,QAAsF,iCAA3E,GAA2E;AAAA,4BAAtEC,SAAsE;AAAA,MAAtEA,SAAsE,kCAA1D,GAA0D;AAAA,iCAArDI,cAAqD;AAAA,MAArDA,cAAqD,uCAApC,KAAoC;AAAA,mCAA7BC,kBAA6B;AAAA,MAA7BA,kBAA6B,yCAAR,CAAQ;;AACtJ,MAAMoC,mBAAmB3C,QAAzB;AACA;AACA,MAAMiD,UAAUtC,KAAKD,MAArB;AACA;AACA,MAAIwC,mBAAmBhD,SAAvB;AACA;AACA,MAAIiD,eAAexC,KAAKU,OAAL,CAAatB,OAAb,EAAsB4C,gBAAtB,CAAnB;;AAEA,MAAMS,aAAarD,QAAQW,MAA3B;;AAEA;AACA,MAAM2C,YAAY,EAAlB;AACA,OAAK,IAAI1B,IAAI,CAAb,EAAgBA,IAAIsB,OAApB,EAA6BtB,KAAK,CAAlC,EAAqC;AACnC0B,cAAU1B,CAAV,IAAe,CAAf;AACD;;AAED,MAAIwB,iBAAiB,CAAC,CAAtB,EAAyB;AACvB,QAAItC,QAAQmC,WAAWjD,OAAX,EAAoB;AAC9B0C,cAAQ,CADsB;AAE9BC,uBAAiBS,YAFa;AAG9BR,wCAH8B;AAI9B1C;AAJ8B,KAApB,CAAZ;AAMAiD,uBAAmBJ,KAAKQ,GAAL,CAASzC,KAAT,EAAgBqC,gBAAhB,CAAnB;;AAEA;AACAC,mBAAexC,KAAK4C,WAAL,CAAiBxD,OAAjB,EAA0B4C,mBAAmBS,UAA7C,CAAf;;AAEA,QAAID,iBAAiB,CAAC,CAAtB,EAAyB;AACvB,UAAItC,SAAQmC,WAAWjD,OAAX,EAAoB;AAC9B0C,gBAAQ,CADsB;AAE9BC,yBAAiBS,YAFa;AAG9BR,0CAH8B;AAI9B1C;AAJ8B,OAApB,CAAZ;AAMAiD,yBAAmBJ,KAAKQ,GAAL,CAASzC,MAAT,EAAgBqC,gBAAhB,CAAnB;AACD;AACF;;AAED;AACAC,iBAAe,CAAC,CAAhB;;AAEA,MAAIK,aAAa,EAAjB;AACA,MAAIC,aAAa,CAAjB;AACA,MAAIC,SAASN,aAAaH,OAA1B;;AAEA,MAAMhB,OAAO,KAAMmB,aAAa,CAAhC;;AAEA,OAAK,IAAIzB,KAAI,CAAb,EAAgBA,KAAIyB,UAApB,EAAgCzB,MAAK,CAArC,EAAwC;AACtC;AACA;AACA;AACA,QAAIgC,SAAS,CAAb;AACA,QAAIC,SAASF,MAAb;;AAEA,WAAOC,SAASC,MAAhB,EAAwB;AACtB,UAAM/C,UAAQmC,WAAWjD,OAAX,EAAoB;AAChC0C,gBAAQd,EADwB;AAEhCe,yBAAiBC,mBAAmBiB,MAFJ;AAGhCjB,0CAHgC;AAIhC1C;AAJgC,OAApB,CAAd;;AAOA,UAAIY,WAASqC,gBAAb,EAA+B;AAC7BS,iBAASC,MAAT;AACD,OAFD,MAEO;AACLF,iBAASE,MAAT;AACD;;AAEDA,eAASd,KAAKe,KAAL,CAAW,CAACH,SAASC,MAAV,IAAoB,CAApB,GAAwBA,MAAnC,CAAT;AACD;;AAED;AACAD,aAASE,MAAT;;AAEA,QAAI9B,QAAQgB,KAAKgB,GAAL,CAAS,CAAT,EAAYnB,mBAAmBiB,MAAnB,GAA4B,CAAxC,CAAZ;AACA,QAAIG,SAASzD,iBAAiB2C,OAAjB,GAA2BH,KAAKQ,GAAL,CAASX,mBAAmBiB,MAA5B,EAAoCX,OAApC,IAA+CG,UAAvF;;AAEA;AACA,QAAIY,SAASC,MAAMF,SAAS,CAAf,CAAb;;AAEAC,WAAOD,SAAS,CAAhB,IAAqB,CAAC,KAAKpC,EAAN,IAAW,CAAhC;;AAEA,SAAK,IAAIuC,IAAIH,MAAb,EAAqBG,KAAKpC,KAA1B,EAAiCoC,KAAK,CAAtC,EAAyC;AACvC,UAAIxB,kBAAkBwB,IAAI,CAA1B;AACA,UAAIC,YAAYtE,gBAAgBc,KAAKuB,MAAL,CAAYQ,eAAZ,CAAhB,CAAhB;;AAEA,UAAIyB,SAAJ,EAAe;AACbd,kBAAUX,eAAV,IAA6B,CAA7B;AACD;;AAED;AACAsB,aAAOE,CAAP,IAAY,CAAEF,OAAOE,IAAI,CAAX,KAAiB,CAAlB,GAAuB,CAAxB,IAA6BC,SAAzC;;AAEA;AACA,UAAIxC,OAAM,CAAV,EAAa;AACXqC,eAAOE,CAAP,KAAe,CAACV,WAAWU,IAAI,CAAf,IAAoBV,WAAWU,CAAX,CAArB,KAAuC,CAAxC,GAA6C,CAA9C,GAAmDV,WAAWU,IAAI,CAAf,CAAhE;AACD;;AAED,UAAIF,OAAOE,CAAP,IAAYjC,IAAhB,EAAsB;AACpBwB,qBAAaT,WAAWjD,OAAX,EAAoB;AAC/B0C,kBAAQd,EADuB;AAE/Be,0CAF+B;AAG/BC,4CAH+B;AAI/B1C;AAJ+B,SAApB,CAAb;;AAOA;AACA;AACA,YAAIwD,cAAcP,gBAAlB,EAAoC;AAClC;AACAA,6BAAmBO,UAAnB;AACAN,yBAAeT,eAAf;;AAEA;AACA,cAAIS,gBAAgBR,gBAApB,EAAsC;AACpC;AACD;;AAED;AACAb,kBAAQgB,KAAKgB,GAAL,CAAS,CAAT,EAAY,IAAInB,gBAAJ,GAAuBQ,YAAnC,CAAR;AACD;AACF;AACF;;AAED;AACA,QAAMtC,UAAQmC,WAAWjD,OAAX,EAAoB;AAChC0C,cAAQd,KAAI,CADoB;AAEhCe,uBAAiBC,gBAFe;AAGhCA,wCAHgC;AAIhC1C;AAJgC,KAApB,CAAd;;AAOA,QAAIY,UAAQqC,gBAAZ,EAA8B;AAC5B;AACD;;AAEDM,iBAAaQ,MAAb;AACD;;AAED;AACA,SAAO;AACLpD,aAASuC,gBAAgB,CADpB;AAELtC,WAAO4C,eAAe,CAAf,GAAmB,KAAnB,GAA2BA,UAF7B;AAGL3C,oBAAgBA,eAAeuC,SAAf,EAA0B9C,kBAA1B;AAHX,GAAP;AAKD,CAnJD,C;;;;;;;;;;;;;ACHA,IAAMT,QAAQ,mBAAAH,CAAQ,CAAR,CAAd;AACA,IAAMqB,YAAY,mBAAArB,CAAQ,CAAR,CAAlB;AACA,IAAMoB,UAAU,mBAAApB,CAAQ,CAAR,CAAhB;;IAEMyE,I;AACJ,gBAAalD,IAAb,QAgDG;AAAA,6BA9CDlB,QA8CC;AAAA,QA9CDA,QA8CC,iCA9CU,CA8CV;AAAA,6BAxCDC,QAwCC;AAAA,QAxCDA,QAwCC,iCAxCU,GAwCV;AAAA,8BArCDC,SAqCC;AAAA,QArCDA,SAqCC,kCArCW,GAqCX;AAAA,qCAnCDC,gBAmCC;AAAA,QAnCDA,gBAmCC,yCAnCkB,EAmClB;AAAA,kCAjCDkE,aAiCC;AAAA,QAjCDA,aAiCC,sCAjCe,KAiCf;AAAA,mCA/BDhE,cA+BC;AAAA,QA/BDA,cA+BC,uCA/BgB,KA+BhB;AAAA,mCA5BDC,cA4BC;AAAA,QA5BDA,cA4BC,uCA5BgB,KA4BhB;AAAA,qCA1BDC,kBA0BC;AAAA,QA1BDA,kBA0BC,yCA1BoB,CA0BpB;AAAA,uBAvBD+D,EAuBC;AAAA,QAvBDA,EAuBC,2BAvBI,IAuBJ;AAAA,yBArBDC,IAqBC;AAAA,QArBDA,IAqBC,6BArBM,EAqBN;AAAA,+BAnBDC,UAmBC;AAAA,QAnBDA,UAmBC,mCAnBY,IAmBZ;AAAA,0BAhBDC,KAgBC;AAAA,QAhBDA,KAgBC,8BAhBOzD,SAgBP;AAAA,2BAdD0D,MAcC;AAAA,QAdDA,MAcC,+BAdQ,UAACC,CAAD,EAAIC,CAAJ;AAAA,aAAWD,EAAE9D,KAAF,GAAU+D,EAAE/D,KAAvB;AAAA,KAcR;AAAA,6BAVDgE,QAUC;AAAA,QAVDA,QAUC,iCAVU,KAUV;AAAA,mCAPDC,cAOC;AAAA,QAPDA,cAOC,uCAPgB,KAOhB;AAAA,mCALDC,cAKC;AAAA,QALDA,cAKC,uCALgB,KAKhB;AAAA,iCAJDC,YAIC;AAAA,QAJDA,YAIC,qCAJc,KAId;AAAA,4BADDC,OACC;AAAA,QADDA,OACC,gCADS,KACT;;AAAA;;AACD,SAAKzE,OAAL,GAAe;AACbR,wBADa;AAEbC,wBAFa;AAGbC,0BAHa;AAIbC,wCAJa;AAKbC,uBAAiBiE,aALJ;AAMbhE,oCANa;AAObC,oCAPa;AAQbC,4CARa;AASb+D,YATa;AAUbC,gBAVa;AAWbQ,oCAXa;AAYbC,gCAZa;AAabR,4BAba;AAcbC,kBAda;AAebC,oBAfa;AAgBbO,sBAhBa;AAiBbJ,wBAjBa;AAkBbC;AAlBa,KAAf;;AAqBA,SAAKI,aAAL,CAAmBhE,IAAnB;AACD;;;;kCAEcA,I,EAAM;AACnB,WAAKA,IAAL,GAAYA,IAAZ;AACA,aAAOA,IAAP;AACD;;;2BAEOnB,O,EAAS;AACf,WAAKoF,IAAL,kCAAyCpF,OAAzC;;AADe,+BAMX,KAAKqF,iBAAL,CAAuBrF,OAAvB,CANW;AAAA,UAIbsF,cAJa,sBAIbA,cAJa;AAAA,UAKbC,YALa,sBAKbA,YALa;;AAAA,qBAQY,KAAKC,OAAL,CAAaF,cAAb,EAA6BC,YAA7B,CARZ;AAAA,UAQTE,OARS,YAQTA,OARS;AAAA,UAQAC,OARA,YAQAA,OARA;;AAUf,WAAKC,aAAL,CAAmBF,OAAnB,EAA4BC,OAA5B;;AAEA,UAAI,KAAKjF,OAAL,CAAagE,UAAjB,EAA6B;AAC3B,aAAKmB,KAAL,CAAWF,OAAX;AACD;;AAED,aAAO,KAAKG,OAAL,CAAaH,OAAb,CAAP;AACD;;;wCAEgC;AAAA,UAAd1F,OAAc,uEAAJ,EAAI;;AAC/B,UAAMsF,iBAAiB,EAAvB;;AAEA,UAAI,KAAK7E,OAAL,CAAaqE,QAAjB,EAA2B;AACzB;AACA,YAAMgB,SAAS9F,QAAQ+F,KAAR,CAAc,KAAKtF,OAAL,CAAaH,cAA3B,CAAf;AACA,aAAK,IAAIsB,IAAI,CAAR,EAAWC,MAAMiE,OAAOnF,MAA7B,EAAqCiB,IAAIC,GAAzC,EAA8CD,KAAK,CAAnD,EAAsD;AACpD0D,yBAAelE,IAAf,CAAoB,IAAIrB,KAAJ,CAAU+F,OAAOlE,CAAP,CAAV,EAAqB,KAAKnB,OAA1B,CAApB;AACD;AACF;;AAED,UAAI8E,eAAe,IAAIxF,KAAJ,CAAUC,OAAV,EAAmB,KAAKS,OAAxB,CAAnB;;AAEA,aAAO,EAAE6E,8BAAF,EAAkBC,0BAAlB,EAAP;AACD;;;8BAE2C;AAAA,UAAnCD,cAAmC,uEAAlB,EAAkB;AAAA,UAAdC,YAAc;;AAC1C,UAAMpE,OAAO,KAAKA,IAAlB;AACA,UAAM6E,YAAY,EAAlB;AACA,UAAMN,UAAU,EAAhB;;AAEA;AACA;AACA,UAAI,OAAOvE,KAAK,CAAL,CAAP,KAAmB,QAAvB,EAAiC;AAC/B;AACA,aAAK,IAAIS,IAAI,CAAR,EAAWC,MAAMV,KAAKR,MAA3B,EAAmCiB,IAAIC,GAAvC,EAA4CD,KAAK,CAAjD,EAAoD;AAClD,eAAKqE,QAAL,CAAc;AACZC,iBAAK,EADO;AAEZxE,mBAAOP,KAAKS,CAAL,CAFK;AAGZuE,oBAAQvE,CAHI;AAIZwE,mBAAOxE;AAJK,WAAd,EAKG;AACDoE,gCADC;AAEDN,4BAFC;AAGDJ,0CAHC;AAIDC;AAJC,WALH;AAWD;;AAED,eAAO,EAAEE,SAAS,IAAX,EAAiBC,gBAAjB,EAAP;AACD;;AAED;AACA;AACA,UAAMD,UAAU,EAAhB;AACA,WAAK,IAAI7D,KAAI,CAAR,EAAWC,OAAMV,KAAKR,MAA3B,EAAmCiB,KAAIC,IAAvC,EAA4CD,MAAK,CAAjD,EAAoD;AAClD,YAAIyE,OAAOlF,KAAKS,EAAL,CAAX;AACA;AACA,aAAK,IAAIuC,IAAI,CAAR,EAAWmC,UAAU,KAAK7F,OAAL,CAAa+D,IAAb,CAAkB7D,MAA5C,EAAoDwD,IAAImC,OAAxD,EAAiEnC,KAAK,CAAtE,EAAyE;AACvE,cAAI+B,MAAM,KAAKzF,OAAL,CAAa+D,IAAb,CAAkBL,CAAlB,CAAV;AACA,cAAI,OAAO+B,GAAP,KAAe,QAAnB,EAA6B;AAC3BT,oBAAQS,IAAIK,IAAZ,IAAoB;AAClBC,sBAAS,IAAIN,IAAIM,MAAT,IAAoB;AADV,aAApB;AAGA,gBAAIN,IAAIM,MAAJ,IAAc,CAAd,IAAmBN,IAAIM,MAAJ,GAAa,CAApC,EAAuC;AACrC,oBAAM,IAAIC,KAAJ,CAAU,mCAAV,CAAN;AACD;AACDP,kBAAMA,IAAIK,IAAV;AACD,WARD,MAQO;AACLd,oBAAQS,GAAR,IAAe;AACbM,sBAAQ;AADK,aAAf;AAGD;;AAED,eAAKP,QAAL,CAAc;AACZC,oBADY;AAEZxE,mBAAO,KAAKjB,OAAL,CAAaiE,KAAb,CAAmB2B,IAAnB,EAAyBH,GAAzB,CAFK;AAGZC,oBAAQE,IAHI;AAIZD,mBAAOxE;AAJK,WAAd,EAKG;AACDoE,gCADC;AAEDN,4BAFC;AAGDJ,0CAHC;AAIDC;AAJC,WALH;AAWD;AACF;;AAED,aAAO,EAAEE,gBAAF,EAAWC,gBAAX,EAAP;AACD;;;2CAEmI;AAAA,UAAxHQ,GAAwH,SAAxHA,GAAwH;AAAA,mCAAnHQ,UAAmH;AAAA,UAAnHA,UAAmH,oCAAtG,CAAC,CAAqG;AAAA,UAAlGhF,KAAkG,SAAlGA,KAAkG;AAAA,UAA3FyE,MAA2F,SAA3FA,MAA2F;AAAA,UAAnFC,KAAmF,SAAnFA,KAAmF;AAAA,uCAAxEd,cAAwE;AAAA,UAAxEA,cAAwE,wCAAvD,EAAuD;AAAA,qCAAnDC,YAAmD;AAAA,UAAnDA,YAAmD,sCAApC,EAAoC;AAAA,kCAAhCS,SAAgC;AAAA,UAAhCA,SAAgC,mCAApB,EAAoB;AAAA,gCAAhBN,OAAgB;AAAA,UAAhBA,OAAgB,iCAAN,EAAM;;AAClI;AACA,UAAIhE,UAAUC,SAAV,IAAuBD,UAAU,IAArC,EAA2C;AACzC;AACD;;AAED,UAAIiF,SAAS,KAAb;AACA,UAAIC,eAAe,CAAC,CAApB;AACA,UAAIC,iBAAiB,CAArB;;AAEA,UAAI,OAAOnF,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAK0D,IAAL,cAAoBc,QAAQ,EAAR,GAAa,GAAb,GAAmBA,GAAvC;;AAEA,YAAIY,mBAAmBvB,aAAawB,MAAb,CAAoBrF,KAApB,CAAvB;AACA,aAAK0D,IAAL,kBAAyB1D,KAAzB,kBAA2CoF,iBAAiBhG,KAA5D;;AAEA,YAAI,KAAKL,OAAL,CAAaqE,QAAjB,EAA2B;AACzB,cAAIkC,QAAQtF,MAAMqE,KAAN,CAAY,KAAKtF,OAAL,CAAaH,cAAzB,CAAZ;AACA,cAAI2G,SAAS,EAAb;;AAEA,eAAK,IAAIrF,IAAI,CAAb,EAAgBA,IAAI0D,eAAe3E,MAAnC,EAA2CiB,KAAK,CAAhD,EAAmD;AACjD,gBAAIsF,gBAAgB5B,eAAe1D,CAAf,CAApB;;AAEA,iBAAKwD,IAAL,kBAAyB8B,cAAclH,OAAvC;;AAEA;AACA,gBAAImH,iBAAiB,KAArB;;AAEA,iBAAK,IAAIhD,IAAI,CAAb,EAAgBA,IAAI6C,MAAMrG,MAA1B,EAAkCwD,KAAK,CAAvC,EAA0C;AACxC,kBAAIiD,OAAOJ,MAAM7C,CAAN,CAAX;AACA,kBAAIkD,oBAAoBH,cAAcH,MAAd,CAAqBK,IAArB,CAAxB;AACA,kBAAI1H,MAAM,EAAV;AACA,kBAAI2H,kBAAkBxG,OAAtB,EAA+B;AAC7BnB,oBAAI0H,IAAJ,IAAYC,kBAAkBvG,KAA9B;AACA6F,yBAAS,IAAT;AACAQ,iCAAiB,IAAjB;AACAF,uBAAO7F,IAAP,CAAYiG,kBAAkBvG,KAA9B;AACD,eALD,MAKO;AACLpB,oBAAI0H,IAAJ,IAAY,CAAZ;AACA,oBAAI,CAAC,KAAK3G,OAAL,CAAasE,cAAlB,EAAkC;AAChCkC,yBAAO7F,IAAP,CAAY,CAAZ;AACD;AACF;AACD,mBAAKgE,IAAL,cAAqBgC,IAArB,kBAAsC1H,IAAI0H,IAAJ,CAAtC;AACA;AACD;;AAED,gBAAID,cAAJ,EAAoB;AAClBN,gCAAkB,CAAlB;AACD;AACF;;AAEDD,yBAAeK,OAAO,CAAP,CAAf;AACA,cAAIK,YAAYL,OAAOtG,MAAvB;AACA,eAAK,IAAIiB,MAAI,CAAb,EAAgBA,MAAI0F,SAApB,EAA+B1F,OAAK,CAApC,EAAuC;AACrCgF,4BAAgBK,OAAOrF,GAAP,CAAhB;AACD;AACDgF,yBAAeA,eAAeU,SAA9B;;AAEA,eAAKlC,IAAL,CAAU,sBAAV,EAAkCwB,YAAlC;AACD;;AAED,YAAIlD,aAAaoD,iBAAiBhG,KAAlC;AACA,YAAI8F,eAAe,CAAC,CAApB,EAAuB;AACrBlD,uBAAa,CAACA,aAAakD,YAAd,IAA8B,CAA3C;AACD;;AAED,aAAKxB,IAAL,CAAU,gBAAV,EAA4B1B,UAA5B;;AAEA,YAAI6D,mBAAoB,KAAK9G,OAAL,CAAaqE,QAAb,IAAyB,KAAKrE,OAAL,CAAasE,cAAvC,GAAyD8B,kBAAkBvB,eAAe3E,MAA1F,GAAmG,IAA1H;;AAEA,aAAKyE,IAAL,uBAA8BmC,gBAA9B;;AAEA;AACA,YAAI,CAACZ,UAAUG,iBAAiBjG,OAA5B,KAAwC0G,gBAA5C,EAA8D;AAC5D;AACA,cAAIC,iBAAiBxB,UAAUI,KAAV,CAArB;AACA,cAAIoB,cAAJ,EAAoB;AAClB;AACA;AACAA,2BAAeC,MAAf,CAAsBrG,IAAtB,CAA2B;AACzB8E,sBADyB;AAEzBQ,oCAFyB;AAGzBhF,0BAHyB;AAIzBZ,qBAAO4C,UAJkB;AAKzB3C,8BAAgB+F,iBAAiB/F;AALR,aAA3B;AAOD,WAVD,MAUO;AACL;AACAiF,sBAAUI,KAAV,IAAmB;AACjBC,oBAAMF,MADW;AAEjBsB,sBAAQ,CAAC;AACPvB,wBADO;AAEPQ,sCAFO;AAGPhF,4BAHO;AAIPZ,uBAAO4C,UAJA;AAKP3C,gCAAgB+F,iBAAiB/F;AAL1B,eAAD;AAFS,aAAnB;;AAWA2E,oBAAQtE,IAAR,CAAa4E,UAAUI,KAAV,CAAb;AACD;AACF;AACF,OA7FD,MA6FO,IAAIpF,QAAQU,KAAR,CAAJ,EAAoB;AACzB,aAAK,IAAIE,MAAI,CAAR,EAAWC,MAAMH,MAAMf,MAA5B,EAAoCiB,MAAIC,GAAxC,EAA6CD,OAAK,CAAlD,EAAqD;AACnD,eAAKqE,QAAL,CAAc;AACZC,oBADY;AAEZQ,wBAAY9E,GAFA;AAGZF,mBAAOA,MAAME,GAAN,CAHK;AAIZuE,0BAJY;AAKZC;AALY,WAAd,EAMG;AACDJ,gCADC;AAEDN,4BAFC;AAGDJ,0CAHC;AAIDC;AAJC,WANH;AAYD;AACF;AACF;;;kCAEcE,O,EAASC,O,EAAS;AAC/B,WAAKN,IAAL,CAAU,wBAAV;;AAEA,WAAK,IAAIxD,IAAI,CAAR,EAAWC,MAAM6D,QAAQ/E,MAA9B,EAAsCiB,IAAIC,GAA1C,EAA+CD,KAAK,CAApD,EAAuD;AACrD,YAAM6F,SAAS/B,QAAQ9D,CAAR,EAAW6F,MAA1B;AACA,YAAMC,WAAWD,OAAO9G,MAAxB;;AAEA,YAAIgH,aAAa,CAAjB;AACA,YAAIC,YAAY,CAAhB;;AAEA,aAAK,IAAIzD,IAAI,CAAb,EAAgBA,IAAIuD,QAApB,EAA8BvD,KAAK,CAAnC,EAAsC;AACpC,cAAIrD,QAAQ2G,OAAOtD,CAAP,EAAUrD,KAAtB;AACA,cAAI0F,SAASf,UAAUA,QAAQgC,OAAOtD,CAAP,EAAU+B,GAAlB,EAAuBM,MAAjC,GAA0C,CAAvD;AACA,cAAIqB,SAAS/G,QAAQ0F,MAArB;;AAEA,cAAIA,WAAW,CAAf,EAAkB;AAChBoB,wBAAY7E,KAAKQ,GAAL,CAASqE,SAAT,EAAoBC,MAApB,CAAZ;AACD,WAFD,MAEO;AACLJ,mBAAOtD,CAAP,EAAU0D,MAAV,GAAmBA,MAAnB;AACAF,0BAAcE,MAAd;AACD;AACF;;AAEDnC,gBAAQ9D,CAAR,EAAWd,KAAX,GAAmB8G,cAAc,CAAd,GAAkBD,aAAaD,QAA/B,GAA0CE,SAA7D;;AAEA,aAAKxC,IAAL,CAAUM,QAAQ9D,CAAR,CAAV;AACD;AACF;;;0BAEM8D,O,EAAS;AACd,WAAKN,IAAL,CAAU,iBAAV;AACAM,cAAQoC,IAAR,CAAa,KAAKrH,OAAL,CAAakE,MAA1B;AACD;;;4BAEQe,O,EAAS;AAChB,UAAMqC,cAAc,EAApB;;AAEA,WAAK3C,IAAL,CAAU,iBAAV,EAA6B4C,KAAKC,SAAL,CAAevC,OAAf,CAA7B;;AAEA,UAAIwC,eAAe,EAAnB;;AAEA,UAAI,KAAKzH,OAAL,CAAauE,cAAjB,EAAiC;AAC/BkD,qBAAa9G,IAAb,CAAkB,UAAC+G,MAAD,EAASC,IAAT,EAAkB;AAClC,cAAMX,SAASU,OAAOV,MAAtB;AACAW,eAAK5F,OAAL,GAAe,EAAf;;AAEA,eAAK,IAAIZ,IAAI,CAAR,EAAWC,MAAM4F,OAAO9G,MAA7B,EAAqCiB,IAAIC,GAAzC,EAA8CD,KAAK,CAAnD,EAAsD;AACpD,gBAAIyE,OAAOoB,OAAO7F,CAAP,CAAX;;AAEA,gBAAIyE,KAAKtF,cAAL,CAAoBJ,MAApB,KAA+B,CAAnC,EAAsC;AACpC;AACD;;AAED,gBAAIjB,MAAM;AACR2I,uBAAShC,KAAKtF,cADN;AAERW,qBAAO2E,KAAK3E;AAFJ,aAAV;AAIA,gBAAI2E,KAAKH,GAAT,EAAc;AACZxG,kBAAIwG,GAAJ,GAAUG,KAAKH,GAAf;AACD;AACD,gBAAIG,KAAKiC,cAAL,CAAoB,YAApB,KAAqCjC,KAAKK,UAAL,GAAkB,CAAC,CAA5D,EAA+D;AAC7DhH,kBAAIgH,UAAJ,GAAiBL,KAAKK,UAAtB;AACD;AACD0B,iBAAK5F,OAAL,CAAapB,IAAb,CAAkB1B,GAAlB;AACD;AACF,SAvBD;AAwBD;;AAED,UAAI,KAAKe,OAAL,CAAawE,YAAjB,EAA+B;AAC7BiD,qBAAa9G,IAAb,CAAkB,UAAC+G,MAAD,EAASC,IAAT,EAAkB;AAClCA,eAAKtH,KAAL,GAAaqH,OAAOrH,KAApB;AACD,SAFD;AAGD;;AAED,WAAK,IAAIc,IAAI,CAAR,EAAWC,MAAM6D,QAAQ/E,MAA9B,EAAsCiB,IAAIC,GAA1C,EAA+CD,KAAK,CAApD,EAAuD;AACrD,YAAMuG,SAASzC,QAAQ9D,CAAR,CAAf;;AAEA,YAAI,KAAKnB,OAAL,CAAa8D,EAAjB,EAAqB;AACnB4D,iBAAO9B,IAAP,GAAc,KAAK5F,OAAL,CAAaiE,KAAb,CAAmByD,OAAO9B,IAA1B,EAAgC,KAAK5F,OAAL,CAAa8D,EAA7C,EAAiD,CAAjD,CAAd;AACD;;AAED,YAAI,CAAC2D,aAAavH,MAAlB,EAA0B;AACxBoH,sBAAY3G,IAAZ,CAAiB+G,OAAO9B,IAAxB;AACA;AACD;;AAED,YAAM+B,OAAO;AACX/B,gBAAM8B,OAAO9B;AADF,SAAb;;AAIA,aAAK,IAAIlC,IAAI,CAAR,EAAWtC,QAAMqG,aAAavH,MAAnC,EAA2CwD,IAAItC,KAA/C,EAAoDsC,KAAK,CAAzD,EAA4D;AAC1D+D,uBAAa/D,CAAb,EAAgBgE,MAAhB,EAAwBC,IAAxB;AACD;;AAEDL,oBAAY3G,IAAZ,CAAiBgH,IAAjB;AACD;;AAED,aAAOL,WAAP;AACD;;;2BAEO;AACN,UAAI,KAAKtH,OAAL,CAAayE,OAAjB,EAA0B;AAAA;;AACxB,6BAAQqD,GAAR,iBAAeC,SAAf;AACD;AACF;;;;;;AAGHpJ,OAAOC,OAAP,GAAiBgF,IAAjB,C","file":"fuse.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fuse\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fuse\"] = factory();\n\telse\n\t\troot[\"Fuse\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f36445bce796bd7fc8a4","module.exports = obj => Object.prototype.toString.call(obj) === '[object Array]'\n\n\n// WEBPACK FOOTER //\n// ./src/helpers/is_array.js","const bitapRegexSearch = require('./bitap_regex_search')\nconst bitapSearch = require('./bitap_search')\nconst patternAlphabet = require('./bitap_pattern_alphabet')\n\nclass Bitap {\n constructor (pattern, { \n // Approximately where in the text is the pattern expected to be found?\n location = 0, \n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance = 100, \n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold = 0.6, \n // Machine word size\n maxPatternLength = 32,\n // Indicates whether comparisons should be case sensitive.\n isCaseSensitive = false,\n // Regex used to separate words when searching. Only applicable when `tokenize` is `true`.\n tokenSeparator = / +/g,\n // When true, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n findAllMatches = false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength = 1\n }) {\n this.options = {\n location,\n distance,\n threshold,\n maxPatternLength,\n isCaseSensitive,\n tokenSeparator,\n findAllMatches,\n minMatchCharLength\n }\n\n this.pattern = this.options.isCaseSensitive ? pattern : pattern.toLowerCase()\n\n if (this.pattern.length <= maxPatternLength) {\n this.patternAlphabet = patternAlphabet(this.pattern)\n }\n }\n\n search (text) {\n if (!this.options.isCaseSensitive) {\n text = text.toLowerCase()\n }\n\n // Exact match\n if (this.pattern === text) {\n return {\n isMatch: true,\n score: 0,\n matchedIndices: [[0, text.length - 1]]\n }\n }\n\n // When pattern length is greater than the machine word length, just do a a regex comparison\n const { maxPatternLength, tokenSeparator } = this.options\n if (this.pattern.length > maxPatternLength) {\n return bitapRegexSearch(text, this.pattern, tokenSeparator)\n }\n\n // Otherwise, use Bitap algorithm\n const { location, distance, threshold, findAllMatches, minMatchCharLength } = this.options\n return bitapSearch(text, this.pattern, this.patternAlphabet, {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength\n })\n }\n}\n\n// let x = new Bitap(\"od mn war\", {})\n// let result = x.search(\"Old Man's War\")\n// console.log(result)\n\nmodule.exports = Bitap\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/index.js","const isArray = require('./is_array')\n\nconst deepValue = (obj, path, list) => {\n if (!path) {\n // If there's no path left, we've gotten to the object we care about.\n list.push(obj)\n } else {\n const dotIndex = path.indexOf('.')\n let firstSegment = path\n let remaining = null\n\n if (dotIndex !== -1) {\n firstSegment = path.slice(0, dotIndex)\n remaining = path.slice(dotIndex + 1)\n }\n\n const value = obj[firstSegment]\n \n if (value !== null && value !== undefined) {\n if (!remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value.toString())\n } else if (isArray(value)) {\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepValue(value[i], remaining, list)\n }\n } else if (remaining) {\n // An object. Recurse further.\n deepValue(value, remaining, list)\n }\n }\n }\n\n return list\n}\n\nmodule.exports = (obj, path) => {\n return deepValue(obj, path, [])\n}\n\n\n// WEBPACK FOOTER //\n// ./src/helpers/deep_value.js","module.exports = (matchmask = [], minMatchCharLength = 1) => {\n let matchedIndices = []\n let start = -1\n let end = -1\n let i = 0\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i]\n if (match && start === -1) {\n start = i\n } else if (!match && start !== -1) {\n end = i - 1\n if ((end - start) + 1 >= minMatchCharLength) {\n matchedIndices.push([start, end])\n }\n start = -1\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && (i - start) >= minMatchCharLength) {\n matchedIndices.push([start, i - 1])\n }\n\n return matchedIndices\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_matched_indices.js","module.exports = (pattern) => {\n let mask = {}\n let len = pattern.length\n\n for (let i = 0; i < len; i += 1) {\n mask[pattern.charAt(i)] = 0\n }\n\n for (let i = 0; i < len; i += 1) {\n mask[pattern.charAt(i)] |= 1 << (len - i - 1)\n }\n\n return mask\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_pattern_alphabet.js","const SPECIAL_CHARS_REGEX = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g\n\nmodule.exports = (text, pattern, tokenSeparator = / +/g) => {\n let regex = new RegExp(pattern.replace(SPECIAL_CHARS_REGEX, '\\\\$&').replace(tokenSeparator, '|'))\n let matches = text.match(regex)\n let isMatch = !!matches\n let matchedIndices = []\n\n if (isMatch) {\n for (let i = 0, matchesLen = matches.length; i < matchesLen; i += 1) {\n let match = matches[i]\n matchedIndices.push([text.indexOf(match), match.length - 1])\n }\n }\n\n return {\n // TODO: revisit this score\n score: isMatch ? 0.5 : 1,\n isMatch,\n matchedIndices\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_regex_search.js","module.exports = (pattern, { errors = 0, currentLocation = 0, expectedLocation = 0, distance = 100 }) => {\n const accuracy = errors / pattern.length\n const proximity = Math.abs(expectedLocation - currentLocation)\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + (proximity / distance)\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_score.js","const bitapScore = require('./bitap_score')\nconst matchedIndices = require('./bitap_matched_indices')\n\nmodule.exports = (text, pattern, patternAlphabet, { location = 0, distance = 100, threshold = 0.6, findAllMatches = false, minMatchCharLength = 1 }) => {\n const expectedLocation = location\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length\n // Highest score beyond which we give up.\n let currentThreshold = threshold\n // Is there a nearby exact match? (speedup)\n let bestLocation = text.indexOf(pattern, expectedLocation)\n\n const patternLen = pattern.length\n\n // a mask of the matches\n const matchMask = []\n for (let i = 0; i < textLen; i += 1) {\n matchMask[i] = 0\n }\n\n if (bestLocation !== -1) {\n let score = bitapScore(pattern, {\n errors: 0,\n currentLocation: bestLocation,\n expectedLocation,\n distance\n })\n currentThreshold = Math.min(score, currentThreshold)\n\n // What about in the other direction? (speed up)\n bestLocation = text.lastIndexOf(pattern, expectedLocation + patternLen)\n\n if (bestLocation !== -1) {\n let score = bitapScore(pattern, {\n errors: 0,\n currentLocation: bestLocation,\n expectedLocation,\n distance\n })\n currentThreshold = Math.min(score, currentThreshold)\n }\n }\n\n // Reset the best location\n bestLocation = -1\n\n let lastBitArr = []\n let finalScore = 1\n let binMax = patternLen + textLen\n\n const mask = 1 << (patternLen - 1)\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0\n let binMid = binMax\n\n while (binMin < binMid) {\n const score = bitapScore(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance\n })\n\n if (score <= currentThreshold) {\n binMin = binMid\n } else {\n binMax = binMid\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin)\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid\n\n let start = Math.max(1, expectedLocation - binMid + 1)\n let finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen\n\n // Initialize the bit array\n let bitArr = Array(finish + 2)\n\n bitArr[finish + 1] = (1 << i) - 1\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1\n let charMatch = patternAlphabet[text.charAt(currentLocation)]\n\n if (charMatch) {\n matchMask[currentLocation] = 1\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch\n\n // Subsequent passes: fuzzy match\n if (i !== 0) {\n bitArr[j] |= (((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1) | lastBitArr[j + 1]\n }\n\n if (bitArr[j] & mask) {\n finalScore = bitapScore(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance\n })\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore\n bestLocation = currentLocation\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation)\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = bitapScore(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance\n })\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr\n }\n\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n return {\n isMatch: bestLocation >= 0,\n score: finalScore === 0 ? 0.001 : finalScore,\n matchedIndices: matchedIndices(matchMask, minMatchCharLength)\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_search.js","const Bitap = require('./bitap')\nconst deepValue = require('./helpers/deep_value')\nconst isArray = require('./helpers/is_array')\n\nclass Fuse {\n constructor (list, {\n // Approximately where in the text is the pattern expected to be found?\n location = 0,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance = 100,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold = 0.6,\n // Machine word size\n maxPatternLength = 32,\n // Indicates whether comparisons should be case sensitive.\n caseSensitive = false,\n // Regex used to separate words when searching. Only applicable when `tokenize` is `true`.\n tokenSeparator = / +/g,\n // When true, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n findAllMatches = false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength = 1,\n // The name of the identifier property. If specified, the returned result will be a list\n // of the items' dentifiers, otherwise it will be a list of the items.\n id = null,\n // List of properties that will be searched. This also supports nested properties.\n keys = [],\n // Whether to sort the result list, by score\n shouldSort = true,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn = deepValue,\n // Default sort function\n sortFn = (a, b) => (a.score - b.score),\n // When true, the search algorithm will search individual words **and** the full string,\n // computing the final score as a function of both. Note that when `tokenize` is `true`,\n // the `threshold`, `distance`, and `location` are inconsequential for individual tokens.\n tokenize = false,\n // When true, the result set will only include records that match all tokens. Will only work\n // if `tokenize` is also true.\n matchAllTokens = false,\n\n includeMatches = false,\n includeScore = false,\n\n // Will print to the console. Useful for debugging.\n verbose = false\n }) {\n this.options = {\n location,\n distance,\n threshold,\n maxPatternLength,\n isCaseSensitive: caseSensitive,\n tokenSeparator,\n findAllMatches,\n minMatchCharLength,\n id,\n keys,\n includeMatches,\n includeScore,\n shouldSort,\n getFn,\n sortFn,\n verbose,\n tokenize,\n matchAllTokens\n }\n\n this.setCollection(list)\n }\n\n setCollection (list) {\n this.list = list\n return list\n }\n\n search (pattern) {\n this._log(`---------\\nSearch pattern: \"${pattern}\"`)\n\n const {\n tokenSearchers,\n fullSearcher\n } = this._prepareSearchers(pattern)\n\n let { weights, results } = this._search(tokenSearchers, fullSearcher)\n\n this._computeScore(weights, results)\n\n if (this.options.shouldSort) {\n this._sort(results)\n }\n\n return this._format(results)\n }\n\n _prepareSearchers (pattern = '') {\n const tokenSearchers = []\n\n if (this.options.tokenize) {\n // Tokenize on the separator\n const tokens = pattern.split(this.options.tokenSeparator)\n for (let i = 0, len = tokens.length; i < len; i += 1) {\n tokenSearchers.push(new Bitap(tokens[i], this.options))\n }\n }\n\n let fullSearcher = new Bitap(pattern, this.options)\n\n return { tokenSearchers, fullSearcher }\n }\n\n _search (tokenSearchers = [], fullSearcher) {\n const list = this.list\n const resultMap = {}\n const results = []\n\n // Check the first item in the list, if it's a string, then we assume\n // that every item in the list is also a string, and thus it's a flattened array.\n if (typeof list[0] === 'string') {\n // Iterate over every item\n for (let i = 0, len = list.length; i < len; i += 1) {\n this._analyze({\n key: '',\n value: list[i],\n record: i,\n index: i\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n\n return { weights: null, results }\n }\n\n // Otherwise, the first item is an Object (hopefully), and thus the searching\n // is done on the values of the keys of each item.\n const weights = {}\n for (let i = 0, len = list.length; i < len; i += 1) {\n let item = list[i]\n // Iterate over every key\n for (let j = 0, keysLen = this.options.keys.length; j < keysLen; j += 1) {\n let key = this.options.keys[j]\n if (typeof key !== 'string') {\n weights[key.name] = {\n weight: (1 - key.weight) || 1\n }\n if (key.weight <= 0 || key.weight > 1) {\n throw new Error('Key weight has to be > 0 and <= 1')\n }\n key = key.name\n } else {\n weights[key] = {\n weight: 1\n }\n }\n\n this._analyze({\n key,\n value: this.options.getFn(item, key),\n record: item,\n index: i\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n }\n\n return { weights, results }\n }\n\n _analyze ({ key, arrayIndex = -1, value, record, index }, { tokenSearchers = [], fullSearcher = [], resultMap = {}, results = [] }) {\n // Check if the texvaluet can be searched\n if (value === undefined || value === null) {\n return\n }\n\n let exists = false\n let averageScore = -1\n let numTextMatches = 0\n\n if (typeof value === 'string') {\n this._log(`\\nKey: ${key === '' ? '-' : key}`)\n\n let mainSearchResult = fullSearcher.search(value)\n this._log(`Full text: \"${value}\", score: ${mainSearchResult.score}`)\n\n if (this.options.tokenize) {\n let words = value.split(this.options.tokenSeparator)\n let scores = []\n\n for (let i = 0; i < tokenSearchers.length; i += 1) {\n let tokenSearcher = tokenSearchers[i]\n\n this._log(`\\nPattern: \"${tokenSearcher.pattern}\"`)\n\n // let tokenScores = []\n let hasMatchInText = false\n\n for (let j = 0; j < words.length; j += 1) {\n let word = words[j]\n let tokenSearchResult = tokenSearcher.search(word)\n let obj = {}\n if (tokenSearchResult.isMatch) {\n obj[word] = tokenSearchResult.score\n exists = true\n hasMatchInText = true\n scores.push(tokenSearchResult.score)\n } else {\n obj[word] = 1\n if (!this.options.matchAllTokens) {\n scores.push(1)\n }\n }\n this._log(`Token: \"${word}\", score: ${obj[word]}`)\n // tokenScores.push(obj)\n }\n\n if (hasMatchInText) {\n numTextMatches += 1\n }\n }\n\n averageScore = scores[0]\n let scoresLen = scores.length\n for (let i = 1; i < scoresLen; i += 1) {\n averageScore += scores[i]\n }\n averageScore = averageScore / scoresLen\n\n this._log('Token score average:', averageScore)\n }\n\n let finalScore = mainSearchResult.score\n if (averageScore > -1) {\n finalScore = (finalScore + averageScore) / 2\n }\n\n this._log('Score average:', finalScore)\n\n let checkTextMatches = (this.options.tokenize && this.options.matchAllTokens) ? numTextMatches >= tokenSearchers.length : true\n\n this._log(`\\nCheck Matches: ${checkTextMatches}`)\n\n // If a match is found, add the item to , including its score\n if ((exists || mainSearchResult.isMatch) && checkTextMatches) {\n // Check if the item already exists in our results\n let existingResult = resultMap[index]\n if (existingResult) {\n // Use the lowest score\n // existingResult.score, bitapResult.score\n existingResult.output.push({\n key,\n arrayIndex,\n value,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n })\n } else {\n // Add it to the raw result list\n resultMap[index] = {\n item: record,\n output: [{\n key,\n arrayIndex,\n value,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n }]\n }\n\n results.push(resultMap[index])\n }\n }\n } else if (isArray(value)) {\n for (let i = 0, len = value.length; i < len; i += 1) {\n this._analyze({\n key,\n arrayIndex: i,\n value: value[i],\n record,\n index\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n }\n }\n\n _computeScore (weights, results) {\n this._log('\\n\\nComputing score:\\n')\n\n for (let i = 0, len = results.length; i < len; i += 1) {\n const output = results[i].output\n const scoreLen = output.length\n\n let totalScore = 0\n let bestScore = 1\n\n for (let j = 0; j < scoreLen; j += 1) {\n let score = output[j].score\n let weight = weights ? weights[output[j].key].weight : 1\n let nScore = score * weight\n\n if (weight !== 1) {\n bestScore = Math.min(bestScore, nScore)\n } else {\n output[j].nScore = nScore\n totalScore += nScore\n }\n }\n\n results[i].score = bestScore === 1 ? totalScore / scoreLen : bestScore\n\n this._log(results[i])\n }\n }\n\n _sort (results) {\n this._log('\\n\\nSorting....')\n results.sort(this.options.sortFn)\n }\n\n _format (results) {\n const finalOutput = []\n\n this._log('\\n\\nOutput:\\n\\n', JSON.stringify(results))\n\n let transformers = []\n\n if (this.options.includeMatches) {\n transformers.push((result, data) => {\n const output = result.output\n data.matches = []\n\n for (let i = 0, len = output.length; i < len; i += 1) {\n let item = output[i]\n\n if (item.matchedIndices.length === 0) {\n continue\n }\n\n let obj = {\n indices: item.matchedIndices,\n value: item.value\n }\n if (item.key) {\n obj.key = item.key\n }\n if (item.hasOwnProperty('arrayIndex') && item.arrayIndex > -1) {\n obj.arrayIndex = item.arrayIndex\n }\n data.matches.push(obj)\n }\n })\n }\n\n if (this.options.includeScore) {\n transformers.push((result, data) => {\n data.score = result.score\n })\n }\n\n for (let i = 0, len = results.length; i < len; i += 1) {\n const result = results[i]\n\n if (this.options.id) {\n result.item = this.options.getFn(result.item, this.options.id)[0]\n }\n\n if (!transformers.length) {\n finalOutput.push(result.item)\n continue\n }\n\n const data = {\n item: result.item\n }\n\n for (let j = 0, len = transformers.length; j < len; j += 1) {\n transformers[j](result, data)\n }\n\n finalOutput.push(data)\n }\n\n return finalOutput\n }\n\n _log () {\n if (this.options.verbose) {\n console.log(...arguments)\n }\n }\n}\n\nmodule.exports = Fuse\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap d5dd14e9cc4e8b505a81","webpack:///./src/helpers/is_array.js","webpack:///./src/bitap/index.js","webpack:///./src/helpers/deep_value.js","webpack:///./src/bitap/bitap_matched_indices.js","webpack:///./src/bitap/bitap_pattern_alphabet.js","webpack:///./src/bitap/bitap_regex_search.js","webpack:///./src/bitap/bitap_score.js","webpack:///./src/bitap/bitap_search.js","webpack:///./src/index.js"],"names":["module","exports","Object","prototype","toString","call","obj","bitapRegexSearch","require","bitapSearch","patternAlphabet","Bitap","pattern","location","distance","threshold","maxPatternLength","isCaseSensitive","tokenSeparator","findAllMatches","minMatchCharLength","options","toLowerCase","length","text","isMatch","score","matchedIndices","isArray","deepValue","path","list","push","dotIndex","indexOf","firstSegment","remaining","slice","value","undefined","i","len","matchmask","start","end","match","mask","charAt","SPECIAL_CHARS_REGEX","regex","RegExp","replace","matches","matchesLen","errors","currentLocation","expectedLocation","accuracy","proximity","Math","abs","bitapScore","textLen","currentThreshold","bestLocation","patternLen","matchMask","min","lastIndexOf","lastBitArr","finalScore","binMax","binMin","binMid","floor","max","finish","bitArr","Array","j","charMatch","Fuse","caseSensitive","id","keys","shouldSort","getFn","sortFn","a","b","tokenize","matchAllTokens","includeMatches","includeScore","verbose","setCollection","_log","_prepareSearchers","tokenSearchers","fullSearcher","_search","weights","results","_computeScore","_sort","_format","tokens","split","resultMap","_analyze","key","record","index","item","keysLen","name","weight","Error","arrayIndex","exists","averageScore","numTextMatches","mainSearchResult","search","words","scores","tokenSearcher","hasMatchInText","word","tokenSearchResult","scoresLen","checkTextMatches","existingResult","output","scoreLen","totalScore","bestScore","nScore","sort","finalOutput","JSON","stringify","transformers","result","data","indices","hasOwnProperty","log","arguments"],"mappings":"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","file":"fuse.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Fuse\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Fuse\"] = factory();\n\telse\n\t\troot[\"Fuse\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d5dd14e9cc4e8b505a81","module.exports = obj => Object.prototype.toString.call(obj) === '[object Array]'\n\n\n// WEBPACK FOOTER //\n// ./src/helpers/is_array.js","const bitapRegexSearch = require('./bitap_regex_search')\nconst bitapSearch = require('./bitap_search')\nconst patternAlphabet = require('./bitap_pattern_alphabet')\n\nclass Bitap {\n constructor (pattern, { \n // Approximately where in the text is the pattern expected to be found?\n location = 0, \n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance = 100, \n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold = 0.6, \n // Machine word size\n maxPatternLength = 32,\n // Indicates whether comparisons should be case sensitive.\n isCaseSensitive = false,\n // Regex used to separate words when searching. Only applicable when `tokenize` is `true`.\n tokenSeparator = / +/g,\n // When true, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n findAllMatches = false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength = 1\n }) {\n this.options = {\n location,\n distance,\n threshold,\n maxPatternLength,\n isCaseSensitive,\n tokenSeparator,\n findAllMatches,\n minMatchCharLength\n }\n\n this.pattern = this.options.isCaseSensitive ? pattern : pattern.toLowerCase()\n\n if (this.pattern.length <= maxPatternLength) {\n this.patternAlphabet = patternAlphabet(this.pattern)\n }\n }\n\n search (text) {\n if (!this.options.isCaseSensitive) {\n text = text.toLowerCase()\n }\n\n // Exact match\n if (this.pattern === text) {\n return {\n isMatch: true,\n score: 0,\n matchedIndices: [[0, text.length - 1]]\n }\n }\n\n // When pattern length is greater than the machine word length, just do a a regex comparison\n const { maxPatternLength, tokenSeparator } = this.options\n if (this.pattern.length > maxPatternLength) {\n return bitapRegexSearch(text, this.pattern, tokenSeparator)\n }\n\n // Otherwise, use Bitap algorithm\n const { location, distance, threshold, findAllMatches, minMatchCharLength } = this.options\n return bitapSearch(text, this.pattern, this.patternAlphabet, {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength\n })\n }\n}\n\n// let x = new Bitap(\"od mn war\", {})\n// let result = x.search(\"Old Man's War\")\n// console.log(result)\n\nmodule.exports = Bitap\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/index.js","const isArray = require('./is_array')\n\nconst deepValue = (obj, path, list) => {\n if (!path) {\n // If there's no path left, we've gotten to the object we care about.\n list.push(obj)\n } else {\n const dotIndex = path.indexOf('.')\n let firstSegment = path\n let remaining = null\n\n if (dotIndex !== -1) {\n firstSegment = path.slice(0, dotIndex)\n remaining = path.slice(dotIndex + 1)\n }\n\n const value = obj[firstSegment]\n \n if (value !== null && value !== undefined) {\n if (!remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value.toString())\n } else if (isArray(value)) {\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepValue(value[i], remaining, list)\n }\n } else if (remaining) {\n // An object. Recurse further.\n deepValue(value, remaining, list)\n }\n }\n }\n\n return list\n}\n\nmodule.exports = (obj, path) => {\n return deepValue(obj, path, [])\n}\n\n\n// WEBPACK FOOTER //\n// ./src/helpers/deep_value.js","module.exports = (matchmask = [], minMatchCharLength = 1) => {\n let matchedIndices = []\n let start = -1\n let end = -1\n let i = 0\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i]\n if (match && start === -1) {\n start = i\n } else if (!match && start !== -1) {\n end = i - 1\n if ((end - start) + 1 >= minMatchCharLength) {\n matchedIndices.push([start, end])\n }\n start = -1\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && (i - start) >= minMatchCharLength) {\n matchedIndices.push([start, i - 1])\n }\n\n return matchedIndices\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_matched_indices.js","module.exports = (pattern) => {\n let mask = {}\n let len = pattern.length\n\n for (let i = 0; i < len; i += 1) {\n mask[pattern.charAt(i)] = 0\n }\n\n for (let i = 0; i < len; i += 1) {\n mask[pattern.charAt(i)] |= 1 << (len - i - 1)\n }\n\n return mask\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_pattern_alphabet.js","const SPECIAL_CHARS_REGEX = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g\n\nmodule.exports = (text, pattern, tokenSeparator = / +/g) => {\n let regex = new RegExp(pattern.replace(SPECIAL_CHARS_REGEX, '\\\\$&').replace(tokenSeparator, '|'))\n let matches = text.match(regex)\n let isMatch = !!matches\n let matchedIndices = []\n\n if (isMatch) {\n for (let i = 0, matchesLen = matches.length; i < matchesLen; i += 1) {\n let match = matches[i]\n matchedIndices.push([text.indexOf(match), match.length - 1])\n }\n }\n\n return {\n // TODO: revisit this score\n score: isMatch ? 0.5 : 1,\n isMatch,\n matchedIndices\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_regex_search.js","module.exports = (pattern, { errors = 0, currentLocation = 0, expectedLocation = 0, distance = 100 }) => {\n const accuracy = errors / pattern.length\n const proximity = Math.abs(expectedLocation - currentLocation)\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + (proximity / distance)\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_score.js","const bitapScore = require('./bitap_score')\nconst matchedIndices = require('./bitap_matched_indices')\n\nmodule.exports = (text, pattern, patternAlphabet, { location = 0, distance = 100, threshold = 0.6, findAllMatches = false, minMatchCharLength = 1 }) => {\n const expectedLocation = location\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length\n // Highest score beyond which we give up.\n let currentThreshold = threshold\n // Is there a nearby exact match? (speedup)\n let bestLocation = text.indexOf(pattern, expectedLocation)\n\n const patternLen = pattern.length\n\n // a mask of the matches\n const matchMask = []\n for (let i = 0; i < textLen; i += 1) {\n matchMask[i] = 0\n }\n\n if (bestLocation !== -1) {\n let score = bitapScore(pattern, {\n errors: 0,\n currentLocation: bestLocation,\n expectedLocation,\n distance\n })\n currentThreshold = Math.min(score, currentThreshold)\n\n // What about in the other direction? (speed up)\n bestLocation = text.lastIndexOf(pattern, expectedLocation + patternLen)\n\n if (bestLocation !== -1) {\n let score = bitapScore(pattern, {\n errors: 0,\n currentLocation: bestLocation,\n expectedLocation,\n distance\n })\n currentThreshold = Math.min(score, currentThreshold)\n }\n }\n\n // Reset the best location\n bestLocation = -1\n\n let lastBitArr = []\n let finalScore = 1\n let binMax = patternLen + textLen\n\n const mask = 1 << (patternLen - 1)\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0\n let binMid = binMax\n\n while (binMin < binMid) {\n const score = bitapScore(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance\n })\n\n if (score <= currentThreshold) {\n binMin = binMid\n } else {\n binMax = binMid\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin)\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid\n\n let start = Math.max(1, expectedLocation - binMid + 1)\n let finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen\n\n // Initialize the bit array\n let bitArr = Array(finish + 2)\n\n bitArr[finish + 1] = (1 << i) - 1\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1\n let charMatch = patternAlphabet[text.charAt(currentLocation)]\n\n if (charMatch) {\n matchMask[currentLocation] = 1\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch\n\n // Subsequent passes: fuzzy match\n if (i !== 0) {\n bitArr[j] |= (((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1) | lastBitArr[j + 1]\n }\n\n if (bitArr[j] & mask) {\n finalScore = bitapScore(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance\n })\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore\n bestLocation = currentLocation\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation)\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = bitapScore(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance\n })\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr\n }\n\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n return {\n isMatch: bestLocation >= 0,\n score: finalScore === 0 ? 0.001 : finalScore,\n matchedIndices: matchedIndices(matchMask, minMatchCharLength)\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/bitap/bitap_search.js","const Bitap = require('./bitap')\nconst deepValue = require('./helpers/deep_value')\nconst isArray = require('./helpers/is_array')\n\nclass Fuse {\n constructor (list, {\n // Approximately where in the text is the pattern expected to be found?\n location = 0,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance = 100,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold = 0.6,\n // Machine word size\n maxPatternLength = 32,\n // Indicates whether comparisons should be case sensitive.\n caseSensitive = false,\n // Regex used to separate words when searching. Only applicable when `tokenize` is `true`.\n tokenSeparator = / +/g,\n // When true, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n findAllMatches = false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength = 1,\n // The name of the identifier property. If specified, the returned result will be a list\n // of the items' dentifiers, otherwise it will be a list of the items.\n id = null,\n // List of properties that will be searched. This also supports nested properties.\n keys = [],\n // Whether to sort the result list, by score\n shouldSort = true,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn = deepValue,\n // Default sort function\n sortFn = (a, b) => (a.score - b.score),\n // When true, the search algorithm will search individual words **and** the full string,\n // computing the final score as a function of both. Note that when `tokenize` is `true`,\n // the `threshold`, `distance`, and `location` are inconsequential for individual tokens.\n tokenize = false,\n // When true, the result set will only include records that match all tokens. Will only work\n // if `tokenize` is also true.\n matchAllTokens = false,\n\n includeMatches = false,\n includeScore = false,\n\n // Will print to the console. Useful for debugging.\n verbose = false\n }) {\n this.options = {\n location,\n distance,\n threshold,\n maxPatternLength,\n isCaseSensitive: caseSensitive,\n tokenSeparator,\n findAllMatches,\n minMatchCharLength,\n id,\n keys,\n includeMatches,\n includeScore,\n shouldSort,\n getFn,\n sortFn,\n verbose,\n tokenize,\n matchAllTokens\n }\n\n this.setCollection(list)\n }\n\n setCollection (list) {\n this.list = list\n return list\n }\n\n search (pattern) {\n this._log(`---------\\nSearch pattern: \"${pattern}\"`)\n\n const {\n tokenSearchers,\n fullSearcher\n } = this._prepareSearchers(pattern)\n\n let { weights, results } = this._search(tokenSearchers, fullSearcher)\n\n this._computeScore(weights, results)\n\n if (this.options.shouldSort) {\n this._sort(results)\n }\n\n return this._format(results)\n }\n\n _prepareSearchers (pattern = '') {\n const tokenSearchers = []\n\n if (this.options.tokenize) {\n // Tokenize on the separator\n const tokens = pattern.split(this.options.tokenSeparator)\n for (let i = 0, len = tokens.length; i < len; i += 1) {\n tokenSearchers.push(new Bitap(tokens[i], this.options))\n }\n }\n\n let fullSearcher = new Bitap(pattern, this.options)\n\n return { tokenSearchers, fullSearcher }\n }\n\n _search (tokenSearchers = [], fullSearcher) {\n const list = this.list\n const resultMap = {}\n const results = []\n\n // Check the first item in the list, if it's a string, then we assume\n // that every item in the list is also a string, and thus it's a flattened array.\n if (typeof list[0] === 'string') {\n // Iterate over every item\n for (let i = 0, len = list.length; i < len; i += 1) {\n this._analyze({\n key: '',\n value: list[i],\n record: i,\n index: i\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n\n return { weights: null, results }\n }\n\n // Otherwise, the first item is an Object (hopefully), and thus the searching\n // is done on the values of the keys of each item.\n const weights = {}\n for (let i = 0, len = list.length; i < len; i += 1) {\n let item = list[i]\n // Iterate over every key\n for (let j = 0, keysLen = this.options.keys.length; j < keysLen; j += 1) {\n let key = this.options.keys[j]\n if (typeof key !== 'string') {\n weights[key.name] = {\n weight: (1 - key.weight) || 1\n }\n if (key.weight <= 0 || key.weight > 1) {\n throw new Error('Key weight has to be > 0 and <= 1')\n }\n key = key.name\n } else {\n weights[key] = {\n weight: 1\n }\n }\n\n this._analyze({\n key,\n value: this.options.getFn(item, key),\n record: item,\n index: i\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n }\n\n return { weights, results }\n }\n\n _analyze ({ key, arrayIndex = -1, value, record, index }, { tokenSearchers = [], fullSearcher = [], resultMap = {}, results = [] }) {\n // Check if the texvaluet can be searched\n if (value === undefined || value === null) {\n return\n }\n\n let exists = false\n let averageScore = -1\n let numTextMatches = 0\n\n if (typeof value === 'string') {\n this._log(`\\nKey: ${key === '' ? '-' : key}`)\n\n let mainSearchResult = fullSearcher.search(value)\n this._log(`Full text: \"${value}\", score: ${mainSearchResult.score}`)\n\n if (this.options.tokenize) {\n let words = value.split(this.options.tokenSeparator)\n let scores = []\n\n for (let i = 0; i < tokenSearchers.length; i += 1) {\n let tokenSearcher = tokenSearchers[i]\n\n this._log(`\\nPattern: \"${tokenSearcher.pattern}\"`)\n\n // let tokenScores = []\n let hasMatchInText = false\n\n for (let j = 0; j < words.length; j += 1) {\n let word = words[j]\n let tokenSearchResult = tokenSearcher.search(word)\n let obj = {}\n if (tokenSearchResult.isMatch) {\n obj[word] = tokenSearchResult.score\n exists = true\n hasMatchInText = true\n scores.push(tokenSearchResult.score)\n } else {\n obj[word] = 1\n if (!this.options.matchAllTokens) {\n scores.push(1)\n }\n }\n this._log(`Token: \"${word}\", score: ${obj[word]}`)\n // tokenScores.push(obj)\n }\n\n if (hasMatchInText) {\n numTextMatches += 1\n }\n }\n\n averageScore = scores[0]\n let scoresLen = scores.length\n for (let i = 1; i < scoresLen; i += 1) {\n averageScore += scores[i]\n }\n averageScore = averageScore / scoresLen\n\n this._log('Token score average:', averageScore)\n }\n\n let finalScore = mainSearchResult.score\n if (averageScore > -1) {\n finalScore = (finalScore + averageScore) / 2\n }\n\n this._log('Score average:', finalScore)\n\n let checkTextMatches = (this.options.tokenize && this.options.matchAllTokens) ? numTextMatches >= tokenSearchers.length : true\n\n this._log(`\\nCheck Matches: ${checkTextMatches}`)\n\n // If a match is found, add the item to , including its score\n if ((exists || mainSearchResult.isMatch) && checkTextMatches) {\n // Check if the item already exists in our results\n let existingResult = resultMap[index]\n if (existingResult) {\n // Use the lowest score\n // existingResult.score, bitapResult.score\n existingResult.output.push({\n key,\n arrayIndex,\n value,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n })\n } else {\n // Add it to the raw result list\n resultMap[index] = {\n item: record,\n output: [{\n key,\n arrayIndex,\n value,\n score: finalScore,\n matchedIndices: mainSearchResult.matchedIndices\n }]\n }\n\n results.push(resultMap[index])\n }\n }\n } else if (isArray(value)) {\n for (let i = 0, len = value.length; i < len; i += 1) {\n this._analyze({\n key,\n arrayIndex: i,\n value: value[i],\n record,\n index\n }, {\n resultMap,\n results,\n tokenSearchers,\n fullSearcher\n })\n }\n }\n }\n\n _computeScore (weights, results) {\n this._log('\\n\\nComputing score:\\n')\n\n for (let i = 0, len = results.length; i < len; i += 1) {\n const output = results[i].output\n const scoreLen = output.length\n\n let totalScore = 0\n let bestScore = 1\n\n for (let j = 0; j < scoreLen; j += 1) {\n let weight = weights ? weights[output[j].key].weight : 1\n let score = weight === 1 ? output[j].score : (output[j].score || 0.001)\n let nScore = score * weight\n\n if (weight !== 1) {\n bestScore = Math.min(bestScore, nScore)\n } else {\n output[j].nScore = nScore\n totalScore += nScore\n }\n }\n\n results[i].score = bestScore === 1 ? totalScore / scoreLen : bestScore\n\n this._log(results[i])\n }\n }\n\n _sort (results) {\n this._log('\\n\\nSorting....')\n results.sort(this.options.sortFn)\n }\n\n _format (results) {\n const finalOutput = []\n\n this._log('\\n\\nOutput:\\n\\n', JSON.stringify(results))\n\n let transformers = []\n\n if (this.options.includeMatches) {\n transformers.push((result, data) => {\n const output = result.output\n data.matches = []\n\n for (let i = 0, len = output.length; i < len; i += 1) {\n let item = output[i]\n\n if (item.matchedIndices.length === 0) {\n continue\n }\n\n let obj = {\n indices: item.matchedIndices,\n value: item.value\n }\n if (item.key) {\n obj.key = item.key\n }\n if (item.hasOwnProperty('arrayIndex') && item.arrayIndex > -1) {\n obj.arrayIndex = item.arrayIndex\n }\n data.matches.push(obj)\n }\n })\n }\n\n if (this.options.includeScore) {\n transformers.push((result, data) => {\n data.score = result.score\n })\n }\n\n for (let i = 0, len = results.length; i < len; i += 1) {\n const result = results[i]\n\n if (this.options.id) {\n result.item = this.options.getFn(result.item, this.options.id)[0]\n }\n\n if (!transformers.length) {\n finalOutput.push(result.item)\n continue\n }\n\n const data = {\n item: result.item\n }\n\n for (let j = 0, len = transformers.length; j < len; j += 1) {\n transformers[j](result, data)\n }\n\n finalOutput.push(data)\n }\n\n return finalOutput\n }\n\n _log () {\n if (this.options.verbose) {\n console.log(...arguments)\n }\n }\n}\n\nmodule.exports = Fuse\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/fuse.min.js b/dist/fuse.min.js index d2472fe..ecf636c 100644 --- a/dist/fuse.min.js +++ b/dist/fuse.min.js @@ -6,4 +6,4 @@ * * http://www.apache.org/licenses/LICENSE-2.0 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Fuse",[],t):"object"==typeof exports?exports.Fuse=t():e.Fuse=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=8)}([function(e,t,r){"use strict";e.exports=function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var r=0;rr)return i(e,this.pattern,n);var o=this.options,s=o.location,c=o.distance,h=o.threshold,l=o.findAllMatches,u=o.minMatchCharLength;return a(e,this.pattern,this.patternAlphabet,{location:s,distance:c,threshold:h,findAllMatches:l,minMatchCharLength:u})}}]),e}();e.exports=c},function(e,t,r){"use strict";var n=r(0),o=function e(t,r,o){if(r){var i=r.indexOf("."),a=r,s=null;-1!==i&&(a=r.slice(0,i),s=r.slice(i+1));var c=t[a];if(null!==c&&void 0!==c)if(s||"string"!=typeof c&&"number"!=typeof c)if(n(c))for(var h=0,l=c.length;h0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=[],n=-1,o=-1,i=0,a=e.length;i=t&&r.push([n,o]),n=-1)}return e[i-1]&&i-n>=t&&r.push([n,i-1]),r}},function(e,t,r){"use strict";e.exports=function(e){for(var t={},r=e.length,n=0;n2&&void 0!==arguments[2]?arguments[2]:/ +/g,n=new RegExp(t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&").replace(r,"|")),o=e.match(n),i=!!o,a=[];if(i)for(var s=0,c=o.length;s=P;T-=1){var E=T-1,K=r[e.charAt(E)];if(K&&(S[E]=1),z[T]=(z[T+1]<<1|1)&K,0!==I&&(z[T]|=(L[T+1]|L[T])<<1|1|L[T+1]),z[T]&A&&(w=n(t,{errors:I,currentLocation:E,expectedLocation:g,distance:h}))<=m){if(m=w,(k=E)<=g)break;P=Math.max(1,2*g-k)}}if(n(t,{errors:I+1,currentLocation:g,expectedLocation:g,distance:h})>m)break;L=z}return{isMatch:k>=0,score:0===w?.001:w,matchedIndices:o(S,p)}}},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var r=e.split(this.options.tokenSeparator),n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],r=this.list,n={},o=[];if("string"==typeof r[0]){for(var i=0,a=r.length;i1)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else s[d]={weight:1};this._analyze({key:d,value:this.options.getFn(l,d),record:l,index:c},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:"_analyze",value:function(e,t){var r=e.key,n=e.arrayIndex,o=void 0===n?-1:n,i=e.value,a=e.record,c=e.index,h=t.tokenSearchers,l=void 0===h?[]:h,u=t.fullSearcher,f=void 0===u?[]:u,d=t.resultMap,v=void 0===d?{}:d,p=t.results,g=void 0===p?[]:p;if(void 0!==i&&null!==i){var y=!1,m=-1,k=0;if("string"==typeof i){this._log("\nKey: "+(""===r?"-":r));var x=f.search(i);if(this._log('Full text: "'+i+'", score: '+x.score),this.options.tokenize){for(var S=i.split(this.options.tokenSeparator),M=[],b=0;b-1&&(P=(P+m)/2),this._log("Score average:",P);var j=!this.options.tokenize||!this.options.matchAllTokens||k>=l.length;if(this._log("\nCheck Matches: "+j),(y||x.isMatch)&&j){var z=v[c];z?z.output.push({key:r,arrayIndex:o,value:i,score:P,matchedIndices:x.matchedIndices}):(v[c]={item:a,output:[{key:r,arrayIndex:o,value:i,score:P,matchedIndices:x.matchedIndices}]},g.push(v[c]))}}else if(s(i))for(var T=0,E=i.length;T-1&&(a.arrayIndex=i.arrayIndex),t.matches.push(a)}}}),this.options.includeScore&&r.push(function(e,t){t.score=e.score});for(var n=0,o=e.length;nr)return i(e,this.pattern,n);var o=this.options,s=o.location,c=o.distance,h=o.threshold,l=o.findAllMatches,u=o.minMatchCharLength;return a(e,this.pattern,this.patternAlphabet,{location:s,distance:c,threshold:h,findAllMatches:l,minMatchCharLength:u})}}]),e}();e.exports=c},function(e,t,r){"use strict";var n=r(0),o=function e(t,r,o){if(r){var i=r.indexOf("."),a=r,s=null;-1!==i&&(a=r.slice(0,i),s=r.slice(i+1));var c=t[a];if(null!==c&&void 0!==c)if(s||"string"!=typeof c&&"number"!=typeof c)if(n(c))for(var h=0,l=c.length;h0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=[],n=-1,o=-1,i=0,a=e.length;i=t&&r.push([n,o]),n=-1)}return e[i-1]&&i-n>=t&&r.push([n,i-1]),r}},function(e,t,r){"use strict";e.exports=function(e){for(var t={},r=e.length,n=0;n2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,"\\$&").replace(r,"|")),i=e.match(o),a=!!i,s=[];if(a)for(var c=0,h=i.length;c=P;T-=1){var E=T-1,K=r[e.charAt(E)];if(K&&(S[E]=1),z[T]=(z[T+1]<<1|1)&K,0!==I&&(z[T]|=(L[T+1]|L[T])<<1|1|L[T+1]),z[T]&A&&(w=n(t,{errors:I,currentLocation:E,expectedLocation:g,distance:h}))<=m){if(m=w,(k=E)<=g)break;P=Math.max(1,2*g-k)}}if(n(t,{errors:I+1,currentLocation:g,expectedLocation:g,distance:h})>m)break;L=z}return{isMatch:k>=0,score:0===w?.001:w,matchedIndices:o(S,p)}}},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var r=e.split(this.options.tokenSeparator),n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],r=this.list,n={},o=[];if("string"==typeof r[0]){for(var i=0,a=r.length;i1)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else s[d]={weight:1};this._analyze({key:d,value:this.options.getFn(l,d),record:l,index:c},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:"_analyze",value:function(e,t){var r=e.key,n=e.arrayIndex,o=void 0===n?-1:n,i=e.value,a=e.record,c=e.index,h=t.tokenSearchers,l=void 0===h?[]:h,u=t.fullSearcher,f=void 0===u?[]:u,d=t.resultMap,v=void 0===d?{}:d,p=t.results,g=void 0===p?[]:p;if(void 0!==i&&null!==i){var y=!1,m=-1,k=0;if("string"==typeof i){this._log("\nKey: "+(""===r?"-":r));var x=f.search(i);if(this._log('Full text: "'+i+'", score: '+x.score),this.options.tokenize){for(var S=i.split(this.options.tokenSeparator),M=[],b=0;b-1&&(P=(P+m)/2),this._log("Score average:",P);var j=!this.options.tokenize||!this.options.matchAllTokens||k>=l.length;if(this._log("\nCheck Matches: "+j),(y||x.isMatch)&&j){var z=v[c];z?z.output.push({key:r,arrayIndex:o,value:i,score:P,matchedIndices:x.matchedIndices}):(v[c]={item:a,output:[{key:r,arrayIndex:o,value:i,score:P,matchedIndices:x.matchedIndices}]},g.push(v[c]))}}else if(s(i))for(var T=0,E=i.length;T-1&&(a.arrayIndex=i.arrayIndex),t.matches.push(a)}}}),this.options.includeScore&&r.push(function(e,t){t.score=e.score});for(var n=0,o=e.length;n