@silver-formily/vue 0.0.1-beta.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.
Files changed (96) hide show
  1. package/esm/components/ArrayField.d.ts +56 -0
  2. package/esm/components/ArrayField.mjs +24 -0
  3. package/esm/components/ArrayField.mjs.map +1 -0
  4. package/esm/components/ExpressionScope.d.ts +16 -0
  5. package/esm/components/ExpressionScope.mjs +25 -0
  6. package/esm/components/ExpressionScope.mjs.map +1 -0
  7. package/esm/components/Field.d.ts +56 -0
  8. package/esm/components/Field.mjs +24 -0
  9. package/esm/components/Field.mjs.map +1 -0
  10. package/esm/components/FormConsumer.d.ts +4 -0
  11. package/esm/components/FormConsumer.mjs +19 -0
  12. package/esm/components/FormConsumer.mjs.map +1 -0
  13. package/esm/components/FormProvider.d.ts +16 -0
  14. package/esm/components/FormProvider.mjs +27 -0
  15. package/esm/components/FormProvider.mjs.map +1 -0
  16. package/esm/components/ObjectField.d.ts +56 -0
  17. package/esm/components/ObjectField.mjs +24 -0
  18. package/esm/components/ObjectField.mjs.map +1 -0
  19. package/esm/components/ReactiveField.d.ts +16 -0
  20. package/esm/components/ReactiveField.mjs +75 -0
  21. package/esm/components/ReactiveField.mjs.map +1 -0
  22. package/esm/components/RecursionField.d.ts +22 -0
  23. package/esm/components/RecursionField.mjs +129 -0
  24. package/esm/components/RecursionField.mjs.map +1 -0
  25. package/esm/components/SchemaField.d.ts +2900 -0
  26. package/esm/components/SchemaField.mjs +106 -0
  27. package/esm/components/SchemaField.mjs.map +1 -0
  28. package/esm/components/VoidField.d.ts +40 -0
  29. package/esm/components/VoidField.mjs +24 -0
  30. package/esm/components/VoidField.mjs.map +1 -0
  31. package/esm/components/index.d.ts +9 -0
  32. package/esm/components/index.mjs +21 -0
  33. package/esm/components/index.mjs.map +1 -0
  34. package/esm/global.d.mjs +2 -0
  35. package/esm/global.d.mjs.map +1 -0
  36. package/esm/hooks/index.d.ts +5 -0
  37. package/esm/hooks/index.mjs +13 -0
  38. package/esm/hooks/index.mjs.map +1 -0
  39. package/esm/hooks/useAttach.d.ts +7 -0
  40. package/esm/hooks/useAttach.mjs +14 -0
  41. package/esm/hooks/useAttach.mjs.map +1 -0
  42. package/esm/hooks/useField.d.ts +3 -0
  43. package/esm/hooks/useField.mjs +9 -0
  44. package/esm/hooks/useField.mjs.map +1 -0
  45. package/esm/hooks/useFieldSchema.d.ts +1 -0
  46. package/esm/hooks/useFieldSchema.mjs +9 -0
  47. package/esm/hooks/useFieldSchema.mjs.map +1 -0
  48. package/esm/hooks/useForm.d.ts +3 -0
  49. package/esm/hooks/useForm.mjs +9 -0
  50. package/esm/hooks/useForm.mjs.map +1 -0
  51. package/esm/hooks/useFormEffects.d.ts +2 -0
  52. package/esm/hooks/useFormEffects.mjs +16 -0
  53. package/esm/hooks/useFormEffects.mjs.map +1 -0
  54. package/esm/hooks/useInjectionCleaner.d.ts +2 -0
  55. package/esm/hooks/useInjectionCleaner.mjs +8 -0
  56. package/esm/hooks/useInjectionCleaner.mjs.map +1 -0
  57. package/esm/hooks/useParentForm.d.ts +3 -0
  58. package/esm/hooks/useParentForm.mjs +12 -0
  59. package/esm/hooks/useParentForm.mjs.map +1 -0
  60. package/esm/index.d.ts +4 -0
  61. package/esm/index.mjs +42 -0
  62. package/esm/index.mjs.map +1 -0
  63. package/esm/shared/connect.d.ts +9 -0
  64. package/esm/shared/connect.mjs +66 -0
  65. package/esm/shared/connect.mjs.map +1 -0
  66. package/esm/shared/context.d.ts +10 -0
  67. package/esm/shared/context.mjs +10 -0
  68. package/esm/shared/context.mjs.map +1 -0
  69. package/esm/shared/index.d.ts +2 -0
  70. package/esm/shared/index.mjs +14 -0
  71. package/esm/shared/index.mjs.map +1 -0
  72. package/esm/types/index.d.ts +64 -0
  73. package/esm/types/index.mjs +2 -0
  74. package/esm/types/index.mjs.map +1 -0
  75. package/esm/utils/fieldProps.d.ts +49 -0
  76. package/esm/utils/fieldProps.mjs +51 -0
  77. package/esm/utils/fieldProps.mjs.map +1 -0
  78. package/esm/utils/getRawComponent.d.ts +8 -0
  79. package/esm/utils/getRawComponent.mjs +13 -0
  80. package/esm/utils/getRawComponent.mjs.map +1 -0
  81. package/esm/utils/reactiveFieldHelpers.d.ts +16 -0
  82. package/esm/utils/reactiveFieldHelpers.mjs +106 -0
  83. package/esm/utils/reactiveFieldHelpers.mjs.map +1 -0
  84. package/esm/utils/recursionFieldProps.d.ts +67 -0
  85. package/esm/utils/recursionFieldProps.mjs +14 -0
  86. package/esm/utils/recursionFieldProps.mjs.map +1 -0
  87. package/esm/utils/resolveSchemaProps.d.ts +1 -0
  88. package/esm/utils/resolveSchemaProps.mjs +11 -0
  89. package/esm/utils/resolveSchemaProps.mjs.map +1 -0
  90. package/esm/utils/runtimeProps.d.ts +8 -0
  91. package/esm/utils/runtimeProps.mjs +17 -0
  92. package/esm/utils/runtimeProps.mjs.map +1 -0
  93. package/esm/utils/schemaFieldProps.d.ts +231 -0
  94. package/esm/utils/schemaFieldProps.mjs +63 -0
  95. package/esm/utils/schemaFieldProps.mjs.map +1 -0
  96. package/package.json +69 -0
@@ -0,0 +1,129 @@
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, markRaw as C, shallowRef as M, watch as V, provide 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 "@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);
29
+ }
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) => C(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 = M(f(t.value));
48
+ V([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 $(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
+ }
125
+ });
126
+ export {
127
+ Q as default
128
+ };
129
+ //# sourceMappingURL=RecursionField.mjs.map
@@ -0,0 +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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"}