@silver-formily/vue 2.3.2 → 2.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.en.md +6 -6
  2. package/README.md +6 -6
  3. package/esm/components/ArrayField.d.ts +67 -58
  4. package/esm/components/ArrayField.mjs +23 -23
  5. package/esm/components/ArrayField.mjs.map +1 -1
  6. package/esm/components/ExpressionScope.d.ts +21 -16
  7. package/esm/components/ExpressionScope.mjs +22 -24
  8. package/esm/components/ExpressionScope.mjs.map +1 -1
  9. package/esm/components/Field.d.ts +67 -58
  10. package/esm/components/Field.mjs +23 -23
  11. package/esm/components/Field.mjs.map +1 -1
  12. package/esm/components/FormConsumer.d.ts +9 -4
  13. package/esm/components/FormConsumer.mjs +17 -18
  14. package/esm/components/FormConsumer.mjs.map +1 -1
  15. package/esm/components/FormProvider.d.ts +21 -16
  16. package/esm/components/FormProvider.mjs +26 -26
  17. package/esm/components/FormProvider.mjs.map +1 -1
  18. package/esm/components/ObjectField.d.ts +68 -58
  19. package/esm/components/ObjectField.mjs +23 -23
  20. package/esm/components/ObjectField.mjs.map +1 -1
  21. package/esm/components/ReactiveField.mjs +103 -75
  22. package/esm/components/ReactiveField.mjs.map +1 -1
  23. package/esm/components/RecursionField.d.ts +142 -22
  24. package/esm/components/RecursionField.mjs +123 -127
  25. package/esm/components/RecursionField.mjs.map +1 -1
  26. package/esm/components/SchemaField.d.ts +3041 -2919
  27. package/esm/components/SchemaField.mjs +104 -97
  28. package/esm/components/SchemaField.mjs.map +1 -1
  29. package/esm/components/VoidField.d.ts +48 -42
  30. package/esm/components/VoidField.mjs +23 -23
  31. package/esm/components/VoidField.mjs.map +1 -1
  32. package/esm/components/index.d.ts +9 -9
  33. package/esm/components/index.mjs +10 -21
  34. package/esm/hooks/index.d.ts +5 -5
  35. package/esm/hooks/index.mjs +6 -13
  36. package/esm/hooks/useAttach.mjs +21 -13
  37. package/esm/hooks/useAttach.mjs.map +1 -1
  38. package/esm/hooks/useField.d.ts +8 -3
  39. package/esm/hooks/useField.mjs +9 -8
  40. package/esm/hooks/useField.mjs.map +1 -1
  41. package/esm/hooks/useFieldSchema.d.ts +8 -1
  42. package/esm/hooks/useFieldSchema.mjs +9 -8
  43. package/esm/hooks/useFieldSchema.mjs.map +1 -1
  44. package/esm/hooks/useForm.d.ts +8 -3
  45. package/esm/hooks/useForm.mjs +9 -8
  46. package/esm/hooks/useForm.mjs.map +1 -1
  47. package/esm/hooks/useFormEffects.d.ts +7 -2
  48. package/esm/hooks/useFormEffects.mjs +18 -15
  49. package/esm/hooks/useFormEffects.mjs.map +1 -1
  50. package/esm/hooks/useInjectionCleaner.mjs +8 -7
  51. package/esm/hooks/useInjectionCleaner.mjs.map +1 -1
  52. package/esm/hooks/useParentForm.d.ts +8 -3
  53. package/esm/hooks/useParentForm.mjs +18 -11
  54. package/esm/hooks/useParentForm.mjs.map +1 -1
  55. package/esm/index.d.ts +19 -4
  56. package/esm/index.mjs +20 -42
  57. package/esm/shared/connect.d.ts +10 -5
  58. package/esm/shared/connect.mjs +69 -63
  59. package/esm/shared/connect.mjs.map +1 -1
  60. package/esm/shared/context.d.ts +15 -10
  61. package/esm/shared/context.mjs +11 -10
  62. package/esm/shared/context.mjs.map +1 -1
  63. package/esm/shared/index.d.ts +2 -2
  64. package/esm/shared/index.mjs +3 -14
  65. package/esm/types/index.d.ts +72 -68
  66. package/esm/types/validator.d.ts +39 -35
  67. package/esm/utils/fieldProps.mjs +53 -51
  68. package/esm/utils/fieldProps.mjs.map +1 -1
  69. package/esm/utils/getRawComponent.mjs +16 -12
  70. package/esm/utils/getRawComponent.mjs.map +1 -1
  71. package/esm/utils/reactiveFieldHelpers.mjs +116 -94
  72. package/esm/utils/reactiveFieldHelpers.mjs.map +1 -1
  73. package/esm/utils/recursionFieldProps.mjs +14 -13
  74. package/esm/utils/recursionFieldProps.mjs.map +1 -1
  75. package/esm/utils/resolveSchemaProps.mjs +13 -10
  76. package/esm/utils/resolveSchemaProps.mjs.map +1 -1
  77. package/esm/utils/runtimeProps.d.ts +10 -7
  78. package/esm/utils/runtimeProps.mjs +15 -15
  79. package/esm/utils/runtimeProps.mjs.map +1 -1
  80. package/esm/utils/schemaFieldProps.mjs +63 -62
  81. package/esm/utils/schemaFieldProps.mjs.map +1 -1
  82. package/package.json +13 -12
  83. package/esm/components/ReactiveField.d.ts +0 -16
  84. package/esm/components/index.mjs.map +0 -1
  85. package/esm/global.d.d.ts +0 -1
  86. package/esm/global.d.mjs +0 -2
  87. package/esm/global.d.mjs.map +0 -1
  88. package/esm/hooks/index.mjs.map +0 -1
  89. package/esm/hooks/useAttach.d.ts +0 -7
  90. package/esm/hooks/useInjectionCleaner.d.ts +0 -2
  91. package/esm/index.mjs.map +0 -1
  92. package/esm/shared/index.mjs.map +0 -1
  93. package/esm/types/index.mjs +0 -2
  94. package/esm/types/index.mjs.map +0 -1
  95. package/esm/types/validator.mjs +0 -2
  96. package/esm/types/validator.mjs.map +0 -1
  97. package/esm/utils/fieldProps.d.ts +0 -51
  98. package/esm/utils/getRawComponent.d.ts +0 -8
  99. package/esm/utils/reactiveFieldHelpers.d.ts +0 -16
  100. package/esm/utils/recursionFieldProps.d.ts +0 -67
  101. package/esm/utils/resolveSchemaProps.d.ts +0 -1
  102. package/esm/utils/schemaFieldProps.d.ts +0 -232
@@ -1,22 +1,142 @@
1
- import { VNode } from 'vue';
2
- import { Schema } from '@formily/json-schema';
3
- declare const RecursionField: import('vue').DefineComponent<{
4
- schema: Schema | import('@formily/json-schema').ISchema;
5
- name?: import('@formily/json-schema').SchemaKey | undefined;
6
- basePath?: import('@formily/shared').FormPathPattern | undefined;
7
- onlyRenderProperties?: boolean | undefined;
8
- onlyRenderSelf?: boolean | undefined;
9
- mapProperties?: import('..').ISchemaMapper | undefined;
10
- filterProperties?: import('..').ISchemaFilter | undefined;
11
- }, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
12
- [key: string]: any;
13
- }> | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
14
- schema: Schema | import('@formily/json-schema').ISchema;
15
- name?: import('@formily/json-schema').SchemaKey | undefined;
16
- basePath?: import('@formily/shared').FormPathPattern | undefined;
17
- onlyRenderProperties?: boolean | undefined;
18
- onlyRenderSelf?: boolean | undefined;
19
- mapProperties?: import('..').ISchemaMapper | undefined;
20
- filterProperties?: import('..').ISchemaFilter | undefined;
21
- }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
22
- export default RecursionField;
1
+ import { ISchemaFilter, ISchemaMapper } from "../types/index.js";
2
+ import * as _$vue from "vue";
3
+ import { VNode } from "vue";
4
+ import * as _$_formily_shared0 from "@formily/shared";
5
+ import * as _$_formily_json_schema0 from "@formily/json-schema";
6
+ import { Schema } from "@formily/json-schema";
7
+
8
+ //#region src/components/RecursionField.d.ts
9
+ declare const RecursionField: _$vue.DefineComponent<{
10
+ readonly name?: _$_formily_json_schema0.SchemaKey | undefined;
11
+ readonly basePath?: _$_formily_shared0.FormPathPattern | undefined;
12
+ readonly schema?: Schema<any, any, any, any, any, any, any, any, any> | _$_formily_json_schema0.Stringify<{
13
+ [key: symbol]: any;
14
+ [key: `x-${string}`]: any;
15
+ [key: `x-${number}`]: any;
16
+ version?: string;
17
+ name?: _$_formily_json_schema0.SchemaKey;
18
+ title?: any;
19
+ description?: any;
20
+ default?: any;
21
+ readOnly?: boolean;
22
+ writeOnly?: boolean;
23
+ type?: _$_formily_json_schema0.SchemaTypes;
24
+ enum?: _$_formily_json_schema0.SchemaEnum<any> | undefined;
25
+ const?: any;
26
+ multipleOf?: number;
27
+ maximum?: number;
28
+ exclusiveMaximum?: number;
29
+ minimum?: number;
30
+ exclusiveMinimum?: number;
31
+ maxLength?: number;
32
+ minLength?: number;
33
+ pattern?: string | RegExp;
34
+ maxItems?: number;
35
+ minItems?: number;
36
+ uniqueItems?: boolean;
37
+ maxProperties?: number;
38
+ minProperties?: number;
39
+ required?: string[] | boolean | string;
40
+ format?: string;
41
+ $ref?: string;
42
+ $namespace?: string;
43
+ definitions?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
44
+ properties?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
45
+ items?: _$_formily_json_schema0.SchemaItems<any, any, any, any, any, any, any, any> | undefined;
46
+ additionalItems?: _$_formily_json_schema0.Stringify< /*elided*/any> | undefined;
47
+ patternProperties?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
48
+ additionalProperties?: _$_formily_json_schema0.Stringify< /*elided*/any> | undefined;
49
+ "x-value"?: any;
50
+ "x-index"?: number;
51
+ "x-pattern"?: any;
52
+ "x-display"?: any;
53
+ "x-validator"?: any;
54
+ "x-decorator"?: any;
55
+ "x-decorator-props"?: any;
56
+ "x-component"?: any;
57
+ "x-component-props"?: any;
58
+ "x-reactions"?: _$_formily_json_schema0.SchemaReactions<any> | undefined;
59
+ "x-content"?: any;
60
+ "x-data"?: any;
61
+ "x-visible"?: boolean;
62
+ "x-hidden"?: boolean;
63
+ "x-disabled"?: boolean;
64
+ "x-editable"?: boolean;
65
+ "x-read-only"?: boolean;
66
+ "x-read-pretty"?: boolean;
67
+ "x-compile-omitted"?: string[];
68
+ }> | undefined;
69
+ readonly mapProperties?: ISchemaMapper | undefined;
70
+ readonly filterProperties?: ISchemaFilter | undefined;
71
+ readonly onlyRenderProperties?: boolean | undefined;
72
+ readonly onlyRenderSelf?: boolean | undefined;
73
+ }, () => VNode<_$vue.RendererNode, _$vue.RendererElement, {
74
+ [key: string]: any;
75
+ }> | null, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{
76
+ readonly name?: _$_formily_json_schema0.SchemaKey | undefined;
77
+ readonly basePath?: _$_formily_shared0.FormPathPattern | undefined;
78
+ readonly schema?: Schema<any, any, any, any, any, any, any, any, any> | _$_formily_json_schema0.Stringify<{
79
+ [key: symbol]: any;
80
+ [key: `x-${string}`]: any;
81
+ [key: `x-${number}`]: any;
82
+ version?: string;
83
+ name?: _$_formily_json_schema0.SchemaKey;
84
+ title?: any;
85
+ description?: any;
86
+ default?: any;
87
+ readOnly?: boolean;
88
+ writeOnly?: boolean;
89
+ type?: _$_formily_json_schema0.SchemaTypes;
90
+ enum?: _$_formily_json_schema0.SchemaEnum<any> | undefined;
91
+ const?: any;
92
+ multipleOf?: number;
93
+ maximum?: number;
94
+ exclusiveMaximum?: number;
95
+ minimum?: number;
96
+ exclusiveMinimum?: number;
97
+ maxLength?: number;
98
+ minLength?: number;
99
+ pattern?: string | RegExp;
100
+ maxItems?: number;
101
+ minItems?: number;
102
+ uniqueItems?: boolean;
103
+ maxProperties?: number;
104
+ minProperties?: number;
105
+ required?: string[] | boolean | string;
106
+ format?: string;
107
+ $ref?: string;
108
+ $namespace?: string;
109
+ definitions?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
110
+ properties?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
111
+ items?: _$_formily_json_schema0.SchemaItems<any, any, any, any, any, any, any, any> | undefined;
112
+ additionalItems?: _$_formily_json_schema0.Stringify< /*elided*/any> | undefined;
113
+ patternProperties?: _$_formily_json_schema0.SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
114
+ additionalProperties?: _$_formily_json_schema0.Stringify< /*elided*/any> | undefined;
115
+ "x-value"?: any;
116
+ "x-index"?: number;
117
+ "x-pattern"?: any;
118
+ "x-display"?: any;
119
+ "x-validator"?: any;
120
+ "x-decorator"?: any;
121
+ "x-decorator-props"?: any;
122
+ "x-component"?: any;
123
+ "x-component-props"?: any;
124
+ "x-reactions"?: _$_formily_json_schema0.SchemaReactions<any> | undefined;
125
+ "x-content"?: any;
126
+ "x-data"?: any;
127
+ "x-visible"?: boolean;
128
+ "x-hidden"?: boolean;
129
+ "x-disabled"?: boolean;
130
+ "x-editable"?: boolean;
131
+ "x-read-only"?: boolean;
132
+ "x-read-pretty"?: boolean;
133
+ "x-compile-omitted"?: string[];
134
+ }> | undefined;
135
+ readonly mapProperties?: ISchemaMapper | undefined;
136
+ readonly filterProperties?: ISchemaFilter | undefined;
137
+ readonly onlyRenderProperties?: boolean | undefined;
138
+ readonly onlyRenderSelf?: boolean | undefined;
139
+ }> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
140
+ //#endregion
141
+ export { RecursionField };
142
+ //# sourceMappingURL=RecursionField.d.ts.map
@@ -1,129 +1,125 @@
1
- import { Schema as S } from "@formily/json-schema";
2
- import { lazyMerge as E, isValid as x, isFn as w } from "@formily/shared";
3
- import { defineComponent as A, inject as j, computed as B, shallowRef as C, watch as M, provide as V, markRaw as $, h as u, Fragment as z } from "vue";
4
- import { useField as I } from "../hooks/useField.mjs";
5
- import { SchemaOptionsSymbol as K, SchemaExpressionScopeSymbol as q, SchemaSymbol as D } from "../shared/context.mjs";
6
- import "@formily/core";
7
- import "@silver-formily/reactive-vue";
8
- import { recursionFieldProps as G } from "../utils/recursionFieldProps.mjs";
9
- import H from "./ArrayField.mjs";
10
- import J from "./Field.mjs";
11
- import L from "./ObjectField.mjs";
12
- import N from "./VoidField.mjs";
13
- function F(e) {
14
- const c = Object.keys(e);
15
- if (!c.length)
16
- return;
17
- const i = c.reduce((s, y) => {
18
- const t = e[y];
19
- if (!t)
20
- return s;
21
- const f = t();
22
- if (!f?.length)
23
- return s;
24
- const p = f.filter((P) => x(P));
25
- return s.push(...p), s;
26
- }, []);
27
- if (i.length)
28
- return u(z, null, i);
1
+ import { SchemaExpressionScopeSymbol, SchemaOptionsSymbol, SchemaSymbol } from "../shared/context.mjs";
2
+ import { useField } from "../hooks/useField.mjs";
3
+ import "../hooks/index.mjs";
4
+ import "../shared/index.mjs";
5
+ import ArrayField_default from "./ArrayField.mjs";
6
+ import Field_default from "./Field.mjs";
7
+ import ObjectField_default from "./ObjectField.mjs";
8
+ import { recursionFieldProps } from "../utils/recursionFieldProps.mjs";
9
+ import VoidField_default from "./VoidField.mjs";
10
+ import { Fragment, computed, defineComponent, h, inject, markRaw, provide, shallowRef, watch } from "vue";
11
+ import { isFn, isValid, lazyMerge } from "@formily/shared";
12
+ import { Schema } from "@formily/json-schema";
13
+ //#region src/components/RecursionField.ts
14
+ function resolveEmptySlot(slots) {
15
+ const slotKeys = Object.keys(slots);
16
+ if (!slotKeys.length) return null;
17
+ const children = slotKeys.reduce((acc, key) => {
18
+ const slot = slots[key];
19
+ if (!slot) return acc;
20
+ const result = slot();
21
+ if (!result?.length) return acc;
22
+ const validChildren = result.filter((child) => isValid(child));
23
+ acc.push(...validChildren);
24
+ return acc;
25
+ }, []);
26
+ if (!children.length) return null;
27
+ return h(Fragment, null, children);
29
28
  }
30
- const Q = A({
31
- name: "RecursionField",
32
- inheritAttrs: !1,
33
- props: G,
34
- setup(e) {
35
- const c = I(), i = j(K), s = j(q);
36
- if (!i || !s)
37
- throw new Error("RecursionField must be used under SchemaField.");
38
- const y = (r) => $(S.isSchemaInstance(r) ? r : new S(r)), t = B(() => y(e.schema)), f = (r) => r?.toFieldProps?.({
39
- ...i.value,
40
- get scope() {
41
- return E(
42
- {},
43
- i.value.scope ?? {},
44
- s.value
45
- );
46
- }
47
- }), p = C(f(t.value));
48
- M([t, i], () => {
49
- p.value = f(t.value);
50
- });
51
- const P = () => e.onlyRenderProperties ? e.basePath ?? c?.value?.address.concat(e.name) : e.basePath ?? c?.value?.address;
52
- return V(D, t), () => {
53
- const r = P(), v = p.value, d = (R = !1) => {
54
- if (e.onlyRenderSelf)
55
- return {};
56
- const b = S.getOrderProperties(t.value);
57
- if (!b.length)
58
- return {};
59
- const h = {}, k = (o, a) => {
60
- h[o] || (h[o] = []), h[o].push(a);
61
- };
62
- for (const [o, { schema: a, key: l }] of b.entries()) {
63
- let n = a;
64
- if (w(e.mapProperties)) {
65
- const m = e.mapProperties(a, l);
66
- m && (n = m);
67
- }
68
- w(e.filterProperties) && e.filterProperties(n, l) === !1 || k(n["x-slot"] ?? "default", (m) => u(Q, {
69
- key: `${o}-${l}`,
70
- schema: n,
71
- name: l,
72
- basePath: m?.address ?? r,
73
- slot: n["x-slot"]
74
- }));
75
- }
76
- const g = {};
77
- for (const o of Object.keys(h)) {
78
- const a = h[o], l = R ? (n) => a.map((m) => m(n?.field)) : () => a.map((n) => n());
79
- g[o] = l;
80
- }
81
- return g;
82
- }, O = () => {
83
- if (!x(e.name))
84
- return F(d());
85
- if (t.value.type === "object")
86
- return e.onlyRenderProperties ? F(d()) : u(
87
- L,
88
- {
89
- ...v,
90
- name: e.name,
91
- basePath: r
92
- },
93
- d(!0)
94
- );
95
- if (t.value.type === "array")
96
- return u(H, {
97
- ...v,
98
- name: e.name,
99
- basePath: r
100
- });
101
- if (t.value.type === "void") {
102
- if (e.onlyRenderProperties)
103
- return F(d());
104
- const R = d(!0);
105
- return u(
106
- N,
107
- {
108
- ...v,
109
- name: e.name,
110
- basePath: r
111
- },
112
- R
113
- );
114
- }
115
- return u(J, {
116
- ...v,
117
- name: e.name,
118
- basePath: r
119
- });
120
- };
121
- if (t.value)
122
- return O();
123
- };
124
- }
29
+ const RecursionField = defineComponent({
30
+ name: "RecursionField",
31
+ inheritAttrs: false,
32
+ props: recursionFieldProps,
33
+ setup(props) {
34
+ const parentRef = useField();
35
+ const optionsRef = inject(SchemaOptionsSymbol);
36
+ const scopeRef = inject(SchemaExpressionScopeSymbol);
37
+ if (!optionsRef || !scopeRef) throw new Error("RecursionField must be used under SchemaField.");
38
+ const createSchema = (schemaProp) => markRaw(Schema.isSchemaInstance(schemaProp) ? schemaProp : new Schema(schemaProp));
39
+ const fieldSchemaRef = computed(() => createSchema(props.schema ?? {}));
40
+ const getPropsFromSchema = (schema) => schema?.toFieldProps?.({
41
+ ...optionsRef.value,
42
+ get scope() {
43
+ return lazyMerge({}, optionsRef.value.scope ?? {}, scopeRef.value);
44
+ }
45
+ });
46
+ const fieldPropsRef = shallowRef(getPropsFromSchema(fieldSchemaRef.value));
47
+ watch([fieldSchemaRef, optionsRef], () => {
48
+ fieldPropsRef.value = getPropsFromSchema(fieldSchemaRef.value);
49
+ });
50
+ const getBasePath = () => {
51
+ if (props.onlyRenderProperties) return props.basePath ?? parentRef?.value?.address.concat(props.name);
52
+ return props.basePath ?? parentRef?.value?.address;
53
+ };
54
+ provide(SchemaSymbol, fieldSchemaRef);
55
+ return () => {
56
+ const basePath = getBasePath();
57
+ const fieldProps = fieldPropsRef.value;
58
+ const generateSlotsByProperties = (scoped = false) => {
59
+ if (props.onlyRenderSelf) return {};
60
+ const properties = Schema.getOrderProperties(fieldSchemaRef.value);
61
+ if (!properties.length) return {};
62
+ const renderMap = {};
63
+ const setRender = (key, value) => {
64
+ if (!renderMap[key]) renderMap[key] = [];
65
+ renderMap[key].push(value);
66
+ };
67
+ for (const [index, { schema: item, key: name }] of properties.entries()) {
68
+ let schema = item;
69
+ if (isFn(props.mapProperties)) {
70
+ const mapped = props.mapProperties(item, name);
71
+ if (mapped) schema = mapped;
72
+ }
73
+ if (isFn(props.filterProperties) && props.filterProperties(schema, name) === false) continue;
74
+ setRender(schema["x-slot"] ?? "default", (field) => h(RecursionField, {
75
+ key: `${index}-${name}`,
76
+ schema,
77
+ name,
78
+ basePath: field?.address ?? basePath,
79
+ slot: schema["x-slot"]
80
+ }));
81
+ }
82
+ const slots = {};
83
+ for (const key of Object.keys(renderMap)) {
84
+ const renderFns = renderMap[key];
85
+ slots[key] = scoped ? (payload) => renderFns.map((fn) => fn(payload?.field)) : () => renderFns.map((fn) => fn());
86
+ }
87
+ return slots;
88
+ };
89
+ const render = () => {
90
+ if (!isValid(props.name)) return resolveEmptySlot(generateSlotsByProperties());
91
+ if (fieldSchemaRef.value.type === "object") {
92
+ if (props.onlyRenderProperties) return resolveEmptySlot(generateSlotsByProperties());
93
+ return h(ObjectField_default, {
94
+ ...fieldProps,
95
+ name: props.name,
96
+ basePath
97
+ }, generateSlotsByProperties(true));
98
+ } else if (fieldSchemaRef.value.type === "array") return h(ArrayField_default, {
99
+ ...fieldProps,
100
+ name: props.name,
101
+ basePath
102
+ });
103
+ else if (fieldSchemaRef.value.type === "void") {
104
+ if (props.onlyRenderProperties) return resolveEmptySlot(generateSlotsByProperties());
105
+ const slots = generateSlotsByProperties(true);
106
+ return h(VoidField_default, {
107
+ ...fieldProps,
108
+ name: props.name,
109
+ basePath
110
+ }, slots);
111
+ }
112
+ return h(Field_default, {
113
+ ...fieldProps,
114
+ name: props.name,
115
+ basePath
116
+ });
117
+ };
118
+ return render();
119
+ };
120
+ }
125
121
  });
126
- export {
127
- Q as default
128
- };
129
- //# sourceMappingURL=RecursionField.mjs.map
122
+ //#endregion
123
+ export { RecursionField as default };
124
+
125
+ //# sourceMappingURL=RecursionField.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecursionField.mjs","sources":["../../src/components/RecursionField.ts"],"sourcesContent":["import type { GeneralField } from '@formily/core'\nimport type { Slots, VNode } from 'vue'\nimport type { IRecursionFieldProps, SchemaExpressionScope } from '../types'\nimport { Schema } from '@formily/json-schema'\nimport { isFn, isValid, lazyMerge } from '@formily/shared'\nimport { computed, defineComponent, Fragment, h, inject, markRaw, provide, shallowRef, watch } from 'vue'\nimport { useField } from '../hooks'\nimport { SchemaExpressionScopeSymbol, SchemaOptionsSymbol, SchemaSymbol } from '../shared'\nimport { recursionFieldProps } from '../utils/recursionFieldProps'\nimport ArrayField from './ArrayField'\nimport Field from './Field'\n\nimport ObjectField from './ObjectField'\nimport VoidField from './VoidField'\n\ntype PropertyRenderFn = (field?: GeneralField) => VNode\ninterface ScopedSlotPayload { field?: GeneralField }\ntype SlotRender = (payload?: ScopedSlotPayload) => VNode[] | undefined\ntype SlotMap = Record<string, SlotRender>\n\nfunction resolveEmptySlot(slots: SlotMap) {\n const slotKeys = Object.keys(slots)\n if (!slotKeys.length)\n return undefined\n const children = slotKeys.reduce<VNode[]>((acc, key) => {\n const slot = slots[key]\n if (!slot)\n return acc\n const result = slot()\n if (!result?.length)\n return acc\n const validChildren = result.filter(child => isValid(child))\n acc.push(...validChildren)\n return acc\n }, [])\n if (!children.length)\n return undefined\n return h(Fragment, null, children)\n}\n\nconst RecursionField = defineComponent({\n name: 'RecursionField',\n inheritAttrs: false,\n props: recursionFieldProps,\n setup(props: IRecursionFieldProps) {\n const parentRef = useField()\n const optionsRef = inject(SchemaOptionsSymbol)\n const scopeRef = inject(SchemaExpressionScopeSymbol)\n\n if (!optionsRef || !scopeRef) {\n throw new Error('RecursionField must be used under SchemaField.')\n }\n const createSchema = (schemaProp: IRecursionFieldProps['schema']) =>\n markRaw(Schema.isSchemaInstance(schemaProp) ? schemaProp : new Schema(schemaProp))\n const fieldSchemaRef = computed(() => createSchema(props.schema))\n\n const getPropsFromSchema = (schema: Schema) =>\n schema?.toFieldProps?.({\n ...optionsRef.value,\n get scope() {\n return lazyMerge(\n {} as SchemaExpressionScope,\n optionsRef.value.scope ?? {},\n scopeRef.value,\n )\n },\n })\n const fieldPropsRef = shallowRef(getPropsFromSchema(fieldSchemaRef.value))\n\n watch([fieldSchemaRef, optionsRef], () => {\n fieldPropsRef.value = getPropsFromSchema(fieldSchemaRef.value)\n })\n\n const getBasePath = () => {\n if (props.onlyRenderProperties) {\n return props.basePath ?? parentRef?.value?.address.concat(props.name!)\n }\n return props.basePath ?? parentRef?.value?.address\n }\n\n provide(SchemaSymbol, fieldSchemaRef)\n\n return () => {\n const basePath = getBasePath()\n const fieldProps = fieldPropsRef.value\n\n const generateSlotsByProperties = (scoped = false): SlotMap => {\n if (props.onlyRenderSelf)\n return {}\n const properties = Schema.getOrderProperties(fieldSchemaRef.value)\n if (!properties.length)\n return {}\n const renderMap: Record<string, PropertyRenderFn[]> = {}\n const setRender = (key: string, value: PropertyRenderFn) => {\n if (!renderMap[key]) {\n renderMap[key] = []\n }\n renderMap[key].push(value)\n }\n for (const [index, { schema: item, key: name }] of properties.entries()) {\n let schema: Schema = item\n if (isFn(props.mapProperties)) {\n const mapped = props.mapProperties(item, name)\n if (mapped) {\n schema = mapped\n }\n }\n if (isFn(props.filterProperties) && props.filterProperties(schema, name) === false) {\n continue\n }\n setRender(schema['x-slot'] ?? 'default', (field?: GeneralField) =>\n h(RecursionField, {\n key: `${index}-${name}`,\n schema,\n name,\n basePath: field?.address ?? basePath,\n slot: schema['x-slot'],\n }))\n }\n const slots: SlotMap = {}\n for (const key of Object.keys(renderMap)) {\n const renderFns = renderMap[key]\n const slotRender: SlotRender = scoped\n ? payload => renderFns!.map(fn => fn(payload?.field))\n : () => renderFns!.map(fn => fn())\n slots[key] = slotRender\n }\n return slots\n }\n\n const render = () => {\n if (!isValid(props.name))\n return resolveEmptySlot(generateSlotsByProperties())\n if (fieldSchemaRef.value.type === 'object') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n return h(\n ObjectField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n generateSlotsByProperties(true) as Slots,\n )\n }\n else if (fieldSchemaRef.value.type === 'array') {\n return h(ArrayField, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n else if (fieldSchemaRef.value.type === 'void') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n const slots = generateSlotsByProperties(true)\n return h(\n VoidField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n slots as Slots,\n )\n }\n\n return h(Field, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n\n if (!fieldSchemaRef.value)\n return\n\n return render()\n }\n },\n})\n\nexport default RecursionField\n"],"names":["resolveEmptySlot","slots","slotKeys","children","acc","key","slot","result","validChildren","child","isValid","h","Fragment","RecursionField","defineComponent","recursionFieldProps","props","parentRef","useField","optionsRef","inject","SchemaOptionsSymbol","scopeRef","SchemaExpressionScopeSymbol","createSchema","schemaProp","markRaw","Schema","fieldSchemaRef","computed","getPropsFromSchema","schema","lazyMerge","fieldPropsRef","shallowRef","watch","getBasePath","provide","SchemaSymbol","basePath","fieldProps","generateSlotsByProperties","scoped","properties","renderMap","setRender","value","index","item","name","isFn","mapped","field","renderFns","slotRender","payload","fn","render","ObjectField","ArrayField","VoidField","Field"],"mappings":"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"}
1
+ {"version":3,"file":"RecursionField.mjs","names":["ObjectField","ArrayField","VoidField","Field"],"sources":["../../src/components/RecursionField.ts"],"sourcesContent":["import type { GeneralField } from '@formily/core'\nimport type { Slots, VNode } from 'vue'\nimport type { IRecursionFieldProps, SchemaExpressionScope } from '../types'\nimport type { RecursionFieldProps } from '../utils/recursionFieldProps'\nimport type { NamedSlotMap } from '../utils/slotMap'\nimport { Schema } from '@formily/json-schema'\nimport { isFn, isValid, lazyMerge } from '@formily/shared'\nimport { computed, defineComponent, Fragment, h, inject, markRaw, provide, shallowRef, watch } from 'vue'\nimport { useField } from '../hooks'\nimport { SchemaExpressionScopeSymbol, SchemaOptionsSymbol, SchemaSymbol } from '../shared'\nimport { recursionFieldProps } from '../utils/recursionFieldProps'\nimport ArrayField from './ArrayField'\nimport Field from './Field'\n\nimport ObjectField from './ObjectField'\nimport VoidField from './VoidField'\n\ntype PropertyRenderFn = (field?: GeneralField) => VNode\ninterface ScopedSlotPayload { field?: GeneralField }\ntype SlotRender = (payload?: ScopedSlotPayload) => VNode[]\ntype SlotMap = NamedSlotMap<SlotRender>\n\nfunction resolveEmptySlot(slots: SlotMap) {\n const slotKeys = Object.keys(slots)\n if (!slotKeys.length)\n return null\n const children = slotKeys.reduce<VNode[]>((acc, key) => {\n const slot = slots[key]\n if (!slot)\n return acc\n const result = slot()\n if (!result?.length)\n return acc\n const validChildren = result.filter(child => isValid(child))\n acc.push(...validChildren)\n return acc\n }, [])\n if (!children.length)\n return null\n return h(Fragment, null, children)\n}\n\nconst RecursionField = defineComponent({\n name: 'RecursionField',\n inheritAttrs: false,\n props: recursionFieldProps,\n setup(props: RecursionFieldProps) {\n const parentRef = useField()\n const optionsRef = inject(SchemaOptionsSymbol)\n const scopeRef = inject(SchemaExpressionScopeSymbol)\n\n if (!optionsRef || !scopeRef) {\n throw new Error('RecursionField must be used under SchemaField.')\n }\n const createSchema = (schemaProp: IRecursionFieldProps['schema']) =>\n markRaw(Schema.isSchemaInstance(schemaProp) ? schemaProp : new Schema(schemaProp))\n const fieldSchemaRef = computed<Schema>(() => createSchema(props.schema ?? {}))\n\n const getPropsFromSchema = (schema: Schema) =>\n schema?.toFieldProps?.({\n ...optionsRef.value,\n get scope() {\n return lazyMerge(\n {} as SchemaExpressionScope,\n optionsRef.value.scope ?? {},\n scopeRef.value,\n )\n },\n })\n const fieldPropsRef = shallowRef(getPropsFromSchema(fieldSchemaRef.value))\n\n watch([fieldSchemaRef, optionsRef], () => {\n fieldPropsRef.value = getPropsFromSchema(fieldSchemaRef.value)\n })\n\n const getBasePath = () => {\n if (props.onlyRenderProperties) {\n return props.basePath ?? parentRef?.value?.address.concat(props.name!)\n }\n return props.basePath ?? parentRef?.value?.address\n }\n\n provide(SchemaSymbol, fieldSchemaRef)\n\n return () => {\n const basePath = getBasePath()\n const fieldProps = fieldPropsRef.value\n\n const generateSlotsByProperties = (scoped = false): SlotMap => {\n if (props.onlyRenderSelf)\n return {}\n const properties = Schema.getOrderProperties(fieldSchemaRef.value)\n if (!properties.length)\n return {}\n const renderMap: Record<string, PropertyRenderFn[]> = {}\n const setRender = (key: string, value: PropertyRenderFn) => {\n if (!renderMap[key]) {\n renderMap[key] = []\n }\n renderMap[key].push(value)\n }\n for (const [index, { schema: item, key: name }] of properties.entries()) {\n let schema: Schema = item\n if (isFn(props.mapProperties)) {\n const mapped = props.mapProperties(item, name)\n if (mapped) {\n schema = mapped\n }\n }\n if (isFn(props.filterProperties) && props.filterProperties(schema, name) === false) {\n continue\n }\n setRender(schema['x-slot'] ?? 'default', (field?: GeneralField) =>\n h(RecursionField, {\n key: `${index}-${name}`,\n schema,\n name,\n basePath: field?.address ?? basePath,\n slot: schema['x-slot'],\n }))\n }\n const slots: SlotMap = {}\n for (const key of Object.keys(renderMap)) {\n const renderFns = renderMap[key]\n const slotRender: SlotRender = scoped\n ? payload => renderFns!.map(fn => fn(payload?.field))\n : () => renderFns!.map(fn => fn())\n slots[key] = slotRender\n }\n return slots\n }\n\n const render = () => {\n if (!isValid(props.name))\n return resolveEmptySlot(generateSlotsByProperties())\n if (fieldSchemaRef.value.type === 'object') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n return h(\n ObjectField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n generateSlotsByProperties(true) as Slots,\n )\n }\n else if (fieldSchemaRef.value.type === 'array') {\n return h(ArrayField, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n else if (fieldSchemaRef.value.type === 'void') {\n if (props.onlyRenderProperties)\n return resolveEmptySlot(generateSlotsByProperties())\n const slots = generateSlotsByProperties(true)\n return h(\n VoidField,\n {\n ...fieldProps,\n name: props.name!,\n basePath,\n },\n slots as Slots,\n )\n }\n\n return h(Field, {\n ...fieldProps,\n name: props.name!,\n basePath,\n })\n }\n\n return render()\n }\n },\n})\n\nexport default RecursionField\n"],"mappings":";;;;;;;;;;;;;AAsBA,SAAS,iBAAiB,OAAgB;CACxC,MAAM,WAAW,OAAO,KAAK,MAAM;AACnC,KAAI,CAAC,SAAS,OACZ,QAAO;CACT,MAAM,WAAW,SAAS,QAAiB,KAAK,QAAQ;EACtD,MAAM,OAAO,MAAM;AACnB,MAAI,CAAC,KACH,QAAO;EACT,MAAM,SAAS,MAAM;AACrB,MAAI,CAAC,QAAQ,OACX,QAAO;EACT,MAAM,gBAAgB,OAAO,QAAO,UAAS,QAAQ,MAAM,CAAC;AAC5D,MAAI,KAAK,GAAG,cAAc;AAC1B,SAAO;IACN,EAAE,CAAC;AACN,KAAI,CAAC,SAAS,OACZ,QAAO;AACT,QAAO,EAAE,UAAU,MAAM,SAAS;;AAGpC,MAAM,iBAAiB,gBAAgB;CACrC,MAAM;CACN,cAAc;CACd,OAAO;CACP,MAAM,OAA4B;EAChC,MAAM,YAAY,UAAU;EAC5B,MAAM,aAAa,OAAO,oBAAoB;EAC9C,MAAM,WAAW,OAAO,4BAA4B;AAEpD,MAAI,CAAC,cAAc,CAAC,SAClB,OAAM,IAAI,MAAM,iDAAiD;EAEnE,MAAM,gBAAgB,eACpB,QAAQ,OAAO,iBAAiB,WAAW,GAAG,aAAa,IAAI,OAAO,WAAW,CAAC;EACpF,MAAM,iBAAiB,eAAuB,aAAa,MAAM,UAAU,EAAE,CAAC,CAAC;EAE/E,MAAM,sBAAsB,WAC1B,QAAQ,eAAe;GACrB,GAAG,WAAW;GACd,IAAI,QAAQ;AACV,WAAO,UACL,EAAE,EACF,WAAW,MAAM,SAAS,EAAE,EAC5B,SAAS,MACV;;GAEJ,CAAC;EACJ,MAAM,gBAAgB,WAAW,mBAAmB,eAAe,MAAM,CAAC;AAE1E,QAAM,CAAC,gBAAgB,WAAW,QAAQ;AACxC,iBAAc,QAAQ,mBAAmB,eAAe,MAAM;IAC9D;EAEF,MAAM,oBAAoB;AACxB,OAAI,MAAM,qBACR,QAAO,MAAM,YAAY,WAAW,OAAO,QAAQ,OAAO,MAAM,KAAM;AAExE,UAAO,MAAM,YAAY,WAAW,OAAO;;AAG7C,UAAQ,cAAc,eAAe;AAErC,eAAa;GACX,MAAM,WAAW,aAAa;GAC9B,MAAM,aAAa,cAAc;GAEjC,MAAM,6BAA6B,SAAS,UAAmB;AAC7D,QAAI,MAAM,eACR,QAAO,EAAE;IACX,MAAM,aAAa,OAAO,mBAAmB,eAAe,MAAM;AAClE,QAAI,CAAC,WAAW,OACd,QAAO,EAAE;IACX,MAAM,YAAgD,EAAE;IACxD,MAAM,aAAa,KAAa,UAA4B;AAC1D,SAAI,CAAC,UAAU,KACb,WAAU,OAAO,EAAE;AAErB,eAAU,KAAK,KAAK,MAAM;;AAE5B,SAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,MAAM,KAAK,WAAW,WAAW,SAAS,EAAE;KACvE,IAAI,SAAiB;AACrB,SAAI,KAAK,MAAM,cAAc,EAAE;MAC7B,MAAM,SAAS,MAAM,cAAc,MAAM,KAAK;AAC9C,UAAI,OACF,UAAS;;AAGb,SAAI,KAAK,MAAM,iBAAiB,IAAI,MAAM,iBAAiB,QAAQ,KAAK,KAAK,MAC3E;AAEF,eAAU,OAAO,aAAa,YAAY,UACxC,EAAE,gBAAgB;MAChB,KAAK,GAAG,MAAM,GAAG;MACjB;MACA;MACA,UAAU,OAAO,WAAW;MAC5B,MAAM,OAAO;MACd,CAAC,CAAC;;IAEP,MAAM,QAAiB,EAAE;AACzB,SAAK,MAAM,OAAO,OAAO,KAAK,UAAU,EAAE;KACxC,MAAM,YAAY,UAAU;AAI5B,WAAM,OAHyB,UAC3B,YAAW,UAAW,KAAI,OAAM,GAAG,SAAS,MAAM,CAAC,SAC7C,UAAW,KAAI,OAAM,IAAI,CAAC;;AAGtC,WAAO;;GAGT,MAAM,eAAe;AACnB,QAAI,CAAC,QAAQ,MAAM,KAAK,CACtB,QAAO,iBAAiB,2BAA2B,CAAC;AACtD,QAAI,eAAe,MAAM,SAAS,UAAU;AAC1C,SAAI,MAAM,qBACR,QAAO,iBAAiB,2BAA2B,CAAC;AACtD,YAAO,EACLA,qBACA;MACE,GAAG;MACH,MAAM,MAAM;MACZ;MACD,EACD,0BAA0B,KAAK,CAChC;eAEM,eAAe,MAAM,SAAS,QACrC,QAAO,EAAEC,oBAAY;KACnB,GAAG;KACH,MAAM,MAAM;KACZ;KACD,CAAC;aAEK,eAAe,MAAM,SAAS,QAAQ;AAC7C,SAAI,MAAM,qBACR,QAAO,iBAAiB,2BAA2B,CAAC;KACtD,MAAM,QAAQ,0BAA0B,KAAK;AAC7C,YAAO,EACLC,mBACA;MACE,GAAG;MACH,MAAM,MAAM;MACZ;MACD,EACD,MACD;;AAGH,WAAO,EAAEC,eAAO;KACd,GAAG;KACH,MAAM,MAAM;KACZ;KACD,CAAC;;AAGJ,UAAO,QAAQ;;;CAGpB,CAAC"}