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

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 (38) hide show
  1. package/README.md +42 -38
  2. package/dist/analyze.html +1 -1
  3. package/dist/components/Col/index.d.ts +31 -0
  4. package/dist/components/Col/index.d.ts.map +1 -0
  5. package/dist/components/ConfigProvider/index.d.ts +13 -3
  6. package/dist/components/ConfigProvider/index.d.ts.map +1 -1
  7. package/dist/components/Dynamic/index.d.ts +17 -1
  8. package/dist/components/Dynamic/index.d.ts.map +1 -1
  9. package/dist/components/Group/index.d.ts +16 -1
  10. package/dist/components/Group/index.d.ts.map +1 -1
  11. package/dist/components/SchemaList/index.d.ts +58 -0
  12. package/dist/components/SchemaList/index.d.ts.map +1 -0
  13. package/dist/components/Wrapper/index.vue.d.ts +29 -0
  14. package/dist/components/Wrapper/index.vue.d.ts.map +1 -0
  15. package/dist/config/appConfig.d.ts +3 -3
  16. package/dist/config/appConfig.d.ts.map +1 -1
  17. package/dist/config/index.d.ts +1 -1
  18. package/dist/config/index.d.ts.map +1 -1
  19. package/dist/config/providerConfig.d.ts +10 -3
  20. package/dist/config/providerConfig.d.ts.map +1 -1
  21. package/dist/form.d.ts +2 -2
  22. package/dist/form.d.ts.map +1 -1
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.mjs +324 -78
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/style.css +1 -1
  30. package/dist/types/form.d.ts +3 -2
  31. package/dist/types/form.d.ts.map +1 -1
  32. package/dist/types/index.d.ts +1 -0
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist/types/layout.d.ts +26 -0
  35. package/dist/types/layout.d.ts.map +1 -0
  36. package/dist/utils/colProvider.d.ts +20 -0
  37. package/dist/utils/colProvider.d.ts.map +1 -0
  38. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
@@ -1,15 +1,22 @@
1
1
  import { ComputedRef } from 'vue';
2
- import { SchemxConfig } from '@schemx/core';
2
+ import { SchemxVueConfig } from '../types';
3
3
  /**
4
4
  * 向当前组件的后代提供合并后的组件树级配置。
5
5
  *
6
6
  * @param config - 当前 Provider 的配置快照。
7
7
  */
8
- export declare function provideSchemxConfigProvider(config: ComputedRef<SchemxConfig>): void;
8
+ export declare function provideSchemxConfigProvider(config: ComputedRef<SchemxVueConfig>): void;
9
9
  /**
10
10
  * 读取最近祖先 ConfigProvider 的配置。
11
11
  *
12
12
  * @returns 最近 Provider 的配置;不在组件 setup 上下文中时返回 undefined。
13
13
  */
14
- export declare function getSchemxConfigProvider(): SchemxConfig | undefined;
14
+ export declare function getSchemxConfigProvider(): SchemxVueConfig | undefined;
15
+ /**
16
+ * 读取最近 Provider 的响应式配置引用。
17
+ *
18
+ * Form 需要保留该引用,才能在 Provider 的展示配置变化后同步更新已有实例。
19
+ * 该入口仅供 Vue 适配层内部使用;实例级 Registry 和 adapter 仍在创建时解析。
20
+ */
21
+ export declare function getSchemxConfigProviderRef(): ComputedRef<SchemxVueConfig> | undefined;
15
22
  //# sourceMappingURL=providerConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerConfig.d.ts","sourceRoot":"","sources":["../../src/config/providerConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,KAAK,CAAA;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAOhD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,CAQnF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,YAAY,GAAG,SAAS,CAMlE"}
1
+ {"version":3,"file":"providerConfig.d.ts","sourceRoot":"","sources":["../../src/config/providerConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,KAAK,CAAA;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAO/C;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,GAAG,IAAI,CAatF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,eAAe,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS,CAMrF"}
package/dist/form.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { App } from 'vue';
2
2
  import { default as Field } from './components/Field';
3
3
  import { default as SchemxForm } from './formRuntime.js';
4
- import { SchemxConfig } from '@schemx/core';
4
+ import { SchemxVueConfig } from './types/layout';
5
5
  /**
6
6
  * SchemxForm 插件安装选项
7
7
  *
@@ -17,7 +17,7 @@ import { SchemxConfig } from '@schemx/core';
17
17
  * })
18
18
  * ```
19
19
  */
20
- export interface SchemxInstallOptions extends SchemxConfig {
20
+ export interface SchemxInstallOptions extends SchemxVueConfig {
21
21
  }
22
22
  /**
23
23
  * 为组件挂载静态属性并保留原始类型
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,MAAM,oBAAoB,CAAA;AAEtC,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;CAAG;AAE7D;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GACK,UAAU,GAAG,OAAO,CAC1D;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,UAAU,GAAG;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,KAAK,EAAE,OAAO,KAAK,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,gBAAgB,EAQL,gBAAgB,CAAA;AAEjC,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,MAAM,oBAAoB,CAAA;AAEtC,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;CAAG;AAEhE;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GACK,UAAU,GAAG,OAAO,CAC1D;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,UAAU,GAAG;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,KAAK,EAAE,OAAO,KAAK,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,gBAAgB,EAQL,gBAAgB,CAAA;AAEjC,eAAe,gBAAgB,CAAA"}
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"),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]})});
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");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),o=e.fieldStates.get(r);if(o)return o;const n=r.getSnapshot(),l=a(n.value),s=a(n.errors),i=a(n.touched),d=a(n.pending);r.subscribe(()=>{const e=r.getSnapshot();var t,o;Object.is(l.value,e.value)||(l.value=e.value),t=s.value,o=e.errors,t.length===o.length&&t.every((e,t)=>e===o[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),d.value!==e.pending&&(d.value=e.pending)});const c={value:l,errors:s,touched:i,pending:d};return e.fieldStates.set(r,c),c}function i(r){const o=e.shallowRef(r.getViewSchemas()),n=e.computed(()=>function(e){const r=new Map,o=e=>{for(const n of e)if(r.set(n.key,n),t.isViewGroupSchema(n))o(n.children);else if(t.isViewDynamicSchema(n))for(const e of n.items)o(e.children)};return o(e),r}(o.value)),a=r.subscribeViewSchemas(e=>{o.value=e});let l=!1;return{schemasByKey:n,viewSchemas:o,dispose:()=>{l||(l=!0,a())}}}const d=new WeakMap,c=new WeakMap;function u(e){const t=function(e){const t=c.get(e);if(t)return t;const r=d.get(e);if(r)return r;const n=function(e){let t,r=0,n=!1;const a=()=>{const t=o.createFormStateAdapter(e),r=l(t.values),n=l(t.touchedFields),a=l(t.pendingFields),s=l(t.loading),i=new Map;let d,c=!1;const u=()=>{c||(c=!0,i.clear(),t.dispose())};return{stateAdapter:t,values:r,touchedFields:n,pendingFields:a,loading:s,fieldStates:i,viewSchemaState:d,dispose:u}},d=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=a()),t},c=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};d(),r++;let e=!1;return()=>{e||n||(e=!0,r--,0===r&&c())}},p=(e,r)=>{if(!t)return;s(t,e)[r].value},m=e=>{if(t)if(void 0!==e)for(const r of e)s(t,r).value.value;else t.values.value},v=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}},f=()=>d().values,h=e=>s(d(),e),y=()=>{const t=d();return t.viewSchemaState??(t.viewSchemaState=i(e))},g=()=>{n||(n=!0,r=0,c())},b=function(e,t){let r=!1;return{...e,getFieldValue:o=>(r||t.trackField(o,"value"),e.getFieldValue(o)),getFieldErrors:o=>(r||t.trackField(o,"errors"),e.getFieldErrors(o)),isFieldTouched:o=>(r||t.trackField(o,"touched"),e.isFieldTouched(o)),isFieldPending:o=>(r||t.trackField(o,"pending"),e.isFieldPending(o)),getFieldsValue:o=>(r||t.trackFieldsValue(o),e.getFieldsValue(o)),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:p,trackFieldsValue:m,trackForm:v,destroy:g}),x={core:e,instance:b,retain:u,trackField:p,trackFieldsValue:m,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:y,destroy:g};return x}(e);return d.set(e,n),c.set(n.instance,n),n}(e),r=t.retain();return{runtime:t,release:r}}const p=Symbol("schemx:app-config"),m=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function v(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 f(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:v(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,presetRuleRegistry:e.presetRuleRegistry,colComponent:e.colComponent})}(t);e.provide(p,r)}function h(){return null===e.getCurrentInstance()?m:e.inject(p,m)}const y=Symbol("schemx:config-provider");function g(){if(null!==e.getCurrentInstance())return e.inject(y,void 0)}const b=t.createPresetRuleRegistry(),x=o.createRendererRegistry("input");function C(e,r={}){const o=null==(n=g())?void 0:n.value;var n;return t.mergeSchemxConfig(e,o??{},h(),r,{rendererRegistry:x,presetRuleRegistry:b})}function S(r={}){const o=C(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:o=[],defaultRendererType:n,rendererRegistry:a,presetRuleRegistry:l}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:n,rendererRegistry:a,presetRuleRegistry:l,validatorAdapters:o}}(r)),n={...r,...o},a=u(t.createForm(n)),l=a.runtime.instance;return e.onScopeDispose(()=>{a.release(),l.destroy()}),l}const w=Symbol("schemx:instance"),F=Symbol("schemx:runtime");function k(t){const{runtime:r,release:o}=u(t);return e.provide(w,r.instance),e.provide(F,r),e.onScopeDispose(o),r.instance}function V(){const t=e.inject(w,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 R(){const t=e.inject(F,null);if(t)return t;const r=u(V());return e.onScopeDispose(r.release),r.runtime}const O=r=>{const o=V(),n=R(),a=n.getFieldState(r);return function(r,o,n,a){const l=t.createField(o,n),s=e.computed(()=>a.errors.value),i=e.computed(()=>a.touched.value),d=e.computed(()=>a.pending.value);return{...l,name:n,value:a.value,errors:s,dirty:i,pending:d,getValue:()=>a.value.value,getErrors:()=>a.errors.value,isTouched:()=>a.touched.value,isPending:()=>a.pending.value,getValues:()=>r.getFieldsValue()}}(o,n.core,r,a)},j=Symbol("schemx:field");function A(t){e.provide(j,t)}function B(){const t=e.inject(j);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}function P(r,o,n){const a=R(),l=t.createWatch(a.core,r,o,n);return e.onUnmounted(l),l}function _(e,t,r){return P(e,t,r)}function E(e){return e instanceof Error?e:new Error(String(e))}const N=(t,r)=>{var o;const n=V(),a=e.shallowRef([]),l=e.ref(!1),s=e.ref(void 0);let i=0,d=null;const c=async()=>{const e=++i;null==d||d.abort();const r=new AbortController;d=r;try{const o=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(o))return a.value=[],void(l.value=!1);l.value=!0,s.value=void 0;const d=await(async(e,r)=>{const o=t.retryCount??0,a=t.retryInterval??1e3;let l=new Error("Unknown error");for(let i=0;i<=o;i++)try{if(r.aborted)throw new Error("Dictionary request aborted");return await T(e,n,t.api,r)}catch(s){l=E(s),i<o&&await $(a,r)}throw l})(o,r.signal);if(e!==i||r.signal.aborted)return;const c=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})(d);if(e!==i||r.signal.aborted)return;a.value=c,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(c,n),l.value=!1}catch(o){if(r.signal.aborted||e!==i)return;const d=E(o);s.value=d,a.value=[],l.value=!1,"function"==typeof t.onError&&t.onError(d,n)}finally{d===r&&(d=null)}};(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),c()},{inequality:!0});const u=t.immediate??!0;return e.onMounted(()=>{u&&c()}),e.onScopeDispose(()=>{i+=1,null==d||d.abort(),d=null}),{list:a,loading:l,error:s,loadDict:c,refresh:()=>c(),mutate:e=>{a.value=e}}};function $(e,t){return new Promise((r,o)=>{let n=()=>{};const a=()=>{clearTimeout(l),t.removeEventListener("abort",n)},l=setTimeout(()=>{a(),r()},e);n=()=>{a(),o(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function T(e,t,r,o){return r.length>=3?r(e,t,o):r(e,t)}const q=Symbol("schemx:form-config"),D=t=>{e.provide(q,t)};function L(){const t=e.inject(q);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 W(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}function z(t){const r=u(t),o=r.runtime.getViewSchemaState();return e.onScopeDispose(r.release),o.viewSchemas}function M(t,r,o={}){const n=u(t),a=n.runtime.getValuesRef(),l=e.shallowRef(r(a.value)),s=o.equals??Object.is,i=e.watch(a,e=>{const t=r(e);s(l.value,t)||(l.value=t)},{flush:o.flush??"sync"});return e.onScopeDispose(()=>{i(),n.release()}),e.readonly(l)}function G(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function I(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 H=e=>/[A-Z]/.test(e),K=e=>e.includes("-"),U=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),Z=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),J=(e,t)=>{if(e[t])return e[t];const r=H(t)?U(t):K(t)?Z(t):void 0;return r&&e[r]?e[r]:void 0},Q=(e,t)=>{const r={},o=(n=String(e),(K(n)?Z(n):n)+":");var n;const a=(e=>H(e)?U(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};function X(e,t){const r=e.findIndex(e=>e.key===t);if(-1===r)return{found:!1,isFirst:!1,isLast:!1};return ee(e[r])?{found:!0,isFirst:!te(e,r,-1),isLast:!te(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}function Y(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function ee(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function te(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(ee(r))return!0}}return!1}const re=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(o,{attrs:n,slots:a}){const l=V(),s=e.computed(()=>o.schema),i=function(t,r){const o=u(t),n=o.runtime.getViewSchemaState(),a=e.computed(()=>n.schemasByKey.value.get(r()));return e.onScopeDispose(o.release),a}(l,()=>s.value.key),d=e.computed(()=>i.value&&t.isSchemxViewFieldSchema(i.value)?i.value:s.value),c=L(),p=O(d.value.name);A(p);const m=e.computed(()=>{return e=d.value.validationTrigger,t=c.schemaConfig.validationTrigger,r="onChange",G(e)?e:G(t)?t:r;var e,t,r}),v=e.computed(()=>{const e=!1!==d.value.visible&&!d.value.readonly&&!d.value.disabled,t=d.value.rules,r=Array.isArray(t)?(null==t?void 0:t.length)>0:!!d.value.rules;return e&&(Boolean(d.value.required)||r)}),f=e=>{var t,r;p.setValue(e),null==(r=null==(t=d.value.componentProps)?void 0:t.onChange)||r.call(t,e),v.value&&I("change",m.value)&&p.validate()},h=e=>{var t,r;null==(r=null==(t=d.value.componentProps)?void 0:t.onBlur)||r.call(t,e),v.value&&I("blur",m.value)&&p.validate()},y=e=>{p.setValue(e)},g=W(()=>({...d.value.componentProps??{},value:p.value.value,onChange:f,onBlur:h,"onUpdate:value":y})),{createSlotProps:b,renderAfter:x,renderBefore:C,renderContent:S,renderError:w,renderLabel:F}=function(t){const{schemaRef:r,field:o,form:n,formContext:a,componentProps:l,slots:s}=t,i=(e={})=>({schema:r.value,componentProps:l.value,value:o.value.value,field:o,form:n,...e}),d=e=>{const t=J(s,`${Y(r.value.name)}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>d("After"),renderBefore:()=>d("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=Q(Y(r.value.name),s),a=e.h(t,l.value,o),d=J(s,`${Y(r.value.name)}Content`);return d?d(i({columnElement:a})):e.createVNode("div",{class:"schemx-field__control"},[a])},renderError:()=>{const t=J(s,`${Y(r.value.name)}Error`);return t?t(i({errors:o.errors.value})):0===o.errors.value.length?null:e.createVNode("div",{class:"schemx-field__error"},[o.errors.value[0]])},renderLabel:()=>{const t=J(s,`${Y(r.value.name)}Label`);if(t)return t(i());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-field__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-field__required"},[e.createTextVNode("*")]),e.createVNode("span",{class:"schemx-field__label-text"},[r.value.label,l?":":""])])}}}({schemaRef:d,field:p,form:l,formContext:c,componentProps:g,slots:a});return()=>{if(!1===d.value.visible)return null;const t=J(a,Y(d.value.name)),l=d.value.labelPosition||c.schemaConfig.labelPosition,s=t?t(b()):e.createVNode("div",{class:r("schemx-field",`schemx-field--label-${l}`,{"is-readonly":d.value.readonly,"is-disabled":d.value.disabled})},[F(),e.createVNode("div",{class:"schemx-field__content"},[C(),S(),x(),w()])]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-field-wrapper",o.class,n.class,d.value.class),style:[n.style,o.style,d.value.style]}),[s])}}}),oe=["aria-busy","data-loading","disabled"],ne={key:0,class:"schemx-button__prefix"},ae={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"},le={key:4,class:"schemx-button__suffix"},se=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",ne,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ae,[...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",le,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,oe))}}),ie=e.shallowRef();const de=e.defineComponent({name:"SchemxCol",inheritAttrs:!1,props:{layout:{type:Object,required:!1,default:void 0},component:{type:[Object,Function],required:!1,default:void 0}},setup(t,{attrs:r,slots:o}){const n=e.computed(()=>{const r=t.component??ie.value;return r?e.markRaw(e.toRaw(r)):void 0});return()=>{var a;const l=n.value;if(!l)return(null==(a=o.default)?void 0:a.call(o))??null;const s=t.layout??{},i=s.block?24:s.span??24,d=s.block?0:s.offset??0,{class:c,style:u,...p}=r;return e.h(l,{...p,class:["schemx-col",c],style:u,span:i,offset:d},o)}}});const ce=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},renderChildren:{type:Function,required:!1,default:void 0}},setup(o,{attrs:n,slots:a}){var l;const s=e.ref(Boolean(o.schema.defaultCollapsed)),i=e.computed(()=>o.schema.collapsed??s.value),d=(null==(l=e.getCurrentInstance())?void 0:l.uid)??0;e.watch(()=>o.schema.collapsed,(e,t)=>{void 0!==e?s.value=e:void 0!==t&&(s.value=t)});const c=()=>{var e,t;if(!o.schema.collapsible||o.schema.disabled)return;const r=!i.value;void 0===o.schema.collapsed&&(s.value=r),null==(t=(e=o.schema).onCollapsedChange)||t.call(e,r)};return()=>{var l;const s=o.schema;if(!1===s.visible)return null;const u=Boolean(s.collapsible),p=i.value,m=s.destroyOnCollapse??!0,v=`schemx-group-${(null==(l=s.debug)?void 0:l.runtimeNodeId)??`local-${d}`}-${f=s.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,y=`${v}-body`,g=r=>t.isViewDynamicSchema(r)?!1===r.visible?null:r.items.map(e=>e.children.map(e=>g(e))):t.isViewGroupSchema(r)?e.createVNode(ce,{key:r.key,schema:r,class:o.class,style:o.style},a):e.createVNode(re,{key:`${r.key}:${Y(r.name)}`,schema:r},a),{hasHeader:b,renderBodyContent:x,renderHeaderContent:C}=function(t){const{schema:o,collapsed:n,collapsible:a,disabled:l,readonly:s,toggle:i,slots:d,renderChildren:c}=t,u=String(o.key),p=J(d,`${u}Header`),m=J(d,`${u}Label`),v=J(d,`${u}Content`),f={schema:o,collapsed:n,collapsible:a,disabled:l,readonly:s,toggle:i};return{hasHeader:Boolean(o.label||p||m),renderBodyContent:()=>v?v(f):c(),renderHeaderContent:()=>{if(p)return p(f);const t=m?m(f):e.createVNode("span",{class:"schemx-group__title"},[o.label]);return a?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:s,collapsed:p,collapsible:u,disabled:Boolean(s.disabled),readonly:Boolean(s.readonly),toggle:c,slots:a,renderChildren:()=>o.renderChildren?o.renderChildren(s.children):s.children.map(g)}),S=e.createVNode("div",{id:y,role:"group","aria-labelledby":s.label?h:void 0,"aria-hidden":p||void 0,class:"schemx-group__body",style:!m&&p?{display:"none"}:void 0},[x()]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-group-wrapper",o.class,n.class,s.class),"data-key":s.key,"aria-disabled":s.disabled||void 0,style:[n.style,o.style,s.style]}),[e.createVNode("div",{class:r("schemx-group",{"schemx-group--collapsed":p,"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?!p:void 0,"aria-controls":u?y:void 0,"aria-disabled":u&&s.disabled||void 0,class:r("schemx-group__header",{"schemx-group__header--clickable":u&&!s.disabled}),onClick:c,onKeydown:e=>{s.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),c())}},[C()]),m?!p&&S:S])])}}}),ue=ce,pe=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},viewSchemas:{type:Array,required:!0},renderChildren:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${Y(e.name)}`,a=e=>{const{isFirst:t,isLast:o}=X(r.viewSchemas,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},l=r=>{if(t.isViewGroupSchema(r))return e.createVNode(ue,{key:r.key,schema:r},o);const l=r;return e.createVNode(re,{key:n(l),schema:l,class:a(l)},o)};return()=>!1===r.schema.visible?null:r.schema.items.map(t=>{const o=r.renderChildren?r.renderChildren(t.children):t.children.map(l);return e.createVNode(e.Fragment,{key:t.key},[o])})}});const me=e.defineComponent({name:"SchemxSchemaList",inheritAttrs:!1,props:{schemas:{type:Array,required:!0},viewSchemas:{type:Array,required:!0},colComponent:{type:[Object,Function],required:!1,default:void 0},fieldClassResolver:{type:Function,required:!1,default:void 0}},setup(r,{slots:o}){const n=e=>`${e.key}:${Y(e.name)}`,a=e=>t.isSchemxViewFieldSchema(e)?n(e):e.key,l=t=>e.h(me,{schemas:t,viewSchemas:r.viewSchemas,colComponent:r.colComponent},o),s=s=>{var i;if(!1===s.visible)return null;let d;return d=t.isViewGroupSchema(s)?e.createVNode(ue,{key:s.key,schema:s,renderChildren:l},o):t.isViewDynamicSchema(s)?e.createVNode(pe,{key:s.key,schema:s,viewSchemas:r.viewSchemas,renderChildren:l},o):e.createVNode(re,{key:n(s),schema:s,class:null==(i=r.fieldClassResolver)?void 0:i.call(r,s)},o),r.colComponent?e.createVNode(de,{key:a(s),component:r.colComponent,layout:s.layout},"function"==typeof(c=d)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?d:{default:()=>[d]}):d;var c};return()=>{const t=r.schemas.map(s);return r.colComponent?e.createVNode("div",{class:"schemx-row"},[t]):t}}}),ve=me,fe={key:0,class:"schemx-actions"},he=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:()=>({})},colComponent:{default:void 0},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:o,emit:a}){const l=r,s=a,i=e.useSlots(),d=void 0!==l.form,c=e.computed(()=>{const e=n.pick(l,t.defaultSchemxConfigKeys);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),u=h(),p=g(),m=t.getGlobalSchemxConfig(),v={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},f=e.computed(()=>(d?t.mergeSchemxConfig({schemaConfig:c.value},v):t.mergeSchemxConfig({schemaConfig:c.value},(null==p?void 0:p.value)??{},u,v)).schemaConfig??{}),y=e.computed(()=>t.mergeAndResolveSchemxConfig({schemaConfig:c.value},(null==p?void 0:p.value)??{},u,v,m).schemaConfig),b=f.value,x=d?b:y.value,C=e.reactive(b),w=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),F=e=>{for(const r of t.defaultSchemxConfigKeys)w(e,r)||delete C[r];Object.assign(C,e)},V=e.computed(()=>l.colComponent??(null==p?void 0:p.value.colComponent)??u.colComponent??ie.value);D({schemaConfig:C});const R=k(l.form?l.form:S({schemas:l.schemas,schemaConfig:x,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)}})),O=e.computed(()=>l.loading??R.isLoading()),j=e.computed(()=>["schemx",l.class]),A=e.computed(()=>l.style),B=e=>!0===e?{}:e||{},P=e.computed(()=>B(l.submitter)),_=e.computed(()=>B(l.resetter)),E=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),N=e.computed(()=>E(P.value)),$=e.computed(()=>E(_.value)),T=e.computed(()=>!1!==l.submitter&&(void 0!==l.submitter||i.submitter)),q=e.computed(()=>!1!==l.resetter&&(void 0!==l.resetter||i.resetter)),L=e.computed(()=>T.value||q.value),W=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),G=e.computed(()=>O.value||Boolean(N.value.disabled)),I=e.computed(()=>O.value||Boolean($.value.disabled));let H=!1;const K=new Set;e.watch(()=>l.modelValue,t=>{if(!K.delete(e.toRaw(t))){H=!0;try{R.setFieldsValue(t)}finally{H=!1}}},{deep:!0,immediate:d});const U=()=>R.submit(),Z=()=>{R.reset()},J=M(R,e=>e);e.watch(J,t=>{H||(t=>{const r=e.toRaw(t);K.add(r),s("update:modelValue",t),e.nextTick(()=>{K.delete(r)})})(t)},{flush:"sync"}),e.watch(()=>l.schemas,e=>{t.isSchemxSchemas(e)||R.setSchemas(e)},{immediate:d});const Q=z(R),Y=e=>{const{isFirst:t,isLast:r}=X(Q.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":r}},ee=e=>{F(f.value),R.updateSchemaConfig(e)},te=(e,r)=>{const o={...e};if(void 0!==r)for(const n of t.defaultSchemxConfigKeys)w(r,n)&&!w(e,n)&&(o[n]=void 0);F(f.value),Object.keys(o).length>0&&R.updateSchemaConfig(o)};d?e.watch(c,te,{deep:!0,immediate:!0}):e.watch(y,ee,{deep:!0});return o({...R,submit:U,reset:Z}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(j.value),style:e.normalizeStyle(A.value)},[e.createVNode(e.unref(ve),{schemas:e.unref(Q),"view-schemas":e.unref(Q),"col-component":V.value,"field-class-resolver":Y},e.createSlots({_:2},[e.renderList(W.value,(r,o)=>({name:o,fn:e.withCtx(r=>[e.renderSlot(t.$slots,o,e.normalizeProps(e.guardReactiveProps(r??{})))])}))]),1032,["schemas","view-schemas","col-component"]),L.value?(e.openBlock(),e.createElementBlock("div",fe,[q.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(R),loading:O.value,disabled:I.value,reset:Z},void 0,void 0,0):q.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:1},$.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:I.value,onClick:Z}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),T.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(R),loading:O.value,disabled:G.value,submit:U},void 0,void 0,2):T.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:3},N.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:O.value,disabled:G.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(P.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ye,ge;const be=(ye=he,ge={install(e,t={}){f(e,t),e.component("SchemxForm",he)},Field:re},Object.assign(ye,ge));const xe=e.defineComponent({name:"SchemxWrapper",inheritAttrs:!1,__name:"index",props:{readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){const r=t,o=e.useAttrs(),n=e.useSlots(),a=e.ref(!1),l=e.computed(()=>["schemx-wrapper",o.class,r.readonly&&"schemx-wrapper--readonly",r.disabled&&"schemx-wrapper--disabled"]),s=e.computed(()=>{const{class:e,...t}=o;return t}),i=e=>{!e||n.readonly||a.value};return e.onMounted(()=>i(r.readonly)),e.watch(()=>r.readonly,i),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:l.value}),[r.readonly?e.renderSlot(t.$slots,"readonly",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,0):e.renderSlot(t.$slots,"default",{readonly:r.readonly,disabled:r.disabled},void 0,void 0,1)],16))}}),Ce=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},colComponent:{type:[Object,Function],default:void 0}},setup:(r,{slots:o})=>(function(r){const o=e.inject(y,void 0),n=e.computed(()=>({...t.mergeSchemxConfig(r.value,(null==o?void 0:o.value)??{}),colComponent:r.value.colComponent??(null==o?void 0:o.value.colComponent)}));e.provide(y,n)}(e.computed(()=>({schemaConfig:r.schemaConfig,rendererProps:r.rendererProps,validatorAdapters:r.validatorAdapters,defaultRendererType:r.defaultRendererType,rendererRegistry:r.rendererRegistry,presetRuleRegistry:r.presetRuleRegistry,colComponent:r.colComponent}))),()=>{var e;return null==(e=o.default)?void 0:e.call(o)})});exports.Col=de,exports.ConfigProvider=Ce,exports.Field=re,exports.Group=ue,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??B().name:void 0,s=a?N(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.Wrapper=xe,exports.createFieldContext=A,exports.createFormConfigContext=D,exports.createFormContext=k,exports.default=be,exports.presetRuleRegistry=b,exports.registerCol=function(e){ie.value=e},exports.rendererRegistry=x,exports.schemxForm=be,exports.useDictionary=N,exports.useField=O,exports.useFieldContext=B,exports.useForm=S,exports.useFormConfigContext=L,exports.useFormContext=V,exports.useFormSelector=M,exports.useStableRef=W,exports.useViewSchemas=z,exports.useWatch=P,exports.useWatchAll=function(e,t){return P(e,t)},exports.useWatchField=function(e,t,r){return P(e,t,r)},exports.useWatchFields=_,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