@satoshibits/react-json-schema-builder 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs10.js +1 -1
- package/dist/index.cjs10.js.map +1 -1
- package/dist/index.cjs100.js +1 -1
- package/dist/index.cjs100.js.map +1 -1
- package/dist/index.cjs101.js +1 -38
- package/dist/index.cjs101.js.map +1 -1
- package/dist/index.cjs102.js +1 -1
- package/dist/index.cjs102.js.map +1 -1
- package/dist/index.cjs103.js +1 -1
- package/dist/index.cjs103.js.map +1 -1
- package/dist/index.cjs11.js +1 -1
- package/dist/index.cjs11.js.map +1 -1
- package/dist/index.cjs12.js +1 -1
- package/dist/index.cjs12.js.map +1 -1
- package/dist/index.cjs13.js +1 -1
- package/dist/index.cjs13.js.map +1 -1
- package/dist/index.cjs14.js +1 -1
- package/dist/index.cjs14.js.map +1 -1
- package/dist/index.cjs15.js +1 -1
- package/dist/index.cjs15.js.map +1 -1
- package/dist/index.cjs16.js +1 -1
- package/dist/index.cjs16.js.map +1 -1
- package/dist/index.cjs17.js +1 -1
- package/dist/index.cjs17.js.map +1 -1
- package/dist/index.cjs18.js +1 -1
- package/dist/index.cjs18.js.map +1 -1
- package/dist/index.cjs19.js +1 -1
- package/dist/index.cjs19.js.map +1 -1
- package/dist/index.cjs2.js +1 -1
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs20.js +1 -1
- package/dist/index.cjs20.js.map +1 -1
- package/dist/index.cjs21.js +1 -1
- package/dist/index.cjs21.js.map +1 -1
- package/dist/index.cjs22.js +6 -1
- package/dist/index.cjs22.js.map +1 -1
- package/dist/index.cjs23.js +2 -2
- package/dist/index.cjs23.js.map +1 -1
- package/dist/index.cjs24.js +2 -2
- package/dist/index.cjs24.js.map +1 -1
- package/dist/index.cjs25.js +2 -2
- package/dist/index.cjs25.js.map +1 -1
- package/dist/index.cjs26.js +2 -2
- package/dist/index.cjs26.js.map +1 -1
- package/dist/index.cjs27.js +1 -6
- package/dist/index.cjs27.js.map +1 -1
- package/dist/index.cjs28.js +1 -1
- package/dist/index.cjs28.js.map +1 -1
- package/dist/index.cjs29.js +6 -1
- package/dist/index.cjs29.js.map +1 -1
- package/dist/index.cjs3.js +1 -1
- package/dist/index.cjs3.js.map +1 -1
- package/dist/index.cjs30.js +1 -6
- package/dist/index.cjs30.js.map +1 -1
- package/dist/index.cjs31.js +1 -1
- package/dist/index.cjs31.js.map +1 -1
- package/dist/index.cjs32.js +1 -1
- package/dist/index.cjs32.js.map +1 -1
- package/dist/index.cjs33.js +1 -9
- package/dist/index.cjs33.js.map +1 -1
- package/dist/index.cjs34.js +1 -22
- package/dist/index.cjs34.js.map +1 -1
- package/dist/index.cjs35.js +1 -1
- package/dist/index.cjs35.js.map +1 -1
- package/dist/index.cjs36.js +1 -1
- package/dist/index.cjs36.js.map +1 -1
- package/dist/index.cjs37.js +1 -1
- package/dist/index.cjs37.js.map +1 -1
- package/dist/index.cjs38.js +1 -1
- package/dist/index.cjs38.js.map +1 -1
- package/dist/index.cjs39.js +1 -1
- package/dist/index.cjs39.js.map +1 -1
- package/dist/index.cjs4.js +1 -1
- package/dist/index.cjs4.js.map +1 -1
- package/dist/index.cjs40.js +1 -1
- package/dist/index.cjs40.js.map +1 -1
- package/dist/index.cjs41.js +1 -1
- package/dist/index.cjs41.js.map +1 -1
- package/dist/index.cjs42.js +1 -6
- package/dist/index.cjs42.js.map +1 -1
- package/dist/index.cjs43.js +2 -2
- package/dist/index.cjs43.js.map +1 -1
- package/dist/index.cjs44.js +2 -2
- package/dist/index.cjs44.js.map +1 -1
- package/dist/index.cjs45.js +6 -1
- package/dist/index.cjs45.js.map +1 -1
- package/dist/index.cjs46.js +7 -1
- package/dist/index.cjs46.js.map +1 -1
- package/dist/index.cjs47.js +1 -1
- package/dist/index.cjs47.js.map +1 -1
- package/dist/index.cjs48.js +6 -1
- package/dist/index.cjs48.js.map +1 -1
- package/dist/index.cjs49.js +6 -1
- package/dist/index.cjs49.js.map +1 -1
- package/dist/index.cjs5.js +1 -1
- package/dist/index.cjs5.js.map +1 -1
- package/dist/index.cjs50.js +6 -1
- package/dist/index.cjs50.js.map +1 -1
- package/dist/index.cjs51.js +6 -7
- package/dist/index.cjs51.js.map +1 -1
- package/dist/index.cjs52.js +1 -1
- package/dist/index.cjs52.js.map +1 -1
- package/dist/index.cjs53.js +1 -1
- package/dist/index.cjs53.js.map +1 -1
- package/dist/index.cjs54.js +5 -1
- package/dist/index.cjs54.js.map +1 -1
- package/dist/index.cjs55.js +1 -6
- package/dist/index.cjs55.js.map +1 -1
- package/dist/index.cjs56.js +1 -6
- package/dist/index.cjs56.js.map +1 -1
- package/dist/index.cjs57.js +1 -6
- package/dist/index.cjs57.js.map +1 -1
- package/dist/index.cjs58.js +1 -6
- package/dist/index.cjs58.js.map +1 -1
- package/dist/index.cjs59.js +1 -1
- package/dist/index.cjs59.js.map +1 -1
- package/dist/index.cjs6.js +1 -1
- package/dist/index.cjs6.js.map +1 -1
- package/dist/index.cjs60.js +1 -1
- package/dist/index.cjs60.js.map +1 -1
- package/dist/index.cjs61.js +1 -5
- package/dist/index.cjs61.js.map +1 -1
- package/dist/index.cjs62.js +1 -1
- package/dist/index.cjs62.js.map +1 -1
- package/dist/index.cjs63.js +1 -1
- package/dist/index.cjs63.js.map +1 -1
- package/dist/index.cjs64.js +1 -1
- package/dist/index.cjs64.js.map +1 -1
- package/dist/index.cjs65.js +1 -1
- package/dist/index.cjs65.js.map +1 -1
- package/dist/index.cjs66.js +1 -1
- package/dist/index.cjs66.js.map +1 -1
- package/dist/index.cjs67.js +1 -1
- package/dist/index.cjs67.js.map +1 -1
- package/dist/index.cjs68.js +1 -1
- package/dist/index.cjs68.js.map +1 -1
- package/dist/index.cjs69.js +1 -1
- package/dist/index.cjs69.js.map +1 -1
- package/dist/index.cjs7.js +1 -1
- package/dist/index.cjs7.js.map +1 -1
- package/dist/index.cjs70.js +1 -1
- package/dist/index.cjs70.js.map +1 -1
- package/dist/index.cjs71.js +1 -1
- package/dist/index.cjs71.js.map +1 -1
- package/dist/index.cjs72.js +1 -1
- package/dist/index.cjs72.js.map +1 -1
- package/dist/index.cjs73.js +1 -1
- package/dist/index.cjs73.js.map +1 -1
- package/dist/index.cjs74.js +1 -1
- package/dist/index.cjs74.js.map +1 -1
- package/dist/index.cjs75.js +1 -1
- package/dist/index.cjs75.js.map +1 -1
- package/dist/index.cjs76.js +1 -1
- package/dist/index.cjs76.js.map +1 -1
- package/dist/index.cjs77.js +1 -1
- package/dist/index.cjs77.js.map +1 -1
- package/dist/index.cjs78.js +1 -1
- package/dist/index.cjs78.js.map +1 -1
- package/dist/index.cjs79.js +1 -1
- package/dist/index.cjs79.js.map +1 -1
- package/dist/index.cjs8.js +1 -1
- package/dist/index.cjs8.js.map +1 -1
- package/dist/index.cjs80.js +1 -1
- package/dist/index.cjs80.js.map +1 -1
- package/dist/index.cjs81.js +1 -1
- package/dist/index.cjs81.js.map +1 -1
- package/dist/index.cjs82.js +1 -1
- package/dist/index.cjs82.js.map +1 -1
- package/dist/index.cjs83.js +1 -1
- package/dist/index.cjs83.js.map +1 -1
- package/dist/index.cjs84.js +1 -1
- package/dist/index.cjs84.js.map +1 -1
- package/dist/index.cjs85.js +1 -1
- package/dist/index.cjs85.js.map +1 -1
- package/dist/index.cjs86.js +1 -1
- package/dist/index.cjs86.js.map +1 -1
- package/dist/index.cjs87.js +1 -1
- package/dist/index.cjs87.js.map +1 -1
- package/dist/index.cjs88.js +4 -1
- package/dist/index.cjs88.js.map +1 -1
- package/dist/index.cjs89.js +1 -1
- package/dist/index.cjs89.js.map +1 -1
- package/dist/index.cjs9.js +1 -1
- package/dist/index.cjs9.js.map +1 -1
- package/dist/index.cjs90.js +1 -1
- package/dist/index.cjs90.js.map +1 -1
- package/dist/index.cjs91.js +1 -1
- package/dist/index.cjs91.js.map +1 -1
- package/dist/index.cjs92.js +1 -1
- package/dist/index.cjs92.js.map +1 -1
- package/dist/index.cjs93.js +1 -1
- package/dist/index.cjs93.js.map +1 -1
- package/dist/index.cjs94.js +38 -1
- package/dist/index.cjs94.js.map +1 -1
- package/dist/index.cjs95.js +1 -4
- package/dist/index.cjs95.js.map +1 -1
- package/dist/index.cjs96.js +1 -1
- package/dist/index.cjs96.js.map +1 -1
- package/dist/index.cjs97.js +1 -1
- package/dist/index.cjs97.js.map +1 -1
- package/dist/index.cjs98.js +1 -1
- package/dist/index.cjs98.js.map +1 -1
- package/dist/index.cjs99.js +1 -1
- package/dist/index.cjs99.js.map +1 -1
- package/dist/index.es10.js +46 -22
- package/dist/index.es10.js.map +1 -1
- package/dist/index.es100.js +22 -64
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +12 -68
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +26 -7
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +5 -14
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es11.js +57 -39
- package/dist/index.es11.js.map +1 -1
- package/dist/index.es12.js +23 -61
- package/dist/index.es12.js.map +1 -1
- package/dist/index.es13.js +126 -21
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es14.js +12 -126
- package/dist/index.es14.js.map +1 -1
- package/dist/index.es15.js +132 -17
- package/dist/index.es15.js.map +1 -1
- package/dist/index.es16.js +133 -130
- package/dist/index.es16.js.map +1 -1
- package/dist/index.es17.js +43 -117
- package/dist/index.es17.js.map +1 -1
- package/dist/index.es18.js +9 -62
- package/dist/index.es18.js.map +1 -1
- package/dist/index.es19.js +23 -11
- package/dist/index.es19.js.map +1 -1
- package/dist/index.es2.js +5 -5
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +422 -20
- package/dist/index.es20.js.map +1 -1
- package/dist/index.es21.js +5 -424
- package/dist/index.es21.js.map +1 -1
- package/dist/index.es22.js +13 -6
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es23.js +10 -7
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es24.js +7 -10
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es25.js +12 -6
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es26.js +4 -13
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es27.js +19 -10
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es28.js +22 -18
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +13 -23
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es3.js +206 -206
- package/dist/index.es3.js.map +1 -1
- package/dist/index.es30.js +17 -13
- package/dist/index.es30.js.map +1 -1
- package/dist/index.es31.js +14 -7
- package/dist/index.es31.js.map +1 -1
- package/dist/index.es32.js +2477 -2
- package/dist/index.es32.js.map +1 -1
- package/dist/index.es33.js +39 -24
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +33 -602
- package/dist/index.es34.js.map +1 -1
- package/dist/index.es35.js +115 -16
- package/dist/index.es35.js.map +1 -1
- package/dist/index.es36.js +113 -14
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +52 -2473
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +23 -40
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +45 -33
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es4.js +5 -5
- package/dist/index.es4.js.map +1 -1
- package/dist/index.es40.js +79 -109
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +49 -821
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +832 -10
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +3 -3
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +3 -3
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +10 -114
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +122 -55
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +62 -23
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +21 -45
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +9 -86
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es5.js +62 -62
- package/dist/index.es5.js.map +1 -1
- package/dist/index.es50.js +37 -59
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +17 -122
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +7 -62
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +5 -2
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +255 -2
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +21 -20
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +27 -9
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +7 -38
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +66 -18
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +29 -7
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es6.js +37 -37
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es60.js +5 -4
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +24 -254
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +32 -21
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +3 -26
- package/dist/index.es63.js.map +1 -1
- package/dist/index.es64.js +44 -5
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +7 -65
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +121 -26
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +14 -5
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +133 -24
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +10 -32
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es7.js +33 -33
- package/dist/index.es7.js.map +1 -1
- package/dist/index.es70.js +215 -3
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +13 -46
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +7 -7
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +4 -125
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +28 -15
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +48 -132
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +9 -11
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +65 -213
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +12 -13
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +204 -7
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es8.js +87 -87
- package/dist/index.es8.js.map +1 -1
- package/dist/index.es80.js +22 -4
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +391 -26
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +24 -49
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +28 -8
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +5 -68
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +5 -12
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +3 -205
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +23 -21
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +105 -388
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +14 -23
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es9.js +23 -3
- package/dist/index.es9.js.map +1 -1
- package/dist/index.es90.js +521 -27
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +127 -5
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +129 -5
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +65 -3
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +69 -24
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +9 -110
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +14 -16
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +60 -521
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +3 -126
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +22 -128
- package/dist/index.es99.js.map +1 -1
- package/package.json +1 -1
- package/dist/index.cjs104.js +0 -2
- package/dist/index.cjs104.js.map +0 -1
- package/dist/index.cjs105.js +0 -2
- package/dist/index.cjs105.js.map +0 -1
- package/dist/index.cjs106.js +0 -2
- package/dist/index.cjs106.js.map +0 -1
- package/dist/index.cjs107.js +0 -2
- package/dist/index.cjs107.js.map +0 -1
- package/dist/index.cjs108.js +0 -2
- package/dist/index.cjs108.js.map +0 -1
- package/dist/index.cjs109.js +0 -2
- package/dist/index.cjs109.js.map +0 -1
- package/dist/index.cjs110.js +0 -2
- package/dist/index.cjs110.js.map +0 -1
- package/dist/index.es104.js +0 -65
- package/dist/index.es104.js.map +0 -1
- package/dist/index.es105.js +0 -7
- package/dist/index.es105.js.map +0 -1
- package/dist/index.es106.js +0 -26
- package/dist/index.es106.js.map +0 -1
- package/dist/index.es107.js +0 -26
- package/dist/index.es107.js.map +0 -1
- package/dist/index.es108.js +0 -16
- package/dist/index.es108.js.map +0 -1
- package/dist/index.es109.js +0 -31
- package/dist/index.es109.js.map +0 -1
- package/dist/index.es110.js +0 -8
- package/dist/index.es110.js.map +0 -1
package/dist/index.es4.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as C } from "react/jsx-runtime";
|
|
2
2
|
import { createContext as h, useContext as g, useMemo as P, useRef as l } from "react";
|
|
3
|
-
import { ajv as R } from "./index.
|
|
4
|
-
const u = h(void 0),
|
|
3
|
+
import { ajv as R } from "./index.es18.js";
|
|
4
|
+
const u = h(void 0), x = ({ children: e }) => {
|
|
5
5
|
const r = l(
|
|
6
6
|
/* @__PURE__ */ new Map()
|
|
7
7
|
), o = l(/* @__PURE__ */ new Map());
|
|
8
|
-
return /* @__PURE__ */ C
|
|
8
|
+
return /* @__PURE__ */ C(
|
|
9
9
|
u.Provider,
|
|
10
10
|
{
|
|
11
11
|
value: {
|
|
@@ -73,7 +73,7 @@ const k = () => {
|
|
|
73
73
|
};
|
|
74
74
|
};
|
|
75
75
|
export {
|
|
76
|
-
|
|
76
|
+
x as PluginsProvider,
|
|
77
77
|
k as useConstraints,
|
|
78
78
|
E as usePluginSystem
|
|
79
79
|
};
|
package/dist/index.es4.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es4.js","sources":["../src/packages/constraints/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useRef } from \"react\";\nimport type { PropsWithChildren, ComponentType } from \"react\";\n\nimport type { JSONSchema7 } from \"json-schema\";\nimport { ajv } from \"@/packages/builder/utils\";\nimport type { OperationError } from \"../builder/shared-types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface ConstraintRendererProps<T = any> {\n value: T;\n onConstraintChange: (newValue: T) => void;\n onRemoveConstraint: () => void;\n constraintName: string;\n // Is this constraint disabled/readonly\n disabled?: boolean;\n error?: OperationError;\n}\n\nexport interface ConstraintDefinition {\n /**\n * The unique identifier for the constraint\n */\n name: keyof JSONSchema7;\n label: string;\n /**\n * Types this constraint applies to.\n */\n appliesTo: string[];\n /**\n * Apply JSON schema principles to the constraint.\n */\n schema: JSONSchema7;\n description?: string;\n defaultValue: unknown;\n}\n\nexport interface Constraint {\n name: ConstraintDefinition[\"name\"];\n value: unknown;\n}\n\nexport interface BaseJSONSchemaPlugin {\n id: string;\n hooks: {\n registerConstraints?: () => ConstraintDefinition[];\n registerRenderers?: () => Record<\n string,\n ComponentType<ConstraintRendererProps>\n >;\n };\n}\n\ninterface ContextState {\n constraintDefinitionsMap: Map<string, ConstraintDefinition>;\n constraintRenderersMap: Map<string, ComponentType<ConstraintRendererProps>>;\n}\n\nconst PluginsContext = createContext<ContextState | undefined>(undefined);\n\nexport const PluginsProvider = ({ children }: PropsWithChildren) => {\n // Store references. If you need to trigger a re-render,\n //use the methods in usePluginSystem hook instead\n const constraintDefinitionsRef = useRef<Map<string, ConstraintDefinition>>(\n new Map(),\n );\n const constraintRenderersRef = useRef<\n Map<string, ComponentType<ConstraintRendererProps>>\n >(new Map());\n\n return (\n <PluginsContext.Provider\n value={{\n constraintDefinitionsMap: constraintDefinitionsRef.current,\n constraintRenderersMap: constraintRenderersRef.current,\n }}\n >\n {children}\n </PluginsContext.Provider>\n );\n};\n\n// The main plugin system hook\nexport function usePluginSystem<TPlugin extends BaseJSONSchemaPlugin>(\n plugins: TPlugin[],\n) {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"usePluginSystem must be used within a PluginsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const memoizedPluginValues = useMemo(() => {\n // Register all plugins\n plugins.forEach((plugin) => {\n // Register constraints\n if (plugin.hooks.registerConstraints) {\n const constraints = plugin.hooks.registerConstraints();\n constraints.forEach((constraint) => {\n constraintDefinitionsMap.set(constraint.name, constraint);\n });\n }\n\n // Register renderers\n if (plugin.hooks.registerRenderers) {\n const renderers = plugin.hooks.registerRenderers();\n Object.entries(renderers).forEach(([name, component]) => {\n constraintRenderersMap.set(name, component);\n });\n }\n });\n\n return {\n // Check if a plugin with given ID exists\n hasPlugin(id: string): boolean {\n return plugins.some((plugin) => plugin.id === id);\n },\n\n // Get a plugin by ID\n getPlugin(id: string): BaseJSONSchemaPlugin | undefined {\n return plugins.find((plugin) => plugin.id === id);\n },\n };\n }, [plugins]);\n\n return memoizedPluginValues;\n}\n\nexport const useConstraints = () => {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"useConstraints must be used within a ConstraintsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const getAllDefinitions = (): ConstraintDefinition[] => {\n return Array.from(constraintDefinitionsMap.values());\n };\n\n const getConstraintDefinitionsForType = (\n type: string,\n ): ConstraintDefinition[] => {\n const definitions = getAllDefinitions();\n return definitions.filter((definition) =>\n definition.appliesTo.includes(type),\n );\n };\n\n const getConstraintDefinition = (constraintName: string) => {\n return constraintDefinitionsMap.get(constraintName);\n };\n\n const getRendererForConstraint = (constraintName: string) => {\n return constraintRenderersMap.get(constraintName);\n };\n\n const validateConstraintValue = (constraintName: string, value: unknown) => {\n const constraintDefinition = getConstraintDefinition(constraintName);\n\n if (constraintDefinition) {\n const schema = constraintDefinition.schema;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validate = ajv.compile<any>(schema);\n const valid = validate(value);\n\n if (valid) {\n return { status: \"success\" as const };\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"invalid\" as const,\n message: \"Invalid value\",\n error: validate.errors,\n };\n\n return obj satisfies OperationError;\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"constraint-def-missing\" as const,\n message: \"Constraint not found\",\n };\n\n return obj satisfies OperationError;\n };\n\n return {\n getConstraintDefinitionsForType,\n getAllDefinitions,\n getRendererForConstraint,\n getConstraintDefinition,\n validateConstraintValue,\n };\n};\n"],"names":["PluginsContext","createContext","PluginsProvider","children","constraintDefinitionsRef","useRef","constraintRenderersRef","jsx","usePluginSystem","plugins","context","useContext","constraintDefinitionsMap","constraintRenderersMap","useMemo","plugin","constraint","renderers","name","component","id","useConstraints","getAllDefinitions","getConstraintDefinitionsForType","type","definition","getConstraintDefinition","constraintName","value","constraintDefinition","schema","validate","ajv"],"mappings":";;;AAyDA,MAAMA,IAAiBC,EAAwC,MAAS,GAE3DC,IAAkB,CAAC,EAAE,UAAAC,QAAkC;AAGlE,QAAMC,IAA2BC;AAAA,wBAC3B,IAAI;AAAA,EACV,GACMC,IAAyBD,EAEzB,oBAAA,KAAK;AAGT,
|
|
1
|
+
{"version":3,"file":"index.es4.js","sources":["../src/packages/constraints/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useRef } from \"react\";\nimport type { PropsWithChildren, ComponentType } from \"react\";\n\nimport type { JSONSchema7 } from \"json-schema\";\nimport { ajv } from \"@/packages/builder/utils\";\nimport type { OperationError } from \"../builder/shared-types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface ConstraintRendererProps<T = any> {\n value: T;\n onConstraintChange: (newValue: T) => void;\n onRemoveConstraint: () => void;\n constraintName: string;\n // Is this constraint disabled/readonly\n disabled?: boolean;\n error?: OperationError;\n}\n\nexport interface ConstraintDefinition {\n /**\n * The unique identifier for the constraint\n */\n name: keyof JSONSchema7;\n label: string;\n /**\n * Types this constraint applies to.\n */\n appliesTo: string[];\n /**\n * Apply JSON schema principles to the constraint.\n */\n schema: JSONSchema7;\n description?: string;\n defaultValue: unknown;\n}\n\nexport interface Constraint {\n name: ConstraintDefinition[\"name\"];\n value: unknown;\n}\n\nexport interface BaseJSONSchemaPlugin {\n id: string;\n hooks: {\n registerConstraints?: () => ConstraintDefinition[];\n registerRenderers?: () => Record<\n string,\n ComponentType<ConstraintRendererProps>\n >;\n };\n}\n\ninterface ContextState {\n constraintDefinitionsMap: Map<string, ConstraintDefinition>;\n constraintRenderersMap: Map<string, ComponentType<ConstraintRendererProps>>;\n}\n\nconst PluginsContext = createContext<ContextState | undefined>(undefined);\n\nexport const PluginsProvider = ({ children }: PropsWithChildren) => {\n // Store references. If you need to trigger a re-render,\n //use the methods in usePluginSystem hook instead\n const constraintDefinitionsRef = useRef<Map<string, ConstraintDefinition>>(\n new Map(),\n );\n const constraintRenderersRef = useRef<\n Map<string, ComponentType<ConstraintRendererProps>>\n >(new Map());\n\n return (\n <PluginsContext.Provider\n value={{\n constraintDefinitionsMap: constraintDefinitionsRef.current,\n constraintRenderersMap: constraintRenderersRef.current,\n }}\n >\n {children}\n </PluginsContext.Provider>\n );\n};\n\n// The main plugin system hook\nexport function usePluginSystem<TPlugin extends BaseJSONSchemaPlugin>(\n plugins: TPlugin[],\n) {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"usePluginSystem must be used within a PluginsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const memoizedPluginValues = useMemo(() => {\n // Register all plugins\n plugins.forEach((plugin) => {\n // Register constraints\n if (plugin.hooks.registerConstraints) {\n const constraints = plugin.hooks.registerConstraints();\n constraints.forEach((constraint) => {\n constraintDefinitionsMap.set(constraint.name, constraint);\n });\n }\n\n // Register renderers\n if (plugin.hooks.registerRenderers) {\n const renderers = plugin.hooks.registerRenderers();\n Object.entries(renderers).forEach(([name, component]) => {\n constraintRenderersMap.set(name, component);\n });\n }\n });\n\n return {\n // Check if a plugin with given ID exists\n hasPlugin(id: string): boolean {\n return plugins.some((plugin) => plugin.id === id);\n },\n\n // Get a plugin by ID\n getPlugin(id: string): BaseJSONSchemaPlugin | undefined {\n return plugins.find((plugin) => plugin.id === id);\n },\n };\n }, [plugins]);\n\n return memoizedPluginValues;\n}\n\nexport const useConstraints = () => {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"useConstraints must be used within a ConstraintsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const getAllDefinitions = (): ConstraintDefinition[] => {\n return Array.from(constraintDefinitionsMap.values());\n };\n\n const getConstraintDefinitionsForType = (\n type: string,\n ): ConstraintDefinition[] => {\n const definitions = getAllDefinitions();\n return definitions.filter((definition) =>\n definition.appliesTo.includes(type),\n );\n };\n\n const getConstraintDefinition = (constraintName: string) => {\n return constraintDefinitionsMap.get(constraintName);\n };\n\n const getRendererForConstraint = (constraintName: string) => {\n return constraintRenderersMap.get(constraintName);\n };\n\n const validateConstraintValue = (constraintName: string, value: unknown) => {\n const constraintDefinition = getConstraintDefinition(constraintName);\n\n if (constraintDefinition) {\n const schema = constraintDefinition.schema;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validate = ajv.compile<any>(schema);\n const valid = validate(value);\n\n if (valid) {\n return { status: \"success\" as const };\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"invalid\" as const,\n message: \"Invalid value\",\n error: validate.errors,\n };\n\n return obj satisfies OperationError;\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"constraint-def-missing\" as const,\n message: \"Constraint not found\",\n };\n\n return obj satisfies OperationError;\n };\n\n return {\n getConstraintDefinitionsForType,\n getAllDefinitions,\n getRendererForConstraint,\n getConstraintDefinition,\n validateConstraintValue,\n };\n};\n"],"names":["PluginsContext","createContext","PluginsProvider","children","constraintDefinitionsRef","useRef","constraintRenderersRef","jsx","usePluginSystem","plugins","context","useContext","constraintDefinitionsMap","constraintRenderersMap","useMemo","plugin","constraint","renderers","name","component","id","useConstraints","getAllDefinitions","getConstraintDefinitionsForType","type","definition","getConstraintDefinition","constraintName","value","constraintDefinition","schema","validate","ajv"],"mappings":";;;AAyDA,MAAMA,IAAiBC,EAAwC,MAAS,GAE3DC,IAAkB,CAAC,EAAE,UAAAC,QAAkC;AAGlE,QAAMC,IAA2BC;AAAA,wBAC3B,IAAI;AAAA,EACV,GACMC,IAAyBD,EAEzB,oBAAA,KAAK;AAGT,SAAA,gBAAAE;AAAA,IAACP,EAAe;AAAA,IAAf;AAAA,MACC,OAAO;AAAA,QACL,0BAA0BI,EAAyB;AAAA,QACnD,wBAAwBE,EAAuB;AAAA,MACjD;AAAA,MAEC,UAAAH;AAAA,IAAA;AAAA,EACH;AAEJ;AAGO,SAASK,EACdC,GACA;AACM,QAAAC,IAAUC,EAAWX,CAAc;AACzC,MAAI,CAACU;AACG,UAAA,IAAI,MAAM,uDAAuD;AAGnE,QAAA,EAAE,0BAAAE,GAA0B,wBAAAC,EAAA,IAA2BH;AAmCtD,SAjCsBI,EAAQ,OAE3BL,EAAA,QAAQ,CAACM,MAAW;AAUtB,QARAA,EAAO,MAAM,uBACKA,EAAO,MAAM,oBAAoB,EACzC,QAAQ,CAACC,MAAe;AACT,MAAAJ,EAAA,IAAII,EAAW,MAAMA,CAAU;AAAA,IAAA,CACzD,GAICD,EAAO,MAAM,mBAAmB;AAC5B,YAAAE,IAAYF,EAAO,MAAM,kBAAkB;AAC1C,aAAA,QAAQE,CAAS,EAAE,QAAQ,CAAC,CAACC,GAAMC,CAAS,MAAM;AAChC,QAAAN,EAAA,IAAIK,GAAMC,CAAS;AAAA,MAAA,CAC3C;AAAA,IAAA;AAAA,EACH,CACD,GAEM;AAAA;AAAA,IAEL,UAAUC,GAAqB;AAC7B,aAAOX,EAAQ,KAAK,CAACM,MAAWA,EAAO,OAAOK,CAAE;AAAA,IAClD;AAAA;AAAA,IAGA,UAAUA,GAA8C;AACtD,aAAOX,EAAQ,KAAK,CAACM,MAAWA,EAAO,OAAOK,CAAE;AAAA,IAAA;AAAA,EAEpD,IACC,CAACX,CAAO,CAAC;AAGd;AAEO,MAAMY,IAAiB,MAAM;AAC5B,QAAAX,IAAUC,EAAWX,CAAc;AACzC,MAAI,CAACU;AACG,UAAA,IAAI,MAAM,0DAA0D;AAGtE,QAAA,EAAE,0BAAAE,GAA0B,wBAAAC,EAAA,IAA2BH,GAEvDY,IAAoB,MACjB,MAAM,KAAKV,EAAyB,OAAA,CAAQ,GAG/CW,IAAkC,CACtCC,MAEoBF,EAAkB,EACnB;AAAA,IAAO,CAACG,MACzBA,EAAW,UAAU,SAASD,CAAI;AAAA,EACpC,GAGIE,IAA0B,CAACC,MACxBf,EAAyB,IAAIe,CAAc;AAuC7C,SAAA;AAAA,IACL,iCAAAJ;AAAA,IACA,mBAAAD;AAAA,IACA,0BAvC+B,CAACK,MACzBd,EAAuB,IAAIc,CAAc;AAAA,IAuChD,yBAAAD;AAAA,IACA,yBArC8B,CAACC,GAAwBC,MAAmB;AACpE,YAAAC,IAAuBH,EAAwBC,CAAc;AAEnE,UAAIE,GAAsB;AACxB,cAAMC,IAASD,EAAqB,QAE9BE,IAAWC,EAAI,QAAaF,CAAM;AAGxC,eAFcC,EAASH,CAAK,IAGnB,EAAE,QAAQ,UAAmB,IAG1B;AAAA,UACV,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,SAAS;AAAA,UACT,OAAOG,EAAS;AAAA,QAClB;AAAA,MAEO;AASF,aANK;AAAA,QACV,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IAGF;AAAA,EAQA;AACF;"}
|
package/dist/index.es40.js
CHANGED
|
@@ -1,119 +1,89 @@
|
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
1
2
|
import * as s from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
(e, n
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
defaultProp: u,
|
|
26
|
-
onChange: f
|
|
27
|
-
});
|
|
28
|
-
return /* @__PURE__ */ p.jsxs(q, { scope: t, checked: h, disabled: c, children: [
|
|
29
|
-
/* @__PURE__ */ p.jsx(
|
|
30
|
-
w.button,
|
|
31
|
-
{
|
|
32
|
-
type: "button",
|
|
33
|
-
role: "switch",
|
|
34
|
-
"aria-checked": h,
|
|
35
|
-
"aria-required": a,
|
|
36
|
-
"data-state": y(h),
|
|
37
|
-
"data-disabled": c ? "" : void 0,
|
|
38
|
-
disabled: c,
|
|
39
|
-
value: i,
|
|
40
|
-
...l,
|
|
41
|
-
ref: E,
|
|
42
|
-
onClick: T(e.onClick, (m) => {
|
|
43
|
-
g((j) => !j), k && (v.current = m.isPropagationStopped(), v.current || m.stopPropagation());
|
|
44
|
-
})
|
|
45
|
-
}
|
|
46
|
-
),
|
|
47
|
-
k && /* @__PURE__ */ p.jsx(
|
|
48
|
-
A,
|
|
49
|
-
{
|
|
50
|
-
control: d,
|
|
51
|
-
bubbles: !v.current,
|
|
52
|
-
name: o,
|
|
53
|
-
value: i,
|
|
54
|
-
checked: h,
|
|
55
|
-
required: a,
|
|
56
|
-
disabled: c,
|
|
57
|
-
form: b,
|
|
58
|
-
style: { transform: "translateX(-100%)" }
|
|
59
|
-
}
|
|
60
|
-
)
|
|
61
|
-
] });
|
|
62
|
-
}
|
|
3
|
+
import { Slot as f } from "./index.es33.js";
|
|
4
|
+
import { FormProvider as u, Controller as F, useFormContext as x, useFormState as I } from "react-hook-form";
|
|
5
|
+
import { cn as a } from "./index.es21.js";
|
|
6
|
+
import { Label as g } from "./index.es14.js";
|
|
7
|
+
const S = u, c = s.createContext(
|
|
8
|
+
{}
|
|
9
|
+
), $ = ({
|
|
10
|
+
...e
|
|
11
|
+
}) => /* @__PURE__ */ m(c.Provider, { value: { name: e.name }, children: /* @__PURE__ */ m(F, { ...e }) }), d = () => {
|
|
12
|
+
const e = s.useContext(c), r = s.useContext(l), { getFieldState: t } = x(), o = I({ name: e.name }), n = t(e.name, o);
|
|
13
|
+
if (!e)
|
|
14
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
15
|
+
const { id: i } = r;
|
|
16
|
+
return {
|
|
17
|
+
id: i,
|
|
18
|
+
name: e.name,
|
|
19
|
+
formItemId: `${i}-form-item`,
|
|
20
|
+
formDescriptionId: `${i}-form-item-description`,
|
|
21
|
+
formMessageId: `${i}-form-item-message`,
|
|
22
|
+
...n
|
|
23
|
+
};
|
|
24
|
+
}, l = s.createContext(
|
|
25
|
+
{}
|
|
63
26
|
);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"data-disabled": r.disabled ? "" : void 0,
|
|
73
|
-
...o,
|
|
74
|
-
ref: n
|
|
75
|
-
}
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
);
|
|
79
|
-
P.displayName = x;
|
|
80
|
-
var A = (e) => {
|
|
81
|
-
const { control: n, checked: t, bubbles: o = !0, ...r } = e, u = s.useRef(null), a = M(t), c = N(n);
|
|
82
|
-
return s.useEffect(() => {
|
|
83
|
-
const i = u.current, f = window.HTMLInputElement.prototype, l = Object.getOwnPropertyDescriptor(f, "checked").set;
|
|
84
|
-
if (a !== t && l) {
|
|
85
|
-
const d = new Event("click", { bubbles: o });
|
|
86
|
-
l.call(i, t), i.dispatchEvent(d);
|
|
27
|
+
function M({ className: e, ...r }) {
|
|
28
|
+
const t = s.useId();
|
|
29
|
+
return /* @__PURE__ */ m(l.Provider, { value: { id: t }, children: /* @__PURE__ */ m(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
"data-slot": "form-item",
|
|
33
|
+
className: a("grid gap-2", e),
|
|
34
|
+
...r
|
|
87
35
|
}
|
|
88
|
-
}
|
|
89
|
-
|
|
36
|
+
) });
|
|
37
|
+
}
|
|
38
|
+
function w({
|
|
39
|
+
className: e,
|
|
40
|
+
...r
|
|
41
|
+
}) {
|
|
42
|
+
const { error: t, formItemId: o } = d();
|
|
43
|
+
return /* @__PURE__ */ m(
|
|
44
|
+
g,
|
|
90
45
|
{
|
|
91
|
-
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
ref: u,
|
|
97
|
-
style: {
|
|
98
|
-
...e.style,
|
|
99
|
-
...c,
|
|
100
|
-
position: "absolute",
|
|
101
|
-
pointerEvents: "none",
|
|
102
|
-
opacity: 0,
|
|
103
|
-
margin: 0
|
|
104
|
-
}
|
|
46
|
+
"data-slot": "form-label",
|
|
47
|
+
"data-error": !!t,
|
|
48
|
+
className: a("data-[error=true]:text-destructive-foreground", e),
|
|
49
|
+
htmlFor: o,
|
|
50
|
+
...r
|
|
105
51
|
}
|
|
106
52
|
);
|
|
107
|
-
};
|
|
108
|
-
function y(e) {
|
|
109
|
-
return e ? "checked" : "unchecked";
|
|
110
53
|
}
|
|
111
|
-
|
|
54
|
+
function N({ ...e }) {
|
|
55
|
+
const { error: r, formItemId: t, formDescriptionId: o, formMessageId: n } = d();
|
|
56
|
+
return /* @__PURE__ */ m(
|
|
57
|
+
f,
|
|
58
|
+
{
|
|
59
|
+
"data-slot": "form-control",
|
|
60
|
+
id: t,
|
|
61
|
+
"aria-describedby": r ? `${o} ${n}` : `${o}`,
|
|
62
|
+
"aria-invalid": !!r,
|
|
63
|
+
...e
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function P({ className: e, ...r }) {
|
|
68
|
+
const { error: t, formMessageId: o } = d(), n = t ? String(t?.message ?? "") : r.children;
|
|
69
|
+
return n ? /* @__PURE__ */ m(
|
|
70
|
+
"p",
|
|
71
|
+
{
|
|
72
|
+
"data-slot": "form-message",
|
|
73
|
+
id: o,
|
|
74
|
+
className: a("text-destructive-foreground text-sm", e),
|
|
75
|
+
...r,
|
|
76
|
+
children: n
|
|
77
|
+
}
|
|
78
|
+
) : null;
|
|
79
|
+
}
|
|
112
80
|
export {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
81
|
+
S as Form,
|
|
82
|
+
N as FormControl,
|
|
83
|
+
$ as FormField,
|
|
84
|
+
M as FormItem,
|
|
85
|
+
w as FormLabel,
|
|
86
|
+
P as FormMessage,
|
|
87
|
+
d as useFormField
|
|
118
88
|
};
|
|
119
89
|
//# sourceMappingURL=index.es40.js.map
|
package/dist/index.es40.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es40.js","sources":["
|
|
1
|
+
{"version":3,"file":"index.es40.js","sources":["../src/components/ui/form.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Label } from \"@/components/ui/label\";\n\nconst Form = FormProvider;\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive-foreground\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive-foreground text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","jsx","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormMessage","body"],"mappings":";;;;;;AAgBA,MAAMA,IAAOC,GASPC,IAAmBC,EAAM;AAAA,EAC7B,CAAA;AACF,GAEMC,IAAY,CAGhB;AAAA,EACA,GAAGC;AACL,MAEK,gBAAAC,EAAAJ,EAAiB,UAAjB,EAA0B,OAAO,EAAE,MAAMG,EAAM,KAAA,GAC9C,UAAA,gBAAAC,EAACC,GAAY,EAAA,GAAGF,EAAO,CAAA,GACzB,GAIEG,IAAe,MAAM;AACnB,QAAAC,IAAeN,EAAM,WAAWD,CAAgB,GAChDQ,IAAcP,EAAM,WAAWQ,CAAe,GAC9C,EAAE,eAAAC,EAAc,IAAIC,EAAe,GACnCC,IAAYC,EAAa,EAAE,MAAMN,EAAa,MAAM,GACpDO,IAAaJ,EAAcH,EAAa,MAAMK,CAAS;AAE7D,MAAI,CAACL;AACG,UAAA,IAAI,MAAM,gDAAgD;AAG5D,QAAA,EAAE,IAAAQ,MAAOP;AAER,SAAA;AAAA,IACL,IAAAO;AAAA,IACA,MAAMR,EAAa;AAAA,IACnB,YAAY,GAAGQ,CAAE;AAAA,IACjB,mBAAmB,GAAGA,CAAE;AAAA,IACxB,eAAe,GAAGA,CAAE;AAAA,IACpB,GAAGD;AAAA,EACL;AACF,GAMML,IAAkBR,EAAM;AAAA,EAC5B,CAAA;AACF;AAEA,SAASe,EAAS,EAAE,WAAAC,GAAW,GAAGd,KAAsC;AAChE,QAAAY,IAAKd,EAAM,MAAM;AAEvB,2BACGQ,EAAgB,UAAhB,EAAyB,OAAO,EAAE,IAAAM,KACjC,UAAA,gBAAAX;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWc,EAAG,cAAcD,CAAS;AAAA,MACpC,GAAGd;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;AAEA,SAASgB,EAAU;AAAA,EACjB,WAAAF;AAAA,EACA,GAAGd;AACL,GAAqD;AACnD,QAAM,EAAE,OAAAiB,GAAO,YAAAC,EAAW,IAAIf,EAAa;AAGzC,SAAA,gBAAAF;AAAA,IAACkB;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY,CAAC,CAACF;AAAA,MACd,WAAWF,EAAG,iDAAiDD,CAAS;AAAA,MACxE,SAASI;AAAA,MACR,GAAGlB;AAAA,IAAA;AAAA,EACN;AAEJ;AAEA,SAASoB,EAAY,EAAE,GAAGpB,KAA4C;AACpE,QAAM,EAAE,OAAAiB,GAAO,YAAAC,GAAY,mBAAAG,GAAmB,eAAAC,EAAA,IAC5CnB,EAAa;AAGb,SAAA,gBAAAF;AAAA,IAACsB;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAIL;AAAA,MACJ,oBACGD,IAEG,GAAGI,CAAiB,IAAIC,CAAa,KADrC,GAAGD,CAAiB;AAAA,MAG1B,gBAAc,CAAC,CAACJ;AAAA,MACf,GAAGjB;AAAA,IAAA;AAAA,EACN;AAEJ;AAeA,SAASwB,EAAY,EAAE,WAAAV,GAAW,GAAGd,KAAoC;AACvE,QAAM,EAAE,OAAAiB,GAAO,eAAAK,EAAc,IAAInB,EAAa,GAExCsB,IAAOR,IAAQ,OAAOA,GAAO,WAAW,EAAE,IAAIjB,EAAM;AAE1D,SAAKyB,IAKH,gBAAAxB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,IAAIqB;AAAA,MACJ,WAAWP,EAAG,uCAAuCD,CAAS;AAAA,MAC7D,GAAGd;AAAA,MAEH,UAAAyB;AAAA,IAAA;AAAA,EACH,IAXO;AAaX;"}
|