react-luna-form 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Ao=Object.create;var z=Object.defineProperty;var So=Object.getOwnPropertyDescriptor;var Eo=Object.getOwnPropertyNames;var No=Object.getPrototypeOf,Fo=Object.prototype.hasOwnProperty;var Io=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},Ge=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Eo(t))!Fo.call(e,n)&&n!==r&&z(e,n,{get:()=>t[n],enumerable:!(o=So(t,n))||o.enumerable});return e};var Co=(e,t,r)=>(r=e!=null?Ao(No(e)):{},Ge(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e)),vo=e=>Ge(z({},"__esModule",{value:!0}),e);var dn={};Io(dn,{Form:()=>To});module.exports=vo(dn);var Ye=require("react/jsx-runtime");function Xe(e){return(0,Ye.jsx)("div",{"data-slot":"field-control",className:"w-full",children:e.children})}var He=require("react/jsx-runtime");function H(e){return(0,He.jsx)("div",{"data-slot":"field-group","data-compact":e.compact,className:"flex w-full flex-col gap-8 data-[compact=true]:gap-3",children:e.children})}var j="input",qe="input/email",$e="input/number";var Ke="textarea",We="radio",Ze="checkbox",ze="select",je="select/month",Je="select/year";var Ne="column";var Qe="label",V="value",J="options",Fe="email",et="number",tt="password",rt="tel",q="text",ot="aria-errormessage",nt="aria-invalid",it="data-invalid",lt="data-readonly",at="aria",ct="data",Q="min",ee="max",ut="minLength",st="maxLength",L="$ref",dt="source";var te="http://luna.internal",S="vertical",M="horizontal";function c(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function re(e){return e==null||e===""}function E(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function v(e){return typeof e=="string"}function mt(e){return c(e)&&"url"in e}var Po=/[^/]+$/;function ft(e,t=[],r=V){if(Array.isArray(t))return t.find(o=>{let n=Ie(o,r);if(n!==void 0&&`${n}`===e)return o})??{value:e}}function Ie(e,t=V){if(e!=null){if(E(e))return e;if(c(e)){let r=Oo(e,t);if(E(r))return r}}}function Oo(e,t){let r=N(e,t);if(E(r))return r}function pt(e,t){if(Array.isArray(e))return e;let r=N(e,t);return Array.isArray(r)?r:null}function N(e,t){if(!t||!c(e))return null;let r=t.split(".").filter(n=>n!=="");if(r.length===0)return null;let o=e;for(let n of r)if(c(o)&&n in o)o=o[n];else return null;return o}function gt(e,t={label:Qe,value:V}){return e.map(r=>{if(c(r)){let o=N(r,t.label),n=N(r,t.value);if(E(o)&&E(n))return{label:`${o}`,value:`${n}`}}return r})}function yt(e=q){if(e){let t=e.match(Po);if(t){let[r]=t;if(r!==j)return r.trim().toLowerCase()}}return q}function xt(e){let t={};for(let r of e.keys()){let o=e.getAll(r);t[r]=o.length>1?o:o[0]}return t}var ko=/\[([^\]]+)\]\(([^)]+)\)/g;function P(e,t={}){if(v(e))return wo(e,t);if(Array.isArray(e))return e.map(r=>P(r,t));if(c(e)){let r={};for(let o in e)r[o]=P(e[o],t);return r}return e}function oe(e){return v(e)?/{([^}]+)}/.test(e):Array.isArray(e)?e.some(t=>oe(t)):c(e)?Object.values(e).some(t=>oe(t)):!1}function wo(e,t={}){return e.replace(/{([^}]+)}/g,(r,o)=>{let n=o.includes(".")?N(t,o):t[o];return E(n)?String(n):r})}function Tt(e,t){if(!e||e.trim().length===0)return null;let r,o=0,n=!1,i=[];for(;(r=ko.exec(e))!==null;){let[l,a,m]=r,s=r.index;n=!0,s>o&&i.push(e.substring(o,s));let d=t?t(s,m,a):l;i.push(d),o=s+l.length}return n?(o<e.length&&i.push(e.substring(o)),i):e}var ne=e=>T(je)(e),ie=e=>T(Je)(e),b=T(Ze),Ce=T(j),h=T(We),y=T(ze),ve=T(Ke),bt=T(q,Fe,tt,rt),ht=T(qe,Fe),le=T($e,et);function Rt(e){return h(e)||b(e)}function At(e){return e.type===Ne}function St(e){return e.type!==Ne}function Et(e){return y(e)||h(e)}function Nt(e){return Ce(e)||ve(e)}function Pe(e){return e!=null&&e!==""}function T(...e){return t=>{let r=v(t.type)?t.type:void 0;return r?e.some(o=>r===o||r?.startsWith(`${o}/`)):!1}}function Ft(e,t={}){if(y(e)&&e.disabled){let r=e.name?t?.[e.name]:void 0;if(r&&c(r))return[r]}}function ae(e){return h(e)||b(e)?M:e.advanced?.orientation??S}function It(e,t){let r=e.readonly??!1;return t||r}function Ct(e){if(h(e)||y(e)&&!e.disabled){let t=e.source;if(Array.isArray(t)||c(t)&&!(L in t))return t}}function vt(e,t){let r=Ct(e);return r||Ft(e,t)}function Do(e,t){let r=c(t)&&e.name in t?t[e.name]:t;return Ie(r,e.advanced?.entity)}function Vo(e,t,r){return Et(e)&&Array.isArray(r)?{...t,[J]:r}:t}function Lo(e,t,r){if(e.required&&!Pe(r)&&y(e)&&e.advanced?.preselected!==!1&&J in t){let o=t[J];if(Array.isArray(o)&&o.length===1)return o[0]}return r}function Mo(e,t){return y(e)&&Array.isArray(t)?gt(t,e.advanced?.options):t}function Pt(e,t,r,o){let n=Do(e,o),i=Array.isArray(r)?Mo(e,r):r,l=Vo(e,t,i),a=Lo(e,l,n);return{commonPropsWithOptions:l,defaultValue:a}}function Ot(e,t){return b(e)?{checked:Pe(t)}:{value:t??""}}var _o=/^#\/definition\//;function ue(e=[],t){let r=ce(e,t);return Array.isArray(r)?r.filter(o=>o.hidden!==!0).sort((o,n)=>kt(o)-kt(n)):[]}function ce(e,t,r=new Map,o=new WeakSet){if(!Bo(t)||!e||typeof e!="object")return e;if(r.has(e))return r.get(e);if(o.has(e))return e;if(o.add(e),Array.isArray(e))return e.map(i=>ce(i,t,r,o));if(L in e&&v(e[L])){let i=e[L].replace(_o,""),l=N(t,i);return l!==null?ce(l,t,r,o):e}let n={};for(let[i,l]of Object.entries(e))n[i]=ce(l,t,r,o);return o.delete(e),r.set(e,n),n}function wt(e){return Object.entries(e??{})}function kt(e){return e.order??Number.MAX_VALUE}function Bo(e){return e!==void 0&&c(e)&&Object.keys(e).length>0}function Dt(e,t){let r={};for(let[o,n]of wt(t))r[`${e}-${o}`]=n;return r}function Vt(e){return Dt(at,e)}function Lt(e){return Dt(ct,e)}var Mt={1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3"},_t={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3"};function Bt(e,t=2){return Mt[e&&e in Mt?e:t]}function Ut(e){if(e&&e in _t)return _t[e]}var Uo=/^\d+$/;function Gt(){return Array.from({length:12},(e,t)=>({value:(t+1).toString(),label:new Date(0,t).toLocaleString("default",{month:"long"})}))}function Xt(e,t){return t>=e?Array.from({length:t-e+1},(r,o)=>{let n=e+o;return{value:n.toString(),label:n.toString()}}):[]}function Oe(){return new Date().getFullYear()}function ke(e,t){if(typeof e=="number")return e;let r=t??Oe(),o=e.trim().toLowerCase();if(o.startsWith("current")){let n=o.match(/^current([+-])(\d+)$/);if(n){let[,i,l]=n,a=parseInt(l,10);if(!isNaN(a))return i==="+"?r+a:r-a}return r}return Uo.test(o)?parseInt(o,10):r}var u=require("zod");var Go=[[le,$o],[ht,Xo],[ie,Ko],[ne,Wo],[b,Yo],[h,Ho]];function Yt(e){return u.z.object(e)}function Ht(e){let t={},r=u.z.flattenError(e).fieldErrors;for(let[o,n]of Object.entries(r))n!==void 0&&(t[o]=n);return t}function qt(e){for(let[t,r]of Go)if(t(e))return r(e);return qo(e)}function Xo(e){let t=u.z.string().trim();if(e.required){let r=t.min(1,e.validation?.required).pipe(u.z.email(e.validation?.email));return u.z.preprocess(o=>re(o)?"":o,r)}return t.pipe(u.z.email(e.validation?.email)).or(u.z.literal("")).nullable()}function Yo(e){let t=u.z.coerce.boolean();return e.required?(t=t.refine(r=>r===!0,{message:e.validation?.required}),u.z.preprocess(r=>r===null?!1:r,t)):t.nullable()}function Ho(e){let t=u.z.coerce.string();return e.required?(t=t.min(1,e.validation?.required),u.z.preprocess(r=>re(r)?"":r,t)):t.or(u.z.literal("")).nullable()}function qo(e){let t=u.z.coerce.string().trim();return t=$t(t,e),e.required?(t=Kt(t,e),u.z.preprocess(r=>re(r)?"":r,t)):t.nullable()}function $o(e){let t=u.z.coerce.number().int();return t=$t(t,e),e.required?(t=Kt(t,e),u.z.preprocess(r=>r===null?void 0:r,t)):t.nullable()}function Ko(e){if(e.required){let t=u.z.coerce.number({message:e.validation?.required}).int();return u.z.preprocess(Zo,t)}return u.z.coerce.number().int().nullable()}function Wo(e){let t=u.z.coerce.number().int().min(1,e.validation?.required).max(12,e.validation?.required);return e.required?t:t.nullable()}function Zo(e){return e===null||e===""?void 0:e}function $t(e,t){return e=zo(e,t),e=jo(e,t),e}function Kt(e,t){let r=t.advanced?.length?.min;return r===void 0||r<1?e.min(1,t.validation?.required):e}var zo=(e,t)=>Wt(e,t,Q),jo=(e,t)=>Wt(e,t,ee);function Wt(e,t,r){let o=t.advanced?.length?.[r];return o!==void 0?e[r](o,t.validation?.length?.[r]):e}function Zt(e,t){if(!t||!Qo(e))return!0;if(t.length===0)return!1;try{let r=new URL(e),o=r.protocol.replace(":",""),n=r.hostname,i=r.port||Jo(o);return t.some(l=>!(l.protocol&&l.protocol!==o||l.hostname&&l.hostname!==n||l.port!==void 0&&String(l.port)!==i))}catch{return!1}}function Jo(e){return e==="https"?"443":"80"}function Qo(e){return/^(https?:)?\/\//.test(e)}function zt(e,t){try{if(!e)return t;if(!t)return e;let r=new URL(e,te);new URL(t,te).searchParams.forEach((i,l)=>{r.searchParams.set(l,i)});let n=r.toString();return e.startsWith("/")||!e.includes("://")?n.replace(te,""):n}catch{return t||e}}function jt(e){return!Array.isArray(e)||e.length===0?null:e.reduce((t,r)=>{let o=zt(t.url,r.url),n=en(t,r),i=tn(t,r);return{...t,...r,url:o,body:n,headers:i}})}function en(e,t){return c(t.body)&&c(e?.body)?{...e.body,...t.body}:t.body??e?.body}function tn(e,t){return c(t.headers)&&c(e?.headers)?{...e.headers,...t.headers}:t.headers??e?.headers}function Jt(e=[],t){let r=[],o=[];e.forEach(n=>{n.action===V&&r.push(n),n.action===dt&&o.push(n)}),t({sources:o,values:r})}function Qt(e=null,t=[],r){t.forEach(o=>{let{target:n,source:i}=o;if(!e){r(n,void 0);return}if(mt(i)){let l=P(i.url,e),a=i.body?P(i.body,e):i.body;r(n,{...i,url:l,body:a})}})}function er(e=null,t=[],r){t.forEach(o=>{Object.entries(o.value).forEach(([n,i])=>{r(n,e?P(i,e):void 0)})})}var tr=require("react/jsx-runtime");function $(e){return Tt(e,(t,r,o)=>(0,tr.jsx)("a",{className:"underline",href:r,rel:"noopener noreferrer",target:"_blank",children:o},`${r}-${t}`))}var O=require("react/jsx-runtime");function rr(e){return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("legend",{className:"mb-3 font-medium text-slate-800 dark:text-slate-200",children:$(e.title)}),(0,O.jsx)("p",{className:"-mt-2 text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:$(e.description)})]})}function se(e,t){return{...e,...t}}var _=require("react/jsx-runtime");function or(e){let t=e.section.fields||[],{compact:r}=se(e.style,{compact:e.section.compact});return!e.section.title&&!e.section.description?(0,_.jsx)(H,{compact:r,children:e.children}):(0,_.jsxs)("fieldset",{"data-slot":"field-set","data-empty":t.length===0,className:"flex flex-col data-[empty=false]:gap-6",children:[(0,_.jsx)(rr,{description:e.section.description,title:e.section.title}),(0,_.jsx)(H,{compact:r,children:e.children})]})}var ir=require("react");var we=require("react/jsx-runtime");function nr(){return(0,we.jsx)("div",{"data-slot":"field-separator",className:"relative -my-2 h-5 text-sm",children:(0,we.jsx)("div",{className:"absolute inset-0 top-1/2 h-px w-full bg-slate-200 dark:bg-slate-800"})})}var R=require("react/jsx-runtime");function lr(e){let t=ue(e.sections,e.definition);return(0,R.jsx)("div",{className:"h-full w-full",children:(0,R.jsx)("form",{noValidate:e.noValidate,action:e.action,children:(0,R.jsxs)(H,{children:[t.map((r,o)=>(0,R.jsxs)(ir.Fragment,{children:[(0,R.jsx)(or,{section:r,style:e.config.style,children:e.children({disabled:e.readOnly,fields:r.fields})}),r.separator&&(0,R.jsx)(nr,{})]},o)),e.control&&(0,R.jsx)(Xe,{children:e.control})]})})})}var cr=require("react/jsx-runtime");function ar(e){return(0,cr.jsx)("p",{className:"text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:e.children})}var ur=require("react/jsx-runtime");function de(e){let t=$(e.text);return t?(0,ur.jsx)(ar,{children:t}):null}var sr=require("tailwind-merge"),me=require("react/jsx-runtime");function dr(e){let t=h(e.field)||b(e.field);return(0,me.jsxs)("label",{"data-slot":"field-label","data-normal":t,className:(0,sr.twMerge)("flex w-fit items-center gap-2 text-sm leading-snug font-medium select-none","data-[normal=true]:font-normal","group-data-[readonly=true]:cursor-not-allowed group-data-[readonly=true]:opacity-50"),htmlFor:e.field.name,children:[e.children,!e.field.required&&(0,me.jsx)("span",{className:"text-sm text-slate-600 dark:text-slate-400",children:"(Optional)"})]})}var K=require("react/jsx-runtime");function mr(e){return(0,K.jsxs)("div",{"data-slot":"field-content",className:"flex w-full flex-1 flex-col gap-1.5 leading-snug",children:[(0,K.jsx)(dr,{field:e.field,children:e.field.label}),e.orientation===M&&(0,K.jsx)(de,{text:e.field.description})]})}var k=require("react/jsx-runtime");function fr(e){let t=ae(e.field);return(0,k.jsxs)(k.Fragment,{children:[e.field.name&&e.field.label&&(0,k.jsx)(mr,{field:e.field,orientation:t}),e.children,t===S&&e.field.description&&(0,k.jsx)(de,{text:e.field.description})]})}function pr(e,t){return e?t(e):null}var Tr=require("jotai");var w=require("jotai"),De=require("jotai-family"),fe=require("fast-equals");function pe(e){return(0,De.atomFamily)(t=>(0,w.atom)(r=>r(e)[t]??void 0,(r,o,n)=>{let i=r(e);if(n!=null){let l=i[t];(!l||!(0,fe.deepEqual)(l,n))&&o(e,{...i,[t]:n})}else if(i[t]){let{[t]:l,...a}=i;o(e,a)}}))}function gr(e){return(0,w.atom)(null,(t,r)=>{let o=t(e);o&&Object.keys(o).length>0&&r(e,{})})}function ge(e){return(0,w.atom)(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);l&&r(e,i)})}function ye(e){return(0,w.atom)(null,(t,r,o)=>{let n=t(e);(0,fe.deepEqual)(n,o)||r(e,o)})}function yr(e,t={}){let{merge:r,validateTarget:o}=t;return(0,De.atomFamily)(n=>(0,w.atom)(i=>{let l=i(e)[n];if(l&&r)return r(Object.values(l))},(i,l,a,m)=>{if(o&&!o(a))return;let s=i(e),d={...s[a]??{}};if(m!=null){let C=d[n];(!C||!(0,fe.deepEqual)(C,m))&&(d[n]=m,l(e,{...s,[a]:d}))}else if(d[n])if(delete d[n],Object.keys(d).length===0){let{[a]:C,...X}=s;l(e,X)}else l(e,{...s,[a]:d})}))}function xr(e){return(0,w.atom)(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);for(let a in i){let m={...i[a]},s=!1;for(let d of o)m[d]&&(delete m[d],s=!0,l=!0);s&&(Object.keys(m).length===0?delete i[a]:i[a]=m)}l&&r(e,i)})}var W=(0,Tr.atom)({}),br=ge(W),hr=ye(W),Rr=pe(W);var Ar=require("jotai");var F=(0,Ar.atom)({}),Sr=gr(F),Er=ge(F),Xi=ye(F),Nr=pe(F);var Lr=require("react"),Z=require("jotai");var Fr=require("jotai");var Ir=(0,Fr.atom)({}),Cr=yr(Ir,{merge:e=>{let t=jt(e);if(t)return t},validateTarget:e=>e.trim()!==""}),vr=xr(Ir);var kr=require("jotai");var Pr=Co(require("swr"),1);function Or(e=null,t,r=!1){let{data:o,error:n}=(0,Pr.default)(rn(e,t,r),t.fetcher.provider);if(n&&console.error("Error fetching data source:",n),e){if(Array.isArray(e))return[e];if(o)return[pt(o,e.namespace)]}return[null]}function rn(e=null,t,r=!1){if(e&&!Array.isArray(e)&&!r&&e.url&&!oe(e.url)){if(Zt(e.url,t.fetcher.remotePatterns))return e;console.warn(`URL blocked by remotePatterns: ${e.url}. Check your luna.config.ts`)}return null}function wr(e,t,r){let o=vt(e,r),[n,i]=(0,kr.useAtom)(Cr(e.name)),l=n??o,[a]=Or(l,t,e.disabled);return[a,i]}var D=require("react");function Dr(e,t,r){let o=(0,D.useMemo)(()=>qt(e),[e]),n=(0,D.useEffectEvent)(l=>{l&&t(l,o)}),i=(0,D.useEffectEvent)(l=>{l&&r(l)});return(0,D.useEffect)(()=>(n(e.name),()=>{i(e.name)}),[e.name]),[o]}var xe=require("react");function Vr(){let e=(0,xe.useRef)(null);(0,xe.useEffect)(()=>{let o=e.current;return()=>{o&&clearTimeout(o)}},[]);function t(){e.current&&(clearTimeout(e.current),e.current=null)}function r(o,n){t(),e.current=setTimeout(o,n)}return[r,t]}var Ve=require("react/jsx-runtime");function Mr(e){let t=(0,Z.useSetAtom)(Rr(e.field.name)),[r,o]=(0,Z.useAtom)(Nr(e.field.name)),n=(0,Z.useSetAtom)(F),[i]=Dr(e.field,e.onMount,e.onUnmount),[l,a]=wr(e.field,e.config,r),{commonPropsWithOptions:m,defaultValue:s}=Pt(e.field,e.commonProps,l,r),d=Ot(e.field,s),[C]=Vr();function X(p,f){if(Nt(e.field)){C(()=>{f({value:p})},500);return}let x=ft(p,l,e.field.advanced?.entity);f(x)}function Re(p){let f=p.target.value;o(f),e.config.validation.change&&Y(f);let x=e.field.event?.change;x&&X(f,g=>{Jt(x,({sources:bo,values:ho})=>{(0,Lr.startTransition)(()=>{Qt(g,bo,(Se,Ee)=>a(Se,Ee)),er(g,ho,(Se,Ee)=>{n(Ro=>({...Ro,[Se]:Ee}))})})})})}function Ae(p){if(Rt(e.field))return;let f=p.target.value;e.config.validation.blur&&Y(f)}function Y(p){let x=i.safeParse(p).error?.issues.map(g=>g.message)??[];t(x)}return pr(e.config.inputs[e.field.type],p=>(0,Ve.jsx)(fr,{field:e.field,children:(0,Ve.jsx)(p,{...m,...e.ariaAttributes,...e.dataAttributes,...d,onBlur:Ae,onChange:Re})}))}var _r=require("tailwind-merge"),Le=require("react/jsx-runtime");function Br(e){let t=Bt(e.column?.advanced?.cols);return(0,Le.jsx)("div",{className:"flex w-full flex-col gap-4",children:(0,Le.jsx)("div",{className:(0,_r.twMerge)("grid grid-cols-1 gap-8 sm:gap-4",t),children:e.children})})}var Me=require("react/jsx-runtime");function Ur(e){return!e.errors||e.errors.length===0?null:(0,Me.jsx)("ul",{className:"text-sm text-red-600 dark:text-red-500",id:e.name?`${e.name}-error`:void 0,children:e.errors?.map((t,r)=>(0,Me.jsx)("li",{children:t},e.name?`${e.name}-error-${r}`:r))})}var Gr=require("tailwind-merge"),Xr=require("react/jsx-runtime");function Te(e){let t=e.errors&&e.errors.length>0;return(0,Xr.jsx)("div",{"data-slot":"field",...t&&{[it]:"true"},...e.disabled&&{[lt]:"true"},"data-orientation":e.orientation,className:(0,Gr.twMerge)("group flex w-full flex-col items-center data-[invalid=true]:text-red-600 data-[invalid=true]:dark:text-red-500","has-[>[role=checkbox],[role=radiogroup]]:items-start","has-[>[role=checkbox]]:flex-row-reverse","has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radiogroup]]:mt-px",Ut(e.cols),e.className),children:e.children})}var Hr=require("react/jsx-runtime");function Yr(e){return(0,Hr.jsx)(Te,{...e,orientation:S,className:"gap-3 has-[>[data-slot=field-content]]:items-start [&>*:not([role=checkbox]):not([role=radiogroup])]:w-full",children:e.children})}var $r=require("react/jsx-runtime");function qr(e){return(0,$r.jsx)(Te,{...e,orientation:M,className:"gap-2 md:flex-row md:gap-4 has-[>[role=radiogroup]]:md:flex-col [&:not(:has(>[role=checkbox],[role=radiogroup]))]:md:justify-between [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:w-full [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:md:w-1/2 [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:xl:w-2/5 [&>[data-slot=field-content]]:min-w-0 [&>[data-slot=field-content]]:flex-grow [&>[data-slot=field-content]]:self-start",children:e.children})}var _e=require("react/jsx-runtime");function Kr(e){return e.orientation===S?(0,_e.jsx)(Yr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children}):(0,_e.jsx)(qr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children})}var be=Oe();function Wr(e){if(y(e))return on(e)}function on(e){if(ne(e))return Gt();if(ie(e)){let t=e.advanced?.length?.min??be,r=e.advanced?.length?.max??be+5;return Xt(ke(t,be),ke(r,be))}}function Zr(e,t=!1){let r={disabled:t,id:e.name,name:e.name,placeholder:e.placeholder,required:e.required};return Ce(e)?{...r,...nn(e)}:y(e)?{...r,...ln(e)}:ve(e)?{...r,...an(e)}:r}function nn(e){let t=yt(e.type),r={...e,type:t};return{...zr(e),...cn(r),...bt(r)?jr(r):{},type:t}}function ln(e){let t=Wr(e);return t?{options:t}:{}}function an(e){return{...zr(e),...jr(e)}}function zr(e){let t=e.advanced?.autocomplete;return t?{autoComplete:t}:{}}function cn(e){return le(e)?un(e):{}}function jr(e){return Jr(e,{min:ut,max:st})}function un(e){return Jr(e,{min:Q,max:ee})}function Jr(e,t){let r={},o=e.advanced?.length;return o&&(o.min!==void 0&&(r[t.min]=o.min),o.max!==void 0&&(r[t.max]=o.max)),r}function Qr(e,t){let r=Vt(e.advanced?.aria);return t&&t.length>0&&(r[nt]="true",r[ot]=`${e.name}-error`),r}function eo(e){return Lt(e.advanced?.data)}function to(e){if(!e.field.type)return null;let t=Zr(e.field,e.disabled),r=eo(e.field),o=Qr(e.field,e.errors),n={...e.field,disabled:t.disabled};return e.children({ariaAttributes:o,commonProps:t,dataAttributes:r,field:n})}var B=require("react/jsx-runtime");function ro(e){let t=e.field.advanced?.cols,r=e.field.name?e.errors?.[e.field.name]:void 0,{orientation:o}=se(e.style,{orientation:ae(e.field)}),n=It(e.field,e.disabled);return(0,B.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,B.jsx)(Kr,{cols:t,disabled:n,errors:r,orientation:o,children:(0,B.jsx)(to,{disabled:n,errors:r,field:e.field,children:e.children})}),(0,B.jsx)(Ur,{errors:r,name:e.field.name})]})}var oo=require("jotai"),io=require("react/jsx-runtime");function no(e){return r=>{let o=(0,oo.useAtomValue)(W);return(0,io.jsx)(e,{...r,errors:o})}}var lo=no(ro);var ao=require("react"),U=require("react/jsx-runtime");function Be(e){let t=ue(e.fields),{column:r,field:o}=e.components;return t.map((n,i)=>(0,U.jsxs)(ao.Fragment,{children:[At(n)&&(0,U.jsx)(r,{column:n,children:(0,U.jsx)(Be,{...e,fields:n.fields})}),St(n)&&(0,U.jsx)(o,{disabled:e.disabled,field:n,style:e.style,children:e.children})]},i))}var uo=require("react/jsx-runtime"),co=e=>(0,uo.jsx)(Be,{...e,components:{column:Br,field:lo}});var Ue=require("jotai");var G=require("react");function fo(e,t,r){let{onError:o,onSuccess:n,preserveValues:i=!1,validation:l=!0,value:a=null}=r??{},m=(0,Ue.useSetAtom)(hr),s=(0,Ue.useSetAtom)(Sr),d={data:a,error:null,success:!1},[C,X,Re]=(0,G.useActionState)(async(Ae,Y)=>{let p=Yt(e());if(l===!1)return t?await t(Y,p):Ae;let f=xt(Y),x=p.safeParse(f);if(!x.success){let g=Ht(x.error);return(0,G.startTransition)(()=>{m(g)}),mo(f,{details:g,title:"There were validation errors submitting the form."})}if(t)try{let g=await t(f,p);return g.success?(n?.(g.data),i||(0,G.startTransition)(()=>{s()})):g.error&&(0,G.startTransition)(()=>{o?.(g.error)}),so(f,i)}catch(g){return mo(f,{title:"An unexpected error occurred submitting the form.",details:sn(g)})}return so(x.data,i)},d);return[X,C,Re]}function sn(e){let t=e instanceof Error?e.message:["Unknown error"];return Array.isArray(t)?t:[t]}function so(e,t=!1){return{data:t?e:null,error:null,success:!0}}function mo(e,t){return{data:e,error:t,success:!1}}var xo=require("jotai/utils");var I=require("react");var po=require("react"),he=require("jotai");function go(){let e=(0,he.useSetAtom)(br),t=(0,he.useSetAtom)(vr),r=(0,he.useSetAtom)(Er);return(0,po.useCallback)(o=>{let n=Array.isArray(o)?o:[o];e(n),t(n),r(n)},[e,t,r])}function yo(){let e=go(),t=(0,I.useRef)({}),r=(0,I.useRef)(new Set),o=(0,I.useCallback)((l,a)=>{l in t.current||(t.current[l]=a)},[]),n=(0,I.useCallback)(l=>{t.current[l]&&(delete t.current[l],r.current.add(l),(0,I.startTransition)(()=>{r.current.size>0&&(e(Array.from(r.current)),r.current.clear())}))},[e]);function i(){return t.current}return[i,o,n]}var A=require("react/jsx-runtime");function To(e){let[t,r,o]=yo(),[n,i]=fo(t,e.action,{onError:e.onError,onSuccess:e.onSuccess,validation:e.config.validation.submit,value:e.value});(0,xo.useHydrateAtoms)([[F,e.value??{}]]);let l=e.config.alert??(()=>null),a=e.config.validation.showError&&!i.success&&i.error;return(0,A.jsx)(lr,{action:n,config:e.config,control:e.children,definition:e.definition,noValidate:!0,readOnly:e.readOnly,sections:e.sections,children:({disabled:m,fields:s})=>(0,A.jsxs)(A.Fragment,{children:[a&&(0,A.jsx)(l,{title:i.error.title,description:i.error?.description,details:i.error?.details}),(0,A.jsx)(co,{disabled:m,fields:s,style:e.config.style,children:d=>(0,A.jsx)(Mr,{...d,config:e.config,onMount:r,onUnmount:o,value:i.data})})]})})}
|
|
1
|
+
"use strict";var Ao=Object.create;var z=Object.defineProperty;var So=Object.getOwnPropertyDescriptor;var Eo=Object.getOwnPropertyNames;var Fo=Object.getPrototypeOf,No=Object.prototype.hasOwnProperty;var Io=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},Ge=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Eo(t))!No.call(e,n)&&n!==r&&z(e,n,{get:()=>t[n],enumerable:!(o=So(t,n))||o.enumerable});return e};var Co=(e,t,r)=>(r=e!=null?Ao(Fo(e)):{},Ge(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e)),vo=e=>Ge(z({},"__esModule",{value:!0}),e);var dn={};Io(dn,{Form:()=>To});module.exports=vo(dn);var Ye=require("react/jsx-runtime");function Xe(e){return(0,Ye.jsx)("div",{"data-slot":"field-control",className:"w-full",children:e.children})}var He=require("react/jsx-runtime");function H(e){return(0,He.jsx)("div",{"data-slot":"field-group","data-compact":e.compact,className:"flex w-full flex-col gap-8 data-[compact=true]:gap-3",children:e.children})}var j="input",qe="input/email",$e="input/number";var We="textarea",Ke="radio",Ze="checkbox",ze="select",je="select/month",Je="select/year";var Fe="column";var Qe="label",V="value",J="options",Ne="email",et="number",tt="password",rt="tel",q="text",ot="aria-errormessage",nt="aria-invalid",it="data-invalid",lt="data-readonly",at="aria",ct="data",Q="min",ee="max",ut="minLength",st="maxLength",L="$ref",dt="source";var te="http://luna.internal",S="vertical",M="horizontal";function c(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function re(e){return e==null||e===""}function E(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function v(e){return typeof e=="string"}function mt(e){return c(e)&&"url"in e}var Po=/[^/]+$/;function ft(e,t=[],r=V){if(Array.isArray(t))return t.find(o=>{let n=Ie(o,r);if(n!==void 0&&`${n}`===e)return o})??{value:e}}function Ie(e,t=V){if(e!=null){if(E(e))return e;if(c(e)){let r=ko(e,t);if(E(r))return r}}}function ko(e,t){let r=F(e,t);if(E(r))return r}function pt(e,t){if(Array.isArray(e))return e;let r=F(e,t);return Array.isArray(r)?r:null}function F(e,t){if(!t||!c(e))return null;let r=t.split(".").filter(n=>n!=="");if(r.length===0)return null;let o=e;for(let n of r)if(c(o)&&n in o)o=o[n];else return null;return o}function gt(e,t={label:Qe,value:V}){return e.map(r=>{if(c(r)){let o=F(r,t.label),n=F(r,t.value);if(E(o)&&E(n))return{label:`${o}`,value:`${n}`}}return r})}function yt(e=q){if(e){let t=e.match(Po);if(t){let[r]=t;if(r!==j)return r.trim().toLowerCase()}}return q}function xt(e){let t={};for(let r of e.keys()){let o=e.getAll(r);t[r]=o.length>1?o:o[0]}return t}var Oo=/\[([^\]]+)\]\(([^)]+)\)/g;function P(e,t={}){if(v(e))return wo(e,t);if(Array.isArray(e))return e.map(r=>P(r,t));if(c(e)){let r={};for(let o in e)r[o]=P(e[o],t);return r}return e}function oe(e){return v(e)?/{([^}]+)}/.test(e):Array.isArray(e)?e.some(t=>oe(t)):c(e)?Object.values(e).some(t=>oe(t)):!1}function wo(e,t={}){return e.replace(/{([^}]+)}/g,(r,o)=>{let n=o.includes(".")?F(t,o):t[o];return E(n)?String(n):r})}function Tt(e,t){if(!e||e.trim().length===0)return null;let r,o=0,n=!1,i=[];for(;(r=Oo.exec(e))!==null;){let[l,a,m]=r,s=r.index;n=!0,s>o&&i.push(e.substring(o,s));let d=t?t(s,m,a):l;i.push(d),o=s+l.length}return n?(o<e.length&&i.push(e.substring(o)),i):e}var ne=e=>T(je)(e),ie=e=>T(Je)(e),b=T(Ze),Ce=T(j),h=T(Ke),y=T(ze),ve=T(We),bt=T(q,Ne,tt,rt),ht=T(qe,Ne),le=T($e,et);function Rt(e){return h(e)||b(e)}function At(e){return e.type===Fe}function St(e){return e.type!==Fe}function Et(e){return y(e)||h(e)}function Ft(e){return Ce(e)||ve(e)}function Pe(e){return e!=null&&e!==""}function T(...e){return t=>{let r=v(t.type)?t.type:void 0;return r?e.some(o=>r===o||r?.startsWith(`${o}/`)):!1}}function Nt(e,t={}){if(y(e)&&e.disabled){let r=e.name?t?.[e.name]:void 0;if(r&&c(r))return[r]}}function ae(e){return h(e)||b(e)?M:e.advanced?.orientation??S}function It(e,t){let r=e.readonly??!1;return t||r}function Ct(e){if(h(e)||y(e)&&!e.disabled){let t=e.source;if(Array.isArray(t)||c(t)&&!(L in t))return t}}function vt(e,t){let r=Ct(e);return r||Nt(e,t)}function Do(e,t){let r=c(t)&&e.name in t?t[e.name]:t;return Ie(r,e.advanced?.entity)}function Vo(e,t,r){return Et(e)&&Array.isArray(r)?{...t,[J]:r}:t}function Lo(e,t,r){if(e.required&&!Pe(r)&&y(e)&&e.advanced?.preselected!==!1&&J in t){let o=t[J];if(Array.isArray(o)&&o.length===1)return o[0]}return r}function Mo(e,t){return y(e)&&Array.isArray(t)?gt(t,e.advanced?.options):t}function Pt(e,t,r,o){let n=Do(e,o),i=Array.isArray(r)?Mo(e,r):r,l=Vo(e,t,i),a=Lo(e,l,n);return{commonPropsWithOptions:l,defaultValue:a}}function kt(e,t){return b(e)?{checked:Pe(t)}:{value:t??""}}var _o=/^#\/definition\//;function ue(e=[],t){let r=ce(e,t);return Array.isArray(r)?r.filter(o=>o.hidden!==!0).sort((o,n)=>Ot(o)-Ot(n)):[]}function ce(e,t,r=new Map,o=new WeakSet){if(!Bo(t)||!e||typeof e!="object")return e;if(r.has(e))return r.get(e);if(o.has(e))return e;if(o.add(e),Array.isArray(e))return e.map(i=>ce(i,t,r,o));if(L in e&&v(e[L])){let i=e[L].replace(_o,""),l=F(t,i);return l!==null?ce(l,t,r,o):e}let n={};for(let[i,l]of Object.entries(e))n[i]=ce(l,t,r,o);return o.delete(e),r.set(e,n),n}function wt(e){return Object.entries(e??{})}function Ot(e){return e.order??Number.MAX_VALUE}function Bo(e){return e!==void 0&&c(e)&&Object.keys(e).length>0}function Dt(e,t){let r={};for(let[o,n]of wt(t))r[`${e}-${o}`]=n;return r}function Vt(e){return Dt(at,e)}function Lt(e){return Dt(ct,e)}var Mt={1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3"},_t={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3"};function Bt(e,t=2){return Mt[e&&e in Mt?e:t]}function Ut(e){if(e&&e in _t)return _t[e]}var Uo=/^\d+$/;function Gt(){return Array.from({length:12},(e,t)=>({value:(t+1).toString(),label:new Date(0,t).toLocaleString("default",{month:"long"})}))}function Xt(e,t){return t>=e?Array.from({length:t-e+1},(r,o)=>{let n=e+o;return{value:n.toString(),label:n.toString()}}):[]}function ke(){return new Date().getFullYear()}function Oe(e,t){if(typeof e=="number")return e;let r=t??ke(),o=e.trim().toLowerCase();if(o.startsWith("current")){let n=o.match(/^current([+-])(\d+)$/);if(n){let[,i,l]=n,a=parseInt(l,10);if(!isNaN(a))return i==="+"?r+a:r-a}return r}return Uo.test(o)?parseInt(o,10):r}var u=require("zod");var Go=[[le,$o],[ht,Xo],[ie,Wo],[ne,Ko],[b,Yo],[h,Ho]];function Yt(e){return u.z.object(e)}function Ht(e){let t={},r=u.z.flattenError(e).fieldErrors;for(let[o,n]of Object.entries(r))n!==void 0&&(t[o]=n);return t}function qt(e){for(let[t,r]of Go)if(t(e))return r(e);return qo(e)}function Xo(e){let t=u.z.string().trim();if(e.required){let r=t.min(1,e.validation?.required).pipe(u.z.email(e.validation?.email));return u.z.preprocess(o=>re(o)?"":o,r)}return t.pipe(u.z.email(e.validation?.email)).or(u.z.literal("")).nullable()}function Yo(e){let t=u.z.coerce.boolean();return e.required?(t=t.refine(r=>r===!0,{message:e.validation?.required}),u.z.preprocess(r=>r===null?!1:r,t)):t.nullable()}function Ho(e){let t=u.z.coerce.string();return e.required?(t=t.min(1,e.validation?.required),u.z.preprocess(r=>re(r)?"":r,t)):t.or(u.z.literal("")).nullable()}function qo(e){let t=u.z.coerce.string().trim();return t=$t(t,e),e.required?(t=Wt(t,e),u.z.preprocess(r=>re(r)?"":r,t)):t.nullable()}function $o(e){let t=u.z.coerce.number().int();return t=$t(t,e),e.required?(t=Wt(t,e),u.z.preprocess(r=>r===null?void 0:r,t)):t.nullable()}function Wo(e){if(e.required){let t=u.z.coerce.number({message:e.validation?.required}).int();return u.z.preprocess(Zo,t)}return u.z.coerce.number().int().nullable()}function Ko(e){let t=u.z.coerce.number().int().min(1,e.validation?.required).max(12,e.validation?.required);return e.required?t:t.nullable()}function Zo(e){return e===null||e===""?void 0:e}function $t(e,t){return e=zo(e,t),e=jo(e,t),e}function Wt(e,t){let r=t.advanced?.length?.min;return r===void 0||r<1?e.min(1,t.validation?.required):e}var zo=(e,t)=>Kt(e,t,Q),jo=(e,t)=>Kt(e,t,ee);function Kt(e,t,r){let o=t.advanced?.length?.[r];return o!==void 0?e[r](o,t.validation?.length?.[r]):e}function Zt(e,t){if(!t||!Qo(e))return!0;if(t.length===0)return!1;try{let r=new URL(e),o=r.protocol.replace(":",""),n=r.hostname,i=r.port||Jo(o);return t.some(l=>!(l.protocol&&l.protocol!==o||l.hostname&&l.hostname!==n||l.port!==void 0&&String(l.port)!==i))}catch{return!1}}function Jo(e){return e==="https"?"443":"80"}function Qo(e){return/^(https?:)?\/\//.test(e)}function zt(e,t){try{if(!e)return t;if(!t)return e;let r=new URL(e,te);new URL(t,te).searchParams.forEach((i,l)=>{r.searchParams.set(l,i)});let n=r.toString();return e.startsWith("/")||!e.includes("://")?n.replace(te,""):n}catch{return t||e}}function jt(e){return!Array.isArray(e)||e.length===0?null:e.reduce((t,r)=>{let o=zt(t.url,r.url),n=en(t,r),i=tn(t,r);return{...t,...r,url:o,body:n,headers:i}})}function en(e,t){return c(t.body)&&c(e?.body)?{...e.body,...t.body}:t.body??e?.body}function tn(e,t){return c(t.headers)&&c(e?.headers)?{...e.headers,...t.headers}:t.headers??e?.headers}function Jt(e=[],t){let r=[],o=[];e.forEach(n=>{n.action===V&&r.push(n),n.action===dt&&o.push(n)}),t({sources:o,values:r})}function Qt(e=null,t=[],r){t.forEach(o=>{let{target:n,source:i}=o;if(!e){r(n,void 0);return}if(mt(i)){let l=P(i.url,e),a=i.body?P(i.body,e):i.body;r(n,{...i,url:l,body:a})}})}function er(e=null,t=[],r){t.forEach(o=>{Object.entries(o.value).forEach(([n,i])=>{r(n,e?P(i,e):void 0)})})}var tr=require("react/jsx-runtime");function $(e){return Tt(e,(t,r,o)=>(0,tr.jsx)("a",{className:"underline",href:r,rel:"noopener noreferrer",target:"_blank",children:o},`${r}-${t}`))}var k=require("react/jsx-runtime");function rr(e){return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)("legend",{className:"mb-3 font-medium text-slate-800 dark:text-slate-200",children:$(e.title)}),(0,k.jsx)("p",{className:"-mt-2 text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:$(e.description)})]})}function se(e,t){return{...e,...t}}var _=require("react/jsx-runtime");function or(e){let t=e.section.fields||[],{compact:r}=se(e.style,{compact:e.section.compact});return!e.section.title&&!e.section.description?(0,_.jsx)(H,{compact:r,children:e.children}):(0,_.jsxs)("fieldset",{"data-slot":"field-set","data-empty":t.length===0,className:"flex flex-col data-[empty=false]:gap-6",children:[(0,_.jsx)(rr,{description:e.section.description,title:e.section.title}),(0,_.jsx)(H,{compact:r,children:e.children})]})}var ir=require("react");var we=require("react/jsx-runtime");function nr(){return(0,we.jsx)("div",{"data-slot":"field-separator",className:"relative -my-2 h-5 text-sm",children:(0,we.jsx)("div",{className:"absolute inset-0 top-1/2 h-px w-full bg-slate-200 dark:bg-slate-800"})})}var R=require("react/jsx-runtime");function lr(e){let t=ue(e.sections,e.definition);return(0,R.jsx)("div",{className:"h-full w-full",children:(0,R.jsx)("form",{noValidate:e.noValidate,action:e.action,children:(0,R.jsxs)(H,{children:[t.map((r,o)=>(0,R.jsxs)(ir.Fragment,{children:[(0,R.jsx)(or,{section:r,style:e.config.style,children:e.children({disabled:e.readOnly,fields:r.fields})}),r.separator&&(0,R.jsx)(nr,{})]},o)),e.control&&(0,R.jsx)(Xe,{children:e.control})]})})})}var cr=require("react/jsx-runtime");function ar(e){return(0,cr.jsx)("p",{className:"text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:e.children})}var ur=require("react/jsx-runtime");function de(e){let t=$(e.text);return t?(0,ur.jsx)(ar,{children:t}):null}var sr=require("tailwind-merge"),me=require("react/jsx-runtime");function dr(e){let t=h(e.field)||b(e.field);return(0,me.jsxs)("label",{"data-slot":"field-label","data-normal":t,className:(0,sr.twMerge)("flex w-fit items-center gap-2 text-sm leading-snug font-medium select-none","data-[normal=true]:font-normal","group-data-[readonly=true]:cursor-not-allowed group-data-[readonly=true]:opacity-50"),htmlFor:e.field.name,children:[e.children,!e.field.required&&(0,me.jsx)("span",{className:"text-sm text-slate-600 dark:text-slate-400",children:"(Optional)"})]})}var W=require("react/jsx-runtime");function mr(e){return(0,W.jsxs)("div",{"data-slot":"field-content",className:"flex w-full flex-1 flex-col gap-1.5 leading-snug",children:[(0,W.jsx)(dr,{field:e.field,children:e.field.label}),e.orientation===M&&(0,W.jsx)(de,{text:e.field.description})]})}var O=require("react/jsx-runtime");function fr(e){let t=ae(e.field);return(0,O.jsxs)(O.Fragment,{children:[e.field.name&&e.field.label&&(0,O.jsx)(mr,{field:e.field,orientation:t}),e.children,t===S&&e.field.description&&(0,O.jsx)(de,{text:e.field.description})]})}function pr(e,t){return e?t(e):null}var Tr=require("jotai");var w=require("jotai"),De=require("jotai-family"),fe=require("fast-equals");function pe(e){return(0,De.atomFamily)(t=>(0,w.atom)(r=>r(e)[t]??void 0,(r,o,n)=>{let i=r(e);if(n!=null){let l=i[t];(!l||!(0,fe.deepEqual)(l,n))&&o(e,{...i,[t]:n})}else if(i[t]){let{[t]:l,...a}=i;o(e,a)}}))}function gr(e){return(0,w.atom)(null,(t,r)=>{let o=t(e);o&&Object.keys(o).length>0&&r(e,{})})}function ge(e){return(0,w.atom)(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);l&&r(e,i)})}function ye(e){return(0,w.atom)(null,(t,r,o)=>{let n=t(e);(0,fe.deepEqual)(n,o)||r(e,o)})}function yr(e,t={}){let{merge:r,validateTarget:o}=t;return(0,De.atomFamily)(n=>(0,w.atom)(i=>{let l=i(e)[n];if(l&&r)return r(Object.values(l))},(i,l,a,m)=>{if(o&&!o(a))return;let s=i(e),d={...s[a]??{}};if(m!=null){let C=d[n];(!C||!(0,fe.deepEqual)(C,m))&&(d[n]=m,l(e,{...s,[a]:d}))}else if(d[n])if(delete d[n],Object.keys(d).length===0){let{[a]:C,...X}=s;l(e,X)}else l(e,{...s,[a]:d})}))}function xr(e){return(0,w.atom)(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);for(let a in i){let m={...i[a]},s=!1;for(let d of o)m[d]&&(delete m[d],s=!0,l=!0);s&&(Object.keys(m).length===0?delete i[a]:i[a]=m)}l&&r(e,i)})}var K=(0,Tr.atom)({}),br=ge(K),hr=ye(K),Rr=pe(K);var Ar=require("jotai");var N=(0,Ar.atom)({}),Sr=gr(N),Er=ge(N),Xi=ye(N),Fr=pe(N);var Lr=require("react"),Z=require("jotai");var Nr=require("jotai");var Ir=(0,Nr.atom)({}),Cr=yr(Ir,{merge:e=>{let t=jt(e);if(t)return t},validateTarget:e=>e.trim()!==""}),vr=xr(Ir);var Or=require("jotai");var Pr=Co(require("swr"),1);function kr(e=null,t,r=!1){let{data:o,error:n}=(0,Pr.default)(rn(e,t,r),t.fetcher.provider);if(n&&console.error("Error fetching data source:",n),e){if(Array.isArray(e))return[e];if(o)return[pt(o,e.namespace)]}return[null]}function rn(e=null,t,r=!1){if(e&&!Array.isArray(e)&&!r&&e.url&&!oe(e.url)){if(Zt(e.url,t.fetcher.remotePatterns))return e;console.warn(`URL blocked by remotePatterns: ${e.url}. Check your luna.config.ts`)}return null}function wr(e,t,r){let o=vt(e,r),[n,i]=(0,Or.useAtom)(Cr(e.name)),l=n??o,[a]=kr(l,t,e.disabled);return[a,i]}var D=require("react");function Dr(e,t,r){let o=(0,D.useMemo)(()=>qt(e),[e]),n=(0,D.useEffectEvent)(l=>{l&&t(l,o)}),i=(0,D.useEffectEvent)(l=>{l&&r(l)});return(0,D.useEffect)(()=>(n(e.name),()=>{i(e.name)}),[e.name]),[o]}var xe=require("react");function Vr(){let e=(0,xe.useRef)(null);(0,xe.useEffect)(()=>{let o=e.current;return()=>{o&&clearTimeout(o)}},[]);function t(){e.current&&(clearTimeout(e.current),e.current=null)}function r(o,n){t(),e.current=setTimeout(o,n)}return[r,t]}var Ve=require("react/jsx-runtime");function Mr(e){let t=(0,Z.useSetAtom)(Rr(e.field.name)),[r,o]=(0,Z.useAtom)(Fr(e.field.name)),n=(0,Z.useSetAtom)(N),[i]=Dr(e.field,e.onMount,e.onUnmount),[l,a]=wr(e.field,e.config,r),{commonPropsWithOptions:m,defaultValue:s}=Pt(e.field,e.commonProps,l,r),d=kt(e.field,s),[C]=Vr();function X(p,f){if(Ft(e.field)){C(()=>{f({value:p})},500);return}let x=ft(p,l,e.field.advanced?.entity);f(x)}function Re(p){let f=p.target.value;o(f),e.config.validation.change&&Y(f);let x=e.field.event?.change;x&&X(f,g=>{Jt(x,({sources:bo,values:ho})=>{(0,Lr.startTransition)(()=>{Qt(g,bo,(Se,Ee)=>a(Se,Ee)),er(g,ho,(Se,Ee)=>{n(Ro=>({...Ro,[Se]:Ee}))})})})})}function Ae(p){if(Rt(e.field))return;let f=p.target.value;e.config.validation.blur&&Y(f)}function Y(p){let x=i.safeParse(p).error?.issues.map(g=>g.message)??[];t(x)}return pr(e.config.inputs[e.field.type],p=>(0,Ve.jsx)(fr,{field:e.field,children:(0,Ve.jsx)(p,{...m,...e.ariaAttributes,...e.dataAttributes,...d,onBlur:Ae,onChange:Re})}))}var _r=require("tailwind-merge"),Le=require("react/jsx-runtime");function Br(e){let t=Bt(e.column?.advanced?.cols);return(0,Le.jsx)("div",{className:"flex w-full flex-col gap-4",children:(0,Le.jsx)("div",{className:(0,_r.twMerge)("grid grid-cols-1 gap-8 sm:gap-4",t),children:e.children})})}var Me=require("react/jsx-runtime");function Ur(e){return!e.errors||e.errors.length===0?null:(0,Me.jsx)("ul",{className:"text-sm text-red-600 dark:text-red-500",id:e.name?`${e.name}-error`:void 0,children:e.errors?.map((t,r)=>(0,Me.jsx)("li",{children:t},e.name?`${e.name}-error-${r}`:r))})}var Gr=require("tailwind-merge"),Xr=require("react/jsx-runtime");function Te(e){let t=e.errors&&e.errors.length>0;return(0,Xr.jsx)("div",{"data-slot":"field",...t&&{[it]:"true"},...e.disabled&&{[lt]:"true"},"data-orientation":e.orientation,className:(0,Gr.twMerge)("group flex w-full flex-col items-center data-[invalid=true]:text-red-600 data-[invalid=true]:dark:text-red-500","has-[>[role=checkbox],[role=radiogroup]]:items-start","has-[>[role=checkbox]]:flex-row-reverse","has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radiogroup]]:mt-px",Ut(e.cols),e.className),children:e.children})}var Hr=require("react/jsx-runtime");function Yr(e){return(0,Hr.jsx)(Te,{...e,orientation:S,className:"gap-3 has-[>[data-slot=field-content]]:items-start [&>*:not([role=checkbox]):not([role=radiogroup])]:w-full",children:e.children})}var $r=require("react/jsx-runtime");function qr(e){return(0,$r.jsx)(Te,{...e,orientation:M,className:"gap-2 md:flex-row md:gap-4 has-[>[role=radiogroup]]:md:flex-col [&:not(:has(>[role=checkbox],[role=radiogroup]))]:md:justify-between [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:w-full [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:md:w-1/2 [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:xl:w-2/5 [&>[data-slot=field-content]]:min-w-0 [&>[data-slot=field-content]]:flex-grow [&>[data-slot=field-content]]:self-start",children:e.children})}var _e=require("react/jsx-runtime");function Wr(e){return e.orientation===S?(0,_e.jsx)(Yr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children}):(0,_e.jsx)(qr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children})}var be=ke();function Kr(e){if(y(e))return on(e)}function on(e){if(ne(e))return Gt();if(ie(e)){let t=e.advanced?.length?.min??be,r=e.advanced?.length?.max??be+5;return Xt(Oe(t,be),Oe(r,be))}}function Zr(e,t=!1){let r={disabled:t,id:e.name,name:e.name,placeholder:e.placeholder,required:e.required};return Ce(e)?{...r,...nn(e)}:y(e)?{...r,...ln(e)}:ve(e)?{...r,...an(e)}:r}function nn(e){let t=yt(e.type),r={...e,type:t};return{...zr(e),...cn(r),...bt(r)?jr(r):{},type:t}}function ln(e){let t=Kr(e);return t?{options:t}:{}}function an(e){return{...zr(e),...jr(e)}}function zr(e){let t=e.advanced?.autocomplete;return t?{autoComplete:t}:{}}function cn(e){return le(e)?un(e):{}}function jr(e){return Jr(e,{min:ut,max:st})}function un(e){return Jr(e,{min:Q,max:ee})}function Jr(e,t){let r={},o=e.advanced?.length;return o&&(o.min!==void 0&&(r[t.min]=o.min),o.max!==void 0&&(r[t.max]=o.max)),r}function Qr(e,t){let r=Vt(e.advanced?.aria);return t&&t.length>0&&(r[nt]="true",r[ot]=`${e.name}-error`),r}function eo(e){return Lt(e.advanced?.data)}function to(e){if(!e.field.type)return null;let t=Zr(e.field,e.disabled),r=eo(e.field),o=Qr(e.field,e.errors),n={...e.field,disabled:t.disabled};return e.children({ariaAttributes:o,commonProps:t,dataAttributes:r,field:n})}var B=require("react/jsx-runtime");function ro(e){let t=e.field.advanced?.cols,r=e.field.name?e.errors?.[e.field.name]:void 0,{orientation:o}=se(e.style,{orientation:ae(e.field)}),n=It(e.field,e.disabled);return(0,B.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,B.jsx)(Wr,{cols:t,disabled:n,errors:r,orientation:o,children:(0,B.jsx)(to,{disabled:n,errors:r,field:e.field,children:e.children})}),(0,B.jsx)(Ur,{errors:r,name:e.field.name})]})}var oo=require("jotai"),io=require("react/jsx-runtime");function no(e){return r=>{let o=(0,oo.useAtomValue)(K);return(0,io.jsx)(e,{...r,errors:o})}}var lo=no(ro);var ao=require("react"),U=require("react/jsx-runtime");function Be(e){let t=ue(e.fields),{column:r,field:o}=e.components;return t.map((n,i)=>(0,U.jsxs)(ao.Fragment,{children:[At(n)&&(0,U.jsx)(r,{column:n,children:(0,U.jsx)(Be,{...e,fields:n.fields})}),St(n)&&(0,U.jsx)(o,{disabled:e.disabled,field:n,style:e.style,children:e.children})]},i))}var uo=require("react/jsx-runtime"),co=e=>(0,uo.jsx)(Be,{...e,components:{column:Br,field:lo}});var Ue=require("jotai");var G=require("react");function fo(e,t,r){let{onError:o,onSuccess:n,preserveValues:i=!1,validation:l=!0,value:a=null}=r??{},m=(0,Ue.useSetAtom)(hr),s=(0,Ue.useSetAtom)(Sr),d={data:a,error:null,success:!1},[C,X,Re]=(0,G.useActionState)(async(Ae,Y)=>{let p=Yt(e());if(l===!1)return t?await t(Y,p):Ae;let f=xt(Y),x=p.safeParse(f);if(!x.success){let g=Ht(x.error);return(0,G.startTransition)(()=>{m(g)}),mo(f,{details:g,title:"There were validation errors submitting the form."})}if(t)try{let g=await t(f,p);return g.success?(n?.(g.data),i||(0,G.startTransition)(()=>{s()})):g.error&&(0,G.startTransition)(()=>{o?.(g.error)}),so(f,i)}catch(g){return mo(f,{title:"An unexpected error occurred submitting the form.",details:sn(g)})}return so(x.data,i)},d);return[X,C,Re]}function sn(e){let t=e instanceof Error?e.message:["Unknown error"];return Array.isArray(t)?t:[t]}function so(e,t=!1){return{data:t?e:null,error:null,success:!0}}function mo(e,t){return{data:e,error:t,success:!1}}var xo=require("jotai/utils");var I=require("react");var po=require("react"),he=require("jotai");function go(){let e=(0,he.useSetAtom)(br),t=(0,he.useSetAtom)(vr),r=(0,he.useSetAtom)(Er);return(0,po.useCallback)(o=>{let n=Array.isArray(o)?o:[o];e(n),t(n),r(n)},[e,t,r])}function yo(){let e=go(),t=(0,I.useRef)({}),r=(0,I.useRef)(new Set),o=(0,I.useCallback)((l,a)=>{l in t.current||(t.current[l]=a)},[]),n=(0,I.useCallback)(l=>{t.current[l]&&(delete t.current[l],r.current.add(l),(0,I.startTransition)(()=>{r.current.size>0&&(e(Array.from(r.current)),r.current.clear())}))},[e]);function i(){return t.current}return[i,o,n]}var A=require("react/jsx-runtime");function To(e){let[t,r,o]=yo(),[n,i]=fo(t,e.action,{onError:e.onError,onSuccess:e.onSuccess,validation:e.config.validation.submit,value:e.value});(0,xo.useHydrateAtoms)([[N,e.value??{}]]);let l=e.config.alert??(()=>null),a=e.config.validation.showError&&!i.success&&i.error;return(0,A.jsx)(lr,{action:n,config:e.config,control:e.children,definition:e.definition,noValidate:!0,readOnly:e.readOnly,sections:e.sections,children:({disabled:m,fields:s})=>(0,A.jsxs)(A.Fragment,{children:[a&&(0,A.jsx)(l,{title:i.error.title,description:i.error?.description,details:i.error?.details}),(0,A.jsx)(co,{disabled:m,fields:s,style:e.config.style,children:d=>(0,A.jsx)(Mr,{...d,config:e.config,onMount:r,onUnmount:o,value:i.data})})]})})}
|
package/dist/client/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as Wr}from"react/jsx-runtime";function Ne(e){return Wr("div",{"data-slot":"field-control",className:"w-full",children:e.children})}import{jsx as Zr}from"react/jsx-runtime";function D(e){return Zr("div",{"data-slot":"field-group","data-compact":e.compact,className:"flex w-full flex-col gap-8 data-[compact=true]:gap-3",children:e.children})}var B="input",Fe="input/email",Ie="input/number";var Ce="textarea",ve="radio",Pe="checkbox",Oe="select",ke="select/month",we="select/year";var se="column";var De="label",C="value",U="options",de="email",Ve="number",Le="password",Me="tel",V="text",_e="aria-errormessage",Be="aria-invalid",Ue="data-invalid",Ge="data-readonly",Xe="aria",Ye="data",G="min",X="max",He="minLength",qe="maxLength",v="$ref",$e="source";var Y="http://luna.internal",R="vertical",P="horizontal";function c(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function H(e){return e==null||e===""}function A(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function F(e){return typeof e=="string"}function Ke(e){return c(e)&&"url"in e}var zr=/[^/]+$/;function We(e,t=[],r=C){if(Array.isArray(t))return t.find(o=>{let n=me(o,r);if(n!==void 0&&`${n}`===e)return o})??{value:e}}function me(e,t=C){if(e!=null){if(A(e))return e;if(c(e)){let r=jr(e,t);if(A(r))return r}}}function jr(e,t){let r=S(e,t);if(A(r))return r}function Ze(e,t){if(Array.isArray(e))return e;let r=S(e,t);return Array.isArray(r)?r:null}function S(e,t){if(!t||!c(e))return null;let r=t.split(".").filter(n=>n!=="");if(r.length===0)return null;let o=e;for(let n of r)if(c(o)&&n in o)o=o[n];else return null;return o}function ze(e,t={label:De,value:C}){return e.map(r=>{if(c(r)){let o=S(r,t.label),n=S(r,t.value);if(A(o)&&A(n))return{label:`${o}`,value:`${n}`}}return r})}function je(e=V){if(e){let t=e.match(zr);if(t){let[r]=t;if(r!==B)return r.trim().toLowerCase()}}return V}function Je(e){let t={};for(let r of e.keys()){let o=e.getAll(r);t[r]=o.length>1?o:o[0]}return t}var Jr=/\[([^\]]+)\]\(([^)]+)\)/g;function I(e,t={}){if(F(e))return Qr(e,t);if(Array.isArray(e))return e.map(r=>I(r,t));if(c(e)){let r={};for(let o in e)r[o]=I(e[o],t);return r}return e}function q(e){return F(e)?/{([^}]+)}/.test(e):Array.isArray(e)?e.some(t=>q(t)):c(e)?Object.values(e).some(t=>q(t)):!1}function Qr(e,t={}){return e.replace(/{([^}]+)}/g,(r,o)=>{let n=o.includes(".")?S(t,o):t[o];return A(n)?String(n):r})}function Qe(e,t){if(!e||e.trim().length===0)return null;let r,o=0,n=!1,i=[];for(;(r=Jr.exec(e))!==null;){let[l,a,m]=r,s=r.index;n=!0,s>o&&i.push(e.substring(o,s));let d=t?t(s,m,a):l;i.push(d),o=s+l.length}return n?(o<e.length&&i.push(e.substring(o)),i):e}var $=e=>T(ke)(e),K=e=>T(we)(e),b=T(Pe),fe=T(B),h=T(ve),y=T(Oe),pe=T(Ce),et=T(V,de,Le,Me),tt=T(Fe,de),W=T(Ie,Ve);function rt(e){return h(e)||b(e)}function ot(e){return e.type===se}function nt(e){return e.type!==se}function it(e){return y(e)||h(e)}function lt(e){return fe(e)||pe(e)}function ge(e){return e!=null&&e!==""}function T(...e){return t=>{let r=F(t.type)?t.type:void 0;return r?e.some(o=>r===o||r?.startsWith(`${o}/`)):!1}}function at(e,t={}){if(y(e)&&e.disabled){let r=e.name?t?.[e.name]:void 0;if(r&&c(r))return[r]}}function Z(e){return h(e)||b(e)?P:e.advanced?.orientation??R}function ct(e,t){let r=e.readonly??!1;return t||r}function ut(e){if(h(e)||y(e)&&!e.disabled){let t=e.source;if(Array.isArray(t)||c(t)&&!(v in t))return t}}function st(e,t){let r=ut(e);return r||at(e,t)}function eo(e,t){let r=c(t)&&e.name in t?t[e.name]:t;return me(r,e.advanced?.entity)}function to(e,t,r){return it(e)&&Array.isArray(r)?{...t,[U]:r}:t}function ro(e,t,r){if(e.required&&!ge(r)&&y(e)&&e.advanced?.preselected!==!1&&U in t){let o=t[U];if(Array.isArray(o)&&o.length===1)return o[0]}return r}function oo(e,t){return y(e)&&Array.isArray(t)?ze(t,e.advanced?.options):t}function dt(e,t,r,o){let n=eo(e,o),i=Array.isArray(r)?oo(e,r):r,l=to(e,t,i),a=ro(e,l,n);return{commonPropsWithOptions:l,defaultValue:a}}function mt(e,t){return b(e)?{checked:ge(t)}:{value:t??""}}var no=/^#\/definition\//;function j(e=[],t){let r=z(e,t);return Array.isArray(r)?r.filter(o=>o.hidden!==!0).sort((o,n)=>ft(o)-ft(n)):[]}function z(e,t,r=new Map,o=new WeakSet){if(!io(t)||!e||typeof e!="object")return e;if(r.has(e))return r.get(e);if(o.has(e))return e;if(o.add(e),Array.isArray(e))return e.map(i=>z(i,t,r,o));if(v in e&&F(e[v])){let i=e[v].replace(no,""),l=S(t,i);return l!==null?z(l,t,r,o):e}let n={};for(let[i,l]of Object.entries(e))n[i]=z(l,t,r,o);return o.delete(e),r.set(e,n),n}function pt(e){return Object.entries(e??{})}function ft(e){return e.order??Number.MAX_VALUE}function io(e){return e!==void 0&&c(e)&&Object.keys(e).length>0}function gt(e,t){let r={};for(let[o,n]of pt(t))r[`${e}-${o}`]=n;return r}function yt(e){return gt(Xe,e)}function xt(e){return gt(Ye,e)}var Tt={1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3"},bt={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3"};function ht(e,t=2){return Tt[e&&e in Tt?e:t]}function Rt(e){if(e&&e in bt)return bt[e]}var lo=/^\d+$/;function At(){return Array.from({length:12},(e,t)=>({value:(t+1).toString(),label:new Date(0,t).toLocaleString("default",{month:"long"})}))}function St(e,t){return t>=e?Array.from({length:t-e+1},(r,o)=>{let n=e+o;return{value:n.toString(),label:n.toString()}}):[]}function ye(){return new Date().getFullYear()}function xe(e,t){if(typeof e=="number")return e;let r=t??ye(),o=e.trim().toLowerCase();if(o.startsWith("current")){let n=o.match(/^current([+-])(\d+)$/);if(n){let[,i,l]=n,a=parseInt(l,10);if(!isNaN(a))return i==="+"?r+a:r-a}return r}return lo.test(o)?parseInt(o,10):r}import{z as u}from"zod";var ao=[[W,fo],[tt,co],[K,po],[$,go],[b,uo],[h,so]];function Et(e){return u.object(e)}function Nt(e){let t={},r=u.flattenError(e).fieldErrors;for(let[o,n]of Object.entries(r))n!==void 0&&(t[o]=n);return t}function Ft(e){for(let[t,r]of ao)if(t(e))return r(e);return mo(e)}function co(e){let t=u.string().trim();if(e.required){let r=t.min(1,e.validation?.required).pipe(u.email(e.validation?.email));return u.preprocess(o=>H(o)?"":o,r)}return t.pipe(u.email(e.validation?.email)).or(u.literal("")).nullable()}function uo(e){let t=u.coerce.boolean();return e.required?(t=t.refine(r=>r===!0,{message:e.validation?.required}),u.preprocess(r=>r===null?!1:r,t)):t.nullable()}function so(e){let t=u.coerce.string();return e.required?(t=t.min(1,e.validation?.required),u.preprocess(r=>H(r)?"":r,t)):t.or(u.literal("")).nullable()}function mo(e){let t=u.coerce.string().trim();return t=It(t,e),e.required?(t=Ct(t,e),u.preprocess(r=>H(r)?"":r,t)):t.nullable()}function fo(e){let t=u.coerce.number().int();return t=It(t,e),e.required?(t=Ct(t,e),u.preprocess(r=>r===null?void 0:r,t)):t.nullable()}function po(e){if(e.required){let t=u.coerce.number({message:e.validation?.required}).int();return u.preprocess(yo,t)}return u.coerce.number().int().nullable()}function go(e){let t=u.coerce.number().int().min(1,e.validation?.required).max(12,e.validation?.required);return e.required?t:t.nullable()}function yo(e){return e===null||e===""?void 0:e}function It(e,t){return e=xo(e,t),e=To(e,t),e}function Ct(e,t){let r=t.advanced?.length?.min;return r===void 0||r<1?e.min(1,t.validation?.required):e}var xo=(e,t)=>vt(e,t,G),To=(e,t)=>vt(e,t,X);function vt(e,t,r){let o=t.advanced?.length?.[r];return o!==void 0?e[r](o,t.validation?.length?.[r]):e}function Pt(e,t){if(!t||!ho(e))return!0;if(t.length===0)return!1;try{let r=new URL(e),o=r.protocol.replace(":",""),n=r.hostname,i=r.port||bo(o);return t.some(l=>!(l.protocol&&l.protocol!==o||l.hostname&&l.hostname!==n||l.port!==void 0&&String(l.port)!==i))}catch{return!1}}function bo(e){return e==="https"?"443":"80"}function ho(e){return/^(https?:)?\/\//.test(e)}function Ot(e,t){try{if(!e)return t;if(!t)return e;let r=new URL(e,Y);new URL(t,Y).searchParams.forEach((i,l)=>{r.searchParams.set(l,i)});let n=r.toString();return e.startsWith("/")||!e.includes("://")?n.replace(Y,""):n}catch{return t||e}}function kt(e){return!Array.isArray(e)||e.length===0?null:e.reduce((t,r)=>{let o=Ot(t.url,r.url),n=Ro(t,r),i=Ao(t,r);return{...t,...r,url:o,body:n,headers:i}})}function Ro(e,t){return c(t.body)&&c(e?.body)?{...e.body,...t.body}:t.body??e?.body}function Ao(e,t){return c(t.headers)&&c(e?.headers)?{...e.headers,...t.headers}:t.headers??e?.headers}function wt(e=[],t){let r=[],o=[];e.forEach(n=>{n.action===C&&r.push(n),n.action===$e&&o.push(n)}),t({sources:o,values:r})}function Dt(e=null,t=[],r){t.forEach(o=>{let{target:n,source:i}=o;if(!e){r(n,void 0);return}if(Ke(i)){let l=I(i.url,e),a=i.body?I(i.body,e):i.body;r(n,{...i,url:l,body:a})}})}function Vt(e=null,t=[],r){t.forEach(o=>{Object.entries(o.value).forEach(([n,i])=>{r(n,e?I(i,e):void 0)})})}import{jsx as So}from"react/jsx-runtime";function L(e){return Qe(e,(t,r,o)=>So("a",{className:"underline",href:r,rel:"noopener noreferrer",target:"_blank",children:o},`${r}-${t}`))}import{Fragment as Eo,jsx as Lt,jsxs as No}from"react/jsx-runtime";function Mt(e){return No(Eo,{children:[Lt("legend",{className:"mb-3 font-medium text-slate-800 dark:text-slate-200",children:L(e.title)}),Lt("p",{className:"-mt-2 text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:L(e.description)})]})}function J(e,t){return{...e,...t}}import{jsx as Te,jsxs as Fo}from"react/jsx-runtime";function _t(e){let t=e.section.fields||[],{compact:r}=J(e.style,{compact:e.section.compact});return!e.section.title&&!e.section.description?Te(D,{compact:r,children:e.children}):Fo("fieldset",{"data-slot":"field-set","data-empty":t.length===0,className:"flex flex-col data-[empty=false]:gap-6",children:[Te(Mt,{description:e.section.description,title:e.section.title}),Te(D,{compact:r,children:e.children})]})}import{Fragment as Io}from"react";import{jsx as Bt}from"react/jsx-runtime";function Ut(){return Bt("div",{"data-slot":"field-separator",className:"relative -my-2 h-5 text-sm",children:Bt("div",{className:"absolute inset-0 top-1/2 h-px w-full bg-slate-200 dark:bg-slate-800"})})}import{jsx as M,jsxs as Gt}from"react/jsx-runtime";function Xt(e){let t=j(e.sections,e.definition);return M("div",{className:"h-full w-full",children:M("form",{noValidate:e.noValidate,action:e.action,children:Gt(D,{children:[t.map((r,o)=>Gt(Io,{children:[M(_t,{section:r,style:e.config.style,children:e.children({disabled:e.readOnly,fields:r.fields})}),r.separator&&M(Ut,{})]},o)),e.control&&M(Ne,{children:e.control})]})})})}import{jsx as Co}from"react/jsx-runtime";function Yt(e){return Co("p",{className:"text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:e.children})}import{jsx as vo}from"react/jsx-runtime";function Q(e){let t=L(e.text);return t?vo(Yt,{children:t}):null}import{twMerge as Po}from"tailwind-merge";import{jsx as Oo,jsxs as ko}from"react/jsx-runtime";function Ht(e){let t=h(e.field)||b(e.field);return ko("label",{"data-slot":"field-label","data-normal":t,className:Po("flex w-fit items-center gap-2 text-sm leading-snug font-medium select-none","data-[normal=true]:font-normal","group-data-[readonly=true]:cursor-not-allowed group-data-[readonly=true]:opacity-50"),htmlFor:e.field.name,children:[e.children,!e.field.required&&Oo("span",{className:"text-sm text-slate-600 dark:text-slate-400",children:"(Optional)"})]})}import{jsx as qt,jsxs as wo}from"react/jsx-runtime";function $t(e){return wo("div",{"data-slot":"field-content",className:"flex w-full flex-1 flex-col gap-1.5 leading-snug",children:[qt(Ht,{field:e.field,children:e.field.label}),e.orientation===P&&qt(Q,{text:e.field.description})]})}import{Fragment as Do,jsx as Kt,jsxs as Vo}from"react/jsx-runtime";function Wt(e){let t=Z(e.field);return Vo(Do,{children:[e.field.name&&e.field.label&&Kt($t,{field:e.field,orientation:t}),e.children,t===R&&e.field.description&&Kt(Q,{text:e.field.description})]})}function Zt(e,t){return e?t(e):null}import{atom as Lo}from"jotai";import{atom as O}from"jotai";import{atomFamily as zt}from"jotai-family";import{deepEqual as be}from"fast-equals";function ee(e){return zt(t=>O(r=>r(e)[t]??void 0,(r,o,n)=>{let i=r(e);if(n!=null){let l=i[t];(!l||!be(l,n))&&o(e,{...i,[t]:n})}else if(i[t]){let{[t]:l,...a}=i;o(e,a)}}))}function jt(e){return O(null,(t,r)=>{let o=t(e);o&&Object.keys(o).length>0&&r(e,{})})}function te(e){return O(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);l&&r(e,i)})}function re(e){return O(null,(t,r,o)=>{let n=t(e);be(n,o)||r(e,o)})}function Jt(e,t={}){let{merge:r,validateTarget:o}=t;return zt(n=>O(i=>{let l=i(e)[n];if(l&&r)return r(Object.values(l))},(i,l,a,m)=>{if(o&&!o(a))return;let s=i(e),d={...s[a]??{}};if(m!=null){let N=d[n];(!N||!be(N,m))&&(d[n]=m,l(e,{...s,[a]:d}))}else if(d[n])if(delete d[n],Object.keys(d).length===0){let{[a]:N,...k}=s;l(e,k)}else l(e,{...s,[a]:d})}))}function Qt(e){return O(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);for(let a in i){let m={...i[a]},s=!1;for(let d of o)m[d]&&(delete m[d],s=!0,l=!0);s&&(Object.keys(m).length===0?delete i[a]:i[a]=m)}l&&r(e,i)})}var _=Lo({}),er=te(_),tr=re(_),rr=ee(_);import{atom as Mo}from"jotai";var E=Mo({}),or=jt(E),nr=te(E),gl=re(E),ir=ee(E);import{startTransition as $o}from"react";import{useAtom as Ko,useSetAtom as pr}from"jotai";import{atom as _o}from"jotai";var lr=_o({}),ar=Jt(lr,{merge:e=>{let t=kt(e);if(t)return t},validateTarget:e=>e.trim()!==""}),cr=Qt(lr);import{useAtom as Go}from"jotai";import Bo from"swr";function ur(e=null,t,r=!1){let{data:o,error:n}=Bo(Uo(e,t,r),t.fetcher.provider);if(n&&console.error("Error fetching data source:",n),e){if(Array.isArray(e))return[e];if(o)return[Ze(o,e.namespace)]}return[null]}function Uo(e=null,t,r=!1){if(e&&!Array.isArray(e)&&!r&&e.url&&!q(e.url)){if(Pt(e.url,t.fetcher.remotePatterns))return e;console.warn(`URL blocked by remotePatterns: ${e.url}. Check your luna.config.ts`)}return null}function sr(e,t,r){let o=st(e,r),[n,i]=Go(ar(e.name)),l=n??o,[a]=ur(l,t,e.disabled);return[a,i]}import{useEffect as Xo,useEffectEvent as dr,useMemo as Yo}from"react";function mr(e,t,r){let o=Yo(()=>Ft(e),[e]),n=dr(l=>{l&&t(l,o)}),i=dr(l=>{l&&r(l)});return Xo(()=>(n(e.name),()=>{i(e.name)}),[e.name]),[o]}import{useEffect as Ho,useRef as qo}from"react";function fr(){let e=qo(null);Ho(()=>{let o=e.current;return()=>{o&&clearTimeout(o)}},[]);function t(){e.current&&(clearTimeout(e.current),e.current=null)}function r(o,n){t(),e.current=setTimeout(o,n)}return[r,t]}import{jsx as gr}from"react/jsx-runtime";function yr(e){let t=pr(rr(e.field.name)),[r,o]=Ko(ir(e.field.name)),n=pr(E),[i]=mr(e.field,e.onMount,e.onUnmount),[l,a]=sr(e.field,e.config,r),{commonPropsWithOptions:m,defaultValue:s}=dt(e.field,e.commonProps,l,r),d=mt(e.field,s),[N]=fr();function k(p,f){if(lt(e.field)){N(()=>{f({value:p})},500);return}let x=We(p,l,e.field.advanced?.entity);f(x)}function le(p){let f=p.target.value;o(f),e.config.validation.change&&w(f);let x=e.field.event?.change;x&&k(f,g=>{wt(x,({sources:qr,values:$r})=>{$o(()=>{Dt(g,qr,(ce,ue)=>a(ce,ue)),Vt(g,$r,(ce,ue)=>{n(Kr=>({...Kr,[ce]:ue}))})})})})}function ae(p){if(rt(e.field))return;let f=p.target.value;e.config.validation.blur&&w(f)}function w(p){let x=i.safeParse(p).error?.issues.map(g=>g.message)??[];t(x)}return Zt(e.config.inputs[e.field.type],p=>gr(Wt,{field:e.field,children:gr(p,{...m,...e.ariaAttributes,...e.dataAttributes,...d,onBlur:ae,onChange:le})}))}import{twMerge as Wo}from"tailwind-merge";import{jsx as xr}from"react/jsx-runtime";function Tr(e){let t=ht(e.column?.advanced?.cols);return xr("div",{className:"flex w-full flex-col gap-4",children:xr("div",{className:Wo("grid grid-cols-1 gap-8 sm:gap-4",t),children:e.children})})}import{jsx as br}from"react/jsx-runtime";function hr(e){return!e.errors||e.errors.length===0?null:br("ul",{className:"text-sm text-red-600 dark:text-red-500",id:e.name?`${e.name}-error`:void 0,children:e.errors?.map((t,r)=>br("li",{children:t},e.name?`${e.name}-error-${r}`:r))})}import{twMerge as Zo}from"tailwind-merge";import{jsx as zo}from"react/jsx-runtime";function oe(e){let t=e.errors&&e.errors.length>0;return zo("div",{"data-slot":"field",...t&&{[Ue]:"true"},...e.disabled&&{[Ge]:"true"},"data-orientation":e.orientation,className:Zo("group flex w-full flex-col items-center data-[invalid=true]:text-red-600 data-[invalid=true]:dark:text-red-500","has-[>[role=checkbox],[role=radiogroup]]:items-start","has-[>[role=checkbox]]:flex-row-reverse","has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radiogroup]]:mt-px",Rt(e.cols),e.className),children:e.children})}import{jsx as jo}from"react/jsx-runtime";function Rr(e){return jo(oe,{...e,orientation:R,className:"gap-3 has-[>[data-slot=field-content]]:items-start [&>*:not([role=checkbox]):not([role=radiogroup])]:w-full",children:e.children})}import{jsx as Jo}from"react/jsx-runtime";function Ar(e){return Jo(oe,{...e,orientation:P,className:"gap-2 md:flex-row md:gap-4 has-[>[role=radiogroup]]:md:flex-col [&:not(:has(>[role=checkbox],[role=radiogroup]))]:md:justify-between [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:w-full [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:md:w-1/2 [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:xl:w-2/5 [&>[data-slot=field-content]]:min-w-0 [&>[data-slot=field-content]]:flex-grow [&>[data-slot=field-content]]:self-start",children:e.children})}import{jsx as Sr}from"react/jsx-runtime";function Er(e){return e.orientation===R?Sr(Rr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children}):Sr(Ar,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children})}var ne=ye();function Nr(e){if(y(e))return Qo(e)}function Qo(e){if($(e))return At();if(K(e)){let t=e.advanced?.length?.min??ne,r=e.advanced?.length?.max??ne+5;return St(xe(t,ne),xe(r,ne))}}function Fr(e,t=!1){let r={disabled:t,id:e.name,name:e.name,placeholder:e.placeholder,required:e.required};return fe(e)?{...r,...en(e)}:y(e)?{...r,...tn(e)}:pe(e)?{...r,...rn(e)}:r}function en(e){let t=je(e.type),r={...e,type:t};return{...Ir(e),...on(r),...et(r)?Cr(r):{},type:t}}function tn(e){let t=Nr(e);return t?{options:t}:{}}function rn(e){return{...Ir(e),...Cr(e)}}function Ir(e){let t=e.advanced?.autocomplete;return t?{autoComplete:t}:{}}function on(e){return W(e)?nn(e):{}}function Cr(e){return vr(e,{min:He,max:qe})}function nn(e){return vr(e,{min:G,max:X})}function vr(e,t){let r={},o=e.advanced?.length;return o&&(o.min!==void 0&&(r[t.min]=o.min),o.max!==void 0&&(r[t.max]=o.max)),r}function Pr(e,t){let r=yt(e.advanced?.aria);return t&&t.length>0&&(r[Be]="true",r[_e]=`${e.name}-error`),r}function Or(e){return xt(e.advanced?.data)}function kr(e){if(!e.field.type)return null;let t=Fr(e.field,e.disabled),r=Or(e.field),o=Pr(e.field,e.errors),n={...e.field,disabled:t.disabled};return e.children({ariaAttributes:o,commonProps:t,dataAttributes:r,field:n})}import{jsx as he,jsxs as ln}from"react/jsx-runtime";function wr(e){let t=e.field.advanced?.cols,r=e.field.name?e.errors?.[e.field.name]:void 0,{orientation:o}=J(e.style,{orientation:Z(e.field)}),n=ct(e.field,e.disabled);return ln("div",{className:"flex flex-col gap-3",children:[he(Er,{cols:t,disabled:n,errors:r,orientation:o,children:he(kr,{disabled:n,errors:r,field:e.field,children:e.children})}),he(hr,{errors:r,name:e.field.name})]})}import{useAtomValue as an}from"jotai";import{jsx as cn}from"react/jsx-runtime";function Dr(e){return r=>{let o=an(_);return cn(e,{...r,errors:o})}}var Vr=Dr(wr);import{Fragment as un}from"react";import{jsx as Re,jsxs as sn}from"react/jsx-runtime";function Ae(e){let t=j(e.fields),{column:r,field:o}=e.components;return t.map((n,i)=>sn(un,{children:[ot(n)&&Re(r,{column:n,children:Re(Ae,{...e,fields:n.fields})}),nt(n)&&Re(o,{disabled:e.disabled,field:n,style:e.style,children:e.children})]},i))}import{jsx as dn}from"react/jsx-runtime";var Lr=e=>dn(Ae,{...e,components:{column:Tr,field:Vr}});import{useSetAtom as Mr}from"jotai";import{startTransition as Se,useActionState as mn}from"react";function Ur(e,t,r){let{onError:o,onSuccess:n,preserveValues:i=!1,validation:l=!0,value:a=null}=r??{},m=Mr(tr),s=Mr(or),d={data:a,error:null,success:!1},[N,k,le]=mn(async(ae,w)=>{let p=Et(e());if(l===!1)return t?await t(w,p):ae;let f=Je(w),x=p.safeParse(f);if(!x.success){let g=Nt(x.error);return Se(()=>{m(g)}),Br(f,{details:g,title:"There were validation errors submitting the form."})}if(t)try{let g=await t(f,p);return g.success?(n?.(g.data),i||Se(()=>{s()})):g.error&&Se(()=>{o?.(g.error)}),_r(f,i)}catch(g){return Br(f,{title:"An unexpected error occurred submitting the form.",details:fn(g)})}return _r(x.data,i)},d);return[k,N,le]}function fn(e){let t=e instanceof Error?e.message:["Unknown error"];return Array.isArray(t)?t:[t]}function _r(e,t=!1){return{data:t?e:null,error:null,success:!0}}function Br(e,t){return{data:e,error:t,success:!1}}import{useHydrateAtoms as yn}from"jotai/utils";import{startTransition as gn,useCallback as Xr,useRef as Yr}from"react";import{useCallback as pn}from"react";import{useSetAtom as Ee}from"jotai";function Gr(){let e=Ee(er),t=Ee(cr),r=Ee(nr);return pn(o=>{let n=Array.isArray(o)?o:[o];e(n),t(n),r(n)},[e,t,r])}function Hr(){let e=Gr(),t=Yr({}),r=Yr(new Set),o=Xr((l,a)=>{l in t.current||(t.current[l]=a)},[]),n=Xr(l=>{t.current[l]&&(delete t.current[l],r.current.add(l),gn(()=>{r.current.size>0&&(e(Array.from(r.current)),r.current.clear())}))},[e]);function i(){return t.current}return[i,o,n]}import{Fragment as Tn,jsx as ie,jsxs as bn}from"react/jsx-runtime";function xn(e){let[t,r,o]=Hr(),[n,i]=Ur(t,e.action,{onError:e.onError,onSuccess:e.onSuccess,validation:e.config.validation.submit,value:e.value});yn([[E,e.value??{}]]);let l=e.config.alert??(()=>null),a=e.config.validation.showError&&!i.success&&i.error;return ie(Xt,{action:n,config:e.config,control:e.children,definition:e.definition,noValidate:!0,readOnly:e.readOnly,sections:e.sections,children:({disabled:m,fields:s})=>bn(Tn,{children:[a&&ie(l,{title:i.error.title,description:i.error?.description,details:i.error?.details}),ie(Lr,{disabled:m,fields:s,style:e.config.style,children:d=>ie(yr,{...d,config:e.config,onMount:r,onUnmount:o,value:i.data})})]})})}export{xn as Form};
|
|
1
|
+
import{jsx as Kr}from"react/jsx-runtime";function Fe(e){return Kr("div",{"data-slot":"field-control",className:"w-full",children:e.children})}import{jsx as Zr}from"react/jsx-runtime";function D(e){return Zr("div",{"data-slot":"field-group","data-compact":e.compact,className:"flex w-full flex-col gap-8 data-[compact=true]:gap-3",children:e.children})}var B="input",Ne="input/email",Ie="input/number";var Ce="textarea",ve="radio",Pe="checkbox",ke="select",Oe="select/month",we="select/year";var se="column";var De="label",C="value",U="options",de="email",Ve="number",Le="password",Me="tel",V="text",_e="aria-errormessage",Be="aria-invalid",Ue="data-invalid",Ge="data-readonly",Xe="aria",Ye="data",G="min",X="max",He="minLength",qe="maxLength",v="$ref",$e="source";var Y="http://luna.internal",R="vertical",P="horizontal";function c(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function H(e){return e==null||e===""}function A(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function N(e){return typeof e=="string"}function We(e){return c(e)&&"url"in e}var zr=/[^/]+$/;function Ke(e,t=[],r=C){if(Array.isArray(t))return t.find(o=>{let n=me(o,r);if(n!==void 0&&`${n}`===e)return o})??{value:e}}function me(e,t=C){if(e!=null){if(A(e))return e;if(c(e)){let r=jr(e,t);if(A(r))return r}}}function jr(e,t){let r=S(e,t);if(A(r))return r}function Ze(e,t){if(Array.isArray(e))return e;let r=S(e,t);return Array.isArray(r)?r:null}function S(e,t){if(!t||!c(e))return null;let r=t.split(".").filter(n=>n!=="");if(r.length===0)return null;let o=e;for(let n of r)if(c(o)&&n in o)o=o[n];else return null;return o}function ze(e,t={label:De,value:C}){return e.map(r=>{if(c(r)){let o=S(r,t.label),n=S(r,t.value);if(A(o)&&A(n))return{label:`${o}`,value:`${n}`}}return r})}function je(e=V){if(e){let t=e.match(zr);if(t){let[r]=t;if(r!==B)return r.trim().toLowerCase()}}return V}function Je(e){let t={};for(let r of e.keys()){let o=e.getAll(r);t[r]=o.length>1?o:o[0]}return t}var Jr=/\[([^\]]+)\]\(([^)]+)\)/g;function I(e,t={}){if(N(e))return Qr(e,t);if(Array.isArray(e))return e.map(r=>I(r,t));if(c(e)){let r={};for(let o in e)r[o]=I(e[o],t);return r}return e}function q(e){return N(e)?/{([^}]+)}/.test(e):Array.isArray(e)?e.some(t=>q(t)):c(e)?Object.values(e).some(t=>q(t)):!1}function Qr(e,t={}){return e.replace(/{([^}]+)}/g,(r,o)=>{let n=o.includes(".")?S(t,o):t[o];return A(n)?String(n):r})}function Qe(e,t){if(!e||e.trim().length===0)return null;let r,o=0,n=!1,i=[];for(;(r=Jr.exec(e))!==null;){let[l,a,m]=r,s=r.index;n=!0,s>o&&i.push(e.substring(o,s));let d=t?t(s,m,a):l;i.push(d),o=s+l.length}return n?(o<e.length&&i.push(e.substring(o)),i):e}var $=e=>T(Oe)(e),W=e=>T(we)(e),b=T(Pe),fe=T(B),h=T(ve),y=T(ke),pe=T(Ce),et=T(V,de,Le,Me),tt=T(Ne,de),K=T(Ie,Ve);function rt(e){return h(e)||b(e)}function ot(e){return e.type===se}function nt(e){return e.type!==se}function it(e){return y(e)||h(e)}function lt(e){return fe(e)||pe(e)}function ge(e){return e!=null&&e!==""}function T(...e){return t=>{let r=N(t.type)?t.type:void 0;return r?e.some(o=>r===o||r?.startsWith(`${o}/`)):!1}}function at(e,t={}){if(y(e)&&e.disabled){let r=e.name?t?.[e.name]:void 0;if(r&&c(r))return[r]}}function Z(e){return h(e)||b(e)?P:e.advanced?.orientation??R}function ct(e,t){let r=e.readonly??!1;return t||r}function ut(e){if(h(e)||y(e)&&!e.disabled){let t=e.source;if(Array.isArray(t)||c(t)&&!(v in t))return t}}function st(e,t){let r=ut(e);return r||at(e,t)}function eo(e,t){let r=c(t)&&e.name in t?t[e.name]:t;return me(r,e.advanced?.entity)}function to(e,t,r){return it(e)&&Array.isArray(r)?{...t,[U]:r}:t}function ro(e,t,r){if(e.required&&!ge(r)&&y(e)&&e.advanced?.preselected!==!1&&U in t){let o=t[U];if(Array.isArray(o)&&o.length===1)return o[0]}return r}function oo(e,t){return y(e)&&Array.isArray(t)?ze(t,e.advanced?.options):t}function dt(e,t,r,o){let n=eo(e,o),i=Array.isArray(r)?oo(e,r):r,l=to(e,t,i),a=ro(e,l,n);return{commonPropsWithOptions:l,defaultValue:a}}function mt(e,t){return b(e)?{checked:ge(t)}:{value:t??""}}var no=/^#\/definition\//;function j(e=[],t){let r=z(e,t);return Array.isArray(r)?r.filter(o=>o.hidden!==!0).sort((o,n)=>ft(o)-ft(n)):[]}function z(e,t,r=new Map,o=new WeakSet){if(!io(t)||!e||typeof e!="object")return e;if(r.has(e))return r.get(e);if(o.has(e))return e;if(o.add(e),Array.isArray(e))return e.map(i=>z(i,t,r,o));if(v in e&&N(e[v])){let i=e[v].replace(no,""),l=S(t,i);return l!==null?z(l,t,r,o):e}let n={};for(let[i,l]of Object.entries(e))n[i]=z(l,t,r,o);return o.delete(e),r.set(e,n),n}function pt(e){return Object.entries(e??{})}function ft(e){return e.order??Number.MAX_VALUE}function io(e){return e!==void 0&&c(e)&&Object.keys(e).length>0}function gt(e,t){let r={};for(let[o,n]of pt(t))r[`${e}-${o}`]=n;return r}function yt(e){return gt(Xe,e)}function xt(e){return gt(Ye,e)}var Tt={1:"md:grid-cols-1",2:"md:grid-cols-2",3:"md:grid-cols-3"},bt={1:"md:col-span-1",2:"md:col-span-2",3:"md:col-span-3"};function ht(e,t=2){return Tt[e&&e in Tt?e:t]}function Rt(e){if(e&&e in bt)return bt[e]}var lo=/^\d+$/;function At(){return Array.from({length:12},(e,t)=>({value:(t+1).toString(),label:new Date(0,t).toLocaleString("default",{month:"long"})}))}function St(e,t){return t>=e?Array.from({length:t-e+1},(r,o)=>{let n=e+o;return{value:n.toString(),label:n.toString()}}):[]}function ye(){return new Date().getFullYear()}function xe(e,t){if(typeof e=="number")return e;let r=t??ye(),o=e.trim().toLowerCase();if(o.startsWith("current")){let n=o.match(/^current([+-])(\d+)$/);if(n){let[,i,l]=n,a=parseInt(l,10);if(!isNaN(a))return i==="+"?r+a:r-a}return r}return lo.test(o)?parseInt(o,10):r}import{z as u}from"zod";var ao=[[K,fo],[tt,co],[W,po],[$,go],[b,uo],[h,so]];function Et(e){return u.object(e)}function Ft(e){let t={},r=u.flattenError(e).fieldErrors;for(let[o,n]of Object.entries(r))n!==void 0&&(t[o]=n);return t}function Nt(e){for(let[t,r]of ao)if(t(e))return r(e);return mo(e)}function co(e){let t=u.string().trim();if(e.required){let r=t.min(1,e.validation?.required).pipe(u.email(e.validation?.email));return u.preprocess(o=>H(o)?"":o,r)}return t.pipe(u.email(e.validation?.email)).or(u.literal("")).nullable()}function uo(e){let t=u.coerce.boolean();return e.required?(t=t.refine(r=>r===!0,{message:e.validation?.required}),u.preprocess(r=>r===null?!1:r,t)):t.nullable()}function so(e){let t=u.coerce.string();return e.required?(t=t.min(1,e.validation?.required),u.preprocess(r=>H(r)?"":r,t)):t.or(u.literal("")).nullable()}function mo(e){let t=u.coerce.string().trim();return t=It(t,e),e.required?(t=Ct(t,e),u.preprocess(r=>H(r)?"":r,t)):t.nullable()}function fo(e){let t=u.coerce.number().int();return t=It(t,e),e.required?(t=Ct(t,e),u.preprocess(r=>r===null?void 0:r,t)):t.nullable()}function po(e){if(e.required){let t=u.coerce.number({message:e.validation?.required}).int();return u.preprocess(yo,t)}return u.coerce.number().int().nullable()}function go(e){let t=u.coerce.number().int().min(1,e.validation?.required).max(12,e.validation?.required);return e.required?t:t.nullable()}function yo(e){return e===null||e===""?void 0:e}function It(e,t){return e=xo(e,t),e=To(e,t),e}function Ct(e,t){let r=t.advanced?.length?.min;return r===void 0||r<1?e.min(1,t.validation?.required):e}var xo=(e,t)=>vt(e,t,G),To=(e,t)=>vt(e,t,X);function vt(e,t,r){let o=t.advanced?.length?.[r];return o!==void 0?e[r](o,t.validation?.length?.[r]):e}function Pt(e,t){if(!t||!ho(e))return!0;if(t.length===0)return!1;try{let r=new URL(e),o=r.protocol.replace(":",""),n=r.hostname,i=r.port||bo(o);return t.some(l=>!(l.protocol&&l.protocol!==o||l.hostname&&l.hostname!==n||l.port!==void 0&&String(l.port)!==i))}catch{return!1}}function bo(e){return e==="https"?"443":"80"}function ho(e){return/^(https?:)?\/\//.test(e)}function kt(e,t){try{if(!e)return t;if(!t)return e;let r=new URL(e,Y);new URL(t,Y).searchParams.forEach((i,l)=>{r.searchParams.set(l,i)});let n=r.toString();return e.startsWith("/")||!e.includes("://")?n.replace(Y,""):n}catch{return t||e}}function Ot(e){return!Array.isArray(e)||e.length===0?null:e.reduce((t,r)=>{let o=kt(t.url,r.url),n=Ro(t,r),i=Ao(t,r);return{...t,...r,url:o,body:n,headers:i}})}function Ro(e,t){return c(t.body)&&c(e?.body)?{...e.body,...t.body}:t.body??e?.body}function Ao(e,t){return c(t.headers)&&c(e?.headers)?{...e.headers,...t.headers}:t.headers??e?.headers}function wt(e=[],t){let r=[],o=[];e.forEach(n=>{n.action===C&&r.push(n),n.action===$e&&o.push(n)}),t({sources:o,values:r})}function Dt(e=null,t=[],r){t.forEach(o=>{let{target:n,source:i}=o;if(!e){r(n,void 0);return}if(We(i)){let l=I(i.url,e),a=i.body?I(i.body,e):i.body;r(n,{...i,url:l,body:a})}})}function Vt(e=null,t=[],r){t.forEach(o=>{Object.entries(o.value).forEach(([n,i])=>{r(n,e?I(i,e):void 0)})})}import{jsx as So}from"react/jsx-runtime";function L(e){return Qe(e,(t,r,o)=>So("a",{className:"underline",href:r,rel:"noopener noreferrer",target:"_blank",children:o},`${r}-${t}`))}import{Fragment as Eo,jsx as Lt,jsxs as Fo}from"react/jsx-runtime";function Mt(e){return Fo(Eo,{children:[Lt("legend",{className:"mb-3 font-medium text-slate-800 dark:text-slate-200",children:L(e.title)}),Lt("p",{className:"-mt-2 text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:L(e.description)})]})}function J(e,t){return{...e,...t}}import{jsx as Te,jsxs as No}from"react/jsx-runtime";function _t(e){let t=e.section.fields||[],{compact:r}=J(e.style,{compact:e.section.compact});return!e.section.title&&!e.section.description?Te(D,{compact:r,children:e.children}):No("fieldset",{"data-slot":"field-set","data-empty":t.length===0,className:"flex flex-col data-[empty=false]:gap-6",children:[Te(Mt,{description:e.section.description,title:e.section.title}),Te(D,{compact:r,children:e.children})]})}import{Fragment as Io}from"react";import{jsx as Bt}from"react/jsx-runtime";function Ut(){return Bt("div",{"data-slot":"field-separator",className:"relative -my-2 h-5 text-sm",children:Bt("div",{className:"absolute inset-0 top-1/2 h-px w-full bg-slate-200 dark:bg-slate-800"})})}import{jsx as M,jsxs as Gt}from"react/jsx-runtime";function Xt(e){let t=j(e.sections,e.definition);return M("div",{className:"h-full w-full",children:M("form",{noValidate:e.noValidate,action:e.action,children:Gt(D,{children:[t.map((r,o)=>Gt(Io,{children:[M(_t,{section:r,style:e.config.style,children:e.children({disabled:e.readOnly,fields:r.fields})}),r.separator&&M(Ut,{})]},o)),e.control&&M(Fe,{children:e.control})]})})})}import{jsx as Co}from"react/jsx-runtime";function Yt(e){return Co("p",{className:"text-sm leading-normal font-normal text-slate-600 dark:text-slate-400",children:e.children})}import{jsx as vo}from"react/jsx-runtime";function Q(e){let t=L(e.text);return t?vo(Yt,{children:t}):null}import{twMerge as Po}from"tailwind-merge";import{jsx as ko,jsxs as Oo}from"react/jsx-runtime";function Ht(e){let t=h(e.field)||b(e.field);return Oo("label",{"data-slot":"field-label","data-normal":t,className:Po("flex w-fit items-center gap-2 text-sm leading-snug font-medium select-none","data-[normal=true]:font-normal","group-data-[readonly=true]:cursor-not-allowed group-data-[readonly=true]:opacity-50"),htmlFor:e.field.name,children:[e.children,!e.field.required&&ko("span",{className:"text-sm text-slate-600 dark:text-slate-400",children:"(Optional)"})]})}import{jsx as qt,jsxs as wo}from"react/jsx-runtime";function $t(e){return wo("div",{"data-slot":"field-content",className:"flex w-full flex-1 flex-col gap-1.5 leading-snug",children:[qt(Ht,{field:e.field,children:e.field.label}),e.orientation===P&&qt(Q,{text:e.field.description})]})}import{Fragment as Do,jsx as Wt,jsxs as Vo}from"react/jsx-runtime";function Kt(e){let t=Z(e.field);return Vo(Do,{children:[e.field.name&&e.field.label&&Wt($t,{field:e.field,orientation:t}),e.children,t===R&&e.field.description&&Wt(Q,{text:e.field.description})]})}function Zt(e,t){return e?t(e):null}import{atom as Lo}from"jotai";import{atom as k}from"jotai";import{atomFamily as zt}from"jotai-family";import{deepEqual as be}from"fast-equals";function ee(e){return zt(t=>k(r=>r(e)[t]??void 0,(r,o,n)=>{let i=r(e);if(n!=null){let l=i[t];(!l||!be(l,n))&&o(e,{...i,[t]:n})}else if(i[t]){let{[t]:l,...a}=i;o(e,a)}}))}function jt(e){return k(null,(t,r)=>{let o=t(e);o&&Object.keys(o).length>0&&r(e,{})})}function te(e){return k(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);l&&r(e,i)})}function re(e){return k(null,(t,r,o)=>{let n=t(e);be(n,o)||r(e,o)})}function Jt(e,t={}){let{merge:r,validateTarget:o}=t;return zt(n=>k(i=>{let l=i(e)[n];if(l&&r)return r(Object.values(l))},(i,l,a,m)=>{if(o&&!o(a))return;let s=i(e),d={...s[a]??{}};if(m!=null){let F=d[n];(!F||!be(F,m))&&(d[n]=m,l(e,{...s,[a]:d}))}else if(d[n])if(delete d[n],Object.keys(d).length===0){let{[a]:F,...O}=s;l(e,O)}else l(e,{...s,[a]:d})}))}function Qt(e){return k(null,(t,r,o)=>{let i={...t(e)},l=!1;for(let a of o)i[a]&&(delete i[a],l=!0);for(let a in i){let m={...i[a]},s=!1;for(let d of o)m[d]&&(delete m[d],s=!0,l=!0);s&&(Object.keys(m).length===0?delete i[a]:i[a]=m)}l&&r(e,i)})}var _=Lo({}),er=te(_),tr=re(_),rr=ee(_);import{atom as Mo}from"jotai";var E=Mo({}),or=jt(E),nr=te(E),gl=re(E),ir=ee(E);import{startTransition as $o}from"react";import{useAtom as Wo,useSetAtom as pr}from"jotai";import{atom as _o}from"jotai";var lr=_o({}),ar=Jt(lr,{merge:e=>{let t=Ot(e);if(t)return t},validateTarget:e=>e.trim()!==""}),cr=Qt(lr);import{useAtom as Go}from"jotai";import Bo from"swr";function ur(e=null,t,r=!1){let{data:o,error:n}=Bo(Uo(e,t,r),t.fetcher.provider);if(n&&console.error("Error fetching data source:",n),e){if(Array.isArray(e))return[e];if(o)return[Ze(o,e.namespace)]}return[null]}function Uo(e=null,t,r=!1){if(e&&!Array.isArray(e)&&!r&&e.url&&!q(e.url)){if(Pt(e.url,t.fetcher.remotePatterns))return e;console.warn(`URL blocked by remotePatterns: ${e.url}. Check your luna.config.ts`)}return null}function sr(e,t,r){let o=st(e,r),[n,i]=Go(ar(e.name)),l=n??o,[a]=ur(l,t,e.disabled);return[a,i]}import{useEffect as Xo,useEffectEvent as dr,useMemo as Yo}from"react";function mr(e,t,r){let o=Yo(()=>Nt(e),[e]),n=dr(l=>{l&&t(l,o)}),i=dr(l=>{l&&r(l)});return Xo(()=>(n(e.name),()=>{i(e.name)}),[e.name]),[o]}import{useEffect as Ho,useRef as qo}from"react";function fr(){let e=qo(null);Ho(()=>{let o=e.current;return()=>{o&&clearTimeout(o)}},[]);function t(){e.current&&(clearTimeout(e.current),e.current=null)}function r(o,n){t(),e.current=setTimeout(o,n)}return[r,t]}import{jsx as gr}from"react/jsx-runtime";function yr(e){let t=pr(rr(e.field.name)),[r,o]=Wo(ir(e.field.name)),n=pr(E),[i]=mr(e.field,e.onMount,e.onUnmount),[l,a]=sr(e.field,e.config,r),{commonPropsWithOptions:m,defaultValue:s}=dt(e.field,e.commonProps,l,r),d=mt(e.field,s),[F]=fr();function O(p,f){if(lt(e.field)){F(()=>{f({value:p})},500);return}let x=Ke(p,l,e.field.advanced?.entity);f(x)}function le(p){let f=p.target.value;o(f),e.config.validation.change&&w(f);let x=e.field.event?.change;x&&O(f,g=>{wt(x,({sources:qr,values:$r})=>{$o(()=>{Dt(g,qr,(ce,ue)=>a(ce,ue)),Vt(g,$r,(ce,ue)=>{n(Wr=>({...Wr,[ce]:ue}))})})})})}function ae(p){if(rt(e.field))return;let f=p.target.value;e.config.validation.blur&&w(f)}function w(p){let x=i.safeParse(p).error?.issues.map(g=>g.message)??[];t(x)}return Zt(e.config.inputs[e.field.type],p=>gr(Kt,{field:e.field,children:gr(p,{...m,...e.ariaAttributes,...e.dataAttributes,...d,onBlur:ae,onChange:le})}))}import{twMerge as Ko}from"tailwind-merge";import{jsx as xr}from"react/jsx-runtime";function Tr(e){let t=ht(e.column?.advanced?.cols);return xr("div",{className:"flex w-full flex-col gap-4",children:xr("div",{className:Ko("grid grid-cols-1 gap-8 sm:gap-4",t),children:e.children})})}import{jsx as br}from"react/jsx-runtime";function hr(e){return!e.errors||e.errors.length===0?null:br("ul",{className:"text-sm text-red-600 dark:text-red-500",id:e.name?`${e.name}-error`:void 0,children:e.errors?.map((t,r)=>br("li",{children:t},e.name?`${e.name}-error-${r}`:r))})}import{twMerge as Zo}from"tailwind-merge";import{jsx as zo}from"react/jsx-runtime";function oe(e){let t=e.errors&&e.errors.length>0;return zo("div",{"data-slot":"field",...t&&{[Ue]:"true"},...e.disabled&&{[Ge]:"true"},"data-orientation":e.orientation,className:Zo("group flex w-full flex-col items-center data-[invalid=true]:text-red-600 data-[invalid=true]:dark:text-red-500","has-[>[role=checkbox],[role=radiogroup]]:items-start","has-[>[role=checkbox]]:flex-row-reverse","has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radiogroup]]:mt-px",Rt(e.cols),e.className),children:e.children})}import{jsx as jo}from"react/jsx-runtime";function Rr(e){return jo(oe,{...e,orientation:R,className:"gap-3 has-[>[data-slot=field-content]]:items-start [&>*:not([role=checkbox]):not([role=radiogroup])]:w-full",children:e.children})}import{jsx as Jo}from"react/jsx-runtime";function Ar(e){return Jo(oe,{...e,orientation:P,className:"gap-2 md:flex-row md:gap-4 has-[>[role=radiogroup]]:md:flex-col [&:not(:has(>[role=checkbox],[role=radiogroup]))]:md:justify-between [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:w-full [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:md:w-1/2 [&>*:not([role=checkbox]):not([role=radiogroup]):not([data-slot=field-content])]:xl:w-2/5 [&>[data-slot=field-content]]:min-w-0 [&>[data-slot=field-content]]:flex-grow [&>[data-slot=field-content]]:self-start",children:e.children})}import{jsx as Sr}from"react/jsx-runtime";function Er(e){return e.orientation===R?Sr(Rr,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children}):Sr(Ar,{cols:e.cols,disabled:e.disabled,errors:e.errors,children:e.children})}var ne=ye();function Fr(e){if(y(e))return Qo(e)}function Qo(e){if($(e))return At();if(W(e)){let t=e.advanced?.length?.min??ne,r=e.advanced?.length?.max??ne+5;return St(xe(t,ne),xe(r,ne))}}function Nr(e,t=!1){let r={disabled:t,id:e.name,name:e.name,placeholder:e.placeholder,required:e.required};return fe(e)?{...r,...en(e)}:y(e)?{...r,...tn(e)}:pe(e)?{...r,...rn(e)}:r}function en(e){let t=je(e.type),r={...e,type:t};return{...Ir(e),...on(r),...et(r)?Cr(r):{},type:t}}function tn(e){let t=Fr(e);return t?{options:t}:{}}function rn(e){return{...Ir(e),...Cr(e)}}function Ir(e){let t=e.advanced?.autocomplete;return t?{autoComplete:t}:{}}function on(e){return K(e)?nn(e):{}}function Cr(e){return vr(e,{min:He,max:qe})}function nn(e){return vr(e,{min:G,max:X})}function vr(e,t){let r={},o=e.advanced?.length;return o&&(o.min!==void 0&&(r[t.min]=o.min),o.max!==void 0&&(r[t.max]=o.max)),r}function Pr(e,t){let r=yt(e.advanced?.aria);return t&&t.length>0&&(r[Be]="true",r[_e]=`${e.name}-error`),r}function kr(e){return xt(e.advanced?.data)}function Or(e){if(!e.field.type)return null;let t=Nr(e.field,e.disabled),r=kr(e.field),o=Pr(e.field,e.errors),n={...e.field,disabled:t.disabled};return e.children({ariaAttributes:o,commonProps:t,dataAttributes:r,field:n})}import{jsx as he,jsxs as ln}from"react/jsx-runtime";function wr(e){let t=e.field.advanced?.cols,r=e.field.name?e.errors?.[e.field.name]:void 0,{orientation:o}=J(e.style,{orientation:Z(e.field)}),n=ct(e.field,e.disabled);return ln("div",{className:"flex flex-col gap-3",children:[he(Er,{cols:t,disabled:n,errors:r,orientation:o,children:he(Or,{disabled:n,errors:r,field:e.field,children:e.children})}),he(hr,{errors:r,name:e.field.name})]})}import{useAtomValue as an}from"jotai";import{jsx as cn}from"react/jsx-runtime";function Dr(e){return r=>{let o=an(_);return cn(e,{...r,errors:o})}}var Vr=Dr(wr);import{Fragment as un}from"react";import{jsx as Re,jsxs as sn}from"react/jsx-runtime";function Ae(e){let t=j(e.fields),{column:r,field:o}=e.components;return t.map((n,i)=>sn(un,{children:[ot(n)&&Re(r,{column:n,children:Re(Ae,{...e,fields:n.fields})}),nt(n)&&Re(o,{disabled:e.disabled,field:n,style:e.style,children:e.children})]},i))}import{jsx as dn}from"react/jsx-runtime";var Lr=e=>dn(Ae,{...e,components:{column:Tr,field:Vr}});import{useSetAtom as Mr}from"jotai";import{startTransition as Se,useActionState as mn}from"react";function Ur(e,t,r){let{onError:o,onSuccess:n,preserveValues:i=!1,validation:l=!0,value:a=null}=r??{},m=Mr(tr),s=Mr(or),d={data:a,error:null,success:!1},[F,O,le]=mn(async(ae,w)=>{let p=Et(e());if(l===!1)return t?await t(w,p):ae;let f=Je(w),x=p.safeParse(f);if(!x.success){let g=Ft(x.error);return Se(()=>{m(g)}),Br(f,{details:g,title:"There were validation errors submitting the form."})}if(t)try{let g=await t(f,p);return g.success?(n?.(g.data),i||Se(()=>{s()})):g.error&&Se(()=>{o?.(g.error)}),_r(f,i)}catch(g){return Br(f,{title:"An unexpected error occurred submitting the form.",details:fn(g)})}return _r(x.data,i)},d);return[O,F,le]}function fn(e){let t=e instanceof Error?e.message:["Unknown error"];return Array.isArray(t)?t:[t]}function _r(e,t=!1){return{data:t?e:null,error:null,success:!0}}function Br(e,t){return{data:e,error:t,success:!1}}import{useHydrateAtoms as yn}from"jotai/utils";import{startTransition as gn,useCallback as Xr,useRef as Yr}from"react";import{useCallback as pn}from"react";import{useSetAtom as Ee}from"jotai";function Gr(){let e=Ee(er),t=Ee(cr),r=Ee(nr);return pn(o=>{let n=Array.isArray(o)?o:[o];e(n),t(n),r(n)},[e,t,r])}function Hr(){let e=Gr(),t=Yr({}),r=Yr(new Set),o=Xr((l,a)=>{l in t.current||(t.current[l]=a)},[]),n=Xr(l=>{t.current[l]&&(delete t.current[l],r.current.add(l),gn(()=>{r.current.size>0&&(e(Array.from(r.current)),r.current.clear())}))},[e]);function i(){return t.current}return[i,o,n]}import{Fragment as Tn,jsx as ie,jsxs as bn}from"react/jsx-runtime";function xn(e){let[t,r,o]=Hr(),[n,i]=Ur(t,e.action,{onError:e.onError,onSuccess:e.onSuccess,validation:e.config.validation.submit,value:e.value});yn([[E,e.value??{}]]);let l=e.config.alert??(()=>null),a=e.config.validation.showError&&!i.success&&i.error;return ie(Xt,{action:n,config:e.config,control:e.children,definition:e.definition,noValidate:!0,readOnly:e.readOnly,sections:e.sections,children:({disabled:m,fields:s})=>bn(Tn,{children:[a&&ie(l,{title:i.error.title,description:i.error?.description,details:i.error?.details}),ie(Lr,{disabled:m,fields:s,style:e.config.style,children:d=>ie(yr,{...d,config:e.config,onMount:r,onUnmount:o,value:i.data})})]})})}export{xn as Form};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type FormState } from '../hook/use-form-action';
|
|
2
2
|
import type { Definition, FormStateError, Nullable, Sections, ZodSchema } from '@luna-form/core';
|
|
3
3
|
import type { Config } from '../../type';
|
|
4
|
-
export declare function Form<T extends Record<string, unknown> = Record<string, unknown>>(props: Readonly<{
|
|
5
|
-
action?:
|
|
4
|
+
export declare function Form<T extends Record<string, unknown> = Record<string, unknown>, F = Record<string, unknown>>(props: Readonly<{
|
|
5
|
+
action?: (formData: F, schema?: ZodSchema) => Promise<FormState<T>>;
|
|
6
6
|
children?: React.ReactNode;
|
|
7
7
|
config: Config;
|
|
8
8
|
definition?: Definition;
|
|
@@ -11,4 +11,4 @@ export type FormActionOptions<T> = {
|
|
|
11
11
|
validation?: boolean;
|
|
12
12
|
value?: Nullable<T>;
|
|
13
13
|
};
|
|
14
|
-
export declare function useFormState<T
|
|
14
|
+
export declare function useFormState<T, F = Record<string, unknown>>(getSchema: () => Schemas, action?: (formData: F, schema?: ZodSchema) => Promise<FormState<T>>, options?: FormActionOptions<T>): readonly [(payload: FormData) => void, FormState<T>, boolean];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-luna-form",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "A React library for building forms based on JSON",
|
|
5
5
|
"main": "./dist/client/cjs/index.js",
|
|
6
6
|
"module": "./dist/client/esm/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"eslint-plugin-react": "7.37.5",
|
|
33
33
|
"eslint-plugin-react-hooks": "7.0.1",
|
|
34
34
|
"eslint-plugin-react-refresh": "0.4.26",
|
|
35
|
-
"@luna-form/core": "0.0.
|
|
35
|
+
"@luna-form/core": "0.0.11"
|
|
36
36
|
},
|
|
37
37
|
"license": "Apache-2.0",
|
|
38
38
|
"repository": {
|