ivt
Version:
Ivt Components Library
3 lines (2 loc) • 6.33 kB
JavaScript
import{Slot as e}from"@radix-ui/react-slot";import*as t from"react";import r from"react";import{c as a}from"../chunks/utils-C-nkZ_Ir.mjs";import{L as s}from"../chunks/label-DvclHXFl.mjs";import"../chunks/bundle-mjs-DHbvkKp4.mjs";import"../chunks/index-DiPp8h7C.mjs";import"react-dom";import"react/jsx-runtime";var o=e=>null==e;var n=e=>!o(e)&&!Array.isArray(e)&&(e=>"object"==typeof e)(e)&&!(e=>e instanceof Date)(e),i=e=>n(e)&&e.target?"checkbox"===e.target.type?e.target.checked:e.target.value:e,l="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function c(e){let t;const r=Array.isArray(e),a="undefined"!=typeof FileList&&e instanceof FileList;if(e instanceof Date)t=new Date(e);else{if(l&&(e instanceof Blob||a)||!r&&!n(e))return e;if(t=r?[]:{},r||(e=>{const t=e.constructor&&e.constructor.prototype;return n(t)&&t.hasOwnProperty("isPrototypeOf")})(e))for(const r in e)e.hasOwnProperty(r)&&(t[r]=c(e[r]));else t=e}return t}var u=e=>/^\w*$/.test(e),d=e=>void 0===e,m=e=>{return t=e.replace(/["|']|\]/g,"").split(/\.|\[/),Array.isArray(t)?t.filter(Boolean):[];var t},f=(e,t,r)=>{if(!t||!n(e))return r;const a=(u(t)?[t]:m(t)).reduce((e,t)=>o(e)?e:e[t],e);return d(a)||a===e?d(e[t])?r:e[t]:a},p=e=>"boolean"==typeof e,b=(e,t,r)=>{let a=-1;const s=u(t)?[t]:m(t),o=s.length,i=o-1;for(;++a<o;){const t=s[a];let o=r;if(a!==i){const r=e[t];o=n(r)||Array.isArray(r)?r:isNaN(+s[a+1])?{}:[]}if("__proto__"===t||"constructor"===t||"prototype"===t)return;e[t]=o,e=e[t]}};const g="blur",y="change",_="all",v=r.createContext(null);v.displayName="HookFormContext";const h=()=>r.useContext(v);const x="undefined"!=typeof window?t.useLayoutEffect:t.useEffect;function V(e){const t=h(),{control:a=t.control,disabled:s,name:o,exact:n}=e||{},[i,l]=r.useState(a._formState),c=r.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return x(()=>a._subscribe({name:o,formState:c.current,exact:n,callback:e=>{!s&&l({...a._formState,...e})}}),[o,s,n]),r.useEffect(()=>{c.current.isValid&&a._setValid(!0)},[a]),r.useMemo(()=>((e,t,r,a=!0)=>{const s={defaultValues:t._defaultValues};for(const o in e)Object.defineProperty(s,o,{get:()=>{const s=o;return t._proxyFormState[s]!==_&&(t._proxyFormState[s]=!a||_),r&&(r[s]=!0),e[s]}});return s})(i,a,c.current,!1),[i,a])}function F(e){const t=h(),{control:a=t.control,name:s,defaultValue:o,disabled:n,exact:i}=e||{},l=r.useRef(o),[c,u]=r.useState(a._getWatch(s,l.current));return x(()=>a._subscribe({name:s,formState:{values:!0},exact:i,callback:e=>!n&&u(((e,t,r,a,s)=>"string"==typeof e?f(r,e,s):Array.isArray(e)?e.map(e=>f(r,e)):r)(s,a._names,e.values||a._formValues,0,l.current))}),[s,a,n,i]),r.useEffect(()=>a._removeUnmounted()),c}const E=e=>e.render(function(e){const t=h(),{name:a,disabled:s,control:o=t.control,shouldUnregister:n}=e,l=((e,t)=>e.has((e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e)(t)))(o._names.array,a),u=F({control:o,name:a,defaultValue:f(o._formValues,a,f(o._defaultValues,a,e.defaultValue)),exact:!0}),m=V({control:o,name:a,exact:!0}),_=r.useRef(e),v=r.useRef(o.register(a,{...e.rules,value:u,...p(e.disabled)?{disabled:e.disabled}:{}})),x=r.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!f(m.errors,a)},isDirty:{enumerable:!0,get:()=>!!f(m.dirtyFields,a)},isTouched:{enumerable:!0,get:()=>!!f(m.touchedFields,a)},isValidating:{enumerable:!0,get:()=>!!f(m.validatingFields,a)},error:{enumerable:!0,get:()=>f(m.errors,a)}}),[m,a]),E=r.useCallback(e=>v.current.onChange({target:{value:i(e),name:a},type:y}),[a]),C=r.useCallback(()=>v.current.onBlur({target:{value:f(o._formValues,a),name:a},type:g}),[a,o._formValues]),w=r.useCallback(e=>{const t=f(o._fields,a);t&&e&&(t._f.ref={focus:()=>e.focus&&e.focus(),select:()=>e.select&&e.select(),setCustomValidity:t=>e.setCustomValidity(t),reportValidity:()=>e.reportValidity()})},[o._fields,a]),I=r.useMemo(()=>({name:a,value:u,...p(s)||m.disabled?{disabled:m.disabled||s}:{},onChange:E,onBlur:C,ref:w}),[a,s,m.disabled,E,C,w,u]);return r.useEffect(()=>{const e=o._options.shouldUnregister||n;o.register(a,{..._.current.rules,...p(_.current.disabled)?{disabled:_.current.disabled}:{}});const t=(e,t)=>{const r=f(o._fields,e);r&&r._f&&(r._f.mount=t)};if(t(a,!0),e){const e=c(f(o._options.defaultValues,a));b(o._defaultValues,a,e),d(f(o._formValues,a))&&b(o._formValues,a,e)}return!l&&o.register(a),()=>{(l?e&&!o._state.action:e)?o.unregister(a):t(a,!1)}},[a,o,l,n]),r.useEffect(()=>{o._setDisabledField({disabled:s,name:a})},[s,a,o]),r.useMemo(()=>({field:I,formState:m,fieldState:x}),[I,m,x])}(e)),C=e=>{const{children:t,...a}=e;return r.createElement(v.Provider,{value:a},t)},w=t.createContext({}),I=({...e})=>t.createElement(w.Provider,{value:{name:e.name}},t.createElement(E,e)),k=()=>{const e=t.useContext(w),r=t.useContext(S),{getFieldState:a}=h(),s=V({name:e.name}),o=a(e.name,s);if(!e)throw new Error("useFormField should be used within <FormField>");const{id:n}=r;return{id:n,name:e.name,formItemId:`${n}-form-item`,formDescriptionId:`${n}-form-item-description`,formMessageId:`${n}-form-item-message`,...o}},S=t.createContext({});function N({className:e,...r}){const s=t.useId();return t.createElement(S.Provider,{value:{id:s}},t.createElement("div",{"data-slot":"form-item",className:a("grid gap-2",e),...r}))}function A({className:e,...r}){const{error:o,formItemId:n}=k();return t.createElement(s,{"data-slot":"form-label","data-error":!!o,className:a("data-[error=true]:text-destructive",e),htmlFor:n,...r})}function j({...r}){const{error:a,formItemId:s,formDescriptionId:o,formMessageId:n}=k();return t.createElement(e,{"data-slot":"form-control",id:s,"aria-describedby":a?`${o} ${n}`:`${o}`,"aria-invalid":!!a,...r})}function D({className:e,...r}){const{formDescriptionId:s}=k();return t.createElement("p",{"data-slot":"form-description",id:s,className:a("text-muted-foreground text-sm",e),...r})}function M({className:e,...r}){const{error:s,formMessageId:o}=k(),n=s?String(s?.message??""):r.children;return n?t.createElement("p",{"data-slot":"form-message",id:o,className:a("text-destructive text-sm",e),...r},n):null}export{C as Form,j as FormControl,D as FormDescription,I as FormField,N as FormItem,A as FormLabel,M as FormMessage,k as useFormField};
//# sourceMappingURL=index.mjs.map