@satoshibits/react-json-schema-builder 1.1.3 → 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 (196) 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.cjs38.js +1 -1
  53. package/dist/index.cjs39.js +1 -1
  54. package/dist/index.cjs4.js +1 -1
  55. package/dist/index.cjs4.js.map +1 -1
  56. package/dist/index.cjs41.js +1 -1
  57. package/dist/index.cjs42.js +1 -1
  58. package/dist/index.cjs42.js.map +1 -1
  59. package/dist/index.cjs43.js +1 -1
  60. package/dist/index.cjs47.js +1 -1
  61. package/dist/index.cjs5.js +1 -1
  62. package/dist/index.cjs5.js.map +1 -1
  63. package/dist/index.cjs55.js +1 -5
  64. package/dist/index.cjs55.js.map +1 -1
  65. package/dist/index.cjs56.js +1 -1
  66. package/dist/index.cjs56.js.map +1 -1
  67. package/dist/index.cjs57.js +1 -1
  68. package/dist/index.cjs57.js.map +1 -1
  69. package/dist/index.cjs58.js +1 -1
  70. package/dist/index.cjs58.js.map +1 -1
  71. package/dist/index.cjs59.js +1 -1
  72. package/dist/index.cjs59.js.map +1 -1
  73. package/dist/index.cjs6.js +1 -1
  74. package/dist/index.cjs6.js.map +1 -1
  75. package/dist/index.cjs60.js +1 -1
  76. package/dist/index.cjs60.js.map +1 -1
  77. package/dist/index.cjs61.js +1 -1
  78. package/dist/index.cjs61.js.map +1 -1
  79. package/dist/index.cjs62.js +5 -1
  80. package/dist/index.cjs62.js.map +1 -1
  81. package/dist/index.cjs63.js +1 -1
  82. package/dist/index.cjs63.js.map +1 -1
  83. package/dist/index.cjs65.js +1 -1
  84. package/dist/index.cjs67.js +1 -1
  85. package/dist/index.cjs69.js +1 -1
  86. package/dist/index.cjs7.js +1 -1
  87. package/dist/index.cjs7.js.map +1 -1
  88. package/dist/index.cjs71.js +1 -1
  89. package/dist/index.cjs72.js +1 -1
  90. package/dist/index.cjs75.js +1 -1
  91. package/dist/index.cjs78.js +1 -1
  92. package/dist/index.cjs8.js +1 -1
  93. package/dist/index.cjs8.js.map +1 -1
  94. package/dist/index.cjs81.js +1 -1
  95. package/dist/index.cjs9.js +1 -1
  96. package/dist/index.cjs9.js.map +1 -1
  97. package/dist/index.d.mts +5 -4
  98. package/dist/index.d.mts.map +1 -1
  99. package/dist/index.es.js +18 -28
  100. package/dist/index.es10.js +22 -22
  101. package/dist/index.es10.js.map +1 -1
  102. package/dist/index.es11.js +14 -42
  103. package/dist/index.es11.js.map +1 -1
  104. package/dist/index.es12.js +5 -65
  105. package/dist/index.es12.js.map +1 -1
  106. package/dist/index.es13.js +43 -24
  107. package/dist/index.es13.js.map +1 -1
  108. package/dist/index.es14.js +21 -126
  109. package/dist/index.es14.js.map +1 -1
  110. package/dist/index.es15.js +13 -20
  111. package/dist/index.es15.js.map +1 -1
  112. package/dist/index.es16.js +129 -130
  113. package/dist/index.es16.js.map +1 -1
  114. package/dist/index.es17.js +3 -137
  115. package/dist/index.es17.js.map +1 -1
  116. package/dist/index.es18.js +20 -61
  117. package/dist/index.es18.js.map +1 -1
  118. package/dist/index.es19.js +65 -10
  119. package/dist/index.es19.js.map +1 -1
  120. package/dist/index.es2.js +156 -113
  121. package/dist/index.es2.js.map +1 -1
  122. package/dist/index.es20.js +134 -22
  123. package/dist/index.es20.js.map +1 -1
  124. package/dist/index.es21.js +131 -421
  125. package/dist/index.es21.js.map +1 -1
  126. package/dist/index.es22.js +63 -5
  127. package/dist/index.es22.js.map +1 -1
  128. package/dist/index.es23.js +11 -13
  129. package/dist/index.es23.js.map +1 -1
  130. package/dist/index.es24.js +23 -16
  131. package/dist/index.es24.js.map +1 -1
  132. package/dist/index.es25.js +428 -13
  133. package/dist/index.es25.js.map +1 -1
  134. package/dist/index.es26.js +7 -13
  135. package/dist/index.es26.js.map +1 -1
  136. package/dist/index.es27.js +9 -3
  137. package/dist/index.es27.js.map +1 -1
  138. package/dist/index.es28.js +13 -19
  139. package/dist/index.es28.js.map +1 -1
  140. package/dist/index.es29.js +19 -23
  141. package/dist/index.es29.js.map +1 -1
  142. package/dist/index.es3.js +129 -340
  143. package/dist/index.es3.js.map +1 -1
  144. package/dist/index.es30.js +4 -7
  145. package/dist/index.es30.js.map +1 -1
  146. package/dist/index.es31.js +1 -1
  147. package/dist/index.es34.js +1 -1
  148. package/dist/index.es36.js +7 -7
  149. package/dist/index.es37.js +3 -3
  150. package/dist/index.es38.js +3 -3
  151. package/dist/index.es39.js +2 -2
  152. package/dist/index.es4.js +92 -70
  153. package/dist/index.es4.js.map +1 -1
  154. package/dist/index.es41.js +2 -2
  155. package/dist/index.es42.js +4 -4
  156. package/dist/index.es43.js +6 -6
  157. package/dist/index.es47.js +4 -4
  158. package/dist/index.es5.js +225 -79
  159. package/dist/index.es5.js.map +1 -1
  160. package/dist/index.es55.js +30 -252
  161. package/dist/index.es55.js.map +1 -1
  162. package/dist/index.es56.js +26 -21
  163. package/dist/index.es56.js.map +1 -1
  164. package/dist/index.es57.js +6 -32
  165. package/dist/index.es57.js.map +1 -1
  166. package/dist/index.es58.js +62 -23
  167. package/dist/index.es58.js.map +1 -1
  168. package/dist/index.es59.js +29 -6
  169. package/dist/index.es59.js.map +1 -1
  170. package/dist/index.es6.js +117 -57
  171. package/dist/index.es6.js.map +1 -1
  172. package/dist/index.es60.js +4 -64
  173. package/dist/index.es60.js.map +1 -1
  174. package/dist/index.es61.js +24 -29
  175. package/dist/index.es61.js.map +1 -1
  176. package/dist/index.es62.js +254 -5
  177. package/dist/index.es62.js.map +1 -1
  178. package/dist/index.es63.js +21 -24
  179. package/dist/index.es63.js.map +1 -1
  180. package/dist/index.es65.js +2 -2
  181. package/dist/index.es67.js +3 -3
  182. package/dist/index.es69.js +2 -2
  183. package/dist/index.es7.js +345 -48
  184. package/dist/index.es7.js.map +1 -1
  185. package/dist/index.es71.js +4 -4
  186. package/dist/index.es72.js +1 -1
  187. package/dist/index.es75.js +1 -1
  188. package/dist/index.es78.js +1 -1
  189. package/dist/index.es8.js +73 -163
  190. package/dist/index.es8.js.map +1 -1
  191. package/dist/index.es81.js +1 -1
  192. package/dist/index.es9.js +18 -3
  193. package/dist/index.es9.js.map +1 -1
  194. package/dist/packages/builder/add-dialog.d.ts +5 -5
  195. package/dist/packages/builder/context.d.ts.map +1 -1
  196. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs20.js","sources":["../src/components/depounced-input.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from \"react\";\nimport { useDebounce } from \"use-debounce\";\nimport { Input } from \"@/components/ui/input\";\n\nexport const DebouncedInput = forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\"> & {\n onDebounce?: (newVal: string) => void;\n delay?: number;\n }\n>(({ onDebounce, type, delay = 200, value, ...props }, ref) => {\n const [inputValue, setInputValue] = useState(value);\n\n const [debouncedValue] = useDebounce(inputValue, delay);\n\n useEffect(() => {\n //prevents the initial value from being sent\n if (typeof debouncedValue === \"string\" && debouncedValue !== value) {\n onDebounce?.(debouncedValue);\n }\n }, [debouncedValue]);\n\n return (\n <Input\n {...props}\n type={type}\n value={inputValue}\n ref={ref}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n />\n );\n});\nDebouncedInput.displayName = \"DebouncedInput\";\n"],"names":["DebouncedInput","forwardRef","onDebounce","type","delay","value","props","ref","inputValue","setInputValue","useState","debouncedValue","useDebounce","useEffect","jsx","Input","e"],"mappings":"oMAIaA,EAAiBC,EAAA,WAM5B,CAAC,CAAE,WAAAC,EAAY,KAAAC,EAAM,MAAAC,EAAQ,IAAK,MAAAC,EAAO,GAAGC,CAAM,EAAGC,IAAQ,CAC7D,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAASL,CAAK,EAE5C,CAACM,CAAc,EAAIC,cAAYJ,EAAYJ,CAAK,EAEtDS,OAAAA,EAAAA,UAAU,IAAM,CAEV,OAAOF,GAAmB,UAAYA,IAAmBN,GAC3DH,IAAaS,CAAc,CAC7B,EACC,CAACA,CAAc,CAAC,EAGjBG,EAAA,IAACC,EAAA,MAAA,CACE,GAAGT,EACJ,KAAAH,EACA,MAAOK,EACP,IAAAD,EACA,SAAWS,GAAM,CACDP,EAAAO,EAAE,OAAO,KAAK,CAAA,CAC9B,CACF,CAEJ,CAAC,EACDhB,EAAe,YAAc"}
1
+ {"version":3,"file":"index.cjs20.js","sources":["../src/packages/builder/edit-dialog.tsx"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { Label } from \"@/components/ui/label\";\n\nimport type { JSONSchema7 } from \"json-schema\";\nimport { clone } from \"remeda\";\nimport { Constraint, useConstraints } from \"@/packages/constraints/context\";\nimport ConstraintsAdd from \"@/packages/constraints/constraint-add\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { z } from \"zod\";\nimport { AddFormSchema } from \"./add-dialog\";\nimport { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { OperationError } from \"./shared-types\";\nimport { Form } from \"@/components/ui/form\";\nimport { useSchema } from \"./context\";\n\nexport interface EditPropertyDialogProps {\n property: JSONSchema7;\n propertyKey: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSubmit: (\n params: Parameters<ReturnType<typeof useSchema>[\"handlePropertyChange\"]>,\n ) => void;\n}\n\nconst EditFormSchema = AddFormSchema.pick({\n constraints: true,\n property: true,\n});\n\n/**\n * Handles editing a constraints and other properties of a JSON schema property\n * that aren't shown in the main UI.\n */\nexport function EditPropertyDialog({\n open,\n onOpenChange,\n onSubmit,\n property: propertyToEdit,\n propertyKey,\n}: EditPropertyDialogProps) {\n const form = useForm<z.infer<typeof EditFormSchema>>({\n resolver: zodResolver(EditFormSchema),\n defaultValues: {\n property: propertyToEdit,\n },\n });\n\n const currentConstraints = form.watch(\"constraints\");\n\n const {\n getConstraintDefinitionsForType,\n getRendererForConstraint,\n validateConstraintValue,\n } = useConstraints();\n\n const handleSubmit = (data: z.infer<typeof EditFormSchema>) => {\n const { constraints } = data;\n const propertyUpdatesOnly: JSONSchema7 = {\n ...constraints?.reduce((acc, constraint) => {\n return {\n ...acc,\n [constraint.name]: constraint.value,\n } satisfies JSONSchema7;\n }, {}),\n };\n onSubmit([propertyKey, propertyUpdatesOnly]);\n form.reset();\n };\n\n const handleConstraintChange = (\n index: number,\n newVal: Constraint[\"value\"],\n ) => {\n const constraintsCopy = clone(currentConstraints);\n\n const constraintToChange = constraintsCopy?.[index];\n\n if (!constraintToChange) {\n form.setError(`constraints.${index}`, {\n message: \"The constraint was not found\",\n type: \"constraint_not_found\",\n });\n return;\n }\n\n const validationResult = validateConstraintValue(\n constraintToChange.name,\n newVal,\n );\n\n if (validationResult.status === \"error\") {\n let message = validationResult.message;\n if (validationResult.code === \"invalid\") {\n message = `${message}: ${validationResult.error?.map((i) => i.message).join(\", \")}`;\n }\n form.setError(`constraints.${index}`, {\n type: validationResult.code,\n message,\n });\n return;\n }\n\n //edit reference\n constraintToChange.value = newVal;\n form.setValue(\"constraints\", constraintsCopy);\n form.clearErrors(`constraints.${index}`);\n };\n\n const handleRemoveConstraint = (constraintName: Constraint[\"name\"]) => {\n if (!currentConstraints) return;\n const copy = clone(currentConstraints);\n const newConstraints = copy.filter((c) => c.name !== constraintName);\n form.setValue(\"constraints\", newConstraints);\n };\n\n const availableDefinitions = useMemo(() => {\n return getConstraintDefinitionsForType(\n typeof propertyToEdit?.type === \"string\" ? propertyToEdit.type : \"\",\n );\n }, [propertyToEdit.type]);\n\n useEffect(() => {\n //get the current constraints from the property based on the available definitions\n const newConstraints: Constraint[] = [];\n for (const constraintDef of availableDefinitions) {\n if (constraintDef.name in propertyToEdit) {\n newConstraints.push({\n name: constraintDef.name,\n value: propertyToEdit[constraintDef.name],\n });\n }\n }\n form.setValue(\"constraints\", newConstraints);\n }, [availableDefinitions]);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Edit</DialogTitle>\n <DialogDescription>\n Constraints and other properties\n </DialogDescription>\n </DialogHeader>\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(handleSubmit)}\n className=\"space-y-4\"\n data-testid=\"edit-property-form\"\n >\n {availableDefinitions.length ? (\n <div className=\"space-y-2\">\n <Label>Constraints</Label>\n <ConstraintsAdd\n addedConstraints={currentConstraints ?? []}\n availableDefinitions={availableDefinitions}\n onAdd={(newConstraints) => {\n form.setValue(\"constraints\", newConstraints);\n }}\n />\n <Separator />\n {currentConstraints?.map((constraint, i) => {\n const Renderer = getRendererForConstraint(constraint.name);\n if (!Renderer) return null;\n\n const error = form.formState.errors.constraints?.[i];\n let mappedError: OperationError | undefined;\n\n if (error) {\n mappedError = {\n code: error?.type ?? \"INVALID\",\n message: error.message ?? \"An error occurred\",\n };\n }\n\n return (\n <Renderer\n key={constraint.name}\n constraintName={constraint.name}\n value={constraint.value}\n onConstraintChange={(newVal) => {\n handleConstraintChange(i, newVal);\n }}\n onRemoveConstraint={() => {\n handleRemoveConstraint(constraint.name);\n }}\n error={mappedError}\n />\n );\n })}\n </div>\n ) : null}\n\n <DialogFooter>\n <Button type=\"submit\">Save</Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["EditFormSchema","AddFormSchema","EditPropertyDialog","open","onOpenChange","onSubmit","propertyToEdit","propertyKey","form","useForm","zodResolver","currentConstraints","getConstraintDefinitionsForType","getRendererForConstraint","validateConstraintValue","useConstraints","handleSubmit","data","constraints","propertyUpdatesOnly","acc","constraint","handleConstraintChange","index","newVal","constraintsCopy","clone","constraintToChange","validationResult","message","i","handleRemoveConstraint","constraintName","newConstraints","c","availableDefinitions","useMemo","useEffect","constraintDef","jsx","Dialog","DialogContent","jsxs","DialogHeader","DialogTitle","DialogDescription","Form","Label","ConstraintsAdd","Separator","Renderer","error","mappedError","DialogFooter","Button"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),N=require("./index.cjs11.js"),R=require("./index.cjs40.js"),m=require("./index.cjs37.js"),E=require("./index.cjs28.js"),L=require("./index.cjs15.js"),a=require("./index.cjs14.js"),k=require("./index.cjs13.js"),v=require("./index.cjs20.js"),h=require("./index.cjs10.js"),w=require("./index.cjs42.js"),M=require("./index.cjs4.js"),P=require("./index.cjs38.js"),$=require("./index.cjs39.js"),o=require("zod"),B=require("react-hook-form"),t=require("./index.cjs41.js"),d=o.z.enum(["string","number","integer","boolean","object","array","null"]),b=o.z.object({key:o.z.string().trim().min(1,{message:"Key must be at least 1 character long"}),property:o.z.object({title:o.z.string().trim().min(1,{message:"Title must be at least 1 character long"}),type:d.or(o.z.array(d)),description:o.z.string().optional(),enum:o.z.array(o.z.string().or(o.z.number()).or(o.z.null()).or(o.z.boolean()).or(o.z.record(o.z.string(),o.z.any()))).optional(),items:o.z.object({type:d.or(o.z.array(d))}).or(o.z.array(o.z.object({type:d.or(o.z.array(d))}).or(o.z.boolean()))).or(o.z.boolean()).optional()}),required:o.z.boolean().default(!1),constraints:o.z.array(o.z.custom(()=>({name:o.z.string().trim().min(1),value:o.z.any()}))).optional()});function _({open:F,onOpenChange:C,onSubmit:S}){const n=B.useForm({resolver:R.zodResolver(b),defaultValues:{key:"",property:{title:""}}}),p=n.watch("constraints"),y=n.watch("property"),z=n.watch("property.enum"),I=n.watch("property.type"),{getConstraintDefinitionsForType:f,getRendererForConstraint:q,validateConstraintValue:D}=M.useConstraints(),A=r=>{const{key:s,property:l,required:c,constraints:i}=r,u={...l,...i?.reduce((j,g)=>({...j,[g.name]:g.value}),{})};S(s,u,c),n.reset()},V=(r,s)=>{const l=h.a(p),c=l?.[r];if(!c){n.setError(`constraints.${r}`,{message:"The constraint was not found",type:"constraint_not_found"});return}const i=D(c.name,s);if(i.status==="error"){let u=i.message;i.code==="invalid"&&(u=`${u}: ${i.error?.map(j=>j.message).join(", ")}`),n.setError(`constraints.${r}`,{type:i.code,message:u});return}c.value=s,n.setValue("constraints",l),n.clearErrors(`constraints.${r}`)},T=r=>{if(!p)return;const l=h.a(p).filter(c=>c.name!==r);n.setValue("constraints",l)},x=f(typeof y?.type=="string"?y.type:"");return e.jsx(m.Dialog,{open:F,onOpenChange:C,children:e.jsxs(m.DialogContent,{"data-testid":"add-property-dialog",children:[e.jsxs(m.DialogHeader,{children:[e.jsx(m.DialogTitle,{children:"Add"}),e.jsx(m.DialogDescription,{children:"Required property values and constraints"})]}),e.jsx(t.Form,{...n,children:e.jsxs("form",{onSubmit:r=>{r.stopPropagation(),r.preventDefault(),n.handleSubmit(A)(r)},className:"space-y-4","data-testid":"add-property-form",id:"add-property-form",children:[e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"key",render:({field:r})=>{const{onChange:s,...l}=r;return e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Property Key"}),e.jsx(t.FormControl,{children:e.jsx(v.DebouncedInput,{...l,onDebounce:c=>s(c)})}),e.jsx(t.FormMessage,{})]})}})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.title",render:({field:r})=>{const{onChange:s,...l}=r;return e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Property Title"}),e.jsx(t.FormControl,{children:e.jsx(v.DebouncedInput,{...l,onDebounce:c=>s(c)})}),e.jsx(t.FormMessage,{})]})}})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.type",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Type"}),e.jsx(t.FormControl,{children:e.jsxs(a.Select,{value:Array.isArray(r.value)?void 0:r.value,onValueChange:s=>{s==="enum"?n.setValue("property.enum",[]):n.setValue("property.enum",void 0),r.value==="array"&&s!=="array"&&(n.clearErrors("property.items"),n.setValue("property.items",void 0)),r.onChange(s)},children:[e.jsx(a.SelectTrigger,{className:"w-full","aria-label":"Select type",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"string",children:"string"}),e.jsx(a.SelectItem,{value:"number",children:"number"}),e.jsx(a.SelectItem,{value:"integer",children:"integer"}),e.jsx(a.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(a.SelectItem,{value:"object",children:"object"}),e.jsx(a.SelectItem,{value:"array",children:"array"}),e.jsx(a.SelectItem,{value:"null",children:"null"})]})]})}),e.jsx(t.FormMessage,{})]})})}),I==="array"&&e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.items.type",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Items of type"}),e.jsx(t.FormControl,{children:e.jsxs(a.Select,{value:Array.isArray(r.value)?void 0:r.value,onValueChange:s=>{n.clearErrors("property.items.type"),n.setValue("property.items.type",s)},children:[e.jsx(a.SelectTrigger,{className:"w-full","aria-label":"Select items of type",children:e.jsx(a.SelectValue,{placeholder:"Select item type"})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"string",children:"string"}),e.jsx(a.SelectItem,{value:"number",children:"number"}),e.jsx(a.SelectItem,{value:"integer",children:"integer"}),e.jsx(a.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(a.SelectItem,{value:"object",children:"object"}),e.jsx(a.SelectItem,{value:"array",children:"array"}),e.jsx(a.SelectItem,{value:"null",children:"null"})]})]})}),e.jsx(t.FormMessage,{})]})})}),e.jsx("div",{className:"flex items-center space-x-2",children:e.jsx(t.FormField,{control:n.control,name:"required",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormControl,{children:e.jsx(k.Switch,{checked:r.value,onCheckedChange:s=>r.onChange(s)})}),e.jsx(t.FormLabel,{children:"Required"}),e.jsx(t.FormMessage,{})]})})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.description",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Description"}),e.jsx(t.FormControl,{children:e.jsx(E.Input,{...r})}),e.jsx(t.FormMessage,{})]})})}),z?e.jsx(t.FormField,{control:n.control,name:"property.enum",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Enum"}),e.jsx(t.FormControl,{children:e.jsx(w.default,{values:r.value?.filter(s=>typeof s=="string")??[],onAddValue:s=>{const l=[];r.value&&l.push(...r.value),l.push(s),r.onChange(l)},onRemoveValue:s=>{const l=h.a(r.value??[]);l.splice(s,1),r.onChange(l)}})}),e.jsx(t.FormMessage,{})]})}):null,x.length?e.jsxs("div",{className:"space-y-2",children:[e.jsx(L.Label,{children:"Constraints"}),e.jsx(P.default,{addedConstraints:p??[],availableDefinitions:x,onAdd:r=>{n.setValue("constraints",r)}}),e.jsx($.Separator,{}),p?.map((r,s)=>{const l=q(r.name);if(!l)return null;const c=n.formState.errors.constraints?.[s];let i;return c&&(i={code:c?.type??"INVALID",message:c.message??"An error occurred"}),e.jsx(l,{constraintName:r.name,value:r.value,onConstraintChange:u=>{V(s,u)},onRemoveConstraint:()=>{T(r.name)},error:i},r.name)})]}):null,e.jsx(m.DialogFooter,{children:e.jsx(N.Button,{type:"submit",form:"add-property-form",children:"Add Property"})})]})})]})})}exports.AddFormSchema=b;exports.AddPropertyDialog=_;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),l=require("./index.cjs47.js"),o=require("./index.cjs12.js"),r=require("./index.cjs13.js");function s({...t}){return a.jsx(l.Root,{"data-slot":"alert-dialog",...t})}function n({...t}){return a.jsx(l.Portal,{"data-slot":"alert-dialog-portal",...t})}function i({className:t,...e}){return a.jsx(l.Overlay,{"data-slot":"alert-dialog-overlay",className:o.cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",t),...e})}function d({className:t,...e}){return a.jsxs(n,{children:[a.jsx(i,{}),a.jsx(l.Content,{"data-slot":"alert-dialog-content",className:o.cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...e})]})}function c({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-header",className:o.cn("flex flex-col gap-2 text-center sm:text-left",t),...e})}function u({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-footer",className:o.cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...e})}function g({className:t,...e}){return a.jsx(l.Title,{"data-slot":"alert-dialog-title",className:o.cn("text-lg font-semibold",t),...e})}function f({className:t,...e}){return a.jsx(l.Description,{"data-slot":"alert-dialog-description",className:o.cn("text-muted-foreground text-sm",t),...e})}function x({className:t,...e}){return a.jsx(l.Action,{className:o.cn(r.buttonVariants(),t),...e})}function m({className:t,...e}){return a.jsx(l.Cancel,{className:o.cn(r.buttonVariants({variant:"outline"}),t),...e})}exports.AlertDialog=s;exports.AlertDialogAction=x;exports.AlertDialogCancel=m;exports.AlertDialogContent=d;exports.AlertDialogDescription=f;exports.AlertDialogFooter=u;exports.AlertDialogHeader=c;exports.AlertDialogOverlay=i;exports.AlertDialogPortal=n;exports.AlertDialogTitle=g;
2
2
  //# sourceMappingURL=index.cjs21.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs21.js","sources":["../src/packages/builder/add-dialog.tsx"],"sourcesContent":["import { Button } from \"@/components/ui/button\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Switch } from \"@/components/ui/switch\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\nimport { DebouncedInput } from \"@/components/depounced-input\";\nimport { clone } from \"remeda\";\nimport MultiInput from \"@/components/multi-input\";\nimport { Constraint, useConstraints } from \"@/packages/constraints/context\";\nimport ConstraintsAdd from \"@/packages/constraints/constraint-add\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { z } from \"zod\";\nimport { useForm } from \"react-hook-form\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form\";\nimport type { OperationError } from \"./shared-types\";\n\nexport interface AddPropertyDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSubmit: (key: string, property: JSONSchema7, required: boolean) => void;\n}\n\nconst zodJsonTypes = z.enum([\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"object\",\n \"array\",\n \"null\",\n]);\n\nexport const AddFormSchema = z.object({\n key: z\n .string()\n .trim()\n .min(1, { message: \"Key must be at least 1 character long\" }),\n property: z.object({\n title: z\n .string()\n .trim()\n .min(1, { message: \"Title must be at least 1 character long\" }),\n type: zodJsonTypes.or(z.array(zodJsonTypes)),\n description: z.string().optional(),\n enum: z\n .array(\n z\n .string()\n .or(z.number())\n .or(z.null())\n .or(z.boolean())\n .or(z.record(z.string(), z.any())),\n )\n .optional(),\n items: z\n .object({\n type: zodJsonTypes.or(z.array(zodJsonTypes)),\n })\n //only to satisfy the other types but we actually don't handle it\n .or(\n z.array(\n z\n .object({ type: zodJsonTypes.or(z.array(zodJsonTypes)) })\n .or(z.boolean()),\n ),\n )\n .or(z.boolean())\n .optional(),\n }),\n required: z.boolean().default(false),\n constraints: z\n .array(\n z.custom<Constraint>(() => ({\n name: z.string().trim().min(1),\n value: z.any(),\n })),\n )\n .optional(),\n});\n\n/**\n * Handles adding a property to a parent JSON schema's \"properties\".\n * This means you are working under a child property.\n */\nexport function AddPropertyDialog({\n open,\n onOpenChange,\n onSubmit,\n}: AddPropertyDialogProps) {\n const form = useForm<z.infer<typeof AddFormSchema>>({\n resolver: zodResolver(AddFormSchema),\n defaultValues: {\n key: \"\",\n property: {\n title: \"\",\n },\n },\n });\n\n const currentConstraints = form.watch(\"constraints\");\n const currentProperty = form.watch(\"property\");\n const currentEnum = form.watch(\"property.enum\");\n const currentType = form.watch(\"property.type\");\n\n const {\n getConstraintDefinitionsForType,\n getRendererForConstraint,\n validateConstraintValue,\n } = useConstraints();\n\n const handleSubmit = (data: z.infer<typeof AddFormSchema>) => {\n const { key, property, required, constraints } = data;\n const propertyToSubmit: JSONSchema7 = {\n ...property,\n ...constraints?.reduce((acc, constraint) => {\n return {\n ...acc,\n [constraint.name]: constraint.value,\n } satisfies JSONSchema7;\n }, {}),\n };\n onSubmit(key, propertyToSubmit, required);\n form.reset();\n };\n\n const handleConstraintChange = (\n index: number,\n newVal: Constraint[\"value\"],\n ) => {\n const constraintsCopy = clone(currentConstraints);\n\n const constraintToChange = constraintsCopy?.[index];\n\n if (!constraintToChange) {\n form.setError(`constraints.${index}`, {\n message: \"The constraint was not found\",\n type: \"constraint_not_found\",\n });\n return;\n }\n\n const validationResult = validateConstraintValue(\n constraintToChange.name,\n newVal,\n );\n\n if (validationResult.status === \"error\") {\n let message = validationResult.message;\n if (validationResult.code === \"invalid\") {\n message = `${message}: ${validationResult.error?.map((i) => i.message).join(\", \")}`;\n }\n form.setError(`constraints.${index}`, {\n type: validationResult.code,\n message,\n });\n return;\n }\n\n //edit reference\n constraintToChange.value = newVal;\n form.setValue(\"constraints\", constraintsCopy);\n form.clearErrors(`constraints.${index}`);\n };\n\n const handleRemoveConstraint = (constraintName: Constraint[\"name\"]) => {\n if (!currentConstraints) return;\n const copy = clone(currentConstraints);\n const newConstraints = copy.filter((c) => c.name !== constraintName);\n form.setValue(\"constraints\", newConstraints);\n };\n\n const availableDefinitions = getConstraintDefinitionsForType(\n typeof currentProperty?.type === \"string\" ? currentProperty.type : \"\",\n );\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent data-testid=\"add-property-dialog\">\n <DialogHeader>\n <DialogTitle>Add</DialogTitle>\n <DialogDescription>\n Required property values and constraints\n </DialogDescription>\n </DialogHeader>\n <Form {...form}>\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n e.preventDefault();\n void form.handleSubmit(handleSubmit)(e);\n }}\n className=\"space-y-4\"\n data-testid=\"add-property-form\"\n id=\"add-property-form\"\n >\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"key\"\n render={({ field }) => {\n // Pull the onChange since debounced input should\n // be calling onDebounce instead\n const { onChange, ...rest } = field;\n\n return (\n <FormItem>\n <FormLabel>Property Key</FormLabel>\n <FormControl>\n <DebouncedInput\n {...rest}\n onDebounce={(newVal) => onChange(newVal)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.title\"\n render={({ field }) => {\n const { onChange, ...rest } = field;\n return (\n <FormItem>\n <FormLabel>Property Title</FormLabel>\n <FormControl>\n <DebouncedInput\n {...rest}\n onDebounce={(newVal) => onChange(newVal)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.type\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Type</FormLabel>\n <FormControl>\n <Select\n value={\n !Array.isArray(field.value)\n ? field.value\n : undefined\n }\n onValueChange={(newVal) => {\n if (newVal === \"enum\") {\n form.setValue(\"property.enum\", []);\n } else {\n form.setValue(\"property.enum\", undefined);\n }\n\n // If changing away from array, clear any array item errors\n if (field.value === \"array\" && newVal !== \"array\") {\n form.clearErrors(\"property.items\");\n form.setValue(\"property.items\", undefined);\n }\n\n field.onChange(newVal);\n }}\n >\n <SelectTrigger\n className=\"w-full\"\n aria-label=\"Select type\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n value={\"string\" satisfies JSONSchema7TypeName}\n >\n string\n </SelectItem>\n <SelectItem\n value={\"number\" satisfies JSONSchema7TypeName}\n >\n number\n </SelectItem>\n <SelectItem\n value={\"integer\" satisfies JSONSchema7TypeName}\n >\n integer\n </SelectItem>\n <SelectItem\n value={\"boolean\" satisfies JSONSchema7TypeName}\n >\n boolean\n </SelectItem>\n <SelectItem\n value={\"object\" satisfies JSONSchema7TypeName}\n >\n object\n </SelectItem>\n <SelectItem\n value={\"array\" satisfies JSONSchema7TypeName}\n >\n array\n </SelectItem>\n <SelectItem\n value={\"null\" satisfies JSONSchema7TypeName}\n >\n null\n </SelectItem>\n </SelectContent>\n </Select>\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n\n {/* Array Items Type selector */}\n {currentType === \"array\" && (\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.items.type\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Items of type</FormLabel>\n <FormControl>\n <Select\n value={\n !Array.isArray(field.value)\n ? field.value\n : undefined\n }\n onValueChange={(newVal) => {\n form.clearErrors(\"property.items.type\");\n form.setValue(\n \"property.items.type\",\n newVal as JSONSchema7TypeName,\n );\n }}\n >\n <SelectTrigger\n className=\"w-full\"\n aria-label=\"Select items of type\"\n >\n <SelectValue placeholder=\"Select item type\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n value={\"string\" satisfies JSONSchema7TypeName}\n >\n string\n </SelectItem>\n <SelectItem\n value={\"number\" satisfies JSONSchema7TypeName}\n >\n number\n </SelectItem>\n <SelectItem\n value={\"integer\" satisfies JSONSchema7TypeName}\n >\n integer\n </SelectItem>\n <SelectItem\n value={\"boolean\" satisfies JSONSchema7TypeName}\n >\n boolean\n </SelectItem>\n <SelectItem\n value={\"object\" satisfies JSONSchema7TypeName}\n >\n object\n </SelectItem>\n <SelectItem\n value={\"array\" satisfies JSONSchema7TypeName}\n >\n array\n </SelectItem>\n <SelectItem\n value={\"null\" satisfies JSONSchema7TypeName}\n >\n null\n </SelectItem>\n </SelectContent>\n </Select>\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n )}\n\n <div className=\"flex items-center space-x-2\">\n <FormField\n control={form.control}\n name=\"required\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormControl>\n <Switch\n checked={field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n />\n </FormControl>\n <FormLabel>Required</FormLabel>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.description\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Description</FormLabel>\n <FormControl>\n <Input {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n {currentEnum ? (\n <FormField\n control={form.control}\n name=\"property.enum\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Enum</FormLabel>\n <FormControl>\n <MultiInput\n values={\n field.value?.filter((i) => typeof i === \"string\") ??\n []\n }\n onAddValue={(newVal) => {\n const updates = [];\n if (field.value) {\n updates.push(...field.value);\n }\n updates.push(newVal);\n field.onChange(updates);\n }}\n onRemoveValue={(index) => {\n const newEnums = clone(field.value ?? []);\n newEnums.splice(index, 1);\n field.onChange(newEnums);\n }}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n ) : null}\n\n {availableDefinitions.length ? (\n <div className=\"space-y-2\">\n <Label>Constraints</Label>\n <ConstraintsAdd\n addedConstraints={currentConstraints ?? []}\n availableDefinitions={availableDefinitions}\n onAdd={(newConstraints) => {\n form.setValue(\"constraints\", newConstraints);\n }}\n />\n <Separator />\n {currentConstraints?.map((constraint, i) => {\n const Renderer = getRendererForConstraint(constraint.name);\n if (!Renderer) return null;\n\n const error = form.formState.errors.constraints?.[i];\n let mappedError: OperationError | undefined;\n\n if (error) {\n mappedError = {\n code: error?.type ?? \"INVALID\",\n message: error.message ?? \"An error occurred\",\n };\n }\n\n return (\n <Renderer\n key={constraint.name}\n constraintName={constraint.name}\n value={constraint.value}\n onConstraintChange={(newVal) => {\n handleConstraintChange(i, newVal);\n }}\n onRemoveConstraint={() => {\n handleRemoveConstraint(constraint.name);\n }}\n error={mappedError}\n />\n );\n })}\n </div>\n ) : null}\n\n <DialogFooter>\n <Button type=\"submit\" form=\"add-property-form\">\n Add Property\n </Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["zodJsonTypes","z","AddFormSchema","AddPropertyDialog","open","onOpenChange","onSubmit","form","useForm","zodResolver","currentConstraints","currentProperty","currentEnum","currentType","getConstraintDefinitionsForType","getRendererForConstraint","validateConstraintValue","useConstraints","handleSubmit","data","key","property","required","constraints","propertyToSubmit","acc","constraint","handleConstraintChange","index","newVal","constraintsCopy","clone","constraintToChange","validationResult","message","i","handleRemoveConstraint","constraintName","newConstraints","availableDefinitions","Dialog","jsxs","DialogContent","DialogHeader","jsx","DialogTitle","DialogDescription","Form","e","FormField","field","onChange","rest","FormItem","FormLabel","FormControl","DebouncedInput","FormMessage","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Switch","checked","Input","MultiInput","updates","newEnums","Label","ConstraintsAdd","Separator","Renderer","error","mappedError","DialogFooter","Button"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs21.js","sources":["../src/components/ui/alert-dialog.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n"],"names":["AlertDialog","props","AlertDialogPrimitive.Root","AlertDialogPortal","AlertDialogPrimitive.Portal","AlertDialogOverlay","className","jsx","AlertDialogPrimitive.Overlay","cn","AlertDialogContent","AlertDialogPrimitive.Content","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogPrimitive.Title","AlertDialogDescription","AlertDialogPrimitive.Description","AlertDialogAction","AlertDialogPrimitive.Action","buttonVariants","AlertDialogCancel","AlertDialogPrimitive.Cancel"],"mappings":"+MAMA,SAASA,EAAY,CACnB,GAAGC,CACL,EAA2D,CACzD,aAAQC,EAAAA,KAAA,CAA0B,YAAU,eAAgB,GAAGD,EAAO,CACxE,CAUA,SAASE,EAAkB,CACzB,GAAGF,CACL,EAA6D,CAC3D,aACGG,EAAAA,OAAA,CAA4B,YAAU,sBAAuB,GAAGH,EAAO,CAE5E,CAEA,SAASI,EAAmB,CAC1B,UAAAC,EACA,GAAGL,CACL,EAA8D,CAE1D,OAAAM,EAAA,IAACC,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWC,EAAA,GACT,yJACAH,CACF,EACC,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASS,EAAmB,CAC1B,UAAAJ,EACA,GAAGL,CACL,EAA8D,CAC5D,cACGE,EACC,CAAA,SAAA,CAAAI,EAAA,IAACF,EAAmB,EAAA,EACpBE,EAAA,IAACI,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWF,EAAA,GACT,8WACAH,CACF,EACC,GAAGL,CAAA,CAAA,CACN,EACF,CAEJ,CAEA,SAASW,EAAkB,CACzB,UAAAN,EACA,GAAGL,CACL,EAAgC,CAE5B,OAAAM,EAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWE,EAAAA,GAAG,+CAAgDH,CAAS,EACtE,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASY,EAAkB,CACzB,UAAAP,EACA,GAAGL,CACL,EAAgC,CAE5B,OAAAM,EAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWE,EAAA,GACT,yDACAH,CACF,EACC,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASa,EAAiB,CACxB,UAAAR,EACA,GAAGL,CACL,EAA4D,CAExD,OAAAM,EAAA,IAACQ,EAAqB,MAArB,CACC,YAAU,qBACV,UAAWN,EAAAA,GAAG,wBAAyBH,CAAS,EAC/C,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASe,EAAuB,CAC9B,UAAAV,EACA,GAAGL,CACL,EAAkE,CAE9D,OAAAM,EAAA,IAACU,EAAqB,YAArB,CACC,YAAU,2BACV,UAAWR,EAAAA,GAAG,gCAAiCH,CAAS,EACvD,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASiB,EAAkB,CACzB,UAAAZ,EACA,GAAGL,CACL,EAA6D,CAEzD,OAAAM,EAAA,IAACY,EAAqB,OAArB,CACC,UAAWV,EAAA,GAAGW,iBAAe,EAAGd,CAAS,EACxC,GAAGL,CAAA,CACN,CAEJ,CAEA,SAASoB,EAAkB,CACzB,UAAAf,EACA,GAAGL,CACL,EAA6D,CAEzD,OAAAM,EAAA,IAACe,EAAqB,OAArB,CACC,UAAWb,KAAGW,iBAAe,CAAE,QAAS,SAAU,CAAC,EAAGd,CAAS,EAC9D,GAAGL,CAAA,CACN,CAEJ"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index.cjs32.js"),t=require("./index.cjs33.js");function n(...e){return t.twMerge(r.clsx(e))}exports.cn=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),i=require("./index.cjs35.js"),a=require("./index.cjs12.js"),l=i.cva("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-background text-foreground",destructive:"text-destructive-foreground [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-foreground/80"}},defaultVariants:{variant:"default"}});function n({className:t,variant:e,...s}){return r.jsx("div",{"data-slot":"alert",role:"alert",className:a.cn(l({variant:e}),t),...s})}function o({className:t,...e}){return r.jsx("div",{"data-slot":"alert-title",className:a.cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",t),...e})}function c({className:t,...e}){return r.jsx("div",{"data-slot":"alert-description",className:a.cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...e})}exports.Alert=n;exports.AlertDescription=c;exports.AlertTitle=o;
2
2
  //# sourceMappingURL=index.cjs22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs22.js","sources":["../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n"],"names":["cn","inputs","twMerge","clsx"],"mappings":"kJAGO,SAASA,KAAMC,EAAsB,CACnC,OAAAC,EAAA,QAAQC,OAAKF,CAAM,CAAC,CAC7B"}
1
+ {"version":3,"file":"index.cjs22.js","sources":["../src/components/ui/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"text-destructive-foreground [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-foreground/80\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription"],"mappings":"iLAKMA,EAAgBC,EAAA,IACpB,oOACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,gCACT,YACE,iHAAA,CAEN,EACA,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAqE,CAEjE,OAAAC,EAAA,IAAC,MAAA,CACC,YAAU,QACV,KAAK,QACL,UAAWC,EAAG,GAAAP,EAAc,CAAE,QAAAI,CAAS,CAAA,EAAGD,CAAS,EAClD,GAAGE,CAAA,CACN,CAEJ,CAEA,SAASG,EAAW,CAAE,UAAAL,EAAW,GAAGE,GAAsC,CAEtE,OAAAC,EAAA,IAAC,MAAA,CACC,YAAU,cACV,UAAWC,EAAA,GACT,8DACAJ,CACF,EACC,GAAGE,CAAA,CACN,CAEJ,CAEA,SAASI,EAAiB,CACxB,UAAAN,EACA,GAAGE,CACL,EAAgC,CAE5B,OAAAC,EAAA,IAAC,MAAA,CACC,YAAU,oBACV,UAAWC,EAAA,GACT,iGACAJ,CACF,EACC,GAAGE,CAAA,CACN,CAEJ"}
@@ -1,7 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./index.cjs49.js");/**
2
- * @license lucide-react v0.477.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const e=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],o=t.default("Plus",e);exports.__iconNode=e;exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("ajv"),t=new s({allErrors:!0});function n(r){const e=t.getSchema("http://json-schema.org/draft-07/schema#");if(!e?.(r)){const o=e?.errors?.map(a=>`${a.instancePath} ${a.message}`).join(", ");throw new Error(`Schema validation error: ${o}`)}}exports.ajv=t;exports.validateSchema=n;
7
2
  //# sourceMappingURL=index.cjs23.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs23.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/plus.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"Plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.js.map\n"],"names":["__iconNode","Plus","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAU,CAAA,CAC3C,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs23.js","sources":["../src/packages/builder/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { faker } from \"@faker-js/faker\";\nimport Ajv from \"ajv\";\n\nimport type { JSONSchema7 } from \"json-schema\";\n\n// Export AJV instance for reuse\nexport const ajv = new Ajv({ allErrors: true });\n\n/**\n * Validates a JSON schema against the JSON Schema Draft 7 specification\n * @param schema Schema to validate\n * @throws Error if the schema is invalid\n */\nexport function validateSchema(schema: JSONSchema7) {\n const validate = ajv.getSchema(\"http://json-schema.org/draft-07/schema#\");\n const valid = validate?.(schema);\n\n if (!valid) {\n const errorMessages = validate?.errors\n ?.map((err) => `${err.instancePath} ${err.message}`)\n .join(\", \");\n\n throw new Error(`Schema validation error: ${errorMessages}`);\n }\n}\n\n// Test helpers\nexport const createTestSchema = (overrides = {}): JSONSchema7 => ({\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n title: \"Test Schema\",\n properties: {\n name: {\n type: \"string\",\n title: \"Name\",\n },\n age: {\n type: \"integer\",\n title: \"Age\",\n },\n address: {\n type: \"object\",\n title: \"Address\",\n properties: {\n street: {\n type: \"string\",\n title: \"Street\",\n },\n city: {\n type: \"string\",\n title: \"City\",\n },\n },\n },\n tags: {\n type: \"array\",\n title: \"Tags\",\n items: {\n type: \"string\",\n },\n },\n },\n required: [\"name\"],\n ...overrides,\n});\n\ntype SampleDataType =\n | string\n | number\n | boolean\n | undefined\n | null\n | Record<string, any>;\n\n/**\n * Generate sample data for a JSON schema\n * @param schema JSON Schema to generate data for\n * @returns Sample data that conforms to the schema\n */\nexport const generateSampleData = (\n schema: JSONSchema7,\n): SampleDataType | SampleDataType[] => {\n if (!schema) return undefined;\n\n // Handle schema references (not implemented in this basic version)\n if (schema.$ref) {\n // In a complete implementation, this would resolve the reference\n return \"Reference not resolved\";\n }\n\n // Handle different types\n switch (schema.type) {\n case \"object\":\n return generateObjectData(schema);\n case \"array\":\n return generateArrayData(schema);\n case \"string\":\n return generateStringData(schema);\n case \"number\":\n case \"integer\":\n return generateNumberData(schema);\n case \"boolean\":\n return generateBooleanData();\n case \"null\":\n return null;\n default:\n // Handle schemas with multiple types or no type specified\n if (Array.isArray(schema.type) && schema.type.length > 0) {\n // Use the first type as default\n const primaryType = schema.type[0];\n const newSchema = { ...schema, type: primaryType };\n return generateSampleData(newSchema);\n }\n // If no type is specified, default to object\n if (schema.properties) {\n return generateObjectData({ ...schema, type: \"object\" });\n }\n // Fall back to a string if we can't determine the type\n return faker.lorem.word();\n }\n};\n\n/**\n * Generate sample data for an object schema\n */\nconst generateObjectData = (schema: JSONSchema7): Record<string, any> => {\n const result: Record<string, any> = {};\n\n if (!schema.properties) return result;\n\n // Process each property in the schema\n Object.entries(schema.properties).forEach(([key, propSchema]) => {\n // Only include required fields and some random non-required fields\n const isRequired =\n Array.isArray(schema.required) && schema.required.includes(key);\n const includeField = isRequired ?? Math.random() > 0.3; // 70% chance to include non-required fields\n\n if (includeField && typeof propSchema !== \"boolean\") {\n // Handle default values\n if (propSchema.default !== undefined) {\n result[key] = propSchema.default;\n } else {\n result[key] = generateSampleData(propSchema);\n }\n }\n });\n\n return result;\n};\n\n/**\n * Generate sample data for an array schema\n */\nconst generateArrayData = (schema: JSONSchema7) => {\n if (!schema.items) return [];\n\n // Determine array length\n const minItems = schema.minItems ?? 1;\n const maxItems = schema.maxItems ?? minItems + 3;\n const count = faker.number.int({ min: minItems, max: maxItems });\n\n const result = [];\n const itemSchema = Array.isArray(schema.items)\n ? schema.items[0]\n : schema.items;\n\n // Generate items\n if (typeof itemSchema !== \"boolean\" && itemSchema) {\n for (let i = 0; i < count; i++) {\n result.push(generateSampleData(itemSchema));\n }\n }\n\n return result;\n};\n\n/**\n * Generate sample data for a string schema\n */\nconst generateStringData = (schema: JSONSchema7): string => {\n if (schema.enum && Array.isArray(schema.enum)) {\n // Pick a random value from the enum\n return schema.enum[\n Math.floor(Math.random() * schema.enum.length)\n ] as string;\n }\n\n // Handle string formats\n if (schema.format) {\n switch (schema.format) {\n case \"email\":\n return faker.internet.email();\n case \"uri\":\n case \"url\":\n return faker.internet.url();\n case \"date\":\n return faker.date.past().toISOString().split(\"T\")[0]!;\n case \"date-time\":\n return faker.date.past().toISOString();\n case \"uuid\":\n return faker.string.uuid();\n case \"hostname\":\n return faker.internet.domainName();\n case \"ipv4\":\n return faker.internet.ip();\n case \"ipv6\":\n return faker.internet.ipv6();\n case \"phone\":\n return faker.phone.number();\n default:\n return faker.lorem.word();\n }\n }\n\n // Handle patterns\n if (schema.pattern) {\n try {\n // Basic implementation for simple patterns\n // For complex patterns, consider using a library like randexp\n if (schema.pattern.includes(\"\\\\d\")) {\n return faker.string.alphanumeric(10);\n }\n return faker.lorem.word();\n } catch {\n return faker.lorem.word();\n }\n }\n\n // Handle length constraints\n const minLength = schema.minLength ?? 3;\n const maxLength = schema.maxLength ?? 12;\n\n return faker.string.alphanumeric({\n length: { min: minLength, max: maxLength },\n });\n};\n\n/**\n * Generate sample data for a number schema\n */\nconst generateNumberData = (schema: JSONSchema7): number => {\n if (schema.enum && Array.isArray(schema.enum)) {\n return schema.enum[\n Math.floor(Math.random() * schema.enum.length)\n ] as number;\n }\n\n const isInteger = schema.type === \"integer\";\n const minimum =\n typeof schema.minimum === \"number\" ? schema.minimum : isInteger ? 0 : 0.0;\n const maximum =\n typeof schema.maximum === \"number\"\n ? schema.maximum\n : isInteger\n ? 100\n : 100.0;\n\n if (isInteger) {\n return faker.number.int({ min: minimum, max: maximum });\n }\n\n return faker.number.float({ min: minimum, max: maximum, fractionDigits: 2 });\n};\n\n/**\n * Generate sample data for a boolean schema\n */\nconst generateBooleanData = (): boolean => {\n return faker.datatype.boolean();\n};\n"],"names":["ajv","Ajv","validateSchema","schema","validate","errorMessages","err"],"mappings":"uGAOaA,EAAM,IAAIC,EAAI,CAAE,UAAW,EAAM,CAAA,EAOvC,SAASC,EAAeC,EAAqB,CAC5C,MAAAC,EAAWJ,EAAI,UAAU,yCAAyC,EAGxE,GAAI,CAFUI,IAAWD,CAAM,EAEnB,CACV,MAAME,EAAgBD,GAAU,QAC5B,IAAKE,GAAQ,GAAGA,EAAI,YAAY,IAAIA,EAAI,OAAO,EAAE,EAClD,KAAK,IAAI,EAEZ,MAAM,IAAI,MAAM,4BAA4BD,CAAa,EAAE,CAAA,CAE/D"}
@@ -1,7 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./index.cjs49.js");/**
2
- * @license lucide-react v0.477.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const e=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],c=t.default("Trash2",e);exports.__iconNode=e;exports.default=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),t=require("react"),b=require("./index.cjs48.js"),f=require("./index.cjs9.js"),o=t.forwardRef(({onDebounce:r,type:s,delay:c=200,value:u,...i},a)=>{const[n,d]=t.useState(u),[e]=b.useDebounce(n,c);return t.useEffect(()=>{typeof e=="string"&&e!==u&&r?.(e)},[e]),l.jsx(f.Input,{...i,type:s,value:n,ref:a,onChange:p=>{d(p.target.value)}})});o.displayName="DebouncedInput";exports.DebouncedInput=o;
7
2
  //# sourceMappingURL=index.cjs24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs24.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/trash-2.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }],\n [\"line\", { x1: \"10\", x2: \"10\", y1: \"11\", y2: \"17\", key: \"1uufr5\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"11\", y2: \"17\", key: \"xtxkd\" }]\n];\nconst Trash2 = createLucideIcon(\"Trash2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n"],"names":["__iconNode","Trash2","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,EAAG,wCAAyC,IAAK,QAAQ,CAAE,EACtE,CAAC,OAAQ,CAAE,EAAG,qCAAsC,IAAK,QAAQ,CAAE,EACnE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,EAClE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,OAAS,CAAA,CACnE,EACMC,EAASC,EAAAA,QAAiB,SAAUF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs24.js","sources":["../src/components/depounced-input.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from \"react\";\nimport { useDebounce } from \"use-debounce\";\nimport { Input } from \"@/components/ui/input\";\n\nexport const DebouncedInput = forwardRef<\n HTMLInputElement,\n React.ComponentProps<\"input\"> & {\n onDebounce?: (newVal: string) => void;\n delay?: number;\n }\n>(({ onDebounce, type, delay = 200, value, ...props }, ref) => {\n const [inputValue, setInputValue] = useState(value);\n\n const [debouncedValue] = useDebounce(inputValue, delay);\n\n useEffect(() => {\n //prevents the initial value from being sent\n if (typeof debouncedValue === \"string\" && debouncedValue !== value) {\n onDebounce?.(debouncedValue);\n }\n }, [debouncedValue]);\n\n return (\n <Input\n {...props}\n type={type}\n value={inputValue}\n ref={ref}\n onChange={(e) => {\n setInputValue(e.target.value);\n }}\n />\n );\n});\nDebouncedInput.displayName = \"DebouncedInput\";\n"],"names":["DebouncedInput","forwardRef","onDebounce","type","delay","value","props","ref","inputValue","setInputValue","useState","debouncedValue","useDebounce","useEffect","jsx","Input","e"],"mappings":"mMAIaA,EAAiBC,EAAA,WAM5B,CAAC,CAAE,WAAAC,EAAY,KAAAC,EAAM,MAAAC,EAAQ,IAAK,MAAAC,EAAO,GAAGC,CAAM,EAAGC,IAAQ,CAC7D,KAAM,CAACC,EAAYC,CAAa,EAAIC,EAAAA,SAASL,CAAK,EAE5C,CAACM,CAAc,EAAIC,cAAYJ,EAAYJ,CAAK,EAEtDS,OAAAA,EAAAA,UAAU,IAAM,CAEV,OAAOF,GAAmB,UAAYA,IAAmBN,GAC3DH,IAAaS,CAAc,CAC7B,EACC,CAACA,CAAc,CAAC,EAGjBG,EAAA,IAACC,EAAA,MAAA,CACE,GAAGT,EACJ,KAAAH,EACA,MAAOK,EACP,IAAAD,EACA,SAAWS,GAAM,CACDP,EAAAO,EAAE,OAAO,KAAK,CAAA,CAC9B,CACF,CAEJ,CAAC,EACDhB,EAAe,YAAc"}
@@ -1,7 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./index.cjs49.js");/**
2
- * @license lucide-react v0.477.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const e=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],o=t.default("Copy",e);exports.__iconNode=e;exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),N=require("./index.cjs13.js"),R=require("./index.cjs40.js"),m=require("./index.cjs37.js"),E=require("./index.cjs9.js"),L=require("./index.cjs11.js"),a=require("./index.cjs16.js"),k=require("./index.cjs14.js"),v=require("./index.cjs24.js"),h=require("./index.cjs18.js"),w=require("./index.cjs42.js"),M=require("./index.cjs8.js"),P=require("./index.cjs38.js"),$=require("./index.cjs39.js"),o=require("zod"),B=require("react-hook-form"),t=require("./index.cjs41.js"),d=o.z.enum(["string","number","integer","boolean","object","array","null"]),b=o.z.object({key:o.z.string().trim().min(1,{message:"Key must be at least 1 character long"}),property:o.z.object({title:o.z.string().trim().min(1,{message:"Title must be at least 1 character long"}),type:d.or(o.z.array(d)),description:o.z.string().optional(),enum:o.z.array(o.z.string().or(o.z.number()).or(o.z.null()).or(o.z.boolean()).or(o.z.record(o.z.string(),o.z.any()))).optional(),items:o.z.object({type:d.or(o.z.array(d))}).or(o.z.array(o.z.object({type:d.or(o.z.array(d))}).or(o.z.boolean()))).or(o.z.boolean()).optional()}),required:o.z.boolean().default(!1),constraints:o.z.array(o.z.custom(()=>({name:o.z.string().trim().min(1),value:o.z.any()}))).optional()});function _({open:F,onOpenChange:C,onSubmit:S}){const n=B.useForm({resolver:R.zodResolver(b),defaultValues:{key:"",property:{title:""}}}),p=n.watch("constraints"),y=n.watch("property"),z=n.watch("property.enum"),I=n.watch("property.type"),{getConstraintDefinitionsForType:f,getRendererForConstraint:q,validateConstraintValue:D}=M.useConstraints(),A=r=>{const{key:s,property:l,required:c,constraints:i}=r,u={...l,...i?.reduce((j,g)=>({...j,[g.name]:g.value}),{})};S(s,u,c),n.reset()},V=(r,s)=>{const l=h.a(p),c=l?.[r];if(!c){n.setError(`constraints.${r}`,{message:"The constraint was not found",type:"constraint_not_found"});return}const i=D(c.name,s);if(i.status==="error"){let u=i.message;i.code==="invalid"&&(u=`${u}: ${i.error?.map(j=>j.message).join(", ")}`),n.setError(`constraints.${r}`,{type:i.code,message:u});return}c.value=s,n.setValue("constraints",l),n.clearErrors(`constraints.${r}`)},T=r=>{if(!p)return;const l=h.a(p).filter(c=>c.name!==r);n.setValue("constraints",l)},x=f(typeof y?.type=="string"?y.type:"");return e.jsx(m.Dialog,{open:F,onOpenChange:C,children:e.jsxs(m.DialogContent,{"data-testid":"add-property-dialog",children:[e.jsxs(m.DialogHeader,{children:[e.jsx(m.DialogTitle,{children:"Add"}),e.jsx(m.DialogDescription,{children:"Required property values and constraints"})]}),e.jsx(t.Form,{...n,children:e.jsxs("form",{onSubmit:r=>{r.stopPropagation(),r.preventDefault(),n.handleSubmit(A)(r)},className:"space-y-4","data-testid":"add-property-form",id:"add-property-form",children:[e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"key",render:({field:r})=>{const{onChange:s,...l}=r;return e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Property Key"}),e.jsx(t.FormControl,{children:e.jsx(v.DebouncedInput,{...l,onDebounce:c=>s(c)})}),e.jsx(t.FormMessage,{})]})}})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.title",render:({field:r})=>{const{onChange:s,...l}=r;return e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Property Title"}),e.jsx(t.FormControl,{children:e.jsx(v.DebouncedInput,{...l,onDebounce:c=>s(c)})}),e.jsx(t.FormMessage,{})]})}})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.type",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Type"}),e.jsx(t.FormControl,{children:e.jsxs(a.Select,{value:Array.isArray(r.value)?void 0:r.value,onValueChange:s=>{s==="enum"?n.setValue("property.enum",[]):n.setValue("property.enum",void 0),r.value==="array"&&s!=="array"&&(n.clearErrors("property.items"),n.setValue("property.items",void 0)),r.onChange(s)},children:[e.jsx(a.SelectTrigger,{className:"w-full","aria-label":"Select type",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"string",children:"string"}),e.jsx(a.SelectItem,{value:"number",children:"number"}),e.jsx(a.SelectItem,{value:"integer",children:"integer"}),e.jsx(a.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(a.SelectItem,{value:"object",children:"object"}),e.jsx(a.SelectItem,{value:"array",children:"array"}),e.jsx(a.SelectItem,{value:"null",children:"null"})]})]})}),e.jsx(t.FormMessage,{})]})})}),I==="array"&&e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.items.type",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Items of type"}),e.jsx(t.FormControl,{children:e.jsxs(a.Select,{value:Array.isArray(r.value)?void 0:r.value,onValueChange:s=>{n.clearErrors("property.items.type"),n.setValue("property.items.type",s)},children:[e.jsx(a.SelectTrigger,{className:"w-full","aria-label":"Select items of type",children:e.jsx(a.SelectValue,{placeholder:"Select item type"})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"string",children:"string"}),e.jsx(a.SelectItem,{value:"number",children:"number"}),e.jsx(a.SelectItem,{value:"integer",children:"integer"}),e.jsx(a.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(a.SelectItem,{value:"object",children:"object"}),e.jsx(a.SelectItem,{value:"array",children:"array"}),e.jsx(a.SelectItem,{value:"null",children:"null"})]})]})}),e.jsx(t.FormMessage,{})]})})}),e.jsx("div",{className:"flex items-center space-x-2",children:e.jsx(t.FormField,{control:n.control,name:"required",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormControl,{children:e.jsx(k.Switch,{checked:r.value,onCheckedChange:s=>r.onChange(s)})}),e.jsx(t.FormLabel,{children:"Required"}),e.jsx(t.FormMessage,{})]})})}),e.jsx("div",{className:"space-y-2",children:e.jsx(t.FormField,{control:n.control,name:"property.description",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Description"}),e.jsx(t.FormControl,{children:e.jsx(E.Input,{...r})}),e.jsx(t.FormMessage,{})]})})}),z?e.jsx(t.FormField,{control:n.control,name:"property.enum",render:({field:r})=>e.jsxs(t.FormItem,{children:[e.jsx(t.FormLabel,{children:"Enum"}),e.jsx(t.FormControl,{children:e.jsx(w.default,{values:r.value?.filter(s=>typeof s=="string")??[],onAddValue:s=>{const l=[];r.value&&l.push(...r.value),l.push(s),r.onChange(l)},onRemoveValue:s=>{const l=h.a(r.value??[]);l.splice(s,1),r.onChange(l)}})}),e.jsx(t.FormMessage,{})]})}):null,x.length?e.jsxs("div",{className:"space-y-2",children:[e.jsx(L.Label,{children:"Constraints"}),e.jsx(P.default,{addedConstraints:p??[],availableDefinitions:x,onAdd:r=>{n.setValue("constraints",r)}}),e.jsx($.Separator,{}),p?.map((r,s)=>{const l=q(r.name);if(!l)return null;const c=n.formState.errors.constraints?.[s];let i;return c&&(i={code:c?.type??"INVALID",message:c.message??"An error occurred"}),e.jsx(l,{constraintName:r.name,value:r.value,onConstraintChange:u=>{V(s,u)},onRemoveConstraint:()=>{T(r.name)},error:i},r.name)})]}):null,e.jsx(m.DialogFooter,{children:e.jsx(N.Button,{type:"submit",form:"add-property-form",children:"Add Property"})})]})})]})})}exports.AddFormSchema=b;exports.AddPropertyDialog=_;
7
2
  //# sourceMappingURL=index.cjs25.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs25.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"Copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.js.map\n"],"names":["__iconNode","Copy","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAU,CAAA,CAC1F,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs25.js","sources":["../src/packages/builder/add-dialog.tsx"],"sourcesContent":["import { Button } from \"@/components/ui/button\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\n\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogFooter,\n DialogDescription,\n} from \"@/components/ui/dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Switch } from \"@/components/ui/switch\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\nimport { DebouncedInput } from \"@/components/depounced-input\";\nimport { clone } from \"remeda\";\nimport MultiInput from \"@/components/multi-input\";\nimport { Constraint, useConstraints } from \"@/packages/constraints/context\";\nimport ConstraintsAdd from \"@/packages/constraints/constraint-add\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { z } from \"zod\";\nimport { useForm } from \"react-hook-form\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form\";\nimport type { OperationError } from \"./shared-types\";\n\nexport interface AddPropertyDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n onSubmit: (key: string, property: JSONSchema7, required: boolean) => void;\n}\n\nconst zodJsonTypes = z.enum([\n \"string\",\n \"number\",\n \"integer\",\n \"boolean\",\n \"object\",\n \"array\",\n \"null\",\n]);\n\nexport const AddFormSchema = z.object({\n key: z\n .string()\n .trim()\n .min(1, { message: \"Key must be at least 1 character long\" }),\n property: z.object({\n title: z\n .string()\n .trim()\n .min(1, { message: \"Title must be at least 1 character long\" }),\n type: zodJsonTypes.or(z.array(zodJsonTypes)),\n description: z.string().optional(),\n enum: z\n .array(\n z\n .string()\n .or(z.number())\n .or(z.null())\n .or(z.boolean())\n .or(z.record(z.string(), z.any())),\n )\n .optional(),\n items: z\n .object({\n type: zodJsonTypes.or(z.array(zodJsonTypes)),\n })\n //only to satisfy the other types but we actually don't handle it\n .or(\n z.array(\n z\n .object({ type: zodJsonTypes.or(z.array(zodJsonTypes)) })\n .or(z.boolean()),\n ),\n )\n .or(z.boolean())\n .optional(),\n }),\n required: z.boolean().default(false),\n constraints: z\n .array(\n z.custom<Constraint>(() => ({\n name: z.string().trim().min(1),\n value: z.any(),\n })),\n )\n .optional(),\n});\n\n/**\n * Handles adding a property to a parent JSON schema's \"properties\".\n * This means you are working under a child property.\n */\nexport function AddPropertyDialog({\n open,\n onOpenChange,\n onSubmit,\n}: AddPropertyDialogProps) {\n const form = useForm<z.infer<typeof AddFormSchema>>({\n resolver: zodResolver(AddFormSchema),\n defaultValues: {\n key: \"\",\n property: {\n title: \"\",\n },\n },\n });\n\n const currentConstraints = form.watch(\"constraints\");\n const currentProperty = form.watch(\"property\");\n const currentEnum = form.watch(\"property.enum\");\n const currentType = form.watch(\"property.type\");\n\n const {\n getConstraintDefinitionsForType,\n getRendererForConstraint,\n validateConstraintValue,\n } = useConstraints();\n\n const handleSubmit = (data: z.infer<typeof AddFormSchema>) => {\n const { key, property, required, constraints } = data;\n const propertyToSubmit: JSONSchema7 = {\n ...property,\n ...constraints?.reduce((acc, constraint) => {\n return {\n ...acc,\n [constraint.name]: constraint.value,\n } satisfies JSONSchema7;\n }, {}),\n };\n onSubmit(key, propertyToSubmit, required);\n form.reset();\n };\n\n const handleConstraintChange = (\n index: number,\n newVal: Constraint[\"value\"],\n ) => {\n const constraintsCopy = clone(currentConstraints);\n\n const constraintToChange = constraintsCopy?.[index];\n\n if (!constraintToChange) {\n form.setError(`constraints.${index}`, {\n message: \"The constraint was not found\",\n type: \"constraint_not_found\",\n });\n return;\n }\n\n const validationResult = validateConstraintValue(\n constraintToChange.name,\n newVal,\n );\n\n if (validationResult.status === \"error\") {\n let message = validationResult.message;\n if (validationResult.code === \"invalid\") {\n message = `${message}: ${validationResult.error?.map((i) => i.message).join(\", \")}`;\n }\n form.setError(`constraints.${index}`, {\n type: validationResult.code,\n message,\n });\n return;\n }\n\n //edit reference\n constraintToChange.value = newVal;\n form.setValue(\"constraints\", constraintsCopy);\n form.clearErrors(`constraints.${index}`);\n };\n\n const handleRemoveConstraint = (constraintName: Constraint[\"name\"]) => {\n if (!currentConstraints) return;\n const copy = clone(currentConstraints);\n const newConstraints = copy.filter((c) => c.name !== constraintName);\n form.setValue(\"constraints\", newConstraints);\n };\n\n const availableDefinitions = getConstraintDefinitionsForType(\n typeof currentProperty?.type === \"string\" ? currentProperty.type : \"\",\n );\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent data-testid=\"add-property-dialog\">\n <DialogHeader>\n <DialogTitle>Add</DialogTitle>\n <DialogDescription>\n Required property values and constraints\n </DialogDescription>\n </DialogHeader>\n <Form {...form}>\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n e.preventDefault();\n void form.handleSubmit(handleSubmit)(e);\n }}\n className=\"space-y-4\"\n data-testid=\"add-property-form\"\n id=\"add-property-form\"\n >\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"key\"\n render={({ field }) => {\n // Pull the onChange since debounced input should\n // be calling onDebounce instead\n const { onChange, ...rest } = field;\n\n return (\n <FormItem>\n <FormLabel>Property Key</FormLabel>\n <FormControl>\n <DebouncedInput\n {...rest}\n onDebounce={(newVal) => onChange(newVal)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.title\"\n render={({ field }) => {\n const { onChange, ...rest } = field;\n return (\n <FormItem>\n <FormLabel>Property Title</FormLabel>\n <FormControl>\n <DebouncedInput\n {...rest}\n onDebounce={(newVal) => onChange(newVal)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.type\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Type</FormLabel>\n <FormControl>\n <Select\n value={\n !Array.isArray(field.value)\n ? field.value\n : undefined\n }\n onValueChange={(newVal) => {\n if (newVal === \"enum\") {\n form.setValue(\"property.enum\", []);\n } else {\n form.setValue(\"property.enum\", undefined);\n }\n\n // If changing away from array, clear any array item errors\n if (field.value === \"array\" && newVal !== \"array\") {\n form.clearErrors(\"property.items\");\n form.setValue(\"property.items\", undefined);\n }\n\n field.onChange(newVal);\n }}\n >\n <SelectTrigger\n className=\"w-full\"\n aria-label=\"Select type\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n value={\"string\" satisfies JSONSchema7TypeName}\n >\n string\n </SelectItem>\n <SelectItem\n value={\"number\" satisfies JSONSchema7TypeName}\n >\n number\n </SelectItem>\n <SelectItem\n value={\"integer\" satisfies JSONSchema7TypeName}\n >\n integer\n </SelectItem>\n <SelectItem\n value={\"boolean\" satisfies JSONSchema7TypeName}\n >\n boolean\n </SelectItem>\n <SelectItem\n value={\"object\" satisfies JSONSchema7TypeName}\n >\n object\n </SelectItem>\n <SelectItem\n value={\"array\" satisfies JSONSchema7TypeName}\n >\n array\n </SelectItem>\n <SelectItem\n value={\"null\" satisfies JSONSchema7TypeName}\n >\n null\n </SelectItem>\n </SelectContent>\n </Select>\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n\n {/* Array Items Type selector */}\n {currentType === \"array\" && (\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.items.type\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Items of type</FormLabel>\n <FormControl>\n <Select\n value={\n !Array.isArray(field.value)\n ? field.value\n : undefined\n }\n onValueChange={(newVal) => {\n form.clearErrors(\"property.items.type\");\n form.setValue(\n \"property.items.type\",\n newVal as JSONSchema7TypeName,\n );\n }}\n >\n <SelectTrigger\n className=\"w-full\"\n aria-label=\"Select items of type\"\n >\n <SelectValue placeholder=\"Select item type\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n value={\"string\" satisfies JSONSchema7TypeName}\n >\n string\n </SelectItem>\n <SelectItem\n value={\"number\" satisfies JSONSchema7TypeName}\n >\n number\n </SelectItem>\n <SelectItem\n value={\"integer\" satisfies JSONSchema7TypeName}\n >\n integer\n </SelectItem>\n <SelectItem\n value={\"boolean\" satisfies JSONSchema7TypeName}\n >\n boolean\n </SelectItem>\n <SelectItem\n value={\"object\" satisfies JSONSchema7TypeName}\n >\n object\n </SelectItem>\n <SelectItem\n value={\"array\" satisfies JSONSchema7TypeName}\n >\n array\n </SelectItem>\n <SelectItem\n value={\"null\" satisfies JSONSchema7TypeName}\n >\n null\n </SelectItem>\n </SelectContent>\n </Select>\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n )}\n\n <div className=\"flex items-center space-x-2\">\n <FormField\n control={form.control}\n name=\"required\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormControl>\n <Switch\n checked={field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n />\n </FormControl>\n <FormLabel>Required</FormLabel>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n <div className=\"space-y-2\">\n <FormField\n control={form.control}\n name=\"property.description\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Description</FormLabel>\n <FormControl>\n <Input {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n </div>\n {currentEnum ? (\n <FormField\n control={form.control}\n name=\"property.enum\"\n render={({ field }) => {\n return (\n <FormItem>\n <FormLabel>Enum</FormLabel>\n <FormControl>\n <MultiInput\n values={\n field.value?.filter((i) => typeof i === \"string\") ??\n []\n }\n onAddValue={(newVal) => {\n const updates = [];\n if (field.value) {\n updates.push(...field.value);\n }\n updates.push(newVal);\n field.onChange(updates);\n }}\n onRemoveValue={(index) => {\n const newEnums = clone(field.value ?? []);\n newEnums.splice(index, 1);\n field.onChange(newEnums);\n }}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n ) : null}\n\n {availableDefinitions.length ? (\n <div className=\"space-y-2\">\n <Label>Constraints</Label>\n <ConstraintsAdd\n addedConstraints={currentConstraints ?? []}\n availableDefinitions={availableDefinitions}\n onAdd={(newConstraints) => {\n form.setValue(\"constraints\", newConstraints);\n }}\n />\n <Separator />\n {currentConstraints?.map((constraint, i) => {\n const Renderer = getRendererForConstraint(constraint.name);\n if (!Renderer) return null;\n\n const error = form.formState.errors.constraints?.[i];\n let mappedError: OperationError | undefined;\n\n if (error) {\n mappedError = {\n code: error?.type ?? \"INVALID\",\n message: error.message ?? \"An error occurred\",\n };\n }\n\n return (\n <Renderer\n key={constraint.name}\n constraintName={constraint.name}\n value={constraint.value}\n onConstraintChange={(newVal) => {\n handleConstraintChange(i, newVal);\n }}\n onRemoveConstraint={() => {\n handleRemoveConstraint(constraint.name);\n }}\n error={mappedError}\n />\n );\n })}\n </div>\n ) : null}\n\n <DialogFooter>\n <Button type=\"submit\" form=\"add-property-form\">\n Add Property\n </Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"names":["zodJsonTypes","z","AddFormSchema","AddPropertyDialog","open","onOpenChange","onSubmit","form","useForm","zodResolver","currentConstraints","currentProperty","currentEnum","currentType","getConstraintDefinitionsForType","getRendererForConstraint","validateConstraintValue","useConstraints","handleSubmit","data","key","property","required","constraints","propertyToSubmit","acc","constraint","handleConstraintChange","index","newVal","constraintsCopy","clone","constraintToChange","validationResult","message","i","handleRemoveConstraint","constraintName","newConstraints","availableDefinitions","Dialog","jsxs","DialogContent","DialogHeader","jsx","DialogTitle","DialogDescription","Form","e","FormField","field","onChange","rest","FormItem","FormLabel","FormControl","DebouncedInput","FormMessage","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Switch","checked","Input","MultiInput","updates","newEnums","Label","ConstraintsAdd","Separator","Renderer","error","mappedError","DialogFooter","Button"],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const e=[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]],o=t.default("Bolt",e);exports.__iconNode=e;exports.default=o;
6
+ */const e=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],o=t.default("Plus",e);exports.__iconNode=e;exports.default=o;
7
7
  //# sourceMappingURL=index.cjs26.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs26.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/bolt.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\",\n key: \"yt0hxn\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }]\n];\nconst Bolt = createLucideIcon(\"Bolt\", __iconNode);\n\nexport { __iconNode, Bolt as default };\n//# sourceMappingURL=bolt.js.map\n"],"names":["__iconNode","Bolt","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CACE,OACA,CACE,EAAG,4HACH,IAAK,QACX,CACG,EACD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAU,CAAA,CAC1D,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs26.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/plus.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"Plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.js.map\n"],"names":["__iconNode","Plus","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAU,CAAA,CAC3C,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const e=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],o=t.default("ChevronRight",e);exports.__iconNode=e;exports.default=o;
6
+ */const e=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],c=t.default("Trash2",e);exports.__iconNode=e;exports.default=c;
7
7
  //# sourceMappingURL=index.cjs27.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs27.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/chevron-right.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"ChevronRight\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n"],"names":["__iconNode","ChevronRight","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,SAAU,CAAC,EAC7DC,EAAeC,EAAAA,QAAiB,eAAgBF,CAAU","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs27.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/trash-2.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }],\n [\"line\", { x1: \"10\", x2: \"10\", y1: \"11\", y2: \"17\", key: \"1uufr5\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"11\", y2: \"17\", key: \"xtxkd\" }]\n];\nconst Trash2 = createLucideIcon(\"Trash2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n"],"names":["__iconNode","Trash2","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,EACxC,CAAC,OAAQ,CAAE,EAAG,wCAAyC,IAAK,QAAQ,CAAE,EACtE,CAAC,OAAQ,CAAE,EAAG,qCAAsC,IAAK,QAAQ,CAAE,EACnE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAQ,CAAE,EAClE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,OAAS,CAAA,CACnE,EACMC,EAASC,EAAAA,QAAiB,SAAUF,CAAU","x_google_ignoreList":[0]}
@@ -1,2 +1,7 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),n=require("./index.cjs22.js");function o({className:e,type:i,...r}){return t.jsx("input",{type:i,"data-slot":"input",className:n.cn("border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}exports.Input=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./index.cjs49.js");/**
2
+ * @license lucide-react v0.477.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],o=t.default("Copy",e);exports.__iconNode=e;exports.default=o;
2
7
  //# sourceMappingURL=index.cjs28.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs28.js","sources":["../src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"names":["Input","className","type","props","jsx","cn"],"mappings":"mJAIA,SAASA,EAAM,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,GAAwC,CAEzE,OAAAC,EAAA,IAAC,QAAA,CACC,KAAAF,EACA,YAAU,QACV,UAAWG,EAAA,GACT,ibACA,gFACA,yGACAJ,CACF,EACC,GAAGE,CAAA,CACN,CAEJ"}
1
+ {"version":3,"file":"index.cjs28.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n];\nconst Copy = createLucideIcon(\"Copy\", __iconNode);\n\nexport { __iconNode, Copy as default };\n//# sourceMappingURL=copy.js.map\n"],"names":["__iconNode","Copy","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAU,CAAA,CAC1F,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
@@ -1,2 +1,7 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("./index.cjs22.js");function c({children:r,errorCode:t,errorDescription:i,showError:s=!1,className:a}){return e.jsxs("div",{className:l.cn("space-y-2",a),children:[s&&t&&e.jsx("div",{className:"text-sm font-medium text-destructive","aria-live":"polite",children:t}),r,s&&i&&e.jsx("div",{className:"text-sm text-destructive","aria-live":"polite",children:i})]})}exports.InputErrorWrapper=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./index.cjs49.js");/**
2
+ * @license lucide-react v0.477.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",key:"yt0hxn"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]],o=t.default("Bolt",e);exports.__iconNode=e;exports.default=o;
2
7
  //# sourceMappingURL=index.cjs29.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs29.js","sources":["../src/components/input-error.tsx"],"sourcesContent":["import type React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface InputErrorWrapperProps {\n children: React.ReactNode;\n errorCode?: string;\n errorDescription?: string;\n showError?: boolean;\n className?: string;\n}\n\nexport function InputErrorWrapper({\n children,\n errorCode,\n errorDescription,\n showError = false,\n className,\n}: InputErrorWrapperProps) {\n return (\n <div className={cn(\"space-y-2\", className)}>\n {showError && errorCode && (\n <div\n className=\"text-sm font-medium text-destructive\"\n aria-live=\"polite\"\n >\n {errorCode}\n </div>\n )}\n\n {children}\n\n {showError && errorDescription && (\n <div className=\"text-sm text-destructive\" aria-live=\"polite\">\n {errorDescription}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InputErrorWrapper","children","errorCode","errorDescription","showError","className","cn","jsx"],"mappings":"mJAWO,SAASA,EAAkB,CAChC,SAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,UAAAC,EAAY,GACZ,UAAAC,CACF,EAA2B,CACzB,cACG,MAAI,CAAA,UAAWC,EAAG,GAAA,YAAaD,CAAS,EACtC,SAAA,CAAAD,GAAaF,GACZK,EAAA,IAAC,MAAA,CACC,UAAU,uCACV,YAAU,SAET,SAAAL,CAAA,CACH,EAGDD,EAEAG,GAAaD,GACXI,MAAA,MAAA,CAAI,UAAU,2BAA2B,YAAU,SACjD,SACHJ,CAAA,CAAA,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"index.cjs29.js","sources":["../../../node_modules/.pnpm/lucide-react@0.477.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/bolt.js"],"sourcesContent":["/**\n * @license lucide-react v0.477.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\",\n key: \"yt0hxn\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }]\n];\nconst Bolt = createLucideIcon(\"Bolt\", __iconNode);\n\nexport { __iconNode, Bolt as default };\n//# sourceMappingURL=bolt.js.map\n"],"names":["__iconNode","Bolt","createLucideIcon"],"mappings":"gJAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CACjB,CACE,OACA,CACE,EAAG,4HACH,IAAK,QACX,CACG,EACD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAU,CAAA,CAC1D,EACMC,EAAOC,EAAAA,QAAiB,OAAQF,CAAU","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("react"),ie=require("./index.cjs2.js"),u=require("./index.cjs11.js"),d=require("./index.cjs12.js"),se=require("./index.cjs13.js"),r=require("./index.cjs14.js"),$=require("./index.cjs15.js"),ae=require("./index.cjs10.js"),L=require("./index.cjs4.js"),oe=require("./index.cjs16.js"),a=require("./index.cjs17.js"),S=require("./index.cjs18.js"),ce=require("./index.cjs19.js"),de=require("ajv"),p=require("./index.cjs20.js"),ue=require("./index.cjs21.js"),C=require("./index.cjs22.js"),he=require("./index.cjs23.js"),me=require("./index.cjs24.js"),je=require("./index.cjs25.js"),xe=require("./index.cjs26.js"),ge=require("./index.cjs27.js"),be=i=>{const[O,m]=s.useState(!1),[k,b]=s.useState(!1),[F,j]=s.useState(!1),[x,f]=s.useState(),[D,A]=s.useState(),[P,N]=s.useState(),[q,g]=s.useState(null);L.usePluginSystem(i.plugins??[]);const{getCurrentSchema:U,setPath:h,path:o,handleAddProperty:Q,handlePropertyChange:c,handleKeyChange:B,handleDeleteProperty:H,setSchema:M,isPropertyRequired:I,handleDuplicateProperty:_}=ie.useSchema({onSchemaChange:i.onSchemaChange}),{getConstraintDefinitionsForType:G}=L.useConstraints();s.useEffect(()=>{if(i.initialSchema)try{ce.validateSchema(i.initialSchema),M(ae.a(i.initialSchema)),g(null)}catch(t){t instanceof Error?g(t.message):t instanceof de.ValidationError?g(`Schema validation error: ${t.message}`):g("Unknown schema validation error")}},[i.initialSchema]);const J=U(),E=t=>{h([...o,t])},w=()=>{h(o.slice(0,-1))},W=(t,n)=>{A(t),N(n),b(!0)},T=t=>{f(t),j(!0)},X=()=>{x&&(H(x),f(void 0)),j(!1)},Y=()=>{f(void 0),j(!1)},R=t=>{const n=_(t);n?.status==="error"?i.onPropertyAddError?.(n):n?.status==="success"&&i.onPropertyAddSuccess?.(n)},Z=(...t)=>{const n=Q(...t);n.status==="error"?i.onPropertyAddError?.(n):n.status==="success"&&i.onPropertyAddSuccess?.(n),m(!1)},z=i.propertyComponent,ee=(t,n)=>z?e.jsx(z,{property:{key:t,schema:n,isRequired:I(t)},onPropertyChange:c,onKeyChange:B,onDelete:T,onDuplicate:R,onNavigate:n.type==="object"||n.type==="array"&&typeof n.items=="object"&&n.items.type==="object"?E:void 0},t):e.jsxs("div",{className:"flex flex-col md:grid grid-cols-(--my-autofit-grid) gap-4 md:items-center border p-2 rounded-md mb-2",children:[e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:t,onDebounce:l=>B(t,l),placeholder:"Property Key","aria-label":`Property key for ${t}`,delay:500})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(se.Switch,{checked:I(t),onCheckedChange:l=>c(t,{isRequired:l}),"aria-label":"Required"}),e.jsx($.Label,{htmlFor:`required-${t}`,children:"Required"})]}),e.jsx("div",{className:"",children:e.jsxs(r.Select,{value:typeof n=="object"&&!Array.isArray(n.type)?n.type:void 0,onValueChange:l=>c(t,{type:l}),"aria-label":"Type",children:[e.jsx(r.SelectTrigger,{className:"w-full","aria-label":"Select type",children:e.jsx(r.SelectValue,{})}),e.jsxs(r.SelectContent,{children:[e.jsx(r.SelectItem,{value:"string",children:"string"}),e.jsx(r.SelectItem,{value:"number",children:"number"}),e.jsx(r.SelectItem,{value:"integer",children:"integer"}),e.jsx(r.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(r.SelectItem,{value:"object",children:"object"}),e.jsx(r.SelectItem,{value:"array",children:"array"}),e.jsx(r.SelectItem,{value:"null",children:"null"}),e.jsx(r.SelectItem,{value:"enum",children:"enum"})]})]})}),e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:typeof n=="object"?n.title:void 0,onDebounce:l=>c(t,{title:l}),placeholder:"Title"})}),e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:typeof n=="object"?n.description:void 0,onDebounce:l=>c(t,{description:l}),placeholder:"Description"})}),e.jsxs("div",{className:"order-last md:order-none flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>T(t),"aria-label":"Delete",className:"block!",children:e.jsx(me.default,{size:16,className:"text-destructive"})}),e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>R(t),"aria-label":"Duplicate",className:"block!",children:e.jsx(je.default,{size:16})}),ne(t,n),K(t,n)]}),te(t,n)]},t),te=(t,n)=>{if(typeof n!="object"||n.type!=="array")return null;const l=n.items,v=!Array.isArray(l)&&typeof l=="object"&&typeof l.type=="string"?l?.type:"string";return e.jsxs("div",{className:"col-span-full flex items-center gap-4 pl-8 mt-2 bg-gray-50 p-2 rounded-md",children:[e.jsx($.Label,{children:"Items of type:"}),e.jsxs(r.Select,{value:v,onValueChange:V=>{const y={...typeof l=="object"?l:{},type:V};V==="object"&&(y.properties=y.properties??{}),c(t,{items:y})},children:[e.jsx(r.SelectTrigger,{className:"w-[200px]","aria-label":"Select items of type",children:e.jsx(r.SelectValue,{})}),e.jsxs(r.SelectContent,{children:[e.jsx(r.SelectItem,{value:"string",children:"string"}),e.jsx(r.SelectItem,{value:"number",children:"number"}),e.jsx(r.SelectItem,{value:"integer",children:"integer"}),e.jsx(r.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(r.SelectItem,{value:"object",children:"object"}),e.jsx(r.SelectItem,{value:"array",children:"array"}),e.jsx(r.SelectItem,{value:"null",children:"null"})]})]}),K(t,l)]})},ne=(t,n)=>{if(typeof n!="object")return null;const l=G(typeof n.type=="string"?n.type:""),v=Array.isArray(n?.enum);return l.length||v?e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>W(t,n),"aria-label":"Edit constraints",children:e.jsx(xe.default,{size:16})}):null},K=(t,n)=>!Array.isArray(n)&&typeof n=="object"&&n?.type==="object"?e.jsxs(u.Button,{variant:"outline",size:"sm",onClick:()=>E(t),"aria-label":"Navigate",children:[e.jsx("span",{className:"sr-only",children:"Navigate"}),e.jsx(ge.default,{size:16})]}):null,re=()=>{const t=i.navigationComponent;return t?e.jsx(t,{currentPath:o,onNavigateUp:w,onNavigateTo:h,isRootPath:o.length===0}):e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx(u.Button,{variant:"outline",size:"sm",onClick:w,disabled:o.length===0,className:C.cn(i.backButtonClassName),children:"Back"}),e.jsx(d.Breadcrumb,{children:e.jsxs(d.BreadcrumbList,{children:[e.jsx(d.BreadcrumbItem,{children:e.jsx(d.BreadcrumbLink,{href:"#",onClick:()=>h([]),children:"Root"})}),o.map((n,l)=>e.jsxs(s.Fragment,{children:[e.jsx(d.BreadcrumbSeparator,{}),e.jsx(d.BreadcrumbItem,{children:e.jsx(d.BreadcrumbLink,{href:"#",onClick:()=>h(o.slice(0,l+1)),children:n})})]},`path-${l}`))]})})]})},le=()=>{const t=i.addPropertyButtonComponent;return t?e.jsx(t,{onClick:()=>m(!0)}):e.jsxs(u.Button,{type:"button",className:C.cn("self-center",i.addPropertyButtonClassName),onClick:()=>{m(!0)},children:[e.jsx(he.default,{className:"h-4 w-4 mr-2"}),"Add Property"]})};return e.jsxs("div",{children:[q&&e.jsxs(S.Alert,{variant:"destructive",children:[e.jsx(S.AlertTitle,{children:"Schema Error"}),e.jsx(S.AlertDescription,{children:q})]}),re(),e.jsx("div",{className:C.cn("mt-6 overflow-x-hidden",i.propertiesListClassName),children:Object.entries(J.properties??{}).map(([t,n])=>typeof n=="boolean"?null:ee(t,n))}),le(),e.jsx(ue.AddPropertyDialog,{open:O,onOpenChange:m,onSubmit:Z}),D&&P&&e.jsx(oe.EditPropertyDialog,{propertyKey:D,property:P,open:k,onOpenChange:b,onSubmit:t=>{c(...t),A(void 0),N(void 0),b(!1)}}),e.jsx(a.AlertDialog,{open:F,onOpenChange:j,children:e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:"Are you sure?"}),e.jsxs(a.AlertDialogDescription,{children:["This action cannot be undone. This will permanently delete the property",x?` "${x}"`:""," from the schema."]})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{onClick:Y,children:"Cancel"}),e.jsx(a.AlertDialogAction,{onClick:X,children:"Delete"})]})]})})]})};exports.SchemaBuilder=be;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),h=require("./index.cjs9.js"),v=require("./index.cjs10.js"),M=require("./index.cjs11.js"),f=require("./index.cjs12.js"),g=require("./index.cjs8.js"),N=require("./index.cjs13.js"),y=require("./index.cjs15.js"),t=({constraintName:l,value:o,onConstraintChange:c,disabled:p,error:n,onRemoveConstraint:d})=>{const{getConstraintDefinition:b}=g.useConstraints(),i=b(l);return i?e.jsx(v.InputErrorWrapper,{errorCode:n?.code,errorDescription:n?.message,showError:!!n,children:e.jsxs("div",{children:[e.jsx(M.Label,{className:"mb-2",htmlFor:i.name,children:i.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(h.Input,{id:i.name,type:"number",value:o,onChange:x=>c(Number(x.target.value)),disabled:p,className:f.cn({"border-destructive":n})}),e.jsx(N.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>d(),children:e.jsx(y.default,{className:"size-4"})})]}),i.description&&e.jsx("div",{className:"mt-2 text-sm text-gray-500",children:i.description})]})}):null},r=t,s=t,u=t,m=t,a=t,C={id:"number-constraints",hooks:{registerConstraints(){return[{name:"minimum",label:"Minimum",appliesTo:["number","integer"],schema:{type:"number",title:"Minimum Constraint",description:"The minimum value for this constraint",examples:[0,1,10]},description:"Constrains a number or integer to a minimum value",defaultValue:0},{name:"maximum",label:"Maximum",appliesTo:["number","integer"],schema:{type:"number",title:"Maximum Constraint",description:"The maximum value for this constraint",examples:[10,100,1e3]},description:"Constrains a number or integer to a maximum value",defaultValue:100},{name:"exclusiveMinimum",label:"Exclusive Minimum",appliesTo:["number","integer"],schema:{type:"number",title:"Exclusive Minimum Constraint",description:"The value must be strictly greater than this",examples:[0,1,10]},description:"Value must be strictly greater than (not equal to) this value",defaultValue:0},{name:"exclusiveMaximum",label:"Exclusive Maximum",appliesTo:["number","integer"],schema:{type:"number",title:"Exclusive Maximum Constraint",description:"The value must be strictly less than this",examples:[10,100,1e3]},description:"Value must be strictly less than (not equal to) this value",defaultValue:100},{name:"multipleOf",label:"Multiple Of",appliesTo:["number","integer"],schema:{type:"number",title:"Multiple Of Constraint",description:"Value must be a multiple of this number",examples:[2,5,10],exclusiveMinimum:0},description:"Value must be divisible by this number (e.g., 5 for multiples of 5)",defaultValue:1}]},registerRenderers(){return{minimum:r,maximum:s,exclusiveMinimum:u,exclusiveMaximum:m,multipleOf:a}}}};exports.NumberExclusiveMaximumRenderer=m;exports.NumberExclusiveMinimumRenderer=u;exports.NumberMaximumRenderer=s;exports.NumberMinimumRenderer=r;exports.NumberMultipleOfRenderer=a;exports.default=C;
2
2
  //# sourceMappingURL=index.cjs3.js.map