1 |
- {"version":3,"file":"static/chunks/97917.bf670b6423b7d6a6.js","mappings":"wGAAIA,EAAOC,EAAQC,EAAQC,EAAQC,E,WACnC,SAASC,IAAa,OAAOA,EAAWC,OAAOC,OAASD,OAAOC,OAAOC,OAAS,SAAUC,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAIF,UAAUD,GAAI,IAAK,IAAII,KAAKD,GAAG,IAAKE,eAAeC,KAAKH,EAAGC,KAAOL,EAAEK,GAAKD,EAAEC,IAAO,OAAOL,GAAMJ,EAASY,MAAM,KAAMN,WAoCvQ,IAlC0B,SAA6BO,GACrD,OAAoB,gBAAoB,MAAOb,EAAS,CACtDc,QAAS,YACTC,KAAM,OACNC,MAAO,8BACNH,GAAQlB,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEsB,EAAG,6xBACHC,OAAQ,kBACLtB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEqB,EAAG,6fACHC,OAAQ,kBACLrB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEoB,EAAG,4wBACHC,OAAQ,eACRC,YAAa,GACbC,cAAe,QACfC,eAAgB,WACbvB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEwB,SAAU,UACVL,EAAG,kSACHC,OAAQ,eACRC,YAAa,IACbI,iBAAkB,IAClBH,cAAe,QACfC,eAAgB,WACbtB,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEkB,EAAG,yKACHC,OAAQ,eACRC,YAAa,IACbI,iBAAkB,IAClBH,cAAe,QACfC,eAAgB,c,oFC3Bb,E,4IC6DP,EAjDyC,Y,IAAGG,EAAW,EAAXA,YACpCC,GAA6BC,EAAAA,EAAAA,IAAYC,EAAAA,IAEzC,GAAQC,EAAAA,EAAAA,GAAe,gBAArBpB,EACFqB,GAAcC,EAAAA,EAAAA,KAGdC,EAFwBP,EAAYQ,YAAYC,YAAYC,GAE1BC,MAAM,KAAK,GAC7CC,EAAgBC,OAAON,GAE7B,OACE,sB,YACIO,EAAAA,EAAAA,IAAaF,EAAeX,KAC5B,SAACc,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMC,EAAAA,EAAAA,IAA8BT,EAAeX,GACnDqB,QAAS,YACPC,EAAAA,EAAAA,IAAe,iC,SAGhBvC,EAAE,iBAGP,SAAC+B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNK,QAAS,YACPC,EAAAA,EAAAA,IAAe,uCACflB,K,SAGDrB,EAAE,uBAEHwC,EAAAA,EAAAA,IAAYZ,EAAeX,KAC3B,SAACc,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMO,EAAAA,EAAAA,IAA0Bf,EAAeX,GAC/CqB,QAAS,YACPC,EAAAA,EAAAA,IAAe,iC,SAGhBvC,EAAE,oB,+BCCb,EA7CsC,Y,IAAG4C,EAAS,EAATA,UACjC,GAAQxB,EAAAA,EAAAA,GAAe,gBAArBpB,EACFqB,GAAcC,EAAAA,EAAAA,KACd,EAAiBsB,EAAfC,WAER,OACE,sB,YACIC,EAAAA,EAAAA,IAAYD,KACZ,SAACd,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMW,EAAAA,EAAAA,IAAqBF,EAAa,GACxCP,QAAS,YACPC,EAAAA,EAAAA,IAAe,2B,SAGhBvC,EAAE,gBAGP,SAAC+B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNK,QAAS,YACPC,EAAAA,EAAAA,IAAe,oCACflB,K,SAGDrB,EAAE,sBAGHgD,EAAAA,EAAAA,IAAWH,KACX,SAACd,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMW,EAAAA,EAAAA,IAAqBF,EAAa,GACxCP,QAAS,YACPC,EAAAA,EAAAA,IAAe,2B,SAGhBvC,EAAE,mB,WCMb,EA5CqC,Y,IAAG4C,EAAS,EAATA,UAChC,GAAQxB,EAAAA,EAAAA,GAAe,gBAArBpB,EACFqB,GAAcC,EAAAA,EAAAA,KACd,EAAgBsB,EAAdK,UACR,OACE,sB,YACIC,EAAAA,EAAAA,IAAWD,KACX,SAAClB,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMe,EAAAA,EAAAA,IAAoBF,EAAY,GACtCX,QAAS,YACPC,EAAAA,EAAAA,IAAe,yB,SAGhBvC,EAAE,eAGP,SAAC+B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNK,QAAS,YACPC,EAAAA,EAAAA,IAAe,mCACflB,K,SAGDrB,EAAE,qBAGHoD,EAAAA,EAAAA,IAAUH,KACV,SAAClB,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMe,EAAAA,EAAAA,IAAoBF,EAAY,GACtCX,QAAS,YACPC,EAAAA,EAAAA,IAAe,yB,SAGhBvC,EAAE,kB,qBCKb,EAzCsC,Y,IAAG4C,EAAS,EAATA,UACjC,GAAQxB,EAAAA,EAAAA,GAAe,gBAArBpB,EAOF,EAAiB4C,EAAUS,MAAMT,EAAUS,MAAMtD,OAAS,GAAxDuD,WAC2BpC,GAAAA,EAAAA,EAAAA,IAAYqC,EAAAA,IAAvCC,EAA2BtC,EAA3BsC,UAAWC,EAAgBvC,EAAhBuC,YACbC,EAAO7B,OAAOyB,GACpB,OACE,sB,YACIK,EAAAA,EAAAA,IAAYD,KACZ,SAAC3B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMwB,EAAAA,EAAAA,IAAqBF,EAAO,GAClCpB,QAAS,YACPC,EAAAA,EAAAA,IAAe,2B,SAGhBvC,EAAE,iBAGL6D,EAAAA,EAAAA,IAAWH,EAAMF,EAAWC,KAC5B,SAAC1B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMwB,EAAAA,EAAAA,IAAqBF,EAAO,GAClCpB,QAAS,YACPC,EAAAA,EAAAA,IAAe,2B,SAGhBvC,EAAE,mB,oFCab,EAzC2C,Y,IACzC8D,EAAO,EAAPA,QACAC,EAAU,EAAVA,WACAC,EAAI,EAAJA,KACAC,EAAkB,EAAlBA,mBACAC,EAAQ,EAARA,SAEoB9C,GAAAA,EAAAA,EAAAA,GAAe,gBAA3BpB,EAAYoB,EAAZpB,EAAGmE,EAAS/C,EAAT+C,KACLC,GAAmBC,EAAAA,EAAAA,IAAkBP,EAASK,GACpD,OAAKJ,GAAeC,EAAKM,aAsBvB,sB,WACE,UAACC,MAAG,CAACC,UAAWC,IAAAA,uB,WACd,SAACC,IAAC,CAACF,UAAWC,IAAAA,Y,SAAqBzE,EAAE,sBACrC,SAAC0E,IAAC,CAACF,UAAWC,IAAAA,U,SAAmBzE,EAAE,+BAErC,SAAC2E,EAAAA,EAAmB,CAACX,KAAMA,EAAME,SAAUA,QAzB3C,UAACK,MAAG,CAACC,UAAWC,IAAAA,uB,WACd,SAACC,IAAC,CAACF,UAAWC,IAAAA,Y,SAAqBzE,EAAE,qBACrC,SAAC0E,IAAC,CAACF,UAAWC,IAAAA,U,UACZ,SAACG,EAAAA,EAAiB,CAChBX,mBAAoBA,EACpBD,KAAMA,EACNa,QAASC,EAAAA,EAAAA,iBAGb,UAACP,MAAG,CAACC,UAAWC,IAAAA,kB,WACd,SAACM,EAAAA,EAAQ,CAACC,MAAOlB,KACjB,SAACS,MAAG,CAACC,UAAWC,IAAAA,sB,UACd,UAACC,IAAC,C,UAAEN,EAAiB,gB,2CLxCrBa,GAAAA,EACN,KAAG,OADGA,EAEC,YAAG,e,CAFJA,IAAAA,EAAmB,KAK/B,IA+BA,EA/BiC,WAC/B,IAA0DC,GAAAA,EAAAA,EAAAA,GAAyB,CACjFC,uBAAuB,IADjBC,EAAkDF,EAAlDE,UAAWpB,EAAuCkB,EAAvClB,KAAME,EAAiCgB,EAAjChB,SAAUD,EAAuBiB,EAAvBjB,mBAG7BH,GAAUuB,EAAAA,EAAAA,KAA2C,OAAlBpB,QAAkB,IAAlBA,OAAAA,EAAAA,EAAoBqB,WAAY,GACnEvB,EAAaD,GAAW,IAG9B,OAAIsB,IAAcpB,EACT,MAIP,UAACO,MAAG,CAACC,UAAWC,IAAAA,Q,WACd,SAACF,MAAG,CAACC,UAAWC,IAAAA,sB,UACd,SAACc,EAAAA,EAAmB,OAGtB,SAAChB,MAAG,CAACC,UAAWC,IAAAA,U,UACd,SAACe,EAAiB,CAChB1B,QAASA,EACTE,KAAMA,EACND,WAAYA,EACZE,mBAAoBA,EACpBC,SAAUA,U,WMyBpB,EA5CqC,Y,IAAGtB,EAAS,EAATA,UAChC,GAAQxB,EAAAA,EAAAA,GAAe,gBAArBpB,EACFqB,GAAcC,EAAAA,EAAAA,KACd,EAAsBsB,EAApB6C,gBACR,OACE,sB,YACIC,EAAAA,EAAAA,IAAWD,KACX,SAAC1D,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMuD,EAAAA,EAAAA,IAAoBF,EAAkB,GAC5CnD,QAAS,YACPC,EAAAA,EAAAA,IAAe,yB,SAGhBvC,EAAE,eAGP,SAAC+B,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNK,QAAS,YACPC,EAAAA,EAAAA,IAAe,mCACflB,K,SAGDrB,EAAE,qBAGH4F,EAAAA,EAAAA,IAAUH,KACV,SAAC1D,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMuD,EAAAA,EAAAA,IAAoBF,EAAkB,GAC5CnD,QAAS,YACPC,EAAAA,EAAAA,IAAe,yB,SAGhBvC,EAAE,kB,qBCgCb,EApEuC,Y,IAAG4C,EAAS,EAATA,UAClC,GAAQxB,EAAAA,EAAAA,GAAe,gBAArBpB,EACF6F,GAAeC,EAAAA,EAAAA,YAAWC,EAAAA,GACxBxE,EAAqCqB,EAArCrB,UAAWyE,EAA0BpD,EAA1BoD,YAAaC,EAAarD,EAAbqD,SAC1BrE,EAAgBC,OAAON,GACvB2E,GAAqBC,EAAAA,EAAAA,IAAYN,EAAcO,OAAO7E,GAAYyE,GACxE,OACE,sB,UACGE,KAAuBpE,EAAAA,EAAAA,IAAaF,KACnC,SAACG,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNC,QAAQ,SAACC,EAAAA,EAAe,IACxBC,MAAMiE,EAAAA,EAAAA,IAAsBzE,EAAgB,GAC5CU,QAAS,YACPC,EAAAA,EAAAA,IAAe,+B,SAGhBvC,EAAE,iBAGLkG,IACA,sB,WACE,SAACnE,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNG,MAAMiE,EAAAA,EAAAA,IAAsBzE,GAC5BU,QAAS,YACPC,EAAAA,EAAAA,IAAe,+B,SAGhBvC,EAAE,qBAEL,SAAC+B,EAAAA,GAAM,CACLK,MAAMkE,EAAAA,EAAAA,IAA+BL,GACrC3D,QAAS,YACPC,EAAAA,EAAAA,IAAe,2B,SAGhBvC,EAAE,wBAIRkG,IACC,SAACnE,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNG,MAAMiE,EAAAA,EAAAA,IAAsBzE,GAC5BU,QAAS,YACPC,EAAAA,EAAAA,IAAe,oC,SAGhBvC,EAAE,qBAGNkG,KAAuB1D,EAAAA,EAAAA,IAAYZ,KAClC,SAACG,EAAAA,GAAM,CACLC,KAAMC,EAAAA,GAAAA,UACNQ,QAAQ,SAACC,EAAAA,EAAgB,IACzBN,MAAMiE,EAAAA,EAAAA,IAAsBzE,EAAgB,GAC5CU,QAAS,YACPC,EAAAA,EAAAA,IAAe,+B,SAGhBvC,EAAE,oB,WCVb,EAzCgD,Y,IAC9CuG,EAAmB,EAAnBA,oBACA3D,EAAS,EAATA,UACA5B,EAAW,EAAXA,YAEMC,GAA6BC,EAAAA,EAAAA,IAAYC,EAAAA,IAE/C,OACE,sB,WACE,SAACoD,MAAG,CAACC,UAAWC,IAAAA,wB,UACd,SAAC+B,EAAwB,MAE1BvF,GAA8BsF,IAAwBE,EAAAA,GAAAA,UACrD,SAACC,EAAAA,EAA+B,CAC9BC,KAAMC,EAAAA,EAAAA,0BAGV,SAACrC,MAAG,CAACC,UAAWC,IAAAA,U,UACd,UAACF,MAAG,CAACC,UAAWC,IAAAA,iB,UACb8B,IAAwBE,EAAAA,GAAAA,UACvB,SAACI,EAAe,CAAC7F,YAAaA,KAE9BuF,IAAwBE,EAAAA,GAAAA,OACxBF,IAAwBE,EAAAA,GAAAA,oBACxBF,IAAwBE,EAAAA,GAAAA,UACxB,SAACK,EAAa,CAAClE,UAAWA,IAE3B2D,IAAwBE,EAAAA,GAAAA,OACvB,SAACM,EAAY,CAACnE,UAAWA,IAE1B2D,IAAwBE,EAAAA,GAAAA,MAA2B,SAACO,EAAW,CAACpE,UAAWA,IAC3E2D,IAAwBE,EAAAA,GAAAA,MAA2B,SAACQ,EAAW,CAACrE,UAAWA,IAC3E2D,IAAwBE,EAAAA,GAAAA,OACvB,SAACS,EAAY,CAACtE,UAAWA,c,wIClDgE,MAAMuE,EAAsC,WAC3IC,EAAoC,KACnCC,EAA6CC,IAA6C,OAA0BH,IACpHI,EAAwCC,GAA4CH,EAA4CF,GACjIM,GAA0D,iBAAkB,CAACpH,EAAOqH,KACtF,MAAQC,gBAAiBA,EAAkB3C,MAAO4C,EAAYC,IAAKC,EAAUC,cAAeA,EAAgBC,KAAgDC,GAAkB5H,EACxKwH,EAAMK,EAAuCJ,GAAWA,EAAUV,EAClEpC,EAAQmD,EAAyCP,EAAWC,GAAOD,EAAY,KAC/EQ,EAAaC,EAA+BrD,GAAS+C,EAAc/C,EAAO6C,QAAOS,EACvF,OAAqB,mBAAqBf,EAAwC,CAC9EgB,MAAOZ,EACP3C,MAAOA,EACP6C,IAAKA,IACQ,mBAAqB,UAAsB,OAAqC,CAC7F,gBAAiBA,EACjB,gBAAiB,EACjB,gBAAiBQ,EAA+BrD,GAASA,OAAQsD,EACjE,iBAAkBF,EAClBI,KAAM,cACN,aAAcC,EAAuCzD,EAAO6C,GAC5D,aAAwB,OAAV7C,QAA4B,IAAVA,EAAmBA,OAAQsD,EAC3D,WAAYT,GACbI,EAAe,CACdS,IAAKhB,SAMbD,EAA0CkB,UAAY,CAClDd,IAAKxH,EAAOuI,EAAUC,GAClB,MAAMC,EAAYzI,EAAMuI,GAClBG,EAAS3C,OAAO0C,GACtB,OAAIA,IAAcZ,EAAuCY,GAAmB,IAAIE,MA8CxF,SAAkDF,EAAWD,GACzD,MAAO,mCAAmCC,qBAA6BD,gFA/CmBI,CAAyCF,EAAQF,IAChI,MAEX7D,MAAO3E,EAAOuI,EAAUC,GACpB,MAAMjB,EAAYvH,EAAMuI,GAClBG,EAAS3C,OAAOwB,GAChBC,EAAMK,EAAuC7H,EAAMwH,KAAOxH,EAAMwH,IAAMT,EAC5E,OAAiB,MAAbQ,GAAsBO,EAAyCP,EAAWC,GACvE,KADoF,IAAImB,MA0CvG,SAAoDF,EAAWD,GAC3D,MAAO,qCAAqCC,qBAA6BD,mNA3CgCK,CAA2CH,EAAQF,MAM3D,MAAMM,EAAuC,oBAC5IC,GAA0D,iBAAkB,CAAC/I,EAAOqH,KACtF,IAAI2B,EACJ,MAAQ1B,gBAAiBA,KAAqB2B,GAAmBjJ,EAC3DwE,EAAU2C,EAAyC2B,EAAsCxB,GAC/F,OAAqB,mBAAqB,UAAsB,OAAqC,CACjG,aAAcc,EAAuC5D,EAAQG,MAAOH,EAAQgD,KAC5E,aAAmD,QAApCwB,EAAiBxE,EAAQG,aAAsC,IAAnBqE,EAA4BA,OAAiBf,EACxG,WAAYzD,EAAQgD,KACrByB,EAAgB,CACfZ,IAAKhB,QAMwF,SAASM,EAA2ChD,EAAO6C,GAC5J,MAAO,GAAG0B,KAAKC,MAAMxE,EAAQ6C,EAAM,QAEvC,SAASY,EAAuCzD,EAAOyE,GACnD,OAAgB,MAATzE,EAAgB,gBAAkBA,IAAUyE,EAAW,WAAa,UAE/E,SAASpB,EAA+BrD,GACpC,MAAwB,kBAAVA,EAElB,SAASkD,EAAuCL,GAE5C,OAAOQ,EAA+BR,KAAS6B,MAAM7B,IAAQA,EAAM,EAEvE,SAASM,EAAyCnD,EAAO6C,GAErD,OAAOQ,EAA+BrD,KAAW0E,MAAM1E,IAAUA,GAAS6C,GAAO7C,GAAS,EAa9F,MAAM2E,EAA4ClC,EAC5CmC,EAA4CR,E,ICjG3C,E,kDAAKS,GAAAA,EACL,MAAG,QADEA,EAEJ,OAAG,SAFCA,EAGL,MAAG,Q,CAHEA,IAAAA,EAAY,KAaxB,IA0BA,EA1B0C,Y,IAQtC,EAPF7E,EAAK,EAALA,MACA8E,EAAU,EAAVA,WAAU,IACVC,KAAAA,OAAI,IAAG,EAAAF,EAAaG,MAAK,EACzBC,EAAe,EAAfA,gBAEMC,EAAiBC,IACrB1F,IAAAA,cACA,EAIC,IAHC,OADF,EACGA,IAAAA,cAAuBsF,IAASF,EAAaG,QAC9C,OAFF,EAEGvF,IAAAA,eAAwBsF,IAASF,EAAaO,SAC/C,OAHF,EAGG3F,IAAAA,cAAuBsF,IAASF,EAAaQ,OAHhD,GAKAP,GAGF,OACE,SAACQ,EAAkB,CAAC9F,UAAW0F,EAAgBlF,MAAOA,E,UACpD,SAACsF,EAAuB,CACtB9F,UAAW2F,IAAW1F,IAAAA,kBAA0BwF,GAChDM,MAAO,CAAEC,UAAW,eAA2B,OAAZ,IAAMxF,EAAM,a,6IC9B1ClC,G,SAAc,SAACD,G,OAA+C,IAAfA,IAQ/CG,EAAa,SAACH,G,OAA+C,KAAfA,GAmB9C4H,EAAuB,W,OAAA,iBAAOC,G,0CACzC,MAAO,C,EAAA,IAAIC,SAAQ,SAACC,GAClB,sCAA+CC,MAAK,SAACC,GACnDF,EAAIE,EAAKC,QAAQL,iB,gBAHoBA,G,gCAAP,I,6IC1BvBhF,G,SAAa,SAACsF,G,OAA6C,IAAdA,IAQ7CpF,EAAY,SAACoF,G,OAfM,MAeyBA,GAY5CC,EAAsB,W,OAAA,iBAAOC,G,0CACxC,MAAO,C,EAAA,IAAIP,SAAQ,SAACC,GAClB,oCAAsDC,MAAK,SAACC,GAC1DF,EAAIE,EAAKC,QAAQG,iB,gBAHmBA,G,gCAAP,I,kBC5BnCC,EAAOC,QAAU,CAAC,UAAY,0CAA0C,iBAAmB,iDAAiD,wBAA0B,wDAAwD,wBAA0B,0D,kBCAxPD,EAAOC,QAAU,CAAC,QAAU,0CAA0C,UAAY,4CAA4C,sBAAwB,0D,kBCAtJD,EAAOC,QAAU,CAAC,uBAAyB,kDAAkD,YAAc,uCAAuC,UAAY,qCAAqC,kBAAoB,6CAA6C,sBAAwB,mD,kBCA5RD,EAAOC,QAAU,CAAC,aAAe,+BAA+B,cAAgB,gCAAgC,eAAiB,iCAAiC,cAAgB,gCAAgC,kBAAoB","sources":["webpack://_N_E/./public/images/moon-illustration.svg","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/QuranReaderReadingStreak/index.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/ChapterControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/HizbControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/JuzControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/PageControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/QuranReaderReadingStreak/QuranReaderStreak/index.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/RubControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/VerseControls.tsx","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/index.tsx","webpack://_N_E/./node_modules/@radix-ui/react-progress/dist/index.mjs","webpack://_N_E/./src/components/dls/Progress/index.tsx","webpack://_N_E/./src/utils/hizb.ts","webpack://_N_E/./src/utils/rub.ts","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/EndOfScrollingControls.module.scss","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/QuranReaderReadingStreak/QuranReaderReadingStreak.module.scss","webpack://_N_E/./src/components/QuranReader/EndOfScrollingControls/QuranReaderReadingStreak/QuranReaderStreak/QuranReaderStreak.module.scss","webpack://_N_E/./src/components/dls/Progress/Progress.module.scss"],"sourcesContent":["var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgMoonIllustration = function SvgMoonIllustration(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 92 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12.34 45.828.005.007.006.007c2.639 2.996 5.947 5.452 9.705 7.21a32.563 32.563 0 0 0 12.105 2.993 32.981 32.981 0 0 0 12.401-1.734c3.953-1.36 7.547-3.46 10.544-6.165 2.996-2.705 5.33-5.954 6.841-9.536a24.806 24.806 0 0 0 1.925-11.245c-.243-3.83-1.382-7.569-3.337-10.97-1.956-3.4-4.684-6.385-8.002-8.76l-.291.406.272-.42a.577.577 0 0 1-.248-.322.477.477 0 0 1 .04-.358.642.642 0 0 1 .33-.284.808.808 0 0 1 .498-.034c5.97 1.539 11.385 4.455 15.713 8.457 4.327 4.002 7.416 8.949 8.967 14.348a29.004 29.004 0 0 1-.112 16.452c-1.625 5.382-4.782 10.294-9.164 14.248-4.382 3.954-9.838 6.81-15.829 8.282a39.4 39.4 0 0 1-18.315.102c-6.01-1.405-11.505-4.201-15.941-8.106-4.434-3.903-7.656-8.776-9.355-14.137a.477.477 0 0 1 .04-.346c.061-.116.17-.22.32-.284a.806.806 0 0 1 .492-.043.702.702 0 0 1 .39.232Z\",\n stroke: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.173 34.298c.302-1.936.417-3.889.345-5.837a29.111 29.111 0 0 1 1.431 9.421c-.061 4.362-1.11 8.668-3.084 12.654-1.974 3.987-4.831 7.572-8.4 10.533-3.57 2.96-7.776 5.235-12.36 6.68a39.256 39.256 0 0 1-14.294 1.72c-4.846-.311-9.568-1.512-13.878-3.528-4.309-2.016-8.113-4.803-11.18-8.188-3.066-3.385-5.33-7.296-6.658-11.493l-.004-.013a.41.41 0 0 1 .004-.284c3.692 5.875 9.286 10.586 16.028 13.501 6.934 2.998 14.735 3.948 22.298 2.718 7.562-1.231 14.51-4.582 19.853-9.584 5.343-5.002 8.81-11.404 9.899-18.3Z\",\n stroke: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.242 8.04c3.262 2.337 5.94 5.27 7.86 8.605 1.917 3.336 3.033 7 3.272 10.752a24.305 24.305 0 0 1-1.887 11.018c-1.483 3.512-3.772 6.702-6.717 9.36-2.944 2.658-6.479 4.724-10.37 6.063a32.481 32.481 0 0 1-12.213 1.708 32.064 32.064 0 0 1-11.92-2.948c-3.698-1.729-6.95-4.144-9.54-7.086a1.202 1.202 0 0 0-.666-.403 1.306 1.306 0 0 0-.799.07c-.248.106-.449.287-.566.512a.976.976 0 0 0-.078.72c1.727 5.455 5.004 10.408 9.504 14.37 4.502 3.962 10.071 6.795 16.159 8.218a39.901 39.901 0 0 0 18.548-.103c6.067-1.491 11.598-4.386 16.044-8.397 4.447-4.012 7.655-9.001 9.307-14.475a29.503 29.503 0 0 0 .115-16.734c-1.578-5.491-4.718-10.516-9.11-14.577-4.39-4.06-9.881-7.016-15.928-8.574a1.308 1.308 0 0 0-.81.055c-.254.103-.46.284-.582.511a.977.977 0 0 0-.08.73c.068.244.23.458.457.606v0Z\",\n stroke: \"currentColor\",\n strokeWidth: 0.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M28.306 38.49c1.355-4.41 2.243-7.634 3.174-13.1-.05.085 7.202-2.569 10.347-3.753-4.508-.57-10.678-1.417-10.617-1.324-.848-3.48-1.636-8.948-3.62-15.313-.852 4.775-2.35 10.221-2.973 15.03-3.843 1-6.947 2.025-10.617 3.573 4.511.96 7.36 1.888 11.077 2.73 1.125 5.027 1.95 7.847 3.229 12.158Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.5,\n strokeMiterlimit: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.744 25c.02 1.313-.077 2.688.05 3.994M2 32.059c.708.011 1.434-.104 2.14-.05M6.206 33.953c-.185 1.095-.145 2.213-.15 3.322M8.378 31.378c.983.085 2.025-.244 2.98-.015\",\n stroke: \"currentColor\",\n strokeWidth: 1.5,\n strokeMiterlimit: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n};\nexport default SvgMoonIllustration;","import styles from './QuranReaderReadingStreak.module.scss';\nimport QuranReaderStreak from './QuranReaderStreak';\n\nimport useGetStreakWithMetadata from '@/hooks/auth/useGetStreakWithMetadata';\nimport MoonIllustrationSVG from '@/public/images/moon-illustration.svg';\nimport { convertFractionToPercent } from '@/utils/number';\n\nexport enum ReadingStreakLayout {\n Home = 'home',\n QuranReader = 'quran-reader',\n}\n\nconst QuranReaderReadingStreak = () => {\n const { isLoading, goal, weekData, currentActivityDay } = useGetStreakWithMetadata({\n disableIfNoGoalExists: true,\n });\n const percent = convertFractionToPercent(currentActivityDay?.progress || 0);\n const isGoalDone = percent >= 100;\n\n // don't render anything if there is no reading goal\n if (isLoading || !goal) {\n return null;\n }\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.illustrationContainer}>\n <MoonIllustrationSVG />\n </div>\n\n <div className={styles.container}>\n <QuranReaderStreak\n percent={percent}\n goal={goal}\n isGoalDone={isGoalDone}\n currentActivityDay={currentActivityDay}\n weekData={weekData}\n />\n </div>\n </div>\n );\n};\n\nexport default QuranReaderReadingStreak;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSelector } from 'react-redux';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport useScrollToTop from '@/hooks/useScrollToTop';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { selectIsReadingByRevelationOrder } from '@/redux/slices/revelationOrder';\nimport { isFirstSurah, isLastSurah } from '@/utils/chapter';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getNextSurahNavigationUrl, getPreviousSurahNavigationUrl } from '@/utils/navigation';\nimport { VersesResponse } from 'types/ApiResponses';\n\ninterface Props {\n initialData: VersesResponse;\n}\n\nconst ChapterControls: React.FC<Props> = ({ initialData }) => {\n const isReadingByRevelationOrder = useSelector(selectIsReadingByRevelationOrder);\n\n const { t } = useTranslation('quran-reader');\n const scrollToTop = useScrollToTop();\n const chapterIdAndLastVerse = initialData.pagesLookup.lookupRange.to;\n // example : \"2:253\" -> chapter 2 verse 253\n const chapterId = chapterIdAndLastVerse.split(':')[0];\n const chapterNumber = Number(chapterId);\n\n return (\n <>\n {!isFirstSurah(chapterNumber, isReadingByRevelationOrder) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getPreviousSurahNavigationUrl(chapterNumber, isReadingByRevelationOrder)}\n onClick={() => {\n logButtonClick('chapter_control_prev_chapter');\n }}\n >\n {t('prev-surah')}\n </Button>\n )}\n <Button\n type={ButtonType.Secondary}\n onClick={() => {\n logButtonClick('chapter_control_scroll_to_beginning');\n scrollToTop();\n }}\n >\n {t('surah-beginning')}\n </Button>\n {!isLastSurah(chapterNumber, isReadingByRevelationOrder) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getNextSurahNavigationUrl(chapterNumber, isReadingByRevelationOrder)}\n onClick={() => {\n logButtonClick('chapter_control_next_chapter');\n }}\n >\n {t('next-surah')}\n </Button>\n )}\n </>\n );\n};\n\nexport default ChapterControls;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport useScrollToTop from '@/hooks/useScrollToTop';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { isFirstHizb, isLastHizb } from '@/utils/hizb';\nimport { getHizbNavigationUrl } from '@/utils/navigation';\nimport Verse from 'types/Verse';\n\ninterface Props {\n lastVerse: Verse;\n}\n\nconst HizbControls: React.FC<Props> = ({ lastVerse }) => {\n const { t } = useTranslation('quran-reader');\n const scrollToTop = useScrollToTop();\n const { hizbNumber } = lastVerse;\n\n return (\n <>\n {!isFirstHizb(hizbNumber) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getHizbNavigationUrl(hizbNumber - 1)}\n onClick={() => {\n logButtonClick('hizb_control_prev_hizb');\n }}\n >\n {t('prev-hizb')}\n </Button>\n )}\n <Button\n type={ButtonType.Secondary}\n onClick={() => {\n logButtonClick('hizb_control_scroll_to_beginning');\n scrollToTop();\n }}\n >\n {t('hizb-beginning')}\n </Button>\n\n {!isLastHizb(hizbNumber) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getHizbNavigationUrl(hizbNumber + 1)}\n onClick={() => {\n logButtonClick('hizb_control_next_hizb');\n }}\n >\n {t('next-hizb')}\n </Button>\n )}\n </>\n );\n};\n\nexport default HizbControls;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport useScrollToTop from '@/hooks/useScrollToTop';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { isFirstJuz, isLastJuz } from '@/utils/juz';\nimport { getJuzNavigationUrl } from '@/utils/navigation';\nimport Verse from 'types/Verse';\n\ninterface Props {\n lastVerse: Verse;\n}\n\nconst JuzControls: React.FC<Props> = ({ lastVerse }) => {\n const { t } = useTranslation('quran-reader');\n const scrollToTop = useScrollToTop();\n const { juzNumber } = lastVerse;\n return (\n <>\n {!isFirstJuz(juzNumber) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getJuzNavigationUrl(juzNumber - 1)}\n onClick={() => {\n logButtonClick('juz_control_prev_juz');\n }}\n >\n {t('prev-juz')}\n </Button>\n )}\n <Button\n type={ButtonType.Secondary}\n onClick={() => {\n logButtonClick('juz_control_scroll_to_beginning');\n scrollToTop();\n }}\n >\n {t('juz-beginning')}\n </Button>\n\n {!isLastJuz(juzNumber) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getJuzNavigationUrl(juzNumber + 1)}\n onClick={() => {\n logButtonClick('juz_control_next_juz');\n }}\n >\n {t('next-juz')}\n </Button>\n )}\n </>\n );\n};\n\nexport default JuzControls;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSelector } from 'react-redux';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getPageNavigationUrl } from '@/utils/navigation';\nimport { isFirstPage, isLastPage } from '@/utils/page';\nimport Verse from 'types/Verse';\n\ninterface Props {\n lastVerse: Verse;\n}\n\nconst PageControls: React.FC<Props> = ({ lastVerse }) => {\n const { t } = useTranslation('quran-reader');\n /**\n * We need to access the last word of the the last verse instead\n * since the pageNumber of the last verse in the case of the 16-line\n * Mushaf can point to the next page instead of the current one when\n * the verse spans across 2 pages e.g. /ur/page/30 (verse 16).\n */\n const { pageNumber } = lastVerse.words[lastVerse.words.length - 1];\n const { quranFont, mushafLines } = useSelector(selectQuranReaderStyles);\n const page = Number(pageNumber);\n return (\n <>\n {!isFirstPage(page) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getPageNavigationUrl(page - 1)}\n onClick={() => {\n logButtonClick('page_control_prev_page');\n }}\n >\n {t('prev-page')}\n </Button>\n )}\n {!isLastPage(page, quranFont, mushafLines) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getPageNavigationUrl(page + 1)}\n onClick={() => {\n logButtonClick('page_control_next_page');\n }}\n >\n {t('next-page')}\n </Button>\n )}\n </>\n );\n};\n\nexport default PageControls;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './QuranReaderStreak.module.scss';\n\nimport CurrentWeekProgress from '@/components/HomePage/QuranGrowthJourneySection/CollapsibleSection/QuranReadingGoals/CurrentWeekProgress';\nimport ReadingGoalAmount, {\n ReadingGoalAmountContext,\n} from '@/components/ReadingGoal/ReadingGoalAmount';\nimport Progress from '@/dls/Progress';\nimport { CurrentQuranActivityDay } from '@/types/auth/ActivityDay';\nimport { QuranGoalStatus } from '@/types/auth/Goal';\nimport { toLocalizedNumber } from '@/utils/locale';\n\ntype Props = {\n percent: number;\n isGoalDone: boolean;\n goal: QuranGoalStatus;\n // TODO: strongly type this\n weekData: any;\n currentActivityDay: CurrentQuranActivityDay;\n};\n\nconst QuranReaderStreak: React.FC<Props> = ({\n percent,\n isGoalDone,\n goal,\n currentActivityDay,\n weekData,\n}) => {\n const { t, lang } = useTranslation('reading-goal');\n const localizedPercent = toLocalizedNumber(percent, lang);\n if (!isGoalDone && !goal.isCompleted) {\n return (\n <div className={styles.dailyProgressContainer}>\n <p className={styles.streakTitle}>{t('daily-progress')}</p>\n <p className={styles.dailyGoal}>\n <ReadingGoalAmount\n currentActivityDay={currentActivityDay}\n goal={goal}\n context={ReadingGoalAmountContext.QuranReader}\n />\n </p>\n <div className={styles.progressContainer}>\n <Progress value={percent} />\n <div className={styles.progressTextContainer}>\n <p>{localizedPercent}%</p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <>\n <div className={styles.dailyProgressContainer}>\n <p className={styles.streakTitle}>{t('goal-done.title')}</p>\n <p className={styles.dailyGoal}>{t('goal-done.description')}</p>\n </div>\n <CurrentWeekProgress goal={goal} weekData={weekData} />\n </>\n );\n};\n\nexport default QuranReaderStreak;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport useScrollToTop from '@/hooks/useScrollToTop';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getRubNavigationUrl } from '@/utils/navigation';\nimport { isFirstRub, isLastRub } from '@/utils/rub';\nimport Verse from 'types/Verse';\n\ninterface Props {\n lastVerse: Verse;\n}\n\nconst RubControls: React.FC<Props> = ({ lastVerse }) => {\n const { t } = useTranslation('quran-reader');\n const scrollToTop = useScrollToTop();\n const { rubElHizbNumber } = lastVerse;\n return (\n <>\n {!isFirstRub(rubElHizbNumber) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getRubNavigationUrl(rubElHizbNumber - 1)}\n onClick={() => {\n logButtonClick('rub_control_prev_rub');\n }}\n >\n {t('prev-rub')}\n </Button>\n )}\n <Button\n type={ButtonType.Secondary}\n onClick={() => {\n logButtonClick('rub_control_scroll_to_beginning');\n scrollToTop();\n }}\n >\n {t('rub-beginning')}\n </Button>\n\n {!isLastRub(rubElHizbNumber) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getRubNavigationUrl(rubElHizbNumber + 1)}\n onClick={() => {\n logButtonClick('rub_control_next_rub');\n }}\n >\n {t('next-rub')}\n </Button>\n )}\n </>\n );\n};\n\nexport default RubControls;\n","import React, { useContext } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport Button, { ButtonType } from '@/dls/Button/Button';\nimport ChevronLeftIcon from '@/icons/chevron-left.svg';\nimport ChevronRightIcon from '@/icons/chevron-right.svg';\nimport { isFirstSurah, isLastSurah } from '@/utils/chapter';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getSurahNavigationUrl, getChapterWithStartingVerseUrl } from '@/utils/navigation';\nimport { isLastVerseOfSurah as isLastVerse } from '@/utils/verse';\nimport DataContext from 'src/contexts/DataContext';\nimport Verse from 'types/Verse';\n\ninterface Props {\n lastVerse: Verse;\n}\n\nconst VerseControls: React.FC<Props> = ({ lastVerse }) => {\n const { t } = useTranslation('quran-reader');\n const chaptersData = useContext(DataContext);\n const { chapterId, verseNumber, verseKey } = lastVerse;\n const chapterNumber = Number(chapterId);\n const isLastVerseOfSurah = isLastVerse(chaptersData, String(chapterId), verseNumber);\n return (\n <>\n {isLastVerseOfSurah && !isFirstSurah(chapterNumber) && (\n <Button\n type={ButtonType.Secondary}\n prefix={<ChevronLeftIcon />}\n href={getSurahNavigationUrl(chapterNumber - 1)}\n onClick={() => {\n logButtonClick('verse_control_prev_chapter');\n }}\n >\n {t('prev-surah')}\n </Button>\n )}\n {!isLastVerseOfSurah && (\n <>\n <Button\n type={ButtonType.Secondary}\n href={getSurahNavigationUrl(chapterNumber)}\n onClick={() => {\n logButtonClick('verse_control_full_chapter');\n }}\n >\n {t('full-surah-cta')}\n </Button>\n <Button\n href={getChapterWithStartingVerseUrl(verseKey)}\n onClick={() => {\n logButtonClick('verse_control_continue');\n }}\n >\n {t('common:continue')}\n </Button>\n </>\n )}\n {isLastVerseOfSurah && (\n <Button\n type={ButtonType.Secondary}\n href={getSurahNavigationUrl(chapterNumber)}\n onClick={() => {\n logButtonClick('verse_control_chapter_beginning');\n }}\n >\n {t('surah-beginning')}\n </Button>\n )}\n {isLastVerseOfSurah && !isLastSurah(chapterNumber) && (\n <Button\n type={ButtonType.Secondary}\n suffix={<ChevronRightIcon />}\n href={getSurahNavigationUrl(chapterNumber + 1)}\n onClick={() => {\n logButtonClick('verse_control_next_chapter');\n }}\n >\n {t('next-surah')}\n </Button>\n )}\n </>\n );\n};\n\nexport default VerseControls;\n","import React from 'react';\n\nimport { useSelector } from 'react-redux';\n\nimport RevelationOrderNavigationNotice, {\n RevelationOrderNavigationNoticeView,\n} from '../RevelationOrderNavigationNotice';\n\nimport ChapterControls from './ChapterControls';\nimport styles from './EndOfScrollingControls.module.scss';\nimport HizbControls from './HizbControls';\nimport JuzControls from './JuzControls';\nimport PageControls from './PageControls';\nimport QuranReaderReadingStreak from './QuranReaderReadingStreak';\nimport RubControls from './RubControls';\nimport VerseControls from './VerseControls';\n\nimport { selectIsReadingByRevelationOrder } from '@/redux/slices/revelationOrder';\nimport { VersesResponse } from 'types/ApiResponses';\nimport { QuranReaderDataType } from 'types/QuranReader';\nimport Verse from 'types/Verse';\n\ninterface Props {\n quranReaderDataType: QuranReaderDataType;\n lastVerse: Verse;\n initialData: VersesResponse;\n}\n\nconst EndOfScrollingControls: React.FC<Props> = ({\n quranReaderDataType,\n lastVerse,\n initialData,\n}) => {\n const isReadingByRevelationOrder = useSelector(selectIsReadingByRevelationOrder);\n\n return (\n <>\n <div className={styles.progressWidgetContainer}>\n <QuranReaderReadingStreak />\n </div>\n {isReadingByRevelationOrder && quranReaderDataType === QuranReaderDataType.Chapter && (\n <RevelationOrderNavigationNotice\n view={RevelationOrderNavigationNoticeView.EndOfScrollingControls}\n />\n )}\n <div className={styles.container}>\n <div className={styles.buttonsContainer}>\n {quranReaderDataType === QuranReaderDataType.Chapter && (\n <ChapterControls initialData={initialData} />\n )}\n {(quranReaderDataType === QuranReaderDataType.Verse ||\n quranReaderDataType === QuranReaderDataType.ChapterVerseRanges ||\n quranReaderDataType === QuranReaderDataType.Ranges) && (\n <VerseControls lastVerse={lastVerse} />\n )}\n {quranReaderDataType === QuranReaderDataType.Page && (\n <PageControls lastVerse={lastVerse} />\n )}\n {quranReaderDataType === QuranReaderDataType.Juz && <JuzControls lastVerse={lastVerse} />}\n {quranReaderDataType === QuranReaderDataType.Rub && <RubControls lastVerse={lastVerse} />}\n {quranReaderDataType === QuranReaderDataType.Hizb && (\n <HizbControls lastVerse={lastVerse} />\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default EndOfScrollingControls;\n","import $k03wI$babelruntimehelpersesmextends from \"@babel/runtime/helpers/esm/extends\";\nimport {forwardRef as $k03wI$forwardRef, createElement as $k03wI$createElement} from \"react\";\nimport {createContextScope as $k03wI$createContextScope} from \"@radix-ui/react-context\";\nimport {Primitive as $k03wI$Primitive} from \"@radix-ui/react-primitive\";\n\n\n\n\n\n/* -------------------------------------------------------------------------------------------------\n * Progress\n * -----------------------------------------------------------------------------------------------*/ const $67824d98245208a0$var$PROGRESS_NAME = 'Progress';\nconst $67824d98245208a0$var$DEFAULT_MAX = 100;\nconst [$67824d98245208a0$var$createProgressContext, $67824d98245208a0$export$388eb2d8f6d3261f] = $k03wI$createContextScope($67824d98245208a0$var$PROGRESS_NAME);\nconst [$67824d98245208a0$var$ProgressProvider, $67824d98245208a0$var$useProgressContext] = $67824d98245208a0$var$createProgressContext($67824d98245208a0$var$PROGRESS_NAME);\nconst $67824d98245208a0$export$b25a304ec7d746bb = /*#__PURE__*/ $k03wI$forwardRef((props, forwardedRef)=>{\n const { __scopeProgress: __scopeProgress , value: valueProp , max: maxProp , getValueLabel: getValueLabel = $67824d98245208a0$var$defaultGetValueLabel , ...progressProps } = props;\n const max = $67824d98245208a0$var$isValidMaxNumber(maxProp) ? maxProp : $67824d98245208a0$var$DEFAULT_MAX;\n const value = $67824d98245208a0$var$isValidValueNumber(valueProp, max) ? valueProp : null;\n const valueLabel = $67824d98245208a0$var$isNumber(value) ? getValueLabel(value, max) : undefined;\n return /*#__PURE__*/ $k03wI$createElement($67824d98245208a0$var$ProgressProvider, {\n scope: __scopeProgress,\n value: value,\n max: max\n }, /*#__PURE__*/ $k03wI$createElement($k03wI$Primitive.div, $k03wI$babelruntimehelpersesmextends({\n \"aria-valuemax\": max,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": $67824d98245208a0$var$isNumber(value) ? value : undefined,\n \"aria-valuetext\": valueLabel,\n role: \"progressbar\",\n \"data-state\": $67824d98245208a0$var$getProgressState(value, max),\n \"data-value\": value !== null && value !== void 0 ? value : undefined,\n \"data-max\": max\n }, progressProps, {\n ref: forwardedRef\n })));\n});\n/*#__PURE__*/ Object.assign($67824d98245208a0$export$b25a304ec7d746bb, {\n displayName: $67824d98245208a0$var$PROGRESS_NAME\n});\n$67824d98245208a0$export$b25a304ec7d746bb.propTypes = {\n max (props, propName, componentName) {\n const propValue = props[propName];\n const strVal = String(propValue);\n if (propValue && !$67824d98245208a0$var$isValidMaxNumber(propValue)) return new Error($67824d98245208a0$var$getInvalidMaxError(strVal, componentName));\n return null;\n },\n value (props, propName, componentName) {\n const valueProp = props[propName];\n const strVal = String(valueProp);\n const max = $67824d98245208a0$var$isValidMaxNumber(props.max) ? props.max : $67824d98245208a0$var$DEFAULT_MAX;\n if (valueProp != null && !$67824d98245208a0$var$isValidValueNumber(valueProp, max)) return new Error($67824d98245208a0$var$getInvalidValueError(strVal, componentName));\n return null;\n }\n};\n/* -------------------------------------------------------------------------------------------------\n * ProgressIndicator\n * -----------------------------------------------------------------------------------------------*/ const $67824d98245208a0$var$INDICATOR_NAME = 'ProgressIndicator';\nconst $67824d98245208a0$export$2b776f7e7ee60dbd = /*#__PURE__*/ $k03wI$forwardRef((props, forwardedRef)=>{\n var _context$value;\n const { __scopeProgress: __scopeProgress , ...indicatorProps } = props;\n const context = $67824d98245208a0$var$useProgressContext($67824d98245208a0$var$INDICATOR_NAME, __scopeProgress);\n return /*#__PURE__*/ $k03wI$createElement($k03wI$Primitive.div, $k03wI$babelruntimehelpersesmextends({\n \"data-state\": $67824d98245208a0$var$getProgressState(context.value, context.max),\n \"data-value\": (_context$value = context.value) !== null && _context$value !== void 0 ? _context$value : undefined,\n \"data-max\": context.max\n }, indicatorProps, {\n ref: forwardedRef\n }));\n});\n/*#__PURE__*/ Object.assign($67824d98245208a0$export$2b776f7e7ee60dbd, {\n displayName: $67824d98245208a0$var$INDICATOR_NAME\n});\n/* ---------------------------------------------------------------------------------------------- */ function $67824d98245208a0$var$defaultGetValueLabel(value, max) {\n return `${Math.round(value / max * 100)}%`;\n}\nfunction $67824d98245208a0$var$getProgressState(value, maxValue) {\n return value == null ? 'indeterminate' : value === maxValue ? 'complete' : 'loading';\n}\nfunction $67824d98245208a0$var$isNumber(value) {\n return typeof value === 'number';\n}\nfunction $67824d98245208a0$var$isValidMaxNumber(max) {\n // prettier-ignore\n return $67824d98245208a0$var$isNumber(max) && !isNaN(max) && max > 0;\n}\nfunction $67824d98245208a0$var$isValidValueNumber(value, max) {\n // prettier-ignore\n return $67824d98245208a0$var$isNumber(value) && !isNaN(value) && value <= max && value >= 0;\n} // Split this out for clearer readability of the error message.\nfunction $67824d98245208a0$var$getInvalidMaxError(propValue, componentName) {\n return `Invalid prop \\`max\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. Only numbers greater than 0 are valid max values. Defaulting to \\`${$67824d98245208a0$var$DEFAULT_MAX}\\`.`;\n}\nfunction $67824d98245208a0$var$getInvalidValueError(propValue, componentName) {\n return `Invalid prop \\`value\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. The \\`value\\` prop must be:\n - a positive number\n - less than the value passed to \\`max\\` (or ${$67824d98245208a0$var$DEFAULT_MAX} if no \\`max\\` prop is set)\n - \\`null\\` if the progress is indeterminate.\n\nDefaulting to \\`null\\`.`;\n}\nconst $67824d98245208a0$export$be92b6f5f03c0fe9 = $67824d98245208a0$export$b25a304ec7d746bb;\nconst $67824d98245208a0$export$adb584737d712b70 = $67824d98245208a0$export$2b776f7e7ee60dbd;\n\n\n\n\nexport {$67824d98245208a0$export$388eb2d8f6d3261f as createProgressScope, $67824d98245208a0$export$b25a304ec7d746bb as Progress, $67824d98245208a0$export$2b776f7e7ee60dbd as ProgressIndicator, $67824d98245208a0$export$be92b6f5f03c0fe9 as Root, $67824d98245208a0$export$adb584737d712b70 as Indicator};\n//# sourceMappingURL=index.mjs.map\n","import * as RadixProgress from '@radix-ui/react-progress';\nimport classNames from 'classnames';\n\nimport styles from './Progress.module.scss';\n\nexport enum ProgressSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\ninterface ProgressProps {\n value: number;\n size?: ProgressSize;\n rootStyles?: string;\n indicatorStyles?: string;\n}\n\nconst Progress: React.FC<ProgressProps> = ({\n value,\n rootStyles,\n size = ProgressSize.Small,\n indicatorStyles,\n}) => {\n const rootClassNames = classNames(\n styles.progressRoot,\n {\n [styles.progressSmall]: size === ProgressSize.Small,\n [styles.progressMedium]: size === ProgressSize.Medium,\n [styles.progressLarge]: size === ProgressSize.Large,\n },\n rootStyles,\n );\n\n return (\n <RadixProgress.Root className={rootClassNames} value={value}>\n <RadixProgress.Indicator\n className={classNames(styles.progressIndicator, indicatorStyles)}\n style={{ transform: `translateX(-${100 - value}%)` }}\n />\n </RadixProgress.Root>\n );\n};\n\nexport default Progress;\n","import { toLocalizedNumber } from './locale';\n\n/**\n * Whether the current hizb is the first surah.\n *\n * @param {number} hizbNumber\n * @returns {boolean}\n */\nexport const isFirstHizb = (hizbNumber: number): boolean => hizbNumber === 1;\n\n/**\n * Whether the current hizb is the last surah.\n *\n * @param {number} hizbNumber\n * @returns {boolean}\n */\nexport const isLastHizb = (hizbNumber: number): boolean => hizbNumber === 60;\n\nconst TOTAL_QURAN_HIZB = 60;\nexport const getHizbIds = (lang: string) => {\n return [...Array(TOTAL_QURAN_HIZB)].map((n, index) => {\n const hizb = index + 1;\n return {\n value: hizb,\n label: toLocalizedNumber(hizb, lang),\n };\n });\n};\n\n/**\n * Given a hizbId, get chapters ids from a json file\n *\n * @param {string} hizbId\n * @returns {string[]} chapterIds\n */\nexport const getChapterIdsForHizb = async (hizbId: string): Promise<string[]> => {\n return new Promise((res) => {\n import(`@/data/hizb-to-chapter-mappings.json`).then((data) => {\n res(data.default[hizbId]);\n });\n });\n};\n","import { toLocalizedNumber } from './locale';\n\nconst TOTAL_QURAN_RUB_EL_HIZB = 240;\n/**\n * Whether the current Rub is the first Rub El Hizb.\n *\n * @param {number} rubNumber\n * @returns {boolean}\n */\nexport const isFirstRub = (rubNumber: number): boolean => rubNumber === 1;\n\n/**\n * Whether the current Rub is the last Rub El Hizb.\n *\n * @param {number} rubNumber\n * @returns {boolean}\n */\nexport const isLastRub = (rubNumber: number): boolean => rubNumber === TOTAL_QURAN_RUB_EL_HIZB;\n\nexport const getRubIds = (lang: string) => {\n return [...Array(TOTAL_QURAN_RUB_EL_HIZB)].map((n, index) => {\n const rub = index + 1;\n return {\n value: rub,\n label: toLocalizedNumber(rub, lang),\n };\n });\n};\n\nexport const getChapterIdsForRub = async (rubId: string): Promise<string[]> => {\n return new Promise((res) => {\n import(`@/data/rub-el-hizb-to-chapter-mappings.json`).then((data) => {\n res(data.default[rubId]);\n });\n });\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EndOfScrollingControls_container__IQJwB\",\"buttonsContainer\":\"EndOfScrollingControls_buttonsContainer__ryHQx\",\"progressWidgetContainer\":\"EndOfScrollingControls_progressWidgetContainer__8WMAh\",\"donationBannerContainer\":\"EndOfScrollingControls_donationBannerContainer__UpbNt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"QuranReaderReadingStreak_wrapper__87pNr\",\"container\":\"QuranReaderReadingStreak_container__AXXGB\",\"illustrationContainer\":\"QuranReaderReadingStreak_illustrationContainer__JDz7w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dailyProgressContainer\":\"QuranReaderStreak_dailyProgressContainer__c9GdS\",\"streakTitle\":\"QuranReaderStreak_streakTitle__nf8P_\",\"dailyGoal\":\"QuranReaderStreak_dailyGoal__vODFs\",\"progressContainer\":\"QuranReaderStreak_progressContainer__MFwyA\",\"progressTextContainer\":\"QuranReaderStreak_progressTextContainer__35yUy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"progressRoot\":\"Progress_progressRoot__Np4He\",\"progressSmall\":\"Progress_progressSmall__xl_va\",\"progressMedium\":\"Progress_progressMedium__ys5Rw\",\"progressLarge\":\"Progress_progressLarge__smmtV\",\"progressIndicator\":\"Progress_progressIndicator__dPgS9\"};"],"names":["_path","_path2","_path3","_path4","_path5","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","clipRule","strokeMiterlimit","initialData","isReadingByRevelationOrder","useSelector","selectIsReadingByRevelationOrder","useTranslation","scrollToTop","useScrollToTop","chapterId","pagesLookup","lookupRange","to","split","chapterNumber","Number","isFirstSurah","Button","type","ButtonType","prefix","ChevronLeftIcon","href","getPreviousSurahNavigationUrl","onClick","logButtonClick","isLastSurah","suffix","ChevronRightIcon","getNextSurahNavigationUrl","lastVerse","hizbNumber","isFirstHizb","getHizbNavigationUrl","isLastHizb","juzNumber","isFirstJuz","getJuzNavigationUrl","isLastJuz","words","pageNumber","selectQuranReaderStyles","quranFont","mushafLines","page","isFirstPage","getPageNavigationUrl","isLastPage","percent","isGoalDone","goal","currentActivityDay","weekData","lang","localizedPercent","toLocalizedNumber","isCompleted","div","className","styles","p","CurrentWeekProgress","ReadingGoalAmount","context","ReadingGoalAmountContext","Progress","value","ReadingStreakLayout","useGetStreakWithMetadata","disableIfNoGoalExists","isLoading","convertFractionToPercent","progress","MoonIllustrationSVG","QuranReaderStreak","rubElHizbNumber","isFirstRub","getRubNavigationUrl","isLastRub","chaptersData","useContext","DataContext","verseNumber","verseKey","isLastVerseOfSurah","isLastVerse","String","getSurahNavigationUrl","getChapterWithStartingVerseUrl","quranReaderDataType","QuranReaderReadingStreak","QuranReaderDataType","RevelationOrderNavigationNotice","view","RevelationOrderNavigationNoticeView","ChapterControls","VerseControls","PageControls","JuzControls","RubControls","HizbControls","$67824d98245208a0$var$PROGRESS_NAME","$67824d98245208a0$var$DEFAULT_MAX","$67824d98245208a0$var$createProgressContext","$67824d98245208a0$export$388eb2d8f6d3261f","$67824d98245208a0$var$ProgressProvider","$67824d98245208a0$var$useProgressContext","$67824d98245208a0$export$b25a304ec7d746bb","forwardedRef","__scopeProgress","valueProp","max","maxProp","getValueLabel","$67824d98245208a0$var$defaultGetValueLabel","progressProps","$67824d98245208a0$var$isValidMaxNumber","$67824d98245208a0$var$isValidValueNumber","valueLabel","$67824d98245208a0$var$isNumber","undefined","scope","role","$67824d98245208a0$var$getProgressState","ref","propTypes","propName","componentName","propValue","strVal","Error","$67824d98245208a0$var$getInvalidMaxError","$67824d98245208a0$var$getInvalidValueError","$67824d98245208a0$var$INDICATOR_NAME","$67824d98245208a0$export$2b776f7e7ee60dbd","_context$value","indicatorProps","Math","round","maxValue","isNaN","$67824d98245208a0$export$be92b6f5f03c0fe9","$67824d98245208a0$export$adb584737d712b70","ProgressSize","rootStyles","size","Small","indicatorStyles","rootClassNames","classNames","Medium","Large","RadixProgress","style","transform","getChapterIdsForHizb","hizbId","Promise","res","then","data","default","rubNumber","getChapterIdsForRub","rubId","module","exports"],"sourceRoot":""}
|