@particle-academy/react-fancy 5.12.0 → 5.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AudioViewer.types-VWhRx6XG.d.cts +22 -0
- package/dist/AudioViewer.types-VWhRx6XG.d.ts +22 -0
- package/dist/Card-BZ5F6-wd.d.cts +50 -0
- package/dist/Card-BZ5F6-wd.d.ts +50 -0
- package/dist/Carousel.context-Ba3gKZHQ.d.cts +61 -0
- package/dist/Carousel.context-Ba3gKZHQ.d.ts +61 -0
- package/dist/FieldMode.context-Bv_wuS8V.d.ts +74 -0
- package/dist/FieldMode.context-C28RH8GR.d.cts +74 -0
- package/dist/ImageViewer.types-BaqlDeuo.d.cts +55 -0
- package/dist/ImageViewer.types-BaqlDeuo.d.ts +55 -0
- package/dist/PdfViewer.types-_u6vboSl.d.cts +14 -0
- package/dist/PdfViewer.types-_u6vboSl.d.ts +14 -0
- package/dist/Timeline-7zHhIk3P.d.cts +73 -0
- package/dist/Timeline-Cvrd7N7-.d.ts +73 -0
- package/dist/VideoViewer.types-CTwS6PcM.d.cts +26 -0
- package/dist/VideoViewer.types-CTwS6PcM.d.ts +26 -0
- package/dist/accordion-panel.cjs +34 -0
- package/dist/accordion-panel.cjs.map +1 -0
- package/dist/accordion-panel.d.cts +186 -0
- package/dist/accordion-panel.d.ts +186 -0
- package/dist/accordion-panel.js +5 -0
- package/dist/accordion-panel.js.map +1 -0
- package/dist/accordion.cjs +17 -0
- package/dist/accordion.cjs.map +1 -0
- package/dist/accordion.d.cts +53 -0
- package/dist/accordion.d.ts +53 -0
- package/dist/accordion.js +4 -0
- package/dist/accordion.js.map +1 -0
- package/dist/audio-viewer.cjs +13 -0
- package/dist/audio-viewer.cjs.map +1 -0
- package/dist/audio-viewer.d.cts +14 -0
- package/dist/audio-viewer.d.ts +14 -0
- package/dist/audio-viewer.js +4 -0
- package/dist/audio-viewer.js.map +1 -0
- package/dist/autocomplete.cjs +20 -0
- package/dist/autocomplete.cjs.map +1 -0
- package/dist/autocomplete.d.cts +28 -0
- package/dist/autocomplete.d.ts +28 -0
- package/dist/autocomplete.js +11 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/avatar.cjs +13 -0
- package/dist/avatar.cjs.map +1 -0
- package/dist/avatar.d.cts +26 -0
- package/dist/avatar.d.ts +26 -0
- package/dist/avatar.js +4 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.cjs +13 -0
- package/dist/badge.cjs.map +1 -0
- package/dist/badge.d.cts +18 -0
- package/dist/badge.d.ts +18 -0
- package/dist/badge.js +4 -0
- package/dist/badge.js.map +1 -0
- package/dist/brand.cjs +17 -0
- package/dist/brand.cjs.map +1 -0
- package/dist/brand.d.cts +43 -0
- package/dist/brand.d.ts +43 -0
- package/dist/brand.js +4 -0
- package/dist/brand.js.map +1 -0
- package/dist/breadcrumbs.cjs +15 -0
- package/dist/breadcrumbs.cjs.map +1 -0
- package/dist/breadcrumbs.d.cts +36 -0
- package/dist/breadcrumbs.d.ts +36 -0
- package/dist/breadcrumbs.js +6 -0
- package/dist/breadcrumbs.js.map +1 -0
- package/dist/button.cjs +20 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.d.cts +84 -0
- package/dist/button.d.ts +84 -0
- package/dist/button.js +7 -0
- package/dist/button.js.map +1 -0
- package/dist/calendar.cjs +13 -0
- package/dist/calendar.cjs.map +1 -0
- package/dist/calendar.d.cts +20 -0
- package/dist/calendar.d.ts +20 -0
- package/dist/calendar.js +4 -0
- package/dist/calendar.js.map +1 -0
- package/dist/callout.cjs +13 -0
- package/dist/callout.cjs.map +1 -0
- package/dist/callout.d.cts +16 -0
- package/dist/callout.d.ts +16 -0
- package/dist/callout.js +4 -0
- package/dist/callout.js.map +1 -0
- package/dist/card.cjs +29 -0
- package/dist/card.cjs.map +1 -0
- package/dist/card.d.cts +29 -0
- package/dist/card.d.ts +29 -0
- package/dist/card.js +4 -0
- package/dist/card.js.map +1 -0
- package/dist/carousel.cjs +34 -0
- package/dist/carousel.cjs.map +1 -0
- package/dist/carousel.d.cts +13 -0
- package/dist/carousel.d.ts +13 -0
- package/dist/carousel.js +5 -0
- package/dist/carousel.js.map +1 -0
- package/dist/chart.cjs +13 -0
- package/dist/chart.cjs.map +1 -0
- package/dist/chart.d.cts +140 -0
- package/dist/chart.d.ts +140 -0
- package/dist/chart.js +4 -0
- package/dist/chart.js.map +1 -0
- package/dist/chat-drawer.cjs +15 -0
- package/dist/chat-drawer.cjs.map +1 -0
- package/dist/chat-drawer.d.cts +63 -0
- package/dist/chat-drawer.d.ts +63 -0
- package/dist/chat-drawer.js +6 -0
- package/dist/chat-drawer.js.map +1 -0
- package/dist/checkbox-group.cjs +19 -0
- package/dist/checkbox-group.cjs.map +1 -0
- package/dist/checkbox-group.d.cts +18 -0
- package/dist/checkbox-group.d.ts +18 -0
- package/dist/checkbox-group.js +10 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.cjs +17 -0
- package/dist/checkbox.cjs.map +1 -0
- package/dist/checkbox.d.cts +16 -0
- package/dist/checkbox.d.ts +16 -0
- package/dist/checkbox.js +8 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chunk-2CNSZCVE.cjs +119 -0
- package/dist/chunk-2CNSZCVE.cjs.map +1 -0
- package/dist/chunk-2CYRAKWI.cjs +241 -0
- package/dist/chunk-2CYRAKWI.cjs.map +1 -0
- package/dist/chunk-2G3L4BLU.cjs +257 -0
- package/dist/chunk-2G3L4BLU.cjs.map +1 -0
- package/dist/chunk-2PELJ4VA.cjs +335 -0
- package/dist/chunk-2PELJ4VA.cjs.map +1 -0
- package/dist/chunk-2S7WRR5P.cjs +156 -0
- package/dist/chunk-2S7WRR5P.cjs.map +1 -0
- package/dist/chunk-32AJIHBZ.js +201 -0
- package/dist/chunk-32AJIHBZ.js.map +1 -0
- package/dist/chunk-3DJGPNUI.js +39 -0
- package/dist/chunk-3DJGPNUI.js.map +1 -0
- package/dist/chunk-3ETOEEVN.cjs +62 -0
- package/dist/chunk-3ETOEEVN.cjs.map +1 -0
- package/dist/chunk-3GRC5J2L.cjs +54 -0
- package/dist/chunk-3GRC5J2L.cjs.map +1 -0
- package/dist/chunk-3SQ34IQC.cjs +124 -0
- package/dist/chunk-3SQ34IQC.cjs.map +1 -0
- package/dist/chunk-3WGRVDQR.cjs +39 -0
- package/dist/chunk-3WGRVDQR.cjs.map +1 -0
- package/dist/chunk-3Z6ALUWP.cjs +13 -0
- package/dist/chunk-3Z6ALUWP.cjs.map +1 -0
- package/dist/chunk-45BBNJQD.js +2019 -0
- package/dist/chunk-45BBNJQD.js.map +1 -0
- package/dist/chunk-47TFRODY.cjs +107 -0
- package/dist/chunk-47TFRODY.cjs.map +1 -0
- package/dist/chunk-4DQ6HX27.cjs +187 -0
- package/dist/chunk-4DQ6HX27.cjs.map +1 -0
- package/dist/chunk-4UA45GB4.js +129 -0
- package/dist/chunk-4UA45GB4.js.map +1 -0
- package/dist/chunk-57FQGQJK.cjs +26 -0
- package/dist/chunk-57FQGQJK.cjs.map +1 -0
- package/dist/chunk-5FV6GMFP.cjs +4 -0
- package/dist/chunk-5FV6GMFP.cjs.map +1 -0
- package/dist/chunk-5HOQ2PHR.cjs +287 -0
- package/dist/chunk-5HOQ2PHR.cjs.map +1 -0
- package/dist/chunk-5I4PR2KV.cjs +131 -0
- package/dist/chunk-5I4PR2KV.cjs.map +1 -0
- package/dist/chunk-5OC6DUYT.js +139 -0
- package/dist/chunk-5OC6DUYT.js.map +1 -0
- package/dist/chunk-5QL7XT3N.js +80 -0
- package/dist/chunk-5QL7XT3N.js.map +1 -0
- package/dist/chunk-5U2DZ7AV.js +49 -0
- package/dist/chunk-5U2DZ7AV.js.map +1 -0
- package/dist/chunk-5UOQVGZC.cjs +930 -0
- package/dist/chunk-5UOQVGZC.cjs.map +1 -0
- package/dist/chunk-6BW5BQMN.cjs +57 -0
- package/dist/chunk-6BW5BQMN.cjs.map +1 -0
- package/dist/chunk-6FBFE66M.cjs +292 -0
- package/dist/chunk-6FBFE66M.cjs.map +1 -0
- package/dist/chunk-6FQGMVF2.js +25 -0
- package/dist/chunk-6FQGMVF2.js.map +1 -0
- package/dist/chunk-6GC5DMOK.cjs +141 -0
- package/dist/chunk-6GC5DMOK.cjs.map +1 -0
- package/dist/chunk-6H6OYLMJ.js +105 -0
- package/dist/chunk-6H6OYLMJ.js.map +1 -0
- package/dist/chunk-6L6LI2RL.cjs +37 -0
- package/dist/chunk-6L6LI2RL.cjs.map +1 -0
- package/dist/chunk-6MDZQIMZ.cjs +18 -0
- package/dist/chunk-6MDZQIMZ.cjs.map +1 -0
- package/dist/chunk-6OSHAP6L.cjs +110 -0
- package/dist/chunk-6OSHAP6L.cjs.map +1 -0
- package/dist/chunk-7AFEKDUS.js +202 -0
- package/dist/chunk-7AFEKDUS.js.map +1 -0
- package/dist/chunk-7C7VF4WY.cjs +155 -0
- package/dist/chunk-7C7VF4WY.cjs.map +1 -0
- package/dist/chunk-7NLKXBZ2.cjs +88 -0
- package/dist/chunk-7NLKXBZ2.cjs.map +1 -0
- package/dist/chunk-7XDKIZQE.js +382 -0
- package/dist/chunk-7XDKIZQE.js.map +1 -0
- package/dist/chunk-A22T6DKO.cjs +283 -0
- package/dist/chunk-A22T6DKO.cjs.map +1 -0
- package/dist/chunk-A3CNYKT3.js +197 -0
- package/dist/chunk-A3CNYKT3.js.map +1 -0
- package/dist/chunk-AC7M7JDO.cjs +199 -0
- package/dist/chunk-AC7M7JDO.cjs.map +1 -0
- package/dist/chunk-AGDW5ENV.js +37 -0
- package/dist/chunk-AGDW5ENV.js.map +1 -0
- package/dist/chunk-AIA5UNQ5.cjs +4 -0
- package/dist/chunk-AIA5UNQ5.cjs.map +1 -0
- package/dist/chunk-AKIUDPJU.js +119 -0
- package/dist/chunk-AKIUDPJU.js.map +1 -0
- package/dist/chunk-ANEX75DF.cjs +39 -0
- package/dist/chunk-ANEX75DF.cjs.map +1 -0
- package/dist/chunk-AOOBRPTE.cjs +142 -0
- package/dist/chunk-AOOBRPTE.cjs.map +1 -0
- package/dist/chunk-ARSQY4P7.cjs +101 -0
- package/dist/chunk-ARSQY4P7.cjs.map +1 -0
- package/dist/chunk-ATFXU6R6.js +122 -0
- package/dist/chunk-ATFXU6R6.js.map +1 -0
- package/dist/chunk-AUTW5O4W.js +3 -0
- package/dist/chunk-AUTW5O4W.js.map +1 -0
- package/dist/chunk-AVR5P4GA.cjs +832 -0
- package/dist/chunk-AVR5P4GA.cjs.map +1 -0
- package/dist/chunk-B3HVWXIQ.cjs +112 -0
- package/dist/chunk-B3HVWXIQ.cjs.map +1 -0
- package/dist/chunk-BEGDL2CD.js +81 -0
- package/dist/chunk-BEGDL2CD.js.map +1 -0
- package/dist/chunk-BFKCVSNK.cjs +80 -0
- package/dist/chunk-BFKCVSNK.cjs.map +1 -0
- package/dist/chunk-BPBI3WWQ.cjs +364 -0
- package/dist/chunk-BPBI3WWQ.cjs.map +1 -0
- package/dist/chunk-BYIY6BH2.js +927 -0
- package/dist/chunk-BYIY6BH2.js.map +1 -0
- package/dist/chunk-C4Z4S3CX.js +164 -0
- package/dist/chunk-C4Z4S3CX.js.map +1 -0
- package/dist/chunk-C5AZNBVB.js +153 -0
- package/dist/chunk-C5AZNBVB.js.map +1 -0
- package/dist/chunk-CFBK5RIZ.js +35 -0
- package/dist/chunk-CFBK5RIZ.js.map +1 -0
- package/dist/chunk-CHADHN6M.js +37 -0
- package/dist/chunk-CHADHN6M.js.map +1 -0
- package/dist/chunk-CPY7NHXM.js +88 -0
- package/dist/chunk-CPY7NHXM.js.map +1 -0
- package/dist/chunk-CS4GQXYY.js +131 -0
- package/dist/chunk-CS4GQXYY.js.map +1 -0
- package/dist/chunk-CTMJYV3O.js +99 -0
- package/dist/chunk-CTMJYV3O.js.map +1 -0
- package/dist/chunk-CZZH45GQ.cjs +122 -0
- package/dist/chunk-CZZH45GQ.cjs.map +1 -0
- package/dist/chunk-D4WM23Y4.js +109 -0
- package/dist/chunk-D4WM23Y4.js.map +1 -0
- package/dist/chunk-D7NAXQ2N.js +86 -0
- package/dist/chunk-D7NAXQ2N.js.map +1 -0
- package/dist/chunk-DJ3YM72H.cjs +353 -0
- package/dist/chunk-DJ3YM72H.cjs.map +1 -0
- package/dist/chunk-DOSSIU6S.cjs +162 -0
- package/dist/chunk-DOSSIU6S.cjs.map +1 -0
- package/dist/chunk-DSUHZO6T.js +11 -0
- package/dist/chunk-DSUHZO6T.js.map +1 -0
- package/dist/chunk-DTPGJNOI.js +204 -0
- package/dist/chunk-DTPGJNOI.js.map +1 -0
- package/dist/chunk-DV4IMAQW.js +100 -0
- package/dist/chunk-DV4IMAQW.js.map +1 -0
- package/dist/chunk-DWRMC2FN.cjs +95 -0
- package/dist/chunk-DWRMC2FN.cjs.map +1 -0
- package/dist/chunk-DZD2RJVD.js +47 -0
- package/dist/chunk-DZD2RJVD.js.map +1 -0
- package/dist/chunk-E4LFD44D.js +69 -0
- package/dist/chunk-E4LFD44D.js.map +1 -0
- package/dist/chunk-E7PHL3TD.cjs +144 -0
- package/dist/chunk-E7PHL3TD.cjs.map +1 -0
- package/dist/chunk-ECZ66DKF.js +522 -0
- package/dist/chunk-ECZ66DKF.js.map +1 -0
- package/dist/chunk-EERAEPQO.cjs +177 -0
- package/dist/chunk-EERAEPQO.cjs.map +1 -0
- package/dist/chunk-EIBW5YLS.js +52 -0
- package/dist/chunk-EIBW5YLS.js.map +1 -0
- package/dist/chunk-ESKVRRVA.js +56 -0
- package/dist/chunk-ESKVRRVA.js.map +1 -0
- package/dist/chunk-EVXDG2XN.js +108 -0
- package/dist/chunk-EVXDG2XN.js.map +1 -0
- package/dist/chunk-F6NEPU67.cjs +218 -0
- package/dist/chunk-F6NEPU67.cjs.map +1 -0
- package/dist/chunk-F6SCZCJE.js +176 -0
- package/dist/chunk-F6SCZCJE.js.map +1 -0
- package/dist/chunk-FA3D4GFC.cjs +323 -0
- package/dist/chunk-FA3D4GFC.cjs.map +1 -0
- package/dist/chunk-FCAV5IFW.js +63 -0
- package/dist/chunk-FCAV5IFW.js.map +1 -0
- package/dist/chunk-FVV76TRF.js +101 -0
- package/dist/chunk-FVV76TRF.js.map +1 -0
- package/dist/chunk-G2W7B3OG.js +420 -0
- package/dist/chunk-G2W7B3OG.js.map +1 -0
- package/dist/chunk-G34OBTU3.cjs +27 -0
- package/dist/chunk-G34OBTU3.cjs.map +1 -0
- package/dist/chunk-GFYSELJF.js +35 -0
- package/dist/chunk-GFYSELJF.js.map +1 -0
- package/dist/chunk-GIDW3SUE.cjs +59 -0
- package/dist/chunk-GIDW3SUE.cjs.map +1 -0
- package/dist/chunk-GKGL7F36.js +290 -0
- package/dist/chunk-GKGL7F36.js.map +1 -0
- package/dist/chunk-GKPCXPCD.js +262 -0
- package/dist/chunk-GKPCXPCD.js.map +1 -0
- package/dist/chunk-GZIUE4DE.js +117 -0
- package/dist/chunk-GZIUE4DE.js.map +1 -0
- package/dist/chunk-HAOYXGGJ.js +104 -0
- package/dist/chunk-HAOYXGGJ.js.map +1 -0
- package/dist/chunk-HBFVOHQC.cjs +102 -0
- package/dist/chunk-HBFVOHQC.cjs.map +1 -0
- package/dist/chunk-HG6XUJOT.js +328 -0
- package/dist/chunk-HG6XUJOT.js.map +1 -0
- package/dist/chunk-I6L7OP7G.cjs +203 -0
- package/dist/chunk-I6L7OP7G.cjs.map +1 -0
- package/dist/chunk-IE4CM2SN.js +122 -0
- package/dist/chunk-IE4CM2SN.js.map +1 -0
- package/dist/chunk-IF25CE6S.cjs +202 -0
- package/dist/chunk-IF25CE6S.cjs.map +1 -0
- package/dist/chunk-IF3T3ZCB.cjs +273 -0
- package/dist/chunk-IF3T3ZCB.cjs.map +1 -0
- package/dist/chunk-IF5LOWUL.js +273 -0
- package/dist/chunk-IF5LOWUL.js.map +1 -0
- package/dist/chunk-IGU5YXRV.cjs +138 -0
- package/dist/chunk-IGU5YXRV.cjs.map +1 -0
- package/dist/chunk-IGYIMS6J.js +174 -0
- package/dist/chunk-IGYIMS6J.js.map +1 -0
- package/dist/chunk-IJ4I55QQ.cjs +38 -0
- package/dist/chunk-IJ4I55QQ.cjs.map +1 -0
- package/dist/chunk-IXHZVFHX.cjs +44 -0
- package/dist/chunk-IXHZVFHX.cjs.map +1 -0
- package/dist/chunk-J2DI6RMR.cjs +115 -0
- package/dist/chunk-J2DI6RMR.cjs.map +1 -0
- package/dist/chunk-J3XS4HHX.js +230 -0
- package/dist/chunk-J3XS4HHX.js.map +1 -0
- package/dist/chunk-JCOBDDHF.js +118 -0
- package/dist/chunk-JCOBDDHF.js.map +1 -0
- package/dist/chunk-JHEM6IGT.cjs +49 -0
- package/dist/chunk-JHEM6IGT.cjs.map +1 -0
- package/dist/chunk-JIYP73OJ.js +169 -0
- package/dist/chunk-JIYP73OJ.js.map +1 -0
- package/dist/chunk-JKO2Y5SH.js +60 -0
- package/dist/chunk-JKO2Y5SH.js.map +1 -0
- package/dist/chunk-JPTWZ3RF.cjs +280 -0
- package/dist/chunk-JPTWZ3RF.cjs.map +1 -0
- package/dist/chunk-JXE5XID6.js +19 -0
- package/dist/chunk-JXE5XID6.js.map +1 -0
- package/dist/chunk-JXIBUIEY.cjs +144 -0
- package/dist/chunk-JXIBUIEY.cjs.map +1 -0
- package/dist/chunk-JYKZKSZJ.js +122 -0
- package/dist/chunk-JYKZKSZJ.js.map +1 -0
- package/dist/chunk-K2DZEYBF.js +321 -0
- package/dist/chunk-K2DZEYBF.js.map +1 -0
- package/dist/chunk-K7JGOQJG.js +55 -0
- package/dist/chunk-K7JGOQJG.js.map +1 -0
- package/dist/chunk-KC6QBKKB.cjs +173 -0
- package/dist/chunk-KC6QBKKB.cjs.map +1 -0
- package/dist/chunk-KE7KXY5C.cjs +233 -0
- package/dist/chunk-KE7KXY5C.cjs.map +1 -0
- package/dist/chunk-KICZTIZL.cjs +133 -0
- package/dist/chunk-KICZTIZL.cjs.map +1 -0
- package/dist/chunk-KJ22KE56.cjs +19 -0
- package/dist/chunk-KJ22KE56.cjs.map +1 -0
- package/dist/chunk-KUKYJZIU.cjs +179 -0
- package/dist/chunk-KUKYJZIU.cjs.map +1 -0
- package/dist/chunk-L3V3BYVS.cjs +15 -0
- package/dist/chunk-L3V3BYVS.cjs.map +1 -0
- package/dist/chunk-LNWO23PU.cjs +131 -0
- package/dist/chunk-LNWO23PU.cjs.map +1 -0
- package/dist/chunk-LPQVXTKV.js +36 -0
- package/dist/chunk-LPQVXTKV.js.map +1 -0
- package/dist/chunk-LZL2KD4P.cjs +207 -0
- package/dist/chunk-LZL2KD4P.cjs.map +1 -0
- package/dist/chunk-M24NCWBU.js +239 -0
- package/dist/chunk-M24NCWBU.js.map +1 -0
- package/dist/chunk-M7EEQPE7.js +137 -0
- package/dist/chunk-M7EEQPE7.js.map +1 -0
- package/dist/chunk-MDUSUJWY.cjs +31 -0
- package/dist/chunk-MDUSUJWY.cjs.map +1 -0
- package/dist/chunk-MGZE2QEM.cjs +51 -0
- package/dist/chunk-MGZE2QEM.cjs.map +1 -0
- package/dist/chunk-MILTPAF6.js +255 -0
- package/dist/chunk-MILTPAF6.js.map +1 -0
- package/dist/chunk-MQ6VGG62.js +113 -0
- package/dist/chunk-MQ6VGG62.js.map +1 -0
- package/dist/chunk-MYF2PDTU.js +137 -0
- package/dist/chunk-MYF2PDTU.js.map +1 -0
- package/dist/chunk-MZIU27UY.js +133 -0
- package/dist/chunk-MZIU27UY.js.map +1 -0
- package/dist/chunk-N7WQ53US.js +211 -0
- package/dist/chunk-N7WQ53US.js.map +1 -0
- package/dist/chunk-NBZC6LOB.cjs +43 -0
- package/dist/chunk-NBZC6LOB.cjs.map +1 -0
- package/dist/chunk-NH7NRRII.js +167 -0
- package/dist/chunk-NH7NRRII.js.map +1 -0
- package/dist/chunk-NLJGNPNN.js +284 -0
- package/dist/chunk-NLJGNPNN.js.map +1 -0
- package/dist/chunk-NNSNANNY.cjs +224 -0
- package/dist/chunk-NNSNANNY.cjs.map +1 -0
- package/dist/chunk-NPKE2IX6.js +154 -0
- package/dist/chunk-NPKE2IX6.js.map +1 -0
- package/dist/chunk-NRXK42LO.js +12 -0
- package/dist/chunk-NRXK42LO.js.map +1 -0
- package/dist/chunk-O432BDEO.js +160 -0
- package/dist/chunk-O432BDEO.js.map +1 -0
- package/dist/chunk-O4MKOSU2.js +29 -0
- package/dist/chunk-O4MKOSU2.js.map +1 -0
- package/dist/chunk-O5IO7TCO.cjs +4 -0
- package/dist/chunk-O5IO7TCO.cjs.map +1 -0
- package/dist/chunk-OL53XYHF.js +17 -0
- package/dist/chunk-OL53XYHF.js.map +1 -0
- package/dist/chunk-ORCXPDDG.js +3 -0
- package/dist/chunk-ORCXPDDG.js.map +1 -0
- package/dist/chunk-ORFHF6PT.cjs +172 -0
- package/dist/chunk-ORFHF6PT.cjs.map +1 -0
- package/dist/chunk-ORPYY2MO.cjs +124 -0
- package/dist/chunk-ORPYY2MO.cjs.map +1 -0
- package/dist/chunk-OUOEQZHY.cjs +27 -0
- package/dist/chunk-OUOEQZHY.cjs.map +1 -0
- package/dist/chunk-PBXYU4EV.cjs +121 -0
- package/dist/chunk-PBXYU4EV.cjs.map +1 -0
- package/dist/chunk-PH3WGR5P.cjs +82 -0
- package/dist/chunk-PH3WGR5P.cjs.map +1 -0
- package/dist/chunk-POZZY3D5.cjs +135 -0
- package/dist/chunk-POZZY3D5.cjs.map +1 -0
- package/dist/chunk-PPLR2DNC.cjs +41 -0
- package/dist/chunk-PPLR2DNC.cjs.map +1 -0
- package/dist/chunk-PQWQ5K6J.js +15 -0
- package/dist/chunk-PQWQ5K6J.js.map +1 -0
- package/dist/chunk-PRDWJ4AR.js +215 -0
- package/dist/chunk-PRDWJ4AR.js.map +1 -0
- package/dist/chunk-PRJSEZ5F.cjs +285 -0
- package/dist/chunk-PRJSEZ5F.cjs.map +1 -0
- package/dist/chunk-PVWPZYTR.js +830 -0
- package/dist/chunk-PVWPZYTR.js.map +1 -0
- package/dist/chunk-PYRMH34E.js +49 -0
- package/dist/chunk-PYRMH34E.js.map +1 -0
- package/dist/chunk-PZIAL4OP.cjs +524 -0
- package/dist/chunk-PZIAL4OP.cjs.map +1 -0
- package/dist/chunk-QFFC2DKK.js +56 -0
- package/dist/chunk-QFFC2DKK.js.map +1 -0
- package/dist/chunk-R55HE5C5.js +81 -0
- package/dist/chunk-R55HE5C5.js.map +1 -0
- package/dist/chunk-RA3P63XW.cjs +65 -0
- package/dist/chunk-RA3P63XW.cjs.map +1 -0
- package/dist/chunk-RES2GOQQ.js +139 -0
- package/dist/chunk-RES2GOQQ.js.map +1 -0
- package/dist/chunk-RGANGU7X.js +24 -0
- package/dist/chunk-RGANGU7X.js.map +1 -0
- package/dist/chunk-RID7CYGD.js +344 -0
- package/dist/chunk-RID7CYGD.js.map +1 -0
- package/dist/chunk-RM4QWJS3.js +200 -0
- package/dist/chunk-RM4QWJS3.js.map +1 -0
- package/dist/chunk-RNHIDZLE.cjs +103 -0
- package/dist/chunk-RNHIDZLE.cjs.map +1 -0
- package/dist/chunk-RNPFSVFN.js +24 -0
- package/dist/chunk-RNPFSVFN.js.map +1 -0
- package/dist/chunk-RR7BWUVP.cjs +58 -0
- package/dist/chunk-RR7BWUVP.cjs.map +1 -0
- package/dist/chunk-RXDRYWVD.cjs +21 -0
- package/dist/chunk-RXDRYWVD.cjs.map +1 -0
- package/dist/chunk-S3TRSECD.cjs +4 -0
- package/dist/chunk-S3TRSECD.cjs.map +1 -0
- package/dist/chunk-SCPHSBBU.cjs +83 -0
- package/dist/chunk-SCPHSBBU.cjs.map +1 -0
- package/dist/chunk-SKI33QNW.js +133 -0
- package/dist/chunk-SKI33QNW.js.map +1 -0
- package/dist/chunk-T6IXZZBQ.cjs +83 -0
- package/dist/chunk-T6IXZZBQ.cjs.map +1 -0
- package/dist/chunk-T6YELZPJ.cjs +90 -0
- package/dist/chunk-T6YELZPJ.cjs.map +1 -0
- package/dist/chunk-TECFGOV2.js +222 -0
- package/dist/chunk-TECFGOV2.js.map +1 -0
- package/dist/chunk-TJ66S5K6.js +3 -0
- package/dist/chunk-TJ66S5K6.js.map +1 -0
- package/dist/chunk-TVRCOKJQ.cjs +106 -0
- package/dist/chunk-TVRCOKJQ.cjs.map +1 -0
- package/dist/chunk-TXTRTTG7.cjs +51 -0
- package/dist/chunk-TXTRTTG7.cjs.map +1 -0
- package/dist/chunk-TZKZ2LUF.cjs +140 -0
- package/dist/chunk-TZKZ2LUF.cjs.map +1 -0
- package/dist/chunk-UCYAHLGM.js +142 -0
- package/dist/chunk-UCYAHLGM.js.map +1 -0
- package/dist/chunk-UH2YXQ2B.cjs +166 -0
- package/dist/chunk-UH2YXQ2B.cjs.map +1 -0
- package/dist/chunk-UWVVEB2N.js +55 -0
- package/dist/chunk-UWVVEB2N.js.map +1 -0
- package/dist/chunk-VBZZ4CMM.cjs +71 -0
- package/dist/chunk-VBZZ4CMM.cjs.map +1 -0
- package/dist/chunk-VE3EM4K2.cjs +57 -0
- package/dist/chunk-VE3EM4K2.cjs.map +1 -0
- package/dist/chunk-VNDOT3NK.cjs +426 -0
- package/dist/chunk-VNDOT3NK.cjs.map +1 -0
- package/dist/chunk-VXHFR5MV.js +3 -0
- package/dist/chunk-VXHFR5MV.js.map +1 -0
- package/dist/chunk-W2Q4OWHX.cjs +204 -0
- package/dist/chunk-W2Q4OWHX.cjs.map +1 -0
- package/dist/chunk-WEGL4S52.js +450 -0
- package/dist/chunk-WEGL4S52.js.map +1 -0
- package/dist/chunk-WHEXTDPV.js +41 -0
- package/dist/chunk-WHEXTDPV.js.map +1 -0
- package/dist/chunk-WT72KW5M.cjs +347 -0
- package/dist/chunk-WT72KW5M.cjs.map +1 -0
- package/dist/chunk-WVO2EKE6.cjs +101 -0
- package/dist/chunk-WVO2EKE6.cjs.map +1 -0
- package/dist/chunk-WXADO5TS.cjs +124 -0
- package/dist/chunk-WXADO5TS.cjs.map +1 -0
- package/dist/chunk-X36ZGYTF.js +281 -0
- package/dist/chunk-X36ZGYTF.js.map +1 -0
- package/dist/chunk-XBBEQLMY.cjs +214 -0
- package/dist/chunk-XBBEQLMY.cjs.map +1 -0
- package/dist/chunk-XCZZVRBY.cjs +2030 -0
- package/dist/chunk-XCZZVRBY.cjs.map +1 -0
- package/dist/chunk-XJXQG34J.js +77 -0
- package/dist/chunk-XJXQG34J.js.map +1 -0
- package/dist/chunk-XMBOZ73D.js +92 -0
- package/dist/chunk-XMBOZ73D.js.map +1 -0
- package/dist/chunk-XZYKPGSK.cjs +453 -0
- package/dist/chunk-XZYKPGSK.cjs.map +1 -0
- package/dist/chunk-YCZN4FWI.js +42 -0
- package/dist/chunk-YCZN4FWI.js.map +1 -0
- package/dist/chunk-YHXE274U.js +129 -0
- package/dist/chunk-YHXE274U.js.map +1 -0
- package/dist/chunk-YLGTDBB2.cjs +43 -0
- package/dist/chunk-YLGTDBB2.cjs.map +1 -0
- package/dist/chunk-YT42J4VQ.js +361 -0
- package/dist/chunk-YT42J4VQ.js.map +1 -0
- package/dist/chunk-YT6N44Z3.js +99 -0
- package/dist/chunk-YT6N44Z3.js.map +1 -0
- package/dist/chunk-YXC7QHNT.cjs +385 -0
- package/dist/chunk-YXC7QHNT.cjs.map +1 -0
- package/dist/chunk-ZFVSEO5Z.cjs +136 -0
- package/dist/chunk-ZFVSEO5Z.cjs.map +1 -0
- package/dist/chunk-ZLCVKYHY.js +344 -0
- package/dist/chunk-ZLCVKYHY.js.map +1 -0
- package/dist/chunk-ZNTEM7F2.js +184 -0
- package/dist/chunk-ZNTEM7F2.js.map +1 -0
- package/dist/chunk-ZT36VWIA.js +136 -0
- package/dist/chunk-ZT36VWIA.js.map +1 -0
- package/dist/chunk-ZWOEKDNI.js +281 -0
- package/dist/chunk-ZWOEKDNI.js.map +1 -0
- package/dist/code-view.cjs +13 -0
- package/dist/code-view.cjs.map +1 -0
- package/dist/code-view.d.cts +44 -0
- package/dist/code-view.d.ts +44 -0
- package/dist/code-view.js +4 -0
- package/dist/code-view.js.map +1 -0
- package/dist/color-picker.cjs +16 -0
- package/dist/color-picker.cjs.map +1 -0
- package/dist/color-picker.d.cts +20 -0
- package/dist/color-picker.d.ts +20 -0
- package/dist/color-picker.js +7 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/command.cjs +21 -0
- package/dist/command.cjs.map +1 -0
- package/dist/command.d.cts +78 -0
- package/dist/command.d.ts +78 -0
- package/dist/command.js +8 -0
- package/dist/command.js.map +1 -0
- package/dist/composer.cjs +14 -0
- package/dist/composer.cjs.map +1 -0
- package/dist/composer.d.cts +17 -0
- package/dist/composer.d.ts +17 -0
- package/dist/composer.js +5 -0
- package/dist/composer.js.map +1 -0
- package/dist/content-renderer.cjs +23 -0
- package/dist/content-renderer.cjs.map +1 -0
- package/dist/content-renderer.d.cts +27 -0
- package/dist/content-renderer.d.ts +27 -0
- package/dist/content-renderer.js +6 -0
- package/dist/content-renderer.js.map +1 -0
- package/dist/context-menu.cjs +21 -0
- package/dist/context-menu.cjs.map +1 -0
- package/dist/context-menu.d.cts +91 -0
- package/dist/context-menu.d.ts +91 -0
- package/dist/context-menu.js +8 -0
- package/dist/context-menu.js.map +1 -0
- package/dist/date-picker.cjs +19 -0
- package/dist/date-picker.cjs.map +1 -0
- package/dist/date-picker.d.cts +26 -0
- package/dist/date-picker.d.ts +26 -0
- package/dist/date-picker.js +10 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/drawer.cjs +21 -0
- package/dist/drawer.cjs.map +1 -0
- package/dist/drawer.d.cts +116 -0
- package/dist/drawer.d.ts +116 -0
- package/dist/drawer.js +8 -0
- package/dist/drawer.js.map +1 -0
- package/dist/dropdown.cjs +22 -0
- package/dist/dropdown.cjs.map +1 -0
- package/dist/dropdown.d.cts +67 -0
- package/dist/dropdown.d.ts +67 -0
- package/dist/dropdown.js +9 -0
- package/dist/dropdown.js.map +1 -0
- package/dist/editor.cjs +29 -0
- package/dist/editor.cjs.map +1 -0
- package/dist/editor.d.cts +153 -0
- package/dist/editor.d.ts +153 -0
- package/dist/editor.js +16 -0
- package/dist/editor.js.map +1 -0
- package/dist/emoji-select.cjs +15 -0
- package/dist/emoji-select.cjs.map +1 -0
- package/dist/emoji-select.d.cts +13 -0
- package/dist/emoji-select.d.ts +13 -0
- package/dist/emoji-select.js +6 -0
- package/dist/emoji-select.js.map +1 -0
- package/dist/emoji.cjs +14 -0
- package/dist/emoji.cjs.map +1 -0
- package/dist/emoji.d.cts +2 -0
- package/dist/emoji.d.ts +2 -0
- package/dist/emoji.js +5 -0
- package/dist/emoji.js.map +1 -0
- package/dist/extensions-6PVd3-vB.d.cts +38 -0
- package/dist/extensions-6PVd3-vB.d.ts +38 -0
- package/dist/eyebrow.cjs +13 -0
- package/dist/eyebrow.cjs.map +1 -0
- package/dist/eyebrow.d.cts +33 -0
- package/dist/eyebrow.d.ts +33 -0
- package/dist/eyebrow.js +4 -0
- package/dist/eyebrow.js.map +1 -0
- package/dist/faux-client.cjs +13 -0
- package/dist/faux-client.cjs.map +1 -0
- package/dist/faux-client.d.cts +39 -0
- package/dist/faux-client.d.ts +39 -0
- package/dist/faux-client.js +4 -0
- package/dist/faux-client.js.map +1 -0
- package/dist/field.cjs +14 -0
- package/dist/field.cjs.map +1 -0
- package/dist/field.d.cts +18 -0
- package/dist/field.d.ts +18 -0
- package/dist/field.js +5 -0
- package/dist/field.js.map +1 -0
- package/dist/file-browser.cjs +18 -0
- package/dist/file-browser.cjs.map +1 -0
- package/dist/file-browser.d.cts +269 -0
- package/dist/file-browser.d.ts +269 -0
- package/dist/file-browser.js +5 -0
- package/dist/file-browser.js.map +1 -0
- package/dist/file-upload.cjs +17 -0
- package/dist/file-upload.cjs.map +1 -0
- package/dist/file-upload.d.cts +48 -0
- package/dist/file-upload.d.ts +48 -0
- package/dist/file-upload.js +4 -0
- package/dist/file-upload.js.map +1 -0
- package/dist/heading.cjs +13 -0
- package/dist/heading.cjs.map +1 -0
- package/dist/heading.d.cts +25 -0
- package/dist/heading.d.ts +25 -0
- package/dist/heading.js +4 -0
- package/dist/heading.js.map +1 -0
- package/dist/icon.cjs +34 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.d.cts +51 -0
- package/dist/icon.d.ts +51 -0
- package/dist/icon.js +5 -0
- package/dist/icon.js.map +1 -0
- package/dist/image-viewer.cjs +14 -0
- package/dist/image-viewer.cjs.map +1 -0
- package/dist/image-viewer.d.cts +19 -0
- package/dist/image-viewer.d.ts +19 -0
- package/dist/image-viewer.js +5 -0
- package/dist/image-viewer.js.map +1 -0
- package/dist/index-B71wa9AW.d.cts +79 -0
- package/dist/index-BktWpyRH.d.cts +53 -0
- package/dist/index-BktWpyRH.d.ts +53 -0
- package/dist/index-bIntFOl5.d.ts +79 -0
- package/dist/index-list.cjs +13 -0
- package/dist/index-list.cjs.map +1 -0
- package/dist/index-list.d.cts +49 -0
- package/dist/index-list.d.ts +49 -0
- package/dist/index-list.js +4 -0
- package/dist/index-list.js.map +1 -0
- package/dist/index.cjs +666 -16826
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +93 -4078
- package/dist/index.d.ts +93 -4078
- package/dist/index.js +103 -16708
- package/dist/index.js.map +1 -1
- package/dist/input-tag.cjs +28 -0
- package/dist/input-tag.cjs.map +1 -0
- package/dist/input-tag.d.cts +134 -0
- package/dist/input-tag.d.ts +134 -0
- package/dist/input-tag.js +3 -0
- package/dist/input-tag.js.map +1 -0
- package/dist/input.cjs +20 -0
- package/dist/input.cjs.map +1 -0
- package/dist/input.d.cts +32 -0
- package/dist/input.d.ts +32 -0
- package/dist/input.js +11 -0
- package/dist/input.js.map +1 -0
- package/dist/inputs.cjs +100 -0
- package/dist/inputs.cjs.map +1 -0
- package/dist/inputs.d.cts +16 -0
- package/dist/inputs.d.ts +16 -0
- package/dist/inputs.js +27 -0
- package/dist/inputs.js.map +1 -0
- package/dist/inputs.types-CkWdvN-t.d.cts +44 -0
- package/dist/inputs.types-DERzxpe1.d.ts +44 -0
- package/dist/kanban.cjs +17 -0
- package/dist/kanban.cjs.map +1 -0
- package/dist/kanban.d.cts +136 -0
- package/dist/kanban.d.ts +136 -0
- package/dist/kanban.js +4 -0
- package/dist/kanban.js.map +1 -0
- package/dist/kbd.cjs +13 -0
- package/dist/kbd.cjs.map +1 -0
- package/dist/kbd.d.cts +30 -0
- package/dist/kbd.d.ts +30 -0
- package/dist/kbd.js +4 -0
- package/dist/kbd.js.map +1 -0
- package/dist/magic-wand.cjs +25 -0
- package/dist/magic-wand.cjs.map +1 -0
- package/dist/magic-wand.d.cts +62 -0
- package/dist/magic-wand.d.ts +62 -0
- package/dist/magic-wand.js +16 -0
- package/dist/magic-wand.js.map +1 -0
- package/dist/marquee.cjs +13 -0
- package/dist/marquee.cjs.map +1 -0
- package/dist/marquee.d.cts +48 -0
- package/dist/marquee.d.ts +48 -0
- package/dist/marquee.js +4 -0
- package/dist/marquee.js.map +1 -0
- package/dist/media-viewer.cjs +18 -0
- package/dist/media-viewer.cjs.map +1 -0
- package/dist/media-viewer.d.cts +6 -0
- package/dist/media-viewer.d.ts +6 -0
- package/dist/media-viewer.js +9 -0
- package/dist/media-viewer.js.map +1 -0
- package/dist/menu.cjs +17 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.d.cts +60 -0
- package/dist/menu.d.ts +60 -0
- package/dist/menu.js +4 -0
- package/dist/menu.js.map +1 -0
- package/dist/mobile-menu.cjs +26 -0
- package/dist/mobile-menu.cjs.map +1 -0
- package/dist/mobile-menu.d.cts +60 -0
- package/dist/mobile-menu.d.ts +60 -0
- package/dist/mobile-menu.js +13 -0
- package/dist/mobile-menu.js.map +1 -0
- package/dist/modal.cjs +21 -0
- package/dist/modal.cjs.map +1 -0
- package/dist/modal.d.cts +52 -0
- package/dist/modal.d.ts +52 -0
- package/dist/modal.js +8 -0
- package/dist/modal.js.map +1 -0
- package/dist/mode.cjs +37 -0
- package/dist/mode.cjs.map +1 -0
- package/dist/mode.d.cts +28 -0
- package/dist/mode.d.ts +28 -0
- package/dist/mode.js +8 -0
- package/dist/mode.js.map +1 -0
- package/dist/mood-meter.cjs +12 -0
- package/dist/mood-meter.cjs.map +1 -0
- package/dist/mood-meter.d.cts +67 -0
- package/dist/mood-meter.d.ts +67 -0
- package/dist/mood-meter.js +3 -0
- package/dist/mood-meter.js.map +1 -0
- package/dist/multi-switch.cjs +19 -0
- package/dist/multi-switch.cjs.map +1 -0
- package/dist/multi-switch.d.cts +18 -0
- package/dist/multi-switch.d.ts +18 -0
- package/dist/multi-switch.js +10 -0
- package/dist/multi-switch.js.map +1 -0
- package/dist/navbar.cjs +17 -0
- package/dist/navbar.cjs.map +1 -0
- package/dist/navbar.d.cts +60 -0
- package/dist/navbar.d.ts +60 -0
- package/dist/navbar.js +4 -0
- package/dist/navbar.js.map +1 -0
- package/dist/otp-input.cjs +16 -0
- package/dist/otp-input.cjs.map +1 -0
- package/dist/otp-input.d.cts +18 -0
- package/dist/otp-input.d.ts +18 -0
- package/dist/otp-input.js +7 -0
- package/dist/otp-input.js.map +1 -0
- package/dist/pagination.cjs +13 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.d.cts +16 -0
- package/dist/pagination.d.ts +16 -0
- package/dist/pagination.js +4 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pdf-viewer.cjs +13 -0
- package/dist/pdf-viewer.cjs.map +1 -0
- package/dist/pdf-viewer.d.cts +16 -0
- package/dist/pdf-viewer.d.ts +16 -0
- package/dist/pdf-viewer.js +4 -0
- package/dist/pdf-viewer.js.map +1 -0
- package/dist/pillbox.cjs +14 -0
- package/dist/pillbox.cjs.map +1 -0
- package/dist/pillbox.d.cts +15 -0
- package/dist/pillbox.d.ts +15 -0
- package/dist/pillbox.js +5 -0
- package/dist/pillbox.js.map +1 -0
- package/dist/popover.cjs +21 -0
- package/dist/popover.cjs.map +1 -0
- package/dist/popover.d.cts +71 -0
- package/dist/popover.d.ts +71 -0
- package/dist/popover.js +8 -0
- package/dist/popover.js.map +1 -0
- package/dist/portal.cjs +12 -0
- package/dist/portal.cjs.map +1 -0
- package/dist/portal.d.cts +10 -0
- package/dist/portal.d.ts +10 -0
- package/dist/portal.js +3 -0
- package/dist/portal.js.map +1 -0
- package/dist/profile.cjs +14 -0
- package/dist/profile.cjs.map +1 -0
- package/dist/profile.d.cts +16 -0
- package/dist/profile.d.ts +16 -0
- package/dist/profile.js +5 -0
- package/dist/profile.js.map +1 -0
- package/dist/progress.cjs +13 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +25 -0
- package/dist/progress.d.ts +25 -0
- package/dist/progress.js +4 -0
- package/dist/progress.js.map +1 -0
- package/dist/prompt-input.cjs +20 -0
- package/dist/prompt-input.cjs.map +1 -0
- package/dist/prompt-input.d.cts +76 -0
- package/dist/prompt-input.d.ts +76 -0
- package/dist/prompt-input.js +11 -0
- package/dist/prompt-input.js.map +1 -0
- package/dist/pull-quote.cjs +13 -0
- package/dist/pull-quote.cjs.map +1 -0
- package/dist/pull-quote.d.cts +33 -0
- package/dist/pull-quote.d.ts +33 -0
- package/dist/pull-quote.js +4 -0
- package/dist/pull-quote.js.map +1 -0
- package/dist/radio-group.cjs +19 -0
- package/dist/radio-group.cjs.map +1 -0
- package/dist/radio-group.d.cts +18 -0
- package/dist/radio-group.d.ts +18 -0
- package/dist/radio-group.js +10 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/reason-tag.cjs +22 -0
- package/dist/reason-tag.cjs.map +1 -0
- package/dist/reason-tag.d.cts +57 -0
- package/dist/reason-tag.d.ts +57 -0
- package/dist/reason-tag.js +13 -0
- package/dist/reason-tag.js.map +1 -0
- package/dist/select.cjs +23 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.d.cts +41 -0
- package/dist/select.d.ts +41 -0
- package/dist/select.js +14 -0
- package/dist/select.js.map +1 -0
- package/dist/separator.cjs +13 -0
- package/dist/separator.cjs.map +1 -0
- package/dist/separator.d.cts +14 -0
- package/dist/separator.d.ts +14 -0
- package/dist/separator.js +4 -0
- package/dist/separator.js.map +1 -0
- package/dist/sidebar.cjs +25 -0
- package/dist/sidebar.cjs.map +1 -0
- package/dist/sidebar.d.cts +80 -0
- package/dist/sidebar.d.ts +80 -0
- package/dist/sidebar.js +12 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/skeleton.cjs +13 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.d.cts +16 -0
- package/dist/skeleton.d.ts +16 -0
- package/dist/skeleton.js +4 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.cjs +19 -0
- package/dist/slider.cjs.map +1 -0
- package/dist/slider.d.cts +34 -0
- package/dist/slider.d.ts +34 -0
- package/dist/slider.js +10 -0
- package/dist/slider.js.map +1 -0
- package/dist/stat.cjs +17 -0
- package/dist/stat.cjs.map +1 -0
- package/dist/stat.d.cts +29 -0
- package/dist/stat.d.ts +29 -0
- package/dist/stat.js +4 -0
- package/dist/stat.js.map +1 -0
- package/dist/sticky-note.cjs +13 -0
- package/dist/sticky-note.cjs.map +1 -0
- package/dist/sticky-note.d.cts +53 -0
- package/dist/sticky-note.d.ts +53 -0
- package/dist/sticky-note.js +4 -0
- package/dist/sticky-note.js.map +1 -0
- package/dist/switch.cjs +17 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.d.cts +16 -0
- package/dist/switch.d.ts +16 -0
- package/dist/switch.js +8 -0
- package/dist/switch.js.map +1 -0
- package/dist/table.cjs +50 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.d.cts +89 -0
- package/dist/table.d.ts +89 -0
- package/dist/table.js +5 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.cjs +18 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.d.cts +68 -0
- package/dist/tabs.d.ts +68 -0
- package/dist/tabs.js +5 -0
- package/dist/tabs.js.map +1 -0
- package/dist/text.cjs +13 -0
- package/dist/text.cjs.map +1 -0
- package/dist/text.d.cts +17 -0
- package/dist/text.d.ts +17 -0
- package/dist/text.js +4 -0
- package/dist/text.js.map +1 -0
- package/dist/textarea.cjs +20 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.d.cts +15 -0
- package/dist/textarea.d.ts +15 -0
- package/dist/textarea.js +11 -0
- package/dist/textarea.js.map +1 -0
- package/dist/time-grid.cjs +13 -0
- package/dist/time-grid.cjs.map +1 -0
- package/dist/time-grid.d.cts +53 -0
- package/dist/time-grid.d.ts +53 -0
- package/dist/time-grid.js +4 -0
- package/dist/time-grid.js.map +1 -0
- package/dist/time-picker.cjs +16 -0
- package/dist/time-picker.cjs.map +1 -0
- package/dist/time-picker.d.cts +19 -0
- package/dist/time-picker.d.ts +19 -0
- package/dist/time-picker.js +7 -0
- package/dist/time-picker.js.map +1 -0
- package/dist/timeline.cjs +21 -0
- package/dist/timeline.cjs.map +1 -0
- package/dist/timeline.d.cts +10 -0
- package/dist/timeline.d.ts +10 -0
- package/dist/timeline.js +4 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toast.cjs +18 -0
- package/dist/toast.cjs.map +1 -0
- package/dist/toast.d.cts +54 -0
- package/dist/toast.d.ts +54 -0
- package/dist/toast.js +5 -0
- package/dist/toast.js.map +1 -0
- package/dist/tooltip.cjs +15 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.d.cts +16 -0
- package/dist/tooltip.d.ts +16 -0
- package/dist/tooltip.js +6 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree-nav.cjs +17 -0
- package/dist/tree-nav.cjs.map +1 -0
- package/dist/tree-nav.d.cts +114 -0
- package/dist/tree-nav.d.ts +114 -0
- package/dist/tree-nav.js +4 -0
- package/dist/tree-nav.js.map +1 -0
- package/dist/types-8Sv0rCjw.d.cts +58 -0
- package/dist/types-8Sv0rCjw.d.ts +58 -0
- package/dist/video-viewer.cjs +13 -0
- package/dist/video-viewer.cjs.map +1 -0
- package/dist/video-viewer.d.cts +14 -0
- package/dist/video-viewer.d.ts +14 -0
- package/dist/video-viewer.js +4 -0
- package/dist/video-viewer.js.map +1 -0
- package/package.json +845 -5
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { sanitizeHtml } from './chunk-XJXQG34J.js';
|
|
2
|
+
import { cn } from './chunk-DSUHZO6T.js';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { marked } from 'marked';
|
|
5
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/components/ContentRenderer/extensions.ts
|
|
8
|
+
var globalRegistry = [];
|
|
9
|
+
function registerExtension(extension) {
|
|
10
|
+
const idx = globalRegistry.findIndex(
|
|
11
|
+
(e) => e.tag.toLowerCase() === extension.tag.toLowerCase()
|
|
12
|
+
);
|
|
13
|
+
if (idx >= 0) {
|
|
14
|
+
globalRegistry[idx] = extension;
|
|
15
|
+
} else {
|
|
16
|
+
globalRegistry.push(extension);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function registerExtensions(extensions) {
|
|
20
|
+
for (const ext of extensions) {
|
|
21
|
+
registerExtension(ext);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function getGlobalExtensions() {
|
|
25
|
+
return [...globalRegistry];
|
|
26
|
+
}
|
|
27
|
+
function parseAttributes(attrString) {
|
|
28
|
+
const attrs = {};
|
|
29
|
+
const re = /(\w[\w-]*)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S+)))?/g;
|
|
30
|
+
let m;
|
|
31
|
+
while ((m = re.exec(attrString)) !== null) {
|
|
32
|
+
attrs[m[1]] = m[2] ?? m[3] ?? m[4] ?? "";
|
|
33
|
+
}
|
|
34
|
+
return attrs;
|
|
35
|
+
}
|
|
36
|
+
function parseSegments(html, extensions) {
|
|
37
|
+
if (extensions.length === 0) {
|
|
38
|
+
return html ? [{ type: "html", content: html }] : [];
|
|
39
|
+
}
|
|
40
|
+
const tagNames = extensions.map((e) => e.tag).join("|");
|
|
41
|
+
const pattern = new RegExp(
|
|
42
|
+
`<(${tagNames})((?:\\s+[^>]*)?)>([\\s\\S]*?)<\\/\\1>`,
|
|
43
|
+
"gi"
|
|
44
|
+
);
|
|
45
|
+
const segments = [];
|
|
46
|
+
let lastIndex = 0;
|
|
47
|
+
let match;
|
|
48
|
+
while ((match = pattern.exec(html)) !== null) {
|
|
49
|
+
if (match.index > lastIndex) {
|
|
50
|
+
segments.push({ type: "html", content: html.slice(lastIndex, match.index) });
|
|
51
|
+
}
|
|
52
|
+
const tag = match[1].toLowerCase();
|
|
53
|
+
const rawAttrs = match[2] ? match[2].trim() : "";
|
|
54
|
+
const innerContent = match[3];
|
|
55
|
+
segments.push({
|
|
56
|
+
type: "extension",
|
|
57
|
+
tag,
|
|
58
|
+
content: innerContent,
|
|
59
|
+
attributes: rawAttrs ? parseAttributes(rawAttrs) : {}
|
|
60
|
+
});
|
|
61
|
+
lastIndex = match.index + match[0].length;
|
|
62
|
+
}
|
|
63
|
+
if (lastIndex < html.length) {
|
|
64
|
+
segments.push({ type: "html", content: html.slice(lastIndex) });
|
|
65
|
+
}
|
|
66
|
+
return segments;
|
|
67
|
+
}
|
|
68
|
+
function mergeExtensions(instanceExtensions) {
|
|
69
|
+
const globals = getGlobalExtensions();
|
|
70
|
+
if (!instanceExtensions || instanceExtensions.length === 0) return globals;
|
|
71
|
+
if (globals.length === 0) return instanceExtensions;
|
|
72
|
+
const merged = [...globals];
|
|
73
|
+
for (const ext of instanceExtensions) {
|
|
74
|
+
const idx = merged.findIndex(
|
|
75
|
+
(e) => e.tag.toLowerCase() === ext.tag.toLowerCase()
|
|
76
|
+
);
|
|
77
|
+
if (idx >= 0) {
|
|
78
|
+
merged[idx] = ext;
|
|
79
|
+
} else {
|
|
80
|
+
merged.push(ext);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return merged;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/components/Editor/editor.utils.ts
|
|
87
|
+
var proseClasses = [
|
|
88
|
+
"[&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mt-4 [&_h1]:mb-2",
|
|
89
|
+
"[&_h2]:text-xl [&_h2]:font-semibold [&_h2]:mt-3 [&_h2]:mb-2",
|
|
90
|
+
"[&_h3]:text-lg [&_h3]:font-semibold [&_h3]:mt-2 [&_h3]:mb-1",
|
|
91
|
+
"[&_p]:mb-2",
|
|
92
|
+
"[&_a]:text-blue-500 [&_a]:underline",
|
|
93
|
+
"[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5",
|
|
94
|
+
"[&_li]:mb-1",
|
|
95
|
+
"[&_blockquote]:border-l-4 [&_blockquote]:border-zinc-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:text-zinc-600 dark:[&_blockquote]:border-zinc-600 dark:[&_blockquote]:text-zinc-400",
|
|
96
|
+
"[&_code]:bg-zinc-100 [&_code]:px-1 [&_code]:rounded [&_code]:text-sm dark:[&_code]:bg-zinc-800",
|
|
97
|
+
"[&_pre]:bg-zinc-950 [&_pre]:text-zinc-100 [&_pre]:p-4 [&_pre]:rounded-lg [&_pre]:overflow-x-auto",
|
|
98
|
+
"[&_pre_code]:bg-transparent [&_pre_code]:px-0",
|
|
99
|
+
"[&_strong]:font-bold [&_em]:italic"
|
|
100
|
+
].join(" ");
|
|
101
|
+
var HTML_TAG_PATTERN = /<(p|div|br|h[1-6]|ul|ol|strong|em|a |img |table|pre|code|blockquote)[>\s/]/i;
|
|
102
|
+
function detectFormat(value) {
|
|
103
|
+
return HTML_TAG_PATTERN.test(value) ? "html" : "markdown";
|
|
104
|
+
}
|
|
105
|
+
var STANDARD_HTML_TAGS = /* @__PURE__ */ new Set([
|
|
106
|
+
"a",
|
|
107
|
+
"abbr",
|
|
108
|
+
"address",
|
|
109
|
+
"area",
|
|
110
|
+
"article",
|
|
111
|
+
"aside",
|
|
112
|
+
"audio",
|
|
113
|
+
"b",
|
|
114
|
+
"base",
|
|
115
|
+
"bdi",
|
|
116
|
+
"bdo",
|
|
117
|
+
"blockquote",
|
|
118
|
+
"body",
|
|
119
|
+
"br",
|
|
120
|
+
"button",
|
|
121
|
+
"canvas",
|
|
122
|
+
"caption",
|
|
123
|
+
"cite",
|
|
124
|
+
"code",
|
|
125
|
+
"col",
|
|
126
|
+
"colgroup",
|
|
127
|
+
"data",
|
|
128
|
+
"datalist",
|
|
129
|
+
"dd",
|
|
130
|
+
"del",
|
|
131
|
+
"details",
|
|
132
|
+
"dfn",
|
|
133
|
+
"dialog",
|
|
134
|
+
"div",
|
|
135
|
+
"dl",
|
|
136
|
+
"dt",
|
|
137
|
+
"em",
|
|
138
|
+
"embed",
|
|
139
|
+
"fieldset",
|
|
140
|
+
"figcaption",
|
|
141
|
+
"figure",
|
|
142
|
+
"footer",
|
|
143
|
+
"form",
|
|
144
|
+
"h1",
|
|
145
|
+
"h2",
|
|
146
|
+
"h3",
|
|
147
|
+
"h4",
|
|
148
|
+
"h5",
|
|
149
|
+
"h6",
|
|
150
|
+
"head",
|
|
151
|
+
"header",
|
|
152
|
+
"hgroup",
|
|
153
|
+
"hr",
|
|
154
|
+
"html",
|
|
155
|
+
"i",
|
|
156
|
+
"iframe",
|
|
157
|
+
"img",
|
|
158
|
+
"input",
|
|
159
|
+
"ins",
|
|
160
|
+
"kbd",
|
|
161
|
+
"label",
|
|
162
|
+
"legend",
|
|
163
|
+
"li",
|
|
164
|
+
"link",
|
|
165
|
+
"main",
|
|
166
|
+
"map",
|
|
167
|
+
"mark",
|
|
168
|
+
"menu",
|
|
169
|
+
"meta",
|
|
170
|
+
"meter",
|
|
171
|
+
"nav",
|
|
172
|
+
"noscript",
|
|
173
|
+
"object",
|
|
174
|
+
"ol",
|
|
175
|
+
"optgroup",
|
|
176
|
+
"option",
|
|
177
|
+
"output",
|
|
178
|
+
"p",
|
|
179
|
+
"param",
|
|
180
|
+
"picture",
|
|
181
|
+
"pre",
|
|
182
|
+
"progress",
|
|
183
|
+
"q",
|
|
184
|
+
"rp",
|
|
185
|
+
"rt",
|
|
186
|
+
"ruby",
|
|
187
|
+
"s",
|
|
188
|
+
"samp",
|
|
189
|
+
"script",
|
|
190
|
+
"section",
|
|
191
|
+
"select",
|
|
192
|
+
"slot",
|
|
193
|
+
"small",
|
|
194
|
+
"source",
|
|
195
|
+
"span",
|
|
196
|
+
"strike",
|
|
197
|
+
"strong",
|
|
198
|
+
"style",
|
|
199
|
+
"sub",
|
|
200
|
+
"summary",
|
|
201
|
+
"sup",
|
|
202
|
+
"table",
|
|
203
|
+
"tbody",
|
|
204
|
+
"td",
|
|
205
|
+
"template",
|
|
206
|
+
"textarea",
|
|
207
|
+
"tfoot",
|
|
208
|
+
"th",
|
|
209
|
+
"thead",
|
|
210
|
+
"time",
|
|
211
|
+
"title",
|
|
212
|
+
"tr",
|
|
213
|
+
"track",
|
|
214
|
+
"u",
|
|
215
|
+
"ul",
|
|
216
|
+
"var",
|
|
217
|
+
"video",
|
|
218
|
+
"wbr"
|
|
219
|
+
]);
|
|
220
|
+
function htmlToMarkdown(html) {
|
|
221
|
+
let md = html;
|
|
222
|
+
md = md.replace(/<h1[^>]*>(.*?)<\/h1>/gi, "# $1\n");
|
|
223
|
+
md = md.replace(/<h2[^>]*>(.*?)<\/h2>/gi, "## $1\n");
|
|
224
|
+
md = md.replace(/<h3[^>]*>(.*?)<\/h3>/gi, "### $1\n");
|
|
225
|
+
md = md.replace(/<h4[^>]*>(.*?)<\/h4>/gi, "#### $1\n");
|
|
226
|
+
md = md.replace(/<h5[^>]*>(.*?)<\/h5>/gi, "##### $1\n");
|
|
227
|
+
md = md.replace(/<h6[^>]*>(.*?)<\/h6>/gi, "###### $1\n");
|
|
228
|
+
md = md.replace(/<li[^>]*>(.*?)<\/li>/gi, "- $1\n");
|
|
229
|
+
md = md.replace(/<\/?[uo]l[^>]*>/gi, "\n");
|
|
230
|
+
md = md.replace(/<strong[^>]*>(.*?)<\/strong>/gi, "**$1**");
|
|
231
|
+
md = md.replace(/<b[^>]*>(.*?)<\/b>/gi, "**$1**");
|
|
232
|
+
md = md.replace(/<em[^>]*>(.*?)<\/em>/gi, "*$1*");
|
|
233
|
+
md = md.replace(/<i[^>]*>(.*?)<\/i>/gi, "*$1*");
|
|
234
|
+
md = md.replace(/<u[^>]*>(.*?)<\/u>/gi, "$1");
|
|
235
|
+
md = md.replace(/<s[^>]*>(.*?)<\/s>/gi, "~~$1~~");
|
|
236
|
+
md = md.replace(/<strike[^>]*>(.*?)<\/strike>/gi, "~~$1~~");
|
|
237
|
+
md = md.replace(/<del[^>]*>(.*?)<\/del>/gi, "~~$1~~");
|
|
238
|
+
md = md.replace(/<code[^>]*>(.*?)<\/code>/gi, "`$1`");
|
|
239
|
+
md = md.replace(/<a[^>]*href="([^"]*)"[^>]*>(.*?)<\/a>/gi, "[$2]($1)");
|
|
240
|
+
md = md.replace(/<blockquote[^>]*>(.*?)<\/blockquote>/gi, "> $1\n");
|
|
241
|
+
md = md.replace(/<br\s*\/?>/gi, "\n");
|
|
242
|
+
md = md.replace(/<p[^>]*>(.*?)<\/p>/gi, "$1\n\n");
|
|
243
|
+
md = md.replace(/<div[^>]*>(.*?)<\/div>/gi, "$1\n");
|
|
244
|
+
md = md.replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi, (match, tagName) => {
|
|
245
|
+
return STANDARD_HTML_TAGS.has(tagName.toLowerCase()) ? "" : match;
|
|
246
|
+
});
|
|
247
|
+
md = md.replace(/</g, "<");
|
|
248
|
+
md = md.replace(/>/g, ">");
|
|
249
|
+
md = md.replace(/"/g, '"');
|
|
250
|
+
md = md.replace(/'/g, "'");
|
|
251
|
+
md = md.replace(/ /g, " ");
|
|
252
|
+
md = md.replace(/&/g, "&");
|
|
253
|
+
md = md.replace(/\n{3,}/g, "\n\n");
|
|
254
|
+
md = md.trim();
|
|
255
|
+
return md;
|
|
256
|
+
}
|
|
257
|
+
function extensionEditorClasses(extensions) {
|
|
258
|
+
if (extensions.length === 0) return "";
|
|
259
|
+
return extensions.map((ext) => {
|
|
260
|
+
const tag = ext.tag.toLowerCase();
|
|
261
|
+
return [
|
|
262
|
+
`[&_${tag}]:block`,
|
|
263
|
+
`[&_${tag}]:my-2`,
|
|
264
|
+
`[&_${tag}]:rounded-lg`,
|
|
265
|
+
`[&_${tag}]:border`,
|
|
266
|
+
`[&_${tag}]:border-dashed`,
|
|
267
|
+
`[&_${tag}]:border-zinc-300`,
|
|
268
|
+
`[&_${tag}]:bg-zinc-50`,
|
|
269
|
+
`[&_${tag}]:p-3`,
|
|
270
|
+
`[&_${tag}]:text-xs`,
|
|
271
|
+
`dark:[&_${tag}]:border-zinc-600`,
|
|
272
|
+
`dark:[&_${tag}]:bg-zinc-800/50`
|
|
273
|
+
].join(" ");
|
|
274
|
+
}).join(" ");
|
|
275
|
+
}
|
|
276
|
+
function RenderedContent({
|
|
277
|
+
html,
|
|
278
|
+
extensions: instanceExtensions,
|
|
279
|
+
unsafe = false
|
|
280
|
+
}) {
|
|
281
|
+
const extensions = useMemo(
|
|
282
|
+
() => mergeExtensions(instanceExtensions),
|
|
283
|
+
[instanceExtensions]
|
|
284
|
+
);
|
|
285
|
+
const segments = useMemo(
|
|
286
|
+
() => parseSegments(html, extensions),
|
|
287
|
+
[html, extensions]
|
|
288
|
+
);
|
|
289
|
+
const renderHtml = (content) => unsafe ? content : sanitizeHtml(content);
|
|
290
|
+
if (segments.length === 1 && segments[0].type === "html") {
|
|
291
|
+
return /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: renderHtml(segments[0].content) } });
|
|
292
|
+
}
|
|
293
|
+
if (segments.length === 0) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
return /* @__PURE__ */ jsx(Fragment, { children: segments.map((segment, i) => {
|
|
297
|
+
if (segment.type === "html") {
|
|
298
|
+
return segment.content ? /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: renderHtml(segment.content) } }, i) : null;
|
|
299
|
+
}
|
|
300
|
+
const ext = extensions.find(
|
|
301
|
+
(e) => e.tag.toLowerCase() === segment.tag
|
|
302
|
+
);
|
|
303
|
+
if (!ext) return null;
|
|
304
|
+
const Component = ext.component;
|
|
305
|
+
const isBlock = ext.block !== false;
|
|
306
|
+
const Wrapper = isBlock ? "div" : "span";
|
|
307
|
+
return /* @__PURE__ */ jsx(Wrapper, { "data-render-extension": segment.tag, children: /* @__PURE__ */ jsx(Component, { content: segment.content, attributes: segment.attributes }) }, i);
|
|
308
|
+
}) });
|
|
309
|
+
}
|
|
310
|
+
RenderedContent.displayName = "RenderedContent";
|
|
311
|
+
function ContentRenderer({
|
|
312
|
+
value,
|
|
313
|
+
format = "auto",
|
|
314
|
+
lineSpacing = 1.6,
|
|
315
|
+
className,
|
|
316
|
+
extensions: instanceExtensions,
|
|
317
|
+
unsafe = false
|
|
318
|
+
}) {
|
|
319
|
+
const extensions = useMemo(
|
|
320
|
+
() => mergeExtensions(instanceExtensions),
|
|
321
|
+
[instanceExtensions]
|
|
322
|
+
);
|
|
323
|
+
const html = useMemo(() => {
|
|
324
|
+
const safe = value ?? "";
|
|
325
|
+
const resolvedFormat = format === "auto" ? detectFormat(safe) : format;
|
|
326
|
+
const raw = resolvedFormat === "markdown" ? marked.parse(safe, { async: false }) : safe;
|
|
327
|
+
return unsafe ? raw : sanitizeHtml(raw);
|
|
328
|
+
}, [value, format, unsafe]);
|
|
329
|
+
const hasExtensions = extensions.length > 0;
|
|
330
|
+
return /* @__PURE__ */ jsx(
|
|
331
|
+
"div",
|
|
332
|
+
{
|
|
333
|
+
"data-react-fancy-content-renderer": "",
|
|
334
|
+
style: { lineHeight: lineSpacing },
|
|
335
|
+
className: cn("text-sm", proseClasses, className),
|
|
336
|
+
children: hasExtensions ? /* @__PURE__ */ jsx(RenderedContent, { html, extensions, unsafe }) : /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: html } })
|
|
337
|
+
}
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
ContentRenderer.displayName = "ContentRenderer";
|
|
341
|
+
|
|
342
|
+
export { ContentRenderer, detectFormat, extensionEditorClasses, htmlToMarkdown, mergeExtensions, proseClasses, registerExtension, registerExtensions };
|
|
343
|
+
//# sourceMappingURL=chunk-ZLCVKYHY.js.map
|
|
344
|
+
//# sourceMappingURL=chunk-ZLCVKYHY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ContentRenderer/extensions.ts","../src/components/Editor/editor.utils.ts","../src/components/ContentRenderer/RenderedContent.tsx","../src/components/ContentRenderer/ContentRenderer.tsx"],"names":["useMemo","jsx"],"mappings":"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","file":"chunk-ZLCVKYHY.js","sourcesContent":["import type { ComponentType } from \"react\";\n\n/** Props passed to every render-extension component. */\nexport interface RenderExtensionProps {\n /** The inner content of the custom tag (raw string). */\n content: string;\n /** Parsed HTML attributes from the opening tag. */\n attributes: Record<string, string>;\n}\n\n/** Registers a custom tag with a React component for rendering. */\nexport interface RenderExtension {\n /** Tag name to match, e.g. \"questions\", \"thinking\". Case-insensitive. */\n tag: string;\n /** React component that renders the matched tag. */\n component: ComponentType<RenderExtensionProps>;\n /**\n * Whether this is a block-level element.\n * Block extensions are wrapped in a `<div>`, inline in a `<span>`.\n * @default true\n */\n block?: boolean;\n}\n\n/** A parsed segment — either raw HTML or a matched extension tag. */\nexport type ContentSegment =\n | { type: \"html\"; content: string }\n | { type: \"extension\"; tag: string; content: string; attributes: Record<string, string> };\n\n// ---------------------------------------------------------------------------\n// Global extension registry\n// ---------------------------------------------------------------------------\n\nconst globalRegistry: RenderExtension[] = [];\n\n/** Register a single render extension globally (available to all ContentRenderer and Editor instances). */\nexport function registerExtension(extension: RenderExtension): void {\n const idx = globalRegistry.findIndex(\n (e) => e.tag.toLowerCase() === extension.tag.toLowerCase(),\n );\n if (idx >= 0) {\n globalRegistry[idx] = extension;\n } else {\n globalRegistry.push(extension);\n }\n}\n\n/** Register multiple render extensions globally. */\nexport function registerExtensions(extensions: RenderExtension[]): void {\n for (const ext of extensions) {\n registerExtension(ext);\n }\n}\n\n/** Get a snapshot of the current global registry. */\nexport function getGlobalExtensions(): RenderExtension[] {\n return [...globalRegistry];\n}\n\n// ---------------------------------------------------------------------------\n// Parsing\n// ---------------------------------------------------------------------------\n\n/** Parse attributes from an opening tag string like `tag foo=\"bar\" baz=\"qux\"`. */\nfunction parseAttributes(attrString: string): Record<string, string> {\n const attrs: Record<string, string> = {};\n const re = /(\\w[\\w-]*)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\S+)))?/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(attrString)) !== null) {\n attrs[m[1]] = m[2] ?? m[3] ?? m[4] ?? \"\";\n }\n return attrs;\n}\n\n/**\n * Split an HTML string into segments of plain HTML and matched extension tags.\n *\n * Handles:\n * - `<tag>content</tag>`\n * - `<tag attr=\"val\">content</tag>`\n * - Nested different-tags inside the content (preserved as raw HTML)\n * - Self-nesting of the same tag (greedy — matches outermost)\n */\nexport function parseSegments(\n html: string,\n extensions: RenderExtension[],\n): ContentSegment[] {\n if (extensions.length === 0) {\n return html ? [{ type: \"html\", content: html }] : [];\n }\n\n const tagNames = extensions.map((e) => e.tag).join(\"|\");\n // Match opening tag with optional attributes, then content, then closing tag.\n // Uses a non-greedy match for content — if same-tag nesting is needed the\n // consumer should use distinct tag names.\n const pattern = new RegExp(\n `<(${tagNames})((?:\\\\s+[^>]*)?)>([\\\\s\\\\S]*?)<\\\\/\\\\1>`,\n \"gi\",\n );\n\n const segments: ContentSegment[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = pattern.exec(html)) !== null) {\n // Push any HTML before this match\n if (match.index > lastIndex) {\n segments.push({ type: \"html\", content: html.slice(lastIndex, match.index) });\n }\n\n const tag = match[1].toLowerCase();\n const rawAttrs = match[2] ? match[2].trim() : \"\";\n const innerContent = match[3];\n\n segments.push({\n type: \"extension\",\n tag,\n content: innerContent,\n attributes: rawAttrs ? parseAttributes(rawAttrs) : {},\n });\n\n lastIndex = match.index + match[0].length;\n }\n\n // Push any trailing HTML\n if (lastIndex < html.length) {\n segments.push({ type: \"html\", content: html.slice(lastIndex) });\n }\n\n return segments;\n}\n\n/**\n * Merge per-instance extensions with the global registry.\n * Instance extensions override globals with the same tag name.\n */\nexport function mergeExtensions(\n instanceExtensions?: RenderExtension[],\n): RenderExtension[] {\n const globals = getGlobalExtensions();\n if (!instanceExtensions || instanceExtensions.length === 0) return globals;\n if (globals.length === 0) return instanceExtensions;\n\n const merged = [...globals];\n for (const ext of instanceExtensions) {\n const idx = merged.findIndex(\n (e) => e.tag.toLowerCase() === ext.tag.toLowerCase(),\n );\n if (idx >= 0) {\n merged[idx] = ext;\n } else {\n merged.push(ext);\n }\n }\n return merged;\n}\n","import type { RenderExtension } from \"../ContentRenderer/extensions\";\n\n/**\n * Shared prose typography classes for Editor.Content and ContentRenderer.\n * Hand-rolled since we don't depend on @tailwindcss/typography.\n */\nexport const proseClasses = [\n \"[&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mt-4 [&_h1]:mb-2\",\n \"[&_h2]:text-xl [&_h2]:font-semibold [&_h2]:mt-3 [&_h2]:mb-2\",\n \"[&_h3]:text-lg [&_h3]:font-semibold [&_h3]:mt-2 [&_h3]:mb-1\",\n \"[&_p]:mb-2\",\n \"[&_a]:text-blue-500 [&_a]:underline\",\n \"[&_ul]:list-disc [&_ul]:pl-5 [&_ol]:list-decimal [&_ol]:pl-5\",\n \"[&_li]:mb-1\",\n \"[&_blockquote]:border-l-4 [&_blockquote]:border-zinc-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:text-zinc-600 dark:[&_blockquote]:border-zinc-600 dark:[&_blockquote]:text-zinc-400\",\n \"[&_code]:bg-zinc-100 [&_code]:px-1 [&_code]:rounded [&_code]:text-sm dark:[&_code]:bg-zinc-800\",\n \"[&_pre]:bg-zinc-950 [&_pre]:text-zinc-100 [&_pre]:p-4 [&_pre]:rounded-lg [&_pre]:overflow-x-auto\",\n \"[&_pre_code]:bg-transparent [&_pre_code]:px-0\",\n \"[&_strong]:font-bold [&_em]:italic\",\n].join(\" \");\n\nconst HTML_TAG_PATTERN = /<(p|div|br|h[1-6]|ul|ol|strong|em|a |img |table|pre|code|blockquote)[>\\s/]/i;\n\n/** Detect whether a string is likely HTML or Markdown. */\nexport function detectFormat(value: string): \"html\" | \"markdown\" {\n return HTML_TAG_PATTERN.test(value) ? \"html\" : \"markdown\";\n}\n\n/**\n * Build a set of known HTML tag names. Extension tags are excluded\n * so that the \"strip remaining tags\" step preserves them.\n */\nconst STANDARD_HTML_TAGS = new Set([\n \"a\", \"abbr\", \"address\", \"area\", \"article\", \"aside\", \"audio\",\n \"b\", \"base\", \"bdi\", \"bdo\", \"blockquote\", \"body\", \"br\", \"button\",\n \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\",\n \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\",\n \"em\", \"embed\",\n \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\",\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\",\n \"i\", \"iframe\", \"img\", \"input\", \"ins\",\n \"kbd\",\n \"label\", \"legend\", \"li\", \"link\",\n \"main\", \"map\", \"mark\", \"menu\", \"meta\", \"meter\",\n \"nav\", \"noscript\",\n \"object\", \"ol\", \"optgroup\", \"option\", \"output\",\n \"p\", \"param\", \"picture\", \"pre\", \"progress\",\n \"q\",\n \"rp\", \"rt\", \"ruby\",\n \"s\", \"samp\", \"script\", \"section\", \"select\", \"slot\", \"small\", \"source\", \"span\",\n \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\",\n \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\",\n \"u\", \"ul\",\n \"var\", \"video\",\n \"wbr\",\n]);\n\n/**\n * Lightweight HTML-to-Markdown converter for editor output.\n * Handles the most common inline/block formatting produced by contentEditable.\n * Custom extension tags are preserved as-is in the output.\n */\nexport function htmlToMarkdown(html: string): string {\n let md = html;\n\n // Block elements first\n md = md.replace(/<h1[^>]*>(.*?)<\\/h1>/gi, \"# $1\\n\");\n md = md.replace(/<h2[^>]*>(.*?)<\\/h2>/gi, \"## $1\\n\");\n md = md.replace(/<h3[^>]*>(.*?)<\\/h3>/gi, \"### $1\\n\");\n md = md.replace(/<h4[^>]*>(.*?)<\\/h4>/gi, \"#### $1\\n\");\n md = md.replace(/<h5[^>]*>(.*?)<\\/h5>/gi, \"##### $1\\n\");\n md = md.replace(/<h6[^>]*>(.*?)<\\/h6>/gi, \"###### $1\\n\");\n\n // Lists\n md = md.replace(/<li[^>]*>(.*?)<\\/li>/gi, \"- $1\\n\");\n md = md.replace(/<\\/?[uo]l[^>]*>/gi, \"\\n\");\n\n // Inline formatting\n md = md.replace(/<strong[^>]*>(.*?)<\\/strong>/gi, \"**$1**\");\n md = md.replace(/<b[^>]*>(.*?)<\\/b>/gi, \"**$1**\");\n md = md.replace(/<em[^>]*>(.*?)<\\/em>/gi, \"*$1*\");\n md = md.replace(/<i[^>]*>(.*?)<\\/i>/gi, \"*$1*\");\n md = md.replace(/<u[^>]*>(.*?)<\\/u>/gi, \"$1\");\n md = md.replace(/<s[^>]*>(.*?)<\\/s>/gi, \"~~$1~~\");\n md = md.replace(/<strike[^>]*>(.*?)<\\/strike>/gi, \"~~$1~~\");\n md = md.replace(/<del[^>]*>(.*?)<\\/del>/gi, \"~~$1~~\");\n md = md.replace(/<code[^>]*>(.*?)<\\/code>/gi, \"`$1`\");\n\n // Links\n md = md.replace(/<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/gi, \"[$2]($1)\");\n\n // Blockquotes\n md = md.replace(/<blockquote[^>]*>(.*?)<\\/blockquote>/gi, \"> $1\\n\");\n\n // Line breaks and paragraphs\n md = md.replace(/<br\\s*\\/?>/gi, \"\\n\");\n md = md.replace(/<p[^>]*>(.*?)<\\/p>/gi, \"$1\\n\\n\");\n md = md.replace(/<div[^>]*>(.*?)<\\/div>/gi, \"$1\\n\");\n\n // Strip only standard HTML tags — preserve unknown/custom tags\n md = md.replace(/<\\/?([a-z][a-z0-9]*)\\b[^>]*>/gi, (match, tagName: string) => {\n return STANDARD_HTML_TAGS.has(tagName.toLowerCase()) ? \"\" : match;\n });\n\n // Decode common HTML entities. Decode & LAST so we never double-unescape:\n // e.g. \"&lt;\" must decode to the literal \"<\", not to \"<\".\n md = md.replace(/</g, \"<\");\n md = md.replace(/>/g, \">\");\n md = md.replace(/"/g, '\"');\n md = md.replace(/'/g, \"'\");\n md = md.replace(/ /g, \" \");\n md = md.replace(/&/g, \"&\");\n\n // Clean up extra whitespace\n md = md.replace(/\\n{3,}/g, \"\\n\\n\");\n md = md.trim();\n\n return md;\n}\n\n/**\n * Generate CSS classes to visually distinguish custom extension tags\n * inside the contentEditable area. Returns Tailwind-style descendant selectors.\n */\nexport function extensionEditorClasses(extensions: RenderExtension[]): string {\n if (extensions.length === 0) return \"\";\n\n return extensions\n .map((ext) => {\n const tag = ext.tag.toLowerCase();\n return [\n `[&_${tag}]:block`,\n `[&_${tag}]:my-2`,\n `[&_${tag}]:rounded-lg`,\n `[&_${tag}]:border`,\n `[&_${tag}]:border-dashed`,\n `[&_${tag}]:border-zinc-300`,\n `[&_${tag}]:bg-zinc-50`,\n `[&_${tag}]:p-3`,\n `[&_${tag}]:text-xs`,\n `dark:[&_${tag}]:border-zinc-600`,\n `dark:[&_${tag}]:bg-zinc-800/50`,\n ].join(\" \");\n })\n .join(\" \");\n}\n","import { useMemo } from \"react\";\nimport { sanitizeHtml } from \"../../utils/sanitize\";\nimport type { RenderExtension } from \"./extensions\";\nimport { parseSegments, mergeExtensions } from \"./extensions\";\n\ninterface RenderedContentProps {\n html: string;\n extensions?: RenderExtension[];\n /**\n * If true, html is rendered as-is without per-segment sanitization. Caller\n * (ContentRenderer) is expected to have already sanitized — or explicitly\n * opted out — at the top level.\n */\n unsafe?: boolean;\n}\n\n/**\n * Internal component that renders an HTML string with extension support.\n * Plain HTML segments use dangerouslySetInnerHTML; custom-tag segments\n * are rendered via their registered React component.\n */\nexport function RenderedContent({\n html,\n extensions: instanceExtensions,\n unsafe = false,\n}: RenderedContentProps) {\n const extensions = useMemo(\n () => mergeExtensions(instanceExtensions),\n [instanceExtensions],\n );\n\n const segments = useMemo(\n () => parseSegments(html, extensions),\n [html, extensions],\n );\n\n const renderHtml = (content: string): string =>\n unsafe ? content : sanitizeHtml(content);\n\n // Fast path: no extensions matched — single dangerouslySetInnerHTML\n if (segments.length === 1 && segments[0].type === \"html\") {\n return <div dangerouslySetInnerHTML={{ __html: renderHtml(segments[0].content) }} />;\n }\n\n // No content at all\n if (segments.length === 0) {\n return null;\n }\n\n return (\n <>\n {segments.map((segment, i) => {\n if (segment.type === \"html\") {\n return segment.content ? (\n <div key={i} dangerouslySetInnerHTML={{ __html: renderHtml(segment.content) }} />\n ) : null;\n }\n\n const ext = extensions.find(\n (e) => e.tag.toLowerCase() === segment.tag,\n );\n if (!ext) return null;\n\n const Component = ext.component;\n const isBlock = ext.block !== false;\n const Wrapper = isBlock ? \"div\" : \"span\";\n\n return (\n <Wrapper key={i} data-render-extension={segment.tag}>\n <Component content={segment.content} attributes={segment.attributes} />\n </Wrapper>\n );\n })}\n </>\n );\n}\n\nRenderedContent.displayName = \"RenderedContent\";\n","import { useMemo } from \"react\";\nimport { marked } from \"marked\";\nimport { cn } from \"../../utils/cn\";\nimport { sanitizeHtml } from \"../../utils/sanitize\";\nimport { proseClasses, detectFormat } from \"../Editor/editor.utils\";\nimport { mergeExtensions } from \"./extensions\";\nimport { RenderedContent } from \"./RenderedContent\";\nimport type { ContentRendererProps } from \"./ContentRenderer.types\";\n\nexport function ContentRenderer({\n value,\n format = \"auto\",\n lineSpacing = 1.6,\n className,\n extensions: instanceExtensions,\n unsafe = false,\n}: ContentRendererProps) {\n const extensions = useMemo(\n () => mergeExtensions(instanceExtensions),\n [instanceExtensions],\n );\n\n const html = useMemo(() => {\n // Guard nullish input: marked.parse throws \"input parameter is undefined\n // or null\", which (inside this useMemo during render) would crash the whole\n // React tree. Treat missing content as empty.\n const safe = value ?? \"\";\n const resolvedFormat = format === \"auto\" ? detectFormat(safe) : format;\n const raw = resolvedFormat === \"markdown\"\n ? (marked.parse(safe, { async: false }) as string)\n : safe;\n return unsafe ? raw : sanitizeHtml(raw);\n }, [value, format, unsafe]);\n\n const hasExtensions = extensions.length > 0;\n\n return (\n <div\n data-react-fancy-content-renderer=\"\"\n style={{ lineHeight: lineSpacing }}\n className={cn(\"text-sm\", proseClasses, className)}\n >\n {hasExtensions ? (\n <RenderedContent html={html} extensions={extensions} unsafe={unsafe} />\n ) : (\n <div dangerouslySetInnerHTML={{ __html: html }} />\n )}\n </div>\n );\n}\n\nContentRenderer.displayName = \"ContentRenderer\";\n"]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { cn } from './chunk-DSUHZO6T.js';
|
|
2
|
+
import { createContext, useState, useCallback, useMemo, useRef, useContext, useEffect } from 'react';
|
|
3
|
+
import { File, X, Upload } from 'lucide-react';
|
|
4
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var FileUploadContext = createContext(null);
|
|
7
|
+
function useFileUpload() {
|
|
8
|
+
const ctx = useContext(FileUploadContext);
|
|
9
|
+
if (!ctx) {
|
|
10
|
+
throw new Error(
|
|
11
|
+
"FileUpload compound components must be used within <FileUpload>"
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
return ctx;
|
|
15
|
+
}
|
|
16
|
+
function FileUploadDropzone({
|
|
17
|
+
children,
|
|
18
|
+
className
|
|
19
|
+
}) {
|
|
20
|
+
const { addFiles, disabled } = useFileUpload();
|
|
21
|
+
const [dragOver, setDragOver] = useState(false);
|
|
22
|
+
const inputRef = useRef(null);
|
|
23
|
+
const handleDrop = useCallback(
|
|
24
|
+
(e) => {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
setDragOver(false);
|
|
27
|
+
if (disabled) return;
|
|
28
|
+
addFiles(e.dataTransfer.files);
|
|
29
|
+
},
|
|
30
|
+
[addFiles, disabled]
|
|
31
|
+
);
|
|
32
|
+
const handleDragOver = useCallback((e) => {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
setDragOver(true);
|
|
35
|
+
}, []);
|
|
36
|
+
const handleDragLeave = useCallback(() => setDragOver(false), []);
|
|
37
|
+
return /* @__PURE__ */ jsxs(
|
|
38
|
+
"div",
|
|
39
|
+
{
|
|
40
|
+
"data-react-fancy-file-upload-dropzone": "",
|
|
41
|
+
onDrop: handleDrop,
|
|
42
|
+
onDragOver: handleDragOver,
|
|
43
|
+
onDragLeave: handleDragLeave,
|
|
44
|
+
onClick: () => !disabled && inputRef.current?.click(),
|
|
45
|
+
className: cn(
|
|
46
|
+
"flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-8 text-center transition-colors",
|
|
47
|
+
dragOver ? "border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-950" : "border-zinc-300 hover:border-zinc-400 dark:border-zinc-700 dark:hover:border-zinc-500",
|
|
48
|
+
disabled && "cursor-not-allowed opacity-50",
|
|
49
|
+
className
|
|
50
|
+
),
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ jsx(
|
|
53
|
+
"input",
|
|
54
|
+
{
|
|
55
|
+
ref: inputRef,
|
|
56
|
+
type: "file",
|
|
57
|
+
className: "hidden",
|
|
58
|
+
onChange: (e) => e.target.files && addFiles(e.target.files),
|
|
59
|
+
multiple: true,
|
|
60
|
+
disabled
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
64
|
+
/* @__PURE__ */ jsx(Upload, { size: 32, strokeWidth: 1.5, className: "mb-2 text-zinc-400" }),
|
|
65
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-zinc-500", children: "Drop files here or click to browse" })
|
|
66
|
+
] })
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
FileUploadDropzone.displayName = "FileUploadDropzone";
|
|
72
|
+
function formatSize(bytes) {
|
|
73
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
74
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
75
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
76
|
+
}
|
|
77
|
+
function getExtension(name) {
|
|
78
|
+
const parts = name.split(".");
|
|
79
|
+
return parts.length > 1 ? parts.pop().toUpperCase() : "";
|
|
80
|
+
}
|
|
81
|
+
function ThumbnailItem({ file, index, onRemove }) {
|
|
82
|
+
const isImage = file.type.startsWith("image/");
|
|
83
|
+
const objectUrl = useMemo(() => isImage ? URL.createObjectURL(file) : null, [file, isImage]);
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
return () => {
|
|
86
|
+
if (objectUrl) URL.revokeObjectURL(objectUrl);
|
|
87
|
+
};
|
|
88
|
+
}, [objectUrl]);
|
|
89
|
+
return /* @__PURE__ */ jsxs("div", { className: "group relative flex w-20 flex-col items-center gap-1", children: [
|
|
90
|
+
/* @__PURE__ */ jsxs("div", { className: "relative h-20 w-20 overflow-hidden rounded-lg border border-zinc-200 bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800", children: [
|
|
91
|
+
isImage && objectUrl ? /* @__PURE__ */ jsx("img", { src: objectUrl, alt: file.name, className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col items-center justify-center gap-1", children: [
|
|
92
|
+
/* @__PURE__ */ jsx(File, { size: 20, className: "text-zinc-400" }),
|
|
93
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium text-zinc-500", children: getExtension(file.name) })
|
|
94
|
+
] }),
|
|
95
|
+
/* @__PURE__ */ jsx(
|
|
96
|
+
"button",
|
|
97
|
+
{
|
|
98
|
+
type: "button",
|
|
99
|
+
onClick: () => onRemove(index),
|
|
100
|
+
className: "absolute top-1 right-1 flex h-5 w-5 items-center justify-center rounded-full bg-black/60 text-white opacity-0 transition-opacity hover:bg-black/80 group-hover:opacity-100",
|
|
101
|
+
"aria-label": `Remove ${file.name}`,
|
|
102
|
+
children: /* @__PURE__ */ jsx(X, { size: 10 })
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
] }),
|
|
106
|
+
/* @__PURE__ */ jsx("span", { className: "w-full truncate text-center text-xs text-zinc-500", children: file.name })
|
|
107
|
+
] });
|
|
108
|
+
}
|
|
109
|
+
function FileUploadList({ thumbnail, className }) {
|
|
110
|
+
const { files, removeFile } = useFileUpload();
|
|
111
|
+
if (files.length === 0) return null;
|
|
112
|
+
if (thumbnail) {
|
|
113
|
+
return /* @__PURE__ */ jsx("div", { "data-react-fancy-file-upload-list": "", className: cn("mt-3 flex flex-wrap gap-3", className), children: files.map((file, i) => /* @__PURE__ */ jsx(ThumbnailItem, { file, index: i, onRemove: removeFile }, `${file.name}-${i}`)) });
|
|
114
|
+
}
|
|
115
|
+
return /* @__PURE__ */ jsx("ul", { "data-react-fancy-file-upload-list": "", className: cn("mt-3 space-y-2", className), children: files.map((file, i) => /* @__PURE__ */ jsxs(
|
|
116
|
+
"li",
|
|
117
|
+
{
|
|
118
|
+
className: "flex items-center gap-3 rounded-lg border border-zinc-200 px-3 py-2 text-sm dark:border-zinc-700",
|
|
119
|
+
children: [
|
|
120
|
+
/* @__PURE__ */ jsx(File, { size: 16, className: "shrink-0 text-zinc-400" }),
|
|
121
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: file.name }),
|
|
122
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs text-zinc-400", children: formatSize(file.size) }),
|
|
123
|
+
/* @__PURE__ */ jsx(
|
|
124
|
+
"button",
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
onClick: () => removeFile(i),
|
|
128
|
+
className: "shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300",
|
|
129
|
+
"aria-label": `Remove ${file.name}`,
|
|
130
|
+
children: /* @__PURE__ */ jsx(X, { size: 14 })
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
`${file.name}-${i}`
|
|
136
|
+
)) });
|
|
137
|
+
}
|
|
138
|
+
FileUploadList.displayName = "FileUploadList";
|
|
139
|
+
function FileUploadRoot({
|
|
140
|
+
children,
|
|
141
|
+
value,
|
|
142
|
+
onChange,
|
|
143
|
+
maxFiles,
|
|
144
|
+
maxSize,
|
|
145
|
+
disabled = false,
|
|
146
|
+
className
|
|
147
|
+
}) {
|
|
148
|
+
const [internalFiles, setInternalFiles] = useState([]);
|
|
149
|
+
const files = value ?? internalFiles;
|
|
150
|
+
const addFiles = useCallback(
|
|
151
|
+
(newFiles) => {
|
|
152
|
+
let toAdd = Array.from(newFiles);
|
|
153
|
+
if (maxSize) {
|
|
154
|
+
toAdd = toAdd.filter((f) => f.size <= maxSize);
|
|
155
|
+
}
|
|
156
|
+
const updated = [...files, ...toAdd];
|
|
157
|
+
const limited = maxFiles ? updated.slice(0, maxFiles) : updated;
|
|
158
|
+
if (value === void 0) setInternalFiles(limited);
|
|
159
|
+
onChange?.(limited);
|
|
160
|
+
},
|
|
161
|
+
[files, maxFiles, maxSize, onChange, value]
|
|
162
|
+
);
|
|
163
|
+
const removeFile = useCallback(
|
|
164
|
+
(index) => {
|
|
165
|
+
const updated = files.filter((_, i) => i !== index);
|
|
166
|
+
if (value === void 0) setInternalFiles(updated);
|
|
167
|
+
onChange?.(updated);
|
|
168
|
+
},
|
|
169
|
+
[files, onChange, value]
|
|
170
|
+
);
|
|
171
|
+
const ctx = useMemo(
|
|
172
|
+
() => ({ files, addFiles, removeFile, disabled }),
|
|
173
|
+
[files, addFiles, removeFile, disabled]
|
|
174
|
+
);
|
|
175
|
+
return /* @__PURE__ */ jsx(FileUploadContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx("div", { "data-react-fancy-file-upload": "", className: cn(className), children }) });
|
|
176
|
+
}
|
|
177
|
+
var FileUpload = Object.assign(FileUploadRoot, {
|
|
178
|
+
Dropzone: FileUploadDropzone,
|
|
179
|
+
List: FileUploadList
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
export { FileUpload, useFileUpload };
|
|
183
|
+
//# sourceMappingURL=chunk-ZNTEM7F2.js.map
|
|
184
|
+
//# sourceMappingURL=chunk-ZNTEM7F2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/FileUpload/FileUpload.context.ts","../src/components/FileUpload/FileUploadDropzone.tsx","../src/components/FileUpload/FileUploadList.tsx","../src/components/FileUpload/FileUpload.tsx"],"names":["jsxs","jsx","useState","useCallback","useMemo"],"mappings":"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","file":"chunk-ZNTEM7F2.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { FileUploadContextValue } from \"./FileUpload.types\";\n\nexport const FileUploadContext =\n createContext<FileUploadContextValue | null>(null);\n\nexport function useFileUpload(): FileUploadContextValue {\n const ctx = useContext(FileUploadContext);\n if (!ctx) {\n throw new Error(\n \"FileUpload compound components must be used within <FileUpload>\",\n );\n }\n return ctx;\n}\n","import { useCallback, useRef, useState } from \"react\";\nimport { Upload } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useFileUpload } from \"./FileUpload.context\";\nimport type { FileUploadDropzoneProps } from \"./FileUpload.types\";\n\nexport function FileUploadDropzone({\n children,\n className,\n}: FileUploadDropzoneProps) {\n const { addFiles, disabled } = useFileUpload();\n const [dragOver, setDragOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n if (disabled) return;\n addFiles(e.dataTransfer.files);\n },\n [addFiles, disabled],\n );\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(true);\n }, []);\n\n const handleDragLeave = useCallback(() => setDragOver(false), []);\n\n return (\n <div\n data-react-fancy-file-upload-dropzone=\"\"\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={() => !disabled && inputRef.current?.click()}\n className={cn(\n \"flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-8 text-center transition-colors\",\n dragOver\n ? \"border-blue-400 bg-blue-50 dark:border-blue-500 dark:bg-blue-950\"\n : \"border-zinc-300 hover:border-zinc-400 dark:border-zinc-700 dark:hover:border-zinc-500\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className=\"hidden\"\n onChange={(e) => e.target.files && addFiles(e.target.files)}\n multiple\n disabled={disabled}\n />\n {children ?? (\n <>\n <Upload size={32} strokeWidth={1.5} className=\"mb-2 text-zinc-400\" />\n <p className=\"text-sm text-zinc-500\">\n Drop files here or click to browse\n </p>\n </>\n )}\n </div>\n );\n}\n\nFileUploadDropzone.displayName = \"FileUploadDropzone\";\n","import { useEffect, useMemo } from \"react\";\nimport { File, X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useFileUpload } from \"./FileUpload.context\";\nimport type { FileUploadListProps } from \"./FileUpload.types\";\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction getExtension(name: string): string {\n const parts = name.split(\".\");\n return parts.length > 1 ? parts.pop()!.toUpperCase() : \"\";\n}\n\nfunction ThumbnailItem({ file, index, onRemove }: { file: File; index: number; onRemove: (i: number) => void }) {\n const isImage = file.type.startsWith(\"image/\");\n const objectUrl = useMemo(() => (isImage ? URL.createObjectURL(file) : null), [file, isImage]);\n\n useEffect(() => {\n return () => {\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n }, [objectUrl]);\n\n return (\n <div className=\"group relative flex w-20 flex-col items-center gap-1\">\n <div className=\"relative h-20 w-20 overflow-hidden rounded-lg border border-zinc-200 bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800\">\n {isImage && objectUrl ? (\n <img src={objectUrl} alt={file.name} className=\"h-full w-full object-cover\" />\n ) : (\n <div className=\"flex h-full w-full flex-col items-center justify-center gap-1\">\n <File size={20} className=\"text-zinc-400\" />\n <span className=\"text-[10px] font-medium text-zinc-500\">{getExtension(file.name)}</span>\n </div>\n )}\n <button\n type=\"button\"\n onClick={() => onRemove(index)}\n className=\"absolute top-1 right-1 flex h-5 w-5 items-center justify-center rounded-full bg-black/60 text-white opacity-0 transition-opacity hover:bg-black/80 group-hover:opacity-100\"\n aria-label={`Remove ${file.name}`}\n >\n <X size={10} />\n </button>\n </div>\n <span className=\"w-full truncate text-center text-xs text-zinc-500\">{file.name}</span>\n </div>\n );\n}\n\nexport function FileUploadList({ thumbnail, className }: FileUploadListProps) {\n const { files, removeFile } = useFileUpload();\n\n if (files.length === 0) return null;\n\n if (thumbnail) {\n return (\n <div data-react-fancy-file-upload-list=\"\" className={cn(\"mt-3 flex flex-wrap gap-3\", className)}>\n {files.map((file, i) => (\n <ThumbnailItem key={`${file.name}-${i}`} file={file} index={i} onRemove={removeFile} />\n ))}\n </div>\n );\n }\n\n return (\n <ul data-react-fancy-file-upload-list=\"\" className={cn(\"mt-3 space-y-2\", className)}>\n {files.map((file, i) => (\n <li\n key={`${file.name}-${i}`}\n className=\"flex items-center gap-3 rounded-lg border border-zinc-200 px-3 py-2 text-sm dark:border-zinc-700\"\n >\n <File size={16} className=\"shrink-0 text-zinc-400\" />\n <span className=\"flex-1 truncate\">{file.name}</span>\n <span className=\"shrink-0 text-xs text-zinc-400\">\n {formatSize(file.size)}\n </span>\n <button\n type=\"button\"\n onClick={() => removeFile(i)}\n className=\"shrink-0 text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300\"\n aria-label={`Remove ${file.name}`}\n >\n <X size={14} />\n </button>\n </li>\n ))}\n </ul>\n );\n}\n\nFileUploadList.displayName = \"FileUploadList\";\n","import { useCallback, useMemo, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { FileUploadContext } from \"./FileUpload.context\";\nimport { FileUploadDropzone } from \"./FileUploadDropzone\";\nimport { FileUploadList } from \"./FileUploadList\";\nimport type { FileUploadProps } from \"./FileUpload.types\";\n\nfunction FileUploadRoot({\n children,\n value,\n onChange,\n maxFiles,\n maxSize,\n disabled = false,\n className,\n}: FileUploadProps) {\n const [internalFiles, setInternalFiles] = useState<File[]>([]);\n const files = value ?? internalFiles;\n\n const addFiles = useCallback(\n (newFiles: FileList | File[]) => {\n let toAdd = Array.from(newFiles);\n\n if (maxSize) {\n toAdd = toAdd.filter((f) => f.size <= maxSize);\n }\n\n const updated = [...files, ...toAdd];\n const limited = maxFiles ? updated.slice(0, maxFiles) : updated;\n\n if (value === undefined) setInternalFiles(limited);\n onChange?.(limited);\n },\n [files, maxFiles, maxSize, onChange, value],\n );\n\n const removeFile = useCallback(\n (index: number) => {\n const updated = files.filter((_, i) => i !== index);\n if (value === undefined) setInternalFiles(updated);\n onChange?.(updated);\n },\n [files, onChange, value],\n );\n\n const ctx = useMemo(\n () => ({ files, addFiles, removeFile, disabled }),\n [files, addFiles, removeFile, disabled],\n );\n\n return (\n <FileUploadContext.Provider value={ctx}>\n <div data-react-fancy-file-upload=\"\" className={cn(className)}>{children}</div>\n </FileUploadContext.Provider>\n );\n}\n\nexport const FileUpload = Object.assign(FileUploadRoot, {\n Dropzone: FileUploadDropzone,\n List: FileUploadList,\n});\n"]}
|