@particle-academy/react-fancy 6.7.2 → 6.9.0
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/CHANGELOG.md +44 -1
- package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
- package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
- package/dist/accordion-panel.cjs +7 -7
- package/dist/accordion-panel.js +1 -1
- package/dist/accordion.cjs +3 -3
- package/dist/accordion.js +1 -1
- package/dist/autocomplete.cjs +4 -3
- package/dist/autocomplete.js +3 -2
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.js +1 -1
- package/dist/breadcrumbs.cjs +2 -2
- package/dist/breadcrumbs.js +1 -1
- package/dist/button.cjs +3 -3
- package/dist/button.d.cts +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar.cjs +2 -2
- package/dist/calendar.js +1 -1
- package/dist/callout.cjs +2 -2
- package/dist/callout.js +1 -1
- package/dist/card.cjs +7 -7
- package/dist/card.d.cts +2 -2
- package/dist/card.d.ts +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.cjs +7 -7
- package/dist/carousel.js +1 -1
- package/dist/chart.cjs +2 -2
- package/dist/chart.js +1 -1
- package/dist/chat-drawer.cjs +2 -2
- package/dist/chat-drawer.js +1 -1
- package/dist/chat-thread.cjs +7 -7
- package/dist/chat-thread.js +5 -5
- package/dist/checkbox-group.cjs +5 -5
- package/dist/checkbox-group.js +4 -4
- package/dist/checkbox.cjs +3 -3
- package/dist/checkbox.js +2 -2
- package/dist/{chunk-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
- package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
- package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
- package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
- package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
- package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
- package/dist/chunk-36IC3NDN.cjs +21 -0
- package/dist/chunk-36IC3NDN.cjs.map +1 -0
- package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
- package/dist/chunk-3BBEVHSP.cjs.map +1 -0
- package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
- package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
- package/dist/{chunk-XBFTO64U.cjs → chunk-3KJN3GTB.cjs} +4 -4
- package/dist/{chunk-XBFTO64U.cjs.map → chunk-3KJN3GTB.cjs.map} +1 -1
- package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
- package/dist/chunk-3O3ZWWLG.js.map +1 -0
- package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
- package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
- package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
- package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
- package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
- package/dist/chunk-54NB3T3Q.js.map +1 -0
- package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
- package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
- package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
- package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
- package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
- package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
- package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
- package/dist/chunk-5SVZX6WF.cjs.map +1 -0
- package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
- package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
- package/dist/{chunk-GSMD5NK5.js → chunk-6BCXGP2T.js} +7 -7
- package/dist/{chunk-GSMD5NK5.js.map → chunk-6BCXGP2T.js.map} +1 -1
- package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
- package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
- package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
- package/dist/chunk-6GOPFKGC.cjs.map +1 -0
- package/dist/{chunk-QTS4Q2NK.js → chunk-6RXEWM3V.js} +4 -3
- package/dist/chunk-6RXEWM3V.js.map +1 -0
- package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
- package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
- package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
- package/dist/chunk-7B3Z4NVM.js.map +1 -0
- package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
- package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
- package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
- package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
- package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
- package/dist/chunk-7NRG77U5.cjs.map +1 -0
- package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
- package/dist/chunk-7OUBFO4D.js.map +1 -0
- package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
- package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
- package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
- package/dist/chunk-AE6ICNJR.js.map +1 -0
- package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
- package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
- package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
- package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
- package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
- package/dist/chunk-AR5DLM4K.js.map +1 -0
- package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
- package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
- package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
- package/dist/chunk-AXW55PQG.js.map +1 -0
- package/dist/{chunk-OASSZI6M.cjs → chunk-AZ5DWOQY.cjs} +5 -4
- package/dist/chunk-AZ5DWOQY.cjs.map +1 -0
- package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
- package/dist/chunk-BPTCMI3E.js.map +1 -0
- package/dist/{chunk-PDVU2PXR.js → chunk-BQENLOEV.js} +10 -10
- package/dist/chunk-BQENLOEV.js.map +1 -0
- package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
- package/dist/chunk-BYMOPR7P.cjs.map +1 -0
- package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
- package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
- package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
- package/dist/chunk-CO2NEUFK.js.map +1 -0
- package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
- package/dist/chunk-D6NISIKV.js.map +1 -0
- package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
- package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
- package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
- package/dist/chunk-DPPDZOMY.cjs.map +1 -0
- package/dist/{chunk-BXPLERIJ.js → chunk-DW2PHLOA.js} +5 -4
- package/dist/chunk-DW2PHLOA.js.map +1 -0
- package/dist/{chunk-BYO5RUDE.cjs → chunk-DXLPBLNC.cjs} +6 -5
- package/dist/chunk-DXLPBLNC.cjs.map +1 -0
- package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
- package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
- package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
- package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
- package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
- package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
- package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
- package/dist/chunk-ETUDUDSL.cjs.map +1 -0
- package/dist/{chunk-LY3RQB3H.js → chunk-F3U4AVGF.js} +3 -3
- package/dist/{chunk-LY3RQB3H.js.map → chunk-F3U4AVGF.js.map} +1 -1
- package/dist/{chunk-AE53RKWR.cjs → chunk-FF5G3E76.cjs} +407 -22
- package/dist/chunk-FF5G3E76.cjs.map +1 -0
- package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
- package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
- package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
- package/dist/chunk-FNPII6TF.cjs.map +1 -0
- package/dist/{chunk-JY2RC6I4.js → chunk-FQCLJZZS.js} +13 -10
- package/dist/chunk-FQCLJZZS.js.map +1 -0
- package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
- package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
- package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
- package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
- package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
- package/dist/chunk-FZQWFDUV.cjs.map +1 -0
- package/dist/{chunk-HNJXBMHI.cjs → chunk-G5MDMQVQ.cjs} +40 -39
- package/dist/chunk-G5MDMQVQ.cjs.map +1 -0
- package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
- package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
- package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
- package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
- package/dist/{chunk-MQ6VGG62.js → chunk-GJWNZMJT.js} +14 -11
- package/dist/chunk-GJWNZMJT.js.map +1 -0
- package/dist/{chunk-5TP642UT.js → chunk-GODJVIIO.js} +12 -11
- package/dist/chunk-GODJVIIO.js.map +1 -0
- package/dist/{chunk-RLE5WYY6.js → chunk-GZSRKBYI.js} +406 -24
- package/dist/chunk-GZSRKBYI.js.map +1 -0
- package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
- package/dist/chunk-H7IQVCTX.js.map +1 -0
- package/dist/{chunk-KOTUFZJ6.cjs → chunk-H7OTLGRD.cjs} +14 -11
- package/dist/chunk-H7OTLGRD.cjs.map +1 -0
- package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
- package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
- package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
- package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
- package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
- package/dist/chunk-I65KXHYL.js.map +1 -0
- package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
- package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
- package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
- package/dist/chunk-IG2UDCBA.js.map +1 -0
- package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
- package/dist/chunk-INC35VEE.cjs.map +1 -0
- package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
- package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
- package/dist/{chunk-PJNUGSKI.js → chunk-IYG436ZY.js} +26 -25
- package/dist/chunk-IYG436ZY.js.map +1 -0
- package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
- package/dist/chunk-JDFJK5GO.cjs.map +1 -0
- package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
- package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
- package/dist/{chunk-MKGWHSNV.cjs → chunk-JV2HEOCB.cjs} +5 -4
- package/dist/chunk-JV2HEOCB.cjs.map +1 -0
- package/dist/{chunk-GDH43QH6.js → chunk-KAKKZDCE.js} +6 -6
- package/dist/{chunk-GDH43QH6.js.map → chunk-KAKKZDCE.js.map} +1 -1
- package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
- package/dist/chunk-KDRBUF5S.js.map +1 -0
- package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
- package/dist/chunk-KGSL6SVX.cjs.map +1 -0
- package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
- package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
- package/dist/{chunk-NPSKZ7ZB.cjs → chunk-L5NDZEL6.cjs} +12 -12
- package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-L5NDZEL6.cjs.map} +1 -1
- package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
- package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
- package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
- package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
- package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
- package/dist/chunk-LREJ7AV2.cjs.map +1 -0
- package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
- package/dist/chunk-LVNCNMKD.cjs.map +1 -0
- package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
- package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
- package/dist/{chunk-HLI6RB5V.cjs → chunk-M5ER3Y5I.cjs} +32 -31
- package/dist/chunk-M5ER3Y5I.cjs.map +1 -0
- package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
- package/dist/chunk-MDAI54AG.cjs.map +1 -0
- package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
- package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
- package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
- package/dist/chunk-NETUI353.js.map +1 -0
- package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
- package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
- package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
- package/dist/chunk-NW2LQRUP.js.map +1 -0
- package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
- package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
- package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
- package/dist/chunk-OBA2LR4I.js.map +1 -0
- package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
- package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
- package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
- package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
- package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
- package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
- package/dist/{chunk-I2VAGZXY.cjs → chunk-Q62RDKRA.cjs} +11 -11
- package/dist/{chunk-I2VAGZXY.cjs.map → chunk-Q62RDKRA.cjs.map} +1 -1
- package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
- package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
- package/dist/{chunk-XZOBGKZL.cjs → chunk-QAM6N3VG.cjs} +6 -5
- package/dist/chunk-QAM6N3VG.cjs.map +1 -0
- package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
- package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
- package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
- package/dist/chunk-QEJBMXRQ.js.map +1 -0
- package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
- package/dist/chunk-QMZK7SRS.cjs.map +1 -0
- package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
- package/dist/chunk-QSRYTWQN.js.map +1 -0
- package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
- package/dist/chunk-QU6HZH6V.cjs.map +1 -0
- package/dist/{chunk-GR2WKBER.js → chunk-QUZOGRZS.js} +4 -3
- package/dist/chunk-QUZOGRZS.js.map +1 -0
- package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
- package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
- package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
- package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
- package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
- package/dist/chunk-RCTPN5QK.js.map +1 -0
- package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
- package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
- package/dist/{chunk-6PRXG7L6.js → chunk-RSB2P3JK.js} +4 -4
- package/dist/{chunk-6PRXG7L6.js.map → chunk-RSB2P3JK.js.map} +1 -1
- package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
- package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
- package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
- package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
- package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
- package/dist/chunk-S4JQPOBR.js.map +1 -0
- package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
- package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
- package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
- package/dist/chunk-SD6YAMDH.cjs.map +1 -0
- package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
- package/dist/chunk-SOIGBPK6.js.map +1 -0
- package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
- package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
- package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
- package/dist/chunk-U4KUW3RK.cjs.map +1 -0
- package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
- package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
- package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
- package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
- package/dist/{chunk-KKYILQTG.cjs → chunk-UORN3Z7R.cjs} +7 -7
- package/dist/{chunk-KKYILQTG.cjs.map → chunk-UORN3Z7R.cjs.map} +1 -1
- package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
- package/dist/chunk-UQABXIQV.cjs.map +1 -0
- package/dist/chunk-US5R36TQ.js +17 -0
- package/dist/chunk-US5R36TQ.js.map +1 -0
- package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
- package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
- package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
- package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
- package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
- package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
- package/dist/{chunk-RWU2MFUL.js → chunk-VGUAIFGE.js} +5 -4
- package/dist/chunk-VGUAIFGE.js.map +1 -0
- package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
- package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
- package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
- package/dist/chunk-VOAC5OKY.cjs.map +1 -0
- package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
- package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
- package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
- package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
- package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
- package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
- package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
- package/dist/chunk-WLRKE4HC.js.map +1 -0
- package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
- package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
- package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
- package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
- package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
- package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
- package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
- package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
- package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
- package/dist/chunk-XCFBMHQD.cjs.map +1 -0
- package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
- package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
- package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
- package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
- package/dist/{chunk-J2DI6RMR.cjs → chunk-XGGAAG74.cjs} +14 -11
- package/dist/chunk-XGGAAG74.cjs.map +1 -0
- package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
- package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
- package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
- package/dist/chunk-XO4GHRA2.js.map +1 -0
- package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
- package/dist/chunk-XQF4HCOV.cjs.map +1 -0
- package/dist/{chunk-VZTXUYPM.cjs → chunk-XT4WBBCD.cjs} +20 -20
- package/dist/chunk-XT4WBBCD.cjs.map +1 -0
- package/dist/{chunk-Z44A7NPD.cjs → chunk-YBBBX5H2.cjs} +40 -39
- package/dist/chunk-YBBBX5H2.cjs.map +1 -0
- package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
- package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
- package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
- package/dist/chunk-YTWMIVRI.js.map +1 -0
- package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
- package/dist/chunk-YZW7HQXH.js.map +1 -0
- package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
- package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
- package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
- package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
- package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
- package/dist/chunk-ZBXJDQXN.js.map +1 -0
- package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
- package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
- package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
- package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
- package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
- package/dist/chunk-ZL5QVNKG.js.map +1 -0
- package/dist/{chunk-6GVOW3UL.js → chunk-ZUJVGHFW.js} +12 -11
- package/dist/chunk-ZUJVGHFW.js.map +1 -0
- package/dist/code-block.cjs +4 -4
- package/dist/code-block.js +3 -3
- package/dist/code-view.cjs +2 -2
- package/dist/code-view.js +1 -1
- package/dist/command.cjs +3 -3
- package/dist/command.js +1 -1
- package/dist/composer.cjs +7 -6
- package/dist/composer.js +5 -4
- package/dist/content-renderer.cjs +6 -6
- package/dist/content-renderer.js +3 -3
- package/dist/context-menu.cjs +4 -3
- package/dist/context-menu.d.cts +2 -0
- package/dist/context-menu.d.ts +2 -0
- package/dist/context-menu.js +2 -1
- package/dist/date-picker.cjs +5 -5
- package/dist/date-picker.js +4 -4
- package/dist/drawer.cjs +3 -3
- package/dist/drawer.d.cts +10 -4
- package/dist/drawer.d.ts +10 -4
- package/dist/drawer.js +1 -1
- package/dist/dropdown.cjs +5 -4
- package/dist/dropdown.js +3 -2
- package/dist/editor.cjs +9 -8
- package/dist/editor.js +7 -6
- package/dist/emoji-select.cjs +2 -2
- package/dist/emoji-select.js +1 -1
- package/dist/eyebrow.cjs +2 -2
- package/dist/eyebrow.js +1 -1
- package/dist/faux-client.cjs +2 -2
- package/dist/faux-client.js +1 -1
- package/dist/field.cjs +3 -3
- package/dist/field.js +2 -2
- package/dist/file-browser.cjs +6 -5
- package/dist/file-browser.js +2 -1
- package/dist/file-upload.cjs +3 -3
- package/dist/file-upload.js +1 -1
- package/dist/image-viewer.cjs +3 -3
- package/dist/image-viewer.js +2 -2
- package/dist/index-list.cjs +2 -2
- package/dist/index-list.js +1 -1
- package/dist/index.cjs +222 -209
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -2
- package/dist/index.d.ts +20 -2
- package/dist/index.js +78 -77
- package/dist/index.js.map +1 -1
- package/dist/input-tag.cjs +7 -6
- package/dist/input-tag.d.cts +6 -2
- package/dist/input-tag.d.ts +6 -2
- package/dist/input-tag.js +2 -1
- package/dist/input.cjs +10 -9
- package/dist/input.js +9 -8
- package/dist/inputs.cjs +32 -31
- package/dist/inputs.js +19 -18
- package/dist/json-editor.cjs +27 -26
- package/dist/json-editor.js +16 -15
- package/dist/magic-wand.cjs +8 -8
- package/dist/magic-wand.js +7 -7
- package/dist/marquee.cjs +2 -2
- package/dist/marquee.js +1 -1
- package/dist/media-viewer.cjs +5 -5
- package/dist/media-viewer.js +4 -4
- package/dist/menu.cjs +3 -3
- package/dist/menu.js +1 -1
- package/dist/mobile-menu.cjs +5 -4
- package/dist/mobile-menu.d.cts +2 -1
- package/dist/mobile-menu.d.ts +2 -1
- package/dist/mobile-menu.js +3 -2
- package/dist/mode.cjs +3 -3
- package/dist/mode.js +2 -2
- package/dist/multi-switch.cjs +6 -5
- package/dist/multi-switch.js +5 -4
- package/dist/number-field.cjs +11 -10
- package/dist/number-field.js +10 -9
- package/dist/otp-input.cjs +3 -2
- package/dist/otp-input.js +2 -1
- package/dist/pagination.cjs +2 -2
- package/dist/pagination.js +1 -1
- package/dist/paste-pills.cjs +17 -16
- package/dist/paste-pills.js +4 -3
- package/dist/pdf-viewer.cjs +3 -3
- package/dist/pdf-viewer.js +2 -2
- package/dist/popover.cjs +5 -4
- package/dist/popover.js +3 -2
- package/dist/profile.cjs +3 -3
- package/dist/profile.js +2 -2
- package/dist/progress.cjs +2 -2
- package/dist/progress.js +1 -1
- package/dist/prompt-input.cjs +10 -9
- package/dist/prompt-input.js +7 -6
- package/dist/qr-code.cjs +19 -4
- package/dist/qr-code.d.cts +221 -2
- package/dist/qr-code.d.ts +221 -2
- package/dist/qr-code.js +4 -1
- package/dist/radio-group.cjs +5 -5
- package/dist/radio-group.js +4 -4
- package/dist/reason-tag.cjs +6 -5
- package/dist/reason-tag.js +5 -4
- package/dist/reorderable-grid.cjs +4 -3
- package/dist/reorderable-grid.js +2 -1
- package/dist/resizable-panels.cjs +3 -2
- package/dist/resizable-panels.js +2 -1
- package/dist/select.cjs +8 -7
- package/dist/select.js +7 -6
- package/dist/separator.cjs +2 -2
- package/dist/separator.js +1 -1
- package/dist/sidebar.cjs +6 -5
- package/dist/sidebar.js +4 -3
- package/dist/slider.cjs +5 -5
- package/dist/slider.js +4 -4
- package/dist/stat-list.cjs +2 -2
- package/dist/stat-list.d.cts +5 -2
- package/dist/stat-list.d.ts +5 -2
- package/dist/stat-list.js +1 -1
- package/dist/stepper.cjs +3 -2
- package/dist/stepper.js +2 -1
- package/dist/styles.css +24 -0
- package/dist/styles.css.map +1 -1
- package/dist/switch.cjs +3 -3
- package/dist/switch.js +2 -2
- package/dist/table.cjs +11 -11
- package/dist/table.js +1 -1
- package/dist/tabs.cjs +4 -3
- package/dist/tabs.js +2 -1
- package/dist/textarea.cjs +6 -6
- package/dist/textarea.js +5 -5
- package/dist/time-grid.cjs +3 -2
- package/dist/time-grid.js +2 -1
- package/dist/time-picker.cjs +2 -2
- package/dist/time-picker.js +1 -1
- package/dist/timeline.cjs +4 -4
- package/dist/timeline.js +1 -1
- package/dist/toast.cjs +4 -3
- package/dist/toast.d.cts +6 -2
- package/dist/toast.d.ts +6 -2
- package/dist/toast.js +2 -1
- package/dist/tooltip.cjs +4 -3
- package/dist/tooltip.js +3 -2
- package/dist/tree-nav.cjs +3 -3
- package/dist/tree-nav.js +1 -1
- package/docs/Dropdown.md +1 -1
- package/docs/InputTag.md +1 -1
- package/docs/MobileMenu.md +2 -2
- package/docs/Popover.md +1 -1
- package/docs/QrCode.md +108 -0
- package/docs/ReorderableGrid.md +2 -0
- package/docs/ResizablePanels.md +2 -0
- package/docs/Toast.md +2 -2
- package/package.json +1 -1
- package/dist/chunk-25HRO7HQ.cjs.map +0 -1
- package/dist/chunk-2O5UXH5R.cjs.map +0 -1
- package/dist/chunk-37D5PYEF.js.map +0 -1
- package/dist/chunk-3S5ED522.js.map +0 -1
- package/dist/chunk-4DL2U23D.cjs.map +0 -1
- package/dist/chunk-5EW47IH7.js.map +0 -1
- package/dist/chunk-5TP642UT.js.map +0 -1
- package/dist/chunk-6GVOW3UL.js.map +0 -1
- package/dist/chunk-AE53RKWR.cjs.map +0 -1
- package/dist/chunk-AJPYGRLA.cjs.map +0 -1
- package/dist/chunk-BXPLERIJ.js.map +0 -1
- package/dist/chunk-BYO5RUDE.cjs.map +0 -1
- package/dist/chunk-CEFK54WP.cjs.map +0 -1
- package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
- package/dist/chunk-DJYG7DXS.js.map +0 -1
- package/dist/chunk-DTOIO42M.js.map +0 -1
- package/dist/chunk-DXZCKDYS.js.map +0 -1
- package/dist/chunk-ESCIXKFT.js.map +0 -1
- package/dist/chunk-EUVWYDFN.js.map +0 -1
- package/dist/chunk-F4OYQ2XZ.js.map +0 -1
- package/dist/chunk-FKZB27OM.cjs.map +0 -1
- package/dist/chunk-FR4RHVPR.js.map +0 -1
- package/dist/chunk-FVQO75KY.cjs.map +0 -1
- package/dist/chunk-GDF6XTHC.js.map +0 -1
- package/dist/chunk-GR2WKBER.js.map +0 -1
- package/dist/chunk-GTS3QA7M.js.map +0 -1
- package/dist/chunk-HLI6RB5V.cjs.map +0 -1
- package/dist/chunk-HNJXBMHI.cjs.map +0 -1
- package/dist/chunk-J2DI6RMR.cjs.map +0 -1
- package/dist/chunk-JY2RC6I4.js.map +0 -1
- package/dist/chunk-KFA7B6WP.cjs.map +0 -1
- package/dist/chunk-KOAMRCSC.cjs.map +0 -1
- package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
- package/dist/chunk-LFC2DL6H.cjs.map +0 -1
- package/dist/chunk-LKN7FYW6.js.map +0 -1
- package/dist/chunk-MI57NAKF.js.map +0 -1
- package/dist/chunk-MKGWHSNV.cjs.map +0 -1
- package/dist/chunk-MLZGGAXQ.js.map +0 -1
- package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
- package/dist/chunk-MQ6VGG62.js.map +0 -1
- package/dist/chunk-NSJBVV7R.js.map +0 -1
- package/dist/chunk-NVXTHTJI.js.map +0 -1
- package/dist/chunk-O5ORO2RX.cjs.map +0 -1
- package/dist/chunk-OASSZI6M.cjs.map +0 -1
- package/dist/chunk-PCNJJVTF.cjs.map +0 -1
- package/dist/chunk-PDVU2PXR.js.map +0 -1
- package/dist/chunk-PJNUGSKI.js.map +0 -1
- package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
- package/dist/chunk-PXZRYL5I.js.map +0 -1
- package/dist/chunk-QF2FODTG.js.map +0 -1
- package/dist/chunk-QGY5FPVM.js.map +0 -1
- package/dist/chunk-QP6VNKLW.cjs.map +0 -1
- package/dist/chunk-QTS4Q2NK.js.map +0 -1
- package/dist/chunk-RANTYGKW.js.map +0 -1
- package/dist/chunk-RLE5WYY6.js.map +0 -1
- package/dist/chunk-RSLZL6VP.js.map +0 -1
- package/dist/chunk-RWU2MFUL.js.map +0 -1
- package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
- package/dist/chunk-SKMORSBO.cjs.map +0 -1
- package/dist/chunk-SSCW67KA.cjs.map +0 -1
- package/dist/chunk-SXXDTW7S.js.map +0 -1
- package/dist/chunk-TFX4LL7V.js.map +0 -1
- package/dist/chunk-TMQF2CRN.js.map +0 -1
- package/dist/chunk-UK6BGM74.cjs.map +0 -1
- package/dist/chunk-UXYFM2XT.cjs.map +0 -1
- package/dist/chunk-VZTXUYPM.cjs.map +0 -1
- package/dist/chunk-WMANILKC.cjs.map +0 -1
- package/dist/chunk-WNUAGRQN.cjs.map +0 -1
- package/dist/chunk-WZAKEJDL.js.map +0 -1
- package/dist/chunk-X2A3NAJW.js.map +0 -1
- package/dist/chunk-XZOBGKZL.cjs.map +0 -1
- package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
- package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
- package/dist/chunk-Z44A7NPD.cjs.map +0 -1
- package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
- package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
- package/dist/chunk-ZPBKRJMH.js.map +0 -1
- package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/JsonEditor/JsonEditor.paths.ts","../src/components/JsonEditor/JsonEditor.types.ts","../src/components/JsonEditor/JsonEditor.keymap.ts","../src/components/JsonEditor/JsonEditor.context.ts","../src/components/JsonEditor/JsonEditorValue.tsx","../src/components/JsonEditor/JsonEditorRow.tsx","../src/components/JsonEditor/JsonEditor.tsx"],"names":["jsx","JsonEditor","useState","jsxs","issue"],"mappings":"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","file":"chunk-5TP642UT.js","sourcesContent":["import type {\n JsonArray,\n JsonEditorEdit,\n JsonObject,\n JsonPath,\n JsonValue,\n} from \"./JsonEditor.types\";\n\n// ---------------------------------------------------------------------------\n// Paths\n//\n// The wire form of a path is a dotted string — `user.address.city`,\n// `orders.0.total` — because that is what fits in a `data-*` attribute, a\n// keyMap key, an MCP tool argument, and a log line. `.` separates segments and\n// `\\` escapes, so a key that genuinely contains a dot is still addressable\n// (`meta.a\\.b` is `[\"meta\", \"a.b\"]`, not three segments).\n// ---------------------------------------------------------------------------\n\nexport function isJsonObject(value: JsonValue | undefined): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function isJsonArray(value: JsonValue | undefined): value is JsonArray {\n return Array.isArray(value);\n}\n\nexport function isContainerValue(value: JsonValue | undefined): boolean {\n return isJsonObject(value) || isJsonArray(value);\n}\n\n/** Split a dotted path into segments, honouring `\\.` and `\\\\`. */\nexport function parsePath(path: string): JsonPath {\n if (!path) return [];\n\n const segments: string[] = [];\n let current = \"\";\n let escaped = false;\n\n for (const char of path) {\n if (escaped) {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (char === \".\") {\n segments.push(current);\n current = \"\";\n continue;\n }\n current += char;\n }\n // A trailing lone backslash is a typo, not a separator — keep it literal\n // rather than throwing on a half-typed path.\n if (escaped) current += \"\\\\\";\n segments.push(current);\n\n return segments;\n}\n\n/** The inverse of {@link parsePath}. */\nexport function pathToString(segments: JsonPath): string {\n return segments\n .map((segment) => segment.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\"))\n .join(\".\");\n}\n\nexport function getAtPath(value: JsonValue, segments: JsonPath): JsonValue | undefined {\n let current: JsonValue | undefined = value;\n\n for (const segment of segments) {\n if (isJsonArray(current)) {\n const index = Number(segment);\n if (!Number.isInteger(index)) return undefined;\n current = current[index];\n } else if (isJsonObject(current)) {\n if (!Object.prototype.hasOwnProperty.call(current, segment)) return undefined;\n current = current[segment];\n } else {\n return undefined;\n }\n if (current === undefined) return undefined;\n }\n\n return current;\n}\n\n/**\n * Rebuild `value` with `updater` applied to the container at `segments`,\n * cloning only the containers along that path. Returns the original reference\n * when the path does not resolve, so a no-op edit is detectable by identity.\n */\nfunction updateContainer(\n value: JsonValue,\n segments: JsonPath,\n updater: (container: JsonObject | JsonArray) => JsonObject | JsonArray | undefined,\n): JsonValue {\n if (segments.length === 0) {\n if (!isContainerValue(value)) return value;\n const next = updater(value as JsonObject | JsonArray);\n return next === undefined ? value : next;\n }\n\n const [head, ...rest] = segments as [string, ...string[]];\n\n if (isJsonArray(value)) {\n const index = Number(head);\n if (!Number.isInteger(index) || index < 0 || index >= value.length) return value;\n const child = updateContainer(value[index]!, rest, updater);\n if (child === value[index]) return value;\n const clone = value.slice();\n clone[index] = child;\n return clone;\n }\n\n if (isJsonObject(value)) {\n if (!Object.prototype.hasOwnProperty.call(value, head)) return value;\n const child = updateContainer(value[head]!, rest, updater);\n if (child === value[head]) return value;\n return { ...value, [head]: child };\n }\n\n return value;\n}\n\n/**\n * Apply one {@link JsonEditorEdit} and return a NEW document.\n *\n * Pure and total: an edit that cannot be applied — a path that does not exist,\n * a rename onto an occupied key, an insert without a key into an object —\n * returns the input unchanged rather than throwing or half-applying. The\n * component checks those cases first and raises an issue; this function is the\n * backstop for the same op arriving from a bridge, where there is no UI to warn.\n */\nexport function applyJsonEdit(value: JsonValue, edit: JsonEditorEdit): JsonValue {\n const segments = parsePath(edit.path);\n\n switch (edit.op) {\n case \"set\": {\n // An empty path is the document itself.\n if (segments.length === 0) return edit.value;\n\n const parent = segments.slice(0, -1);\n const key = segments[segments.length - 1]!;\n\n return updateContainer(value, parent, (container) => {\n if (isJsonArray(container)) {\n const index = Number(key);\n if (!Number.isInteger(index) || index < 0 || index >= container.length) return undefined;\n const clone = container.slice();\n clone[index] = edit.value;\n return clone;\n }\n return { ...container, [key]: edit.value };\n });\n }\n\n case \"remove\": {\n if (segments.length === 0) return value;\n\n const parent = segments.slice(0, -1);\n const key = segments[segments.length - 1]!;\n\n return updateContainer(value, parent, (container) => {\n if (isJsonArray(container)) {\n const index = Number(key);\n if (!Number.isInteger(index) || index < 0 || index >= container.length) return undefined;\n return container.filter((_, i) => i !== index);\n }\n if (!Object.prototype.hasOwnProperty.call(container, key)) return undefined;\n const clone: JsonObject = {};\n for (const [k, v] of Object.entries(container)) {\n if (k !== key) clone[k] = v;\n }\n return clone;\n });\n }\n\n case \"rename\": {\n if (segments.length === 0) return value;\n\n const parent = segments.slice(0, -1);\n const key = segments[segments.length - 1]!;\n\n return updateContainer(value, parent, (container) => {\n // Array indices are positional, not names — reorder is `move`.\n if (!isJsonObject(container)) return undefined;\n if (!Object.prototype.hasOwnProperty.call(container, key)) return undefined;\n if (edit.key === key) return undefined;\n // Renaming onto a live sibling would silently destroy it.\n if (Object.prototype.hasOwnProperty.call(container, edit.key)) return undefined;\n\n // Rebuilt in order: `delete` + re-add would move the key to the end,\n // which reads as the row jumping down the list for no reason.\n const clone: JsonObject = {};\n for (const [k, v] of Object.entries(container)) {\n clone[k === key ? edit.key : k] = v;\n }\n return clone;\n });\n }\n\n case \"insert\": {\n return updateContainer(value, segments, (container) => {\n if (isJsonArray(container)) return [...container, edit.value];\n if (edit.key === undefined || edit.key === \"\") return undefined;\n if (Object.prototype.hasOwnProperty.call(container, edit.key)) return undefined;\n return { ...container, [edit.key]: edit.value };\n });\n }\n\n case \"move\": {\n if (segments.length === 0) return value;\n\n const parent = segments.slice(0, -1);\n const from = Number(segments[segments.length - 1]);\n\n return updateContainer(value, parent, (container) => {\n if (!isJsonArray(container)) return undefined;\n if (!Number.isInteger(from) || from < 0 || from >= container.length) return undefined;\n const to = Math.min(Math.max(edit.to, 0), container.length - 1);\n if (to === from) return undefined;\n const clone = container.slice();\n const [moved] = clone.splice(from, 1);\n clone.splice(to, 0, moved!);\n return clone;\n });\n }\n }\n}\n\n/** A one-line summary of an edit, for the pending strip and activity events. */\nexport function describeEdit(edit: JsonEditorEdit): string {\n const at = edit.path === \"\" ? \"the document\" : edit.path;\n switch (edit.op) {\n case \"set\":\n return `set ${at}`;\n case \"remove\":\n return `remove ${at}`;\n case \"rename\":\n return `rename ${at} to ${edit.key}`;\n case \"insert\":\n return edit.key === undefined ? `append to ${at}` : `add ${edit.key} to ${at}`;\n case \"move\":\n return `move ${at} to index ${edit.to}`;\n }\n}\n","import type { HTMLAttributes } from \"react\";\nimport type { InputOption } from \"../inputs/inputs.types\";\nimport type { FieldMode } from \"../inputs/inputs.types\";\nimport type { Size } from \"../../utils/types\";\n\n// ---------------------------------------------------------------------------\n// JSON\n// ---------------------------------------------------------------------------\n\nexport type JsonPrimitive = string | number | boolean | null;\n\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\nexport type JsonArray = JsonValue[];\n\nexport type JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * A location inside a JSON document, one array element per segment. Array\n * indices are decimal STRINGS (`[\"orders\", \"0\", \"total\"]`) so a path is a plain\n * `string[]` an agent can emit without a tagged union, and so object keys and\n * array indices are addressed identically.\n *\n * The wire form is the dotted string produced by `pathToString` — see\n * `JsonEditor.paths.ts` for the escaping rule.\n */\nexport type JsonPath = string[];\n\n// ---------------------------------------------------------------------------\n// Declared types\n// ---------------------------------------------------------------------------\n\n/**\n * The data types a `keyMap` can impose on a JSON value.\n *\n * Each one owes BOTH a read-only representation and an edit control — that\n * pairing is the whole point of the feature, so a type with no distinct input\n * does not earn a place here.\n *\n * `json` is the escape hatch: it matches any value and edits as raw text, which\n * is how a sub-document opts out of the row-per-key treatment.\n */\nexport const JSON_FIELD_TYPES = [\n \"string\",\n \"text\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"date\",\n \"datetime\",\n \"enum\",\n \"secret\",\n \"url\",\n \"email\",\n \"color\",\n \"json\",\n \"object\",\n \"array\",\n] as const;\n\nexport type JsonFieldType = (typeof JSON_FIELD_TYPES)[number];\n\n/**\n * The long form of a `keyMap` entry. The short form — a bare type name — is\n * sugar for `{ type }`.\n */\nexport interface JsonKeyRule {\n type: JsonFieldType;\n /** Overrides the raw key as the row's label. */\n label?: string;\n /** Choices for `type: \"enum\"`. Required there; ignored elsewhere. */\n options?: InputOption[];\n /** Render the value but never offer a control for it. */\n readOnly?: boolean;\n /** The key must be present. Only enforced on wildcard-free patterns. */\n required?: boolean;\n description?: string;\n placeholder?: string;\n /** Forwarded to the control for `number` / `integer` / `date` / `datetime`. */\n min?: number | string;\n max?: number | string;\n}\n\n/** One compiled `keyMap` entry: a path pattern plus the rule it imposes. */\nexport interface JsonKeyMapEntry {\n /** Path pattern; a `\"*\"` segment matches any single key or index. */\n pattern: JsonPath;\n rule: JsonKeyRule;\n /** The key exactly as written in the `keyMap`, for error messages. */\n source: string;\n /** Non-wildcard segment count — the specificity score. */\n literals: number;\n /** Declaration order, the tie-breaker at equal specificity. */\n order: number;\n}\n\nexport interface ParsedKeyMap {\n /**\n * `false` only when the STRING itself was unusable (unparseable, or valid\n * JSON of the wrong shape). Individual bad rules leave this `true` — they are\n * reported and skipped so one typo cannot silently disable a whole map.\n */\n ok: boolean;\n rules: JsonKeyMapEntry[];\n issues: JsonEditorIssue[];\n}\n\n// ---------------------------------------------------------------------------\n// Issues\n// ---------------------------------------------------------------------------\n\n/**\n * Everything the editor knows to be wrong, in one shape.\n *\n * A typing feature that silently stops typing things is worse than no typing at\n * all, because the caller believes the constraint is in force. So a broken\n * `keyMap`, a broken rule inside a working one, and a value that contradicts\n * its declared type all surface through the SAME channel — the panel, the\n * `data-issues` count, and `onIssuesChange`.\n */\nexport interface JsonEditorIssue {\n /**\n * - `keymap` — the `keyMap` string could not be used at all.\n * - `rule` — one entry in an otherwise-usable map is malformed.\n * - `type` — a value contradicts the type declared for its path.\n * - `edit` — a structural edit was refused (duplicate key, and the like).\n */\n kind: \"keymap\" | \"rule\" | \"type\" | \"edit\";\n /** Dotted path; `\"\"` for the `keyMap` as a whole. */\n path: string;\n message: string;\n /** The declared type, when the issue has one. */\n expected?: JsonFieldType;\n /** What the value actually is: `\"string\"`, `\"array\"`, `\"null\"`, … */\n actual?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Edits\n// ---------------------------------------------------------------------------\n\n/**\n * One mutation, as data.\n *\n * Every change the UI makes is expressed as one of these and applied through\n * `applyJsonEdit`, which means an MCP bridge can replay exactly what a human\n * did — and `pendingMode` can hold one in a queue instead of applying it —\n * without a second code path.\n */\nexport type JsonEditorEditBase = {\n id?: string;\n /** Human-readable summary, used by the pending strip. */\n label?: string;\n};\n\nexport type JsonEditorEdit =\n | (JsonEditorEditBase & { op: \"set\"; path: string; value: JsonValue })\n | (JsonEditorEditBase & { op: \"remove\"; path: string })\n | (JsonEditorEditBase & { op: \"rename\"; path: string; key: string })\n /** `path` is the CONTAINER. `key` is required for an object, ignored for an array. */\n | (JsonEditorEditBase & { op: \"insert\"; path: string; key?: string; value: JsonValue })\n /** `path` is the element; `to` is its new index in the same array. */\n | (JsonEditorEditBase & { op: \"move\"; path: string; to: number });\n\nexport type JsonEditorPendingEdit = JsonEditorEdit & { id: string };\n\nexport interface JsonEditorActivity {\n /** `commit` — applied to the document. `stage` / `accept` / `reject` — pending flow. */\n type: \"commit\" | \"stage\" | \"accept\" | \"reject\";\n edit: JsonEditorEdit;\n}\n\n// ---------------------------------------------------------------------------\n// Rows\n// ---------------------------------------------------------------------------\n\n/** One rendered key/value row — also the unit a bridge would address. */\nexport interface JsonEditorNode {\n path: JsonPath;\n /** `pathToString(path)`; `\"\"` for a scalar root. */\n dotted: string;\n /** The last segment: an object key or an array index. */\n key: string;\n depth: number;\n value: JsonValue;\n parentKind: \"object\" | \"array\" | \"root\";\n /** The rule that matched, if any. */\n rule?: JsonKeyRule;\n /** Declared type if a rule matched, otherwise inferred from the value. */\n type: JsonFieldType;\n declared: boolean;\n /** Renders as a collapsible branch rather than a value. */\n container: boolean;\n childCount: number;\n /** Set when the value contradicts its declared type. */\n conflict?: JsonEditorIssue;\n}\n\n// ---------------------------------------------------------------------------\n// Props\n// ---------------------------------------------------------------------------\n\nexport interface JsonEditorProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** The document. Controlled — the editor keeps no copy of it. */\n value: JsonValue;\n /**\n * Called with the WHOLE next document plus the edit that produced it. The\n * edit is what a bridge would log, replay, or undo.\n */\n onChange?: (value: JsonValue, edit: JsonEditorEdit) => void;\n /**\n * Type declarations, as a **JSON string** — not an object, and an object is\n * NOT accepted as a convenience overload.\n *\n * A string survives every boundary this prop actually crosses: an MCP tool\n * argument, a config column, a `data-*` attribute, a form field. A live\n * object survives none of them, so accepting both would make the documented\n * form the second-class one in practice.\n *\n * ```jsonc\n * {\n * \"user.age\": \"number\", // short form: a bare type name\n * \"tags.*\": \"string\", // every element of an array\n * \"orders.*.total\": \"number\",\n * \"role\": { \"type\": \"enum\", \"options\": [\"admin\", \"member\"] }\n * }\n * ```\n *\n * Malformed input is never thrown and never silently ignored — see\n * {@link JsonEditorIssue}.\n */\n keyMap?: string | null;\n /**\n * `\"view\"` (the default here) renders values as text that turns into the\n * typed control when clicked; `\"edit\"` renders every control at once.\n *\n * The kit default is `\"edit\"`, and this component deliberately differs: a\n * forty-key document drawn as forty boxed inputs is not a document you can\n * read, and reading is most of what a JSON editor is for.\n */\n mode?: FieldMode;\n size?: Size;\n /** Show every value, offer no control. Overrides `mode` and every `allow*`. */\n readOnly?: boolean;\n /**\n * Dotted paths of the expanded containers. Omit BOTH this and\n * `defaultExpanded` to expand everything (pass `defaultExpanded={[]}` for a\n * large document).\n */\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n /** Render the issues panel. The `data-issues` count and `onIssuesChange` are unaffected. */\n showIssues?: boolean;\n onIssuesChange?: (issues: JsonEditorIssue[]) => void;\n /**\n * Trust-but-verify. With this on, an edit is STAGED into `pending` instead of\n * being applied: `onChange` does not fire until a human accepts it.\n */\n pendingMode?: boolean;\n /** Staged edits. Controlled, so an agent's proposals are inspectable. */\n pending?: JsonEditorPendingEdit[];\n onPendingChange?: (pending: JsonEditorPendingEdit[]) => void;\n /** Every mutation, staged or applied — the hook presence / undo layers listen on. */\n onActivity?: (event: JsonEditorActivity) => void;\n allowAdd?: boolean;\n allowRemove?: boolean;\n allowRename?: boolean;\n allowReorder?: boolean;\n /** Label for a scalar root document. Default `\"value\"`. */\n rootLabel?: string;\n /** Shown when the document has no keys. */\n emptyLabel?: string;\n /** Prefix for generated control ids — `<idPrefix>-<dotted path>`. */\n idPrefix?: string;\n}\n","import { resolveOption } from \"../inputs/inputs.utils\";\nimport {\n getAtPath,\n isJsonArray,\n isJsonObject,\n parsePath,\n pathToString,\n} from \"./JsonEditor.paths\";\nimport { JSON_FIELD_TYPES } from \"./JsonEditor.types\";\nimport type {\n JsonEditorIssue,\n JsonFieldType,\n JsonKeyMapEntry,\n JsonKeyRule,\n JsonPath,\n JsonValue,\n ParsedKeyMap,\n} from \"./JsonEditor.types\";\n\n// ---------------------------------------------------------------------------\n// The keyMap\n//\n// Shape: a FLAT object whose keys are dotted path patterns and whose values are\n// either a bare type name or a rule object.\n//\n// { \"user.age\": \"number\", \"orders.*.total\": \"number\", \"tags.*\": \"string\" }\n//\n// Why flat paths rather than a nested mirror of the data:\n//\n// - A nested mirror is ambiguous the moment a key needs a type AND typed\n// children — `{\"user\": {\"age\": \"number\"}}` could mean either, and resolving\n// it needs a magic key (`$type`) that a flat map does not.\n// - Arrays force a wildcard into a nested mirror anyway, so the mirror buys\n// nothing there and costs a level of nesting per segment.\n// - One rule per line is greppable, diffable and reviewable, which matters\n// when the map arrives as a string from an agent or a config column.\n// - It is sparse by construction: you declare the keys you care about, and\n// everything else is inferred from the value.\n//\n// A `*` segment matches exactly one key or index. There is deliberately no\n// `**`: \"any depth\" makes two patterns overlap in ways that are hard to reason\n// about, and every case we had for it was really \"this array's elements\".\n// ---------------------------------------------------------------------------\n\nconst TYPE_NAMES = new Set<string>(JSON_FIELD_TYPES);\n\nfunction isTypeName(value: unknown): value is JsonFieldType {\n return typeof value === \"string\" && TYPE_NAMES.has(value);\n}\n\nfunction issue(kind: JsonEditorIssue[\"kind\"], path: string, message: string): JsonEditorIssue {\n return { kind, path, message };\n}\n\n/**\n * Compile a `keyMap` JSON **string**.\n *\n * Never throws. Two failure modes, deliberately distinct:\n *\n * - The string itself is unusable (not JSON, or JSON that is not an object) —\n * `ok: false`, no rules, one `keymap` issue. The caller must show this: an\n * editor that quietly runs untyped is worse than one that refuses, because\n * the person editing believes the constraint is in force.\n * - One entry is malformed — `ok: true`, that entry dropped, one `rule` issue.\n * A typo in `orders.*.totl` must not disable the other forty rules.\n */\nexport function parseKeyMap(source?: string | null): ParsedKeyMap {\n if (source === undefined || source === null || source.trim() === \"\") {\n return { ok: true, rules: [], issues: [] };\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(source);\n } catch (error) {\n return {\n ok: false,\n rules: [],\n issues: [\n issue(\n \"keymap\",\n \"\",\n `keyMap is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,\n ),\n ],\n };\n }\n\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n ok: false,\n rules: [],\n issues: [\n issue(\n \"keymap\",\n \"\",\n `keyMap must be a JSON object of path → type, got ${describeValue(parsed as JsonValue)}.`,\n ),\n ],\n };\n }\n\n const rules: JsonKeyMapEntry[] = [];\n const issues: JsonEditorIssue[] = [];\n let order = 0;\n\n for (const [key, raw] of Object.entries(parsed as Record<string, unknown>)) {\n const rule = normalizeRule(key, raw, issues);\n if (!rule) continue;\n\n const pattern = parsePath(key);\n rules.push({\n pattern,\n rule,\n source: key,\n literals: pattern.reduce((n, segment) => n + (segment === \"*\" ? 0 : 1), 0),\n order: order++,\n });\n }\n\n return { ok: true, rules, issues };\n}\n\nfunction normalizeRule(\n key: string,\n raw: unknown,\n issues: JsonEditorIssue[],\n): JsonKeyRule | undefined {\n let candidate: Record<string, unknown>;\n\n if (typeof raw === \"string\") {\n candidate = { type: raw };\n } else if (typeof raw === \"object\" && raw !== null && !Array.isArray(raw)) {\n candidate = raw as Record<string, unknown>;\n } else {\n issues.push(\n issue(\n \"rule\",\n key,\n `Expected a type name or a rule object, got ${describeValue(raw as JsonValue)}.`,\n ),\n );\n return undefined;\n }\n\n if (!isTypeName(candidate.type)) {\n issues.push(\n issue(\n \"rule\",\n key,\n `Unknown type ${JSON.stringify(candidate.type)}. Known types: ${JSON_FIELD_TYPES.join(\", \")}.`,\n ),\n );\n return undefined;\n }\n\n if (candidate.options !== undefined && !Array.isArray(candidate.options)) {\n issues.push(issue(\"rule\", key, \"`options` must be an array.\"));\n return undefined;\n }\n\n // An enum with nothing to choose from cannot type anything, and would render\n // an empty select that looks like a loading state.\n if (candidate.type === \"enum\" && (!candidate.options || candidate.options.length === 0)) {\n issues.push(issue(\"rule\", key, \"`enum` requires a non-empty `options` array.\"));\n return undefined;\n }\n\n return candidate as unknown as JsonKeyRule;\n}\n\n/**\n * The rule governing `segments`, or `undefined` when the map is silent.\n *\n * Specificity: the pattern with the most literal (non-`*`) segments wins, and\n * at equal specificity the one declared LAST wins — so a general\n * `orders.*.total` can be overridden by a specific `orders.0.total` placed\n * anywhere in the map.\n */\nexport function resolveKeyRule(\n rules: JsonKeyMapEntry[],\n segments: JsonPath,\n): JsonKeyRule | undefined {\n let best: JsonKeyMapEntry | undefined;\n\n for (const entry of rules) {\n if (!matches(entry.pattern, segments)) continue;\n if (\n !best ||\n entry.literals > best.literals ||\n (entry.literals === best.literals && entry.order > best.order)\n ) {\n best = entry;\n }\n }\n\n return best?.rule;\n}\n\nfunction matches(pattern: JsonPath, segments: JsonPath): boolean {\n if (pattern.length !== segments.length) return false;\n return pattern.every((p, i) => p === \"*\" || p === segments[i]);\n}\n\n/** What a value IS, in the vocabulary the issue messages use. */\nexport function describeValue(value: JsonValue | undefined): string {\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n}\n\n/** The type a value carries on its own, when nothing declares one for it. */\nexport function inferType(value: JsonValue | undefined): JsonFieldType {\n if (Array.isArray(value)) return \"array\";\n if (value === null || value === undefined) {\n // `null` carries no type information at all, so the raw editor is the only\n // choice that neither invents a type nor drops the value.\n return \"json\";\n }\n if (typeof value === \"object\") return \"object\";\n if (typeof value === \"boolean\") return \"boolean\";\n if (typeof value === \"number\") return \"number\";\n return \"string\";\n}\n\nfunction enumValues(rule: JsonKeyRule): (string | number | boolean)[] {\n return (rule.options ?? []).map((option) => resolveOption(option).value as string);\n}\n\n/**\n * Does the value satisfy the declared type?\n *\n * Deliberately strict and deliberately non-coercing. `\"36\"` is NOT a number\n * here — the whole reason a `keyMap` exists is to make that visible rather than\n * to paper over it.\n */\nexport function typeMatches(rule: JsonKeyRule, value: JsonValue | undefined): boolean {\n switch (rule.type) {\n case \"string\":\n case \"text\":\n case \"url\":\n case \"email\":\n case \"secret\":\n case \"color\":\n return typeof value === \"string\";\n case \"number\":\n return typeof value === \"number\" && Number.isFinite(value);\n case \"integer\":\n return typeof value === \"number\" && Number.isInteger(value);\n case \"boolean\":\n return typeof value === \"boolean\";\n case \"date\":\n case \"datetime\":\n return typeof value === \"string\" && value !== \"\" && !Number.isNaN(Date.parse(value));\n case \"enum\":\n return (\n (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") &&\n enumValues(rule).some((option) => String(option) === String(value))\n );\n case \"object\":\n return isJsonObject(value);\n case \"array\":\n return isJsonArray(value);\n case \"json\":\n // The escape hatch matches anything EXCEPT text that does not parse —\n // which is exactly the state the raw editor leaves behind when someone\n // saves a half-written document.\n if (typeof value !== \"string\") return true;\n try {\n JSON.parse(value);\n return true;\n } catch {\n return false;\n }\n }\n}\n\nfunction conflictMessage(rule: JsonKeyRule, value: JsonValue | undefined): string {\n if (rule.type === \"enum\") {\n return `${JSON.stringify(value)} is not one of the declared options (${enumValues(rule)\n .map((option) => JSON.stringify(option))\n .join(\", \")}).`;\n }\n if (rule.type === \"json\") {\n return \"Raw text is not valid JSON.\";\n }\n if (rule.type === \"date\" || rule.type === \"datetime\") {\n return `Declared ${rule.type}, got ${describeValue(value)} that is not a parseable date.`;\n }\n return `Declared ${rule.type}, got ${describeValue(value)}.`;\n}\n\n/**\n * Every place the document contradicts its `keyMap`.\n *\n * Walks the value (so a conflict is found at any depth, arrays included), then\n * checks `required` on the wildcard-free patterns — a wildcard cannot say \"this\n * must exist\" about a key nobody has named.\n */\nexport function findJsonConflicts(value: JsonValue, rules: JsonKeyMapEntry[]): JsonEditorIssue[] {\n const issues: JsonEditorIssue[] = [];\n if (rules.length === 0) return issues;\n\n const walk = (node: JsonValue, segments: JsonPath) => {\n if (segments.length > 0) {\n const rule = resolveKeyRule(rules, segments);\n if (rule && !typeMatches(rule, node)) {\n issues.push({\n kind: \"type\",\n path: pathToString(segments),\n message: conflictMessage(rule, node),\n expected: rule.type,\n actual: describeValue(node),\n });\n }\n }\n\n if (isJsonArray(node)) {\n node.forEach((child, index) => walk(child, [...segments, String(index)]));\n } else if (isJsonObject(node)) {\n for (const [key, child] of Object.entries(node)) walk(child, [...segments, key]);\n }\n };\n\n walk(value, []);\n\n for (const entry of rules) {\n if (!entry.rule.required) continue;\n if (entry.pattern.includes(\"*\")) continue;\n if (getAtPath(value, entry.pattern) !== undefined) continue;\n issues.push({\n kind: \"type\",\n path: entry.source,\n message: `Required key is missing (declared ${entry.rule.type}).`,\n expected: entry.rule.type,\n actual: \"undefined\",\n });\n }\n\n return issues;\n}\n\n/** The value a newly-added key starts as, so a new row is never `undefined`. */\nexport function seedValue(type: JsonFieldType, rule?: JsonKeyRule): JsonValue {\n switch (type) {\n case \"number\":\n case \"integer\":\n return 0;\n case \"boolean\":\n return false;\n case \"object\":\n return {};\n case \"array\":\n return [];\n case \"json\":\n return null;\n case \"enum\":\n return rule?.options?.length ? (resolveOption(rule.options[0]!).value as string) : \"\";\n default:\n return \"\";\n }\n}\n","import { createContext, useContext } from \"react\";\nimport type { FieldMode } from \"../inputs/inputs.types\";\nimport type { Size } from \"../../utils/types\";\nimport type {\n JsonEditorNode,\n JsonEditorPendingEdit,\n JsonFieldType,\n JsonValue,\n} from \"./JsonEditor.types\";\n\n/**\n * Everything a row needs that is not the row itself.\n *\n * Same shape as `Table`'s context and for the same reason: a row is rendered\n * once per key in a document that can be hundreds deep, and threading a dozen\n * props through the recursion makes every signature change a rewrite.\n */\nexport interface JsonEditorContextValue {\n mode: FieldMode;\n size: Size;\n readOnly: boolean;\n allowAdd: boolean;\n allowRemove: boolean;\n allowRename: boolean;\n allowReorder: boolean;\n pendingMode: boolean;\n idPrefix: string;\n\n isExpanded: (dotted: string) => boolean;\n toggleExpanded: (dotted: string) => void;\n\n setValueAt: (node: JsonEditorNode, value: JsonValue) => void;\n removeAt: (node: JsonEditorNode) => void;\n renameAt: (node: JsonEditorNode, key: string) => void;\n moveAt: (node: JsonEditorNode, to: number) => void;\n insertInto: (dotted: string, key: string | undefined, type: JsonFieldType) => void;\n\n /** Which container's add form is open, if any. Transient UI state, never model state. */\n addingAt: string | null;\n setAddingAt: (dotted: string | null) => void;\n\n pendingFor: (dotted: string) => JsonEditorPendingEdit[];\n acceptPending: (id: string) => void;\n rejectPending: (id: string) => void;\n}\n\nexport const JsonEditorContext = createContext<JsonEditorContextValue | null>(null);\n\nexport function useJsonEditorContext(): JsonEditorContextValue {\n const context = useContext(JsonEditorContext);\n if (!context) {\n throw new Error(\"JsonEditor rows must be rendered inside a <JsonEditor>.\");\n }\n return context;\n}\n","import { ColorPicker } from \"../ColorPicker/ColorPicker\";\nimport { Input } from \"../inputs/Input/Input\";\nimport { Textarea } from \"../inputs/Textarea/Textarea\";\nimport { Select } from \"../inputs/Select/Select\";\nimport { Switch } from \"../inputs/Switch/Switch\";\nimport { DatePicker } from \"../inputs/DatePicker/DatePicker\";\nimport { DisplayValue } from \"../inputs/mode/DisplayValue\";\nimport { useInlineEdit } from \"../inputs/mode/useInlineEdit\";\nimport { resolveOption } from \"../inputs/inputs.utils\";\nimport type { FieldMode } from \"../inputs/inputs.types\";\nimport type { Size } from \"../../utils/types\";\nimport { isImeComposing } from \"../../utils/ime\";\nimport type { JsonEditorNode, JsonFieldType, JsonValue } from \"./JsonEditor.types\";\n\nexport interface JsonEditorValueProps {\n node: JsonEditorNode;\n mode: FieldMode;\n size: Size;\n /** No control at all — the row still shows the value. */\n readOnly: boolean;\n /** Stable control id: `<idPrefix>-<dotted path>`. */\n id: string;\n onCommit: (value: JsonValue) => void;\n}\n\nconst COLOR_PICKER_SIZE: Record<Size, \"sm\" | \"md\" | \"lg\"> = {\n xs: \"sm\",\n sm: \"sm\",\n md: \"md\",\n lg: \"lg\",\n xl: \"lg\",\n};\n\n/**\n * Types whose text form IS the value commit on every keystroke; types that must\n * be PARSED out of text commit on blur instead.\n *\n * That split is not fussiness. A controlled `number` field that parses per\n * keystroke turns `1.5` into `1` the moment you type the dot, and moves the\n * caret while you are still typing. Committing on blur means the intermediate\n * text is never anybody's value.\n */\nfunction isRawTextType(type: JsonFieldType): boolean {\n return type === \"number\" || type === \"integer\" || type === \"json\";\n}\n\n/** The text shown for a value in a raw editor — strings verbatim, everything else as JSON. */\nexport function toText(value: JsonValue | undefined): string {\n if (value === undefined) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value) ?? \"\";\n}\n\n/**\n * Read a raw editor's text back into a value.\n *\n * Text that will not parse as the declared type is stored AS TEXT. That is the\n * deliberate choice at the heart of this component: typing `abc` into a field\n * declared `number` neither coerces to `0`/`NaN` nor throws the keystrokes\n * away — it writes `\"abc\"` and lets the conflict machinery say so, in the same\n * place it reports bad data that arrived from the server.\n */\nexport function fromText(text: string, type: JsonFieldType): JsonValue {\n switch (type) {\n case \"number\":\n case \"integer\": {\n const trimmed = text.trim();\n if (trimmed === \"\") return text;\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : text;\n }\n case \"boolean\": {\n const trimmed = text.trim().toLowerCase();\n if (trimmed === \"true\") return true;\n if (trimmed === \"false\") return false;\n return text;\n }\n case \"json\":\n case \"object\":\n case \"array\":\n try {\n return JSON.parse(text) as JsonValue;\n } catch {\n return text;\n }\n default:\n return text;\n }\n}\n\n/**\n * The read-or-edit control for one leaf value.\n *\n * Everything here is a `react-fancy` primitive — `Input`, `Textarea`, `Select`,\n * `Switch`, `DatePicker`, `ColorPicker` — and the view/edit swap is the kit's\n * own `useInlineEdit` + `DisplayValue`, not a private re-implementation of it.\n */\nexport function JsonEditorValue({ node, mode, size, readOnly, id, onCommit }: JsonEditorValueProps) {\n const locked = readOnly || node.rule?.readOnly === true;\n const resolvedMode: FieldMode = locked ? \"view\" : mode;\n const { value, rule } = node;\n\n // A value that contradicts its declared type cannot be shown through that\n // type's control — a number input cannot hold \"thirty-six\" — so it falls back\n // to the raw editor, which is also the only place it can be repaired.\n if (node.conflict || isRawTextType(node.type)) {\n return (\n <RawValueEditor\n id={id}\n text={toText(value)}\n type={node.type}\n mode={resolvedMode}\n size={size}\n disabled={locked}\n multiline={node.type === \"json\" || typeof value === \"object\"}\n placeholder={rule?.placeholder}\n onCommitText={(text) => onCommit(fromText(text, node.type))}\n />\n );\n }\n\n const common = { id, size, mode: resolvedMode, disabled: locked } as const;\n\n switch (node.type) {\n case \"boolean\":\n return (\n <Switch\n {...common}\n checked={value === true}\n onCheckedChange={(next) => onCommit(next)}\n />\n );\n\n case \"enum\": {\n const options = rule?.options ?? [];\n return (\n <Select\n {...common}\n list={options}\n value={String(value)}\n onValueChange={(next) => {\n // Emit the option's ORIGINAL value, so a numeric or boolean enum\n // does not silently become a string on its way through the DOM.\n const match = options\n .map((option) => resolveOption(option))\n .find((option) => String(option.value) === next);\n onCommit((match?.value ?? next) as JsonValue);\n }}\n />\n );\n }\n\n case \"date\":\n case \"datetime\":\n return (\n <DatePicker\n {...common}\n includeTime={node.type === \"datetime\"}\n min={rule?.min === undefined ? undefined : String(rule.min)}\n max={rule?.max === undefined ? undefined : String(rule.max)}\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={(next) => onCommit(next)}\n />\n );\n\n case \"color\":\n return (\n <ColorPicker\n size={COLOR_PICKER_SIZE[size]}\n mode={resolvedMode}\n disabled={locked}\n value={typeof value === \"string\" ? value : \"\"}\n onChange={(next) => onCommit(next)}\n />\n );\n\n case \"text\":\n return (\n <Textarea\n {...common}\n minRows={2}\n autoResize\n placeholder={rule?.placeholder}\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={(next) => onCommit(next)}\n />\n );\n\n case \"secret\":\n return (\n <Input\n {...common}\n type=\"password\"\n reveal\n placeholder={rule?.placeholder}\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={(next) => onCommit(next)}\n />\n );\n\n case \"url\":\n case \"email\":\n case \"string\":\n default:\n return (\n <Input\n {...common}\n type={node.type === \"url\" ? \"url\" : node.type === \"email\" ? \"email\" : \"text\"}\n placeholder={rule?.placeholder}\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={(next) => onCommit(next)}\n />\n );\n }\n}\n\ninterface RawValueEditorProps {\n id: string;\n text: string;\n type: JsonFieldType;\n mode: FieldMode;\n size: Size;\n disabled: boolean;\n multiline: boolean;\n placeholder?: string;\n onCommitText: (text: string) => void;\n}\n\n/**\n * An uncontrolled text control that commits on blur.\n *\n * Uncontrolled is what keeps the component free of a private copy of the\n * document: the half-typed text lives in the DOM node, never in React state,\n * and the `key` is the committed text — so a value changed from OUTSIDE (an\n * agent writing through a bridge, a server push) remounts the control with the\n * new text, while local typing does not.\n */\nfunction RawValueEditor({\n id,\n text,\n type,\n mode,\n size,\n disabled,\n multiline,\n placeholder,\n onCommitText,\n}: RawValueEditorProps) {\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(mode, disabled);\n\n if (!showControl) {\n return (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {text}\n </DisplayValue>\n );\n }\n\n const commit = (next: string) => {\n if (next !== text) onCommitText(next);\n };\n\n if (multiline) {\n return (\n <Textarea\n id={id}\n key={text}\n size={size}\n mode=\"edit\"\n minRows={3}\n disabled={disabled}\n placeholder={placeholder}\n defaultValue={text}\n spellCheck={false}\n autoFocus={interactive}\n className=\"font-mono\"\n onBlur={(event) => {\n commit(event.currentTarget.value);\n exitEdit();\n }}\n />\n );\n }\n\n return (\n <Input\n id={id}\n key={text}\n size={size}\n mode=\"edit\"\n type=\"text\"\n // Not `type=\"number\"`: an `<input type=number>` reports \"\" for text it\n // considers invalid, so the literal keystrokes we promise to keep would\n // be unreadable on commit. The numeric keyboard is requested instead.\n inputMode={type === \"number\" || type === \"integer\" ? \"decimal\" : undefined}\n disabled={disabled}\n placeholder={placeholder}\n defaultValue={text}\n spellCheck={false}\n autoFocus={interactive}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !isImeComposing(event)) event.currentTarget.blur();\n }}\n onBlur={(event) => {\n commit(event.currentTarget.value);\n exitEdit();\n }}\n />\n );\n}\n","import { useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { isImeComposing } from \"../../utils/ime\";\nimport { Badge } from \"../Badge/Badge\";\nimport { Button } from \"../Button/Button\";\nimport { Text } from \"../Text/Text\";\nimport { Input } from \"../inputs/Input/Input\";\nimport { Select } from \"../inputs/Select/Select\";\nimport { useJsonEditorContext } from \"./JsonEditor.context\";\nimport { describeEdit } from \"./JsonEditor.paths\";\nimport { JsonEditorValue, toText } from \"./JsonEditorValue\";\nimport { JSON_FIELD_TYPES } from \"./JsonEditor.types\";\nimport type { JsonEditorNode, JsonFieldType } from \"./JsonEditor.types\";\n\n/** One indent step, in px. Applied as an inline style because depth is data. */\nconst INDENT = 18;\n\nexport interface JsonEditorRowProps {\n node: JsonEditorNode;\n}\n\n/**\n * One key/value row.\n *\n * Flat in the DOM rather than nested: `aria-level` carries the depth, so an\n * agent can address `[data-path=\"orders.2.total\"]` in one selector instead of\n * walking a nesting it would have to guess the shape of. It is also the\n * standard flat-tree ARIA pattern.\n */\nexport function JsonEditorRow({ node }: JsonEditorRowProps) {\n const ctx = useJsonEditorContext();\n const { dotted, key, depth, container, conflict } = node;\n\n const expanded = container ? ctx.isExpanded(dotted) : undefined;\n const pending = ctx.pendingFor(dotted);\n const renameable =\n ctx.allowRename && !ctx.readOnly && node.parentKind === \"object\" && ctx.mode === \"edit\";\n const label = node.rule?.label ?? key;\n\n return (\n <div\n data-react-fancy-json-editor-row=\"\"\n data-path={dotted}\n data-key={key}\n data-type={node.type}\n data-depth={depth}\n data-declared={node.declared ? \"true\" : \"false\"}\n data-conflict={conflict ? \"true\" : undefined}\n data-pending={pending.length > 0 ? \"true\" : undefined}\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-expanded={expanded}\n className={cn(\n \"border-b border-zinc-100 py-1 last:border-b-0 dark:border-zinc-800\",\n conflict && \"bg-red-50/60 dark:bg-red-950/20\",\n pending.length > 0 && \"bg-violet-50/60 dark:bg-violet-950/20\",\n )}\n >\n <div className=\"flex items-start gap-2 px-2\" style={{ paddingInlineStart: depth * INDENT + 8 }}>\n {container ? (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-react-fancy-json-editor-toggle=\"\"\n data-path={dotted}\n aria-label={expanded ? `Collapse ${label}` : `Expand ${label}`}\n aria-expanded={expanded}\n icon={expanded ? \"chevron-down\" : \"chevron-right\"}\n onClick={() => ctx.toggleExpanded(dotted)}\n />\n ) : (\n <span aria-hidden=\"true\" className=\"inline-block w-6 shrink-0\" />\n )}\n\n <div\n data-react-fancy-json-editor-key=\"\"\n data-path={dotted}\n className=\"w-1/3 min-w-0 shrink-0\"\n >\n {renameable ? (\n <Input\n // Uncontrolled + keyed + commit on blur: renaming per keystroke\n // would fire one structural edit per character.\n key={key}\n size={ctx.size}\n mode=\"edit\"\n defaultValue={key}\n spellCheck={false}\n aria-label={`Key of ${dotted}`}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !isImeComposing(event)) event.currentTarget.blur();\n }}\n onBlur={(event) => {\n const next = event.currentTarget.value;\n if (next !== key) ctx.renameAt(node, next);\n }}\n />\n ) : (\n <Text\n as=\"span\"\n size=\"sm\"\n weight=\"medium\"\n color={node.parentKind === \"array\" ? \"muted\" : \"default\"}\n className=\"block truncate py-1 font-mono\"\n title={dotted}\n >\n {node.parentKind === \"array\" ? `[${key}]` : label}\n </Text>\n )}\n {node.rule?.description && (\n <Text as=\"span\" size=\"xs\" color=\"muted\" className=\"block truncate\">\n {node.rule.description}\n </Text>\n )}\n </div>\n\n <div\n data-react-fancy-json-editor-value=\"\"\n data-path={dotted}\n data-type={node.type}\n className=\"min-w-0 flex-1\"\n >\n {container ? (\n <Text as=\"span\" size=\"sm\" color=\"muted\" className=\"block py-1 font-mono\">\n {node.type === \"array\"\n ? `[ ${node.childCount} ${node.childCount === 1 ? \"item\" : \"items\"} ]`\n : `{ ${node.childCount} ${node.childCount === 1 ? \"key\" : \"keys\"} }`}\n </Text>\n ) : (\n <JsonEditorValue\n node={node}\n mode={ctx.mode}\n size={ctx.size}\n readOnly={ctx.readOnly}\n id={`${ctx.idPrefix}-${dotted}`}\n onCommit={(next) => ctx.setValueAt(node, next)}\n />\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-0.5 pt-0.5\">\n {node.declared && (\n <Badge size=\"sm\" variant=\"soft\" color={conflict ? \"red\" : \"zinc\"}>\n {node.type}\n </Badge>\n )}\n {container && ctx.allowAdd && !ctx.readOnly && (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-react-fancy-json-editor-add=\"\"\n data-path={dotted}\n aria-label={`Add to ${label}`}\n icon=\"plus\"\n onClick={() => ctx.setAddingAt(ctx.addingAt === dotted ? null : dotted)}\n />\n )}\n {ctx.allowReorder && !ctx.readOnly && node.parentKind === \"array\" && (\n <>\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-react-fancy-json-editor-move-up=\"\"\n data-path={dotted}\n aria-label={`Move ${dotted} up`}\n icon=\"arrow-up\"\n onClick={() => ctx.moveAt(node, Number(key) - 1)}\n />\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-react-fancy-json-editor-move-down=\"\"\n data-path={dotted}\n aria-label={`Move ${dotted} down`}\n icon=\"arrow-down\"\n onClick={() => ctx.moveAt(node, Number(key) + 1)}\n />\n </>\n )}\n {ctx.allowRemove && !ctx.readOnly && node.parentKind !== \"root\" && (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n color=\"red\"\n data-react-fancy-json-editor-remove=\"\"\n data-path={dotted}\n aria-label={`Remove ${dotted}`}\n icon=\"trash-2\"\n onClick={() => ctx.removeAt(node)}\n />\n )}\n </div>\n </div>\n\n {conflict && (\n <Text\n as=\"span\"\n size=\"xs\"\n color=\"danger\"\n data-react-fancy-json-editor-conflict=\"\"\n data-path={dotted}\n className=\"block px-2 pb-1\"\n style={{ paddingInlineStart: depth * INDENT + 40 }}\n >\n {conflict.message}\n </Text>\n )}\n\n {pending.map((edit) => (\n <div\n key={edit.id}\n data-react-fancy-json-editor-pending=\"\"\n data-id={edit.id}\n data-path={dotted}\n className=\"flex items-center gap-2 px-2 pb-1\"\n style={{ paddingInlineStart: depth * INDENT + 40 }}\n >\n <Badge size=\"sm\" variant=\"soft\" color=\"violet\">\n proposed\n </Badge>\n <Text as=\"span\" size=\"xs\" color=\"muted\" className=\"min-w-0 truncate font-mono\">\n {edit.label ?? describeEdit(edit)}\n {edit.op === \"set\" || edit.op === \"insert\" ? ` → ${toText(edit.value)}` : \"\"}\n </Text>\n <Button\n size=\"xs\"\n color=\"emerald\"\n data-react-fancy-json-editor-accept=\"\"\n data-id={edit.id}\n onClick={() => ctx.acceptPending(edit.id)}\n >\n Accept\n </Button>\n <Button\n size=\"xs\"\n variant=\"ghost\"\n data-react-fancy-json-editor-reject=\"\"\n data-id={edit.id}\n onClick={() => ctx.rejectPending(edit.id)}\n >\n Reject\n </Button>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface JsonEditorAddFormProps {\n /** Dotted path of the container being added to; `\"\"` is the document root. */\n path: string;\n kind: \"object\" | \"array\";\n depth: number;\n /** Declared type for the container's children, when the keyMap names one. */\n suggestedType?: JsonFieldType;\n}\n\n/**\n * The inline \"add a key\" form.\n *\n * Its open/closed state and its two draft fields are the only state this\n * component owns that is not in `value` — and deliberately so: a half-typed key\n * name is not part of the document, and an agent adding a key does it through\n * an `insert` edit, never by driving this form.\n */\nexport function JsonEditorAddForm({ path, kind, depth, suggestedType }: JsonEditorAddFormProps) {\n const ctx = useJsonEditorContext();\n const [key, setKey] = useState(\"\");\n const [type, setType] = useState<JsonFieldType>(suggestedType ?? \"string\");\n\n return (\n <div\n data-react-fancy-json-editor-add-form=\"\"\n data-path={path}\n className=\"flex items-center gap-2 border-b border-zinc-100 px-2 py-1.5 dark:border-zinc-800\"\n style={{ paddingInlineStart: depth * INDENT + 32 }}\n >\n {kind === \"object\" && (\n <Input\n size={ctx.size}\n mode=\"edit\"\n value={key}\n placeholder=\"key\"\n aria-label=\"New key\"\n spellCheck={false}\n data-react-fancy-json-editor-add-key=\"\"\n onValueChange={setKey}\n />\n )}\n <Select\n size={ctx.size}\n mode=\"edit\"\n aria-label=\"New value type\"\n data-react-fancy-json-editor-add-type=\"\"\n list={[...JSON_FIELD_TYPES]}\n value={type}\n onValueChange={(next) => setType(next as JsonFieldType)}\n />\n <Button\n size=\"xs\"\n color=\"blue\"\n data-react-fancy-json-editor-add-confirm=\"\"\n onClick={() => ctx.insertInto(path, kind === \"object\" ? key : undefined, type)}\n >\n Add\n </Button>\n <Button\n size=\"xs\"\n variant=\"ghost\"\n data-react-fancy-json-editor-add-cancel=\"\"\n onClick={() => ctx.setAddingAt(null)}\n >\n Cancel\n </Button>\n </div>\n );\n}\n","import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { Callout } from \"../Callout/Callout\";\nimport { Text } from \"../Text/Text\";\nimport { JsonEditorContext } from \"./JsonEditor.context\";\nimport { JsonEditorAddForm, JsonEditorRow } from \"./JsonEditorRow\";\nimport { findJsonConflicts, inferType, parseKeyMap, resolveKeyRule, seedValue } from \"./JsonEditor.keymap\";\nimport {\n applyJsonEdit,\n describeEdit,\n getAtPath,\n isContainerValue,\n isJsonArray,\n isJsonObject,\n parsePath,\n pathToString,\n} from \"./JsonEditor.paths\";\nimport type { JsonEditorContextValue } from \"./JsonEditor.context\";\nimport type {\n JsonEditorEdit,\n JsonEditorIssue,\n JsonEditorNode,\n JsonEditorPendingEdit,\n JsonEditorProps,\n JsonFieldType,\n JsonKeyMapEntry,\n JsonPath,\n JsonValue,\n} from \"./JsonEditor.types\";\n\ntype RenderItem =\n | { kind: \"node\"; node: JsonEditorNode }\n | {\n kind: \"add\";\n path: string;\n containerKind: \"object\" | \"array\";\n depth: number;\n suggestedType?: JsonFieldType;\n };\n\n/** Dotted paths of every container in the document — the \"expand everything\" set. */\nfunction collectContainerPaths(value: JsonValue): string[] {\n const out: string[] = [];\n\n const walk = (node: JsonValue, segments: JsonPath) => {\n if (!isContainerValue(node)) return;\n if (segments.length > 0) out.push(pathToString(segments));\n if (isJsonArray(node)) {\n node.forEach((child, index) => walk(child, [...segments, String(index)]));\n } else if (isJsonObject(node)) {\n for (const [key, child] of Object.entries(node)) walk(child, [...segments, key]);\n }\n };\n\n walk(value, []);\n return out;\n}\n\n/**\n * JsonEditor — a key/value editor over arbitrary, arbitrarily-nested JSON, with\n * a caller-supplied `keyMap` imposing a data type on any path.\n *\n * The type does two jobs at once, which is the point of the feature: it decides\n * how a value is RENDERED when you are reading, and which control appears when\n * you are editing. `{\"user.age\": \"number\"}` is not documentation — it is the\n * reason that row is a numeric field and the reason `\"thirty-six\"` shows up in\n * red instead of quietly becoming `0`.\n *\n * The three design decisions worth knowing before you use it:\n *\n * - **`keyMap` is a JSON string, and only a string.** It has to survive an MCP\n * tool argument, a config column and a `data-*` attribute; a live object\n * survives none of those. See {@link JsonEditorProps.keyMap}.\n * - **Nothing is coerced and nothing is dropped.** A value that contradicts\n * its declared type keeps its real value, renders through the raw editor,\n * and is reported through the issues panel, the `data-issues` count and\n * `onIssuesChange` — the same channel a broken `keyMap` uses.\n * - **It is controlled, all the way down.** The document lives in `value`.\n * The only state here is which rows are expanded, which add-form is open,\n * and the half-typed text inside a control that has not committed yet.\n *\n * Every control is a `react-fancy` primitive, so restyling the kit restyles\n * this, and `mode=\"view\"` gets the kit's click-to-edit behaviour for free.\n */\nexport const JsonEditor = forwardRef<HTMLDivElement, JsonEditorProps>(function JsonEditor(\n {\n value,\n onChange,\n keyMap,\n mode = \"view\",\n size = \"sm\",\n readOnly = false,\n expanded,\n defaultExpanded,\n onExpandedChange,\n showIssues = true,\n onIssuesChange,\n pendingMode = false,\n pending,\n onPendingChange,\n onActivity,\n allowAdd = true,\n allowRemove = true,\n allowRename = true,\n allowReorder = true,\n rootLabel = \"value\",\n emptyLabel = \"No keys yet.\",\n idPrefix,\n className,\n ...rest\n },\n ref,\n) {\n const autoId = useId();\n const prefix = idPrefix ?? autoId;\n const editSeq = useRef(0);\n\n // Parsed ONCE per distinct keyMap string — not per row, not per render. The\n // map is compiled into path patterns with a specificity score, and rows only\n // ever do a match against that.\n const parsedKeyMap = useMemo(() => parseKeyMap(keyMap), [keyMap]);\n const rules = parsedKeyMap.rules;\n\n const conflicts = useMemo(() => findJsonConflicts(value, rules), [value, rules]);\n\n // Transient complaints about an edit that was refused (duplicate key, empty\n // key). They belong beside the type conflicts because from the user's side\n // they are the same thing: something they can see is wrong and can fix.\n const [editIssues, setEditIssues] = useState<JsonEditorIssue[]>([]);\n\n const issues = useMemo(\n () => [...parsedKeyMap.issues, ...conflicts, ...editIssues],\n [parsedKeyMap.issues, conflicts, editIssues],\n );\n\n const onIssuesChangeRef = useRef(onIssuesChange);\n onIssuesChangeRef.current = onIssuesChange;\n const lastIssueSignature = useRef<string | null>(null);\n\n useEffect(() => {\n const signature = JSON.stringify(issues);\n if (signature === lastIssueSignature.current) return;\n lastIssueSignature.current = signature;\n onIssuesChangeRef.current?.(issues);\n }, [issues]);\n\n // ── expansion ─────────────────────────────────────────────────────────\n // `null` means \"expanded, everything\" — the state a caller that named no\n // paths is in. Storing it as a sentinel rather than materialising every\n // container path keeps a container added later expanded too.\n const expandedControlled = expanded !== undefined;\n const [expandedUncontrolled, setExpandedUncontrolled] = useState<string[] | null>(\n defaultExpanded ?? null,\n );\n const expandedList = expandedControlled ? expanded : expandedUncontrolled;\n\n const isExpanded = useCallback(\n (dotted: string) => expandedList === null || expandedList.includes(dotted),\n [expandedList],\n );\n\n const toggleExpanded = useCallback(\n (dotted: string) => {\n const current = expandedList ?? collectContainerPaths(value);\n const next = current.includes(dotted)\n ? current.filter((path) => path !== dotted)\n : [...current, dotted];\n if (!expandedControlled) setExpandedUncontrolled(next);\n onExpandedChange?.(next);\n },\n [expandedList, expandedControlled, onExpandedChange, value],\n );\n\n // ── add form ──────────────────────────────────────────────────────────\n const [addingAt, setAddingAt] = useState<string | null>(null);\n\n // ── committing ────────────────────────────────────────────────────────\n const stagedPending = useMemo(() => pending ?? [], [pending]);\n\n const commit = useCallback(\n (edit: JsonEditorEdit) => {\n setEditIssues([]);\n\n if (pendingMode) {\n // Trust-but-verify: the edit becomes a PROPOSAL. `value` does not move\n // and `onChange` does not fire until a human accepts it.\n const staged: JsonEditorPendingEdit = {\n ...edit,\n id: edit.id ?? `${prefix}-edit-${editSeq.current++}`,\n label: edit.label ?? describeEdit(edit),\n };\n onPendingChange?.([...stagedPending, staged]);\n onActivity?.({ type: \"stage\", edit: staged });\n return;\n }\n\n const next = applyJsonEdit(value, edit);\n // `applyJsonEdit` returns the same reference when it refuses an edit, so\n // a refusal never reaches the host as a spurious \"changed\" callback.\n if (next === value) return;\n onChange?.(next, edit);\n onActivity?.({ type: \"commit\", edit });\n },\n [pendingMode, prefix, stagedPending, onPendingChange, onActivity, value, onChange],\n );\n\n const refuse = useCallback((path: string, message: string) => {\n setEditIssues([{ kind: \"edit\", path, message }]);\n }, []);\n\n const setValueAt = useCallback(\n (node: JsonEditorNode, next: JsonValue) => {\n commit({ op: \"set\", path: node.dotted, value: next });\n },\n [commit],\n );\n\n const removeAt = useCallback(\n (node: JsonEditorNode) => {\n commit({ op: \"remove\", path: node.dotted });\n },\n [commit],\n );\n\n const moveAt = useCallback(\n (node: JsonEditorNode, to: number) => {\n commit({ op: \"move\", path: node.dotted, to });\n },\n [commit],\n );\n\n const renameAt = useCallback(\n (node: JsonEditorNode, key: string) => {\n if (key === node.key) return;\n if (key.trim() === \"\") {\n refuse(node.dotted, \"A key cannot be empty.\");\n return;\n }\n const parent = getAtPath(value, node.path.slice(0, -1));\n if (isJsonObject(parent) && Object.prototype.hasOwnProperty.call(parent, key)) {\n refuse(node.dotted, `A key named \"${key}\" already exists here — rename refused.`);\n return;\n }\n commit({ op: \"rename\", path: node.dotted, key });\n },\n [commit, refuse, value],\n );\n\n const insertInto = useCallback(\n (dotted: string, key: string | undefined, type: JsonFieldType) => {\n const segments = parsePath(dotted);\n const container = dotted === \"\" ? value : getAtPath(value, segments);\n const isArray = isJsonArray(container);\n\n if (!isArray) {\n if (key === undefined || key.trim() === \"\") {\n refuse(dotted, \"A new key needs a name.\");\n return;\n }\n if (isJsonObject(container) && Object.prototype.hasOwnProperty.call(container, key)) {\n refuse(dotted, `A key named \"${key}\" already exists here.`);\n return;\n }\n }\n\n const rule = resolveKeyRule(rules, [...segments, isArray ? \"*\" : key!]);\n setAddingAt(null);\n commit({\n op: \"insert\",\n path: dotted,\n key: isArray ? undefined : key,\n value: seedValue(type, rule),\n });\n },\n [commit, refuse, rules, value],\n );\n\n const pendingFor = useCallback(\n (dotted: string) => stagedPending.filter((edit) => edit.path === dotted),\n [stagedPending],\n );\n\n const acceptPending = useCallback(\n (id: string) => {\n const edit = stagedPending.find((candidate) => candidate.id === id);\n if (!edit) return;\n const next = applyJsonEdit(value, edit);\n onPendingChange?.(stagedPending.filter((candidate) => candidate.id !== id));\n if (next !== value) {\n onChange?.(next, edit);\n onActivity?.({ type: \"accept\", edit });\n }\n },\n [stagedPending, value, onPendingChange, onChange, onActivity],\n );\n\n const rejectPending = useCallback(\n (id: string) => {\n const edit = stagedPending.find((candidate) => candidate.id === id);\n onPendingChange?.(stagedPending.filter((candidate) => candidate.id !== id));\n if (edit) onActivity?.({ type: \"reject\", edit });\n },\n [stagedPending, onPendingChange, onActivity],\n );\n\n // ── rows ──────────────────────────────────────────────────────────────\n const items = useMemo(\n () =>\n buildItems({\n value,\n rules,\n conflicts,\n isExpanded,\n addingAt,\n rootLabel,\n }),\n [value, rules, conflicts, isExpanded, addingAt, rootLabel],\n );\n\n const rootIsContainer = isContainerValue(value);\n const rootKind = isJsonArray(value) ? \"array\" : \"object\";\n const attachedIds = new Set(\n items.flatMap((item) => (item.kind === \"node\" ? [item.node.dotted] : [])),\n );\n const orphanPending = stagedPending.filter((edit) => !attachedIds.has(edit.path));\n\n const context = useMemo<JsonEditorContextValue>(\n () => ({\n mode: readOnly ? \"view\" : mode,\n size,\n readOnly,\n allowAdd: allowAdd && !readOnly,\n allowRemove: allowRemove && !readOnly,\n allowRename: allowRename && !readOnly,\n allowReorder: allowReorder && !readOnly,\n pendingMode,\n idPrefix: prefix,\n isExpanded,\n toggleExpanded,\n setValueAt,\n removeAt,\n renameAt,\n moveAt,\n insertInto,\n addingAt,\n setAddingAt,\n pendingFor,\n acceptPending,\n rejectPending,\n }),\n [\n mode,\n size,\n readOnly,\n allowAdd,\n allowRemove,\n allowRename,\n allowReorder,\n pendingMode,\n prefix,\n isExpanded,\n toggleExpanded,\n setValueAt,\n removeAt,\n renameAt,\n moveAt,\n insertInto,\n addingAt,\n pendingFor,\n acceptPending,\n rejectPending,\n ],\n );\n\n return (\n <JsonEditorContext.Provider value={context}>\n <div\n ref={ref}\n // Rest FIRST: a caller's `data-*` / `aria-*` reach the DOM, but nothing\n // they pass can overwrite the marker below or drop the internal classes.\n {...rest}\n data-react-fancy-json-editor=\"\"\n data-issues={String(issues.length)}\n data-keymap-error={parsedKeyMap.ok ? undefined : \"true\"}\n data-mode={readOnly ? \"readonly\" : mode}\n className={cn(\n \"overflow-hidden rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] text-[color:var(--fancy-text,var(--color-zinc-900))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n className,\n )}\n >\n {showIssues && issues.length > 0 && (\n <div data-react-fancy-json-editor-issues=\"\" className=\"p-2\">\n <Callout color={parsedKeyMap.ok ? \"amber\" : \"red\"}>\n <Text size=\"sm\" weight=\"semibold\" className=\"mb-1\">\n {parsedKeyMap.ok\n ? `${issues.length} ${issues.length === 1 ? \"issue\" : \"issues\"}`\n : \"The keyMap could not be used — values are shown untyped.\"}\n </Text>\n <ul className=\"space-y-0.5\">\n {issues.map((issue, index) => (\n <li key={`${issue.kind}-${issue.path}-${index}`}>\n <Text as=\"span\" size=\"xs\" data-react-fancy-json-editor-issue=\"\" data-kind={issue.kind} data-path={issue.path}>\n {issue.path ? `${issue.path} — ` : \"\"}\n {issue.message}\n </Text>\n </li>\n ))}\n </ul>\n </Callout>\n </div>\n )}\n\n <div data-react-fancy-json-editor-tree=\"\" role=\"tree\" aria-label={rest[\"aria-label\"] ?? \"JSON document\"}>\n {items.length === 0 ? (\n <Text as=\"p\" size=\"sm\" color=\"muted\" className=\"px-3 py-4\">\n {emptyLabel}\n </Text>\n ) : (\n items.map((item) =>\n item.kind === \"node\" ? (\n <JsonEditorRow key={`row:${item.node.dotted}`} node={item.node} />\n ) : (\n <JsonEditorAddForm\n key={`add:${item.path}`}\n path={item.path}\n kind={item.containerKind}\n depth={item.depth}\n suggestedType={item.suggestedType}\n />\n ),\n )\n )}\n </div>\n\n {orphanPending.length > 0 && (\n <div data-react-fancy-json-editor-orphan-pending=\"\" className=\"border-t border-zinc-100 p-2 dark:border-zinc-800\">\n {orphanPending.map((edit) => (\n <div key={edit.id} className=\"flex items-center gap-2 py-0.5\">\n <Text as=\"span\" size=\"xs\" color=\"muted\" className=\"min-w-0 flex-1 truncate font-mono\">\n {edit.label ?? describeEdit(edit)}\n </Text>\n <Button\n size=\"xs\"\n color=\"emerald\"\n data-react-fancy-json-editor-accept=\"\"\n data-id={edit.id}\n onClick={() => acceptPending(edit.id)}\n >\n Accept\n </Button>\n <Button\n size=\"xs\"\n variant=\"ghost\"\n data-react-fancy-json-editor-reject=\"\"\n data-id={edit.id}\n onClick={() => rejectPending(edit.id)}\n >\n Reject\n </Button>\n </div>\n ))}\n </div>\n )}\n\n {rootIsContainer && allowAdd && !readOnly && (\n <div className=\"border-t border-zinc-100 p-2 dark:border-zinc-800\">\n <Button\n variant=\"ghost\"\n size=\"xs\"\n icon=\"plus\"\n data-react-fancy-json-editor-add=\"\"\n data-path=\"\"\n onClick={() => setAddingAt(addingAt === \"\" ? null : \"\")}\n >\n {rootKind === \"array\" ? \"Append item\" : \"Add key\"}\n </Button>\n </div>\n )}\n </div>\n </JsonEditorContext.Provider>\n );\n});\n\ninterface BuildItemsOptions {\n value: JsonValue;\n rules: JsonKeyMapEntry[];\n conflicts: JsonEditorIssue[];\n isExpanded: (dotted: string) => boolean;\n addingAt: string | null;\n rootLabel: string;\n}\n\nfunction buildItems({\n value,\n rules,\n conflicts,\n isExpanded,\n addingAt,\n rootLabel,\n}: BuildItemsOptions): RenderItem[] {\n const out: RenderItem[] = [];\n const conflictByPath = new Map<string, JsonEditorIssue>();\n for (const issue of conflicts) {\n if (issue.kind === \"type\" && !conflictByPath.has(issue.path)) conflictByPath.set(issue.path, issue);\n }\n\n const makeNode = (\n segments: JsonPath,\n node: JsonValue,\n depth: number,\n parentKind: JsonEditorNode[\"parentKind\"],\n ): JsonEditorNode => {\n const rule = segments.length > 0 ? resolveKeyRule(rules, segments) : undefined;\n const type = rule?.type ?? inferType(node);\n const dotted = pathToString(segments);\n const conflict = conflictByPath.get(dotted);\n // A `json` node is raw text by definition, and a node in conflict must show\n // what it really holds — neither is a branch to walk into.\n const container = !conflict && type !== \"json\" && isContainerValue(node);\n\n return {\n path: segments,\n dotted,\n key: segments[segments.length - 1] ?? rootLabel,\n depth,\n value: node,\n parentKind,\n rule,\n type,\n declared: rule !== undefined,\n container,\n childCount: isJsonArray(node)\n ? node.length\n : isJsonObject(node)\n ? Object.keys(node).length\n : 0,\n conflict,\n };\n };\n\n const emitChildren = (node: JsonValue, segments: JsonPath, depth: number) => {\n if (isJsonArray(node)) {\n node.forEach((child, index) => emit(child, [...segments, String(index)], depth, \"array\"));\n } else if (isJsonObject(node)) {\n for (const [key, child] of Object.entries(node)) {\n emit(child, [...segments, key], depth, \"object\");\n }\n }\n };\n\n const emit = (\n node: JsonValue,\n segments: JsonPath,\n depth: number,\n parentKind: JsonEditorNode[\"parentKind\"],\n ) => {\n const built = makeNode(segments, node, depth, parentKind);\n out.push({ kind: \"node\", node: built });\n\n if (!built.container || !isExpanded(built.dotted)) return;\n\n emitChildren(node, segments, depth + 1);\n if (addingAt === built.dotted) {\n out.push({\n kind: \"add\",\n path: built.dotted,\n containerKind: isJsonArray(node) ? \"array\" : \"object\",\n depth: depth + 1,\n suggestedType: resolveKeyRule(rules, [...segments, \"*\"])?.type,\n });\n }\n };\n\n if (isContainerValue(value)) {\n emitChildren(value, [], 0);\n if (addingAt === \"\") {\n out.push({\n kind: \"add\",\n path: \"\",\n containerKind: isJsonArray(value) ? \"array\" : \"object\",\n depth: 0,\n suggestedType: resolveKeyRule(rules, [\"*\"])?.type,\n });\n }\n } else {\n out.push({ kind: \"node\", node: makeNode([], value, 0, \"root\") });\n }\n\n return out;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/Select/Select.tsx"],"names":["label","opt"],"mappings":"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","file":"chunk-6GVOW3UL.js","sourcesContent":["import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { isImeComposing } from \"../../../utils/ime\";\nimport { Field } from \"../Field\";\nimport { InputWrapper } from \"../InputWrapper\";\nimport { Portal } from \"../../Portal\";\nimport { useFloatingPosition } from \"../../../hooks/use-floating-position\";\nimport { useOutsideClick } from \"../../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../../hooks/use-escape-key\";\nimport {\n dirtyClasses,\n errorClasses,\n inputBaseClasses,\n inputSizeClasses,\n resolveOption,\n} from \"../inputs.utils\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport type { InputOption, InputOptionGroup } from \"../inputs.types\";\nimport type { SelectProps } from \"./Select.types\";\n\nfunction isOptionGroup(\n item: InputOption | InputOptionGroup,\n): item is InputOptionGroup {\n return typeof item === \"object\" && \"options\" in item;\n}\n\nfunction flattenOptions(list: (InputOption | InputOptionGroup)[]): InputOption[] {\n const flat: InputOption[] = [];\n for (const item of list) {\n if (isOptionGroup(item)) {\n flat.push(...item.options);\n } else {\n flat.push(item);\n }\n }\n return flat;\n}\n\nfunction renderNativeOption(option: InputOption, index: number) {\n const resolved = resolveOption(option);\n return (\n <option\n key={`${resolved.value}-${index}`}\n value={resolved.value as string}\n disabled={resolved.disabled}\n >\n {resolved.label}\n </option>\n );\n}\n\n// ── Native variant ──────────────────────────────────────────────────────\n\nconst NativeSelect = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n list,\n placeholder,\n prefix,\n suffix,\n prefixPosition,\n suffixPosition,\n mode,\n onValueChange,\n onChange,\n value,\n defaultValue,\n ...props\n },\n ref,\n ) => {\n const autoId = useId();\n const selectId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n\n if (!showControl) {\n const current = (value ?? defaultValue) as string | undefined;\n const opt = flattenOptions(list)\n .map((o) => resolveOption(o))\n .find((o) => o.value === current);\n const display = (\n <DisplayValue\n size={size}\n leading={prefix}\n trailing={suffix}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {opt?.label ?? current}\n </DisplayValue>\n );\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {display}\n </Field>\n );\n }\n return display;\n }\n\n // When a placeholder is provided but no value/defaultValue, default to \"\"\n // so the disabled placeholder <option> is the initial selection instead of\n // the browser auto-picking the first real option.\n const isControlled = value !== undefined;\n const resolvedDefault =\n !isControlled && defaultValue === undefined && placeholder ? \"\" : defaultValue;\n\n const select = (\n <InputWrapper\n prefix={prefix}\n suffix={suffix}\n prefixPosition={prefixPosition}\n suffixPosition={suffixPosition}\n size={size}\n >\n <select\n data-react-fancy-select=\"\"\n ref={ref}\n id={selectId}\n disabled={disabled}\n required={required}\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"w-full appearance-none bg-no-repeat bg-[length:16px] bg-[right_8px_center]\",\n \"bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22%236b7280%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M5.23%207.21a.75.75%200%20011.06.02L10%2011.168l3.71-3.938a.75.75%200%20111.08%201.04l-4.25%204.5a.75.75%200%2001-1.08%200l-4.25-4.5a.75.75%200%2001.02-1.06z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E')]\",\n \"pr-8\",\n className,\n )}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n {...props}\n {...(isControlled ? { value } : { defaultValue: resolvedDefault })}\n autoFocus={interactive || props.autoFocus}\n onBlur={(e) => {\n props.onBlur?.(e);\n if (interactive) exitEdit();\n }}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {list.map((item, index) =>\n isOptionGroup(item) ? (\n <optgroup key={`group-${index}`} label={item.label}>\n {item.options.map((opt, optIndex) =>\n renderNativeOption(opt, optIndex),\n )}\n </optgroup>\n ) : (\n renderNativeOption(item, index)\n ),\n )}\n </select>\n </InputWrapper>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {select}\n </Field>\n );\n }\n\n return select;\n },\n);\n\nNativeSelect.displayName = \"NativeSelect\";\n\n// ── Listbox variant ─────────────────────────────────────────────────────\n\nconst ListboxSelect = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n list,\n placeholder = \"Select...\",\n multiple = false,\n values: controlledValues,\n defaultValues,\n onValueChange,\n onValuesChange,\n searchable = false,\n creatable = false,\n onCreate,\n createLabel = \"Create\",\n selectedSuffix = \"selected\",\n indicator = \"check\",\n mode,\n value: controlledSingleValue,\n defaultValue: defaultSingleValue,\n },\n _ref,\n ) => {\n const autoId = useId();\n const selectId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n\n // Creatable implies a text input, which is also the search input.\n const textInputEnabled = searchable || creatable;\n\n // ── State ──────────────────────────────────────────────\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(-1);\n const [createdOptions, setCreatedOptions] = useState<InputOption[]>([]);\n\n // Single-select state\n const [singleValue, setSingleValue] = useState<string>(\n (controlledSingleValue as string) ?? (defaultSingleValue as string) ?? \"\",\n );\n const currentSingle = (controlledSingleValue as string) ?? singleValue;\n\n // Multi-select state\n const [multiValues, setMultiValues] = useState<string[]>(\n controlledValues ?? defaultValues ?? [],\n );\n const currentMulti = controlledValues ?? multiValues;\n\n // Sync controlled values\n useEffect(() => {\n if (controlledValues) setMultiValues(controlledValues);\n }, [controlledValues]);\n useEffect(() => {\n if (controlledSingleValue !== undefined) setSingleValue(controlledSingleValue as string);\n }, [controlledSingleValue]);\n\n // ── Refs ───────────────────────────────────────────────\n const anchorRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n\n const position = useFloatingPosition(anchorRef, listRef, {\n placement: \"bottom-start\",\n offset: 4,\n enabled: open,\n });\n\n const close = useCallback(() => {\n setOpen(false);\n setSearch(\"\");\n setActiveIndex(-1);\n }, []);\n\n // Outside-click guards the dropdown (in a Portal) against its own clicks,\n // with the trigger button ignored since it toggles open/closed itself.\n useOutsideClick(listRef, close, open, anchorRef);\n useEscapeKey(close, open);\n\n // Focus text input on open\n useEffect(() => {\n if (open && textInputEnabled) {\n requestAnimationFrame(() => searchRef.current?.focus());\n }\n }, [open, textInputEnabled]);\n\n // ── Options ────────────────────────────────────────────\n const resolvedOptions = useMemo(() => {\n const base = flattenOptions(list).map(resolveOption);\n const created = createdOptions.map(resolveOption);\n return [...base, ...created];\n }, [list, createdOptions]);\n\n const filtered = search\n ? resolvedOptions.filter((o) =>\n o.label.toLowerCase().includes(search.toLowerCase()),\n )\n : resolvedOptions;\n\n // Exact-match check to decide whether to show the \"Create X\" row\n const canCreate =\n creatable &&\n search.trim().length > 0 &&\n !resolvedOptions.some(\n (o) =>\n o.label.toLowerCase() === search.trim().toLowerCase() ||\n o.value === search.trim(),\n );\n\n // ── Selection ──────────────────────────────────────────\n const isSelected = (value: string): boolean => {\n if (multiple) return currentMulti.includes(value);\n return currentSingle === value;\n };\n\n const toggleOption = useCallback(\n (value: string) => {\n if (multiple) {\n const next = currentMulti.includes(value)\n ? currentMulti.filter((v) => v !== value)\n : [...currentMulti, value];\n setMultiValues(next);\n onValuesChange?.(next);\n } else {\n setSingleValue(value);\n onValueChange?.(value);\n close();\n }\n },\n [multiple, currentMulti, onValuesChange, onValueChange, close],\n );\n\n const handleCreate = useCallback(() => {\n const label = search.trim();\n if (!label) return;\n const value = label;\n const newOption: InputOption = { value, label };\n setCreatedOptions((prev) => [...prev, newOption]);\n onCreate?.(label);\n setSearch(\"\");\n if (multiple) {\n const next = [...currentMulti, value];\n setMultiValues(next);\n onValuesChange?.(next);\n // Keep dropdown open for multi-select; refocus input\n requestAnimationFrame(() => searchRef.current?.focus());\n } else {\n setSingleValue(value);\n onValueChange?.(value);\n close();\n }\n }, [search, multiple, currentMulti, onCreate, onValuesChange, onValueChange, close]);\n\n // ── Display text ───────────────────────────────────────\n const getDisplayText = (): string => {\n if (multiple) {\n if (currentMulti.length === 0) return placeholder;\n if (currentMulti.length === 1) {\n const opt = resolvedOptions.find((o) => o.value === currentMulti[0]);\n return opt?.label ?? currentMulti[0];\n }\n return `${currentMulti.length} ${selectedSuffix}`;\n }\n if (!currentSingle) return placeholder;\n const opt = resolvedOptions.find((o) => o.value === currentSingle);\n return opt?.label ?? currentSingle;\n };\n\n const hasValue = multiple ? currentMulti.length > 0 : !!currentSingle;\n\n // ── Keyboard ───────────────────────────────────────────\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((i) => Math.min(i + 1, filtered.length - 1));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((i) => Math.max(i - 1, 0));\n } else if (e.key === \"Enter\") {\n // Confirming an IME composition in the search box is not a pick.\n if (isImeComposing(e)) return;\n if (activeIndex >= 0) {\n e.preventDefault();\n const item = filtered[activeIndex];\n if (item && !item.disabled) toggleOption(item.value as string);\n } else if (canCreate) {\n e.preventDefault();\n handleCreate();\n }\n }\n };\n\n // ── View mode ──────────────────────────────────────────\n if (!showControl) {\n const labels = multiple\n ? currentMulti.map(\n (v) => resolvedOptions.find((o) => o.value === v)?.label ?? v,\n )\n : currentSingle\n ? [resolvedOptions.find((o) => o.value === currentSingle)?.label ?? currentSingle]\n : [];\n const display = (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {labels.join(\", \")}\n </DisplayValue>\n );\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {display}\n </Field>\n );\n }\n return display;\n }\n\n // ── Render ─────────────────────────────────────────────\n const trigger = (\n <button\n ref={anchorRef}\n type=\"button\"\n id={selectId}\n disabled={disabled}\n autoFocus={interactive}\n onClick={() => setOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n data-react-fancy-select=\"\"\n data-variant=\"listbox\"\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"flex w-full cursor-pointer items-center justify-between gap-2 text-left\",\n !hasValue && \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n className,\n )}\n >\n <span className=\"truncate\">{getDisplayText()}</span>\n <svg\n className={cn(\"h-4 w-4 shrink-0 text-zinc-400 transition-transform\", open && \"rotate-180\")}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n );\n\n const dropdown = open && (\n <Portal>\n <div\n ref={listRef}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n className=\"fixed z-50 max-h-60 min-w-[8rem] overflow-y-auto rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:shadow-zinc-950/50 fancy-scale-in\"\n style={{\n left: position.x,\n top: position.y,\n width: anchorRef.current?.offsetWidth,\n }}\n >\n {textInputEnabled && (\n <div className=\"px-2 pb-1 pt-1\">\n <input\n ref={searchRef}\n type=\"text\"\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setActiveIndex(-1);\n }}\n onKeyDown={handleKeyDown}\n placeholder={creatable && !searchable ? \"Type to add…\" : \"Search…\"}\n className=\"w-full rounded-md border-0 bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] px-2.5 py-1.5 text-sm text-[color:var(--fancy-text,var(--color-zinc-900))] placeholder:text-[color:var(--fancy-text-faint,var(--color-zinc-400))] outline-none dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))] dark:placeholder:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\"\n />\n </div>\n )}\n\n {canCreate && (\n <button\n type=\"button\"\n onClick={handleCreate}\n className=\"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10\"\n >\n <svg className=\"h-4 w-4 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M10 3a.75.75 0 01.75.75v5.5h5.5a.75.75 0 010 1.5h-5.5v5.5a.75.75 0 01-1.5 0v-5.5h-5.5a.75.75 0 010-1.5h5.5v-5.5A.75.75 0 0110 3z\" clipRule=\"evenodd\" />\n </svg>\n <span className=\"truncate\">{createLabel} "{search.trim()}"</span>\n </button>\n )}\n\n {filtered.length === 0 && !canCreate ? (\n <div className=\"px-3 py-2 text-sm text-zinc-400\">No results found</div>\n ) : filtered.length === 0 ? null : (\n filtered.map((option, i) => {\n const selected = isSelected(option.value as string);\n return (\n <button\n key={option.value as string}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n disabled={option.disabled}\n onClick={() => toggleOption(option.value as string)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors\",\n i === activeIndex\n ? \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n : \"hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))]\",\n selected\n ? \"text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\"\n : \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n option.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {/* Indicator */}\n {indicator === \"checkbox\" ? (\n <span\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded border transition-colors\",\n selected\n ? \"border-blue-500 bg-blue-500 text-white dark:border-blue-400 dark:bg-blue-400\"\n : \"border-zinc-300 dark:border-zinc-600\",\n )}\n >\n {selected && (\n <svg className=\"h-3 w-3\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2.5 6 5 8.5 9.5 3.5\" />\n </svg>\n )}\n </span>\n ) : (\n <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">\n {selected && (\n <svg className=\"h-4 w-4 text-blue-500 dark:text-blue-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </span>\n )}\n\n {/* Label + description */}\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{option.label}</span>\n {option.description && (\n <span className=\"block truncate text-xs text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">{option.description}</span>\n )}\n </span>\n </button>\n );\n })\n )}\n </div>\n </Portal>\n );\n\n const content = (\n <div\n className=\"relative\"\n onBlur={(e) => {\n // The popover is portaled (focus moves out of this wrapper), so only\n // exit edit when the dropdown is closed and focus has truly left.\n if (interactive && !open && !e.currentTarget.contains(e.relatedTarget as Node)) {\n exitEdit();\n }\n }}\n >\n {trigger}\n {dropdown}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n },\n);\n\nListboxSelect.displayName = \"ListboxSelect\";\n\n// ── Public component ────────────────────────────────────────────────────\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (props, ref) => {\n const variant = props.variant ?? (props.multiple ? \"listbox\" : \"native\");\n\n if (variant === \"listbox\") {\n return <ListboxSelect {...props} ref={ref} />;\n }\n return <NativeSelect {...props} ref={ref} />;\n },\n);\n\nSelect.displayName = \"Select\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/QrCode/qr-tables.ts","../src/components/QrCode/qr-encode.ts","../src/components/QrCode/QrCode.tsx"],"names":["dataCodewords","forwardRef","useMemo","jsxs","cn","jsx"],"mappings":"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","file":"chunk-AE53RKWR.cjs","sourcesContent":["/**\n * ISO/IEC 18004 table data for the QR encoder. **Data, not logic** — kept in\n * its own module so the algorithm beside it can be read without scrolling past\n * 160 rows, and so a correction here is a diff that cannot touch behaviour.\n *\n * There is no formula for these: the block structure per version and error\n * correction level is a table in the standard. They were taken from the\n * published error-correction table at\n * <https://www.thonky.com/qr-code-tutorial/error-correction-table> rather than\n * recalled, and every row is checked by `qr-code.test.tsx` against three\n * equations that must all hold simultaneously:\n *\n * 1. `dataCodewords === g1Blocks * g1Size + g2Blocks * g2Size`\n * 2. `totalCodewords === dataCodewords + ecPerBlock * (g1Blocks + g2Blocks)`\n * 3. `totalCodewords === rawDataModules(version) / 8`, where\n * `rawDataModules` is counted from the matrix THIS code builds.\n *\n * The third is the one worth having: it ties a transcribed table to an\n * independently constructed matrix, so a mistyped row, a wrong alignment\n * pattern position and a wrong function-pattern layout cannot all agree.\n */\n\n/** Error correction level. Higher levels survive more damage and hold less. */\nexport type QrErrorCorrection = 'L' | 'M' | 'Q' | 'H';\n\nexport const EC_LEVELS: readonly QrErrorCorrection[] = ['L', 'M', 'Q', 'H'];\n\n/** The 2-bit indicator each level carries in the format information. */\nexport const EC_FORMAT_BITS: Record<QrErrorCorrection, number> = {\n L: 0b01,\n M: 0b00,\n Q: 0b11,\n H: 0b10,\n};\n\nexport interface BlockLayout {\n /** Data codewords in the whole symbol. */\n dataCodewords: number;\n /** Error correction codewords per block — the same for every block. */\n ecPerBlock: number;\n /** Blocks in group 1, and how many data codewords each holds. */\n g1Blocks: number;\n g1Size: number;\n /** Blocks in group 2 (always `g1Size + 1` each when present). */\n g2Blocks: number;\n g2Size: number;\n}\n\n/**\n * `[dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size]` indexed by\n * `[version - 1]` then by EC level, in `L, M, Q, H` order.\n */\nconst BLOCK_TABLE: readonly (readonly [number, number, number, number, number, number])[][] = [\n // v1\n [[19, 7, 1, 19, 0, 0], [16, 10, 1, 16, 0, 0], [13, 13, 1, 13, 0, 0], [9, 17, 1, 9, 0, 0]],\n [[34, 10, 1, 34, 0, 0], [28, 16, 1, 28, 0, 0], [22, 22, 1, 22, 0, 0], [16, 28, 1, 16, 0, 0]],\n [[55, 15, 1, 55, 0, 0], [44, 26, 1, 44, 0, 0], [34, 18, 2, 17, 0, 0], [26, 22, 2, 13, 0, 0]],\n [[80, 20, 1, 80, 0, 0], [64, 18, 2, 32, 0, 0], [48, 26, 2, 24, 0, 0], [36, 16, 4, 9, 0, 0]],\n [[108, 26, 1, 108, 0, 0], [86, 24, 2, 43, 0, 0], [62, 18, 2, 15, 2, 16], [46, 22, 2, 11, 2, 12]],\n [[136, 18, 2, 68, 0, 0], [108, 16, 4, 27, 0, 0], [76, 24, 4, 19, 0, 0], [60, 28, 4, 15, 0, 0]],\n [[156, 20, 2, 78, 0, 0], [124, 18, 4, 31, 0, 0], [88, 18, 2, 14, 4, 15], [66, 26, 4, 13, 1, 14]],\n [[194, 24, 2, 97, 0, 0], [154, 22, 2, 38, 2, 39], [110, 22, 4, 18, 2, 19], [86, 26, 4, 14, 2, 15]],\n [[232, 30, 2, 116, 0, 0], [182, 22, 3, 36, 2, 37], [132, 20, 4, 16, 4, 17], [100, 24, 4, 12, 4, 13]],\n // v10\n [[274, 18, 2, 68, 2, 69], [216, 26, 4, 43, 1, 44], [154, 24, 6, 19, 2, 20], [122, 28, 6, 15, 2, 16]],\n [[324, 20, 4, 81, 0, 0], [254, 30, 1, 50, 4, 51], [180, 28, 4, 22, 4, 23], [140, 24, 3, 12, 8, 13]],\n [[370, 24, 2, 92, 2, 93], [290, 22, 6, 36, 2, 37], [206, 26, 4, 20, 6, 21], [158, 28, 7, 14, 4, 15]],\n [[428, 26, 4, 107, 0, 0], [334, 22, 8, 37, 1, 38], [244, 24, 8, 20, 4, 21], [180, 22, 12, 11, 4, 12]],\n [[461, 30, 3, 115, 1, 116], [365, 24, 4, 40, 5, 41], [261, 20, 11, 16, 5, 17], [197, 24, 11, 12, 5, 13]],\n [[523, 22, 5, 87, 1, 88], [415, 24, 5, 41, 5, 42], [295, 30, 5, 24, 7, 25], [223, 24, 11, 12, 7, 13]],\n [[589, 24, 5, 98, 1, 99], [453, 28, 7, 45, 3, 46], [325, 24, 15, 19, 2, 20], [253, 30, 3, 15, 13, 16]],\n [[647, 28, 1, 107, 5, 108], [507, 28, 10, 46, 1, 47], [367, 28, 1, 22, 15, 23], [283, 28, 2, 14, 17, 15]],\n [[721, 30, 5, 120, 1, 121], [563, 26, 9, 43, 4, 44], [397, 28, 17, 22, 1, 23], [313, 28, 2, 14, 19, 15]],\n [[795, 28, 3, 113, 4, 114], [627, 26, 3, 44, 11, 45], [445, 26, 17, 21, 4, 22], [341, 26, 9, 13, 16, 14]],\n // v20\n [[861, 28, 3, 107, 5, 108], [669, 26, 3, 41, 13, 42], [485, 30, 15, 24, 5, 25], [385, 28, 15, 15, 10, 16]],\n [[932, 28, 4, 116, 4, 117], [714, 26, 17, 42, 0, 0], [512, 28, 17, 22, 6, 23], [406, 30, 19, 16, 6, 17]],\n [[1006, 28, 2, 111, 7, 112], [782, 28, 17, 46, 0, 0], [568, 30, 7, 24, 16, 25], [442, 24, 34, 13, 0, 0]],\n [[1094, 30, 4, 121, 5, 122], [860, 28, 4, 47, 14, 48], [614, 30, 11, 24, 14, 25], [464, 30, 16, 15, 14, 16]],\n [[1174, 30, 6, 117, 4, 118], [914, 28, 6, 45, 14, 46], [664, 30, 11, 24, 16, 25], [514, 30, 30, 16, 2, 17]],\n [[1276, 26, 8, 106, 4, 107], [1000, 28, 8, 47, 13, 48], [718, 30, 7, 24, 22, 25], [538, 30, 22, 15, 13, 16]],\n [[1370, 28, 10, 114, 2, 115], [1062, 28, 19, 46, 4, 47], [754, 28, 28, 22, 6, 23], [596, 30, 33, 16, 4, 17]],\n [[1468, 30, 8, 122, 4, 123], [1128, 28, 22, 45, 3, 46], [808, 30, 8, 23, 26, 24], [628, 30, 12, 15, 28, 16]],\n [[1531, 30, 3, 117, 10, 118], [1193, 28, 3, 45, 23, 46], [871, 30, 4, 24, 31, 25], [661, 30, 11, 15, 31, 16]],\n [[1631, 30, 7, 116, 7, 117], [1267, 28, 21, 45, 7, 46], [911, 30, 1, 23, 37, 24], [701, 30, 19, 15, 26, 16]],\n // v30\n [[1735, 30, 5, 115, 10, 116], [1373, 28, 19, 47, 10, 48], [985, 30, 15, 24, 25, 25], [745, 30, 23, 15, 25, 16]],\n [[1843, 30, 13, 115, 3, 116], [1455, 28, 2, 46, 29, 47], [1033, 30, 42, 24, 1, 25], [793, 30, 23, 15, 28, 16]],\n [[1955, 30, 17, 115, 0, 0], [1541, 28, 10, 46, 23, 47], [1115, 30, 10, 24, 35, 25], [845, 30, 19, 15, 35, 16]],\n [[2071, 30, 17, 115, 1, 116], [1631, 28, 14, 46, 21, 47], [1171, 30, 29, 24, 19, 25], [901, 30, 11, 15, 46, 16]],\n [[2191, 30, 13, 115, 6, 116], [1725, 28, 14, 46, 23, 47], [1231, 30, 44, 24, 7, 25], [961, 30, 59, 16, 1, 17]],\n [[2306, 30, 12, 121, 7, 122], [1812, 28, 12, 47, 26, 48], [1286, 30, 39, 24, 14, 25], [986, 30, 22, 15, 41, 16]],\n [[2434, 30, 6, 121, 14, 122], [1914, 28, 6, 47, 34, 48], [1354, 30, 46, 24, 10, 25], [1054, 30, 2, 15, 64, 16]],\n [[2566, 30, 17, 122, 4, 123], [1992, 28, 29, 46, 14, 47], [1426, 30, 49, 24, 10, 25], [1096, 30, 24, 15, 46, 16]],\n [[2702, 30, 4, 122, 18, 123], [2102, 28, 13, 46, 32, 47], [1502, 30, 48, 24, 14, 25], [1142, 30, 42, 15, 32, 16]],\n [[2812, 30, 20, 117, 4, 118], [2216, 28, 40, 47, 7, 48], [1582, 30, 43, 24, 22, 25], [1222, 30, 10, 15, 67, 16]],\n // v40\n [[2956, 30, 19, 118, 6, 119], [2334, 28, 18, 47, 31, 48], [1666, 30, 34, 24, 34, 25], [1276, 30, 20, 15, 61, 16]],\n];\n\nexport const MIN_VERSION = 1;\nexport const MAX_VERSION = 40;\n\n/** Block structure for a version and error correction level. */\nexport function blockLayout(version: number, ec: QrErrorCorrection): BlockLayout {\n const row = BLOCK_TABLE[version - 1]?.[EC_LEVELS.indexOf(ec)];\n if (!row) {\n throw new RangeError(`No block layout for version ${version} level ${ec}`);\n }\n const [dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size] = row;\n return { dataCodewords, ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size };\n}\n\n/**\n * The 15-bit format information for a level and mask, as published.\n *\n * These are a BCH(15,5) code XOR'd with a fixed mask, so they could be\n * computed — and the first draft did compute them. They are listed instead\n * because the computation and its verification would then share one\n * implementation: a wrong generator polynomial would produce a wrong table and\n * a test that agreed with it. A transcribed table cannot agree with a bug.\n *\n * Source: <https://www.thonky.com/qr-code-tutorial/format-version-tables>.\n * Indexed `[level][mask]`.\n */\nexport const FORMAT_BITS: Record<QrErrorCorrection, readonly number[]> = {\n L: [\n 0b111011111000100, 0b111001011110011, 0b111110110101010, 0b111100010011101,\n 0b110011000101111, 0b110001100011000, 0b110110001000001, 0b110100101110110,\n ],\n M: [\n 0b101010000010010, 0b101000100100101, 0b101111001111100, 0b101101101001011,\n 0b100010111111001, 0b100000011001110, 0b100111110010111, 0b100101010100000,\n ],\n Q: [\n 0b011010101011111, 0b011000001101000, 0b011111100110001, 0b011101000000110,\n 0b010010010110100, 0b010000110000011, 0b010111011011010, 0b010101111101101,\n ],\n H: [\n 0b001011010001001, 0b001001110111110, 0b001110011100111, 0b001100111010000,\n 0b000011101100010, 0b000001001010101, 0b000110100001100, 0b000100000111011,\n ],\n};\n\n/**\n * The 18-bit version information, present only for versions 7 and up.\n *\n * A BCH(18,6) code. Computed rather than tabled — 34 rows of 18 bits is more\n * transcription risk than the arithmetic is, and unlike the format bits there\n * are published values for versions 7, 8, 9, 10 and 40 to check it against,\n * which the test does.\n */\nexport function versionBits(version: number): number {\n let remainder = version;\n for (let i = 0; i < 12; i += 1) {\n remainder = (remainder << 1) ^ ((remainder >>> 11) * 0b1111100100101);\n }\n return ((version << 12) | remainder) >>> 0;\n}\n\n/**\n * Centre coordinates of the alignment patterns for a version.\n *\n * Derived rather than tabled, and the derivation is checked by the codeword\n * count equation in the test: a wrong position changes how many modules are\n * free for data, so the count would not match the block table.\n *\n * Version 32 is a genuine special case in the standard — its spacing does not\n * follow the rule the other versions do.\n */\nexport function alignmentPositions(version: number): number[] {\n if (version === 1) {\n return [];\n }\n const count = Math.floor(version / 7) + 2;\n const size = version * 4 + 17;\n const step = version === 32 ? 26 : Math.ceil((size - 13) / (count * 2 - 2)) * 2;\n\n const positions = [6];\n for (let pos = size - 7; positions.length < count; pos -= step) {\n positions.unshift(pos);\n }\n return positions.sort((a, b) => a - b);\n}\n","/**\n * A QR encoder, dependency-free.\n *\n * ISO/IEC 18004, versions 1–40, error correction L/M/Q/H, with numeric,\n * alphanumeric and byte modes and automatic selection between them. No\n * Kanji mode and no structured append — neither has a caller here, and an\n * untested branch in an encoder is worse than an absent one because the\n * failure is a code a phone silently refuses to read.\n *\n * Table data and its provenance live in `./qr-tables`.\n */\nimport {\n EC_FORMAT_BITS,\n FORMAT_BITS,\n MAX_VERSION,\n MIN_VERSION,\n alignmentPositions,\n blockLayout,\n versionBits,\n type QrErrorCorrection,\n} from './qr-tables';\n\nexport type { QrErrorCorrection };\n\n/** Which encoding mode a value is carried in. */\nexport type QrMode = 'numeric' | 'alphanumeric' | 'byte';\n\nconst MODE_INDICATOR: Record<QrMode, number> = { numeric: 0b0001, alphanumeric: 0b0010, byte: 0b0100 };\n\n/** The character set alphanumeric mode can carry, in its own index order. */\nconst ALPHANUMERIC = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\n\nexport interface QrSymbol {\n /** `size * size` modules, row-major. `true` is dark. */\n modules: boolean[][];\n /** Modules per side, `version * 4 + 17`. */\n size: number;\n version: number;\n errorCorrection: QrErrorCorrection;\n mode: QrMode;\n /** The mask pattern chosen by penalty scoring, 0–7. */\n mask: number;\n}\n\n// --- Galois field GF(256) --------------------------------------------------\n// Reed-Solomon over the field the standard specifies: primitive polynomial\n// x^8 + x^4 + x^3 + x^2 + 1 (0x11d), generator 2.\n\nconst EXP = new Uint8Array(256);\nconst LOG = new Uint8Array(256);\n{\n let x = 1;\n for (let i = 0; i < 255; i += 1) {\n EXP[i] = x;\n LOG[x] = i;\n x <<= 1;\n if (x & 0x100) {\n x ^= 0x11d;\n }\n }\n EXP[255] = EXP[0] as number;\n}\n\nfunction gfMul(a: number, b: number): number {\n if (a === 0 || b === 0) {\n return 0;\n }\n return EXP[((LOG[a] as number) + (LOG[b] as number)) % 255] as number;\n}\n\n/** The generator polynomial for `degree` error correction codewords. */\nfunction generatorPoly(degree: number): number[] {\n let poly = [1];\n for (let i = 0; i < degree; i += 1) {\n const next = new Array<number>(poly.length + 1).fill(0);\n for (let j = 0; j < poly.length; j += 1) {\n next[j] = (next[j] as number) ^ (poly[j] as number);\n next[j + 1] = (next[j + 1] as number) ^ gfMul(poly[j] as number, EXP[i] as number);\n }\n poly = next;\n }\n return poly;\n}\n\n/** Reed-Solomon remainder — the error correction codewords for one block. */\nfunction reedSolomon(data: readonly number[], degree: number): number[] {\n const generator = generatorPoly(degree);\n const remainder = new Array<number>(degree).fill(0);\n for (const byte of data) {\n const factor = byte ^ (remainder.shift() as number);\n remainder.push(0);\n for (let i = 0; i < degree; i += 1) {\n remainder[i] = (remainder[i] as number) ^ gfMul(generator[i + 1] as number, factor);\n }\n }\n return remainder;\n}\n\n// --- Mode selection and bit encoding ---------------------------------------\n\n/**\n * The narrowest mode that can carry `value`.\n *\n * Narrower is denser: numeric packs 3 digits into 10 bits where byte mode\n * would spend 24. A six-digit pairing PIN is a third of the size as numeric,\n * which is the difference between a code a phone reads across a desk and one\n * it does not.\n */\nexport function selectMode(value: string): QrMode {\n if (/^[0-9]*$/.test(value)) {\n return 'numeric';\n }\n if ([...value].every((char) => ALPHANUMERIC.includes(char))) {\n return 'alphanumeric';\n }\n return 'byte';\n}\n\n/** Bits in the character count indicator — it widens with version. */\nfunction countBits(mode: QrMode, version: number): number {\n const tier = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n if (mode === 'numeric') {\n return [10, 12, 14][tier] as number;\n }\n if (mode === 'alphanumeric') {\n return [9, 11, 13][tier] as number;\n }\n return [8, 16, 16][tier] as number;\n}\n\nclass BitBuffer {\n readonly bits: number[] = [];\n\n push(value: number, length: number): void {\n for (let i = length - 1; i >= 0; i -= 1) {\n this.bits.push((value >>> i) & 1);\n }\n }\n}\n\n/** UTF-8 bytes for a string, without TextEncoder — jsdom and SSR both agree. */\nfunction utf8Bytes(value: string): number[] {\n const out: number[] = [];\n for (const char of value) {\n const code = char.codePointAt(0) as number;\n if (code < 0x80) {\n out.push(code);\n } else if (code < 0x800) {\n out.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n out.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));\n } else {\n out.push(\n 0xf0 | (code >> 18),\n 0x80 | ((code >> 12) & 0x3f),\n 0x80 | ((code >> 6) & 0x3f),\n 0x80 | (code & 0x3f),\n );\n }\n }\n return out;\n}\n\n/** The payload's own bits, before terminator and padding. */\nfunction encodePayload(value: string, mode: QrMode, version: number): BitBuffer {\n const buffer = new BitBuffer();\n buffer.push(MODE_INDICATOR[mode], 4);\n\n if (mode === 'numeric') {\n buffer.push(value.length, countBits(mode, version));\n for (let i = 0; i < value.length; i += 3) {\n const group = value.slice(i, i + 3);\n buffer.push(Number.parseInt(group, 10), group.length * 3 + 1);\n }\n return buffer;\n }\n\n if (mode === 'alphanumeric') {\n buffer.push(value.length, countBits(mode, version));\n for (let i = 0; i < value.length; i += 2) {\n const first = ALPHANUMERIC.indexOf(value[i] as string);\n if (i + 1 < value.length) {\n buffer.push(first * 45 + ALPHANUMERIC.indexOf(value[i + 1] as string), 11);\n } else {\n buffer.push(first, 6);\n }\n }\n return buffer;\n }\n\n const bytes = utf8Bytes(value);\n buffer.push(bytes.length, countBits(mode, version));\n for (const byte of bytes) {\n buffer.push(byte, 8);\n }\n return buffer;\n}\n\n/** How many bits the payload needs at a given version, mode included. */\nfunction payloadBits(value: string, mode: QrMode, version: number): number {\n return encodePayload(value, mode, version).bits.length;\n}\n\n/**\n * The most characters any mode can carry, at version 40 level L.\n *\n * DERIVED from the block table rather than transcribed, so it cannot disagree\n * with the capacities the encoder actually enforces. (The published figures\n * are 7089 / 4296 / 2953, and the test asserts these match them.)\n */\nexport function maxCharacters(mode: QrMode): number {\n const bits = blockLayout(MAX_VERSION, 'L').dataCodewords * 8 - 4 - countBits(mode, MAX_VERSION);\n if (mode === 'numeric') {\n return Math.floor((bits * 3) / 10);\n }\n if (mode === 'alphanumeric') {\n return Math.floor((bits * 2) / 11);\n }\n return Math.floor(bits / 8);\n}\n\n/** The largest capacity of any mode — the cheapest possible rejection. */\nconst ABSOLUTE_MAX_CHARACTERS = maxCharacters('numeric');\n\n/**\n * Reject an impossible value in O(1), before anything walks it.\n *\n * `value` is text this code did not author, and it reaches consumers two ways:\n * the package, and as VENDORED SOURCE via `fancy-cli add qr-code` — which\n * carries no manifest, so nothing watches it. So the question is what a hostile\n * caller gets out of it, and the answer used to be: a lot of work for free.\n *\n * `selectVersion` walks versions 1-40 and re-encoded the payload at each one,\n * so a value too long to fit was encoded FORTY times before being refused.\n * Measured on the built bundle: 342 ms for 100 kB, 2.0 s for 500 kB, linear —\n * so a few megabytes through `<QrCode value={userInput} />` blocks the main\n * thread for tens of seconds. The refusal was always correct; it was the COST\n * of the refusal that was the defect.\n *\n * A character count can only ever be <= the byte count, so a string longer than\n * the largest capacity cannot fit in any mode and is refused from `.length`\n * alone, touching none of it.\n */\nfunction tooLongToFit(value: string, mode: QrMode | null): boolean {\n if (value.length > ABSOLUTE_MAX_CHARACTERS) {\n return true;\n }\n return mode !== null && value.length > maxCharacters(mode);\n}\n\n/** The smallest version that fits, or `null` when nothing does. */\nfunction selectVersion(\n value: string,\n mode: QrMode,\n ec: QrErrorCorrection,\n minVersion: number,\n): number | null {\n // The payload's bit length depends on the version ONLY through the width of\n // the character-count indicator, which has three tiers. So it is computed at\n // most three times rather than once per version — which also makes the\n // legitimate path cheaper for a large value, not just the hostile one.\n const bitsForTier = new Map<number, number>();\n for (let version = Math.max(minVersion, MIN_VERSION); version <= MAX_VERSION; version += 1) {\n const width = countBits(mode, version);\n let bits = bitsForTier.get(width);\n if (bits === undefined) {\n bits = payloadBits(value, mode, version);\n bitsForTier.set(width, bits);\n }\n if (bits <= blockLayout(version, ec).dataCodewords * 8) {\n return version;\n }\n }\n return null;\n}\n\n/**\n * Data codewords: payload, terminator, pad to a byte, then alternating pad\n * bytes. Exported for the golden-vector test, which asserts these against the\n * standard's published worked example.\n */\nexport function dataCodewords(value: string, mode: QrMode, version: number, ec: QrErrorCorrection): number[] {\n const capacity = blockLayout(version, ec).dataCodewords * 8;\n const buffer = encodePayload(value, mode, version);\n\n // Terminator: up to four zero bits, truncated if capacity runs out.\n buffer.push(0, Math.min(4, capacity - buffer.bits.length));\n // Then to a byte boundary.\n buffer.push(0, (8 - (buffer.bits.length % 8)) % 8);\n\n const codewords: number[] = [];\n for (let i = 0; i < buffer.bits.length; i += 8) {\n let byte = 0;\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (buffer.bits[i + bit] as number);\n }\n codewords.push(byte);\n }\n\n // Pad bytes 0b11101100 / 0b00010001, alternating, as the standard specifies.\n const target = capacity / 8;\n for (let i = 0; codewords.length < target; i += 1) {\n codewords.push(i % 2 === 0 ? 0xec : 0x11);\n }\n return codewords;\n}\n\n/**\n * Split into blocks, compute error correction, and interleave.\n *\n * Interleaving is what makes the error correction work as advertised: a blot\n * on the printed symbol damages a contiguous run of modules, and interleaving\n * spreads that run across every block so no single block exceeds its own\n * correction budget. Concatenating instead would produce a scannable code that\n * fails far sooner than its level claims — passing a round-trip test and\n * failing on paper.\n */\nexport function interleave(codewords: readonly number[], version: number, ec: QrErrorCorrection): number[] {\n const { ecPerBlock, g1Blocks, g1Size, g2Blocks, g2Size } = blockLayout(version, ec);\n\n const dataBlocks: number[][] = [];\n let offset = 0;\n for (let i = 0; i < g1Blocks; i += 1) {\n dataBlocks.push(codewords.slice(offset, offset + g1Size));\n offset += g1Size;\n }\n for (let i = 0; i < g2Blocks; i += 1) {\n dataBlocks.push(codewords.slice(offset, offset + g2Size));\n offset += g2Size;\n }\n\n const ecBlocks = dataBlocks.map((block) => reedSolomon(block, ecPerBlock));\n\n const result: number[] = [];\n const widest = Math.max(g1Size, g2Blocks > 0 ? g2Size : 0);\n for (let i = 0; i < widest; i += 1) {\n for (const block of dataBlocks) {\n if (i < block.length) {\n result.push(block[i] as number);\n }\n }\n }\n for (let i = 0; i < ecPerBlock; i += 1) {\n for (const block of ecBlocks) {\n result.push(block[i] as number);\n }\n }\n return result;\n}\n\n// --- Matrix construction ---------------------------------------------------\n\nexport type Grid = (boolean | null)[][];\n\n/**\n * A grid with every function pattern placed and data positions left `null`.\n *\n * Exported for verification. The round-trip decoder in the test needs to know\n * which modules carry data, and reconstructing that knowledge separately would\n * duplicate the layout and share its bugs. Using the same template is safe\n * here because the table-consistency check anchors it to an independent fact:\n * the number of free modules must equal the codeword count in the transcribed\n * block table, so a wrong finder, timing or alignment layout fails there.\n */\nexport function reservedModules(version: number): Grid {\n const size = version * 4 + 17;\n const grid: Grid = Array.from({ length: size }, () => new Array<boolean | null>(size).fill(null));\n\n const set = (row: number, col: number, dark: boolean): void => {\n (grid[row] as (boolean | null)[])[col] = dark;\n };\n\n // Three finder patterns with their separators.\n for (const [baseRow, baseCol] of [\n [0, 0],\n [0, size - 7],\n [size - 7, 0],\n ] as const) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const r = baseRow + row;\n const c = baseCol + col;\n if (r < 0 || r >= size || c < 0 || c >= size) {\n continue;\n }\n const ring = Math.max(Math.abs(row - 3), Math.abs(col - 3));\n set(r, c, ring !== 2 && ring <= 3);\n }\n }\n }\n\n // Timing patterns, row and column 6.\n for (let i = 0; i < size; i += 1) {\n if ((grid[6] as (boolean | null)[])[i] === null) {\n set(6, i, i % 2 === 0);\n }\n if ((grid[i] as (boolean | null)[])[6] === null) {\n set(i, 6, i % 2 === 0);\n }\n }\n\n // Alignment patterns, except where a finder already sits.\n const positions = alignmentPositions(version);\n for (const row of positions) {\n for (const col of positions) {\n const nearFinder =\n (row <= 8 && col <= 8) || (row <= 8 && col >= size - 9) || (row >= size - 9 && col <= 8);\n if (nearFinder) {\n continue;\n }\n for (let dr = -2; dr <= 2; dr += 1) {\n for (let dc = -2; dc <= 2; dc += 1) {\n const ring = Math.max(Math.abs(dr), Math.abs(dc));\n set(row + dr, col + dc, ring !== 1);\n }\n }\n }\n }\n\n // Format information areas, reserved now and written after masking. The\n // module at (size - 8, 8) is always dark.\n for (let i = 0; i < 9; i += 1) {\n if ((grid[8] as (boolean | null)[])[i] === null) {\n set(8, i, false);\n }\n if ((grid[i] as (boolean | null)[])[8] === null) {\n set(i, 8, false);\n }\n }\n for (let i = 0; i < 8; i += 1) {\n set(8, size - 1 - i, false);\n set(size - 1 - i, 8, false);\n }\n set(size - 8, 8, true);\n\n // Version information, versions 7 and up.\n if (version >= 7) {\n const bits = versionBits(version);\n for (let i = 0; i < 18; i += 1) {\n const bit = ((bits >>> i) & 1) === 1;\n set(Math.floor(i / 3), size - 11 + (i % 3), bit);\n set(size - 11 + (i % 3), Math.floor(i / 3), bit);\n }\n }\n\n return grid;\n}\n\n/** How many modules a version leaves free for data, counted from the grid. */\nexport function rawDataModules(version: number): number {\n const grid = reservedModules(version);\n let free = 0;\n for (const row of grid) {\n for (const cell of row) {\n if (cell === null) {\n free += 1;\n }\n }\n }\n return free;\n}\n\n/** Place the interleaved codewords in the standard's zigzag order. */\nfunction placeData(grid: Grid, codewords: readonly number[]): void {\n const size = grid.length;\n let bitIndex = 0;\n const nextBit = (): boolean => {\n const byte = codewords[bitIndex >>> 3];\n // Past the end is a remainder bit: light, per the standard.\n const bit = byte === undefined ? 0 : (byte >>> (7 - (bitIndex & 7))) & 1;\n bitIndex += 1;\n return bit === 1;\n };\n\n let upward = true;\n for (let right = size - 1; right >= 1; right -= 2) {\n // Column 6 is the vertical timing pattern; the pair of columns skips it.\n const pair = right === 6 ? [5, 4] : [right, right - 1];\n for (let step = 0; step < size; step += 1) {\n const row = upward ? size - 1 - step : step;\n for (const col of pair) {\n if ((grid[row] as (boolean | null)[])[col] === null) {\n (grid[row] as (boolean | null)[])[col] = nextBit();\n }\n }\n }\n if (right === 6) {\n right -= 1;\n }\n upward = !upward;\n }\n}\n\n/** The eight mask conditions. `true` means invert this module. */\nfunction maskCondition(mask: number, row: number, col: number): boolean {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0;\n case 1:\n return row % 2 === 0;\n case 2:\n return col % 3 === 0;\n case 3:\n return (row + col) % 3 === 0;\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0;\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0;\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0;\n default:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0;\n }\n}\n\n/**\n * The four penalty rules, scored on a finished candidate.\n *\n * This is the step that is easy to skip and expensive to skip: the rules exist\n * because some masks leave large light or dark areas, or patterns that look\n * like a finder, and a decoder locks onto the wrong feature. A symbol with a\n * badly chosen mask still decodes in software and fails under a phone camera —\n * which is the worst possible place for it to fail, because every test here\n * would pass.\n */\nexport function penalty(modules: readonly boolean[][]): number {\n const size = modules.length;\n let score = 0;\n\n // Rule 1: runs of five or more same-coloured modules in a line.\n const scoreLine = (run: number): number => (run >= 5 ? run - 2 : 0);\n for (let i = 0; i < size; i += 1) {\n for (const horizontal of [true, false]) {\n let run = 1;\n for (let j = 1; j < size; j += 1) {\n const prev = horizontal\n ? (modules[i] as boolean[])[j - 1]\n : (modules[j - 1] as boolean[])[i];\n const cur = horizontal ? (modules[i] as boolean[])[j] : (modules[j] as boolean[])[i];\n if (cur === prev) {\n run += 1;\n } else {\n score += scoreLine(run);\n run = 1;\n }\n }\n score += scoreLine(run);\n }\n }\n\n // Rule 2: every 2x2 block of one colour.\n for (let row = 0; row < size - 1; row += 1) {\n for (let col = 0; col < size - 1; col += 1) {\n const a = (modules[row] as boolean[])[col];\n if (\n a === (modules[row] as boolean[])[col + 1] &&\n a === (modules[row + 1] as boolean[])[col] &&\n a === (modules[row + 1] as boolean[])[col + 1]\n ) {\n score += 3;\n }\n }\n }\n\n // Rule 3: the finder-like 1:1:3:1:1 pattern with four light modules either\n // side. This is the rule that protects a decoder's pattern detection.\n const finderish = [true, false, true, true, true, false, true];\n const light4 = [false, false, false, false];\n const matches = (line: readonly boolean[], at: number, pattern: readonly boolean[]): boolean =>\n pattern.every((want, i) => line[at + i] === want);\n for (let i = 0; i < size; i += 1) {\n const row = modules[i] as boolean[];\n const col = modules.map((r) => (r as boolean[])[i] as boolean);\n for (const line of [row, col]) {\n for (let j = 0; j + 7 <= size; j += 1) {\n if (!matches(line, j, finderish)) {\n continue;\n }\n // Each ELEVEN-module window counts separately, so a pattern with four\n // light modules on BOTH sides scores 80 rather than 40.\n //\n // The prose rule (\"add 40 each time the pattern appears with four\n // light modules on either side\") is ambiguous about that case, and it\n // matters: this score is what picks the mask, and the wrong mask\n // produces a symbol that decodes perfectly in software and reads badly\n // under a camera. No test here can catch that -- so the convention is\n // pinned by a test instead, and this follows the one the reference\n // implementations use rather than the reading that happened to come\n // first.\n if (j >= 4 && matches(line, j - 4, light4)) {\n score += 40;\n }\n if (j + 11 <= size && matches(line, j + 7, light4)) {\n score += 40;\n }\n }\n }\n }\n\n // Rule 4: deviation of the dark-module proportion from 50%.\n let dark = 0;\n for (const row of modules) {\n for (const cell of row) {\n if (cell) {\n dark += 1;\n }\n }\n }\n const percent = (dark * 100) / (size * size);\n score += Math.floor(Math.abs(percent - 50) / 5) * 10;\n\n return score;\n}\n\n/** Write the 15 format bits into both of their locations. */\nfunction applyFormat(modules: boolean[][], ec: QrErrorCorrection, mask: number): void {\n const size = modules.length;\n const bits = (FORMAT_BITS[ec][mask] as number) >>> 0;\n const bit = (i: number): boolean => ((bits >>> i) & 1) === 1;\n\n // Bits 0-5 up the left column, bit 6 at (8,7)... the split placement is the\n // standard's, not a simplification of it.\n for (let i = 0; i <= 5; i += 1) {\n (modules[8] as boolean[])[i] = bit(14 - i);\n }\n (modules[8] as boolean[])[7] = bit(8);\n (modules[8] as boolean[])[8] = bit(7);\n (modules[7] as boolean[])[8] = bit(6);\n for (let i = 9; i <= 14; i += 1) {\n (modules[14 - i] as boolean[])[8] = bit(14 - i);\n }\n\n // The second copy, split across the other two corners: SEVEN modules up the\n // column beside the bottom-left finder, then EIGHT along the row beside the\n // top-right one.\n //\n // The 7/8 split is not arbitrary and getting it wrong is quiet. An 8/7 split\n // puts bit 7 at (size - 8, 8) -- which is the dark module, overwritten on\n // the next line -- so the symbol still decodes from the FIRST copy and\n // carries a corrupt second one. A reader that happens to use the second copy\n // refuses the symbol, and nothing in a round-trip test notices, because a\n // decoder reading the first copy never looks.\n for (let i = 0; i <= 6; i += 1) {\n (modules[size - 1 - i] as boolean[])[8] = bit(i);\n }\n for (let i = 7; i <= 14; i += 1) {\n (modules[8] as boolean[])[size - 15 + i] = bit(i);\n }\n (modules[size - 8] as boolean[])[8] = true;\n}\n\nexport interface EncodeOptions {\n errorCorrection?: QrErrorCorrection;\n /** Force a mode instead of selecting the narrowest that fits. */\n mode?: QrMode;\n /** Force a version. Throws if the value does not fit. */\n version?: number;\n /** Force a mask instead of scoring all eight. For tests and golden vectors. */\n mask?: number;\n}\n\n/**\n * Encode a string into a QR symbol.\n *\n * @throws RangeError when the value cannot fit, or when a forced version is\n * too small for it. **Throwing is deliberate**: the alternative is returning\n * a truncated symbol, which scans cleanly and yields the wrong string — a\n * silent corruption on the one surface whose entire job is to carry a value\n * accurately.\n */\nexport function encodeQr(value: string, options: EncodeOptions = {}): QrSymbol {\n const ec = options.errorCorrection ?? 'M';\n\n // Before `selectMode`, which walks the whole string. See `tooLongToFit`:\n // this is the difference between refusing a 5 MB value instantly and\n // spending tens of seconds on the main thread to reach the same answer.\n if (tooLongToFit(value, options.mode ?? null)) {\n throw new RangeError(\n `Value is too long for a QR code (${value.length} characters; the maximum any mode can carry is ${ABSOLUTE_MAX_CHARACTERS})`,\n );\n }\n\n const mode = options.mode ?? selectMode(value);\n if (tooLongToFit(value, mode)) {\n throw new RangeError(\n `Value is too long for a QR code in ${mode} mode (${value.length} characters; the maximum is ${maxCharacters(mode)})`,\n );\n }\n\n if (mode === 'numeric' && !/^[0-9]*$/.test(value)) {\n throw new RangeError('Numeric mode accepts digits only');\n }\n if (mode === 'alphanumeric' && ![...value].every((char) => ALPHANUMERIC.includes(char))) {\n throw new RangeError('Alphanumeric mode accepts 0-9 A-Z space and $%*+-./: only');\n }\n\n let version: number;\n if (options.version !== undefined) {\n if (options.version < MIN_VERSION || options.version > MAX_VERSION) {\n throw new RangeError(`Version must be ${MIN_VERSION}-${MAX_VERSION}`);\n }\n version = options.version;\n if (payloadBits(value, mode, version) > blockLayout(version, ec).dataCodewords * 8) {\n throw new RangeError(`Value does not fit in version ${version} at level ${ec}`);\n }\n } else {\n const chosen = selectVersion(value, mode, ec, MIN_VERSION);\n if (chosen === null) {\n throw new RangeError(\n `Value is too long for a QR code at level ${ec} (${value.length} characters)`,\n );\n }\n version = chosen;\n }\n\n const codewords = interleave(dataCodewords(value, mode, version, ec), version, ec);\n const template = reservedModules(version);\n\n const candidates: { mask: number; modules: boolean[][] }[] = [];\n const masksToTry = options.mask === undefined ? [0, 1, 2, 3, 4, 5, 6, 7] : [options.mask];\n for (const mask of masksToTry) {\n const grid = template.map((row) => [...row]);\n placeData(grid, codewords);\n const modules = grid.map((row, rowIndex) =>\n row.map((cell, colIndex) => {\n const value_ = cell as boolean;\n // Only data modules are masked; function patterns never are, which is\n // why the mask is applied against the TEMPLATE's null positions rather\n // than against the finished grid.\n const isData = (template[rowIndex] as (boolean | null)[])[colIndex] === null;\n return isData && maskCondition(mask, rowIndex, colIndex) ? !value_ : value_;\n }),\n );\n applyFormat(modules, ec, mask);\n candidates.push({ mask, modules });\n }\n\n const best = candidates.reduce((a, b) => (penalty(a.modules) <= penalty(b.modules) ? a : b));\n\n return {\n modules: best.modules,\n size: version * 4 + 17,\n version,\n errorCorrection: ec,\n mode,\n mask: best.mask,\n };\n}\n","import { forwardRef, useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { encodeQr } from \"./qr-encode\";\nimport type { QrCodeProps } from \"./QrCode.types\";\n\n/**\n * A QR code, as an SVG, with no dependencies.\n *\n * ## Why SVG and one path\n *\n * The symbol is drawn as a **single `<path>`** of one-unit squares on a\n * `viewBox` sized in modules, not as a grid of `<rect>` elements. A version 10\n * symbol is 57x57 — over three thousand modules — and a rect each would be\n * three thousand DOM nodes for something that never changes. One path is one\n * node, and because the viewBox is in module units the symbol is resolution\n * independent: `size` scales it with no resampling, so it stays crisp at any\n * size and prints at the printer's resolution rather than the screen's.\n *\n * This matters more than it sounds for scanning. A raster QR code scaled to a\n * non-integer multiple of its module size gets blurred module edges, and a\n * scanner reading a blurred edge guesses. Vector output cannot have that\n * problem.\n *\n * ## `value` is any string — this is not a link component\n *\n * A QR code is a byte container, and most of what belongs in one is not a web\n * address: a serial or asset number, a lot code, a ticket id, a WiFi\n * credential block, a contact card, a `tel:` or `geo:` URI, plain text. Those\n * are the cases where the format earns its place, because they need no network\n * at all — the scanner reads the value and that IS the payload.\n *\n * ## It is an image of a value, not the value\n *\n * A QR code is unreadable to anyone without a second device pointed at the\n * screen — which includes every screen-reader user and anyone whose phone is\n * the device showing it. So `label` is required, and the value should ALSO be\n * selectable text beside it. A panel that shows only a code is one some people\n * cannot use at all.\n *\n * @example\n * ```tsx\n * // Any string. A digits-only value is numeric mode and a third the size.\n * <QrCode value=\"SN-4829-13\" size={192} label=\"Asset tag for pump 14\" />\n * <QrCode value=\"482913\" size={192} label=\"Order reference\" />\n *\n * // A payload with no network in it at all.\n * <QrCode value=\"WIFI:T:WPA;S:Guest;P:hunter2;;\" label=\"Join the guest WiFi\" />\n *\n * // A link is one payload among many, not the default case.\n * <QrCode value=\"https://example.com/menu\" label=\"Today's menu\" />\n *\n * // On a dark surface, set both colours: a transparent background renders\n * // dark-on-dark and will not scan.\n * <QrCode value={serial} label=\"Asset tag\" foreground=\"#0b0b0c\" background=\"#ffffff\" />\n * ```\n */\nexport const QrCode = forwardRef<SVGSVGElement, QrCodeProps>(\n (\n {\n value,\n size = 192,\n errorCorrection = \"M\",\n label,\n quietZone = 4,\n foreground = \"currentColor\",\n background = \"transparent\",\n mode,\n version,\n className,\n ...props\n },\n ref,\n ) => {\n // Encoding a version 40 symbol is real work (Reed-Solomon over 2,956\n // codewords, then eight masks scored). Nothing about it depends on `size`\n // or the colours, so it is memoised on the inputs that actually change it\n // — otherwise a parent re-render on hover re-encodes the whole symbol.\n const symbol = useMemo(\n () => encodeQr(value, { errorCorrection, mode, version }),\n [value, errorCorrection, mode, version],\n );\n\n const extent = symbol.size + quietZone * 2;\n\n const path = useMemo(() => {\n const parts: string[] = [];\n for (let row = 0; row < symbol.size; row += 1) {\n const line = symbol.modules[row] as boolean[];\n let col = 0;\n while (col < symbol.size) {\n if (!line[col]) {\n col += 1;\n continue;\n }\n // Run-length the dark modules along the row: a horizontal run\n // becomes one rectangle rather than one per module, which roughly\n // halves the path for a typical symbol and costs nothing to read.\n let run = 1;\n while (col + run < symbol.size && line[col + run]) {\n run += 1;\n }\n parts.push(`M${col + quietZone} ${row + quietZone}h${run}v1h-${run}z`);\n col += run;\n }\n }\n return parts.join(\"\");\n }, [symbol, quietZone]);\n\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox={`0 0 ${extent} ${extent}`}\n role=\"img\"\n aria-label={label}\n // Nearest-neighbour rather than smoothing, for the rasterisers that\n // apply it anyway: a blurred module edge is a module a scanner has to\n // guess at.\n shapeRendering=\"crispEdges\"\n className={cn(\"fa-qr-code\", className)}\n {...props}\n >\n {background !== \"transparent\" && (\n <rect width={extent} height={extent} fill={background} />\n )}\n <path d={path} fill={foreground} />\n </svg>\n );\n },\n);\n\nQrCode.displayName = \"QrCode\";\n"]}
|