{"version":3,"file":"static/chunks/30276-8d7940611f977c82.js","mappings":"wIEwBYA,kEFEG,SAASC,EAAmBC,CAMjB,KANiB,CACzCC,OAAAA,CAAM,CACNC,UAAAA,CAAS,CACTC,QAAAA,CAAO,CACPC,SAAAA,CAAQ,CACRC,aAAAA,CAAY,CACY,CANiBL,EAOzC,MACE,GAAAM,EAAAC,IAAA,EAACC,MAAAA,CACCC,UAAW,GAAkBJ,MAAAA,CAAfK,IAAAA,IAAW,CAAC,KAAgDC,MAAA,CAA7CN,EAAeK,GAAAA,CAAAA,iBAAwB,CAAG,IACvEP,QAASA,YAERC,EACAH,GACC,GAAAK,EAAAM,GAAA,EAACJ,MAAAA,CACCC,UAAW,GAAwBC,MAAAA,CAArBA,IAAAA,UAAiB,CAAC,KAAsCC,MAAA,CAAnCD,GAAM,CAAC,eAAyBC,MAAA,CAAVT,GAAY,WAErE,GAAAI,EAAAM,GAAA,EAACC,IAAAA,CAAEJ,UAAU,6BAKvB,gBCwCAK,EA7CA,SAAkDd,CAOxB,KAPwB,CAChDe,QAAAA,CAAO,CACPC,YAAAA,CAAW,CACXC,MAAAA,CAAK,CACLC,QAAAA,CAAO,CACPC,kBAAAA,CAAiB,CACjBd,aAAAA,CAAY,CACY,CAPwBL,EAQ1C,CAAEoB,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,EAAe,aAGvBC,EAAUC,CAAAA,EAAAA,EAAAA,OAAAA,EACd,IACER,EAAQS,GAAG,CAAC,CAACC,EAAQZ,IACnB,GAAAP,EAAAM,GAAA,EAACc,KAAAA,CACCjB,UAAW,GAAiDC,MAAAA,CAA9CA,GAAAA,CAAAA,mCAA0C,CAAC,KAAuDe,MAAAA,CAApDf,GAAAA,CAAAA,yCAAgD,CAAC,KAAoFe,MAAAA,CAAjFA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQE,QAAQ,EAAGjB,GAAAA,CAAAA,8CAAqD,CAAG,GAAG,KAA0FL,MAAAA,CAAvFoB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,WAAW,EAAGlB,GAAAA,CAAAA,iDAAwD,CAAG,GAAG,KAAkFC,MAAA,CAA/EN,EAAeK,GAAAA,CAAAA,mDAA0D,CAAG,aAGnWe,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQI,gBAAgB,EACvBJ,MAAAA,EAAAA,KAAAA,EAAAA,EAAQI,gBAAgB,GAExB,GAAAvB,EAAAM,GAAA,EAACb,EAAkBA,CACjBE,OAAQiB,GAAWO,EAAOK,KAAK,CAC/B5B,UAAWgB,IAAYO,EAAOK,KAAK,CAAGb,EAAQ,MAC9Cd,QAAS,IAAMa,EAAYC,EAAOQ,EAAOK,KAAK,WAE7CV,EAAEK,EAAOM,UAAU,KAVnB,mBAAqBpB,MAAA,CAAFE,KAe9B,CAACE,EAASG,EAASD,EAAOZ,EAAce,EAAGJ,EAAY,EAGzD,MACE,GAAAV,EAAAM,GAAA,EAACoB,QAAAA,UACC,GAAA1B,EAAAM,GAAA,EAACqB,KAAAA,CACCxB,UAAW,GAAiDU,MAAAA,CAA9CT,GAAAA,CAAAA,mCAA0C,CAAC,KAAkFC,MAAA,CAA/EQ,EAAoBT,GAAAA,CAAAA,8CAAqD,CAAG,aAEvIY,KAIT,GC9DYxB,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,qDExBL,IAAMoC,EAAmC,CAAC,SAAU,MAAO,OAAO,CCyHzE,IAAAC,EAAeC,CAAAA,EAAAA,EAAAA,IAAAA,EA1Ef,SAA6CpC,CAQtB,KARsB,CAC3Ce,QAAAA,CAAO,CACPsB,IAAAA,CAAG,CACHC,MAAAA,CAAK,CACLnB,kBAAAA,CAAiB,CACjBoB,cAAAA,CAAa,CACbC,eAAAA,CAAc,CACdC,cAAAA,CAAa,CACQ,CARsBzC,EAiBrC0C,EAAgBC,CAAAA,EAAAA,EAAAA,WAAAA,EACpB,CAACN,EAAQZ,KACP,GACEe,GACA,CAACN,EAAuBU,IAAI,CAACC,GAAKpB,EAAOK,KAAK,EAAIe,IAClD,CAACX,EAAuBU,IAAI,CAACC,GAAKpB,EAAOM,UAAU,EAAIc,GACvD,CACAL,EAAeH,GACf,MACF,CACF,EACA,CAACG,EAAe,EAGlB,MACE,GAAAlC,EAAAM,GAAA,EAACqB,KAAAA,CACCxB,UAAW,OAA0DgC,MAAAA,CAAnD/B,GAAAA,CAAAA,wCAA+C,CAAC,KAAmI2B,MAAAA,CAAhII,KAAiBK,GAAjBL,EAA6BA,EAAcJ,GAAOC,EAAQ,GAAK,EAAI5B,GAAAA,CAAAA,6CAAoD,CAAG,GAAG,KAAiG2B,MAAAA,CAA9FA,GAAOlB,EAAoBT,GAAAA,CAAAA,mDAA0D,CAAG,GAAG,KAA0F8B,MAAAA,CAAvFH,GAAOE,EAAgB7B,GAAAA,CAAAA,gDAAuD,CAAG,GAAG,KAAwDC,MAAA,CAArD6B,EAAiB9B,GAAAA,CAAAA,uBAA8B,CAAG,GAAG,cAE9aK,EAAQS,GAAG,CAAC,CAACC,EAAQsB,IACpB,EAAWC,UAAU,CAEjB,GAAA1C,EAAAM,GAAA,EAACc,KAAAA,CACCvB,QAAS,IAAMuC,EAAcL,EAAKZ,GAClChB,UAAW,GAAiDgB,MAAAA,CAA9Cf,GAAAA,CAAAA,mCAA0C,CAAC,KAAoFe,MAAAA,CAAjFA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQE,QAAQ,EAAGjB,GAAAA,CAAAA,8CAAqD,CAAG,GAAG,KAAuFC,MAAA,CAApFc,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,WAAW,EAAGlB,GAAAA,CAAAA,iDAAwD,CAAG,aAG7Ne,EAAOuB,UAAU,CAACX,EAAKC,IAFnB,cAAwCS,MAAAA,CAA1BE,CAAAA,EAAAA,EAAAA,CAAAA,EAAIZ,EAAKZ,EAAOK,KAAK,EAAE,KAAOnB,MAAA,CAAJoC,IAO/CtB,EAAOyB,cAAc,CAErB,GAAA5C,EAAAM,GAAA,EAACc,KAAAA,CACCvB,QAAS,IAAMuC,EAAcL,EAAKZ,GAClChB,UAAW,GAAiDgB,MAAAA,CAA9Cf,GAAAA,CAAAA,mCAA0C,CAAC,KAAoFe,MAAAA,CAAjFA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQE,QAAQ,EAAGjB,GAAAA,CAAAA,8CAAqD,CAAG,GAAG,KAAuFC,MAAA,CAApFc,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,WAAW,EAAGlB,GAAAA,CAAAA,iDAAwD,CAAG,aAG7Ne,EAAOyB,cAAc,CAACb,EAAKC,IAFvB,cAAwCS,MAAAA,CAA1BE,CAAAA,EAAAA,EAAAA,CAAAA,EAAIZ,EAAKZ,EAAOK,KAAK,EAAE,KAAOnB,MAAA,CAAJoC,IAQjD,GAAAzC,EAAAM,GAAA,EAACc,KAAAA,CACCvB,QAAS,IAAMuC,EAAcL,EAAKZ,GAClChB,UAAW,GAAiDgB,MAAAA,CAA9Cf,GAAAA,CAAAA,mCAA0C,CAAC,KAAoFe,MAAAA,CAAjFA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQE,QAAQ,EAAGjB,GAAAA,CAAAA,8CAAqD,CAAG,GAAG,KAAuFC,MAAA,CAApFc,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,WAAW,EAAGlB,GAAAA,CAAAA,iDAAwD,CAAG,aAG7NuC,CAAAA,EAAAA,EAAAA,CAAAA,EAAIZ,EAAKZ,EAAOK,KAAK,GAFjB,cAAwCiB,MAAAA,CAA1BE,CAAAA,EAAAA,EAAAA,CAAAA,EAAIZ,EAAKZ,EAAOK,KAAK,EAAE,KAAOnB,MAAA,CAAJoC,MAQzD,GCnHe,SAASI,EAA4CnD,CAIrC,KAJqC,CAClEe,QAAAA,CAAO,CACPuB,MAAAA,CAAK,CACLnB,kBAAAA,CAAiB,CACY,CAJqCnB,EAKlE,MACE,GAAAM,EAAAM,GAAA,EAACqB,KAAAA,CACCxB,UAAW,GAAsD6B,MAAAA,CAAnD5B,GAAAA,CAAAA,wCAA+C,CAAC,KAAiFS,MAAAA,CAA9EmB,EAAQ,GAAK,EAAI5B,GAAAA,CAAAA,6CAAoD,CAAG,GAAG,KAAuFC,MAAA,CAApFQ,EAAoBT,GAAAA,CAAAA,mDAA0D,CAAG,aAG/NK,EAAQS,GAAG,CAAC,CAACC,EAAQa,IACpB,GAAAhC,EAAAM,GAAA,EAACc,KAAAA,CACCjB,UAAW,GAAiDgB,MAAAA,CAA9Cf,GAAAA,CAAAA,mCAA0C,CAAC,KAAoFe,MAAAA,CAAjFA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQE,QAAQ,EAAGjB,GAAAA,CAAAA,8CAAqD,CAAG,GAAG,KAAuFC,MAAA,CAApFc,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,WAAW,EAAGlB,GAAAA,CAAAA,iDAAwD,CAAG,aAG9N,GAAAJ,EAAAM,GAAA,EAACJ,MAAAA,CACCC,UACE6B,EAAQ,GAAK,EAAI5B,GAAAA,CAAAA,gBAAuB,CAAGA,IAAAA,QAAe,IAJzD,YAAqB4B,MAAAA,CAATA,EAAM,KAAS3B,MAAA,CAAN2B,MALzB,gBAAsB3B,MAAA,CAAN2B,GAgB3B,gBC8Be,SAASc,EAAwCpD,CAUrC,KAVqC,CAC9De,QAAAA,CAAO,CACPsC,KAAAA,CAAI,CACJC,UAAAA,CAAS,CACTrC,MAAAA,CAAK,CACLC,QAAAA,CAAO,CACPqB,cAAAA,CAAa,CACbpB,kBAAAA,CAAiB,CACjBqB,eAAAA,CAAc,CACdC,cAAAA,CAAa,CACY,CAVqCzC,EAYxDuD,EAAOhC,CAAAA,EAAAA,EAAAA,OAAAA,EACX,SACEiC,SAAwBtC,OAAxBsC,CAAAA,EJeJ,EAIO,IInBQH,EJmBE,CAACI,IAAI,CAAC,CAACC,EAAGC,IAAMC,CA9DnC,SACEF,CAAI,CACJC,CAAI,CACJ1C,CAAY,CACZC,CAAqB,EAErB,IAAM2C,EAASZ,CAAAA,EAAAA,EAAAA,CAAAA,EAAIS,EAAGxC,GAChB4C,EAASb,CAAAA,EAAAA,EAAAA,CAAAA,EAAIU,EAAGzC,GAEtB,GAAI2C,KAAWf,IAAXe,GAAwBC,KAAWhB,IAAXgB,EAC1B,OAAO,EAGT,IAAIC,EAAa,EAQjB,OANIF,EAASC,EACXC,EAAa,GACJF,EAASC,GAClBC,CAAAA,EAAa,GAGR9C,IAAUnB,EAAMkE,IAAI,CAAGD,GAAAA,EAAkBA,CAClD,GAwCiDL,EAAGC,EInB7B1C,EAAOC,IAAbmC,CAAanC,GAAxBsC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAkChC,GAAG,CAAC,CAACa,EAAKC,IAC1C,GAAAhC,EAAAM,GAAA,EAACqD,EAAYA,CACX5B,IAAKA,EACLC,MAAOA,EACPvB,QAASA,EACT0B,cAAeA,EACfF,cAAeA,EACfe,UAAWA,EACXd,eAAgBA,EAChBrB,kBAAmBA,GACd,kBAA4CR,MAAA,CAA1B0B,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAK6B,EAAE,EAAG7B,MAAAA,EAAAA,KAAAA,EAAAA,EAAK6B,EAAE,CAAG5B,MAGjD,CACEe,EACApC,EACAC,EACAuB,EACA1B,EACAI,EACAqB,EACAc,EACAf,EACD,EAIG4B,EAAY5C,CAAAA,EAAAA,EAAAA,OAAAA,EAChB,IACE6C,MAAMC,IAAI,CAAC,CAAEC,OAAQ,CAAE,GAAG9C,GAAG,CAAC,CAAC+C,EAAGjC,IAChC,GAAAhC,EAAAM,GAAA,EAACuC,EAAoBA,CACnBb,MAAOA,EACPvB,QAASA,EACTI,kBAAmBA,GACd,2BAAiCR,MAAA,CAAN2B,KAGtC,CAACnB,EAAmBJ,EAAQ,QAI9B,CAAIsC,MAAAA,EAAAA,KAAAA,EAAAA,EAAMiB,MAAM,GAAI,GAAMhB,EAcnBA,EACLa,EACEhD,EACF,GAAAb,EAAAC,IAAA,EAAAD,EAAAkE,QAAA,YACGjB,EACAA,KAGHA,EApBE,GAAAjD,EAAAM,GAAA,EAACqB,KAAAA,CAAGxB,UAAWC,GAAAA,CAAAA,wCAA+C,UAC5D,GAAAJ,EAAAM,GAAA,EAAC6D,EAAAA,CAASA,CAAAA,CACRhE,UAAWC,GAAAA,CAAAA,kDAAyD,CACpEgE,QAAS3D,EAAQuD,MAAM,UAEvB,GAAAhE,EAAAM,GAAA,EAAC+D,EAAAA,CAAeA,CAAAA,CAACC,YAAW,GAACzD,kBAAiB,GAAC0D,QAAO,QAiBhE,gBC9BAC,EA3F4B,CAC1BC,EACA9E,EACAqD,KAGA,IAAM0B,EAAMC,CAAAA,EAAAA,EAAAA,MAAAA,EAAyB,MAG/B,CAACC,EAAcC,EAAmB,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,EAAU,IAG/C,CAACC,EAAaC,EAAe,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,GASzCC,EAAoB7C,CAAAA,EAAAA,EAAAA,WAAAA,EACxB,CAACU,EAA2BoC,EAAmBC,KAC7C,IAAIpC,GAIJ,GAAI+B,GAAeI,EAAW,CAC5BH,EAAe,GAEfjC,EAAKsC,OAAO,CAACtD,IAEXuD,EAAQC,KAAK,CAACC,UAAU,CAAG,OAC3BF,EAAQC,KAAK,CAACE,SAAS,CAAG,eAAgDpF,MAAA,CAAjC+E,EAAcD,CAAAA,EAAY,EAAI,GAAG,MAC5E,GAEKP,GACHC,IAGF,MACF,CAEA9B,EAAKsC,OAAO,CAACtD,IAEXuD,EAAQC,KAAK,CAACC,UAAU,CACtB,mDACFF,EAAQC,KAAK,CAACE,SAAS,CAAG,eAA0DpF,MAAA,CAA3C+E,EAAcD,CAAAA,EAAY,EAAIJ,CAAAA,EAAa,MACtF,GACIH,GACFC,IAGFG,EAAeU,GAAQA,EAAO,GAChC,EACA,CAACX,EAAaH,EAAcC,EAAoB7B,EAAU,EAOtD2C,EAAuBtD,CAAAA,EAAAA,EAAAA,WAAAA,EAAY,SAG1BqC,EAFb,GAAI,CAAC/E,GAAUqD,EAAW,OAE1B,IAAMD,EAAO2B,CAAAA,OAAAA,CAAAA,EAAAA,EAAIkB,OAAO,GAAXlB,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAamB,gBAAgB,CAAC,UAAW,EAAE,CAClDV,EAAYpC,EAAKiB,MAAM,CAG7B,GAAImB,EAAY,EAAG,CACjB,IAAMW,EAAaC,YACjB,IACEb,EAAkBnC,EAA6BoC,EALlC,IAMfV,GAGF,MAAO,IAAMuB,cAAcF,EAC7B,CACF,EAAG,CAACnG,EAAQ8E,EAAUS,EAAmBlC,EAAU,EAUnD,MAPAiD,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACR,GAAItG,EAAQ,CACV,IAAMuG,EAAUP,IAChB,MAAO,IAAMO,GAAWA,GAC1B,CACF,EAAG,CAACP,EAAsBhG,EAAO,EAE1B,CAAE+E,IAAAA,EAAKE,aAAAA,EAAcG,YAAAA,CAAY,CAC1C,ECnDO,SAASoB,EAAiCzG,CAU7B,KAV6B,CAC/CqD,KAAAA,CAAI,CACJtC,QAAAA,CAAO,CACPwB,cAAAA,CAAa,CACbe,UAAAA,CAAS,CACTnC,kBAAAA,CAAiB,CACjBuF,cAAAA,EAAgB,EAAK,CACrBrG,aAAAA,CAAY,CACZmC,eAAAA,CAAc,CACdC,cAAAA,CAAa,CACK,CAV6BzC,EAWzC,CAACiB,EAAO0F,EAAS,CAAGpB,CAAAA,EAAAA,EAAAA,QAAAA,EAAgBzF,EAAM8G,GAAG,EAC7C,CAAC1F,EAAS2F,EAAW,CAAGtB,CAAAA,EAAAA,EAAAA,QAAAA,EAA8B,MACtD,CAAEP,IAAAA,CAAG,CAAEE,aAAAA,CAAY,CAAEG,YAAAA,CAAW,CAAE,CAAGyB,EACzC,IACAC,CAAAA,CAAQL,EACRK,CAAAA,CAAQzD,GAUJ0D,EAAoBrE,CAAAA,EAAAA,EAAAA,WAAAA,EACxB,CAAC1B,EAAcgG,KACT5G,IAKJsG,EAASO,IADiBD,GAAYhG,IAAUnB,EAAM8G,GAAG,CACxC9G,EAAMkE,IAAI,CAAGlE,EAAM8G,GAAG,EACvCC,EAAWI,GACb,EACA,CAAC/F,EAASb,EAAa,EAGzB,MACE,GAAAC,EAAAM,GAAA,EAACJ,MAAAA,CAAIC,UAAWC,IAAAA,SAAgB,UAC9B,GAAAJ,EAAAM,GAAA,EAACJ,MAAAA,CACCC,UAAW,GAA2C4C,MAAAA,CAAxC3C,GAAAA,CAAAA,6BAAoC,CAAC,KAA+FC,MAAA,CAA5F0C,EAAKiB,MAAM,CAAG,GAAKnD,EAAoBT,GAAAA,CAAAA,wCAA+C,CAAG,aAE/I,GAAAJ,EAAAC,IAAA,EAAC4G,QAAAA,CACCnC,IAAKA,EACLvE,UAAW,GAAkD6C,MAAAA,CAA/C5C,GAAAA,CAAAA,oCAA2C,CAAC,KAAkHC,MAAA,CAA/G2C,GAAa4B,GAAgBG,EAAc,EAAI3E,GAAAA,CAAAA,mDAA0D,CAAG,cAEzK,GAAAJ,EAAAM,GAAA,EAACwG,EAAiBA,CAChBrG,QAASA,EACTC,YAAagG,EACb/F,MAAOA,EACPE,kBAAmBA,EACnBD,QAASA,EACTb,aAAcA,IAEhB,GAAAC,EAAAM,GAAA,EAACyG,QAAAA,CACCxB,MAAO,CAEL,aAAc,GAAelF,MAAA,CAAZ0C,EAAKiB,MAAM,CAAC,IAC/B,EACA7D,UAAW,GAAiD4C,MAAAA,CAA9C3C,GAAAA,CAAAA,mCAA0C,CAAC,KAAqGC,MAAA,CAAlG0C,EAAKiB,MAAM,CAAG,GAAKnD,EAAoBT,GAAAA,CAAAA,8CAAqD,CAAG,aAE3J,GAAAJ,EAAAM,GAAA,EAACwC,EAAgBA,CACfrC,QAASA,EACTE,MAAOA,EACPsB,cAAeA,EACfrB,QAASA,EACTmC,KAAMA,EACNC,UAAWA,EACXnC,kBAAmBA,EACnBqB,eAAgBA,EAChBC,cAAeA,YAO7B,sCCnIO,SAASQ,EACdqE,CAAS,CACTC,CAAO,EAEP,IAAMC,EAAOD,EAAKE,KAAK,CAAC,KACpBC,EAAmBJ,EAEvB,IAAK,IAAMK,KAAOH,EAChBE,EAASA,MAAAA,EAAAA,KAAAA,EAAAA,CAAQ,CAACC,EAAI,CAGxB,OAAOD,CACT,oDCbAE,EAAAC,OAAA,EAAkB,kSCAlBD,EAAAC,OAAA,EAAkB","sources":["webpack://_N_E/../../packages/common/src/components/TableGrid/Head/SortLabel/index.tsx","webpack://_N_E/../../packages/common/src/components/TableGrid/Head/index.tsx","webpack://_N_E/../../packages/common/src/components/TableGrid/props.ts","webpack://_N_E/../../packages/common/src/components/TableGrid/helpers.tsx","webpack://_N_E/../../packages/common/src/components/TableGrid/Content/prevent-items.ts","webpack://_N_E/../../packages/common/src/components/TableGrid/Content/Row/index.tsx","webpack://_N_E/../../packages/common/src/components/TableGrid/Content/Row/Skeleton/index.tsx","webpack://_N_E/../../packages/common/src/components/TableGrid/Content/index.tsx","webpack://_N_E/../../packages/common/src/hooks/useTableAnimation/index.ts","webpack://_N_E/../../packages/common/src/components/TableGrid/index.tsx","webpack://_N_E/../../packages/common/src/utils/object/get.ts","webpack://_N_E/../../packages/common/src/components/TableGrid/Head/SortLabel/styles.module.scss","webpack://_N_E/../../packages/common/src/components/TableGrid/styles.module.scss"],"sourcesContent":["import { TableHeadSortLabelProps } from './props';\nimport styles from './styles.module.scss';\n\n/**\n * TableHeadSortLabel Component\n * A component that renders a sortable table header cell with an optional sort direction indicator.\n *\n * @component\n * @param {Object} props - Component props\n * @param {boolean} props.active - Whether this column is currently being sorted\n * @param {string} props.direction - Sort direction ('asc' or 'desc')\n * @param {() => void} props.onClick - Callback when header is clicked to sort\n * @param {ReactNode} props.children - Label content to display\n * @param {boolean} props.preventOrder - Whether to disable sorting\n * @returns {JSX.Element} The rendered sortable header cell\n *\n * @example\n * handleSort('name')}\n * preventOrder={false}\n * >\n * Name\n * \n */\nexport default function TableHeadSortLabel({\n active,\n direction,\n onClick,\n children,\n preventOrder,\n}: TableHeadSortLabelProps) {\n return (\n \n {children}\n {active && (\n \n \n \n )}\n \n );\n}\n","import { TableGridHeaderProps } from '../props';\nimport { FieldValues } from 'react-hook-form';\nimport styles from '../styles.module.scss';\nimport TableHeadSortLabel from './SortLabel';\nimport { useTranslation } from '../../../hooks';\nimport { useMemo } from 'react';\n\n/**\n * EnhancedTableHead Component\n * A customizable table header component that supports sorting, custom styling, and column alignment.\n *\n * @component\n * @template T - Type extending FieldValues for column data structure\n * @param {Object} props - Component props\n * @param {Array} props.columns - Column definitions for the table header\n * @param {Function} props.handleOrder - Callback for handling sort order changes\n * @param {string} props.order - Current sort order ('asc' or 'desc')\n * @param {string} props.orderBy - Field currently being sorted by\n * @param {boolean} props.isSecondaryStyles - Whether to use secondary styling\n * @param {boolean} props.preventOrder - Disable column sorting\n * @returns {JSX.Element} The rendered table header component\n *\n * @example\n * interface UserData extends FieldValues {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const columns = [\n * { field: 'name', headerName: 'Name', alignEnd: false },\n * { field: 'email', headerName: 'Email', alignCenter: true }\n * ];\n *\n * \n * columns={columns}\n * handleOrder={(order, field) => function('Sort by:', field, order)}\n * order=\"asc\"\n * orderBy=\"name\"\n * isSecondaryStyles={false}\n * preventOrder={false}\n * />\n */\nfunction EnhancedTableHead({\n columns,\n handleOrder,\n order,\n orderBy,\n isSecondaryStyles,\n preventOrder,\n}: TableGridHeaderProps) {\n const { t } = useTranslation('data-grid');\n\n // Memoize columns to prevent unnecessary re-renders of table headers\n const Columns = useMemo(\n () =>\n columns.map((column, i) => (\n \n {column?.renderHeaderCell ? (\n column?.renderHeaderCell()\n ) : (\n handleOrder(order, column.field)}\n >\n {t(column.headerName)}\n \n )}\n \n )),\n [columns, orderBy, order, preventOrder, t, handleOrder],\n );\n\n return (\n \n \n {Columns}\n \n \n );\n}\n\nexport default EnhancedTableHead;\n","import { Nullable } from '@starsoft/common/interfaces';\nimport { FieldPath, FieldValues } from 'react-hook-form';\n\nexport interface TableGridColumn {\n headerName: string;\n field: FieldPath;\n alignEnd?: boolean;\n alignCenter?: boolean;\n renderCell?(row: T, index: number): JSX.Element;\n renderHeaderCell?(): Nullable;\n valueFormatter?(row: T, index: number): string | number;\n}\n\nexport interface TableGridProps {\n rows: T[];\n columns: TableGridColumn[];\n isLoading?: boolean;\n isSecondaryStyles?: boolean;\n useLargerRows?: boolean;\n useAutoScroll?: boolean;\n preventOrder?: boolean;\n handleRedirect?(row: T): void;\n customGroupBy?(row: T): boolean;\n}\nexport enum Order {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport interface TableGridHeaderProps\n extends Omit, 'rows' | 'isLoading'> {\n order: Order;\n orderBy: FieldPath | null;\n handleOrder(order: Order, orderBy: FieldPath): void;\n}\n","import { FieldPath, FieldValues } from 'react-hook-form';\nimport { Order } from './props';\nimport { get } from '@starsoft/common/utils';\n\n/**\n * Comparator function for sorting objects based on a specified field path\n *\n * @template T - Type extending FieldValues for object structure\n * @param {T} a - First object to compare\n * @param {T} b - Second object to compare\n * @param {Order} order - Sort order (ASC or DESC)\n * @param {FieldPath} orderBy - Field path to sort by\n * @returns {number} Comparison result (-1, 0, or 1)\n *\n * @example\n * interface User extends FieldValues {\n * name: string;\n * age: number;\n * }\n *\n * const user1: User = { name: \"John\", age: 30 };\n * const user2: User = { name: \"Jane\", age: 25 };\n *\n * // Sort by age ascending\n * getComparator(user1, user2, Order.ASC, \"age\"); // Returns 1\n *\n * // Sort by name descending\n * getComparator(user1, user2, Order.DESC, \"name\"); // Returns -1\n */\nfunction getComparator(\n a: T,\n b: T,\n order: Order,\n orderBy: FieldPath,\n): number {\n const valueA = get(a, orderBy);\n const valueB = get(b, orderBy);\n\n if (valueA === undefined || valueB === undefined) {\n return 0;\n }\n\n let comparison = 0;\n\n if (valueA < valueB) {\n comparison = -1;\n } else if (valueA > valueB) {\n comparison = 1;\n }\n\n return order === Order.DESC ? comparison * -1 : comparison;\n}\n\n/**\n * Performs a stable sort on an array of objects based on a specified field\n *\n * @template T - Type extending FieldValues for array elements\n * @param {T[]} array - Array to sort\n * @param {Order} order - Sort order (ASC or DESC)\n * @param {FieldPath | null} orderBy - Field path to sort by\n * @returns {T[]} New sorted array\n *\n * @example\n * interface User extends FieldValues {\n * name: string;\n * age: number;\n * }\n *\n * const users: User[] = [\n * { name: \"John\", age: 30 },\n * { name: \"Jane\", age: 25 },\n * { name: \"Bob\", age: 35 }\n * ];\n *\n * // Sort by age ascending\n * stableSort(users, Order.ASC, \"age\");\n * // Returns: [\n * // { name: \"Jane\", age: 25 },\n * // { name: \"John\", age: 30 },\n * // { name: \"Bob\", age: 35 }\n * // ]\n */\nexport function stableSort(\n array: T[],\n order: Order,\n orderBy: FieldPath | null,\n) {\n if (!orderBy) {\n return array;\n }\n\n return [...array].sort((a, b) => getComparator(a, b, order, orderBy));\n}\n","export const preventRedirectColumns: string[] = ['status', 'url', 'edit'];\n","import styles from '../../styles.module.scss';\nimport { TableGridRowProps } from './props';\nimport { FieldValues } from 'react-hook-form';\nimport { memo, useCallback } from 'react';\nimport { TableGridColumn } from '../../props';\nimport { preventRedirectColumns } from '../prevent-items';\nimport { get } from '@starsoft/common/utils';\n\n/**\n * TableGridRow Component\n * Renders a single row in a data grid table with customizable cell rendering, formatting, and click handling.\n * Supports different styling variants and grouping functionality.\n *\n * @component\n * @template T - Type extending FieldValues for row data structure\n * @param {Object} props - Component props\n * @param {TableGridColumn[]} props.columns - Array of column definitions\n * @param {T} props.row - Data object for this row\n * @param {number} props.index - Row index\n * @param {boolean} props.isSecondaryStyles - Whether to use secondary styling\n * @param {boolean} props.useLargerRows - Whether to use larger row heights\n * @param {(row: T) => void} props.handleRedirect - Callback for row click/redirect\n * @param {(row: T) => string} props.customGroupBy - Custom function for row grouping\n * @returns {JSX.Element} The rendered table row\n *\n * @example\n * interface UserData extends FieldValues {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const columns: TableGridColumn[] = [\n * { field: 'name', headerName: 'Name' },\n * { field: 'email', headerName: 'Email', alignEnd: true }\n * ];\n *\n * \n * columns={columns}\n * row={{ id: 1, name: 'John', email: 'john@example.com' }}\n * index={0}\n * isSecondaryStyles={false}\n * useLargerRows={false}\n * handleRedirect={(row) => function('Clicked:', row)}\n * customGroupBy={(row) => row.name[0]}\n * />\n */\nfunction TableGridRow({\n columns,\n row,\n index,\n isSecondaryStyles,\n useLargerRows,\n handleRedirect,\n customGroupBy,\n}: TableGridRowProps) {\n /**\n * Handles click events on table cells\n * Only triggers redirect if the column is not in preventRedirectColumns\n *\n * @param {T} row - The row data object\n * @param {TableGridColumn} column - The column definition\n * @returns {void}\n */\n const handleOnClick = useCallback(\n (row: T, column: TableGridColumn) => {\n if (\n handleRedirect &&\n !preventRedirectColumns.some(v => column.field == v) &&\n !preventRedirectColumns.some(v => column.headerName == v)\n ) {\n handleRedirect(row);\n return;\n }\n },\n [handleRedirect],\n );\n\n return (\n \n {columns.map((column, idx) => {\n if (column.renderCell) {\n return (\n handleOnClick(row, column)}\n className={`${styles['container__table-container__cell']} ${column?.alignEnd ? styles['container__table-container__cell--align-end'] : ''} ${column?.alignCenter ? styles['container__table-container__cell--align-center'] : ''}`}\n key={`table_cell_${get(row, column.field)}_${idx}`}\n >\n {column.renderCell(row, index)}\n \n );\n }\n\n if (column.valueFormatter) {\n return (\n handleOnClick(row, column)}\n className={`${styles['container__table-container__cell']} ${column?.alignEnd ? styles['container__table-container__cell--align-end'] : ''} ${column?.alignCenter ? styles['container__table-container__cell--align-center'] : ''}`}\n key={`table_cell_${get(row, column.field)}_${idx}`}\n >\n {column.valueFormatter(row, index)}\n \n );\n }\n\n return (\n handleOnClick(row, column)}\n className={`${styles['container__table-container__cell']} ${column?.alignEnd ? styles['container__table-container__cell--align-end'] : ''} ${column?.alignCenter ? styles['container__table-container__cell--align-center'] : ''}`}\n key={`table_cell_${get(row, column.field)}_${idx}`}\n >\n {get(row, column.field)}\n \n );\n })}\n \n );\n}\n\nexport default memo(TableGridRow) as typeof TableGridRow;\n","import { FieldValues } from 'react-hook-form';\nimport styles from '../../../styles.module.scss';\nimport { TableGridRowSkeletonProps } from './props';\n\nexport default function TableGridRowSkeleton({\n columns,\n index,\n isSecondaryStyles,\n}: TableGridRowSkeletonProps) {\n return (\n \n {columns.map((column, index) => (\n \n \n \n ))}\n \n );\n}\n","import { TableGridContentProps } from './props';\nimport { useMemo } from 'react';\nimport { stableSort } from '../helpers';\nimport { FieldValues } from 'react-hook-form';\nimport styles from '../styles.module.scss';\nimport { TableCell } from '@mui/material';\nimport TableGridRow from './Row';\nimport TableGridRowSkeleton from './Row/Skeleton';\nimport { NoDataComponent } from '@starsoft/common/components';\n\n/**\n * TableGridContent Component\n * Renders the content/body section of a data grid table, handling sorting, loading states,\n * empty states, and row rendering with optional grouping.\n *\n * @component\n * @template T - Type extending FieldValues for row data structure\n * @param {Object} props - Component props\n * @param {Array} props.columns - Column definitions for the table\n * @param {T[]} props.rows - Array of data rows to display\n * @param {boolean} props.isLoading - Whether table is in loading state\n * @param {Order} props.order - Current sort order ('asc' or 'desc')\n * @param {string} props.orderBy - Field currently being sorted by\n * @param {boolean} props.useLargerRows - Whether to use larger row heights\n * @param {boolean} props.isSecondaryStyles - Whether to use secondary styling\n * @param {Function} props.handleRedirect - Callback for row click/redirect\n * @param {Function} props.customGroupBy - Custom function for row grouping\n * @returns {JSX.Element} The rendered table content\n *\n * @example\n * interface UserData extends FieldValues {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const columns = [\n * { field: 'name', headerName: 'Name' },\n * { field: 'email', headerName: 'Email' }\n * ];\n *\n * const rows: UserData[] = [\n * { id: 1, name: 'John', email: 'john@example.com' },\n * { id: 2, name: 'Jane', email: 'jane@example.com' }\n * ];\n *\n * \n * columns={columns}\n * rows={rows}\n * isLoading={false}\n * order=\"asc\"\n * orderBy=\"name\"\n * useLargerRows={false}\n * isSecondaryStyles={false}\n * handleRedirect={(row) => function('Clicked:', row)}\n * customGroupBy={(row) => row.name[0]}\n * />\n */\nexport default function TableGridContent({\n columns,\n rows,\n isLoading,\n order,\n orderBy,\n useLargerRows,\n isSecondaryStyles,\n handleRedirect,\n customGroupBy,\n}: TableGridContentProps) {\n // Memoized rows with sorting applied\n const Rows = useMemo(\n () =>\n stableSort(rows, order, orderBy)?.map((row, index) => (\n \n )),\n [\n rows,\n order,\n orderBy,\n customGroupBy,\n columns,\n isSecondaryStyles,\n handleRedirect,\n isLoading,\n useLargerRows,\n ],\n );\n\n // Memoized loading skeleton rows\n const Skeletons = useMemo(\n () =>\n Array.from({ length: 8 }).map((_, index) => (\n \n )),\n [isSecondaryStyles, columns],\n );\n\n // Show empty state if no rows and not loading\n if (rows?.length == 0 && !isLoading) {\n return (\n \n \n \n \n \n );\n }\n\n // Return loading skeletons, duplicated rows for secondary style, or normal rows\n return isLoading ? (\n Skeletons\n ) : isSecondaryStyles ? (\n <>\n {Rows}\n {Rows}\n \n ) : (\n Rows\n );\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useToggle } from '../useToggle';\n\n/**\n * Custom hook to manage a stepped animation for table rows.\n * This hook provides functionalities to animate table rows in steps, useful for creating a scrolling effect.\n *\n * @param {number} duration - The duration of each animation step in milliseconds.\n * @param {boolean} active - Flag to indicate if the animation should be active.\n * @param {boolean} isLoading - Flag to indicate if the data is still loading, which pauses the animation.\n * @returns {Object} An object containing a ref to the table element, a flag indicating if the animation has ended, and the current step index.\n *\n * @example\n * // Usage example:\n * const { ref, endAnimation, currentStep } = useSteppedAnimation(1000, true, false);\n */\nconst useSteppedAnimation = (\n duration: number,\n active: boolean,\n isLoading: boolean,\n) => {\n // Ref to the table element\n const ref = useRef(null);\n\n // State to manage the end of the animation\n const [endAnimation, toggleEndAnimation] = useToggle(true);\n\n // State to track the current step of the animation\n const [currentStep, setCurrentStep] = useState(0);\n\n /**\n * Updates the position of each row in the table based on the current step.\n *\n * @param {NodeListOf} rows - The list of row elements to animate.\n * @param {number} totalRows - The total number of rows in the table.\n * @param {number} stepHeight - The height of each step in pixels.\n */\n const updateRowPosition = useCallback(\n (rows: NodeListOf, totalRows: number, stepHeight: number) => {\n if (isLoading) {\n return;\n }\n\n if (currentStep >= totalRows) {\n setCurrentStep(9);\n\n rows.forEach(row => {\n const element = row as HTMLElement;\n element.style.transition = 'none';\n element.style.transform = `translateY(-${stepHeight * (totalRows - 1 - 9)}px)`;\n });\n\n if (!endAnimation) {\n toggleEndAnimation();\n }\n\n return;\n }\n\n rows.forEach(row => {\n const element = row as HTMLElement;\n element.style.transition =\n 'transform 1s cubic-bezier(0.47, 1.64, 0.41, 0.8)';\n element.style.transform = `translateY(-${stepHeight * (totalRows - 1 - currentStep)}px)`;\n });\n if (endAnimation) {\n toggleEndAnimation();\n }\n\n setCurrentStep(prev => prev + 1);\n },\n [currentStep, endAnimation, toggleEndAnimation, isLoading],\n );\n\n /**\n * Handles the animation steps by setting an interval to update row positions.\n * Clears the interval when the component is unmounted or when the animation is stopped.\n */\n const stepAnimationHandler = useCallback(() => {\n if (!active || isLoading) return;\n\n const rows = ref.current?.querySelectorAll('.row') || [];\n const totalRows = rows.length;\n const stepHeight = 51;\n\n if (totalRows > 0) {\n const intervalId = setInterval(\n () =>\n updateRowPosition(rows as NodeListOf, totalRows, stepHeight),\n duration,\n );\n\n return () => clearInterval(intervalId);\n }\n }, [active, duration, updateRowPosition, isLoading]);\n\n // Effect to start the animation when the 'active' flag is true\n useEffect(() => {\n if (active) {\n const cleanup = stepAnimationHandler();\n return () => cleanup && cleanup();\n }\n }, [stepAnimationHandler, active]);\n\n return { ref, endAnimation, currentStep };\n};\n\nexport default useSteppedAnimation;\n","import { useCallback, useState } from 'react';\nimport EnhancedTableHead from './Head';\nimport { Order, TableGridProps } from './props';\nimport TableGridContent from './Content';\nimport { FieldPath, FieldValues } from 'react-hook-form';\nimport styles from './styles.module.scss';\nimport useSteppedAnimation from '../../hooks/useTableAnimation';\n\n/**\n * TableGrid Component\n * A customizable data grid/table component that supports sorting, loading states, custom styling,\n * auto-scrolling animations, and row grouping.\n *\n * @component\n * @template T - Type extending FieldValues for row data structure\n * @param {Object} props - Component props\n * @param {T[]} props.rows - Array of data rows to display\n * @param {Array} props.columns - Column definitions for the table\n * @param {boolean} [props.useLargerRows] - Whether to use larger row heights\n * @param {boolean} [props.isLoading] - Whether table is in loading state\n * @param {boolean} [props.isSecondaryStyles] - Whether to use secondary styling\n * @param {boolean} [props.useAutoScroll=false] - Enable auto-scrolling animation\n * @param {boolean} [props.preventOrder] - Disable column sorting\n * @param {Function} [props.handleRedirect] - Callback for row click/redirect\n * @param {Function} [props.customGroupBy] - Custom function for row grouping\n * @returns {JSX.Element} The rendered table grid component\n *\n * @example\n * interface UserData extends FieldValues {\n * id: number;\n * name: string;\n * email: string;\n * }\n *\n * const columns = [\n * { id: 'name', label: 'Name' },\n * { id: 'email', label: 'Email' }\n * ];\n *\n * const rows: UserData[] = [\n * { id: 1, name: 'John Doe', email: 'john@example.com' },\n * { id: 2, name: 'Jane Smith', email: 'jane@example.com' }\n * ];\n *\n * function('Clicked row:', row)}\n * />\n */\nexport function TableGrid({\n rows,\n columns,\n useLargerRows,\n isLoading,\n isSecondaryStyles,\n useAutoScroll = false,\n preventOrder,\n handleRedirect,\n customGroupBy,\n}: TableGridProps) {\n const [order, setOrder] = useState(Order.ASC);\n const [orderBy, setOrderBy] = useState | null>(null);\n const { ref, endAnimation, currentStep } = useSteppedAnimation(\n 1000,\n Boolean(useAutoScroll),\n Boolean(isLoading),\n );\n\n /**\n * Handles column sort requests\n * Updates sort order and column when a sortable column header is clicked\n *\n * @param {Order} order - The requested sort order (ASC/DESC)\n * @param {FieldPath} property - The column property to sort by\n */\n const handleRequestSort = useCallback(\n (order: Order, property: FieldPath) => {\n if (preventOrder) {\n return;\n }\n\n const isAsc = orderBy === property && order === Order.ASC;\n setOrder(isAsc ? Order.DESC : Order.ASC);\n setOrderBy(property);\n },\n [orderBy, preventOrder],\n );\n\n return (\n
\n 0 && isSecondaryStyles ? styles['container__table-container--secondary'] : ''}`}\n >\n \n \n 0 && isSecondaryStyles ? styles['container__table-container__body--secondary'] : ''}`}\n >\n \n \n \n
\n \n );\n}\n","import { FieldPath, FieldValues } from 'react-hook-form';\n\nexport function get>(\n object: T,\n path: K,\n): T[K] {\n const keys = path.split('.') as (keyof T)[];\n let result: T | T[K] = object;\n\n for (const key of keys) {\n result = result?.[key];\n }\n\n return result as T[K];\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cell\":\"styles_cell__Sr0ew\",\"cell--disabled\":\"styles_cell--disabled__uXxZM\",\"cell__icon\":\"styles_cell__icon____PHP\",\"cell__icon--desc\":\"styles_cell__icon--desc__BMEwR\",\"cell__icon--asc\":\"styles_cell__icon--asc__CqYGO\",\"skeleton-animation\":\"styles_skeleton-animation__N5iPz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeleton--odd\":\"styles_skeleton--odd__MrV9w\",\"skeleton\":\"styles_skeleton__i70Yo\",\"skeleton-animation\":\"styles_skeleton-animation__E6GU_\",\"container\":\"styles_container__peSVJ\",\"container__table-container\":\"styles_container__table-container__gCJMM\",\"container__table-container--secondary\":\"styles_container__table-container--secondary___ptqq\",\"container__table-container__table\":\"styles_container__table-container__table__P90m5\",\"container__table-container__table--no-transition\":\"styles_container__table-container__table--no-transition__yEkO4\",\"container__table-container__head\":\"styles_container__table-container__head__CUkEK\",\"container__table-container__head--align-center\":\"styles_container__table-container__head--align-center__2zK8x\",\"container__table-container__head--secondary\":\"styles_container__table-container__head--secondary__DwJux\",\"container__table-container__cell\":\"styles_container__table-container__cell__PVKNB\",\"container__table-container__cell--head\":\"styles_container__table-container__cell--head__K_t9b\",\"container__table-container__cell--head--disabled\":\"styles_container__table-container__cell--head--disabled__VLL_a\",\"container__table-container__cell--align-end\":\"styles_container__table-container__cell--align-end__IK3Ho\",\"container__table-container__cell--align-center\":\"styles_container__table-container__cell--align-center__wj0SF\",\"container__table-container__body\":\"styles_container__table-container__body__V71GV\",\"container__table-container__body--secondary\":\"styles_container__table-container__body--secondary__UKuyV\",\"container__table-container__body__row\":\"styles_container__table-container__body__row__eq3Gp\",\"container__table-container__body__row--odd\":\"styles_container__table-container__body__row--odd__EFwnr\",\"container__table-container__body__row--secondary\":\"styles_container__table-container__body__row--secondary__HEfjp\",\"container__table-container__body__row--clickable\":\"styles_container__table-container__body__row--clickable__4pTvh\",\"container__table-container__body__row--larger\":\"styles_container__table-container__body__row--larger__9A_Sj\",\"container__table-container__body__row__mui-cell\":\"styles_container__table-container__body__row__mui-cell__Tsm2o\"};"],"names":["Order","TableHeadSortLabel","param","active","direction","onClick","children","preventOrder","jsx_runtime","jsxs","div","className","styles","concat","jsx","i","Head","columns","handleOrder","order","orderBy","isSecondaryStyles","t","useTranslation","Columns","useMemo","map","column","td","alignEnd","alignCenter","renderHeaderCell","field","headerName","thead","tr","preventRedirectColumns","Row","memo","row","index","useLargerRows","handleRedirect","customGroupBy","handleOnClick","useCallback","some","v","undefined","idx","renderCell","get","valueFormatter","TableGridRowSkeleton","TableGridContent","rows","isLoading","Rows","stableSort","sort","a","b","getComparator","valueA","valueB","comparison","DESC","TableGridRow","id","Skeletons","Array","from","length","_","Fragment","TableCell","colSpan","NoDataComponent","tableStyles","isSmall","useTableAnimation","duration","ref","useRef","endAnimation","toggleEndAnimation","useToggle","currentStep","setCurrentStep","useState","updateRowPosition","totalRows","stepHeight","forEach","element","style","transition","transform","prev","stepAnimationHandler","current","querySelectorAll","intervalId","setInterval","clearInterval","useEffect","cleanup","TableGrid","useAutoScroll","setOrder","ASC","setOrderBy","useSteppedAnimation","Boolean","handleRequestSort","property","isAsc","table","EnhancedTableHead","tbody","object","path","keys","split","result","key","module","exports"],"sourceRoot":""}