{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wool-fe/src/views/widgets/podcastsListingWidget/js/podcastsListingWidget.js","webpack:///./listsFilter.js"],"names":["CLS","PodcastsListingWidget","_createClass","element","_classCallCheck","this","$element","$","pageSize","listItems","find","concat","loadMoreButton","emptyResultText","filters","clearButton","itemClassName","handleListFilters","__webpack_require__","d","__webpack_exports__","self","isClear","showItems","on","matchedItems","not","last","nextAll","slice","removeClass","length","addClass","each","index","val","attr","change","filteredIndexes","dataStr","selectedValue","data","indexOf","push","filter","a","i","aa","lastIndexOf","matchedItemsCount"],"mappings":"84BAAA,IACMA,EAAM,wBAICC,4GAAqBC,CACjC,SAAAD,EAAYE,gGAASC,CAAAC,KAAAJ,GACpBI,KAAKF,QAAUA,EACfE,KAAKC,SAAWC,EAAEJ,GAClBE,KAAKG,SAAW,EAChBH,KAAKI,UAAYJ,KAAKC,SAASI,KAAI,IAAAC,OAAKX,EAAG,UAC3CK,KAAKO,eAAiBP,KAAKC,SAASI,KAAI,cACxCL,KAAKQ,gBAAkBR,KAAKC,SAASI,KAAI,IAAAC,OAAKX,EAAG,iBAEjDK,KAAKS,QAAUT,KAAKC,SAASI,KAAI,IAAAC,OAAKX,EAAG,oBACzCK,KAAKU,YAAcV,KAAKC,SAASI,KAAI,IAAAC,OAAKX,EAAG,yBAC7CK,KAAKW,cAAgB,yBACrBC,YAAkBZ,4DCjBpB,SAAAE,GAAAW,EAAAC,EAAAC,EAAA,sBAAAH,IAAO,IAAMA,EAAoB,SAACI,GACjC,IAAIC,EAEJC,EAAUF,GAGVA,EAAKT,eAAeY,GAAG,QAAS,WAETH,EAAKI,aAAaC,IAAI,WAAWC,OAEvCC,QAAQ,yBAAyBC,MAAM,EAAGR,EAAKb,SAAW,GAAGsB,YAAY,UAEzC,IAA7CT,EAAKI,aAAaC,IAAI,YAAYK,QACpCV,EAAKT,eAAeoB,SAAS,YAK/BX,EAAKP,QAAQU,GAAG,SAAU,WACrBF,GACHC,EAAUF,KAKZA,EAAKN,YAAYS,GAAG,QAAS,WAC5BH,EAAKP,QAAQmB,KAAK,SAACC,EAAO/B,GACzBmB,GAAU,EACVf,EAAEJ,GAASgC,IAAI5B,EAAEJ,GAASO,KAAK,gBAAgB0B,KAAK,UAAUC,WAG/Df,GAAU,EACVC,EAAUF,MAINE,EAAY,SAACF,GAElBA,EAAKiB,mBACLjB,EAAKZ,UAAUuB,SAAS,UACxBX,EAAKZ,UAAU2B,KAAK,gBAAgB,GACpCf,EAAKR,gBAAgBmB,SAAS,UAG9BX,EAAKP,QAAQmB,KAAK,SAACC,EAAO/B,GACzB,IACIoC,EADAC,EAAgBjC,EAAEJ,GAASgC,MAEaI,EAAjB,gBAA1BhC,EAAEJ,GAASiC,KAAK,MAAqC,QAAoB,SAC1Ef,EAAKZ,UAAUwB,KAAK,SAACC,EAAO/B,GACxBI,EAAEJ,GAASO,KAAKW,EAAKL,eAAeyB,KAAKF,GAASG,QAAQF,IAAkB,GAC9EnB,EAAKiB,gBAAgBK,KAAKT,OAM7Bb,EAAKiB,gBAAkBjB,EAAKiB,gBAAgBM,OAAO,SAACC,EAAGC,EAAGC,GAAE,OAAKA,EAAGL,QAAQG,KAAOC,GAAKC,EAAGC,YAAYH,KAAOC,IAG9GzB,EAAKZ,UAAUwB,KAAK,SAACC,EAAO/B,GACxBkB,EAAKiB,gBAAgBI,QAAQR,IAAU,IACzC3B,EAAEJ,GAAS2B,YAAY,UACvBvB,EAAEJ,GAASiC,KAAK,gBAAgB,MAKlCf,EAAKI,aAAeJ,EAAKf,SAASI,KAAK,yBACvCW,EAAK4B,kBAAoB5B,EAAKI,aAAaM,OAExCV,EAAK4B,kBAAkB,EAAI5B,EAAKb,UAClCa,EAAKT,eAAekB,YAAY,UAChCT,EAAKI,aAAaQ,KAAK,SAACC,EAAO/B,GAC3B+B,EAAQb,EAAKb,UACfD,EAAEJ,GAAS6B,SAAS,aAKtBX,EAAKT,eAAeoB,SAAS,UAID,GAA1BX,EAAK4B,mBACP5B,EAAKR,gBAAgBiB,YAAY","file":"widget-15.430117f348aedc9992ce.js","sourcesContent":["const NS = 'PodcastsListingWidget';\nconst CLS = 'podcastsListingWidget';\n\nimport { handleListFilters } from '../../../../global/js/listsFilter';\n\nexport class PodcastsListingWidget {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.pageSize = 4; // zero-indexed\n\t\tthis.listItems = this.$element.find(`.${CLS}-item`);\n\t\tthis.loadMoreButton = this.$element.find(`.load-more`);\n\t\tthis.emptyResultText = this.$element.find(`.${CLS}-emptyResult`);\n\t\t// handles two filter names only atm (dates/topics), might be improved to be dynamic if needed\n\t\tthis.filters = this.$element.find(`.${CLS}-filters select`);\n\t\tthis.clearButton = this.$element.find(`.${CLS}-btnClearWrap button`);\n\t\tthis.itemClassName = '.podcastListItemWidget';\n\t\thandleListFilters(this);\n\t}\n}\n","export const handleListFilters = (self) => {\n\tlet isClear;\n\n\tshowItems(self);\n\n\t// get clicks on the load more button\n\tself.loadMoreButton.on('click', () => {\n\t\t// get the last visible element in the matched set\n\t\tlet lastVisibleItem = self.matchedItems.not('.d-none').last();\n\t\t// show the next few items\n\t\tlastVisibleItem.nextAll('[data-matched=\"true\"]').slice(0, self.pageSize + 1).removeClass('d-none');\n\t\t// check if all matched items are shown and hide the load more button\n\t\tif(self.matchedItems.not(':visible').length === 0) {\n\t\t\tself.loadMoreButton.addClass('d-none');\n\t\t}\n\t});\n\n\t// get items on filters change\n\tself.filters.on('change', () => {\n\t\tif(!isClear) {\n\t\t\tshowItems(self);\n\t\t}\n\t});\n\n\t// get clicks on the clear button\n\tself.clearButton.on('click', () => {\n\t\tself.filters.each((index, element) => {\n\t\t\tisClear = true;\n\t\t\t$(element).val($(element).find('option:first').attr('value')).change();\n\t\t});\n\n\t\tisClear = false;\n\t\tshowItems(self);\n\t});\n};\n\nconst showItems = (self) => {\n\t// resets\n\tself.filteredIndexes = [];\n\tself.listItems.addClass('d-none');\n\tself.listItems.attr('data-matched', false);\n\tself.emptyResultText.addClass('d-none');\n\n\t// loop through filters\n\tself.filters.each((index, element) => {\n\t\tlet selectedValue = $(element).val();\n\t\tlet dataStr;\n\t\t($(element).attr('id') === 'datesFilter') ? dataStr = 'dates' : dataStr = 'topics';\n\t\tself.listItems.each((index, element) => {\n\t\t\tif($(element).find(self.itemClassName).data(dataStr).indexOf(selectedValue) > -1) {\n\t\t\t\tself.filteredIndexes.push(index);\n\t\t\t}\n\t\t});\n\t});\n\n\t// reduce the array to duplicate items only (items matched by both filters)\n\tself.filteredIndexes = self.filteredIndexes.filter((a, i, aa) => aa.indexOf(a) === i && aa.lastIndexOf(a) !== i);\n\n\t// use the filtered indexes to show / hide list items\n\tself.listItems.each((index, element) => {\n\t\tif(self.filteredIndexes.indexOf(index) > -1) {\n\t\t\t$(element).removeClass('d-none');\n\t\t\t$(element).attr('data-matched', true);\n\t\t}\n\t});\n\n\t// show only the first few\n\tself.matchedItems = self.$element.find('[data-matched=\"true\"]');\n\tself.matchedItemsCount = self.matchedItems.length;\n\n\tif(self.matchedItemsCount-1 > self.pageSize) {\n\t\tself.loadMoreButton.removeClass('d-none');\n\t\tself.matchedItems.each((index, element) => {\n\t\t\tif(index > self.pageSize) {\n\t\t\t\t$(element).addClass('d-none');\n\t\t\t}\n\t\t});\n\t}\n\telse {\n\t\tself.loadMoreButton.addClass('d-none');\n\t}\n\n\t// handle zero results (no matched filters)\n\tif(self.matchedItemsCount == 0) {\n\t\tself.emptyResultText.removeClass('d-none');\n\t}\n};\n"],"sourceRoot":""}