@schemx/vue 1.0.0-next.2 → 1.0.0-next.4

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.
Files changed (88) hide show
  1. package/README.md +292 -293
  2. package/dist/analyze.html +1 -1
  3. package/dist/bridge/fieldBridge.d.ts +10 -0
  4. package/dist/bridge/fieldBridge.d.ts.map +1 -0
  5. package/dist/bridge/formBridge.d.ts +13 -0
  6. package/dist/bridge/formBridge.d.ts.map +1 -0
  7. package/dist/bridge/formInstance.d.ts +18 -0
  8. package/dist/bridge/formInstance.d.ts.map +1 -0
  9. package/dist/bridge/helpers.d.ts +39 -0
  10. package/dist/bridge/helpers.d.ts.map +1 -0
  11. package/dist/bridge/index.d.ts +13 -0
  12. package/dist/bridge/index.d.ts.map +1 -0
  13. package/dist/bridge/types.d.ts +69 -0
  14. package/dist/bridge/types.d.ts.map +1 -0
  15. package/dist/bridge/viewSchemaBridge.d.ts +5 -0
  16. package/dist/bridge/viewSchemaBridge.d.ts.map +1 -0
  17. package/dist/components/Button/index.vue.d.ts +30 -0
  18. package/dist/components/Button/index.vue.d.ts.map +1 -0
  19. package/dist/components/Button/types.d.ts.map +1 -1
  20. package/dist/components/ConfigProvider/index.d.ts +68 -0
  21. package/dist/components/ConfigProvider/index.d.ts.map +1 -0
  22. package/dist/components/Dynamic/index.d.ts +30 -0
  23. package/dist/components/Dynamic/index.d.ts.map +1 -0
  24. package/dist/components/Field/index.d.ts +47 -0
  25. package/dist/components/Field/index.d.ts.map +1 -0
  26. package/dist/components/Field/slot.d.ts +40 -0
  27. package/dist/components/Field/slot.d.ts.map +1 -0
  28. package/dist/components/Group/index.d.ts +46 -0
  29. package/dist/components/Group/index.d.ts.map +1 -0
  30. package/dist/components/Group/slot.d.ts +34 -0
  31. package/dist/components/Group/slot.d.ts.map +1 -0
  32. package/dist/config/index.d.ts +2 -0
  33. package/dist/config/index.d.ts.map +1 -1
  34. package/dist/config/providerConfig.d.ts +15 -0
  35. package/dist/config/providerConfig.d.ts.map +1 -0
  36. package/dist/config/vueConfig.d.ts +12 -0
  37. package/dist/config/vueConfig.d.ts.map +1 -0
  38. package/dist/form.d.ts +2 -2
  39. package/dist/form.d.ts.map +1 -1
  40. package/dist/hocs/withRemoteOptions.d.ts.map +1 -1
  41. package/dist/hooks/index.d.ts +3 -3
  42. package/dist/hooks/index.d.ts.map +1 -1
  43. package/dist/hooks/provideFieldContext.d.ts +2 -2
  44. package/dist/hooks/provideFormContext.d.ts +13 -46
  45. package/dist/hooks/provideFormContext.d.ts.map +1 -1
  46. package/dist/hooks/useDictionary.d.ts.map +1 -1
  47. package/dist/hooks/useField.d.ts +1 -1
  48. package/dist/hooks/useField.d.ts.map +1 -1
  49. package/dist/hooks/useForm.d.ts +3 -3
  50. package/dist/hooks/useForm.d.ts.map +1 -1
  51. package/dist/hooks/useFormSelector.d.ts +4 -0
  52. package/dist/hooks/useFormSelector.d.ts.map +1 -1
  53. package/dist/hooks/useViewSchemas.d.ts +2 -34
  54. package/dist/hooks/useViewSchemas.d.ts.map +1 -1
  55. package/dist/hooks/useWatch.d.ts.map +1 -1
  56. package/dist/index.cjs +1 -1
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.d.ts +5 -6
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.mjs +923 -557
  61. package/dist/index.mjs.map +1 -1
  62. package/dist/style.css +1 -1
  63. package/dist/types/dictionary.d.ts +1 -1
  64. package/dist/types/dictionary.d.ts.map +1 -1
  65. package/dist/types/field.d.ts +38 -2
  66. package/dist/types/field.d.ts.map +1 -1
  67. package/dist/types/form.d.ts +11 -7
  68. package/dist/types/form.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +4 -4
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/utils/helpers.d.ts +4 -0
  72. package/dist/utils/helpers.d.ts.map +1 -1
  73. package/dist/utils/index.d.ts +2 -0
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/presetRuleProvider.d.ts +16 -0
  76. package/dist/utils/presetRuleProvider.d.ts.map +1 -0
  77. package/dist/utils/rendererProvider.d.ts.map +1 -1
  78. package/package.json +3 -3
  79. package/dist/components/FormGroup/index.d.ts +0 -16
  80. package/dist/components/FormGroup/index.d.ts.map +0 -1
  81. package/dist/components/FormItem/index.d.ts +0 -22
  82. package/dist/components/FormItem/index.d.ts.map +0 -1
  83. package/dist/components/FormItem/slot.d.ts +0 -48
  84. package/dist/components/FormItem/slot.d.ts.map +0 -1
  85. package/dist/formBridge.d.ts +0 -188
  86. package/dist/formBridge.d.ts.map +0 -1
  87. package/dist/utils/rulesProvider.d.ts +0 -16
  88. package/dist/utils/rulesProvider.d.ts.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("@schemx/core"),r=require("classnames"),o=require("@schemx/core/adapter"),n=require("es-toolkit"),a=Symbol("schemx:app-config"),l=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function s(e){if(void 0===e)return;const t=Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:Object.freeze({...t})]);return Object.freeze(Object.fromEntries(t))}function i(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:s(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,validationRuleRegistry:e.validationRuleRegistry})}(t);e.provide(a,r)}const u=new WeakMap,d=new WeakMap,c=new WeakMap;function m(t){return e.shallowRef(t)}function p(e){return c.get(e)??e}function v(e){const t=p(e),r=u.get(t);if(r)return r;const n=function(e){const t=o.createFormExternalStore(e),r=m(t.values.getSnapshot()),n=m(t.touchedFields.getSnapshot()),a=m(t.pendingFields.getSnapshot()),l=m(t.loading.getSnapshot()),s=new Map,i=()=>{r.value=t.values.getSnapshot()},u=()=>{n.value=t.touchedFields.getSnapshot()},d=()=>{a.value=t.pendingFields.getSnapshot()},c=()=>{l.value=t.loading.getSnapshot()},p=t.values.subscribe(i),v=t.touchedFields.subscribe(u),h=t.pendingFields.subscribe(d),g=t.loading.subscribe(c),y=()=>{p(),v(),h(),g()},b=f(e),x={form:e,externalStore:t,values:r,touchedFields:n,pendingFields:a,loading:l,fieldBridges:s,refCount:0,destroyed:!1,unsubscribe:y,facade:b};return x}(t);return u.set(t,n),n}function f(e){const t=p(e),r=d.get(t);if(r)return r;const o=function(e){let t=!1;const r=r=>{if(!t){g(v(e),r).value.value}return e.getFieldValue(r)},o=r=>{if(!t){g(v(e),r).errors.value}return e.getFieldErrors(r)},n=r=>{if(!t){g(v(e),r).touched.value}return e.isFieldTouched(r)},a=r=>{if(!t){g(v(e),r).pending.value}return e.isFieldPending(r)},l=r=>{if(!t){const t=v(e);if(void 0===r)t.values.value;else for(const e of r)g(t,e).value.value}return e.getFieldsValue(r)},s=()=>{if(!t){v(e).touchedFields.value}return e.getTouchedFields()},i=()=>{if(!t){v(e).pendingFields.value}return e.getPendingFields()},d=()=>{if(!t){v(e).loading.value}return e.isLoading()},c=()=>{if(t)return;t=!0;const r=u.get(e);r&&y(r),e.destroy()};return{...e,getFieldValue:r,getFieldErrors:o,isFieldTouched:n,isFieldPending:a,getFieldsValue:l,getTouchedFields:s,getPendingFields:i,isLoading:d,destroy:c}}(t);return d.set(t,o),c.set(o,t),o}function h(e){if(e.destroyed)return()=>{};e.refCount++;let t=!1;return()=>{t||e.destroyed||(t=!0,e.refCount--,0===e.refCount&&y(e))}}function g(e,t){const r=e.externalStore.field(t),o=e.fieldBridges.get(r);if(o)return o;const n=r.getSnapshot(),a=m(n.value),l=m(n.errors),s=m(n.touched),i=m(n.pending),u=r.subscribe(()=>{const e=r.getSnapshot();var t,o;Object.is(a.value,e.value)||(a.value=e.value),t=l.value,o=e.errors,t.length===o.length&&t.every((e,t)=>e===o[t])||(l.value=e.errors),s.value!==e.touched&&(s.value=e.touched),i.value!==e.pending&&(i.value=e.pending)}),d={store:r,value:a,errors:l,touched:s,pending:i,dispose:()=>{u()}};return e.fieldBridges.set(r,d),d}function y(e){if(!e.destroyed){e.destroyed=!0,e.refCount=0,e.unsubscribe();for(const t of e.fieldBridges.values())t.dispose();e.fieldBridges.clear(),e.externalStore.dispose(),u.delete(e.form)}}const b=o.createRendererRegistry("input"),x=t.createValidationRuleRegistry();function C(r={}){const o=t.mergeSchemxConfig(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:o=[],defaultRendererType:n,rendererRegistry:a,validationRuleRegistry:l}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:n,rendererRegistry:a,validationRuleRegistry:l,validatorAdapters:o}}(r),null===e.getCurrentInstance()?l:e.inject(a,l),{rendererRegistry:b,validationRuleRegistry:x}),n={...r,...o},s=t.createForm(n),i=f(s),u=h(v(s));return e.onScopeDispose(()=>{u(),i.destroy()}),i}const F=Symbol("schemx:instance");function S(t){const r=f(t),o=h(v(r));return e.provide(F,r),e.onScopeDispose(o),r}function w(){const t=e.inject(F,null);if(!t)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure createFormContext(form) is called synchronously during setup().");return t}const k=r=>{const o=w();return function(r,o,n){const a=p(r),l=t.createField(a,o),s=e.computed(()=>n.errors.value),i=e.computed(()=>n.touched.value),u=e.computed(()=>n.pending.value);return{...l,name:o,value:n.value,errors:s,dirty:i,pending:u,getValue:()=>n.value.value,getErrors:()=>n.errors.value,isTouched:()=>n.touched.value,isPending:()=>n.pending.value,getValues:()=>r.getFieldsValue()}}(o,r,g(v(p(o)),r))},V=Symbol("schemx:field");function B(t){e.provide(V,t)}function R(){const t=e.inject(V);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}function O(r,o,n){const a=w(),l=t.createWatch(p(a),r,o,n);return e.onUnmounted(l),l}function _(e,t,r){return O(e,t,r)}function j(e){return e instanceof Error?e:new Error(String(e))}const A=(t,r)=>{var o;const n=w(),a=e.shallowRef([]),l=e.ref(!1),s=e.ref(void 0);let i=0;const u=async()=>{try{const e=n.getFieldsValue();if("function"==typeof t.shouldFetch&&!t.shouldFetch(e))return a.value=[],void(l.value=!1);l.value=!0,s.value=void 0;const r=++i,o=await(async e=>{const r=t.retryCount??0,o=t.retryInterval??1e3;let a=new Error("Unknown error");for(let s=0;s<=r;s++)try{return await t.api(e,n)}catch(l){a=j(l),s<r&&await new Promise(e=>setTimeout(e,o))}throw a})(e);if(r!==i)return;const u=await(async e=>{if("function"==typeof(null==t?void 0:t.formatter))return await t.formatter(e,n);if(!Array.isArray(e))throw new Error("[schemx] Dictionary api must return an array when formatter is not provided.");return e})(o);if(r!==i)return;a.value=u,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(u,n),l.value=!1}catch(e){const r=j(e);s.value=r,a.value=[],l.value=!1,"function"==typeof t.onError&&t.onError(r,n)}};(null==(o=t.dependsOn)?void 0:o.length)&&_(t.dependsOn,(e,o)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&r&&n.setFieldValue(r,void 0),u()});const d=t.immediate??!0;return e.onMounted(()=>{d&&u()}),{list:a,loading:l,error:s,loadDict:u,refresh:()=>u(),mutate:e=>{a.value=e}}},E=Symbol("schemx:form-config"),P=t=>{e.provide(E,t)};function N(){const t=e.inject(E);if(!t)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure createFormConfigContext(props) is called synchronously during setup().");return t}function T(t){const r=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const r=Object.keys(e),o=Object.keys(t);return r.length===o.length&&r.every(r=>e[r]===t[r])})(r.value,e)||(r.value=e)}),r}const $=new WeakMap;function L(e){return q(p(e)).viewSchemas}function W(r){const o=e.shallowRef(r.getViewSchemas()),n=e.computed(()=>function(e){const r=new Map,o=e=>{for(const n of e)r.set(n.key,n),t.isViewGroupSchema(n)&&o(n.children)};return o(e),r}(o.value));return{refCount:0,schemasByKey:n,unsubscribe:r.subscribeViewSchemas(e=>{o.value=e}),viewSchemas:o}}function q(t){const r=$.get(t),o=r??W(t);return r||$.set(t,o),o.refCount++,e.onScopeDispose(()=>{o.refCount--,o.refCount>0||(o.unsubscribe(),$.delete(t))}),o}function z(t,r,o={}){const n=v(p(t)),a=h(n),l=e.shallowRef(r(n.values.value)),s=o.equals??Object.is,i=e.watch(n.values,e=>{const t=r(e);s(l.value,t)||(l.value=t)},{flush:"sync"});return e.onScopeDispose(()=>{i(),a()}),e.readonly(l)}function M(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function D(e,t){if(!t)return!1;return(Array.isArray(t)?t:[t]).some(t=>function(e){return{onBlur:"blur",onChange:"change",onSubmit:"submit",blur:"blur",change:"change",submit:"submit"}[e]??"submit"}(t)===e)}const I=e=>/[A-Z]/.test(e),G=e=>e.includes("-"),K=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),U=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),Z=(e,t)=>{if(e[t])return e[t];const r=I(t)?K(t):G(t)?U(t):void 0;return r&&e[r]?e[r]:void 0},H=(e,t)=>{const r={},o=(n=String(e),(G(n)?U(n):n)+":");var n;const a=(e=>I(e)?K(e):e)(String(e))+":";for(const[l,s]of Object.entries(t))l.startsWith(o)?r[l.slice(o.length)]=s:l.startsWith(a)&&a!==o&&(r[l.slice(a.length)]=s);return r},J=e.defineComponent((t,{slots:o})=>{var n;const a=e.ref(Boolean(t.schema.defaultCollapsed)),l=e.computed(()=>t.schema.collapsed??a.value),s=(null==(n=e.getCurrentInstance())?void 0:n.uid)??0;e.watch(()=>t.schema.collapsed,(e,t)=>{void 0!==e?a.value=e:void 0!==t&&(a.value=t)});const i=()=>{var e,r;if(!t.schema.collapsible||t.schema.disabled)return;const o=!l.value;void 0===t.schema.collapsed&&(a.value=o),null==(r=(e=t.schema).onCollapsedChange)||r.call(e,o)};return()=>{var n;const a=t.schema;if(!1===a.visible)return null;const u=Boolean(a.collapsible),d=l.value,c=a.destroyOnCollapse??!0,m=`schemx-group-${(null==(n=a.debug)?void 0:n.runtimeNodeId)??`local-${s}`}-${Q(a.key)}`,p=`${m}-header`,v=`${m}-body`,f=e.createVNode("div",{id:v,role:"group","aria-labelledby":a.label?p:void 0,"aria-hidden":d||void 0,class:"schemx-group__body",style:!c&&d?{display:"none"}:void 0},[a.children.map(t=>e.createVNode(te,{key:t.key,schema:t},o))]);return e.createVNode("div",{class:r("schemx-group",{"schemx-group--collapsed":d,"is-readonly":a.readonly,"is-disabled":a.disabled},a.class),style:a.style,"data-key":a.key,"aria-disabled":a.disabled||void 0},[a.label&&e.createVNode("div",{id:p,role:u?"button":void 0,tabindex:u?a.disabled?-1:0:void 0,"aria-expanded":u?!d:void 0,"aria-controls":u?v:void 0,"aria-disabled":u&&a.disabled||void 0,class:r("schemx-group__header",{"schemx-group__header--clickable":u&&!a.disabled}),onClick:i,onKeydown:e=>{a.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),i())}},[e.createVNode("span",{class:"schemx-group__title"},[a.label]),u&&e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!d})},null)]),c?!d&&f:f])}},{name:"SchemxGroup",props:{schema:{type:Object,required:!0}}}),Q=e=>String(e).replace(/[^a-zA-Z0-9_-]/g,"-");function X(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}const Y=e.defineComponent({name:"SchemxItem",props:{schema:{type:Object,required:!0}},setup:(r,{slots:o})=>()=>{const n=r.schema;return t.isViewGroupSchema(n)?e.h(J,{schema:n},o):e.h(ee,{schema:n},o)}}),ee=e.defineComponent({name:"SchemxFieldItem",inheritAttrs:!1,props:{schema:{type:Object,required:!0}},setup(o,{attrs:n,slots:a}){const l=w(),s=e.computed(()=>o.schema),i=function(t,r){const o=q(p(t));return e.computed(()=>o.schemasByKey.value.get(r()))}(l,()=>s.value.key),u=e.computed(()=>i.value&&t.isSchemxViewFieldSchema(i.value)?i.value:s.value),d=N(),c=k(u.value.name);B(c);const m=e.computed(()=>{return e=u.value.validationTrigger,t=d.schemaConfig.validationTrigger,r="onChange",M(e)?e:M(t)?t:r;var e,t,r}),v=e.computed(()=>{const e=u.value.visible&&!u.value.readonly&&!u.value.disabled,t=u.value.rules,r=Array.isArray(t)?(null==t?void 0:t.length)>0:!!u.value.rules;return e&&(Boolean(u.value.required)||r)}),f=e=>{var t,r;c.setValue(e),null==(r=null==(t=u.value.componentProps)?void 0:t.onChange)||r.call(t,e),v.value&&D("change",m.value)&&c.validate()},h=e=>{var t,r;null==(r=null==(t=u.value.componentProps)?void 0:t.onBlur)||r.call(t,e),v.value&&D("blur",m.value)&&c.validate()},g=e=>{c.setValue(e)},y=T(()=>({...u.value.componentProps??{},value:c.value.value,onChange:f,onBlur:h,"onUpdate:value":g})),{createSlotProps:b,renderAfter:x,renderBefore:C,renderContent:F,renderError:S,renderLabel:V}=function(t){const{schemaRef:r,field:o,form:n,formContext:a,componentProps:l,slots:s}=t,i=(e={})=>({...l.value,value:o.value.value,...e}),u=e=>{const t=Z(s,`${r.value.name}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>u("After"),renderBefore:()=>u("Before"),renderContent:()=>{const t=n.getRenderer(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const o=H(X(r.value.name),s),a=e.h(t,l.value,o),u=Z(s,`${r.value.name}Content`);return u?u(i({columnElement:a})):e.createVNode("div",{class:"schemx-item__control"},[a])},renderError:()=>{const t=Z(s,`${r.value.name}Error`);return t?t(i({errors:o.errors.value})):0===o.errors.value.length?null:e.createVNode("div",{class:"schemx-item__error"},[o.errors.value[0]])},renderLabel:()=>{const t=Z(s,`${r.value.name}Label`);if(t)return t(r.value);const o=r.value.labelAlign||a.schemaConfig.labelAlign,n=r.value.labelWidth||a.schemaConfig.labelWidth,l=r.value.colon??a.schemaConfig.colon;return e.createVNode("label",{class:"schemx-item__label",style:{width:n,textAlign:o}},[!(r.value.showRequiredMark??Boolean(r.value.required))||r.value.disabled||r.value.readonly?null:e.createVNode("span",{class:"schemx-item__required"},[e.createTextVNode("*")]),e.createVNode("span",{class:"schemx-item__label-text"},[r.value.label,l?":":""])])}}}({schemaRef:u,field:c,form:l,formContext:d,componentProps:y,slots:a});return()=>{if(!u.value.visible)return null;const t=Z(a,X(u.value.name));if(t)return t(b());const o=u.value.labelPosition||d.schemaConfig.labelPosition;return e.createVNode("div",e.mergeProps(n,{class:r("schemx-item-wrapper",n.class),style:[n.style,u.value.style]}),[e.createVNode("div",{class:r("schemx-item",`schemx-item--label-${o}`,u.value.class,{"is-readonly":u.value.readonly,"is-disabled":u.value.disabled}),style:{...u.value.style??{}}},[V(),e.createVNode("div",{class:"schemx-item__content"},[C(),F(),x(),S()])])])}}}),te=Y,re=["aria-busy","data-loading","disabled"],oe={key:0,class:"schemx-button__prefix"},ne={key:1,class:"schemx-button__loading",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},ae={key:4,class:"schemx-button__suffix"},le=e.defineComponent({name:"SchemxButton",inheritAttrs:!1,__name:"index",props:{loading:{type:Boolean,default:!1},loadingText:{default:void 0},disabled:{type:Boolean,default:!1},size:{default:"medium"}},setup(t){const r=t,o=e.useAttrs(),n=e.computed(()=>r.disabled||r.loading),a=e.computed(()=>["schemx-button",`schemx-button--${r.size}`]);return(t,l)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(o),{class:a.value,"aria-busy":r.loading||void 0,"data-loading":r.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",oe,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ne,[...l[0]||(l[0]=[e.createStaticVNode('<path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path>',8)])])):e.createCommentVNode("",!0),r.loading&&r.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(r.loadingText),1)],64)):e.renderSlot(t.$slots,"default",{},void 0,void 0,3),t.$slots.suffix?(e.openBlock(),e.createElementBlock("span",ae,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,re))}});function se(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function ie(e,r,o){for(let n=r+o;n>=0&&n<e.length;n+=o){const r=e[n];if(!1!==r.visible){if(t.isViewGroupSchema(r))return!1;if(se(r))return!0}}return!1}const ue={key:0,class:"schemx-actions"},de=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},loading:{type:Boolean,default:void 0},submitter:{type:[Boolean,Object],default:!0},resetter:{type:[Boolean,Object],default:!0},class:{default:""},style:{type:[Boolean,null,String,Object,Array],default:()=>({})},rendererProps:{default:void 0},validatorAdapters:{},defaultRendererType:{},rendererRegistry:{default:void 0},validationRuleRegistry:{default:void 0},onRuleError:{},onFinish:{type:Function,default:void 0},onFinishFailed:{type:Function,default:void 0},onReset:{type:Function,default:void 0},onLoadingChange:{type:Function,default:void 0},onValuesChange:{type:Function,default:void 0},onFieldsChange:{type:Function,default:void 0},lifecycleHooks:{},required:{type:[Boolean,Object]},readonly:{type:Boolean},disabled:{type:Boolean},visible:{type:Boolean,default:!0},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},validationTrigger:{},colon:{type:Boolean},showRequiredMark:{type:Boolean}},emits:["update:modelValue"],setup(r,{expose:o,emit:a}){const l=r,s=a,i=e.useSlots(),u=()=>n.pick(l,t.defaultSchemxConfigKeys),d=e.reactive(u());P({schemaConfig:d});const c=l.form?l.form:C({schemas:l.schemas,schemaConfig:u(),initialValues:Object.keys(l.modelValue).length>0?l.modelValue:l.initialValues,rendererProps:l.rendererProps,rendererRegistry:l.rendererRegistry,defaultRendererType:l.defaultRendererType,validationRuleRegistry:l.validationRuleRegistry,validatorAdapters:l.validatorAdapters,onFinish:e=>{var t;return null==(t=l.onFinish)?void 0:t.call(l,e)},onFinishFailed:e=>{var t;return null==(t=l.onFinishFailed)?void 0:t.call(l,e)},onReset:()=>{var e;null==(e=l.onReset)||e.call(l)},onLoadingChange:e=>{var t;null==(t=l.onLoadingChange)||t.call(l,e)},onValuesChange:(e,t)=>{var r;null==(r=l.onValuesChange)||r.call(l,e,t)},onFieldsChange:(e,t)=>{var r;null==(r=l.onFieldsChange)||r.call(l,e,t)}}),m=void 0!==l.form,p=S(c),v=e.computed(()=>l.loading??p.isLoading()),f=e=>!0===e?{}:e||{},h=e.computed(()=>f(l.submitter)),g=e.computed(()=>f(l.resetter)),y=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),b=e.computed(()=>y(h.value)),x=e.computed(()=>y(g.value)),F=e.computed(()=>!1!==l.submitter&&(void 0!==l.submitter||i.submitter)),w=e.computed(()=>!1!==l.resetter&&(void 0!==l.resetter||i.resetter)),k=e.computed(()=>F.value||w.value),V=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),B=e.computed(()=>v.value||Boolean(b.value.disabled)),R=e.computed(()=>v.value||Boolean(x.value.disabled));let O=!1;e.watch(()=>l.modelValue,e=>{O=!0,p.setFieldsValue(e),O=!1},{deep:!0});const _=()=>p.submit(),j=()=>{p.reset()},A=z(p,e=>e);e.watch(A,e=>{O||s("update:modelValue",e)},{flush:"sync"}),e.watch(()=>l.schemas,e=>{t.isSchemxSchemas(e)||p.setSchemas(e)},{deep:!1,immediate:!!l.form});const E=L(p),N=e=>{const{isFirst:t,isLast:r}=function(e,t){const r=e.findIndex(e=>e.key===t);return-1===r?{found:!1,isFirst:!1,isLast:!1}:se(e[r])?{found:!0,isFirst:!ie(e,r,-1),isLast:!ie(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}(E.value,e.key);return{"schemx-item-wrapper--first":t,"schemx-item-wrapper--last":r}};return e.watch(u,e=>{Object.assign(d,e),p.updateSchemaConfig(e)},{deep:!1,immediate:m}),o({...p,submit:_,reset:j}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["schemx",l.class]),style:e.normalizeStyle(l.style)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E),r=>(e.openBlock(),e.createBlock(e.unref(te),{key:r.key,schema:r,class:e.normalizeClass(N(r))},e.createSlots({_:2},[e.renderList(V.value,(r,o)=>({name:o,fn:e.withCtx(r=>[e.renderSlot(t.$slots,o,e.mergeProps({ref_for:!0},r??{}))])}))]),1032,["schema","class"]))),128)),k.value?(e.openBlock(),e.createElementBlock("div",ue,[w.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(p),loading:v.value,disabled:R.value,reset:j},void 0,void 0,0):w.value?(e.openBlock(),e.createBlock(e.unref(le),e.mergeProps({key:1},x.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:R.value,onClick:j}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(g.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),F.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(p),loading:v.value,disabled:B.value,submit:_},void 0,void 0,2):F.value?(e.openBlock(),e.createBlock(e.unref(le),e.mergeProps({key:3},b.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:v.value,disabled:B.value,onClick:_}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(h.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ce,me;const pe=(ce=de,me={install(e,t={}){i(e,t),e.component("SchemxForm",de)},FormItem:te},Object.assign(ce,me));exports.Button=le,exports.FormGroup=J,exports.FormItem=te,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(r,{attrs:o,slots:n}){const a=function(e){return"function"==typeof e?{api:e}:e}(r.dict),l=a?o.fieldName??R().name:void 0,s=a?A(a,l):null,i=e.computed(()=>({...o,dict:a,options:a?null==s?void 0:s.list.value:o.options,loading:a?null==s?void 0:s.loading.value:o.loading}));return()=>e.h(t,i.value,n)}})},exports.createFieldContext=B,exports.createFormConfigContext=P,exports.createFormContext=S,exports.default=pe,exports.getCoreForm=p,exports.rendererRegistry=b,exports.schemxForm=pe,exports.useDictionary=A,exports.useField=k,exports.useFieldContext=R,exports.useForm=C,exports.useFormConfigContext=N,exports.useFormContext=w,exports.useFormSelector=z,exports.useStableRef=T,exports.useViewSchemas=L,exports.useWatch=O,exports.useWatchAll=function(e,t){return O(e,t)},exports.useWatchField=function(e,t,r){return O(e,t,r)},exports.useWatchFields=_,exports.validationRuleRegistry=x,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("@schemx/core"),r=require("classnames"),n=require("@schemx/core/adapter"),o=require("es-toolkit");function a(t){return e.shallowRef(t)}function l(e){const t=a(e.getSnapshot());return e.subscribe(()=>{t.value=e.getSnapshot()}),t}function s(e,t){const r=e.stateAdapter.field(t),n=e.fieldStates.get(r);if(n)return n;const o=r.getSnapshot(),l=a(o.value),s=a(o.errors),i=a(o.touched),c=a(o.pending);r.subscribe(()=>{const e=r.getSnapshot();var t,n;Object.is(l.value,e.value)||(l.value=e.value),t=s.value,n=e.errors,t.length===n.length&&t.every((e,t)=>e===n[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),c.value!==e.pending&&(c.value=e.pending)});const d={value:l,errors:s,touched:i,pending:c};return e.fieldStates.set(r,d),d}function i(r){const n=e.shallowRef(r.getViewSchemas()),o=e.computed(()=>function(e){const r=new Map,n=e=>{for(const o of e)if(r.set(o.key,o),t.isViewGroupSchema(o))n(o.children);else if(t.isViewDynamicSchema(o))for(const e of o.items)n(e.children)};return n(e),r}(n.value)),a=r.subscribeViewSchemas(e=>{n.value=e});let l=!1;return{schemasByKey:o,viewSchemas:n,dispose:()=>{l||(l=!0,a())}}}const c=new WeakMap,d=new WeakMap;function u(e){const t=function(e){const t=d.get(e);if(t)return t;const r=c.get(e);if(r)return r;const o=function(e){let t,r=0,o=!1;const a=()=>{const t=n.createFormStateAdapter(e),r=l(t.values),o=l(t.touchedFields),a=l(t.pendingFields),s=l(t.loading),i=new Map;let c,d=!1;const u=()=>{d||(d=!0,i.clear(),t.dispose())};return{stateAdapter:t,values:r,touchedFields:o,pendingFields:a,loading:s,fieldStates:i,viewSchemaState:c,dispose:u}},c=()=>{if(o)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=a()),t},d=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(o)return()=>{};c(),r++;let e=!1;return()=>{e||o||(e=!0,r--,0===r&&d())}},m=(e,r)=>{if(!t)return;s(t,e)[r].value},p=e=>{if(t)if(void 0!==e)for(const r of e)s(t,r).value.value;else t.values.value},f=e=>{if(t)switch(e){case"values":t.values.value;break;case"touchedFields":t.touchedFields.value;break;case"pendingFields":t.pendingFields.value;break;case"loading":t.loading.value}},v=()=>c().values,h=e=>s(c(),e),g=()=>{const t=c();return t.viewSchemaState??(t.viewSchemaState=i(e))},y=()=>{o||(o=!0,r=0,d())},b=function(e,t){let r=!1;return{...e,getFieldValue:n=>(r||t.trackField(n,"value"),e.getFieldValue(n)),getFieldErrors:n=>(r||t.trackField(n,"errors"),e.getFieldErrors(n)),isFieldTouched:n=>(r||t.trackField(n,"touched"),e.isFieldTouched(n)),isFieldPending:n=>(r||t.trackField(n,"pending"),e.isFieldPending(n)),getFieldsValue:n=>(r||t.trackFieldsValue(n),e.getFieldsValue(n)),getTouchedFields:()=>(r||t.trackForm("touchedFields"),e.getTouchedFields()),getPendingFields:()=>(r||t.trackForm("pendingFields"),e.getPendingFields()),isLoading:()=>(r||t.trackForm("loading"),e.isLoading()),destroy:()=>{r||(r=!0,t.destroy(),e.destroy())}}}(e,{trackField:m,trackFieldsValue:p,trackForm:f,destroy:y}),x={core:e,instance:b,retain:u,trackField:m,trackFieldsValue:p,trackForm:f,getValuesRef:v,getFieldState:h,getViewSchemaState:g,destroy:y};return x}(e);return c.set(e,o),d.set(o.instance,o),o}(e),r=t.retain();return{runtime:t,release:r}}const m=Symbol("schemx:app-config"),p=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function f(e){if(void 0===e)return;const t=Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:Object.freeze({...t})]);return Object.freeze(Object.fromEntries(t))}function v(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:f(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,presetRuleRegistry:e.presetRuleRegistry})}(t);e.provide(m,r)}const h=Symbol("schemx:config-provider");const g=t.createPresetRuleRegistry(),y=n.createRendererRegistry("input");function b(r,n={}){const o=function(){var t;if(null!==e.getCurrentInstance())return null==(t=e.inject(h,void 0))?void 0:t.value}();return t.mergeSchemxConfig(r,o??{},null===e.getCurrentInstance()?p:e.inject(m,p),n,{rendererRegistry:y,presetRuleRegistry:g})}function x(r={}){const n=b(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:n=[],defaultRendererType:o,rendererRegistry:a,presetRuleRegistry:l}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:o,rendererRegistry:a,presetRuleRegistry:l,validatorAdapters:n}}(r)),o={...r,...n},a=u(t.createForm(o)),l=a.runtime.instance;return e.onScopeDispose(()=>{a.release(),l.destroy()}),l}const S=Symbol("schemx:instance"),C=Symbol("schemx:runtime");function F(t){const{runtime:r,release:n}=u(t);return e.provide(S,r.instance),e.provide(C,r),e.onScopeDispose(n),r.instance}function k(){const t=e.inject(S,null);if(!t)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure createFormContext(form) is called synchronously during setup().");return t}function w(){const t=e.inject(C,null);if(t)return t;const r=u(k());return e.onScopeDispose(r.release),r.runtime}const V=r=>{const n=k(),o=w(),a=o.getFieldState(r);return function(r,n,o,a){const l=t.createField(n,o),s=e.computed(()=>a.errors.value),i=e.computed(()=>a.touched.value),c=e.computed(()=>a.pending.value);return{...l,name:o,value:a.value,errors:s,dirty:i,pending:c,getValue:()=>a.value.value,getErrors:()=>a.errors.value,isTouched:()=>a.touched.value,isPending:()=>a.pending.value,getValues:()=>r.getFieldsValue()}}(n,o.core,r,a)},R=Symbol("schemx:field");function B(t){e.provide(R,t)}function O(){const t=e.inject(R);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}function j(r,n,o){const a=w(),l=t.createWatch(a.core,r,n,o);return e.onUnmounted(l),l}function A(e,t,r){return j(e,t,r)}function _(e){return e instanceof Error?e:new Error(String(e))}const P=(t,r)=>{var n;const o=k(),a=e.shallowRef([]),l=e.ref(!1),s=e.ref(void 0);let i=0,c=null;const d=async()=>{const e=++i;null==c||c.abort();const r=new AbortController;c=r;try{const n=o.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(n))return a.value=[],void(l.value=!1);l.value=!0,s.value=void 0;const c=await(async(e,r)=>{const n=t.retryCount??0,a=t.retryInterval??1e3;let l=new Error("Unknown error");for(let i=0;i<=n;i++)try{if(r.aborted)throw new Error("Dictionary request aborted");return await $(e,o,t.api,r)}catch(s){l=_(s),i<n&&await E(a,r)}throw l})(n,r.signal);if(e!==i||r.signal.aborted)return;const d=await(async e=>{if("function"==typeof(null==t?void 0:t.formatter))return await t.formatter(e,o);if(!Array.isArray(e))throw new Error("[schemx] Dictionary api must return an array when formatter is not provided.");return e})(c);if(e!==i||r.signal.aborted)return;a.value=d,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(d,o),l.value=!1}catch(n){if(r.signal.aborted||e!==i)return;const c=_(n);s.value=c,a.value=[],l.value=!1,"function"==typeof t.onError&&t.onError(c,o)}finally{c===r&&(c=null)}};(null==(n=t.dependsOn)?void 0:n.length)&&A(t.dependsOn,(e,n)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,o),t.resetOnDepsChange&&r&&o.setFieldValue(r,void 0),d()},{inequality:!0});const u=t.immediate??!0;return e.onMounted(()=>{u&&d()}),e.onScopeDispose(()=>{i+=1,null==c||c.abort(),c=null}),{list:a,loading:l,error:s,loadDict:d,refresh:()=>d(),mutate:e=>{a.value=e}}};function E(e,t){return new Promise((r,n)=>{let o=()=>{};const a=()=>{clearTimeout(l),t.removeEventListener("abort",o)},l=setTimeout(()=>{a(),r()},e);o=()=>{a(),n(new Error("Dictionary request aborted"))},t.aborted?o():t.addEventListener("abort",o,{once:!0})})}function $(e,t,r,n){return r.length>=3?r(e,t,n):r(e,t)}const N=Symbol("schemx:form-config"),T=t=>{e.provide(N,t)};function q(){const t=e.inject(N);if(!t)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure createFormConfigContext(props) is called synchronously during setup().");return t}function D(t){const r=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&r.every(r=>e[r]===t[r])})(r.value,e)||(r.value=e)}),r}function L(t){const r=u(t),n=r.runtime.getViewSchemaState();return e.onScopeDispose(r.release),n.viewSchemas}function z(t,r,n={}){const o=u(t),a=o.runtime.getValuesRef(),l=e.shallowRef(r(a.value)),s=n.equals??Object.is,i=e.watch(a,e=>{const t=r(e);s(l.value,t)||(l.value=t)},{flush:n.flush??"sync"});return e.onScopeDispose(()=>{i(),o.release()}),e.readonly(l)}function W(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function M(e,t){if(!t)return!1;return(Array.isArray(t)?t:[t]).some(t=>function(e){return{onBlur:"blur",onChange:"change",onSubmit:"submit",blur:"blur",change:"change",submit:"submit"}[e]??"submit"}(t)===e)}const G=e=>/[A-Z]/.test(e),I=e=>e.includes("-"),H=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),K=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),U=(e,t)=>{if(e[t])return e[t];const r=G(t)?H(t):I(t)?K(t):void 0;return r&&e[r]?e[r]:void 0},Z=(e,t)=>{const r={},n=(o=String(e),(I(o)?K(o):o)+":");var o;const a=(e=>G(e)?H(e):e)(String(e))+":";for(const[l,s]of Object.entries(t))l.startsWith(n)?r[l.slice(n.length)]=s:l.startsWith(a)&&a!==n&&(r[l.slice(a.length)]=s);return r};function J(e,t){const r=e.findIndex(e=>e.key===t);if(-1===r)return{found:!1,isFirst:!1,isLast:!1};return X(e[r])?{found:!0,isFirst:!Y(e,r,-1),isLast:!Y(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}function Q(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function X(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function Y(e,r,n){for(let o=r+n;o>=0&&o<e.length;o+=n){const r=e[o];if(!1!==r.visible){if(t.isViewGroupSchema(r))return!1;if(X(r))return!0}}return!1}const ee=e.defineComponent({name:"SchemxField",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0}},setup(n,{attrs:o,slots:a}){const l=k(),s=e.computed(()=>n.schema),i=function(t,r){const n=u(t),o=n.runtime.getViewSchemaState(),a=e.computed(()=>o.schemasByKey.value.get(r()));return e.onScopeDispose(n.release),a}(l,()=>s.value.key),c=e.computed(()=>i.value&&t.isSchemxViewFieldSchema(i.value)?i.value:s.value),d=q(),m=V(c.value.name);B(m);const p=e.computed(()=>{return e=c.value.validationTrigger,t=d.schemaConfig.validationTrigger,r="onChange",W(e)?e:W(t)?t:r;var e,t,r}),f=e.computed(()=>{const e=!1!==c.value.visible&&!c.value.readonly&&!c.value.disabled,t=c.value.rules,r=Array.isArray(t)?(null==t?void 0:t.length)>0:!!c.value.rules;return e&&(Boolean(c.value.required)||r)}),v=e=>{var t,r;m.setValue(e),null==(r=null==(t=c.value.componentProps)?void 0:t.onChange)||r.call(t,e),f.value&&M("change",p.value)&&m.validate()},h=e=>{var t,r;null==(r=null==(t=c.value.componentProps)?void 0:t.onBlur)||r.call(t,e),f.value&&M("blur",p.value)&&m.validate()},g=e=>{m.setValue(e)},y=D(()=>({...c.value.componentProps??{},value:m.value.value,onChange:v,onBlur:h,"onUpdate:value":g})),{createSlotProps:b,renderAfter:x,renderBefore:S,renderContent:C,renderError:F,renderLabel:w}=function(t){const{schemaRef:r,field:n,form:o,formContext:a,componentProps:l,slots:s}=t,i=(e={})=>({schema:r.value,componentProps:l.value,value:n.value.value,field:n,form:o,...e}),c=e=>{const t=U(s,`${Q(r.value.name)}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>c("After"),renderBefore:()=>c("Before"),renderContent:()=>{const t=o.getRenderer(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const n=Z(Q(r.value.name),s),a=e.h(t,l.value,n),c=U(s,`${Q(r.value.name)}Content`);return c?c(i({columnElement:a})):e.createVNode("div",{class:"schemx-field__control"},[a])},renderError:()=>{const t=U(s,`${Q(r.value.name)}Error`);return t?t(i({errors:n.errors.value})):0===n.errors.value.length?null:e.createVNode("div",{class:"schemx-field__error"},[n.errors.value[0]])},renderLabel:()=>{const t=U(s,`${Q(r.value.name)}Label`);if(t)return t(i());const n=r.value.labelAlign||a.schemaConfig.labelAlign,o=r.value.labelWidth||a.schemaConfig.labelWidth,l=r.value.colon??a.schemaConfig.colon;return e.createVNode("label",{class:"schemx-field__label",style:{width:o,textAlign:n}},[!(r.value.showRequiredMark??Boolean(r.value.required))||r.value.disabled||r.value.readonly?null:e.createVNode("span",{class:"schemx-field__required"},[e.createTextVNode("*")]),e.createVNode("span",{class:"schemx-field__label-text"},[r.value.label,l?":":""])])}}}({schemaRef:c,field:m,form:l,formContext:d,componentProps:y,slots:a});return()=>{if(!1===c.value.visible)return null;const t=U(a,Q(c.value.name)),l=c.value.labelPosition||d.schemaConfig.labelPosition,s=t?t(b()):e.createVNode("div",{class:r("schemx-field",`schemx-field--label-${l}`,{"is-readonly":c.value.readonly,"is-disabled":c.value.disabled})},[w(),e.createVNode("div",{class:"schemx-field__content"},[S(),C(),x(),F()])]);return e.createVNode("div",e.mergeProps(o,{class:r("schemx-field-wrapper",n.class,o.class,c.value.class),style:[o.style,n.style,c.value.style]}),[s])}}}),te=["aria-busy","data-loading","disabled"],re={key:0,class:"schemx-button__prefix"},ne={key:1,class:"schemx-button__loading",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},oe={key:4,class:"schemx-button__suffix"},ae=e.defineComponent({name:"SchemxButton",inheritAttrs:!1,__name:"index",props:{loading:{type:Boolean,default:!1},loadingText:{default:void 0},disabled:{type:Boolean,default:!1},size:{default:"medium"}},setup(t){const r=t,n=e.useAttrs(),o=e.computed(()=>r.disabled||r.loading),a=e.computed(()=>["schemx-button",`schemx-button--${r.size}`]);return(t,l)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(n),{class:a.value,"aria-busy":r.loading||void 0,"data-loading":r.loading||void 0,disabled:o.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",re,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ne,[...l[0]||(l[0]=[e.createStaticVNode('<path d="M12 2v4"></path><path d="m16.2 7.8 2.9-2.9"></path><path d="M18 12h4"></path><path d="m16.2 16.2 2.9 2.9"></path><path d="M12 18v4"></path><path d="m4.9 19.1 2.9-2.9"></path><path d="M2 12h4"></path><path d="m4.9 4.9 2.9 2.9"></path>',8)])])):e.createCommentVNode("",!0),r.loading&&r.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(r.loadingText),1)],64)):e.renderSlot(t.$slots,"default",{},void 0,void 0,3),t.$slots.suffix?(e.openBlock(),e.createElementBlock("span",oe,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,te))}});const le=e.defineComponent({name:"SchemxGroup",inheritAttrs:!1,props:{schema:{type:Object,required:!0},class:{type:[String,Object,Array,Boolean],required:!1,default:void 0},style:{type:[String,Object,Array],required:!1,default:void 0}},setup(n,{attrs:o,slots:a}){var l;const s=e.ref(Boolean(n.schema.defaultCollapsed)),i=e.computed(()=>n.schema.collapsed??s.value),c=(null==(l=e.getCurrentInstance())?void 0:l.uid)??0;e.watch(()=>n.schema.collapsed,(e,t)=>{void 0!==e?s.value=e:void 0!==t&&(s.value=t)});const d=()=>{var e,t;if(!n.schema.collapsible||n.schema.disabled)return;const r=!i.value;void 0===n.schema.collapsed&&(s.value=r),null==(t=(e=n.schema).onCollapsedChange)||t.call(e,r)};return()=>{var l;const s=n.schema;if(!1===s.visible)return null;const u=Boolean(s.collapsible),m=i.value,p=s.destroyOnCollapse??!0,f=`schemx-group-${(null==(l=s.debug)?void 0:l.runtimeNodeId)??`local-${c}`}-${v=s.key,String(v).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var v;const h=`${f}-header`,g=`${f}-body`,y=r=>t.isViewDynamicSchema(r)?!1===r.visible?null:r.items.map(e=>e.children.map(e=>y(e))):t.isViewGroupSchema(r)?e.createVNode(le,{key:r.key,schema:r,class:n.class,style:n.style},a):e.createVNode(ee,{key:`${r.key}:${Q(r.name)}`,schema:r},a),{hasHeader:b,renderBodyContent:x,renderHeaderContent:S}=function(t){const{schema:n,collapsed:o,collapsible:a,disabled:l,readonly:s,toggle:i,slots:c,renderChildren:d}=t,u=String(n.key),m=U(c,`${u}Header`),p=U(c,`${u}Label`),f=U(c,`${u}Content`),v={schema:n,collapsed:o,collapsible:a,disabled:l,readonly:s,toggle:i};return{hasHeader:Boolean(n.label||m||p),renderBodyContent:()=>f?f(v):d(),renderHeaderContent:()=>{if(m)return m(v);const t=p?p(v):e.createVNode("span",{class:"schemx-group__title"},[n.label]);return a?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!o})},null)]):t}}}({schema:s,collapsed:m,collapsible:u,disabled:Boolean(s.disabled),readonly:Boolean(s.readonly),toggle:d,slots:a,renderChildren:()=>s.children.map(y)}),C=e.createVNode("div",{id:g,role:"group","aria-labelledby":s.label?h:void 0,"aria-hidden":m||void 0,class:"schemx-group__body",style:!p&&m?{display:"none"}:void 0},[x()]);return e.createVNode("div",e.mergeProps(o,{class:r("schemx-group-wrapper",n.class,o.class,s.class),"data-key":s.key,"aria-disabled":s.disabled||void 0,style:[o.style,n.style,s.style]}),[e.createVNode("div",{class:r("schemx-group",{"schemx-group--collapsed":m,"is-readonly":s.readonly,"is-disabled":s.disabled})},[b&&e.createVNode("div",{id:h,role:u?"button":void 0,tabindex:u?s.disabled?-1:0:void 0,"aria-expanded":u?!m:void 0,"aria-controls":u?g:void 0,"aria-disabled":u&&s.disabled||void 0,class:r("schemx-group__header",{"schemx-group__header--clickable":u&&!s.disabled}),onClick:d,onKeydown:e=>{s.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d())}},[S()]),p?!m&&C:C])])}}}),se=le,ie=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},viewSchemas:{type:Array,required:!0}},setup(r,{slots:n}){const o=e=>`${e.key}:${Q(e.name)}`,a=e=>{const{isFirst:t,isLast:n}=J(r.viewSchemas,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":n}},l=r=>{if(t.isViewGroupSchema(r))return e.createVNode(se,{key:r.key,schema:r},n);const l=r;return e.createVNode(ee,{key:o(l),schema:l,class:a(l)},n)};return()=>!1===r.schema.visible?null:r.schema.items.map(t=>e.createVNode(e.Fragment,{key:t.key},[t.children.map(l)]))}}),ce={key:0,class:"schemx-actions"},de=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},fieldRules:{default:void 0},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},loading:{type:Boolean,default:void 0},submitter:{type:[Boolean,Object],default:!0},resetter:{type:[Boolean,Object],default:!0},class:{type:[Boolean,null,String,Object,Array],default:""},style:{type:[Boolean,null,String,Object,Array],default:()=>({})},rendererProps:{default:void 0},validatorAdapters:{},defaultRendererType:{},rendererRegistry:{default:void 0},presetRuleRegistry:{default:void 0},onRuleError:{},onFinish:{type:Function,default:void 0},onFinishFailed:{type:Function,default:void 0},onReset:{type:Function,default:void 0},onLoadingChange:{type:Function,default:void 0},onValuesChange:{type:Function,default:void 0},onFieldsChange:{type:Function,default:void 0},lifecycleHooks:{},schedulerOptions:{default:void 0},validationConcurrency:{default:void 0},required:{type:[Boolean,Object]},readonly:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},visible:{type:Boolean,default:void 0},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},validationTrigger:{default:void 0},colon:{type:Boolean,default:void 0},showRequiredMark:{type:Boolean,default:void 0}},emits:["update:modelValue"],setup(r,{expose:n,emit:a}){const l=r,s=a,i=e.useSlots(),c=()=>{const e=o.pick(l,t.defaultSchemxConfigKeys);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))},d=void 0!==l.form,u={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},m=(d?t.mergeSchemxConfig({schemaConfig:c()},u).schemaConfig:b({schemaConfig:c()},u).schemaConfig)??{},p=e.reactive(m);T({schemaConfig:p});const f=F(l.form?l.form:x({schemas:l.schemas,schemaConfig:m,initialValues:Object.keys(l.modelValue).length>0?l.modelValue:l.initialValues,rendererProps:l.rendererProps,rendererRegistry:l.rendererRegistry,defaultRendererType:l.defaultRendererType,presetRuleRegistry:l.presetRuleRegistry,fieldRules:l.fieldRules,validatorAdapters:l.validatorAdapters,schedulerOptions:l.schedulerOptions,validationConcurrency:l.validationConcurrency,onFinish:e=>{var t;return null==(t=l.onFinish)?void 0:t.call(l,e)},onFinishFailed:e=>{var t;return null==(t=l.onFinishFailed)?void 0:t.call(l,e)},onReset:()=>{var e;null==(e=l.onReset)||e.call(l)},onLoadingChange:e=>{var t;null==(t=l.onLoadingChange)||t.call(l,e)},onValuesChange:(e,t)=>{var r;null==(r=l.onValuesChange)||r.call(l,e,t)},onFieldsChange:(e,t)=>{var r;null==(r=l.onFieldsChange)||r.call(l,e,t)}})),v=e.computed(()=>l.loading??f.isLoading()),h=e.computed(()=>["schemx",l.class]),g=e.computed(()=>l.style),y=e=>!0===e?{}:e||{},S=e.computed(()=>y(l.submitter)),C=e.computed(()=>y(l.resetter)),k=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),w=e.computed(()=>k(S.value)),V=e.computed(()=>k(C.value)),R=e.computed(()=>!1!==l.submitter&&(void 0!==l.submitter||i.submitter)),B=e.computed(()=>!1!==l.resetter&&(void 0!==l.resetter||i.resetter)),O=e.computed(()=>R.value||B.value),j=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),A=e.computed(()=>v.value||Boolean(w.value.disabled)),_=e.computed(()=>v.value||Boolean(V.value.disabled));let P=!1;const E=new Set;e.watch(()=>l.modelValue,t=>{if(!E.delete(e.toRaw(t))){P=!0;try{f.setFieldsValue(t)}finally{P=!1}}},{deep:!0});const $=()=>f.submit(),N=()=>{f.reset()},q=z(f,e=>e);e.watch(q,t=>{P||(t=>{const r=e.toRaw(t);E.add(r),s("update:modelValue",t),e.nextTick(()=>{E.delete(r)})})(t)},{flush:"sync"}),e.watch(()=>l.schemas,e=>{t.isSchemxSchemas(e)||f.setSchemas(e)},{deep:!1,immediate:!!l.form});const D=L(f),W=e=>`${e.key}:${Q(e.name)}`,M=e=>{const{isFirst:t,isLast:r}=J(D.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":r}};e.watch(c,e=>{Object.assign(p,e),f.updateSchemaConfig(e)},{deep:!1,immediate:d});return n({...f,submit:$,reset:N}),(r,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(h.value),style:e.normalizeStyle(g.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(D),n=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:n.key},[e.unref(t.isViewGroupSchema)(n)?(e.openBlock(),e.createBlock(e.unref(se),{key:0,schema:n},e.createSlots({_:2},[e.renderList(j.value,(t,n)=>({name:n,fn:e.withCtx(t=>[e.renderSlot(r.$slots,n,e.mergeProps({ref_for:!0},t??{}))])}))]),1032,["schema"])):e.unref(t.isViewDynamicSchema)(n)?(e.openBlock(),e.createBlock(e.unref(ie),{key:1,schema:n,"view-schemas":e.unref(D)},e.createSlots({_:2},[e.renderList(j.value,(t,n)=>({name:n,fn:e.withCtx(t=>[e.renderSlot(r.$slots,n,e.mergeProps({ref_for:!0},t??{}))])}))]),1032,["schema","view-schemas"])):(e.openBlock(),e.createBlock(e.unref(ee),{key:W(n),schema:n,class:e.normalizeClass(M(n))},e.createSlots({_:2},[e.renderList(j.value,(t,n)=>({name:n,fn:e.withCtx(t=>[e.renderSlot(r.$slots,n,e.mergeProps({ref_for:!0},t??{}))])}))]),1032,["schema","class"]))],64))),128)),O.value?(e.openBlock(),e.createElementBlock("div",ce,[B.value&&e.unref(i).resetter?e.renderSlot(r.$slots,"resetter",{form:e.unref(f),loading:v.value,disabled:_.value,reset:N},void 0,void 0,0):B.value?(e.openBlock(),e.createBlock(e.unref(ae),e.mergeProps({key:1},V.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:_.value,onClick:N}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),R.value&&e.unref(i).submitter?e.renderSlot(r.$slots,"submitter",{form:e.unref(f),loading:v.value,disabled:A.value,submit:$},void 0,void 0,2):R.value?(e.openBlock(),e.createBlock(e.unref(ae),e.mergeProps({key:3},w.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:v.value,disabled:A.value,onClick:$}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ue,me;const pe=(ue=de,me={install(e,t={}){v(e,t),e.component("SchemxForm",de)},Field:ee},Object.assign(ue,me));const fe=e.defineComponent({name:"SchemxConfigProvider",inheritAttrs:!1,props:{schemaConfig:{type:Object,default:void 0},rendererProps:{type:Object,default:void 0},validatorAdapters:{type:Array,default:void 0},defaultRendererType:{type:String,default:void 0},rendererRegistry:{type:Object,default:void 0},presetRuleRegistry:{type:Object,default:void 0}},setup:(r,{slots:n})=>(function(r){const n=e.inject(h,void 0),o=e.computed(()=>t.mergeSchemxConfig(r.value,(null==n?void 0:n.value)??{}));e.provide(h,o)}(e.computed(()=>({schemaConfig:r.schemaConfig,rendererProps:r.rendererProps,validatorAdapters:r.validatorAdapters,defaultRendererType:r.defaultRendererType,rendererRegistry:r.rendererRegistry,presetRuleRegistry:r.presetRuleRegistry}))),()=>{var e;return null==(e=n.default)?void 0:e.call(n)})});exports.ConfigProvider=fe,exports.Field=ee,exports.Group=se,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(r,{attrs:n,slots:o}){const a=function(e){return"function"==typeof e?{api:e}:e}(r.dict),l=a?n.fieldName??O().name:void 0,s=a?P(a,l):null,i=e.computed(()=>({...n,dict:a,options:a?null==s?void 0:s.list.value:n.options,loading:a?null==s?void 0:s.loading.value:n.loading}));return()=>e.h(t,i.value,o)}})},exports.createFieldContext=B,exports.createFormConfigContext=T,exports.createFormContext=F,exports.default=pe,exports.presetRuleRegistry=g,exports.rendererRegistry=y,exports.schemxForm=pe,exports.useDictionary=P,exports.useField=V,exports.useFieldContext=O,exports.useForm=x,exports.useFormConfigContext=q,exports.useFormContext=k,exports.useFormSelector=z,exports.useStableRef=D,exports.useViewSchemas=L,exports.useWatch=j,exports.useWatchAll=function(e,t){return j(e,t)},exports.useWatchField=function(e,t,r){return j(e,t,r)},exports.useWatchFields=A,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
2
2
  //# sourceMappingURL=index.cjs.map