@react-formgen/json-schema
Version:
A headless, type-safe, customizable, and super simple React form generator.
80 lines (79 loc) • 31.5 kB
JavaScript
(function(j,A){typeof exports=="object"&&typeof module<"u"?A(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],A):(j=typeof globalThis<"u"?globalThis:j||self,A(j["@react-formgen/json-schema"]={},j.React))})(this,function(j,A){"use strict";function Ve(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var te={exports:{}},Y={};/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var be;function $e(){if(be)return Y;be=1;var r=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function i(s,t,n){var p=null;if(n!==void 0&&(p=""+n),t.key!==void 0&&(p=""+t.key),"key"in t){n={};for(var d in t)d!=="key"&&(n[d]=t[d])}else n=t;return t=n.ref,{$$typeof:r,type:s,key:p,ref:t!==void 0?t:null,props:n}}return Y.Fragment=o,Y.jsx=i,Y.jsxs=i,Y}var Q={};/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var _e;function Me(){return _e||(_e=1,process.env.NODE_ENV!=="production"&&function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===me?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case c:return"Fragment";case b:return"Profiler";case _:return"StrictMode";case I:return"Suspense";case h:return"SuspenseList";case pe:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case v:return"Portal";case w:return(e.displayName||"Context")+".Provider";case g:return(e._context.displayName||"Context")+".Consumer";case D:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case P:return a=e.displayName||null,a!==null?a:r(e.type)||"Memo";case C:a=e._payload,e=e._init;try{return r(e(a))}catch{}}return null}function o(e){return""+e}function i(e){try{o(e);var a=!1}catch{a=!0}if(a){a=console;var E=a.error,O=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return E.call(a,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",O),o(e)}}function s(e){if(e===c)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===C)return"<...>";try{var a=r(e);return a?"<"+a+">":"<...>"}catch{return"<...>"}}function t(){var e=V.A;return e===null?null:e.getOwner()}function n(){return Error("react-stack-top-frame")}function p(e){if(q.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function d(e,a){function E(){H||(H=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",a))}E.isReactWarning=!0,Object.defineProperty(e,"key",{get:E,configurable:!0})}function S(){var e=r(this.type);return J[e]||(J[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function m(e,a,E,O,k,R,M,U){return E=R.ref,e={$$typeof:u,type:e,key:a,props:R,_owner:k},(E!==void 0?E:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:S}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:M}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:U}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function l(e,a,E,O,k,R,M,U){var T=a.children;if(T!==void 0)if(O)if(ye(T)){for(O=0;O<T.length;O++)y(T[O]);Object.freeze&&Object.freeze(T)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else y(T);if(q.call(a,"key")){T=r(e);var N=Object.keys(a).filter(function(ve){return ve!=="key"});O=0<N.length?"{key: someKey, "+N.join(": ..., ")+": ...}":"{key: someKey}",Z[T+O]||(N=0<N.length?"{"+N.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,O,T,N,T),Z[T+O]=!0)}if(T=null,E!==void 0&&(i(E),T=""+E),p(a)&&(i(a.key),T=""+a.key),"key"in a){E={};for(var W in a)W!=="key"&&(E[W]=a[W])}else E=a;return T&&d(E,typeof e=="function"?e.displayName||e.name||"Unknown":e),m(e,T,R,k,t(),E,M,U)}function y(e){typeof e=="object"&&e!==null&&e.$$typeof===u&&e._store&&(e._store.validated=1)}var f=A,u=Symbol.for("react.transitional.element"),v=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),b=Symbol.for("react.profiler"),g=Symbol.for("react.consumer"),w=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),pe=Symbol.for("react.activity"),me=Symbol.for("react.client.reference"),V=f.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=Object.prototype.hasOwnProperty,ye=Array.isArray,$=console.createTask?console.createTask:function(){return null};f={"react-stack-bottom-frame":function(e){return e()}};var H,J={},K=f["react-stack-bottom-frame"].bind(f,n)(),X=$(s(n)),Z={};Q.Fragment=c,Q.jsx=function(e,a,E,O,k){var R=1e4>V.recentlyCreatedOwnerStacks++;return l(e,a,E,!1,O,k,R?Error("react-stack-top-frame"):K,R?$(s(e)):X)},Q.jsxs=function(e,a,E,O,k){var R=1e4>V.recentlyCreatedOwnerStacks++;return l(e,a,E,!0,O,k,R?Error("react-stack-top-frame"):K,R?$(s(e)):X)}}()),Q}process.env.NODE_ENV==="production"?te.exports=$e():te.exports=Me();var F=te.exports,Ue={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const Ee=r=>{let o;const i=new Set,s=(d,S)=>{const m=typeof d=="function"?d(o):d;if(!Object.is(m,o)){const l=o;o=S??(typeof m!="object"||m===null)?m:Object.assign({},o,m),i.forEach(y=>y(o,l))}},t=()=>o,n={setState:s,getState:t,getInitialState:()=>p,subscribe:d=>(i.add(d),()=>i.delete(d)),destroy:()=>{(Ue?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),i.clear()}},p=o=r(s,t,n);return n},Se=r=>r?Ee(r):Ee;var ne={exports:{}},oe={},ae={exports:{}},se={};/**
* @license React
* use-sync-external-store-shim.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Oe;function We(){if(Oe)return se;Oe=1;var r=A;function o(y,f){return y===f&&(y!==0||1/y===1/f)||y!==y&&f!==f}var i=typeof Object.is=="function"?Object.is:o,s=r.useState,t=r.useEffect,n=r.useLayoutEffect,p=r.useDebugValue;function d(y,f){var u=f(),v=s({inst:{value:u,getSnapshot:f}}),c=v[0].inst,_=v[1];return n(function(){c.value=u,c.getSnapshot=f,S(c)&&_({inst:c})},[y,u,f]),t(function(){return S(c)&&_({inst:c}),y(function(){S(c)&&_({inst:c})})},[y]),p(u),u}function S(y){var f=y.getSnapshot;y=y.value;try{var u=f();return!i(y,u)}catch{return!0}}function m(y,f){return f()}var l=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?m:d;return se.useSyncExternalStore=r.useSyncExternalStore!==void 0?r.useSyncExternalStore:l,se}var Te={};/**
* @license React
* use-sync-external-store-shim.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var ge;function Ye(){return ge||(ge=1,process.env.NODE_ENV!=="production"&&function(){function r(u,v){return u===v&&(u!==0||1/u===1/v)||u!==u&&v!==v}function o(u,v){l||t.startTransition===void 0||(l=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var c=v();if(!y){var _=v();n(c,_)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),y=!0)}_=p({inst:{value:c,getSnapshot:v}});var b=_[0].inst,g=_[1];return S(function(){b.value=c,b.getSnapshot=v,i(b)&&g({inst:b})},[u,c,v]),d(function(){return i(b)&&g({inst:b}),u(function(){i(b)&&g({inst:b})})},[u]),m(c),c}function i(u){var v=u.getSnapshot;u=u.value;try{var c=v();return!n(u,c)}catch{return!0}}function s(u,v){return v()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var t=A,n=typeof Object.is=="function"?Object.is:r,p=t.useState,d=t.useEffect,S=t.useLayoutEffect,m=t.useDebugValue,l=!1,y=!1,f=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?s:o;Te.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:f,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),Te}var he;function Re(){return he||(he=1,process.env.NODE_ENV==="production"?ae.exports=We():ae.exports=Ye()),ae.exports}/**
* @license React
* use-sync-external-store-shim/with-selector.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var je;function ze(){if(je)return oe;je=1;var r=A,o=Re();function i(m,l){return m===l&&(m!==0||1/m===1/l)||m!==m&&l!==l}var s=typeof Object.is=="function"?Object.is:i,t=o.useSyncExternalStore,n=r.useRef,p=r.useEffect,d=r.useMemo,S=r.useDebugValue;return oe.useSyncExternalStoreWithSelector=function(m,l,y,f,u){var v=n(null);if(v.current===null){var c={hasValue:!1,value:null};v.current=c}else c=v.current;v=d(function(){function b(h){if(!g){if(g=!0,w=h,h=f(h),u!==void 0&&c.hasValue){var P=c.value;if(u(P,h))return D=P}return D=h}if(P=D,s(w,h))return P;var C=f(h);return u!==void 0&&u(P,C)?(w=h,P):(w=h,D=C)}var g=!1,w,D,I=y===void 0?null:y;return[function(){return b(l())},I===null?void 0:function(){return b(I())}]},[l,y,f,u]);var _=t(m,v[0],v[1]);return p(function(){c.hasValue=!0,c.value=_},[_]),S(_),_},oe}var we={};/**
* @license React
* use-sync-external-store-shim/with-selector.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Ae;function Ge(){return Ae||(Ae=1,process.env.NODE_ENV!=="production"&&function(){function r(m,l){return m===l&&(m!==0||1/m===1/l)||m!==m&&l!==l}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var o=A,i=Re(),s=typeof Object.is=="function"?Object.is:r,t=i.useSyncExternalStore,n=o.useRef,p=o.useEffect,d=o.useMemo,S=o.useDebugValue;we.useSyncExternalStoreWithSelector=function(m,l,y,f,u){var v=n(null);if(v.current===null){var c={hasValue:!1,value:null};v.current=c}else c=v.current;v=d(function(){function b(h){if(!g){if(g=!0,w=h,h=f(h),u!==void 0&&c.hasValue){var P=c.value;if(u(P,h))return D=P}return D=h}if(P=D,s(w,h))return P;var C=f(h);return u!==void 0&&u(P,C)?(w=h,P):(w=h,D=C)}var g=!1,w,D,I=y===void 0?null:y;return[function(){return b(l())},I===null?void 0:function(){return b(I())}]},[l,y,f,u]);var _=t(m,v[0],v[1]);return p(function(){c.hasValue=!0,c.value=_},[_]),S(_),_},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),we}process.env.NODE_ENV==="production"?ne.exports=ze():ne.exports=Ge();var Be=ne.exports;const qe=Ve(Be);var He={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{useDebugValue:Je}=A,{useSyncExternalStoreWithSelector:Ke}=qe;let Pe=!1;const Xe=r=>r;function Ze(r,o=Xe,i){(He?"production":void 0)!=="production"&&i&&!Pe&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Pe=!0);const s=Ke(r.subscribe,r.getState,r.getServerState||r.getInitialState,o,i);return Je(s),s}var ie={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const ue=new Map,ee=r=>{const o=ue.get(r);return o?Object.fromEntries(Object.entries(o.stores).map(([i,s])=>[i,s.getState()])):{}},Qe=(r,o,i)=>{if(r===void 0)return{type:"untracked",connection:o.connect(i)};const s=ue.get(i.name);if(s)return{type:"tracked",store:r,...s};const t={connection:o.connect(i),stores:{}};return ue.set(i.name,t),{type:"tracked",store:r,...t}},er=(r,o={})=>(i,s,t)=>{const{enabled:n,anonymousActionType:p,store:d,...S}=o;let m;try{m=(n??(ie?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!m)return(ie?"production":void 0)!=="production"&&n&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),r(i,s,t);const{connection:l,...y}=Qe(d,m,S);let f=!0;t.setState=(c,_,b)=>{const g=i(c,_);if(!f)return g;const w=b===void 0?{type:p||"anonymous"}:typeof b=="string"?{type:b}:b;return d===void 0?(l==null||l.send(w,s()),g):(l==null||l.send({...w,type:`${d}/${w.type}`},{...ee(S.name),[d]:t.getState()}),g)};const u=(...c)=>{const _=f;f=!1,i(...c),f=_},v=r(t.setState,s,t);if(y.type==="untracked"?l==null||l.init(v):(y.stores[y.store]=t,l==null||l.init(Object.fromEntries(Object.entries(y.stores).map(([c,_])=>[c,c===y.store?v:_.getState()])))),t.dispatchFromDevtools&&typeof t.dispatch=="function"){let c=!1;const _=t.dispatch;t.dispatch=(...b)=>{(ie?"production":void 0)!=="production"&&b[0].type==="__setState"&&!c&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),c=!0),_(...b)}}return l.subscribe(c=>{var _;switch(c.type){case"ACTION":if(typeof c.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return le(c.payload,b=>{if(b.type==="__setState"){if(d===void 0){u(b.state);return}Object.keys(b.state).length!==1&&console.error(`
[zustand devtools middleware] Unsupported __setState action format.
When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
`);const g=b.state[d];if(g==null)return;JSON.stringify(t.getState())!==JSON.stringify(g)&&u(g);return}t.dispatchFromDevtools&&typeof t.dispatch=="function"&&t.dispatch(b)});case"DISPATCH":switch(c.payload.type){case"RESET":return u(v),d===void 0?l==null?void 0:l.init(t.getState()):l==null?void 0:l.init(ee(S.name));case"COMMIT":if(d===void 0){l==null||l.init(t.getState());return}return l==null?void 0:l.init(ee(S.name));case"ROLLBACK":return le(c.state,b=>{if(d===void 0){u(b),l==null||l.init(t.getState());return}u(b[d]),l==null||l.init(ee(S.name))});case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return le(c.state,b=>{if(d===void 0){u(b);return}JSON.stringify(t.getState())!==JSON.stringify(b[d])&&u(b[d])});case"IMPORT_STATE":{const{nextLiftedState:b}=c.payload,g=(_=b.computedStates.slice(-1)[0])==null?void 0:_.state;if(!g)return;u(d===void 0?g:g[d]),l==null||l.send(null,b);return}case"PAUSE_RECORDING":return f=!f}return}}),v},rr=er,le=(r,o)=>{let i;try{i=JSON.parse(r)}catch(s){console.error("[zustand devtools middleware] Could not parse the received json",s)}i!==void 0&&o(i)},tr="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let nr=(r=21)=>{let o="",i=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)o+=tr[i[r]&63];return o};const or=(r,o,i,s,t=!1)=>{const n={...i(o),...r},p=d=>({schema:o,formData:n,errors:null,readonly:s||!1,setFormData:(S,m)=>d(l=>{const y={...l.formData};let f=y;return S.slice(0,-1).forEach(u=>{f[u]||(f[u]={}),f=f[u]}),f[S[S.length-1]]=m,{formData:y}}),setErrors:S=>d({errors:S}),setReadonly:S=>d({readonly:S})});if(t){const d=`FormStore_${nr()}`;return console.warn(`WARNING: Zustand Devtools is enabled for FormStore: ${d}. This should be disabled in production.`),Se(rr(p,{name:d,enabled:t}))}return Se(p)},xe=A.createContext(null),ke=A.createContext(null),De=A.createContext(null),ar=(r,o,i,s,t)=>{const n=({initialData:m={},schema:l,children:y,templates:f=t,readonly:u=!1,renderTemplate:v=i,enableDevtools:c=!1})=>{const _=A.useRef(null);return _.current||(_.current=or(m,l,r,u,c)),f?F.jsx(xe.Provider,{value:_.current,children:F.jsx(ke.Provider,{value:f,children:F.jsx(De.Provider,{value:v,children:y})})}):(console.error("Templates are missing. Please provide base Templates."),F.jsx("div",{children:"Templates are missing. Please provide base Templates."}))},p=m=>{const l=A.useContext(xe);if(!l)throw console.error("FormContext is missing. Ensure you are within a FormProvider."),new Error("useFormContext must be used within a FormProvider");return Ze(l,m)},d=(m,l=null)=>{const y=p(u=>u.formData),f=p(u=>u.setFormData);return[m.reduce((u,v)=>u==null?void 0:u[v],y)??l,u=>f(m,u)]},S=m=>{const l=p(y=>y.errors);return o(l??[],m)};return{FormProvider:n,useFormContext:p,useFormDataAtPath:d,useErrorsAtPath:S,useArrayTemplate:(m,l,y=null)=>{const[f,u]=d(m,y),v=S(m);return{valueAtPath:f,errorsAtPath:v,moveItem:(c,_)=>{const b=[...f],[g]=b.splice(c,1);b.splice(_==="up"?c-1:c+1,0,g),u(b)},removeItem:c=>{const _=[...f];_.splice(c,1),u(_)},addItem:()=>{u([...f,l()])}}},useTemplates:()=>{const m=A.useContext(ke);if(!m)throw console.error("TemplatesContext is missing. Ensure you are within a FormProvider with templates provided."),new Error("useTemplates must be used within a FormProvider with templates provided");return m},useRenderTemplate:()=>{const m=A.useContext(De);if(!m)throw console.error("RenderTemplateContext is missing. Ensure you are within a FormProvider with renderTemplate provided."),new Error("useRenderTemplate must be used within a FormProvider with renderTemplate provided");return m},Form:({schema:m,initialData:l={},onSubmit:y=g=>console.warn("This is a default `onSubmit` function. You should override this if you want to do something with the form data.",g),onError:f=(g,w)=>console.error("This is a default `onError` function. You should override this if you want to do something with the form errors.",g,w),templates:u=t,formRoot:v=s,readonly:c=!1,renderTemplate:_=i,enableDevtools:b=!1})=>v?u?_?F.jsx(n,{schema:m,initialData:l,templates:u,readonly:c,renderTemplate:_,enableDevtools:b,children:F.jsx(v,{onSubmit:y,onError:f})}):(console.error("RenderTemplate component is missing. Please provide a base RenderTemplate."),F.jsx("div",{children:"RenderTemplate component is missing. Please provide a base RenderTemplate."})):(console.error("Templates are missing. Please provide base Templates."),F.jsx("div",{children:"Templates are missing. Please provide base Templates."})):(console.error("FormRoot is missing. Please provide a base FormRoot component."),F.jsx("div",{children:"FormRoot is missing. Please provide a base FormRoot component."}))}},L=(r,o)=>{if(r.$ref)try{const i=r.$ref.replace("#/definitions/","").split("/");let s=o;for(const t of i)if(s=s[t],!s)throw new Error(`Could not resolve reference: ${r.$ref}`);return s}catch(i){return console.error("Error resolving schema reference:",i),r}return r},z=(r,o,i,s)=>{switch(r=L(r,o),r.type){case"object":{const t={};for(const n in r.properties)t[n]=z(r.properties[n],o,r,n);return t}case"array":if(Array.isArray(r.items)){const t=r.items;if(Array.isArray(r.default)){const n=[];for(let p=0;p<t.length;p++){const d=t[p];re(r.default[p],d,o)?n.push(r.default[p]):n.push(z(d,o,r,s))}return n}else{let n=!1;if(i&&s&&Array.isArray(i.required)&&(n=i.required.includes(s)),n){const p=[];if(t.some(d=>d.default))for(const d of t)p.push(z(d,o,r,s));return p}else return}}else{if(Array.isArray(r.default)){const t=r.items,n=r.default.filter(p=>re(p,t,o));return n.length>0?n:[]}return[]}case"string":case"number":case"integer":case"boolean":case"null":return r.default||void 0;default:return r.default||void 0}},re=(r,o,i)=>{if(o=L(o,i),o.type==="object"){if(typeof r!="object"||r===null)return!1;const s=o.properties||{},t=Object.keys(r),n=Object.keys(s);if(!t.every(p=>n.includes(p)))return!1;for(const p in s)if(p in r&&!re(r[p],s[p],i))return!1;return!0}switch(o.type){case"string":return typeof r=="string";case"number":return typeof r=="number";case"integer":return Number.isInteger(r);case"boolean":return typeof r=="boolean";case"null":return r===null;case"array":{if(!Array.isArray(r))return!1;const s=o.items;return r.every(t=>re(t,s,i))}default:return!0}};var ce={exports:{}},G={};/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Ne;function sr(){if(Ne)return G;Ne=1;var r=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function i(s,t,n){var p=null;if(n!==void 0&&(p=""+n),t.key!==void 0&&(p=""+t.key),"key"in t){n={};for(var d in t)d!=="key"&&(n[d]=t[d])}else n=t;return t=n.ref,{$$typeof:r,type:s,key:p,ref:t!==void 0?t:null,props:n}}return G.Fragment=o,G.jsx=i,G.jsxs=i,G}var B={};/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Ce;function ir(){return Ce||(Ce=1,process.env.NODE_ENV!=="production"&&function(){function r(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===me?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case c:return"Fragment";case b:return"Profiler";case _:return"StrictMode";case I:return"Suspense";case h:return"SuspenseList";case pe:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case v:return"Portal";case w:return(e.displayName||"Context")+".Provider";case g:return(e._context.displayName||"Context")+".Consumer";case D:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case P:return a=e.displayName||null,a!==null?a:r(e.type)||"Memo";case C:a=e._payload,e=e._init;try{return r(e(a))}catch{}}return null}function o(e){return""+e}function i(e){try{o(e);var a=!1}catch{a=!0}if(a){a=console;var E=a.error,O=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return E.call(a,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",O),o(e)}}function s(e){if(e===c)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===C)return"<...>";try{var a=r(e);return a?"<"+a+">":"<...>"}catch{return"<...>"}}function t(){var e=V.A;return e===null?null:e.getOwner()}function n(){return Error("react-stack-top-frame")}function p(e){if(q.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function d(e,a){function E(){H||(H=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",a))}E.isReactWarning=!0,Object.defineProperty(e,"key",{get:E,configurable:!0})}function S(){var e=r(this.type);return J[e]||(J[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function m(e,a,E,O,k,R,M,U){return E=R.ref,e={$$typeof:u,type:e,key:a,props:R,_owner:k},(E!==void 0?E:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:S}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:M}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:U}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function l(e,a,E,O,k,R,M,U){var T=a.children;if(T!==void 0)if(O)if(ye(T)){for(O=0;O<T.length;O++)y(T[O]);Object.freeze&&Object.freeze(T)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else y(T);if(q.call(a,"key")){T=r(e);var N=Object.keys(a).filter(function(ve){return ve!=="key"});O=0<N.length?"{key: someKey, "+N.join(": ..., ")+": ...}":"{key: someKey}",Z[T+O]||(N=0<N.length?"{"+N.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,O,T,N,T),Z[T+O]=!0)}if(T=null,E!==void 0&&(i(E),T=""+E),p(a)&&(i(a.key),T=""+a.key),"key"in a){E={};for(var W in a)W!=="key"&&(E[W]=a[W])}else E=a;return T&&d(E,typeof e=="function"?e.displayName||e.name||"Unknown":e),m(e,T,R,k,t(),E,M,U)}function y(e){typeof e=="object"&&e!==null&&e.$$typeof===u&&e._store&&(e._store.validated=1)}var f=A,u=Symbol.for("react.transitional.element"),v=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),b=Symbol.for("react.profiler"),g=Symbol.for("react.consumer"),w=Symbol.for("react.context"),D=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),pe=Symbol.for("react.activity"),me=Symbol.for("react.client.reference"),V=f.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=Object.prototype.hasOwnProperty,ye=Array.isArray,$=console.createTask?console.createTask:function(){return null};f={"react-stack-bottom-frame":function(e){return e()}};var H,J={},K=f["react-stack-bottom-frame"].bind(f,n)(),X=$(s(n)),Z={};B.Fragment=c,B.jsx=function(e,a,E,O,k){var R=1e4>V.recentlyCreatedOwnerStacks++;return l(e,a,E,!1,O,k,R?Error("react-stack-top-frame"):K,R?$(s(e)):X)},B.jsxs=function(e,a,E,O,k){var R=1e4>V.recentlyCreatedOwnerStacks++;return l(e,a,E,!0,O,k,R?Error("react-stack-top-frame"):K,R?$(s(e)):X)}}()),B}process.env.NODE_ENV==="production"?ce.exports=sr():ce.exports=ir();var x=ce.exports;const de=({schema:r,path:o})=>{const i=fe(S=>S.schema.definitions||{}),{StringTemplate:s,NumberTemplate:t,BooleanTemplate:n,ObjectTemplate:p,ArrayTemplate:d}=Ie();try{r=L(r,i)}catch(S){return console.error("Error resolving schema:",S),x.jsxs("div",{style:{color:"red"},children:["Failed to resolve schema at path: ",o.join("/")]})}if(Array.isArray(r.type))if(r.type.length===2&&r.type.includes("null")&&(r.type.includes("string")||r.type.includes("number")||r.type.includes("boolean")||r.type.includes("integer"))){const S=r.type.find(l=>l!=="null"),m={...r,type:S};return x.jsx(de,{schema:m,path:o})}else return console.error(`Unsupported union type at path ${o.join("/")}:`,r.type),x.jsxs("div",{style:{border:"1px dashed red",padding:"1rem",color:"red",display:"flex",flexDirection:"column",gap:"0.25rem"},children:[x.jsx("strong",{children:"ERROR:"})," This field has multiple types:",x.jsx("ul",{style:{marginLeft:"1rem"},children:r.type.map(S=>x.jsx("li",{children:S},S))}),x.jsx("small",{children:"Please provide a specialized UI or a fallback for multi-type fields."})]});switch(r.type){case"string":return x.jsx(s,{schema:r,path:o});case"integer":case"number":return x.jsx(t,{schema:r,path:o});case"boolean":return x.jsx(n,{schema:r,path:o});case"null":return x.jsx("input",{type:"text",value:"null",disabled:!0});case"object":return x.jsx(p,{schema:r,path:o});case"array":return x.jsx(d,{schema:r,path:o});default:return console.error(`Unsupported schema type "${r.type}" at path:`,o),x.jsxs("div",{style:{color:"red",display:"flex",flexDirection:"column",border:"1px dashed red",padding:"1rem"},children:[x.jsx("strong",{children:"ERROR:"}),x.jsxs("small",{children:["Unsupported schema type `",r.type||"UNKNOWN","` at path: `",o.join("/"),"`"]})]})}},ur=r=>{const o=fe(s=>s.schema),i=(s,t)=>{let n=s;for(const p of t.slice(0,-1))if(n.type==="object"&&n.properties)n=L(n.properties[p],s.definitions);else if(n.type==="array"&&n.items)if(Array.isArray(n.items)){const d=parseInt(p,10);if(!isNaN(d)&&n.items[d])n=L(n.items[d],s.definitions);else return{parentSchema:null,key:null,isTupleItem:!1}}else n=L(n.items,s.definitions);else return{parentSchema:null,key:null,isTupleItem:!1};return{parentSchema:n,key:t[t.length-1],isTupleItem:Array.isArray(n==null?void 0:n.items)}};try{const{parentSchema:s,key:t,isTupleItem:n}=i(o,r);return n?!0:s&&s.type==="object"&&Array.isArray(s.required)&&t?s.required.includes(t):!1}catch(s){return console.error("Error determining if field is required:",s),!1}},lr=r=>z(r,r.definitions||{}),cr=(r,o)=>{const i={};r.forEach(t=>{const n=t.instancePath?`/${(t.instancePath||"").split("/").slice(1).join("/")}`:"/",p=t.keyword==="required"?`${n==="/"?"":n}/${t.params.missingProperty}`:n;i[p]=i[p]||[],i[p].push(t)});const s=`/${o.join("/")}`;return i[s]||[]},{FormProvider:Fe,useFormContext:fe,useFormDataAtPath:dr,useErrorsAtPath:fr,useArrayTemplate:pr,useTemplates:Ie,useRenderTemplate:mr,Form:Le}=ar(lr,cr,de),yr=Fe,vr=Le;j.CoreForm=Le,j.CoreFormProvider=Fe,j.Form=vr,j.FormProvider=yr,j.RenderTemplate=de,j.generateInitialData=z,j.resolveSchema=L,j.useArrayTemplate=pr,j.useErrorsAtPath=fr,j.useFormContext=fe,j.useFormDataAtPath=dr,j.useIsRequired=ur,j.useRenderTemplate=mr,j.useTemplates=Ie,Object.defineProperty(j,Symbol.toStringTag,{value:"Module"})});