{"version":3,"sources":["webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/now.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_trimmedEndIndex.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_baseTrim.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/toNumber.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/debounce.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/search-input/styles.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/search-input/index.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/styles.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/tags-accordion/styles.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/tags-accordion/index.js","webpack://@edf-prj/landing-page/./src/site-pages/publications-index-page/index.js","webpack://@edf-prj/landing-page/./src/pages/publications.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_Symbol.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_getRawTag.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_objectToString.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_baseGetTag.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_freeGlobal.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/_root.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/isObject.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/isObjectLike.js","webpack://@edf-prj/landing-page/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/lodash-es/isSymbol.js"],"names":["reWhitespace","string","index","length","test","charAt","reTrimStart","slice","replace","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","value","isSymbol","isObject","other","valueOf","isBinary","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","clearTimeout","cancel","flush","makeStyles","theme","root","width","maxWidth","position","input","display","padding","spacing","margin","border","borderRadius","outline","icon","right","top","bottom","SearchInput","_ref","onInputChange","delay","inputValue","setInputValue","useState","classes","useStyles","handleOnDelayedChange","useMemo","_debounce","useEffect","React","className","placeholder","onChange","e","target","FontAwesomeIcon","defaultProps","contentHeaderWrapper","paddingBottom","boxShadow","headerTitle","fontSize","typography","pxToRem","headerSubtitle","color","headerTitlesWrapper","textAlign","marginTop","contentWrapper","maxHeight","overflowY","height","background","buttonWrapper","button","backgroundColor","cursor","justifyContent","alignItems","buttonText","fontWeight","palette","primary","main","textTransform","buttonIconWrapper","marginLeft","buttonIcon","common","white","transform","rotatedIcon","TagsAccordion","props","tags","onTagClick","selectedTags","visibleCount","loading","error","isExpanded","setIsExpanded","isTagSelected","id","find","tag","Loading","map","Tag","key","name","tagName","selected","onClick","type","previousState","Typography","variant","clsx","location","publications","setPublications","items","isError","allTags","setAllTags","visibleTags","setVisibleTags","publicationFilters","setPublicationFilters","title","onUpdateSearchInput","useCallback","newFilteredTags","filter","toLowerCase","includes","onToggleTag","tagItem","newSelectedTags","concat","_toConsumableArray","isUnmounted","client","then","response","tagsData","camelcaseKeys","data","deep","catch","tagIdsString","toString","PUBLICATION_STATUS","publicationsData","BigContentHeaderLayout","pathname","description","content","Grid","container","direction","justify","PublicationsAccordionList","Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","symToStringTag","isOwn","call","unmasked","freeGlobal","g","freeSelf","self","Function"],"mappings":"0SAqBA,EAHU,WACR,OAAO,cACT,ECnBIA,EAAe,KAenB,MALA,SAAyBC,GAEvB,IADA,IAAIC,EAAQD,EAAOE,OACZD,KAAWF,EAAaI,KAAKH,EAAOI,OAAOH,MAClD,OAAOA,CACT,ECZII,EAAc,OAYlB,MAHA,SAAkBL,GAChB,OAAOA,EAASA,EAAOM,MAAM,EAAG,EAAgBN,GAAU,GAAGO,QAAQF,EAAa,IAAML,CAC1F,E,SCNIQ,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA2CnB,MAlBA,SAAkBC,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,IAAI,EAAAC,EAAA,GAASD,GACX,OA1CM,IA4CR,IAAI,EAAAE,EAAA,GAASF,GAAQ,CACnB,IAAIG,EAAgC,mBAAjBH,EAAMI,QAAwBJ,EAAMI,UAAYJ,EACnEA,GAAQ,EAAAE,EAAA,GAASC,GAASA,EAAQ,GAAKA,CACzC,CACA,GAAoB,iBAATH,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ,EAASA,GACjB,IAAIK,EAAWT,EAAWN,KAAKU,GAC/B,OAAOK,GAAYR,EAAUP,KAAKU,GAASF,EAAaE,EAAMP,MAAM,GAAIY,EAAW,EAAI,GAAKV,EAAWL,KAAKU,GArDpG,KAqDoHA,CAC9H,ECnDIM,EAAYC,KAAKC,IACnBC,EAAYF,KAAKG,IAmKnB,MA3GA,SAAkBC,EAAMC,EAAMC,GAC5B,IAAIC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EACb,GAAmB,mBAARZ,EACT,MAAM,IAAIa,UAxEQ,uBAiFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOb,EACTc,EAAUb,EAIZ,OAHAD,EAAWC,OAAWc,EACtBT,EAAiBM,EACjBT,EAASN,EAAKmB,MAAMF,EAASD,EAE/B,CAeA,SAASI,EAAaL,GACpB,IAAIM,EAAoBN,EAAOP,EAM/B,YAAwBU,IAAjBV,GAA8Ba,GAAqBpB,GAAQoB,EAAoB,GAAKV,GALnEI,EAAON,GAK6FJ,CAC9H,CACA,SAASiB,IACP,IAAIP,EAAO,IACX,GAAIK,EAAaL,GACf,OAAOQ,EAAaR,GAGtBR,EAAUiB,WAAWF,EArBvB,SAAuBP,GACrB,IAEEU,EAAcxB,GAFQc,EAAOP,GAG/B,OAAOG,EAASb,EAAU2B,EAAapB,GAFfU,EAAON,IAEyCgB,CAC1E,CAgBqCC,CAAcX,GACnD,CACA,SAASQ,EAAaR,GAKpB,OAJAR,OAAUW,EAINN,GAAYT,EACPW,EAAWC,IAEpBZ,EAAWC,OAAWc,EACfZ,EACT,CAWA,SAASqB,IACP,IAAIZ,EAAO,IACTa,EAAaR,EAAaL,GAI5B,GAHAZ,EAAW0B,UACXzB,EAAW0B,KACXtB,EAAeO,EACXa,EAAY,CACd,QAAgBV,IAAZX,EACF,OA5DN,SAAqBQ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUiB,WAAWF,EAAcrB,GAE5BS,EAAUI,EAAWC,GAAQT,CACtC,CAqDayB,CAAYvB,GAErB,GAAIG,EAIF,OAFAqB,aAAazB,GACbA,EAAUiB,WAAWF,EAAcrB,GAC5Ba,EAAWN,EAEtB,CAIA,YAHgBU,IAAZX,IACFA,EAAUiB,WAAWF,EAAcrB,IAE9BK,CACT,CAGA,OA3FAL,EAAO,EAASA,IAAS,GACrB,EAAAV,EAAA,GAASW,KACXQ,IAAYR,EAAQQ,QAEpBL,GADAM,EAAS,YAAaT,GACHP,EAAU,EAASO,EAAQG,UAAY,EAAGJ,GAAQI,EACrEO,EAAW,aAAcV,IAAYA,EAAQU,SAAWA,GAoF1De,EAAUM,OAhCV,gBACkBf,IAAZX,GACFyB,aAAazB,GAEfE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,OAAUW,CACjD,EA2BAS,EAAUO,MA1BV,WACE,YAAmBhB,IAAZX,EAAwBD,EAASiB,EAAa,IACvD,EAyBOI,CACT,E,UCzKA,GAAeQ,QAAYC,IAAK,CAC5BC,KAAM,CACFC,MAAO,OACPC,SAAU,IACVC,SAAU,YAEdC,MAAO,CACHH,MAAO,OACPI,QAAS,QACTC,QAASP,EAAMQ,QAAQ,EAAG,GAC1BC,OAAQ,SACRC,OAAQ,oBACRC,aAAc,GACdC,QAAS,QAEbC,KAAM,CACFT,SAAU,WACVU,MAAO,GACPC,IAAK,EACLC,OAAQ,EACRP,OAAQ,c,SCdhB,MAAMQ,EAAcC,IAA+B,IAA9B,cAAEC,EAAa,MAAEC,GAAOF,EACzC,MAAM,EAACG,EAAW,EAACC,IAAiBC,cAAS,IAEvCC,EAAUC,IAEVC,GAAwBC,cAAQ,IAAMC,EAAST,EAAeC,IAAQ,CAACA,EAAOD,IAapF,OANAU,gBAAU,IACC,KACHH,EAAsB7B,QAAQ,GAEnC,CAAC6B,IAGAI,gBAAA,OAAKC,UAAWP,EAAQvB,MACpB6B,gBAAA,SAAOC,UAAWP,EAAQnB,MAAO2B,YAAY,YAAY/E,MAAOoE,EAAYY,SAb9DC,IAClBZ,EAAcY,EAAEC,OAAOlF,OACvByE,EAAsBQ,EAAEC,OAAOlF,MAAM,IAYjC6E,gBAACM,kBAAe,CAACvB,KAAM,CAAC,MAAO,UAAWkB,UAAWP,EAAQX,OAC3D,EAIdI,EAAYoB,aAAe,CACvBjB,MAAO,KAQX,QCzCA,GAAerB,QAAYC,IAAK,CAC5BsC,qBAAsB,CAClBC,cAAevC,EAAMQ,QAAQ,GAC7BgC,UAAW,QAEfC,YAAa,CACTC,SAAU1C,EAAM2C,WAAWC,QAAQ,KAEvCC,eAAgB,CACZC,MAAO,UACPrC,OAAQT,EAAMQ,QAAQ,EAAG,IAE7BuC,oBAAqB,CACjB5C,SAAU,IACV6C,UAAW,c,8BCdnB,GAAejD,QAAYC,IAAK,CAC5BC,KAAM,CACFG,SAAU,WACV6C,UAAWjD,EAAMQ,QAAQ,IAE7B0C,eAAgB,CACZF,UAAW,SACXG,UAAW,IACXC,UAAW,OACX,uBAAwB,CACpBlD,MAAO,MACPmD,OAAQ,OAEZ,6BAA8B,CAC1BC,WAAY,uBAEhB,6BAA8B,CAC1BA,WAAY,UACZ3C,aAAc,OAElB,mCAAoC,CAChC2C,WAAY,YAGpBC,cAAe,CACXnD,SAAU,WACVY,QAAS,GACTd,MAAO,QAEXsD,OAAQ,CACJ9C,OAAQ,OACRE,QAAS,OACT6C,gBAAiB,cACjBC,OAAQ,UACRpD,QAAS,OACTG,OAAQ,YACRkD,eAAgB,SAChBC,WAAY,UAEhBC,WAAY,CACRC,WAAY,IACZhB,MAAO9C,EAAM+D,QAAQC,QAAQC,KAC7BC,cAAe,aAEnBC,kBAAmB,CACfjE,MAAO,GACPmD,OAAQ,GACR1C,aAAc,MACd8C,gBAAiBzD,EAAM+D,QAAQC,QAAQC,KACvC3D,QAAS,OACTqD,eAAgB,SAChBC,WAAY,SACZQ,WAAYpE,EAAMQ,QAAQ,IAE9B6D,WAAY,CACRvB,MAAO9C,EAAM+D,QAAQO,OAAOC,MAC5B7B,SAAU1C,EAAM2C,WAAWC,QAAQ,IACnC4B,UAAW,iBAEfC,YAAa,CACTD,UAAW,sBClDnB,MAAME,EAAiBC,IACnB,MAAM,KAAEC,EAAI,WAAEC,EAAU,aAAEC,EAAY,aAAEC,EAAY,QAAEC,EAAO,MAAEC,GAAUN,GAEnE,EAACO,EAAW,EAACC,IAAiB5D,eAAS,GACvCC,EAAUC,EAAUkD,GAEpBS,EAAiBC,KACVP,EAAaQ,MAAMC,GAAQA,EAAIF,KAAOA,IAGnD,OACIvD,gBAAA,OAAKC,UAAWP,EAAQvB,MACpB6B,gBAAC0D,IAAO,CAACR,QAASA,EAASC,MAAOA,IAChCD,GAAYC,GAAyB,IAAhBL,EAAKtI,OAGxBwF,gBAAA,OAAKC,UAAWP,EAAQ0B,gBACnB0B,EAAKlI,MAAM,EAAGqI,GAAcU,KAAKF,GAC9BzD,gBAAC4D,IAAG,CAACC,IAAKJ,EAAIF,GAAIO,KAAML,EAAIM,QAASC,SAAUV,EAAcG,EAAIF,IAAKU,QAASA,IAAMlB,EAAWU,OAEnGL,GACGpD,gBAAA,WACK8C,EAAKlI,MAAMqI,EAAcH,EAAKtI,QAAQmJ,KAAKF,GACxCzD,gBAAC4D,IAAG,CACAC,IAAKJ,EAAIF,GACTO,KAAML,EAAIM,QACVC,SAAUV,EAAcG,EAAIF,IAC5BU,QAASA,IAAMlB,EAAWU,QAKzCX,EAAKtI,OAASyI,GACXjD,gBAAA,OAAKC,UAAWP,EAAQ+B,eACpBzB,gBAAA,UACIC,UAAWP,EAAQgC,OACnBwC,KAAK,SACLD,QAASA,IAAMZ,GAAec,IAAmBA,KAEjDnE,gBAACoE,IAAU,CAACC,QAAQ,UAAUpE,UAAWP,EAAQqC,YAC5CqB,EAAa,WAAa,iBAE/BpD,gBAAA,OAAKC,UAAWP,EAAQ2C,mBACpBrC,gBAACM,kBAAe,CACZvB,KAAM,CAAC,MAAO,eACdkB,WAAWqE,OAAK5E,EAAQ6C,WAAY,CAAE,CAAC7C,EAAQiD,aAAcS,UA/BrFpD,gBAAA,SAAG,qBAuCL,EAId4C,EAAcrC,aAAe,CACzB2C,SAAS,EACTC,OAAO,GAYX,QCmDA,MAvH+BN,IAC3B,MAAM,SAAE0B,GAAa1B,GACf,EAAC2B,EAAa,EAACC,IAAmBhF,cAAS,CAAEyD,SAAS,EAAMwB,MAAO,GAAIC,SAAS,KAChF,EAACC,EAAQ,EAACC,IAAcpF,cAAS,CAAEyD,SAAS,EAAMwB,MAAO,GAAIC,SAAS,KACtE,EAACG,EAAY,EAACC,IAAkBtF,cAAS,KACzC,EAACuF,EAAmB,EAACC,IAAyBxF,cAAS,CAAEyF,MAAO,GAAIpC,KAAM,KAE1EpD,EAAUC,IAEVwF,GAAsBC,kBACvBjK,IACG,GAAc,KAAVA,EACA4J,EAAeH,EAAQF,WACpB,CACH,MAAMW,EAAkBT,EAAQF,MAAMY,QAAQ7B,GAAQA,EAAIM,QAAQwB,cAAcC,SAASrK,EAAMoK,iBAC/FR,EAAeM,EACnB,IAEJ,CAACT,EAAQF,QAGPe,GAAcL,kBACfM,IACG,IAAIC,EAAkB,GACtB,MAAMrC,IAAkB0B,EAAmBlC,KAAKU,MAAMC,GAAQA,EAAIF,KAAOmC,EAAQnC,KAE7EoC,EADArC,EACkB0B,EAAmBlC,KAAKwC,QAAQ7B,GAAQA,EAAIF,KAAOmC,EAAQnC,KAE9D,GAAAqC,QAAAC,OAAOb,EAAmBlC,MAAI,CAAE4C,IAEnDT,GAAuBd,IAAa,IAAWA,EAAerB,KAAM6C,KAAmB,GAE3F,CAACX,EAAmBlC,OA8CxB,OA3CA/C,gBAAU,KACN,IAAI+F,GAAc,EAclB,OAbAC,QACS,4BACJC,MAAMC,IACH,IAAKH,EAAa,CACd,MAAMI,EAAWC,IAAcF,EAASG,KAAKtD,KAAM,CAAEuD,MAAM,IAC3DxB,EAAW,CAAE3B,SAAS,EAAOwB,MAAOwB,IACpCnB,EAAemB,EACnB,KAEHI,OAAM,KACHzB,EAAW,CAAE3B,SAAS,EAAOwB,MAAO,GAAIC,SAAS,GAAO,IAGzD,KACHmB,GAAc,CAAI,CACrB,GACF,KAEH/F,gBAAU,KACN,IAAI+F,GAAc,EAClBrB,GAAiBN,IAAa,IAAWA,EAAejB,SAAS,MACjE,MAAMqD,EAAevB,EAAmBlC,KAAKa,KAAKF,GAAQA,EAAIF,KAAIiD,WAelE,OAZAT,QACS,iCAAiCU,gBAA+BF,EAAY,YAAeA,EAAiB,KAChHP,MAAMC,IACH,IAAKH,EAAa,CACd,MAAMY,EAAmBP,IAAcF,EAASG,KAAK5B,aAAc,CAAE6B,MAAM,IAC3E5B,EAAgB,CAAEvB,SAAS,EAAOwB,MAAOgC,GAC7C,KAEHJ,OAAM,KACH7B,EAAgB,CAAEvB,SAAS,EAAOwB,MAAO,GAAIC,SAAS,GAAO,IAG9D,KACHmB,GAAc,CAAI,CACrB,GACF,CAACd,IAGAhF,gBAAC2G,IAAsB,CACnBC,SAAUrC,EAASqC,SACnB1B,MAAM,eACN2B,YAAY,6MACZnH,QAAS,CAAEc,qBAAsBd,EAAQc,sBACzCsG,QACI9G,gBAAC+G,IAAI,CAACC,WAAS,EAACC,UAAU,SAASC,QAAQ,SAASpF,WAAW,UAC3D9B,gBAAA,OAAKC,UAAWP,EAAQuB,qBACpBjB,gBAACoE,IAAU,CAACC,QAAQ,KAAKpE,UAAWP,EAAQiB,aAAa,gBAGzDX,gBAACoE,IAAU,CAACC,QAAQ,QAAQpE,UAAWP,EAAQqB,gBAAgB,+MAMnEf,gBAACb,EAAW,CAACE,cAAe8F,IAC5BnF,gBAAC4C,EAAa,CACVE,KAAMgC,EACN9B,aAAcgC,EAAmBlC,KACjCC,WAAY0C,EACZxC,aAAc,EACdC,QAAS0B,EAAQ1B,QACjBC,MAAOyB,EAAQD,YAK3B3E,gBAACmH,IAAyB,CAACzC,MAAOF,EAAaE,MAAOxB,QAASsB,EAAatB,QAASC,MAAOqB,EAAaG,UACpF,EC1HjC,G,uCCCIyC,E,QAAS,SACb,K,iFCDIC,EAAcC,OAAOC,UAGrB,EAAiBF,EAAYG,eAO7BC,EAAuBJ,EAAYb,SAGnCkB,EAAiB,IAAS,qBAAqB1K,EA0BnD,MAjBA,SAAmB7B,GACjB,IAAIwM,EAAQ,EAAeC,KAAKzM,EAAOuM,GACrCjE,EAAMtI,EAAMuM,GACd,IACEvM,EAAMuM,QAAkB1K,EACxB,IAAI6K,GAAW,CACjB,CAAE,MAAOzH,GAAI,CACb,IAAIhE,EAASqL,EAAqBG,KAAKzM,GAQvC,OAPI0M,IACEF,EACFxM,EAAMuM,GAAkBjE,SAEjBtI,EAAMuM,IAGVtL,CACT,ECjCI,EAPckL,OAAOC,UAOcf,SAYvC,MAHA,SAAwBrL,GACtB,OAAO,EAAqByM,KAAKzM,EACnC,ECVI,EAAiB,IAAS,qBAAqB6B,EAenD,MANA,SAAoB7B,GAClB,OAAa,MAATA,OACe6B,IAAV7B,EAdM,qBADH,gBAiBL,GAAkB,KAAkBmM,OAAOnM,GAAS,EAAUA,GAAS,EAAeA,EAC/F,C,oCCtBA,IAAI2M,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOT,SAAWA,QAAU,EAAAS,EACpF,K,kDCCIC,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKX,SAAWA,QAAUW,KAGxE9J,EAAO,KAAc6J,GAAYE,SAAS,cAATA,GACrC,K,kCCsBA,IAJA,SAAkB/M,GAChB,IAAI+I,SAAc/I,EAClB,OAAgB,MAATA,IAA0B,UAAR+I,GAA4B,YAARA,EAC/C,C,kCCDA,IAHA,SAAsB/I,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,2DCAA,IAHA,SAAkBA,GAChB,MAAuB,iBAATA,IAAqB,OAAaA,IApBlC,oBAoB4C,OAAWA,EACvE,C","file":"component---src-pages-publications-js-cb1dcf912f4a39f2c524.js","sourcesContent":["import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function () {\n return root.Date.now();\n};\nexport default now;","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\nexport default trimmedEndIndex;","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;\n}\nexport default baseTrim;","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nexport default toNumber;","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\nexport default debounce;","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n root: {\n width: '100%',\n maxWidth: 800,\n position: 'relative',\n },\n input: {\n width: '100%',\n display: 'block',\n padding: theme.spacing(2, 3),\n margin: '0 auto',\n border: '1px solid #D0D9DE',\n borderRadius: 40,\n outline: 'none',\n },\n icon: {\n position: 'absolute',\n right: 20,\n top: 0,\n bottom: 0,\n margin: 'auto 0',\n },\n}));\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { debounce } from 'lodash-es';\nimport * as PropTypes from 'prop-types';\n\nimport useStyles from './styles';\n\nimport { FontAwesomeIcon } from '$common/fontawesome-pro/react-fontawesome';\n\nconst SearchInput = ({ onInputChange, delay }) => {\n const [inputValue, setInputValue] = useState('');\n\n const classes = useStyles();\n\n const handleOnDelayedChange = useMemo(() => debounce(onInputChange, delay), [delay, onInputChange]);\n\n const handleChange = (e) => {\n setInputValue(e.target.value);\n handleOnDelayedChange(e.target.value);\n };\n\n useEffect(() => {\n return () => {\n handleOnDelayedChange.cancel();\n };\n }, [handleOnDelayedChange]);\n\n return (\n
\n \n \n
\n );\n};\n\nSearchInput.defaultProps = {\n delay: 300,\n};\n\nSearchInput.propTypes = {\n onInputChange: PropTypes.func.isRequired,\n delay: PropTypes.number,\n};\n\nexport default SearchInput;\n","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n contentHeaderWrapper: {\n paddingBottom: theme.spacing(7),\n boxShadow: 'none',\n },\n headerTitle: {\n fontSize: theme.typography.pxToRem(32),\n },\n headerSubtitle: {\n color: '#606060',\n margin: theme.spacing(2, 0),\n },\n headerTitlesWrapper: {\n maxWidth: 600,\n textAlign: 'center',\n },\n}));\n","import { makeStyles } from '@material-ui/styles';\n\nexport default makeStyles((theme) => ({\n root: {\n position: 'relative',\n marginTop: theme.spacing(3),\n },\n contentWrapper: {\n textAlign: 'center',\n maxHeight: 230,\n overflowY: 'auto',\n '&::-webkit-scrollbar': {\n width: '6px',\n height: '5px',\n },\n '&::-webkit-scrollbar-track': {\n background: 'rgba(0, 0, 0, 0.06)',\n },\n '&::-webkit-scrollbar-thumb': {\n background: '#D0D0D0',\n borderRadius: '2px',\n },\n '&::-webkit-scrollbar-thumb:hover': {\n background: '#B0B0B0',\n },\n },\n buttonWrapper: {\n position: 'absolute',\n bottom: -55,\n width: '100%',\n },\n button: {\n border: 'none',\n outline: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n display: 'flex',\n margin: '16px auto',\n justifyContent: 'center',\n alignItems: 'center',\n },\n buttonText: {\n fontWeight: 700,\n color: theme.palette.primary.main,\n textTransform: 'uppercase',\n },\n buttonIconWrapper: {\n width: 20,\n height: 20,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginLeft: theme.spacing(1),\n },\n buttonIcon: {\n color: theme.palette.common.white,\n fontSize: theme.typography.pxToRem(16),\n transform: 'rotate(90deg)',\n },\n rotatedIcon: {\n transform: 'rotate(270deg)',\n },\n}));\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport * as PropTypes from 'prop-types';\nimport { Typography } from '@material-ui/core';\n\nimport Loading from '$landing-page/components/loading';\nimport Tag from '$landing-page/components/tag';\n\nimport useStyles from './styles';\n\nimport { FontAwesomeIcon } from '$common/fontawesome-pro/react-fontawesome';\n\nconst TagsAccordion = (props) => {\n const { tags, onTagClick, selectedTags, visibleCount, loading, error } = props;\n\n const [isExpanded, setIsExpanded] = useState(false);\n const classes = useStyles(props);\n\n const isTagSelected = (id) => {\n return !!selectedTags.find((tag) => tag.id === id);\n };\n\n return (\n
\n \n {!loading && !error && tags.length === 0 ? (\n

No keyword found!

\n ) : (\n
\n {tags.slice(0, visibleCount).map((tag) => (\n onTagClick(tag)} />\n ))}\n {isExpanded && (\n
\n {tags.slice(visibleCount, tags.length).map((tag) => (\n onTagClick(tag)}\n />\n ))}\n
\n )}\n {tags.length > visibleCount && (\n
\n setIsExpanded((previousState) => !previousState)}\n >\n \n {isExpanded ? 'Collapse' : 'More Keywords'}\n \n
\n \n
\n \n
\n )}\n
\n )}\n
\n );\n};\n\nTagsAccordion.defaultProps = {\n loading: false,\n error: false,\n};\n\nTagsAccordion.propTypes = {\n tags: PropTypes.array.isRequired,\n selectedTags: PropTypes.array.isRequired,\n onTagClick: PropTypes.func.isRequired,\n visibleCount: PropTypes.number.isRequired,\n loading: PropTypes.bool,\n error: PropTypes.bool,\n};\n\nexport default TagsAccordion;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport camelcaseKeys from 'camelcase-keys';\nimport * as PropTypes from 'prop-types';\nimport { Grid, Typography } from '@material-ui/core';\n\nimport client from '$landing-page/client';\nimport PublicationsAccordionList from '$landing-page/components/publications-accordion-list';\nimport { PUBLICATION_STATUS } from '$landing-page/constants';\nimport BigContentHeaderLayout from '$landing-page/layouts/big-content-header-layout';\n\nimport SearchInput from './search-input';\nimport useStyles from './styles';\nimport TagsAccordion from './tags-accordion';\n\n// TODO: This whole page should be revamped. We are planning to add React-query, pagination for publications, autoComplete input for selecting tags, etc.\nconst PublicationsIndexPage = (props) => {\n const { location } = props;\n const [publications, setPublications] = useState({ loading: true, items: [], isError: false });\n const [allTags, setAllTags] = useState({ loading: true, items: [], isError: false });\n const [visibleTags, setVisibleTags] = useState([]);\n const [publicationFilters, setPublicationFilters] = useState({ title: '', tags: [] });\n\n const classes = useStyles();\n\n const onUpdateSearchInput = useCallback(\n (value) => {\n if (value === '') {\n setVisibleTags(allTags.items);\n } else {\n const newFilteredTags = allTags.items.filter((tag) => tag.tagName.toLowerCase().includes(value.toLowerCase()));\n setVisibleTags(newFilteredTags);\n }\n },\n [allTags.items]\n );\n\n const onToggleTag = useCallback(\n (tagItem) => {\n let newSelectedTags = [];\n const isTagSelected = !!publicationFilters.tags.find((tag) => tag.id === tagItem.id);\n if (isTagSelected) {\n newSelectedTags = publicationFilters.tags.filter((tag) => tag.id !== tagItem.id);\n } else {\n newSelectedTags = [...publicationFilters.tags, tagItem];\n }\n setPublicationFilters((previousState) => ({ ...previousState, tags: newSelectedTags }));\n },\n [publicationFilters.tags]\n );\n\n useEffect(() => {\n let isUnmounted = false;\n client\n .api('/sales/publication/tags/')\n .then((response) => {\n if (!isUnmounted) {\n const tagsData = camelcaseKeys(response.data.tags, { deep: true });\n setAllTags({ loading: false, items: tagsData });\n setVisibleTags(tagsData);\n }\n })\n .catch(() => {\n setAllTags({ loading: false, items: [], isError: true });\n });\n\n return () => {\n isUnmounted = true;\n };\n }, []);\n\n useEffect(() => {\n let isUnmounted = false;\n setPublications((previousState) => ({ ...previousState, loading: true }));\n const tagIdsString = publicationFilters.tags.map((tag) => tag.id).toString();\n\n // TODO-MAYBE: We can search locally since we get all of the publications from API.\n client\n .api(`/sales/publication/?status_id=${PUBLICATION_STATUS.published}${tagIdsString ? `&tag_ids=${tagIdsString}` : ''}`)\n .then((response) => {\n if (!isUnmounted) {\n const publicationsData = camelcaseKeys(response.data.publications, { deep: true });\n setPublications({ loading: false, items: publicationsData });\n }\n })\n .catch(() => {\n setPublications({ loading: false, items: [], isError: true });\n });\n\n return () => {\n isUnmounted = true;\n };\n }, [publicationFilters]);\n\n return (\n \n
\n \n Publications\n \n \n Avicenna Research offers a flexible platform which can be configured for many different scientific\n studies. The following publications demonstrate how Avicenna Research can help different study\n designs.\n \n
\n \n \n \n }\n >\n \n \n );\n};\n\nPublicationsIndexPage.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nexport default PublicationsIndexPage;\n","import PublicationsIndexPage from '$landing-page/site-pages/publications-index-page';\n\nexport default PublicationsIndexPage;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\nexport default Symbol;","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\nexport default getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\nexport default objectToString;","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\nexport default baseGetTag;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nexport default freeGlobal;","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\nexport default root;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\nexport default isObject;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\nexport default isObjectLike;","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\nexport default isSymbol;"],"sourceRoot":""}