{"version":3,"file":"static/chunks/3784-4c359c7699e92b19.js","mappings":"mIAaM,IAAAA,EAAQC,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,QAAS,CACtC,CAAC,OAAQ,CAAEC,EAAG,4DAA6DC,IAAK,UAAU,CAC1F,CACE,OACA,CACED,EAAG,gIACHC,IAAK,QACP,EACF,CACD,yDCTK,IAAAC,EAAcH,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,cAAe,CAClD,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,KAAMJ,IAAK,UAAU,CACzD,CAAC,OAAQ,CAAED,EAAG,gBAAiBC,IAAK,UAAU,CAC/C,yDCHK,IAAAK,EAAcP,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,cAAe,CAClD,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,KAAMJ,IAAK,UAAU,CACzD,CAAC,OAAQ,CAAED,EAAG,UAAWC,IAAK,UAAU,CACzC,yDCHK,IAAAM,EAAQR,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,QAAS,CACtC,CACE,OACA,CACEC,EAAG,2IACHC,IAAK,QACP,EACF,CACD,yDCRK,IAAAO,EAAOT,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,OAAQ,CACpC,CACE,OACA,CACEC,EAAG,qGACHC,IAAK,QACP,EACF,CACA,CAAC,OAAQ,CAAED,EAAG,4CAA6CC,IAAK,UAAU,CAC1E,CAAC,OAAQ,CAAED,EAAG,yBAA0BC,IAAK,UAAU,CACxD,yDCVK,IAAAQ,EAASV,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,SAAU,CACxC,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,IAAKC,EAAG,IAAKJ,IAAK,UAAU,CACvD,CAAC,SAAU,CAAEE,GAAI,IAAKC,GAAI,KAAMC,EAAG,IAAKJ,IAAK,UAAU,CACvD,CAAC,SAAU,CAAEE,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKJ,IAAK,UAAU,CACxD,CAAC,OAAQ,CAAES,GAAI,OAAQC,GAAI,QAASC,GAAI,QAASC,GAAI,QAASZ,IAAK,UAAU,CAC7E,CAAC,OAAQ,CAAES,GAAI,QAASC,GAAI,OAAQC,GAAI,OAAQC,GAAI,QAASZ,IAAK,UAAU,CAC7E,yDCNK,IAAAa,EAAcf,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,cAAe,CAClD,CACE,OACA,CACEC,EAAG,iOACHC,IAAK,QACP,EACF,CACD,yDCRK,IAAAc,EAAShB,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,SAAU,CACxC,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKJ,IAAK,UAAU,CACxD,CAAC,OAAQ,CAAES,GAAI,KAAMC,GAAI,QAASC,GAAI,KAAMC,GAAI,QAASZ,IAAK,UAAU,CACxE,CAAC,OAAQ,CAAES,GAAI,KAAMC,GAAI,KAAMC,GAAI,IAAKC,GAAI,KAAMZ,IAAK,UAAU,CACjE,CAAC,OAAQ,CAAES,GAAI,IAAKC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMZ,IAAK,UAAU,CAClE,yDCLK,IAAAe,EAAUjB,CAAAA,EAAAA,SAAAA,CAAAA,EAAiB,UAAW,CAC1C,CAAC,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,IAAKJ,IAAK,UAAU,CACxD,CAAC,OAAQ,CAAES,GAAI,KAAMC,GAAI,QAASC,GAAI,KAAMC,GAAI,QAASZ,IAAK,UAAU,CACxE,CAAC,OAAQ,CAAES,GAAI,IAAKC,GAAI,KAAMC,GAAI,KAAMC,GAAI,KAAMZ,IAAK,UAAU,CAClE,qMEPKgB,EAAoC,QAoK3BC,EAOJA,MAPLC,EACAC,EApKJ,GAAM,CAAEC,QAAAA,CAAA,CAASC,SAAAA,CAAA,CAAS,CAAIC,EACxBC,EAAWC,SAmBEJ,CAAA,MCnBnBK,EACAC,EDmBA,GAAM,CAACC,EAAMC,EAAO,CAAUC,EAAAA,QAAA,GACxBC,EAAkBD,EAAAA,MAAA,CAA4B,CAAC,GAC/CE,EAAuBF,EAAAA,MAAA,CAAOT,GAC9BY,EAA6BH,EAAAA,MAAA,CAAe,QAE5C,CAACI,EAAOC,EAAI,ECzBlBT,EDwBqBL,EAAU,UAAY,YCvB3CM,EDwBoD,CAClDS,QAAS,CACPC,QAAS,YACTC,cAAe,kBACjB,EACAC,iBAAkB,CAChBC,MAAO,UACPC,cAAe,WACjB,EACAC,UAAW,CACTF,MAAO,SACT,CACF,EClCaG,EAAAA,UAAA,CAAW,CAACT,EAAwBU,KAC/C,IAAMC,EAAalB,CAAA,CAAQO,EAAK,CAAUU,EAAK,CAC/C,OAAOC,MAAAA,EAAAA,EAAaX,CACtB,EAAGR,IDsIH,OArGMI,EAAAA,SAAA,CAAU,KACd,IAAMgB,EAAuBC,EAAiBhB,EAAUiB,OAAO,CAC/Df,CAAAA,EAAqBe,OAAA,CAAUd,YAAAA,EAAsBY,EAAuB,MAC9E,EAAG,CAACZ,EAAM,EAEVe,CAAAA,EAAAA,EAAAA,CAAAA,EAAgB,KACd,IAAMC,EAASnB,EAAUiB,OAAA,CACnBG,EAAanB,EAAegB,OAAA,CAGlC,GAF0BG,IAAe9B,EAElB,CACrB,IAAM+B,EAAoBnB,EAAqBe,OAAA,CACzCF,EAAuBC,EAAiBG,GAE1C7B,EACFc,EAAK,SACIW,SAAAA,GAAmCI,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQG,OAAA,IAAY,OAGhElB,EAAK,WAUDgB,GAFgBC,IAAsBN,EAGxCX,EAAK,iBAELA,EAAK,WAITH,EAAegB,OAAA,CAAU3B,CAC3B,CACF,EAAG,CAACA,EAASc,EAAK,EAElBc,CAAAA,EAAAA,EAAAA,CAAAA,EAAgB,KACd,GAAIrB,EAAM,KAEYA,MADhB0B,EACJ,IAAMC,EAAc3B,OAAAA,CAAAA,EAAAA,EAAK4B,aAAA,CAAcC,WAAA,GAAnB7B,KAAAA,IAAAA,EAAAA,EAAkC8B,OAMhDC,EAAqB,IAEzB,IAAMC,EAAqBd,EADmBf,EAAUiB,OAAO,EACfa,QAAA,CAASjB,EAAMkB,aAAa,EAC5E,GAAIlB,EAAMmB,MAAA,GAAWnC,GAAQgC,IAW3BzB,EAAK,iBACD,CAACH,EAAegB,OAAA,EAAS,CAC3B,IAAMgB,EAAkBpC,EAAKqC,KAAA,CAAMC,iBAAA,CACnCtC,EAAKqC,KAAA,CAAMC,iBAAA,CAAoB,WAK/BZ,EAAYC,EAAYY,UAAA,CAAW,KACI,aAAjCvC,EAAKqC,KAAA,CAAMC,iBAAA,EACbtC,CAAAA,EAAKqC,KAAA,CAAMC,iBAAA,CAAoBF,CAAAA,CAEnC,EACF,CAEJ,EACMI,EAAuB,IACvBxB,EAAMmB,MAAA,GAAWnC,GAEnBK,CAAAA,EAAqBe,OAAA,CAAUD,EAAiBhB,EAAUiB,OAAO,EAErE,EAIA,OAHApB,EAAKyC,gBAAA,CAAiB,iBAAkBD,GACxCxC,EAAKyC,gBAAA,CAAiB,kBAAmBV,GACzC/B,EAAKyC,gBAAA,CAAiB,eAAgBV,GAC/B,KACLJ,EAAYe,YAAA,CAAahB,GACzB1B,EAAK2C,mBAAA,CAAoB,iBAAkBH,GAC3CxC,EAAK2C,mBAAA,CAAoB,kBAAmBZ,GAC5C/B,EAAK2C,mBAAA,CAAoB,eAAgBZ,EAC3C,CACF,CAGExB,EAAK,gBAET,EAAG,CAACP,EAAMO,EAAK,EAER,CACLqC,UAAW,CAAC,UAAW,mBAAkB,CAAEX,QAAA,CAAS3B,GACpDuC,IAAW3C,EAAAA,WAAA,CAAY,IACjBF,GAAMG,CAAAA,EAAUiB,OAAA,CAAU0B,iBAAiB9C,EAAAA,EAC/CC,EAAQD,EACV,EAAG,EAAE,CACP,CACF,EAnJ+BP,GAEvBsD,EACJ,mBAAOrD,EACHA,EAAS,CAAED,QAASG,EAASgD,SAAA,GACvB1C,EAAAA,QAAA,CAAS8C,IAAA,CAAKtD,GAGpBmD,EAAMI,CAAAA,EAAAA,EAAAA,CAAAA,EAAgBrD,EAASiD,GAAA,CA4JrC,CAFItD,EAAAA,OAASD,CAAAA,EAAAA,OAAO4D,wBAAA,CAAyBC,EAAQxD,KAAA,CAAO,SAA/CL,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAuD8D,GAAA,GAC5C,mBAAoB7D,GAAUA,EAAO8D,cAAA,CAEnDF,EAAgBN,GAAA,CAKhBtD,CADVA,EAAAA,OAASD,CAAAA,EAAAA,OAAO4D,wBAAA,CAjKwCH,EAiKN,SAAzCzD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiD8D,GAAA,GACtC,mBAAoB7D,GAAUA,EAAO8D,cAAA,CAEhDF,EAAQxD,KAAA,CAAMkD,GAAA,CAIhBM,EAAQxD,KAAA,CAAMkD,GAAA,EAAQM,EAAgBN,GAAA,EAtK7C,MAAOS,YADY,OAAO5D,GACLE,EAASgD,SAAA,CAAkB1C,EAAAA,YAAA,CAAa6C,EAAO,CAAEF,IAAAA,CAAI,GAAK,IACjF,EA4IA,SAAS1B,EAAiBG,CAAA,EACxB,MAAOA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQY,aAAA,GAAiB,MAClC,CA5IA7C,EAASkE,WAAA,CAAc,2DERjBC,EAAY,OAGZ,CAACC,EAAmBC,EAAe,CAAIC,SHD7CC,CAAA,CAAAC,EAAA,IACA,IAAAC,EAAA,GAqBAC,EAAA,KACA,IAAAC,EAAAF,EAAAG,GAAA,IACaC,EAAAC,aAAmB,CAAAC,IAEhC,gBAAAC,CAAA,EACA,IAAAC,EAAAD,GAAA,CAAAT,EAAA,EAAAI,EACA,OAAaE,EAAAK,OAAa,CAC1B,MAAiB,WAAWX,EAAU,IAAM,GAAAS,CAAA,EAAAT,EAAA,CAAAU,CAAA,IAC5C,CAAAD,EAAAC,EAAA,CAEA,CACA,EAEA,OADAP,EAAAH,SAAA,CAAAA,EACA,CAjCA,SAAAY,CAAA,CAAAJ,CAAA,EACA,IAAAK,EAAwBP,EAAAC,aAAmB,CAAAC,GAC3CM,EAAAZ,EAAAa,MAAA,CACAb,EAAA,IAAAA,EAAAM,EAAA,CACA,IAAAQ,EAAA,IACA,IAAcP,MAAAA,CAAA,CAAA3E,SAAAA,CAAA,IAAAmF,EAAA,CAA8BlF,EAC5CmF,EAAAT,GAAA,CAAAT,EAAA,GAAAc,EAAA,EAAAD,EACAM,EAAoBb,EAAAK,OAAa,KAAAM,EAAAvF,OAAA0F,MAAA,CAAAH,IACjC,MAA6B,GAAAI,EAAAC,GAAA,EAAGJ,EAAAF,QAAA,EAAqBG,MAAAA,EAAArF,SAAAA,CAAA,EACrD,SACAkF,EAAArB,WAAA,CAAAiB,EAAA,WAQA,CAAAI,EAPA,SAAAO,CAAA,CAAAd,CAAA,EACA,IAAAS,EAAAT,GAAA,CAAAT,EAAA,GAAAc,EAAA,EAAAD,EACAI,EAAsBX,EAAAkB,UAAgB,CAAAN,GACtC,GAAAD,EAAA,OAAAA,EACA,GAAAT,KAAA,IAAAA,EAAA,OAAAA,CACA,kBAA2Be,EAAa,2BAA2BX,EAAkB,IACrF,EACA,EAeAa,SAEA,GAAAC,CAAA,EACA,IAAAC,EAAAD,CAAA,IACA,GAAAA,IAAAA,EAAAX,MAAA,QAAAY,EACA,IAAAxB,EAAA,KACA,IAAAyB,EAAAF,EAAArB,GAAA,MACAwB,SAAAC,IACA9B,UAAA8B,EAAA9B,SAAA,CACA,GACA,gBAAA+B,CAAA,EACA,IAAAC,EAAAJ,EAAAK,MAAA,EAAAC,EAAA,CAA2DL,SAAAA,CAAA,CAAA7B,UAAAA,CAAA,CAAqB,IAEhF,IAAAmC,EAAAC,EADAL,EACA,WAAkD/B,EAAU,GAC5D,OAAiB,GAAAkC,CAAA,IAAAC,CAAA,CACjB,EAAO,IACP,OAAa7B,EAAAK,OAAa,OAAU,WAAWgB,EAAA3B,SAAA,CAAoB,GAAAgC,CAAA,GAAgB,CAAAA,EAAA,CACnF,CACA,EAEA,OADA7B,EAAAH,SAAA,CAAA2B,EAAA3B,SAAA,CACAG,CACA,EArBAA,KAAAF,GAAA,EGlCgEL,EAAW,CACzEyC,EAAAA,EAA2BA,CAC5B,EACKC,EAA2BD,CAAAA,EAAAA,EAAAA,EAAAA,IAW3B,CAACE,EAAcC,EAAc,CAAI3C,EAAoCD,GA6BrE6C,EAAatF,EAAAA,UAAA,CACjB,CAACpB,EAA+B2G,KAC9B,GAAM,CACJC,YAAAA,CAAA,CACAxB,MAAOyB,CAAA,CACPC,cAAAA,CAAA,CACAC,aAAAA,CAAA,CACAC,YAAAA,EAAc,aACdC,IAAAA,CAAA,CACAC,eAAAA,EAAiB,YACjB,GAAGC,EACL,CAAInH,EACEoH,EAAYC,CAAAA,EAAAA,EAAAA,EAAAA,EAAaJ,GACzB,CAAC7B,EAAOkC,EAAQ,CAAIC,CAAAA,EAAAA,EAAAA,CAAAA,EAAqB,CAC7CC,KAAMX,EACNY,SAAUX,EACVY,YAAaX,CACf,GAEA,MACExB,CAAAA,EAAAA,EAAAA,GAAAA,EAACiB,EAAA,CACC9B,MAAOkC,EACPe,OAAQC,CAAAA,EAAAA,EAAAA,CAAAA,IACRxC,MAAAA,EACA0B,cAAeQ,EACfN,YAAAA,EACAC,IAAKG,EACLF,eAAAA,EAEAnH,SAAAwF,CAAAA,EAAAA,EAAAA,GAAAA,EAACsC,EAAAA,EAASA,CAACC,GAAA,CAAV,CACCb,IAAKG,EACL,mBAAkBJ,EACjB,GAAGG,CAAA,CACJjE,IAAKyD,CAAA,EACP,EAGN,EAGFD,CAAAA,EAAK9C,WAAA,CAAcC,EAMnB,IAAMkE,EAAgB,WAOhBC,EAAiB5G,EAAAA,UAAA,CACrB,CAACpB,EAAmC2G,KAClC,GAAM,CAAEC,YAAAA,CAAA,CAAaqB,KAAAA,EAAO,GAAM,GAAGC,EAAU,CAAIlI,EAC7CkF,EAAUuB,EAAesB,EAAenB,GACxCuB,EAAwB5B,EAAyBK,GACvD,MACErB,CAAAA,EAAAA,EAAAA,GAAAA,EAAkB6C,EAAAA,EAAA,CAAjB,CACCC,QAAO,GACN,GAAGF,CAAA,CACJnB,YAAa9B,EAAQ8B,WAAA,CACrBC,IAAK/B,EAAQ+B,GAAA,CACbgB,KAAAA,EAEAlI,SAAAwF,CAAAA,EAAAA,EAAAA,GAAAA,EAACsC,EAAAA,EAASA,CAACC,GAAA,CAAV,CACCQ,KAAK,UACL,mBAAkBpD,EAAQ8B,WAAA,CACzB,GAAGkB,CAAA,CACJhF,IAAKyD,CAAA,EACP,EAGN,EAGFqB,CAAAA,EAASpE,WAAA,CAAcmE,EAMvB,IAAMQ,EAAe,cAQfC,EAAoBpH,EAAAA,UAAA,CACxB,CAACpB,EAAsC2G,KACrC,GAAM,CAAEC,YAAAA,CAAA,CAAaxB,MAAAA,CAAA,CAAOqD,SAAAA,EAAW,GAAO,GAAGC,EAAa,CAAI1I,EAC5DkF,EAAUuB,EAAe8B,EAAc3B,GACvCuB,EAAwB5B,EAAyBK,GACjD+B,EAAYC,EAAc1D,EAAQyC,MAAA,CAAQvC,GAC1CyD,EAAYC,EAAc5D,EAAQyC,MAAA,CAAQvC,GAC1C2D,EAAa3D,IAAUF,EAAQE,KAAA,CACrC,MACEG,CAAAA,EAAAA,EAAAA,GAAAA,EAAkB6C,EAAAA,EAAA,CAAjB,CACCC,QAAO,GACN,GAAGF,CAAA,CACJa,UAAW,CAACP,EACZQ,OAAQF,EAERhJ,SAAAwF,CAAAA,EAAAA,EAAAA,GAAAA,EAACsC,EAAAA,EAASA,CAACqB,MAAA,CAAV,CACCC,KAAK,SACLb,KAAK,MACL,gBAAeS,EACf,gBAAeF,EACf,aAAYE,EAAa,SAAW,WACpC,gBAAeN,EAAW,GAAK,OAC/BA,SAAAA,EACAW,GAAIT,EACH,GAAGD,CAAA,CACJxF,IAAKyD,EACL0C,YAAaC,CAAAA,EAAAA,EAAAA,CAAAA,EAAqBtJ,EAAMqJ,WAAA,CAAa,IAG/C,GAAahI,IAAAA,EAAM6H,MAAA,EAAgB7H,CAAkB,IAAlBA,EAAMkI,OAAA,CAI3ClI,EAAMmI,cAAA,GAHNtE,EAAQ4B,aAAA,CAAc1B,EAK1B,GACAqE,UAAWH,CAAAA,EAAAA,EAAAA,CAAAA,EAAqBtJ,EAAMyJ,SAAA,CAAW,IAC3C,CAAC,IAAK,QAAO,CAAEnH,QAAA,CAASjB,EAAM3C,GAAG,GAAGwG,EAAQ4B,aAAA,CAAc1B,EAChE,GACAsE,QAASJ,CAAAA,EAAAA,EAAAA,CAAAA,EAAqBtJ,EAAM0J,OAAA,CAAS,KAG3C,IAAMC,EAAwBzE,WAAAA,EAAQgC,cAAA,CACjC6B,GAAeN,IAAYkB,GAC9BzE,EAAQ4B,aAAA,CAAc1B,EAE1B,EAAC,EACH,EAGN,EAGFoD,CAAAA,EAAY5E,WAAA,CAAc2E,EAM1B,IAAMqB,EAAe,cAafC,EAAoBzI,EAAAA,UAAA,CACxB,CAACpB,EAAsC2G,KACrC,GAAM,CAAEC,YAAAA,CAAA,CAAaxB,MAAAA,CAAA,CAAOzB,WAAAA,CAAA,CAAY5D,SAAAA,CAAA,CAAU,GAAG+J,EAAa,CAAI9J,EAChEkF,EAAUuB,EAAemD,EAAchD,GACvC+B,EAAYC,EAAc1D,EAAQyC,MAAA,CAAQvC,GAC1CyD,EAAYC,EAAc5D,EAAQyC,MAAA,CAAQvC,GAC1C2D,EAAa3D,IAAUF,EAAQE,KAAA,CAC/B2E,EAAqC3I,EAAAA,MAAA,CAAO2H,GAOlD,OALM3H,EAAAA,SAAA,CAAU,KACd,IAAM4I,EAAMC,sBAAsB,IAAOF,EAA6BtI,OAAA,CAAU,IAChF,MAAO,IAAMyI,qBAAqBF,EACpC,EAAG,EAAE,EAGHzE,CAAAA,EAAAA,EAAAA,GAAAA,EAAC7F,EAAA,CAASI,QAAS6D,GAAcoF,EAC9BhJ,SAAA,OAAC,CAAED,QAAAA,CAAA,CAAQ,CAAAqK,QACV5E,CAAAA,EAAAA,EAAAA,GAAAA,EAACsC,EAAAA,EAASA,CAACC,GAAA,CAAV,CACC,aAAYiB,EAAa,SAAW,WACpC,mBAAkB7D,EAAQ8B,WAAA,CAC1BsB,KAAK,WACL,kBAAiBK,EACjByB,OAAQ,CAACtK,EACTsJ,GAAIP,EACJwB,SAAU,EACT,GAAGP,CAAA,CACJ5G,IAAKyD,EACLjE,MAAO,CACL,GAAG1C,EAAM0C,KAAA,CACT4H,kBAAmBP,EAA6BtI,OAAA,CAAU,KAAO,MACnE,EAEC1B,SAAAD,GAAWC,CAAA,GACd,EAIR,GAOF,SAAS6I,EAAcjB,CAAA,CAAgBvC,CAAA,EACrC,MAAO,GAAqBA,MAAAA,CAAlBuC,EAAM,aAAiB4C,MAAA,CAALnF,EAC9B,CAEA,SAAS0D,EAAcnB,CAAA,CAAgBvC,CAAA,EACrC,MAAO,GAAqBA,MAAAA,CAAlBuC,EAAM,aAAiB4C,MAAA,CAALnF,EAC9B,CAVAyE,EAAYjG,WAAA,CAAcgG,EAY1B,IAAMY,EAAO9D,EACP+D,EAAOzC,EACP0C,EAAUlC,EACVmC,EAAUd","sources":["webpack://_N_E/../../../src/icons/brush.ts","webpack://_N_E/../../../src/icons/circle-check.ts","webpack://_N_E/../../../src/icons/circle-minus.ts","webpack://_N_E/../../../src/icons/heart.ts","webpack://_N_E/../../../src/icons/save.ts","webpack://_N_E/../../../src/icons/share-2.ts","webpack://_N_E/../../../src/icons/type-outline.ts","webpack://_N_E/../../../src/icons/zoom-in.ts","webpack://_N_E/../../../src/icons/zoom-out.ts","webpack://_N_E/./node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context/dist/index.mjs","webpack://_N_E/../src/Presence.tsx","webpack://_N_E/../src/useStateMachine.tsx","webpack://_N_E/../src/Tabs.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Brush\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOS4wNiAxMS45IDguMDctOC4wNmEyLjg1IDIuODUgMCAxIDEgNC4wMyA0LjAzbC04LjA2IDguMDgiIC8+CiAgPHBhdGggZD0iTTcuMDcgMTQuOTRjLTEuNjYgMC0zIDEuMzUtMyAzLjAyIDAgMS4zMy0yLjUgMS41Mi0yIDIuMDIgMS4wOCAxLjEgMi40OSAyLjAyIDQgMi4wMiAyLjIgMCA0LTEuOCA0LTQuMDRhMy4wMSAzLjAxIDAgMCAwLTMtMy4wMnoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/brush\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Brush = createLucideIcon('Brush', [\n ['path', { d: 'm9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08', key: '1styjt' }],\n [\n 'path',\n {\n d: 'M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z',\n key: 'z0l1mu',\n },\n ],\n]);\n\nexport default Brush;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name CircleCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJtOSAxMiAyIDIgNC00IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleCheck = createLucideIcon('CircleCheck', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n]);\n\nexport default CircleCheck;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name CircleMinus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8cGF0aCBkPSJNOCAxMmg4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/circle-minus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleMinus = createLucideIcon('CircleMinus', [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M8 12h8', key: '1wcyev' }],\n]);\n\nexport default CircleMinus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Heart\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTkgMTRjMS40OS0xLjQ2IDMtMy4yMSAzLTUuNUE1LjUgNS41IDAgMCAwIDE2LjUgM2MtMS43NiAwLTMgLjUtNC41IDItMS41LTEuNS0yLjc0LTItNC41LTJBNS41IDUuNSAwIDAgMCAyIDguNWMwIDIuMyAxLjUgNC4wNSAzIDUuNWw3IDdaIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/heart\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Heart = createLucideIcon('Heart', [\n [\n 'path',\n {\n d: 'M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z',\n key: 'c3ymky',\n },\n ],\n]);\n\nexport default Heart;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Save\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUuMiAzYTIgMiAwIDAgMSAxLjQuNmwzLjggMy44YTIgMiAwIDAgMSAuNiAxLjRWMTlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTcgMjF2LTdhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDF2NyIgLz4KICA8cGF0aCBkPSJNNyAzdjRhMSAxIDAgMCAwIDEgMWg3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/save\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Save = createLucideIcon('Save', [\n [\n 'path',\n {\n d: 'M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z',\n key: '1c8476',\n },\n ],\n ['path', { d: 'M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7', key: '1ydtos' }],\n ['path', { d: 'M7 3v4a1 1 0 0 0 1 1h7', key: 't51u73' }],\n]);\n\nexport default Save;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Share2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjUiIHI9IjMiIC8+CiAgPGNpcmNsZSBjeD0iNiIgY3k9IjEyIiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjE4IiBjeT0iMTkiIHI9IjMiIC8+CiAgPGxpbmUgeDE9IjguNTkiIHgyPSIxNS40MiIgeTE9IjEzLjUxIiB5Mj0iMTcuNDkiIC8+CiAgPGxpbmUgeDE9IjE1LjQxIiB4Mj0iOC41OSIgeTE9IjYuNTEiIHkyPSIxMC40OSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/share-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Share2 = createLucideIcon('Share2', [\n ['circle', { cx: '18', cy: '5', r: '3', key: 'gq8acd' }],\n ['circle', { cx: '6', cy: '12', r: '3', key: 'w7nqdw' }],\n ['circle', { cx: '18', cy: '19', r: '3', key: '1xt0gg' }],\n ['line', { x1: '8.59', x2: '15.42', y1: '13.51', y2: '17.49', key: '47mynk' }],\n ['line', { x1: '15.41', x2: '8.59', y1: '6.51', y2: '10.49', key: '1n3mei' }],\n]);\n\nexport default Share2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name TypeOutline\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTQgMTYuNWEuNS41IDAgMCAwIC41LjVoLjVhMiAyIDAgMCAxIDAgNEg5YTIgMiAwIDAgMSAwLTRoLjVhLjUuNSAwIDAgMCAuNS0uNXYtOWEuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDAtLjUuNVY4YTIgMiAwIDAgMS00IDBWNWEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtNCAwdi0uNWEuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDAtLjUuNVoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/type-outline\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TypeOutline = createLucideIcon('TypeOutline', [\n [\n 'path',\n {\n d: 'M14 16.5a.5.5 0 0 0 .5.5h.5a2 2 0 0 1 0 4H9a2 2 0 0 1 0-4h.5a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5V8a2 2 0 0 1-4 0V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v3a2 2 0 0 1-4 0v-.5a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5Z',\n key: '1reda3',\n },\n ],\n]);\n\nexport default TypeOutline;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ZoomIn\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxsaW5lIHgxPSIyMSIgeDI9IjE2LjY1IiB5MT0iMjEiIHkyPSIxNi42NSIgLz4KICA8bGluZSB4MT0iMTEiIHgyPSIxMSIgeTE9IjgiIHkyPSIxNCIgLz4KICA8bGluZSB4MT0iOCIgeDI9IjE0IiB5MT0iMTEiIHkyPSIxMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/zoom-in\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ZoomIn = createLucideIcon('ZoomIn', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['line', { x1: '21', x2: '16.65', y1: '21', y2: '16.65', key: '13gj7c' }],\n ['line', { x1: '11', x2: '11', y1: '8', y2: '14', key: '1vmskp' }],\n ['line', { x1: '8', x2: '14', y1: '11', y2: '11', key: 'durymu' }],\n]);\n\nexport default ZoomIn;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ZoomOut\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4IiAvPgogIDxsaW5lIHgxPSIyMSIgeDI9IjE2LjY1IiB5MT0iMjEiIHkyPSIxNi42NSIgLz4KICA8bGluZSB4MT0iOCIgeDI9IjE0IiB5MT0iMTEiIHkyPSIxMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/zoom-out\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ZoomOut = createLucideIcon('ZoomOut', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['line', { x1: '21', x2: '16.65', y1: '21', y2: '16.65', key: '13gj7c' }],\n ['line', { x1: '8', x2: '14', y1: '11', y2: '11', key: 'durymu' }],\n]);\n\nexport default ZoomOut;\n","// packages/react/context/src/createContext.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState();\n const stylesRef = React.useRef({} as any);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n if (node) stylesRef.current = getComputedStyle(node);\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\n\ntype Machine = { [k: string]: { [k: string]: S } };\ntype MachineState = keyof T;\ntype MachineEvent = keyof UnionToIntersection;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine(\n initialState: MachineState,\n machine: M & Machine>\n) {\n return React.useReducer((state: MachineState, event: MachineEvent): MachineState => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps

= P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value?: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\n\ntype TabsElement = React.ElementRef;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n return (\n \n \n \n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ElementRef;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n \n \n \n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ElementRef;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n \n {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n \n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ElementRef;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef(\n (props: ScopedProps, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n \n {({ present }) => (\n \n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n"],"names":["Brush","createLucideIcon","d","key","CircleCheck","cx","cy","r","CircleMinus","Heart","Save","Share2","x1","x2","y1","y2","TypeOutline","ZoomIn","ZoomOut","Presence","Object","getter","mayWarn","present","children","props","presence","usePresence","initialState","machine","node","setNode","React2","stylesRef","prevPresentRef","prevAnimationNameRef","state","send","mounted","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","React","event","nextState","currentAnimationName","getAnimationName","current","useLayoutEffect","styles","wasPresent","prevAnimationName","display","timeoutId","ownerWindow","ownerDocument","defaultView","window","handleAnimationEnd","isCurrentAnimation","includes","animationName","target","currentFillMode","style","animationFillMode","setTimeout","handleAnimationStart","addEventListener","clearTimeout","removeEventListener","isPresent","ref","getComputedStyle","child","only","useComposedRefs","getOwnPropertyDescriptor","element","get","isReactWarning","forceMount","displayName","TABS_NAME","createTabsContext","createTabsScope","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createScope","scopeContexts","map","react","createContext","defaultContext","scope","contexts","useMemo","rootComponentName","BaseContext","index","length","Provider","context","Context","value","values","jsx_runtime","jsx","consumerName","useContext","composeContextScopes","scopes","baseScope","scopeHooks","useScope","createScope2","overrideScopes","nextScopes","reduce","nextScopes2","currentScope","scopeProps","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","setValue","useControllableState","prop","onChange","defaultProp","baseId","useId","Primitive","div","TAB_LIST_NAME","TabsList","loop","listProps","rovingFocusGroupScope","RovingFocusGroup","asChild","role","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","focusable","active","button","type","id","onMouseDown","composeEventHandlers","ctrlKey","preventDefault","onKeyDown","onFocus","isAutomaticActivation","CONTENT_NAME","TabsContent","contentProps","isMountAnimationPreventedRef","rAF","requestAnimationFrame","cancelAnimationFrame","param","hidden","tabIndex","animationDuration","concat","Root","List","Trigger","Content"],"sourceRoot":""}