{"version":3,"sources":["webpack:///./app/javascript/packs/searchbar.js"],"names":["search_term","miniSearch","MiniSearch","fields","storeFields","searchOptions","prefix","fuzzy","all_politician_data","searched_data","all_politicians_data_endpoint","window","location","protocol","host","locale","$","data","formatPoli","politician","loading","text","$container","find","prepend","append","constituency_seat_no","constituency_seat_name","formatPoliSelection","matchCustom","params","trim","term","results","search","each","slice","index","value","push","indexOf","sortCustom","sort","a","b","document","addEventListener","getJSON","i","length","id","aliases","addAll","search_placeholder","select2","placeholder","dropdownAutoWidth","dropdownCssClass","multiple","maximumSelectionSize","templateResult","templateSelection","matcher","sorter","on","e","preventDefault","url","args","attr","initialize_select2"],"mappings":"0FAAA,uBAeIA,EAfJ,QAGIC,GAHJ,MAGiB,IAAIC,IAAW,CAC9BC,OAAQ,CAAC,OAAQ,UAAW,uBAAwB,0BACpDC,YAAa,CAAC,KAAM,OAAQ,UAAW,uBAAwB,0BAC/DC,cAAe,CACbC,QAAQ,EACRC,MAAO,OAKPC,EAAsB,GACtBC,EAAgB,GAEhBC,EAAgCC,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASE,KAAO,oBACzFC,EAASC,EAAE,QAAQC,KAAK,QAyC5B,SAASC,EAAYC,GACnB,GAAIA,EAAWC,QACb,OAAOD,EAAWE,KAGpB,IAAIC,EAAaN,EACf,6TAUF,OAJAM,EAAWC,KAAK,oCAAoCC,QAAQL,EAAWE,MACvEC,EAAWC,KAAK,uCAAuCE,OAAON,EAAWO,sBACzEJ,EAAWC,KAAK,yCAAyCE,OAAON,EAAWQ,wBAEpEL,EAGT,SAASM,EAAqBT,GAC5B,OAAOA,EAAWE,KAGpB,SAASQ,EAAYC,EAAQb,GAC3B,GAA4B,KAAxBD,EAAEe,KAAKD,EAAOE,MAChB,OAAOf,EAGT,GAAyB,qBAAdA,EAAKI,KACd,OAAO,KAGT,GAAGS,EAAOE,MAAQhC,EAAa,CAC7BS,EAAgB,GAChB,IAAIwB,EAAUhC,EAAWiC,OAAOJ,EAAOE,MACvChB,EAAEmB,KAAKF,EAAQG,MAAM,EAAE,IAAI,SAAUC,EAAOC,GAC1C7B,EAAc8B,KAAKD,EAAK,SAE1BtC,EAAc8B,EAAOE,KAGvB,OAAIvB,EAAc+B,QAAQvB,EAAKI,OAAS,EAC/BJ,EAGF,KAGT,SAASwB,EAAWxB,GAClB,OAAOA,EAAKyB,MAAK,SAASC,EAAGC,GAC3B,OAAOnC,EAAc+B,QAAQG,EAAEtB,MAAQZ,EAAc+B,QAAQI,EAAEvB,SAzFnEwB,SAASC,iBAAiB,oBAAmB,WAC3C9B,EAAE+B,QAASrC,GAA+B,SAAUO,GAElD,IAAK,IAAI+B,EAAI,EAAGA,EAAI/B,EAAKgC,OAAQD,IAC/BxC,EAAoB+B,KAAK,CAACW,GAAGjC,EAAK+B,GAAL,KAAgB3B,KAAKJ,EAAK+B,GAAL,cAAyBG,QAAQlC,EAAK+B,GAAL,QAAmBtB,qBAAqBT,EAAK+B,GAAL,qBAAgCrB,uBAAuBV,EAAK+B,GAAL,yBAEpL/C,EAAWmD,OAAO5C,GAMtB,SAA4BS,GAC1B,IAAIoC,EAAqB,GAGvBA,EADW,MAAVtC,EACoB,2CAEA,kEAGvBC,EAAE,4BAA4BsC,QAAQ,CACpCC,YAAaF,EACbG,mBAAmB,EACnBC,iBAAkB,qBAClBC,UAAU,EACVC,qBAAsB,EACtBC,eAAgB1C,EAChB2C,kBAAmBjC,EACnBkC,QAASjC,EACTkC,OAAQtB,EACRxB,KAAMA,IACL+C,GAAG,qBAAqB,SAAUC,GACnCA,EAAEC,iBACF,IAAIC,EAAMxD,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASE,KAAO,MAAQmD,EAAEnC,OAAOsC,KAAKnD,KAAKiC,GAC9FlC,EAAEL,QAAQ0D,KAAK,WAAWF,MA5B1BG,CAAmB9D,U","file":"js/searchbar-09cfaa319c5c84f4d962.chunk.js","sourcesContent":["import MiniSearch from 'minisearch'\nimport 'select2/dist/js/select2.full.js'\n\nlet miniSearch = new MiniSearch({\n fields: ['text', 'aliases', 'constituency_seat_no', 'constituency_seat_name'], // fields to index for full-text search\n storeFields: ['id', 'text', 'aliases', 'constituency_seat_no', 'constituency_seat_name'], // fields to return with search results\n searchOptions: {\n prefix: true,\n fuzzy: 0.2 \n }\n})\n\n//Variables Init\nvar all_politician_data = []\nvar searched_data = []\nvar search_term\nvar all_politicians_data_endpoint = window.location.protocol + \"//\" + window.location.host + \"/politicians.json\"\nvar locale = $(\"body\").data('lang');\n\ndocument.addEventListener(\"DOMContentLoaded\",function(){\n $.getJSON( all_politicians_data_endpoint, function( data ) {\n //Format results to suit select2 data\n for (var i = 0; i < data.length; i++) {\n all_politician_data.push({id:data[i][\"slug\"],text:data[i][\"personal_name\"],aliases:data[i][\"aliases\"],constituency_seat_no:data[i][\"constituency_seat_no\"],constituency_seat_name:data[i][\"constituency_seat_name\"]});\n }\n miniSearch.addAll(all_politician_data);\n initialize_select2(all_politician_data);\n });\n\n});\n\nfunction initialize_select2(data) {\n var search_placeholder = \"\"\n\n if(locale == 'en'){\n search_placeholder = 'Enter a name, constituency, code or area';\n }else{\n search_placeholder = 'Cari MP anda melalui nama, nombor kerusi atau kawasan terhubung';\n }\n //using local query instead of ajax to avoid bottlenecking server\n $(\"#politician_search_field\").select2({\n placeholder: search_placeholder,\n dropdownAutoWidth: true,\n dropdownCssClass: 'dropdown-menu show',\n multiple: true,\n maximumSelectionSize: 1,\n templateResult: formatPoli,\n templateSelection: formatPoliSelection,\n matcher: matchCustom,\n sorter: sortCustom,\n data: data\n }).on('select2:selecting', function (e) {\n e.preventDefault();\n var url = window.location.protocol + \"//\" + window.location.host + \"/p/\" + e.params.args.data.id;\n $(window).attr('location',url);\n });\n}\n\nfunction formatPoli (politician) {\n if (politician.loading) {\n return politician.text;\n }\n\n var $container = $(\n \"
\" +\n \"

\" +\n \"

\" +\n \"
\"\n );\n\n $container.find(\".select2-result-politician__name\").prepend(politician.text);\n $container.find(\".select2-result-politician__seat_no\").append(politician.constituency_seat_no);\n $container.find(\".select2-result-politician__seat_name\").append(politician.constituency_seat_name);\n\n return $container;\n}\n\nfunction formatPoliSelection (politician) {\n return politician.text;\n}\n\nfunction matchCustom(params, data) {\n if ($.trim(params.term) === '') {\n return data;\n }\n\n if (typeof data.text === 'undefined') {\n return null;\n }\n\n if(params.term != search_term ){\n searched_data = []\n let results = miniSearch.search(params.term)\n $.each(results.slice(0,9), function( index, value ) {\n searched_data.push(value[\"text\"]);\n });\n search_term = params.term\n }\n \n if (searched_data.indexOf(data.text) > -1) {\n return data;\n }\n\n return null;\n}\n\nfunction sortCustom(data){\n return data.sort(function(a, b){ \n return searched_data.indexOf(a.text) - searched_data.indexOf(b.text);\n });\n}"],"sourceRoot":""}