{"version":3,"sources":["webpack://nada.org/./themes/custom/nada/js/components/geo-map.js"],"names":["geoMap","document","querySelector","statesList","svgStates","querySelectorAll","wordStates","statesData","statsBody","downloadLinkContainer","selectedState","scrollToStats","scrollIntoView","behavior","block","inline","selectAllStates","forEach","el","classList","add","removeAllHovering","innerHTML","remove","removeAllSelected","addHoveringFromList","stateCode","getAttribute","svg","svgState","addSelectedFromList","addHoveringFromState","stateId","wordState","addSelectedFromState","wordPos","offsetLeft","scrollLeft","addMapListeners","addEventListener","updateSelectedState","populateStatesList","states","state","setStateLi","template","clone","content","cloneNode","li","dataset","abbreviation","innerText","name","style","order","appendChild","setStateStats","stats","stat","statDiv","statNumber","statTitle","statSubTitle","statSmallText","re","number","match","replace","RegExp","subtitle","small_text","gsap","textContent","duration","ease","stagger","each","onUpdate","target","targets","setAttribute","numberWithCommas","Number","toFixed","onComplete","fullValue","textContentValue","anim","from","opacity","updateStateDownload","link","data","selectedStateData","find","download","x","toString","fetch","then","response","json","scrollLeftButton","scrollRightButton","container","scrollAmount","scrollByAmount","scrollBy","top","left"],"mappings":";;;;;;;;;;;;;;AAAA;AACA,IAAIA,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,sBAAvB,CAAb;AACA,IAAIC,UAAU,GAAGH,MAAM,CAACE,aAAP,CAChB,0CADgB,CAAjB;AAGA,IAAIE,SAAS,GAAGJ,MAAM,CAACK,gBAAP,CAAwB,aAAxB,CAAhB;AACA,IAAIC,UAAJ,EAAgBC,UAAhB,C,CAA4B;;AAC5B,IAAIC,SAAS,GAAGP,QAAQ,CAACC,aAAT,CACf,yCADe,CAAhB;AAGA,IAAIO,qBAAqB,GAAGR,QAAQ,CAACC,aAAT,CAAuB,qBAAvB,CAA5B;AACA,IAAIQ,aAAa,GAAG,IAApB,C,CAA0B;;AAE1B,SAASC,aAAT,GAAyB;AACxBV,UAAQ,CACNC,aADF,CACgB,6BADhB,EAEEU,cAFF,CAEiB;AAAEC,YAAQ,EAAE,QAAZ;AAAsBC,SAAK,EAAE,OAA7B;AAAsCC,UAAM,EAAE;AAA9C,GAFjB;AAGA;;AAED,SAASC,eAAT,GAA2B;AAC1BZ,WAAS,CAACa,OAAV,CAAmBC,EAAD,IAAQ;AACzBA,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACA,GAFD;AAGAnB,UAAQ,CAACC,aAAT,CAAuB,mBAAvB,EAA4CiB,SAA5C,CAAsDC,GAAtD,CAA0D,UAA1D;AACA;;AAED,SAASC,iBAAT,GAA6B;AAC5BpB,UAAQ,CAACC,aAAT,CAAuB,mBAAvB,EAA4CoB,SAA5C,GAAwD,oBAAxD;AACAhB,YAAU,CAACW,OAAX,CAAmB,UAAUC,EAAV,EAAc;AAChCA,MAAE,CAACC,SAAH,CAAaI,MAAb,CAAoB,UAApB;AACA,GAFD;AAGAnB,WAAS,CAACa,OAAV,CAAkB,UAAUC,EAAV,EAAc;AAC/BA,MAAE,CAACC,SAAH,CAAaI,MAAb,CAAoB,UAApB;AACA,GAFD;AAGA;;AAED,SAASC,iBAAT,GAA6B;AAC5BlB,YAAU,CAACW,OAAX,CAAmB,UAAUC,EAAV,EAAc;AAChCA,MAAE,CAACC,SAAH,CAAaI,MAAb,CAAoB,UAApB;AACA,GAFD;AAGAnB,WAAS,CAACa,OAAV,CAAkB,UAAUC,EAAV,EAAc;AAC/BA,MAAE,CAACC,SAAH,CAAaI,MAAb,CAAoB,UAApB;AACA,GAFD;AAGA;;AAED,SAASE,mBAAT,CAA6BP,EAA7B,EAAiC;AAChC,MAAIQ,SAAS,GAAGR,EAAE,CAACS,YAAH,CAAgB,YAAhB,CAAhB;;AACA,MAAID,SAAS,IAAI,IAAjB,EAAuB;AACtBtB,aAAS,CAACa,OAAV,CAAmBW,GAAD,IAAS;AAC1BA,SAAG,CAACT,SAAJ,CAAcC,GAAd,CAAkB,UAAlB;AACA,KAFD;AAGAF,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACA,GALD,MAKO;AACN,QAAIS,QAAQ,GAAG5B,QAAQ,CAACC,aAAT,CAAuB,MAAMwB,SAA7B,CAAf;AACAR,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACAS,YAAQ,CAACV,SAAT,CAAmBC,GAAnB,CAAuB,UAAvB;AACA;AACD;;AAED,SAASU,mBAAT,CAA6BZ,EAA7B,EAAiC;AAChC,MAAIQ,SAAS,GAAGR,EAAE,CAACS,YAAH,CAAgB,YAAhB,CAAhB;;AACA,MAAID,SAAS,IAAI,IAAjB,EAAuB;AACtBtB,aAAS,CAACa,OAAV,CAAmBW,GAAD,IAAS;AAC1BA,SAAG,CAACT,SAAJ,CAAcC,GAAd,CAAkB,UAAlB;AACA,KAFD;AAGAF,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACA,GALD,MAKO;AACN,QAAIS,QAAQ,GAAG5B,QAAQ,CAACC,aAAT,CAAuB,MAAMwB,SAA7B,CAAf;AACAR,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACAS,YAAQ,CAACV,SAAT,CAAmBC,GAAnB,CAAuB,UAAvB;AACA;AACD;;AAED,SAASW,oBAAT,CAA8Bb,EAA9B,EAAkC;AACjC,MAAIc,OAAO,GAAGd,EAAE,CAACS,YAAH,CAAgB,IAAhB,CAAd;AACA,MAAIM,SAAS,GAAGhC,QAAQ,CAACC,aAAT,CAAuB,kBAAkB8B,OAAlB,GAA4B,IAAnD,CAAhB;AACA/B,UAAQ,CAACC,aAAT,CAAuB,mBAAvB,EAA4CoB,SAA5C,GACCJ,EAAE,CAACS,YAAH,CAAgB,WAAhB,CADD;AAEAT,IAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACAa,WAAS,CAACd,SAAV,CAAoBC,GAApB,CAAwB,UAAxB;AACA;;AAED,SAASc,oBAAT,CAA8BhB,EAA9B,EAAkC;AACjC,MAAIc,OAAO,GAAGd,EAAE,CAACS,YAAH,CAAgB,IAAhB,CAAd;AACA,MAAIM,SAAS,GAAGhC,QAAQ,CAACC,aAAT,CAAuB,kBAAkB8B,OAAlB,GAA4B,IAAnD,CAAhB;AACA,MAAIG,OAAO,GAAGF,SAAS,CAACG,UAAxB;AACAlB,IAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACAa,WAAS,CAACd,SAAV,CAAoBC,GAApB,CAAwB,UAAxB;AACAjB,YAAU,CAACkC,UAAX,GAAwBF,OAAO,GAAG,EAAlC;AACA;;AAED,SAASG,eAAT,GAA2B;AAC1BhC,YAAU,CAACW,OAAX,CAAmB,UAAUC,EAAV,EAAc;AAChCA,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBX,mBAAa,IAAI,IAAjB,IAAyBc,iBAAiB,EAA1C;AACAC,yBAAmB,CAACP,EAAD,CAAnB;AACA,KAJD;AAKAA,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBX,mBAAa,IAAI,IAAjB,IAAyBM,eAAe,EAAxC;AACA,KAHD;AAIAE,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBI,yBAAmB,CAACP,EAAD,CAAnB;AACA,KAHD;AAIAA,MAAE,CAACqB,gBAAH,CAAoB,OAApB,EAA6B,YAAY;AACxClB,uBAAiB;AACjBG,uBAAiB;AACjBM,yBAAmB,CAACZ,EAAD,CAAnB;AACA,UAAIQ,SAAS,GAAGR,EAAE,CAACS,YAAH,CAAgB,YAAhB,CAAhB;AACAjB,mBAAa,GAAGgB,SAAhB;AACAf,mBAAa;AACb6B,yBAAmB,CAACjC,UAAD,EAAamB,SAAb,CAAnB;AACA,KARD;AASA,GAvBD;AAyBAtB,WAAS,CAACa,OAAV,CAAkB,UAAUC,EAAV,EAAc;AAC/BA,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBX,mBAAa,IAAI,IAAjB,IAAyBc,iBAAiB,EAA1C;AACAO,0BAAoB,CAACb,EAAD,CAApB;AACA,KAJD;AAKAA,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBX,mBAAa,IAAI,IAAjB,IAAyBM,eAAe,EAAxC;AACA,KAHD;AAIAE,MAAE,CAACqB,gBAAH,CAAoB,YAApB,EAAkC,YAAY;AAC7ClB,uBAAiB;AACjBU,0BAAoB,CAACb,EAAD,CAApB;AACA,KAHD;AAIAA,MAAE,CAACqB,gBAAH,CAAoB,OAApB,EAA6B,YAAY;AACxClB,uBAAiB;AACjBG,uBAAiB;AACjBU,0BAAoB,CAAChB,EAAD,CAApB;AACA,UAAIQ,SAAS,GAAGR,EAAE,CAACS,YAAH,CAAgB,IAAhB,CAAhB;AACAjB,mBAAa,GAAGgB,SAAhB;AACAf,mBAAa;AACb6B,yBAAmB,CAACjC,UAAD,EAAamB,SAAb,CAAnB;AACA,KARD;AASA,GAvBD;AAwBA;;AAED,SAASe,kBAAT,CAA4BC,MAA5B,EAAoC;AACnCA,QAAM,CAACzB,OAAP,CAAgB0B,KAAD,IAAW;AACvB;AACFC,cAAU,CAACD,KAAD,CAAV;AACA,GAHD,EADmC,CAKnC;;AACArC,YAAU,GAAGN,MAAM,CAACK,gBAAP,CAAwB,oBAAxB,CAAb;AACA;;AAED,SAASuC,UAAT,CAAoBD,KAApB,EAA2B;AAC1B,MAAIE,QAAQ,GAAG5C,QAAQ,CAACC,aAAT,CAAuB,WAAvB,CAAf;AACA,MAAI4C,KAAK,GAAGD,QAAQ,CAACE,OAAT,CAAiBC,SAAjB,CAA2B,IAA3B,CAAZ;AACA,MAAIC,EAAE,GAAGH,KAAK,CAAC5C,aAAN,CAAoB,IAApB,CAAT;AACA+C,IAAE,CAACC,OAAH,CAAWP,KAAX,GAAmBA,KAAK,CAACQ,YAAzB;AACAF,IAAE,CAACG,SAAH,GAAeT,KAAK,CAACU,IAArB;AACAV,OAAK,CAACQ,YAAN,IAAsB,IAAtB,GAA8BF,EAAE,CAACK,KAAH,CAASC,KAAT,GAAiB,IAA/C,GAAuD,EAAvD,CAN0B,CAMiC;;AAC3DpD,YAAU,CAACqD,WAAX,CAAuBV,KAAvB;AACA;;AAED,SAASW,aAAT,CAAuBC,KAAvB,EAA8B;AAC7B,MAAIb,QAAQ,GAAG5C,QAAQ,CAACC,aAAT,CAAuB,aAAvB,CAAf;AACAM,WAAS,CAACc,SAAV,GAAsB,EAAtB,CAF6B,CAEH;;AAE1B,OAAK,IAAIqC,IAAT,IAAiBD,KAAjB,EAAwB;AACvB;AACA,QAAIZ,KAAK,GAAGD,QAAQ,CAACE,OAAT,CAAiBC,SAAjB,CAA2B,IAA3B,CAAZ;AACA,QAAIY,OAAO,GAAGd,KAAK,CAAC5C,aAAN,CAAoB,OAApB,CAAd;AAEA,QAAI2D,UAAU,GAAGD,OAAO,CAAC1D,aAAR,CAAsB,cAAtB,CAAjB;AACA,QAAI4D,SAAS,GAAGF,OAAO,CAAC1D,aAAR,CAAsB,aAAtB,CAAhB;AACA,QAAI6D,YAAY,GAAGH,OAAO,CAAC1D,aAAR,CAAsB,gBAAtB,CAAnB;AACA,QAAI8D,aAAa,GAAGJ,OAAO,CAAC1D,aAAR,CAAsB,kBAAtB,CAApB;AAEA,QAAI+D,EAAE,GAAG,4BAAT;AAEAH,aAAS,CAACV,SAAV,GAAsBO,IAAtB,CAZuB,CAYK;AAE5B;AACA;AACA;;AACAE,cAAU,CAACvC,SAAX,GAAuBoC,KAAK,CAACC,IAAD,CAAL,CAAYO,MAAZ,CAAmBC,KAAnB,CAAyB,KAAzB,IACpBT,KAAK,CAACC,IAAD,CAAL,CAAYO,MAAZ,CAAmBE,OAAnB,CACAH,EADA,EAEA,0BACCP,KAAK,CAACC,IAAD,CAAL,CAAYO,MAAZ,CAAmBC,KAAnB,CAAyB,IAAIE,MAAJ,CAAWJ,EAAX,CAAzB,CADD,GAEC,SAJD,CADoB,GAOpBP,KAAK,CAACC,IAAD,CAAL,CAAYO,MAAZ,CAAmBE,OAAnB,CACAV,KAAK,CAACC,IAAD,CAAL,CAAYO,MADZ,EAEA,0BACCR,KAAK,CAACC,IAAD,CAAL,CAAYO,MAAZ,CAAmBE,OAAnB,CAA2B,KAA3B,EAAkC,EAAlC,CADD,GAEC,SAJD,CAPH,CAjBuB,CA+BvB;;AACAL,gBAAY,CAACzC,SAAb,GAAyBoC,KAAK,CAACC,IAAD,CAAL,CAAYW,QAAZ,GAAuBZ,KAAK,CAACC,IAAD,CAAL,CAAYW,QAAnC,GAA8C,EAAvE;AACAN,iBAAa,CAAC1C,SAAd,GAA0BoC,KAAK,CAACC,IAAD,CAAL,CAAYY,UAAZ,GACvBb,KAAK,CAACC,IAAD,CAAL,CAAYY,UADW,GAEvB,EAFH,CAjCuB,CAqCvB;;AACA/D,aAAS,CAACgD,WAAV,CAAsBV,KAAtB,EAtCuB,CAwCvB;AACA;;AACA0B,kDAAA,CAAUX,UAAU,CAAC3D,aAAX,CAAyB,SAAzB,CAAV,EAA+C;AAC9CuE,iBAAW,EAAE,CADiC;AAE9CC,cAAQ,EAAE,CAFoC;AAG9CC,UAAI,EAAE,WAHwC;AAI9C;AACAC,aAAO,EAAE;AACRC,YAAI,EAAE,GADE;AAERC,gBAAQ,EAAE,YAAY;AACrB,gBAAMC,MAAM,GAAG,KAAKC,OAAL,GAAe,CAAf,CAAf,CADqB,CAErB;AACA;;AACAD,gBAAM,CAACE,YAAP,CACC,iBADD,EAECC,gBAAgB,CAAC,KAAKF,OAAL,GAAe,CAAf,EAAkBP,WAAnB,CAFjB;AAIAM,gBAAM,CAACzD,SAAP,GAAmB4D,gBAAgB,CAClCC,MAAM,CAAC,KAAKH,OAAL,GAAe,CAAf,EAAkBP,WAAnB,CAAN,CAAsCW,OAAtC,CAA8C,CAA9C,CADkC,CAAnC;AAGA,SAbO;AAcRC,kBAAU,EAAE,YAAY;AACvB,gBAAMN,MAAM,GAAG,KAAKC,OAAL,GAAe,CAAf,CAAf;AACA,gBAAMM,SAAS,GAAGP,MAAM,CAACpD,YAAP,CAAoB,iBAApB,CAAlB;AACA,gBAAM4D,gBAAgB,GAAGR,MAAM,CAACN,WAAhC;;AACA,cAAIa,SAAS,KAAKC,gBAAlB,EAAoC;AACnCR,kBAAM,CAACzD,SAAP,GAAmBgE,SAAnB;AACA;AACD;AArBO;AALqC,KAA/C,EA1CuB,CAwEvB;;AACA,QAAIE,IAAI,GAAGhB,kDAAA,EAAX;AACAgB,QAAI,CACFC,IADF,CACO3B,SADP,EACkB;AAAEY,cAAQ,EAAE,GAAZ;AAAiBgB,aAAO,EAAE;AAA1B,KADlB,EAEED,IAFF,CAEO1B,YAFP,EAEqB;AAAEW,cAAQ,EAAE,GAAZ;AAAiBgB,aAAO,EAAE;AAA1B,KAFrB,EAGED,IAHF,CAGOzB,aAHP,EAGsB;AACpBU,cAAQ,EAAE,GADU;AAEpBgB,aAAO,EAAE,CAFW;AAGpBd,aAAO,EAAE;AAAEC,YAAI,EAAE;AAAR;AAHW,KAHtB;AAQA;AACD;;AAED,SAASc,mBAAT,CAA6BtC,IAA7B,EAAmCuC,IAAnC,EAAyC;AACxCnF,uBAAqB,CAACP,aAAtB,CAAoC,GAApC,EAAyC+E,YAAzC,CAAsD,MAAtD,EAA8DW,IAA9D;AACAnF,uBAAqB,CAACP,aAAtB,CAAoC,aAApC,EAAmDkD,SAAnD,GAA+DC,IAA/D;AACA5C,uBAAqB,CAACU,SAAtB,CAAgCI,MAAhC,CAAuC,QAAvC;AACA;;AAED,SAASiB,mBAAT,CAA6BqD,IAA7B,EAAmClD,KAAnC,EAA0C;AACzC,MAAImD,iBAAiB,GAAGD,IAAI,CAACE,IAAL,CACvB,CAAC;AAAE5C;AAAF,GAAD,KAAsBA,YAAY,KAAKR,KADhB,CAAxB;AAGA1C,UAAQ,CAACC,aAAT,CAAuB,iBAAvB,EAA0CkD,SAA1C,GAAsD0C,iBAAiB,CAACzC,IAAxE;AACAI,eAAa,CAACqC,iBAAiB,CAACD,IAAnB,CAAb;;AACA,MAAIC,iBAAiB,CAAC,MAAD,CAArB,EAA+B;AAC9B;AACA9F,UAAM,CAACE,aAAP,CAAqB,mBAArB,EAA0CoB,SAA1C,GACCwE,iBAAiB,CAAC,MAAD,CADlB;AAEA,GAVwC,CAWzC;;;AACAA,mBAAiB,CAACE,QAAlB,GACGL,mBAAmB,CAACG,iBAAiB,CAACzC,IAAnB,EAAyByC,iBAAiB,CAACE,QAA3C,CADtB,GAEGvF,qBAAqB,CAACU,SAAtB,CAAgCC,GAAhC,CAAoC,QAApC,CAFH;AAGA;;AAED,SAAS8D,gBAAT,CAA0Be,CAA1B,EAA6B;AAC5B;AACA,SAAOA,CAAC,CAACC,QAAF,GAAa9B,OAAb,CAAqB,uBAArB,EAA8C,GAA9C,CAAP;AACA,C,CAED;;;AACA+B,KAAK,CAACnG,MAAM,CAAC2B,YAAP,CAAoB,cAApB,CAAD,CAAL,CACEyE,IADF,CACQC,QAAD,IAAcA,QAAQ,CAACC,IAAT,EADrB,EAEEF,IAFF,CAEQP,IAAD,IAAU;AACftF,YAAU,GAAGsF,IAAb;AACApD,oBAAkB,CAAClC,UAAD,CAAlB;AACA+B,iBAAe;AACfE,qBAAmB,CAACjC,UAAD,EAAaG,aAAb,CAAnB;AACAA,eAAa,IAAI,IAAjB,IACCN,SAAS,CAACa,OAAV,CAAmBC,EAAD,IAAQ;AACzBA,MAAE,CAACC,SAAH,CAAaC,GAAb,CAAiB,UAAjB;AACA,GAFD,CADD;AAIAV,eAAa,IAAI,IAAjB,IACCT,QAAQ,CACNC,aADF,CACgB,kBAAkBQ,aAAlB,GAAkC,IADlD,EAEES,SAFF,CAEYC,GAFZ,CAEgB,UAFhB,CADD;AAIA,CAfF;AAiBA,IAAIF,EAAE,GAAGjB,QAAQ,CAACC,aAAT,CAAuB,wBAAvB,CAAT;AACA,IAAIqG,gBAAgB,GAAGrF,EAAE,CAAChB,aAAH,CAAiB,qBAAjB,CAAvB;AACA,IAAIsG,iBAAiB,GAAGtF,EAAE,CAAChB,aAAH,CAAiB,sBAAjB,CAAxB;AACA,IAAIuG,SAAS,GAAGvF,EAAE,CAAChB,aAAH,CAAiB,oBAAjB,CAAhB;AACA,IAAIwG,YAAY,GAAGxF,EAAE,CAACgC,OAAH,CAAWyD,cAAX,GAChBzF,EAAE,CAACgC,OAAH,CAAWyD,cADK,GAEhB,KAFH;AAIAJ,gBAAgB,CAAChE,gBAAjB,CAAkC,OAAlC,EAA2C,YAAY;AACtDkE,WAAS,CAACG,QAAV,CAAmB;AAAEC,OAAG,EAAE,CAAP;AAAUC,QAAI,EAAE,CAACJ,YAAjB;AAA+B7F,YAAQ,EAAE;AAAzC,GAAnB;AACA,CAFD;AAGA2F,iBAAiB,CAACjE,gBAAlB,CAAmC,OAAnC,EAA4C,YAAY;AACvDkE,WAAS,CAACG,QAAV,CAAmB;AAAEC,OAAG,EAAE,CAAP;AAAUC,QAAI,EAAEJ,YAAhB;AAA8B7F,YAAQ,EAAE;AAAxC,GAAnB;AACA,CAFD,E","file":"webpack-chunks/chunk.themes_custom_nada_js_components_geo-map_js.059a5defbb54dcaaab74.js","sourcesContent":["import gsap from \"gsap\";\nlet geoMap = document.querySelector(\".geographic-data-map\");\nlet statesList = geoMap.querySelector(\n\t\".geographic-data-map__map--state-list ul\"\n);\nlet svgStates = geoMap.querySelectorAll(\"#states > *\");\nlet wordStates, statesData; // initialize these for later use\nlet statsBody = document.querySelector(\n\t\".geographic-data-map__stats .stats-body\"\n);\nlet downloadLinkContainer = document.querySelector(\".state-pdf-download\");\nlet selectedState = \"US\"; // Default to selecting US first\n\nfunction scrollToStats() {\n\tdocument\n\t\t.querySelector(\".geographic-data-map__stats\")\n\t\t.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"nearest\" });\n}\n\nfunction selectAllStates() {\n\tsvgStates.forEach((el) => {\n\t\tel.classList.add(\"selected\");\n\t});\n\tdocument.querySelector(\"[data-state='US']\").classList.add(\"selected\");\n}\n\nfunction removeAllHovering() {\n\tdocument.querySelector(\".svg-states title\").innerHTML = \"Map of U.S. States\";\n\twordStates.forEach(function (el) {\n\t\tel.classList.remove(\"hovering\");\n\t});\n\tsvgStates.forEach(function (el) {\n\t\tel.classList.remove(\"hovering\");\n\t});\n}\n\nfunction removeAllSelected() {\n\twordStates.forEach(function (el) {\n\t\tel.classList.remove(\"selected\");\n\t});\n\tsvgStates.forEach(function (el) {\n\t\tel.classList.remove(\"selected\");\n\t});\n}\n\nfunction addHoveringFromList(el) {\n\tlet stateCode = el.getAttribute(\"data-state\");\n\tif (stateCode == \"US\") {\n\t\tsvgStates.forEach((svg) => {\n\t\t\tsvg.classList.add(\"hovering\");\n\t\t});\n\t\tel.classList.add(\"hovering\");\n\t} else {\n\t\tlet svgState = document.querySelector(\"#\" + stateCode);\n\t\tel.classList.add(\"hovering\");\n\t\tsvgState.classList.add(\"hovering\");\n\t}\n}\n\nfunction addSelectedFromList(el) {\n\tlet stateCode = el.getAttribute(\"data-state\");\n\tif (stateCode == \"US\") {\n\t\tsvgStates.forEach((svg) => {\n\t\t\tsvg.classList.add(\"selected\");\n\t\t});\n\t\tel.classList.add(\"selected\");\n\t} else {\n\t\tlet svgState = document.querySelector(\"#\" + stateCode);\n\t\tel.classList.add(\"selected\");\n\t\tsvgState.classList.add(\"selected\");\n\t}\n}\n\nfunction addHoveringFromState(el) {\n\tlet stateId = el.getAttribute(\"id\");\n\tlet wordState = document.querySelector(\"[data-state='\" + stateId + \"']\");\n\tdocument.querySelector(\".svg-states title\").innerHTML =\n\t\tel.getAttribute(\"data-name\");\n\tel.classList.add(\"hovering\");\n\twordState.classList.add(\"hovering\");\n}\n\nfunction addSelectedFromState(el) {\n\tlet stateId = el.getAttribute(\"id\");\n\tlet wordState = document.querySelector(\"[data-state='\" + stateId + \"']\");\n\tlet wordPos = wordState.offsetLeft;\n\tel.classList.add(\"selected\");\n\twordState.classList.add(\"selected\");\n\tstatesList.scrollLeft = wordPos - 40;\n}\n\nfunction addMapListeners() {\n\twordStates.forEach(function (el) {\n\t\tel.addEventListener(\"mouseenter\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tselectedState == \"US\" && removeAllSelected();\n\t\t\taddHoveringFromList(el);\n\t\t});\n\t\tel.addEventListener(\"mouseleave\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tselectedState == \"US\" && selectAllStates();\n\t\t});\n\t\tel.addEventListener(\"touchstart\", function () {\n\t\t\tremoveAllHovering();\n\t\t\taddHoveringFromList(el);\n\t\t});\n\t\tel.addEventListener(\"click\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tremoveAllSelected();\n\t\t\taddSelectedFromList(el);\n\t\t\tlet stateCode = el.getAttribute(\"data-state\");\n\t\t\tselectedState = stateCode;\n\t\t\tscrollToStats();\n\t\t\tupdateSelectedState(statesData, stateCode);\n\t\t});\n\t});\n\n\tsvgStates.forEach(function (el) {\n\t\tel.addEventListener(\"mouseenter\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tselectedState == \"US\" && removeAllSelected();\n\t\t\taddHoveringFromState(el);\n\t\t});\n\t\tel.addEventListener(\"mouseleave\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tselectedState == \"US\" && selectAllStates();\n\t\t});\n\t\tel.addEventListener(\"touchstart\", function () {\n\t\t\tremoveAllHovering();\n\t\t\taddHoveringFromState(el);\n\t\t});\n\t\tel.addEventListener(\"click\", function () {\n\t\t\tremoveAllHovering();\n\t\t\tremoveAllSelected();\n\t\t\taddSelectedFromState(el);\n\t\t\tlet stateCode = el.getAttribute(\"id\");\n\t\t\tselectedState = stateCode;\n\t\t\tscrollToStats();\n\t\t\tupdateSelectedState(statesData, stateCode);\n\t\t});\n\t});\n}\n\nfunction populateStatesList(states) {\n\tstates.forEach((state) => {\n    // console.log(state);\n\t\tsetStateLi(state);\n\t});\n\t// Update our wordStates object for the SVG/li highlighting functions\n\twordStates = geoMap.querySelectorAll(\".list-of-states li\");\n}\n\nfunction setStateLi(state) {\n\tlet template = document.querySelector(\"#state-li\");\n\tlet clone = template.content.cloneNode(true);\n\tlet li = clone.querySelector(\"li\");\n\tli.dataset.state = state.abbreviation;\n\tli.innerText = state.name;\n\tstate.abbreviation == \"US\" ? (li.style.order = \"-1\") : \"\"; // Make sure US is always at the front of the line\n\tstatesList.appendChild(clone);\n}\n\nfunction setStateStats(stats) {\n\tlet template = document.querySelector(\"#state-stat\");\n\tstatsBody.innerHTML = \"\"; // reset contents of stats-body\n\n\tfor (let stat in stats) {\n\t\t// console.log(stat, stats);\n\t\tlet clone = template.content.cloneNode(true);\n\t\tlet statDiv = clone.querySelector(\".stat\");\n\n\t\tlet statNumber = statDiv.querySelector(\".stat-number\");\n\t\tlet statTitle = statDiv.querySelector(\".stat-title\");\n\t\tlet statSubTitle = statDiv.querySelector(\".stat-subtitle\");\n\t\tlet statSmallText = statDiv.querySelector(\".stat-small-text\");\n\n\t\tlet re = /([^(\\$)])(.*)([^a-zA-Z])/gi;\n\n\t\tstatTitle.innerText = stat; // Set the title for the stat\n\n\t\t// I know this statement is really wild but it works, so... 👀\n\t\t// TO-DO Possibly make this not so intense looking lol\n\t\t// Anyways, if you're wondering what's actually going on here: First we check if our statNumber matches a regex pattern containing a dollar symbol. If it does, then that means it contains a dollar sign and ends with a alphabetical character (e.g $1B). We can only animate the number itself, not the other characters, so this helps us isolate that number and wrap it in a span. Of course, if we're only getting a number in the first place this regex won't match. If it doesn't match then we still want to wrap it in that span so we can have the same way to target them with the gsap function below.\n\t\tstatNumber.innerHTML = stats[stat].number.match(/\\D/g)\n\t\t\t? stats[stat].number.replace(\n\t\t\t\t\tre,\n\t\t\t\t\t\"<span class='number'>\" +\n\t\t\t\t\t\tstats[stat].number.match(new RegExp(re)) +\n\t\t\t\t\t\t\"</span>\"\n\t\t\t  )\n\t\t\t: stats[stat].number.replace(\n\t\t\t\t\tstats[stat].number,\n\t\t\t\t\t\"<span class='number'>\" +\n\t\t\t\t\t\tstats[stat].number.replace(/\\D/g, \"\") +\n\t\t\t\t\t\t\"</span>\"\n\t\t\t  );\n\n\t\t// Phew, now just toss the subtitle and small text in their respective divs, if they exist.\n\t\tstatSubTitle.innerHTML = stats[stat].subtitle ? stats[stat].subtitle : \"\";\n\t\tstatSmallText.innerHTML = stats[stat].small_text\n\t\t\t? stats[stat].small_text\n\t\t\t: \"\";\n\n\t\t// Finally, after piecing it all together, actually attach the newly created stat div to the stats-body.\n\t\tstatsBody.appendChild(clone);\n\n\t\t// And here is the animation function itself, which actually runs after the stat has already been set\n\t\t// this first one animates the numbers\n\t\tgsap.from(statNumber.querySelector(\".number\"), {\n\t\t\ttextContent: 0,\n\t\t\tduration: 2,\n\t\t\tease: \"power1.in\",\n\t\t\t// snap: { textContent: 1 },\n\t\t\tstagger: {\n\t\t\t\teach: 1.0,\n\t\t\t\tonUpdate: function () {\n\t\t\t\t\tconst target = this.targets()[0];\n\t\t\t\t\t// We're setting this with the mostly unfiltered version of the content\n\t\t\t\t\t// so we can snap to it at the end\n\t\t\t\t\ttarget.setAttribute(\n\t\t\t\t\t\t\"data-full-value\",\n\t\t\t\t\t\tnumberWithCommas(this.targets()[0].textContent)\n\t\t\t\t\t);\n\t\t\t\t\ttarget.innerHTML = numberWithCommas(\n\t\t\t\t\t\tNumber(this.targets()[0].textContent).toFixed(0)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tonComplete: function () {\n\t\t\t\t\tconst target = this.targets()[0];\n\t\t\t\t\tconst fullValue = target.getAttribute(\"data-full-value\");\n\t\t\t\t\tconst textContentValue = target.textContent;\n\t\t\t\t\tif (fullValue !== textContentValue) {\n\t\t\t\t\t\ttarget.innerHTML = fullValue;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\t// and this one animates the text under the numbers\n\t\tlet anim = gsap.timeline();\n\t\tanim\n\t\t\t.from(statTitle, { duration: 1.0, opacity: 0 })\n\t\t\t.from(statSubTitle, { duration: 1.0, opacity: 0 })\n\t\t\t.from(statSmallText, {\n\t\t\t\tduration: 1.0,\n\t\t\t\topacity: 0,\n\t\t\t\tstagger: { each: 0.25 },\n\t\t\t});\n\t}\n}\n\nfunction updateStateDownload(name, link) {\n\tdownloadLinkContainer.querySelector(\"a\").setAttribute(\"href\", link);\n\tdownloadLinkContainer.querySelector(\".state-name\").innerText = name;\n\tdownloadLinkContainer.classList.remove(\"hidden\");\n}\n\nfunction updateSelectedState(data, state) {\n\tlet selectedStateData = data.find(\n\t\t({ abbreviation }) => abbreviation === state\n\t);\n\tdocument.querySelector(\"span.state-name\").innerText = selectedStateData.name;\n\tsetStateStats(selectedStateData.data);\n\tif (selectedStateData[\"copy\"]) {\n\t\t// This HTML is escaped on the PHP side, so should be safe\n\t\tgeoMap.querySelector(\".description-body\").innerHTML =\n\t\t\tselectedStateData[\"copy\"];\n\t}\n\t// console.log(\"selected state data:\", selectedStateData);\n\tselectedStateData.download\n\t\t? updateStateDownload(selectedStateData.name, selectedStateData.download)\n\t\t: downloadLinkContainer.classList.add(\"hidden\");\n}\n\nfunction numberWithCommas(x) {\n\t// console.log(x);\n\treturn x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\n// When this script loads, fetch the JSON file we'll use to populate the state data.\nfetch(geoMap.getAttribute(\"data-api-url\"))\n\t.then((response) => response.json())\n\t.then((data) => {\n\t\tstatesData = data;\n\t\tpopulateStatesList(statesData);\n\t\taddMapListeners();\n\t\tupdateSelectedState(statesData, selectedState);\n\t\tselectedState == \"US\" &&\n\t\t\tsvgStates.forEach((el) => {\n\t\t\t\tel.classList.add(\"selected\");\n\t\t\t});\n\t\tselectedState == \"US\" &&\n\t\t\tdocument\n\t\t\t\t.querySelector(\"[data-state='\" + selectedState + \"']\")\n\t\t\t\t.classList.add(\"selected\");\n\t});\n\nlet el = document.querySelector(\".states-scroll-wrapper\");\nlet scrollLeftButton = el.querySelector(\".scroll-button-left\");\nlet scrollRightButton = el.querySelector(\".scroll-button-right\");\nlet container = el.querySelector('[class*=\"-scroll\"]');\nlet scrollAmount = el.dataset.scrollByAmount\n\t? el.dataset.scrollByAmount\n\t: \"100\";\n\nscrollLeftButton.addEventListener(\"click\", function () {\n\tcontainer.scrollBy({ top: 0, left: -scrollAmount, behavior: \"smooth\" });\n});\nscrollRightButton.addEventListener(\"click\", function () {\n\tcontainer.scrollBy({ top: 0, left: scrollAmount, behavior: \"smooth\" });\n});\n"],"sourceRoot":""}