@satoshibits/react-json-schema-builder 1.1.4 → 1.1.5

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.
Files changed (234) hide show
  1. package/dist/index.cjs.js +1 -1
  2. package/dist/index.cjs10.js +1 -1
  3. package/dist/index.cjs10.js.map +1 -1
  4. package/dist/index.cjs11.js +1 -1
  5. package/dist/index.cjs11.js.map +1 -1
  6. package/dist/index.cjs12.js +1 -1
  7. package/dist/index.cjs12.js.map +1 -1
  8. package/dist/index.cjs13.js +1 -1
  9. package/dist/index.cjs13.js.map +1 -1
  10. package/dist/index.cjs14.js +1 -1
  11. package/dist/index.cjs14.js.map +1 -1
  12. package/dist/index.cjs15.js +6 -1
  13. package/dist/index.cjs15.js.map +1 -1
  14. package/dist/index.cjs16.js +1 -1
  15. package/dist/index.cjs16.js.map +1 -1
  16. package/dist/index.cjs17.js +1 -1
  17. package/dist/index.cjs17.js.map +1 -1
  18. package/dist/index.cjs18.js +1 -1
  19. package/dist/index.cjs18.js.map +1 -1
  20. package/dist/index.cjs19.js +1 -1
  21. package/dist/index.cjs19.js.map +1 -1
  22. package/dist/index.cjs2.js +1 -1
  23. package/dist/index.cjs2.js.map +1 -1
  24. package/dist/index.cjs20.js +1 -1
  25. package/dist/index.cjs20.js.map +1 -1
  26. package/dist/index.cjs21.js +1 -1
  27. package/dist/index.cjs21.js.map +1 -1
  28. package/dist/index.cjs22.js +1 -1
  29. package/dist/index.cjs22.js.map +1 -1
  30. package/dist/index.cjs23.js +1 -6
  31. package/dist/index.cjs23.js.map +1 -1
  32. package/dist/index.cjs24.js +1 -6
  33. package/dist/index.cjs24.js.map +1 -1
  34. package/dist/index.cjs25.js +1 -6
  35. package/dist/index.cjs25.js.map +1 -1
  36. package/dist/index.cjs26.js +1 -1
  37. package/dist/index.cjs26.js.map +1 -1
  38. package/dist/index.cjs27.js +1 -1
  39. package/dist/index.cjs27.js.map +1 -1
  40. package/dist/index.cjs28.js +6 -1
  41. package/dist/index.cjs28.js.map +1 -1
  42. package/dist/index.cjs29.js +6 -1
  43. package/dist/index.cjs29.js.map +1 -1
  44. package/dist/index.cjs3.js +1 -1
  45. package/dist/index.cjs3.js.map +1 -1
  46. package/dist/index.cjs30.js +1 -1
  47. package/dist/index.cjs30.js.map +1 -1
  48. package/dist/index.cjs31.js +1 -1
  49. package/dist/index.cjs34.js +1 -1
  50. package/dist/index.cjs36.js +1 -1
  51. package/dist/index.cjs37.js +1 -1
  52. package/dist/index.cjs37.js.map +1 -1
  53. package/dist/index.cjs38.js +1 -6
  54. package/dist/index.cjs38.js.map +1 -1
  55. package/dist/index.cjs39.js +1 -6
  56. package/dist/index.cjs39.js.map +1 -1
  57. package/dist/index.cjs4.js +1 -1
  58. package/dist/index.cjs4.js.map +1 -1
  59. package/dist/index.cjs40.js +1 -6
  60. package/dist/index.cjs40.js.map +1 -1
  61. package/dist/index.cjs41.js +1 -1
  62. package/dist/index.cjs41.js.map +1 -1
  63. package/dist/index.cjs42.js +1 -1
  64. package/dist/index.cjs42.js.map +1 -1
  65. package/dist/index.cjs43.js +1 -1
  66. package/dist/index.cjs43.js.map +1 -1
  67. package/dist/index.cjs44.js +6 -1
  68. package/dist/index.cjs44.js.map +1 -1
  69. package/dist/index.cjs45.js +6 -1
  70. package/dist/index.cjs45.js.map +1 -1
  71. package/dist/index.cjs46.js +6 -1
  72. package/dist/index.cjs46.js.map +1 -1
  73. package/dist/index.cjs47.js +1 -1
  74. package/dist/index.cjs5.js +1 -1
  75. package/dist/index.cjs5.js.map +1 -1
  76. package/dist/index.cjs55.js +1 -5
  77. package/dist/index.cjs55.js.map +1 -1
  78. package/dist/index.cjs56.js +1 -1
  79. package/dist/index.cjs56.js.map +1 -1
  80. package/dist/index.cjs58.js +1 -1
  81. package/dist/index.cjs58.js.map +1 -1
  82. package/dist/index.cjs59.js +1 -1
  83. package/dist/index.cjs59.js.map +1 -1
  84. package/dist/index.cjs6.js +1 -1
  85. package/dist/index.cjs6.js.map +1 -1
  86. package/dist/index.cjs60.js +1 -1
  87. package/dist/index.cjs60.js.map +1 -1
  88. package/dist/index.cjs61.js +1 -1
  89. package/dist/index.cjs61.js.map +1 -1
  90. package/dist/index.cjs62.js +5 -1
  91. package/dist/index.cjs62.js.map +1 -1
  92. package/dist/index.cjs63.js +1 -1
  93. package/dist/index.cjs63.js.map +1 -1
  94. package/dist/index.cjs65.js +1 -1
  95. package/dist/index.cjs67.js +1 -1
  96. package/dist/index.cjs69.js +1 -1
  97. package/dist/index.cjs7.js +1 -1
  98. package/dist/index.cjs7.js.map +1 -1
  99. package/dist/index.cjs71.js +1 -1
  100. package/dist/index.cjs72.js +1 -1
  101. package/dist/index.cjs75.js +1 -1
  102. package/dist/index.cjs78.js +1 -1
  103. package/dist/index.cjs78.js.map +1 -1
  104. package/dist/index.cjs79.js +1 -1
  105. package/dist/index.cjs79.js.map +1 -1
  106. package/dist/index.cjs8.js +1 -1
  107. package/dist/index.cjs8.js.map +1 -1
  108. package/dist/index.cjs80.js +1 -1
  109. package/dist/index.cjs80.js.map +1 -1
  110. package/dist/index.cjs81.js +1 -1
  111. package/dist/index.cjs81.js.map +1 -1
  112. package/dist/index.cjs82.js +1 -1
  113. package/dist/index.cjs82.js.map +1 -1
  114. package/dist/index.cjs9.js +1 -1
  115. package/dist/index.cjs9.js.map +1 -1
  116. package/dist/index.d.mts +5 -4
  117. package/dist/index.d.mts.map +1 -1
  118. package/dist/index.es.js +18 -28
  119. package/dist/index.es10.js +22 -22
  120. package/dist/index.es10.js.map +1 -1
  121. package/dist/index.es11.js +14 -42
  122. package/dist/index.es11.js.map +1 -1
  123. package/dist/index.es12.js +5 -65
  124. package/dist/index.es12.js.map +1 -1
  125. package/dist/index.es13.js +43 -24
  126. package/dist/index.es13.js.map +1 -1
  127. package/dist/index.es14.js +21 -126
  128. package/dist/index.es14.js.map +1 -1
  129. package/dist/index.es15.js +13 -20
  130. package/dist/index.es15.js.map +1 -1
  131. package/dist/index.es16.js +129 -130
  132. package/dist/index.es16.js.map +1 -1
  133. package/dist/index.es17.js +3 -137
  134. package/dist/index.es17.js.map +1 -1
  135. package/dist/index.es18.js +20 -61
  136. package/dist/index.es18.js.map +1 -1
  137. package/dist/index.es19.js +65 -10
  138. package/dist/index.es19.js.map +1 -1
  139. package/dist/index.es2.js +156 -115
  140. package/dist/index.es2.js.map +1 -1
  141. package/dist/index.es20.js +134 -22
  142. package/dist/index.es20.js.map +1 -1
  143. package/dist/index.es21.js +131 -421
  144. package/dist/index.es21.js.map +1 -1
  145. package/dist/index.es22.js +63 -5
  146. package/dist/index.es22.js.map +1 -1
  147. package/dist/index.es23.js +11 -13
  148. package/dist/index.es23.js.map +1 -1
  149. package/dist/index.es24.js +23 -16
  150. package/dist/index.es24.js.map +1 -1
  151. package/dist/index.es25.js +428 -13
  152. package/dist/index.es25.js.map +1 -1
  153. package/dist/index.es26.js +7 -13
  154. package/dist/index.es26.js.map +1 -1
  155. package/dist/index.es27.js +9 -3
  156. package/dist/index.es27.js.map +1 -1
  157. package/dist/index.es28.js +13 -19
  158. package/dist/index.es28.js.map +1 -1
  159. package/dist/index.es29.js +19 -23
  160. package/dist/index.es29.js.map +1 -1
  161. package/dist/index.es3.js +129 -340
  162. package/dist/index.es3.js.map +1 -1
  163. package/dist/index.es30.js +4 -7
  164. package/dist/index.es30.js.map +1 -1
  165. package/dist/index.es31.js +1 -1
  166. package/dist/index.es34.js +1 -1
  167. package/dist/index.es36.js +6 -6
  168. package/dist/index.es37.js +97 -815
  169. package/dist/index.es37.js.map +1 -1
  170. package/dist/index.es38.js +56 -10
  171. package/dist/index.es38.js.map +1 -1
  172. package/dist/index.es39.js +24 -10
  173. package/dist/index.es39.js.map +1 -1
  174. package/dist/index.es4.js +92 -70
  175. package/dist/index.es4.js.map +1 -1
  176. package/dist/index.es40.js +45 -10
  177. package/dist/index.es40.js.map +1 -1
  178. package/dist/index.es41.js +71 -99
  179. package/dist/index.es41.js.map +1 -1
  180. package/dist/index.es42.js +56 -52
  181. package/dist/index.es42.js.map +1 -1
  182. package/dist/index.es43.js +827 -19
  183. package/dist/index.es43.js.map +1 -1
  184. package/dist/index.es44.js +10 -45
  185. package/dist/index.es44.js.map +1 -1
  186. package/dist/index.es45.js +10 -86
  187. package/dist/index.es45.js.map +1 -1
  188. package/dist/index.es46.js +10 -60
  189. package/dist/index.es46.js.map +1 -1
  190. package/dist/index.es47.js +3 -3
  191. package/dist/index.es5.js +225 -79
  192. package/dist/index.es5.js.map +1 -1
  193. package/dist/index.es55.js +30 -252
  194. package/dist/index.es55.js.map +1 -1
  195. package/dist/index.es56.js +26 -21
  196. package/dist/index.es56.js.map +1 -1
  197. package/dist/index.es58.js +62 -23
  198. package/dist/index.es58.js.map +1 -1
  199. package/dist/index.es59.js +27 -63
  200. package/dist/index.es59.js.map +1 -1
  201. package/dist/index.es6.js +117 -57
  202. package/dist/index.es6.js.map +1 -1
  203. package/dist/index.es60.js +5 -29
  204. package/dist/index.es60.js.map +1 -1
  205. package/dist/index.es61.js +24 -5
  206. package/dist/index.es61.js.map +1 -1
  207. package/dist/index.es62.js +254 -24
  208. package/dist/index.es62.js.map +1 -1
  209. package/dist/index.es63.js +21 -32
  210. package/dist/index.es63.js.map +1 -1
  211. package/dist/index.es65.js +2 -2
  212. package/dist/index.es67.js +3 -3
  213. package/dist/index.es69.js +2 -2
  214. package/dist/index.es7.js +345 -48
  215. package/dist/index.es7.js.map +1 -1
  216. package/dist/index.es71.js +7 -7
  217. package/dist/index.es72.js +1 -1
  218. package/dist/index.es75.js +1 -1
  219. package/dist/index.es78.js +67 -11
  220. package/dist/index.es78.js.map +1 -1
  221. package/dist/index.es79.js +10 -203
  222. package/dist/index.es79.js.map +1 -1
  223. package/dist/index.es8.js +73 -163
  224. package/dist/index.es8.js.map +1 -1
  225. package/dist/index.es80.js +203 -20
  226. package/dist/index.es80.js.map +1 -1
  227. package/dist/index.es81.js +21 -392
  228. package/dist/index.es81.js.map +1 -1
  229. package/dist/index.es82.js +386 -61
  230. package/dist/index.es82.js.map +1 -1
  231. package/dist/index.es9.js +18 -3
  232. package/dist/index.es9.js.map +1 -1
  233. package/dist/packages/builder/add-dialog.d.ts +5 -5
  234. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es78.js","sources":["../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs"],"sourcesContent":["// packages/react/use-escape-keydown/src/useEscapeKeydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","useCallbackRef","React","handleKeyDown","event"],"mappings":";;AAGA,SAASA,EAAiBC,GAAqBC,IAAgB,YAAY,UAAU;AACnF,QAAMC,IAAkBC,EAAeH,CAAmB;AAC1D,EAAAI,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAgB,CAACC,MAAU;AAC/B,MAAIA,EAAM,QAAQ,YAChBJ,EAAgBI,CAAK;AAAA,IAExB;AACD,WAAAL,EAAc,iBAAiB,WAAWI,GAAe,EAAE,SAAS,IAAM,GACnE,MAAMJ,EAAc,oBAAoB,WAAWI,GAAe,EAAE,SAAS,IAAM;AAAA,EAC9F,GAAK,CAACH,GAAiBD,CAAa,CAAC;AACrC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es78.js","sources":["../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.2_@types+react-dom@18.3.5_@types+react@18.3.18__@types+rea_f6427c6d64d2d542f3fe67e5d488b7cd/node_modules/@radix-ui/react-presence/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// packages/react/presence/src/Presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// packages/react/presence/src/useStateMachine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// packages/react/presence/src/Presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef({});\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n if (node2) stylesRef.current = getComputedStyle(node2);\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Presence\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useStateMachine","initialState","machine","React","state","event","Presence","props","present","children","presence","usePresence","child","React2","ref","useComposedRefs","getElementRef","node","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","useLayoutEffect","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","node2","element","getter","mayWarn"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,208 +1,15 @@
1
- import { computePosition as I, offset as J, shift as K, flip as N, size as Q, hide as T, limitShift as X, arrow as L } from "./index.es81.js";
2
- import { autoUpdate as me, platform as pe } from "./index.es81.js";
3
- import * as f from "react";
4
- import { useLayoutEffect as Y, useEffect as Z } from "react";
5
- import * as b from "react-dom";
6
- var w = typeof document < "u" ? Y : Z;
7
- function R(e, t) {
8
- if (e === t)
9
- return !0;
10
- if (typeof e != typeof t)
11
- return !1;
12
- if (typeof e == "function" && e.toString() === t.toString())
13
- return !0;
14
- let n, r, s;
15
- if (e && t && typeof e == "object") {
16
- if (Array.isArray(e)) {
17
- if (n = e.length, n !== t.length) return !1;
18
- for (r = n; r-- !== 0; )
19
- if (!R(e[r], t[r]))
20
- return !1;
21
- return !0;
22
- }
23
- if (s = Object.keys(e), n = s.length, n !== Object.keys(t).length)
24
- return !1;
25
- for (r = n; r-- !== 0; )
26
- if (!{}.hasOwnProperty.call(t, s[r]))
27
- return !1;
28
- for (r = n; r-- !== 0; ) {
29
- const p = s[r];
30
- if (!(p === "_owner" && e.$$typeof) && !R(e[p], t[p]))
31
- return !1;
32
- }
33
- return !0;
34
- }
35
- return e !== e && t !== t;
36
- }
37
- function A(e) {
38
- return typeof window > "u" ? 1 : (e.ownerDocument.defaultView || window).devicePixelRatio || 1;
39
- }
40
- function v(e, t) {
41
- const n = A(e);
42
- return Math.round(t * n) / n;
43
- }
44
- function E(e) {
45
- const t = f.useRef(e);
46
- return w(() => {
47
- t.current = e;
48
- }), t;
49
- }
50
- function re(e) {
51
- e === void 0 && (e = {});
52
- const {
53
- placement: t = "bottom",
54
- strategy: n = "absolute",
55
- middleware: r = [],
56
- platform: s,
57
- elements: {
58
- reference: p,
59
- floating: q
60
- } = {},
61
- transform: k = !0,
62
- whileElementsMounted: D,
63
- open: x
64
- } = e, [i, O] = f.useState({
65
- x: 0,
66
- y: 0,
67
- strategy: n,
68
- placement: t,
69
- middlewareData: {},
70
- isPositioned: !1
71
- }), [M, B] = f.useState(r);
72
- R(M, r) || B(r);
73
- const [U, V] = f.useState(null), [W, G] = f.useState(null), _ = f.useCallback((o) => {
74
- o !== a.current && (a.current = o, V(o));
75
- }, []), C = f.useCallback((o) => {
76
- o !== d.current && (d.current = o, G(o));
77
- }, []), u = p || U, l = q || W, a = f.useRef(null), d = f.useRef(null), y = f.useRef(i), H = D != null, S = E(D), P = E(s), F = E(x), g = f.useCallback(() => {
78
- if (!a.current || !d.current)
79
- return;
80
- const o = {
81
- placement: t,
82
- strategy: n,
83
- middleware: M
84
- };
85
- P.current && (o.platform = P.current), I(a.current, d.current, o).then((h) => {
86
- const m = {
87
- ...h,
88
- // The floating element's position may be recomputed while it's closed
89
- // but still mounted (such as when transitioning out). To ensure
90
- // `isPositioned` will be `false` initially on the next open, avoid
91
- // setting it to `true` when `open === false` (must be specified).
92
- isPositioned: F.current !== !1
93
- };
94
- $.current && !R(y.current, m) && (y.current = m, b.flushSync(() => {
95
- O(m);
96
- }));
97
- });
98
- }, [M, t, n, P, F]);
99
- w(() => {
100
- x === !1 && y.current.isPositioned && (y.current.isPositioned = !1, O((o) => ({
101
- ...o,
102
- isPositioned: !1
103
- })));
104
- }, [x]);
105
- const $ = f.useRef(!1);
106
- w(() => ($.current = !0, () => {
107
- $.current = !1;
108
- }), []), w(() => {
109
- if (u && (a.current = u), l && (d.current = l), u && l) {
110
- if (S.current)
111
- return S.current(u, l, g);
112
- g();
113
- }
114
- }, [u, l, g, S, H]);
115
- const j = f.useMemo(() => ({
116
- reference: a,
117
- floating: d,
118
- setReference: _,
119
- setFloating: C
120
- }), [_, C]), c = f.useMemo(() => ({
121
- reference: u,
122
- floating: l
123
- }), [u, l]), z = f.useMemo(() => {
124
- const o = {
125
- position: n,
126
- left: 0,
127
- top: 0
128
- };
129
- if (!c.floating)
130
- return o;
131
- const h = v(c.floating, i.x), m = v(c.floating, i.y);
132
- return k ? {
133
- ...o,
134
- transform: "translate(" + h + "px, " + m + "px)",
135
- ...A(c.floating) >= 1.5 && {
136
- willChange: "transform"
137
- }
138
- } : {
139
- position: n,
140
- left: h,
141
- top: m
1
+ import * as r from "react";
2
+ import { useCallbackRef as s } from "./index.es73.js";
3
+ function p(n, e = globalThis?.document) {
4
+ const t = s(n);
5
+ r.useEffect(() => {
6
+ const o = (a) => {
7
+ a.key === "Escape" && t(a);
142
8
  };
143
- }, [n, k, c.floating, i.x, i.y]);
144
- return f.useMemo(() => ({
145
- ...i,
146
- update: g,
147
- refs: j,
148
- elements: c,
149
- floatingStyles: z
150
- }), [i, g, j, c, z]);
9
+ return e.addEventListener("keydown", o, { capture: !0 }), () => e.removeEventListener("keydown", o, { capture: !0 });
10
+ }, [t, e]);
151
11
  }
152
- const ee = (e) => {
153
- function t(n) {
154
- return {}.hasOwnProperty.call(n, "current");
155
- }
156
- return {
157
- name: "arrow",
158
- options: e,
159
- fn(n) {
160
- const {
161
- element: r,
162
- padding: s
163
- } = typeof e == "function" ? e(n) : e;
164
- return r && t(r) ? r.current != null ? L({
165
- element: r.current,
166
- padding: s
167
- }).fn(n) : {} : r ? L({
168
- element: r,
169
- padding: s
170
- }).fn(n) : {};
171
- }
172
- };
173
- }, fe = (e, t) => ({
174
- ...J(e),
175
- options: [e, t]
176
- }), oe = (e, t) => ({
177
- ...K(e),
178
- options: [e, t]
179
- }), se = (e, t) => ({
180
- ...X(e),
181
- options: [e, t]
182
- }), ie = (e, t) => ({
183
- ...N(e),
184
- options: [e, t]
185
- }), ue = (e, t) => ({
186
- ...Q(e),
187
- options: [e, t]
188
- }), le = (e, t) => ({
189
- ...T(e),
190
- options: [e, t]
191
- }), ce = (e, t) => ({
192
- ...ee(e),
193
- options: [e, t]
194
- });
195
12
  export {
196
- ce as arrow,
197
- me as autoUpdate,
198
- I as computePosition,
199
- ie as flip,
200
- le as hide,
201
- se as limitShift,
202
- fe as offset,
203
- pe as platform,
204
- oe as shift,
205
- ue as size,
206
- re as useFloating
13
+ p as useEscapeKeydown
207
14
  };
208
15
  //# sourceMappingURL=index.es79.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es79.js","sources":["../../../node_modules/.pnpm/@floating-ui+react-dom@2.1.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs"],"sourcesContent":["import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n"],"names":["index","useLayoutEffect","useEffect","deepEqual","a","b","length","i","keys","key","getDPR","element","roundByDPR","value","dpr","useLatestRef","ref","React","useFloating","options","placement","strategy","middleware","platform","externalReference","externalFloating","transform","whileElementsMounted","open","data","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","node","referenceRef","setFloating","floatingRef","referenceEl","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","update","config","computePosition","fullData","isMountedRef","ReactDOM","refs","elements","floatingStyles","initialStyles","x","y","arrow$1","isRef","state","padding","arrow$2","offset","deps","offset$1","shift","shift$1","limitShift","limitShift$1","flip","flip$1","size","size$1","hide","hide$1","arrow"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es79.js","sources":["../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.0_@types+react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs"],"sourcesContent":["// packages/react/use-escape-keydown/src/useEscapeKeydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","useCallbackRef","React","handleKeyDown","event"],"mappings":";;AAGA,SAASA,EAAiBC,GAAqBC,IAAgB,YAAY,UAAU;AACnF,QAAMC,IAAkBC,EAAeH,CAAmB;AAC1D,EAAAI,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAgB,CAACC,MAAU;AAC/B,MAAIA,EAAM,QAAQ,YAChBJ,EAAgBI,CAAK;AAAA,IAExB;AACD,WAAAL,EAAc,iBAAiB,WAAWI,GAAe,EAAE,SAAS,IAAM,GACnE,MAAMJ,EAAc,oBAAoB,WAAWI,GAAe,EAAE,SAAS,IAAM;AAAA,EAC9F,GAAK,CAACH,GAAiBD,CAAa,CAAC;AACrC;","x_google_ignoreList":[0]}
package/dist/index.es8.js CHANGED
@@ -1,170 +1,80 @@
1
- import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
- import { Input as f } from "./index.es28.js";
3
- import { InputErrorWrapper as u } from "./index.es29.js";
4
- import { Label as h } from "./index.es15.js";
5
- import { cn as p } from "./index.es22.js";
6
- import { useConstraints as v } from "./index.es4.js";
7
- import { Button as g } from "./index.es11.js";
8
- import { Select as N, SelectTrigger as x, SelectValue as D, SelectContent as S, SelectItem as R } from "./index.es14.js";
9
- import b from "./index.es30.js";
10
- const C = ({
11
- constraintName: i,
12
- value: a,
13
- onConstraintChange: l,
14
- disabled: s,
15
- error: n,
16
- onRemoveConstraint: o
17
- }) => {
18
- const { getConstraintDefinition: c } = v(), t = c(i);
19
- return t ? /* @__PURE__ */ e(
20
- u,
1
+ import { jsx as C } from "react/jsx-runtime";
2
+ import { createContext as h, useContext as g, useMemo as P, useRef as l } from "react";
3
+ import { ajv as R } from "./index.es23.js";
4
+ const u = h(void 0), x = ({ children: e }) => {
5
+ const r = l(
6
+ /* @__PURE__ */ new Map()
7
+ ), o = l(/* @__PURE__ */ new Map());
8
+ return /* @__PURE__ */ C(
9
+ u.Provider,
21
10
  {
22
- errorCode: n?.code,
23
- errorDescription: n?.message,
24
- showError: !!n,
25
- children: /* @__PURE__ */ r("div", { children: [
26
- /* @__PURE__ */ e(h, { className: "mb-2", htmlFor: t.name, children: t.name }),
27
- /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
28
- /* @__PURE__ */ e(
29
- f,
30
- {
31
- id: t.name,
32
- type: "number",
33
- value: a,
34
- onChange: (m) => l(Number(m.target.value)),
35
- disabled: s,
36
- min: 0,
37
- className: p({ "border-destructive": n })
38
- }
39
- ),
40
- /* @__PURE__ */ e(
41
- g,
42
- {
43
- type: "button",
44
- variant: "ghost",
45
- size: "icon",
46
- onClick: () => o(),
47
- children: /* @__PURE__ */ e(b, { className: "size-4" })
48
- }
49
- )
50
- ] }),
51
- t.description && /* @__PURE__ */ e("div", { className: "mt-2 text-sm text-gray-500", children: t.description })
52
- ] })
11
+ value: {
12
+ constraintDefinitionsMap: r.current,
13
+ constraintRenderersMap: o.current
14
+ },
15
+ children: e
53
16
  }
54
- ) : null;
55
- }, y = ({
56
- constraintName: i,
57
- value: a,
58
- onConstraintChange: l,
59
- disabled: s,
60
- error: n,
61
- onRemoveConstraint: o
62
- }) => {
63
- const { getConstraintDefinition: c } = v(), t = c(i);
64
- return t ? /* @__PURE__ */ e(
65
- u,
66
- {
67
- errorCode: n?.code,
68
- errorDescription: n?.message,
69
- showError: !!n,
70
- children: /* @__PURE__ */ r("div", { children: [
71
- /* @__PURE__ */ e(h, { className: "mb-2", htmlFor: t.name, children: t.name }),
72
- /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
73
- /* @__PURE__ */ e(
74
- f,
75
- {
76
- id: t.name,
77
- type: "text",
78
- value: a,
79
- onChange: (m) => l(m.target.value),
80
- disabled: s,
81
- placeholder: "Regular expression pattern",
82
- className: p({ "border-destructive": n })
83
- }
84
- ),
85
- /* @__PURE__ */ e(
86
- g,
87
- {
88
- type: "button",
89
- variant: "ghost",
90
- size: "icon",
91
- onClick: () => o(),
92
- children: /* @__PURE__ */ e(b, { className: "size-4" })
93
- }
94
- )
95
- ] }),
96
- t.description && /* @__PURE__ */ e("div", { className: "mt-2 text-sm text-gray-500", children: t.description })
97
- ] })
17
+ );
18
+ };
19
+ function E(e) {
20
+ const r = g(u);
21
+ if (!r)
22
+ throw new Error("usePluginSystem must be used within a PluginsProvider");
23
+ const { constraintDefinitionsMap: o, constraintRenderersMap: a } = r;
24
+ return P(() => (e.forEach((t) => {
25
+ if (t.hooks.registerConstraints && t.hooks.registerConstraints().forEach((i) => {
26
+ o.set(i.name, i);
27
+ }), t.hooks.registerRenderers) {
28
+ const s = t.hooks.registerRenderers();
29
+ Object.entries(s).forEach(([i, n]) => {
30
+ a.set(i, n);
31
+ });
98
32
  }
99
- ) : null;
100
- }, I = ({
101
- constraintName: i,
102
- value: a,
103
- onConstraintChange: l,
104
- disabled: s,
105
- error: n,
106
- onRemoveConstraint: o
107
- }) => {
108
- const { getConstraintDefinition: c } = v(), t = c(i), m = [
109
- { value: "email", label: "Email" },
110
- { value: "uri", label: "URI" },
111
- { value: "url", label: "URL" },
112
- { value: "date", label: "Date" },
113
- { value: "date-time", label: "Date-Time" },
114
- { value: "uuid", label: "UUID" },
115
- { value: "hostname", label: "Hostname" },
116
- { value: "ipv4", label: "IPv4" },
117
- { value: "ipv6", label: "IPv6" },
118
- { value: "phone", label: "Phone" }
119
- ];
120
- return t ? /* @__PURE__ */ e(
121
- u,
122
- {
123
- errorCode: n?.code,
124
- errorDescription: n?.message,
125
- showError: !!n,
126
- children: /* @__PURE__ */ r("div", { children: [
127
- /* @__PURE__ */ e(h, { className: "mb-2", htmlFor: t.name, children: t.name }),
128
- /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
129
- /* @__PURE__ */ r(
130
- N,
131
- {
132
- value: a,
133
- onValueChange: (d) => l(d),
134
- disabled: s,
135
- children: [
136
- /* @__PURE__ */ e(
137
- x,
138
- {
139
- id: t.name,
140
- className: p("flex-1", { "border-destructive": n }),
141
- children: /* @__PURE__ */ e(D, { placeholder: "Select format" })
142
- }
143
- ),
144
- /* @__PURE__ */ e(S, { children: m.map((d) => /* @__PURE__ */ e(R, { value: d.value, children: d.label }, d.value)) })
145
- ]
146
- }
147
- ),
148
- /* @__PURE__ */ e(
149
- g,
150
- {
151
- type: "button",
152
- variant: "ghost",
153
- size: "icon",
154
- onClick: () => o(),
155
- children: /* @__PURE__ */ e(b, { className: "size-4" })
156
- }
157
- )
158
- ] }),
159
- t.description && /* @__PURE__ */ e("div", { className: "mt-2 text-sm text-gray-500", children: t.description })
160
- ] })
33
+ }), {
34
+ // Check if a plugin with given ID exists
35
+ hasPlugin(t) {
36
+ return e.some((s) => s.id === t);
37
+ },
38
+ // Get a plugin by ID
39
+ getPlugin(t) {
40
+ return e.find((s) => s.id === t);
161
41
  }
162
- ) : null;
163
- }, M = C, T = C, V = y, B = I;
42
+ }), [e]);
43
+ }
44
+ const k = () => {
45
+ const e = g(u);
46
+ if (!e)
47
+ throw new Error("useConstraints must be used within a ConstraintsProvider");
48
+ const { constraintDefinitionsMap: r, constraintRenderersMap: o } = e, a = () => Array.from(r.values()), d = (n) => a().filter(
49
+ (c) => c.appliesTo.includes(n)
50
+ ), t = (n) => r.get(n);
51
+ return {
52
+ getConstraintDefinitionsForType: d,
53
+ getAllDefinitions: a,
54
+ getRendererForConstraint: (n) => o.get(n),
55
+ getConstraintDefinition: t,
56
+ validateConstraintValue: (n, f) => {
57
+ const c = t(n);
58
+ if (c) {
59
+ const v = c.schema, m = R.compile(v);
60
+ return m(f) ? { status: "success" } : {
61
+ status: "error",
62
+ code: "invalid",
63
+ message: "Invalid value",
64
+ error: m.errors
65
+ };
66
+ }
67
+ return {
68
+ status: "error",
69
+ code: "constraint-def-missing",
70
+ message: "Constraint not found"
71
+ };
72
+ }
73
+ };
74
+ };
164
75
  export {
165
- B as StringFormatRenderer,
166
- T as StringMaxLengthRenderer,
167
- M as StringMinLengthRenderer,
168
- V as StringPatternRenderer
76
+ x as PluginsProvider,
77
+ k as useConstraints,
78
+ E as usePluginSystem
169
79
  };
170
80
  //# sourceMappingURL=index.es8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es8.js","sources":["../src/packages/plugins/string.tsx"],"sourcesContent":["import { Input } from \"@/components/ui/input\";\nimport { InputErrorWrapper } from \"@/components/input-error\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport {\n BaseJSONSchemaPlugin,\n ConstraintRendererProps,\n useConstraints,\n} from \"@/packages/constraints/context\";\nimport { Button } from \"@/components/ui/button\";\nimport { X } from \"lucide-react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\n// Generic string constraint renderer for number-based constraints (minLength, maxLength)\nconst StringNumberConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<number> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={constraintDef.name}\n type=\"number\"\n value={value}\n onChange={(e) => onConstraintChange(Number(e.target.value))}\n disabled={disabled}\n min={0}\n className={cn({ \"border-destructive\": error })}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Pattern constraint renderer for regex input\nconst PatternConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<string> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={constraintDef.name}\n type=\"text\"\n value={value}\n onChange={(e) => onConstraintChange(e.target.value)}\n disabled={disabled}\n placeholder=\"Regular expression pattern\"\n className={cn({ \"border-destructive\": error })}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Format constraint renderer with predefined format options\nconst FormatConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<string> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n const formatOptions = [\n { value: \"email\", label: \"Email\" },\n { value: \"uri\", label: \"URI\" },\n { value: \"url\", label: \"URL\" },\n { value: \"date\", label: \"Date\" },\n { value: \"date-time\", label: \"Date-Time\" },\n { value: \"uuid\", label: \"UUID\" },\n { value: \"hostname\", label: \"Hostname\" },\n { value: \"ipv4\", label: \"IPv4\" },\n { value: \"ipv6\", label: \"IPv6\" },\n { value: \"phone\", label: \"Phone\" },\n ];\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Select\n value={value}\n onValueChange={(newValue) => onConstraintChange(newValue)}\n disabled={disabled}\n >\n <SelectTrigger\n id={constraintDef.name}\n className={cn(\"flex-1\", { \"border-destructive\": error })}\n >\n <SelectValue placeholder=\"Select format\" />\n </SelectTrigger>\n <SelectContent>\n {formatOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Export the renderers\nexport const StringMinLengthRenderer = StringNumberConstraintRenderer;\nexport const StringMaxLengthRenderer = StringNumberConstraintRenderer;\nexport const StringPatternRenderer = PatternConstraintRenderer;\nexport const StringFormatRenderer = FormatConstraintRenderer;\n\nconst plugin: BaseJSONSchemaPlugin = {\n id: \"string-constraints\",\n hooks: {\n registerConstraints() {\n return [\n {\n name: \"minLength\",\n label: \"Min Length\",\n appliesTo: [\"string\"],\n schema: {\n type: \"integer\",\n title: \"Minimum Length Constraint\",\n description: \"The minimum length of the string\",\n examples: [1, 5, 10],\n minimum: 0,\n },\n description: \"Constrains a string to a minimum length\",\n defaultValue: 0,\n },\n {\n name: \"maxLength\",\n label: \"Max Length\",\n appliesTo: [\"string\"],\n schema: {\n type: \"integer\",\n title: \"Maximum Length Constraint\",\n description: \"The maximum length of the string\",\n examples: [50, 100, 255],\n minimum: 0,\n },\n description: \"Constrains a string to a maximum length\",\n defaultValue: 100,\n },\n {\n name: \"pattern\",\n label: \"Pattern\",\n appliesTo: [\"string\"],\n schema: {\n type: \"string\",\n title: \"Pattern Constraint\",\n description: \"Regular expression pattern the string must match\",\n examples: [\"^[a-zA-Z0-9]+$\", \"\\\\d{3}-\\\\d{2}-\\\\d{4}\"],\n },\n description: \"Regular expression that the string must match\",\n defaultValue: \"\",\n },\n {\n name: \"format\",\n label: \"Format\",\n appliesTo: [\"string\"],\n schema: {\n type: \"string\",\n title: \"Format Constraint\",\n description: \"Predefined format the string must follow\",\n enum: [\n \"email\",\n \"uri\",\n \"url\",\n \"date\",\n \"date-time\",\n \"uuid\",\n \"hostname\",\n \"ipv4\",\n \"ipv6\",\n \"phone\",\n ],\n },\n description: \"Predefined format validation for the string\",\n defaultValue: \"email\",\n },\n ];\n },\n registerRenderers() {\n return {\n minLength: StringMinLengthRenderer,\n maxLength: StringMaxLengthRenderer,\n pattern: StringPatternRenderer,\n format: StringFormatRenderer,\n };\n },\n },\n};\n\nexport default plugin;\n"],"names":["StringNumberConstraintRenderer","constraintName","value","onConstraintChange","disabled","error","onRemoveConstraint","getConstraintDefinition","useConstraints","constraintDef","jsx","InputErrorWrapper","Label","jsxs","Input","e","cn","Button","X","PatternConstraintRenderer","FormatConstraintRenderer","formatOptions","Select","newValue","SelectTrigger","SelectValue","SelectContent","option","SelectItem","StringMinLengthRenderer","StringMaxLengthRenderer","StringPatternRenderer","StringFormatRenderer"],"mappings":";;;;;;;;;AAoBA,MAAMA,IAAiC,CAAC;AAAA,EACtC,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AACF,MAAgE;AACxD,QAAA,EAAE,yBAAAC,EAAwB,IAAIC,EAAe,GAC7CC,IAAgBF,EAAwBN,CAAc;AAE5D,SAAKQ,IAKH,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWN,GAAO;AAAA,MAClB,kBAAkBA,GAAO;AAAA,MACzB,WAAW,CAAC,CAACA;AAAA,MAEb,4BAAC,OACC,EAAA,UAAA;AAAA,QAAA,gBAAAK,EAACE,KAAM,WAAU,QAAO,SAASH,EAAc,MAC5C,YAAc,KACjB,CAAA;AAAA,QACA,gBAAAI,EAAC,OAAI,EAAA,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,IAAIL,EAAc;AAAA,cAClB,MAAK;AAAA,cACL,OAAAP;AAAA,cACA,UAAU,CAACa,MAAMZ,EAAmB,OAAOY,EAAE,OAAO,KAAK,CAAC;AAAA,cAC1D,UAAAX;AAAA,cACA,KAAK;AAAA,cACL,WAAWY,EAAG,EAAE,sBAAsBX,EAAO,CAAA;AAAA,YAAA;AAAA,UAC/C;AAAA,UACA,gBAAAK;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAMX,EAAmB;AAAA,cAElC,UAAA,gBAAAI,EAACQ,GAAE,EAAA,WAAU,SAAS,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACxB,GACF;AAAA,QACCT,EAAc,eACb,gBAAAC,EAAC,SAAI,WAAU,8BACZ,YAAc,YACjB,CAAA;AAAA,MAAA,EAEJ,CAAA;AAAA,IAAA;AAAA,EACF,IAtCO;AAwCX,GAGMS,IAA4B,CAAC;AAAA,EACjC,gBAAAlB;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AACF,MAAgE;AACxD,QAAA,EAAE,yBAAAC,EAAwB,IAAIC,EAAe,GAC7CC,IAAgBF,EAAwBN,CAAc;AAE5D,SAAKQ,IAKH,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWN,GAAO;AAAA,MAClB,kBAAkBA,GAAO;AAAA,MACzB,WAAW,CAAC,CAACA;AAAA,MAEb,4BAAC,OACC,EAAA,UAAA;AAAA,QAAA,gBAAAK,EAACE,KAAM,WAAU,QAAO,SAASH,EAAc,MAC5C,YAAc,KACjB,CAAA;AAAA,QACA,gBAAAI,EAAC,OAAI,EAAA,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,IAAIL,EAAc;AAAA,cAClB,MAAK;AAAA,cACL,OAAAP;AAAA,cACA,UAAU,CAACa,MAAMZ,EAAmBY,EAAE,OAAO,KAAK;AAAA,cAClD,UAAAX;AAAA,cACA,aAAY;AAAA,cACZ,WAAWY,EAAG,EAAE,sBAAsBX,EAAO,CAAA;AAAA,YAAA;AAAA,UAC/C;AAAA,UACA,gBAAAK;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAMX,EAAmB;AAAA,cAElC,UAAA,gBAAAI,EAACQ,GAAE,EAAA,WAAU,SAAS,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACxB,GACF;AAAA,QACCT,EAAc,eACb,gBAAAC,EAAC,SAAI,WAAU,8BACZ,YAAc,YACjB,CAAA;AAAA,MAAA,EAEJ,CAAA;AAAA,IAAA;AAAA,EACF,IAtCO;AAwCX,GAGMU,IAA2B,CAAC;AAAA,EAChC,gBAAAnB;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,oBAAAC;AACF,MAAgE;AACxD,QAAA,EAAE,yBAAAC,EAAwB,IAAIC,EAAe,GAC7CC,IAAgBF,EAAwBN,CAAc,GAEtDoB,IAAgB;AAAA,IACpB,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,IACjC,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,IAC7B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,IAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,IAC/B,EAAE,OAAO,aAAa,OAAO,YAAY;AAAA,IACzC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,IAC/B,EAAE,OAAO,YAAY,OAAO,WAAW;AAAA,IACvC,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,IAC/B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,IAC/B,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,EACnC;AAEA,SAAKZ,IAKH,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWN,GAAO;AAAA,MAClB,kBAAkBA,GAAO;AAAA,MACzB,WAAW,CAAC,CAACA;AAAA,MAEb,4BAAC,OACC,EAAA,UAAA;AAAA,QAAA,gBAAAK,EAACE,KAAM,WAAU,QAAO,SAASH,EAAc,MAC5C,YAAc,KACjB,CAAA;AAAA,QACA,gBAAAI,EAAC,OAAI,EAAA,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAA;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,OAAApB;AAAA,cACA,eAAe,CAACqB,MAAapB,EAAmBoB,CAAQ;AAAA,cACxD,UAAAnB;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAM;AAAA,kBAACc;AAAA,kBAAA;AAAA,oBACC,IAAIf,EAAc;AAAA,oBAClB,WAAWO,EAAG,UAAU,EAAE,sBAAsBX,GAAO;AAAA,oBAEvD,UAAA,gBAAAK,EAACe,GAAY,EAAA,aAAY,gBAAgB,CAAA;AAAA,kBAAA;AAAA,gBAC3C;AAAA,kCACCC,GACE,EAAA,UAAAL,EAAc,IAAI,CAACM,MACjB,gBAAAjB,EAAAkB,GAAA,EAA8B,OAAOD,EAAO,OAC1C,UAAOA,EAAA,SADOA,EAAO,KAExB,CACD,EACH,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UACA,gBAAAjB;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAMX,EAAmB;AAAA,cAElC,UAAA,gBAAAI,EAACQ,GAAE,EAAA,WAAU,SAAS,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACxB,GACF;AAAA,QACCT,EAAc,eACb,gBAAAC,EAAC,SAAI,WAAU,8BACZ,YAAc,YACjB,CAAA;AAAA,MAAA,EAEJ,CAAA;AAAA,IAAA;AAAA,EACF,IAhDO;AAkDX,GAGamB,IAA0B7B,GAC1B8B,IAA0B9B,GAC1B+B,IAAwBZ,GACxBa,IAAuBZ;"}
1
+ {"version":3,"file":"index.es8.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;"}