@schemx/vue 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +491 -326
- package/dist/analyze.html +1 -1
- package/dist/bridge/formBridge.d.ts +4 -4
- package/dist/bridge/formBridge.d.ts.map +1 -1
- package/dist/bridge/formInstance.d.ts +4 -3
- package/dist/bridge/formInstance.d.ts.map +1 -1
- package/dist/bridge/index.d.ts +1 -2
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/types.d.ts +4 -6
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/components/Col/index.d.ts +29 -6
- package/dist/components/Col/index.d.ts.map +1 -1
- package/dist/components/ConfigProvider/index.d.ts +32 -5
- package/dist/components/ConfigProvider/index.d.ts.map +1 -1
- package/dist/components/Dynamic/index.d.ts +19 -15
- package/dist/components/Dynamic/index.d.ts.map +1 -1
- package/dist/components/Field/index.d.ts.map +1 -1
- package/dist/components/Field/slot.d.ts +2 -1
- package/dist/components/Field/slot.d.ts.map +1 -1
- package/dist/components/Group/index.d.ts +23 -4
- package/dist/components/Group/index.d.ts.map +1 -1
- package/dist/components/Icon/index.d.ts +29 -0
- package/dist/components/Icon/index.d.ts.map +1 -0
- package/dist/components/Row/index.d.ts +30 -0
- package/dist/components/Row/index.d.ts.map +1 -0
- package/dist/components/SchemaList/index.d.ts +8 -8
- package/dist/components/SchemaList/index.d.ts.map +1 -1
- package/dist/config/defaultVueSchemaConfig.d.ts +25 -3
- package/dist/config/defaultVueSchemaConfig.d.ts.map +1 -1
- package/dist/config/index.d.ts +0 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/vueConfig.d.ts +10 -6
- package/dist/config/vueConfig.d.ts.map +1 -1
- package/dist/context/configProviderContext.d.ts +56 -5
- package/dist/context/configProviderContext.d.ts.map +1 -1
- package/dist/context/formContext.d.ts +127 -36
- package/dist/context/formContext.d.ts.map +1 -1
- package/dist/context/index.d.ts +2 -2
- package/dist/context/index.d.ts.map +1 -1
- package/dist/form.d.ts +2 -2
- package/dist/form.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +2 -4
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useDictionary.d.ts +1 -1
- package/dist/hooks/useForm.d.ts +4 -16
- package/dist/hooks/useForm.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +554 -287
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/definition.d.ts +116 -21
- package/dist/types/definition.d.ts.map +1 -1
- package/dist/types/field.d.ts +4 -27
- package/dist/types/field.d.ts.map +1 -1
- package/dist/types/form.d.ts +41 -6
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/icon.d.ts +15 -0
- package/dist/types/icon.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/layout.d.ts +73 -22
- package/dist/types/layout.d.ts.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/layout.d.ts +17 -0
- package/dist/utils/layout.d.ts.map +1 -0
- package/dist/utils/rendererProvider.d.ts +10 -3
- package/dist/utils/rendererProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/config/appConfig.d.ts +0 -29
- package/dist/config/appConfig.d.ts.map +0 -1
- package/dist/utils/colProvider.d.ts +0 -22
- package/dist/utils/colProvider.d.ts.map +0 -1
package/dist/form.d.ts.map
CHANGED
|
@@ -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,
|
|
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;;;;;;;;;;;;GAYG;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;;GAEG;AACH,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,EAYL,gBAAgB,CAAA;AAEjC,eAAe,gBAAgB,CAAA"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
* useForm - 表单状态管理
|
|
8
8
|
*/
|
|
9
9
|
export { useForm } from './useForm';
|
|
10
|
-
/**
|
|
11
|
-
* Vue Form Instance - 在 Vue effect 中可追踪的 Form 实例。
|
|
12
|
-
*/
|
|
10
|
+
/** Vue 兼容用的表单实例类型。 */
|
|
13
11
|
export type { VueSchemxInstance } from '../bridge';
|
|
14
12
|
/**
|
|
15
13
|
* useField - 单字段控制
|
|
@@ -22,7 +20,7 @@ export { useWatch, useWatchField, useWatchFields, useWatchAll } from './useWatch
|
|
|
22
20
|
/**
|
|
23
21
|
* useDictionary - 字典选项加载
|
|
24
22
|
*/
|
|
25
|
-
export { useDictionary, type UseDictionaryReturn } from './useDictionary';
|
|
23
|
+
export { useDictionary, type UseDictionaryReturn, type UseDictOptionsReturn, } from './useDictionary';
|
|
26
24
|
/**
|
|
27
25
|
* useStableRef - 引用稳定化的 shallowRef
|
|
28
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,sBAAsB;AACtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEjF;;GAEG;AACH,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAA;AAExB;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -36,7 +36,7 @@ export interface UseDictionaryReturn<TOption = unknown> {
|
|
|
36
36
|
/**
|
|
37
37
|
* useDictionary 返回值的旧类型别名。
|
|
38
38
|
*
|
|
39
|
-
* @deprecated
|
|
39
|
+
* @deprecated 请改用 {@link UseDictionaryReturn}。
|
|
40
40
|
* @typeParam TOption - 格式化后的字典选项类型。
|
|
41
41
|
*/
|
|
42
42
|
export type UseDictOptionsReturn<TOption = unknown> = UseDictionaryReturn<TOption>;
|
package/dist/hooks/useForm.d.ts
CHANGED
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CreateFormOptions, NamePath, Values } from '@schemx/core';
|
|
3
|
-
/**
|
|
4
|
-
* useForm 配置选项。
|
|
5
|
-
*
|
|
6
|
-
* 当前与 core 层 CreateFormOptions 保持一致,并在 Vue 层自动补充默认的
|
|
7
|
-
* rendererRegistry 和 presetRuleRegistry。保留独立类型用于后续扩展
|
|
8
|
-
* Vue 专属配置,而不污染 core 层接口。
|
|
9
|
-
*
|
|
10
|
-
* @typeParam TValues - 表单值类型
|
|
11
|
-
*/
|
|
12
|
-
export interface UseFormOptions<TValues extends Values> extends CreateFormOptions<TValues, NamePath<TValues>> {
|
|
13
|
-
}
|
|
1
|
+
import { CreateFormOptions, SchemxInstance, Values } from '@schemx/core';
|
|
14
2
|
/**
|
|
15
3
|
* 创建由当前 Vue effect scope 持有的表单实例。
|
|
16
4
|
*
|
|
@@ -20,7 +8,7 @@ export interface UseFormOptions<TValues extends Values> extends CreateFormOption
|
|
|
20
8
|
* 3. 在当前 effect scope 销毁时调用 instance.destroy()。
|
|
21
9
|
*
|
|
22
10
|
* useForm 不再自动调用 provide()。需要向后代组件暴露实例时,应由
|
|
23
|
-
* <SchemxForm> 或其他 Provider 组件显式调用
|
|
11
|
+
* <SchemxForm> 或其他 Provider 组件显式调用 provideFormContext({ form, schemaConfig })。
|
|
24
12
|
* 这样无论实例是内部创建还是通过 props.form 外部传入,都能走同一条
|
|
25
13
|
* 上下文注册路径,并保持清晰的实例所有权:谁创建,谁销毁。
|
|
26
14
|
*
|
|
@@ -50,8 +38,8 @@ export interface UseFormOptions<TValues extends Values> extends CreateFormOption
|
|
|
50
38
|
* ```ts
|
|
51
39
|
* // Provider 组件中统一注册上下文。
|
|
52
40
|
* const form = props.form ?? useForm(options)
|
|
53
|
-
*
|
|
41
|
+
* provideFormContext({ form, schemaConfig: {} })
|
|
54
42
|
* ```
|
|
55
43
|
*/
|
|
56
|
-
export declare function useForm<TValues extends Values = Values>(options?:
|
|
44
|
+
export declare function useForm<TValues extends Values = Values>(options?: CreateFormOptions<TValues>): SchemxInstance<TValues>;
|
|
57
45
|
//# sourceMappingURL=useForm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,iBAAiB,EAEjB,cAAc,EACd,MAAM,EACP,MAAM,cAAc,CAAA;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACrD,OAAO,GAAE,iBAAiB,CAAC,OAAO,CAAM,GACvC,cAAc,CAAC,OAAO,CAAC,CAwBzB"}
|
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");function l(t){return e.shallowRef(t)}function a(e){const t=l(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(),a=l(n.value),s=l(n.errors),i=l(n.touched),c=l(n.pending);r.subscribe(()=>{const e=r.getSnapshot();var t,o;Object.is(a.value,e.value)||(a.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),c.value!==e.pending&&(c.value=e.pending)});const d={value:a,errors:s,touched:i,pending:c};return e.fieldStates.set(r,d),d}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)),l=r.subscribeViewSchemas(e=>{o.value=e});let a=!1;return{schemasByKey:n,viewSchemas:o,dispose:()=>{a||(a=!0,l())}}}const c=new WeakMap;function d(t){if(!e.getCurrentScope())throw new Error("[schemx] useVueFormRuntime() requires an active Vue scope.");const{runtime:r,release:n}=function(e){const t=function(e){const t=c.get(e);if(t)return t;const r=function(e){let t,r=0,n=!1;const l=()=>{const t=o.createFormStateAdapter(e),r=a(t.values),n=a(t.touchedFields),l=a(t.pendingFields),s=a(t.loading),i=new Map;let c=!1;const d=()=>{var e;c||(c=!0,null==(e=u.viewSchemaState)||e.dispose(),i.clear(),t.dispose())},u={stateAdapter:t,values:r,touchedFields:n,pendingFields:l,loading:s,fieldStates:i,dispose:d};return u},c=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=l()),t},d=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};c(),r++;let e=!1;return()=>{e||n||(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},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=()=>c().values,h=e=>s(c(),e),g=()=>{const t=c();return t.viewSchemaState??(t.viewSchemaState=i(e))},y=()=>{n||(n=!0,r=0,d())},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:m,trackFieldsValue:p,trackForm:v,destroy:y}),x={core:e,instance:b,retain:u,trackField:m,trackFieldsValue:p,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:g,destroy:y};return x}(e);return c.set(e,r),c.set(r.instance,r),r}(e),r=t.retain();return{runtime:t,release:r}}(t);return e.onScopeDispose(n),r}const u=Symbol("schemx:form-context"),m=Symbol("schemx:instance"),p=Symbol("schemx:form-config");function v(t){const r=d(t.form),o={form:r.instance,get schemaConfig(){return t.schemaConfig}};return e.provide(u,o),r.instance}function f(){const t=e.inject(u,null);if(t)return t;const r=e.inject(m,null),o=e.inject(p,null);if(r&&o)return{form:r,schemaConfig:o.schemaConfig};throw new Error("[schemx] useFormContextValue() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().")}function h(){const t=e.inject(u,null);if(t)return t.form;const r=e.inject(m,null);if(!r)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure createFormContext(form) is called synchronously during setup().");return r}function g(){return d(h())}const y=Symbol("schemx:field");function b(t){e.provide(y,t)}function x(){const t=e.inject(y,null);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}const C=Symbol("schemx:config-provider");function S(r){const o=e.inject(C,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(C,n)}function w(){var e;return null==(e=F())?void 0:e.value}function F(){if(null!==e.getCurrentInstance())return e.inject(C,void 0)}const k=Symbol("schemx:app-config"),V=Object.freeze({schemaConfig:Object.freeze({}),validatorAdapters:Object.freeze([])});function R(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 j(e,t={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),r=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({schemaConfig:t,rendererProps:R(e.rendererProps),validatorAdapters:r,defaultRendererType:e.defaultRendererType,rendererRegistry:e.rendererRegistry,presetRuleRegistry:e.presetRuleRegistry,colComponent:e.colComponent})}(t);e.provide(k,r)}function O(){return null===e.getCurrentInstance()?V:e.inject(k,V)}const A=t.createPresetRuleRegistry(),B=o.createRendererRegistry("input");const P=Object.freeze({labelIcon:"",labelAlign:"left",labelPosition:"left",labelWidth:"auto",contentAlign:"right",colon:!0,showRequiredMark:void 0}),_=Object.keys(P);function E(r={}){const o=function(e,r={}){const o=w();return t.mergeSchemxConfig(e,o??{},O(),r,{rendererRegistry:B,presetRuleRegistry:A})}(function(e){const{schemaConfig:t={},rendererProps:r,validatorAdapters:o=[],defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a}=e;return{schemaConfig:t,rendererProps:r,defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a,validatorAdapters:o}}(r)),n={...r,...o},l=d(t.createForm(n)).instance;return e.onScopeDispose(()=>{l.destroy()}),l}const N=r=>{const o=h(),n=g(),l=n.getFieldState(r);return function(r,o,n,l){const a=t.createField(o,n),s=e.computed(()=>l.errors.value),i=e.computed(()=>l.touched.value),c=e.computed(()=>l.pending.value);return{...a,name:n,value:l.value,errors:s,dirty:i,pending:c,getValue:()=>l.value.value,getErrors:()=>l.errors.value,isTouched:()=>l.touched.value,isPending:()=>l.pending.value,getValues:()=>r.getFieldsValue()}}(o,n.instance,r,l)};function $(r,o,n){const l=g(),a=t.createWatch(l.instance,r,o,n);return e.onUnmounted(a),a}function q(e,t,r){return $(e,t,r)}function T(e){return e instanceof Error?e:new Error(String(e))}const L=(t,r)=>{var o;const n=h(),l=e.shallowRef([]),a=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 o=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(o))return l.value=[],void(a.value=!1);a.value=!0,s.value=void 0;const c=await(async(e,r)=>{const o=t.retryCount??0,l=t.retryInterval??1e3;let a=new Error("Unknown error");for(let i=0;i<=o;i++)try{if(r.aborted)throw new Error("Dictionary request aborted");return await z(e,n,t.api,r)}catch(s){a=T(s),i<o&&await D(l,r)}throw a})(o,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,n);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;l.value=d,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(d,n),a.value=!1}catch(o){if(r.signal.aborted||e!==i)return;const c=T(o);s.value=c,l.value=[],a.value=!1,"function"==typeof t.onError&&t.onError(c,n)}finally{c===r&&(c=null)}};(null==(o=t.dependsOn)?void 0:o.length)&&q(t.dependsOn,(e,o)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&r&&n.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:l,loading:a,error:s,loadDict:d,refresh:()=>d(),mutate:e=>{l.value=e}}};function D(e,t){return new Promise((r,o)=>{let n=()=>{};const l=()=>{clearTimeout(a),t.removeEventListener("abort",n)},a=setTimeout(()=>{l(),r()},e);n=()=>{l(),o(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function z(e,t,r,o){return r.length>=3?r(e,t,o):r(e,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 M(e){return d(e).getViewSchemaState().viewSchemas}function I(t,r,o={}){const n=d(t).getValuesRef(),l=e.shallowRef(r(n.value)),a=o.equals??Object.is;return e.watch(n,e=>{const t=r(e);a(l.value,t)||(l.value=t)},{flush:o.flush??"sync"}),e.readonly(l)}function G(e){return void 0!==e&&(!Array.isArray(e)||0!==e.length)}function H(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 K=e=>/[A-Z]/.test(e),U=e=>e.includes("-"),Z=e=>e.replace(/([A-Z])/g,"-$1").toLowerCase(),J=e=>e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),Q=(e,t)=>{if(e[t])return e[t];const r=K(t)?Z(t):U(t)?J(t):void 0;return r&&e[r]?e[r]:void 0},X=(e,t)=>{const r={},o=(n=String(e),(U(n)?J(n):n)+":");var n;const l=(e=>K(e)?Z(e):e)(String(e))+":";for(const[a,s]of Object.entries(t))a.startsWith(o)?r[a.slice(o.length)]=s:a.startsWith(l)&&l!==o&&(r[a.slice(l.length)]=s);return r};function Y(e,t){const r=e.findIndex(e=>e.key===t);if(-1===r)return{found:!1,isFirst:!1,isLast:!1};return te(e[r])?{found:!0,isFirst:!re(e,r,-1),isLast:!re(e,r,1)}:{found:!0,isFirst:!1,isLast:!1}}function ee(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function te(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function re(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(te(r))return!0}}return!1}const oe=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}},slots:Object,setup(o,{attrs:n,slots:l}){const a=f(),s=a.form,i=e.computed(()=>o.schema),c=function(t,r){const o=d(t).getViewSchemaState();return e.computed(()=>o.schemasByKey.value.get(r()))}(s,()=>i.value.key),u=e.computed(()=>c.value&&t.isSchemxViewFieldSchema(c.value)?c.value:i.value),m=N(u.value.name);b(m);const p=e.computed(()=>{return e=u.value.validationTrigger,t=a.schemaConfig.validationTrigger,r="onChange",G(e)?e:G(t)?t:r;var e,t,r}),v=e.computed(()=>{const e=!1!==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)}),h=e=>{var t,r,o,n;m.setValue(e),null==(r=null==(t=u.value.componentProps)?void 0:t.onChange)||r.call(t,e),null==(n=(o=u.value).onChange)||n.call(o,e,s),v.value&&H("change",p.value)&&m.validate()},g=e=>{var t,r,o,n;null==(r=null==(t=u.value.componentProps)?void 0:t.onBlur)||r.call(t,e),null==(n=(o=u.value).onBlur)||n.call(o,s),v.value&&H("blur",p.value)&&m.validate()},y=e=>{m.setValue(e)},x=W(()=>{const e=u.value.componentProps??{};return{...e,align:u.value.readonly?"right":e.align??u.value.contentAlign,readonly:u.value.readonly,disabled:u.value.disabled,placeholder:e.placeholder??u.value.placeholder,readonlyPlaceholder:e.readonlyPlaceholder??u.value.readonlyPlaceholder,value:m.value.value,onChange:h,onBlur:g,"onUpdate:value":y}}),{createSlotProps:C,renderAfter:S,renderBefore:w,renderContent:F,renderError:k,renderLabel:V}=function(t){const{schemaRef:r,field:o,form:n,formContext:l,componentProps:a,slots:s}=t,i=(e={})=>({schema:r.value,componentProps:a.value,value:o.value.value,field:o,form:n,...e}),c=e=>{const t=Q(s,`${ee(r.value.name)}${e}`);return(null==t?void 0:t(i()))??null};return{createSlotProps:i,renderAfter:()=>c("After"),renderBefore:()=>c("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=X(ee(r.value.name),s),l=e.h(t,a.value,o),c=Q(s,`${ee(r.value.name)}Content`);return c?c(i({columnElement:l})):e.createVNode("div",{class:"schemx-field__control"},[l])},renderError:()=>{const t=Q(s,`${ee(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=Q(s,`${ee(r.value.name)}Label`);if(t)return t(i());const o=r.value.labelAlign||l.schemaConfig.labelAlign,n=r.value.labelWidth||l.schemaConfig.labelWidth,a=r.value.colon??l.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("*")]),r.value.labelIcon?e.createVNode("span",{class:"schemx-field__label-icon"},[r.value.labelIcon]):null,e.createVNode("span",{class:"schemx-field__label-text"},[r.value.label,a?":":""])])}}}({schemaRef:u,field:m,form:s,formContext:a,componentProps:x,slots:l});return()=>{if(!1===u.value.visible)return null;const t=Q(l,ee(u.value.name)),s=u.value.labelPosition||a.schemaConfig.labelPosition,i=t?t(C()):e.createVNode("div",{class:r("schemx-field",`schemx-field--label-${s}`,{"is-readonly":u.value.readonly,"is-disabled":u.value.disabled})},[V(),e.createVNode("div",{class:"schemx-field__content"},[w(),F(),S(),k()])]);return e.createVNode("div",e.mergeProps(n,{class:r("schemx-field-wrapper",o.class,n.class,u.value.class),style:[n.style,o.style,u.value.style]}),[i])}}}),ne=["aria-busy","data-loading","disabled"],le={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"},se={key:4,class:"schemx-button__suffix"},ie=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),l=e.computed(()=>["schemx-button",`schemx-button--${r.size}`]);return(t,a)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(o),{class:l.value,"aria-busy":r.loading||void 0,"data-loading":r.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",le,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),r.loading?(e.openBlock(),e.createElementBlock("svg",ae,[...a[0]||(a[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",se,[e.renderSlot(t.$slots,"suffix")])):e.createCommentVNode("",!0)],16,ne))}}),ce=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??ce.value;return r?e.markRaw(e.toRaw(r)):void 0});return()=>{var l;const a=n.value;if(!a)return(null==(l=o.default)?void 0:l.call(o))??null;const s=t.layout??{},i=s.block?24:s.span??24,c=s.block?0:s.offset??0,{class:d,style:u,...m}=r;return e.h(a,{...m,class:["schemx-col",d],style:u,span:i,offset:c},o)}}});const ue=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}},slots:Object,setup(o,{attrs:n,slots:l}){var a;const s=e.ref(Boolean(o.schema.defaultCollapsed)),i=e.computed(()=>o.schema.collapsed??s.value),c=(null==(a=e.getCurrentInstance())?void 0:a.uid)??0;e.watch(()=>o.schema.collapsed,(e,t)=>{void 0!==e?s.value=e:void 0!==t&&(s.value=t)});const d=()=>{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 a;const s=o.schema;if(!1===s.visible)return null;const u=Boolean(s.collapsible),m=i.value,p=s.destroyOnCollapse??!0,v=`schemx-group-${(null==(a=s.debug)?void 0:a.runtimeNodeId)??`local-${c}`}-${f=s.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,g=`${v}-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(ue,{key:r.key,schema:r,class:o.class,style:o.style},l):e.createVNode(oe,{key:`${r.key}:${ee(r.name)}`,schema:r},l),{hasHeader:b,renderBodyContent:x,renderHeaderContent:C}=function(t){const{schema:o,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i,slots:c,renderChildren:d}=t,u=String(o.key),m=Q(c,`${u}Header`),p=Q(c,`${u}Label`),v=Q(c,`${u}Content`),f={schema:o,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i};return{hasHeader:Boolean(o.label||m||p),renderBodyContent:()=>v?v(f):d(),renderHeaderContent:()=>{if(m)return m(f);const t=p?p(f):e.createVNode("span",{class:"schemx-group__title"},[o.label]);return l?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:r("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:s,collapsed:m,collapsible:u,disabled:Boolean(s.disabled),readonly:Boolean(s.readonly),toggle:d,slots:l,renderChildren:()=>o.renderChildren?o.renderChildren(s.children):s.children.map(y)}),S=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(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":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())}},[C()]),p?!m&&S:S])])}}}),me=ue,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}:${ee(e.name)}`,l=e=>{const{isFirst:t,isLast:o}=Y(r.viewSchemas,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},a=r=>{if(t.isViewGroupSchema(r))return e.createVNode(me,{key:r.key,schema:r},o);const a=r;return e.createVNode(oe,{key:n(a),schema:a,class:l(a)},o)};return()=>!1===r.schema.visible?null:r.schema.items.map(t=>{const o=r.renderChildren?r.renderChildren(t.children):t.children.map(a);return e.createVNode(e.Fragment,{key:t.key},[o])})}});const ve=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}:${ee(e.name)}`,l=e=>t.isSchemxViewFieldSchema(e)?n(e):e.key,a=t=>e.h(ve,{schemas:t,viewSchemas:r.viewSchemas,colComponent:r.colComponent},o),s=s=>{var i;if(!1===s.visible)return null;let c;return c=t.isViewGroupSchema(s)?e.createVNode(me,{key:s.key,schema:s,renderChildren:a},o):t.isViewDynamicSchema(s)?e.createVNode(pe,{key:s.key,schema:s,viewSchemas:r.viewSchemas,renderChildren:a},o):e.createVNode(oe,{key:n(s),schema:s,class:null==(i=r.fieldClassResolver)?void 0:i.call(r,s)},o),r.colComponent?e.createVNode(de,{key:l(s),component:r.colComponent,layout:s.layout},"function"==typeof(d=c)||"[object Object]"===Object.prototype.toString.call(d)&&!e.isVNode(d)?c:{default:()=>[c]}):c;var d};return()=>{const t=r.schemas.map(s);return r.colComponent?e.createVNode("div",{class:"schemx-row"},[t]):t}}}),fe=ve,he={key:0,class:"schemx-actions"},ge=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:l}){const a=r,s=l,i=e.useSlots(),c=[...t.defaultSchemxConfigKeys,..._],d=void 0!==a.form,u=e.computed(()=>{const e=n.pick(a,c);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),m=O(),p=F(),f=t.getGlobalSchemxConfig(),h={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},g=e.computed(()=>d?t.mergeSchemxConfig({schemaConfig:u.value},h):t.mergeSchemxConfig({schemaConfig:u.value},(null==p?void 0:p.value)??{},m,h,f)),y=e.computed(()=>({...P,...g.value.schemaConfig})),b=e.computed(()=>t.resolveSchemxConfig(g.value).schemaConfig),x=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),C=e.computed(()=>a.colComponent??(null==p?void 0:p.value.colComponent)??m.colComponent??ce.value),S=v({form:a.form?a.form:E({schemas:a.schemas,schemaConfig:b.value,initialValues:Object.keys(a.modelValue).length>0?a.modelValue:a.initialValues,rendererProps:a.rendererProps,rendererRegistry:a.rendererRegistry,defaultRendererType:a.defaultRendererType,presetRuleRegistry:a.presetRuleRegistry,fieldRules:a.fieldRules,validatorAdapters:a.validatorAdapters,schedulerOptions:a.schedulerOptions,validationConcurrency:a.validationConcurrency,onFinish:e=>{var t;return null==(t=a.onFinish)?void 0:t.call(a,e)},onFinishFailed:e=>{var t;return null==(t=a.onFinishFailed)?void 0:t.call(a,e)},onReset:()=>{var e;null==(e=a.onReset)||e.call(a)},onLoadingChange:e=>{var t;null==(t=a.onLoadingChange)||t.call(a,e)},onValuesChange:(e,t)=>{var r;null==(r=a.onValuesChange)||r.call(a,e,t)},onFieldsChange:(e,t)=>{var r;null==(r=a.onFieldsChange)||r.call(a,e,t)}}),get schemaConfig(){return y.value}}),w=e.computed(()=>a.loading??S.isLoading()),k=e.computed(()=>["schemx",a.class]),V=e.computed(()=>a.style),R=e=>!0===e?{}:e||{},j=e.computed(()=>R(a.submitter)),A=e.computed(()=>R(a.resetter)),B=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),N=e.computed(()=>B(j.value)),$=e.computed(()=>B(A.value)),q=e.computed(()=>!1!==a.submitter&&(void 0!==a.submitter||i.submitter)),T=e.computed(()=>!1!==a.resetter&&(void 0!==a.resetter||i.resetter)),L=e.computed(()=>q.value||T.value),D=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),z=e.computed(()=>w.value||Boolean(N.value.disabled)),W=e.computed(()=>w.value||Boolean($.value.disabled));let G=!1;const H=new Set;e.watch(()=>a.modelValue,t=>{if(!H.delete(e.toRaw(t))){G=!0;try{S.setFieldsValue(t)}finally{G=!1}}},{deep:!0,immediate:d});const K=()=>S.submit(),U=()=>{S.reset()},Z=I(S,e=>e);e.watch(Z,t=>{G||(t=>{const r=e.toRaw(t);H.add(r),s("update:modelValue",t),e.nextTick(()=>{H.delete(r)})})(t)},{flush:"sync"}),e.watch(()=>a.schemas,e=>{t.isSchemxSchemas(e)||S.setSchemas(e)},{immediate:d});const J=M(S),Q=e=>{const{isFirst:t,isLast:r}=Y(J.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":r}},X=e=>{S.updateSchemaConfig(e)},ee=(e,t)=>{const r={...e};if(void 0!==t)for(const o of c)x(t,o)&&!x(e,o)&&(r[o]=void 0);Object.keys(r).length>0&&S.updateSchemaConfig(r)};d?e.watch(u,ee,{deep:!0,immediate:!0}):e.watch(b,X,{deep:!0});return o({...S,submit:K,reset:U}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value),style:e.normalizeStyle(V.value)},[e.createVNode(e.unref(fe),{schemas:e.unref(J),"view-schemas":e.unref(J),"col-component":C.value,"field-class-resolver":Q},e.createSlots({_:2},[e.renderList(D.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",he,[T.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(S),loading:w.value,disabled:W.value,reset:U},void 0,void 0,0):T.value?(e.openBlock(),e.createBlock(e.unref(ie),e.mergeProps({key:1},$.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:W.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),q.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(S),loading:w.value,disabled:z.value,submit:K},void 0,void 0,2):q.value?(e.openBlock(),e.createBlock(e.unref(ie),e.mergeProps({key:3},N.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:w.value,disabled:z.value,onClick:K}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(j.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var ye,be;const xe=(ye=ge,be={install(e,t={}){j(e,t),e.component("SchemxForm",ge)},Field:oe},Object.assign(ye,be));const Ce=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(),l=e.ref(!1),a=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||l.value};return e.onMounted(()=>i(r.readonly)),e.watch(()=>r.readonly,i),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:a.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))}}),Se=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:(t,{slots:r})=>(S(e.computed(()=>({schemaConfig:t.schemaConfig,rendererProps:t.rendererProps,validatorAdapters:t.validatorAdapters,defaultRendererType:t.defaultRendererType,rendererRegistry:t.rendererRegistry,presetRuleRegistry:t.presetRuleRegistry,colComponent:t.colComponent}))),()=>{var e;return null==(e=r.default)?void 0:e.call(r)})});exports.Col=de,exports.ConfigProvider=Se,exports.Field=oe,exports.Group=me,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 l=function(e){return"function"==typeof e?{api:e}:e}(r.dict),a=l?o.fieldName??x().name:void 0,s=l?L(l,a):null,i=e.computed(()=>({...o,dict:l,options:l?null==s?void 0:s.list.value:o.options,loading:l?null==s?void 0:s.loading.value:o.loading}));return()=>e.h(t,i.value,n)}})},exports.Wrapper=Ce,exports.createConfigProviderContext=S,exports.createFieldContext=b,exports.createFormConfigContext=function(t){e.provide(p,t)},exports.createFormContext=function(t){const r=d(t);return e.provide(m,r.instance),r.instance},exports.default=xe,exports.presetRuleRegistry=A,exports.provideFormContext=v,exports.registerCol=function(e){ce.value=e},exports.rendererRegistry=B,exports.schemxForm=xe,exports.useConfigProviderContext=w,exports.useConfigProviderContextRef=F,exports.useDictionary=L,exports.useField=N,exports.useFieldContext=x,exports.useForm=E,exports.useFormConfigContext=function(){const t=e.inject(u,null);if(t)return t;const r=e.inject(p,null);if(!r)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure createFormConfigContext(props) is called synchronously during setup().");return r},exports.useFormContext=h,exports.useFormContextValue=f,exports.useFormRuntimeContext=g,exports.useFormSelector=I,exports.useStableRef=W,exports.useViewSchemas=M,exports.useWatch=$,exports.useWatchAll=function(e,t){return $(e,t)},exports.useWatchField=function(e,t,r){return $(e,t,r)},exports.useWatchFields=q,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"),o=require("classnames"),r=require("@schemx/core/adapter"),n=require("es-toolkit");function l(t){return e.shallowRef(t)}function a(e){const t=l(e.getSnapshot());return e.subscribe(()=>{t.value=e.getSnapshot()}),t}function s(e,t){const o=e.stateAdapter.field(t),r=e.fieldStates.get(o);if(r)return r;const n=o.getSnapshot(),a=l(n.value),s=l(n.errors),i=l(n.touched),d=l(n.pending);o.subscribe(()=>{const e=o.getSnapshot();var t,r;Object.is(a.value,e.value)||(a.value=e.value),t=s.value,r=e.errors,t.length===r.length&&t.every((e,t)=>e===r[t])||(s.value=e.errors),i.value!==e.touched&&(i.value=e.touched),d.value!==e.pending&&(d.value=e.pending)});const c={value:a,errors:s,touched:i,pending:d};return e.fieldStates.set(o,c),c}function i(o){const r=e.shallowRef(o.getViewSchemas()),n=e.computed(()=>function(e){const o=new Map,r=e=>{for(const n of e)if(o.set(n.key,n),t.isViewGroupSchema(n))r(n.children);else if(t.isViewDynamicSchema(n))for(const e of n.items)r(e.children)};return r(e),o}(r.value)),l=o.subscribeViewSchemas(e=>{r.value=e});let a=!1;return{schemasByKey:n,viewSchemas:r,dispose:()=>{a||(a=!0,l())}}}const d=new WeakMap;function c(t){if(!e.getCurrentScope())throw new Error("[schemx] useVueFormRuntime() requires an active Vue scope.");const{runtime:o,release:n}=function(e){const t=function(e){const t=d.get(e);if(t)return t;const o=function(e){let t,o=0,n=!1;const l=()=>{const t=r.createFormStateAdapter(e),o=a(t.values),n=a(t.touchedFields),l=a(t.pendingFields),s=a(t.loading),i=new Map;let d=!1;const c=()=>{var e;d||(d=!0,null==(e=u.viewSchemaState)||e.dispose(),i.clear(),t.dispose())},u={stateAdapter:t,values:o,touchedFields:n,pendingFields:l,loading:s,fieldStates:i,dispose:c};return u},d=()=>{if(n)throw new Error("[schemx] Vue Form Runtime has been destroyed.");return t??(t=l()),t},c=()=>{const e=t;e&&(t=void 0,e.dispose())},u=()=>{if(n)return()=>{};d(),o++;let e=!1;return()=>{e||n||(e=!0,o--,0===o&&c())}},p=(e,o)=>{if(!t)return;s(t,e)[o].value},m=e=>{if(t)if(void 0!==e)for(const o of e)s(t,o).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),g=()=>{const t=d();return t.viewSchemaState??(t.viewSchemaState=i(e))},y=()=>{n||(n=!0,o=0,c())},b=function(e,t){let o=!1;return{...e,getFieldValue:r=>(o||t.trackField(r,"value"),e.getFieldValue(r)),getFieldErrors:r=>(o||t.trackField(r,"errors"),e.getFieldErrors(r)),isFieldTouched:r=>(o||t.trackField(r,"touched"),e.isFieldTouched(r)),isFieldPending:r=>(o||t.trackField(r,"pending"),e.isFieldPending(r)),getFieldsValue:r=>(o||t.trackFieldsValue(r),e.getFieldsValue(r)),getTouchedFields:()=>(o||t.trackForm("touchedFields"),e.getTouchedFields()),getPendingFields:()=>(o||t.trackForm("pendingFields"),e.getPendingFields()),isLoading:()=>(o||t.trackForm("loading"),e.isLoading()),destroy:()=>{o||(o=!0,t.destroy(),e.destroy())}}}(e,{trackField:p,trackFieldsValue:m,trackForm:v,destroy:y}),C={core:e,instance:b,retain:u,trackField:p,trackFieldsValue:m,trackForm:v,getValuesRef:f,getFieldState:h,getViewSchemaState:g,destroy:y};return C}(e);return d.set(e,o),d.set(o.instance,o),o}(e),o=t.retain();return{runtime:t,release:o}}(t);return e.onScopeDispose(n),o}const u=Symbol("schemx:instance"),p=Symbol("schemx:form-config");function m(t){const o=c(t.form).instance;return e.provide(u,o),e.provide(p,t),o}function v(){const e=f();if(e)return e;throw new Error("[schemx] useFormContextValue() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().")}function f(){const t=e.inject(u,null),o=e.inject(p,null);if(t&&o)return{form:t,get schemaConfig(){return o.schemaConfig},get iconComponent(){return o.iconComponent},get rowComponent(){return o.rowComponent},get colComponent(){return o.colComponent}}}function h(){const t=e.inject(u,null);if(!t)throw new Error("[schemx] useFormContext() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().");return t}function g(){return c(h())}const y=Symbol("schemx:field");function b(t){e.provide(y,t)}function C(){const t=e.inject(y,null);if(!t)throw new Error("[schemx] useFieldContext() must be called inside a component tree where createFieldContext(field) has been called.");return t}const x=Symbol("schemx:config-provider");function w(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 S(t,o={}){const r=function(e){const t=Object.freeze({...e.schemaConfig??{}}),o=Object.freeze([...e.validatorAdapters??[]]);return Object.freeze({...e,schemaConfig:t,rendererProps:w(e.rendererProps),validatorAdapters:o})}(o);t.provide(x,e.computed(()=>r))}function F(o){const r=e.inject(x,void 0),n=e.computed(()=>{const e=t.mergeConfig(o.value,(null==r?void 0:r.value)??{}),n=null==r?void 0:r.value.row,l=o.value.row;return{...e,colComponent:o.value.colComponent??(null==r?void 0:r.value.colComponent),rowComponent:o.value.rowComponent??(null==r?void 0:r.value.rowComponent),iconComponent:o.value.iconComponent??(null==r?void 0:r.value.iconComponent),row:void 0===l?n:{...n,...l}}});e.provide(x,n)}function k(){var e;return null==(e=V())?void 0:e.value}function V(){if(null!==e.getCurrentInstance())return e.inject(x,void 0)}const R=t.createPresetRuleRegistry(),j=r.createRendererRegistry("input");const O=Object.freeze({labelIcon:"",labelAlign:"right",labelPosition:"left",labelWidth:"auto",contentAlign:"left",errorAlign:"left",colon:!0,showRequiredMark:void 0,col:{span:24},layout:{span:24},bordered:!0}),A=Object.keys(O);function B(o={}){const r=function(e,o={}){const r=k(),n=t.getGlobalSchemxConfig();return t.mergeConfig(e,r??{},o,n,{rendererRegistry:j,presetRuleRegistry:R})}(function(e){const{schemaConfig:t={},rendererProps:o,validatorAdapters:r=[],defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a}=e;return{schemaConfig:t,rendererProps:o,defaultRendererType:n,rendererRegistry:l,presetRuleRegistry:a,validatorAdapters:r}}(o),{}),n={...o,...r},l=c(t.createForm(n)).instance;return e.onScopeDispose(()=>{l.destroy()}),l}const P=o=>{const r=h(),n=g(),l=n.getFieldState(o);return function(o,r,n,l){const a=t.createField(r,n),s=e.computed(()=>l.errors.value),i=e.computed(()=>l.touched.value),d=e.computed(()=>l.pending.value);return{...a,name:n,value:l.value,errors:s,dirty:i,pending:d,getValue:()=>l.value.value,getErrors:()=>l.errors.value,isTouched:()=>l.touched.value,isPending:()=>l.pending.value,getValues:()=>o.getFieldsValue()}}(r,n.instance,o,l)};function E(o,r,n){const l=g(),a=t.createWatch(l.instance,o,r,n);return e.onUnmounted(a),a}function N(e,t,o){return E(e,t,o)}function $(e){return e instanceof Error?e:new Error(String(e))}const _=(t,o)=>{var r;const n=h(),l=e.shallowRef([]),a=e.ref(!1),s=e.ref(void 0);let i=0,d=null;const c=async()=>{const e=++i;null==d||d.abort();const o=new AbortController;d=o;try{const r=n.getFieldsSnapshot();if("function"==typeof t.shouldFetch&&!t.shouldFetch(r))return l.value=[],void(a.value=!1);a.value=!0,s.value=void 0;const d=await(async(e,o)=>{const r=t.retryCount??0,l=t.retryInterval??1e3;let a=new Error("Unknown error");for(let i=0;i<=r;i++)try{if(o.aborted)throw new Error("Dictionary request aborted");return await T(e,n,t.api,o)}catch(s){a=$(s),i<r&&await q(l,o)}throw a})(r,o.signal);if(e!==i||o.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||o.signal.aborted)return;l.value=c,s.value=void 0,"function"==typeof t.onSuccess&&t.onSuccess(c,n),a.value=!1}catch(r){if(o.signal.aborted||e!==i)return;const d=$(r);s.value=d,l.value=[],a.value=!1,"function"==typeof t.onError&&t.onError(d,n)}finally{d===o&&(d=null)}};(null==(r=t.dependsOn)?void 0:r.length)&&N(t.dependsOn,(e,r)=>{"function"==typeof t.onDepsChange&&t.onDepsChange(e,n),t.resetOnDepsChange&&o&&n.setFieldValue(o,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:l,loading:a,error:s,loadDict:c,refresh:()=>c(),mutate:e=>{l.value=e}}};function q(e,t){return new Promise((o,r)=>{let n=()=>{};const l=()=>{clearTimeout(a),t.removeEventListener("abort",n)},a=setTimeout(()=>{l(),o()},e);n=()=>{l(),r(new Error("Dictionary request aborted"))},t.aborted?n():t.addEventListener("abort",n,{once:!0})})}function T(e,t,o,r){return o.length>=3?o(e,t,r):o(e,t)}function L(t){const o=e.shallowRef({});return e.watchEffect(()=>{const e=t();((e,t)=>{const o=Object.keys(e),r=Object.keys(t);return o.length===r.length&&o.every(o=>e[o]===t[o])})(o.value,e)||(o.value=e)}),o}function D(e){return c(e).getViewSchemaState().viewSchemas}function W(t,o,r={}){const n=c(t).getValuesRef(),l=e.shallowRef(o(n.value)),a=r.equals??Object.is;return e.watch(n,e=>{const t=o(e);a(l.value,t)||(l.value=t)},{flush:r.flush??"sync"}),e.readonly(l)}function z(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 I=e=>/[A-Z]/.test(e),G=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 o=I(t)?H(t):G(t)?K(t):void 0;return o&&e[o]?e[o]:void 0},Z=(e,t)=>{const o={},r=(n=String(e),(G(n)?K(n):n)+":");var n;const l=(e=>I(e)?H(e):e)(String(e))+":";for(const[a,s]of Object.entries(t))a.startsWith(r)?o[a.slice(r.length)]=s:a.startsWith(l)&&l!==r&&(o[a.slice(l.length)]=s);return o};function J(e){return Array.isArray(e)?e.map(e=>String(e)).join("."):String(e)}function Q(e){return!!e&&!t.isViewGroupSchema(e)&&!1!==e.visible}function X(e,o,r){for(let n=o+r;n>=0&&n<e.length;n+=r){const o=e[n];if(!1!==o.visible){if(t.isViewGroupSchema(o))return!1;if(Q(o))return!0}}return!1}function Y(e){if(void 0===e)return[0,0,0,0];if("number"==typeof e)return[e,e,e,e];if(2===e.length){const[t,o]=e;return[t,o,t,o]}return e}const ee=e.defineComponent({name:"SchemxCol",inheritAttrs:!1,props:{col:{type:Object,required:!1,default:void 0},component:{type:[Object,Function],required:!1,default:void 0},layout:{type:Object,required:!1,default:void 0}},setup(t,o){const{attrs:r,slots:n}=o,l=f(),a=e.computed(()=>{const o=t.component??(null==l?void 0:l.colComponent);return o?e.markRaw(e.toRaw(o)):void 0});return()=>{const o=a.value,l=t.col??t.layout??{},{block:s,span:i,offset:d,...c}=l,u=s?24:i??24,p=s?0:d??0,{class:m,style:v,...f}=r;if(!o){const t=u/24*100+"%",o=p/24*100+"%";return e.h("div",{...f,class:["schemx-col",m],style:[v,{flex:`0 0 ${t}`,maxWidth:t,marginLeft:o,paddingTop:"var(--schemx-gutter-top, 0px)",paddingRight:"var(--schemx-gutter-right, 0px)",paddingBottom:"var(--schemx-gutter-bottom, 0px)",paddingLeft:"var(--schemx-gutter-left, 0px)"}]},n)}return e.h(o,{...c,...f,class:["schemx-col",m],style:v,span:u,offset:p},n)}}}),te=e.defineComponent({name:"SchemxIcon",inheritAttrs:!1,props:{icon:{type:[String,Object,Function],required:!0},component:{type:[Object,Function],required:!1,default:void 0}},setup(t){const o=e.useAttrs();return()=>{if("string"!=typeof t.icon)return e.h(e.markRaw(e.toRaw(t.icon)),o);const r=t.component;return void 0===r?e.h("span",{...o,class:["schemx-icon-text",o.class]},t.icon):e.h(e.markRaw(e.toRaw(r)),{...o,icon:t.icon})}}});const oe=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}},slots:Object,setup(r,n){const{attrs:l,slots:a}=n,s=v(),i=s.form,d=e.computed(()=>r.schema),u=function(t,o){const r=c(t).getViewSchemaState();return e.computed(()=>r.schemasByKey.value.get(o()))}(i,()=>d.value.key),p=e.computed(()=>u.value&&t.isSchemxViewFieldSchema(u.value)?u.value:d.value),m=P(p.value.name);b(m);const f=e.computed(()=>{return e=p.value.validationTrigger,t=s.schemaConfig.validationTrigger,o="onChange",z(e)?e:z(t)?t:o;var e,t,o}),h=e.computed(()=>!1!==p.value.visible&&!p.value.readonly&&!p.value.disabled),g=e=>{var t,o,r,n;m.setValue(e),null==(o=null==(t=p.value.componentProps)?void 0:t.onChange)||o.call(t,e),null==(n=(r=p.value).onChange)||n.call(r,e,i),h.value&&M("change",f.value)&&m.validate()},y=e=>{var t,o,r,n;null==(o=null==(t=p.value.componentProps)?void 0:t.onBlur)||o.call(t,e),null==(n=(r=p.value).onBlur)||n.call(r,i),h.value&&M("blur",f.value)&&m.validate()},C=e=>{m.setValue(e)},x=L(()=>({...p.value.componentProps??{},value:m.value.value,onChange:g,onBlur:y,"onUpdate:value":C})),{createSlotProps:w,renderAfter:S,renderBefore:F,renderContent:k,renderError:V,renderLabel:R}=function(t){const{schemaRef:r,field:n,form:l,formContext:a,componentProps:s,slots:i}=t,d=e.computed(()=>{if("top"===r.value.labelPosition)return"100%";const e=r.value.labelWidth??"auto";return/^\d+(?:\.\d+)?$/.test(String(e))?`${e}px`:e}),c=e.computed(()=>"top"===r.value.labelPosition?"left":r.value.labelAlign),u=(e={})=>({schema:r.value,componentProps:s.value,value:n.value.value,field:n,form:l,...e}),p=e=>{const t=U(i,`${J(r.value.name)}${e}`);return(null==t?void 0:t(u()))??null};return{createSlotProps:u,renderAfter:()=>p("After"),renderBefore:()=>p("Before"),renderContent:()=>{const t=l.getRendererEntry(r.value.componentType);if(!t)throw new Error(`[schemx] Can not find component renderer of "${r.value.componentType}".`);const o=Z(J(r.value.name),i),n=t.transformProps?t.transformProps(s.value,{schema:r.value,form:l}):s.value,a=e.h(t.component,n,o),d=U(i,`${J(r.value.name)}Content`);return e.createVNode("div",{class:"schemx-field__content",style:{textAlign:r.value.contentAlign}},[d?d(u({columnElement:a})):a])},renderError:()=>{var t;const o=U(i,`${J(r.value.name)}Error`);return o||0!==n.errors.value.length?e.createVNode("div",{class:"schemx-field__error",style:{marginLeft:"top"===(null==(t=r.value)?void 0:t.labelPosition)?"8px":`calc(${d.value} + var(--schemx-field-gap))`}},[o?o(u({errors:n.errors.value})):n.errors.value[0]]):null},renderLabel:()=>{const t=U(i,`${J(r.value.name)}Label`),n=r.value.colon??a.schemaConfig.colon,l=(r.value.showRequiredMark??Boolean(r.value.required))&&!r.value.disabled&&!r.value.readonly;return e.createVNode("label",{class:"schemx-field__label",style:{width:d.value,textAlign:c.value,marginLeft:"right"===c.value?"auto":""}},[t?t(u()):e.createVNode(e.Fragment,null,[r.value.labelIcon&&e.createVNode("span",{class:"schemx-field__label-icon"},[e.createVNode(te,{icon:r.value.labelIcon,component:a.iconComponent},null)]),e.createVNode("span",{class:o("schemx-field__label-text",{"is-required":l})},[r.value.label,n?":":""])])])}}}({schemaRef:p,field:m,form:i,formContext:s,componentProps:x,slots:a});return()=>{if(!1===p.value.visible)return null;const t=U(a,J(p.value.name)),n=p.value.labelPosition,i=t?t(w()):e.createVNode("div",{class:o("schemx-field",`schemx-field--label-${n}`,{"is-readonly":p.value.readonly,"is-disabled":p.value.disabled})},[R(),k()]),d=e.createVNode("div",e.mergeProps(l,{class:o("schemx-field-wrapper",r.class,l.class,p.value.class,p.value.bordered?"is-bordered":""),style:[l.style,r.style,p.value.style,{"--schemx-content-align":p.value.contentAlign,"--schemx-error-align":p.value.errorAlign??s.schemaConfig.errorAlign??"left"}]}),[F(),i,V(),S()]);return e.createVNode(ee,{col:p.value.col??p.value.layout},"function"==typeof(c=d)||"[object Object]"===Object.prototype.toString.call(c)&&!e.isVNode(c)?d:{default:()=>[d]});var c}}}),re=["aria-busy","data-loading","disabled"],ne={key:0,class:"schemx-button__prefix"},le={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"},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 o=t,r=e.useAttrs(),n=e.computed(()=>o.disabled||o.loading),l=e.computed(()=>["schemx-button",`schemx-button--${o.size}`]);return(t,a)=>(e.openBlock(),e.createElementBlock("button",e.mergeProps(e.unref(r),{class:l.value,"aria-busy":o.loading||void 0,"data-loading":o.loading||void 0,disabled:n.value}),[t.$slots.prefix?(e.openBlock(),e.createElementBlock("span",ne,[e.renderSlot(t.$slots,"prefix")])):e.createCommentVNode("",!0),o.loading?(e.openBlock(),e.createElementBlock("svg",le,[...a[0]||(a[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),o.loading&&o.loadingText?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createTextVNode(e.toDisplayString(o.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))}});const ie=e.defineComponent({name:"SchemxDynamic",inheritAttrs:!1,props:{schema:{type:Object,required:!0},rowConfig:{type:Object,required:!1,default:void 0},renderChildren:{type:Function,required:!0}},setup:t=>()=>{if(!1===t.schema.visible)return null;const o=t.rowConfig||t.schema.row?{...t.rowConfig,...t.schema.row}:void 0,r=t.schema.items.map(r=>{const n=void 0===o?t.renderChildren(r.children):t.renderChildren(r.children,o);return e.createVNode(e.Fragment,{key:r.key},[n])});return t.schema.layout?e.createVNode(ee,{col:t.schema.layout},"function"==typeof(n=r)||"[object Object]"===Object.prototype.toString.call(n)&&!e.isVNode(n)?r:{default:()=>[r]}):r;var n}});const de=e.defineComponent({name:"SchemxGroup",inheritAttrs:!1,props:{schema:{type:Object,required:!0},rowConfig:{type:Object,required:!1,default:void 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}},slots:Object,setup(r,n){var l;const{attrs:a,slots:s}=n,i=e.ref(Boolean(r.schema.defaultCollapsed)),d=e.computed(()=>r.schema.collapsed??i.value),c=(null==(l=e.getCurrentInstance())?void 0:l.uid)??0;e.watch(()=>r.schema.collapsed,(e,t)=>{void 0!==e?i.value=e:void 0!==t&&(i.value=t)});const u=()=>{var e,t;if(!r.schema.collapsible||r.schema.disabled)return;const o=!d.value;void 0===r.schema.collapsed&&(i.value=o),null==(t=(e=r.schema).onCollapsedChange)||t.call(e,o)};return()=>{var n;const l=r.schema;if(!1===l.visible)return null;const i=Boolean(l.collapsible),p=d.value,m=l.destroyOnCollapse??!0,v=`schemx-group-${(null==(n=l.debug)?void 0:n.runtimeNodeId)??`local-${c}`}-${f=l.key,String(f).replace(/[^a-zA-Z0-9_-]/g,"-")}`;var f;const h=`${v}-header`,g=`${v}-body`,y=r.rowConfig||l.row?{...r.rowConfig,...l.row}:void 0,b=o=>t.isViewDynamicSchema(o)?!1===o.visible?null:o.items.map(e=>e.children.map(b)):t.isViewGroupSchema(o)?e.createVNode(de,{key:o.key,schema:o,class:r.class,style:r.style},s):e.createVNode(oe,{key:`${o.key}:${J(o.name)}`,schema:o},s),{hasHeader:C,renderBodyContent:x,renderHeaderContent:w}=function(t){const{schema:r,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i,slots:d,renderChildren:c}=t,u=String(r.key),p=U(d,`${u}Header`),m=U(d,`${u}Label`),v=U(d,`${u}Content`),f={schema:r,collapsed:n,collapsible:l,disabled:a,readonly:s,toggle:i};return{hasHeader:Boolean(r.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"},[r.label]);return l?e.createVNode(e.Fragment,null,[t,e.createVNode("span",{class:o("schemx-group__arrow",{"schemx-group__arrow--down":!n})},null)]):t}}}({schema:l,collapsed:p,collapsible:i,disabled:Boolean(l.disabled),readonly:Boolean(l.readonly),toggle:u,slots:s,renderChildren:()=>r.renderChildren?void 0===y?r.renderChildren(l.children):r.renderChildren(l.children,y):l.children.map(b)}),S=e.createVNode("div",{id:g,role:"group","aria-labelledby":l.label?h:void 0,"aria-hidden":p||void 0,class:"schemx-group__body",style:!m&&p?{display:"none"}:void 0},[x()]),F=e.createVNode("div",e.mergeProps(a,{class:o("schemx-group-wrapper",r.class,a.class,l.class),"data-key":l.key,"aria-disabled":l.disabled||void 0,style:[a.style,r.style,l.style]}),[e.createVNode("div",{class:o("schemx-group",{"schemx-group--collapsed":p,"is-readonly":l.readonly,"is-disabled":l.disabled})},[C&&e.createVNode("div",{id:h,role:i?"button":void 0,tabindex:i?l.disabled?-1:0:void 0,"aria-expanded":i?!p:void 0,"aria-controls":i?g:void 0,"aria-disabled":i&&l.disabled||void 0,class:o("schemx-group__header",{"schemx-group__header--clickable":i&&!l.disabled}),onClick:u,onKeydown:e=>{l.disabled||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),u())}},[w()]),m?!p&&S:S])]);return l.layout?e.createVNode(ee,{col:l.layout},"function"==typeof(k=F)||"[object Object]"===Object.prototype.toString.call(k)&&!e.isVNode(k)?F:{default:()=>[F]}):F;var k}}}),ce=de,ue=e.defineComponent({name:"SchemxRow",inheritAttrs:!1,props:{row:{type:Object,required:!1,default:void 0},enabled:{type:Boolean,required:!1,default:!0}},setup(t,o){const{attrs:r,slots:n}=o,l=f(),a=e.computed(()=>{const t=null==l?void 0:l.rowComponent;return t?e.markRaw(e.toRaw(t)):void 0});return()=>{var o,l;const s=a.value,i=t.row??{},{gutter:d,justify:c,align:u,...p}=i,{class:m,style:v,...f}=r,h={...p,...f},g=["schemx-row",m],y="start"===c?"flex-start":"end"===c?"flex-end":c,b="top"===u?"flex-start":"middle"===u?"center":"bottom"===u?"flex-end":void 0,[C,x,w,S]=Y(d),F=C/2,k=x/2,V=w/2,R=S/2,j=[v,{"--schemx-gutter-top":`${F}px`,"--schemx-gutter-right":`${k}px`,"--schemx-gutter-bottom":`${V}px`,"--schemx-gutter-left":`${R}px`,margin:`-${F}px -${k}px -${V}px -${R}px`,justifyContent:y,alignItems:b}];return t.enabled?s?e.h(s,{...h,gutter:d,justify:c,align:u,class:g,style:j},n):e.createVNode("div",e.mergeProps(f,{class:g,style:j}),[null==(l=n.default)?void 0:l.call(n)]):(null==(o=n.default)?void 0:o.call(n))??null}}});const pe=e.defineComponent({name:"SchemxSchemaList",inheritAttrs:!1,props:{schemas:{type:Array,required:!0},viewSchemas:{type:Array,required:!0},rowConfig:{type:Object,required:!1,default:void 0},fieldClassResolver:{type:Function,required:!1,default:void 0}},setup(o,{slots:r}){const n=e=>`${e.key}:${J(e.name)}`,l=(t,n=o.rowConfig)=>e.h(pe,{schemas:t,viewSchemas:o.viewSchemas,rowConfig:n,fieldClassResolver:o.fieldClassResolver},r),a=a=>{var s;if(!1===a.visible)return null;let i;return i=t.isViewGroupSchema(a)?e.createVNode(ce,{key:a.key,schema:a,rowConfig:o.rowConfig,renderChildren:l},r):t.isViewDynamicSchema(a)?e.createVNode(ie,{key:a.key,schema:a,rowConfig:o.rowConfig,renderChildren:l},r):e.createVNode(oe,{key:n(a),schema:a,class:null==(s=o.fieldClassResolver)?void 0:s.call(o,a)},r),i};return()=>{let t;return e.createVNode(ue,{row:o.rowConfig,class:"schemx-schema-list"},"function"==typeof(r=t=o.schemas.map(a))||"[object Object]"===Object.prototype.toString.call(r)&&!e.isVNode(r)?t:{default:()=>[t]});var r}}}),me=pe,ve={key:0,class:"schemx-actions"},fe=e.defineComponent({name:"SchemxForm",__name:"form",props:{schemas:{default:()=>[]},fieldRules:{default:void 0},initialValues:{default:()=>({})},modelValue:{default:()=>({})},form:{default:void 0},row:{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},colComponent:{default:void 0},rowComponent:{default:void 0},iconComponent:{default:void 0},col:{default:void 0},layout:{},labelIcon:{},labelAlign:{},labelPosition:{},labelWidth:{},contentAlign:{},errorAlign:{},validationTrigger:{default:void 0},colon:{type:Boolean,default:void 0},showRequiredMark:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0}},emits:["update:modelValue"],setup(o,{expose:r,emit:l}){const a=o,s=l,i=e.useSlots(),d=[...t.defaultSchemxConfigKeys,...A],c=void 0!==a.form,u=e.computed(()=>{const e=n.pick(a,d);return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}),p=V(),v=t.getGlobalSchemxConfig(),f={schemaConfig:{visible:!0,validationTrigger:["blur","change"]}},h=e.computed(()=>c?t.mergeConfig({schemaConfig:u.value},f):t.mergeConfig({schemaConfig:u.value},(null==p?void 0:p.value)??{},f,v)),g=e.computed(()=>({...O,...h.value.schemaConfig})),y=e.computed(()=>t.resolveSchemxConfig({schemaConfig:g.value}).schemaConfig),b=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),C=e.computed(()=>a.colComponent??(null==p?void 0:p.value.colComponent)??v.colComponent),x=e.computed(()=>a.rowComponent??(null==p?void 0:p.value.rowComponent)??v.rowComponent),w=e.computed(()=>a.iconComponent??(null==p?void 0:p.value.iconComponent)??v.iconComponent),S=e.computed(()=>{const e=y.value.row,t=(null==p?void 0:p.value.row)??v.row??e;if(void 0!==t||void 0!==a.row)return{...t,...a.row}}),F=m({form:a.form?a.form:B({schemas:a.schemas,schemaConfig:y.value,initialValues:Object.keys(a.modelValue).length>0?a.modelValue:a.initialValues,rendererProps:a.rendererProps,rendererRegistry:a.rendererRegistry,defaultRendererType:a.defaultRendererType,presetRuleRegistry:a.presetRuleRegistry,fieldRules:a.fieldRules,validatorAdapters:a.validatorAdapters,schedulerOptions:a.schedulerOptions,validationConcurrency:a.validationConcurrency,onFinish:e=>{var t;return null==(t=a.onFinish)?void 0:t.call(a,e)},onFinishFailed:e=>{var t;return null==(t=a.onFinishFailed)?void 0:t.call(a,e)},onReset:()=>{var e;null==(e=a.onReset)||e.call(a)},onLoadingChange:e=>{var t;null==(t=a.onLoadingChange)||t.call(a,e)},onValuesChange:(e,t)=>{var o;null==(o=a.onValuesChange)||o.call(a,e,t)},onFieldsChange:(e,t)=>{var o;null==(o=a.onFieldsChange)||o.call(a,e,t)}}),get schemaConfig(){return g.value},get iconComponent(){return w.value},get colComponent(){return C.value},get rowComponent(){return x.value}}),k=e.computed(()=>a.loading??F.isLoading()),R=e.computed(()=>["schemx",a.class]),j=e.computed(()=>a.style),P=e=>!0===e?{}:e||{},E=e.computed(()=>P(a.submitter)),N=e.computed(()=>P(a.resetter)),$=e=>Object.fromEntries(Object.entries(e.buttonProps??{}).filter(([e])=>"type"!==e&&"onClick"!==e)),_=e.computed(()=>$(E.value)),q=e.computed(()=>$(N.value)),T=e.computed(()=>!1!==a.submitter&&(void 0!==a.submitter||i.submitter)),L=e.computed(()=>!1!==a.resetter&&(void 0!==a.resetter||i.resetter)),z=e.computed(()=>T.value||L.value),M=e.computed(()=>Object.fromEntries(Object.entries(i).filter(([e])=>"submitter"!==e&&"resetter"!==e))),I=e.computed(()=>k.value||Boolean(_.value.disabled)),G=e.computed(()=>k.value||Boolean(q.value.disabled));let H=!1;const K=new Set;e.watch(()=>a.modelValue,t=>{if(!K.delete(e.toRaw(t))){H=!0;try{F.setFieldsValue(t)}finally{H=!1}}},{deep:!0,immediate:c});const U=()=>F.submit(),Z=()=>{F.reset()},J=W(F,e=>e);e.watch(J,t=>{H||(t=>{const o=e.toRaw(t);K.add(o),s("update:modelValue",t),e.nextTick(()=>{K.delete(o)})})(t)},{flush:"sync"}),e.watch(()=>a.schemas,e=>{t.isSchemxSchemas(e)||F.setSchemas(e)},{immediate:c});const Y=D(F),ee=e=>{const{isFirst:t,isLast:o}=function(e,t){const o=e.findIndex(e=>e.key===t);return-1===o?{found:!1,isFirst:!1,isLast:!1}:Q(e[o])?{found:!0,isFirst:!X(e,o,-1),isLast:!X(e,o,1)}:{found:!0,isFirst:!1,isLast:!1}}(Y.value,e.key);return{"schemx-field-wrapper--first":t,"schemx-field-wrapper--last":o}},te=e=>{F.updateSchemaConfig(e)},oe=(e,t)=>{const o={...e};if(void 0!==t)for(const r of d)b(t,r)&&!b(e,r)&&(o[r]=void 0);Object.keys(o).length>0&&F.updateSchemaConfig(o)};c?e.watch(u,oe,{deep:!0,immediate:!0}):e.watch(y,te,{deep:!0});return r({...F,submit:U,reset:Z}),(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(R.value),style:e.normalizeStyle(j.value)},[e.createVNode(e.unref(me),{schemas:e.unref(Y),"view-schemas":e.unref(Y),"row-component":x.value,"row-config":S.value,"field-class-resolver":ee},e.createSlots({_:2},[e.renderList(M.value,(o,r)=>({name:r,fn:e.withCtx(o=>[e.renderSlot(t.$slots,r,e.normalizeProps(e.guardReactiveProps(o??{})))])}))]),1032,["schemas","view-schemas","row-component","row-config"]),z.value?(e.openBlock(),e.createElementBlock("div",ve,[L.value&&e.unref(i).resetter?e.renderSlot(t.$slots,"resetter",{form:e.unref(F),loading:k.value,disabled:G.value,reset:Z},void 0,void 0,0):L.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:1},q.value,{class:"schemx-actions-button schemx-actions-button--reset",type:"button",disabled:G.value,onClick:Z}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(N.value.text??"重置"),1)]),_:1},16,["disabled"])):e.createCommentVNode("",!0),T.value&&e.unref(i).submitter?e.renderSlot(t.$slots,"submitter",{form:e.unref(F),loading:k.value,disabled:I.value,submit:U},void 0,void 0,2):T.value?(e.openBlock(),e.createBlock(e.unref(se),e.mergeProps({key:3},_.value,{class:"schemx-actions-button schemx-actions-button--submit",type:"button",loading:k.value,disabled:I.value,onClick:U}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(E.value.text??"提交"),1)]),_:1},16,["loading","disabled"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],6))}});var he,ge;const ye=(he=fe,ge={install(e,t={}){S(e,t),e.component("SchemxForm",fe)},Field:oe},Object.assign(he,ge));const be=e.defineComponent({name:"SchemxWrapper",inheritAttrs:!1,__name:"index",props:{readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){const o=t,r=e.useAttrs(),n=e.useSlots(),l=e.ref(!1),a=e.computed(()=>["schemx-wrapper",r.class,o.readonly&&"schemx-wrapper--readonly",o.disabled&&"schemx-wrapper--disabled"]),s=e.computed(()=>{const{class:e,...t}=r;return t}),i=e=>{!e||n.readonly||l.value};return e.onMounted(()=>i(o.readonly)),e.watch(()=>o.readonly,i),(t,r)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(s.value,{class:a.value}),[o.readonly?e.renderSlot(t.$slots,"readonly",{readonly:o.readonly,disabled:o.disabled},void 0,void 0,0):e.renderSlot(t.$slots,"default",{readonly:o.readonly,disabled:o.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},rowComponent:{type:[Object,Function],default:void 0},iconComponent:{type:[Object,Function],default:void 0},row:{type:Object,default:void 0}},setup(t,o){const{slots:r,attrs:n}=o;return F(e.computed(()=>({schemaConfig:t.schemaConfig,rendererProps:t.rendererProps,validatorAdapters:t.validatorAdapters,defaultRendererType:t.defaultRendererType,rendererRegistry:t.rendererRegistry,presetRuleRegistry:t.presetRuleRegistry,colComponent:t.colComponent,rowComponent:t.rowComponent,iconComponent:t.iconComponent,row:t.row,...n}))),()=>{var e;return null==(e=r.default)?void 0:e.call(r)}}});exports.Col=ee,exports.ConfigProvider=Ce,exports.Field=oe,exports.Group=ce,exports.Icon=te,exports.Row=ue,exports.WithRemoteOptions=function(t){return e.defineComponent({name:`WithRemoteOptions(${t.name||"Anonymous"})`,inheritAttrs:!1,props:{dict:{type:[Object,Function],default:void 0}},setup(o,{attrs:r,slots:n}){const l=function(e){return"function"==typeof e?{api:e}:e}(o.dict),a=l?r.fieldName??C().name:void 0,s=l?_(l,a):null,i=e.computed(()=>({...r,dict:l,options:l?null==s?void 0:s.list.value:r.options,loading:l?null==s?void 0:s.loading.value:r.loading}));return()=>e.h(t,i.value,n)}})},exports.Wrapper=be,exports.createConfigProviderContext=F,exports.createFieldContext=b,exports.createFormConfigContext=function(t){e.provide(p,t)},exports.createFormContext=function(t){const o=c(t).instance;return e.provide(u,o),o},exports.default=ye,exports.normalizeSchemxGutter=Y,exports.presetRuleRegistry=R,exports.provideFormContext=m,exports.rendererRegistry=j,exports.schemxForm=ye,exports.useConfigProviderContext=k,exports.useConfigProviderContextRef=V,exports.useDictionary=_,exports.useField=P,exports.useFieldContext=C,exports.useForm=B,exports.useFormConfigContext=function(){const t=e.inject(p,null);if(!t)throw new Error("[schemx] useFormConfigContext() must be called inside a <SchemxForm> descendant. Ensure provideFormContext({ form, schemaConfig }) is called synchronously during setup().");return t},exports.useFormContext=h,exports.useFormContextValue=v,exports.useFormRuntimeContext=g,exports.useFormSelector=W,exports.useStableRef=L,exports.useViewSchemas=D,exports.useWatch=E,exports.useWatchAll=function(e,t){return E(e,t)},exports.useWatchField=function(e,t,o){return E(e,t,o)},exports.useWatchFields=N,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
|