{"version":3,"sources":["hicomBreadcrumbs.ts"],"names":["HicomBreadcrumbs","sessionBreadcrumbs","breadcrumbDivider","breadcrumbHistoryLength","breadcrumbUnique","constructor","divider","historyLength","unique","this","getBreadcrumbs","id","JSON","parse","sessionStorage","pushCurrentBreadcrumb","let","thisDivider","thisBreadcrumb","$","localConfig","thisUrl","find","attr","breadcrumbData","title","text","url","active","hasClass","textonly","data","push","deduplicated","reduce","item","some","i","console","log","stringify","renderBreadcrumbs","debug","lastItem","breadcrumbItemBase","clone","lastIndex","length","breadcrumbIndex","breadcrumbItem","removeClass","removeAttr","remove","before","lastItemInSession"],"mappings":";MAAMA,iBAEFC,0BAA4B,oBAE5BC,kBACAC,wBACAC,iBAEAC,YAAaC,EAAgBC,EAAuBC,GAChDC,KAAKP,kBAAoBI,EACzBG,KAAKL,iBAA8B,SAAXI,CAC5B,CAEAE,eAAeC,GAEX,OAAOC,KAAKC,MAAMC,eAAed,iBAAiBC,mBAAmB,IAAIU,IAAO,IAAI,CAExF,CAEAI,sBAAsBJ,GAClBK,IAAIC,EAAcR,KAAKP,kBACnBgB,EAAiBC,EAAE,OAASR,EAAK,oCAAoC,EACrES,EAAcR,KAAKC,MAAMC,eAAe,qBAAuBH,IAAO,IAAI,EAC1EU,EAAUH,EAAeI,KAAK,GAAG,EAAEC,KAAK,MAAM,EAIlDP,IAAIQ,EAAiB,CACjBC,MAJYP,EAAeI,KAAK,GAAG,EAAEI,KAAI,EAKzCC,IAAKN,EACLO,OALaV,EAAeW,SAAS,QAAQ,EAM7CvB,QAASW,EACTa,SANeZ,EAAea,KAAK,WAAW,C,EAQlDX,EAAYY,KAAKR,CAAc,EAEF,GAAzBf,KAAKL,mBAED6B,EAAeb,EAAYc,OAAO,CAAC1B,EAAQ2B,KACtC3B,EAAO4B,KAAKC,GAAKA,EAAEV,MAAQQ,EAAKR,GAAG,GAChCQ,EAAKR,MAAQH,EAAeG,KAC5BnB,EAAOwB,KAAKG,CAAI,EAIjB3B,GACR,EAAE,GAEQwB,KAAKR,CAAc,EAChCc,QAAQC,IAAIN,CAAY,EAExBnB,eAAe,qBAAuBH,GAAMC,KAAK4B,UAAUP,CAAY,GAGvEnB,eAAe,qBAAuBH,GAAMC,KAAK4B,UAAUpB,CAAW,CAG9E,CAEAqB,kBAAkB9B,GACd2B,QAAQI,MAAM,wBAAwB/B,CAAE,EACxCK,IAAIf,EAAqBQ,KAAKC,eAAeC,CAAE,EAE3CgC,EAAWxB,EAAE,OAAOR,EAAG,oCAAoC,EAE3DiC,EAAqBD,EAASE,MAAK,EAInCC,GAFJR,QAAQI,MAAMzC,CAAkB,EAEhBA,EAAmB8C,OAAS,GAExCC,EAAgF,GAA7D/C,EAAmB8C,OAAStC,KAAKN,wBAAiC2C,EAAYrC,KAAKN,wBAAwB,EAAK,EAGvI,IAAKkC,EAAIW,EAAiBX,EAAIS,EAAWT,CAAC,GAAI,CAC1CrB,IAAIiC,EAAiBL,EAAmBC,MAAK,EAEzC3B,EAAiBjB,EAAmBoC,GAExCY,EAAeC,YAAY,QAAQ,EAAEC,WAAW,WAAW,GAE5B,SAA3BjC,EAAeY,UAEfmB,EAAe3B,KAAK,GAAG,EAAEC,KAAK,OAAQL,EAAeS,GAAG,EACxDsB,EAAe3B,KAAK,GAAG,IAGvB2B,EAAe3B,KAAK,GAAG,EAAE8B,OAAM,EAC/BH,IAJyBvB,KAAKR,EAAeO,KAAK,EAOtDkB,EAASU,OAAOJ,CAAc,CAElC,CAIIK,EAAoBrD,EAAmB6C,GAE3CH,EAASrB,KAAK,GAAG,EAAE8B,OAAM,EACzBT,EAASjB,KAAK4B,EAAkB7B,KAAK,CAEzC","file":"hicomBreadcrumbs.js","sourcesContent":["class HicomBreadcrumbs implements IHicomBreadcrumbs { \r\n\r\n static sessionBreadcrumbs = \"hicom-breadcrumbs\";\r\n\r\n breadcrumbDivider: string;\r\n breadcrumbHistoryLength: number\r\n breadcrumbUnique: boolean\r\n\r\n constructor( divider:string, historyLength: number, unique: string) {\r\n this.breadcrumbDivider = divider;\r\n this.breadcrumbUnique = unique === \"True\";\r\n }\r\n\r\n getBreadcrumbs(id) {\r\n\r\n return JSON.parse(sessionStorage[HicomBreadcrumbs.sessionBreadcrumbs+'_'+id] || '[]');\r\n\r\n }\r\n\r\n pushCurrentBreadcrumb(id) {\r\n let thisDivider = this.breadcrumbDivider;\r\n let thisBreadcrumb = $('nav#' + id + ' .breadcrumb .breadcrumb-item:last');\r\n let localConfig = JSON.parse(sessionStorage['hicom-breadcrumbs_' + id] || '[]');\r\n let thisUrl = thisBreadcrumb.find('a').attr('href');\r\n let thisTitle = thisBreadcrumb.find('a').text();\r\n let thisActive = thisBreadcrumb.hasClass('active');\r\n let thisTextOnly = thisBreadcrumb.data('text-only');\r\n let breadcrumbData = {\r\n title: thisTitle,\r\n url: thisUrl,\r\n active: thisActive,\r\n divider: thisDivider,\r\n textonly: thisTextOnly\r\n };\r\n localConfig.push(breadcrumbData);\r\n\r\n if (this.breadcrumbUnique == true) {\r\n\r\n let deduplicated = localConfig.reduce((unique, item) => {\r\n if (!unique.some(i => i.url === item.url)) {\r\n if (item.url !== breadcrumbData.url) {\r\n unique.push(item);\r\n }\r\n }\r\n\r\n return unique;\r\n }, []);\r\n\r\n deduplicated.push(breadcrumbData);\r\n console.log(deduplicated);\r\n\r\n sessionStorage['hicom-breadcrumbs_' + id] = JSON.stringify(deduplicated);\r\n }\r\n else {\r\n sessionStorage['hicom-breadcrumbs_' + id] = JSON.stringify(localConfig);\r\n }\r\n\r\n }\r\n\r\n renderBreadcrumbs(id) {\r\n console.debug('renderBreadcrumbs :: '+id)\r\n let sessionBreadcrumbs = this.getBreadcrumbs(id);\r\n\r\n let lastItem = $('nav#'+id+' .breadcrumb .breadcrumb-item:last')\r\n\r\n let breadcrumbItemBase = lastItem.clone();\r\n \r\n console.debug(sessionBreadcrumbs);\r\n\r\n let lastIndex = sessionBreadcrumbs.length - 1;\r\n\r\n let breadcrumbIndex = (sessionBreadcrumbs.length - this.breadcrumbHistoryLength) >= 0 ? (lastIndex - this.breadcrumbHistoryLength+1) : 0;\r\n\r\n // @ts-ignore\r\n for (i = breadcrumbIndex; i < lastIndex; i++) {\r\n let breadcrumbItem = breadcrumbItemBase.clone();\r\n // @ts-ignore\r\n let thisBreadcrumb = sessionBreadcrumbs[i];\r\n\r\n breadcrumbItem.removeClass('active').removeAttr('aria-page');\r\n\r\n if (thisBreadcrumb.textonly == \"False\") {\r\n\r\n breadcrumbItem.find('a').attr('href', thisBreadcrumb.url);\r\n breadcrumbItem.find('a').text(thisBreadcrumb.title);\r\n }\r\n else {\r\n breadcrumbItem.find('a').remove();\r\n breadcrumbItem.text(thisBreadcrumb.title);\r\n }\r\n\r\n lastItem.before(breadcrumbItem);\r\n\r\n }\r\n\r\n // Now setup last item\r\n\r\n let lastItemInSession = sessionBreadcrumbs[lastIndex];\r\n\r\n lastItem.find('a').remove();\r\n lastItem.text(lastItemInSession.title);\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n"]}