@ram_28/kf-ai-sdk 2.0.20-beta.0 → 2.0.20-beta.2
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/{FileField-BWrSHNRq.js → FileField-CZjS2uLh.js} +3 -3
- package/dist/{FileField-eDeuzln8.cjs → FileField-DU4UWo_t.cjs} +1 -1
- package/dist/bdo/core/Item.d.ts +0 -4
- package/dist/bdo/core/Item.d.ts.map +1 -1
- package/dist/bdo/fields/ReferenceField.d.ts +1 -1
- package/dist/bdo/fields/ReferenceField.d.ts.map +1 -1
- package/dist/bdo/fields/SelectField.d.ts +1 -1
- package/dist/bdo/fields/SelectField.d.ts.map +1 -1
- package/dist/bdo/fields/UserField.d.ts +1 -1
- package/dist/bdo/fields/UserField.d.ts.map +1 -1
- package/dist/bdo.cjs +1 -1
- package/dist/bdo.mjs +298 -286
- package/dist/components/hooks/useBDOForm/createItemProxy.d.ts +2 -3
- package/dist/components/hooks/useBDOForm/createItemProxy.d.ts.map +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +226 -243
- package/dist/workflow.cjs +1 -1
- package/dist/workflow.mjs +1 -1
- package/package.json +1 -1
- package/sdk/bdo/core/Item.ts +1 -11
- package/sdk/bdo/expressions/evaluator.ts +51 -9
- package/sdk/bdo/fields/ReferenceField.ts +1 -1
- package/sdk/bdo/fields/SelectField.ts +1 -1
- package/sdk/bdo/fields/UserField.ts +1 -1
- package/sdk/components/hooks/useBDOForm/createItemProxy.ts +18 -63
|
@@ -7,9 +7,8 @@ import type { FormItemType, ExtractEditableType, ExtractReadonlyType } from "./t
|
|
|
7
7
|
* Key principle: Item has NO state. It's a view over RHF's state.
|
|
8
8
|
* Editable fields get set(), readonly fields do not.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* On form submit, if a draft _id exists, update() is used instead of create().
|
|
10
|
+
* In create mode (no _id), uses "draft" as the instanceId for attachment
|
|
11
|
+
* uploads and fetch operations — no draftInteraction() call needed.
|
|
13
12
|
*
|
|
14
13
|
* @param bdo - The BDO instance for field metadata
|
|
15
14
|
* @param form - The RHF useForm return object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createItemProxy.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOForm/createItemProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAEjB
|
|
1
|
+
{"version":3,"file":"createItemProxy.d.ts","sourceRoot":"","sources":["../../../../sdk/components/hooks/useBDOForm/createItemProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAQ5C,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGpB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9D,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,GAC/B,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAqS9D"}
|
package/dist/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=require("./constants-QX2RX-wu.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=require("./constants-QX2RX-wu.cjs"),m=require("react"),w=require("./shared-nnmlRVs7.cjs"),J=require("@tanstack/react-query"),y=require("./client-D5k4SYuw.cjs"),P=require("./attachment-constants-B5jlqoKI.cjs"),W=require("./metadata-DWXQPDav.cjs");function X(T,n){const f=T.getFields(),D=new Map,C=T.getBoId(),c=()=>n.getValues("_id")||"draft";return new Proxy({},{get(q,e){if(typeof e=="symbol")return;if(e==="_id")return n.getValues("_id");if(e==="toJSON")return()=>n.getValues();if(e==="validate")return()=>n.trigger();if(D.has(e))return D.get(e);const s=f[e],o=(s==null?void 0:s.meta)??{_id:e,Name:e,Type:"String"},A=(s==null?void 0:s.readOnly)??!1,S=()=>{if(!s)return{valid:!0,errors:[]};let i=n.getValues(e);if("integerPart"in s&&typeof i=="string"&&i!==""){const a=Number(i);isNaN(a)||(i=a,n.setValue(e,a,{shouldDirty:!1}))}if(!s.required&&(i==null||i===""||Array.isArray(i)&&i.length===0))return{valid:!0,errors:[]};const l=s.validate(i);if(!l.valid)return l;const r=w.validateConstraints(s,i);if(!r.valid)return r;if(T.hasMetadata()){const a=T.validateFieldExpression(e,i,n.getValues());if(!a.valid)return a}return{valid:!0,errors:[]}},x=i=>{const l=n.getValues(e);return l??i};if(!A){const i=()=>{const r=n.getValues(e);return o.Type==="File"?r??[]:r},l={label:(s==null?void 0:s.label)??e,required:(s==null?void 0:s.required)??!1,readOnly:!1,defaultValue:s==null?void 0:s.defaultValue,meta:o,get:i,getOrDefault:x,set:r=>{n.setValue(e,r,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!1})},validate:S};if(o.Type==="Image"||o.Type==="File"){const r=C;o.Type==="Image"?(l.upload=async a=>{P.validateFileExtension(a.name,"Image");const t=c(),[u]=await y.api(r).getUploadUrl(t,e,[{FileName:a.name,Size:a.size,FileExtension:P.extractFileExtension(a.name)}]);await fetch(u.UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u.ContentType},body:a});const d={_id:u._id,_name:u._name,FileName:u.FileName,FileExtension:u.FileExtension,Size:u.Size,ContentType:u.ContentType};return n.setValue(e,d,{shouldDirty:!0}),d},l.deleteAttachment=async()=>{const a=n.getValues(e),t=c();if(!(a!=null&&a._id))throw new Error(`${e} has no image to delete`);await y.api(r).deleteAttachment(t,e,a._id),n.setValue(e,null,{shouldDirty:!0})},l.getDownloadUrl=async a=>{const t=n.getValues(e),u=c();if(!(t!=null&&t._id))throw new Error(`${e} has no image`);return y.api(r).getDownloadUrl(u,e,t._id,a)}):(l.upload=async a=>{for(const _ of a)P.validateFileExtension(_.name,"File");const t=c(),u=a.map(_=>({FileName:_.name,Size:_.size,FileExtension:P.extractFileExtension(_.name)})),d=await y.api(r).getUploadUrl(t,e,u),g=await Promise.all(a.map(async(_,h)=>(await fetch(d[h].UploadUrl.URL,{method:"PUT",headers:{"Content-Type":d[h].ContentType},body:_}),{_id:d[h]._id,_name:d[h]._name,FileName:d[h].FileName,FileExtension:d[h].FileExtension,Size:d[h].Size,ContentType:d[h].ContentType}))),L=n.getValues(e)??[];return n.setValue(e,[...L,...g],{shouldDirty:!0}),g},l.deleteAttachment=async a=>{const t=n.getValues(e)??[],u=c();await y.api(r).deleteAttachment(u,e,a),n.setValue(e,t.filter(d=>d._id!==a),{shouldDirty:!0})},l.getDownloadUrl=async(a,t)=>{const u=c();return y.api(r).getDownloadUrl(u,e,a,t)},l.getDownloadUrls=async a=>{const t=c();return y.api(r).getDownloadUrls(t,e,a)})}return D.set(e,l),l}const k=()=>{const i=n.getValues(e);return o.Type==="File"?i??[]:i},O={label:(s==null?void 0:s.label)??e,required:(s==null?void 0:s.required)??!1,readOnly:!0,defaultValue:s==null?void 0:s.defaultValue,meta:o,get:k,getOrDefault:x,validate:S};if(o.Type==="Image"||o.Type==="File"){const i=C;o.Type==="Image"?O.getDownloadUrl=async l=>{const r=n.getValues(e),a=c();if(!(r!=null&&r._id))throw new Error(`${e} has no image to download`);return y.api(i).getDownloadUrl(a,e,r._id,l)}:(O.getDownloadUrl=async(l,r)=>{const a=c();return y.api(i).getDownloadUrl(a,e,l,r)},O.getDownloadUrls=async l=>{const r=c();return y.api(i).getDownloadUrls(r,e,l)})}return D.set(e,O),O},has(q,e){return typeof e=="symbol"?!1:e==="_id"||e==="toJSON"||e==="validate"?!0:e in f},ownKeys(q){return[...Object.keys(f),"_id","toJSON","validate"]},getOwnPropertyDescriptor(q,e){if(typeof e!="symbol")return{configurable:!0,enumerable:e!=="toJSON"&&e!=="validate"}}})}function Y(T){const{bdo:n,recordId:f,operation:D,defaultValues:C,mode:c="onBlur",enableDraft:q=!1,enableConstraintValidation:e,enableExpressionValidation:s}=T,o=D??(f?"update":"create"),A=m.useMemo(()=>w.createResolver(n,{enableConstraintValidation:e}),[n,e]),{data:S,isLoading:x,isFetching:k,error:O}=J.useQuery({queryKey:["form-record",n.meta._id,f],queryFn:async()=>{const V=await n.get(f);return w.coerceRecordForForm(n.getFields(),V.toJSON())},enabled:o==="update"&&!!f,staleTime:0}),{data:i,isLoading:l,error:r}=J.useQuery({queryKey:["form-draft",n.meta._id],queryFn:async()=>y.api(n.meta._id).draftInteraction({}),enabled:o==="create",staleTime:1/0,gcTime:0,retry:1}),{data:a}=J.useQuery({queryKey:["form-schema",n.meta._id],queryFn:()=>W.getBdoSchema(n.meta._id),staleTime:30*60*1e3,gcTime:60*60*1e3,enabled:s!==!1});m.useEffect(()=>{a!=null&&a.BDOBlob?n.loadMetadata(a.BDOBlob):a!=null&&a.MetaBlob&&n.loadMetadata(a.MetaBlob)},[a,n]);const t=w.useForm({mode:c,resolver:A,defaultValues:C}),u=m.useRef(null);m.useEffect(()=>{o==="update"&&S&&S!==u.current&&(t.reset(S),u.current=S)},[S,o,t]),m.useEffect(()=>{i!=null&&i._id&&t.setValue("_id",i._id)},[i,t]);const d=m.useMemo(()=>X(n,t),[n,t]),g=n.getFields(),L=m.useRef(!1),_=m.useMemo(()=>Object.keys(g).filter(V=>g[V].readOnly),[g]),h=m.useCallback(async(V,F)=>{if(o==="create"&&(i!=null&&i._id))return y.api(n.meta._id).draftInteraction({_id:i._id,[V]:F});if(o==="update"&&f)return y.api(n.meta._id).update(f,{[V]:F})},[o,i,f,n]),M=m.useMemo(()=>w.createSyncField({apiFn:h,allFields:g,readonlyFieldNames:_,rhf:t,isComputingRef:L}),[h,g,_,t]),R=c==="onChange"||c==="all",N=c==="onBlur"||c==="onTouched"||c==="all",Q=m.useMemo(()=>w.createEnhancedRegister({rhf:t,allFields:g,syncField:M,syncOnBlur:N,syncOnChange:R}),[t,g,M,N,R]),$=m.useMemo(()=>w.createEnhancedControl({control:t.control,syncField:M,syncOnBlur:N,syncOnChange:R}),[t.control,M,N,R]),G=m.useCallback((V,F)=>t.handleSubmit(async(E,B)=>{try{const v={},z=t.getValues();if(o==="create")for(const[U,I]of Object.entries(g)){if(I.readOnly)continue;const b=z[U]!==void 0?z[U]:E[U];b!==void 0&&(v[U]=w.coerceFieldValue(I,b))}else{const U=t.formState.dirtyFields;for(const[I,b]of Object.entries(g)){if(b.readOnly||!U[I])continue;const H=z[I]!==void 0?z[I]:E[I];v[I]=w.coerceFieldValue(b,H)}}let j;o==="create"?(v._id=i==null?void 0:i._id,j=await y.api(n.meta._id).draft(v)):j=await y.api(n.meta._id).update(f,v),V==null||V(j,B)}catch(v){F==null||F(v,B)}},(E,B)=>{F==null||F(E,B)}),[t,n,o,f,g,i]);return{item:d,bdo:n,operation:o,recordId:f,register:Q,handleSubmit:G,watch:t.watch,setValue:t.setValue,getValues:t.getValues,reset:t.reset,trigger:t.trigger,control:$,formState:t.formState,errors:t.formState.errors,isDirty:t.formState.isDirty,isValid:t.formState.isValid,isSubmitting:t.formState.isSubmitting,isSubmitSuccessful:t.formState.isSubmitSuccessful,dirtyFields:t.formState.dirtyFields,isLoading:x||l,isFetching:k,loadError:O??r,draftId:i==null?void 0:i._id,isCreatingDraft:l}}exports.FormOperation=K.FormOperation;exports.InteractionMode=K.InteractionMode;exports.ValidationMode=K.ValidationMode;exports.useBDOForm=Y;
|