{"version":3,"mappings":";6wEAMA,SAAwBA,GACtBC,EACiC,CAC3B,MAAE,KAAAC,EAAM,SAAAC,CAAa,EAAAF,EAEpB,OACL,QAASC,EAAK,GACd,UAAWC,CAAA,CAEf,CCVA,SAAwBC,GACtBH,EAC8B,CACxB,MAAE,KAAAI,CAAS,EAAAJ,EAEV,OACL,QAASI,EAAK,GAElB,CCRA,SAAwBC,GACtBL,EAC6B,CACvB,MAAE,IAAAM,CAAQ,EAAAN,EAET,OACL,kBAAmBM,EAAI,YAAY,KACnC,SAAUA,EAAI,KAElB,CCTA,SAAwBC,GACtBP,EACgC,CAC1B,MAAE,OAAAQ,CAAW,EAAAR,EAEZ,OACL,UAAWQ,EAAO,GAEtB,CCRA,SAAwBC,GACtBT,EACgC,CAC1B,MAAE,OAAAU,CAAW,EAAAV,EAEZ,OACL,UAAWU,EAAO,GAEtB,CCRA,SAAwBC,GACtBX,EAC8B,CACxB,MAAE,KAAAY,CAAS,EAAAZ,EAEV,OACL,QAASY,EAAK,GACd,YAAaA,EAAK,OAEtB,CCTA,SAAwBC,GACtBb,EACgC,CAC1B,MAAE,OAAAc,CAAY,EAAAd,EAEb,OACL,UAAWc,EAAO,GAEtB,CCPA,SAAwBf,GACtBC,EACmC,CAC7B,MAAE,UAAAe,CAAc,EAAAf,EAEf,OACL,aAAce,EAAU,GAE5B,CCXA,SAAwBhB,GACtBC,EACmC,CAC7B,MAAE,UAAAgB,CAAc,EAAAhB,EAEf,OACL,aAAcgB,EAAU,GAE5B,CCWA,MAAMC,GAIA,CACJ,KAAMd,GACN,QAASJ,GACT,IAAKM,GACL,OAAQE,GACR,KAAMI,GACN,OAAQF,GACR,OAAQI,GACR,UAAWK,GACX,UAAWC,EACb,EAEO,SAASC,GACdpB,EAC0B,CAC1B,OAAOiB,GAAUjB,EAAQ,IAAI,EAAEA,EAAQ,OAAO,CAChD,CCvCO,MAAMqB,EAAU,CACrB,MAAO,UACP,UAAW,UACX,UAAW,MACX,KAAM,QACR,EAGaC,EAAY,CACvB,MAAO,aACP,UAAW,cACX,UAAW,MACX,KAAM,QACR,EAEaC,EAAiB,CAC5B,MAAO,kBACP,UAAW,oBACX,UAAW,OACX,KAAM,QACR,EAEaC,EAAa,CACxB,MAAO,cACP,UAAW,cACX,UAAW,MACX,KAAM,QACR,EAEaC,EAAkB,CAC7B,MAAO,oBACP,UAAW,qBACX,UAAW,MACX,KAAM,QACR,EAEaC,EAAa,CACxB,MAAO,kBACP,UAAW,eACX,UAAW,OACX,KAAM,QACR,EAGaC,GAAoB,CAC/B,MAAO,qBACP,UAAW,uBACX,UAAW,OACX,KAAM,QACR,EAGaC,EAAa,CACxB,MAAO,cACP,UAAW,oBACX,UAAW,OACX,KAAM,QACR,EASaC,EAAmB,CAC9B,MAAO,sBACP,UAAW,0BACX,UAAW,OACX,KAAM,QACR,EAEaC,EAAiB,CAC5B,MAAO,mBACP,UAAW,QACX,UAAW,OACX,KAAM,SACN,IAAK,EACP,EAGaC,GAAc,CACzB,MAAO,eACP,UAAW,eACX,UAAW,OACX,KAAM,QACR,EAEaC,GAAoB,CAC/B,MAAO,uBACP,UAAW,qBACX,UAAW,OACX,KAAM,QACR,EC5EMC,GAAuC,CAC3C,MAAO,kBACP,UAAW,wBACX,UAAW,OACX,KAAM,QACR,EACMC,GAAsC,CAC1C,MAAO,gBACP,UAAW,sBACX,UAAW,MACX,KAAM,QACR,EAEMC,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMe,GAAe,CACnBH,GACAF,GACAC,EACF,EACA,SAASK,GAAsBpC,EAAiCG,EAAiC,CAC/F,MAAMkC,EAAUF,GAAa,IAAKG,IACzB,CACL,GAAGA,EACE,KAAAtC,CAAK,EAEb,EAED,OAAIG,EAAK,QACPkC,EAAQ,KAAK,CACX,GAAGJ,GACE,KAAAjC,CAAK,CACX,EAGIqC,CACT,CAEA,MAAME,GAAkB,CACtBZ,EACAC,CACF,EACA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBG,GACtBC,EACsB,CAChB,MAAE,QAAA9C,CAAY,EAAA8C,EACdJ,EAAcK,IACd,CAAE,KAAA3C,EAAM,KAAAH,CAAS,EAAAD,EAEjBgD,EAAeX,GAAsBpC,EAAMG,CAAI,EAC/C6C,EAAqBR,IACzBC,GAAA,YAAAA,EAAa,MAAOzC,EAAK,GAAK,KAAOyC,CAAA,EAEjCQ,EAAaN,GAAoBF,CAAW,EAS3C,OACL,aARmB,CACnB,GAAGP,GACH,GAAGa,EACH,GAAGC,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAG,IAAMA,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACA,EAAG,IAAMA,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,EACxE,MAAO/C,EAAK,OAAS8B,GAAeD,EAAA,CAExC,CChGA,MAAMmB,GAAmC,CACvC,MAAO,mBACP,UAAW,mBACX,UAAW,OACX,KAAM,QACR,EAEMjB,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EAEMc,GAAa,CAACb,CAAc,EAE5BM,GAAe,CACnBgB,GACArB,GACAC,EACF,EAEA,SAASK,GAAsBpC,EAAiC,CACvD,OAAAmC,GAAa,IAAKG,IAChB,CACL,GAAGA,EACE,KAAAtC,CAAK,EAEb,CACH,CAEA,SAASwC,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAEA,SAASE,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBW,GACtBP,EACsB,CACtB,MAAMJ,EAAcK,IACd,CAAE,KAAA9C,EAAM,SAAAC,GAAa4C,EAAc,QAEnCE,EAAeX,GAAsBpC,CAAI,EACzCgD,EAAqBR,IACzBC,GAAA,YAAAA,EAAa,MAAOzC,EAAK,GAAK,KAAOyC,CAAA,EAEjCQ,EAAaN,GAAoBF,CAAW,EAE5CY,EAAe,CACnB,GAAGnB,GACH,GAAGa,EACH,GAAGC,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAG,IAAMA,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,EAE/C,IAAII,EAAQH,GACR,OAAAI,GAActD,CAAQ,IAAM,iBACtBqD,EAAA,CACN,GAAGH,GACE,KAAAnD,CAAK,GAGVuD,GAActD,CAAQ,IAAM,SACtBqD,EAAA,CACN,GAAGvB,GACE,KAAA/B,CAAK,GAIP,CACL,aAAAqD,EACA,MAAAC,CAAA,CAEJ,CCrGO,MAAME,GAAgB,CAC3B,MAAO,cACP,UAAW,iBACX,UAAW,OACX,KAAM,QACR,EAEMtB,GAAc,CAClBsB,GACAnC,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EACA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAiE,CACrF,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBgB,IAAwC,CAC9D,MAAMhB,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAQ3C,OACL,aAPmB,CACnB,GAAGP,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOF,EAAA,CAEX,CC7DA,MAAMtB,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EACA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBkB,IAA2C,CACjE,MAAMlB,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAQ3C,OACL,aAPmB,CACnB,GAAGP,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOpC,CAAA,CAEX,CCrDA,MAAMsC,GAAsC,CAC1C,MAAO,gBACP,UAAW,gBACX,UAAW,MACX,KAAM,QACR,EAEM1B,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EAEA,SAASY,GAA4BC,EAAwE,CACvG,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAiE,CACrF,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBoB,IAAyC,CAC/D,MAAMpB,EAAcK,IACdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAS3C,OACL,aARmB,CACfmB,GACJ,GAAG1B,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOE,EAAA,CAEX,CC7DA,MAAME,GAAwC,CAC5C,MAAO,kBACP,UAAW,wBACX,UAAW,OACX,KAAM,QACR,EAEM5B,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EAEA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBsB,IAA2C,CACjE,MAAMtB,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAS3C,OACL,aARmB,CACfqB,GACJ,GAAG5B,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOI,EAAA,CAEX,CC9DA,MAAME,GAAwC,CAC5C,MAAO,kBACP,UAAW,uBACX,UAAW,MACX,KAAM,QACR,EAEM9B,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EAEA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAA+C,CACnE,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwBwB,IAA2C,CACjE,MAAMxB,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAS3C,OACL,aARmB,CACfuB,GACJ,GAAG9B,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOM,EAAA,CAEX,CC7DA,MAAM9B,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAC,GACAN,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EACA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwByB,IAA8C,CACpE,MAAMzB,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAQ3C,OACL,aAPmB,CACnB,GAAGP,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOhC,EAAA,CAEX,CCvDA,MAAMQ,GAAc,CAClBb,EACAC,EACAE,EACAD,EACAE,EACAL,CACF,EAEMmB,GAAkB,CACtBZ,EACAC,CACF,EACA,SAASY,GAA4BC,EAA+C,CAC9E,OAACA,GAAA,MAAAA,EAAa,GAIXF,GAAgB,IAAKD,IACnB,CACL,GAAGA,EACE,KAAMG,CAAY,EAE1B,EARQ,EASX,CAGA,MAAMC,GAAa,CAACb,CAAc,EAClC,SAASc,GAAoBF,EAAwC,CAC5D,OAAAC,GAAW,IAAKJ,IACd,CACL,GAAGA,EACE,KAAMG,EAAa,IAAK,EAAK,EAErC,CACH,CAEA,SAAwB0B,IAA8C,CACpE,MAAM1B,EAAcK,IAEdE,EAAqBR,GAA4BC,CAAW,EAC5DQ,EAAaN,GAAoBF,CAAW,EAQ3C,OACL,aAPmB,CACnB,GAAGP,GACH,GAAGc,EACH,GAAGC,CAAA,EACH,KAAK,CAACC,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EAGlB,KAAK,CAACR,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,EACxE,MAAOpC,CAAA,CAEX,CChEA,SAAS8C,GACPrE,EACmC,CAC7B,MAAE,aAAAsE,CAAiB,EAAAtE,EAEzB,OAAIsE,EAAa,MACR,CACL,UAAWA,EAAa,MACxB,UAAWA,EAAa,UAAYA,EAAa,UAAY,OAI1D,IACT,CAGwB,SAAAC,GACtBvE,EACAmC,EACA,CACM,MAAAqC,EAAWH,GAAsBrE,CAAO,EAE9C,GAAIwE,EAAU,CAEZ,MAAMC,EAAWtC,EAAY,KAC1BI,GAAWA,EAAO,YAAciC,EAAS,WAErC,OACL,GAAGC,EAED,UAAWD,EAAS,UAAYA,EAAS,UAAYC,EAAS,SAChE,CAEJ,CAEO,WACT,CChBA,MAAMxD,GAIA,CACJ,KAAM4B,GACN,QAASQ,GACT,IAAKK,GACL,KAAMI,GACN,OAAQE,GACR,OAAQJ,GACR,OAAQM,GACR,UAAWC,GACX,UAAWC,EACb,EAEA,SAAwBM,GACtB1E,EACsB,CAChB,MAAE,aAAAsD,EAAc,MAAAC,GAAUtC,GAAUjB,EAAQ,IAAI,EAAEA,CAAO,EACzD2E,EAAeJ,GAAiBvE,EAASsD,CAAY,EAEpD,OACL,aAAAA,EACA,MAAOqB,GAAgBpB,CAAA,CAE3B,CClDA,SAAwBqB,EAAe,CACrC,SAAAC,EACA,UAAAC,CACF,EAGG,CAEC,OAAAC,EAAA,IAAC,MACC,UAAWC,EACT,2DACAF,GAAa,IACf,EAEC,SAAAD,CAAA,EAGP,CCZA,SAAwBI,GAAkB,CACxC,WAAAC,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACXE,EAASD,EAAK,aAAeE,EAAcF,EAAK,YAAY,EAAI,KAGpE,OAAAJ,EAAA,IAACH,GAAe,UAAU,oBACxB,eAAC,OAAK,WAAU,oBACb,SACCQ,EAAAL,EAAA,IAAC,QAAM,SAAOK,CAAA,SAEbE,EAAK,SAAQ,YAAY,KAAK,KAAK,SAEpC,WAEJ,EACF,EAEJ,CAEO,MAAMC,GAAW,CACtB,IAAK,cACL,MAAO,cACT,EC3BA,SAAwBC,GAAsB,CAC5C,WAAAN,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EAGf,OAAAH,EAAA,IAACH,GAAe,UAAU,oBACxB,eAACa,GAAa,MAAMN,EAAK,eAAiB,EAC5C,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,kBACL,MAAO,kBACT,ECfA,SAAwBG,EAAoB,CAC1C,KAAAP,EACA,QAAAQ,EACA,KAAAC,EACA,QAAAC,EACA,SAAAN,EACA,UAAAT,EAAY,GACZ,OAAAgB,EACA,OAAAC,CACF,EAA6B,CACrB,MAAAC,EAAUC,GAAsC,IAAI,EAGxD,OAAAlB,EAAA,IAACmB,EAAA,CACC,KAAAf,EACA,QAAAQ,EACA,KAAMK,IAAY,KAAOJ,EAAOI,EAAUF,EAASC,EACnD,QAAAF,EACA,SAAAN,EACA,UAAAT,CAAA,EAGN,CCvBA,SAAwBqB,GAAc,CACpC,WAAAjB,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,OACGH,EAAA,IAAAH,EAAA,CACC,SAACwB,OAAA,OAAI,UAAU,wCACb,UAAArB,EAAA,IAACW,EAAA,CACC,KAAAP,EACA,KAAK,KACL,OAAO,KACP,OAAO,KACP,UAAU,eACZ,EACAiB,OAAC,MAAI,WAAU,iBACb,UAAArB,EAAA,IAAC,MAAI,WAAU,+DACZ,SAAAI,EAAK,MACR,EACAJ,MAAC,OAAI,UAAU,qDACb,eAACsB,GAAsB,eAAelB,EAAK,cAAe,CAC5D,IACF,EACF,EACF,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,UACL,MAAO,SACT,ECjCA,SAAwBe,GAAa,CACnC,WAAApB,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EAGf,OAAAH,EAAA,IAACH,GAAe,UAAU,oBACxB,eAACa,GAAa,MAAMN,EAAK,MAAQ,EACnC,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,SACL,MAAO,QACT,ECjBA,SAAwBgB,GAAY,CAClC,WAAArB,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EAGf,OAAAH,EAAA,IAACH,GAAe,UAAU,oBACxB,eAACa,GAAa,MAAMN,EAAK,KAAO,EAClC,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,QACL,MAAO,OACT,ECZA,SAAwBiB,GAAa,CACnC,WAAAtB,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACXE,EAASD,EAAK,aAAeE,EAAcF,EAAK,YAAY,EAAI,KAEtE,OACGJ,EAAA,IAAAH,EAAA,CAAe,UAAU,sCACxB,SACEwB,EAAA,KAAAK,WAAA,WAACL,OAAA,QAAK,UAAU,8BACd,UAAArB,EAAA,IAAC2B,EAAK,MAAMC,GAAQ,KAAK,KAAK,EAC7BxB,EAAK,MACJiB,OAAC,OACE,WAAAjB,EAAK,MAAM,eAAe,EAAE,IAAEyB,EAAU,OAAQzB,EAAK,KAAK,GAC7D,EAEAJ,EAAA,IAACO,EAAK,SAAQ,YAAY,SAAO,aAErC,EAEAc,OAAC,OAAK,WAAU,8BACd,UAAArB,EAAA,IAAC2B,EAAK,MAAMG,GAAc,KAAK,KAAK,EACnCzB,QACE,OAAM,UAAAA,CAAA,CAAO,EAEbL,MAAAO,EAAA,CAAK,QAAQ,YAAY,SAAU,gBAExC,EACF,EACF,EAEJ,CAEO,MAAMC,GAAW,CACtB,IAAK,SACL,MAAO,QACT,EC1CA,SAAwBuB,GAAY,CAClC,WAAA5B,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EAEf,OAAAH,MAACH,EAAe,WAAU,oBACxB,SAAAG,MAAC,OAAK,WAAU,oBACb,SAAAI,EAAK,MACJiB,OAAC,OACE,WAAAjB,EAAK,MAAM,eAAe,EAAE,IAAEyB,EAAU,OAAQzB,EAAK,KAAK,CAC7D,UAECG,EAAK,SAAQ,YAAY,KAAK,KAAK,SAEpC,WAEJ,EACF,EAEJ,CAEO,MAAMC,GAAW,CACtB,IAAK,QACL,MAAO,OACT,EC3BA,SAAwBwB,GAAa,CACnC,WAAA7B,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,aACGN,EAAe,WAAU,oBACxB,SAACwB,EAAA,aAAK,UAAU,oBACd,UAAArB,MAAC,QAAM,SAAK,WAAMI,EAAK,OAAS,GAAG,EAAI,IAAI,EAC3CJ,MAACiC,GAAS,WAAU,qCAAsC,GAC5D,EACF,EAEJ,CAEO,MAAMzB,GAAW,CACtB,IAAK,SACL,MAAO,QACT,EClBA,SAAwB0B,GAAmB,CACzC,WAAA/B,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,SACEwB,EAAA,KAAAK,WAAA,WAAC1B,MAAAmC,GAAA,CAAa,OAAQ/B,EAAK,cAAgB,GAAG,IAC7CyB,EAAU,OAAQzB,EAAK,cAAc,EACxC,EACF,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,eACL,MAAO,eACT,ECrBA,SAAwB4B,GAAkB,CACxC,WAAAjC,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,OACGH,MAAAH,EAAA,CAAe,UAAU,oBACxB,SAAGG,EAAA,IAAA0B,WAAA,UAAAtB,EAAK,YAAcA,EAAK,YAAY,iBAAmB,GAAG,CAC/D,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,cACL,MAAO,cACT,EChBA,SAAwB6B,GAAkB,CACxC,WAAAlC,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,aACGN,EAAe,WAAU,oBACxB,SAAGG,MAAA0B,EAAA,mBAAAtB,EAAK,WAAY,EACtB,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,cACL,MAAO,cACT,ECfA,SAAwB8B,GAAiB,CACvC,WAAAnC,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACjB,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,SACGwB,EAAA,KAAAK,WAAA,WAAAtB,EAAK,WAAW,eAAe,EAAE,IAAEyB,EAAU,OAAQzB,EAAK,UAAU,EACvE,EACF,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,aACL,MAAO,cACT,ECnBA,SAAwB+B,GAAU,CAChC,WAAApC,CACF,EAEG,CAEC,OAAAH,MAACH,GAAe,UAAU,oBACxB,eAAC,OAAM,UAAAM,EAAW,KAAK,KAAM,EAC/B,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,YACL,MAAO,OACT,ECXA,SAASgC,GAAuB,CAC9B,WAAArC,CACF,EAEG,CACD,KAAM,CAAE,eAAAsC,CAAe,EAAIC,GAAmBvC,EAAW,KAAK,EAAE,EAG9D,OAAAkB,EAAA,KAAC,MAAI,WAAU,kCACb,UAACrB,MAAA2C,GAAA,CAAkB,KAAMxC,EAAW,IAAM,GAEzCH,MAAA,OAAI,UAAU,4BACb,eAAC4C,EAAO,SAAS,IAAMH,IAAkB,QAAQ,QAAQ,KAAK,KAAK,yBAEnE,GACF,CACF,GAEJ,CAEA,SAAwBI,GAAqB,CAC3C,WAAA1C,CACF,EAEG,CACD,MAAM2C,EAAgBC,KAChBC,EAAU7C,EAAW,KAAK,cAAc,SAAW2C,EACzD,aACGjD,EAAe,WAAU,oBACtB,SAAAmD,QACCR,GAAuB,YAAArC,CAAwB,GAEhDH,MAAC,OAAI,UAAU,oBACb,eAAC,IAAE,oCAAuB,CAC5B,EAEJ,EAEJ,CAEO,MAAMQ,GAAW,CACtB,IAAK,iBACL,MAAO,YACT,EC7CA,SAAwByC,GAAmB,CACzC,WAAA9C,CACF,EAEG,OACK,MAAE,KAAAC,CAAS,EAAAD,EACX,CAAE,cAAA+C,CAAc,EAAI/C,EAAW,KAErC,OACGH,EAAA,IAAAH,EAAA,CACC,SAACwB,OAAA,OAAI,UAAU,wCACb,UAAArB,EAAA,IAACW,EAAA,CACC,KAAAP,EACA,QAAS8C,GAAA,YAAAA,EAAe,QACxB,KAAK,KACL,OAAO,KACP,OAAO,KACP,UAAU,eACZ,EACA7B,OAAC,MAAI,WAAU,iBACb,UAAArB,MAAC,OAAI,UAAU,+DACZ,8BAAe,wBAAS,QAASI,EAAK,KACzC,GACAJ,MAAC,OAAI,UAAU,qDACb,eAACsB,GAAsB,eAAelB,EAAK,cAAe,CAC5D,IACF,EACF,EACF,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,eACL,MAAO,SACT,ECpCA,SAAwB2C,GAAkB,CACxC,WAAAhD,CACF,EAEG,CACD,MAAMiD,EAASjD,EAAW,KAAK,cAAc,QAAU,KACvD,aACGN,EAAe,WAAU,oBACxB,SAACwB,EAAA,aAAK,UAAU,oBACd,UAACrB,MAAA,QAAM,YAAU,GAAI,GACrBA,MAACiC,GAAS,WAAU,qCAAsC,GAC5D,EACF,EAEJ,CAEO,MAAMzB,GAAW,CACtB,IAAK,cACL,MAAO,QACT,ECrBA,SAAwB6C,GAA2B,CACjD,WAAAlD,CACF,EAEG,OACK,MAAE,KAAAC,EAAM,KAAAkD,CAAS,EAAAnD,EAEjB,CAAE,aAAAoD,CAAiB,EAAAD,EAEzB,OAAKC,EASFvD,EAAA,IAAAH,EAAA,CACC,SAACwB,OAAA,OAAI,UAAU,wCACb,UAAArB,EAAA,IAACW,EAAA,CACC,KAAAP,EACA,QAASmD,EAAa,QACtB,KAAK,KACL,OAAO,KACP,OAAO,KACP,UAAU,eACZ,EACAlC,OAAC,MAAI,WAAU,iBACb,UAAArB,MAAC,OAAI,UAAU,+DACZ,eAAa,wBAAS,QAASI,EAAK,KACvC,GACAJ,MAAC,OAAI,UAAU,qDACb,eAACsB,GAAsB,eAAelB,EAAK,cAAe,CAC5D,IACF,EACF,EACF,GA1BGJ,EAAA,IAAAH,EAAA,CACC,SAACG,EAAA,UAAE,CACL,EA0BN,CCtCA,SAAwBwD,GAA0B,CAChD,WAAArD,CACF,EAEG,CACM,OAAAH,MAACqD,IAA2B,WAAAlD,CAAwB,EAC7D,CAEO,MAAMK,GAAW,CACtB,IAAK,sBACL,MAAO,SACT,ECXA,SAAwBiD,GAAa,CACnC,WAAAtD,CACF,EAEG,CACD,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,gBAAC,OAAK,eAAEM,EAAW,SAAW,EAAE,EAClC,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,eACL,MAAO,UACT,ECpBMkD,GAASC,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,uXAAuX,CAAE,CAAC,ECO1jB,SAAwBC,GAAoB,CAC1C,WAAAC,CACF,EAEG,CACD,MAAMC,EAAWC,KAEXC,EAAYC,cAAY,IAAM,CACzBH,EAAAI,GAAU,mBAAmB,OAAO,CAAC,CAChD,EAAG,CAAE,GAGH,OAAA9C,EAAA,KAACuB,EAAA,CACC,UAAU,2LACV,QAASqB,EAET,UAAAjE,EAAA,IAAC2B,EAAK,MAAMyC,GAAM,KAAK,MAAM,EAC5BN,EAAW,aAAa,eAAe,IAG9C,CC3BA,MAAMJ,GAASC,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,kNAAkN,CAAE,CAAC,ECuBrZ,SAAwBS,GAAsB,CAC5C,aAAAC,EACA,WAAAR,CACF,EAA+B,CAC7B,MAAMhB,EAAgBC,KAChBwB,EAAwBC,GAAgBV,CAAU,EAGlD,CAACW,EAAUC,CAAW,EAAIC,WAASJ,CAAqB,EACxD,CAACK,EAAY,CAAE,QAASC,EAAe,EAAIC,GAAoCC,EAAkB,EAEjG,CAACC,EAAgB,CAAE,QAASC,EAAe,EAAIH,GAAYI,EAAkB,EAC7E,CAACC,EAAqBC,CAAsB,EAAIT,WAASL,CAAY,EAErEe,GAAa,IAAM,CACRL,EAAA,CACb,UAAW,CACT,GAAIP,CACN,EACD,EACE,KAAMa,GAAW,CAChBZ,EAAY,IAAI,EAChBU,EACEE,EAAO,KAAK,aAAa,WAAW,aACtC,CACD,EACA,MAAM,IAAM,CACXF,EAAuBD,EAAsB,CAAC,EAC/C,GAGCI,GAAO,IAAM,CACNX,EAAA,CACT,UAAW,CACT,SAAUd,EAAW,SACrB,OAAQA,EAAW,MACrB,EACD,EACE,KAAMwB,GAAW,CAChB,KAAM,CAAE,aAAAE,EAAiB,EAAAF,EAAO,KAAK,aACrCZ,EAAYc,GAAa,EAAE,EACJJ,EAAAI,GAAa,WAAW,YAAY,EAC5D,EACA,MAAM,IAAM,CACXJ,EAAuBD,EAAsB,CAAC,EAC/C,GAGCM,GAAcC,GAAM,CACxBA,EAAE,eAAe,EACZ5C,EAEM2B,EACEY,KAENE,KAJLI,GAAO,MAAM,OAAO,CAKtB,EAIA,OAAAtE,EAAA,KAACuB,EAAA,CACC,UAAW3C,EACT,gMACAwE,EAAW,uCAAyC,EACtD,EACA,QAASgB,GAET,UAAAzF,MAAC2B,GAAK,KAAM8C,EAAWmB,GAAYxB,GAAM,KAAK,MAAM,EACnDS,GAAiBI,EACfjF,EAAA,IAAA6F,GAAA,CAAe,KAAK,KAAK,QAAQ,OAAO,EAEzC7F,EAAA,IAAA0B,WAAA,CAAG,SAAoByD,EAAA,iBAAiB,IAIhD,CCtFA,SAAwBW,GAAe,CACrC,WAAAhC,CACF,EAAU,CAGR,OAFiBiC,KAIb/F,EAAA,IAACqE,GAAA,CACC,aAAcP,EAAW,aACzB,WAAAA,CAAA,GAIC9D,MAAC6D,IAAoB,WAAAC,CAAwB,EACtD,CCnBA,SAAwBkC,GAAW,CACjC,WAAA7F,CACF,EAEG,CACK,MAAE,KAAAmD,CAAS,EAAAnD,EAGf,OAAAH,EAAA,IAACH,GAAe,UAAU,oBACxB,eAACiG,GAAe,YAAYxC,EAAK,UAAY,EAC/C,EAEJ,CAEO,MAAM9C,GAAW,CACtB,IAAK,aACL,MAAO,MACT,ECnBA,SAAwByF,GAAe,CACrC,WAAA9F,CACF,EAEG,CACD,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,gBAAC,OAAK,eAAEM,EAAW,SAAW,EAAE,EAClC,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,iBACL,MAAO,UACT,ECbA,SAAwB0F,GAAiB,CACvC,WAAA/F,EACA,SAAAK,CACF,EAGG,CACD,aACGX,EACC,UAAAG,EAAA,IAACmG,GAAA,CACC,OAAQhG,EAAW,KAAK,GACxB,eAAgBK,EAAS,WAAW,YAExC,GAEJ,CAEO,MAAMA,GAAW,CACtB,IAAK,aACL,MAAO,UACT,ECrBA,SAAwB4F,GAAY,CAClC,WAAAjG,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EAEf,OAAAH,MAACH,EAAe,WAAU,oBACxB,SAAAG,MAACqG,GAAoB,QAAQjG,EAAK,GAAI,KAAK,KAAK,CAClD,EAEJ,CAEO,MAAMI,GAAW,CACtB,IAAK,QACL,MAAO,UACP,IAAK,EACP,ECjBA,SAAwB8F,GAAkB,CACxC,WAAAnG,CACF,EAEG,CACK,MAAE,cAAA+C,CAAc,EAAI/C,EAAW,KAErC,aACGN,EAAe,WAAU,oBACxB,SAACwB,EAAA,aAAK,UAAU,oBACd,UAACrB,EAAA,YAAM,UAAekD,GAAA,YAAAA,EAAA,SAAU,IAAI,EACpClD,MAACiC,GAAS,WAAU,qCAAsC,GAC5D,EACF,EAEJ,CAEO,MAAMzB,GAAW,CACtB,IAAK,oBACL,MAAO,QACT,ECrBA,SAAwB+F,GAAa,CACnC,WAAApG,CACF,EAEG,CACD,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,gBAAC,OAAK,eAAEM,EAAW,SAAW,EAAE,EAClC,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,eACL,MAAO,UACT,ECnBwB,SAAAgG,GAAmB,CAAE,WAAAC,GAAiE,CACzG,OAACA,EAAW,SAGNpF,EAAA,KAAAK,WAAA,eAAE+E,EAAW,QAAS,IAFtBzG,MAAA0B,WAAA,CAAG,WAAW,OAAQ,EAGjC,CCCA,SAAwBgF,GAAe,CACrC,WAAAvG,CACF,EAEG,CACD,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,eAACU,EAAK,MAAK,KAAK,SAAAP,EAAA,IAACwG,IAAmB,WAAYrG,EAAW,KAAK,UAAY,GAAE,CAChF,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,iBACL,MAAO,iBACT,ECjBA,SAAwBmG,GAAc,CACpC,WAAAxG,CACF,EAEG,CACD,OACGH,EAAA,IAAAH,EAAA,CAAe,UAAU,oBACxB,gBAAC,OAAK,eAAEM,EAAW,SAAW,EAAE,EAClC,EAEJ,CAEO,MAAMK,GAAW,CACtB,IAAK,gBACL,MAAO,gBACT,ECceoG,EAAA,aACbC,GAAA,gBACAC,GAAA,QACAC,GAAA,OACAC,GAAA,MACAC,GAAA,OACAC,GAAA,MACAC,GAAA,OACAC,GAAA,aACAC,GAAA,YACAC,GAAA,YACAC,GAAA,WACAC,GAAA,UAGAjF,GAAA,eAGAkF,GAAA,aACAC,GAAA,YACAC,GAAA,oBACAC,GAAA,WAGAzB,GAAA,kBACAG,GAAA,MACAuB,GAAA,aAGAtB,GAAA,aAGA9C,GAAA,WAGAuC,GAAA,eACAC,GAAA,eAGAS,GAAA,cACAC,EACF,ECzEgB,SAAAmB,EACdC,EACA7M,EACA,CACO,OACL,GAAG6M,EACE,KAAA7M,CAAK,CAEd,CACgB,SAAA8M,EACdC,EACA/M,EACA,CACA,OAAO+M,EAAQ,IAAKF,GAAWD,EAAmBC,EAAQ7M,CAAI,CAAC,CACjE,CAEgB,SAAAgN,EACdC,EACAC,EACA,CACA,MAAMC,EAAkBF,EAAa,IAAKJ,GAAWA,EAAO,GAAG,EACxD,OAAAK,EACJ,OAAQL,GAAWM,EAAgB,QAAQN,EAAO,GAAG,IAAM,EAAE,EAC7D,KAAK,CAAC3J,EAAGQ,IAAMR,EAAE,MAAM,cAAcQ,EAAE,KAAK,CAAC,CAClD,CCZA,MAAM0J,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,aAClBA,EAAkB,eAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM2B,GAAmD,CACvD3B,EAAkB,WACpB,EAGM4B,GAA0D,CAC9D5B,EAAkB,iBACpB,EACM6B,GAAkD,CACtD7B,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GACPC,EACAjL,EACA,CACO,OACL,GAAG2K,GACH,GAAGN,EAAoBO,GAAcK,CAAK,EAC1C,GAAIjL,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAeA,EAAY,KAAOiL,EAAM,GACxCZ,EAAoBQ,GAAqB7K,CAAW,EACpD,CAAC,EACL,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwBkL,GAAoB,CAC1C,QAAA5N,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IACd,CAAE,SAAA7C,EAAU,KAAAD,GAAUD,EAAQ,QAC9B8N,EAAa5N,EAAWsD,GAActD,CAAQ,EAAI,KAElDiN,EAAkBO,GAAyBzN,EAAMyC,CAAW,EAG9D,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,cAGpB,OAAKmC,EAGMA,IAAe,gBAChBd,EAAA,KAAKrB,EAAkB,WAAW,EAClCqB,EAAA,KAAKrB,EAAkB,YAAY,EACnCqB,EAAA,KAAKrB,EAAkB,MAAM,EACjCjJ,GAAA,MAAAA,EAAa,KACfsK,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAE/DsK,EAAA,KAAKrB,EAAkB,MAAM,GAC5BmC,IAAe,sBAEfA,IAAe,QACxBd,EAAQ,KAAKH,EAAmBlB,EAAkB,YAAa1L,CAAI,CAAC,EACpE+M,EAAQ,KAAKH,EAAmBlB,EAAkB,eAAgB1L,CAAI,CAAC,GAC9D6N,IAAe,kBAChBd,EAAA,KAAKrB,EAAkB,MAAM,IAhB7BqB,EAAA,KAAKrB,EAAkB,MAAM,EACrCqB,EAAQ,KAAKH,EAAmBlB,EAAkB,YAAa1L,CAAI,CAAC,GAkB9D+M,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC1GA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM2B,GAAmD,CACvD3B,EAAkB,WACpB,EAGMqC,GAAkD,CACtDrC,EAAkB,YACpB,EAGM4B,GAA0D,CAC9D5B,EAAkB,iBACpB,EACM6B,GAAkD,CACtD7B,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GACPC,EACAjL,EACAuL,EACA,CACO,OACL,GAAIA,EAASD,GAAc,CAAC,EAC5B,GAAGX,GACH,GAAGN,EAAoBO,GAAcK,CAAK,EAC1C,GAAIjL,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAeA,EAAY,KAAOiL,EAAM,GACxCZ,EAAoBQ,GAAqB7K,CAAW,EACpD,CAAC,EACL,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwBwL,GAAiB,CACvC,QAAAlO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IACd,CAAE,KAAA3C,EAAM,KAAAH,GAASD,EAAQ,QAEzBmN,EAAkBO,GACtBzN,EACAyC,EACAtC,EAAK,QAIH,GAAAyN,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAGpB,OAAIvL,EAAK,QACC4M,EAAA,QAAQrB,EAAkB,YAAY,EAGxCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,YAAY,EACvCjJ,GAAA,MAAAA,EAAa,KACfsK,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAE/DsK,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC1GA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAMM6B,GAAkD,CACtD7B,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GAAyBhL,EAA+C,CACxE,OACL,GAAG2K,GACH1B,EAAkB,UAClB,GAAIjJ,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwByL,GAAgB,CACtC,QAAAnO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IAEdoK,EAAkBO,GAAyBhL,CAAW,EAGxD,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAEZ,OAAAqB,EAAA,KAAKrB,EAAkB,WAAW,EAClCqB,EAAA,KAAKrB,EAAkB,YAAY,EACnCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,UAAU,EACjCqB,EAAA,QAAQrB,EAAkB,SAAS,EAEpC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC1EA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM6B,GAAkD,CACtD7B,EAAkB,kBAClBA,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GAAyBhL,EAA+C,CACxE,OACL,GAAG2K,GACH,GAAI3K,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwB0L,GAAmB,CACzC,QAAApO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IAGdoK,EAAkBO,GAAyBhL,CAAW,EAGxD,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAGZ,OAAAqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,YAAY,EACvCjJ,GAAA,MAAAA,EAAa,KACfsK,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAE/DsK,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC3EA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM2B,GAAmD,CACvD3B,EAAkB,YAClBA,EAAkB,mBACpB,EAGM0C,GAAkD,CACtD1C,EAAkB,YACpB,EAGM6B,GAAkD,CACtD7B,EAAkB,kBAClBA,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GACP9M,EACA8B,EACA,CACO,OACL,GAAG2L,GACH,GAAGhB,GACH,GAAGN,EAAoBO,GAAc1M,EAAK,IAAI,EAC9C,GAAI8B,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwB4L,GAAiB,CACvC,QAAAtO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IACd,CAAE,KAAAnC,CAAK,EAAIZ,EAAQ,QAEnBmN,EAAkBO,GAAyB9M,EAAM8B,CAAW,EAG9D,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,qBAGZ,OAAAqB,EAAA,QAAQrB,EAAkB,YAAY,EACtCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,YAAY,EACvCjJ,GAAA,MAAAA,EAAa,KACfsK,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAE/DsK,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC1FA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM2B,GAAmD,CACvD3B,EAAkB,WACpB,EAGM4C,GAAoD,CACxD5C,EAAkB,WAClBA,EAAkB,cACpB,EAGM6B,GAAkD,CACtD7B,EAAkB,kBAClBA,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GACPhN,EACAgC,EACA,CACO,OACL,GAAG6L,GACH,GAAGlB,GACH,GAAGN,EAAoBO,GAAc5M,EAAO,IAAI,EAChD,GAAIgC,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwB4L,GAAiB,CACvC,QAAAtO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IACd,CAAE,OAAArC,CAAO,EAAIV,EAAQ,QAErBmN,EAAkBO,GAAyBhN,EAAQgC,CAAW,EAGhE,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAGZ,OAAAqB,EAAA,QAAQrB,EAAkB,UAAU,EACpCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,YAAY,EACvCjJ,GAAA,MAAAA,EAAa,KACfsK,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAE/DsK,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC7FA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAQM6C,GAAoD,CACxD7C,EAAkB,eAClBA,EAAkB,aACpB,EAGM6B,GAAkD,CACtD7B,EAAkB,kBAClBA,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GACPhL,EACA,CACO,OACL,GAAG8L,GACH,GAAGnB,GACH,GAAI3K,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwB+L,GAAmB,CACzC,QAAAzO,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IACdoK,EAAkBO,GAAyBhL,CAAW,EAGxD,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAGZ,OAAAqB,EAAA,QAAQrB,EAAkB,cAAc,EACxCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,YAAY,EAC3CqB,EAAQ,KAAKH,EAAmBlB,EAAkB,MAAOjJ,CAAW,CAAC,EAC7DsK,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CCvFA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAMM6B,GAAkD,CACtD7B,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GAAyBhL,EAA+C,CACxE,OACL,GAAG2K,GACH,GAAI3K,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwBgM,GAAsB,CAC5C,QAAA1O,EACA,UAAA6N,CACF,EAGG,CACD,MAAMnL,EAAcK,IAEdoK,EAAkBO,GAAyBhL,CAAW,EAGxD,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAEZ,OAAAqB,EAAA,KAAKrB,EAAkB,WAAW,EAClCqB,EAAA,KAAKrB,EAAkB,YAAY,EACnCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CC1EA,MAAME,GAAkD,CACtD1B,EAAkB,gBAClBA,EAAkB,QAClBA,EAAkB,OAClBA,EAAkB,OAClBA,EAAkB,MAClBA,EAAkB,OAClBA,EAAkB,aAClBA,EAAkB,YAClBA,EAAkB,YAClBA,EAAkB,UACpB,EAGM6B,GAAkD,CACtD7B,EAAkB,UACpB,EAGM8B,GAAiD,CACrD9B,EAAkB,KACpB,EAEA,SAAS+B,GAAyBhL,EAA+C,CACxE,OACL,GAAG2K,GACH,GAAI3K,EAAcqK,EAAoBS,GAAa9K,CAAW,EAAI,CAAC,EACnE,GAAIA,GAAA,MAAAA,EAAa,IAAMqK,EAAoBU,GAAY/K,CAAW,EAAI,CAAC,EAE3E,CAEA,SAAwBiM,GAAsB,CAC5C,UAAAd,CACF,EAEG,CACD,MAAMnL,EAAcK,IAEdoK,EAAkBO,GAAyBhL,CAAW,EAGxD,GAAAmL,EAAU,OAAS,EAAG,CAExB,MAAME,EAAkBF,EACrB,IAAKrJ,GACJ2I,EAAgB,KAAML,GAAWA,EAAO,MAAQtI,CAAQ,CAEzD,SAAQsI,GAAWA,CAAM,EACxB,GAAAiB,EAAgB,OAAS,EACpB,OACL,aAAcA,EACd,cAAed,EAAuBc,EAAiBZ,CAAe,EAG5E,CAEA,MAAMH,EAA8C,CAClDrB,EAAkB,SAEZ,OAAAqB,EAAA,KAAKrB,EAAkB,WAAW,EAClCqB,EAAA,KAAKrB,EAAkB,YAAY,EACnCqB,EAAA,KAAKrB,EAAkB,MAAM,EAC7BqB,EAAA,KAAKrB,EAAkB,UAAU,EAElC,CACL,aAAcqB,EACd,cAAeC,EAAuBD,EAASG,CAAe,EAElE,CCxDA,MAAMlM,GAAY,CAChB,KAAM2N,GACN,QAASC,GACT,IAAKC,GACL,OAAQC,GACR,KAAMC,GACN,OAAQC,GACR,OAAQR,GACR,UAAWS,GACX,UAAWC,EACb,EAGA,SAASC,GAAwBpP,EAAsD,OAC/E,MAAE,aAAAsE,CAAiB,EAAAtE,EAErB,QAAAqP,EAAA/K,EAAa,UAAb,YAAA+K,EAAsB,QAAS,EAC1B/K,EAAa,QAAQ,MAAM,GAAG,EAGhC,EACT,CAOA,SAAwBgL,GACtBtP,EAC4B,CACtB,MAAA6N,EAAYuB,GAAwBpP,CAAO,EAC3CuP,EAAStO,GAAUjB,EAAQ,IAAI,EACrC,OAAOuP,EAAO,CAAE,QAAAvP,EAAS,UAAA6N,CAAW,EACtC,CCpDA,SAAwB2B,GACtBxP,EACuB,CACjB,MAAE,aAAAsE,CAAiB,EAAAtE,EACnB,CAAE,aAAAsD,EAAc,MAAAC,CAAM,EAAImB,GAAiB1E,CAAO,EAClDyP,EAAarO,GAAepB,CAAO,EACnC,CAAE,aAAAkN,EAAc,cAAAwC,CAAc,EAAIJ,GAAiBtP,CAAO,EAEzD,OACL,WAAAyP,EACA,MAAO,OAAOnL,EAAa,KAAK,GAAK,IACrC,MAAAf,EACA,aAAAD,EACA,MAAO,OAAOgB,EAAa,KAAK,GAAK,EACrC,KAAMtE,EAAQ,KACd,IAAKA,EAAQ,IACb,KAAMA,EAAQ,KACd,QAASA,EAAQ,QACjB,aAAAsE,EACA,aAAA4I,EACA,cAAAwC,CAAA,CAEJ,CC3BA,MAAMC,GAAYjH,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAK,EAAoBC,gBAAoB,OAAQ,CAAE,EAAG,6HAA8H,UAAW,YAAc,GAAmBA,EAAmB,cAAC,OAAQ,CAAE,EAAG,mDAAoD,MAAO,CACvc,QAAS,EACX,CAAC,CAAE,CAAC,ECFEiH,GAAclH,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAK,EAAoBC,gBAAoB,OAAQ,CAAE,EAAG,2TAA4T,UAAW,YAAc,GAAmBA,EAAmB,cAAC,OAAQ,CAAE,EAAG,wLAAyL,MAAO,CAC5wB,QAAS,EACX,CAAC,CAAE,CAAC,ECYJ,SAASkH,GACPtK,EACAuK,EACA,CACA,OAAIA,GAAA,MAAAA,EAAkB,UAKb,CAAE,QAJO,CACd,GAAGvK,EAAS,aAAa,IAAKuH,GAAWA,EAAO,GAAG,EACnDgD,EAAiB,WAEO,KAAK,GAAG,CAAE,EAOlCA,GAAA,MAAAA,EAAkB,aAIb,CAAE,QAHOvK,EAAS,aACtB,IAAKuH,GAAWA,EAAO,GAAG,EAC1B,OAAQiD,GAAQA,IAAQD,EAAiB,YAAY,EAC9B,KAAK,GAAG,CAAE,EAG/B,EACT,CACA,SAAwBE,EAAY,CAClC,SAAAzK,EACA,UAAAsI,EAAY,CAAC,EACb,iBAAAiC,EAAmB,CAAC,CACtB,EAIG,CACK,MAAAG,EAAOpC,EAAU,MAAQtI,EAAS,KAClC2K,EAAe,CAAE,GAAGrC,GAC1B,OAAOqC,EAAa,KACpB,MAAMC,EAAY,CAChB,GAAG5K,EAAS,aACZ,GAAG2K,EACE,KAAAD,EACL,GAAGJ,GAAgBtK,EAAUuK,CAAgB,GAEzCM,EAAS,IAAI,gBAAgBD,CAA8C,EAAE,SAAS,EAErF,SAAG5K,EAAS,GAAG,GAAG6K,EAAS,IAAIA,CAAM,GAAK,EAAE,EACrD,CCnDO,SAASC,EAAS,CACvB,KAAAJ,EACA,MAAAK,EACA,KAAAC,EACA,SAAAhL,CACF,EAKG,CACK,MAAAiL,EAASjL,EAAS,OAAS0K,EAE/B,OAAA7J,EAAA,KAACqK,GAAA,CACC,KAAMT,EAAY,CAAE,SAAAzK,EAAU,UAAW,CAAE,KAAA0K,CAAA,EAAQ,EACnD,kBAAgB,UAChB,uBAAsB,GAAGK,CAAK,QAC9B,UAAWtL,EACT,+CACAwL,EACI,wEACA,4JACN,EAEA,UAACzL,MAAA2B,EAAA,CAAK,KAAA6J,EAAY,KAAK,IAAK,GAC3BC,EAAUzL,MAAA,QAAK,UAAU,mBAAoB,UAAM,GAAU,KAGpE,CC5BA,SAAwB2L,GAAU,CAChC,SAAAnL,CACF,EAAsB,CAElB,OAAAa,EAAA,KAAC,MAAI,WAAU,0BACb,UAAArB,EAAA,IAACsL,EAAA,CACC,KAAK,QACL,KAAMM,GACN,MAAM,QACN,SAAApL,CAAA,CACF,EACAR,MAACsL,GAAS,KAAK,OAAO,KAAMO,GAAU,MAAM,OAAO,SAAArL,EAAoB,EACvER,EAAA,IAACsL,EAAA,CACC,KAAK,QACL,KAAMQ,GACN,MAAM,QACN,SAAAtL,CAAA,CACF,CACF,GAEJ,CC7BA,MAAMuL,GAAkBpI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,8nBAA8nB,CAAE,CAAC,ECAp0BoI,GAAkBrI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,4nBAA4nB,CAAE,CAAC,ECAl0BqI,GAAkBtI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,8jBAA8jB,CAAE,CAAC,ECApwBsI,GAAkBvI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,mkBAAmkB,CAAE,CAAC,ECAzwBuI,GAA8BxI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,wgBAAwgB,CAAE,CAAC,ECA1tBwI,GAA8BzI,GAA0BC,EAAmB,cAAC,MAAO,CAAE,MAAO,6BAA8B,QAAS,cAAe,GAAGD,CAAO,EAAkBC,gBAAoB,OAAQ,CAAE,EAAG,ifAAif,CAAE,CAAC,ECsBnsByI,GAAa,CACjB,OAAQC,GACR,YAAaC,GACb,OAAQC,GACR,YAAaC,GACb,OAAQC,GACR,YAAaC,EACf,EACgB,SAAAC,EAASC,EAAqCC,EAAU,GAAO,CAC7E,OAAOT,GAAW,GAAGQ,CAAQ,GAAGC,EAAU,QAAU,EAAE,EAAE,CAC1D,CAEA,SAASC,GAAkBC,EAA2B,CAC7C,OAAAA,IAAc,MAAQ,OAAS,KACxC,CAEA,SAASC,GAAc,EAAe1B,EAAe,CACnD,EAAE,eAAe,EACX,2CAAqCA,CAAK,GAAG,CACrD,CAEA,SAAwB2B,GAAe,CACrC,SAAA1M,EACA,YAAA2M,EACA,QAAAC,CACF,EAIG,CACD,MAAM3B,EAAS0B,EAAY,YAAc3M,EAAS,MAAM,UAClD6M,EAAMrP,EAAgB9C,GAASA,GAAA,YAAAA,EAAM,GAAG,EACxCoS,EAAY,CAACH,EAAY,KAAQA,EAAY,KAAOE,EAE1D,OACGrN,MAAAuN,GAAK,KAAL,CAAU,GAAG,MACZ,SAAAlM,EAAA,KAACqK,GAAA,CACC,UAAU,4HACV,QAAUhG,GAAM4H,EAAWF,EAAY,EAAAH,GAAcvH,EAAGyH,EAAY,KAAK,EACzE,KAAMG,EAAYrC,EAAY,CAC5B,SAAAzK,EACA,UAAW,CACT,MAAO2M,EAAY,UACnB,UAAW1B,EACPsB,GAAkBvM,EAAS,MAAM,SAAS,EAC1C2M,EAAY,SAClB,CACD,GAAI,IAEL,UAAC9L,OAAA,OAAI,UAAU,6BACb,UAAArB,EAAA,IAAC2B,EAAA,CACC,KAAK,KACL,KAAM6L,GACN,UAAWvN,EACTwL,EAAS,wBAA0B,YACnC,MACF,EACF,EACC0B,EAAY,KACXnN,EAAA,IAACyN,GAAA,CACC,IAAKN,EAAY,KAAK,SACtB,MAAOA,EAAY,KAAK,MACxB,KAAK,KACL,UAAU,SAGZ,GAEDA,EAAY,MACZA,EAAY,IAETnN,MAAA0B,EAAA,mBAAA1B,EAAA,IAAC0N,GAAM,SAAQ,SAAS,KAAK,KAAK,UAAU,OAAO,cAEnD,EACF,GAEA,IAEJ,EACCjC,SACE,MACC,WAAAzL,EAAA,IAAC2B,EAAA,CACC,KAAK,KACL,KAAMiL,EACJO,EAAY,KACZ3M,EAAS,MAAM,YAAc,MAC/B,EACF,EACAa,OAAC,MAAI,WAAU,4BACZ,cAAI,IACH,IACFrB,EAAA,IAAC2B,EAAA,CACC,KAAK,KACL,KAAMiL,EACJO,EAAY,KACZ3M,EAAS,MAAM,YAAc,MAC/B,EACF,GACF,GACF,EAEAR,EAAA,IAAC2B,EAAA,CACC,KAAK,KACL,KAAMiL,EAASO,EAAY,KAAMA,EAAY,YAAc,MAAM,EACjE,UAAU,4BACZ,GAGN,GAEJ,CC7HA,SAAwBQ,GAAwB,CAC9C,QAAAC,EAAU,GACV,QAAAR,EAAU,IAAM,CAAC,EACjB,SAAA5M,CACF,EAIG,CACK,MAAE,MAAAhC,CAAU,EAAAgC,EAElB,cACGoC,EAAO,SAAQ,OAAO,KAAK,KAAK,QAAAwK,EAC/B,UAACpN,MAAA2B,EAAA,CAAK,KAAK,KAAK,KAAMiL,EAASpO,EAAM,KAAMA,EAAM,YAAc,MAAM,CAAG,GACvEwB,EAAA,YAAK,UAAU,mBAAmB,SAAK,UACxCqB,OAAC,OAAK,WAAU,oDACb,UAAA7C,EAAM,KACLwB,EAAA,IAACyN,GAAA,CACC,IAAKjP,EAAM,KAAK,SAChB,MAAOA,EAAM,KAAK,MAClB,KAAK,KACL,UAAU,SAGZ,GAEDA,EAAM,OACT,EACCoP,QAAW/H,GAAe,MAAK,KAAK,EAAK7F,MAAC2B,EAAK,MAAMkM,EAAe,EACvE,GAEJ,CCnCA,MAAMC,GAAwBC,EAAA,KAAK,IAAMC,GAAA,WAAO,qCAAyB,EAAC,uXAM1E,SAAwBC,GAAa,CACnC,SAAAzN,CACF,EAAsB,CACpB,KAAM,CAAC0N,EAASC,CAAU,EAAIxJ,WAAS,EAAK,EAE5C,yBAEK,SACCuJ,EAAAlO,EAAA,IAACoO,EAAA,UACC,SAAUpO,EAAA,IAACqO,GAAuB,UAAA7N,EAAoB,QAAO,GAAC,EAE9D,SAAAR,EAAA,IAAC8N,IAAsB,SAAAtN,CAAoB,KAG5CR,MAAAqO,GAAA,CAAuB,QAASF,EAAY,SAAA3N,EAAoB,CAErE,EAEJ,CCpBA,SAAwB8N,GAAoB,CAC1C,SAAA9N,CACF,EAAsB,CAElB,OAAAa,EAAA,KAAC,MAAI,WAAU,gCACb,UAAArB,MAAC,MAEC,UAAAA,MAACuO,GAAgB,UAAA/N,CAAoB,GACvC,EAEAR,MAAC2L,IAAU,SAAAnL,EAAoB,CACjC,GAEJ,CCjBA,SAAwBgO,IAA2B,CAC3C,MACH,mBAAAC,EAAoB,eAAAC,CAAA,EACnBC,GAAU,QAEd,OAAIF,IAAuBC,EAClB,GAGPrN,OAACd,GAAK,QAAQ,YAAY,GAAG,IAAI,UAAU,OAAO,KAAK,KAAK,qBACjDkO,EAAmB,eAAe,EAAE,MAAI,IAChDC,EAAe,eAAe,EAAE,IAAE7M,EAAU,OAAQ6M,CAAc,EAAG,IAAI,wBAE5E,GAEJ,CChBA,SAAwBE,GAA2B,CACjD,WAAAzO,CACF,EAEG,CACK,MAAE,KAAAC,CAAS,EAAAD,EACX,CAAE,cAAA+C,CAAc,EAAI/C,EAAW,KAErC,OACGH,MAAA,OAAI,UAAU,gBACb,SAACA,MAAAmB,EAAA,CAAU,KAAK,KAAK,KAAAf,EAAY,QAAS8C,GAAA,YAAAA,EAAe,QAAS,CACpE,EAEJ,CCuBA,MAAe2L,GAAA,aACbhI,GAAA,gBACAC,GAAA,QACAC,GAAA,OACAC,GAAA,MACAC,GAAA,OACAC,GAAA,MACAC,GAAA,OACAC,GAAA,aACAC,GAAA,YACAC,GAAA,YACAC,GAAA,WACAC,GAEA,UAAAjF,GAAA,eAGAkF,GAAA,aACAC,GAAA,YACAC,GAAA,oBACAC,GAAA,WAGAzB,GACA,kBAAAG,GAAA,MACAuB,GAGA,aAAAtB,GAGA,eAAAN,GACA,WAAAD,GAGA,aAAAvC,GAGA,eAAAiD,GACA,cAAAC,EACF,ECvEA,SAAwBmI,GAAiB,CACvC,OAAA/G,EACA,WAAA5H,EACA,SAAAK,CACF,EAIG,CACK,MAAAuO,EAAkBF,GAAiB9G,EAAO,GAAG,EAGnD,OAAKgH,EAKE/O,EAAA,IAAC+O,EAAgB,YAAA5O,EAAwB,SAAAK,CAAoB,IAJlE,QAAQ,IAAI,0BAA0BuH,EAAO,GAAG,EAAE,EAC3C,GAIX,CCpBA,SAAwBiH,EAAmB,CACzC,WAAA7O,EACA,SAAAK,CACF,EAGG,CACK,MAAE,aAAA2H,CAAiB,EAAA3H,EAEzB,aACG,KAAG,WAAU,+BACX,SAAa2H,EAAA,IAAKJ,GACjB/H,EAAA,IAAC8O,GAAA,CAEC,OAAA/G,EACA,WAAA5H,EACA,SAAAK,CAAA,EAHKuH,EAAO,GAKf,EACH,EAEJ,CCzBA,SAAwBkH,GAAc,CACpC,UAAAC,CACF,EAEG,CACD,OACGlP,EAAA,WAAI,UAAU,+BACb,SAACA,MAAA4C,EAAA,CAAO,QAASsM,EAAW,QAAQ,WAAW,KAAK,KAAK,wCAEzD,CACF,EAEJ,CCVA,MAAMC,GAAmBpB,EAAA,KAAK,WAC5B,OAAO,qBAAqB,EAAE,qRAAMqB,IAAY,CAC9C,QAASA,EAAO,kBAChB,CACJ,EAEA,SAAwBC,GAAkB,CACxC,KAAAjP,EACA,QAAAQ,CACF,EAGG,CACD,KAAM,CAAC0O,EAAMC,CAAO,EAAI5K,WAAS,EAAK,EAEhC6K,EAAU,IAAM,CACpBD,EAAQ,CAACD,CAAI,GAGf,OAEIjO,EAAA,KAAAK,WAAA,WAACL,OAAAuB,EAAA,CAAO,QAAQ,WAAW,KAAK,KAAK,QAAS,IAAM2M,EAAQ,CAACD,CAAI,EAC/D,UAACtP,EAAA,YAAK,UAAU,YAAY,SAAU,eACrCA,EAAA,YAAK,UAAU,mBAAmB,SAEnC,0CACF,EAECsP,EACEtP,EAAA,IAAAoO,EAAA,UAAS,SAAU,KAClB,SAACpO,MAAAmP,GAAA,CAAiB,KAAA/O,EAAY,QAAAQ,EAAkB,QAAA4O,CAAkB,GACpE,EAEA,EAEJ,GAEJ,CC/BA,SAAwBC,GAAwB,CAC9C,SAAAC,EACA,KAAAtP,EACA,QAAAQ,EACA,QAAAoC,EACA,aAAAO,CACF,EAMG,CAED,OAAK3C,GAoBHA,EAAQ,kBAAoB+O,EAAmB,IAC3C/O,GAAA,YAAAA,EAAS,cAAe,GACxBA,GAAA,YAAAA,EAAS,OAAQ,GAuBnBA,EAAQ,kBAAoB,SAE3B,MACE,WACCoC,EAAAhD,MAACO,GAAK,QAAQ,YAAY,KAAK,KAAK,GAAG,IAAI,gCAE3C,EAEA,GAEFc,EAAA,KAACd,EAAA,CACC,KAAK,KACL,GAAG,MACH,UAAU,mDAET,UACCyC,EAAAhD,EAAA,IAAC4P,EAAA,CACC,KAAAxP,EACA,QAAAQ,EACA,aAAA2C,EAEA,SAAAvD,MAAA0B,WAAA,CACE,eAACC,EAAK,MAAMgO,EAAmB,KAAM,KAAK,KAAK,CACjD,KAGD3P,EAAA,IAAA2B,EAAA,CAAK,KAAMgO,EAAmB,KAAM,KAAK,KAAK,EAEhD3P,EAAA,YAAK,UAAU,mBAAmB,SAAY,iBAAQ,IACtD0P,EACC1P,EAAA,IAAC6P,GAAA,CACC,QAAAjP,EACA,aAAcA,GAAA,YAAAA,EAAS,aACvB,eAAgB2C,EAAa,gBAC7B,SAAAmM,CAAA,GAGD1P,EAAA,YACE,WAAa,gBACVM,EAAciD,EAAa,gBAAiB,CAC1C,YAAa,GACd,EACD,OACN,GAEFvD,MAAC,QAAK,SAAI,SACVA,MAAC,KACE,SAASY,GAAA,MAAAA,EAAA,aACNN,EAAcM,GAAA,YAAAA,EAAS,YAAY,EACnC,iBACN,EAAI,KAEN,CACF,WAID,MACE,WACCoC,EAAAhD,MAACO,GAAK,QAAQ,YAAY,KAAK,KAAK,GAAG,IAAI,gCAE3C,EAEA,GAEFc,EAAA,KAACd,EAAA,CACC,KAAK,KACL,GAAG,MACH,UAAU,8DAET,UACCyC,EAAAhD,EAAA,IAAC4P,EAAA,CACC,KAAAxP,EACA,QAAAQ,EACA,aAAA2C,EAEA,SAAAvD,MAAA0B,WAAA,CACE,eAACC,EAAK,MAAMmO,GAAkB,KAAM,KAAK,KAAK,CAChD,KAGD9P,EAAA,IAAA2B,EAAA,CAAK,KAAMmO,GAAkB,KAAM,KAAK,KAAK,EAEhDzO,OAAC,MAAI,WAAU,0BACb,UAAArB,MAAC,QAAK,SAAQ,aACb0P,EACC1P,EAAA,IAAC+P,GAAA,CACC,QAAAnP,EACA,MAAOA,GAAA,YAAAA,EAAS,MAChB,aAAc2C,EAAa,cAC3B,SAAAmM,CAAA,CACF,QAEC,IACE,UAAAnM,EAAa,cACVA,EAAa,cAAc,eAAe,EAC1C,GACN,GAEFvD,MAAC,QAAK,SAAI,SACVA,MAAC,KAAG,SAASY,GAAA,MAAAA,EAAA,MAAQA,EAAQ,MAAM,iBAAmB,UAAU,EAAI,KACtE,GACF,CACF,IA1HIoC,EAEA3B,EAAA,KAAC,MAAI,WAAU,uCACb,UAAAA,EAAA,KAACuO,EAAA,CACC,KAAAxP,EACA,QAAAQ,EACA,KAAK,KACL,aAAA2C,EAEA,UAACvD,EAAA,YAAK,UAAU,mBAAmB,SAAc,mBAChDA,EAAA,YAAK,UAAU,YAAY,SAAO,aACrC,EACAA,MAACqP,GAAkB,MAAAjP,EAAY,QAAAQ,CAAkB,EACnD,IAGG,GAzCHoC,EAEA3B,EAAA,KAACuO,EAAA,CACC,KAAAxP,EACA,QAAAQ,EACA,KAAK,KACL,aAAA2C,EAEA,UAACvD,EAAA,YAAK,UAAU,YAAY,SAAW,gBACtCA,EAAA,YAAK,UAAU,mBAAmB,SAEnC,qCAIC,EAsIX,CCrKA,SAAwBgQ,GAAyB,CAC/C,KAAA5P,EACA,QAAAQ,EACA,QAAAoC,EACA,iBAAAiN,EACA,UAAAf,EACA,SAAAgB,EACA,aAAA3M,CACF,EAQG,CACG,IAACA,GAAgBP,EAEjB,OAAAhD,MAACiP,IAAc,UAAAC,CAAsB,GAIzC,GAAI,CAAC3L,EACI,SAGH,MAAA4M,EAAkBC,YAASH,EAAkB,GAAG,EAChDI,GACJzP,GAAA,YAAAA,EAAS,mBAAoB+O,EAAmB,GAC5C/O,GAAA,YAAAA,EAAS,aACTA,GAAA,YAAAA,EAAS,MACT0P,EAAcD,EAAW,EAG7B,OAAAhP,EAAA,KAAC,MAAI,WAAU,sCACb,UAAAA,EAAA,KAAC,OACC,UAAWpB,EACT,sBACAqQ,EACI,6BACA,gCACN,EAEA,UAAAtQ,EAAA,IAACmG,GAAA,CACC,OAAQ/F,EAAK,GACb,KAAK,KACL,eAAgB8P,EAAS,OAC3B,EAEAlQ,EAAA,IAAC,OACC,UAAWC,EACT,0BACAqQ,EAAc,YAAc,EAC9B,EAEA,SAAAtQ,EAAA,IAACyP,GAAA,CACC,KAAArP,EACA,QAAAQ,EACA,SAAUqP,EACV,aAAA1M,EACA,QAAAP,CAAA,CACF,EACF,GACF,EAEAhD,EAAA,IAACuQ,GAAA,CACC,iBAAiB3P,GAAA,YAAAA,EAAS,kBAAmB,EAC7C,gBACEA,GAAA,YAAAA,EAAS,mBAAoB+O,EAAmB,GAC5CpM,EAAa,gBACbA,EAAa,cAEnB,YAAa8M,EACb,SAAUrN,EAAUmN,EAAkB,KACxC,CACF,GAEJ,CClFA,SAAwBK,GAA4B,CAClD,KAAApQ,EACA,QAAAQ,CACF,EAGG,CACK,MAAA6P,EAAS7P,GAAoBR,EAGjC,OAAAiB,EAAA,KAAC,MAAI,WAAU,SACb,UAACrB,MAAA,KAAE,UAAU,8DACX,SAAAA,EAAA,IAAC0Q,GAAA,CACC,KAAAtQ,EACA,UAAU,2DAEd,SACC,MACC,WAAAJ,EAAA,IAAC2Q,EAAA,CACC,KAAM,UAAUvQ,EAAK,IAAI,GACzB,QAAQ,QACR,KAAK,KACL,UAAS,GAER,SAAOqQ,EAAA,MACV,EACAzQ,EAAA,IAAC4Q,GAAA,CACC,cAAexQ,EAAK,cACpB,KAAI,GACJ,KAAK,KACL,QAAO,GACP,OAAM,GACR,GACF,CACF,GAEJ,CC9BA,SAAwByQ,GAAmB,CACzC,UAAA9Q,EAAY,GACZ,SAAA+Q,EAAW,CACb,EAAU,CAGF,MAAAC,EAAgB,EAAI,KAAK,GAAK,GAC9BC,EAAkBF,EAAW,IAAOC,EACpCE,EAAWC,WAgCjB,aACG,MAAI,WAAWjR,EAAWF,EAAW,4BAA4B,EAChE,SAAAsB,EAAA,KAAC,OACC,UAAU,4EACV,KAAK,SACL,gBAAe,EACf,gBAAe,IACf,gBAAeyP,EACf,SAAU,EAEV,UAACzP,OAAA,OAAI,UAAU,oEACb,UAAArB,EAAA,IAAC,UACC,GAAG,MACH,GAAG,MACH,EAAG,GACH,YAAY,IACZ,UAAU,6BACV,KAAK,OACL,aAAa,qBACf,EACAA,EAAA,IAAC,UACC,GAAG,MACH,GAAG,MACH,EAAG,GACH,YAAY,IACZ,UAAU,mEACV,gBAAiB+Q,EACjB,iBAAkBA,EAAgBC,EAClC,UAAU,oBACZ,GACF,EACA3P,EAAA,KAAC,KACC,IAAK4P,EACL,UAAWhR,EACT6Q,GAAY,IAAM,eAAiB,GACnC,8EACF,EAEA,UAAC9Q,MAAA,QAAK,UAAU,YACd,SAAAA,EAAA,IAAC2B,EAAA,CACC,KAAMwP,GACN,KAAK,MACL,UAAWL,GAAY,IAAM,eAAiB,KAElD,EACAzP,OAAC,OAAK,WAAU,mBACd,UAAArB,EAAA,IAACoR,GAAA,CACC,QAAQ,OACR,MAAON,EAAW,IAAM,IAAMA,EAC9B,SAAU,IACV,OAAO,IACT,QACC,KAAG,IACJ9Q,EAAA,IAAC,QACC,UAAW,WACT8Q,GAAY,IAAM,eAAiB,gBACrC,GACD,gBAED,GACF,GACF,GAEJ,GAEJ,CC9GA,SAAwBO,GAA4B,CAClD,KAAAjR,EACA,QAAAQ,EACA,QAAAoC,EACA,SAAAkN,EACA,aAAA3M,EACA,UAAA2L,EACA,iBAAAe,CACF,EAQG,CAEC,OAAA5O,EAAA,KAAC,MAAI,WAAU,iDACb,UAACA,OAAA,OAAI,UAAU,kDACb,UAACA,OAAA,OAAI,UAAU,6BACb,UAACA,OAAA,OAAI,UAAU,yDACb,UAAArB,EAAA,IAACwQ,GAAA,CACC,KAAApQ,EACA,SAASmD,GAAA,YAAAA,EAAc,WAAW2M,GAAA,YAAAA,EAAU,UAAWtP,CAAA,CACzD,EACAZ,MAAC,MAAI,WAAU,kBACb,SAAAA,EAAA,IAAC6Q,IAAmB,UAAUtN,GAAA,YAAAA,EAAc,WAAY,EAAG,CAC7D,IACF,EACAvD,MAAC,MAAI,WAAU,kBACb,SAAAA,EAAA,IAACgQ,GAAA,CACC,KAAA5P,EACA,SAASmD,GAAA,YAAAA,EAAc,WAAW2M,GAAA,YAAAA,EAAU,UAAWtP,EACvD,QAAAoC,EACA,iBAAAiN,EACA,UAAAf,EACA,SAAAgB,EACA,aAAA3M,CAAA,GAEJ,GACF,EAEAlC,OAAC,MAAI,WAAU,2EACb,UAAArB,EAAA,IAACW,EAAA,CACC,KAAAP,EACA,SAASmD,GAAA,YAAAA,EAAc,WAAW2M,GAAA,YAAAA,EAAU,UAAWtP,EACvD,KAAK,KACL,OAAO,KACP,OAAO,KACP,QAAQ,YACR,SAAU,CACR,QAAS,GACT,WAAY,GACZ,QAAS,GACT,QAAS,GACX,EACF,EAEAZ,EAAA,IAAC,OACC,UAAU,+BACV,MAAO,CAAE,MAAO,QAAS,OAAQ,OAAQ,EAEzC,SAACA,EAAA,IAAA6Q,GAAA,CAAmB,UAAUtN,GAAA,YAAAA,EAAc,WAAY,EAAG,EAC7D,GACF,GACF,EACAvD,MAAC,MAAI,WAAU,YACb,SAAAA,EAAA,IAACgQ,GAAA,CACC,SAAAE,EACA,KAAA9P,EACA,QAAA4C,EACA,SAASO,GAAA,YAAAA,EAAc,WAAW2M,GAAA,YAAAA,EAAU,UAAWtP,EACvD,iBAAAqP,EACA,aAAA1M,EACA,UAAA2L,CAAA,GAEJ,CACF,GAEJ,CC/EA,SAAwBoC,GAAqB,CAC3C,SAAUC,EACV,KAAAnR,CACF,EAGG,CACD,MAAMoR,EAAsBD,EAAgB,UAAUA,EAAgB,UAAU,OAAS,CAAC,EACpFzO,EAAgBC,KAChB,CAAE,SAAAmN,EAAU,eAAAzN,CAAA,EAAmBC,GAAmBtC,EAAK,EAAE,EACzD,CAAE,aAAAmD,EAAc,eAAAkO,EAAgB,kBAAAC,CAAA,EAAsBC,GAAuB,CAAE,OAAQvR,EAAK,GAAI,eAAgBoR,GAAA,YAAAA,EAAqB,EAAI,GACzIxO,GAAUuO,GAAA,YAAAA,EAAiB,UAAWzO,EAE5C,SAASoM,GAAY,CACnBzM,EAAiB,OACdmP,GAAoB,CACfA,IACFF,EAAkBE,EAAgB,EAAE,EACpCC,GAAM,QAAQ,qCAAqC,EAEvD,EAEJ,CAEG,OAAA7O,GAAW,CAACkN,EACNlQ,EAAA,IAAC,KAAE,SAAsE,2EAKhFA,EAAA,IAACqR,GAAA,CACC,KAAAjR,EACA,QAAS4C,GAAUO,GAAA,YAAAA,EAAc,UAAW2M,EAAS,SAAUsB,GAAA,YAAAA,EAAqB,UAAWD,EAAgB,QAC/G,QAAAvO,EACA,SAAUA,EAAUkN,EAAWqB,EAC/B,aAAcvO,EAAUO,EAAeiO,EACvC,iBAAkBC,EAClB,UAAAvC,CAAA,EAGN,CC5CA,SAAwB4C,GAA8B,CACpD,WAAA3R,CACF,EAEG,CACK,MAAE,KAAAC,EAAM,KAAAkD,CAAS,EAAAnD,EACjB,CAAE,cAAA+C,CAAkB,EAAAI,EAE1B,OAAQtD,MAAAsR,GAAA,CAAqB,KAAAlR,EAAY,SAAU8C,CAAe,EACpE,CCHA,SAAwB6O,EAAmB,CACzC,KAAA3R,EACA,SAAA8P,EACA,aAAA3M,EACA,eAAAyO,EAAiB,GACjB,UAAA3T,EAAY,EACd,EAMG,SACK,MAAA4T,EAAqB/B,EAAS,OAAS,IAAK3M,GAAA,YAAAA,EAAc,aAAc2M,EAAS,cAAiB7R,GAAa6R,EAAS,UACxHgC,GAAa3O,GAAA,YAAAA,EAAc,aAAc2M,EAAS,WAAaiC,EAAgB,KAErF,OAAIF,SASD,MACC,WAAC5Q,OAAA,OAAI,UAAU,4CACb,UAAArB,EAAA,IAACoS,GAAe,UAAAlC,EAAoB,KAAA9P,EAAY,WAAY,GAAO,EACnEiB,OAAC,MAAI,WAAU,0BACX,UAAA6Q,EAEIlS,MAAA0B,EAAA,mBAAA6B,GAAA,MAAAA,EAAc,WACdlC,EAAA,KAAC,OACG,aAAAiJ,EAAA/G,GAAA,YAAAA,EAAc,UAAd,YAAA+G,EAAuB,kBACvBtK,MAACO,GAAK,QAAQ,YAAY,KAAK,KAAK,UAAU,OAC5C,SAAAP,MAACqS,IAAkB,iBAAiBC,EAAA/O,EAAa,UAAb,YAAA+O,EAAsB,gBAAiB,KAAK,IAAK,GACvF,SAED/R,EAAK,SAAQ,YAAY,KAAK,KAAK,UAAU,OAAO,+BACtCgS,EAAc,MAAM,OAAOhP,EAAa,UAAU,EAAG,GACpE,EACF,GAGGvD,MAAA0B,EAAA,mBAAAwO,EAAS,aACR7O,EAAA,KAACd,EAAK,SAAQ,YAAY,KAAK,KAAK,UAAU,OAAO,oCACjCgS,EAAc,MAAM,OAAOrC,EAAS,YAAY,EAAG,CACvE,WAEC3P,EAAK,SAAQ,YAAY,KAAK,KAAK,UAAU,OAAO,4BACzCgS,EAAc,MAAM,OAAOrC,EAAS,SAAS,EAAG,EAC5D,EAEJ,GAEJ,EAGElQ,EAAA,IAAA0B,EAAA,mBAAAL,EAAA,KAACd,EAAK,IAAG,MAAM,QAAQ,YAAY,KAAK,KAAK,4BACjCgS,EAAc,MAAM,OAAOrC,EAAS,SAAS,EAAG,GAC5D,CACF,GAGAA,EAAS,OAAS,GAClBlQ,MAACwS,IAAM,OAAQtC,EAAS,OAAQ,KAAM,CAAG,IAE7C,GACF,EACC,CAAC8B,GAAkB,CAACE,GAAclS,EAAA,IAACyS,GAAe,KAAArS,EAAY,CACjE,IArDG4R,EACM,GAEAhS,MAACyS,GAAe,KAAArS,CAAY,EAoDzC,CCpEA,SAAwBsS,GAA4B,CAClD,KAAAtS,EACA,UAAAL,EAAY,GACZ,QAAAa,EACA,SAAAsP,CACF,EAKG,CAEC,OAAA7O,EAAA,KAAC,OACC,UAAW,GAAGtB,CAAS,qEAEvB,UAACC,MAAA,OAAI,UAAU,YACb,SAAAA,EAAA,IAACmB,EAAA,CACC,KAAAf,EACA,QAAAQ,EACA,KAAK,KACL,QAAQ,YACR,SAAU,CACR,QAAS,GACT,WAAY,GACZ,QAAS,EACX,IAEJ,EACAS,OAAC,MAAI,WAAU,YACb,UAACA,OAAA,KAAE,UAAU,uCACX,UAAArB,EAAA,IAAC0Q,GAAA,CACC,KAAAtQ,EACA,UAAU,4DACZ,EACCJ,MAAAqG,GAAA,CAAoB,OAAQjG,EAAK,EAAI,IACxC,SACC,MACC,WAAAJ,MAAC2Q,EAAS,MAAM,UAAUvQ,EAAK,IAAI,GAAI,QAAQ,QAAQ,KAAK,KACzD,SAAAQ,EAAUA,EAAQ,MAAQR,EAAK,MAClC,EACAJ,EAAA,IAAC4Q,GAAA,CACC,cAAexQ,EAAK,cACpB,KAAM,GACN,KAAK,KACL,QAAO,GACP,OAAM,GACR,GACF,EACAiB,OAAC,MAAI,WAAU,2DACb,UAACrB,MAAA+R,EAAA,CAAmB,SAAA7B,EAAoB,KAAA9P,CAAY,GACpDJ,MAAC,MAAI,WAAU,YACb,SAAAA,EAAA,IAACmG,GAAA,CACC,OAAQ/F,EAAK,GACb,KAAK,KACL,eAAgB8P,EAAS,OACzB,UAAU,eAEd,GACF,GACF,IAGN,CCxEA,SAAwByC,GAAwB,CAC9C,UAAA5S,EAAY,GACZ,KAAAK,EACA,SAAA8P,CACF,EAIG,CAGC,OAAAlQ,EAAA,IAAC0S,GAAA,CACC,SAAAxC,EACA,KAAA9P,EACA,UAAAL,EACA,QAASmQ,EAAS,SAGxB,CClBA,SAAwB0C,EAA+B,CACrD,WAAAzS,CACF,EAEG,CAEC,OAAAH,EAAA,IAAC6S,GAAA,CACC,KAAM1S,EAAW,KACjB,SAAUA,EAAW,KAAK,cAC1B,UAAU,OAGhB,CCLA,MAAM2S,GAAe,CACnB,KAAM,CAEJ,CAACX,EAAgB,cAAc,CAAC,EAAGS,EACnC,CAACT,EAAgB,mBAAmB,CAAC,EAAGL,GACxC,CAACK,EAAgB,IAAI,EAAGS,EACxB,CAACT,EAAgB,MAAM,EAAGS,EAC1B,CAACT,EAAgB,gBAAgB,CAAC,EAAGS,EACrC,CAACT,EAAgB,OAAO,EAAGS,CAC7B,EACA,MAAOhE,GACP,MAAOI,CACT,EAEA,SAAwB+D,GAAoBvS,EAAiC,CACvE,GAAAA,EAAS,OAAS,OAAQ,CAC5B,MAAMkK,EAAalK,EAAS,WAC5B,OACEsS,GAAatS,EAAS,IAAI,EAAEkK,EAAW,SAAS,GAChDkI,CAEJ,CACO,OAAAE,GAAatS,EAAS,IAAI,CACnC,CCxBA,SAAwBwS,GAAkB,CACxC,WAAA7S,EACA,SAAAK,CACF,EAGG,CACK,MAAE,KAAAnF,CAAK,EAAImF,EAAS,QACpB,CAAE,cAAA0C,CAAc,EAAI/C,EAAW,KACrC,OAAI9E,EAAK,OAEL2E,EAAA,IAACiT,GAAA,CACC,KAAK,KACL,UAAU,qDACV,KAAM9S,EAAW,KACjB,KAAMA,EAAW,SAAW,EAE5B,SAAAkB,EAAA,KAAC,MAAI,WAAU,0BACb,UAACrB,MAAAyS,EAAA,CAAe,KAAMtS,EAAW,IAAM,GACrC+C,GACClD,MAAA+R,EAAA,CAAmB,SAAU7O,EAAe,KAAM/C,EAAW,KAAM,eAAgB,GAAM,UAAW,EAAO,IAEhH,IAKJH,EAAA,IAACkT,GAAA,CACC,KAAK,KACL,KAAM/S,EAAW,KACjB,UAAU,qDAEV,SAAAkB,EAAA,KAAC,MAAI,WAAU,0BACb,UAACrB,MAAAyS,EAAA,CAAe,KAAMtS,EAAW,IAAM,GACrC+C,GACClD,MAAA+R,EAAA,CAAmB,SAAU7O,EAAe,KAAM/C,EAAW,KAAM,eAAgB,GAAM,UAAW,EAAO,IAEhH,GAGN,CC9CA,SAAwBgT,EAAmB,CACzC,WAAAhT,EACA,SAAAK,CACF,EAGG,CACD,aACG,MAAI,WAAU,gBACb,SAACR,MAAAmB,EAAA,CAAU,KAAK,KAAK,KAAMhB,EAAW,KAAM,SAAU,CAAE,WAAYK,EAAS,YAAa,WAAY,IAAQ,CAChH,EAEJ,CCVA,MAAMsS,GAAe,CACnB,KAAME,GACN,MAAOG,EACP,MAAOnE,CACT,EAEA,SAAwB+D,GAAoBvS,EAAiC,CACpE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCVA,SAAwB4S,GAAc,CACpC,WAAAjT,CACF,EAEG,CAEC,OAAAH,MAAC,MAAI,WAAU,iEACb,SAAAA,MAACkT,GAAQ,MAAK,KAAK,KAAM/S,EAAW,KAAM,CAC5C,EAEJ,CCRA,MAAM2S,GAAe,CACnB,KAAMM,GACN,MAAOD,EACP,MAAOnE,CACT,EAEA,SAAwB+D,GAAoBvS,EAAiC,CACpE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCTA,SAAwB6S,GAAkB,CACxC,WAAAlT,EACA,SAAAK,CACF,EAGG,CACK,MAAE,KAAA8C,CAAS,EAAAnD,EACX,CAAE,aAAAoD,EAAc,SAAA2M,CAAc,EAAA5M,EAEpC,OAAKC,EAKHvD,EAAA,IAACiT,GAAA,CACC,KAAK,KACL,UAAU,qDACV,KAAM9S,EAAW,KACjB,KAAMA,EAAW,SAAW,EAC5B,QAASoD,GAAA,YAAAA,EAAc,QACvB,eAAgB/C,EAAS,WAAW,YAEpC,eAACuR,EAAmB,UAAA7B,EAAoB,aAAA3M,EAA4B,KAAMpD,EAAW,KAAM,IAZpFH,EAAA,IAAA0B,WAAA,GAeb,CC3BA,SAAwB4R,GAAoB,CAC1C,WAAAnT,EACA,SAAAK,CACF,EAGG,CACK,MAAE,KAAA8C,CAAS,EAAAnD,EACX,CAAE,aAAAoD,CAAkB,EAAAD,EAE1B,OAAKC,EAKHvD,MAAC,MAAI,WAAU,gBACb,SAAAA,EAAA,IAACmB,EAAA,CACC,KAAK,KACL,KAAMhB,EAAW,KACjB,QAASoD,GAAA,YAAAA,EAAc,QACvB,SAAU,CACR,WAAY/C,EAAS,WACvB,EAEJ,IAbSR,EAAA,IAAA0B,WAAA,GAeb,CCxBA,MAAMoR,GAAe,CACnB,KAAMO,GACN,MAAOC,GACP,MAAOtE,CACT,EAEA,SAAwBuE,GAAiB/S,EAAiC,CACjE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCRA,MAAMsS,GAAe,CACnB,KAAMM,GACN,MAAOD,EACP,MAAOnE,CACT,EAEA,SAAwBwE,GAAmBhT,EAAiC,CACnE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCSA,SAAwBiT,GAAmB,CACzC,KAAArT,EACA,QAAAQ,EACA,KAAAC,EAAO,KACP,UAAAd,EAAY,GACZ,eAAA2T,EACA,SAAAlT,EAAW,CACT,cAAe,GACf,kBAAmB,EACrB,CACF,EAAU,CACR,MAAMmT,EAAY9S,IAAS,KAAO,KAAOA,IAAS,KAAO,KAAO,KAEhE,OACGQ,EAAA,YAAI,UAAW,GAAGtB,CAAS,kCAC1B,UAACC,MAAA,OAAI,UAAU,YACb,SAAAA,EAAA,IAACmB,EAAA,CACC,KAAAf,EACA,QAAAQ,EACA,KAAM+S,EACN,QAAQ,YACR,SAAU,CACR,QAAS,GACT,WAAY,GACZ,QAAS,EACX,IAEJ,EACAtS,OAAC,MAAI,WAAU,YACb,UAACA,OAAA,KAAE,UAAU,uCACX,UAAArB,EAAA,IAAC0Q,GAAA,CACC,KAAAtQ,EACA,UAAU,4DACZ,EACCJ,MAAAqG,GAAA,CAAoB,OAAQjG,EAAK,EAAI,IACxC,SACC,MACC,WAAAJ,EAAA,IAAC2Q,EAAA,CACC,KAAM,UAAUvQ,EAAK,IAAI,GACzB,QAAQ,QACR,KAAK,KACL,UAAW,GAEV,SAAAQ,EAAUA,EAAQ,MAAQR,EAAK,MAClC,EACAJ,EAAA,IAAC4Q,GAAA,CACC,cAAexQ,EAAK,cACpB,KAAMI,EAAS,mBAAqB,GACpC,KAAK,KACL,QAAO,GACP,OAAM,GACR,GACF,EACAa,OAAC,MAAI,WAAU,gEACb,UAAArB,MAACyS,GAAe,KAAArS,EAAY,EAC5BJ,MAAC,MAAI,WAAU,YACb,SAAAA,EAAA,IAAC4T,GAAA,CACC,OAAQxT,EAAK,GACb,eAAAsT,EACA,KAAK,KACL,OAAO,KACP,OAAO,KACP,UAAU,eAEd,GACF,GACF,CACF,GAEJ,CCrFA,SAAwBG,GAAoB,CAC1C,WAAA1T,CACF,EAEG,CACK,MAAE,KAAAmD,CAAS,EAAAnD,EAGf,OAAAkB,EAAA,KAAC,OACC,UAAW,0FAEX,UAACrB,MAAA8F,GAAA,CAAe,WAAYxC,EAAK,UAAY,GAC7CtD,EAAA,IAACyT,GAAA,CACC,KAAMtT,EAAW,KACjB,KAAK,KACL,SAAU,CACR,kBAAmB,EACrB,EACF,IAGN,CCtBA,MAAM2S,GAAe,CACnB,KAAMe,GACN,MAAOV,EACP,MAAOnE,CACT,EAEA,SAAwB8E,GAAmBtT,EAAiC,CACnE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCTA,SAAwBuT,GAAoB,CAC1C,WAAA5T,CACF,EAEG,CACK,MAAE,WAAAsG,CAAW,EAAItG,EAAW,KAC5BU,EACJ4F,EAAW,UACX,KAAK,MAAMA,EAAW,QAAQ,IAAMA,EAAW,SAC3C,KACA,KAEJ,OAAApF,EAAA,KAAC,OACC,UAAW,sEAEX,UAAArB,MAACO,GAAK,KAAK,KAAK,UAAU,2BACvB,SAAAkG,EAAW,SACRpF,EAAA,KAAAK,EAAA,wBAAE+E,EAAW,UAAS,EAExBzG,EAAA,IAAA0B,WAAA,CAAG,SAAW+E,EAAA,OAAQ,GAE1B,EACAzG,EAAA,IAACyT,GAAA,CACC,KAAMtT,EAAW,KACjB,KAAAU,EACA,SAAU,CACR,kBAAmB,EACrB,EACF,IAGN,CC9BA,MAAMiS,GAAe,CACnB,KAAMiB,GACN,MAAOZ,EACP,MAAOnE,CACT,EAEA,SAAwB8E,GAAmBtT,EAAiC,CACnE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCVA,SAAwB4S,GAAc,CACpC,WAAAjT,CACF,EAEG,CACK,MAAE,KAAAmD,CAAS,EAAAnD,EAEjB,OACGH,EAAA,WAAI,UAAU,iEACb,eAACkT,GAAQ,MAAK,KAAK,KAAM/S,EAAW,KAAM,QAASmD,EAAK,QAAS,CACnE,EAEJ,CCZA,SAAwB0Q,GAA0B,CAChD,WAAA7T,CACF,EAEG,CACK,MAAE,KAAAmD,CAAS,EAAAnD,EAEjB,OACGH,EAAA,WAAI,UAAU,gBACb,eAACmB,EAAU,MAAK,KAAK,KAAMhB,EAAW,KAAM,QAASmD,EAAK,QAAS,CACrE,EAEJ,CCVA,MAAMwP,GAAe,CACnB,KAAMmB,GACN,MAAOD,GACP,MAAOhF,CACT,EAEA,SAAwBkF,GAAsB1T,EAAiC,CACtE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCRA,MAAMsS,GAAe,CACnB,KAAMM,GACN,MAAOD,EACP,MAAOnE,CACT,EAEA,SAAwBmF,GAAsB3T,EAAiC,CACtE,OAAAsS,GAAatS,EAAS,IAAI,CACnC,CCIA,MAAMtE,GAAY,CAChB,KAAMkY,GACN,QAASC,GACT,IAAKC,GACL,OAAQC,GACR,KAAMC,GACN,OAAQC,GACR,OAAQC,GACR,UAAWC,GACX,UAAWC,EACb,EAGA,SAAwBC,GACtBrU,EAC4B,CACtB,MAAAsU,EAAS5Y,GAAUsE,EAAS,IAAI,EACtC,OAAOsU,EAAOtU,CAAQ,CACxB,CC7BA,SAAwBuU,GAA2B,CACjD,QAAAnH,EAAU,GACV,QAAAR,EAAU,IAAM,CAAC,CACnB,EAGG,CACD,cACGxK,EAAO,SAAQ,OAAO,KAAK,KAAK,QAAAwK,EAC9B,UAAUQ,EAAA5N,EAAA,IAAC6F,IAAe,KAAK,KAAK,EAAM7F,MAAA2B,EAAA,CAAK,KAAMqT,EAAY,GAClEhV,MAAC,QAAK,SAAG,OACX,GAEJ,CCfA,MAAMiV,GAA2BlH,EAAA,KAC/B,IAAAC,GAAA,IAAM,OAAO,wCAA4B,yXAC3C,EAEA,SAAwBkH,GAAa,CACnC,SAAA1U,CACF,EAEG,CACD,KAAM,CAAC0N,EAASC,CAAU,EAAIxJ,WAAS,EAAK,EAGxC,OAAAnE,EAAS,cAAc,SAAW,EAC7B,qBAKJ,SACC0N,EAAAlO,EAAA,IAACoO,YAAS,SAAUpO,EAAA,IAAC+U,IAA2B,QAAO,GAAC,EACtD,SAAC/U,MAAAiV,GAAA,CAAyB,SAAAzU,CAAoB,EAChD,SAECuU,GAA2B,SAAS5G,CAAY,EAErD,EAEJ,CCvBA,SAAwBgH,GAAa,CACnC,SAAA3U,CACF,EAEG,CACK,MAAE,aAAA2H,CAAiB,EAAA3H,EAEzB,OACGR,EAAA,aACC,SAACA,MAAA,MACE,WAAa,IAAK+H,GACjB/H,EAAA,IAAC,MAAG,UAAU,YACZ,SAACqB,OAAA,OAAI,UAAU,0CACb,UAACA,OAAA,OAAI,UAAU,oBACb,UAACA,OAAA,QAAK,UAAU,mCACb,UAAA0G,EAAO,KACN/H,EAAA,IAACyN,GAAA,CACC,MAAO1F,EAAO,KAAK,MACnB,KAAK,KACL,UAAU,OACV,IAAKA,EAAO,KAAK,WAGnB,GAEDA,EAAO,OACV,EAEA/H,EAAA,IAAC0L,GAAA,CACC,UAAU,kEACV,KAAMT,EAAY,CAChB,SAAAzK,EACA,iBAAkB,CAAE,aAAcuH,EAAO,GAAI,EAC9C,EAED,eAACpG,EAAK,MAAMyT,GAAO,KAAK,KAAK,UAAU,eAAe,EACxD,GACF,EAECrN,IAAWI,EAAaA,EAAa,OAAS,CAAC,EAC9CnI,EAAA,IAACkV,GAAa,UAAA1U,CAAoB,GAElC,GAEJ,EAjC6B,EAAAuH,EAAO,GAkCtC,CACD,EACH,CACF,EAEJ,CC7CA,SAAwBsN,GAAe,CACrC,YAAAC,EACA,SAAA9U,EACA,aAAA+U,CACF,EAAiC,CAC/B,aACG,MAAI,WAAU,yBACb,SAAClU,EAAA,cAAM,UAAU,sEACf,UAAArB,MAACmV,IAAa,SAAA3U,EAAoB,QAEjC,QAAM,WAAU,YACd,SAAY8U,EAAA,IAAKnV,GAChBH,EAAA,IAACuV,EAAA,CACC,SAAA/U,EAEA,WAAAL,CAAA,EADKA,EAAW,QAGnB,GACH,EACF,EACF,EAEJ,CCvBA,SAAwBkV,GAAe,CACrC,YAAAC,EACA,SAAA9U,EACA,aAAA+U,CACF,EAAiC,CAC/B,aACG,MAAI,WAAU,OACZ,SAAYD,EAAA,IAAKnV,GAChBH,EAAA,IAACuV,EAAA,CAEC,WAAApV,EACA,SAAAK,CAAA,EAFK,GAAGL,EAAW,KAAK,EAAE,IAAIA,EAAW,QAAQ,EAIpD,EACH,EAEJ,CChBA,SAAwBqV,GAAgB,CACtC,YAAAF,EACA,SAAA9U,EACA,aAAA+U,CACF,EAAiC,CAC/B,aACG,MAAI,WAAU,4DACZ,SAAYD,EAAA,IAAKnV,GAChBH,EAAA,IAACuV,EAAA,CAEC,WAAApV,EACA,SAAAK,CAAA,EAFKL,EAAW,QAInB,EACH,EAEJ,CClBA,MAAMsV,GAAuB,CAC3B,KAAMC,GACN,MAAOC,GACP,MAAOC,EACT,EAMA,SAAwBC,GAAsB,CAC5C,SAAArV,CACF,EAAsB,CACpB,KAAM,CAAE,YAAA8U,CAAA,EAAgB3G,GAAA,EAAgC,MAClDmH,EAAiBL,GAAqBjV,EAAS,IAAI,EACnD+U,EAAeV,GAAiBrU,CAAQ,EAG5C,OAAAR,EAAA,IAAC8V,EAAA,CACC,YAAaR,EAAY,YACzB,SAAA9U,EACA,aAAA+U,CAAA,EAGN,CCtBA,SAAwBQ,GAAsB,CAC5C,SAAAvV,CACF,EAAsB,CACpB,KAAM,CAAE,YAAA8U,CAAA,EAAgB3G,GAAA,EAAgC,MAClD,CAAE,MAAAqH,EAAO,MAAAC,CAAU,EAAAzV,EAEnB,CAAE,WAAA0V,CAAe,EAAAZ,EACvB,OAAIA,EAAY,YAAY,SAAWU,GAASE,EAAaD,EAAQD,EAEjE3U,EAAA,KAAC,MAAI,WAAU,0CACZ,UAAA4U,EAAQD,GAAS,EAChB3U,EAAA,KAACsP,EAAA,CACC,KAAM1F,EAAY,CAChB,SAAAzK,EACA,UAAW,CAAE,MAAO,OAAOyV,EAAQD,CAAK,CAAE,EAC3C,EACD,UAAU,kCACV,KAAK,KAEL,UAAAhW,EAAA,IAAC2B,EAAK,MAAMwU,GAAa,KAAK,KAAK,EACnCnW,MAAC,QAAK,SAAQ,sBAGf,OAAK,IAEPiW,EAAQD,EAAQE,EACf7U,EAAA,KAACsP,EAAA,CACC,KAAM1F,EAAY,CAChB,SAAAzK,EACA,UAAW,CAAE,MAAO,OAAOyV,EAAQD,CAAK,CAAE,EAC3C,EACD,UAAU,kCAEV,UAAAhW,MAAC,QAAK,SAAI,SACVA,MAAC2B,EAAK,MAAMyU,EAAc,YAG3B,OAAK,GAEV,IAIG,EACT,CC/CA,SAAwBC,GAAiB,CACvC,SAAA7V,CACF,EAAsB,CACpB,OAEIa,EAAA,KAAAK,WAAA,WAAA1B,EAAA,IAACwO,GAAyB,IAC1BxO,MAAC6V,IAAsB,SAAArV,EAAoB,EAC3CR,MAAC+V,IAAsB,SAAAvV,EAAoB,CAC7C,GAEJ,CCjBO,MAAM8V,EAAe,UAEvB,MAAI,WAAU,MACb,SAACjV,EAAA,YAAI,UAAU,aACb,UAACrB,MAAAuW,EAAA,CAAgB,UAAU,kCAAmC,GAC9DlV,OAAC,MAAI,WAAU,iCACb,UAACA,OAAA,OAAI,UAAU,gDACb,UAACA,OAAA,OAAI,UAAU,sBACb,UAACrB,MAAAuW,EAAA,CAAgB,UAAU,2BAA4B,GACvDvW,MAACuW,EAAgB,WAAU,sBAAuB,IACpD,EACAvW,MAACuW,EAAgB,WAAU,sBAAuB,IACpD,EACAvW,MAACuW,EAAgB,WAAU,+BAAgC,IAC7D,EACF,EACF,GAIJ,SAAwBC,IAAyB,CAC/C,OAEInV,EAAA,KAAAK,WAAA,WAAA1B,EAAA,IAACsW,EAAa,UACbA,EAAa,UACbA,EAAa,GAChB,GAEJ,CC5BA,MAAMG,EAAgB,IACbzW,EAAA,IAACuW,EAAgB,WAAU,sCAAuC,GAG3E,SAAwBG,IAA0B,CAE9C,OAAArV,EAAA,KAAC,MAAI,WAAU,6CACb,UAAArB,EAAA,IAACyW,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,UACdA,EAAc,GACjB,GAEJ,CCjBA,MAAME,GAAY,CAChB,KAAMH,GACN,MAAOA,GACP,KAAMA,GACN,MAAOE,EACT,EAEA,SAAwBE,GAA2B,CACjD,KAAA1L,EACA,SAAApL,CACF,EAAsB,CACd,MAAA+W,EAAWF,GAAUzL,CAAI,EAC/B,aAAQkD,WAAS,UAAWpO,MAAA6W,EAAA,CAAS,GAAK,SAAA/W,CAAS,EACrD,CCbA,SAAwBgX,GAAmB,CACzC,SAAAtW,CACF,EAAsB,CACpB,cACGuW,GAAU,MAAMvW,EAAS,OAAS,QAAU,KAAO,KAClD,UAAAR,MAACsO,IAAoB,SAAA9N,EAAoB,EAEzCR,MAAC4W,IAA2B,KAAMpW,EAAS,KACzC,SAACR,MAAAqW,GAAA,CAAiB,SAAA7V,EAAoB,CACxC,EACF,GAEJ,CCdwB,SAAAwW,GAAY,CAAE,QAAA/b,GAA8B,CAC5D,MAAAuF,EAAWiK,GAAyBxP,CAAO,EAC1C,OAAA+E,MAAC8W,IAAmB,SAAAtW,CAAoB,EACjD","names":["libraryConditions","context","user","statusId","listConditions","list","tagConditions","tag","authorConditions","author","promptConditions","prompt","goalConditions","goal","seriesConditions","series","publisher","character","generator","publisherConditions","characterConditions","findConditions","shuffle","bookTitle","bookPopularity","bookLength","bookReleaseDate","bookRating","editionPopularity","yourRating","yourLastDateRead","yourPercentage","ownerRating","ownerLastReadDate","listDateAdded","listPosition","sortOptions","OwnerOptions","calculateOwnerOptions","options","option","LoggedInOptions","calculateCurrentUserOptions","currentUser","ProOptions","calculateProOptions","listOrderOptions","parentContext","useCurrentUser","ownerOptions","currentUserOptions","proOptions","a","dateAdded","libraryOrderOptions","orderOptions","order","slugConstants","tagPopularity","tagOrderOptions","b","authorOrderOptions","goalPosition","goalOrderOptions","promptPosition","promptOrderOptions","seriesPosition","seriesOrderOptions","publisherOrderOptions","characterOrderOptions","generateOrderOverride","searchParams","findCurrentOrder","override","newOrder","findOrderOptions","currentOrder","LetterbookCell","children","className","jsx","classNames","AudioLengthColumn","letterbook","book","length","secondsFormat","Text","settings","ContentWarningsColumn","TagListLinks","ResponsiveCoverLink","edition","size","variant","sizeLg","sizeSm","isLarge","useIsScreenSizeBiggerThanTailwindSize","CoverLink","DetailsColumn","jsxs","ContributionsListText","GenresColumn","MoodsColumn","LengthColumn","Fragment","Icon","faBook","pluralize","faHeadphones","PagesColumn","RatingColumn","StarIcon","ReadersCountColumn","LocaleNumber","ReleaseDateColumn","ReleaseYearColumn","UsersCountColumn","DataCount","EditableOwnerDatesRead","insertDateRead","useUserBookService","EditableDatesRead","Button","OwnerDatesReadColumn","currentUserId","useCurrentUserId","isOwner","OwnerDetailsColumn","ownerUserBook","OwnerRatingColumn","rating","UserBookReadDetailsContent","data","userBookRead","UserBookReadDetailsColumn","GoalPosition","SvgUp","props","React.createElement","PromptBookAnonymous","promptBook","dispatch","useDispatch","showLogin","useCallback","uiActions","faUp","PromptBookCurrentUser","answersCount","initialPromptAnswerId","usePromptAnswer","answerId","setAnswerId","useState","sendUpvote","insertLoading","useMutation","createPromptAnswer","sendRemoveVote","deleteLoading","deletePromptAnswer","currentAnswersCount","setCurrentAnswersCount","removeVote","result","vote","promptAnswer","toggleVote","e","router","faUpSolid","LoadingSpinner","PromptBookVote","useIsLoggedIn","PromptVote","PromptPosition","BookButtonColumn","BookButton","MatchColumn","BookMatchPercentage","CurrentUserRating","ListPosition","BookSeriesPosition","bookSeries","SeriesPosition","SeriesDetails","LetterBookColumns","AudioLength","ContentWarnings","Details","Genres","Moods","Length","Pages","Rating","ReadersCount","ReleaseDate","ReleaseYear","UsersCount","OwnerDatesRead","OwnerDetails","OwnerRating","UserBookReadDetails","Match","appendUserToColumn","column","appendUserToColumns","columns","calculateUnusedColumns","tableColumns","possibleColumns","tableColumnKeys","bookColumns","ownerColumns","userNotOwnerColumns","userColumns","proColumns","calculatePossibleColumns","owner","LibraryTableColumns","overrides","statusName","matchingColumns","listColumns","ranked","ListTableColumns","TagTableColumns","AuthorTableColumns","goalColumns","GoalTableColumns","promptColumns","seriesColumns","seriesTableColumns","PublisherTableColumns","CharacterTableColumns","listTableColumns","libraryTableColumns","tagTableColumns","promptTableColumns","goalTableColumns","authorTableColumns","publisherTableColumns","characterTableColumns","generateColumnsOverride","_a","findTableColumns","lookup","parseSettingsFromContext","conditions","unusedColumns","SvgTable","SvgShelves","columnOverrides","settingOverrides","key","generateUrl","view","urlOverrides","newParams","params","ViewLink","title","icon","active","Link","ViewLinks","tableIcon","cardIcon","shelfIcon","SvgArrowDownAZ","SvgArrowDownZA","SvgArrowDown19","SvgArrowDown91","SvgArrowDownTriangleSquare","SvgArrowDownSquareTriangle","sortLookup","arrowAZ","arrowZA","arrow19","arrow91","arrowSymbolUp","arrowSymbolDown","findIcon","sortType","reverse","oppositeDirection","direction","preventAccess","SortListButton","orderOption","onClick","pro","canAccess","Menu","checkIcon","Avatar","Badge","InactiveSortBooksButton","loading","faChevronDown","ActiveSortBooksButton","lazy","__vitePreload","SortDropdown","clicked","setClicked","Suspense","InctiveSortBooksButton","LetterbooksControls","SortBooksButton","LetterbooksFilterWarning","filteredBooksCount","totalBookCount","usePage","LetterbookUserBookShelfRow","ColumnComponents","LetterbookColumn","ColumnComponent","LetterbookTableRow","TrackProgress","trackRead","EditEditionModal","module","EditEditionButton","open","setOpen","onClose","EditableCurrentProgress","onChange","audioReadingFormat","EditionSelector","EditableAudioProgress","textReadingFormat","EditablePageProgress","CurrentlyReadingProgress","onProgressChange","userBook","debouncedChange","debounce","duration","hasDuration","ProgressSlider","CurrentlyReadingBookDetails","target","BookSeriesTag","TextLink","ContributionsList","CircleBookProgress","progress","circumference","progressRadius","starsRef","useRef","checkmark","ReactAnimatedNumber","CurrentlyReadingCardContent","CurrentlyReadingCard","initialUserBook","initialUserBookRead","updateProgress","setUserBookReadId","useUserBookReadService","newUserBookRead","toast","LetterbookCurrentlyReadingRow","UserBookHighlights","hideHighlights","showUserHighlights","isFinished","slugIdConstants","UserBookAvatar","ReadingFormatIcon","_b","LocalizedDate","Stars","BookHighlights","UserBookByStatusCardContent","UserBookByStatusWatcher","LetterbookUserBookByStatusCard","UserBookByStatusCard","componentMap","LibraryRowComponent","LetterbookListRow","BookRowRanked","BookRow","LetterbookShelfRow","LetterbookRow","LetterbookGoalRow","LetterbookGoalShelf","GoalRowComponent","AuthorRowComponent","LetterbooksBookRow","referrerUserId","coverSize","ResizeableBookButton","LetterbookPromptRow","PromptRowComponent","LetterbookSeriesRow","LetterbookEditionShelfRow","LetterbookEditionRow","PublisherRowComponent","CharacterRowComponent","listRowComponents","libraryRowComponents","tagRowComponents","promptRowComponents","goalRowComponents","authorRowComponents","seriesRowComponents","publisherRowComponents","characterRowComponents","findRowComponent","rowMap","InactiveAddNewColumnButton","circlePlus","ActiveAddNewColumnButton","AddNewColumn","TableHeaders","trash","CardCollection","letterbooks","RowComponent","ShelfCollection","CollectionComponents","LetterbookCardCollection","LetterbookTableCollection","LetterbookShelfCollection","LetterbooksCollection","CollectionView","LetterbooksPagination","limit","start","totalBooks","chevronLeft","chevronRight","LetterbooksBooks","CardSkeleton","LoadingSkeleton","CardCollectionSkeleton","ShelfSkeleton","ShelfCollectionSkeleton","Skeletons","LetterbooksLoadingSkeleton","Skeleton","LetterbooksWrapper","Container","Letterbooks"],"ignoreList":[],"sources":["../../../app/javascript/features/Letterbooks/utils/conditions/contexts/libraryConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/listConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/tagConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/authorCondition.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/promptCondition.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/goalCondition.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/seriesConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/publisherConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/contexts/characterConditions.ts","../../../app/javascript/features/Letterbooks/utils/conditions/findConditions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/orders.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/listOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/libraryOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/tagOrderOptions.tsx","../../../app/javascript/features/Letterbooks/utils/order/contexts/authorOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/goalOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/promptOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/seriesOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/publisherOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/contexts/characterOrderOptions.ts","../../../app/javascript/features/Letterbooks/utils/order/findCurrentOrder.ts","../../../app/javascript/features/Letterbooks/utils/order/findOrderOptions.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/LetterbookCell.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/AudioLength.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/ContentWarnings.tsx","../../../app/javascript/components/Cover/ResponsiveCoverLink.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Details.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Genres.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Moods.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Length.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Pages.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/Rating.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/ReadersCount.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/ReleaseDate.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/ReleaseYear.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/UsersCount.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/data/DataCount.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/owner/OwnerDatesRead.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/OwnerDetails.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/owner/OwnerRating.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/UserBookReadDetails/UserBookReadDetailsContent.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/book/UserBookReadDetails/UserBookReadDetails.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/goal/position.tsx","../../../app/javascript/icons/regular/up.svg","../../../app/javascript/components/prompts/PromptBookVote/PromptBookAnonymous.tsx","../../../app/javascript/icons/solid/up.svg","../../../app/javascript/components/prompts/PromptBookVote/PromptBookCurrentUser.tsx","../../../app/javascript/components/prompts/PromptBookVote/index.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/prompt/vote.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/prompt/position.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/user/BookButton.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/user/Match.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/user/CurrentUserRating.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/list/position.tsx","../../../app/javascript/components/series/BookSeriesPosition.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/series/position.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/series/details.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings.ts","../../../app/javascript/features/Letterbooks/utils/views/table/utils.ts","../../../app/javascript/features/Letterbooks/utils/views/table/libraryTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/listTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/tagTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/authorTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/goalTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/promptTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/seriesTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/publisherTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/table/characterTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/views/findTableColumns.ts","../../../app/javascript/features/Letterbooks/utils/parseSettingsFromContext.ts","../../../app/javascript/icons/duotone/table.svg","../../../app/javascript/icons/duotone/shelves.svg","../../../app/javascript/features/Letterbooks/utils/generateUrl.ts","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/ViewLinks/ViewLink.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/ViewLinks/ViewLinks.tsx","../../../app/javascript/icons/regular/arrow-down-a-z.svg","../../../app/javascript/icons/regular/arrow-down-z-a.svg","../../../app/javascript/icons/regular/arrow-down-1-9.svg","../../../app/javascript/icons/regular/arrow-down-9-1.svg","../../../app/javascript/icons/regular/arrow-down-triangle-square.svg","../../../app/javascript/icons/regular/arrow-down-square-triangle.svg","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/SortBooksButton/SortListButton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/SortBooksButton/InactiveSortBooksButton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/SortBooksButton/SortBooksButton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksControls/LetterbooksControls.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksFilterWarning/LetterbooksFilterWarning.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookUserBookShelfRow/LetterbookUserBookShelfRow.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/columns/LetterbookColumn.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow.tsx","../../../app/javascript/components/progress/TrackProgress/TrackProgress.tsx","../../../app/javascript/components/progress/EditableCurrentProgress/EditEditionButton/EditEditionButton.tsx","../../../app/javascript/components/progress/EditableCurrentProgress/EditableCurrentProgress.tsx","../../../app/javascript/components/Bookcards/CurrentlyReadingCard/CurrentlyReadingCardContent/CurrentlyReadingProgress/CurrentlyReadingProgress.tsx","../../../app/javascript/components/Bookcards/CurrentlyReadingCard/CurrentlyReadingCardContent/CurrentlyReadingBookDetails/CurrentlyReadingBookDetails.tsx","../../../app/javascript/components/progress/CircleProgress/CircleProgress.tsx","../../../app/javascript/components/Bookcards/CurrentlyReadingCard/CurrentlyReadingCardContent/CurrentlyReadingCardContent.tsx","../../../app/javascript/components/Bookcards/CurrentlyReadingCard/CurrentlyReadingCard.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookCurrentlyReadingRow/LetterbookCurrentlyReadingRow.tsx","../../../app/javascript/components/Bookcards/UserBookByStatusCard/UserBookHighlights.tsx","../../../app/javascript/components/Bookcards/UserBookByStatusCard/UserBookByStatusCardContent.tsx","../../../app/javascript/components/Bookcards/UserBookByStatusCard/UserBookByStatusCard.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookUserBookByStatusCard/LetterbookUserBookByStatusCard.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/libraryRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookListRow/LetterbookListRow.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/listRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookRow/LetterbookRow.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/tagRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookGoalRow/LetterbookGoalRow.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookGoalShelf/LetterbookGoalShelf.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/goalRowComponents.ts","../../../app/javascript/features/Letterbooks/utils/views/contexts/authorRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/shared/LetterbooksBookRow.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookPromptRow/LetterbookPromptRow.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/promptRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookSeriesRow/LetterbookSeriesRow.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/seriesRowComponents.ts","../../../app/javascript/features/Letterbooks/components/cards/LetterbookEditionRow/LetterbookEditionRow.tsx","../../../app/javascript/features/Letterbooks/components/cards/LetterbookEditionShelfRow/LetterbookEditionShelfRow.tsx","../../../app/javascript/features/Letterbooks/utils/views/contexts/publisherRowComponents.ts","../../../app/javascript/features/Letterbooks/utils/views/contexts/characterRowComponents.ts","../../../app/javascript/features/Letterbooks/utils/views/findRowComponent.ts","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/TableCollection/AddNewColumn/InactiveAddNewColumnButton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/TableCollection/AddNewColumn/AddNewColumn.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/TableCollection/TableHeaders.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/TableCollection/TableCollection.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/CardCollection/CardCollection.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/ShelfCollection/ShelfCollection.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/LetterbooksCollection.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksPagination/LetterbooksPagination.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksBooks.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/CardCollection/CardCollectionSkeleton/CardCollectionSkeleton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksBooks/LetterbooksCollection/ShelfCollection/ShelfCollectionSkeleton/ShelfCollectionSkeleton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksLoadingSkeleton/LetterbooksLoadingSkeleton.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/LetterbooksWrapper/LetterbooksWrapper.tsx","../../../app/javascript/features/Letterbooks/components/Letterbooks/Letterbooks.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterbooksLibraryConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentLibraryContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function libraryConditions(\n context: LetterbooksParentLibraryContextType\n): LetterbooksLibraryConditionType {\n const { user, statusId } = context;\n\n return {\n user_id: user.id,\n status_id: statusId,\n };\n}\n","import {\n LetterbooksListConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentListContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function listConditions(\n context: LetterbooksParentListContextType\n): LetterbooksListConditionType {\n const { list } = context;\n\n return {\n list_id: list.id,\n };\n}\n","import {\n LetterbooksTagConditionType,\n} from \"features/Letterbooks/types\";\nimport LetterbooksParentContextType, { LetterbooksParentTagContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function tagConditions(\n context: LetterbooksParentContextType\n): LetterbooksTagConditionType {\n const { tag } = context as LetterbooksParentTagContextType;\n\n return {\n tag_category_slug: tag.tagCategory.slug,\n tag_slug: tag.slug,\n };\n}\n","import {\n LetterbooksAuthorConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentAuthorContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function authorConditions(\n context: LetterbooksParentAuthorContextType\n): LetterbooksAuthorConditionType {\n const { author } = context;\n\n return {\n author_id: author.id,\n };\n}\n","import {\n LetterbooksPromptConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentPromptContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function promptConditions(\n context: LetterbooksParentPromptContextType\n): LetterbooksPromptConditionType {\n const { prompt } = context;\n\n return {\n prompt_id: prompt.id,\n };\n}\n","import {\n LetterbooksGoalConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentGoalContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function goalConditions(\n context: LetterbooksParentGoalContextType\n): LetterbooksGoalConditionType {\n const { goal } = context;\n\n return {\n goal_id: goal.id,\n referrer_id: goal.userId,\n };\n}\n","import {\n LetterbooksSeriesConditionType,\n} from \"features/Letterbooks/types\";\nimport LetterbooksParentContextType, { LetterbooksParentSeriesContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function seriesConditions(\n context: LetterbooksParentContextType\n): LetterbooksSeriesConditionType {\n const { series } = (context as unknown as LetterbooksParentSeriesContextType);\n\n return {\n series_id: series.id\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterbooksPublisherConditionType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksParentPublisherContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function libraryConditions(\n context: LetterbooksParentPublisherContextType\n): LetterbooksPublisherConditionType {\n const { publisher } = context;\n\n return {\n publisher_id: publisher.id,\n };\n}\n","import { LetterbooksCharacterConditionType } from \"features/Letterbooks/types\";\nimport { LetterbooksParentCharacterContextType } from \"types/LetterbooksParentContextType\";\n\nexport default function libraryConditions(\n context: LetterbooksParentCharacterContextType\n): LetterbooksCharacterConditionType {\n const { character } = context;\n\n return {\n character_id: character.id,\n };\n}\n","import LetterbooksParentContextType from \"types/LetterbooksParentContextType\";\nimport {\n LetterbooksConditionType,\n} from \"../../types\";\nimport {\n listConditions,\n libraryConditions,\n tagConditions,\n authorConditions,\n goalConditions,\n promptConditions,\n seriesConditions,\n publisherConditions,\n characterConditions\n} from \"./contexts\";\nimport LetterbookTypeType from \"types/LetterbookTypeType\";\nimport { LetterbooksSerializersLetterbooks } from \"types/serializers\";\n\ninterface GeneratorInterface {\n [key: string]: (context: LetterbooksParentContextType) => LetterbooksConditionType;\n}\n\nconst generator: GeneratorInterface &\n Record<\n LetterbookTypeType,\n (context: LetterbooksParentContextType) => LetterbooksConditionType\n > = {\n list: listConditions,\n library: libraryConditions,\n tag: tagConditions,\n author: authorConditions,\n goal: goalConditions,\n prompt: promptConditions,\n series: seriesConditions,\n publisher: publisherConditions,\n character: characterConditions,\n};\n\nexport function findConditions(\n context: LetterbooksSerializersLetterbooks\n): LetterbooksConditionType {\n return generator[context.type](context.context);\n}\n","import { LetterbookOrderOption } from \"features/Letterbooks/types\";\n\n// General\nexport const shuffle = {\n title: \"Shuffle\",\n fieldname: \"shuffle\",\n direction: \"asc\",\n type: \"symbol\",\n} as LetterbookOrderOption;\n\n// books\nexport const bookTitle = {\n title: \"Book Title\",\n fieldname: \"books_title\",\n direction: \"asc\",\n type: \"string\",\n} as LetterbookOrderOption;\n\nexport const bookPopularity = {\n title: \"Book Popularity\",\n fieldname: \"books_users_count\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const bookLength = {\n title: \"Book Length\",\n fieldname: \"books_pages\",\n direction: \"asc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const bookReleaseDate = {\n title: \"Book Release Date\",\n fieldname: \"books_release_date\",\n direction: \"asc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const bookRating = {\n title: \"Book Avg Rating\",\n fieldname: \"books_rating\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\n// editions\nexport const editionPopularity = {\n title: \"Edition Popularity\",\n fieldname: \"editions_users_count\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\n// user_books\nexport const yourRating = {\n title: \"Your Rating\",\n fieldname: \"user_books_rating\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const yourFirstDateRead = {\n title: \"Your First Date Read\",\n fieldname: \"user_books_first_read_at\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const yourLastDateRead = {\n title: \"Your Last Read Date\",\n fieldname: \"user_books_last_read_at\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const yourPercentage = {\n title: \"Match Percentage\",\n fieldname: \"match\",\n direction: \"desc\",\n type: \"number\",\n pro: true,\n} as LetterbookOrderOption;\n\n// Owner\nexport const ownerRating = {\n title: \"Owner Rating\",\n fieldname: \"owner_rating\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nexport const ownerLastReadDate = {\n title: \"Owner Last Read Date\",\n fieldname: \"owner_last_read_at\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n ownerLastReadDate,\n ownerRating,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport { LetterbooksSerializersLetterbooks, ListSerializersListByline, UserSerializersUserByline } from \"types/serializers\";\nimport { LetterbooksParentListContextType } from \"types/LetterbooksParentContextType\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\nconst listDateAdded: LetterbookOrderOption = {\n title: \"List Date Added\",\n fieldname: \"list_books_created_at\",\n direction: \"desc\",\n type: \"number\",\n};\nconst listPosition: LetterbookOrderOption = {\n title: \"List Position\",\n fieldname: \"list_books_position\",\n direction: \"asc\",\n type: \"number\",\n};\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst OwnerOptions = [\n listDateAdded,\n ownerRating,\n ownerLastReadDate,\n] as LetterbookOrderOption[];\nfunction calculateOwnerOptions(user: UserSerializersUserByline, list: ListSerializersListByline) {\n const options = OwnerOptions.map((option) => {\n return {\n ...option,\n ...{ user },\n };\n });\n\n if (list.ranked) {\n options.push({\n ...listPosition,\n ...{ user },\n });\n }\n\n return options;\n}\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function listOrderOptions(\n parentContext: LetterbooksSerializersLetterbooks\n): FindOrderOptionsType {\n const { context } = parentContext;\n const currentUser = useCurrentUser();\n const { list, user } = context as LetterbooksParentListContextType;\n\n const ownerOptions = calculateOwnerOptions(user, list);\n const currentUserOptions = calculateCurrentUserOptions(\n currentUser?.id === user.id ? null : currentUser\n );\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...ownerOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: list.ranked ? listPosition : listDateAdded,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport { slugConstants } from \"types/UserBookStatusType\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n ownerLastReadDate,\n ownerRating,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport { LetterbooksParentLibraryContextType } from \"types/LetterbooksParentContextType\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\n\nconst dateAdded: LetterbookOrderOption = {\n title: \"Owner Date Added\",\n fieldname: \"owner_date_added\",\n direction: \"desc\",\n type: \"number\",\n};\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\n\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\n\nconst OwnerOptions = [\n dateAdded,\n ownerRating,\n ownerLastReadDate,\n] as LetterbookOrderOption[];\n\nfunction calculateOwnerOptions(user: UserSerializersUserByline) {\n return OwnerOptions.map((option) => {\n return {\n ...option,\n ...{ user },\n };\n });\n}\n\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function libraryOrderOptions(\n parentContext: LetterbooksSerializersLetterbooks\n): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n const { user, statusId } = parentContext.context as LetterbooksParentLibraryContextType;\n\n const ownerOptions = calculateOwnerOptions(user);\n const currentUserOptions = calculateCurrentUserOptions(\n currentUser?.id === user.id ? null : currentUser\n );\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...ownerOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n let order = dateAdded;\n if (slugConstants[statusId] === \"want-to-read\") {\n order = {\n ...dateAdded,\n ...{ user },\n };\n }\n if (slugConstants[statusId] === \"read\") {\n order = {\n ...ownerLastReadDate,\n ...{ user },\n };\n }\n\n return {\n orderOptions,\n order,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { UserSerializersUserByline } from \"types/serializers\";\n\nexport const tagPopularity = {\n title: \"Tags Counts\",\n fieldname: \"taggings_count\",\n direction: \"desc\",\n type: \"number\",\n} as LetterbookOrderOption;\n\nconst sortOptions = [\n tagPopularity,\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline): LetterbookOrderOption[] {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function tagOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: tagPopularity,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport { UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function authorOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: bookPopularity,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { UserSerializersUserByline } from \"types/serializers\";\n\nconst goalPosition: LetterbookOrderOption = {\n title: \"Goal Position\",\n fieldname: \"goal_position\",\n direction: \"asc\",\n type: \"number\",\n};\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\n\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null): LetterbookOrderOption[] {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline): LetterbookOrderOption[] {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function goalOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...[goalPosition],\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: goalPosition,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport { UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\nconst promptPosition: LetterbookOrderOption = {\n title: \"Prompt Position\",\n fieldname: \"prompt_books_position\",\n direction: \"desc\",\n type: \"number\",\n};\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\n\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function promptOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...[promptPosition],\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: promptPosition,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport { UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\nconst seriesPosition: LetterbookOrderOption = {\n title: \"Series Position\",\n fieldname: \"series_book_position\",\n direction: \"asc\",\n type: \"number\",\n};\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\n\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline | null) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function seriesOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...[seriesPosition],\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: seriesPosition,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n editionPopularity,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { UserSerializersUserByline } from \"types/serializers\";\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n editionPopularity,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function publisherOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: editionPopularity,\n };\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n bookLength,\n bookPopularity,\n bookRating,\n bookReleaseDate,\n bookTitle,\n shuffle,\n yourLastDateRead,\n yourPercentage,\n yourRating,\n} from \"./orders\";\nimport { FindOrderOptionsType } from \"../findOrderOptions\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { UserSerializersUserByline } from \"types/serializers\";\n\nconst sortOptions = [\n bookTitle,\n bookPopularity,\n bookReleaseDate,\n bookLength,\n bookRating,\n shuffle,\n] as LetterbookOrderOption[];\n\nconst LoggedInOptions = [\n yourRating,\n yourLastDateRead,\n] as LetterbookOrderOption[];\nfunction calculateCurrentUserOptions(currentUser: UserSerializersUserByline | null) {\n if (!currentUser?.id) {\n return [];\n }\n\n return LoggedInOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser },\n };\n });\n}\n\n// Pro Options\nconst ProOptions = [yourPercentage] as LetterbookOrderOption[];\nfunction calculateProOptions(currentUser: UserSerializersUserByline) {\n return ProOptions.map((option) => {\n return {\n ...option,\n ...{ user: currentUser, pro: true },\n };\n });\n}\n\nexport default function characterOrderOptions(): FindOrderOptionsType {\n const currentUser = useCurrentUser();\n\n const currentUserOptions = calculateCurrentUserOptions(currentUser);\n const proOptions = calculateProOptions(currentUser);\n\n const orderOptions = [\n ...sortOptions,\n ...currentUserOptions,\n ...proOptions,\n ].sort((a, b) => a.title.localeCompare(b.title));\n\n return {\n orderOptions: orderOptions.sort((a, b) => a.title.localeCompare(b.title)),\n order: bookPopularity,\n };\n}\n","import {\n LetterbookOrderOption,\n LetterbookOrderQueryOption,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksSerializersLetterbooks } from \"types/serializers\";\n\n// Convert the query params to a sort object\nfunction generateOrderOverride(\n context: LetterbooksSerializersLetterbooks\n): LetterbookOrderQueryOption | null {\n const { searchParams } = context;\n\n if (searchParams.order) {\n return {\n fieldname: searchParams.order,\n direction: searchParams.direction ? searchParams.direction : \"asc\",\n };\n }\n\n return null;\n}\n\n// Finds the current sort order option from the existing ones\nexport default function findCurrentOrder(\n context: LetterbooksSerializersLetterbooks,\n sortOptions: LetterbookOrderOption[]\n) {\n const override = generateOrderOverride(context);\n\n if (override) {\n // Find this sort option from the list of options if available\n const newOrder = sortOptions.find(\n (option) => option.fieldname === override.fieldname\n );\n return {\n ...newOrder,\n ...{\n direction: override.direction ? override.direction : newOrder.direction,\n },\n };\n }\n\n return null;\n}\n","import {\n LetterbookOrderOption,\n} from \"features/Letterbooks/types\";\nimport {\n authorOrderOptions,\n goalOrderOptions,\n libraryOrderOptions,\n listOrderOptions,\n promptOrderOptions,\n tagOrderOptions,\n seriesOrderOptions,\n publisherOrderOptions,\n characterOrderOptions,\n} from \"./contexts\";\nimport findCurrentOrder from \"./findCurrentOrder\";\nimport LetterbookTypeType from \"types/LetterbookTypeType\";\nimport { LetterbooksSerializersLetterbooks } from \"types/serializers\";\n\nexport interface FindOrderOptionsType {\n orderOptions: LetterbookOrderOption[];\n order: LetterbookOrderOption;\n}\n\ninterface GeneratorInterface {\n [key: string]: (context: LetterbooksSerializersLetterbooks) => FindOrderOptionsType;\n}\n\nconst generator: GeneratorInterface &\n Record<\n LetterbookTypeType,\n (context: LetterbooksSerializersLetterbooks) => FindOrderOptionsType\n > = {\n list: listOrderOptions,\n library: libraryOrderOptions,\n tag: tagOrderOptions,\n goal: goalOrderOptions,\n prompt: promptOrderOptions,\n author: authorOrderOptions,\n series: seriesOrderOptions,\n publisher: publisherOrderOptions,\n character: characterOrderOptions,\n};\n\nexport default function findOrderOptions(\n context: LetterbooksSerializersLetterbooks\n): FindOrderOptionsType {\n const { orderOptions, order } = generator[context.type](context);\n const currentOrder = findCurrentOrder(context, orderOptions);\n\n return {\n orderOptions,\n order: currentOrder || order,\n };\n}\n","import classNames from \"lib/classNames\";\nimport { ReactElement } from \"react\";\n\nexport default function LetterbookCell({\n children,\n className,\n}: {\n children?: ReactElement;\n className?: string;\n}) {\n return (\n \n {children}\n \n );\n}\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport Text from \"hardcover-ui/components/Text\";\nimport { secondsFormat } from \"lib/bookUtils\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function AudioLengthColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n const length = book.audioSeconds ? secondsFormat(book.audioSeconds) : null;\n\n return (\n \n \n {length ? (\n {length}\n ) : (\n \n Unknown\n \n )}\n \n \n );\n}\n\nexport const settings = {\n key: \"AudioLength\",\n title: \"Audio Length\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport TagListLinks from \"components/tags/TagListLinks\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function ContentWarningsColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"ContentWarnings\",\n title: \"Content Warnings\",\n} as LetterlistTableColumnSettingType;\n","import { useIsScreenSizeBiggerThanTailwindSize } from \"hooks/useIsScreenSizeBiggerThanTailwindSize\";\nimport { CoverProps } from \"hardcover-ui/theme/components/cover\";\nimport CoverLink, { CoverLinkProps } from \"./CoverLink\";\n\ninterface ResponsiveCoverLinkProps extends CoverLinkProps {\n sizeSm: CoverProps[\"size\"];\n sizeLg: CoverProps[\"size\"];\n}\n\nexport default function ResponsiveCoverLink({\n book,\n edition,\n size,\n variant,\n settings,\n className = \"\",\n sizeLg,\n sizeSm,\n}: ResponsiveCoverLinkProps) {\n const isLarge = useIsScreenSizeBiggerThanTailwindSize(\"lg\");\n\n return (\n \n );\n}\n","import ContributionsListText from \"components/authors/ContributionsListText\";\nimport {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport ResponsiveCoverLink from \"components/Cover/ResponsiveCoverLink\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function DetailsColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n
\n \n
\n
\n {book.title}\n
\n
\n \n
\n
\n
\n
\n );\n}\n\nexport const settings = {\n key: \"Details\",\n title: \"Details\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport TagListLinks from \"components/tags/TagListLinks\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function GenresColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"Genres\",\n title: \"Genres\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport TagListLinks from \"components/tags/TagListLinks\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function MoodsColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"Moods\",\n title: \"Moods\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport Text from \"hardcover-ui/components/Text\";\nimport { secondsFormat } from \"lib/bookUtils\";\nimport faBook from \"icons/regular/book.svg\";\nimport faHeadphones from \"icons/regular/headphones.svg\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport pluralize from \"lib/pluralize\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function LengthColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n const length = book.audioSeconds ? secondsFormat(book.audioSeconds) : null;\n\n return (\n \n <>\n \n \n {book.pages ? (\n \n {book.pages.toLocaleString()} {pluralize(\"page\", book.pages)}\n \n ) : (\n ? pages\n )}\n \n\n \n \n {length ? (\n {length}\n ) : (\n ? duration\n )}\n \n \n \n );\n}\n\nexport const settings = {\n key: \"Length\",\n title: \"Length\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport pluralize from \"lib/pluralize\";\nimport Text from \"hardcover-ui/components/Text\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function PagesColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n \n {book.pages ? (\n \n {book.pages.toLocaleString()} {pluralize(\"page\", book.pages)}\n \n ) : (\n \n Unknown\n \n )}\n \n \n );\n}\n\nexport const settings = {\n key: \"Pages\",\n title: \"Pages\",\n} as LetterlistTableColumnSettingType;\n","import { StarIcon } from \"@heroicons/react/solid\";\nimport {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function RatingColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n \n {Math.round(book.rating * 100) / 100}\n \n \n \n );\n}\n\nexport const settings = {\n key: \"Rating\",\n title: \"Rating\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport pluralize from \"lib/pluralize\";\nimport LetterbookCell from \"../LetterbookCell\";\nimport LocaleNumber from \"components/ui/LocaleNumber\";\n\nexport default function ReadersCountColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n <>\n {\" \"}\n {pluralize(\"read\", book.usersReadCount)}\n \n \n );\n}\n\nexport const settings = {\n key: \"ReadersCount\",\n title: \"Readers Count\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function ReleaseDateColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n <>{book.releaseDate ? book.releaseDate.toLocaleString() : \"\"}\n \n );\n}\n\nexport const settings = {\n key: \"ReleaseDate\",\n title: \"Release Date\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function ReleaseYearColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n <>{book.releaseYear}\n \n );\n}\n\nexport const settings = {\n key: \"ReleaseYear\",\n title: \"Release Year\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport pluralize from \"lib/pluralize\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function UsersCountColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n <>\n {book.usersCount.toLocaleString()} {pluralize(\"save\", book.usersCount)}\n \n \n );\n}\n\nexport const settings = {\n key: \"UsersCount\",\n title: \"Reader Saves\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookDataCountType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function DataCount({\n letterbook,\n}: {\n letterbook: LetterbookDataCountType;\n}) {\n return (\n \n {letterbook.data.count}\n \n );\n}\n\nexport const settings = {\n key: \"DataCount\",\n title: \"Count\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookLibraryType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\nimport useCurrentUserId from \"hooks/user/useCurrentUserId\";\nimport EditableDatesRead from \"features/books/components/UserBookPanel/EditableDatesRead/EditableDatesRead\";\nimport Button from \"hardcover-ui/components/Button\";\nimport useUserBookService from \"services/UserBookService/useUserBookService\";\n\nfunction EditableOwnerDatesRead({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const { insertDateRead } = useUserBookService(letterbook.book.id);\n\n return (\n
\n \n\n
\n \n
\n
\n );\n}\n\nexport default function OwnerDatesReadColumn({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const currentUserId = useCurrentUserId();\n const isOwner = letterbook.data.ownerUserBook.userId === currentUserId;\n return (\n \n { isOwner ? (\n \n ) : (\n
\n

Not editable dates read

\n
\n )}\n
\n );\n}\n\nexport const settings = {\n key: \"OwnerDatesRead\",\n title: \"Dates Read\",\n} as LetterlistTableColumnSettingType;\n","import ContributionsListText from \"components/authors/ContributionsListText\";\nimport {\n LetterbookLibraryType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport ResponsiveCoverLink from \"components/Cover/ResponsiveCoverLink\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function OwnerDetailsColumn({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const { book } = letterbook;\n const { ownerUserBook } = letterbook.data;\n\n return (\n \n
\n \n
\n
\n {ownerUserBook?.edition?.title || book.title}\n
\n
\n \n
\n
\n
\n
\n );\n}\n\nexport const settings = {\n key: \"OwnerDetails\",\n title: \"Details\",\n} as LetterlistTableColumnSettingType;\n","import { StarIcon } from \"@heroicons/react/solid\";\nimport {\n LetterbookLibraryType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function OwnerRatingColumn({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const rating = letterbook.data.ownerUserBook.rating || null;\n return (\n \n \n {rating || \"-\"}\n \n \n \n );\n}\n\nexport const settings = {\n key: \"OwnerRating\",\n title: \"Rating\",\n} as LetterlistTableColumnSettingType;\n","import ContributionsListText from \"components/authors/ContributionsListText\";\nimport { LetterbookUserBookReadType } from \"features/Letterbooks/types\";\nimport ResponsiveCoverLink from \"components/Cover/ResponsiveCoverLink\";\nimport LetterbookCell from \"../../LetterbookCell\";\n\nexport default function UserBookReadDetailsContent({\n letterbook,\n}: {\n letterbook: LetterbookUserBookReadType;\n}) {\n const { book, data } = letterbook;\n \n const { userBookRead } = data\n\n if (!userBookRead) {\n return (\n \n

\n
\n );\n }\n\n return (\n \n
\n \n
\n
\n {userBookRead.edition?.title || book.title}\n
\n
\n \n
\n
\n
\n
\n );\n}\n","import {\n LetterbookUserBookReadType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport UserBookReadDetailsContent from \"./UserBookReadDetailsContent\";\n\nexport default function UserBookReadDetailsColumn({\n letterbook,\n}: {\n letterbook: LetterbookUserBookReadType;\n}) {\n return ;\n}\n\nexport const settings = {\n key: \"UserBookReadDetails\",\n title: \"Details\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function GoalPosition({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n return (\n \n #{letterbook.position + 1}\n \n );\n}\n\nexport const settings = {\n key: \"GoalPosition\",\n title: \"Position\",\n} as LetterlistTableColumnSettingType;\n","import * as React from \"react\";\nconst SvgUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 384 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m192 82.4 142.7 149.9a4.59 4.59 0 0 1-3.3 7.8H248c-13.3 0-24 10.7-24 24V432h-64V264c0-13.3-10.7-24-24-24H52.6a4.59 4.59 0 0 1-3.3-7.8zm192 153c0-13.5-5.2-26.5-14.5-36.3L222.9 45.2C214.8 36.8 203.7 32 192 32s-22.8 4.8-30.9 13.2l-146.6 154A52.3 52.3 0 0 0 0 235.4c0 29 23.5 52.6 52.6 52.6H112v144c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V288h59.4c29 0 52.6-23.5 52.6-52.6\" }));\nexport default SvgUp;\n","import Icon from \"hardcover-ui/components/Icon\";\nimport faUp from \"icons/regular/up.svg\";\nimport Button from \"hardcover-ui/components/Button\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { uiActions } from \"store/ui/uiSlice\";\nimport { PromptSerializersPromptBook } from \"types/serializers\";\n\nexport default function PromptBookAnonymous({\n promptBook,\n}: {\n promptBook: PromptSerializersPromptBook;\n}) {\n const dispatch = useDispatch();\n\n const showLogin = useCallback(() => {\n dispatch(uiActions.toggleLoginVisible(\"Login\"));\n }, []);\n\n return (\n \n \n {promptBook.answersCount.toLocaleString()}\n \n );\n}\n","import * as React from \"react\";\nconst SvgUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 384 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M169.4 41.4a32.05 32.05 0 0 1 45.3 0l160 160c9.2 9.2 11.9 22.9 6.9 34.9S365 256.1 352 256.1h-96V440c0 22.1-17.9 40-40 40h-48c-22.1 0-40-17.9-40-40V256H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l160-160z\" }));\nexport default SvgUp;\n","/* eslint-disable no-alert */\nimport { useState } from \"react\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport faUpSolid from \"icons/solid/up.svg\";\nimport faUp from \"icons/regular/up.svg\";\nimport { createPromptAnswer, CreatePromptAnswerType } from \"queries/prompts/createPromptAnswer\";\nimport { deletePromptAnswer } from \"queries/prompts/deletePromptAnswer\";\nimport Button from \"hardcover-ui/components/Button\";\nimport classNames from \"lib/classNames\";\nimport LoadingSpinner from \"hardcover-ui/components/LoadingSpinner\";\nimport { useMutation } from \"lib/apollo/client\";\nimport { router } from \"@inertiajs/react\";\nimport useCurrentUserId from \"hooks/user/useCurrentUserId\";\nimport { PromptSerializersPromptBook } from \"types/serializers\";\nimport { usePromptAnswer } from \"store/currentUser/currentUserSelector\";\n\nexport interface Props {\n promptBook: PromptSerializersPromptBook;\n}\nexport interface PromptBookCurrentUserProps {\n promptBook: PromptSerializersPromptBook;\n answersCount: number;\n}\n\nexport default function PromptBookCurrentUser({\n answersCount,\n promptBook,\n}: PromptBookCurrentUserProps) {\n const currentUserId = useCurrentUserId();\n const initialPromptAnswerId = usePromptAnswer(promptBook);\n\n // const username = useCurrentUser((u) => u.username);\n const [answerId, setAnswerId] = useState(initialPromptAnswerId);\n const [sendUpvote, { loading: insertLoading }] = useMutation(createPromptAnswer);\n\n const [sendRemoveVote, { loading: deleteLoading }] = useMutation(deletePromptAnswer);\n const [currentAnswersCount, setCurrentAnswersCount] = useState(answersCount);\n\n const removeVote = () => {\n sendRemoveVote({\n variables: {\n id: answerId,\n },\n })\n .then((result) => {\n setAnswerId(null);\n setCurrentAnswersCount(\n result.data.promptAnswer.promptBook.answersCount\n );\n })\n .catch(() => {\n setCurrentAnswersCount(currentAnswersCount - 1);\n });\n };\n\n const vote = () => {\n sendUpvote({\n variables: {\n promptId: promptBook.promptId,\n bookId: promptBook.bookId,\n },\n })\n .then((result) => {\n const { promptAnswer } = result.data.insertResult;\n setAnswerId(promptAnswer.id);\n setCurrentAnswersCount(promptAnswer.promptBook.answersCount);\n })\n .catch(() => {\n setCurrentAnswersCount(currentAnswersCount + 1);\n });\n };\n\n const toggleVote = (e) => {\n e.preventDefault();\n if (!currentUserId) {\n router.visit(`/join`);\n } else if (answerId) {\n removeVote();\n } else {\n vote();\n }\n };\n\n return (\n \n \n {insertLoading || deleteLoading ? (\n \n ) : (\n <>{currentAnswersCount.toLocaleString()}\n )}\n \n );\n}\n","import PromptBookAnonymous from \"./PromptBookAnonymous\";\nimport useIsLoggedIn from \"hooks/user/useIsLoggedIn\";\nimport { PromptSerializersPromptBook } from \"types/serializers\";\nimport PromptBookCurrentUser from \"./PromptBookCurrentUser\";\n\nexport interface Props {\n promptBook: PromptSerializersPromptBook;\n}\nexport interface PromptBookCurrentUserProps {\n currentUserId?: number;\n answersCount: number;\n}\n\nexport default function PromptBookVote({\n promptBook,\n}: Props) {\n const loggedIn = useIsLoggedIn();\n\n if (loggedIn) {\n return (\n \n );\n }\n return ;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterbookPromptType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\nimport PromptBookVote from \"components/prompts/PromptBookVote\";\n\nexport default function PromptVote({\n letterbook,\n}: {\n letterbook: LetterbookPromptType;\n}) {\n const { data } = letterbook;\n\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"PromptVote\",\n title: \"Vote\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function PromptPosition({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n return (\n \n #{letterbook.position + 1}\n \n );\n}\n\nexport const settings = {\n key: \"PromptPosition\",\n title: \"Position\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookOwnerType,\n LetterbookSettingType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport { BookButton } from \"features/BookButton\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function BookButtonColumn({\n letterbook,\n settings,\n}: {\n letterbook: LetterbookOwnerType;\n settings: LetterbookSettingType;\n}) {\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"BookButton\",\n title: \"Controls\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport BookMatchPercentage from \"components/match/BookMatchPercentage/BookMatchPercentage\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function MatchColumn({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n const { book } = letterbook;\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"Match\",\n title: \"Match %\",\n pro: true,\n} as LetterlistTableColumnSettingType;\n","import { StarIcon } from \"@heroicons/react/solid\";\nimport {\n LetterbookLibraryType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function CurrentUserRating({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const { ownerUserBook } = letterbook.data;\n\n return (\n \n \n {ownerUserBook?.rating || \"-\"}\n \n \n \n );\n}\n\nexport const settings = {\n key: \"CurrentUserRating\",\n title: \"Rating\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function ListPosition({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n return (\n \n #{letterbook.position + 1}\n \n );\n}\n\nexport const settings = {\n key: \"ListPosition\",\n title: \"Position\",\n} as LetterlistTableColumnSettingType;\n","import { SeriesSerializersBookSeriesByline } from \"types/serializers\";\n\nexport default function BookSeriesPosition({ bookSeries }: { bookSeries: SeriesSerializersBookSeriesByline }) {\n if(!bookSeries.position) {\n return <>{bookSeries.details};\n }\n return <>#{bookSeries.position};\n}\n","import {\n LetterbookSeriesType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\nimport BookSeriesPosition from \"components/series/BookSeriesPosition\";\nimport Text from \"hardcover-ui/components/Text\";\n\nexport default function SeriesPosition({\n letterbook,\n}: {\n letterbook: LetterbookSeriesType;\n}) {\n return (\n \n \n \n );\n}\n\nexport const settings = {\n key: \"SeriesPosition\",\n title: \"Series Position\",\n} as LetterlistTableColumnSettingType;\n","import {\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterbookCell from \"../LetterbookCell\";\n\nexport default function SeriesDetails({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n return (\n \n #{letterbook.position + 1}\n \n );\n}\n\nexport const settings = {\n key: \"SeriesDetails\",\n title: \"Series Details\",\n} as LetterlistTableColumnSettingType;\n","import { settings as AudioLength } from \"./book/AudioLength\";\nimport { settings as ContentWarnings } from \"./book/ContentWarnings\";\nimport { settings as Details } from \"./book/Details\";\nimport { settings as Genres } from \"./book/Genres\";\nimport { settings as Moods } from \"./book/Moods\";\nimport { settings as Length } from \"./book/Length\";\nimport { settings as Pages } from \"./book/Pages\";\nimport { settings as Rating } from \"./book/Rating\";\nimport { settings as ReadersCount } from \"./book/ReadersCount\";\nimport { settings as ReleaseDate } from \"./book/ReleaseDate\";\nimport { settings as ReleaseYear } from \"./book/ReleaseYear\";\nimport { settings as UsersCount } from \"./book/UsersCount\";\n\nimport { settings as DataCount } from \"./data/DataCount\";\n\nimport { settings as OwnerDatesRead } from \"./owner/OwnerDatesRead\";\nimport { settings as OwnerDetails } from \"./book/OwnerDetails\";\nimport { settings as OwnerRating } from \"./owner/OwnerRating\";\n\nimport { settings as UserBookReadDetails } from \"./book/UserBookReadDetails/UserBookReadDetails\";\n\nimport { settings as GoalPosition } from \"./goal/position\";\n\nimport { settings as PromptVote } from \"./prompt/vote\";\nimport { settings as PromptPosition } from \"./prompt/position\";\n\nimport { settings as BookButton } from \"./user/BookButton\";\nimport { settings as Match } from \"./user/Match\";\nimport { settings as CurrentUserRating } from \"./user/CurrentUserRating\";\n\nimport { settings as ListPosition } from \"./list/position\";\n\nimport { settings as SeriesPosition } from \"./series/position\";\nimport { settings as SeriesDetails } from \"./series/details\";\n\nexport default {\n AudioLength,\n ContentWarnings,\n Details,\n Genres,\n Moods,\n Length,\n Pages,\n Rating,\n ReadersCount,\n ReleaseDate,\n ReleaseYear,\n UsersCount,\n\n // Data\n DataCount,\n\n // Owner\n OwnerDatesRead,\n OwnerDetails,\n OwnerRating,\n UserBookReadDetails,\n\n // User\n BookButton,\n CurrentUserRating,\n Match,\n\n // List\n ListPosition,\n\n // Goal\n GoalPosition,\n\n // Prompt\n PromptVote,\n PromptPosition,\n\n // Series\n SeriesPosition,\n SeriesDetails,\n};\n","import { LetterlistTableColumnSettingType } from \"features/Letterbooks/types\";\nimport { UserSerializersUserByline } from \"types/serializers\";\n\nexport function appendUserToColumn(\n column: LetterlistTableColumnSettingType,\n user: UserSerializersUserByline\n) {\n return {\n ...column,\n ...{ user },\n };\n}\nexport function appendUserToColumns(\n columns: LetterlistTableColumnSettingType[],\n user: UserSerializersUserByline\n) {\n return columns.map((column) => appendUserToColumn(column, user));\n}\n\nexport function calculateUnusedColumns(\n tableColumns: LetterlistTableColumnSettingType[],\n possibleColumns: LetterlistTableColumnSettingType[]\n) {\n const tableColumnKeys = tableColumns.map((column) => column.key);\n return possibleColumns\n .filter((column) => tableColumnKeys.indexOf(column.key) === -1)\n .sort((a, b) => a.title.localeCompare(b.title));\n}\n","import {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport { slugConstants } from \"types/UserBookStatusType\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { LetterbooksParentLibraryContextType } from \"types/LetterbooksParentContextType\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.OwnerDetails,\n LetterBookColumns.OwnerDatesRead,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// Owner\nconst ownerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerRating,\n];\n\n// User\nconst userNotOwnerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n];\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(\n owner: UserSerializersUserByline,\n currentUser: UserSerializersUserByline | null\n) {\n return [\n ...bookColumns,\n ...appendUserToColumns(ownerColumns, owner),\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser && currentUser.id !== owner.id\n ? appendUserToColumns(userNotOwnerColumns, currentUser)\n : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function LibraryTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n const { statusId, user } = (context.context as LetterbooksParentLibraryContextType);\n const statusName = statusId ? slugConstants[statusId] : null;\n\n const possibleColumns = calculatePossibleColumns(user, currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerDetails,\n ];\n\n if (!statusName) {\n columns.push(LetterBookColumns.Rating);\n columns.push(appendUserToColumn(LetterBookColumns.OwnerRating, user));\n } else if (statusName === \"want-to-read\") {\n columns.push(LetterBookColumns.ReleaseYear);\n columns.push(LetterBookColumns.ReadersCount);\n columns.push(LetterBookColumns.Rating);\n if (currentUser?.pro) {\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n }\n columns.push(LetterBookColumns.Length);\n } else if (statusName === \"currently-reading\") {\n // Todo: Add progress\n } else if (statusName === \"read\") {\n columns.push(appendUserToColumn(LetterBookColumns.OwnerRating, user));\n columns.push(appendUserToColumn(LetterBookColumns.OwnerDatesRead, user));\n } else if (statusName === \"did-not-finish\") {\n columns.push(LetterBookColumns.Rating);\n }\n\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { LetterbooksParentListContextType } from \"types/LetterbooksParentContextType\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// Owner\nconst ownerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerRating,\n];\n\n// List\nconst listColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ListPosition,\n];\n\n// User\nconst userNotOwnerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n];\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(\n owner: UserSerializersUserByline,\n currentUser: UserSerializersUserByline | null,\n ranked: boolean\n) {\n return [\n ...(ranked ? listColumns : []),\n ...bookColumns,\n ...appendUserToColumns(ownerColumns, owner),\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser && currentUser.id !== owner.id\n ? appendUserToColumns(userNotOwnerColumns, currentUser)\n : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function ListTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n const { list, user } = context.context as LetterbooksParentListContextType;\n\n const possibleColumns = calculatePossibleColumns(\n user,\n currentUser,\n list.ranked\n );\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n\n if (list.ranked) {\n columns.unshift(LetterBookColumns.ListPosition);\n }\n\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.ReadersCount);\n if (currentUser?.pro) {\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n }\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// User\nconst userNotOwnerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n];\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(currentUser: UserSerializersUserByline | null) {\n return [\n ...bookColumns,\n LetterBookColumns.DataCount,\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function TagTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n\n const possibleColumns = calculatePossibleColumns(currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n columns.push(LetterBookColumns.ReleaseYear);\n columns.push(LetterBookColumns.ReadersCount);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.BookButton);\n columns.unshift(LetterBookColumns.DataCount);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// User\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(currentUser: UserSerializersUserByline | null) {\n return [\n ...bookColumns,\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function AuthorTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n // const { author } = context.context as ParentAuthorContextType;\n\n const possibleColumns = calculatePossibleColumns(currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.ReadersCount);\n if (currentUser?.pro) {\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n }\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","import {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksParentGoalContextType } from \"types/LetterbooksParentContextType\";\nimport { GoalSerializersGoalByline, LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// Owner\nconst ownerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerRating,\n LetterBookColumns.UserBookReadDetails\n];\n\n// Goal\nconst goalColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.GoalPosition,\n];\n\n// User\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(\n goal: GoalSerializersGoalByline,\n currentUser: UserSerializersUserByline | null\n) {\n return [\n ...goalColumns,\n ...bookColumns,\n ...appendUserToColumns(ownerColumns, goal.user),\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function GoalTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n const { goal } = context.context as LetterbooksParentGoalContextType;\n\n const possibleColumns = calculatePossibleColumns(goal, currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.UserBookReadDetails,\n ];\n\n columns.unshift(LetterBookColumns.GoalPosition);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.ReadersCount);\n if (currentUser?.pro) {\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n }\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksParentPromptContextType } from \"types/LetterbooksParentContextType\";\nimport { LetterbooksSerializersLetterbooks, PromptSerializersPrompt, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// Owner\nconst ownerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerRating,\n];\n\n// Goal\nconst promptColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.PromptVote,\n LetterBookColumns.PromptPosition,\n];\n\n// User\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(\n prompt: PromptSerializersPrompt,\n currentUser: UserSerializersUserByline | null\n) {\n return [\n ...promptColumns,\n ...bookColumns,\n ...appendUserToColumns(ownerColumns, prompt.user),\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function GoalTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n const { prompt } = context.context as LetterbooksParentPromptContextType;\n\n const possibleColumns = calculatePossibleColumns(prompt, currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n\n columns.unshift(LetterBookColumns.PromptVote);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.ReadersCount);\n if (currentUser?.pro) {\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n }\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumn,\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// Owner\nconst ownerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.OwnerRating,\n];\n\n// Series\nconst seriesColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.SeriesPosition,\n LetterBookColumns.SeriesDetails,\n];\n\n// User\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(\n currentUser: UserSerializersUserByline | null\n) {\n return [\n ...seriesColumns,\n ...bookColumns,\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function seriesTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n const possibleColumns = calculatePossibleColumns(currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n\n columns.unshift(LetterBookColumns.SeriesPosition);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.ReadersCount);\n columns.push(appendUserToColumn(LetterBookColumns.Match, currentUser));\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { LetterbooksSerializersLetterbooks, UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// User\nconst userNotOwnerColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.CurrentUserRating,\n];\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(currentUser: UserSerializersUserByline | null) {\n return [\n ...bookColumns,\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function PublisherTableColumns({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n\n const possibleColumns = calculatePossibleColumns(currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n columns.push(LetterBookColumns.ReleaseYear);\n columns.push(LetterBookColumns.ReadersCount);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","import {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport LetterBookColumns from \"features/Letterbooks/components/cards/LetterbookTableRow/columns/ColumnSettings\";\nimport {\n appendUserToColumns,\n calculateUnusedColumns,\n} from \"./utils\";\nimport { UserSerializersUserByline } from \"types/serializers\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\n\n// Book\nconst bookColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.ContentWarnings,\n LetterBookColumns.Details,\n LetterBookColumns.Genres,\n LetterBookColumns.Length,\n LetterBookColumns.Moods,\n LetterBookColumns.Rating,\n LetterBookColumns.ReadersCount,\n LetterBookColumns.ReleaseDate,\n LetterBookColumns.ReleaseYear,\n LetterBookColumns.UsersCount,\n];\n\n// User\nconst userColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.BookButton,\n];\n\n// Pro\nconst proColumns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Match,\n];\n\nfunction calculatePossibleColumns(currentUser: UserSerializersUserByline | null) {\n return [\n ...bookColumns,\n ...(currentUser ? appendUserToColumns(userColumns, currentUser) : []),\n ...(currentUser?.pro ? appendUserToColumns(proColumns, currentUser) : []),\n ];\n}\n\nexport default function CharacterTableColumns({\n overrides,\n}: {\n overrides: string[];\n}) {\n const currentUser = useCurrentUser();\n\n const possibleColumns = calculatePossibleColumns(currentUser);\n\n // If overrides are provided, use the valid ones\n if (overrides.length > 0) {\n // Remove columns they shouldn't be able to see or that don't exist\n const matchingColumns = overrides\n .map((override) =>\n possibleColumns.find((column) => column.key === override)\n )\n .filter((column) => column);\n if (matchingColumns.length > 0) {\n return {\n tableColumns: matchingColumns,\n unusedColumns: calculateUnusedColumns(matchingColumns, possibleColumns),\n };\n }\n }\n\n const columns: LetterlistTableColumnSettingType[] = [\n LetterBookColumns.Details,\n ];\n columns.push(LetterBookColumns.ReleaseYear);\n columns.push(LetterBookColumns.ReadersCount);\n columns.push(LetterBookColumns.Rating);\n columns.push(LetterBookColumns.BookButton);\n\n return {\n tableColumns: columns,\n unusedColumns: calculateUnusedColumns(columns, possibleColumns),\n };\n}\n","import {\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport {\n listTableColumns,\n libraryTableColumns,\n tagTableColumns,\n promptTableColumns,\n goalTableColumns,\n authorTableColumns,\n seriesTableColumns,\n publisherTableColumns,\n characterTableColumns,\n} from \"./table\";\nimport { LetterbooksSerializersLetterbooks } from \"types/serializers\";\n\nexport type LetterbookTableColumnLookupType = ({\n context,\n overrides,\n}: {\n context: LetterbooksSerializersLetterbooks;\n overrides: string[] | null;\n}) => LetterlistTableColumnSettingType[];\n\nconst generator = {\n list: listTableColumns,\n library: libraryTableColumns,\n tag: tagTableColumns,\n prompt: promptTableColumns,\n goal: goalTableColumns,\n author: authorTableColumns,\n series: seriesTableColumns,\n publisher: publisherTableColumns,\n character: characterTableColumns,\n};\n\n// Convert the query params to a sort object\nfunction generateColumnsOverride(context: LetterbooksSerializersLetterbooks): string[] {\n const { searchParams } = context;\n\n if (searchParams.columns?.length > 0) {\n return searchParams.columns.split(\",\");\n }\n\n return [];\n}\n\ninterface FindTableColumnsReturnType {\n tableColumns: LetterlistTableColumnSettingType[];\n unusedColumns: LetterlistTableColumnSettingType[];\n}\n// Finds the current sort order option from the existing ones\nexport default function findTableColumns(\n context: LetterbooksSerializersLetterbooks\n): FindTableColumnsReturnType {\n const overrides = generateColumnsOverride(context);\n const lookup = generator[context.type];\n return lookup({ context, overrides }) as FindTableColumnsReturnType;\n}\n","import { LetterbooksSerializersLetterbooks } from \"types/serializers\";\nimport { LetterbookSettingType } from \"../types\";\nimport { findConditions } from \"./conditions/findConditions\";\nimport { findOrderOptions } from \"./order\";\nimport findTableColumns from \"./views/findTableColumns\";\n\nexport default function parseSettingsFromContext(\n context: LetterbooksSerializersLetterbooks\n): LetterbookSettingType {\n const { searchParams } = context;\n const { orderOptions, order } = findOrderOptions(context);\n const conditions = findConditions(context);\n const { tableColumns, unusedColumns } = findTableColumns(context);\n\n return {\n conditions,\n limit: Number(searchParams.limit) || 100,\n order,\n orderOptions,\n start: Number(searchParams.start) || 0,\n type: context.type,\n url: context.url,\n view: context.view,\n context: context.context,\n searchParams,\n tableColumns,\n unusedColumns,\n };\n}\n","import * as React from \"react\";\nconst SvgTable = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 512 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M64 160v256h384V160zM0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\", className: \"fa-primary\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M224 320v96h64v-96h160v-64H288v-96h-64v96H64v64z\", style: {\n opacity: 0.4\n} }));\nexport default SvgTable;\n","import * as React from \"react\";\nconst SvgShelves = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 640 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M384 0c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zM96 288v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32v-64c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32m160 0v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32v-64c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32\", className: \"fa-primary\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v448c0 17.7 14.3 32 32 32s32-14.3 32-32h512c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v128H64zm0 192h512v192H64z\", style: {\n opacity: 0.4\n} }));\nexport default SvgShelves;\n","import LetterbooksViewType from \"types/LetterbooksViewType\";\nimport { LetterbookSettingType } from \"../types\";\n\ninterface UrlOverrides extends Record {\n order?: string;\n direction?: \"asc\" | \"desc\";\n view?: LetterbooksViewType;\n columns?: string;\n start?: string;\n}\ninterface SettingOverrides {\n addColumn?: string;\n removeColumn?: string;\n}\n\nfunction columnOverrides(\n settings: LetterbookSettingType,\n settingOverrides?: SettingOverrides\n) {\n if (settingOverrides?.addColumn) {\n const columns = [\n ...settings.tableColumns.map((column) => column.key),\n settingOverrides.addColumn,\n ];\n return { columns: columns.join(\",\") };\n }\n\n // Generate URL with a change from\n // ?columns=ActiveColumns,Inactive\n // To\n // ?columns=ActiveColumns\n if (settingOverrides?.removeColumn) {\n const columns = settings.tableColumns\n .map((column) => column.key)\n .filter((key) => key !== settingOverrides.removeColumn);\n return { columns: columns.join(\",\") };\n }\n\n return {};\n}\nexport default function generateUrl({\n settings,\n overrides = {},\n settingOverrides = {},\n}: {\n settings: LetterbookSettingType;\n overrides?: UrlOverrides;\n settingOverrides?: SettingOverrides;\n}) {\n const view = overrides.view || settings.view;\n const urlOverrides = { ...overrides };\n delete urlOverrides.view;\n const newParams = {\n ...settings.searchParams,\n ...urlOverrides,\n ...{ view },\n ...columnOverrides(settings, settingOverrides),\n };\n const params = new URLSearchParams(newParams as unknown as Record).toString();\n\n return `${settings.url}${params ? `?${params}` : \"\"}`;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n LetterbookSettingType,\n} from \"features/Letterbooks/types\";\nimport { Link, usePage } from \"@inertiajs/react\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport classNames from \"lib/classNames\";\nimport generateUrl from \"features/Letterbooks/utils/generateUrl\";\nimport LetterbooksViewType from \"types/LetterbooksViewType\";\n\nexport function ViewLink({\n view,\n title,\n icon,\n settings,\n}: {\n view: LetterbooksViewType;\n title: string;\n icon: any;\n settings: LetterbookSettingType;\n}) {\n const active = settings.view === view;\n return (\n \n \n {active ? {title} : false}\n \n );\n}\n","import tableIcon from \"icons/duotone/table.svg\";\nimport cardIcon from \"icons/duotone/list.svg\";\nimport shelfIcon from \"icons/duotone/shelves.svg\";\nimport { ViewLink } from \"./ViewLink\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function ViewLinks({\n settings,\n}: LetterbookOptions) {\n return (\n
\n \n \n \n
\n );\n}\n","import * as React from \"react\";\nconst SvgArrowDownAZ = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m47 377 96 96a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9zm305-89c-13.3 0-24 10.7-24 24s10.7 24 24 24h74.6l-92.5 104.1c-6.3 7.1-7.8 17.2-4 25.8S342.6 480 352 480h128c13.3 0 24-10.7 24-24s-10.7-24-24-24h-74.6l92.5-104.1c6.3-7.1 7.8-17.2 4-25.8S489.4 288 480 288zm64-256c-9.1 0-17.4 5.1-21.5 13.3l-80 160c-5.9 11.9-1.1 26.3 10.7 32.2s26.3 1.1 32.2-10.7l13.4-26.8H456c1.7 0 3.3-.2 4.9-.5l13.6 27.2c5.9 11.9 20.3 16.7 32.2 10.7s16.7-20.3 10.7-32.2l-80-160c-4-8.1-12.3-13.2-21.4-13.2m-21.2 120 21.2-42.3 21.2 42.3z\" }));\nexport default SvgArrowDownAZ;\n","import * as React from \"react\";\nconst SvgArrowDownZA = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m47 377 96 96a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9zM352 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h74.6l-92.5 104.1c-6.3 7.1-7.8 17.2-4 25.8S342.6 224 352 224h128c13.3 0 24-10.7 24-24s-10.7-24-24-24h-74.6l92.5-104.1c6.3-7.1 7.8-17.2 4-25.8S489.4 32 480 32zm64 240c-9.1 0-17.4 5.1-21.5 13.3l-80 160c-5.9 11.9-1.1 26.3 10.7 32.2s26.3 1.1 32.2-10.7l13.4-26.8H456c1.7 0 3.3-.2 4.9-.5l13.6 27.2c5.9 11.9 20.3 16.7 32.2 10.7s16.7-20.3 10.7-32.2l-80-160a24.2 24.2 0 0 0-21.5-13.3zm-21.2 120 21.2-42.3 21.2 42.3z\" }));\nexport default SvgArrowDownZA;\n","import * as React from \"react\";\nconst SvgArrowDown19 = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M456 56c0-7.7-3.7-15-10-19.5s-14.3-5.7-21.6-3.3l-48 16C363.8 53.4 357 67 361.2 79.6S379 99 391.6 94.8l16.4-5.5V176h-24c-13.3 0-24 10.7-24 24s10.7 24 24 24h96c13.3 0 24-10.7 24-24s-10.7-24-24-24h-24V56M143 473a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l96 96zm281-89a40 40 0 1 1 0-80 40 40 0 1 1 0 80m-17.9 46.2-8.7 10.6c-8.4 10.3-6.9 25.4 3.4 33.8s25.4 6.9 33.8-3.4l56.8-69.4A91.4 91.4 0 0 0 512 344a88 88 0 0 0-176 0c0 42.5 30.1 77.9 70.1 86.2\" }));\nexport default SvgArrowDown19;\n","import * as React from \"react\";\nconst SvgArrowDown91 = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m47 377 96 96a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9zm409-65c0-7.7-3.7-15-10-19.5s-14.3-5.7-21.6-3.3l-48 16c-12.6 4.2-19.4 17.8-15.2 30.4s17.8 19.4 30.4 15.2l16.4-5.5V432h-24c-13.3 0-24 10.7-24 24s10.7 24 24 24h96c13.3 0 24-10.7 24-24s-10.7-24-24-24h-24zm-32-152a40 40 0 1 1 0-80 40 40 0 1 1 0 80m88-40a88 88 0 0 0-176 0c0 42.1 29.6 77.3 69.1 86l-15.6 18.7c-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.1 33.8-3.1l64.6-77.6c13-15.6 20.3-35.1 20.9-55.3V120z\" }));\nexport default SvgArrowDown91;\n","import * as React from \"react\";\nconst SvgArrowDownTriangleSquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m47 377 96 96a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9zM416 32c-9.9 0-19.1 5.2-24.2 13.7L307.6 186a25.6 25.6 0 0 0-3.6 12.9c0 13.8 11.2 25.1 25.1 25.1h173.8c13.8 0 25.1-11.2 25.1-25.1 0-4.5-1.2-9-3.6-12.9L440.2 45.7A28.2 28.2 0 0 0 416 32m-48 400v-96h96v96zm48-333.4 46.4 77.4h-92.8zM320 432c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48v-96c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48z\" }));\nexport default SvgArrowDownTriangleSquare;\n","import * as React from \"react\";\nconst SvgArrowDownSquareTriangle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 576 512\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m47 377 96 96a23.9 23.9 0 0 0 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55V56c0-13.3-10.7-24-24-24s-24 10.7-24 24v342.1L81 343c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9zm481 78c0-4.5-1.2-9-3.6-12.9l-84.2-140.4a28.24 28.24 0 0 0-48.4 0L307.6 442a25.6 25.6 0 0 0-3.6 12.9c0 13.8 11.2 25.1 25.1 25.1h173.8c13.8 0 25.1-11.2 25.1-25.1zM368 80h96v96h-96zm94.4 352h-92.8l46.4-77.4zM320 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48\" }));\nexport default SvgArrowDownSquareTriangle;\n","import { Menu } from \"@headlessui/react\";\nimport {\n LetterbookSettingType,\n LetterbookOrderOption,\n LetterbookOrderOptionType,\n} from \"features/Letterbooks/types\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport { Link } from \"@inertiajs/react\";\nimport generateUrl from \"features/Letterbooks/utils/generateUrl\";\n\nimport arrowAZ from \"icons/regular/arrow-down-a-z.svg\";\nimport arrowZA from \"icons/regular/arrow-down-z-a.svg\";\nimport arrow19 from \"icons/regular/arrow-down-1-9.svg\";\nimport arrow91 from \"icons/regular/arrow-down-9-1.svg\";\nimport arrowSymbolUp from \"icons/regular/arrow-down-triangle-square.svg\";\nimport arrowSymbolDown from \"icons/regular/arrow-down-square-triangle.svg\";\nimport checkIcon from \"icons/solid/check.svg\";\nimport classNames from \"lib/classNames\";\nimport Badge from \"hardcover-ui/components/Badge\";\nimport Avatar from \"hardcover-ui/components/Avatar\";\nimport useCurrentUser from \"hooks/fragments/useCurrentUser\";\nimport { MouseEvent } from \"react\";\n\nconst sortLookup = {\n string: arrowAZ,\n string_desc: arrowZA,\n number: arrow19,\n number_desc: arrow91,\n symbol: arrowSymbolUp,\n symbol_desc: arrowSymbolDown,\n};\nexport function findIcon(sortType: LetterbookOrderOptionType, reverse = false) {\n return sortLookup[`${sortType}${reverse ? \"_desc\" : \"\"}`];\n}\n\nfunction oppositeDirection(direction: \"asc\" | \"desc\") {\n return direction === \"asc\" ? \"desc\" : \"asc\";\n}\n\nfunction preventAccess(e: MouseEvent, title: string) {\n e.preventDefault();\n alert(`Upgrade to a Supporter to sort by ${title}.`);\n}\n\nexport default function SortListButton({\n settings,\n orderOption,\n onClick,\n}: {\n settings: LetterbookSettingType;\n orderOption: LetterbookOrderOption;\n onClick: () => void;\n}) {\n const active = orderOption.fieldname === settings.order.fieldname;\n const pro = useCurrentUser((user) => user?.pro);\n const canAccess = !orderOption.pro || (orderOption.pro && pro);\n\n return (\n \n canAccess? onClick() : preventAccess(e, orderOption.title)}\n href={canAccess ? generateUrl({\n settings,\n overrides: {\n order: orderOption.fieldname,\n direction: active\n ? oppositeDirection(settings.order.direction)\n : orderOption.direction,\n },\n }) : \"#\"}\n >\n
\n \n {orderOption.user ? (\n \n ) : (\n false\n )}\n {orderOption.title}\n {orderOption.pro ? (\n <>\n \n Pro\n \n \n ) : (\n false\n )}\n
\n {active ? (\n
\n \n
\n {\" \"}\n →{\" \"}\n \n
\n
\n ) : (\n \n )}\n \n
\n );\n}\n","import Icon from \"hardcover-ui/components/Icon\";\nimport faChevronDown from \"icons/solid/chevron-down.svg\";\nimport Button from \"hardcover-ui/components/Button\";\nimport LoadingSpinner from \"hardcover-ui/components/LoadingSpinner\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\nimport Avatar from \"hardcover-ui/components/Avatar\";\nimport { findIcon } from \"./SortListButton\";\n\nexport default function InactiveSortBooksButton({\n loading = false,\n onClick = () => {},\n settings,\n}: {\n loading?: boolean;\n onClick?: any;\n settings: LetterbookSettingType;\n}) {\n const { order } = settings;\n\n return (\n \n );\n}\n","import { Suspense, lazy, useState } from \"react\";\nimport InctiveSortBooksButton from \"./InactiveSortBooksButton\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst ActiveSortBooksButton = lazy(() => import(\"./ActiveSortBooksButton\"));\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function SortDropdown({\n settings,\n}: LetterbookOptions) {\n const [clicked, setClicked] = useState(false);\n\n return (\n <>\n {clicked ? (\n }\n >\n \n \n ) : (\n \n )}\n \n );\n}\n","import ViewLinks from \"./ViewLinks/ViewLinks\";\nimport SortBooksButton from \"./SortBooksButton/SortBooksButton\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function LetterbooksControls({\n settings,\n}: LetterbookOptions) {\n return (\n \n );\n}\n","import { usePage } from \"@inertiajs/react\";\nimport Text from \"hardcover-ui/components/Text\";\nimport pluralize from \"lib/pluralize\";\n\nexport default function LetterbooksFilterWarning() {\n const {\n filteredBooksCount, totalBookCount\n } = usePage().props;\n\n if (filteredBooksCount === totalBookCount) {\n return false;\n }\n return (\n \n Showing {filteredBooksCount.toLocaleString()} of{\" \"}\n {totalBookCount.toLocaleString()} {pluralize(\"book\", totalBookCount)}{\" \"}\n based on your filters.\n \n );\n}\n","import CoverLink from \"components/Cover/CoverLink\";\nimport { LetterbookLibraryType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookUserBookShelfRow({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const { book } = letterbook;\n const { ownerUserBook } = letterbook.data;\n\n return (\n
\n \n
\n );\n}\n","// Exporing the components separately from the settings so settings can be passed to client components\n// All components are server components only\n\nimport AudioLength from \"./book/AudioLength\";\nimport ContentWarnings from \"./book/ContentWarnings\";\nimport Details from \"./book/Details\";\nimport Genres from \"./book/Genres\";\nimport Moods from \"./book/Moods\";\nimport Length from \"./book/Length\";\nimport Pages from \"./book/Pages\";\nimport Rating from \"./book/Rating\";\nimport ReadersCount from \"./book/ReadersCount\";\nimport ReleaseDate from \"./book/ReleaseDate\";\nimport ReleaseYear from \"./book/ReleaseYear\";\nimport UsersCount from \"./book/UsersCount\";\n\nimport DataCount from \"./data/DataCount\";\n\n\nimport OwnerDatesRead from \"./owner/OwnerDatesRead\";\nimport OwnerDetails from \"./book/OwnerDetails\";\nimport OwnerRating from \"./owner/OwnerRating\";\n\nimport UserBookReadDetails from \"./book/UserBookReadDetails/UserBookReadDetails\";\n\nimport GoalPosition from \"./goal/position\";\n\nimport PromptPosition from \"./prompt/position\";\nimport PromptVote from \"./prompt/vote\";\n\nimport BookButton from \"./user/BookButton\";\nimport Match from \"./user/Match\";\nimport CurrentUserRating from \"./user/CurrentUserRating\";\n\nimport ListPosition from \"./list/position\";\n\nimport SeriesPosition from \"./series/position\";\nimport SeriesDetails from \"./series/details\";\n\nexport default {\n AudioLength,\n ContentWarnings,\n Details,\n Genres,\n Moods,\n Length,\n Pages,\n Rating,\n ReadersCount,\n ReleaseDate,\n ReleaseYear,\n UsersCount,\n\n DataCount,\n\n // Owner\n OwnerDatesRead,\n OwnerDetails,\n OwnerRating,\n UserBookReadDetails,\n\n // User\n BookButton,\n CurrentUserRating,\n Match,\n\n // List\n ListPosition,\n\n // Prompt\n PromptPosition,\n PromptVote,\n\n // Goal\n GoalPosition,\n\n // Series\n SeriesPosition,\n SeriesDetails\n};\n","/* eslint-disable no-console */\nimport {\n LetterbookSettingType,\n LetterbookType,\n LetterlistTableColumnSettingType,\n} from \"features/Letterbooks/types\";\nimport ColumnComponents from \"./ColumnComponents\";\n\nexport default function LetterbookColumn({\n column,\n letterbook,\n settings,\n}: {\n column: LetterlistTableColumnSettingType;\n letterbook: LetterbookType;\n settings: LetterbookSettingType;\n}) {\n const ColumnComponent = ColumnComponents[column.key];\n\n // Hopefully never happens 😅\n if (!ColumnComponent) {\n console.log(`Column does not exist: ${column.key}`);\n return false;\n }\n\n return ;\n}\n","import {\n LetterbookSettingType,\n LetterbookType,\n} from \"features/Letterbooks/types\";\nimport LetterbookColumn from \"./columns/LetterbookColumn\";\n\nexport default function LetterbookTableRow({\n letterbook,\n settings,\n}: {\n letterbook: LetterbookType;\n settings: LetterbookSettingType;\n}) {\n const { tableColumns } = settings;\n\n return (\n \n {tableColumns.map((column) => (\n \n ))}\n \n );\n}\n","import Button from \"hardcover-ui/components/Button\";\n\nexport default function TrackProgress({\n trackRead,\n}: {\n trackRead: () => void;\n}) {\n return (\n
\n \n
\n );\n}\n","import Button from \"hardcover-ui/components/Button\";\nimport { lazy, Suspense, useState } from \"react\";\nimport { BookSerializersBookByline, EditionSerializersEdition } from \"types/serializers\";\n\nconst EditEditionModal = lazy(() =>\n import(\"features/librarians\").then((module) => ({\n default: module.EditEditionModal,\n }))\n);\n\nexport default function EditEditionButton({\n book,\n edition,\n}: {\n book: BookSerializersBookByline;\n edition: EditionSerializersEdition;\n}) {\n const [open, setOpen] = useState(false);\n\n const onClose = () => {\n setOpen(!open);\n };\n\n return (\n <>\n \n\n {open ? (\n \n \n \n ) : (\n false\n )}\n \n );\n}\n","import Text from \"hardcover-ui/components/Text\";\nimport EditableAudioProgress from \"./EditableAudioProgress/EditableAudioProgress\";\nimport EditablePageProgress from \"./EditablePageProgress/EditablePageProgress\";\nimport EditionSelector from \"components/EditionSelector/EditionSelector\";\nimport { secondsFormat } from \"lib/bookUtils\";\nimport { audioReadingFormat, textReadingFormat } from \"types/ReadingFormatType\";\nimport EditEditionButton from \"./EditEditionButton/EditEditionButton\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport { BookSerializersBookByline, EditionSerializersEdition, UserBookSerializersUserBookDate } from \"types/serializers\";\n\nexport default function EditableCurrentProgress({\n onChange,\n book,\n edition,\n isOwner,\n userBookRead,\n}: {\n onChange?: (progress: number) => Promise;\n book: BookSerializersBookByline;\n edition: EditionSerializersEdition | null;\n isOwner: boolean;\n userBookRead: UserBookSerializersUserBookDate;\n}) {\n // Need Edition to set progress, prompt them to choose an edition\n if (!edition) {\n if (isOwner) {\n return (\n \n Set Edition\n \n Set edition to track progress\n \n \n );\n }\n return false;\n }\n\n const hasDuration =\n edition.readingFormatId === audioReadingFormat.id\n ? edition?.audioSeconds > 0\n : edition?.pages > 0;\n\n // Edition is set, but it doesn't have a duration (pages or audioSeconds)\n if (!hasDuration) {\n if (isOwner) {\n return (\n
\n \n Change Edition\n Edition\n \n \n
\n );\n }\n return false;\n }\n\n if (edition.readingFormatId === 2) {\n return (\n
\n {isOwner ? (\n \n Update Your Progress\n \n ) : (\n false\n )}\n \n {isOwner ? (\n \n <>\n \n \n \n ) : (\n \n )}\n Currently at{\" \"}\n {onChange ? (\n \n ) : (\n \n {userBookRead.progressSeconds\n ? secondsFormat(userBookRead.progressSeconds, {\n showSeconds: true,\n })\n : \"0h 0m\"}\n \n )}\n of \n \n {edition?.audioSeconds\n ? secondsFormat(edition?.audioSeconds)\n : \"unknown length\"}\n \n .\n \n
\n );\n }\n return (\n
\n {isOwner ? (\n \n Update Your Progress\n \n ) : (\n false\n )}\n \n {isOwner ? (\n \n <>\n \n \n \n ) : (\n \n )}\n
\n On page \n {onChange ? (\n \n ) : (\n \n {userBookRead.progressPages\n ? userBookRead.progressPages.toLocaleString()\n : \"0\"}\n \n )}\n of \n {edition?.pages ? edition.pages.toLocaleString() : \"unknown\"}.\n
\n \n
\n );\n}\n","import { BookButton } from \"features/BookButton\";\nimport classNames from \"lib/classNames\";\nimport TrackProgress from \"components/progress/TrackProgress/TrackProgress\";\nimport EditableCurrentProgress from \"components/progress/EditableCurrentProgress/EditableCurrentProgress\";\nimport ProgressSlider from \"components/progress/ProgressSlider/ProgressSlider\";\nimport { audioReadingFormat } from \"types/ReadingFormatType\";\nimport { debounce } from \"lodash\";\nimport { EditionSerializersEdition, LetterbooksSerializersBook, UserBookSerializersUserBook, UserBookSerializersUserBookDate } from \"types/serializers\";\n\nexport default function CurrentlyReadingProgress({\n book,\n edition,\n isOwner,\n onProgressChange,\n trackRead,\n userBook,\n userBookRead,\n}: {\n book: LetterbooksSerializersBook;\n edition: EditionSerializersEdition;\n isOwner: boolean;\n onProgressChange: (newProgress: number) => Promise;\n userBook: UserBookSerializersUserBook;\n userBookRead?: UserBookSerializersUserBookDate;\n trackRead: () => void;\n}) {\n if (!userBookRead && isOwner) {\n return (\n \n );\n }\n\n if (!userBookRead) {\n return false;\n }\n\n const debouncedChange = debounce(onProgressChange, 500);\n const duration =\n edition?.readingFormatId === audioReadingFormat.id\n ? edition?.audioSeconds\n : edition?.pages;\n const hasDuration = duration > 0;\n\n return (\n
\n \n \n\n \n \n
\n \n\n \n \n );\n}\n","import { BookSeriesTag } from \"components/series/BookSeriesTag\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport ContributionsList from \"components/authors/ContributionsList\";\nimport { EditionSerializersEdition, LetterbooksSerializersBook } from \"types/serializers\";\n\nexport default function CurrentlyReadingBookDetails({\n book,\n edition,\n}: {\n book: LetterbooksSerializersBook;\n edition?: EditionSerializersEdition;\n}) {\n const target = edition ? edition : book;\n\n return (\n
\n

\n \n

\n
\n \n {target.title}\n \n \n
\n
\n );\n}\n","import classNames from \"lib/classNames\";\nimport ReactAnimatedNumber from \"@crossfox/react-animated-number\";\nimport { useRef } from \"react\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport checkmark from \"icons/solid/check.svg\";\n\ninterface Props {\n className?: string;\n progress?: number;\n}\n\nexport default function CircleBookProgress({\n className = \"\",\n progress = 0,\n}: Props) {\n // const [lastProgress, setLastProgress] = useState(progress);\n const radius = 37;\n const circumference = 2 * Math.PI * radius;\n const progressRadius = (progress / 100) * circumference;\n const starsRef = useRef();\n\n // Todo: Add party js\n // let party;\n // if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n // eslint-disable-next-line global-require\n // party = require(\"party-js\");\n // }\n\n // useEffect(() => {\n // if (\n // party &&\n // progress === 100 &&\n // lastProgress !== 100 &&\n // starsRef.current &&\n // starsRef.current.checkVisibility\n // ) {\n // const isVisible = starsRef.current.checkVisibility({\n // checkOpacity: true,\n // checkVisibilityCSS: true,\n // });\n // if (isVisible) {\n // setLastProgress(progress);\n // party.default.sparkles(starsRef.current, {\n // count: party.default.variation.range(20, 30),\n // speed: party.default.variation.range(50, 150),\n // size: party.default.variation.range(0.5, 1.5),\n // });\n // }\n // }\n // }, [progress]);\n\n return (\n
\n \n \n \n \n \n = 100 ? \"text-success\" : \"\",\n \"z-10 text-lg font-bold pointer-events-none select-none text-center leading-4\"\n )}\n >\n \n = 100 ? \"text-success\" : \"\"}\n />\n \n \n 100 ? 100 : progress}\n duration={1000}\n suffix=\"%\"\n />\n
\n = 100 ? \"text-success\" : \"text-secondary\"\n }`}\n >\n Done\n
\n \n

\n
\n \n );\n}\n","import ResponsiveCoverLink from \"components/Cover/ResponsiveCoverLink\";\nimport CurrentlyReadingProgress from \"./CurrentlyReadingProgress/CurrentlyReadingProgress\";\nimport CurrentlyReadingBookDetails from \"./CurrentlyReadingBookDetails/CurrentlyReadingBookDetails\";\nimport CircleBookProgress from \"components/progress/CircleProgress/CircleProgress\";\nimport { EditionSerializersEdition, LetterbooksSerializersBook, UserBookSerializersUserBook, UserBookSerializersUserBookDate } from \"types/serializers\";\n\nexport default function CurrentlyReadingCardContent({\n book,\n edition,\n isOwner,\n userBook,\n userBookRead,\n trackRead,\n onProgressChange,\n}: {\n book: LetterbooksSerializersBook;\n edition?: EditionSerializersEdition;\n isOwner: boolean;\n userBook: UserBookSerializersUserBook;\n userBookRead?: UserBookSerializersUserBookDate;\n onProgressChange?: (newProgress: number) => Promise;\n trackRead?: () => void;\n}) {\n return (\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n\n
\n \n\n \n \n
\n
\n
\n
\n \n
\n \n );\n}\n","import useUserBookReadService from \"services/UserBookReadService/useUserBookReadService\";\nimport CurrentlyReadingCardContent from \"./CurrentlyReadingCardContent/CurrentlyReadingCardContent\";\nimport useCurrentUserId from \"hooks/user/useCurrentUserId\";\nimport useUserBookService from \"services/UserBookService/useUserBookService\";\nimport { LetterbooksSerializersBook, UserBookSerializersUserBook } from \"types/serializers\";\nimport { toast } from \"sonner\";\n\nexport default function CurrentlyReadingCard({\n userBook: initialUserBook,\n book,\n}: {\n userBook: UserBookSerializersUserBook;\n book: LetterbooksSerializersBook;\n}) {\n const initialUserBookRead = initialUserBook.datesRead[initialUserBook.datesRead.length - 1];\n const currentUserId = useCurrentUserId();\n const { userBook, insertDateRead } = useUserBookService(book.id);\n const { userBookRead, updateProgress, setUserBookReadId } = useUserBookReadService({ bookId: book.id, userBookReadId: initialUserBookRead?.id });\n const isOwner = initialUserBook?.userId === currentUserId;\n\n function trackRead() {\n insertDateRead().then(\n (newUserBookRead) => {\n if (newUserBookRead) {\n setUserBookReadId(newUserBookRead.id);\n toast.success(\"Now tracking progress for this book\");\n }\n }\n );\n };\n\n if(isOwner && !userBook) {\n return

Ops, something went wrong with this book. Please try reload this page.

\n }\n\n // Pass in dynamic options for the owner\n return (\n \n );\n}\n","import CurrentlyReadingCard from \"components/Bookcards/CurrentlyReadingCard/CurrentlyReadingCard\";\nimport { LetterbookLibraryType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookCurrentlyReadingRow({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n const { book, data } = letterbook;\n const { ownerUserBook } = data;\n\n return ;\n}\n","import Stars from \"components/BookReview/Stars\";\nimport BookHighlights from \"components/BookRow/BookHighlights\";\nimport LocalizedDate from \"components/shared/LocalizedDate\";\nimport ReadingFormatIcon from \"components/shared/ReadingFormatIcon\";\nimport { UserBookAvatar } from \"components/userBook/UserBookAvatars\";\nimport Text from \"hardcover-ui/components/Text\";\nimport { BookSerializersBookByline, UserBookSerializersUserBookByline, UserBookSerializersUserBookDate } from \"types/serializers\";\nimport { slugIdConstants } from \"types/UserBookStatusType\";\n\nexport default function UserBookHighlights({\n book,\n userBook,\n userBookRead,\n hideHighlights = false,\n dateAdded = true\n}: {\n book: BookSerializersBookByline;\n userBook: UserBookSerializersUserBookByline;\n userBookRead?: UserBookSerializersUserBookDate\n hideHighlights?: boolean;\n dateAdded?: boolean;\n}) {\n const showUserHighlights = userBook.rating > 0 || userBookRead?.finishedAt || userBook.lastReadDate || (dateAdded && userBook.dateAdded);\n const isFinished = userBookRead?.finishedAt || userBook.statusId === slugIdConstants.read;\n\n if(!showUserHighlights) {\n if(hideHighlights) {\n return false;\n } else {\n return \n }\n }\n\n return (\n
\n
\n \n
\n { isFinished ? (\n <>\n { userBookRead?.finishedAt ? (\n \n { userBookRead?.edition?.readingFormatId && (\n \n \n \n )}\n \n Finished on \n \n \n ) : (\n <>\n {userBook.lastReadDate ? (\n \n Last finished on \n \n ) : (\n \n Added on \n \n )}\n \n )}\n \n ) : (\n <>\n \n Added on \n \n \n )}\n\n { userBook.rating > 0 && (\n \n )}\n
\n
\n {!hideHighlights && !isFinished && }\n
\n );\n}\n","import CoverLink from \"components/Cover/CoverLink\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport { BookSeriesTag } from \"components/series/BookSeriesTag\";\nimport BookMatchPercentage from \"components/match/BookMatchPercentage/BookMatchPercentage\";\nimport ContributionsList from \"components/authors/ContributionsList\";\nimport { BookButton } from \"features/BookButton\";\nimport {\n EditionSerializersEditionByline,\n LetterbooksSerializersBook,\n UserBookSerializersUserBookByline,\n} from \"types/serializers\";\nimport UserBookHighlights from \"./UserBookHighlights\";\n\nexport default function UserBookByStatusCardContent({\n book,\n className = \"\",\n edition,\n userBook,\n}: {\n book: LetterbooksSerializersBook;\n className?: string;\n edition?: EditionSerializersEditionByline;\n userBook: UserBookSerializersUserBookByline;\n}) {\n return (\n \n
\n \n
\n
\n

\n \n \n

\n
\n \n {edition ? edition.title : book.title}\n \n \n
\n
\n \n
\n \n
\n
\n
\n \n );\n}\n","import UserBookByStatusCardContent from \"./UserBookByStatusCardContent\";\nimport { LetterbooksSerializersBook, UserBookSerializersUserBook } from \"types/serializers\";\n\nexport default function UserBookByStatusWatcher({\n className = \"\",\n book,\n userBook,\n}: {\n book: LetterbooksSerializersBook;\n userBook: UserBookSerializersUserBook;\n className?: string;\n}) {\n\n return (\n \n );\n}\n","import UserBookByStatusCard from \"components/Bookcards/UserBookByStatusCard/UserBookByStatusCard\";\nimport { LetterbookLibraryType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookUserBookByStatusCard({\n letterbook,\n}: {\n letterbook: LetterbookLibraryType;\n}) {\n return (\n \n );\n}\n","import {\n LetterbookSettingType,\n LetterbooksLibraryConditionType,\n} from \"features/Letterbooks/types\";\nimport LetterbookUserBookShelfRow from \"features/Letterbooks/components/cards/LetterbookUserBookShelfRow/LetterbookUserBookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport LetterbookCurrentlyReadingRow from \"features/Letterbooks/components/cards/LetterbookCurrentlyReadingRow/LetterbookCurrentlyReadingRow\";\nimport LetterbookUserBookByStatusCard from \"features/Letterbooks/components/cards/LetterbookUserBookByStatusCard/LetterbookUserBookByStatusCard\";\nimport { slugIdConstants } from \"types/UserBookStatusType\";\n\nconst componentMap = {\n card: {\n // By Status\n [slugIdConstants[\"want-to-read\"]]: LetterbookUserBookByStatusCard,\n [slugIdConstants[\"currently-reading\"]]: LetterbookCurrentlyReadingRow,\n [slugIdConstants.read]: LetterbookUserBookByStatusCard,\n [slugIdConstants.paused]: LetterbookUserBookByStatusCard,\n [slugIdConstants[\"did-not-finish\"]]: LetterbookUserBookByStatusCard,\n [slugIdConstants.ignored]: LetterbookUserBookByStatusCard,\n },\n shelf: LetterbookUserBookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function LibraryRowComponent(settings: LetterbookSettingType) {\n if (settings.view === \"card\") {\n const conditions = settings.conditions as LetterbooksLibraryConditionType;\n return (\n componentMap[settings.view][conditions.status_id] ||\n LetterbookUserBookByStatusCard\n );\n }\n return componentMap[settings.view];\n}\n","import BookRow from \"components/Bookcards/BookRow/BookRow\";\nimport BookRowRanked from \"components/Bookcards/BookRowRanked/BookRowRanked\";\nimport UserBookHighlights from \"components/Bookcards/UserBookByStatusCard/UserBookHighlights\";\nimport BookHighlights from \"components/BookRow/BookHighlights\";\nimport {\n LetterbookListType,\n LetterbookSettingType,\n} from \"features/Letterbooks/types\";\n\nexport default function LetterbookListRow({\n letterbook,\n settings,\n}: {\n letterbook: LetterbookListType;\n settings: LetterbookSettingType;\n}) {\n const { list } = settings.context;\n const { ownerUserBook } = letterbook.data;\n if (list.ranked) {\n return (\n \n
\n \n { ownerUserBook && (\n \n )}\n
\n \n );\n }\n return (\n \n
\n \n { ownerUserBook && (\n \n )}\n
\n \n );\n}\n","import CoverLink from \"components/Cover/CoverLink\";\nimport { LetterbooksConditionType, LetterbookType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookShelfRow({\n letterbook,\n settings,\n}: {\n letterbook: LetterbookType;\n settings: LetterbooksConditionType;\n}) {\n return (\n
\n \n
\n );\n}\n","import LetterbookListRow from \"features/Letterbooks/components/cards/LetterbookListRow/LetterbookListRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookListRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function LibraryRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import BookRow from \"components/Bookcards/BookRow/BookRow\";\nimport { LetterbookType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookRow({\n letterbook,\n}: {\n letterbook: LetterbookType;\n}) {\n return (\n
\n \n
\n );\n}\n","import LetterbookRow from \"features/Letterbooks/components/cards/LetterbookRow/LetterbookRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function LibraryRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import BookRowRanked from \"components/Bookcards/BookRowRanked/BookRowRanked\";\nimport UserBookHighlights from \"components/Bookcards/UserBookByStatusCard/UserBookHighlights\";\nimport { LetterbookGoalType, LetterbookSettingType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookGoalRow({\n letterbook,\n settings,\n}: {\n letterbook: LetterbookGoalType;\n settings: LetterbookSettingType;\n}) {\n const { data } = letterbook;\n const { userBookRead, userBook } = data;\n\n if (!userBookRead) {\n return <>;\n }\n\n return (\n \n \n \n );\n}\n","import CoverLink from \"components/Cover/CoverLink\";\nimport { LetterbookGoalType, LetterbooksGoalConditionType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookGoalShelf({\n letterbook,\n settings,\n}: {\n settings: LetterbooksGoalConditionType;\n letterbook: LetterbookGoalType;\n}) {\n const { data } = letterbook;\n const { userBookRead } = data;\n \n if (!userBookRead) {\n return <>;\n }\n\n return (\n
\n \n
\n );\n}\n","import LetterbookGoalRow from \"features/Letterbooks/components/cards/LetterbookGoalRow/LetterbookGoalRow\";\nimport LetterbookGoalShelf from \"features/Letterbooks/components/cards/LetterbookGoalShelf/LetterbookGoalShelf\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookGoalRow,\n shelf: LetterbookGoalShelf,\n table: LetterbookTableRow,\n};\n\nexport default function GoalRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import LetterbookRow from \"features/Letterbooks/components/cards/LetterbookRow/LetterbookRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function AuthorRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import EditionType from \"types/EditionType\";\nimport ContributionsList from \"components/authors/ContributionsList\";\nimport { BookSeriesTag } from \"components/series/BookSeriesTag\";\nimport BookMatchPercentage from \"components/match/BookMatchPercentage/BookMatchPercentage\";\nimport CoverLink from \"components/Cover/CoverLink\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport { ResizeableBookButton } from \"features/BookButton\";\nimport BookHighlights from \"components/BookRow/BookHighlights\";\nimport { LetterbooksSerializersBook } from \"types/serializers\";\n\ninterface Props {\n book: LetterbooksSerializersBook;\n edition?: EditionType;\n size: \"sm\" | \"md\" | \"lg\";\n className?: string;\n referrerUserId?: number;\n settings?: {\n showInfoClass?: string;\n linkContributions?: boolean;\n };\n}\n\nexport default function LetterbooksBookRow({\n book,\n edition,\n size = \"md\",\n className = \"\",\n referrerUserId,\n settings = {\n showInfoClass: \"\",\n linkContributions: false,\n },\n}: Props) {\n const coverSize = size === \"lg\" ? \"md\" : size === \"md\" ? \"sm\" : \"xs\";\n\n return (\n
\n
\n \n
\n
\n

\n \n \n

\n
\n \n {edition ? edition.title : book.title}\n \n \n
\n
\n \n
\n \n
\n
\n
\n
\n );\n}\n","import PromptBookVote from \"components/prompts/PromptBookVote\";\nimport {\n LetterbookPromptType,\n} from \"features/Letterbooks/types\";\nimport LetterbooksBookRow from \"../shared/LetterbooksBookRow\";\n\nexport default function LetterbookPromptRow({\n letterbook,\n}: {\n letterbook: LetterbookPromptType;\n}) {\n const { data } = letterbook;\n\n return (\n \n \n \n \n );\n}\n","import LetterbookPromptRow from \"features/Letterbooks/components/cards/LetterbookPromptRow/LetterbookPromptRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookPromptRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function PromptRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import { LetterbookSeriesType } from \"features/Letterbooks/types\";\nimport LetterbooksBookRow from \"../shared/LetterbooksBookRow\";\nimport Text from \"hardcover-ui/components/Text\";\n\nexport default function LetterbookSeriesRow({\n letterbook,\n}: {\n letterbook: LetterbookSeriesType;\n}) {\n const { bookSeries } = letterbook.data;\n const size =\n bookSeries.position &&\n Math.round(bookSeries.position) === bookSeries.position\n ? \"lg\"\n : \"sm\";\n return (\n \n \n {bookSeries.position ? (\n <>#{bookSeries.position}\n ) : (\n <>{bookSeries.details}\n )}\n \n \n \n );\n}\n","import LetterbookSeriesRow from \"features/Letterbooks/components/cards/LetterbookSeriesRow/LetterbookSeriesRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookSeriesRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function PromptRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import BookRow from \"components/Bookcards/BookRow/BookRow\";\nimport { LetterbookEditionType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookRow({\n letterbook,\n}: {\n letterbook: LetterbookEditionType;\n}) {\n const { data } = letterbook;\n\n return (\n
\n \n
\n );\n}\n","import CoverLink from \"components/Cover/CoverLink\";\nimport { LetterbookEditionType } from \"features/Letterbooks/types\";\n\nexport default function LetterbookEditionShelfRow({\n letterbook,\n}: {\n letterbook: LetterbookEditionType;\n}) {\n const { data } = letterbook;\n\n return (\n
\n \n
\n );\n}\n","import LetterbookEditionRow from \"features/Letterbooks/components/cards/LetterbookEditionRow/LetterbookEditionRow\";\nimport LetterbookEditionShelfRow from \"features/Letterbooks/components/cards/LetterbookEditionShelfRow/LetterbookEditionShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookEditionRow,\n shelf: LetterbookEditionShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function PublisherRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import LetterbookRow from \"features/Letterbooks/components/cards/LetterbookRow/LetterbookRow\";\nimport LetterbookShelfRow from \"features/Letterbooks/components/cards/LetterbookShelfRow/LetterbookShelfRow\";\nimport LetterbookTableRow from \"features/Letterbooks/components/cards/LetterbookTableRow/LetterbookTableRow\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\nconst componentMap = {\n card: LetterbookRow,\n shelf: LetterbookShelfRow,\n table: LetterbookTableRow,\n};\n\nexport default function CharacterRowComponent(settings: LetterbookSettingType) {\n return componentMap[settings.view];\n}\n","import { LetterbookRowComponentType, LetterbookSettingType } from \"../../types\";\nimport {\n listRowComponents,\n libraryRowComponents,\n tagRowComponents,\n promptRowComponents,\n authorRowComponents,\n goalRowComponents,\n seriesRowComponents,\n publisherRowComponents,\n characterRowComponents,\n} from \"./contexts\";\n\ntype RowGeneratorType = (\n settings: LetterbookSettingType\n) => LetterbookRowComponentType;\n\nconst generator = {\n list: listRowComponents,\n library: libraryRowComponents,\n tag: tagRowComponents,\n prompt: promptRowComponents,\n goal: goalRowComponents,\n author: authorRowComponents,\n series: seriesRowComponents,\n publisher: publisherRowComponents,\n character: characterRowComponents,\n};\n\n// Returns the correct row component based on the type and view\nexport default function findRowComponent(\n settings: LetterbookSettingType\n): LetterbookRowComponentType {\n const rowMap = generator[settings.type] as unknown as RowGeneratorType;\n return rowMap(settings);\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport Icon from \"hardcover-ui/components/Icon\";\nimport Button from \"hardcover-ui/components/Button\";\nimport LoadingSpinner from \"hardcover-ui/components/LoadingSpinner\";\nimport circlePlus from \"icons/solid/circle-plus.svg\";\n\nexport default function InactiveAddNewColumnButton({\n loading = false,\n onClick = () => {},\n}: {\n loading?: boolean;\n onClick?: any;\n}) {\n return (\n \n );\n}\n","import { Suspense, lazy, useState } from \"react\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\nimport InactiveAddNewColumnButton from \"./InactiveAddNewColumnButton\";\n\nconst ActiveAddNewColumnButton = lazy(\n () => import(\"./ActiveAddNewColumnButton\")\n);\n\nexport default function AddNewColumn({\n settings,\n}: {\n settings: LetterbookSettingType;\n}) {\n const [clicked, setClicked] = useState(false);\n\n // No more columns to show\n if (settings.unusedColumns.length === 0) {\n return false;\n }\n\n return (\n <>\n {clicked ? (\n }>\n \n \n ) : (\n \n )}\n \n );\n}\n","import { LetterbookSettingType } from \"features/Letterbooks/types\";\nimport Avatar from \"hardcover-ui/components/Avatar\";\nimport generateUrl from \"features/Letterbooks/utils/generateUrl\";\nimport { Link } from \"@inertiajs/react\";\nimport trash from \"icons/solid/trash.svg\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport AddNewColumn from \"./AddNewColumn/AddNewColumn\";\n\nexport default function TableHeaders({\n settings,\n}: {\n settings: LetterbookSettingType;\n}) {\n const { tableColumns } = settings;\n\n return (\n \n \n {tableColumns.map((column) => (\n \n
\n
\n \n {column.user ? (\n \n ) : (\n false\n )}\n {column.title}\n \n\n \n \n \n
\n\n {column === tableColumns[tableColumns.length - 1] ? (\n \n ) : (\n false\n )}\n
\n \n ))}\n \n \n );\n}\n","import {\n LetterbookSettingType,\n LetterbookRowComponentType,\n} from \"features/Letterbooks/types\";\nimport TableHeaders from \"./TableHeaders\";\nimport { LetterbooksSerializersLetterbook } from \"types/serializers\";\n\ninterface LetterbooksCollectionOptions {\n letterbooks: LetterbooksSerializersLetterbook[];\n settings: LetterbookSettingType;\n RowComponent: LetterbookRowComponentType;\n}\n\nexport default function CardCollection({\n letterbooks,\n settings,\n RowComponent,\n}: LetterbooksCollectionOptions) {\n return (\n
\n \n \n\n \n {letterbooks.map((letterbook) => (\n \n ))}\n \n
\n
\n );\n}\n","import {\n LetterbookSettingType,\n LetterbookRowComponentType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksSerializersLetterbook } from \"types/serializers\";\n\ninterface LetterbooksCollectionOptions {\n letterbooks: LetterbooksSerializersLetterbook[];\n settings: LetterbookSettingType;\n RowComponent: LetterbookRowComponentType;\n}\n\nexport default function CardCollection({\n letterbooks,\n settings,\n RowComponent,\n}: LetterbooksCollectionOptions) {\n return (\n
\n {letterbooks.map((letterbook) => (\n \n ))}\n
\n );\n}\n","import {\n LetterbookRowComponentType,\n LetterbookSettingType,\n} from \"features/Letterbooks/types\";\nimport { LetterbooksSerializersLetterbook } from \"types/serializers\";\n\ninterface LetterbooksCollectionOptions {\n letterbooks: LetterbooksSerializersLetterbook[];\n settings: LetterbookSettingType;\n RowComponent: LetterbookRowComponentType;\n}\n\nexport default function ShelfCollection({\n letterbooks,\n settings,\n RowComponent,\n}: LetterbooksCollectionOptions) {\n return (\n
\n {letterbooks.map((letterbook) => (\n \n ))}\n
\n );\n}\n","import findRowComponent from \"features/Letterbooks/utils/views/findRowComponent\";\nimport {\n LetterbookSettingType,\n LetterbooksPageProps,\n} from \"features/Letterbooks/types\";\nimport LetterbookTableCollection from \"./TableCollection/TableCollection\";\nimport LetterbookCardCollection from \"./CardCollection/CardCollection\";\nimport LetterbookShelfCollection from \"./ShelfCollection/ShelfCollection\";\nimport { usePage } from \"@inertiajs/react\";\n\nconst CollectionComponents = {\n card: LetterbookCardCollection,\n table: LetterbookTableCollection,\n shelf: LetterbookShelfCollection,\n};\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function LetterbooksCollection({\n settings,\n}: LetterbookOptions) {\n const { letterbooks } = usePage().props;\n const CollectionView = CollectionComponents[settings.view];\n const RowComponent = findRowComponent(settings);\n\n return (\n \n );\n}\n","import { LetterbookSettingType, LetterbooksPageProps } from \"features/Letterbooks/types\";\nimport Icon from \"hardcover-ui/components/Icon\";\nimport chevronRight from \"icons/solid/chevron-right.svg\";\nimport chevronLeft from \"icons/solid/chevron-left.svg\";\nimport TextLink from \"hardcover-ui/components/TextLink\";\nimport generateUrl from \"features/Letterbooks/utils/generateUrl\";\nimport { usePage } from \"@inertiajs/react\";\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function LetterbooksPagination({\n settings,\n}: LetterbookOptions) {\n const { letterbooks } = usePage().props;\n const { limit, start } = settings;\n\n const { totalBooks } = letterbooks;\n if (letterbooks.letterbooks.length === limit && totalBooks > start + limit) {\n return (\n
\n {start - limit >= 0 ? (\n \n \n Previous\n \n ) : (\n \n )}\n {start + limit < totalBooks ? (\n \n Next\n \n \n ) : (\n \n )}\n
\n );\n }\n\n return false;\n}\n","import LetterbooksFilterWarning from \"./LetterbooksFilterWarning/LetterbooksFilterWarning\";\nimport LetterbooksCollection from \"./LetterbooksCollection/LetterbooksCollection\";\nimport LetterbooksPagination from \"./LetterbooksPagination/LetterbooksPagination\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function LetterbooksBooks({\n settings,\n}: LetterbookOptions) {\n return (\n <>\n \n \n \n \n );\n}\n","import LoadingSkeleton from \"components/ui/Skeleton\";\n\nexport const CardSkeleton = () => {\n return (\n
\n
\n \n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n );\n};\n\nexport default function CardCollectionSkeleton() {\n return (\n <>\n \n \n \n \n );\n}\n","import LoadingSkeleton from \"components/ui/Skeleton\";\n\nconst ShelfSkeleton = () => {\n return ;\n};\n\nexport default function ShelfCollectionSkeleton() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n","import { ReactElement, Suspense } from \"react\";\nimport CardCollectionSkeleton from \"../LetterbooksBooks/LetterbooksCollection/CardCollection/CardCollectionSkeleton/CardCollectionSkeleton\";\nimport ShelfCollectionSkeleton from \"../LetterbooksBooks/LetterbooksCollection/ShelfCollection/ShelfCollectionSkeleton/ShelfCollectionSkeleton\";\nimport LetterbooksViewType from \"types/LetterbooksViewType\";\n\ninterface LetterbookOptions {\n children: ReactElement;\n view: LetterbooksViewType;\n}\n\nconst Skeletons = {\n card: CardCollectionSkeleton,\n table: CardCollectionSkeleton,\n bluk: CardCollectionSkeleton,\n shelf: ShelfCollectionSkeleton,\n};\n\nexport default function LetterbooksLoadingSkeleton({\n view,\n children,\n}: LetterbookOptions) {\n const Skeleton = Skeletons[view];\n return }>{children};\n}\n","import Container from \"hardcover-ui/components/Container\";\nimport { LetterbookSettingType } from \"features/Letterbooks/types\";\nimport LetterbooksControls from \"./LetterbooksControls/LetterbooksControls\";\nimport LetterbooksBooks from \"./LetterbooksBooks/LetterbooksBooks\";\nimport LetterbooksLoadingSkeleton from \"./LetterbooksLoadingSkeleton/LetterbooksLoadingSkeleton\";\n\ninterface LetterbookOptions {\n settings: LetterbookSettingType;\n}\n\nexport default function LetterbooksWrapper({\n settings,\n}: LetterbookOptions) {\n return (\n \n \n\n \n \n \n \n );\n}\n","import parseSettingsFromContext from \"features/Letterbooks/utils/parseSettingsFromContext\";\nimport LetterbooksWrapper from \"./LetterbooksWrapper/LetterbooksWrapper\";\nimport { LetterbooksSerializersLetterbooks } from \"types/serializers\";\n\ninterface LetterbookOptions {\n context: LetterbooksSerializersLetterbooks;\n}\n\nexport default function Letterbooks({ context }: LetterbookOptions) {\n const settings = parseSettingsFromContext(context);\n return ;\n}\n"],"file":"assets/Letterbooks-lKcTdThw.js"}