@satoshibits/react-json-schema-builder 1.0.0 → 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/README.md +142 -37
- 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 +1 -1
- package/dist/index.cjs22.js.map +1 -1
- package/dist/index.cjs23.js +1 -1
- package/dist/index.cjs23.js.map +1 -1
- package/dist/index.cjs24.js +1 -1
- package/dist/index.cjs24.js.map +1 -1
- package/dist/index.cjs25.js +1 -1
- package/dist/index.cjs25.js.map +1 -1
- package/dist/index.cjs26.js +1 -1
- package/dist/index.cjs26.js.map +1 -1
- package/dist/index.cjs27.js +1 -1
- 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 -23
- 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 -1
- package/dist/index.cjs42.js.map +1 -1
- package/dist/index.cjs43.js +6 -1
- package/dist/index.cjs43.js.map +1 -1
- package/dist/index.cjs44.js +6 -1
- 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 +2 -2
- package/dist/index.cjs48.js.map +1 -1
- package/dist/index.cjs49.js +2 -2
- 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 +2 -2
- 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.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 +1 -1
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es23.js +1 -1
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es24.js +1 -1
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es25.js +1 -1
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es26.js +1 -1
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es27.js +5 -5
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es28.js +12 -12
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +13 -6
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es3.js +239 -212
- 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 -31
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +33 -406
- 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 +56 -110
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +824 -48
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +10 -24
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +10 -45
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +10 -86
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +120 -57
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +55 -824
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +15 -4
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +3 -4
- 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 +32 -4
- 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.es64.js +44 -5
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +7 -45
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +121 -23
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +12 -63
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +133 -7
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +10 -124
- 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 +214 -13
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +12 -133
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +7 -10
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +3 -215
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +28 -13
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +49 -32
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +9 -8
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +65 -27
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +12 -4
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +204 -5
- 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 +19 -25
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +389 -46
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +25 -9
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +29 -25
- 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/dist/packages/builder/schema-builder.d.ts +20 -1
- package/dist/packages/builder/schema-builder.d.ts.map +1 -1
- package/dist/style.css +0 -3
- package/package.json +5 -3
- 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;"}
|
package/dist/index.es41.js
CHANGED
|
@@ -1,117 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}) {
|
|
19
|
-
return /* @__PURE__ */ a.jsx(
|
|
20
|
-
g,
|
|
1
|
+
import { jsxs as m, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Label as h } from "./index.es14.js";
|
|
3
|
+
import { Input as x } from "./index.es27.js";
|
|
4
|
+
import { InputErrorWrapper as y } from "./index.es28.js";
|
|
5
|
+
import { useState as p } from "react";
|
|
6
|
+
import E from "./index.es29.js";
|
|
7
|
+
const w = ({
|
|
8
|
+
values: t,
|
|
9
|
+
onAddValue: s,
|
|
10
|
+
renderValues: o,
|
|
11
|
+
maxValues: n,
|
|
12
|
+
onRemoveValue: c,
|
|
13
|
+
...u
|
|
14
|
+
}) => {
|
|
15
|
+
const [i, d] = p(), [l, f] = p();
|
|
16
|
+
return /* @__PURE__ */ m(
|
|
17
|
+
y,
|
|
21
18
|
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
19
|
+
errorCode: i,
|
|
20
|
+
errorDescription: l,
|
|
21
|
+
showError: !!i,
|
|
22
|
+
className: "space-y-2",
|
|
23
|
+
children: [
|
|
24
|
+
/* @__PURE__ */ e(h, { children: "Add Input" }),
|
|
25
|
+
/* @__PURE__ */ e(
|
|
26
|
+
x,
|
|
27
|
+
{
|
|
28
|
+
...u,
|
|
29
|
+
onKeyDown: (r) => {
|
|
30
|
+
r.key === "Enter" && (r.preventDefault(), r.stopPropagation());
|
|
31
|
+
},
|
|
32
|
+
onKeyUp: (r) => {
|
|
33
|
+
if (r.key === "Enter") {
|
|
34
|
+
if (n && t.length >= n) {
|
|
35
|
+
d("Maximum reached"), f(
|
|
36
|
+
"You have reached the maximum number of values"
|
|
37
|
+
);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
s?.(r.currentTarget.value), r.currentTarget.value = "";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
45
44
|
),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
function D({ className: t, ...e }) {
|
|
59
|
-
return /* @__PURE__ */ a.jsx(
|
|
60
|
-
"div",
|
|
61
|
-
{
|
|
62
|
-
"data-slot": "dialog-header",
|
|
63
|
-
className: o("flex flex-col gap-2 text-center sm:text-left", t),
|
|
64
|
-
...e
|
|
45
|
+
o ? o() : /* @__PURE__ */ e("div", { className: "space-x-2 flex", children: t.map((r, a) => /* @__PURE__ */ m(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
className: "flex items-center text-xs border rounded p-1 w-max mt-2",
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ e("span", { children: r }),
|
|
51
|
+
/* @__PURE__ */ e("button", { onClick: () => c(a), children: /* @__PURE__ */ e(E, { size: 16 }) })
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
`${a}-${r}`
|
|
55
|
+
)) })
|
|
56
|
+
]
|
|
65
57
|
}
|
|
66
58
|
);
|
|
67
|
-
}
|
|
68
|
-
function y({ className: t, ...e }) {
|
|
69
|
-
return /* @__PURE__ */ a.jsx(
|
|
70
|
-
"div",
|
|
71
|
-
{
|
|
72
|
-
"data-slot": "dialog-footer",
|
|
73
|
-
className: o(
|
|
74
|
-
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
75
|
-
t
|
|
76
|
-
),
|
|
77
|
-
...e
|
|
78
|
-
}
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
function N({
|
|
82
|
-
className: t,
|
|
83
|
-
...e
|
|
84
|
-
}) {
|
|
85
|
-
return /* @__PURE__ */ a.jsx(
|
|
86
|
-
r,
|
|
87
|
-
{
|
|
88
|
-
"data-slot": "dialog-title",
|
|
89
|
-
className: o("text-lg leading-none font-semibold", t),
|
|
90
|
-
...e
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
function z({
|
|
95
|
-
className: t,
|
|
96
|
-
...e
|
|
97
|
-
}) {
|
|
98
|
-
return /* @__PURE__ */ a.jsx(
|
|
99
|
-
d,
|
|
100
|
-
{
|
|
101
|
-
"data-slot": "dialog-description",
|
|
102
|
-
className: o("text-muted-foreground text-sm", t),
|
|
103
|
-
...e
|
|
104
|
-
}
|
|
105
|
-
);
|
|
106
|
-
}
|
|
59
|
+
};
|
|
107
60
|
export {
|
|
108
|
-
|
|
109
|
-
h as DialogContent,
|
|
110
|
-
z as DialogDescription,
|
|
111
|
-
y as DialogFooter,
|
|
112
|
-
D as DialogHeader,
|
|
113
|
-
m as DialogOverlay,
|
|
114
|
-
u as DialogPortal,
|
|
115
|
-
N as DialogTitle
|
|
61
|
+
w as default
|
|
116
62
|
};
|
|
117
63
|
//# sourceMappingURL=index.es41.js.map
|
package/dist/index.es41.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es41.js","sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index.es41.js","sources":["../src/components/multi-input.tsx"],"sourcesContent":["import { Label } from \"@/components/ui/label\";\nimport { Input } from \"@/components/ui/input\";\nimport { X } from \"lucide-react\";\nimport { InputErrorWrapper } from \"@/components/input-error\";\nimport { useState } from \"react\";\n\ninterface MultiInputProps {\n renderValues?: () => React.ReactNode;\n values: string[];\n onAddValue: (newVal: string) => void;\n onRemoveValue: (index: number) => void;\n maxValues?: number;\n}\n\nconst MultiInput = ({\n values,\n onAddValue,\n renderValues,\n maxValues,\n onRemoveValue,\n ...props\n}: MultiInputProps &\n Omit<React.ComponentProps<\"input\">, \"value\" | \"onChange\">) => {\n const [primaryError, setPrimaryError] = useState<string>();\n const [errorDescription, setErrorDescription] = useState<string>();\n\n return (\n <InputErrorWrapper\n errorCode={primaryError}\n errorDescription={errorDescription}\n showError={!!primaryError}\n className=\"space-y-2\"\n >\n <Label>Add Input</Label>\n <Input\n {...props}\n onKeyDown={(e) => {\n // Prevent form submission on Enter key press\n if (e.key === \"Enter\") {\n e.preventDefault();\n //prevent bubbling up\n e.stopPropagation();\n }\n }}\n onKeyUp={(e) => {\n // Add value on Enter key press\n if (e.key === \"Enter\") {\n if (maxValues && values.length >= maxValues) {\n setPrimaryError(\"Maximum reached\");\n setErrorDescription(\n \"You have reached the maximum number of values\",\n );\n return;\n }\n onAddValue?.(e.currentTarget.value);\n e.currentTarget.value = \"\";\n }\n }}\n />\n {renderValues ? (\n renderValues()\n ) : (\n <div className=\"space-x-2 flex\">\n {values.map((value, i) => (\n <div\n key={`${i}-${value}`}\n className=\"flex items-center text-xs border rounded p-1 w-max mt-2\"\n >\n <span>{value}</span>\n <button onClick={() => onRemoveValue(i)}>\n <X size={16} />\n </button>\n </div>\n ))}\n </div>\n )}\n </InputErrorWrapper>\n );\n};\n\nexport default MultiInput;\n"],"names":["MultiInput","values","onAddValue","renderValues","maxValues","onRemoveValue","props","primaryError","setPrimaryError","useState","errorDescription","setErrorDescription","jsxs","InputErrorWrapper","jsx","Label","Input","e","value","i","X"],"mappings":";;;;;;AAcA,MAAMA,IAAa,CAAC;AAAA,EAClB,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAGC;AACL,MACgE;AAC9D,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAiB,GACnD,CAACC,GAAkBC,CAAmB,IAAIF,EAAiB;AAG/D,SAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWN;AAAA,MACX,kBAAAG;AAAA,MACA,WAAW,CAAC,CAACH;AAAA,MACb,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAO,EAACC,KAAM,UAAS,YAAA,CAAA;AAAA,QAChB,gBAAAD;AAAA,UAACE;AAAA,UAAA;AAAA,YACE,GAAGV;AAAA,YACJ,WAAW,CAACW,MAAM;AAEZ,cAAAA,EAAE,QAAQ,YACZA,EAAE,eAAe,GAEjBA,EAAE,gBAAgB;AAAA,YAEtB;AAAA,YACA,SAAS,CAACA,MAAM;AAEV,kBAAAA,EAAE,QAAQ,SAAS;AACjB,oBAAAb,KAAaH,EAAO,UAAUG,GAAW;AAC3C,kBAAAI,EAAgB,iBAAiB,GACjCG;AAAA,oBACE;AAAA,kBACF;AACA;AAAA,gBAAA;AAEW,gBAAAT,IAAAe,EAAE,cAAc,KAAK,GAClCA,EAAE,cAAc,QAAQ;AAAA,cAAA;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,QACCd,IACCA,EAAa,IAEZ,gBAAAW,EAAA,OAAA,EAAI,WAAU,kBACZ,UAAOb,EAAA,IAAI,CAACiB,GAAOC,MAClB,gBAAAP;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,gBAAAE,EAAC,UAAM,UAAMI,EAAA,CAAA;AAAA,cACb,gBAAAJ,EAAC,UAAO,EAAA,SAAS,MAAMT,EAAcc,CAAC,GACpC,UAAC,gBAAAL,EAAAM,GAAA,EAAE,MAAM,GAAI,CAAA,EACf,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UANK,GAAGD,CAAC,IAAID,CAAK;AAAA,QAAA,CAQrB,EACH,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ;AAEJ;"}
|