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