58078-02009497cf392859.js.map 92 KB

1
  1. {"version":3,"file":"static/chunks/58078-02009497cf392859.js","mappings":"wGAAIA,E,WACJ,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,WAgBvQ,IAdqB,SAAwBO,GAC3C,OAAoB,gBAAoB,MAAOb,EAAS,CACtDc,MAAO,GACPC,OAAQ,GACRC,QAAS,YACTC,KAAM,OACNC,MAAO,8BACNL,GAAQd,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEoB,EAAG,oIACHF,KAAM,eACNG,SAAU,UACVC,SAAU,gB,uCCdVC,EAASvB,E,WACb,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,WAsBvQ,IApBoB,SAAuBO,GACzC,OAAoB,gBAAoB,MAAOb,EAAS,CACtDkB,MAAO,6BACPJ,MAAO,GACPC,OAAQ,GACRC,QAAS,YACTC,KAAM,OACNM,OAAQ,eACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,QAChBC,UAAW,+BACVd,GAAQS,IAAYA,EAAuB,gBAAoB,SAAU,CAC1EM,GAAI,GACJC,GAAI,GACJpB,EAAG,MACAV,IAAUA,EAAqB,gBAAoB,OAAQ,CAC9DoB,EAAG,uD,iFC2BP,IAtBkC,SAACW,EAAsBtB,GACvD,OAAO,UACFsB,EACCA,EAAUC,OAAS,CACrBA,MAAOD,EAAUC,MAAMC,KAAI,SAACC,G,MAAU,CACpCC,KAAMD,EAAKC,KACXC,MAAOF,EAAKE,MACZC,aAAc5B,EAAE,qBAAkC,OAAbyB,EAAKI,UAAW,QACnDC,MAAOC,IAAWT,EAAUQ,QACzBL,EAAKO,wBAIVV,EAAUW,OAAS,CACrBA,MACEX,EAAUI,OAASQ,EAAAA,EAAAA,SAAyBZ,EAAUW,MAAQjC,EAAE,QAAwB,OAAhBsB,EAAUW,SAElFX,EAAUa,cAAgB,CAAEA,aAAcb,EAAUa,cACpDb,EAAUc,aAAe,CAAEA,YAAad,EAAUc,gB,gFCtCpDC,EAAmBC,EAAAA,EAAAA,aAczB,IAZ6C,SAC3CT,EACAU,EACAvC,EACAwC,GAEA,OAAI/C,OAAOgD,OAAOH,EAAAA,GAAgBI,SAASb,GAClC7B,EAAE,qBAA6B,OAAR6B,IAAW,QAAEC,MAAOC,IAAWQ,IAAeC,IAEvExC,EAAE,qBAAsC,OAAjBqC,GAAoB,CAAEP,MAAOC,IAAWQ,O,kJCaxE,IAd6C,Y,IAAGI,EAAM,EAANA,OACxC,GAAWC,EAAAA,EAAAA,KAATC,KACFC,GAAeC,EAAAA,EAAAA,YAAWC,EAAAA,GAChC,IAAKL,GAA4B,IAAlBA,EAAO5C,OACpB,OAAO,wBAIT,IAA0D,WAA1BkD,EAAAA,EAAAA,GAAgBN,EAAO,IAAG,MAAjDO,EAAO,EAAPA,QAASC,EAAQ,EAARA,SACZC,GAAcC,EAAAA,EAAAA,IAAeP,EAAcI,GAC3CI,EAAe,GAAqCC,OAAlCH,EAAYI,mBAAmB,KAAuC,QAApCD,EAAAA,EAAAA,IAAoBJ,EAAUN,IACxF,OAAO,SAACY,MAAG,CAACtC,UAAWuC,IAAAA,U,SAAmBJ,M,wECdrC,E,yOAAKK,GAAAA,EACP,IAAG,MADIA,EAEN,KAAG,O,CAFGA,IAAAA,EAAQ,KASpB,ICrBIpE,ED6FJ,EAxEqD,Y,QAAGmC,KAAAA,OAAI,IAAG,EAAAiC,EAASC,IAAG,EACnE,GAAQhB,EAAAA,EAAAA,GAAe,SAArB5C,EASF6D,EAASnC,IAASiC,EAASG,KAEjC,OACE,SAACL,MAAG,CAACtC,UAAWuC,IAAAA,U,UACd,SAACK,EAAAA,EAAW,CACVC,OACE,SAACP,MAAG,CAACtC,UAAWuC,IAAAA,M,SACJ1D,EAAT6D,EAAW,kCAAuC,+BAGvDI,QAAQ,SAACC,EAAAA,EAAe,IACxBC,UAAWC,EAAAA,EAAAA,MACXC,4BAA0B,EAC1BC,aArBe,SAACC,GAChBA,GACFC,EAAAA,EAAAA,IAAS,GAAQ,OAAL9C,EAAK,mCAEjB8C,EAAAA,EAAAA,IAAS,GAAQ,OAAL9C,EAAK,mC,SAmBd,YACC,OAD0B,EAAxB6C,QAIA,UAACd,MAAG,CAACtC,UAAWuC,IAAAA,iB,WACd,SAACe,EAAAA,EAAK,CACJC,WAAY,CACVC,IAAI,SAACA,KAAE,GAAM,GACbC,MACE,SAACC,EAAAA,EAAI,CAEHC,KAAK,+BACLC,QAASC,EAAAA,EAAAA,MACTC,UAAQ,GAHH,IAOXC,QAAQ,wCAEV,SAACC,IAAC,CAAChE,UAAWuC,IAAAA,c,SAGR1D,EAFF6D,EAEI,kCADA,yCAIR,SAACY,EAAAA,EAAK,CACJC,WAAY,CACVC,IAAI,SAACA,KAAE,GAAM,GACbC,MACE,SAACC,EAAAA,EAAI,CAEHC,KAAK,2BACLC,QAASC,EAAAA,EAAAA,MACTC,UAAQ,GAHH,IAOXC,QAAQ,+CApCgB,W,wEC9CxC,SAAS1F,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,WAEvQ,ICHI,EDiBJ,EAdc,SAAiBO,GAC7B,OAAoB,gBAAoB,MAAOb,EAAS,CACtDc,MAAO,GACPC,OAAQ,GACRC,QAAS,YACTC,KAAM,OACNC,MAAO,8BACNL,GAAQd,IAAUA,EAAqB,gBAAoB,OAAQ,CACpEoB,EAAG,kOACHF,KAAM,eACNG,SAAU,UACVC,SAAU,eE4Fd,EA5FwB,WACtB,IAAM,GAAQ+B,EAAAA,EAAAA,GAAe,SAArB5C,EASR,OACE,SAACyD,MAAG,CAACtC,UAAWuC,IAAAA,U,UACd,SAACK,EAAAA,EAAW,CACVC,OACE,UAACP,MAAG,CAACtC,UAAWuC,IAAAA,M,WACd,SAAC0B,EAAQ,IACRpF,EAAE,iCAGPiE,QAAQ,SAACC,EAAAA,EAAe,IACxBC,UAAWC,EAAAA,EAAAA,MACXC,4BAA0B,EAC1BC,aApBe,SAACC,GAChBA,GACFC,EAAAA,EAAAA,IAAS,qCAETA,EAAAA,EAAAA,IAAS,qC,SAkBN,YACC,OAD0B,EAAxBD,QAIA,UAACd,MAAG,C,WACF,UAACA,MAAG,CAACtC,UAAWuC,IAAAA,iB,WACd,SAACD,MAAG,CAACtC,UAAWuC,IAAAA,c,SACb1D,EAAE,+CAEL,SAACyE,EAAAA,EAAK,CACJC,WAAY,CACVW,IAAI,SAACA,KAAE,GAAM,GACbC,OAAO,SAACT,EAAAA,EAAI,CAASC,KAAK,SAASC,QAASC,EAAAA,EAAAA,MAAmBC,UAAQ,GAArD,GAClBM,OAAO,SAACV,EAAAA,EAAI,CAASC,KAAK,SAASC,QAASC,EAAAA,EAAAA,MAAmBC,UAAQ,GAArD,GAClBO,OAAO,SAACX,EAAAA,EAAI,CAASC,KAAK,QAAQC,QAASC,EAAAA,EAAAA,MAAmBC,UAAQ,GAApD,GAClBQ,OACE,SAACZ,EAAAA,EAAI,CAEHC,KAAK,+BACLC,QAASC,EAAAA,EAAAA,MACTC,UAAQ,GAHH,GAMTS,OACE,SAACb,EAAAA,EAAI,CAEHC,KAAK,sDACLC,QAASC,EAAAA,EAAAA,MACTC,UAAQ,GAHH,IAOXC,QAAQ,sDAGZ,UAACzB,MAAG,CAACtC,UAAWuC,IAAAA,iB,WACd,SAACD,MAAG,CAACtC,UAAWuC,IAAAA,c,SACb1D,EAAE,+CAEL,SAACyD,MAAG,CAACtC,UAAWuC,IAAAA,c,SACb1D,EAAE,wDAEL,SAACyE,EAAAA,EAAK,CACJC,WAAY,CACVW,IAAI,SAACA,KAAE,GAAM,GACbV,IAAI,SAACA,KAAE,GAAM,IAEfO,QAAQ,4DAEV,SAACzB,MAAG,CAACtC,UAAWwE,IAAWjC,IAAAA,cAAsBA,IAAAA,kB,SAC9C1D,EAAE,sDAEL,SAACyE,EAAAA,EAAK,CACJC,WAAY,CACVW,IAAI,SAACA,KAAE,GAAM,GACbV,IAAI,SAACA,KAAE,GAAM,IAEfO,QAAQ,+DAxDc,W,yCCSxC,EArC+B,WAC7B,IACEU,GACEC,EAAAA,EAAAA,KADFD,KAAQE,UAEJ,GAAQlD,EAAAA,EAAAA,GAAe,SAArB5C,EACR,OACE,UAACyD,MAAG,C,WACF,UAACA,MAAG,CAACtC,UAAWuC,IAAAA,U,UACb1D,EAAE,gBACH,SAAC+F,EAAAA,EAAa,C,UACZ,SAACtB,EAAAA,EAAK,CACJS,QAAQ,mBACRR,WAAY,CACVE,MACE,SAACC,EAAAA,EAAI,CAEHC,KAAK,2BACLC,QAASC,EAAAA,EAAAA,MACTC,UAAQ,GAHH,GAMTe,MAAM,SAACA,OAAI,GAAM,YAKzB,SAACvB,EAAAA,EAAK,CACJS,QAAQ,yBACRR,WAAY,CACVuB,GAAG,SAACA,IAAC,CAAC9E,UAAWuC,IAAAA,MAAkB,IAErCjB,OAAQ,CAAEyD,KAAM,GAAa,OAAVJ,U,iCCc3B,EAnCoB,SAClBK,EACAC,GAEA,IAAoCC,GAAAA,EAAAA,EAAAA,WAAS,GAAtCC,EAA6BD,EAAe,GAAhCE,EAAiBF,EAAe,GACzBA,GAAAA,EAAAA,EAAAA,UAAuB,MAA1CG,EAAmBH,EAA4B,GAAxCI,EAAYJ,EAA4B,GAEhDK,GAASC,EAAAA,EAAAA,aAAY,W,OACzB,iBAAOC,G,IAMHR,EADMS,EAGCC,EAEPV,E,iEATFG,GAAc,GACdE,EAAS,M,iBAGU,O,uBAAA,C,EAAMN,EAAWS,I,OAElC,OAFMC,EAAW,SACV,OAAPT,QAAO,IAAPA,GAAkB,QAAlBA,EAAAA,EAASW,iBAAS,IAAlBX,GAAAA,EAAAA,KAAAA,EAAqBS,EAAUD,GACxB,C,EAAAC,G,cACAC,EAAG,SACVL,EAASK,GACF,OAAPV,QAAO,IAAPA,GAAgB,QAAhBA,EAAAA,EAASY,eAAO,IAAhBZ,GAAAA,EAAAA,KAAAA,EAAmBU,EAAKF,G,oBAExBL,GAAc,G,WAGhB,MAAO,C,EAAA,a,gBAfFK,G,gCADkB,GAkBzB,CAACT,EAAYC,IAGf,MAAO,CACLM,OAAAA,EACAJ,WAAAA,EACAE,MAAAA,I,4ECpBES,GAA6B,CACjCtF,MAJsB,GAMlBuF,GAA6B,CACjCvF,MANsB,KAyMxB,GAtLqC,Y,IAAGwB,EAAQ,EAARA,SAAU4D,EAAS,EAATA,UAC1C,GAAQnE,EAAAA,EAAAA,GAAe,UAArB5C,EACFmH,GAAQC,EAAAA,EAAAA,YACYC,GAAAA,EAAAA,EAAAA,MAAlBX,EAAkBW,EAAlBX,OAAQY,EAAUD,EAAVC,MACgCjB,GAAAA,EAAAA,EAAAA,WAAS,GAAlDkB,EAAyClB,EAAe,GAAtCmB,EAAuBnB,EAAe,GACzDoB,GAA4BC,EAAAA,EAAAA,KAEoBC,EAAAA,EAAW,W,OAC/D,oB,IAASC,EAAMC,E,0CACb,OADOD,EAAI,EAAJA,KAAMC,EAAQ,EAARA,SACN,C,GAAAC,EAAAA,EAAAA,KAAY,QACjBF,KAAAA,EACAC,SAAAA,GACI1E,GAAY,CACdR,OAAQ,CAAE,GAAcQ,OAAZA,EAAS,KAAY,OAATA,c,mDANiC,GAU/D,CACE4D,UAAW,SAACgB,IAGU,KAAZ,OAAJA,QAAI,IAAJA,OAAAA,EAAAA,EAAMvB,QACRW,EAAMnH,EAAE,6BAA8B,CACpCgI,OAAQC,EAAAA,YAAAA,QAGVC,EAAY,CAACH,EAAKI,SAElBhB,EAAMnH,EAAE,sBAAuB,CAC7BgI,OAAQC,EAAAA,YAAAA,UAEVC,EAAY,CAACH,KAEfK,IAMAX,GAA0BY,EAAAA,EAAAA,OAAsB,SAACC,GAC/C,OAAO,kBACFA,GAAkB,CACrBC,UAAU,kBAAKD,EAAmBC,WAAU,UAACC,EAAAA,EAAAA,WAAwB,SAIrEzB,GACFA,KAGJC,QAAS,WACPG,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,WA7CRvB,EAA8CiB,EAA9CjB,OAAiBJ,EAA6BqB,EAA7BrB,WAmDnB4B,EAAc,SAACH,GACf5E,GACFuD,GAAO+B,EAAAA,EAAAA,IAAuBtF,GAAW4E,IAIvCK,EAAkB,WAGtB,IAAMM,GAAO,OAAI,EAAeA,QAAQC,QAAO,SAACC,GAC9C,IAAKA,EAAIC,WAAW,eAClB,OAAO,EAGT,GAAI1F,EAAU,CAEZ,IAAM2F,EAAcF,EAAIG,QAAQ,cAAe,IAC/C,OAAOC,EAAAA,EAAAA,IAAuB7F,EAAU2F,GAI1C,OAAO,KAGLJ,EAAK3I,QACP2I,EAAKO,SAAQ,SAACL,GACZtB,EAAM4B,OAAON,GACblC,EAAOkC,OAKPO,EAAW,W,OAAA,oB,IAASvB,EAAMC,E,iDAAND,EAAI,EAAJA,KAAMC,EAAQ,EAARA,UAC9BuB,EAAAA,EAAAA,IAAe,YACfC,EAAQ,CACNzB,KAAAA,EACAC,SAAAA,I,0BAJU,G,gCAAG,GAOjB,OACE,sB,WACE,SAACyB,EAAe,KAChB,SAACC,EAAAA,EAAW,CACVC,WAAY,CACV,CACE1H,MAAO,OACPM,YAAapC,EAAE,0BACfuB,MAAO,CACL,CACEG,KAAM+H,EAAAA,EAAAA,SACN5H,QAASS,EAAAA,EAAAA,cACTX,OAAO,IAET,kBACKsF,IAA0B,CAC7BvF,KAAM+H,EAAAA,EAAAA,cACN5H,QAASS,EAAAA,EAAAA,cACTN,kBAAkB,UACbiF,IAELrF,cAAc8H,EAAAA,EAAAA,GACZpH,EAAAA,EAAAA,cACA,OACAtC,GACA,UACKiH,QAIT,kBACKC,IAA0B,CAC7BxF,KAAM+H,EAAAA,EAAAA,cACN5H,QAASS,EAAAA,EAAAA,cACTN,kBAAkB,UACbkF,IAELtF,cAAc8H,EAAAA,EAAAA,GACZpH,EAAAA,EAAAA,cACA,OACAtC,GACA,UACKkH,QAKXxF,KAAMQ,EAAAA,EAAAA,SACNyH,mBAAoBjG,IAAAA,UACpBkG,eAAgB5J,EAAE,2BAEpB,CACE8B,MAAO,WACPG,OAAO,SAAC4H,EAAsB,IAC9B1H,cAAc,EACdT,KAAMQ,EAAAA,EAAAA,SACN4H,cAAc,SAACC,EAA2B,IAC1CC,SAAU,SAACC,GACTzC,EAAoByC,MAGxBzI,KAAI,SAACM,G,OAAUoI,EAAAA,EAAAA,GAA0BpI,EAAO9B,MAClDmJ,SAAUA,EACVgB,aAAcC,EACdC,aAAc,SAAChK,G,OACb,SAACoD,MAAG,CAACtC,UAAWuC,IAAAA,gB,UACd,SAACD,MAAG,CAACtC,UAAWuC,IAAAA,gB,UACd,SAAC4G,EAAAA,GAAM,CACLC,SAAS,SACTC,UAAWnK,EAAMmK,UACjBC,WAAYpK,EAAMmK,UAClBE,QAAS,SAAC7K,GACRA,EAAE8K,mB,SAGgB3K,EAAnBuH,EAAqB,wBAA6B,qC,wBCnKnE,GA5CwB,Y,IAAGkD,EAAU,EAAVA,WAAYtC,EAAU,EAAVA,KAAQyC,GAAMC,EAAS,EAATA,UAC7C,GAAQjI,EAAAA,EAAAA,GAAe,SAArB5C,EACF8K,GAAUC,EAAAA,GAAAA,KAEVC,EAAkB,W,OAAA,mB,iEAGF,OAFpB5B,EAAAA,EAAAA,IAAe,eAEK,C,EAAM0B,EAAQ,CAChCG,YAAajL,EAAE,iBACfkL,WAAYlL,EAAE,iBACdgE,MAAOhE,EAAE,2BACTmL,SAAUnL,EAAE,iC,cAJM,WAQlBoJ,EAAAA,EAAAA,IAAe,sBAAuB,CAAEgC,OAAQR,IAChDC,MAEAzB,EAAAA,EAAAA,IAAe,6BAA8B,CAAEgC,OAAQR,I,6DAdnC,GAkBlBS,EAAc,CAClBZ,WAAAA,EACAD,UAAWC,GAGb,OACE,sB,WACE,SAACH,EAAAA,IAAM,gBACLvF,QAASuG,EAAAA,GAAAA,MACTZ,QAASM,EACTO,QAASvL,EAAE,UACXwL,KAAMC,EAAAA,GAAAA,MACN/J,KAAMgK,EAAAA,GAAAA,SACFL,GAAW,C,SAChB,QAGD,SAACM,GAAAA,EAAiB,QClBlB1E,GAA6B,CACjCtF,MAHsB,GAKlBuF,GAA6B,CACjCvF,MALsB,KAgKxB,GAxJkC,Y,IAChCwG,EAAI,EAAJA,KACAyD,EAAa,EAAbA,cACAzI,EAAQ,EAARA,SACAiI,EAAM,EAANA,OACAS,EAAmB,EAAnBA,oBAEM,GAAQjJ,EAAAA,EAAAA,GAAe,UAArB5C,EACwBqG,GAAAA,EAAAA,EAAAA,WAAS,GAAlCwB,EAAyBxB,EAAe,GAA9ByF,EAAezF,EAAe,GACzCc,GAAQC,EAAAA,EAAAA,YACR,GAAaC,EAAAA,EAAAA,MAAXX,OAEFwB,EAAc,SAACH,GACf5E,GACFuD,GAAO+B,EAAAA,EAAAA,IAAuBtF,GAAW4E,GAGvCqD,GACF1E,GAAOqF,EAAAA,EAAAA,IAAmBX,GAASrD,IAIoBJ,EAAAA,EAAW,W,OAIpE,oB,IAASiD,EAAIhD,E,0CACX,OADOgD,EAAE,EAAFA,GAAIhD,EAAI,EAAJA,KACJ,C,GAAAoE,EAAAA,EAAAA,IAAepB,EAAIhD,EAAMC,U,mDALkC,GAOpE,CACEd,UAAW,SAACgB,IAGU,KAAZ,OAAJA,QAAI,IAAJA,OAAAA,EAAAA,EAAMvB,QACRW,EAAMnH,EAAE,+BAAgC,CACtCgI,OAAQC,EAAAA,YAAAA,QAGG,OAAb2D,QAAa,IAAbA,GAAAA,EAAgB7D,EAAKI,MAErBD,EAAY,CAACH,EAAKI,SAElBhB,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,UAEG,OAAb2D,QAAa,IAAbA,GAAAA,EAAgB7D,GAChBG,EAAY,CAACH,MAGjBf,QAAS,WACPG,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,WA7BRvB,EAAmDiB,EAAnDjB,OAAoBJ,EAA+BqB,EAA/BrB,WAmCtB6C,EAAW,W,OAAA,oB,IAASvB,E,iDAAAA,EAAI,EAAJA,MACxBwB,EAAAA,EAAAA,IAAe,cAAe,CAC5BvB,SAAAA,IAEFoE,EAAW,CAAErB,GAAIzC,EAAKyC,GAAIhD,KAAAA,I,0BAJd,G,gCAAG,GAOjB,OACE,SAAC2B,EAAAA,EAAW,CACVC,WAAY,CACV,CACE1H,MAAO,OACPM,YAAapC,EAAE,0BACfmC,aAAcgG,EAAKP,KACnBrG,MAAO,CACL,CACEG,KAAM+H,EAAAA,EAAAA,SACN5H,QAASS,EAAAA,EAAAA,cACTX,OAAO,IAET,kBACKsF,IAA0B,CAC7BvF,KAAM+H,EAAAA,EAAAA,cACN5H,QAASS,EAAAA,EAAAA,cACTN,kBAAkB,UACbiF,IAELrF,cAAc8H,EAAAA,EAAAA,GACZpH,EAAAA,EAAAA,cACA,OACAtC,GACA,UACKiH,QAIT,kBACKC,IAA0B,CAC7BxF,KAAM+H,EAAAA,EAAAA,cACN5H,QAASS,EAAAA,EAAAA,cACTN,kBAAkB,UACbkF,IAELtF,cAAc8H,EAAAA,EAAAA,GACZpH,EAAAA,EAAAA,cACA,OACAtC,GACA,UACKkH,QAKXxF,KAAMQ,EAAAA,EAAAA,SACNyH,mBAAoBjG,IAAAA,UACpBkG,eAAgB5J,EAAE,4BAEpBwB,KAAI,SAACM,G,OAAUoI,EAAAA,EAAAA,GAA0BpI,EAAO9B,MAClDmJ,SAAUA,EACVgB,aAAc+B,EACd7B,aAAc,Y,IAAGG,EAAS,EAATA,UACf,OACE,UAAC/G,MAAG,CAACtC,UAAWuC,IAAAA,gB,WACd,SAAC4G,EAAAA,GAAM,CACLE,UAAWA,EACXzF,QAASuG,EAAAA,GAAAA,SACTb,WAAYD,EACZE,QAAS,SAAC7K,GACRA,EAAE8K,kBACFkB,K,SAGD7L,EAAE,aAEL,SAACyD,MAAG,C,UACF,SAAC6G,EAAAA,GAAM,CACLC,SAAS,SACTC,UAAWA,EACXC,WAAYD,EACZrJ,UAAWuC,IAAAA,WACXgH,QAAS,SAAC7K,GACRA,EAAE8K,kBACFmB,GAAY,I,SAGb9L,EAAE,mC,uBNvLnB,SAAS,KAAa,OAAO,GAAWP,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,GAAM,GAASQ,MAAM,KAAMN,WAEvQ,IODO,GPSP,GARc,SAAiBO,GAC7B,OAAoB,gBAAoB,MAAO,GAAS,CACtDG,QAAS,gBACTC,KAAM,gBACLJ,GAAQ,IAAU,EAAqB,gBAAoB,OAAQ,CACpEM,EAAG,gM,SONKwL,GAAAA,EACA,WAAG,a,CADHA,KAAAA,GAAkB,K,gBCiP9B,GAnN0C,Y,IA8IfhE,EAAsB,EA7I/CA,EAAI,EAAJA,KACAhF,EAAQ,EAARA,SACAiI,EAAM,EAANA,OACAQ,EAAa,EAAbA,cACAQ,EAAa,EAAbA,cAEM,GAAQxJ,EAAAA,EAAAA,GAAe,UAArB5C,EACFmH,GAAQC,EAAAA,EAAAA,YACYC,GAAAA,EAAAA,EAAAA,MAAlBX,EAAkBW,EAAlBX,OAAQY,EAAUD,EAAVC,MACwBjB,GAAAA,EAAAA,EAAAA,WAAkB,GAAnDgG,EAAiChG,EAAwB,GAA3CiG,EAAmBjG,EAAwB,GAiC1D6B,EAAc,SAACH,GACf5E,GACFuD,GAAO+B,EAAAA,EAAAA,IAAuBtF,GAAW4E,GAGvCqD,GACF1E,GAAOqF,EAAAA,EAAAA,IAAmBX,GAASrD,IAIqCJ,EAAAA,GAC1E,WACE,OAAO4E,EAAAA,EAAAA,IAAgBpE,EAAKyC,GAAI,CAC9BhD,KAAMO,EAAKP,KACXjF,QAAY,OAAJwF,QAAI,IAAJA,OAAAA,EAAAA,EAAMxF,SAAU,OAG5B,CACEoE,UAAW,SAACF,GACV,IAAM,EAAaA,EAAX2F,OACRrF,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,UAEVC,GAAY,kBACPC,GAAI,CACPsE,iBAAkB,CAChB,CACE/K,KAAMyK,GAAmBO,WACzB9B,GAAI4B,EACJG,UAAW,IAAIC,KACfC,UAAW,IAAID,WAKvB5F,QAAS,WACPG,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,WA3BRvB,EAAoEiB,EAApEjB,OAA4BJ,EAAwCqB,EAAxCrB,WAiCuBqB,EAAAA,EAAW,W,OACpE,iBAAOiD,G,0CACL,MAAO,C,GAAAkC,EAAAA,EAAAA,IAAelC,U,gBADjBA,G,gCAD6D,GAIpE,CACE7D,UAAW,WACTI,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,UAEVC,EAAY,IAnFM,WAGtB,IAAMQ,GAAO,OAAI,EAAeA,QAAQC,QAAO,SAACC,GAC9C,IAAKA,EAAIC,WAAW,eAClB,OAAO,EAGT,GAAI1F,EAAU,CAEZ,IAAM2F,EAAcF,EAAIG,QAAQ,cAAe,IAC/C,OAAOC,EAAAA,EAAAA,IAAuB7F,EAAU2F,GAG1C,OAES,KAOPJ,EAAK3I,QACP2I,EAAKO,SAAQ,SAACL,GACZtB,EAAM4B,OAAON,GACblC,EAAOkC,MA0DPR,GACIgE,GACFA,KAGJpF,QAAS,WACPG,EAAMnH,EAAE,wBAAyB,CAC/BgI,OAAQC,EAAAA,YAAAA,WAjBRvB,EAAmDiB,EAAnDjB,OAiDFqG,EAjDqDpF,EAA/BrB,YAiDmB0G,EAEzC3B,EAAc,CAClBZ,WAAYsC,EACZvC,UAAWuC,GAGPE,EAEL,QAFwB9E,EAAI,OAAJA,QAAI,IAAJA,GAAsB,QAAtBA,EAAAA,EAAMsE,wBAAgB,IAAtBtE,OAAAA,EAAAA,EAAwB+E,MAC/C,SAACC,G,OAAWA,EAAOzL,OAASyK,GAAmBO,qBAChD,WAFwBvE,EAEpB,EAAFyC,GASH,OACE,SAACnH,MAAG,CAACtC,UAAWuC,KAAAA,U,SACb2I,GACC,SAACe,GAAQ,CACPvB,oBAhDoB,WAC1BS,GAAgB,IAChBlD,EAAAA,EAAAA,IAAe,qBA+CTjB,KAAMA,EACNyD,cAbqB,SAACyB,GAC5Bf,GAAgB,GACZV,GACFA,EAAcyB,IAWVlK,SAAUA,EACViI,OAAQA,KAGV,sB,WACE,UAAC3H,MAAG,CAACtC,UAAWuC,KAAAA,iB,WACd,SAAC4G,EAAAA,IAAM,gBACLgD,iBAAiB,EACjBvI,QAASuG,EAAAA,GAAAA,MACTZ,QAjDU,SAAC7K,GACrBA,EAAE8K,mBACFvB,EAAAA,EAAAA,IAAe,aACfkD,GAAgB,IA+CNf,QAASvL,EAAE,QACXwL,KAAMC,EAAAA,GAAAA,OACFJ,GAAW,C,UAEf,SAACkC,GAAQ,QAEX,SAACC,GAAe,CACd3C,UAnDY,WACtB4C,EAAWtF,EAAKyC,KAmDNzC,KAAMA,EACNsC,WAAYsC,QAGhB,SAACtJ,MAAG,CAACtC,UAAWuC,KAAAA,S,SAAkByE,EAAKP,OACtCqF,GACC,SAACxJ,MAAG,CAACtC,UAAWuC,KAAAA,qB,UACd,SAAC4G,EAAAA,IAAM,gBACLkB,KAAMC,EAAAA,GAAAA,MACN3G,MAAM4I,EAAAA,GAAAA,IAAuBT,GAC7BhI,UAAQ,EACRyF,QA3DY,SAAC7K,GACzBA,EAAE8K,mBACFvB,EAAAA,EAAAA,IAAe,uBA0DCiC,GAAW,C,SAEdrL,EAAE,0BAIP,sB,WACE,SAACyD,MAAG,CAACtC,UAAWuC,KAAAA,qB,UACd,SAAC4G,EAAAA,IAAM,gBAACkB,KAAMC,EAAAA,GAAAA,MAAkBf,QApFpB,SAAC7K,GACzBA,EAAE8K,mBACFvB,EAAAA,EAAAA,IAAe,mBACfuE,MAiF4EtC,GAAW,C,SACxErL,EAAE,0BAGP,SAAC+J,EAA2B,CAACrI,KAAMiC,EAASG,gB,8FCnL1D,GAhCoC,Y,IAAGnB,EAAM,EAANA,OAQrC,OACE,SAACc,MAAG,CAACtC,UAAWuC,KAAAA,U,UACd,SAACK,EAAAA,EAAW,CACVC,OACE,SAACP,MAAG,CAACtC,UAAWuC,KAAAA,gB,UACd,SAACkK,GAAAA,EAAmB,CAACjL,OAAQA,MAGjCsB,QAAQ,SAACC,EAAAA,EAAe,IACxBG,4BAA0B,EAC1BC,aAjBe,SAACuJ,GAChBA,GACFrJ,EAAAA,EAAAA,IAAS,+BAETA,EAAAA,EAAAA,IAAS,+B,SAeN,YACC,IAD0B,EAAxBD,OACqB,OAAO,KAE9B,IAAuD,YAA1BtB,EAAAA,GAAAA,GAAgBN,EAAO,IAAG,MAA9CO,EAAO,EAAPA,QAAS4K,EAAK,EAALA,MAElB,OAAO,SAACC,GAAAA,EAAmB,CAACC,UAAWC,OAAO/K,GAAUgL,YAAaD,OAAOH,W,wBC0DtF,GAlFsC,Y,IACpCK,EAAK,EAALA,MACAhL,EAAQ,EAARA,SACAyI,EAAa,EAAbA,cACAQ,EAAa,EAAbA,cACAhB,EAAM,EAANA,OAEoBxI,GAAAA,EAAAA,EAAAA,GAAe,SAA3B5C,EAAY4C,EAAZ5C,EAAG6C,EAASD,EAATC,KACmDwD,GAAAA,EAAAA,EAAAA,WAAS,GAAhE+H,EAAuD/H,EAAe,GAA3CgI,EAA4BhI,EAAe,GAgB7E,OACE,UAAC5C,MAAG,CAACtC,UAAWuC,KAAAA,U,WACZ0H,IACA,qB,SACGgD,GACC,UAAC3K,MAAG,CAACtC,UAAWuC,KAAAA,iB,WACd,UAACD,MAAG,CAACtC,UAAWuC,KAAAA,uB,WACd,SAACyB,IAAC,C,SAAEnF,EAAE,uBACN,SAACsK,EAAAA,GAAM,CACLvF,QAASuG,EAAAA,GAAAA,MACTE,KAAMC,EAAAA,GAAAA,MACNf,QApBc,YAC5BtB,EAAAA,EAAAA,IAAe,+BACfiF,GAAyB,IAmBX9C,QAASvL,EAAE,gB,SAEZ,UAIH,SAACsO,GAAW,CAACnL,SAAUA,EAAU4D,UAtB3B,WAChBsH,GAAyB,UAwBjB,SAAC5K,MAAG,CAACtC,UAAWuC,KAAAA,oB,UACd,SAAC4G,EAAAA,GAAM,CAACkB,KAAMC,EAAAA,GAAAA,MAAkBxH,QAAQ,SAACsK,GAAAA,EAAQ,IAAK7D,QApCzC,YACvBtB,EAAAA,EAAAA,IAAe,yBACfiF,GAAyB,I,SAmCZrO,EAAE,0BAMZmO,EAAM3M,KAAI,SAAC2G,EAAMqG,GAChB,OACE,UAAC/K,MAAG,C,WACF,UAACA,MAAG,CAACtC,UAAWuC,KAAAA,oB,WACd,SAACyB,IAAC,C,SAAE,GAAsBqJ,OAAnBxO,EAAE,cAAc,KAAa,OAAVwO,EAAQ,MAClC,SAACC,OAAI,CAACtN,UAAWuC,KAAAA,SAAiBgL,SAAUvG,EAAKwE,UAAUgC,W,UACxDC,EAAAA,GAAAA,IAAqBzG,EAAKwE,UAAW9J,EAAM,CAC1CgM,KAAM,UACNC,aAASC,EACTC,MAAO,gBAIR,OAAJ7G,QAAI,IAAJA,OAAAA,EAAAA,EAAMxF,UAAU,SAACsM,GAAU,CAACtM,OAAQwF,EAAKxF,UAC1C,SAACuM,GAAgB,CACf/L,SAAUA,EACVyI,cAAeA,EACfQ,cAAeA,EAEfhB,OAAQA,EACRjD,KAAMA,GAFDA,EAAKyC,MAhBJzC,EAAKyC,W,wBCFzB,GAlD4C,Y,IAC1CuE,EAAO,EAAPA,QACA5K,EAAM,EAANA,OACApB,EAAQ,EAARA,SACAiI,EAAM,EAANA,OACAQ,EAAa,EAAbA,cACAQ,EAAa,EAAbA,cAEMgD,GAAkBC,EAAAA,EAAAA,UAElBC,EAAWlE,GAASW,EAAAA,EAAAA,IAAmBX,IAAU3C,EAAAA,EAAAA,IAAuBtF,GAExEoM,EAAiB,WACrBnD,IACA+C,KAEF,OACE,SAACK,GAAAA,QAAY,CACXC,SAAUL,EACV7K,OAAQA,EACRmL,QAAQ,SAACjM,MAAG,CAACtC,UAAWuC,IAAAA,kBACxBiM,gBAAc,EACdR,QAASA,EACTS,gBAAiBT,EACjB3D,KAAMqE,GAAAA,iBAAAA,O,UAEN,SAACC,GAAAA,EAAW,CACVR,SAAUA,EACVS,QAASC,EAAAA,GACTC,yBAAyB,EACzBC,OAAQ,SAACrJ,GAEP,OADauE,EAAUvE,EAAqBA,EAAS,KAGjD,SAACsJ,GAAY,CACXvE,cAAeA,EACfQ,cAAeA,EAAgBmD,OAAiBR,EAChD5L,SAAUA,EACVgL,MAAOiC,IAAQvJ,GAAYA,EAAW,CAACA,GACvCuE,OAAQA,KAIP,SAACkD,GAAW,CAACnL,SAAUA,W,2NCCxC,IA/C6C,Y,IAAG6K,EAAS,EAATA,UAAWE,EAAW,EAAXA,YAAamC,EAAS,EAATA,UAChEC,GAAoBC,EAAAA,EAAAA,IAAYC,EAAAA,GAAyBC,EAAAA,IACvDC,EAA2BJ,EAA3BI,UAAWC,EAAgBL,EAAhBK,YACb,GAAaC,EAAAA,EAAAA,IAAYF,EAAWC,GAAlCE,OACFC,GAAuBP,EAAAA,EAAAA,IAAYQ,EAAAA,GAA4BC,EAAAA,IAC/D,GAAWpO,EAAAA,EAAAA,KAATC,KAEFoO,GAAY,gBAChBC,OAAO,EACPC,QAAS,EACTC,aAAcN,EAAqBO,KAAK,KACxCC,KAAMpD,IACHqD,EAAAA,EAAAA,IAAqBjB,EAAkBI,YAAU,CACpDG,OAAAA,IAEF,OACE,SAACf,EAAAA,EAAW,CAEVR,SAAU,oBAAiCpB,OAAbF,EAAU,KAAe,OAAZE,GAC3C6B,QAAS,W,OAAMA,EAAAA,EAAAA,KAAQyB,EAAAA,EAAAA,IAAcxD,EAAUW,WAAY9L,EAAMoO,KACjEf,OAAQ,SAACnI,G,IAEYA,EAMZ0J,EAPP,IAAK1J,EAAM,OAAO,KAClB,IAAM0J,EAAwB,QAAX1J,EAAAA,EAAK2J,cAAM,IAAX3J,OAAAA,EAAAA,EAAc,GACjC,OACE,UAACtE,MAAG,CAACtC,UAAWuC,IAAAA,e,WACd,SAACiO,EAAAA,EAAgB,CAACD,OAAQ3J,EAAK2J,OAAQrB,UAAWA,KAElD,SAAC5M,MAAG,C,SACsB,QAAvBgO,EAAAA,EAAWL,oBAAY,IAAvBK,OAAAA,EAAAA,EAAyBjQ,KAAI,SAACoQ,GAC7B,OACE,SAACC,EAAAA,EAAe,CAEdC,qBAAsBxB,EAAkBwB,qBACxCC,KAAMH,EAAYG,KAClBC,WAAYJ,EAAYI,WACxBC,aAAcL,EAAYK,cAJrBL,EAAYhH,iB,uEC9B9B,E,8FAAKxG,GAAAA,EACN,KAAG,OADGA,EAEL,MAAG,Q,CAFEA,IAAAA,EAAoB,KAsEhC,IAjEoB,Y,QAClB8N,cAAAA,OAAa,IAAG,GAAK,EACrBjO,EAAM,EAANA,OACAD,EAAK,EAALA,MACAmO,EAAM,EAANA,OACAC,EAAQ,EAARA,SACA/N,EAA0B,EAA1BA,2BACAgO,EAAU,EAAVA,WACA/N,EAAY,EAAZA,aAAY,IACZH,UAAAA,OAAS,IAAG,EAAAC,EAAqBkO,KAAI,EAETjM,GAAAA,EAAAA,EAAAA,UAAS6L,GAA9B3N,EAAqB8B,EAAuB,GAApCkM,EAAalM,EAAuB,IAEnDmM,EAAAA,EAAAA,YAAU,WACRD,EAAUF,KACT,CAACA,IASJ,OACE,UAACI,EAAAA,GAAyB,CAACnO,aAAcA,EAAcoO,KAAMnO,E,WAC3D,SAACkO,EAAAA,GAA4B,CAACE,SAAO,E,UACnC,SAAClP,MAAG,CAACtC,UAAWuC,IAAAA,OAAegH,QALb,W,OAAM6H,GAAU,SAACK,G,OAAcA,M,SAM9CzO,IAAcC,EAAqBkO,MAClC,sB,WACE,UAAC7O,MAAG,CAACtC,UAAWuC,IAAAA,W,WACd,SAACD,MAAG,CACFtC,UAAWwE,IAAWjC,IAAAA,iBACpB,UAACA,IAAAA,cAAuBW,GAA8BE,I,SAGvDN,IAEFD,MAEH,SAACP,MAAG,CAACtC,UAAWuC,IAAAA,gBAAwBgH,QAvB5B,SAAC7K,GACvBA,EAAEgT,iBACFhT,EAAE8K,mB,SAsBWwH,QAIL,sB,WACE,SAAC1O,MAAG,CAACtC,UAAWuC,IAAAA,W,SAAoBM,KACpC,SAACP,MAAG,CACFtC,UAAWwE,IAAWjC,IAAAA,iBACpB,UAACA,IAAAA,cAAuBW,GAA8BE,I,SAGvDN,YAMX,SAACwO,EAAAA,GAAuC,C,SACrClO,GAAU6N,EAAS,CAAE7N,OAAAA,W,kFCzB9B,IAzD0B,WACxB,IAAuCuO,GAAAA,EAAAA,EAAAA,KAA/BC,EAA+BD,EAA/BC,SAAUlI,EAAqBiI,EAArBjI,UAAWmI,EAAUF,EAAVE,MAEvBC,GAAUC,EAAAA,EAAAA,UAAQ,WACtB,IAAMC,EAAkB,GAcxB,OAbIH,EAAM/H,aAAeJ,GACvBsI,EAAgBC,KAAK,CACnBnR,MAAO+Q,EAAM/H,YACbP,QAASG,IAGTmI,EAAM9H,YAAc6H,GACtBI,EAAgBC,KAAK,CACnBnR,MAAO+Q,EAAM9H,WACbR,QAASqI,EACTM,eAAe,IAGZF,IACN,CAACJ,EAAUlI,EAAWmI,EAAM9H,WAAY8H,EAAM/H,cAE3CkE,EAAU,WACV4D,GACFA,KAIJ,OACE,UAACO,EAAAA,EAAK,CAAC/O,SAAUyO,EAAMN,KAAMa,eAAgBpE,EAASS,gBAAiBT,E,WACrE,UAACmE,EAAAA,EAAAA,KAAU,C,WACT,UAACA,EAAAA,EAAAA,OAAY,C,WACX,SAACA,EAAAA,EAAAA,MAAW,C,SAAEN,EAAMhP,SACpB,SAACsP,EAAAA,EAAAA,SAAc,C,SAAEN,EAAM7H,eAEzB,SAAChG,IAAC,C,SAAE6N,EAAMQ,kBAEZ,SAACF,EAAAA,EAAAA,OAAY,C,SACVL,EAAQzR,KAAI,SAACiS,EAAQjF,GACpB,IAAQ9D,EAAmB+I,EAAnB/I,QAASzI,EAAUwR,EAAVxR,MACjB,OAAIwR,EAAOJ,eAEP,SAACC,EAAAA,EAAAA,YAAiB,CAAa5I,QAASA,E,SACrCzI,GADqBuM,IAM1B,SAAC8E,EAAAA,EAAAA,OAAY,CAAa5I,QAASA,E,SAChCzI,GADgBuM,a,8FCM3BkF,E,iCAjDAC,EAAqB,CACvBjB,MAAM,GAGFkB,EAAc,SAACC,GACnBF,EAAcE,EACdC,EAAU7K,SAAQ,SAAC8K,G,OAAaA,EAASJ,OAGrCG,EAA2C,GAWpChB,EAAkB,WAC7B,IAA0BzM,GAAAA,EAAAA,EAAAA,UAASsN,GAA5BX,EAAmB3M,EAAqB,GAAjC2N,EAAY3N,EAAqB,IAC/CmM,EAAAA,EAAAA,YAAU,WAER,OADAsB,EAAUV,KAAKY,GACR,WACL,IAAMxF,EAAQsF,EAAUG,QAAQD,GAC5BxF,GAAS,GACXsF,EAAUI,OAAO1F,EAAO,MAG3B,CAACwE,IAEJ,IAAMmB,EAAe,WACnBP,GAAY,kBAAKZ,GAAK,CAAEN,MAAM,MAahC,MAAO,CAAEM,MAAAA,EAAOD,SALC,WACfoB,IACAT,GAAgB,IAGQ7I,UAVR,WAChBsJ,IACAT,GAAgB,MAqBP3I,EAAa,WAQxB,OAPgB,SAACiI,GAEf,OADAY,GAAY,kBAAKZ,GAAK,CAAEN,MAAM,KACvB,IAAI0B,SAAQ,SAACC,GAClBX,EAAkBW,Q,2FCnDxB,IAbsB,Y,IAAGjC,EAAQ,EAARA,SACvB,OACE,SAACkC,EAAAA,QAAgB,CACfC,cAAe7Q,IAAAA,QACf8Q,SAAS,SAACxO,OAAI,CAAC7E,UAAWuC,IAAAA,Q,SAAiB0O,I,UAE3C,SAACpM,OAAI,CAAC7E,UAAWuC,IAAAA,0B,UACf,SAAC+Q,EAAAA,EAAgB,U,kFCGzB,IAduB,WACrB,IAIIC,GAAAA,EAAAA,EAAAA,KAAOC,EAAAA,EAAAA,OAAetM,EAAAA,EAAAA,MAAuB,KAAMuM,EAAAA,IAHrD7M,EAGE2M,EAHF3M,KAKF,MAAO,CACLnC,KAAMiP,GAAa,GACnBrK,UAJEkK,EAFFI,eAM4BD,EAC5BrO,MALEkO,EADFlO,S,6FCNSuO,EAAkD,CAAEC,YAAY,GAkB7E,IAXqC,WACnC,IAAM,GAAa3N,EAAAA,EAAAA,MAAXX,OAOR,OANkCC,EAAAA,EAAAA,cAChC,SAACsO,EAAUC,GACTxO,EAAOuO,EAAKC,EAAUH,KAExB,CAACrO,M,mLCXQyO,EAC4B,e,SAA/BC,IAAIC,uBAJc,2BADH,2BAOnBC,EAAkC,SAACtH,EAAmBE,EAAqBqH,GAC/E,MAAO,GAAuBvH,OAApBmH,EAAS,aAAwBjH,OAAbF,EAAU,KAAkBwH,OAAftH,EAAY,KAAqB,QAAlBsH,EAAAA,EAAAA,GAAUD,KAGzDE,EAA0B,SAACzH,EAAmBE,GACzD,OAAOoH,EAAgCtH,EAAWE,EAAa,CAAEwH,MAAM,KAG5DC,EAAyB,SAAC3H,EAAmBE,GACxD,OAAOoH,EAAgCtH,EAAWE,EAAa,CAAE0H,MAAM,KAG5DC,EAA2B,SAACC,GACvC,MAAO,GAAeA,OAAZX,EAAS,KAAY,OAATW,IAGXpI,EAAyB,SAAClB,G,IAAyBuJ,EAAe,UAAH,8C,MAC1E,GAAqBvJ,OAAlB2I,EAAS,WAAkBY,OAATvJ,GAAyC,OAAhCuJ,EAAe,YAAc,KAEhDC,EAAwB,SAACC,G,MACpC,GAAqBC,OAAlBf,EAAS,WAAiC,OAAxBe,mBAAmBD,M,iCC7B1C,O,SAAK3T,GAAAA,EACS,aAAG,gBADZA,EAEU,cAAG,iBAFbA,EAGS,aAAG,gBAHZA,EAIU,cAAG,iBAJbA,EAKU,cAAG,iB,CALbA,IAAAA,EAAc,KAQnB,O,kBCPA6T,EAAOC,QAAU,CAAC,UAAY,gCAAgC,gBAAkB,sCAAsC,SAAW,+BAA+B,qBAAuB,2CAA2C,iBAAmB,yC,kBCArPD,EAAOC,QAAU,CAAC,UAAY,gCAAgC,iBAAmB,uCAAuC,uBAAyB,6CAA6C,oBAAsB,0CAA0C,SAAW,+BAA+B,oBAAsB,4C,kBCA9TD,EAAOC,QAAU,CAAC,UAAY,8BAA8B,gBAAkB,sC,kBCA9ED,EAAOC,QAAU,CAAC,gBAAkB,mCAAmC,gBAAkB,mCAAmC,WAAa,8BAA8B,UAAY,6BAA6B,gBAAkB,mCAAmC,gBAAkB,mCAAmC,WAAa,8BAA8B,iBAAmB,oCAAoC,gBAAkB,qC,kBCA9aD,EAAOC,QAAU,CAAC,UAAY,yC,kBCA9BD,EAAOC,QAAU,CAAC,UAAY,uDAAuD,MAAQ,mDAAmD,iBAAmB,8DAA8D,cAAgB,6D,kBCAjPD,EAAOC,QAAU,CAAC,UAAY,mCAAmC,MAAQ,+BAA+B,cAAgB,uCAAuC,iBAAmB,0CAA0C,iBAAmB,4C,kBCA/OD,EAAOC,QAAU,CAAC,UAAY,0CAA0C,KAAO,uC,kBCA/ED,EAAOC,QAAU,CAAC,eAAiB,8C,kBCAnCD,EAAOC,QAAU,CAAC,OAAS,4BAA4B,WAAa,gCAAgC,gBAAkB,qCAAqC,cAAgB,mCAAmC,gBAAkB,uC,kBCAhOD,EAAOC,QAAU,CAAC,0BAA4B,iDAAiD,QAAU,+BAA+B,QAAU","sources":["webpack://_N_E/./public/icons/chevron-down.svg","webpack://_N_E/./public/icons/help-circle.svg","webpack://_N_E/./src/components/FormBuilder/buildFormBuilderFormField.ts","webpack://_N_E/./src/components/FormBuilder/buildTranslatedErrorMessageByErrorId.ts","webpack://_N_E/./src/components/Notes/NoteModal/NoteRangesIndicator/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/PublicReflectionCheckboxDescription/index.tsx","webpack://_N_E/./public/icons/idea.svg","webpack://_N_E/./public/icons/edit.svg","webpack://_N_E/./src/components/Notes/NoteModal/ReflectionIntro/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/ShareToQrCheckboxLabel/index.tsx","webpack://_N_E/./src/hooks/useMutation.ts","webpack://_N_E/./src/components/Notes/NoteModal/NewNoteMode/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/EditNoteListItem/DeleteNoteModal/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/EditNoteListItem/EditForm/index.tsx","webpack://_N_E/./types/auth/Note.ts","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/EditNoteListItem/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/NoteRanges/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/index.tsx","webpack://_N_E/./src/components/Notes/NoteModal/index.tsx","webpack://_N_E/./src/components/QuranReader/TranslationView/EmbeddableVerseCell/index.tsx","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.tsx","webpack://_N_E/./src/components/dls/ConfirmationModal/ConfirmationModal.tsx","webpack://_N_E/./src/components/dls/ConfirmationModal/hooks.ts","webpack://_N_E/./src/components/dls/HelperTooltip/HelperTooltip.tsx","webpack://_N_E/./src/hooks/auth/useCurrentUser.ts","webpack://_N_E/./src/hooks/useMutateWithoutRevalidation.ts","webpack://_N_E/./src/utils/quranReflect/navigation.ts","webpack://_N_E/./types/ErrorMessageId.ts","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/EditNoteListItem/NoteListItem.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/EditNoteMode.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/EditNoteMode/NoteRanges/NoteRanges.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/NoteModal.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/NoteRangesIndicator/NoteRangesIndicator.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/PublicReflectionCheckboxDescription/PublicReflectionCheckboxDescription.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/ReflectionIntro/ReflectionIntro.module.scss","webpack://_N_E/./src/components/Notes/NoteModal/ShareToQrCheckboxLabel/ShareToQrCheckboxLabel.module.scss","webpack://_N_E/./src/components/QuranReader/TranslationView/EmbeddableVerseCell/EmbeddableVerseCell.module.scss","webpack://_N_E/./src/components/dls/Collapsible/Collapsible.module.scss","webpack://_N_E/./src/components/dls/HelperTooltip/HelperTooltip.module.scss"],"sourcesContent":["var _path;\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 SvgChevronDown = function SvgChevronDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.135 6.158a.5.5 0 0 1 .707-.023L7.5 9.565l3.658-3.43a.5.5 0 0 1 .684.73l-4 3.75a.5.5 0 0 1-.684 0l-4-3.75a.5.5 0 0 1-.023-.707Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgChevronDown;","var _circle, _path;\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 SvgHelpCircle = function SvgHelpCircle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"feather feather-help-circle\"\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 10\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01\"\n })));\n};\nexport default SvgHelpCircle;","import capitalize from 'lodash/capitalize';\nimport { Translate } from 'next-translate';\n\nimport { FormBuilderFormField } from './FormBuilderTypes';\n\nimport FormField, { FormFieldType } from 'types/FormField';\n\n/**\n * Transform FormField to be FormBuilderFormField\n *\n * FormField and FormBuilderFormField are the same except, FormBuilderFormField is not tied to errorId and translationId\n * - Previously FormBuilder was tied to common.json, next-translate.\n * - and it's also tied to ErrorMessageId\n * - and the `label` is also less flexible because it's tied to `field` value\n *\n * This function help to transform FormField to FormBuilderFormField for common use case.\n * But when we need a more flexible use case, we can use FormBuilderFormField directly. Without using this helper function\n *\n * check ./FormBuilderTypes.ts for more info\n *\n * Note that this function expect the `t` translate function to be used with `common.json`. And expect `form.$field` and `validation.$errorId` to exist.\n *\n * @param {FormField} formField\n * @returns {FormBuilderFormField} formBuilderFormField\n */\nconst buildFormBuilderFormField = (formField: FormField, t: Translate): FormBuilderFormField => {\n return {\n ...formField,\n ...(formField.rules && {\n rules: formField.rules.map((rule) => ({\n type: rule.type,\n value: rule.value,\n errorMessage: t(`common:validation.${rule.errorId}`, {\n field: capitalize(formField.field),\n ...rule.errorExtraParams,\n }),\n })),\n }),\n ...(formField.label && {\n label:\n formField.type === FormFieldType.Checkbox ? formField.label : t(`form.${formField.label}`),\n }),\n ...(formField.defaultValue && { defaultValue: formField.defaultValue }),\n ...(formField.placeholder && { placeholder: formField.placeholder }),\n };\n};\n\nexport default buildFormBuilderFormField;\n","import capitalize from 'lodash/capitalize';\nimport { Translate } from 'next-translate';\n\nimport ErrorMessageId from 'types/ErrorMessageId';\n\nconst DEFAULT_ERROR_ID = ErrorMessageId.InvalidField;\n\nconst buildTranslatedErrorMessageByErrorId = (\n errorId: ErrorMessageId,\n fieldName: string,\n t: Translate,\n extraParams?: Record<string, unknown>,\n) => {\n if (Object.values(ErrorMessageId).includes(errorId)) {\n return t(`common:validation.${errorId}`, { field: capitalize(fieldName), ...extraParams });\n }\n return t(`common:validation.${DEFAULT_ERROR_ID}`, { field: capitalize(fieldName) });\n};\n\nexport default buildTranslatedErrorMessageByErrorId;\n","import React, { useContext } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './NoteRangesIndicator.module.scss';\n\nimport DataContext from '@/contexts/DataContext';\nimport { getChapterData } from '@/utils/chapter';\nimport { toLocalizedVerseKey } from '@/utils/locale';\nimport { parseVerseRange } from '@/utils/verseKeys';\n\ntype Props = {\n ranges: string[];\n};\n\nconst NoteRangesIndicator: React.FC<Props> = ({ ranges }) => {\n const { lang } = useTranslation();\n const chaptersData = useContext(DataContext);\n if (!ranges || ranges.length === 0) {\n return <></>;\n }\n\n // TODO: ranges[0] is temporary and assumes that a note has only one range and 1 Ayah inside that range\n const [{ chapter, verseKey }] = parseVerseRange(ranges[0]);\n const chapterData = getChapterData(chaptersData, chapter);\n const verseKeyName = `${chapterData.transliteratedName} ${toLocalizedVerseKey(verseKey, lang)}`;\n return <div className={styles.container}>{verseKeyName}</div>;\n};\n\nexport default NoteRangesIndicator;\n","import React from 'react';\n\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './PublicReflectionCheckboxDescription.module.scss';\n\nimport Collapsible, { CollapsibleDirection } from '@/dls/Collapsible/Collapsible';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport { logEvent } from '@/utils/eventLogger';\n\nexport enum NoteType {\n NEW = 'new',\n EDIT = 'edit',\n}\n\ntype Props = {\n type?: NoteType;\n};\n\nconst PublicReflectionDescription: React.FC<Props> = ({ type = NoteType.NEW }) => {\n const { t } = useTranslation('notes');\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n logEvent(`${type}_note_reflection_intro_opened`);\n } else {\n logEvent(`${type}_note_reflection_intro_closed`);\n }\n };\n\n const isEdit = type === NoteType.EDIT;\n\n return (\n <div className={styles.container}>\n <Collapsible\n title={\n <div className={styles.title}>\n {isEdit ? t('checkbox-refl-intro.post-button') : t('checkbox-refl-intro.title')}\n </div>\n }\n prefix={<ChevronDownIcon />}\n direction={CollapsibleDirection.Right}\n shouldRotatePrefixOnToggle\n onOpenChange={onOpenChange}\n >\n {({ isOpen: isOpenRenderProp }) => {\n if (!isOpenRenderProp) return null;\n\n return (\n <div className={styles.contentContainer}>\n <Trans\n components={{\n li: <li key={0} />,\n link: (\n <Link\n key={0}\n href=\"https://quranreflect.com/faq\"\n variant={LinkVariant.Blend}\n isNewTab\n />\n ),\n }}\n i18nKey=\"notes:checkbox-refl-intro.qr-intro\"\n />\n <p className={styles.checkboxTitle}>\n {!isEdit\n ? t('checkbox-refl-intro.checkbox.title')\n : t('checkbox-refl-intro.post-button')}\n </p>\n\n <Trans\n components={{\n li: <li key={0} />,\n link: (\n <Link\n key={0}\n href=\"https://quranreflect.com\"\n variant={LinkVariant.Blend}\n isNewTab\n />\n ),\n }}\n i18nKey=\"notes:checkbox-refl-intro.checkbox.desc\"\n />\n </div>\n );\n }}\n </Collapsible>\n </div>\n );\n};\n\nexport default PublicReflectionDescription;\n","var _path;\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 SvgIdea = function SvgIdea(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.697.04a.5.5 0 0 1 .296.542L8.09 6h4.41a.5.5 0 0 1 .4.8l-6 8a.5.5 0 0 1-.893-.382L6.91 9H2.5a.5.5 0 0 1-.4-.8l6-8a.5.5 0 0 1 .597-.16ZM3.5 8h4a.5.5 0 0 1 .493.582L7.33 12.56 11.5 7h-4a.5.5 0 0 1-.493-.582L7.67 2.44 3.5 8Z\",\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgIdea;","var _path;\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 SvgEdit = function SvgEdit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 1024 1024\",\n fill: \"currentColor\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128 736v160h160l472.107-472.107-160-160L128 736zm755.413-435.413c16.64-16.64 16.64-43.734 0-60.374l-99.626-99.626c-16.64-16.64-43.734-16.64-60.374 0l-78.08 78.08 160 160 78.08-78.08z\"\n })));\n};\nexport default SvgEdit;","import React from 'react';\n\nimport classNames from 'classnames';\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ReflectionIntro.module.scss';\n\nimport Collapsible, { CollapsibleDirection } from '@/dls/Collapsible/Collapsible';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport IdeaIcon from '@/icons/idea.svg';\nimport { logEvent } from '@/utils/eventLogger';\n\nconst ReflectionIntro = () => {\n const { t } = useTranslation('notes');\n const onOpenChange = (isOpen: boolean) => {\n if (isOpen) {\n logEvent('new_note_reflection_intro_opened');\n } else {\n logEvent('new_note_reflection_intro_closed');\n }\n };\n\n return (\n <div className={styles.container}>\n <Collapsible\n title={\n <div className={styles.title}>\n <IdeaIcon />\n {t('new-note-reflc-intro.title')}\n </div>\n }\n prefix={<ChevronDownIcon />}\n direction={CollapsibleDirection.Right}\n shouldRotatePrefixOnToggle\n onOpenChange={onOpenChange}\n >\n {({ isOpen: isOpenRenderProp }) => {\n if (!isOpenRenderProp) return null;\n\n return (\n <div>\n <div className={styles.sectionContainer}>\n <div className={styles.sectionHeader}>\n {t('new-note-reflc-intro.what-is-reflc.title')}\n </div>\n <Trans\n components={{\n br: <br key={0} />,\n link1: <Link key={1} href=\"/38:29\" variant={LinkVariant.Blend} isNewTab />,\n link2: <Link key={2} href=\"/47:24\" variant={LinkVariant.Blend} isNewTab />,\n link3: <Link key={3} href=\"/4:82\" variant={LinkVariant.Blend} isNewTab />,\n link4: (\n <Link\n key={4}\n href=\"https://quranReflect.com/faq\"\n variant={LinkVariant.Blend}\n isNewTab\n />\n ),\n link5: (\n <Link\n key={5}\n href=\"/learning-plans/five-lenses-to-reflect-on-the-quran\"\n variant={LinkVariant.Blend}\n isNewTab\n />\n ),\n }}\n i18nKey=\"notes:new-note-reflc-intro.what-is-reflc.desc\"\n />\n </div>\n <div className={styles.sectionContainer}>\n <div className={styles.sectionHeader}>\n {t('new-note-reflc-intro.reflc-prompts.title')}\n </div>\n <div className={styles.sectionHeader}>\n {t('new-note-reflc-intro.reflc-prompts.personal.title')}\n </div>\n <Trans\n components={{\n br: <br key={0} />,\n li: <li key={1} />,\n }}\n i18nKey=\"notes:new-note-reflc-intro.reflc-prompts.personal.desc\"\n />\n <div className={classNames(styles.sectionHeader, styles.subSectionHeader)}>\n {t('new-note-reflc-intro.reflc-prompts.deeper.title')}\n </div>\n <Trans\n components={{\n br: <br key={0} />,\n li: <li key={1} />,\n }}\n i18nKey=\"notes:new-note-reflc-intro.reflc-prompts.deeper.desc\"\n />\n </div>\n </div>\n );\n }}\n </Collapsible>\n </div>\n );\n};\n\nexport default ReflectionIntro;\n","import React from 'react';\n\nimport Trans from 'next-translate/Trans';\nimport useTranslation from 'next-translate/useTranslation';\n\nimport styles from './ShareToQrCheckboxLabel.module.scss';\n\nimport HelperTooltip from '@/dls/HelperTooltip/HelperTooltip';\nimport Link, { LinkVariant } from '@/dls/Link/Link';\nimport useCurrentUser from '@/hooks/auth/useCurrentUser';\n\nconst ShareToQrCheckboxLabel = () => {\n const {\n user: { firstName },\n } = useCurrentUser();\n const { t } = useTranslation('notes');\n return (\n <div>\n <div className={styles.container}>\n {t('share-to-qr')}\n <HelperTooltip>\n <Trans\n i18nKey=\"notes:qr-tooltip\"\n components={{\n link: (\n <Link\n key={0}\n href=\"https://quranreflect.com\"\n variant={LinkVariant.Blend}\n isNewTab\n />\n ),\n span: <span key={1} />,\n }}\n />\n </HelperTooltip>\n </div>\n <Trans\n i18nKey=\"notes:share-to-qr-desc\"\n components={{\n b: <b className={styles.bold} key={0} />,\n }}\n values={{ name: `${firstName}` }}\n />\n </div>\n );\n};\n\nexport default ShareToQrCheckboxLabel;\n","import { useCallback, useState } from 'react';\n\ntype MutationFunction<TData, TVariables> = (variables?: TVariables) => Promise<TData>;\ntype MutationOptions<TData, TVariables> = {\n onSuccess?: (data: TData, variables?: TVariables) => void;\n onError?: (error: Error, variables?: TVariables) => void;\n};\n\ninterface UseMutation<TData, TVariables> {\n mutate: (variables?: TVariables) => Promise<TData | null>;\n isMutating: boolean;\n error: Error | null;\n}\n\n/**\n * A helper hook to execute a mutation and handle the loading and error states.\n *\n * @param {MutationFunction<TData, TVariables>} mutationFn\n * @param {MutationOptions<TData, TVariables>} options\n * @returns {UseMutation<TData, TVariables>}\n */\nconst useMutation = <TData, TVariables>(\n mutationFn: MutationFunction<TData, TVariables>,\n options?: MutationOptions<TData, TVariables>,\n): UseMutation<TData, TVariables> => {\n const [isMutating, setIsMutating] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const mutate = useCallback(\n async (variables?: TVariables) => {\n setIsMutating(true);\n setError(null);\n\n try {\n const response = await mutationFn(variables);\n options?.onSuccess?.(response, variables);\n return response;\n } catch (err) {\n setError(err);\n options?.onError?.(err, variables);\n } finally {\n setIsMutating(false);\n }\n\n return null;\n },\n [mutationFn, options],\n );\n\n return {\n mutate,\n isMutating,\n error,\n };\n};\n\nexport default useMutation;\n","/* eslint-disable max-lines */\nimport React, { useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport styles from '../NoteModal.module.scss';\nimport PublicReflectionDescription from '../PublicReflectionCheckboxDescription';\n\nimport buildFormBuilderFormField from '@/components/FormBuilder/buildFormBuilderFormField';\nimport buildTranslatedErrorMessageByErrorId from '@/components/FormBuilder/buildTranslatedErrorMessageByErrorId';\nimport FormBuilder from '@/components/FormBuilder/FormBuilder';\nimport ReflectionIntro from '@/components/Notes/NoteModal/ReflectionIntro';\nimport ShareToQrCheckboxLabel from '@/components/Notes/NoteModal/ShareToQrCheckboxLabel';\nimport Button from '@/dls/Button/Button';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useMutateWithoutRevalidation from '@/hooks/useMutateWithoutRevalidation';\nimport useMutation from '@/hooks/useMutation';\nimport ConsentType from '@/types/auth/ConsentType';\nimport { Note } from '@/types/auth/Note';\nimport UserProfile from '@/types/auth/UserProfile';\nimport ErrorMessageId from '@/types/ErrorMessageId';\nimport { RuleType } from '@/types/FieldRule';\nimport { FormFieldType } from '@/types/FormField';\nimport { addNote as baseAddNote } from '@/utils/auth/api';\nimport { makeGetNotesByVerseUrl, makeUserProfileUrl } from '@/utils/auth/apiPaths';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { isVerseKeyWithinRanges } from '@/utils/verse';\n\nconst BODY_MIN_LENGTH = 6;\nconst BODY_MAX_LENGTH = 10000;\n\nconst BODY_MIN_VALIDATION_PARAMS = {\n value: BODY_MIN_LENGTH,\n};\nconst BODY_MAX_VALIDATION_PARAMS = {\n value: BODY_MAX_LENGTH,\n};\n\ntype NoteFormData = {\n body: string;\n saveToQR: boolean;\n};\n\ntype Props = {\n verseKey: string;\n onSuccess?: () => void;\n};\n\nconst NewNoteMode: React.FC<Props> = ({ verseKey, onSuccess }) => {\n const { t } = useTranslation('common');\n const toast = useToast();\n const { mutate, cache } = useSWRConfig();\n const [isCheckboxTicked, setIsCheckboxTicked] = useState(false);\n const mutateWithoutRevalidation = useMutateWithoutRevalidation();\n\n const { mutate: addNote, isMutating: isAddingNote } = useMutation<Note, NoteFormData>(\n async ({ body, saveToQR }) => {\n return baseAddNote({\n body,\n saveToQR,\n ...(verseKey && {\n ranges: [`${verseKey}-${verseKey}`],\n }),\n }) as Promise<Note>;\n },\n {\n onSuccess: (data) => {\n // if publishing the note publicly call failed after saving the note succeeded\n // @ts-ignore\n if (data?.error === true) {\n toast(t('notes:save-publish-failed'), {\n status: ToastStatus.Error,\n });\n // @ts-ignore\n mutateCache([data.note]);\n } else {\n toast(t('notes:save-success'), {\n status: ToastStatus.Success,\n });\n mutateCache([data]);\n }\n clearCountCache();\n\n /*\n * TODO: since we are not using consents at the moment, we are updating the consents field directly instead of appending to existing consents.\n * also, if the user deletes the note, we are not removing it.\n */\n mutateWithoutRevalidation(makeUserProfileUrl(), (currentProfileData: UserProfile) => {\n return {\n ...currentProfileData,\n consents: { ...currentProfileData.consents, [ConsentType.HAS_NOTES]: true },\n };\n });\n\n if (onSuccess) {\n onSuccess();\n }\n },\n onError: () => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n },\n },\n );\n\n const mutateCache = (data: unknown) => {\n if (verseKey) {\n mutate(makeGetNotesByVerseUrl(verseKey), data);\n }\n };\n\n const clearCountCache = () => {\n // we need to invalidate one of keys that look like: ['countNotes', notesRange]\n // so that the count is updated\n const keys = [...(cache as any).keys()].filter((key) => {\n if (!key.startsWith('countNotes/')) {\n return false;\n }\n\n if (verseKey) {\n // check if the note is within the range\n const rangeString = key.replace('countNotes/', '');\n return isVerseKeyWithinRanges(verseKey, rangeString);\n }\n\n // if we're not on the quran reader page, we can just invalidate all the keys\n return true;\n }) as string[];\n\n if (keys.length) {\n keys.forEach((key) => {\n cache.delete(key);\n mutate(key);\n });\n }\n };\n\n const onSubmit = async ({ body, saveToQR }: NoteFormData) => {\n logButtonClick('add_note');\n addNote({\n body,\n saveToQR,\n });\n };\n return (\n <>\n <ReflectionIntro />\n <FormBuilder\n formFields={[\n {\n field: 'body',\n placeholder: t('notes:body-placeholder'),\n rules: [\n {\n type: RuleType.Required,\n errorId: ErrorMessageId.RequiredField,\n value: true,\n },\n {\n ...BODY_MIN_VALIDATION_PARAMS,\n type: RuleType.MinimumLength,\n errorId: ErrorMessageId.MinimumLength,\n errorExtraParams: {\n ...BODY_MIN_VALIDATION_PARAMS,\n },\n errorMessage: buildTranslatedErrorMessageByErrorId(\n ErrorMessageId.MinimumLength,\n 'body',\n t,\n {\n ...BODY_MIN_VALIDATION_PARAMS,\n },\n ),\n },\n {\n ...BODY_MAX_VALIDATION_PARAMS,\n type: RuleType.MaximumLength,\n errorId: ErrorMessageId.MaximumLength,\n errorExtraParams: {\n ...BODY_MAX_VALIDATION_PARAMS,\n },\n errorMessage: buildTranslatedErrorMessageByErrorId(\n ErrorMessageId.MaximumLength,\n 'body',\n t,\n {\n ...BODY_MAX_VALIDATION_PARAMS,\n },\n ),\n },\n ],\n type: FormFieldType.TextArea,\n containerClassName: styles.bodyInput,\n fieldSetLegend: t('notes:notes-and-reflcs'),\n },\n {\n field: 'saveToQR',\n label: <ShareToQrCheckboxLabel />,\n defaultValue: false,\n type: FormFieldType.Checkbox,\n extraSection: <PublicReflectionDescription />,\n onChange: (val: boolean) => {\n setIsCheckboxTicked(val);\n },\n },\n ].map((field) => buildFormBuilderFormField(field, t))}\n onSubmit={onSubmit}\n isSubmitting={isAddingNote}\n renderAction={(props) => (\n <div className={styles.submitContainer}>\n <div className={styles.actionContainer}>\n <Button\n htmlType=\"submit\"\n isLoading={props.isLoading}\n isDisabled={props.isLoading}\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {isCheckboxTicked ? t('notes:save-post-to-qr') : t('notes:save-privately')}\n </Button>\n </div>\n </div>\n )}\n />\n </>\n );\n};\n\nexport default NewNoteMode;\n","import useTranslation from 'next-translate/useTranslation';\n\nimport Button, { ButtonSize, ButtonType, ButtonVariant } from '@/dls/Button/Button';\nimport ConfirmationModal from '@/dls/ConfirmationModal/ConfirmationModal';\nimport { useConfirm } from '@/dls/ConfirmationModal/hooks';\nimport { Note } from '@/types/auth/Note';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ntype DeleteNoteButtonProps = {\n isDisabled?: boolean;\n note: Note;\n onConfirm: () => void;\n};\n\nconst DeleteNoteModal = ({ isDisabled, note: { id }, onConfirm }: DeleteNoteButtonProps) => {\n const { t } = useTranslation('notes');\n const confirm = useConfirm();\n\n const onDeleteClicked = async () => {\n logButtonClick('note_delete');\n\n const isConfirmed = await confirm({\n confirmText: t('common:delete'),\n cancelText: t('common:cancel'),\n title: t('delete-note-modal.title'),\n subtitle: t('delete-note-modal.subtitle'),\n });\n\n if (isConfirmed) {\n logButtonClick('note_delete_confirm', { noteId: id });\n onConfirm();\n } else {\n logButtonClick('note_delete_confirm_cancel', { noteId: id });\n }\n };\n\n const buttonProps = {\n isDisabled,\n isLoading: isDisabled,\n };\n\n return (\n <>\n <Button\n variant={ButtonVariant.Ghost}\n onClick={onDeleteClicked}\n tooltip={t('delete')}\n size={ButtonSize.Small}\n type={ButtonType.Warning}\n {...buttonProps}\n >\n X\n </Button>\n <ConfirmationModal />\n </>\n );\n};\n\nexport default DeleteNoteModal;\n","/* eslint-disable max-lines */\nimport React, { useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport buildFormBuilderFormField from '@/components/FormBuilder/buildFormBuilderFormField';\nimport buildTranslatedErrorMessageByErrorId from '@/components/FormBuilder/buildTranslatedErrorMessageByErrorId';\nimport FormBuilder from '@/components/FormBuilder/FormBuilder';\nimport styles from '@/components/Notes/NoteModal/NoteModal.module.scss';\nimport Button, { ButtonVariant } from '@/dls/Button/Button';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useMutation from '@/hooks/useMutation';\nimport { Note } from '@/types/auth/Note';\nimport ErrorMessageId from '@/types/ErrorMessageId';\nimport { RuleType } from '@/types/FieldRule';\nimport { FormFieldType } from '@/types/FormField';\nimport { updateNote as baseUpdateNote } from '@/utils/auth/api';\nimport { makeGetNoteByIdUrl, makeGetNotesByVerseUrl } from '@/utils/auth/apiPaths';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ntype Props = {\n note: Note;\n onNoteUpdated?: (data: Note) => void;\n onCancelEditClicked: () => void;\n verseKey?: string;\n noteId?: string;\n};\n\ntype NoteFormData = {\n body: string;\n};\n\nconst BODY_MIN_LENGTH = 6;\nconst BODY_MAX_LENGTH = 10000;\nconst BODY_MIN_VALIDATION_PARAMS = {\n value: BODY_MIN_LENGTH,\n};\nconst BODY_MAX_VALIDATION_PARAMS = {\n value: BODY_MAX_LENGTH,\n};\n\nconst EditForm: React.FC<Props> = ({\n note,\n onNoteUpdated,\n verseKey,\n noteId,\n onCancelEditClicked,\n}) => {\n const { t } = useTranslation('common');\n const [saveToQR, setSaveToQR] = useState(false);\n const toast = useToast();\n const { mutate } = useSWRConfig();\n\n const mutateCache = (data: unknown) => {\n if (verseKey) {\n mutate(makeGetNotesByVerseUrl(verseKey), data);\n }\n\n if (noteId) {\n mutate(makeGetNoteByIdUrl(noteId), data);\n }\n };\n\n const { mutate: updateNote, isMutating: isUpdatingNote } = useMutation<\n Note,\n { id: string; body: string }\n >(\n async ({ id, body }) => {\n return baseUpdateNote(id, body, saveToQR) as Promise<Note>;\n },\n {\n onSuccess: (data) => {\n // if publishing the note publicly call failed after saving the note succeeded\n // @ts-ignore\n if (data?.error === true) {\n toast(t('notes:update-publish-failed'), {\n status: ToastStatus.Error,\n });\n // @ts-ignore\n onNoteUpdated?.(data.note);\n // @ts-ignore\n mutateCache([data.note]);\n } else {\n toast(t('notes:update-success'), {\n status: ToastStatus.Success,\n });\n onNoteUpdated?.(data);\n mutateCache([data]);\n }\n },\n onError: () => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n },\n },\n );\n\n const onSubmit = async ({ body }: NoteFormData) => {\n logButtonClick('update_note', {\n saveToQR,\n });\n updateNote({ id: note.id, body });\n };\n\n return (\n <FormBuilder\n formFields={[\n {\n field: 'body',\n placeholder: t('notes:body-placeholder'),\n defaultValue: note.body,\n rules: [\n {\n type: RuleType.Required,\n errorId: ErrorMessageId.RequiredField,\n value: true,\n },\n {\n ...BODY_MIN_VALIDATION_PARAMS,\n type: RuleType.MinimumLength,\n errorId: ErrorMessageId.MinimumLength,\n errorExtraParams: {\n ...BODY_MIN_VALIDATION_PARAMS,\n },\n errorMessage: buildTranslatedErrorMessageByErrorId(\n ErrorMessageId.MinimumLength,\n 'body',\n t,\n {\n ...BODY_MIN_VALIDATION_PARAMS,\n },\n ),\n },\n {\n ...BODY_MAX_VALIDATION_PARAMS,\n type: RuleType.MaximumLength,\n errorId: ErrorMessageId.MaximumLength,\n errorExtraParams: {\n ...BODY_MAX_VALIDATION_PARAMS,\n },\n errorMessage: buildTranslatedErrorMessageByErrorId(\n ErrorMessageId.MaximumLength,\n 'body',\n t,\n {\n ...BODY_MAX_VALIDATION_PARAMS,\n },\n ),\n },\n ],\n type: FormFieldType.TextArea,\n containerClassName: styles.bodyInput,\n fieldSetLegend: t('notes:notes-and-reflcs'),\n },\n ].map((field) => buildFormBuilderFormField(field, t))}\n onSubmit={onSubmit}\n isSubmitting={isUpdatingNote}\n renderAction={({ isLoading }) => {\n return (\n <div className={styles.editFormButtons}>\n <Button\n isLoading={isLoading}\n variant={ButtonVariant.Outlined}\n isDisabled={isLoading}\n onClick={(e) => {\n e.stopPropagation();\n onCancelEditClicked();\n }}\n >\n {t('cancel')}\n </Button>\n <div>\n <Button\n htmlType=\"submit\"\n isLoading={isLoading}\n isDisabled={isLoading}\n className={styles.saveButton}\n onClick={(e) => {\n e.stopPropagation();\n setSaveToQR(false);\n }}\n >\n {t('notes:save-privately')}\n </Button>\n </div>\n </div>\n );\n }}\n />\n );\n};\n\nexport default EditForm;\n","import Pagination from './Pagination';\n\nexport enum AttachedEntityType {\n REFLECTION = 'reflection',\n}\n\nexport type AttachedEntity = {\n createdAt: Date;\n updatedAt: Date;\n id: string;\n type: AttachedEntityType;\n};\n\nexport type Note = {\n id: string;\n title: string;\n body: string;\n ranges?: string[]; // will be undefined when the note is not attached to any verse\n createdAt: Date;\n updatedAt: Date;\n saveToQR?: boolean;\n attachedEntities?: AttachedEntity[];\n};\n\nexport type GetAllNotesResponse = {\n data: Note[];\n pagination: Pagination;\n};\n","/* eslint-disable max-lines */\nimport React, { useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { useSWRConfig } from 'swr';\n\nimport DeleteNoteModal from './DeleteNoteModal';\nimport EditForm from './EditForm';\nimport styles from './NoteListItem.module.scss';\n\nimport PublicReflectionDescription, {\n NoteType,\n} from '@/components/Notes/NoteModal/PublicReflectionCheckboxDescription';\nimport Button, { ButtonSize, ButtonVariant } from '@/dls/Button/Button';\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport useMutation from '@/hooks/useMutation';\nimport EditIcon from '@/icons/edit.svg';\nimport { AttachedEntityType, Note } from '@/types/auth/Note';\nimport { deleteNote as baseDeleteNote, publishNoteToQR } from '@/utils/auth/api';\nimport { makeGetNoteByIdUrl, makeGetNotesByVerseUrl } from '@/utils/auth/apiPaths';\nimport { logButtonClick } from '@/utils/eventLogger';\nimport { getQuranReflectPostUrl } from '@/utils/quranReflect/navigation';\nimport { isVerseKeyWithinRanges } from '@/utils/verse';\n\ntype Props = {\n note: Note;\n verseKey: string;\n noteId: string;\n onNoteUpdated?: (data: Note) => void;\n onNoteDeleted?: () => void;\n};\n\nconst EditNoteListItem: React.FC<Props> = ({\n note,\n verseKey,\n noteId,\n onNoteUpdated,\n onNoteDeleted,\n}) => {\n const { t } = useTranslation('common');\n const toast = useToast();\n const { mutate, cache } = useSWRConfig();\n const [isInEditMode, setIsInEditMode] = useState<boolean>(false);\n\n const clearCountCache = () => {\n // we need to invalidate one of keys that look like: ['countNotes', notesRange]\n // so that the count is updated\n const keys = [...(cache as any).keys()].filter((key) => {\n if (!key.startsWith('countNotes/')) {\n return false;\n }\n\n if (verseKey) {\n // check if the note is within the range\n const rangeString = key.replace('countNotes/', '');\n return isVerseKeyWithinRanges(verseKey, rangeString);\n }\n\n if (noteId) {\n // if we're on the notes page, just invalidate all keys\n return true;\n }\n\n // if we're not on the quran reader page, we can just invalidate all the keys\n return true;\n }) as string[];\n\n if (keys.length) {\n keys.forEach((key) => {\n cache.delete(key);\n mutate(key);\n });\n }\n };\n\n const mutateCache = (data: unknown) => {\n if (verseKey) {\n mutate(makeGetNotesByVerseUrl(verseKey), data);\n }\n\n if (noteId) {\n mutate(makeGetNoteByIdUrl(noteId), data);\n }\n };\n\n const { mutate: postOnQuranReflect, isMutating: isPostingOnQuranReflect } = useMutation(\n () => {\n return publishNoteToQR(note.id, {\n body: note.body,\n ranges: note?.ranges || [],\n });\n },\n {\n onSuccess: (response) => {\n const { postId } = response;\n toast(t('notes:export-success'), {\n status: ToastStatus.Success,\n });\n mutateCache({\n ...note,\n attachedEntities: [\n {\n type: AttachedEntityType.REFLECTION,\n id: postId,\n createdAt: new Date(),\n updatedAt: new Date(),\n },\n ],\n });\n },\n onError: () => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n },\n },\n );\n\n const { mutate: deleteNote, isMutating: isDeletingNote } = useMutation<unknown, string>(\n async (id) => {\n return baseDeleteNote(id);\n },\n {\n onSuccess: () => {\n toast(t('notes:delete-success'), {\n status: ToastStatus.Success,\n });\n mutateCache([]);\n clearCountCache();\n if (onNoteDeleted) {\n onNoteDeleted();\n }\n },\n onError: () => {\n toast(t('common:error.general'), {\n status: ToastStatus.Error,\n });\n },\n },\n );\n\n const onCancelEditClicked = () => {\n setIsInEditMode(false);\n logButtonClick('cancel_edit_note');\n };\n\n const onPostOnQrClicked = (e) => {\n e.stopPropagation();\n logButtonClick('qr_publish_note');\n postOnQuranReflect();\n };\n\n const onEditClicked = (e) => {\n e.stopPropagation();\n logButtonClick('edit_note');\n setIsInEditMode(true);\n };\n\n const onDeleteConfirm = () => {\n deleteNote(note.id);\n };\n\n const onViewOnQrClicked = (e) => {\n e.stopPropagation();\n logButtonClick('qr_view_note_post');\n };\n\n const shouldDisableActions = isDeletingNote || isPostingOnQuranReflect;\n\n const buttonProps = {\n isDisabled: shouldDisableActions,\n isLoading: shouldDisableActions,\n };\n\n const noteReflectionId = note?.attachedEntities?.find(\n (entity) => entity.type === AttachedEntityType.REFLECTION,\n )?.id;\n\n const onNoteUpdatedHandler = (updatedNote: Note) => {\n setIsInEditMode(false);\n if (onNoteUpdated) {\n onNoteUpdated(updatedNote);\n }\n };\n\n return (\n <div className={styles.container}>\n {isInEditMode ? (\n <EditForm\n onCancelEditClicked={onCancelEditClicked}\n note={note}\n onNoteUpdated={onNoteUpdatedHandler}\n verseKey={verseKey}\n noteId={noteId}\n />\n ) : (\n <>\n <div className={styles.buttonsContainer}>\n <Button\n shouldFlipOnRTL={false}\n variant={ButtonVariant.Ghost}\n onClick={onEditClicked}\n tooltip={t('edit')}\n size={ButtonSize.Small}\n {...buttonProps}\n >\n <EditIcon />\n </Button>\n <DeleteNoteModal\n onConfirm={onDeleteConfirm}\n note={note}\n isDisabled={shouldDisableActions}\n />\n </div>\n <div className={styles.noteBody}>{note.body}</div>\n {noteReflectionId ? (\n <div className={styles.shareButtonContainer}>\n <Button\n size={ButtonSize.Small}\n href={getQuranReflectPostUrl(noteReflectionId)}\n isNewTab\n onClick={onViewOnQrClicked}\n {...buttonProps}\n >\n {t('notes:view-on-qr')}\n </Button>\n </div>\n ) : (\n <>\n <div className={styles.shareButtonContainer}>\n <Button size={ButtonSize.Small} onClick={onPostOnQrClicked} {...buttonProps}>\n {t('notes:post-on-qr')}\n </Button>\n </div>\n <PublicReflectionDescription type={NoteType.EDIT} />\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default EditNoteListItem;\n","import React from 'react';\n\nimport NoteRangesIndicator from '../../NoteRangesIndicator';\n\nimport styles from './NoteRanges.module.scss';\n\nimport EmbeddableVerseCell from '@/components/QuranReader/TranslationView/EmbeddableVerseCell';\nimport ChevronDownIcon from '@/icons/chevron-down.svg';\nimport { logEvent } from '@/utils/eventLogger';\nimport { parseVerseRange } from '@/utils/verseKeys';\nimport Collapsible from 'src/components/dls/Collapsible/Collapsible';\n\ntype Props = {\n ranges: string[];\n};\n\n/**\n * A component that will be used to display the ranges of a note.\n * And also a ranges selector in the future.\n *\n * @param {React.FC<Props>} param\n * @returns {React.ReactElement<any, any>}\n */\nconst NoteRanges: React.FC<Props> = ({ ranges }: Props) => {\n const onOpenChange = (isCollapseOpen: boolean) => {\n if (isCollapseOpen) {\n logEvent('note_range_collapse_opened');\n } else {\n logEvent('note_range_collapse_closed');\n }\n };\n return (\n <div className={styles.container}>\n <Collapsible\n title={\n <div className={styles.headerContainer}>\n <NoteRangesIndicator ranges={ranges} />\n </div>\n }\n prefix={<ChevronDownIcon />}\n shouldRotatePrefixOnToggle\n onOpenChange={onOpenChange}\n >\n {({ isOpen: isOpenRenderProp }) => {\n if (!isOpenRenderProp) return null;\n // TODO: ranges[0] is temporary and assumes that a note has only one range and 1 Ayah inside that range\n const [{ chapter, verse }] = parseVerseRange(ranges[0]);\n\n return <EmbeddableVerseCell chapterId={Number(chapter)} verseNumber={Number(verse)} />;\n }}\n </Collapsible>\n </div>\n );\n};\n\nexport default NoteRanges;\n","import React, { useState } from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\n\nimport NewNoteMode from '../NewNoteMode';\n\nimport EditNoteListItem from './EditNoteListItem';\nimport styles from './EditNoteMode.module.scss';\n\nimport NoteRanges from '@/components/Notes/NoteModal/EditNoteMode/NoteRanges';\nimport Button, { ButtonSize, ButtonVariant } from '@/dls/Button/Button';\nimport PlusIcon from '@/icons/plus.svg';\nimport { Note } from '@/types/auth/Note';\nimport { dateToReadableFormat } from '@/utils/datetime';\nimport { logButtonClick } from '@/utils/eventLogger';\n\ntype Props = {\n notes: Note[];\n verseKey: string;\n onNoteUpdated?: (data: Note) => void;\n onNoteDeleted?: () => void;\n noteId: string;\n};\n\nconst EditNoteMode: React.FC<Props> = ({\n notes,\n verseKey,\n onNoteUpdated,\n onNoteDeleted,\n noteId,\n}) => {\n const { t, lang } = useTranslation('notes');\n const [shouldShowShowAddNoteForm, setShouldShowAddNoteForm] = useState(false);\n\n const onAddNoteClicked = () => {\n logButtonClick('add_more_notes_button');\n setShouldShowAddNoteForm(true);\n };\n\n const onCloseAddNoteClicked = () => {\n logButtonClick('close_add_more_notes_button');\n setShouldShowAddNoteForm(false);\n };\n\n const onSuccess = () => {\n setShouldShowAddNoteForm(false);\n };\n\n return (\n <div className={styles.container}>\n {!noteId && (\n <>\n {shouldShowShowAddNoteForm ? (\n <div className={styles.addNoteContainer}>\n <div className={styles.addNoteContainerHeader}>\n <p>{t('add-another-note')}</p>\n <Button\n variant={ButtonVariant.Ghost}\n size={ButtonSize.Small}\n onClick={onCloseAddNoteClicked}\n tooltip={t('common:close')}\n // eslint-disable-next-line i18next/no-literal-string\n >\n X\n </Button>\n </div>\n <NewNoteMode verseKey={verseKey} onSuccess={onSuccess} />\n </div>\n ) : (\n <div className={styles.addNoteBtnContainer}>\n <Button size={ButtonSize.Small} prefix={<PlusIcon />} onClick={onAddNoteClicked}>\n {t('add-another-note')}\n </Button>\n </div>\n )}\n </>\n )}\n {notes.map((note, index) => {\n return (\n <div key={note.id}>\n <div className={styles.noteHeaderContainer}>\n <p>{`${t('notes:note')} ${index + 1}`}</p>\n <time className={styles.noteDate} dateTime={note.createdAt.toString()}>\n {dateToReadableFormat(note.createdAt, lang, {\n year: 'numeric',\n weekday: undefined,\n month: 'short',\n })}\n </time>\n </div>\n {note?.ranges && <NoteRanges ranges={note.ranges} />}\n <EditNoteListItem\n verseKey={verseKey}\n onNoteUpdated={onNoteUpdated}\n onNoteDeleted={onNoteDeleted}\n key={note.id}\n noteId={noteId}\n note={note}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default EditNoteMode;\n","/* eslint-disable max-lines */\n/* eslint-disable react-func/max-lines-per-function */\nimport { useRef } from 'react';\n\nimport isArray from 'lodash/isArray';\n\nimport EditNoteMode from './EditNoteMode';\nimport NewNoteMode from './NewNoteMode';\nimport styles from './NoteModal.module.scss';\n\nimport DataFetcher from '@/components/DataFetcher';\nimport ContentModal, { ContentModalSize } from '@/dls/ContentModal/ContentModal';\nimport ContentModalHandles from '@/dls/ContentModal/types/ContentModalHandles';\nimport { BaseResponse } from '@/types/ApiResponses';\nimport { Note } from '@/types/auth/Note';\nimport { privateFetcher } from '@/utils/auth/api';\nimport { makeGetNoteByIdUrl, makeGetNotesByVerseUrl } from '@/utils/auth/apiPaths';\n\ninterface NoteModalProps {\n isOpen: boolean;\n onClose: () => void;\n verseKey?: string;\n noteId?: string;\n onNoteUpdated?: (data: Note) => void;\n onNoteDeleted?: () => void;\n}\n\nconst NoteModal: React.FC<NoteModalProps> = ({\n onClose,\n isOpen,\n verseKey,\n noteId,\n onNoteUpdated,\n onNoteDeleted,\n}) => {\n const contentModalRef = useRef<ContentModalHandles>();\n\n const queryKey = noteId ? makeGetNoteByIdUrl(noteId) : makeGetNotesByVerseUrl(verseKey);\n\n const deleteAndClose = () => {\n onNoteDeleted();\n onClose();\n };\n return (\n <ContentModal\n innerRef={contentModalRef}\n isOpen={isOpen}\n header={<div className={styles.headerContainer} />}\n hasCloseButton\n onClose={onClose}\n onEscapeKeyDown={onClose}\n size={ContentModalSize.MEDIUM}\n >\n <DataFetcher\n queryKey={queryKey}\n fetcher={privateFetcher}\n showSpinnerOnRevalidate={false}\n render={(response: (Note | Note[]) & BaseResponse) => {\n const note = noteId ? (response as Note) : (response[0] as Note);\n if (note) {\n return (\n <EditNoteMode\n onNoteUpdated={onNoteUpdated}\n onNoteDeleted={onNoteDeleted ? deleteAndClose : undefined}\n verseKey={verseKey}\n notes={isArray(response) ? response : [response]}\n noteId={noteId}\n />\n );\n }\n return <NewNoteMode verseKey={verseKey} />;\n }}\n />\n </ContentModal>\n );\n};\n\nexport default NoteModal;\n","import React from 'react';\n\nimport useTranslation from 'next-translate/useTranslation';\nimport { shallowEqual, useSelector } from 'react-redux';\n\nimport styles from './EmbeddableVerseCell.module.scss';\n\nimport { fetcher } from '@/api';\nimport DataFetcher from '@/components/DataFetcher';\nimport TranslationText from '@/components/QuranReader/TranslationView/TranslationText';\nimport VerseTextPreview from '@/components/QuranReader/VerseTextPreview';\nimport { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles';\nimport { selectSelectedTranslations } from '@/redux/slices/QuranReader/translations';\nimport { VersesResponse } from '@/types/ApiResponses';\nimport { getMushafId, getDefaultWordFields } from '@/utils/api';\nimport { makeVersesUrl } from '@/utils/apiPaths';\nimport { areArraysEqual } from '@/utils/array';\n\ntype Props = {\n chapterId: number;\n verseNumber: number;\n fontScale?: number;\n};\n\nconst EmbeddableVerseCell: React.FC<Props> = ({ chapterId, verseNumber, fontScale }) => {\n const quranReaderStyles = useSelector(selectQuranReaderStyles, shallowEqual);\n const { quranFont, mushafLines } = quranReaderStyles;\n const { mushaf } = getMushafId(quranFont, mushafLines);\n const selectedTranslations = useSelector(selectSelectedTranslations, areArraysEqual);\n const { lang } = useTranslation();\n\n const apiParams = {\n words: true,\n perPage: 1,\n translations: selectedTranslations.join(','),\n page: verseNumber,\n ...getDefaultWordFields(quranReaderStyles.quranFont),\n mushaf,\n };\n return (\n <DataFetcher\n // TODO: if we want to make this more optimized, we can use a shared cache with the QuranReader\n queryKey={`embeddable-verse-${chapterId}:${verseNumber}`}\n fetcher={() => fetcher(makeVersesUrl(chapterId.toString(), lang, apiParams))}\n render={(data: VersesResponse) => {\n if (!data) return null;\n const firstVerse = data.verses?.[0];\n return (\n <div className={styles.verseContainer}>\n <VerseTextPreview verses={data.verses} fontScale={fontScale} />\n\n <div>\n {firstVerse.translations?.map((translation) => {\n return (\n <TranslationText\n key={translation.id}\n translationFontScale={quranReaderStyles.translationFontScale}\n text={translation.text}\n languageId={translation.languageId}\n resourceName={translation.resourceName}\n />\n );\n })}\n </div>\n </div>\n );\n }}\n />\n );\n};\n\nexport default EmbeddableVerseCell;\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useEffect, useState } from 'react';\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\nimport classNames from 'classnames';\n\nimport styles from './Collapsible.module.scss';\n\ntype ChildrenRenderProps = {\n isOpen: boolean;\n};\n\ntype Props = {\n title?: React.ReactNode;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n children: ({ isOpen }: ChildrenRenderProps) => React.ReactNode;\n isDefaultOpen?: boolean;\n shouldOpen?: boolean;\n shouldRotatePrefixOnToggle?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n direction?: CollapsibleDirection;\n};\n\nexport enum CollapsibleDirection {\n Left = 'left',\n Right = 'right',\n}\n\nconst Collapsible = ({\n isDefaultOpen = false,\n prefix,\n title,\n suffix,\n children,\n shouldRotatePrefixOnToggle,\n shouldOpen,\n onOpenChange,\n direction = CollapsibleDirection.Left,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(isDefaultOpen);\n\n useEffect(() => {\n setIsOpen(shouldOpen);\n }, [shouldOpen]);\n\n const onSuffixClicked = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const onHeaderClicked = () => setIsOpen((preValue) => !preValue);\n\n return (\n <CollapsiblePrimitive.Root onOpenChange={onOpenChange} open={isOpen}>\n <CollapsiblePrimitive.Trigger asChild>\n <div className={styles.header} onClick={onHeaderClicked}>\n {direction === CollapsibleDirection.Left ? (\n <>\n <div className={styles.headerLeft}>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n {title}\n </div>\n <div className={styles.suffixContainer} onClick={onSuffixClicked}>\n {suffix}\n </div>\n </>\n ) : (\n <>\n <div className={styles.headerLeft}>{title}</div>\n <div\n className={classNames(styles.prefixContainer, {\n [styles.prefixRotated]: shouldRotatePrefixOnToggle && isOpen,\n })}\n >\n {prefix}\n </div>\n </>\n )}\n </div>\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.CollapsibleContent>\n {isOpen && children({ isOpen })}\n </CollapsiblePrimitive.CollapsibleContent>\n </CollapsiblePrimitive.Root>\n );\n};\n\nexport default Collapsible;\n","/* eslint-disable react/no-array-index-key */\nimport { useMemo } from 'react';\n\nimport { useConfirmModal } from './hooks';\n\nimport Modal from '@/dls/Modal/Modal';\n\nconst ConfirmationModal = () => {\n const { onCancel, onConfirm, state } = useConfirmModal();\n\n const actions = useMemo(() => {\n const returnedActions = [];\n if (state.confirmText && onConfirm) {\n returnedActions.push({\n label: state.confirmText,\n onClick: onConfirm,\n });\n }\n if (state.cancelText && onCancel) {\n returnedActions.push({\n label: state.cancelText,\n onClick: onCancel,\n isCloseAction: true,\n });\n }\n return returnedActions;\n }, [onCancel, onConfirm, state.cancelText, state.confirmText]);\n\n const onClose = () => {\n if (onCancel) {\n onCancel();\n }\n };\n\n return (\n <Modal isOpen={!!state.open} onClickOutside={onClose} onEscapeKeyDown={onClose}>\n <Modal.Body>\n <Modal.Header>\n <Modal.Title>{state.title}</Modal.Title>\n <Modal.Subtitle>{state.subtitle}</Modal.Subtitle>\n </Modal.Header>\n <p>{state.description}</p>\n </Modal.Body>\n <Modal.Footer>\n {actions.map((action, index) => {\n const { onClick, label } = action;\n if (action.isCloseAction) {\n return (\n <Modal.CloseAction key={index} onClick={onClick}>\n {label}\n </Modal.CloseAction>\n );\n }\n return (\n <Modal.Action key={index} onClick={onClick}>\n {label}\n </Modal.Action>\n );\n })}\n </Modal.Footer>\n </Modal>\n );\n};\n\nexport default ConfirmationModal;\n","import { useEffect, useState } from 'react';\n\ntype State = {\n title?: string;\n subtitle?: string;\n description?: string;\n confirmText?: string;\n cancelText?: string;\n open?: boolean;\n};\n\nlet memoryState: State = {\n open: false,\n};\n\nconst updateState = (newState: State) => {\n memoryState = newState;\n listeners.forEach((listener) => listener(memoryState));\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\n/**\n * When this hook (useConfirmationModalInternal) is called.\n * We set `useState` in the component. So that it will trigger rerender when the state changes\n *\n * `setState` is registered to a global `listeners`.\n * Every time we `updateState`, this will update the state in every components that subscribe\n * to the changes (listeners)\n */\n\nexport const useConfirmModal = () => {\n const [state, setState] = useState(memoryState);\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n const closeConfirm = () => {\n updateState({ ...state, open: false });\n };\n\n const onConfirm = () => {\n closeConfirm();\n resolveCallback(true);\n };\n\n const onCancel = () => {\n closeConfirm();\n resolveCallback(false);\n };\n\n return { state, onCancel, onConfirm };\n};\n\nlet resolveCallback: (arg: boolean) => void;\n\n/**\n * This hook is meant to be consumed by other components\n * Check ConfirmationModal.stories.tsx for an example\n *\n * This hook return a callback, that's when called return a Promise<boolean>\n * if the user click \"confirm\", boolean will be true, otherwise it will be false\n */\n\nexport const useConfirm = () => {\n const confirm = (state: State) => {\n updateState({ ...state, open: true });\n return new Promise((res) => {\n resolveCallback = res;\n });\n };\n\n return confirm;\n};\n","import HoverablePopover from '../Popover/HoverablePopover';\n\nimport styles from './HelperTooltip.module.scss';\n\nimport QuestionMarkIcon from '@/icons/help-circle.svg';\n\ninterface HelperTooltipProps {\n children: React.ReactNode;\n}\n\nconst HelperTooltip = ({ children }: HelperTooltipProps) => {\n return (\n <HoverablePopover\n triggerStyles={styles.trigger}\n content={<span className={styles.content}>{children}</span>}\n >\n <span className={styles.questionMarkIconContainer}>\n <QuestionMarkIcon />\n </span>\n </HoverablePopover>\n );\n};\n\nexport default HelperTooltip;\n","import useSWR from 'swr';\n\nimport { getUserProfile } from '@/utils/auth/api';\nimport { makeUserProfileUrl } from '@/utils/auth/apiPaths';\nimport { isLoggedIn } from '@/utils/auth/login';\n\nconst useCurrentUser = () => {\n const {\n data: userData,\n isValidating,\n error,\n } = useSWR(isLoggedIn() ? makeUserProfileUrl() : null, getUserProfile);\n\n return {\n user: userData || ({} as typeof userData),\n isLoading: isValidating && !userData,\n error,\n };\n};\n\nexport default useCurrentUser;\n","import { useCallback } from 'react';\n\nimport { useSWRConfig, MutatorCallback, MutatorOptions, Key } from 'swr';\n\nexport const NO_REVALIDATION_MUTATOR_OPTIONS: MutatorOptions = { revalidate: false };\n\n/**\n * a hook on top of useSWRConfig.mutate to mutate without revalidation\n *\n * @returns {(url: string, callback: MutatorCallback) => void} mutateWithoutRevalidation\n */\nconst useMutateWithoutRevalidation = (): ((url: Key, callback: MutatorCallback) => void) => {\n const { mutate } = useSWRConfig();\n const mutateWithoutRevalidation = useCallback(\n (url: Key, callback: MutatorCallback) => {\n mutate(url, callback, NO_REVALIDATION_MUTATOR_OPTIONS);\n },\n [mutate],\n );\n return mutateWithoutRevalidation;\n};\n\nexport default useMutateWithoutRevalidation;\n","import stringify from '@/utils/qs-stringify';\n\nconst STAGING_API_HOST = 'https://quranreflect.org';\nconst PRODUCTION_API_HOST = 'https://quranreflect.com';\n\n// env variables in Vercel can't be dynamic, we have to hardcode the urls here. https://stackoverflow.com/questions/44342226/next-js-error-only-absolute-urls-are-supported\nexport const API_HOST =\n process.env.NEXT_PUBLIC_VERCEL_ENV === 'production' ? PRODUCTION_API_HOST : STAGING_API_HOST;\n\nconst getQuranReflectFilteredVerseUrl = (chapterId: string, verseNumber: string, params) => {\n return `${API_HOST}?filters=${chapterId}:${verseNumber}&${stringify(params)}`;\n};\n\nexport const getQuranReflectVerseUrl = (chapterId: string, verseNumber: string) => {\n return getQuranReflectFilteredVerseUrl(chapterId, verseNumber, { feed: true });\n};\n\nexport const getQuranReflectEditUrl = (chapterId: string, verseNumber: string) => {\n return getQuranReflectFilteredVerseUrl(chapterId, verseNumber, { edit: true });\n};\n\nexport const getQuranReflectAuthorUrl = (username: string) => {\n return `${API_HOST}/${username}`;\n};\n\nexport const getQuranReflectPostUrl = (postId: number | string, viewComments = false) =>\n `${API_HOST}/posts/${postId}${viewComments ? '#comments' : ''}`;\n\nexport const getQuranReflectTagUrl = (tag: string) =>\n `${API_HOST}/?tags=${encodeURIComponent(tag)}`;\n","enum ErrorMessageId {\n InvalidEmail = 'invalid-email',\n RequiredField = 'required-field',\n InvalidField = 'invalid-field',\n MaximumLength = 'maximum-length',\n MinimumLength = 'minimum-length',\n}\n\nexport default ErrorMessageId;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoteListItem_container__HNwm7\",\"headerContainer\":\"NoteListItem_headerContainer__zgYkk\",\"noteBody\":\"NoteListItem_noteBody__bfdT6\",\"shareButtonContainer\":\"NoteListItem_shareButtonContainer__Wzr8B\",\"buttonsContainer\":\"NoteListItem_buttonsContainer__doHJf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EditNoteMode_container__0xUq7\",\"addNoteContainer\":\"EditNoteMode_addNoteContainer__NY196\",\"addNoteContainerHeader\":\"EditNoteMode_addNoteContainerHeader__WntFV\",\"addNoteBtnContainer\":\"EditNoteMode_addNoteBtnContainer__kX0s1\",\"noteDate\":\"EditNoteMode_noteDate__dWtIB\",\"noteHeaderContainer\":\"EditNoteMode_noteHeaderContainer__R_xwT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoteRanges_container__viLQL\",\"headerContainer\":\"NoteRanges_headerContainer__t3h7p\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonContainer\":\"NoteModal_buttonContainer__REWT1\",\"headerContainer\":\"NoteModal_headerContainer__HecMx\",\"titleInput\":\"NoteModal_titleInput__0_sP0\",\"bodyInput\":\"NoteModal_bodyInput__bHmPH\",\"actionContainer\":\"NoteModal_actionContainer__IELkO\",\"editFormButtons\":\"NoteModal_editFormButtons__pp_5t\",\"saveButton\":\"NoteModal_saveButton__DFAyS\",\"buttonsContainer\":\"NoteModal_buttonsContainer__ZaPz8\",\"submitContainer\":\"NoteModal_submitContainer__nd8cY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoteRangesIndicator_container__uDwLA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PublicReflectionCheckboxDescription_container__JM8_o\",\"title\":\"PublicReflectionCheckboxDescription_title__7MLJF\",\"contentContainer\":\"PublicReflectionCheckboxDescription_contentContainer__SdVyV\",\"checkboxTitle\":\"PublicReflectionCheckboxDescription_checkboxTitle__9YZq2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ReflectionIntro_container__KZx81\",\"title\":\"ReflectionIntro_title__Mo4RF\",\"sectionHeader\":\"ReflectionIntro_sectionHeader__HwKUd\",\"subSectionHeader\":\"ReflectionIntro_subSectionHeader__EwvII\",\"sectionContainer\":\"ReflectionIntro_sectionContainer__qeZwZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ShareToQrCheckboxLabel_container__GqRjE\",\"bold\":\"ShareToQrCheckboxLabel_bold__Pz7cF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"verseContainer\":\"EmbeddableVerseCell_verseContainer__GCj_d\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"Collapsible_header__CmhJq\",\"headerLeft\":\"Collapsible_headerLeft__Xh00n\",\"prefixContainer\":\"Collapsible_prefixContainer__AVHUT\",\"prefixRotated\":\"Collapsible_prefixRotated__bjKLn\",\"suffixContainer\":\"Collapsible_suffixContainer__uZ1IW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"questionMarkIconContainer\":\"HelperTooltip_questionMarkIconContainer__i20QV\",\"trigger\":\"HelperTooltip_trigger__1zmSb\",\"content\":\"HelperTooltip_content__NhcCK\"};"],"names":["_path","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","props","width","height","viewBox","fill","xmlns","d","fillRule","clipRule","_circle","stroke","strokeWidth","strokeLinecap","strokeLinejoin","className","cx","cy","formField","rules","map","rule","type","value","errorMessage","errorId","field","capitalize","errorExtraParams","label","FormFieldType","defaultValue","placeholder","DEFAULT_ERROR_ID","ErrorMessageId","fieldName","extraParams","values","includes","ranges","useTranslation","lang","chaptersData","useContext","DataContext","parseVerseRange","chapter","verseKey","chapterData","getChapterData","verseKeyName","toLocalizedVerseKey","transliteratedName","div","styles","NoteType","NEW","isEdit","EDIT","Collapsible","title","prefix","ChevronDownIcon","direction","CollapsibleDirection","shouldRotatePrefixOnToggle","onOpenChange","isOpen","logEvent","Trans","components","li","link","Link","href","variant","LinkVariant","isNewTab","i18nKey","p","IdeaIcon","br","link1","link2","link3","link4","link5","classNames","user","useCurrentUser","firstName","HelperTooltip","span","b","name","mutationFn","options","useState","isMutating","setIsMutating","error","setError","mutate","useCallback","variables","response","err","onSuccess","onError","BODY_MIN_VALIDATION_PARAMS","BODY_MAX_VALIDATION_PARAMS","toast","useToast","useSWRConfig","cache","isCheckboxTicked","setIsCheckboxTicked","mutateWithoutRevalidation","useMutateWithoutRevalidation","useMutation","body","saveToQR","baseAddNote","data","status","ToastStatus","mutateCache","note","clearCountCache","makeUserProfileUrl","currentProfileData","consents","ConsentType","makeGetNotesByVerseUrl","keys","filter","key","startsWith","rangeString","replace","isVerseKeyWithinRanges","forEach","delete","onSubmit","logButtonClick","addNote","ReflectionIntro","FormBuilder","formFields","RuleType","buildTranslatedErrorMessageByErrorId","containerClassName","fieldSetLegend","ShareToQrCheckboxLabel","extraSection","PublicReflectionDescription","onChange","val","buildFormBuilderFormField","isSubmitting","isAddingNote","renderAction","Button","htmlType","isLoading","isDisabled","onClick","stopPropagation","id","onConfirm","confirm","useConfirm","onDeleteClicked","confirmText","cancelText","subtitle","noteId","buttonProps","ButtonVariant","tooltip","size","ButtonSize","ButtonType","ConfirmationModal","onNoteUpdated","onCancelEditClicked","setSaveToQR","makeGetNoteByIdUrl","baseUpdateNote","updateNote","isUpdatingNote","AttachedEntityType","onNoteDeleted","isInEditMode","setIsInEditMode","publishNoteToQR","postId","attachedEntities","REFLECTION","createdAt","Date","updatedAt","baseDeleteNote","shouldDisableActions","isPostingOnQuranReflect","noteReflectionId","find","entity","EditForm","updatedNote","shouldFlipOnRTL","EditIcon","DeleteNoteModal","deleteNote","getQuranReflectPostUrl","postOnQuranReflect","NoteRangesIndicator","isCollapseOpen","verse","EmbeddableVerseCell","chapterId","Number","verseNumber","notes","shouldShowShowAddNoteForm","setShouldShowAddNoteForm","NewNoteMode","PlusIcon","index","time","dateTime","toString","dateToReadableFormat","year","weekday","undefined","month","NoteRanges","EditNoteListItem","onClose","contentModalRef","useRef","queryKey","deleteAndClose","ContentModal","innerRef","header","hasCloseButton","onEscapeKeyDown","ContentModalSize","DataFetcher","fetcher","privateFetcher","showSpinnerOnRevalidate","render","EditNoteMode","isArray","fontScale","quranReaderStyles","useSelector","selectQuranReaderStyles","shallowEqual","quranFont","mushafLines","getMushafId","mushaf","selectedTranslations","selectSelectedTranslations","areArraysEqual","apiParams","words","perPage","translations","join","page","getDefaultWordFields","makeVersesUrl","firstVerse","verses","VerseTextPreview","translation","TranslationText","translationFontScale","text","languageId","resourceName","isDefaultOpen","suffix","children","shouldOpen","Left","setIsOpen","useEffect","CollapsiblePrimitive","open","asChild","preValue","preventDefault","useConfirmModal","onCancel","state","actions","useMemo","returnedActions","push","isCloseAction","Modal","onClickOutside","description","action","resolveCallback","memoryState","updateState","newState","listeners","listener","setState","indexOf","splice","closeConfirm","Promise","res","HoverablePopover","triggerStyles","content","QuestionMarkIcon","useSWR","isLoggedIn","getUserProfile","userData","isValidating","NO_REVALIDATION_MUTATOR_OPTIONS","revalidate","url","callback","API_HOST","env","NEXT_PUBLIC_VERCEL_ENV","getQuranReflectFilteredVerseUrl","params","stringify","getQuranReflectVerseUrl","feed","getQuranReflectEditUrl","edit","getQuranReflectAuthorUrl","username","viewComments","getQuranReflectTagUrl","tag","encodeURIComponent","module","exports"],"sourceRoot":""}