UNPKG

@baseplate-dev/project-builder-web

Version:

Web interface for constructing project builder JSON

3 lines (2 loc) 1.86 kB
import{i}from"./_virtual___federation_fn_import-DOo8C-zl.js";import{m as I,b as j,l as B}from"./index-DiAhmW9l.js";import{s as T}from"./sortBy-C9bvycg5.js";const{createEnumBaseSchema:U,EnumUtils:L,FeatureUtils:M,modelEnumEntityType:u}=await i("@baseplate-dev/project-builder-lib"),{useDefinitionSchema:O,useProjectDefinition:$,useResettableForm:A}=await i("@baseplate-dev/project-builder-lib/web"),{useEventCallback:K}=await i("@baseplate-dev/ui-components"),{useNavigate:P,useRouter:V}=await i("@tanstack/react-router"),{useMemo:r,useRef:W}=await i("react");function q(){return{id:u.generateNewId(),name:"",featureRef:"",isExposed:!1,values:[]}}function Q({enumKey:D,omit:R,onSubmitSuccess:k,isCreate:a}={}){const{definition:m,saveDefinitionWithFeedback:b,isSavingDefinition:N}=$(),p=P(),v=V(),w=a?void 0:u.idFromKey(D),n=w?L.byId(m,w):void 0;if(!a&&!n)throw new I("Enum not found");const o=r(()=>q(),[]),c=O(U),d=W(R),l=r(()=>d.current?c.omit(Object.fromEntries(d.current.map(t=>[t,!0]))):c,[c]),y=r(()=>{const t=n??o;return d.current?l.parse(t):t},[n,o,l]),S=A({resolver:j(l),defaultValues:y}),{reset:f,handleSubmit:h,setError:F}=S,g=K(k),x=r(()=>h(t=>{const e={...n,...t,id:n?.id??u.generateNewId()};if(m.enums?.find(s=>s.id!==e.id&&s.name.toLowerCase()===e.name.toLowerCase())){F("name",{message:`Enum with name ${e.name} already exists.`});return}return b(s=>{e.featureRef=M.ensureFeatureByNameRecursively(s,e.featureRef),s.enums=T([...s.enums?.filter(E=>E.id!==e.id)??[],e],[E=>E.name])},{successMessage:a?"Successfully created enum!":"Successfully saved enum!",onSuccess:()=>{a?(v.invalidate().then(()=>p({to:"/data/enums/edit/$key",params:{key:u.keyFromId(e.id)}})).catch(B),f(o)):f(t),g?.()}})}),[p,f,v,b,F,h,m,a,n,o,g]);return{form:S,onSubmit:x,defaultValues:y,isSavingDefinition:N}}export{Q as u}; //# sourceMappingURL=use-enum-form-b35DnR3I.js.map