@harbor-design/proform 1.0.9 → 1.0.10

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/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var I=Object.defineProperty;var v=(c,e,t)=>e in c?I(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>(v(c,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue");class O{constructor(e){l(this,"runtimeCore");this.formCustomization=e}cleanFallbackFields(e){return e!==null&&typeof e=="object"&&(delete e.__yiwwhl_async_field_fallback,Object.values(e).forEach(t=>{this.cleanFallbackFields(t)})),e}setup(e){return this.runtimeCore=e,this.formCustomization}submit(){return new Promise((e,t)=>{this.runtimeCore.formRef.value.validate(s=>s?t(s):e(this.cleanFallbackFields(n.toRaw(this.runtimeCore.processor.processedModel.value))))})}}class u{static typeChecker(e){return{}.toString.call(e)}static isArray(e){return this.typeChecker(e)==="[object Array]"}static isFunction(e){return this.typeChecker(e)==="[object Function]"}static isPromise(e){return e instanceof Promise}static isObject(e){return this.typeChecker(e)==="[object Object]"}static isAsyncFunction(e){return this.typeChecker(e)==="[object AsyncFunction]"}static isUndefined(e){return e===void 0}static isArrayEmpty(e){return(e==null?void 0:e.length)<1}static isObjectEmpty(e){return this.isArrayEmpty(Object.keys(e))}static isListSchema(e){return e.type==="list"}static isGroupSchema(e){return e.type==="group"}static isItemSchema(e){return this.isUndefined(e.type)||e.type==="item"}static isProcessInprogress(e){if(e===void 0)return!0;if(this.isObject(e)){if(e.setup&&this.isFunction(e.setup)&&e.props)return!1;if(this.isObjectEmpty(e))return!0;for(const t in e)if(e.hasOwnProperty(t)&&this.isProcessInprogress(e[t]))return!0}else if(this.isArray(e)){if(this.isArrayEmpty(e))return!0;for(const t of e)if(this.isProcessInprogress(t))return!0}return!1}}function S(c){const e=new WeakMap;function t(s){if(s===null||typeof s!="object")return s;if(s instanceof Date)return new Date(s);if(s instanceof RegExp)return new RegExp(s);if(s instanceof Map){const i=new Map;for(let[o,a]of s)i.set(t(o),t(a));return i}if(s instanceof Set){const i=new Set;for(let o of s)i.add(t(o));return i}if(e.has(s))return e.get(s);if(Array.isArray(s)){const i=[];e.set(s,i);for(let o=0;o<s.length;o++)i[o]=t(s[o]);return i}const r=Object.create(Object.getPrototypeOf(s));e.set(s,r);for(let i in s)s.hasOwnProperty(i)&&(r[i]=t(s[i]));return r}return t(c)}class w{constructor(){l(this,"effects",new Set)}clearEffects(){this.effects.clear()}triggerEffects(){Array.from(this.effects).forEach(e=>e())}trackEffect(e){return e(),this.effects.add(e),()=>this.effects.delete(e)}}class C{constructor(e){l(this,"processedSchemas");l(this,"processedModel");l(this,"getRuntimeMeta");l(this,"stableSchemas",[]);l(this,"stableModel",{});l(this,"schemaPreset",V.schemaPreset);l(this,"componentPropsPreset",V.componentPropsPreset);l(this,"stableUpdaterProcessProgress");l(this,"stableUpdaterTimes",0);l(this,"schemaEffect",new w);l(this,"defaultValueEffect",new w);l(this,"defaultValueInprogressMap",new Map);l(this,"baseDefaultValueFunctionsLength");this.processedSchemas=e.schemas,this.processedModel=e.model,this.getRuntimeMeta=e.getRuntimeMeta.bind(e),n.watch(()=>this.processedModel.value,()=>{this.schemaEffect.triggerEffects()},{deep:!0})}parse(e,t){e.forEach((s,r)=>{this.parseItem(s,r,t)})}initSchemas(e){return e.map(t=>{const s={};return t.children&&(s.children=this.initSchemas(t.children)),s})}countFunctionDefaultValues(e){let t=0,s=new Set;function r(i){if(!s.has(i)&&(Array.isArray(i)||i!==null&&typeof i=="object")){s.add(i);for(let o in i)i.hasOwnProperty(o)&&(o==="defaultValue"&&typeof i[o]=="function"&&i[o].toString().includes("defaultValue")&&t++,r(i[o]))}}return r(e),t}parseSchemas(e,t){u.isArrayEmpty(this.processedSchemas.value)&&(this.baseDefaultValueFunctionsLength=this.countFunctionDefaultValues(S(e)),this.processedSchemas.value=this.initSchemas(e)),this.parse(e,t)}parseStable(e){const t={};if(!u.isUndefined(e.stable))t[e.key]=this.parseStable(e.stable);else return e;return t}stableUpdater(e=[]){if(e.every(Boolean)){const t=n.toRaw(this.processedSchemas.value);!u.isProcessInprogress(t)&&u.isObjectEmpty(this.stableModel)&&(this.stableUpdaterProcessProgress||(this.stableUpdaterProcessProgress=Array.from({length:t.length}).fill(!1)),this.stableUpdaterProcessProgress[this.stableUpdaterTimes]=!0,this.stableUpdaterTimes++,this.modelProcessor(t))}}parseItem(e,t,s){const r=this,i=Array.from({length:Object.keys(e).filter(a=>a!=="children").length}).fill(!1);this.objectParser({data:e,index:t,updater:o});function o(a){const f=a.index,d=a.key,P=a.keyIndex;if(!a.stable)return;const j=r.parseStable(a.stable),m=s==null?void 0:s.index,g=s==null?void 0:s.key;let h=j;if(u.isProcessInprogress(h)||(i[P]=!0),s){let b=r.processedSchemas.value[m][g][f][d];b&&u.isObject(b)&&d!=="component"&&(h=Object.assign(b,h)),r.processedSchemas.value[m][g][f][d]=h,r.stableUpdater(i)}else{let b=r.processedSchemas.value[f][d];b&&u.isObject(b)&&(h=Object.assign(b,h)),r.processedSchemas.value[f][d]=h,r.stableUpdater(i)}}}objectParser(e){const t=e.data;Object.keys(t).forEach((r,i)=>{if(r==="children")this.parseSchemas(t[r],{...e,key:r,keyIndex:i});else{const o=a=>{e.updater({...e,key:r,keyIndex:i,stable:a})};if(u.isFunction(t[r]))r!=="defaultValue"?this.schemaEffect.trackEffect(()=>{if(r==="component"){const a=t[r](this.getRuntimeMeta());this.promiseFieldParser(a,o,!1)}else this.fieldParser(t[r],o)}):this.defaultValueEffect.trackEffect(()=>{const a=this.schemaEffect.trackEffect(()=>{/\{\s*model\s*\}/.test(t[r].toString())?this.fieldParser(t[r],f=>{if(!f)return o(f);this.defaultValueInprogressMap.set(t[r],f),!u.isProcessInprogress(f)&&this.defaultValueInprogressMap.size===this.baseDefaultValueFunctionsLength&&Array.from(this.defaultValueInprogressMap.values()).every(d=>!d.includes("undefined"))?(o(f),this.defaultValueEffect.clearEffects(),a()):o(f)}):this.fieldParser(t[r],f=>{this.defaultValueInprogressMap.set(t[r],f),!u.isProcessInprogress(f)&&this.defaultValueInprogressMap.size===this.baseDefaultValueFunctionsLength&&Array.from(this.defaultValueInprogressMap.values()).every(d=>!d.includes("undefined"))?(o(f),this.defaultValueEffect.clearEffects(),a()):o(f)})})});else if(r==="component"){const a=t[r];this.promiseFieldParser(a,o,!1)}else this.fieldParser(t[r],o)}})}promiseFieldParser(e,t,s){u.isPromise(e)?e.then(r=>{s&&u.isObject(r)?this.objectParser({data:r,updater:t}):t(r)}):s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e)}fieldParser(e,t,s=!0){if(u.isFunction(e)){const r=e(this.getRuntimeMeta());this.promiseFieldParser(r,t,s)}else n.isRef(e)?n.watch(()=>e.value,()=>{u.isUndefined(e.value)||(s&&u.isObject(e.value)?this.objectParser({data:e.value,updater:t}):t(e.value))},{immediate:!0,deep:!0}):n.isReactive(e)?n.watch(()=>e,()=>{u.isUndefined(e)||(s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e))},{immediate:!0,deep:!0}):s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e)}modelProcessor(e){e.map(t=>this.createModel(t,this.processedModel.value)),u.isObjectEmpty(this.stableModel)&&this.stableUpdaterProcessProgress.every(Boolean)&&this.defaultValueEffect.effects.size===0&&(this.stableModel=S(this.processedModel.value))}createModel(e,t){u.isListSchema(e)&&(t[e.field]||(t[e.field]=[{}]),e.children.forEach(s=>{this.createModel(s,t[e.field][0])})),u.isGroupSchema(e)&&e.children.forEach(s=>{this.createModel(s,t)}),u.isItemSchema(e)&&(t[e.field]=e.defaultValue)}}function E(c){return typeof c=="function"||Object.prototype.toString.call(c)==="[object Object]"&&!n.isVNode(c)}class R{constructor(e){l(this,"schemas",n.ref([]));l(this,"model",n.ref({}));l(this,"processorBySchemaType",{item:this.runtimeItemProcessor.bind(this),group:this.runtimeGroupProcessor.bind(this),list:this.runtimeListProcessor.bind(this)});l(this,"formRef",n.ref(null));this.setup=e,this.processor=new C(this);const t=this.setup(this);this.processor.parseSchemas(t.schemas)}getRuntimeMeta(){return{model:n.toRaw(S(this.model.value))}}runtimeItemProcessor(e,t,s=this.model.value,r){var g;const i=r?`${r.field}.${t}.${e.field}`:e.field,o=n.toRaw(e.component);if(!o)return;const a=o.name,f=e.componentProps??{},d=V.placeholderPresetByComponentName;let P=e.placeholder;P||(P=`${d[a]??"请输入"}${e.label}`),e.required&&(e.rules||(e.rules=[]),(g=e.rules)==null||g.push({required:!0,message:`${e.label}是必填项`}));let m=e.show;return m===void 0&&(m=!0),m||delete s[e.field],n.createVNode(p.runtimeDoms.Item,null,{default(){return n.withDirectives(n.createVNode(p.runtimeDoms.FormItem,{label:`${e.label}:`,rules:e.rules,field:i},{default:()=>[n.createVNode(o,n.mergeProps({modelValue:s[e.field],"onUpdate:modelValue":h=>s[e.field]=h,placeholder:P},f),null)]}),[[n.vShow,m]])}})}runtimeGroupProcessor(e){let t;return n.createVNode(p.runtimeDoms.Group,{schema:e},E(t=e.children.map(s=>this.runtimeItemProcessor(s)))?t:{default:()=>[t]})}addListItem(e){var t,s;if(!((t=this.processor.stableModel[e.field])!=null&&t[0]))return Promise.reject({code:"0001",message:"异步默认值数据正在处理中,请您耐心等待... "});(s=this.processor.stableModel[e.field])!=null&&s[0]&&this.model.value[e.field].push(S(this.processor.stableModel[e.field][0]))}deleteListItem(e,t){this.model.value[e.field].splice(t,1)}runtimeListProcessor(e){const t=this;return t.model.value[e.field]||(t.model.value[e.field]=[{}]),n.createVNode(p.runtimeDoms.List,{schema:e},{default(){return t.model.value[e.field].map((s,r)=>n.createVNode(p.runtimeDoms.ListItem,null,{default(){return e.children.map((i,o)=>t.runtimeItemProcessor(i,o,s,e))},delete({container:i}={}){var a;let o=i??n.createVNode("button",null,null);return n.withDirectives(n.createVNode(o,{onClick:()=>t.deleteListItem(e,r)},null),[[n.vShow,((a=t.model.value[e.field])==null?void 0:a.length)>1]])}}))},add({container:s}={}){let r=s??n.createVNode("button",null,[n.createTextVNode("添加")]);return n.createVNode(r,{onClick:()=>t.addListItem(e)},null)}})}runtimeProcessor(e){return e.map(t=>(t.type||(t.type="item"),this.processorBySchemaType[t.type](t)))}exec(){let e;return n.createVNode(p.runtimeDoms.Form,{ref:this.formRef,model:this.model.value},E(e=this.runtimeProcessor(this.schemas.value))?e:{default:()=>[e]})}}class p{}l(p,"runtimeDoms");const y=class y{static getPlaceholderPrefixPresetByComponentName(){const e={请选择:["Select","Tree","TreeSelect"],请输入:["Input"]},t={};for(let s in e)e[s].forEach(r=>{t[r]=s});return t}};l(y,"schemaPreset",{type:{defaultValue:"item"},component:{defaultValue:void 0},componentProps:{defaultValue:void 0},defaultValue:{defaultValue:void 0},label:{defaultValue:""},field:{defaultValue:"__yiwwhl_async_field_fallback"},rules:{defaultValue:[]},show:{defaultValue:!0},required:{defaultValue:!1},placeholder:{defaultValue:void 0},children:{defaultValue:[]}}),l(y,"componentPropsPreset",{options:{defaultValue:[]}}),l(y,"placeholderPresetByComponentName",y.getPlaceholderPrefixPresetByComponentName());let V=y;const A=n.defineComponent({props:{setup:{type:Function,required:!0}},setup(c){const e=new R(c.setup);return()=>e.exec()}});function D(c){const e=new O(c);return[e.setup.bind(e),{submit:e.submit.bind(e)}]}function M(c){return{install(){p.runtimeDoms=c}}}exports.ProForm=A;exports.useForm=D;exports.useFormRenderer=M;
1
+ "use strict";var I=Object.defineProperty;var v=(c,e,t)=>e in c?I(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>(v(c,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue");class O{constructor(e){l(this,"runtimeCore");this.formCustomization=e}cleanFallbackFields(e){return e!==null&&typeof e=="object"&&(delete e.__yiwwhl_async_field_fallback,Object.values(e).forEach(t=>{this.cleanFallbackFields(t)})),e}setup(e){return this.runtimeCore=e,this.formCustomization}submit(){return new Promise((e,t)=>{this.runtimeCore.formRef.value.validate(s=>s?t(s):e(this.cleanFallbackFields(n.toRaw(this.runtimeCore.processor.processedModel.value))))})}}class u{static typeChecker(e){return{}.toString.call(e)}static isArray(e){return this.typeChecker(e)==="[object Array]"}static isFunction(e){return this.typeChecker(e)==="[object Function]"}static isPromise(e){return e instanceof Promise}static isObject(e){return this.typeChecker(e)==="[object Object]"}static isAsyncFunction(e){return this.typeChecker(e)==="[object AsyncFunction]"}static isUndefined(e){return e===void 0}static isArrayEmpty(e){return(e==null?void 0:e.length)<1}static isObjectEmpty(e){return this.isArrayEmpty(Object.keys(e))}static isListSchema(e){return e.type==="list"}static isGroupSchema(e){return e.type==="group"}static isItemSchema(e){return this.isUndefined(e.type)||e.type==="item"}static isProcessInprogress(e){if(e===void 0)return!0;if(this.isObject(e)){if(e.setup&&this.isFunction(e.setup)&&e.props)return!1;if(this.isObjectEmpty(e))return!0;for(const t in e)if(e.hasOwnProperty(t)&&this.isProcessInprogress(e[t]))return!0}else if(this.isArray(e)){if(this.isArrayEmpty(e))return!0;for(const t of e)if(this.isProcessInprogress(t))return!0}return!1}}function S(c){const e=new WeakMap;function t(s){if(s===null||typeof s!="object")return s;if(s instanceof Date)return new Date(s);if(s instanceof RegExp)return new RegExp(s);if(s instanceof Map){const i=new Map;for(let[o,a]of s)i.set(t(o),t(a));return i}if(s instanceof Set){const i=new Set;for(let o of s)i.add(t(o));return i}if(e.has(s))return e.get(s);if(Array.isArray(s)){const i=[];e.set(s,i);for(let o=0;o<s.length;o++)i[o]=t(s[o]);return i}const r=Object.create(Object.getPrototypeOf(s));e.set(s,r);for(let i in s)s.hasOwnProperty(i)&&(r[i]=t(s[i]));return r}return t(c)}class w{constructor(){l(this,"effects",new Set)}clearEffects(){this.effects.clear()}triggerEffects(){Array.from(this.effects).forEach(e=>e())}trackEffect(e){return e(),this.effects.add(e),()=>this.effects.delete(e)}}class C{constructor(e){l(this,"processedSchemas");l(this,"processedModel");l(this,"getRuntimeMeta");l(this,"stableSchemas",[]);l(this,"stableModel",{});l(this,"schemaPreset",V.schemaPreset);l(this,"componentPropsPreset",V.componentPropsPreset);l(this,"stableUpdaterProcessProgress");l(this,"stableUpdaterTimes",0);l(this,"schemaEffect",new w);l(this,"defaultValueEffect",new w);l(this,"defaultValueInprogressMap",new Map);l(this,"baseDefaultValueFunctionsLength");this.processedSchemas=e.schemas,this.processedModel=e.model,this.getRuntimeMeta=e.getRuntimeMeta.bind(e),n.watch(()=>this.processedModel.value,()=>{this.schemaEffect.triggerEffects()},{deep:!0})}parse(e,t){e.forEach((s,r)=>{this.parseItem(s,r,t)})}initSchemas(e){return e.map(t=>{const s={};return t.children&&(s.children=this.initSchemas(t.children)),s})}countFunctionDefaultValues(e){let t=0,s=new Set;function r(i){if(!s.has(i)&&(Array.isArray(i)||i!==null&&typeof i=="object")){s.add(i);for(let o in i)i.hasOwnProperty(o)&&(o==="defaultValue"&&typeof i[o]=="function"&&i[o].toString().includes("defaultValue")&&t++,r(i[o]))}}return r(e),t}parseSchemas(e,t){u.isArrayEmpty(this.processedSchemas.value)&&(this.baseDefaultValueFunctionsLength=this.countFunctionDefaultValues(S(e)),this.processedSchemas.value=this.initSchemas(e)),this.parse(e,t)}parseStable(e){const t={};if(!u.isUndefined(e.stable))t[e.key]=this.parseStable(e.stable);else return e;return t}stableUpdater(e=[]){if(e.every(Boolean)){const t=n.toRaw(this.processedSchemas.value);!u.isProcessInprogress(t)&&u.isObjectEmpty(this.stableModel)&&(this.stableUpdaterProcessProgress||(this.stableUpdaterProcessProgress=Array.from({length:t.length}).fill(!1)),this.stableUpdaterProcessProgress[this.stableUpdaterTimes]=!0,this.stableUpdaterTimes++,this.modelProcessor(t))}}parseItem(e,t,s){const r=this,i=Array.from({length:Object.keys(e).filter(a=>a!=="children").length}).fill(!1);this.objectParser({data:e,index:t,updater:o});function o(a){const f=a.index,p=a.key,P=a.keyIndex;if(!a.stable)return;const j=r.parseStable(a.stable),b=s==null?void 0:s.index,g=s==null?void 0:s.key;let d=j;if(u.isProcessInprogress(d)||(i[P]=!0),s){let h=r.processedSchemas.value[b][g][f][p];h&&u.isObject(h)&&p!=="component"&&(d=Object.assign(h,d)),r.processedSchemas.value[b][g][f][p]=d,r.stableUpdater(i)}else{let h=r.processedSchemas.value[f][p];h&&u.isObject(h)&&(d=Object.assign(h,d)),r.processedSchemas.value[f][p]=d,r.stableUpdater(i)}}}objectParser(e){const t=e.data;Object.keys(t).forEach((r,i)=>{if(r==="children")this.parseSchemas(t[r],{...e,key:r,keyIndex:i});else{const o=a=>{e.updater({...e,key:r,keyIndex:i,stable:a})};if(u.isFunction(t[r]))r!=="defaultValue"?this.schemaEffect.trackEffect(()=>{if(r==="component"){const a=t[r](this.getRuntimeMeta());this.promiseFieldParser(a,o,!1)}else this.fieldParser(t[r],o)}):this.defaultValueEffect.trackEffect(()=>{const a=this.schemaEffect.trackEffect(()=>{/\{\s*model\s*\}/.test(t[r].toString())?this.fieldParser(t[r],f=>{if(!f)return o(f);this.defaultValueInprogressMap.set(t[r],f),!u.isProcessInprogress(f)&&this.defaultValueInprogressMap.size===this.baseDefaultValueFunctionsLength&&Array.from(this.defaultValueInprogressMap.values()).every(p=>!p.includes("undefined"))?(o(f),this.defaultValueEffect.clearEffects(),a()):o(f)}):this.fieldParser(t[r],f=>{this.defaultValueInprogressMap.set(t[r],f),!u.isProcessInprogress(f)&&this.defaultValueInprogressMap.size===this.baseDefaultValueFunctionsLength&&Array.from(this.defaultValueInprogressMap.values()).every(p=>!p.includes("undefined"))?(o(f),this.defaultValueEffect.clearEffects(),a()):o(f)})})});else if(r==="component"){const a=t[r];this.promiseFieldParser(a,o,!1)}else this.fieldParser(t[r],o)}})}promiseFieldParser(e,t,s){u.isPromise(e)?e.then(r=>{s&&u.isObject(r)?this.objectParser({data:r,updater:t}):t(r)}):s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e)}fieldParser(e,t,s=!0){if(u.isFunction(e)){const r=e(this.getRuntimeMeta());this.promiseFieldParser(r,t,s)}else n.isRef(e)?n.watch(()=>e.value,()=>{u.isUndefined(e.value)||(s&&u.isObject(e.value)?this.objectParser({data:e.value,updater:t}):t(e.value))},{immediate:!0,deep:!0}):n.isReactive(e)?n.watch(()=>e,()=>{u.isUndefined(e)||(s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e))},{immediate:!0,deep:!0}):s&&u.isObject(e)?this.objectParser({data:e,updater:t}):t(e)}modelProcessor(e){e.map(t=>this.createModel(t,this.processedModel.value)),u.isObjectEmpty(this.stableModel)&&this.stableUpdaterProcessProgress.every(Boolean)&&this.defaultValueEffect.effects.size===0&&(this.stableModel=S(this.processedModel.value))}createModel(e,t){u.isListSchema(e)&&(t[e.field]||(t[e.field]=[{}]),e.children.forEach(s=>{this.createModel(s,t[e.field][0])})),u.isGroupSchema(e)&&e.children.forEach(s=>{this.createModel(s,t)}),u.isItemSchema(e)&&(t[e.field]=e.defaultValue)}}function E(c){return typeof c=="function"||Object.prototype.toString.call(c)==="[object Object]"&&!n.isVNode(c)}class R{constructor(e){l(this,"schemas",n.ref([]));l(this,"model",n.ref({}));l(this,"processorBySchemaType",{item:this.runtimeItemProcessor.bind(this),group:this.runtimeGroupProcessor.bind(this),list:this.runtimeListProcessor.bind(this)});l(this,"formRef",n.ref(null));this.setup=e,this.processor=new C(this);const t=this.setup(this);this.processor.parseSchemas(t.schemas)}getRuntimeMeta(){return{model:n.toRaw(S(this.model.value))}}runtimeItemProcessor(e,t,s=this.model.value,r){var g;const i=r?`${r.field}.${t}.${e.field}`:e.field,o=n.toRaw(e.component);if(!o)return;const a=o.name,f=e.componentProps??{},p=V.placeholderPresetByComponentName;let P=e.placeholder;if(P||(P=`${p[a]??"请输入"}${e.label}`),e.required){e.rules||(e.rules=[]);const d=e.rules.findIndex(h=>!!h.required);d===-1?(g=e.rules)==null||g.push({required:!0,message:`${e.label}是必填项`}):e.rules.splice(d,1,{required:!0,message:`${e.label}是必填项`})}let b=e.show;return b===void 0&&(b=!0),b||delete s[e.field],n.createVNode(m.runtimeDoms.Item,null,{default(){return n.withDirectives(n.createVNode(m.runtimeDoms.FormItem,{label:`${e.label}:`,rules:e.rules,field:i},{default:()=>[n.createVNode(o,n.mergeProps({modelValue:s[e.field],"onUpdate:modelValue":d=>s[e.field]=d,placeholder:P},f),null)]}),[[n.vShow,b]])}})}runtimeGroupProcessor(e){let t;return n.createVNode(m.runtimeDoms.Group,{schema:e},E(t=e.children.map(s=>this.runtimeItemProcessor(s)))?t:{default:()=>[t]})}addListItem(e){var t,s;if(!((t=this.processor.stableModel[e.field])!=null&&t[0]))return Promise.reject({code:"0001",message:"异步默认值数据正在处理中,请您耐心等待... "});(s=this.processor.stableModel[e.field])!=null&&s[0]&&this.model.value[e.field].push(S(this.processor.stableModel[e.field][0]))}deleteListItem(e,t){this.model.value[e.field].splice(t,1);const s=e.children.map(({field:r})=>`${e.field}.${t}.${r}`);this.formRef.value.clearValidate(s)}runtimeListProcessor(e){const t=this;return t.model.value[e.field]||(t.model.value[e.field]=[{}]),n.createVNode(m.runtimeDoms.List,{schema:e},{default(){return t.model.value[e.field].map((s,r)=>n.createVNode(m.runtimeDoms.ListItem,null,{default(){return e.children.map(i=>t.runtimeItemProcessor(i,r,s,e))},delete({container:i}={}){var a;let o=i??n.createVNode("button",null,null);return n.withDirectives(n.createVNode(o,{onClick:()=>t.deleteListItem(e,r)},null),[[n.vShow,((a=t.model.value[e.field])==null?void 0:a.length)>1]])}}))},add({container:s}={}){let r=s??n.createVNode("button",null,[n.createTextVNode("添加")]);return n.createVNode(r,{onClick:()=>t.addListItem(e)},null)}})}runtimeProcessor(e){return e.map(t=>(t.type||(t.type="item"),this.processorBySchemaType[t.type](t)))}exec(){let e;return n.createVNode(m.runtimeDoms.Form,{ref:this.formRef,model:this.model.value},E(e=this.runtimeProcessor(this.schemas.value))?e:{default:()=>[e]})}}class m{}l(m,"runtimeDoms");const y=class y{static getPlaceholderPrefixPresetByComponentName(){const e={请选择:["Select","Tree","TreeSelect"],请输入:["Input"]},t={};for(let s in e)e[s].forEach(r=>{t[r]=s});return t}};l(y,"schemaPreset",{type:{defaultValue:"item"},component:{defaultValue:void 0},componentProps:{defaultValue:void 0},defaultValue:{defaultValue:void 0},label:{defaultValue:""},field:{defaultValue:"__yiwwhl_async_field_fallback"},rules:{defaultValue:[]},show:{defaultValue:!0},required:{defaultValue:!1},placeholder:{defaultValue:void 0},children:{defaultValue:[]}}),l(y,"componentPropsPreset",{options:{defaultValue:[]}}),l(y,"placeholderPresetByComponentName",y.getPlaceholderPrefixPresetByComponentName());let V=y;const A=n.defineComponent({props:{setup:{type:Function,required:!0}},setup(c){const e=new R(c.setup);return()=>e.exec()}});function D(c){const e=new O(c);return[e.setup.bind(e),{submit:e.submit.bind(e)}]}function M(c){return{install(){m.runtimeDoms=c}}}exports.ProForm=A;exports.useForm=D;exports.useFormRenderer=M;
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  var x = Object.defineProperty;
2
2
  var D = (l, e, t) => e in l ? x(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
3
3
  var o = (l, e, t) => (D(l, typeof e != "symbol" ? e + "" : e, t), t);
4
- import { toRaw as j, watch as E, isRef as M, isReactive as U, ref as I, createVNode as d, withDirectives as v, mergeProps as R, vShow as O, createTextVNode as k, isVNode as L, defineComponent as F } from "vue";
5
- class B {
4
+ import { toRaw as V, watch as E, isRef as M, isReactive as R, ref as I, createVNode as p, withDirectives as w, mergeProps as U, vShow as O, createTextVNode as k, isVNode as L, defineComponent as F } from "vue";
5
+ class $ {
6
6
  constructor(e) {
7
7
  o(this, "runtimeCore");
8
8
  this.formCustomization = e;
@@ -20,7 +20,7 @@ class B {
20
20
  return new Promise((e, t) => {
21
21
  this.runtimeCore.formRef.value.validate((s) => s ? t(s) : e(
22
22
  this.cleanFallbackFields(
23
- j(this.runtimeCore.processor.processedModel.value)
23
+ V(this.runtimeCore.processor.processedModel.value)
24
24
  )
25
25
  ));
26
26
  });
@@ -84,7 +84,7 @@ class u {
84
84
  return !1;
85
85
  }
86
86
  }
87
- function V(l) {
87
+ function j(l) {
88
88
  const e = /* @__PURE__ */ new WeakMap();
89
89
  function t(s) {
90
90
  if (s === null || typeof s != "object")
@@ -136,7 +136,7 @@ class C {
136
136
  return e(), this.effects.add(e), () => this.effects.delete(e);
137
137
  }
138
138
  }
139
- class N {
139
+ class B {
140
140
  constructor(e) {
141
141
  o(this, "processedSchemas");
142
142
  o(this, "processedModel");
@@ -188,7 +188,7 @@ class N {
188
188
  // 派生过程,用于外部应用
189
189
  parseSchemas(e, t) {
190
190
  u.isArrayEmpty(this.processedSchemas.value) && (this.baseDefaultValueFunctionsLength = this.countFunctionDefaultValues(
191
- V(e)
191
+ j(e)
192
192
  ), this.processedSchemas.value = this.initSchemas(e)), this.parse(e, t);
193
193
  }
194
194
  parseStable(e) {
@@ -202,7 +202,7 @@ class N {
202
202
  // 对于稳定初始化更新的抽象
203
203
  stableUpdater(e = []) {
204
204
  if (e.every(Boolean)) {
205
- const t = j(this.processedSchemas.value);
205
+ const t = V(this.processedSchemas.value);
206
206
  !u.isProcessInprogress(t) && u.isObjectEmpty(this.stableModel) && (this.stableUpdaterProcessProgress || (this.stableUpdaterProcessProgress = Array.from({
207
207
  length: t.length
208
208
  }).fill(!1)), this.stableUpdaterProcessProgress[this.stableUpdaterTimes] = !0, this.stableUpdaterTimes++, this.modelProcessor(t));
@@ -215,17 +215,17 @@ class N {
215
215
  }).fill(!1);
216
216
  this.objectParser({ data: e, index: t, updater: n });
217
217
  function n(c) {
218
- const f = c.index, a = c.key, P = c.keyIndex;
218
+ const f = c.index, d = c.key, P = c.keyIndex;
219
219
  if (!c.stable)
220
220
  return;
221
- const w = r.parseStable(c.stable), m = s == null ? void 0 : s.index, g = s == null ? void 0 : s.key;
222
- let p = w;
223
- if (u.isProcessInprogress(p) || (i[P] = !0), s) {
224
- let b = r.processedSchemas.value[m][g][f][a];
225
- b && u.isObject(b) && a !== "component" && (p = Object.assign(b, p)), r.processedSchemas.value[m][g][f][a] = p, r.stableUpdater(i);
221
+ const v = r.parseStable(c.stable), b = s == null ? void 0 : s.index, g = s == null ? void 0 : s.key;
222
+ let a = v;
223
+ if (u.isProcessInprogress(a) || (i[P] = !0), s) {
224
+ let h = r.processedSchemas.value[b][g][f][d];
225
+ h && u.isObject(h) && d !== "component" && (a = Object.assign(h, a)), r.processedSchemas.value[b][g][f][d] = a, r.stableUpdater(i);
226
226
  } else {
227
- let b = r.processedSchemas.value[f][a];
228
- b && u.isObject(b) && (p = Object.assign(b, p)), r.processedSchemas.value[f][a] = p, r.stableUpdater(i);
227
+ let h = r.processedSchemas.value[f][d];
228
+ h && u.isObject(h) && (a = Object.assign(h, a)), r.processedSchemas.value[f][d] = a, r.stableUpdater(i);
229
229
  }
230
230
  }
231
231
  }
@@ -261,11 +261,11 @@ class N {
261
261
  if (!f)
262
262
  return n(f);
263
263
  this.defaultValueInprogressMap.set(t[r], f), !u.isProcessInprogress(f) && this.defaultValueInprogressMap.size === this.baseDefaultValueFunctionsLength && Array.from(this.defaultValueInprogressMap.values()).every(
264
- (a) => !a.includes("undefined")
264
+ (d) => !d.includes("undefined")
265
265
  ) ? (n(f), this.defaultValueEffect.clearEffects(), c()) : n(f);
266
266
  }) : this.fieldParser(t[r], (f) => {
267
267
  this.defaultValueInprogressMap.set(t[r], f), !u.isProcessInprogress(f) && this.defaultValueInprogressMap.size === this.baseDefaultValueFunctionsLength && Array.from(this.defaultValueInprogressMap.values()).every(
268
- (a) => !a.includes("undefined")
268
+ (d) => !d.includes("undefined")
269
269
  ) ? (n(f), this.defaultValueEffect.clearEffects(), c()) : n(f);
270
270
  });
271
271
  });
@@ -307,7 +307,7 @@ class N {
307
307
  immediate: !0,
308
308
  deep: !0
309
309
  }
310
- ) : U(e) ? E(
310
+ ) : R(e) ? E(
311
311
  () => e,
312
312
  () => {
313
313
  u.isUndefined(e) || (s && u.isObject(e) ? this.objectParser({
@@ -327,7 +327,7 @@ class N {
327
327
  modelProcessor(e) {
328
328
  e.map(
329
329
  (t) => this.createModel(t, this.processedModel.value)
330
- ), u.isObjectEmpty(this.stableModel) && this.stableUpdaterProcessProgress.every(Boolean) && this.defaultValueEffect.effects.size === 0 && (this.stableModel = V(this.processedModel.value));
330
+ ), u.isObjectEmpty(this.stableModel) && this.stableUpdaterProcessProgress.every(Boolean) && this.defaultValueEffect.effects.size === 0 && (this.stableModel = j(this.processedModel.value));
331
331
  }
332
332
  createModel(e, t) {
333
333
  u.isListSchema(e) && (t[e.field] || (t[e.field] = [{}]), e.children.forEach((s) => {
@@ -340,7 +340,7 @@ class N {
340
340
  function A(l) {
341
341
  return typeof l == "function" || Object.prototype.toString.call(l) === "[object Object]" && !L(l);
342
342
  }
343
- class T {
343
+ class q {
344
344
  constructor(e) {
345
345
  o(this, "schemas", I([]));
346
346
  o(this, "model", I({}));
@@ -350,47 +350,54 @@ class T {
350
350
  list: this.runtimeListProcessor.bind(this)
351
351
  });
352
352
  o(this, "formRef", I(null));
353
- this.setup = e, this.processor = new N(this);
353
+ this.setup = e, this.processor = new B(this);
354
354
  const t = this.setup(this);
355
355
  this.processor.parseSchemas(t.schemas);
356
356
  }
357
357
  getRuntimeMeta() {
358
358
  return {
359
- model: j(V(this.model.value))
359
+ model: V(j(this.model.value))
360
360
  };
361
361
  }
362
362
  runtimeItemProcessor(e, t, s = this.model.value, r) {
363
363
  var g;
364
- const i = r ? `${r.field}.${t}.${e.field}` : e.field, n = j(e.component);
364
+ const i = r ? `${r.field}.${t}.${e.field}` : e.field, n = V(e.component);
365
365
  if (!n)
366
366
  return;
367
- const c = n.name, f = e.componentProps ?? {}, a = S.placeholderPresetByComponentName;
367
+ const c = n.name, f = e.componentProps ?? {}, d = S.placeholderPresetByComponentName;
368
368
  let P = e.placeholder;
369
- P || (P = `${// @ts-expect-error
370
- a[c] ?? "请输入"}${e.label}`), e.required && (e.rules || (e.rules = []), (g = e.rules) == null || g.push({
371
- required: !0,
372
- message: `${e.label}是必填项`
373
- }));
374
- let m = e.show;
375
- return m === void 0 && (m = !0), m || delete s[e.field], d(h.runtimeDoms.Item, null, {
369
+ if (P || (P = `${// @ts-expect-error
370
+ d[c] ?? "请输入"}${e.label}`), e.required) {
371
+ e.rules || (e.rules = []);
372
+ const a = e.rules.findIndex((h) => !!h.required);
373
+ a === -1 ? (g = e.rules) == null || g.push({
374
+ required: !0,
375
+ message: `${e.label}是必填项`
376
+ }) : e.rules.splice(a, 1, {
377
+ required: !0,
378
+ message: `${e.label}是必填项`
379
+ });
380
+ }
381
+ let b = e.show;
382
+ return b === void 0 && (b = !0), b || delete s[e.field], p(m.runtimeDoms.Item, null, {
376
383
  default() {
377
- return v(d(h.runtimeDoms.FormItem, {
384
+ return w(p(m.runtimeDoms.FormItem, {
378
385
  label: `${e.label}:`,
379
386
  rules: e.rules,
380
387
  field: i
381
388
  }, {
382
- default: () => [d(n, R({
389
+ default: () => [p(n, U({
383
390
  modelValue: s[e.field],
384
- "onUpdate:modelValue": (p) => s[e.field] = p,
391
+ "onUpdate:modelValue": (a) => s[e.field] = a,
385
392
  placeholder: P
386
393
  }, f), null)]
387
- }), [[O, m]]);
394
+ }), [[O, b]]);
388
395
  }
389
396
  });
390
397
  }
391
398
  runtimeGroupProcessor(e) {
392
399
  let t;
393
- return d(h.runtimeDoms.Group, {
400
+ return p(m.runtimeDoms.Group, {
394
401
  schema: e
395
402
  }, A(t = e.children.map((s) => this.runtimeItemProcessor(s))) ? t : {
396
403
  default: () => [t]
@@ -403,27 +410,31 @@ class T {
403
410
  code: "0001",
404
411
  message: "异步默认值数据正在处理中,请您耐心等待... "
405
412
  });
406
- (s = this.processor.stableModel[e.field]) != null && s[0] && this.model.value[e.field].push(V(this.processor.stableModel[e.field][0]));
413
+ (s = this.processor.stableModel[e.field]) != null && s[0] && this.model.value[e.field].push(j(this.processor.stableModel[e.field][0]));
407
414
  }
408
415
  deleteListItem(e, t) {
409
416
  this.model.value[e.field].splice(t, 1);
417
+ const s = e.children.map(({
418
+ field: r
419
+ }) => `${e.field}.${t}.${r}`);
420
+ this.formRef.value.clearValidate(s);
410
421
  }
411
422
  runtimeListProcessor(e) {
412
423
  const t = this;
413
- return t.model.value[e.field] || (t.model.value[e.field] = [{}]), d(h.runtimeDoms.List, {
424
+ return t.model.value[e.field] || (t.model.value[e.field] = [{}]), p(m.runtimeDoms.List, {
414
425
  schema: e
415
426
  }, {
416
427
  default() {
417
- return t.model.value[e.field].map((s, r) => d(h.runtimeDoms.ListItem, null, {
428
+ return t.model.value[e.field].map((s, r) => p(m.runtimeDoms.ListItem, null, {
418
429
  default() {
419
- return e.children.map((i, n) => t.runtimeItemProcessor(i, n, s, e));
430
+ return e.children.map((i) => t.runtimeItemProcessor(i, r, s, e));
420
431
  },
421
432
  delete({
422
433
  container: i
423
434
  } = {}) {
424
435
  var c;
425
- let n = i ?? d("button", null, null);
426
- return v(d(n, {
436
+ let n = i ?? p("button", null, null);
437
+ return w(p(n, {
427
438
  onClick: () => t.deleteListItem(e, r)
428
439
  }, null), [[O, ((c = t.model.value[e.field]) == null ? void 0 : c.length) > 1]]);
429
440
  }
@@ -432,8 +443,8 @@ class T {
432
443
  add({
433
444
  container: s
434
445
  } = {}) {
435
- let r = s ?? d("button", null, [k("添加")]);
436
- return d(r, {
446
+ let r = s ?? p("button", null, [k("添加")]);
447
+ return p(r, {
437
448
  onClick: () => t.addListItem(e)
438
449
  }, null);
439
450
  }
@@ -444,7 +455,7 @@ class T {
444
455
  }
445
456
  exec() {
446
457
  let e;
447
- return d(h.runtimeDoms.Form, {
458
+ return p(m.runtimeDoms.Form, {
448
459
  ref: this.formRef,
449
460
  model: this.model.value
450
461
  }, A(e = this.runtimeProcessor(this.schemas.value)) ? e : {
@@ -452,9 +463,9 @@ class T {
452
463
  });
453
464
  }
454
465
  }
455
- class h {
466
+ class m {
456
467
  }
457
- o(h, "runtimeDoms");
468
+ o(m, "runtimeDoms");
458
469
  const y = class y {
459
470
  static getPlaceholderPrefixPresetByComponentName() {
460
471
  const e = {
@@ -509,7 +520,7 @@ o(y, "schemaPreset", {
509
520
  }), // 基于基本功能提出基本预设
510
521
  o(y, "placeholderPresetByComponentName", y.getPlaceholderPrefixPresetByComponentName());
511
522
  let S = y;
512
- const $ = /* @__PURE__ */ F({
523
+ const _ = /* @__PURE__ */ F({
513
524
  props: {
514
525
  setup: {
515
526
  type: Function,
@@ -517,12 +528,12 @@ const $ = /* @__PURE__ */ F({
517
528
  }
518
529
  },
519
530
  setup(l) {
520
- const e = new T(l.setup);
531
+ const e = new q(l.setup);
521
532
  return () => e.exec();
522
533
  }
523
534
  });
524
- function q(l) {
525
- const e = new B(l);
535
+ function z(l) {
536
+ const e = new $(l);
526
537
  return [
527
538
  e.setup.bind(e),
528
539
  {
@@ -533,12 +544,12 @@ function q(l) {
533
544
  function G(l) {
534
545
  return {
535
546
  install() {
536
- h.runtimeDoms = l;
547
+ m.runtimeDoms = l;
537
548
  }
538
549
  };
539
550
  }
540
551
  export {
541
- $ as ProForm,
542
- q as useForm,
552
+ _ as ProForm,
553
+ z as useForm,
543
554
  G as useFormRenderer
544
555
  };
@@ -47,7 +47,10 @@ export interface ListSchema {
47
47
  children: ProxyedSchema[];
48
48
  }
49
49
  export type Schema = ItemSchema | GroupSchema | ListSchema;
50
- export type ProFormProxyRule<T> = T | ((...args: any) => T) | ((...args: any) => Promise<T>);
50
+ export interface runtimeMeta {
51
+ model: AnyObject;
52
+ }
53
+ export type ProFormProxyRule<T> = T | ((runtimeMeta: runtimeMeta) => T) | ((runtimeMeta: runtimeMeta) => Promise<T>);
51
54
  export type ProFormProxy<T> = {
52
55
  [K in keyof T]: ProFormProxyRule<T[K]>;
53
56
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harbor-design/proform",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",