@piying/view-angular-core 1.2.0 → 1.2.2

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.
@@ -1,4 +1,4 @@
1
- import { effect, inject, Injector, untracked, DestroyRef, isSignal, signal, InjectionToken, computed, linkedSignal, EnvironmentInjector } from '@angular/core';
1
+ import { effect, inject, Injector, untracked, DestroyRef, isSignal, signal, computed, InjectionToken, linkedSignal, EnvironmentInjector } from '@angular/core';
2
2
  import * as v from 'valibot';
3
3
  import { deepEqual } from 'fast-equals';
4
4
  import { BehaviorSubject, isObservable, Subject, combineLatest, startWith, skip, map } from 'rxjs';
@@ -226,7 +226,7 @@ function asyncValidatorToSignal(input) {
226
226
  return observableToSignal(input);
227
227
  }
228
228
  else {
229
- return input;
229
+ return computed(() => ({ value: input() }));
230
230
  }
231
231
  }
232
232
 
@@ -245,9 +245,6 @@ const PI_FORM_BUILDER_ALIAS_MAP = new InjectionToken('PI_FORM_BUILDER_ALIAS_MAP'
245
245
  /** 上下文注入 */
246
246
  const PI_CONTEXT_TOKEN = new InjectionToken('PI_CONTEXT');
247
247
 
248
- function shortCircuitFalse(value) {
249
- return !value;
250
- }
251
248
  function shortCircuitTrue(value) {
252
249
  return value;
253
250
  }
@@ -263,7 +260,6 @@ class AbstractControl {
263
260
  injector;
264
261
  /** disabled */
265
262
  selfDisabled$$ = computed(() => this.config$?.().disabled ?? false);
266
- selfEnabled$$ = computed(() => !this.selfDisabled$$());
267
263
  /** `self` || `parent` */
268
264
  disabled$$ = computed(() => (this.parent?.disabled$$() || this.selfDisabled$$()) ?? false);
269
265
  enabled$$ = computed(() => !this.disabled$$());
@@ -437,10 +433,18 @@ class AbstractControl {
437
433
  this.markAsDirty();
438
434
  this._forEachChild((control) => control.markAllAsDirty());
439
435
  }
436
+ markAllAsPristine() {
437
+ this.markAsPristine();
438
+ this._forEachChild((control) => control.markAllAsPristine());
439
+ }
440
440
  markAllAsTouched() {
441
441
  this.markAsTouched();
442
442
  this._forEachChild((control) => control.markAllAsTouched());
443
443
  }
444
+ markAllAsUntouched() {
445
+ this.markAsUntouched();
446
+ this._forEachChild((control) => control.markAllAsUntouched());
447
+ }
444
448
  markAsUntouched() {
445
449
  this.selfTouched$.set(false);
446
450
  }
@@ -474,6 +478,9 @@ class AbstractControl {
474
478
  initConfig(config) {
475
479
  this.config$ = config;
476
480
  }
481
+ getInitValue(value) {
482
+ return value ?? this.config$().defaultValue;
483
+ }
477
484
  find(name) {
478
485
  return null;
479
486
  }
@@ -591,9 +598,12 @@ class FieldArray extends AbstractControl {
591
598
  get length() {
592
599
  return this.controls$().length;
593
600
  }
594
- reset(value = []) {
601
+ reset(value) {
602
+ let initValue = this.getInitValue(value);
603
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
604
+ this.beforeUpdateList.forEach((item) => item(viewValue));
595
605
  this._forEachChild((control, index) => {
596
- control.reset(value[index]);
606
+ control.reset(initValue[index]);
597
607
  });
598
608
  }
599
609
  getRawValue() {
@@ -629,6 +639,14 @@ class FieldArray extends AbstractControl {
629
639
  control.updateValue(viewValue[i]);
630
640
  });
631
641
  }
642
+ updateInitValue(value) {
643
+ let initValue = this.getInitValue(value);
644
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
645
+ this.beforeUpdateList.forEach((item) => item(viewValue));
646
+ this.controls$().forEach((control, i) => {
647
+ control.updateInitValue(viewValue?.[i]);
648
+ });
649
+ }
632
650
  }
633
651
 
634
652
  const InitPendingValue = {
@@ -732,13 +750,6 @@ class FieldControl extends AbstractControl {
732
750
  this.modelValue$.set(value);
733
751
  this.value$$.set(value);
734
752
  }
735
- initConfig(config) {
736
- super.initConfig(config);
737
- if ('defaultValue' in this.config$()) {
738
- this.modelValue$.set(this.config$().defaultValue);
739
- this.value$$.set(this.config$().defaultValue);
740
- }
741
- }
742
753
  emitSubmit() {
743
754
  const pendingStatus = this.pendingStatus();
744
755
  if (pendingStatus.touched) {
@@ -749,6 +760,11 @@ class FieldControl extends AbstractControl {
749
760
  }
750
761
  this.pendingStatus.set(InitPendingValue);
751
762
  }
763
+ updateInitValue(value) {
764
+ let initValue = this.getInitValue(value);
765
+ this.modelValue$.set(initValue);
766
+ this.value$$.set(initValue);
767
+ }
752
768
  }
753
769
 
754
770
  // 切换索引后,理论上应该触发下值变更,否则不知道值是什么
@@ -791,6 +807,13 @@ class FieldLogicGroup extends FieldArray {
791
807
  const result = controls.reduce((obj, control) => ({ ...obj, ...control.value$$() }), {});
792
808
  return Object.keys(result).length ? result : this.emptyValue$$();
793
809
  }
810
+ reset(value) {
811
+ let initValue = this.getInitValue(value);
812
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
813
+ this.controls$().forEach((control, i) => {
814
+ control.reset(viewValue);
815
+ });
816
+ }
794
817
  getRawValue() {
795
818
  return this.getValue(true);
796
819
  }
@@ -803,6 +826,13 @@ class FieldLogicGroup extends FieldArray {
803
826
  control.updateValue(viewValue);
804
827
  });
805
828
  }
829
+ updateInitValue(value) {
830
+ let initValue = this.getInitValue(value);
831
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
832
+ this.controls$().forEach((control, i) => {
833
+ control.updateInitValue(viewValue);
834
+ });
835
+ }
806
836
  }
807
837
 
808
838
  function isFieldGroup(input) {
@@ -863,9 +893,11 @@ class FieldGroup extends AbstractControl {
863
893
  if (control)
864
894
  this.registerControl(name, control);
865
895
  }
866
- reset(value = {}) {
896
+ reset(value) {
897
+ let initValue = this.getInitValue(value);
898
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
867
899
  this._forEachChild((control, name) => {
868
- control.reset(value ? value[name] : undefined);
900
+ control.reset(viewValue ? viewValue[name] : undefined);
869
901
  });
870
902
  }
871
903
  getRawValue() {
@@ -927,6 +959,14 @@ class FieldGroup extends AbstractControl {
927
959
  control.updateValue(viewValue?.[key]);
928
960
  }
929
961
  }
962
+ updateInitValue(value) {
963
+ let initValue = this.getInitValue(value);
964
+ const viewValue = this.config$().transfomer?.toView?.(initValue, this) ?? initValue;
965
+ for (const key in this.controls$()) {
966
+ const control = this.controls$()[key];
967
+ control.updateInitValue(viewValue?.[key]);
968
+ }
969
+ }
930
970
  }
931
971
 
932
972
  function isGroup(schema) {
@@ -1014,12 +1054,7 @@ function* groupGenerator(list) {
1014
1054
  }
1015
1055
  }
1016
1056
 
1017
- function fieldQuery(key, field, aliasMap, root, aliasNotFoundFn) {
1018
- const keyPath = Array.isArray(key)
1019
- ? key
1020
- : typeof key === 'number'
1021
- ? [key]
1022
- : key.split('.');
1057
+ function fieldQuery(keyPath, field, aliasMap, root) {
1023
1058
  const firstPath = keyPath[0];
1024
1059
  let list;
1025
1060
  if (firstPath === '#') {
@@ -1030,10 +1065,7 @@ function fieldQuery(key, field, aliasMap, root, aliasNotFoundFn) {
1030
1065
  list = [{ field: field.parent, level: 1 }];
1031
1066
  }
1032
1067
  else if (typeof firstPath === 'string' && firstPath.startsWith('@')) {
1033
- let queryField = aliasMap.get(firstPath.slice(1));
1034
- if (!queryField && aliasNotFoundFn) {
1035
- queryField = aliasNotFoundFn(firstPath.slice(1), field);
1036
- }
1068
+ const queryField = aliasMap.get(firstPath.slice(1));
1037
1069
  list = [{ field: queryField, level: 1 }];
1038
1070
  }
1039
1071
  else if (field.fieldGroup) {
@@ -1054,7 +1086,7 @@ function fieldQuery(key, field, aliasMap, root, aliasNotFoundFn) {
1054
1086
  if (keyPath.length === item.level) {
1055
1087
  return item.field;
1056
1088
  }
1057
- const res = item.field.get(keyPath.slice(item.level), aliasNotFoundFn);
1089
+ const res = item.field.get(keyPath.slice(item.level));
1058
1090
  if (res) {
1059
1091
  return res;
1060
1092
  }
@@ -1068,16 +1100,17 @@ class FormBuilder {
1068
1100
  #options = inject(PI_FORM_BUILDER_OPTIONS_TOKEN);
1069
1101
  #injector = inject(Injector);
1070
1102
  #envInjector = inject(EnvironmentInjector);
1071
- #globalConfig = inject(PI_VIEW_CONFIG_TOKEN, { optional: true }) ?? undefined;
1103
+ #globalConfig = inject(PI_VIEW_CONFIG_TOKEN);
1072
1104
  #allFieldInitHookList = [];
1073
1105
  buildRoot(item) {
1074
- const field = this.#buildControl({
1106
+ let field = this.#buildControl({
1075
1107
  type: 'root',
1076
1108
  field: { fullPath: [] },
1077
1109
  form: undefined,
1078
1110
  resolvedField$: item.resolvedField$,
1079
1111
  append: () => { },
1080
1112
  }, item.field, 0);
1113
+ field.form.control?.updateInitValue(undefined);
1081
1114
  this.allFieldInitHookCall();
1082
1115
  }
1083
1116
  allFieldInitHookCall() {
@@ -1113,55 +1146,38 @@ class FormBuilder {
1113
1146
  this.#globalConfig?.defaultConfig?.inputs,
1114
1147
  viewDefaultConfig?.inputs,
1115
1148
  field.inputs,
1116
- ], false, typeof mergeStrategy === 'string'
1117
- ? mergeStrategy
1118
- : (mergeStrategy?.inputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.inputs));
1149
+ ], false, mergeStrategy?.inputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.inputs);
1119
1150
  const outputs = this.configMerge([
1120
1151
  this.#globalConfig?.defaultConfig?.outputs,
1121
1152
  viewDefaultConfig?.outputs,
1122
1153
  field.outputs,
1123
- ], false, typeof mergeStrategy === 'string'
1124
- ? mergeStrategy
1125
- : (mergeStrategy?.outputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.outputs));
1154
+ ], false, mergeStrategy?.outputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.outputs);
1126
1155
  const attributes = this.configMerge([
1127
1156
  this.#globalConfig?.defaultConfig?.attributes,
1128
1157
  viewDefaultConfig?.attributes,
1129
1158
  field.attributes,
1130
- ], false, typeof mergeStrategy === 'string'
1131
- ? mergeStrategy
1132
- : (mergeStrategy?.attributes ??
1133
- DCONFIG_EFAULT_MERGE_STRAGEGY.attributes));
1159
+ ], false, mergeStrategy?.attributes ?? DCONFIG_EFAULT_MERGE_STRAGEGY.attributes);
1134
1160
  const wrappers1 = this.configMergeRaw([
1135
1161
  this.#globalConfig?.defaultConfig?.wrappers,
1136
1162
  viewDefaultConfig?.wrappers,
1137
1163
  field.wrappers,
1138
- ], true, typeof mergeStrategy === 'string'
1139
- ? mergeStrategy
1140
- : (mergeStrategy?.wrappers ?? DCONFIG_EFAULT_MERGE_STRAGEGY.wrappers));
1164
+ ], true, mergeStrategy?.wrappers ?? DCONFIG_EFAULT_MERGE_STRAGEGY.wrappers);
1141
1165
  const wrappers = this.#resolveWrappers(wrappers1);
1142
1166
  const props = this.configMerge([
1143
1167
  this.#globalConfig?.defaultConfig?.props,
1144
1168
  viewDefaultConfig?.props,
1145
1169
  field.props,
1146
- ], false, typeof mergeStrategy === 'string'
1147
- ? mergeStrategy
1148
- : (mergeStrategy?.props ?? DCONFIG_EFAULT_MERGE_STRAGEGY.props));
1170
+ ], false, mergeStrategy?.props ?? DCONFIG_EFAULT_MERGE_STRAGEGY.props);
1149
1171
  const formConfig$ = this.configMerge([
1150
1172
  this.#globalConfig?.defaultConfig?.formConfig,
1151
1173
  viewDefaultConfig?.formConfig,
1152
1174
  field.formConfig,
1153
- ], false, typeof mergeStrategy === 'string'
1154
- ? mergeStrategy
1155
- : (mergeStrategy?.formConfig ??
1156
- DCONFIG_EFAULT_MERGE_STRAGEGY.formConfig));
1175
+ ], false, mergeStrategy?.formConfig ?? DCONFIG_EFAULT_MERGE_STRAGEGY.formConfig);
1157
1176
  const renderConfig = this.configMerge([
1158
1177
  this.#globalConfig?.defaultConfig?.renderConfig,
1159
1178
  viewDefaultConfig?.renderConfig,
1160
1179
  field.renderConfig,
1161
- ], false, typeof mergeStrategy === 'string'
1162
- ? mergeStrategy
1163
- : (mergeStrategy?.renderConfig ??
1164
- DCONFIG_EFAULT_MERGE_STRAGEGY.renderConfig));
1180
+ ], false, mergeStrategy?.renderConfig ?? DCONFIG_EFAULT_MERGE_STRAGEGY.renderConfig);
1165
1181
  let control;
1166
1182
  let keyPath = field.key;
1167
1183
  if (isFieldLogicGroup(parent.form)) {
@@ -1193,7 +1209,7 @@ class FormBuilder {
1193
1209
  return rootForm();
1194
1210
  },
1195
1211
  },
1196
- get: (keyPath, aliasNotFoundFn) => untracked(() => fieldQuery(keyPath, resolvedConfig, this.#scopeMap, this.#options.resolvedField$(), aliasNotFoundFn)),
1212
+ get: (keyPath) => untracked(() => fieldQuery(keyPath, resolvedConfig, this.#scopeMap, this.#options.resolvedField$())),
1197
1213
  parent: parent.field,
1198
1214
  origin: field,
1199
1215
  renderConfig: renderConfig,
@@ -1302,6 +1318,7 @@ class FormBuilder {
1302
1318
  const list = [...arrayItem.field.fieldArray()];
1303
1319
  list[index] = result;
1304
1320
  arrayItem.field.fieldArray.set(list);
1321
+ result.form.control?.updateInitValue(arrayItem.field.form.control?.config$().defaultValue?.[index]);
1305
1322
  this.allFieldInitHookCall();
1306
1323
  result.form.control.updateValue(value);
1307
1324
  });
@@ -1321,7 +1338,7 @@ class FormBuilder {
1321
1338
  };
1322
1339
  arrayItem.field.fieldArray = signal([]);
1323
1340
  arrayItem.field.hooks?.afterChildrenInit?.(arrayItem.field);
1324
- form.beforeUpdateList.push((input) => {
1341
+ form.beforeUpdateList.push((input = []) => {
1325
1342
  const controlLength = form.controls$().length;
1326
1343
  if (controlLength < input.length) {
1327
1344
  const list = arrayItem.field.fieldArray().slice();
@@ -1353,7 +1370,7 @@ class FormBuilder {
1353
1370
  if (typeof type === 'string') {
1354
1371
  const config = this.#globalConfig?.types?.[type];
1355
1372
  if (!config) {
1356
- throw new Error(`define:未注册[${type}]`);
1373
+ throw new Error(`🈳define:[${type}]❗`);
1357
1374
  }
1358
1375
  defaultConfig = config;
1359
1376
  if (Object.keys(config).length) {
@@ -1407,43 +1424,10 @@ class FormBuilder {
1407
1424
  return signal(this.configMergeRaw(list, isArray, strategy));
1408
1425
  }
1409
1426
  #moveViewField(key, inputField) {
1410
- const parent = fieldQuery(key, inputField, this.#scopeMap, this.#options.resolvedField$(), (name, field) => {
1411
- const rootForm = this.#options.form$$;
1412
- const aliasField = {
1413
- alias: name,
1414
- parent: field,
1415
- get fullPath() {
1416
- return field.fullPath;
1417
- },
1418
- form: {
1419
- parent: field.form.control ?? field.form.parent,
1420
- control: undefined,
1421
- get root() {
1422
- return rootForm();
1423
- },
1424
- },
1425
- get: (keyPath, fn) => fieldQuery(keyPath, aliasField, this.#scopeMap, this.#options.resolvedField$(), fn),
1426
- fieldGroup: signal(new SortedArray((a, b) => a.priority - b.priority)),
1427
- priority: 0,
1428
- renderConfig: signal({}),
1429
- wrappers: signal([]),
1430
- };
1431
- this.#scopeMap.set(name, aliasField);
1432
- if (inputField === field) {
1433
- throw new Error(`添加位置不可为自身`);
1434
- }
1435
- field.fieldGroup().push(aliasField);
1436
- return aliasField;
1437
- });
1427
+ const parent = fieldQuery(key, inputField, this.#scopeMap, this.#options.resolvedField$());
1438
1428
  if (!parent) {
1439
1429
  throw new Error('移动视图项失败');
1440
1430
  }
1441
- const index = inputField.parent
1442
- .fieldGroup?.()
1443
- .findIndex((item) => item === inputField);
1444
- if (typeof index === 'number' && index !== -1) {
1445
- inputField.parent.fieldGroup?.().splice(index, 1);
1446
- }
1447
1431
  const newKeyPath = inputField.fullPath.slice(parent.fullPath.length);
1448
1432
  inputField.keyPath = newKeyPath;
1449
1433
  inputField.parent = parent;
@@ -1455,7 +1439,7 @@ class FormBuilder {
1455
1439
  if (typeof wrapper === 'string') {
1456
1440
  const config = this.#globalConfig?.wrappers?.[wrapper];
1457
1441
  if (!config) {
1458
- throw new Error(`wrapper:未注册[${wrapper}]`);
1442
+ throw new Error(`🈳wrapper:[${wrapper}]❗`);
1459
1443
  }
1460
1444
  return {
1461
1445
  ...config,
@@ -1467,7 +1451,7 @@ class FormBuilder {
1467
1451
  // 查引用2
1468
1452
  const config = this.#globalConfig?.wrappers?.[wrapper.type];
1469
1453
  if (!config) {
1470
- throw new Error(`wrapper:未注册[${wrapper.type}]`);
1454
+ throw new Error(`🈳wrapper:[${wrapper.type}]❗`);
1471
1455
  }
1472
1456
  return {
1473
1457
  inputs: signal({ ...config.inputs, ...wrapper.inputs }),
@@ -1 +1 @@
1
- {"version":3,"file":"piying-view-angular-core.mjs","sources":["../../../projects/view-angular-core/src/util/array-startswith.ts","../../../projects/view-angular-core/src/util/effect-listen.ts","../../../projects/view-angular-core/src/util/to_observable.ts","../../../projects/view-angular-core/src/util/clone.ts","../../../projects/view-angular-core/src/util/unwrap-signal.ts","../../../projects/view-angular-core/src/util/to-array.ts","../../../projects/view-angular-core/src/util/sorted-array.ts","../../../projects/view-angular-core/src/util/create-view-control-link.ts","../../../projects/view-angular-core/src/util/control-status-to-class.ts","../../../projects/view-angular-core/src/convert/util/is-promise.ts","../../../projects/view-angular-core/src/util/async-validator-convert.ts","../../../projects/view-angular-core/src/builder-base/type/token.ts","../../../projects/view-angular-core/src/field/abstract_model.ts","../../../projects/view-angular-core/src/field/field-array.ts","../../../projects/view-angular-core/src/field/field-control.ts","../../../projects/view-angular-core/src/field/field-logic-group.ts","../../../projects/view-angular-core/src/field/is-field.ts","../../../projects/view-angular-core/src/field/field-group.ts","../../../projects/view-angular-core/src/builder-base/util/is-group.ts","../../../projects/view-angular-core/src/builder-base/create-field.ts","../../../projects/view-angular-core/src/builder-base/util/unwrap-signal.ts","../../../projects/view-angular-core/src/builder-base/const.ts","../../../projects/view-angular-core/src/builder-base/class/parent-map.ts","../../../projects/view-angular-core/src/builder-base/util/group-flat.ts","../../../projects/view-angular-core/src/builder-base/field-query.ts","../../../projects/view-angular-core/src/builder-base/builder.base.ts","../../../projects/view-angular-core/src/convert/action/layout.ts","../../../projects/view-angular-core/src/convert/action/raw-config.ts","../../../projects/view-angular-core/src/convert/action/component.ts","../../../projects/view-angular-core/src/convert/action/hook.ts","../../../projects/view-angular-core/src/convert/action/input.ts","../../../projects/view-angular-core/src/convert/action/attribute.ts","../../../projects/view-angular-core/src/convert/action/prop.ts","../../../projects/view-angular-core/src/convert/action/output.ts","../../../projects/view-angular-core/src/convert/action/wrapper.ts","../../../projects/view-angular-core/src/convert/action/alias.ts","../../../projects/view-angular-core/src/convert/action/config.ts","../../../projects/view-angular-core/src/convert/action/value-change.ts","../../../projects/view-angular-core/src/convert/action/hide-when.ts","../../../projects/view-angular-core/src/convert/action/disable-when.ts","../../../projects/view-angular-core/src/convert/action/class.ts","../../../projects/view-angular-core/src/convert/action/non-field-control.ts","../../../projects/view-angular-core/src/convert/handle/core.schema-handle.ts","../../../projects/view-angular-core/src/convert/form-convert.ts","../../../projects/view-angular-core/src/convert/schema/no-control.schema.ts","../../../projects/view-angular-core/piying-view-angular-core.ts"],"sourcesContent":["export function arrayStartsWith(list: any[], parts: any[] | any) {\n return (Array.isArray(parts) ? parts : [parts]).every(\n (item, index) => item === list[index],\n );\n}\n","import { CreateEffectOptions, effect, EffectRef } from '@angular/core';\nimport { deepEqual } from 'fast-equals';\n/** 跳过第一个值,假如发射时和初始值不同 */\nexport function effectListen(\n listen: () => any,\n fn: () => void,\n options?: CreateEffectOptions,\n): EffectRef {\n let first = true;\n const oldValue = listen();\n return effect(() => {\n const currentValue = listen();\n if (first) {\n first = false;\n if (!deepEqual(oldValue, currentValue)) {\n fn();\n }\n return;\n }\n return fn();\n }, options);\n}\n","import { Injector, Signal, inject, untracked, DestroyRef } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { effectListen } from './effect-listen';\n\n/**\n * Options for `toObservable`.\n *\n * @publicApi 20.0\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @publicApi 20.0\n */\nexport function toObservable<T>(\n listen: Signal<any>,\n source: Signal<T>,\n options?: ToObservableOptions,\n): Observable<T> {\n const injector = options?.injector ?? inject(Injector);\n const subject = new BehaviorSubject<T>(source());\n\n const watcher = effectListen(\n listen,\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n { injector, manualCleanup: true },\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n","import rfdc from 'rfdc';\nexport const clone = rfdc({ proto: false, circles: false });\n","import { isSignal, Signal, WritableSignal } from '@angular/core';\n\nexport function unWrapSignal<T>(value?: T | Signal<T>) {\n return isSignal(value) ? value() : value;\n}\n\nexport type UnWrapSignal<T> = T extends Signal<infer Value> ? Value : T;\n\nexport type SignalInputValue<T> = T | Signal<T> | WritableSignal<T> | undefined;\n","export function toArray(input: any): any[] | undefined {\n return input === undefined\n ? input\n : Array.isArray(input)\n ? input\n : ([input] as const);\n}\n","export class SortedArray<T> extends Array {\n #compareFn;\n constructor(compareFn: (a: T, b: T) => number) {\n super();\n this.#compareFn = compareFn;\n }\n\n override push(...items: any[]): number {\n const result = super.push(...items);\n this.sort(this.#compareFn);\n return result;\n }\n}\n","import { effect, Injector, untracked } from '@angular/core';\n// import { ControlValueAccessor } from '@angular/forms';\nimport { FieldControl } from '../field/field-control';\nexport interface ControlValueAccessor {\n /**\n * @description\n * Writes a new value to the element.\n *\n * This method is called by the forms API to write to the view when programmatic\n * changes from model to view are requested.\n *\n * @usageNotes\n * ### Write a value to the element\n *\n * The following example writes a value to the native DOM element.\n *\n * ```ts\n * writeValue(value: any): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\n * }\n * ```\n *\n * @param obj The new value for the element\n */\n writeValue(obj: any): void;\n /**\n * @description\n * Registers a callback function that is called when the control's value\n * changes in the UI.\n *\n * This method is called by the forms API on initialization to update the form\n * model when values propagate from the view to the model.\n *\n * When implementing the `registerOnChange` method in your own value accessor,\n * save the given function so your class calls it at the appropriate time.\n *\n * @usageNotes\n * ### Store the change function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnChange(fn: (_: any) => void): void {\n * this._onChange = fn;\n * }\n * ```\n *\n * When the value changes in the UI, call the registered\n * function to allow the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(change)': '_onChange($event.target.value)'\n * }\n * ```\n *\n * @param fn The callback function to register\n */\n registerOnChange(fn: any): void;\n /**\n * @description\n * Registers a callback function that is called by the forms API on initialization\n * to update the form model on blur.\n *\n * When implementing `registerOnTouched` in your own value accessor, save the given\n * function so your class calls it when the control should be considered\n * blurred or \"touched\".\n *\n * @usageNotes\n * ### Store the callback function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnTouched(fn: any): void {\n * this._onTouched = fn;\n * }\n * ```\n *\n * On blur (or equivalent), your class should call the registered function to allow\n * the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(blur)': '_onTouched()'\n * }\n * ```\n *\n * @param fn The callback function to register\n */\n registerOnTouched(fn: any): void;\n /**\n * @description\n * Function that is called by the forms API when the control status changes to\n * or from 'DISABLED'. Depending on the status, it enables or disables the\n * appropriate DOM element.\n *\n * @usageNotes\n * The following is an example of writing the disabled property to a native DOM element:\n *\n * ```ts\n * setDisabledState(isDisabled: boolean): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n * }\n * ```\n *\n * @param isDisabled The disabled status to set on the element\n */\n setDisabledState?(isDisabled: boolean): void;\n}\nexport function createViewControlLink(\n fieldControl: () => FieldControl,\n cva: ControlValueAccessor,\n injector: Injector,\n) {\n cva.registerOnChange((value: any) => {\n if (fieldControl().disabled$$()) {\n return;\n }\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n value: value,\n change: true,\n }));\n if (fieldControl().updateOn$$() === 'change') {\n fieldControl().viewValueChange(value);\n }\n });\n cva.registerOnTouched(() => {\n if (fieldControl().disabled$$()) {\n return;\n }\n const updateOn = fieldControl().updateOn$$();\n const pendingStatus = fieldControl().pendingStatus();\n if (updateOn === 'submit') {\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n touched: true,\n }));\n } else {\n fieldControl().markAsTouched();\n if (pendingStatus.change && updateOn === 'blur') {\n fieldControl().viewValueChange(pendingStatus.value);\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n change: false,\n value: undefined,\n }));\n }\n }\n });\n const disposeList: (() => any)[] = [];\n const ref = effect(\n () => {\n const value = fieldControl().modelValueToViewValue$$();\n untracked(() => {\n cva.writeValue(value);\n });\n },\n { injector: injector },\n );\n cva.writeValue(fieldControl().modelValueToViewValue$$());\n disposeList.push(() => ref.destroy());\n if (cva.setDisabledState) {\n const disabledRef = effect(\n () => {\n const value = fieldControl().disabled$$();\n untracked(() => {\n cva.setDisabledState!(value);\n });\n },\n { injector: injector },\n );\n cva.setDisabledState!(fieldControl().disabled$$());\n disposeList.push(() => disabledRef.destroy());\n }\n return () => {\n disposeList.forEach((fn) => fn());\n untracked(() => {\n fieldControl().updateValue(fieldControl().value$$(), true);\n });\n };\n}\n","import { AbstractControl } from '../field/abstract_model';\n\nexport function controlStatusList(\n fieldControl?: AbstractControl,\n skipDisabled?: boolean,\n) {\n if (!fieldControl) {\n return [];\n }\n const statusList = [];\n if (!skipDisabled && fieldControl.disabled$$()) {\n statusList.push('disabled');\n }\n if (fieldControl.touched$$()) {\n statusList.push('touched');\n } else {\n statusList.push('untouched');\n }\n if (fieldControl.dirty$$()) {\n statusList.push('dirty');\n } else {\n statusList.push('pristine');\n }\n switch (fieldControl.status$$()) {\n case 'VALID':\n statusList.push('valid');\n break;\n case 'INVALID':\n statusList.push('invalid');\n break;\n case 'PENDING':\n statusList.push('pending');\n break;\n default:\n break;\n }\n return statusList;\n}\n\nexport function fieldControlStatusClass(\n fieldControl?: AbstractControl,\n skipDisabled?: boolean,\n) {\n return controlStatusList(fieldControl, skipDisabled)\n .map((item) => `pi-${item}`)\n .join(' ');\n}\n","import { Subscribable } from 'rxjs';\n\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n return !!obj && typeof obj.then === 'function';\n}\nexport function isSubscribable<T>(obj: any): obj is Subscribable<T> {\n return !!obj && typeof obj.subscribe === 'function';\n}\n","import { signal } from '@angular/core';\nimport { isObservable, Observable } from 'rxjs';\nimport { isPromise } from '../convert/util/is-promise';\nimport { Signal } from 'static-injector';\nexport const ValidatorPending = Symbol('PENDING');\nexport type AsyncValidatorEvent =\n | {\n value: any;\n }\n | {\n error: Error;\n }\n | typeof ValidatorPending;\nfunction promiseToSignal<T>(input: Promise<T>) {\n const value$ = signal<AsyncValidatorEvent>(ValidatorPending);\n input.then((value) => {\n value$.set({ value });\n });\n return value$;\n}\nfunction observableToSignal<T>(input: Observable<T>) {\n const value$ = signal<AsyncValidatorEvent>(ValidatorPending);\n input.subscribe({\n next: (value) => {\n value$.set({ value });\n },\n error: (error) => {\n value$.set({ error });\n },\n });\n return value$;\n}\n\nexport function asyncValidatorToSignal(input: any) {\n if (isPromise(input)) {\n return promiseToSignal(input);\n } else if (isObservable(input)) {\n return observableToSignal(input);\n } else {\n return input as Signal<AsyncValidatorEvent>;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type {\n PiResolvedCommonViewFieldConfig,\n FormBuilderOptions,\n} from './common-field-config';\nimport type { PiCommonConfig } from './default-config';\n/** 一些默认配置 */\nexport const PI_VIEW_CONFIG_TOKEN = new InjectionToken<PiCommonConfig>(\n 'PI_VIEW_CONFIG',\n);\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_FORM_BUILDER_OPTIONS_TOKEN = new InjectionToken<\n FormBuilderOptions<any>\n>('PI_FORM_BUILDER_OPTIONS');\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_FORM_BUILDER_ALIAS_MAP = new InjectionToken<\n Map<string, PiResolvedCommonViewFieldConfig<any, any>>\n>('PI_FORM_BUILDER_ALIAS_MAP');\n/** 上下文注入 */\nexport const PI_CONTEXT_TOKEN = new InjectionToken<any>('PI_CONTEXT');\n","import {\n signal,\n untracked,\n computed,\n Signal,\n Injector,\n linkedSignal,\n} from '@angular/core';\n\nimport { FieldFormConfig$ } from './type';\nimport { SchemaOrPipe } from '@piying/valibot-visit';\nimport * as v from 'valibot';\nimport { Observable } from 'rxjs';\nimport { clone, toObservable } from '../util';\nimport {\n asyncValidatorToSignal,\n ValidatorPending,\n} from '../util/async-validator-convert';\nimport { PI_CONTEXT_TOKEN } from '../builder-base/type/token';\nexport type ValidationErrors = {\n [key: string]: any;\n};\nexport interface ValidatorFn {\n (control: AbstractControl): ValidationErrors | undefined;\n}\nexport interface AsyncValidatorFn {\n (\n control: AbstractControl,\n ):\n | Promise<ValidationErrors | undefined>\n | Observable<ValidationErrors | undefined>;\n}\nfunction shortCircuitFalse(value: boolean): boolean {\n return !value;\n}\n\nfunction shortCircuitTrue(value: boolean): boolean {\n return value;\n}\n\nexport const VALID = 'VALID';\n\nexport const INVALID = 'INVALID';\n\nexport const PENDING = 'PENDING';\n\nexport type VALID_STATUS = typeof VALID | typeof INVALID | typeof PENDING;\nexport type FormHooks = 'change' | 'blur' | 'submit';\nexport type AbstractControlParams = ConstructorParameters<\n typeof AbstractControl<any>\n>;\n\nexport abstract class AbstractControl<TValue = any> {\n protected readonly emptyValue$$ = computed(() =>\n clone(this.config$().emptyValue),\n );\n /** 父级取值时,当前子级是否包含在内 */\n shouldInclude$$ = computed(\n () =>\n this.valueNoError$$() &&\n (!this.selfDisabled$$() ||\n (this.selfDisabled$$() && this.config$().disabledValue === 'reserve')),\n );\n readonly injector;\n /** model的value */\n abstract value$$: Signal<TValue | undefined>;\n abstract children$$?: Signal<AbstractControl[]>;\n /** disabled */\n readonly selfDisabled$$ = computed(() => this.config$?.().disabled ?? false);\n readonly selfEnabled$$ = computed(() => !this.selfDisabled$$());\n /** `self` || `parent` */\n readonly disabled$$: Signal<boolean> = computed(\n () => (this.parent?.disabled$$() || this.selfDisabled$$()) ?? false,\n );\n readonly enabled$$ = computed(() => !this.disabled$$());\n get disabled(): boolean {\n return this.disabled$$();\n }\n get enabled(): boolean {\n return !this.disabled$$();\n }\n enable() {\n this.config$.update((config) => ({ ...config, disabled: false }));\n }\n disable() {\n this.config$.update((config) => ({ ...config, disabled: true }));\n }\n /** touched */\n readonly selfTouched$ = signal(false);\n\n readonly touched$$: Signal<boolean> = computed(() =>\n this.reduceChildren(\n this.selfTouched$(),\n (child, value) => value || child.touched$$(),\n shortCircuitTrue,\n ),\n );\n get touched(): boolean {\n return untracked(this.touched$$);\n }\n get untouched(): boolean {\n return !untracked(this.touched$$);\n }\n /** dirty */\n private readonly selfDirty$ = signal(false);\n\n readonly dirty$$: Signal<boolean> = computed(() =>\n this.reduceChildren(\n this.selfDirty$(),\n (child, value) => value || child.dirty$$(),\n shortCircuitTrue,\n ),\n );\n get dirty(): boolean {\n return untracked(this.dirty$$);\n }\n get pristine(): boolean {\n return !untracked(this.dirty$$);\n }\n /** validator */\n #validators$$ = computed(() => this.config$().validators ?? []);\n #asyncValidators$$ = computed(() => this.config$().asyncValidators ?? []);\n protected resetIndex$ = signal(0);\n syncError$ = linkedSignal(\n computed(\n () => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n this.resetIndex$();\n this.value$$();\n const result = this.#validators$$().reduce((obj, item) => {\n const result = untracked(() => item(this));\n if (result) {\n obj = { ...obj, ...result };\n }\n return obj;\n }, {} as ValidationErrors);\n const schemaResult = this.#schemaCheck$$();\n if (!schemaResult.success) {\n return { ...result, valibot: schemaResult.issues };\n }\n return Object.keys(result).length\n ? (result as ValidationErrors)\n : undefined;\n },\n { equal: () => false },\n ),\n );\n asyncErrorRes$$ = computed(() => {\n const result = this.#asyncValidators$$();\n if (result.length === 0) {\n return undefined;\n }\n this.resetIndex$();\n this.value$$();\n const dataList = result.map((item) =>\n untracked(() => asyncValidatorToSignal(item(this))),\n );\n return computed(() => {\n const params = dataList.map((item) => item());\n let pendingCount = 0;\n const errorResult = params.reduce(\n (obj, item) => {\n if (item === ValidatorPending) {\n pendingCount++;\n return obj;\n } else if ('value' in item) {\n return { ...obj, ...item.value };\n } else {\n return { ...obj, error: item.error };\n }\n },\n {} as Record<string, any>,\n );\n if (!Object.keys(errorResult).length) {\n if (pendingCount) {\n return ValidatorPending;\n }\n return undefined;\n } else {\n return errorResult;\n }\n });\n });\n asyncError$$ = computed(() => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n const ref = this.asyncErrorRes$$();\n if (ref) {\n const result = ref();\n if (result === ValidatorPending) {\n return PENDING;\n } else {\n return result;\n }\n }\n return undefined;\n });\n rawError$$ = computed(() => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n const syncError = this.syncError$();\n const asyncError = this.asyncError$$();\n if (asyncError === PENDING) {\n return PENDING;\n }\n if (syncError && asyncError) {\n return { ...syncError, ...asyncError };\n } else if (syncError || asyncError) {\n return syncError || asyncError;\n } else {\n return undefined;\n }\n });\n valueNoError$$ = computed(() => this.rawError$$() === undefined);\n get errors() {\n const error = this.rawError$$();\n return error === PENDING ? undefined : error;\n }\n /** parent */\n private _parent?: AbstractControl;\n get parent(): AbstractControl | undefined {\n return this._parent;\n }\n\n get value() {\n return this.value$$();\n }\n required$$ = computed(() => this.config$().required);\n readonly schemaParser;\n context;\n constructor(rawSchema: SchemaOrPipe, injector: Injector) {\n this.injector = injector;\n this.schemaParser = v.safeParser(rawSchema);\n this.context = this.injector.get(PI_CONTEXT_TOKEN);\n }\n\n #schemaCheck$$ = computed(() => this.schemaParser(this.value$$()));\n setParent(parent: AbstractControl | undefined): void {\n this._parent = parent;\n }\n get valid(): boolean {\n return this.status$$() === VALID;\n }\n\n get invalid(): boolean {\n return this.status$$() === INVALID;\n }\n\n get pending(): boolean {\n return this.status$$() === PENDING;\n }\n\n selfUpdateOn$$ = computed(() => this.config$?.().updateOn);\n updateOn$$: Signal<FormHooks> = computed(\n () => (this.selfUpdateOn$$() || this.parent?.updateOn$$()) ?? 'change',\n );\n\n markAsTouched(): void {\n this.selfTouched$.set(true);\n }\n\n markAllAsDirty(): void {\n this.markAsDirty();\n\n this._forEachChild((control: AbstractControl) => control.markAllAsDirty());\n }\n\n markAllAsTouched(): void {\n this.markAsTouched();\n\n this._forEachChild((control: AbstractControl) =>\n control.markAllAsTouched(),\n );\n }\n\n markAsUntouched(): void {\n this.selfTouched$.set(false);\n }\n\n markAsDirty(): void {\n this.selfDirty$.set(true);\n }\n\n markAsPristine(): void {\n this.selfDirty$.set(false);\n }\n\n abstract reset(value?: any): void;\n\n getRawValue(): any {\n return this.value;\n }\n\n get<P extends string | (string | number)[]>(path: P): AbstractControl | null {\n let currPath: Array<string | number> | string = path;\n if (currPath == null) return null;\n if (!Array.isArray(currPath)) currPath = currPath.split('.');\n if (currPath.length === 0) return null;\n return currPath.reduce(\n (control: AbstractControl | null, name) => control && control.find(name),\n this,\n );\n }\n\n get root(): AbstractControl {\n let x: AbstractControl = this;\n\n while (x._parent) {\n x = x._parent;\n }\n\n return x;\n }\n\n /** @internal */\n abstract _forEachChild(cb: (c: AbstractControl) => void): void;\n abstract updateValue(value: any): void;\n config$: FieldFormConfig$ = signal({});\n initConfig(config: any) {\n this.config$ = config;\n }\n\n find(name: string | number): AbstractControl | null {\n return null;\n }\n setControl(name: string | number, control: AbstractControl) {}\n private reduceChildren<T>(\n initialValue: T,\n fn: (child: AbstractControl<any>, value: T) => T,\n shortCircuit?: (value: T) => boolean,\n ): T {\n const childrenMap = this.children$$?.();\n if (!childrenMap) {\n return initialValue;\n }\n let value = initialValue;\n for (const child of childrenMap) {\n if (shortCircuit?.(value)) {\n break;\n }\n value = fn(child, value);\n }\n return value;\n }\n #valueChange: Observable<any> | undefined;\n get valueChanges() {\n return (\n this.#valueChange ??\n (this.#valueChange = toObservable(\n computed(() => ({\n value: this.value$$(),\n disabled: this.disabled$$(),\n })),\n this.value$$,\n {\n injector: this.injector,\n },\n ))\n );\n }\n status$$ = computed(() => {\n if (this.disabled$$()) {\n return VALID;\n }\n const childStatus = this.reduceChildren<VALID_STATUS>(\n VALID,\n (child, value) => {\n if (value === INVALID || child.status$$() === INVALID) {\n return INVALID;\n } else if (value === PENDING || child.status$$() === PENDING) {\n return PENDING;\n }\n return VALID;\n },\n (v) => v === INVALID || v === PENDING,\n );\n if (childStatus === VALID) {\n if (this.rawError$$()) {\n if (this.rawError$$() !== PENDING) {\n return INVALID;\n } else {\n return PENDING;\n }\n }\n }\n return childStatus;\n });\n #statusChange: Observable<VALID_STATUS> | undefined;\n\n get statusChanges() {\n return (\n this.#statusChange ??\n (this.#statusChange = toObservable(this.status$$, this.status$$, {\n injector: this.injector,\n }))\n );\n }\n /** 仅触发 updateOn: submit 时使用 */\n emitSubmit() {\n if (this.children$$) {\n this.children$$().forEach((child) => {\n child.emitSubmit();\n });\n }\n }\n}\n","import { computed, signal } from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\n\nexport class FieldArray<\n TControl extends AbstractControl<any> = any,\n> extends AbstractControl {\n #deletionMode$$ = computed(() => this.config$().deletionMode ?? 'shrink');\n override value$$ = computed<any>(() => {\n const list = [];\n for (const control of this.controls$()) {\n if (control && control.shouldInclude$$()) {\n list.push(control.value$$());\n } else {\n if (this.#deletionMode$$() === 'shrink') {\n continue;\n } else if (this.#deletionMode$$() === 'mark') {\n list.push(undefined);\n }\n }\n }\n const returnResult = list.length === 0 ? this.emptyValue$$() : list;\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n override children$$ = computed(() => this.controls$());\n\n controls$ = signal<AbstractControl[]>([]);\n get controls() {\n return this.controls$();\n }\n\n removeAt(index: number): void {\n const adjustedIndex = this._adjustIndex(index);\n\n if (this.controls$()[adjustedIndex]) {\n this.controls$.update((list) => {\n list = list.slice() as any;\n list.splice(adjustedIndex, 1);\n return list;\n });\n }\n }\n\n override setControl(index: number, control: TControl): void {\n const adjustedIndex = this._adjustIndex(index);\n\n this.controls$.update((list) => {\n list = list.slice() as any;\n list[adjustedIndex] = control;\n return list;\n });\n control.setParent(this);\n }\n\n get length(): number {\n return this.controls$().length;\n }\n\n override reset(value: any[] = []): void {\n this._forEachChild((control: AbstractControl, index: number) => {\n control.reset(value[index]);\n });\n }\n\n override getRawValue() {\n return this.controls$().map((control: AbstractControl) =>\n control.getRawValue(),\n );\n }\n\n clear(): void {\n if (this.controls$().length < 1) return;\n\n this.controls$.update(() => []);\n }\n\n private _adjustIndex(index: number): number {\n return index < 0 ? Math.max(index + this.length, 0) : index;\n }\n\n /** @internal */\n override _forEachChild(\n cb: (c: AbstractControl, index: number) => void,\n ): void {\n this.controls$().forEach((control: AbstractControl, index: number) => {\n if (control) {\n cb(control, index);\n }\n });\n }\n\n override find(name: number): AbstractControl {\n return this.controls$()[this._adjustIndex(name)];\n }\n beforeUpdateList: ((value: any[]) => void)[] = [];\n override updateValue(value: any[] = []): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n this.beforeUpdateList.forEach((item) => item(viewValue));\n this.controls$().forEach((control, i) => {\n control.updateValue(viewValue[i]);\n });\n }\n}\n","import {\n computed,\n DestroyRef,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\nimport { Subject } from 'rxjs';\nconst InitPendingValue = {\n touched: false,\n change: false,\n value: undefined,\n};\nexport class FieldControl<TValue = any> extends AbstractControl<TValue> {\n pendingStatus = signal(InitPendingValue);\n\n override children$$: undefined;\n #viewIndex = 0;\n /** 视图变化时model值不变也要更新view */\n private viewIndex$ = signal(0);\n\n /** model输入值 */\n modelValue$: WritableSignal<TValue | undefined> = signal(undefined);\n private modelValueToViewValueOrigin$$ = computed(() => {\n const viewValue = this.modelValue$();\n const toView = this.config$?.().transfomer?.toView;\n if (toView) {\n return toView(viewValue, this);\n }\n return viewValue;\n });\n /** 传入到view中的值 */\n modelValueToViewValue$$ = computed(\n () => {\n this.viewIndex$();\n return this.modelValueToViewValueOrigin$$();\n },\n { equal: () => false },\n );\n /** modelValue + viewValue => modelValue */\n override value$$ = signal<any>(undefined);\n\n override reset(formState: TValue = this.config$().defaultValue): void {\n this.updateValue(formState, true);\n this.markAsPristine();\n this.markAsUntouched();\n }\n\n /** @internal */\n override _forEachChild(cb: (c: AbstractControl) => void): void {}\n\n #initInput = true;\n\n #viewSubject$$ = computed(() => {\n const subject = new Subject<any>();\n this.injector.get(DestroyRef).onDestroy(() => {\n subject.complete();\n });\n subject.pipe(this.config$().pipe!.toModel!).subscribe((value: any) => {\n untracked(() => {\n this.#viewValueChange(value);\n });\n });\n return subject;\n });\n\n #viewValueChange(value: TValue | undefined) {\n this.markAllAsDirty();\n this.#viewIndex++;\n const toModel = this.config$?.().transfomer?.toModel;\n const originValue = toModel ? toModel(value, this) : value;\n const transfomered = this.schemaParser(originValue);\n if (transfomered.success) {\n this.value$$.set(transfomered.output);\n this.syncError$.update((data) => {\n if (data) {\n delete data['valibot'];\n }\n return data && Object.keys(data).length ? data : undefined;\n });\n } else {\n this.syncError$.update((data) => ({\n ...data,\n valibot: transfomered.issues,\n }));\n }\n }\n\n /** view变更 */\n viewValueChange(value: TValue | undefined) {\n if (this.config$().pipe?.toModel) {\n this.#viewSubject$$().next(value);\n } else {\n this.#viewValueChange(value);\n }\n }\n override updateValue(value: any, force?: boolean): void {\n if (force) {\n this.#viewIndex++;\n this.viewIndex$.set(this.#viewIndex);\n this.resetIndex$.update((a) => a + 1);\n this.#initInput = true;\n }\n if (this.#initInput) {\n this.#initInput = false;\n if ((value !== undefined && !deepEqual(value, this.value$$())) || force) {\n this.modelValue$.set(value);\n this.value$$.set(value);\n }\n return;\n }\n if (deepEqual(value, this.value$$())) {\n return;\n }\n this.viewIndex$.set(this.#viewIndex);\n this.modelValue$.set(value);\n this.value$$.set(value);\n }\n override initConfig(config: any): void {\n super.initConfig(config);\n if ('defaultValue' in this.config$!()) {\n this.modelValue$.set(this.config$!().defaultValue);\n this.value$$.set(this.config$!().defaultValue);\n }\n }\n override emitSubmit(): void {\n const pendingStatus = this.pendingStatus();\n if (pendingStatus.touched) {\n this.markAsTouched();\n }\n if (pendingStatus.change) {\n this.viewValueChange(pendingStatus.value);\n }\n this.pendingStatus.set(InitPendingValue);\n }\n}\n","import { AbstractControl } from './abstract_model';\nimport { FieldArray } from './field-array';\nimport { computed, signal } from '@angular/core';\nimport { LogicType } from './type';\nimport { deepEqual } from 'fast-equals';\n// 切换索引后,理论上应该触发下值变更,否则不知道值是什么\nexport class FieldLogicGroup extends FieldArray {\n /** 待定参数 */\n activateIndex$ = signal(0);\n type = signal<LogicType>('and');\n activateControl$ = signal<AbstractControl[] | undefined>(undefined);\n override value$$ = computed<any>(() => {\n const returnResult = this.getValue(false);\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n\n getActivateControls() {\n let list;\n if (this.activateControl$()) {\n list = this.activateControl$()!;\n } else if (this.type() === 'and') {\n list = this.controls$();\n } else if (this.type() === 'or') {\n list = [this.controls$()[this.activateIndex$()]];\n } else {\n throw new Error('');\n }\n return list;\n }\n getValue(rawData: boolean) {\n const controls = rawData\n ? this.getActivateControls()\n : this.getActivateControls().filter((control) =>\n control.shouldInclude$$(),\n );\n const control = controls[0];\n if (controls.length === 0) {\n return this.emptyValue$$();\n }\n if (controls.length === 1) {\n return control.value;\n }\n const result = controls.reduce(\n (obj, control) => ({ ...obj, ...control.value$$() }),\n {} as Record<string, any>,\n );\n return Object.keys(result).length ? result : this.emptyValue$$();\n }\n\n override getRawValue(): any {\n return this.getValue(true);\n }\n override updateValue(value: any): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n this.controls$().forEach((control, i) => {\n control.updateValue(viewValue);\n });\n }\n}\n","import { FieldArray } from './field-array';\nimport { FieldControl } from './field-control';\nimport { FieldGroup } from './field-group';\nimport { FieldLogicGroup } from './field-logic-group';\n\nexport function isFieldGroup(input: any): input is FieldGroup {\n return input instanceof FieldGroup;\n}\nexport function isFieldArray(input: any): input is FieldArray {\n return input instanceof FieldArray;\n}\nexport function isFieldControl(input: any): input is FieldControl {\n return input instanceof FieldControl;\n}\nexport function isFieldLogicGroup(input: any): input is FieldLogicGroup {\n return input instanceof FieldLogicGroup;\n}\n","import { computed, signal } from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\nimport { isFieldLogicGroup } from './is-field';\n\nexport class FieldGroup<\n TControl extends { [K in keyof TControl]: AbstractControl<any> } = any,\n> extends AbstractControl {\n override value$$ = computed<any>(() => {\n const acc: Partial<TControl> = {};\n const value = this._reduceChildren(acc, (acc, control, name) => {\n if (control.shouldInclude$$()) {\n acc[name] = control.value;\n }\n return acc;\n });\n const result = { ...value, ...this.looseValue$$() };\n const returnResult = Object.keys(result).length\n ? result\n : this.emptyValue$$();\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n override children$$ = computed(() => Object.values(this.controls$()));\n\n controls$ = signal<Record<string, AbstractControl>>({});\n get controls() {\n return this.controls$();\n }\n\n registerControl(name: string, control: AbstractControl) {\n if (this.controls$()[name]) return this.controls$()[name];\n this.controls$.update((controls) => ({ ...controls, [name]: control }));\n control.setParent(this);\n return control;\n }\n\n removeControl(name: string): void {\n if (this.controls$()[name]) {\n this.controls$.update((controls) => {\n controls = { ...controls };\n delete controls[name];\n return controls;\n });\n }\n }\n\n override setControl(name: string, control: AbstractControl): void {\n this.controls$.update((controls) => {\n controls = { ...controls };\n delete controls[name];\n return controls;\n });\n if (control) this.registerControl(name, control);\n }\n\n override reset(value: any = {}): void {\n this._forEachChild((control: AbstractControl, name) => {\n control.reset(value ? (value as any)[name] : undefined);\n });\n }\n\n override getRawValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n (acc as any)[name] = control.getRawValue();\n return acc;\n }) as any;\n }\n\n /** @internal */\n override _forEachChild(cb: (v: any, k: any) => void): void {\n Object.keys(this.controls$()).forEach((key) => {\n const control = this.controls$()[key];\n control && cb(control, key);\n });\n }\n\n /** @internal */\n _reduceChildren<T, K extends keyof TControl>(\n initValue: T,\n fn: (acc: T, control: TControl[K], name: K) => T,\n ): T {\n let res = initValue;\n this._forEachChild((control: TControl[K], name: K) => {\n res = fn(res, control, name);\n });\n return res;\n }\n\n override find(name: string): AbstractControl | null {\n return this.controls$()[name];\n }\n looseValue$$ = computed(() => {\n const resetValue = this.#inputValue$();\n if (!resetValue || isFieldLogicGroup(this.parent)) {\n return {};\n }\n const controls = this.controls$();\n const looseValue = {} as any;\n for (const key in resetValue) {\n if (!(key in controls)) {\n looseValue[key] = resetValue[key];\n }\n }\n return looseValue;\n });\n /**\n * loose object\n * todo 动态添加\n * */\n #inputValue$ = signal({} as Record<string, any>);\n #setInputValue(obj: any) {\n this.#inputValue$.set(obj);\n }\n override updateValue(value: any): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n if (!deepEqual(value, this.#inputValue$())) {\n this.#setInputValue(value);\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n\n for (const key in this.controls$()) {\n const control = this.controls$()[key];\n control.updateValue(viewValue?.[key]);\n }\n }\n}\n","import { AnyCoreSchemaHandle } from '../../convert';\n\nexport function isGroup(schema: AnyCoreSchemaHandle) {\n return schema.isGroup;\n}\nexport function isArray(schema: AnyCoreSchemaHandle) {\n return schema.isArray;\n}\n","import { Injector } from '@angular/core';\nimport { FieldArray } from '../field/field-array';\nimport { FieldControl } from '../field/field-control';\nimport { FieldGroup } from '../field/field-group';\nimport { FieldLogicGroup } from '../field/field-logic-group';\nimport { isFieldLogicGroup } from '../field/is-field';\nimport { FieldFormConfig$ } from '../field/type';\nimport { AbstractControl } from '../field/abstract_model';\nimport { AnyCoreSchemaHandle } from '../convert';\nimport { isArray, isGroup } from './util/is-group';\nimport { RawKeyPath } from '../util';\nexport function createField(\n parentForm: AbstractControl,\n field: AnyCoreSchemaHandle,\n /** 创建用 */\n key: RawKeyPath,\n formConfig$$: FieldFormConfig$,\n isRoot: boolean,\n injector: Injector,\n) {\n let FieldClass;\n if (field.isLogicAnd || field.isLogicOr) {\n FieldClass = FieldLogicGroup;\n } else if (isGroup(field)) {\n FieldClass = FieldGroup;\n } else if (isArray(field) || field.isTuple) {\n FieldClass = FieldArray;\n } else {\n FieldClass = FieldControl;\n }\n let control;\n if (isRoot) {\n control = new (FieldClass as any)(\n field.sourceSchema,\n injector,\n ) as AbstractControl;\n if (isFieldLogicGroup(control)) {\n control.type.set(field.isLogicAnd ? 'and' : 'or');\n }\n control.initConfig(formConfig$$);\n } else {\n control = parentForm.get([key]);\n if (!control) {\n control = new (FieldClass as any)(\n field.sourceSchema,\n injector,\n ) as AbstractControl;\n if (isFieldLogicGroup(control)) {\n control.type.set(field.isLogicAnd ? 'and' : 'or');\n }\n parentForm.setControl?.(key as any, control);\n control.initConfig(formConfig$$);\n }\n }\n return control;\n}\n","import { isSignal, Signal } from '@angular/core';\n\nexport function unWrapSignal<T>(value?: T | Signal<T>) {\n return isSignal(value) ? value() : value;\n}\n","import { DefaultConfigKey } from './type';\nimport { ConfigMergeStrategy } from './type/common-field-config';\n\nexport const DCONFIG_EFAULT_MERGE_STRAGEGY: Record<\n DefaultConfigKey,\n ConfigMergeStrategy\n> = {\n props: 'merge',\n formConfig: 'merge',\n renderConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","export class ParentMap<KEY, VALUE> extends Map<KEY, VALUE> {\n constructor(private parent?: ParentMap<KEY, VALUE>) {\n super();\n }\n override get(key: KEY): VALUE | undefined {\n const result = super.get(key);\n if (result === undefined) {\n return this.parent?.get(key);\n }\n return result;\n }\n}\n","import { PiResolvedCommonViewFieldConfig } from '../type';\n\nexport function* groupGenerator(\n list: PiResolvedCommonViewFieldConfig<any, any>[],\n): Generator<PiResolvedCommonViewFieldConfig<any, any>, void, unknown> {\n for (const item of list) {\n if (!item.keyPath?.length && item.fieldGroup?.().length) {\n yield* groupGenerator(item.fieldGroup());\n } else if (item.keyPath?.length) {\n yield item;\n }\n }\n}\n","import { QueryPath, ArraryIterable, arrayStartsWith } from '../util';\nimport {\n _PiResolvedCommonViewFieldConfig,\n PiResolvedCommonViewFieldConfig,\n} from './type/common-field-config';\nimport { groupGenerator } from './util/group-flat';\n\nexport function fieldQuery(\n key: QueryPath,\n field: PiResolvedCommonViewFieldConfig<any, any>,\n aliasMap: Map<string, PiResolvedCommonViewFieldConfig<any, any>>,\n root: PiResolvedCommonViewFieldConfig<any, any>,\n aliasNotFoundFn?: (\n name: string,\n field: PiResolvedCommonViewFieldConfig<any, any>,\n ) => PiResolvedCommonViewFieldConfig<any, any>,\n) {\n const keyPath = Array.isArray(key)\n ? key\n : typeof key === 'number'\n ? [key]\n : key.split('.');\n const firstPath = keyPath[0];\n let list:\n | ArraryIterable<{\n field: _PiResolvedCommonViewFieldConfig;\n level: number;\n }>\n | undefined;\n if (firstPath === '#') {\n field = root;\n list = [{ field: root, level: 1 }];\n } else if (firstPath === '..') {\n list = [{ field: field.parent!, level: 1 }];\n } else if (typeof firstPath === 'string' && firstPath.startsWith('@')) {\n let queryField = aliasMap.get(firstPath.slice(1));\n if (!queryField && aliasNotFoundFn) {\n queryField = aliasNotFoundFn(firstPath.slice(1), field);\n }\n list = [{ field: queryField!, level: 1 }];\n } else if (field.fieldGroup) {\n list = groupGenerator(field.fieldGroup())\n .filter(\n (field) => field.keyPath && arrayStartsWith(keyPath, field.keyPath),\n )\n .map((field) => ({ field: field, level: field.keyPath?.length! }));\n } else if (field.fieldArray) {\n list = field\n .fieldArray()\n .filter(\n (field) => field.keyPath && arrayStartsWith(keyPath, field.keyPath),\n )\n .map((field) => ({ field: field, level: field.keyPath?.length! }));\n }\n if (!list) {\n return;\n }\n for (const item of list) {\n if (keyPath.length === item.level) {\n return item.field;\n }\n const res = item.field.get(keyPath.slice(item.level), aliasNotFoundFn);\n if (res) {\n return res;\n }\n }\n return undefined;\n}\n","import {\n PI_FORM_BUILDER_OPTIONS_TOKEN,\n PI_FORM_BUILDER_ALIAS_MAP,\n PI_VIEW_CONFIG_TOKEN,\n} from './type/token';\nimport {\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\n\nimport { createField } from './create-field';\nimport { unWrapSignal } from './util/unwrap-signal';\nimport { DCONFIG_EFAULT_MERGE_STRAGEGY } from './const';\nimport { ParentMap } from './class/parent-map';\n\nimport { fieldQuery } from './field-query';\n\nimport {\n _PiResolvedCommonViewFieldConfig,\n ConfigMergeStrategy,\n CoreRawWrapperConfig,\n CoreResolvedWrapperConfig,\n PiCommonDefaultConfig,\n PiResolvedCommonViewFieldConfig,\n} from './type/common-field-config';\nimport {\n BuildRootInputItem,\n BuildGroupItem,\n BuildArrayItem,\n BuildRootItem,\n} from './type/builder.type';\nimport { FieldArray } from '../field/field-array';\nimport { FieldGroup } from '../field/field-group';\nimport { isFieldLogicGroup, isFieldArray } from '../field/is-field';\nimport { AnyCoreSchemaHandle, CoreSchemaHandle } from '../convert';\nimport { isArray, isGroup } from './util/is-group';\nimport {\n RawKeyPath,\n SortedArray,\n SignalInputValue,\n UnWrapSignal,\n clone,\n QueryPath,\n toArray,\n} from '../util';\n\nexport class FormBuilder<SchemaHandle extends CoreSchemaHandle<any, any>> {\n #scopeMap =\n inject(PI_FORM_BUILDER_ALIAS_MAP, { optional: true }) ??\n new ParentMap<string, PiResolvedCommonViewFieldConfig<any, any>>();\n #options = inject(PI_FORM_BUILDER_OPTIONS_TOKEN);\n #injector = inject(Injector);\n #envInjector = inject(EnvironmentInjector);\n #globalConfig = inject(PI_VIEW_CONFIG_TOKEN, { optional: true }) ?? undefined;\n #allFieldInitHookList: (() => void)[] = [];\n\n buildRoot(item: BuildRootInputItem<SchemaHandle>) {\n const field = this.#buildControl(\n {\n type: 'root',\n field: { fullPath: [] },\n form: undefined,\n resolvedField$: item.resolvedField$,\n append: () => {},\n },\n item.field,\n 0,\n );\n\n this.allFieldInitHookCall();\n }\n allFieldInitHookCall() {\n const list = this.#allFieldInitHookList;\n this.#allFieldInitHookList = [];\n list.forEach((fn) => fn());\n }\n #buildField(\n item: BuildGroupItem<SchemaHandle> | BuildArrayItem<SchemaHandle>,\n ) {\n if (item.type === 'group') {\n this.#buildGroup(item);\n } else {\n this.#buildArray(item);\n }\n }\n afterResolveConfig(\n rawConfig: SchemaHandle,\n config: _PiResolvedCommonViewFieldConfig,\n ): _PiResolvedCommonViewFieldConfig | undefined {\n return;\n }\n\n #buildControl(\n parent:\n | BuildGroupItem<SchemaHandle>\n | BuildArrayItem<SchemaHandle>\n | BuildRootItem,\n // 单独一项\n field: SchemaHandle,\n index: number,\n ): PiResolvedCommonViewFieldConfig<any, any> {\n // 利用类型查引用,\n let viewDefaultConfig: PiCommonDefaultConfig | undefined;\n const type = field.type;\n let define;\n if (type) {\n const result = this.#resolveComponent(type);\n viewDefaultConfig = result.defaultConfig;\n define = result.define;\n }\n const mergeStrategy = this.#globalConfig?.defaultConfigMergeStrategy;\n\n const inputs = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.inputs,\n viewDefaultConfig?.inputs,\n field.inputs,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.inputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.inputs),\n );\n const outputs = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.outputs,\n viewDefaultConfig?.outputs,\n field.outputs,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.outputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.outputs),\n );\n const attributes = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.attributes,\n viewDefaultConfig?.attributes,\n field.attributes,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.attributes ??\n DCONFIG_EFAULT_MERGE_STRAGEGY.attributes),\n );\n const wrappers1 = this.configMergeRaw(\n [\n this.#globalConfig?.defaultConfig?.wrappers,\n viewDefaultConfig?.wrappers,\n field.wrappers,\n ],\n true,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.wrappers ?? DCONFIG_EFAULT_MERGE_STRAGEGY.wrappers),\n );\n const wrappers = this.#resolveWrappers(wrappers1);\n const props = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.props,\n viewDefaultConfig?.props,\n field.props,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.props ?? DCONFIG_EFAULT_MERGE_STRAGEGY.props),\n );\n\n const formConfig$ = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.formConfig,\n viewDefaultConfig?.formConfig,\n field.formConfig,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.formConfig ??\n DCONFIG_EFAULT_MERGE_STRAGEGY.formConfig),\n );\n const renderConfig = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.renderConfig,\n viewDefaultConfig?.renderConfig,\n field.renderConfig,\n ],\n false,\n typeof mergeStrategy === 'string'\n ? mergeStrategy\n : (mergeStrategy?.renderConfig ??\n DCONFIG_EFAULT_MERGE_STRAGEGY.renderConfig),\n );\n let control;\n let keyPath: RawKeyPath | undefined = field.key;\n\n if (isFieldLogicGroup(parent.form)) {\n keyPath ??= parent.form.controls$().length;\n } else if (isFieldArray(parent.form)) {\n keyPath ??= index;\n }\n const isRoot = parent.type === 'root';\n if (!field.nonFieldControl && (keyPath !== undefined || isRoot)) {\n control = createField(\n parent.form as any,\n field,\n keyPath!,\n // 这里也是fullPath\n formConfig$,\n isRoot,\n this.#injector,\n );\n }\n const rootForm = this.#options.form$$;\n let resolvedConfig = {\n id: field.id,\n keyPath: toArray(keyPath),\n get fullPath() {\n return [\n ...resolvedConfig.parent.fullPath,\n ...(resolvedConfig.keyPath ?? []),\n ];\n },\n form: {\n parent: parent.form,\n control: control ?? (isGroup(field) ? parent.form : undefined),\n get root() {\n return rootForm();\n },\n },\n get: (\n keyPath: any,\n aliasNotFoundFn?: (\n name: string,\n field: PiResolvedCommonViewFieldConfig<any, any>,\n ) => PiResolvedCommonViewFieldConfig<any, any>,\n ) =>\n untracked(() =>\n fieldQuery(\n keyPath,\n resolvedConfig,\n this.#scopeMap,\n this.#options.resolvedField$(),\n aliasNotFoundFn,\n ),\n ),\n parent: parent.field,\n origin: field,\n renderConfig: renderConfig,\n formConfig: formConfig$,\n props,\n context: this.#options.context,\n priority: field.priority,\n hooks: field.hooks,\n alias: field.alias,\n inputs: inputs,\n outputs: outputs,\n attributes,\n define: define ? { ...define, inputs, outputs, attributes } : undefined,\n wrappers,\n } as any as _PiResolvedCommonViewFieldConfig;\n resolvedConfig =\n this.afterResolveConfig(field, resolvedConfig) ?? resolvedConfig;\n if (field.movePath) {\n this.#moveViewField(field.movePath, resolvedConfig);\n } else {\n parent.append(resolvedConfig);\n }\n if (field.alias) {\n this.#scopeMap.set(field.alias, resolvedConfig);\n }\n resolvedConfig.hooks?.fieldResolved?.(resolvedConfig);\n if (isRoot) {\n parent.resolvedField$.set(resolvedConfig);\n }\n // 递归进行解析\n if (\n isGroup(field) ||\n field.isLogicAnd ||\n field.isLogicOr ||\n field.isTuple\n ) {\n resolvedConfig.fieldGroup = signal(\n new SortedArray<_PiResolvedCommonViewFieldConfig>(\n (a, b) => a.priority - b.priority,\n ),\n );\n this.#buildField({\n type: 'group' as const,\n fields: field.children,\n field: resolvedConfig,\n form: (control || parent.form) as FieldGroup,\n append: (field) => {\n resolvedConfig.fieldGroup!().push(field);\n },\n });\n } else if (isArray(field)) {\n this.#buildField({\n type: 'array' as const,\n templateField: field.arrayChild,\n field: resolvedConfig,\n form: control as FieldArray,\n append: (field) => {},\n });\n }\n if (resolvedConfig.hooks?.allFieldsResolved) {\n this.#allFieldInitHookList.push(() => {\n resolvedConfig.hooks!.allFieldsResolved!(resolvedConfig);\n });\n }\n\n return resolvedConfig;\n }\n\n #buildGroup(groupItem: BuildGroupItem<SchemaHandle>) {\n for (let index = 0; index < groupItem.fields.length; index++) {\n const field = groupItem.fields[index];\n this.#buildControl(groupItem, field, index);\n }\n\n /** 虚拟group不存在hooks */\n const field = groupItem.field as PiResolvedCommonViewFieldConfig<any, any>;\n field.hooks?.afterChildrenInit?.(field);\n }\n createArrayItem(\n parent: BuildGroupItem<SchemaHandle> | BuildArrayItem<SchemaHandle>,\n // 单独一项\n field: AnyCoreSchemaHandle,\n index: number,\n ) {\n const Builder = this.constructor as any as typeof FormBuilder;\n const injector = Injector.create({\n providers: [\n Builder,\n {\n provide: PI_FORM_BUILDER_ALIAS_MAP,\n useValue: new ParentMap<\n string,\n PiResolvedCommonViewFieldConfig<any, any>\n >(this.#scopeMap),\n },\n { provide: EnvironmentInjector, useFactory: () => injector },\n ],\n parent: this.#envInjector,\n });\n this.#envInjector.get(DestroyRef).onDestroy(() => {\n result.injector?.destroy();\n });\n const instance = injector.get(Builder);\n const result = instance.#buildControl(parent, field, index);\n this.#allFieldInitHookList.push(() => instance.allFieldInitHookCall());\n result.injector = injector.get(EnvironmentInjector);\n return result;\n }\n #buildArray(arrayItem: BuildArrayItem<SchemaHandle>) {\n const { templateField, form } = arrayItem;\n\n arrayItem.field.action = {\n // 因为数组需要有动态添加的能力,所以才加上,group不需要\n set: (value, index) => {\n untracked(() => {\n index = (\n typeof index === 'number'\n ? index\n : (arrayItem.field.fieldArray?.().length ?? 0)\n )!;\n const result = this.createArrayItem(arrayItem, templateField, index);\n const list = [...arrayItem.field.fieldArray!()];\n list[index] = result;\n arrayItem.field.fieldArray!.set(list);\n this.allFieldInitHookCall();\n result.form.control!.updateValue(value);\n });\n },\n remove: (index: number) => {\n untracked(() => {\n const list = [...arrayItem.field.fieldArray!()];\n const [deletedItem] = list!.splice(index, 1);\n arrayItem.field.fieldArray!.set(list);\n form.removeAt(index);\n if (deletedItem) {\n deletedItem.injector!.destroy();\n deletedItem.injector = undefined;\n }\n });\n },\n };\n arrayItem.field.fieldArray = signal([]);\n arrayItem.field.hooks?.afterChildrenInit?.(arrayItem.field);\n\n form.beforeUpdateList.push((input) => {\n const controlLength = form.controls$().length;\n if (controlLength < input.length) {\n const list = arrayItem.field.fieldArray!().slice();\n for (let index = controlLength; index < input.length; index++) {\n const result = this.createArrayItem(\n arrayItem,\n arrayItem.templateField,\n index,\n );\n list[index] = result;\n }\n arrayItem.field.fieldArray!.set(list);\n } else if (input.length < controlLength) {\n const list = arrayItem.field.fieldArray!().slice();\n for (\n let index = arrayItem.field.fieldArray!().length - 1;\n index >= input.length;\n index--\n ) {\n const [deletedItem] = list.splice(index, 1);\n form.removeAt(index);\n if (deletedItem) {\n deletedItem.injector?.destroy();\n deletedItem.injector = undefined;\n }\n }\n arrayItem.field.fieldArray!.set(list);\n }\n this.allFieldInitHookCall();\n });\n }\n\n #resolveComponent(type: string | any) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig?.types?.[type];\n if (!config) {\n throw new Error(`define:未注册[${type}]`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n };\n return {\n define: { ...config },\n defaultConfig,\n };\n }\n } else {\n return { define: { type: type } };\n }\n return {\n define,\n defaultConfig,\n };\n }\n\n protected configMergeRaw<T extends SignalInputValue<any>>(\n list: T[],\n isArray: boolean,\n strategy: ConfigMergeStrategy,\n ): UnWrapSignal<NonNullable<T>> {\n let value;\n if (isArray) {\n if (strategy === 'merge') {\n value = list\n .filter(Boolean)\n .flat()\n .map((item) => unWrapSignal(item)) as any;\n } else {\n value = list.reduce(\n (data, item: any) => unWrapSignal(item) ?? data,\n [],\n ) as any;\n }\n } else {\n if (strategy === 'merge') {\n value = list.reduce(\n (obj, item: any) => ({\n ...obj,\n ...unWrapSignal(item),\n }),\n {},\n ) as any;\n } else {\n value = list.reduce(\n (data, item: any) => unWrapSignal(item) ?? data,\n {},\n ) as any;\n }\n }\n return clone(value) as any;\n }\n /**\n * 后面覆盖前面\n * */\n protected configMerge<T extends SignalInputValue<any>>(\n list: T[],\n isArray: boolean,\n strategy: ConfigMergeStrategy,\n ): WritableSignal<UnWrapSignal<NonNullable<T>>> {\n return signal(this.configMergeRaw(list, isArray, strategy));\n }\n #moveViewField(key: QueryPath, inputField: _PiResolvedCommonViewFieldConfig) {\n const parent = fieldQuery(\n key,\n inputField,\n this.#scopeMap,\n this.#options.resolvedField$(),\n (name, field) => {\n const rootForm = this.#options.form$$;\n const aliasField = {\n alias: name,\n parent: field,\n get fullPath() {\n return field.fullPath;\n },\n form: {\n parent: field.form.control ?? field.form.parent,\n control: undefined,\n get root() {\n return rootForm();\n },\n },\n get: (keyPath: any, fn: any) =>\n fieldQuery(\n keyPath,\n aliasField,\n this.#scopeMap,\n this.#options.resolvedField$(),\n fn,\n ),\n fieldGroup: signal(\n new SortedArray<_PiResolvedCommonViewFieldConfig>(\n (a, b) => a.priority - b.priority,\n ) as any,\n ),\n priority: 0,\n renderConfig: signal({}),\n wrappers: signal([]),\n } as any as _PiResolvedCommonViewFieldConfig;\n this.#scopeMap.set(name, aliasField);\n if (inputField === field) {\n throw new Error(`添加位置不可为自身`);\n }\n field.fieldGroup!().push(aliasField);\n return aliasField;\n },\n );\n\n if (!parent) {\n throw new Error('移动视图项失败');\n }\n const index = inputField.parent\n .fieldGroup?.()\n .findIndex((item) => item === inputField);\n if (typeof index === 'number' && index !== -1) {\n inputField.parent.fieldGroup?.().splice(index, 1);\n }\n const newKeyPath = inputField.fullPath.slice(parent.fullPath.length);\n (inputField as any).keyPath = newKeyPath;\n inputField.parent = parent as any;\n parent.fieldGroup!().push(inputField);\n }\n #resolveWrappers(\n wrappers?: CoreRawWrapperConfig[],\n ): WritableSignal<CoreResolvedWrapperConfig[]> {\n const result = (wrappers ?? []).map((wrapper) => {\n // 查引用1\n if (typeof wrapper === 'string') {\n const config = this.#globalConfig?.wrappers?.[wrapper];\n if (!config) {\n throw new Error(`wrapper:未注册[${wrapper}]`);\n }\n return {\n ...config,\n inputs: signal(config.inputs),\n attributes: signal(config.attributes),\n };\n } else if (typeof wrapper.type === 'string') {\n // 查引用2\n const config = this.#globalConfig?.wrappers?.[wrapper.type];\n if (!config) {\n throw new Error(`wrapper:未注册[${wrapper.type}]`);\n }\n return {\n inputs: signal({ ...config.inputs, ...wrapper.inputs }),\n outputs: { ...config.outputs, ...wrapper.outputs },\n attributes: signal({ ...config.attributes, ...wrapper.attributes }),\n type: config.type,\n };\n } else {\n return {\n ...wrapper,\n inputs: signal(wrapper.inputs),\n attributes: signal(wrapper.attributes),\n };\n }\n });\n return signal(result);\n }\n}\n","import type { BaseMetadata } from 'valibot';\nimport { KeyPath } from '../../util';\n\nexport interface LayoutAction<TInput = unknown> extends BaseMetadata<TInput> {\n readonly type: 'layout';\n readonly reference: typeof layout;\n readonly value: {\n keyPath?: KeyPath;\n priority?: number;\n };\n}\n\nexport function layout<TInput>(\n value: LayoutAction['value'],\n): LayoutAction<TInput> {\n return {\n kind: 'metadata',\n type: 'layout',\n reference: layout,\n value: value,\n };\n}\n","import { createRawConfig } from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nexport const rawConfig = createRawConfig<'viewRawConfig', AnyCoreSchemaHandle>(\n 'viewRawConfig',\n);\n","import { rawConfig } from './raw-config';\n\nexport function setComponent<T>(type: any) {\n return rawConfig<T>((field) => {\n field.type = type;\n });\n}\n","import { RawConfigActionCommon } from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nimport { rawConfig } from './raw-config';\ntype Hooks = AnyCoreSchemaHandle['hooks'];\nexport type HooksConfig<T> = <B>(hooks: T) => RawConfigActionCommon<B>;\nexport const setHooks: HooksConfig<Hooks> = (hooks) =>\n rawConfig((field) => {\n field.hooks = hooks;\n });\nexport const patchHooks: HooksConfig<Hooks> = (hooks) =>\n rawConfig((field) => {\n field.hooks = { ...field.hooks, ...hooks };\n });\ntype HooksKey = keyof NonNullable<Hooks>;\nconst DefaultOptions = { position: 'bottom' as const };\nexport type MergeHooksConfig<T> = <B>(\n hooks: T,\n options?: { position: 'top' | 'bottom' },\n) => RawConfigActionCommon<B>;\nexport function mergeHooksFn<T extends AnyCoreSchemaHandle>(\n hooks: T['hooks'],\n options: { position: 'top' | 'bottom' },\n field: T,\n) {\n field.hooks ??= {};\n for (const key in hooks) {\n const oldFn = (field.hooks as any)[key];\n (field.hooks as any)[key] = (...args: any) => {\n if (options.position === 'top') {\n (hooks as any)[key](...args);\n }\n oldFn?.(...args);\n if (options.position === 'bottom') {\n (hooks as any)[key](...args);\n }\n };\n }\n}\nexport const mergeHooks: MergeHooksConfig<Hooks> = (\n hooks: Hooks,\n options: { position: 'top' | 'bottom' } = DefaultOptions,\n) => rawConfig((field) => mergeHooksFn(hooks, options, field));\nexport function removeHooks<T>(list: HooksKey[]) {\n return rawConfig<T>((field) => {\n const oldValue = field.hooks;\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.hooks = oldValue;\n });\n}\n","import {\n computed,\n isSignal,\n linkedSignal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { rawConfig } from './raw-config';\nimport {\n _PiResolvedCommonViewFieldConfig,\n CoreRawViewInputs,\n} from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../util/is-promise';\nimport { unWrapSignal, Writeable } from '../../util';\nexport function setInputs<T>(inputs: CoreRawViewInputs) {\n return rawConfig<T>((field) => {\n field.inputs = inputs;\n });\n}\nexport function patchInputs<T>(inputs: CoreRawViewInputs) {\n return rawConfig<T>((field) => {\n field.inputs = {\n ...field.inputs,\n ...inputs,\n };\n });\n}\nexport function removeInputs<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.inputs);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.inputs = oldValue;\n });\n}\nexport function asyncInputMerge(\n dataObj: Record<string, any>,\n data$: WritableSignal<any>,\n) {\n const signalObj = {} as Record<string, Signal<any>>;\n const inputList = Object.keys(dataObj);\n\n inputList.forEach((key) => {\n const result = dataObj[key];\n if (isPromise(result)) {\n // promise\n result.then((value: any) => {\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = value;\n return lastData;\n });\n });\n } else if (isSubscribable(result)) {\n // rxjs\n result.subscribe({\n next: (value) => {\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = value;\n return lastData;\n });\n },\n });\n } else if (isSignal(result)) {\n signalObj[key] = result;\n } else {\n // 普通类型\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = result;\n return lastData;\n });\n }\n });\n const signalKeyList = Object.keys(signalObj);\n\n if (signalKeyList.length) {\n return linkedSignal(\n computed(() => ({\n ...data$(),\n ...signalKeyList.reduce(\n (obj, key) => ({ ...obj, [key]: signalObj[key]() }),\n {} as Record<string, any>,\n ),\n })),\n );\n }\n return data$;\n}\nexport function patchAsyncFn(patchKey: 'props' | 'inputs' | 'attributes') {\n return <T>(\n dataObj: Record<\n string,\n (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Promise<any> | Observable<any> | Signal<any> | (any & {})\n >,\n options?: {\n addPosition: 'top' | 'bottom';\n hookName: 'fieldResolved' | 'allFieldsResolved';\n },\n ) =>\n rawConfig<T>((rawField) => {\n const inputList = Object.keys(dataObj);\n const hookName = options?.hookName ?? ('allFieldsResolved' as const);\n // 设置初始值\n rawField[patchKey] = {\n ...rawField[patchKey],\n ...inputList.reduce((obj, item) => {\n obj[item] = rawField[patchKey]?.[item] ?? undefined;\n return obj;\n }, {} as any),\n };\n return mergeHooksFn(\n {\n [hookName]: (field: _PiResolvedCommonViewFieldConfig) => {\n (field as Writeable<_PiResolvedCommonViewFieldConfig>)[patchKey] =\n asyncInputMerge(\n Object.entries(dataObj).reduce(\n (obj, [key, value]) => {\n obj[key] = value(field);\n return obj;\n },\n {} as Record<string, any>,\n ),\n field[patchKey],\n );\n },\n },\n { position: options?.addPosition ?? 'bottom' },\n rawField,\n );\n });\n}\nexport const patchAsyncInputs = patchAsyncFn('inputs');\n","import { rawConfig } from './raw-config';\nimport { CoreRawViewAttributes } from '../../builder-base';\nimport { unWrapSignal } from '../../util';\nimport { patchAsyncFn } from './input';\nexport function setAttributes<T>(attributes: CoreRawViewAttributes) {\n return rawConfig<T>((field) => {\n field.attributes = attributes;\n });\n}\nexport function patchAttributes<T>(attributes: CoreRawViewAttributes) {\n return rawConfig<T>((field) => {\n field.attributes = {\n ...field.attributes,\n ...attributes,\n };\n });\n}\nexport function removeAttributes<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.attributes);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.attributes = oldValue;\n });\n}\nexport const patchAsyncAttributes = patchAsyncFn('attributes');\n","import { rawConfig } from './raw-config';\nimport { CoreRawProps } from '../../builder-base';\nimport { unWrapSignal } from '../../util';\nimport { patchAsyncFn } from './input';\nexport function setProps<T>(props: CoreRawProps) {\n return rawConfig<T>((field) => {\n field.props = props;\n });\n}\nexport function patchProps<T>(props: CoreRawProps) {\n return rawConfig<T>((field) => {\n field.props = {\n ...field.props,\n ...props,\n };\n });\n}\nexport function removeProps<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.props);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.props = oldValue;\n });\n}\nexport const patchAsyncProps = patchAsyncFn('props');\n","import { rawConfig } from './raw-config';\nimport {\n _PiResolvedCommonViewFieldConfig,\n CoreRawViewOutputs,\n} from '../../builder-base';\nimport { combineLatest, map, Observable, skip, startWith, Subject } from 'rxjs';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nimport { mergeHooksFn } from './hook';\nimport { KeyPath } from '../../util';\nexport function setOutputs<T>(outputs: CoreRawViewOutputs) {\n return rawConfig<T>((field) => {\n field.outputs = outputs;\n });\n}\nexport function patchOutputs<T>(outputs: CoreRawViewOutputs) {\n return rawConfig<T>((field) => {\n const oldValue = field.outputs;\n field.outputs = {\n ...oldValue,\n ...outputs,\n };\n });\n}\nexport function removeOutputs<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = field.outputs;\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.outputs = oldValue;\n });\n}\n\nexport function mergeOutputFn(\n field: _PiResolvedCommonViewFieldConfig,\n outputs: CoreRawViewOutputs,\n options: { position: 'top' | 'bottom' },\n) {\n field.outputs.update((originOutputs) => {\n originOutputs = { ...originOutputs };\n for (const key in outputs) {\n const oldFn = (originOutputs as any)[key];\n (originOutputs as any)[key] = (...args: any[]) => {\n if (options.position === 'top') {\n (outputs as any)[key](...args, field);\n }\n oldFn?.(...args, field);\n if (options.position === 'bottom') {\n (outputs as any)[key](...args, field);\n }\n };\n }\n return originOutputs;\n });\n}\nconst DefaultOptions = { position: 'bottom' as const };\n\nexport const mergeOutputs = <T>(\n outputs: Record<string, (...args: any[]) => void>,\n options: { position: 'top' | 'bottom' } = DefaultOptions,\n) =>\n rawConfig<T>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n mergeOutputFn(field, outputs, options);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n\nexport type EventChangeFn = (\n fn: (\n input: {\n list: KeyPath | undefined;\n output: string;\n }[],\n ) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n) => void;\n\nexport function outputChangeFn(\n rawField: AnyCoreSchemaHandle,\n fn: EventChangeFn,\n) {\n mergeHooksFn(\n {\n allFieldsResolved: (field) =>\n fn((list) => {\n const resultList: {\n subject: Subject<any>;\n field: _PiResolvedCommonViewFieldConfig;\n }[] = [];\n for (const item of list) {\n const emitField = !item.list ? field : field.get(item.list)!;\n const subject = new Subject();\n mergeOutputFn(\n field,\n {\n [item.output]: (...args: any[]) => {\n subject.next(args);\n },\n },\n { position: 'bottom' },\n );\n resultList.push({\n subject,\n field: emitField,\n });\n }\n return combineLatest(\n resultList.map(({ subject }) => subject.pipe(startWith(undefined))),\n ).pipe(\n skip(1),\n map((list) => ({\n list,\n field,\n listenFields: resultList.map((item) => item.field),\n })),\n );\n }),\n },\n { position: 'bottom' },\n rawField,\n );\n}\n\nexport function outputChange<T>(fn: EventChangeFn) {\n return rawConfig<T>((field) => outputChangeFn(field, fn));\n}\n","import { rawConfig } from './raw-config';\nimport { CoreRawWrapperConfig } from '../../builder-base';\nimport { toArray } from '../../util';\n\nexport function setWrappers<T>(wrappers: CoreRawWrapperConfig[]) {\n return rawConfig<T>((field) => {\n field.wrappers = wrappers;\n });\n}\ntype PatchWrappersOptions = {\n position: 'head' | 'tail';\n};\nconst defaultValue: PatchWrappersOptions = {\n position: 'tail',\n};\nexport function patchWrappers<T>(\n wrappers: CoreRawWrapperConfig | CoreRawWrapperConfig[],\n options: PatchWrappersOptions = defaultValue,\n) {\n return rawConfig<T>((field) => {\n const list = toArray(wrappers)!;\n field.wrappers ??= [];\n if (options.position === 'tail') {\n field.wrappers.push(...list);\n } else {\n field.wrappers.unshift(...list);\n }\n });\n}\nexport function removeWrappers<T>(list: string[]) {\n return rawConfig<T>((field) => {\n if (!field.wrappers) {\n return;\n }\n const wrappers = field.wrappers;\n for (let i = 0; i < list.length; i++) {\n const name = list[i];\n for (let j = 0; j < wrappers.length; j++) {\n const config = wrappers[j];\n const name2 = typeof config === 'string' ? config : config.type;\n if (name2 === name) {\n wrappers.splice(j, 1);\n break;\n }\n }\n }\n field.wrappers = wrappers;\n });\n}\n","import { rawConfig } from './raw-config';\n\nexport function setAlias<T>(alias: string) {\n return rawConfig<T>((field) => {\n field.alias = alias;\n });\n}\n","import { FieldRenderConfig } from '../../builder-base';\nimport { FieldFormConfig } from '../../field/type';\nimport { rawConfig } from './raw-config';\n\nexport function renderConfig<T>(type: FieldRenderConfig) {\n return rawConfig<T>((field) => {\n field.renderConfig = type;\n });\n}\nexport function formConfig<T>(config: FieldFormConfig<T>) {\n return rawConfig<T>((field) => {\n field.formConfig = { ...field.formConfig, ...config };\n });\n}\n","import { combineLatest, map, Observable, skip } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { rawConfig } from './raw-config';\nimport { KeyPath } from '../../util';\nexport interface ValueChangFnOptions {\n list?: (KeyPath | undefined)[];\n skipInitValue?: boolean;\n}\nexport interface ChangeWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n fn: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n input: ValueChangFnOptions;\n }>,\n ) => void;\n}\nexport type ValueChangeFn = (\n fn: (input?: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n) => void;\nconst DefaultSelfList = [undefined];\nexport function valueChangeFn(\n field: _PiResolvedCommonViewFieldConfig,\n input: ValueChangFnOptions = {},\n) {\n const list = (input.list ?? DefaultSelfList).map((keyPath) =>\n !keyPath ? field.form.control! : field.get(keyPath)!.form.control!,\n );\n\n return combineLatest(\n list.map((control) =>\n input.skipInitValue\n ? control.valueChanges.pipe(skip(1))\n : control.valueChanges,\n ),\n ).pipe(map((list) => ({ list, field, listenFields: list })));\n}\n\nexport function valueChange<TInput>(listenFn: ValueChangeFn) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n listenFn((options) => valueChangeFn(field, options), field);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\n","import { Observable } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { valueChangeFn, ValueChangFnOptions } from './value-change';\nimport { rawConfig } from './raw-config';\nexport interface HideWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n disabled?: boolean;\n\n listen: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n ) => Observable<boolean>;\n}\n\nexport function hideWhen<TInput>(options: HideWhenOption) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n options\n .listen((options) => valueChangeFn(field, options), field)\n .subscribe((hidden) => {\n field.renderConfig.update((value) =>\n !!value.hidden !== hidden\n ? { ...value, hidden: hidden }\n : value,\n );\n if (options.disabled !== undefined && field.formConfig) {\n field.formConfig.update((value) => {\n value = { ...value };\n value.disabled = hidden ? options.disabled! : false;\n return value;\n });\n }\n });\n },\n },\n { position: 'bottom' },\n field,\n );\n\n return field;\n });\n}\n","import { Observable } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { valueChangeFn, ValueChangFnOptions } from './value-change';\nimport { rawConfig } from './raw-config';\nexport interface DisableWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n listen: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n ) => Observable<boolean>;\n}\n\nexport function disableWhen<TInput>(options: DisableWhenOption) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n options\n .listen((options) => valueChangeFn(field, options), field)\n .subscribe((disabled) => {\n if (field.formConfig().disabled !== disabled) {\n field.formConfig.update((value) => ({\n ...value,\n disabled: disabled,\n }));\n }\n });\n },\n },\n { position: 'bottom' },\n field,\n );\n\n return field;\n });\n}\n","import clsx from 'clsx';\nimport { ClassValue } from 'clsx';\nimport { rawConfig } from './raw-config';\nimport { mergeHooksFn } from './hook';\n/** 必须防止到所有wrappers操作后面,防止设置错误\n * 设置到顶层,可能是wrapper,也可能是component\n *\n */\nexport function topClass<T>(className: ClassValue, merge?: boolean) {\n return rawConfig<T>((rawField) => {\n mergeHooksFn(\n {\n fieldResolved: (field) => {\n const wrappers = field.wrappers();\n if (wrappers?.length) {\n wrappers[0].attributes.update((attributes) => ({\n ...attributes,\n class: merge\n ? clsx(attributes?.['class'], className)\n : clsx(className),\n }));\n } else {\n field.attributes.update((attributes) => ({\n ...attributes,\n class: merge\n ? clsx(attributes?.['class'], className)\n : clsx(className),\n }));\n }\n },\n },\n { position: 'bottom' },\n rawField,\n );\n });\n}\n/** 仅设置在组件上 */\nexport function componentClass<T>(className: ClassValue, merge?: boolean) {\n return rawConfig<T>((field) => {\n field.attributes = {\n ...field.attributes,\n class: merge\n ? clsx(field.attributes?.['class'], className)\n : clsx(className),\n };\n });\n}\n","import type { BaseMetadata } from 'valibot';\n\nexport interface NonFieldControlAction<TInput = unknown>\n extends BaseMetadata<TInput> {\n readonly type: 'nonFieldControl';\n readonly reference: typeof nonFieldControl;\n readonly value: boolean;\n}\n\nexport function nonFieldControl<TInput>(\n value = true,\n): NonFieldControlAction<TInput> {\n return {\n kind: 'metadata',\n type: 'nonFieldControl',\n reference: nonFieldControl,\n value: value,\n };\n}\n","import {\n ArraySchema,\n BaseSchema,\n BaseIssue,\n ErrorMessage,\n ArrayIssue,\n} from 'valibot';\n\nimport * as v from 'valibot';\n\nimport {\n BaseSchemaHandle,\n convertSchema,\n DefaultSchema,\n EnumSchema,\n IntersectSchema,\n LazySchema,\n MetadataAction,\n Schema,\n SchemaOrPipe,\n TupleSchema,\n UnionSchema,\n VoidSchema,\n} from '@piying/valibot-visit';\nimport {\n FieldRenderConfig,\n CoreRawViewOutputs,\n CoreRawWrapperConfig,\n CoreRawViewInputs,\n _PiResolvedCommonViewFieldConfig,\n HookConfig,\n} from '../../builder-base';\nimport { FieldFormConfig } from '../../field/type';\nimport { QueryPath } from '../../util';\nimport { NonFieldControlAction } from '../action/non-field-control';\n\nexport class CoreSchemaHandle<\n Self extends CoreSchemaHandle<any, any>,\n RESOLVED_FN extends () => any,\n> extends BaseSchemaHandle<Self> {\n inputs?: CoreRawViewInputs;\n outputs?: CoreRawViewOutputs;\n wrappers?: CoreRawWrapperConfig[];\n attributes?: Record<string, any>;\n alias?: string;\n movePath?: QueryPath;\n renderConfig?: FieldRenderConfig;\n /** todo 非表单应该可选 */\n formConfig: FieldFormConfig = {};\n id?: string;\n isLogicAnd = false;\n isLogicOr = false;\n isArray = false;\n isTuple = false;\n nonFieldControl = false;\n hooks?: HookConfig<ReturnType<RESOLVED_FN>>;\n override lazySchema(schema: LazySchema): void {\n super.lazySchema(schema);\n if (this.parent) {\n const wrappered = this.lazyWrapped as any as Self;\n if (this.parent.isArray) {\n this.parent.arrayChild = wrappered;\n } else {\n const index = this.parent.children.findIndex((item) => item === this);\n this.parent.children[index] = wrappered;\n }\n wrappered!.parent = this.parent;\n wrappered!.key = this.key;\n }\n }\n override arraySchema(\n schema: ArraySchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ArrayIssue> | undefined\n >,\n ): void {\n if (this.isObjectControl) {\n // 不需要设置默认值,因为item属于模板\n return;\n } else {\n this.isArray = true;\n const sh = new this.globalConfig.handle(this.globalConfig, this, schema);\n sh.parent = this;\n this.arrayChild = sh;\n convertSchema(schema.item as SchemaOrPipe, sh);\n }\n }\n\n override defaultSchema(schema: DefaultSchema): void {\n this.defaultValue = schema.literal;\n }\n override tupleDefault(schema: TupleSchema): void {\n super.tupleDefault(schema);\n this.isTuple = true;\n }\n override enumSchema(schema: EnumSchema): void {\n this.props ??= {};\n this.props['options'] ??= schema.options;\n }\n override intersectBefore(schema: IntersectSchema): void {\n if (this.childrenAsVirtualGroup) {\n // 临时修复,需要把action分为前后两个部分\n if (this.type === 'intersect') {\n this.type = 'intersect-group';\n }\n } else {\n this.isLogicAnd = true;\n }\n }\n override logicItemSchema(\n schema: v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n index: number,\n type: 'intersect' | 'union',\n ): void {\n const sh = new this.globalConfig.handle(\n this.globalConfig,\n this as unknown as AnyCoreSchemaHandle,\n schema,\n );\n if (this.childrenAsVirtualGroup) {\n } else {\n sh.key = index;\n }\n sh.setParent(this);\n convertSchema(schema as SchemaOrPipe, sh);\n }\n override unionBefore(schema: UnionSchema): void {\n if (this.childrenAsVirtualGroup) {\n // 这个参数并不应该出现到这里,因为是专门为intersect设计\n } else {\n this.isLogicOr = true;\n }\n }\n\n override beforeSchemaType(schema: Schema): void {\n super.beforeSchemaType(schema);\n this.formConfig.required = !this.undefinedable && !this.nullable;\n }\n override voidSchema(schema: VoidSchema): void {\n this.nonFieldControl = true;\n }\n\n override metadataDefaulthandle(\n metadata: MetadataAction,\n environments: string[],\n ): void {\n switch (metadata.type as any) {\n case 'viewRawConfig': {\n (metadata as any).value(this as any, this.globalConfig.context);\n break;\n }\n case 'layout': {\n this.movePath = (metadata as any).value.keyPath;\n this.priority = (metadata as any).value.priority;\n break;\n }\n case 'nonFieldControl': {\n this.nonFieldControl = (metadata as any as NonFieldControlAction).value;\n break;\n }\n\n default:\n break;\n }\n }\n override end(schema: SchemaOrPipe): void {\n super.end(schema);\n this.formConfig.defaultValue = this.defaultValue;\n }\n}\nexport type AnyCoreSchemaHandle = CoreSchemaHandle<\n any,\n () => _PiResolvedCommonViewFieldConfig\n>;\n","import {\n AnyCoreSchemaHandle,\n CoreSchemaHandle,\n} from './handle/core.schema-handle';\n\nimport {\n convertCore,\n ConvertOptions,\n SchemaOrPipe,\n} from '@piying/valibot-visit';\nimport { computed, EnvironmentInjector, Injector, signal } from '@angular/core';\nimport {\n PI_FORM_BUILDER_OPTIONS_TOKEN,\n PI_VIEW_CONFIG_TOKEN,\n PiCommonConfig,\n PiResolvedCommonViewFieldConfig,\n FormBuilder,\n FormBuilderOptions,\n PI_CONTEXT_TOKEN,\n} from '../builder-base';\nimport { FieldGroup } from '../field/field-group';\nimport { SetOptional } from '../util';\nexport function convert<\n RESULT extends Omit<PiResolvedCommonViewFieldConfig<any, any>, 'define'>,\n>(\n obj: SchemaOrPipe,\n options: SetOptional<ConvertOptions, 'handle'> & {\n injector: Injector;\n builder: typeof FormBuilder;\n fieldGlobalConfig?: PiCommonConfig;\n registerOnDestroy?: (fn: any) => void;\n },\n) {\n const buildOptions: FormBuilderOptions<RESULT> = {\n form$$: computed<FieldGroup>(\n () => buildOptions.resolvedField$()?.form.control as any,\n ),\n resolvedField$: signal(undefined as any),\n context: options.context,\n };\n const injector = Injector.create({\n providers: [\n {\n provide: PI_FORM_BUILDER_OPTIONS_TOKEN,\n useValue: buildOptions,\n },\n {\n provide: PI_VIEW_CONFIG_TOKEN,\n useValue: options.fieldGlobalConfig,\n },\n {\n provide: PI_CONTEXT_TOKEN,\n useValue: options.context,\n },\n options.builder,\n { provide: EnvironmentInjector, useFactory: () => injector },\n ],\n parent: options.injector,\n });\n options.registerOnDestroy?.(() => {\n injector.get(EnvironmentInjector).destroy();\n });\n return convertCore(\n obj,\n (item: AnyCoreSchemaHandle) => {\n // todo\n injector.get(options.builder).buildRoot({\n field: item,\n resolvedField$: buildOptions.resolvedField$,\n });\n return buildOptions.resolvedField$();\n },\n {\n ...options,\n handle: options?.handle ?? (CoreSchemaHandle as any),\n },\n );\n}\n","import * as v from 'valibot';\nexport const NFCSchema = v.optional(v.void());\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unWrapSignal","DefaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"piying-view-angular-core.mjs","sources":["../../../projects/view-angular-core/src/util/array-startswith.ts","../../../projects/view-angular-core/src/util/effect-listen.ts","../../../projects/view-angular-core/src/util/to_observable.ts","../../../projects/view-angular-core/src/util/clone.ts","../../../projects/view-angular-core/src/util/unwrap-signal.ts","../../../projects/view-angular-core/src/util/to-array.ts","../../../projects/view-angular-core/src/util/sorted-array.ts","../../../projects/view-angular-core/src/util/create-view-control-link.ts","../../../projects/view-angular-core/src/util/control-status-to-class.ts","../../../projects/view-angular-core/src/convert/util/is-promise.ts","../../../projects/view-angular-core/src/util/async-validator-convert.ts","../../../projects/view-angular-core/src/builder-base/type/token.ts","../../../projects/view-angular-core/src/field/abstract_model.ts","../../../projects/view-angular-core/src/field/field-array.ts","../../../projects/view-angular-core/src/field/field-control.ts","../../../projects/view-angular-core/src/field/field-logic-group.ts","../../../projects/view-angular-core/src/field/is-field.ts","../../../projects/view-angular-core/src/field/field-group.ts","../../../projects/view-angular-core/src/builder-base/util/is-group.ts","../../../projects/view-angular-core/src/builder-base/create-field.ts","../../../projects/view-angular-core/src/builder-base/util/unwrap-signal.ts","../../../projects/view-angular-core/src/builder-base/const.ts","../../../projects/view-angular-core/src/builder-base/class/parent-map.ts","../../../projects/view-angular-core/src/builder-base/util/group-flat.ts","../../../projects/view-angular-core/src/builder-base/field-query.ts","../../../projects/view-angular-core/src/builder-base/builder.base.ts","../../../projects/view-angular-core/src/convert/action/layout.ts","../../../projects/view-angular-core/src/convert/action/raw-config.ts","../../../projects/view-angular-core/src/convert/action/component.ts","../../../projects/view-angular-core/src/convert/action/hook.ts","../../../projects/view-angular-core/src/convert/action/input.ts","../../../projects/view-angular-core/src/convert/action/attribute.ts","../../../projects/view-angular-core/src/convert/action/prop.ts","../../../projects/view-angular-core/src/convert/action/output.ts","../../../projects/view-angular-core/src/convert/action/wrapper.ts","../../../projects/view-angular-core/src/convert/action/alias.ts","../../../projects/view-angular-core/src/convert/action/config.ts","../../../projects/view-angular-core/src/convert/action/value-change.ts","../../../projects/view-angular-core/src/convert/action/hide-when.ts","../../../projects/view-angular-core/src/convert/action/disable-when.ts","../../../projects/view-angular-core/src/convert/action/class.ts","../../../projects/view-angular-core/src/convert/action/non-field-control.ts","../../../projects/view-angular-core/src/convert/handle/core.schema-handle.ts","../../../projects/view-angular-core/src/convert/form-convert.ts","../../../projects/view-angular-core/src/convert/schema/no-control.schema.ts","../../../projects/view-angular-core/piying-view-angular-core.ts"],"sourcesContent":["export function arrayStartsWith(list: any[], parts: any[] | any) {\n return (Array.isArray(parts) ? parts : [parts]).every(\n (item, index) => item === list[index],\n );\n}\n","import { CreateEffectOptions, effect, EffectRef } from '@angular/core';\nimport { deepEqual } from 'fast-equals';\n/** 跳过第一个值,假如发射时和初始值不同 */\nexport function effectListen(\n listen: () => any,\n fn: () => void,\n options?: CreateEffectOptions,\n): EffectRef {\n let first = true;\n const oldValue = listen();\n return effect(() => {\n const currentValue = listen();\n if (first) {\n first = false;\n if (!deepEqual(oldValue, currentValue)) {\n fn();\n }\n return;\n }\n return fn();\n }, options);\n}\n","import { Injector, Signal, inject, untracked, DestroyRef } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { effectListen } from './effect-listen';\n\n/**\n * Options for `toObservable`.\n *\n * @publicApi 20.0\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @publicApi 20.0\n */\nexport function toObservable<T>(\n listen: Signal<any>,\n source: Signal<T>,\n options?: ToObservableOptions,\n): Observable<T> {\n const injector = options?.injector ?? inject(Injector);\n const subject = new BehaviorSubject<T>(source());\n\n const watcher = effectListen(\n listen,\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n { injector, manualCleanup: true },\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n","import rfdc from 'rfdc';\nexport const clone = rfdc({ proto: false, circles: false });\n","import { isSignal, Signal, WritableSignal } from '@angular/core';\n\nexport function unWrapSignal<T>(value?: T | Signal<T>) {\n return isSignal(value) ? value() : value;\n}\n\nexport type UnWrapSignal<T> = T extends Signal<infer Value> ? Value : T;\n\nexport type SignalInputValue<T> = T | Signal<T> | WritableSignal<T> | undefined;\n","export function toArray(input: any): any[] | undefined {\n return input === undefined\n ? input\n : Array.isArray(input)\n ? input\n : ([input] as const);\n}\n","export class SortedArray<T> extends Array {\n #compareFn;\n constructor(compareFn: (a: T, b: T) => number) {\n super();\n this.#compareFn = compareFn;\n }\n\n override push(...items: any[]): number {\n const result = super.push(...items);\n this.sort(this.#compareFn);\n return result;\n }\n}\n","import { effect, Injector, untracked } from '@angular/core';\n// import { ControlValueAccessor } from '@angular/forms';\nimport { FieldControl } from '../field/field-control';\nexport interface ControlValueAccessor {\n /**\n * @description\n * Writes a new value to the element.\n *\n * This method is called by the forms API to write to the view when programmatic\n * changes from model to view are requested.\n *\n * @usageNotes\n * ### Write a value to the element\n *\n * The following example writes a value to the native DOM element.\n *\n * ```ts\n * writeValue(value: any): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\n * }\n * ```\n *\n * @param obj The new value for the element\n */\n writeValue(obj: any): void;\n /**\n * @description\n * Registers a callback function that is called when the control's value\n * changes in the UI.\n *\n * This method is called by the forms API on initialization to update the form\n * model when values propagate from the view to the model.\n *\n * When implementing the `registerOnChange` method in your own value accessor,\n * save the given function so your class calls it at the appropriate time.\n *\n * @usageNotes\n * ### Store the change function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnChange(fn: (_: any) => void): void {\n * this._onChange = fn;\n * }\n * ```\n *\n * When the value changes in the UI, call the registered\n * function to allow the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(change)': '_onChange($event.target.value)'\n * }\n * ```\n *\n * @param fn The callback function to register\n */\n registerOnChange(fn: any): void;\n /**\n * @description\n * Registers a callback function that is called by the forms API on initialization\n * to update the form model on blur.\n *\n * When implementing `registerOnTouched` in your own value accessor, save the given\n * function so your class calls it when the control should be considered\n * blurred or \"touched\".\n *\n * @usageNotes\n * ### Store the callback function\n *\n * The following example stores the provided function as an internal method.\n *\n * ```ts\n * registerOnTouched(fn: any): void {\n * this._onTouched = fn;\n * }\n * ```\n *\n * On blur (or equivalent), your class should call the registered function to allow\n * the forms API to update itself:\n *\n * ```ts\n * host: {\n * '(blur)': '_onTouched()'\n * }\n * ```\n *\n * @param fn The callback function to register\n */\n registerOnTouched(fn: any): void;\n /**\n * @description\n * Function that is called by the forms API when the control status changes to\n * or from 'DISABLED'. Depending on the status, it enables or disables the\n * appropriate DOM element.\n *\n * @usageNotes\n * The following is an example of writing the disabled property to a native DOM element:\n *\n * ```ts\n * setDisabledState(isDisabled: boolean): void {\n * this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n * }\n * ```\n *\n * @param isDisabled The disabled status to set on the element\n */\n setDisabledState?(isDisabled: boolean): void;\n}\nexport function createViewControlLink(\n fieldControl: () => FieldControl,\n cva: ControlValueAccessor,\n injector: Injector,\n) {\n cva.registerOnChange((value: any) => {\n if (fieldControl().disabled$$()) {\n return;\n }\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n value: value,\n change: true,\n }));\n if (fieldControl().updateOn$$() === 'change') {\n fieldControl().viewValueChange(value);\n }\n });\n cva.registerOnTouched(() => {\n if (fieldControl().disabled$$()) {\n return;\n }\n const updateOn = fieldControl().updateOn$$();\n const pendingStatus = fieldControl().pendingStatus();\n if (updateOn === 'submit') {\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n touched: true,\n }));\n } else {\n fieldControl().markAsTouched();\n if (pendingStatus.change && updateOn === 'blur') {\n fieldControl().viewValueChange(pendingStatus.value);\n fieldControl().pendingStatus.update((status) => ({\n ...status,\n change: false,\n value: undefined,\n }));\n }\n }\n });\n const disposeList: (() => any)[] = [];\n const ref = effect(\n () => {\n const value = fieldControl().modelValueToViewValue$$();\n untracked(() => {\n cva.writeValue(value);\n });\n },\n { injector: injector },\n );\n cva.writeValue(fieldControl().modelValueToViewValue$$());\n disposeList.push(() => ref.destroy());\n if (cva.setDisabledState) {\n const disabledRef = effect(\n () => {\n const value = fieldControl().disabled$$();\n untracked(() => {\n cva.setDisabledState!(value);\n });\n },\n { injector: injector },\n );\n cva.setDisabledState!(fieldControl().disabled$$());\n disposeList.push(() => disabledRef.destroy());\n }\n return () => {\n disposeList.forEach((fn) => fn());\n untracked(() => {\n fieldControl().updateValue(fieldControl().value$$(), true);\n });\n };\n}\n","import { AbstractControl } from '../field/abstract_model';\n\nexport function controlStatusList(\n fieldControl?: AbstractControl,\n skipDisabled?: boolean,\n) {\n if (!fieldControl) {\n return [];\n }\n const statusList = [];\n if (!skipDisabled && fieldControl.disabled$$()) {\n statusList.push('disabled');\n }\n if (fieldControl.touched$$()) {\n statusList.push('touched');\n } else {\n statusList.push('untouched');\n }\n if (fieldControl.dirty$$()) {\n statusList.push('dirty');\n } else {\n statusList.push('pristine');\n }\n switch (fieldControl.status$$()) {\n case 'VALID':\n statusList.push('valid');\n break;\n case 'INVALID':\n statusList.push('invalid');\n break;\n case 'PENDING':\n statusList.push('pending');\n break;\n default:\n break;\n }\n return statusList;\n}\n\nexport function fieldControlStatusClass(\n fieldControl?: AbstractControl,\n skipDisabled?: boolean,\n) {\n return controlStatusList(fieldControl, skipDisabled)\n .map((item) => `pi-${item}`)\n .join(' ');\n}\n","import { Subscribable } from 'rxjs';\n\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n return !!obj && typeof obj.then === 'function';\n}\nexport function isSubscribable<T>(obj: any): obj is Subscribable<T> {\n return !!obj && typeof obj.subscribe === 'function';\n}\n","import { computed, signal } from '@angular/core';\nimport { isObservable, Observable } from 'rxjs';\nimport { isPromise } from '../convert/util/is-promise';\nexport const ValidatorPending = Symbol('PENDING');\nexport type AsyncValidatorEvent =\n | {\n value: any;\n }\n | {\n error: Error;\n }\n | typeof ValidatorPending;\nfunction promiseToSignal<T>(input: Promise<T>) {\n const value$ = signal<AsyncValidatorEvent>(ValidatorPending);\n input.then((value) => {\n value$.set({ value });\n });\n return value$;\n}\nfunction observableToSignal<T>(input: Observable<T>) {\n const value$ = signal<AsyncValidatorEvent>(ValidatorPending);\n input.subscribe({\n next: (value) => {\n value$.set({ value });\n },\n error: (error) => {\n value$.set({ error });\n },\n });\n return value$;\n}\n\nexport function asyncValidatorToSignal(input: any) {\n if (isPromise(input)) {\n return promiseToSignal(input);\n } else if (isObservable(input)) {\n return observableToSignal(input);\n } else {\n return computed(() => ({ value: input() }));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type {\n PiResolvedCommonViewFieldConfig,\n FormBuilderOptions,\n} from './common-field-config';\nimport type { PiCommonConfig } from './default-config';\n/** 一些默认配置 */\nexport const PI_VIEW_CONFIG_TOKEN = new InjectionToken<PiCommonConfig>(\n 'PI_VIEW_CONFIG',\n);\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_FORM_BUILDER_OPTIONS_TOKEN = new InjectionToken<\n FormBuilderOptions<any>\n>('PI_FORM_BUILDER_OPTIONS');\n/**\n * @internal\n * 内部传参用\n */\nexport const PI_FORM_BUILDER_ALIAS_MAP = new InjectionToken<\n Map<string, PiResolvedCommonViewFieldConfig<any, any>>\n>('PI_FORM_BUILDER_ALIAS_MAP');\n/** 上下文注入 */\nexport const PI_CONTEXT_TOKEN = new InjectionToken<any>('PI_CONTEXT');\n","import {\n signal,\n untracked,\n computed,\n Signal,\n Injector,\n linkedSignal,\n} from '@angular/core';\n\nimport { FieldFormConfig$ } from './type';\nimport { SchemaOrPipe } from '@piying/valibot-visit';\nimport * as v from 'valibot';\nimport { Observable } from 'rxjs';\nimport { clone, toObservable } from '../util';\nimport {\n asyncValidatorToSignal,\n ValidatorPending,\n} from '../util/async-validator-convert';\nimport { PI_CONTEXT_TOKEN } from '../builder-base/type/token';\nexport type ValidationErrors = {\n [key: string]: any;\n};\nexport interface ValidatorFn {\n (control: AbstractControl): ValidationErrors | undefined;\n}\nexport interface AsyncValidatorFn {\n (\n control: AbstractControl,\n ):\n | Promise<ValidationErrors | undefined>\n | Observable<ValidationErrors | undefined>\n | Signal<ValidationErrors | undefined>;\n}\n\nfunction shortCircuitTrue(value: boolean): boolean {\n return value;\n}\n\nexport const VALID = 'VALID';\n\nexport const INVALID = 'INVALID';\n\nexport const PENDING = 'PENDING';\n\nexport type VALID_STATUS = typeof VALID | typeof INVALID | typeof PENDING;\nexport type FormHooks = 'change' | 'blur' | 'submit';\nexport type AbstractControlParams = ConstructorParameters<\n typeof AbstractControl<any>\n>;\n\nexport abstract class AbstractControl<TValue = any> {\n protected readonly emptyValue$$ = computed(() =>\n clone(this.config$().emptyValue),\n );\n /** 父级取值时,当前子级是否包含在内 */\n shouldInclude$$ = computed(\n () =>\n this.valueNoError$$() &&\n (!this.selfDisabled$$() ||\n (this.selfDisabled$$() && this.config$().disabledValue === 'reserve')),\n );\n readonly injector;\n /** model的value */\n abstract value$$: Signal<TValue | undefined>;\n abstract children$$?: Signal<AbstractControl[]>;\n /** disabled */\n readonly selfDisabled$$ = computed(() => this.config$?.().disabled ?? false);\n /** `self` || `parent` */\n readonly disabled$$: Signal<boolean> = computed(\n () => (this.parent?.disabled$$() || this.selfDisabled$$()) ?? false,\n );\n readonly enabled$$ = computed(() => !this.disabled$$());\n get disabled(): boolean {\n return this.disabled$$();\n }\n get enabled(): boolean {\n return !this.disabled$$();\n }\n enable() {\n this.config$.update((config) => ({ ...config, disabled: false }));\n }\n disable() {\n this.config$.update((config) => ({ ...config, disabled: true }));\n }\n /** touched */\n readonly selfTouched$ = signal(false);\n\n readonly touched$$: Signal<boolean> = computed(() =>\n this.reduceChildren(\n this.selfTouched$(),\n (child, value) => value || child.touched$$(),\n shortCircuitTrue,\n ),\n );\n get touched(): boolean {\n return untracked(this.touched$$);\n }\n get untouched(): boolean {\n return !untracked(this.touched$$);\n }\n /** dirty */\n private readonly selfDirty$ = signal(false);\n\n readonly dirty$$: Signal<boolean> = computed(() =>\n this.reduceChildren(\n this.selfDirty$(),\n (child, value) => value || child.dirty$$(),\n shortCircuitTrue,\n ),\n );\n get dirty(): boolean {\n return untracked(this.dirty$$);\n }\n get pristine(): boolean {\n return !untracked(this.dirty$$);\n }\n /** validator */\n #validators$$ = computed(() => this.config$().validators ?? []);\n #asyncValidators$$ = computed(() => this.config$().asyncValidators ?? []);\n protected resetIndex$ = signal(0);\n syncError$ = linkedSignal(\n computed(\n () => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n this.resetIndex$();\n this.value$$();\n const result = this.#validators$$().reduce((obj, item) => {\n const result = untracked(() => item(this));\n if (result) {\n obj = { ...obj, ...result };\n }\n return obj;\n }, {} as ValidationErrors);\n const schemaResult = this.#schemaCheck$$();\n if (!schemaResult.success) {\n return { ...result, valibot: schemaResult.issues };\n }\n return Object.keys(result).length\n ? (result as ValidationErrors)\n : undefined;\n },\n { equal: () => false },\n ),\n );\n asyncErrorRes$$ = computed(() => {\n const result = this.#asyncValidators$$();\n if (result.length === 0) {\n return undefined;\n }\n this.resetIndex$();\n this.value$$();\n const dataList = result.map((item) =>\n untracked(() => asyncValidatorToSignal(item(this))),\n );\n return computed(() => {\n const params = dataList.map((item) => item());\n let pendingCount = 0;\n const errorResult = params.reduce(\n (obj, item) => {\n if (item === ValidatorPending) {\n pendingCount++;\n return obj;\n } else if ('value' in item) {\n return { ...obj, ...item.value };\n } else {\n return { ...obj, error: item.error };\n }\n },\n {} as Record<string, any>,\n );\n if (!Object.keys(errorResult).length) {\n if (pendingCount) {\n return ValidatorPending;\n }\n return undefined;\n } else {\n return errorResult;\n }\n });\n });\n asyncError$$ = computed(() => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n const ref = this.asyncErrorRes$$();\n if (ref) {\n const result = ref();\n if (result === ValidatorPending) {\n return PENDING;\n } else {\n return result;\n }\n }\n return undefined;\n });\n rawError$$ = computed(() => {\n const disabled = this.disabled$$();\n if (disabled) {\n return undefined;\n }\n const syncError = this.syncError$();\n const asyncError = this.asyncError$$();\n if (asyncError === PENDING) {\n return PENDING;\n }\n if (syncError && asyncError) {\n return { ...syncError, ...asyncError };\n } else if (syncError || asyncError) {\n return syncError || asyncError;\n } else {\n return undefined;\n }\n });\n valueNoError$$ = computed(() => this.rawError$$() === undefined);\n get errors() {\n const error = this.rawError$$();\n return error === PENDING ? undefined : error;\n }\n /** parent */\n private _parent?: AbstractControl;\n get parent(): AbstractControl | undefined {\n return this._parent;\n }\n\n get value() {\n return this.value$$();\n }\n required$$ = computed(() => this.config$().required);\n readonly schemaParser;\n context;\n constructor(rawSchema: SchemaOrPipe, injector: Injector) {\n this.injector = injector;\n this.schemaParser = v.safeParser(rawSchema);\n this.context = this.injector.get(PI_CONTEXT_TOKEN);\n }\n\n #schemaCheck$$ = computed(() => this.schemaParser(this.value$$()));\n setParent(parent: AbstractControl | undefined): void {\n this._parent = parent;\n }\n get valid(): boolean {\n return this.status$$() === VALID;\n }\n\n get invalid(): boolean {\n return this.status$$() === INVALID;\n }\n\n get pending(): boolean {\n return this.status$$() === PENDING;\n }\n\n selfUpdateOn$$ = computed(() => this.config$?.().updateOn);\n updateOn$$: Signal<FormHooks> = computed(\n () => (this.selfUpdateOn$$() || this.parent?.updateOn$$()) ?? 'change',\n );\n\n markAsTouched(): void {\n this.selfTouched$.set(true);\n }\n\n markAllAsDirty(): void {\n this.markAsDirty();\n this._forEachChild((control) => control.markAllAsDirty());\n }\n\n markAllAsPristine(): void {\n this.markAsPristine();\n this._forEachChild((control) => control.markAllAsPristine());\n }\n\n markAllAsTouched(): void {\n this.markAsTouched();\n this._forEachChild((control) => control.markAllAsTouched());\n }\n markAllAsUntouched(): void {\n this.markAsUntouched();\n this._forEachChild((control) => control.markAllAsUntouched());\n }\n markAsUntouched(): void {\n this.selfTouched$.set(false);\n }\n\n markAsDirty(): void {\n this.selfDirty$.set(true);\n }\n\n markAsPristine(): void {\n this.selfDirty$.set(false);\n }\n\n abstract reset(value?: any): void;\n\n getRawValue(): any {\n return this.value;\n }\n\n get<P extends string | (string | number)[]>(path: P): AbstractControl | null {\n let currPath: Array<string | number> | string = path;\n if (currPath == null) return null;\n if (!Array.isArray(currPath)) currPath = currPath.split('.');\n if (currPath.length === 0) return null;\n return currPath.reduce(\n (control: AbstractControl | null, name) => control && control.find(name),\n this,\n );\n }\n\n get root(): AbstractControl {\n let x: AbstractControl = this;\n\n while (x._parent) {\n x = x._parent;\n }\n\n return x;\n }\n\n /** @internal */\n abstract _forEachChild(cb: (c: AbstractControl) => void): void;\n abstract updateValue(value: any): void;\n config$: FieldFormConfig$ = signal({});\n initConfig(config: any) {\n this.config$ = config;\n }\n protected getInitValue(value: any) {\n return value ?? this.config$().defaultValue;\n }\n abstract updateInitValue(value: any): void;\n find(name: string | number): AbstractControl | null {\n return null;\n }\n setControl(name: string | number, control: AbstractControl) {}\n private reduceChildren<T>(\n initialValue: T,\n fn: (child: AbstractControl<any>, value: T) => T,\n shortCircuit?: (value: T) => boolean,\n ): T {\n const childrenMap = this.children$$?.();\n if (!childrenMap) {\n return initialValue;\n }\n let value = initialValue;\n for (const child of childrenMap) {\n if (shortCircuit?.(value)) {\n break;\n }\n value = fn(child, value);\n }\n return value;\n }\n #valueChange: Observable<any> | undefined;\n get valueChanges() {\n return (\n this.#valueChange ??\n (this.#valueChange = toObservable(\n computed(() => ({\n value: this.value$$(),\n disabled: this.disabled$$(),\n })),\n this.value$$,\n {\n injector: this.injector,\n },\n ))\n );\n }\n status$$ = computed(() => {\n if (this.disabled$$()) {\n return VALID;\n }\n const childStatus = this.reduceChildren<VALID_STATUS>(\n VALID,\n (child, value) => {\n if (value === INVALID || child.status$$() === INVALID) {\n return INVALID;\n } else if (value === PENDING || child.status$$() === PENDING) {\n return PENDING;\n }\n return VALID;\n },\n (v) => v === INVALID || v === PENDING,\n );\n if (childStatus === VALID) {\n if (this.rawError$$()) {\n if (this.rawError$$() !== PENDING) {\n return INVALID;\n } else {\n return PENDING;\n }\n }\n }\n return childStatus;\n });\n #statusChange: Observable<VALID_STATUS> | undefined;\n\n get statusChanges() {\n return (\n this.#statusChange ??\n (this.#statusChange = toObservable(this.status$$, this.status$$, {\n injector: this.injector,\n }))\n );\n }\n /** 仅触发 updateOn: submit 时使用 */\n emitSubmit() {\n if (this.children$$) {\n this.children$$().forEach((child) => {\n child.emitSubmit();\n });\n }\n }\n}\n","import { computed, signal } from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\n\nexport class FieldArray<\n TControl extends AbstractControl<any> = any,\n> extends AbstractControl {\n #deletionMode$$ = computed(() => this.config$().deletionMode ?? 'shrink');\n override value$$ = computed<any>(() => {\n const list = [];\n for (const control of this.controls$()) {\n if (control && control.shouldInclude$$()) {\n list.push(control.value$$());\n } else {\n if (this.#deletionMode$$() === 'shrink') {\n continue;\n } else if (this.#deletionMode$$() === 'mark') {\n list.push(undefined);\n }\n }\n }\n const returnResult = list.length === 0 ? this.emptyValue$$() : list;\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n override children$$ = computed(() => this.controls$());\n\n controls$ = signal<AbstractControl[]>([]);\n get controls() {\n return this.controls$();\n }\n\n removeAt(index: number): void {\n const adjustedIndex = this._adjustIndex(index);\n\n if (this.controls$()[adjustedIndex]) {\n this.controls$.update((list) => {\n list = list.slice() as any;\n list.splice(adjustedIndex, 1);\n return list;\n });\n }\n }\n\n override setControl(index: number, control: TControl): void {\n const adjustedIndex = this._adjustIndex(index);\n\n this.controls$.update((list) => {\n list = list.slice() as any;\n list[adjustedIndex] = control;\n return list;\n });\n control.setParent(this);\n }\n\n get length(): number {\n return this.controls$().length;\n }\n\n override reset(value?: any[]): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n this.beforeUpdateList.forEach((item) => item(viewValue));\n this._forEachChild((control: AbstractControl, index: number) => {\n control.reset(initValue[index]);\n });\n }\n\n override getRawValue() {\n return this.controls$().map((control: AbstractControl) =>\n control.getRawValue(),\n );\n }\n\n clear(): void {\n if (this.controls$().length < 1) return;\n\n this.controls$.update(() => []);\n }\n\n private _adjustIndex(index: number): number {\n return index < 0 ? Math.max(index + this.length, 0) : index;\n }\n\n /** @internal */\n override _forEachChild(\n cb: (c: AbstractControl, index: number) => void,\n ): void {\n this.controls$().forEach((control: AbstractControl, index: number) => {\n if (control) {\n cb(control, index);\n }\n });\n }\n\n override find(name: number): AbstractControl {\n return this.controls$()[this._adjustIndex(name)];\n }\n beforeUpdateList: ((value: any[]) => void)[] = [];\n override updateValue(value: any[] = []): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n this.beforeUpdateList.forEach((item) => item(viewValue));\n this.controls$().forEach((control, i) => {\n control.updateValue(viewValue[i]);\n });\n }\n override updateInitValue(value: any): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n this.beforeUpdateList.forEach((item) => item(viewValue));\n this.controls$().forEach((control, i) => {\n control.updateInitValue(viewValue?.[i]);\n });\n }\n}\n","import {\n computed,\n DestroyRef,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\nimport { Subject } from 'rxjs';\nconst InitPendingValue = {\n touched: false,\n change: false,\n value: undefined,\n};\nexport class FieldControl<TValue = any> extends AbstractControl<TValue> {\n pendingStatus = signal(InitPendingValue);\n\n override children$$: undefined;\n #viewIndex = 0;\n /** 视图变化时model值不变也要更新view */\n private viewIndex$ = signal(0);\n\n /** model输入值 */\n modelValue$: WritableSignal<TValue | undefined> = signal(undefined);\n private modelValueToViewValueOrigin$$ = computed(() => {\n const viewValue = this.modelValue$();\n const toView = this.config$?.().transfomer?.toView;\n if (toView) {\n return toView(viewValue, this);\n }\n return viewValue;\n });\n /** 传入到view中的值 */\n modelValueToViewValue$$ = computed(\n () => {\n this.viewIndex$();\n return this.modelValueToViewValueOrigin$$();\n },\n { equal: () => false },\n );\n /** modelValue + viewValue => modelValue */\n override value$$ = signal<any>(undefined);\n\n override reset(formState: TValue = this.config$().defaultValue): void {\n this.updateValue(formState, true);\n this.markAsPristine();\n this.markAsUntouched();\n }\n\n /** @internal */\n override _forEachChild(cb: (c: AbstractControl) => void): void {}\n\n #initInput = true;\n\n #viewSubject$$ = computed(() => {\n const subject = new Subject<any>();\n this.injector.get(DestroyRef).onDestroy(() => {\n subject.complete();\n });\n subject.pipe(this.config$().pipe!.toModel!).subscribe((value: any) => {\n untracked(() => {\n this.#viewValueChange(value);\n });\n });\n return subject;\n });\n\n #viewValueChange(value: TValue | undefined) {\n this.markAllAsDirty();\n this.#viewIndex++;\n const toModel = this.config$?.().transfomer?.toModel;\n const originValue = toModel ? toModel(value, this) : value;\n const transfomered = this.schemaParser(originValue);\n if (transfomered.success) {\n this.value$$.set(transfomered.output);\n this.syncError$.update((data) => {\n if (data) {\n delete data['valibot'];\n }\n return data && Object.keys(data).length ? data : undefined;\n });\n } else {\n this.syncError$.update((data) => ({\n ...data,\n valibot: transfomered.issues,\n }));\n }\n }\n\n /** view变更 */\n viewValueChange(value: TValue | undefined) {\n if (this.config$().pipe?.toModel) {\n this.#viewSubject$$().next(value);\n } else {\n this.#viewValueChange(value);\n }\n }\n override updateValue(value: any, force?: boolean): void {\n if (force) {\n this.#viewIndex++;\n this.viewIndex$.set(this.#viewIndex);\n this.resetIndex$.update((a) => a + 1);\n this.#initInput = true;\n }\n if (this.#initInput) {\n this.#initInput = false;\n if ((value !== undefined && !deepEqual(value, this.value$$())) || force) {\n this.modelValue$.set(value);\n this.value$$.set(value);\n }\n return;\n }\n if (deepEqual(value, this.value$$())) {\n return;\n }\n this.viewIndex$.set(this.#viewIndex);\n this.modelValue$.set(value);\n this.value$$.set(value);\n }\n\n override emitSubmit(): void {\n const pendingStatus = this.pendingStatus();\n if (pendingStatus.touched) {\n this.markAsTouched();\n }\n if (pendingStatus.change) {\n this.viewValueChange(pendingStatus.value);\n }\n this.pendingStatus.set(InitPendingValue);\n }\n override updateInitValue(value: any): void {\n let initValue = this.getInitValue(value);\n this.modelValue$.set(initValue);\n this.value$$.set(initValue);\n }\n}\n","import { AbstractControl } from './abstract_model';\nimport { FieldArray } from './field-array';\nimport { computed, signal } from '@angular/core';\nimport { LogicType } from './type';\nimport { deepEqual } from 'fast-equals';\n// 切换索引后,理论上应该触发下值变更,否则不知道值是什么\nexport class FieldLogicGroup extends FieldArray {\n /** 待定参数 */\n activateIndex$ = signal(0);\n type = signal<LogicType>('and');\n activateControl$ = signal<AbstractControl[] | undefined>(undefined);\n override value$$ = computed<any>(() => {\n const returnResult = this.getValue(false);\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n\n getActivateControls() {\n let list;\n if (this.activateControl$()) {\n list = this.activateControl$()!;\n } else if (this.type() === 'and') {\n list = this.controls$();\n } else if (this.type() === 'or') {\n list = [this.controls$()[this.activateIndex$()]];\n } else {\n throw new Error('');\n }\n return list;\n }\n getValue(rawData: boolean) {\n const controls = rawData\n ? this.getActivateControls()\n : this.getActivateControls().filter((control) =>\n control.shouldInclude$$(),\n );\n const control = controls[0];\n if (controls.length === 0) {\n return this.emptyValue$$();\n }\n if (controls.length === 1) {\n return control.value;\n }\n const result = controls.reduce(\n (obj, control) => ({ ...obj, ...control.value$$() }),\n {} as Record<string, any>,\n );\n return Object.keys(result).length ? result : this.emptyValue$$();\n }\n override reset(value?: any[]): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n this.controls$().forEach((control, i) => {\n control.reset(viewValue);\n });\n }\n override getRawValue(): any {\n return this.getValue(true);\n }\n override updateValue(value: any): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n this.controls$().forEach((control, i) => {\n control.updateValue(viewValue);\n });\n }\n override updateInitValue(value: any): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n this.controls$().forEach((control, i) => {\n control.updateInitValue(viewValue);\n });\n }\n}\n","import { FieldArray } from './field-array';\nimport { FieldControl } from './field-control';\nimport { FieldGroup } from './field-group';\nimport { FieldLogicGroup } from './field-logic-group';\n\nexport function isFieldGroup(input: any): input is FieldGroup {\n return input instanceof FieldGroup;\n}\nexport function isFieldArray(input: any): input is FieldArray {\n return input instanceof FieldArray;\n}\nexport function isFieldControl(input: any): input is FieldControl {\n return input instanceof FieldControl;\n}\nexport function isFieldLogicGroup(input: any): input is FieldLogicGroup {\n return input instanceof FieldLogicGroup;\n}\n","import { computed, signal } from '@angular/core';\n\nimport { AbstractControl } from './abstract_model';\nimport { deepEqual } from 'fast-equals';\nimport { isFieldLogicGroup } from './is-field';\n\nexport class FieldGroup<\n TControl extends { [K in keyof TControl]: AbstractControl<any> } = any,\n> extends AbstractControl {\n override value$$ = computed<any>(() => {\n const acc: Partial<TControl> = {};\n const value = this._reduceChildren(acc, (acc, control, name) => {\n if (control.shouldInclude$$()) {\n acc[name] = control.value;\n }\n return acc;\n });\n const result = { ...value, ...this.looseValue$$() };\n const returnResult = Object.keys(result).length\n ? result\n : this.emptyValue$$();\n return (\n this.config$().transfomer?.toModel?.(returnResult, this) ?? returnResult\n );\n });\n override children$$ = computed(() => Object.values(this.controls$()));\n\n controls$ = signal<Record<string, AbstractControl>>({});\n get controls() {\n return this.controls$();\n }\n\n registerControl(name: string, control: AbstractControl) {\n if (this.controls$()[name]) return this.controls$()[name];\n this.controls$.update((controls) => ({ ...controls, [name]: control }));\n control.setParent(this);\n return control;\n }\n\n removeControl(name: string): void {\n if (this.controls$()[name]) {\n this.controls$.update((controls) => {\n controls = { ...controls };\n delete controls[name];\n return controls;\n });\n }\n }\n\n override setControl(name: string, control: AbstractControl): void {\n this.controls$.update((controls) => {\n controls = { ...controls };\n delete controls[name];\n return controls;\n });\n if (control) this.registerControl(name, control);\n }\n\n override reset(value?: any): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n this._forEachChild((control: AbstractControl, name) => {\n control.reset(viewValue ? (viewValue as any)[name] : undefined);\n });\n }\n\n override getRawValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n (acc as any)[name] = control.getRawValue();\n return acc;\n }) as any;\n }\n\n /** @internal */\n override _forEachChild(cb: (v: any, k: any) => void): void {\n Object.keys(this.controls$()).forEach((key) => {\n const control = this.controls$()[key];\n control && cb(control, key);\n });\n }\n\n /** @internal */\n _reduceChildren<T, K extends keyof TControl>(\n initValue: T,\n fn: (acc: T, control: TControl[K], name: K) => T,\n ): T {\n let res = initValue;\n this._forEachChild((control: TControl[K], name: K) => {\n res = fn(res, control, name);\n });\n return res;\n }\n\n override find(name: string): AbstractControl | null {\n return this.controls$()[name];\n }\n looseValue$$ = computed(() => {\n const resetValue = this.#inputValue$();\n if (!resetValue || isFieldLogicGroup(this.parent)) {\n return {};\n }\n const controls = this.controls$();\n const looseValue = {} as any;\n for (const key in resetValue) {\n if (!(key in controls)) {\n looseValue[key] = resetValue[key];\n }\n }\n return looseValue;\n });\n /**\n * loose object\n * todo 动态添加\n * */\n #inputValue$ = signal({} as Record<string, any>);\n #setInputValue(obj: any) {\n this.#inputValue$.set(obj);\n }\n override updateValue(value: any): void {\n if (deepEqual(value, this.value$$())) {\n return;\n }\n if (!deepEqual(value, this.#inputValue$())) {\n this.#setInputValue(value);\n }\n const viewValue = this.config$().transfomer?.toView?.(value, this) ?? value;\n\n for (const key in this.controls$()) {\n const control = this.controls$()[key];\n control.updateValue(viewValue?.[key]);\n }\n }\n override updateInitValue(value: any): void {\n let initValue = this.getInitValue(value);\n const viewValue =\n this.config$().transfomer?.toView?.(initValue, this) ?? initValue;\n for (const key in this.controls$()) {\n const control = this.controls$()[key];\n control.updateInitValue(viewValue?.[key]);\n }\n }\n}\n","import { AnyCoreSchemaHandle } from '../../convert';\n\nexport function isGroup(schema: AnyCoreSchemaHandle) {\n return schema.isGroup;\n}\nexport function isArray(schema: AnyCoreSchemaHandle) {\n return schema.isArray;\n}\n","import { Injector } from '@angular/core';\nimport { FieldArray } from '../field/field-array';\nimport { FieldControl } from '../field/field-control';\nimport { FieldGroup } from '../field/field-group';\nimport { FieldLogicGroup } from '../field/field-logic-group';\nimport { isFieldLogicGroup } from '../field/is-field';\nimport { FieldFormConfig$ } from '../field/type';\nimport { AbstractControl } from '../field/abstract_model';\nimport { AnyCoreSchemaHandle } from '../convert';\nimport { isArray, isGroup } from './util/is-group';\nimport { RawKeyPath } from '../util';\nexport function createField(\n parentForm: AbstractControl,\n field: AnyCoreSchemaHandle,\n /** 创建用 */\n key: RawKeyPath,\n formConfig$$: FieldFormConfig$,\n isRoot: boolean,\n injector: Injector,\n) {\n let FieldClass;\n if (field.isLogicAnd || field.isLogicOr) {\n FieldClass = FieldLogicGroup;\n } else if (isGroup(field)) {\n FieldClass = FieldGroup;\n } else if (isArray(field) || field.isTuple) {\n FieldClass = FieldArray;\n } else {\n FieldClass = FieldControl;\n }\n let control;\n if (isRoot) {\n control = new (FieldClass as any)(\n field.sourceSchema,\n injector,\n ) as AbstractControl;\n if (isFieldLogicGroup(control)) {\n control.type.set(field.isLogicAnd ? 'and' : 'or');\n }\n control.initConfig(formConfig$$);\n } else {\n control = parentForm.get([key]);\n if (!control) {\n control = new (FieldClass as any)(\n field.sourceSchema,\n injector,\n ) as AbstractControl;\n if (isFieldLogicGroup(control)) {\n control.type.set(field.isLogicAnd ? 'and' : 'or');\n }\n parentForm.setControl?.(key as any, control);\n control.initConfig(formConfig$$);\n }\n }\n return control;\n}\n","import { isSignal, Signal } from '@angular/core';\n\nexport function unWrapSignal<T>(value?: T | Signal<T>) {\n return isSignal(value) ? value() : value;\n}\n","import { DefaultConfigKey } from './type';\nimport { ConfigMergeStrategy } from './type/common-field-config';\n\nexport const DCONFIG_EFAULT_MERGE_STRAGEGY: Record<\n DefaultConfigKey,\n ConfigMergeStrategy\n> = {\n props: 'merge',\n formConfig: 'merge',\n renderConfig: 'merge',\n inputs: 'merge',\n outputs: 'merge',\n wrappers: 'replace',\n attributes: 'merge',\n};\n","export class ParentMap<KEY, VALUE> extends Map<KEY, VALUE> {\n constructor(private parent?: ParentMap<KEY, VALUE>) {\n super();\n }\n override get(key: KEY): VALUE | undefined {\n const result = super.get(key);\n if (result === undefined) {\n return this.parent?.get(key);\n }\n return result;\n }\n}\n","import { PiResolvedCommonViewFieldConfig } from '../type';\n\nexport function* groupGenerator(\n list: PiResolvedCommonViewFieldConfig<any, any>[],\n): Generator<PiResolvedCommonViewFieldConfig<any, any>, void, unknown> {\n for (const item of list) {\n if (!item.keyPath?.length && item.fieldGroup?.().length) {\n yield* groupGenerator(item.fieldGroup());\n } else if (item.keyPath?.length) {\n yield item;\n }\n }\n}\n","import { ArraryIterable, arrayStartsWith, KeyPath } from '../util';\nimport {\n _PiResolvedCommonViewFieldConfig,\n PiResolvedCommonViewFieldConfig,\n} from './type/common-field-config';\nimport { groupGenerator } from './util/group-flat';\n\nexport function fieldQuery(\n keyPath: KeyPath,\n field: PiResolvedCommonViewFieldConfig<any, any>,\n aliasMap: Map<string, PiResolvedCommonViewFieldConfig<any, any>>,\n root: PiResolvedCommonViewFieldConfig<any, any>,\n) {\n const firstPath = keyPath[0];\n let list:\n | ArraryIterable<{\n field: _PiResolvedCommonViewFieldConfig;\n level: number;\n }>\n | undefined;\n if (firstPath === '#') {\n field = root;\n list = [{ field: root, level: 1 }];\n } else if (firstPath === '..') {\n list = [{ field: field.parent!, level: 1 }];\n } else if (typeof firstPath === 'string' && firstPath.startsWith('@')) {\n const queryField = aliasMap.get(firstPath.slice(1));\n list = [{ field: queryField!, level: 1 }];\n } else if (field.fieldGroup) {\n list = groupGenerator(field.fieldGroup())\n .filter(\n (field) => field.keyPath && arrayStartsWith(keyPath, field.keyPath),\n )\n .map((field) => ({ field: field, level: field.keyPath?.length! }));\n } else if (field.fieldArray) {\n list = field\n .fieldArray()\n .filter(\n (field) => field.keyPath && arrayStartsWith(keyPath, field.keyPath),\n )\n .map((field) => ({ field: field, level: field.keyPath?.length! }));\n }\n if (!list) {\n return;\n }\n for (const item of list) {\n if (keyPath.length === item.level) {\n return item.field;\n }\n const res = item.field.get(keyPath.slice(item.level));\n if (res) {\n return res;\n }\n }\n return undefined;\n}\n","import {\n PI_FORM_BUILDER_OPTIONS_TOKEN,\n PI_FORM_BUILDER_ALIAS_MAP,\n PI_VIEW_CONFIG_TOKEN,\n} from './type/token';\nimport {\n DestroyRef,\n EnvironmentInjector,\n inject,\n Injector,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\n\nimport { createField } from './create-field';\nimport { unWrapSignal } from './util/unwrap-signal';\nimport { DCONFIG_EFAULT_MERGE_STRAGEGY } from './const';\nimport { ParentMap } from './class/parent-map';\n\nimport { fieldQuery } from './field-query';\n\nimport {\n _PiResolvedCommonViewFieldConfig,\n ConfigMergeStrategy,\n CoreRawWrapperConfig,\n CoreResolvedWrapperConfig,\n PiCommonDefaultConfig,\n PiResolvedCommonViewFieldConfig,\n} from './type/common-field-config';\nimport {\n BuildRootInputItem,\n BuildGroupItem,\n BuildArrayItem,\n BuildRootItem,\n} from './type/builder.type';\nimport { FieldArray } from '../field/field-array';\nimport { FieldGroup } from '../field/field-group';\nimport { isFieldLogicGroup, isFieldArray } from '../field/is-field';\nimport { AnyCoreSchemaHandle, CoreSchemaHandle } from '../convert';\nimport { isArray, isGroup } from './util/is-group';\nimport {\n RawKeyPath,\n SortedArray,\n SignalInputValue,\n UnWrapSignal,\n clone,\n toArray,\n KeyPath,\n} from '../util';\n\nexport class FormBuilder<SchemaHandle extends CoreSchemaHandle<any, any>> {\n #scopeMap =\n inject(PI_FORM_BUILDER_ALIAS_MAP, { optional: true }) ??\n new ParentMap<string, PiResolvedCommonViewFieldConfig<any, any>>();\n #options = inject(PI_FORM_BUILDER_OPTIONS_TOKEN);\n #injector = inject(Injector);\n #envInjector = inject(EnvironmentInjector);\n #globalConfig = inject(PI_VIEW_CONFIG_TOKEN);\n #allFieldInitHookList: (() => void)[] = [];\n\n buildRoot(item: BuildRootInputItem<SchemaHandle>) {\n let field = this.#buildControl(\n {\n type: 'root',\n field: { fullPath: [] },\n form: undefined,\n resolvedField$: item.resolvedField$,\n append: () => {},\n },\n item.field,\n 0,\n );\n field.form.control?.updateInitValue(undefined);\n this.allFieldInitHookCall();\n }\n allFieldInitHookCall() {\n const list = this.#allFieldInitHookList;\n this.#allFieldInitHookList = [];\n list.forEach((fn) => fn());\n }\n #buildField(\n item: BuildGroupItem<SchemaHandle> | BuildArrayItem<SchemaHandle>,\n ) {\n if (item.type === 'group') {\n this.#buildGroup(item);\n } else {\n this.#buildArray(item);\n }\n }\n afterResolveConfig(\n rawConfig: SchemaHandle,\n config: _PiResolvedCommonViewFieldConfig,\n ): _PiResolvedCommonViewFieldConfig | undefined {\n return;\n }\n\n #buildControl(\n parent:\n | BuildGroupItem<SchemaHandle>\n | BuildArrayItem<SchemaHandle>\n | BuildRootItem,\n // 单独一项\n field: SchemaHandle,\n index: number,\n ): PiResolvedCommonViewFieldConfig<any, any> {\n // 利用类型查引用,\n let viewDefaultConfig: PiCommonDefaultConfig | undefined;\n const type = field.type;\n let define;\n if (type) {\n const result = this.#resolveComponent(type);\n viewDefaultConfig = result.defaultConfig;\n define = result.define;\n }\n const mergeStrategy = this.#globalConfig?.defaultConfigMergeStrategy;\n\n const inputs = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.inputs,\n viewDefaultConfig?.inputs,\n field.inputs,\n ],\n false,\n mergeStrategy?.inputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.inputs,\n );\n const outputs = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.outputs,\n viewDefaultConfig?.outputs,\n field.outputs,\n ],\n false,\n mergeStrategy?.outputs ?? DCONFIG_EFAULT_MERGE_STRAGEGY.outputs,\n );\n const attributes = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.attributes,\n viewDefaultConfig?.attributes,\n field.attributes,\n ],\n false,\n mergeStrategy?.attributes ?? DCONFIG_EFAULT_MERGE_STRAGEGY.attributes,\n );\n const wrappers1 = this.configMergeRaw(\n [\n this.#globalConfig?.defaultConfig?.wrappers,\n viewDefaultConfig?.wrappers,\n field.wrappers,\n ],\n true,\n mergeStrategy?.wrappers ?? DCONFIG_EFAULT_MERGE_STRAGEGY.wrappers,\n );\n const wrappers = this.#resolveWrappers(wrappers1);\n const props = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.props,\n viewDefaultConfig?.props,\n field.props,\n ],\n false,\n mergeStrategy?.props ?? DCONFIG_EFAULT_MERGE_STRAGEGY.props,\n );\n\n const formConfig$ = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.formConfig,\n viewDefaultConfig?.formConfig,\n field.formConfig,\n ],\n false,\n mergeStrategy?.formConfig ?? DCONFIG_EFAULT_MERGE_STRAGEGY.formConfig,\n );\n const renderConfig = this.configMerge(\n [\n this.#globalConfig?.defaultConfig?.renderConfig,\n viewDefaultConfig?.renderConfig,\n field.renderConfig,\n ],\n false,\n mergeStrategy?.renderConfig ?? DCONFIG_EFAULT_MERGE_STRAGEGY.renderConfig,\n );\n let control;\n let keyPath: RawKeyPath | undefined = field.key;\n\n if (isFieldLogicGroup(parent.form)) {\n keyPath ??= parent.form.controls$().length;\n } else if (isFieldArray(parent.form)) {\n keyPath ??= index;\n }\n const isRoot = parent.type === 'root';\n if (!field.nonFieldControl && (keyPath !== undefined || isRoot)) {\n control = createField(\n parent.form as any,\n field,\n keyPath!,\n // 这里也是fullPath\n formConfig$,\n isRoot,\n this.#injector,\n );\n }\n const rootForm = this.#options.form$$;\n let resolvedConfig = {\n id: field.id,\n keyPath: toArray(keyPath),\n get fullPath() {\n return [\n ...resolvedConfig.parent.fullPath,\n ...(resolvedConfig.keyPath ?? []),\n ];\n },\n form: {\n parent: parent.form,\n control: control ?? (isGroup(field) ? parent.form : undefined),\n get root() {\n return rootForm();\n },\n },\n get: (keyPath: any) =>\n untracked(() =>\n fieldQuery(\n keyPath,\n resolvedConfig,\n this.#scopeMap,\n this.#options.resolvedField$(),\n ),\n ),\n parent: parent.field,\n origin: field,\n renderConfig: renderConfig,\n formConfig: formConfig$,\n props,\n context: this.#options.context,\n priority: field.priority,\n hooks: field.hooks,\n alias: field.alias,\n inputs: inputs,\n outputs: outputs,\n attributes,\n define: define ? { ...define, inputs, outputs, attributes } : undefined,\n wrappers,\n } as any as _PiResolvedCommonViewFieldConfig;\n resolvedConfig =\n this.afterResolveConfig(field, resolvedConfig) ?? resolvedConfig;\n if (field.movePath) {\n this.#moveViewField(field.movePath, resolvedConfig);\n } else {\n parent.append(resolvedConfig);\n }\n if (field.alias) {\n this.#scopeMap.set(field.alias, resolvedConfig);\n }\n resolvedConfig.hooks?.fieldResolved?.(resolvedConfig);\n if (isRoot) {\n parent.resolvedField$.set(resolvedConfig);\n }\n // 递归进行解析\n if (\n isGroup(field) ||\n field.isLogicAnd ||\n field.isLogicOr ||\n field.isTuple\n ) {\n resolvedConfig.fieldGroup = signal(\n new SortedArray<_PiResolvedCommonViewFieldConfig>(\n (a, b) => a.priority - b.priority,\n ),\n );\n this.#buildField({\n type: 'group' as const,\n fields: field.children,\n field: resolvedConfig,\n form: (control || parent.form) as FieldGroup,\n append: (field) => {\n resolvedConfig.fieldGroup!().push(field);\n },\n });\n } else if (isArray(field)) {\n this.#buildField({\n type: 'array' as const,\n templateField: field.arrayChild,\n field: resolvedConfig,\n form: control as FieldArray,\n append: (field) => {},\n });\n }\n if (resolvedConfig.hooks?.allFieldsResolved) {\n this.#allFieldInitHookList.push(() => {\n resolvedConfig.hooks!.allFieldsResolved!(resolvedConfig);\n });\n }\n\n return resolvedConfig;\n }\n\n #buildGroup(groupItem: BuildGroupItem<SchemaHandle>) {\n for (let index = 0; index < groupItem.fields.length; index++) {\n const field = groupItem.fields[index];\n this.#buildControl(groupItem, field, index);\n }\n\n /** 虚拟group不存在hooks */\n const field = groupItem.field as PiResolvedCommonViewFieldConfig<any, any>;\n field.hooks?.afterChildrenInit?.(field);\n }\n createArrayItem(\n parent: BuildGroupItem<SchemaHandle> | BuildArrayItem<SchemaHandle>,\n // 单独一项\n field: AnyCoreSchemaHandle,\n index: number,\n ) {\n const Builder = this.constructor as any as typeof FormBuilder;\n const injector = Injector.create({\n providers: [\n Builder,\n {\n provide: PI_FORM_BUILDER_ALIAS_MAP,\n useValue: new ParentMap<\n string,\n PiResolvedCommonViewFieldConfig<any, any>\n >(this.#scopeMap),\n },\n { provide: EnvironmentInjector, useFactory: () => injector },\n ],\n parent: this.#envInjector,\n });\n this.#envInjector.get(DestroyRef).onDestroy(() => {\n result.injector?.destroy();\n });\n const instance = injector.get(Builder);\n const result = instance.#buildControl(parent, field, index);\n this.#allFieldInitHookList.push(() => instance.allFieldInitHookCall());\n result.injector = injector.get(EnvironmentInjector);\n return result;\n }\n #buildArray(arrayItem: BuildArrayItem<SchemaHandle>) {\n const { templateField, form } = arrayItem;\n\n arrayItem.field.action = {\n // 因为数组需要有动态添加的能力,所以才加上,group不需要\n set: (value, index) => {\n untracked(() => {\n index = (\n typeof index === 'number'\n ? index\n : (arrayItem.field.fieldArray?.().length ?? 0)\n )!;\n const result = this.createArrayItem(arrayItem, templateField, index);\n const list = [...arrayItem.field.fieldArray!()];\n list[index] = result;\n arrayItem.field.fieldArray!.set(list);\n result.form.control?.updateInitValue(\n arrayItem.field.form.control?.config$().defaultValue?.[index],\n );\n this.allFieldInitHookCall();\n result.form.control!.updateValue(value);\n });\n },\n remove: (index: number) => {\n untracked(() => {\n const list = [...arrayItem.field.fieldArray!()];\n const [deletedItem] = list!.splice(index, 1);\n arrayItem.field.fieldArray!.set(list);\n form.removeAt(index);\n if (deletedItem) {\n deletedItem.injector!.destroy();\n deletedItem.injector = undefined;\n }\n });\n },\n };\n arrayItem.field.fieldArray = signal([]);\n arrayItem.field.hooks?.afterChildrenInit?.(arrayItem.field);\n\n form.beforeUpdateList.push((input = []) => {\n const controlLength = form.controls$().length;\n if (controlLength < input.length) {\n const list = arrayItem.field.fieldArray!().slice();\n for (let index = controlLength; index < input.length; index++) {\n const result = this.createArrayItem(\n arrayItem,\n arrayItem.templateField,\n index,\n );\n list[index] = result;\n }\n arrayItem.field.fieldArray!.set(list);\n } else if (input.length < controlLength) {\n const list = arrayItem.field.fieldArray!().slice();\n for (\n let index = arrayItem.field.fieldArray!().length - 1;\n index >= input.length;\n index--\n ) {\n const [deletedItem] = list.splice(index, 1);\n form.removeAt(index);\n if (deletedItem) {\n deletedItem.injector?.destroy();\n deletedItem.injector = undefined;\n }\n }\n arrayItem.field.fieldArray!.set(list);\n }\n this.allFieldInitHookCall();\n });\n }\n\n #resolveComponent(type: string | any) {\n let define;\n let defaultConfig;\n // 查引用\n if (typeof type === 'string') {\n const config = this.#globalConfig?.types?.[type];\n if (!config) {\n throw new Error(`🈳define:[${type}]❗`);\n }\n defaultConfig = config;\n if (Object.keys(config).length) {\n define = {\n ...config,\n };\n return {\n define: { ...config },\n defaultConfig,\n };\n }\n } else {\n return { define: { type: type } };\n }\n return {\n define,\n defaultConfig,\n };\n }\n\n protected configMergeRaw<T extends SignalInputValue<any>>(\n list: T[],\n isArray: boolean,\n strategy: ConfigMergeStrategy,\n ): UnWrapSignal<NonNullable<T>> {\n let value;\n if (isArray) {\n if (strategy === 'merge') {\n value = list\n .filter(Boolean)\n .flat()\n .map((item) => unWrapSignal(item)) as any;\n } else {\n value = list.reduce(\n (data, item: any) => unWrapSignal(item) ?? data,\n [],\n ) as any;\n }\n } else {\n if (strategy === 'merge') {\n value = list.reduce(\n (obj, item: any) => ({\n ...obj,\n ...unWrapSignal(item),\n }),\n {},\n ) as any;\n } else {\n value = list.reduce(\n (data, item: any) => unWrapSignal(item) ?? data,\n {},\n ) as any;\n }\n }\n return clone(value) as any;\n }\n /**\n * 后面覆盖前面\n * */\n protected configMerge<T extends SignalInputValue<any>>(\n list: T[],\n isArray: boolean,\n strategy: ConfigMergeStrategy,\n ): WritableSignal<UnWrapSignal<NonNullable<T>>> {\n return signal(this.configMergeRaw(list, isArray, strategy));\n }\n #moveViewField(key: KeyPath, inputField: _PiResolvedCommonViewFieldConfig) {\n const parent = fieldQuery(\n key,\n inputField,\n this.#scopeMap,\n this.#options.resolvedField$(),\n );\n\n if (!parent) {\n throw new Error('移动视图项失败');\n }\n const newKeyPath = inputField.fullPath.slice(parent.fullPath.length);\n (inputField as any).keyPath = newKeyPath;\n inputField.parent = parent as any;\n parent.fieldGroup!().push(inputField);\n }\n #resolveWrappers(\n wrappers?: CoreRawWrapperConfig[],\n ): WritableSignal<CoreResolvedWrapperConfig[]> {\n const result = (wrappers ?? []).map((wrapper) => {\n // 查引用1\n if (typeof wrapper === 'string') {\n const config = this.#globalConfig?.wrappers?.[wrapper];\n if (!config) {\n throw new Error(`🈳wrapper:[${wrapper}]❗`);\n }\n return {\n ...config,\n inputs: signal(config.inputs),\n attributes: signal(config.attributes),\n };\n } else if (typeof wrapper.type === 'string') {\n // 查引用2\n const config = this.#globalConfig?.wrappers?.[wrapper.type];\n if (!config) {\n throw new Error(`🈳wrapper:[${wrapper.type}]❗`);\n }\n return {\n inputs: signal({ ...config.inputs, ...wrapper.inputs }),\n outputs: { ...config.outputs, ...wrapper.outputs },\n attributes: signal({ ...config.attributes, ...wrapper.attributes }),\n type: config.type,\n };\n } else {\n return {\n ...wrapper,\n inputs: signal(wrapper.inputs),\n attributes: signal(wrapper.attributes),\n };\n }\n });\n return signal(result);\n }\n}\n","import type { BaseMetadata } from 'valibot';\nimport { KeyPath } from '../../util';\n\nexport interface LayoutAction<TInput = unknown> extends BaseMetadata<TInput> {\n readonly type: 'layout';\n readonly reference: typeof layout;\n readonly value: {\n keyPath?: KeyPath;\n priority?: number;\n };\n}\n\nexport function layout<TInput>(\n value: LayoutAction['value'],\n): LayoutAction<TInput> {\n return {\n kind: 'metadata',\n type: 'layout',\n reference: layout,\n value: value,\n };\n}\n","import { createRawConfig } from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nexport const rawConfig = createRawConfig<'viewRawConfig', AnyCoreSchemaHandle>(\n 'viewRawConfig',\n);\n","import { rawConfig } from './raw-config';\n\nexport function setComponent<T>(type: any) {\n return rawConfig<T>((field) => {\n field.type = type;\n });\n}\n","import { RawConfigActionCommon } from '@piying/valibot-visit';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nimport { rawConfig } from './raw-config';\ntype Hooks = AnyCoreSchemaHandle['hooks'];\nexport type HooksConfig<T> = <B>(hooks: T) => RawConfigActionCommon<B>;\nexport const setHooks: HooksConfig<Hooks> = (hooks) =>\n rawConfig((field) => {\n field.hooks = hooks;\n });\nexport const patchHooks: HooksConfig<Hooks> = (hooks) =>\n rawConfig((field) => {\n field.hooks = { ...field.hooks, ...hooks };\n });\ntype HooksKey = keyof NonNullable<Hooks>;\nconst DefaultOptions = { position: 'bottom' as const };\nexport type MergeHooksConfig<T> = <B>(\n hooks: T,\n options?: { position: 'top' | 'bottom' },\n) => RawConfigActionCommon<B>;\nexport function mergeHooksFn<T extends AnyCoreSchemaHandle>(\n hooks: T['hooks'],\n options: { position: 'top' | 'bottom' },\n field: T,\n) {\n field.hooks ??= {};\n for (const key in hooks) {\n const oldFn = (field.hooks as any)[key];\n (field.hooks as any)[key] = (...args: any) => {\n if (options.position === 'top') {\n (hooks as any)[key](...args);\n }\n oldFn?.(...args);\n if (options.position === 'bottom') {\n (hooks as any)[key](...args);\n }\n };\n }\n}\nexport const mergeHooks: MergeHooksConfig<Hooks> = (\n hooks: Hooks,\n options: { position: 'top' | 'bottom' } = DefaultOptions,\n) => rawConfig((field) => mergeHooksFn(hooks, options, field));\nexport function removeHooks<T>(list: HooksKey[]) {\n return rawConfig<T>((field) => {\n const oldValue = field.hooks;\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.hooks = oldValue;\n });\n}\n","import {\n computed,\n isSignal,\n linkedSignal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { rawConfig } from './raw-config';\nimport {\n _PiResolvedCommonViewFieldConfig,\n CoreRawViewInputs,\n} from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../util/is-promise';\nimport { unWrapSignal, Writeable } from '../../util';\nexport function setInputs<T>(inputs: CoreRawViewInputs) {\n return rawConfig<T>((field) => {\n field.inputs = inputs;\n });\n}\nexport function patchInputs<T>(inputs: CoreRawViewInputs) {\n return rawConfig<T>((field) => {\n field.inputs = {\n ...field.inputs,\n ...inputs,\n };\n });\n}\nexport function removeInputs<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.inputs);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.inputs = oldValue;\n });\n}\nexport function asyncInputMerge(\n dataObj: Record<string, any>,\n data$: WritableSignal<any>,\n) {\n const signalObj = {} as Record<string, Signal<any>>;\n const inputList = Object.keys(dataObj);\n\n inputList.forEach((key) => {\n const result = dataObj[key];\n if (isPromise(result)) {\n // promise\n result.then((value: any) => {\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = value;\n return lastData;\n });\n });\n } else if (isSubscribable(result)) {\n // rxjs\n result.subscribe({\n next: (value) => {\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = value;\n return lastData;\n });\n },\n });\n } else if (isSignal(result)) {\n signalObj[key] = result;\n } else {\n // 普通类型\n data$.update((lastData) => {\n lastData = { ...lastData };\n lastData[key] = result;\n return lastData;\n });\n }\n });\n const signalKeyList = Object.keys(signalObj);\n\n if (signalKeyList.length) {\n return linkedSignal(\n computed(() => ({\n ...data$(),\n ...signalKeyList.reduce(\n (obj, key) => ({ ...obj, [key]: signalObj[key]() }),\n {} as Record<string, any>,\n ),\n })),\n );\n }\n return data$;\n}\nexport function patchAsyncFn(patchKey: 'props' | 'inputs' | 'attributes') {\n return <T>(\n dataObj: Record<\n string,\n (\n field: _PiResolvedCommonViewFieldConfig,\n ) => Promise<any> | Observable<any> | Signal<any> | (any & {})\n >,\n options?: {\n addPosition: 'top' | 'bottom';\n hookName: 'fieldResolved' | 'allFieldsResolved';\n },\n ) =>\n rawConfig<T>((rawField) => {\n const inputList = Object.keys(dataObj);\n const hookName = options?.hookName ?? ('allFieldsResolved' as const);\n // 设置初始值\n rawField[patchKey] = {\n ...rawField[patchKey],\n ...inputList.reduce((obj, item) => {\n obj[item] = rawField[patchKey]?.[item] ?? undefined;\n return obj;\n }, {} as any),\n };\n return mergeHooksFn(\n {\n [hookName]: (field: _PiResolvedCommonViewFieldConfig) => {\n (field as Writeable<_PiResolvedCommonViewFieldConfig>)[patchKey] =\n asyncInputMerge(\n Object.entries(dataObj).reduce(\n (obj, [key, value]) => {\n obj[key] = value(field);\n return obj;\n },\n {} as Record<string, any>,\n ),\n field[patchKey],\n );\n },\n },\n { position: options?.addPosition ?? 'bottom' },\n rawField,\n );\n });\n}\nexport const patchAsyncInputs = patchAsyncFn('inputs');\n","import { rawConfig } from './raw-config';\nimport { CoreRawViewAttributes } from '../../builder-base';\nimport { unWrapSignal } from '../../util';\nimport { patchAsyncFn } from './input';\nexport function setAttributes<T>(attributes: CoreRawViewAttributes) {\n return rawConfig<T>((field) => {\n field.attributes = attributes;\n });\n}\nexport function patchAttributes<T>(attributes: CoreRawViewAttributes) {\n return rawConfig<T>((field) => {\n field.attributes = {\n ...field.attributes,\n ...attributes,\n };\n });\n}\nexport function removeAttributes<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.attributes);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.attributes = oldValue;\n });\n}\nexport const patchAsyncAttributes = patchAsyncFn('attributes');\n","import { rawConfig } from './raw-config';\nimport { CoreRawProps } from '../../builder-base';\nimport { unWrapSignal } from '../../util';\nimport { patchAsyncFn } from './input';\nexport function setProps<T>(props: CoreRawProps) {\n return rawConfig<T>((field) => {\n field.props = props;\n });\n}\nexport function patchProps<T>(props: CoreRawProps) {\n return rawConfig<T>((field) => {\n field.props = {\n ...field.props,\n ...props,\n };\n });\n}\nexport function removeProps<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = unWrapSignal(field.props);\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.props = oldValue;\n });\n}\nexport const patchAsyncProps = patchAsyncFn('props');\n","import { rawConfig } from './raw-config';\nimport {\n _PiResolvedCommonViewFieldConfig,\n CoreRawViewOutputs,\n} from '../../builder-base';\nimport { combineLatest, map, Observable, skip, startWith, Subject } from 'rxjs';\nimport { AnyCoreSchemaHandle } from '../handle/core.schema-handle';\nimport { mergeHooksFn } from './hook';\nimport { KeyPath } from '../../util';\nexport function setOutputs<T>(outputs: CoreRawViewOutputs) {\n return rawConfig<T>((field) => {\n field.outputs = outputs;\n });\n}\nexport function patchOutputs<T>(outputs: CoreRawViewOutputs) {\n return rawConfig<T>((field) => {\n const oldValue = field.outputs;\n field.outputs = {\n ...oldValue,\n ...outputs,\n };\n });\n}\nexport function removeOutputs<T>(list: string[]) {\n return rawConfig<T>((field) => {\n const oldValue = field.outputs;\n if (!oldValue) {\n return;\n }\n list.forEach((item) => {\n delete oldValue[item];\n });\n field.outputs = oldValue;\n });\n}\n\nexport function mergeOutputFn(\n field: _PiResolvedCommonViewFieldConfig,\n outputs: CoreRawViewOutputs,\n options: { position: 'top' | 'bottom' },\n) {\n field.outputs.update((originOutputs) => {\n originOutputs = { ...originOutputs };\n for (const key in outputs) {\n const oldFn = (originOutputs as any)[key];\n (originOutputs as any)[key] = (...args: any[]) => {\n if (options.position === 'top') {\n (outputs as any)[key](...args, field);\n }\n oldFn?.(...args, field);\n if (options.position === 'bottom') {\n (outputs as any)[key](...args, field);\n }\n };\n }\n return originOutputs;\n });\n}\nconst DefaultOptions = { position: 'bottom' as const };\n\nexport const mergeOutputs = <T>(\n outputs: Record<string, (...args: any[]) => void>,\n options: { position: 'top' | 'bottom' } = DefaultOptions,\n) =>\n rawConfig<T>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n mergeOutputFn(field, outputs, options);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n\nexport type EventChangeFn = (\n fn: (\n input: {\n list: KeyPath | undefined;\n output: string;\n }[],\n ) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n) => void;\n\nexport function outputChangeFn(\n rawField: AnyCoreSchemaHandle,\n fn: EventChangeFn,\n) {\n mergeHooksFn(\n {\n allFieldsResolved: (field) =>\n fn((list) => {\n const resultList: {\n subject: Subject<any>;\n field: _PiResolvedCommonViewFieldConfig;\n }[] = [];\n for (const item of list) {\n const emitField = !item.list ? field : field.get(item.list)!;\n const subject = new Subject();\n mergeOutputFn(\n field,\n {\n [item.output]: (...args: any[]) => {\n subject.next(args);\n },\n },\n { position: 'bottom' },\n );\n resultList.push({\n subject,\n field: emitField,\n });\n }\n return combineLatest(\n resultList.map(({ subject }) => subject.pipe(startWith(undefined))),\n ).pipe(\n skip(1),\n map((list) => ({\n list,\n field,\n listenFields: resultList.map((item) => item.field),\n })),\n );\n }),\n },\n { position: 'bottom' },\n rawField,\n );\n}\n\nexport function outputChange<T>(fn: EventChangeFn) {\n return rawConfig<T>((field) => outputChangeFn(field, fn));\n}\n","import { rawConfig } from './raw-config';\nimport { CoreRawWrapperConfig } from '../../builder-base';\nimport { toArray } from '../../util';\n\nexport function setWrappers<T>(wrappers: CoreRawWrapperConfig[]) {\n return rawConfig<T>((field) => {\n field.wrappers = wrappers;\n });\n}\ntype PatchWrappersOptions = {\n position: 'head' | 'tail';\n};\nconst defaultValue: PatchWrappersOptions = {\n position: 'tail',\n};\nexport function patchWrappers<T>(\n wrappers: CoreRawWrapperConfig | CoreRawWrapperConfig[],\n options: PatchWrappersOptions = defaultValue,\n) {\n return rawConfig<T>((field) => {\n const list = toArray(wrappers)!;\n field.wrappers ??= [];\n if (options.position === 'tail') {\n field.wrappers.push(...list);\n } else {\n field.wrappers.unshift(...list);\n }\n });\n}\nexport function removeWrappers<T>(list: string[]) {\n return rawConfig<T>((field) => {\n if (!field.wrappers) {\n return;\n }\n const wrappers = field.wrappers;\n for (let i = 0; i < list.length; i++) {\n const name = list[i];\n for (let j = 0; j < wrappers.length; j++) {\n const config = wrappers[j];\n const name2 = typeof config === 'string' ? config : config.type;\n if (name2 === name) {\n wrappers.splice(j, 1);\n break;\n }\n }\n }\n field.wrappers = wrappers;\n });\n}\n","import { rawConfig } from './raw-config';\n\nexport function setAlias<T>(alias: string) {\n return rawConfig<T>((field) => {\n field.alias = alias;\n });\n}\n","import { FieldRenderConfig } from '../../builder-base';\nimport { FieldFormConfig } from '../../field/type';\nimport { rawConfig } from './raw-config';\n\nexport function renderConfig<T>(type: FieldRenderConfig) {\n return rawConfig<T>((field) => {\n field.renderConfig = type;\n });\n}\nexport function formConfig<T>(config: FieldFormConfig<T>) {\n return rawConfig<T>((field) => {\n field.formConfig = { ...field.formConfig, ...config };\n });\n}\n","import { combineLatest, map, Observable, skip } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { rawConfig } from './raw-config';\nimport { KeyPath } from '../../util';\nexport interface ValueChangFnOptions {\n list?: (KeyPath | undefined)[];\n skipInitValue?: boolean;\n}\nexport interface ChangeWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n fn: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n input: ValueChangFnOptions;\n }>,\n ) => void;\n}\nexport type ValueChangeFn = (\n fn: (input?: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n) => void;\nconst DefaultSelfList = [undefined];\nexport function valueChangeFn(\n field: _PiResolvedCommonViewFieldConfig,\n input: ValueChangFnOptions = {},\n) {\n const list = (input.list ?? DefaultSelfList).map((keyPath) =>\n !keyPath ? field.form.control! : field.get(keyPath)!.form.control!,\n );\n\n return combineLatest(\n list.map((control) =>\n input.skipInitValue\n ? control.valueChanges.pipe(skip(1))\n : control.valueChanges,\n ),\n ).pipe(map((list) => ({ list, field, listenFields: list })));\n}\n\nexport function valueChange<TInput>(listenFn: ValueChangeFn) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n listenFn((options) => valueChangeFn(field, options), field);\n },\n },\n { position: 'bottom' },\n field,\n );\n });\n}\n","import { Observable } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { valueChangeFn, ValueChangFnOptions } from './value-change';\nimport { rawConfig } from './raw-config';\nexport interface HideWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n disabled?: boolean;\n\n listen: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n ) => Observable<boolean>;\n}\n\nexport function hideWhen<TInput>(options: HideWhenOption) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n options\n .listen((options) => valueChangeFn(field, options), field)\n .subscribe((hidden) => {\n field.renderConfig.update((value) =>\n !!value.hidden !== hidden\n ? { ...value, hidden: hidden }\n : value,\n );\n if (options.disabled !== undefined && field.formConfig) {\n field.formConfig.update((value) => {\n value = { ...value };\n value.disabled = hidden ? options.disabled! : false;\n return value;\n });\n }\n });\n },\n },\n { position: 'bottom' },\n field,\n );\n\n return field;\n });\n}\n","import { Observable } from 'rxjs';\nimport { _PiResolvedCommonViewFieldConfig } from '../../builder-base';\nimport { mergeHooksFn } from './hook';\nimport { valueChangeFn, ValueChangFnOptions } from './value-change';\nimport { rawConfig } from './raw-config';\nexport interface DisableWhenOption<\n T extends _PiResolvedCommonViewFieldConfig = _PiResolvedCommonViewFieldConfig,\n> {\n listen: (\n fn: (input: ValueChangFnOptions) => Observable<{\n field: _PiResolvedCommonViewFieldConfig;\n list: any[];\n listenFields: _PiResolvedCommonViewFieldConfig[];\n }>,\n field: _PiResolvedCommonViewFieldConfig,\n ) => Observable<boolean>;\n}\n\nexport function disableWhen<TInput>(options: DisableWhenOption) {\n return rawConfig<TInput>((field) => {\n mergeHooksFn(\n {\n allFieldsResolved: (field) => {\n options\n .listen((options) => valueChangeFn(field, options), field)\n .subscribe((disabled) => {\n if (field.formConfig().disabled !== disabled) {\n field.formConfig.update((value) => ({\n ...value,\n disabled: disabled,\n }));\n }\n });\n },\n },\n { position: 'bottom' },\n field,\n );\n\n return field;\n });\n}\n","import clsx from 'clsx';\nimport { ClassValue } from 'clsx';\nimport { rawConfig } from './raw-config';\nimport { mergeHooksFn } from './hook';\n/** 必须防止到所有wrappers操作后面,防止设置错误\n * 设置到顶层,可能是wrapper,也可能是component\n *\n */\nexport function topClass<T>(className: ClassValue, merge?: boolean) {\n return rawConfig<T>((rawField) => {\n mergeHooksFn(\n {\n fieldResolved: (field) => {\n const wrappers = field.wrappers();\n if (wrappers?.length) {\n wrappers[0].attributes.update((attributes) => ({\n ...attributes,\n class: merge\n ? clsx(attributes?.['class'], className)\n : clsx(className),\n }));\n } else {\n field.attributes.update((attributes) => ({\n ...attributes,\n class: merge\n ? clsx(attributes?.['class'], className)\n : clsx(className),\n }));\n }\n },\n },\n { position: 'bottom' },\n rawField,\n );\n });\n}\n/** 仅设置在组件上 */\nexport function componentClass<T>(className: ClassValue, merge?: boolean) {\n return rawConfig<T>((field) => {\n field.attributes = {\n ...field.attributes,\n class: merge\n ? clsx(field.attributes?.['class'], className)\n : clsx(className),\n };\n });\n}\n","import type { BaseMetadata } from 'valibot';\n\nexport interface NonFieldControlAction<TInput = unknown>\n extends BaseMetadata<TInput> {\n readonly type: 'nonFieldControl';\n readonly reference: typeof nonFieldControl;\n readonly value: boolean;\n}\n\nexport function nonFieldControl<TInput>(\n value = true,\n): NonFieldControlAction<TInput> {\n return {\n kind: 'metadata',\n type: 'nonFieldControl',\n reference: nonFieldControl,\n value: value,\n };\n}\n","import {\n ArraySchema,\n BaseSchema,\n BaseIssue,\n ErrorMessage,\n ArrayIssue,\n} from 'valibot';\n\nimport * as v from 'valibot';\n\nimport {\n BaseSchemaHandle,\n convertSchema,\n DefaultSchema,\n EnumSchema,\n IntersectSchema,\n LazySchema,\n MetadataAction,\n Schema,\n SchemaOrPipe,\n TupleSchema,\n UnionSchema,\n VoidSchema,\n} from '@piying/valibot-visit';\nimport {\n FieldRenderConfig,\n CoreRawViewOutputs,\n CoreRawWrapperConfig,\n CoreRawViewInputs,\n _PiResolvedCommonViewFieldConfig,\n HookConfig,\n} from '../../builder-base';\nimport { FieldFormConfig } from '../../field/type';\nimport { KeyPath } from '../../util';\nimport { NonFieldControlAction } from '../action/non-field-control';\n\nexport class CoreSchemaHandle<\n Self extends CoreSchemaHandle<any, any>,\n RESOLVED_FN extends () => any,\n> extends BaseSchemaHandle<Self> {\n inputs?: CoreRawViewInputs;\n outputs?: CoreRawViewOutputs;\n wrappers?: CoreRawWrapperConfig[];\n attributes?: Record<string, any>;\n alias?: string;\n movePath?: KeyPath;\n renderConfig?: FieldRenderConfig;\n /** todo 非表单应该可选 */\n formConfig: FieldFormConfig = {};\n id?: string;\n isLogicAnd = false;\n isLogicOr = false;\n isArray = false;\n isTuple = false;\n nonFieldControl = false;\n hooks?: HookConfig<ReturnType<RESOLVED_FN>>;\n override lazySchema(schema: LazySchema): void {\n super.lazySchema(schema);\n if (this.parent) {\n const wrappered = this.lazyWrapped as any as Self;\n if (this.parent.isArray) {\n this.parent.arrayChild = wrappered;\n } else {\n const index = this.parent.children.findIndex((item) => item === this);\n this.parent.children[index] = wrappered;\n }\n wrappered!.parent = this.parent;\n wrappered!.key = this.key;\n }\n }\n override arraySchema(\n schema: ArraySchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ArrayIssue> | undefined\n >,\n ): void {\n if (this.isObjectControl) {\n // 不需要设置默认值,因为item属于模板\n return;\n } else {\n this.isArray = true;\n const sh = new this.globalConfig.handle(this.globalConfig, this, schema);\n sh.parent = this;\n this.arrayChild = sh;\n convertSchema(schema.item as SchemaOrPipe, sh);\n }\n }\n\n override defaultSchema(schema: DefaultSchema): void {\n this.defaultValue = schema.literal;\n }\n override tupleDefault(schema: TupleSchema): void {\n super.tupleDefault(schema);\n this.isTuple = true;\n }\n override enumSchema(schema: EnumSchema): void {\n this.props ??= {};\n this.props['options'] ??= schema.options;\n }\n override intersectBefore(schema: IntersectSchema): void {\n if (this.childrenAsVirtualGroup) {\n // 临时修复,需要把action分为前后两个部分\n if (this.type === 'intersect') {\n this.type = 'intersect-group';\n }\n } else {\n this.isLogicAnd = true;\n }\n }\n override logicItemSchema(\n schema: v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n index: number,\n type: 'intersect' | 'union',\n ): void {\n const sh = new this.globalConfig.handle(\n this.globalConfig,\n this as unknown as AnyCoreSchemaHandle,\n schema,\n );\n if (this.childrenAsVirtualGroup) {\n } else {\n sh.key = index;\n }\n sh.setParent(this);\n convertSchema(schema as SchemaOrPipe, sh);\n }\n override unionBefore(schema: UnionSchema): void {\n if (this.childrenAsVirtualGroup) {\n // 这个参数并不应该出现到这里,因为是专门为intersect设计\n } else {\n this.isLogicOr = true;\n }\n }\n\n override beforeSchemaType(schema: Schema): void {\n super.beforeSchemaType(schema);\n this.formConfig.required = !this.undefinedable && !this.nullable;\n }\n override voidSchema(schema: VoidSchema): void {\n this.nonFieldControl = true;\n }\n\n override metadataDefaulthandle(\n metadata: MetadataAction,\n environments: string[],\n ): void {\n switch (metadata.type as any) {\n case 'viewRawConfig': {\n (metadata as any).value(this as any, this.globalConfig.context);\n break;\n }\n case 'layout': {\n this.movePath = (metadata as any).value.keyPath;\n this.priority = (metadata as any).value.priority;\n break;\n }\n case 'nonFieldControl': {\n this.nonFieldControl = (metadata as any as NonFieldControlAction).value;\n break;\n }\n\n default:\n break;\n }\n }\n override end(schema: SchemaOrPipe): void {\n super.end(schema);\n this.formConfig.defaultValue = this.defaultValue;\n }\n}\nexport type AnyCoreSchemaHandle = CoreSchemaHandle<\n any,\n () => _PiResolvedCommonViewFieldConfig\n>;\n","import {\n AnyCoreSchemaHandle,\n CoreSchemaHandle,\n} from './handle/core.schema-handle';\n\nimport {\n convertCore,\n ConvertOptions,\n SchemaOrPipe,\n} from '@piying/valibot-visit';\nimport { computed, EnvironmentInjector, Injector, signal } from '@angular/core';\nimport {\n PI_FORM_BUILDER_OPTIONS_TOKEN,\n PI_VIEW_CONFIG_TOKEN,\n PiCommonConfig,\n PiResolvedCommonViewFieldConfig,\n FormBuilder,\n FormBuilderOptions,\n PI_CONTEXT_TOKEN,\n} from '../builder-base';\nimport { FieldGroup } from '../field/field-group';\nimport { SetOptional } from '../util';\nexport function convert<\n RESULT extends Omit<PiResolvedCommonViewFieldConfig<any, any>, 'define'>,\n>(\n obj: SchemaOrPipe,\n options: SetOptional<ConvertOptions, 'handle'> & {\n injector: Injector;\n builder: typeof FormBuilder;\n fieldGlobalConfig?: PiCommonConfig;\n registerOnDestroy?: (fn: any) => void;\n },\n) {\n const buildOptions: FormBuilderOptions<RESULT> = {\n form$$: computed<FieldGroup>(\n () => buildOptions.resolvedField$()?.form.control as any,\n ),\n resolvedField$: signal(undefined as any),\n context: options.context,\n };\n const injector = Injector.create({\n providers: [\n {\n provide: PI_FORM_BUILDER_OPTIONS_TOKEN,\n useValue: buildOptions,\n },\n {\n provide: PI_VIEW_CONFIG_TOKEN,\n useValue: options.fieldGlobalConfig,\n },\n {\n provide: PI_CONTEXT_TOKEN,\n useValue: options.context,\n },\n options.builder,\n { provide: EnvironmentInjector, useFactory: () => injector },\n ],\n parent: options.injector,\n });\n options.registerOnDestroy?.(() => {\n injector.get(EnvironmentInjector).destroy();\n });\n return convertCore(\n obj,\n (item: AnyCoreSchemaHandle) => {\n // todo\n injector.get(options.builder).buildRoot({\n field: item,\n resolvedField$: buildOptions.resolvedField$,\n });\n return buildOptions.resolvedField$();\n },\n {\n ...options,\n handle: options?.handle ?? (CoreSchemaHandle as any),\n },\n );\n}\n","import * as v from 'valibot';\nexport const NFCSchema = v.optional(v.void());\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["unWrapSignal","DefaultOptions"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -50,7 +50,7 @@ interface ValidatorFn {
50
50
  (control: AbstractControl): ValidationErrors | undefined;
51
51
  }
52
52
  interface AsyncValidatorFn {
53
- (control: AbstractControl): Promise<ValidationErrors | undefined> | Observable<ValidationErrors | undefined>;
53
+ (control: AbstractControl): Promise<ValidationErrors | undefined> | Observable<ValidationErrors | undefined> | Signal<ValidationErrors | undefined>;
54
54
  }
55
55
  declare const VALID = "VALID";
56
56
  declare const INVALID = "INVALID";
@@ -69,7 +69,6 @@ declare abstract class AbstractControl<TValue = any> {
69
69
  abstract children$$?: Signal<AbstractControl[]>;
70
70
  /** disabled */
71
71
  readonly selfDisabled$$: Signal<boolean>;
72
- readonly selfEnabled$$: Signal<boolean>;
73
72
  /** `self` || `parent` */
74
73
  readonly disabled$$: Signal<boolean>;
75
74
  readonly enabled$$: Signal<boolean>;
@@ -110,7 +109,9 @@ declare abstract class AbstractControl<TValue = any> {
110
109
  updateOn$$: Signal<FormHooks>;
111
110
  markAsTouched(): void;
112
111
  markAllAsDirty(): void;
112
+ markAllAsPristine(): void;
113
113
  markAllAsTouched(): void;
114
+ markAllAsUntouched(): void;
114
115
  markAsUntouched(): void;
115
116
  markAsDirty(): void;
116
117
  markAsPristine(): void;
@@ -121,6 +122,8 @@ declare abstract class AbstractControl<TValue = any> {
121
122
  abstract updateValue(value: any): void;
122
123
  config$: FieldFormConfig$;
123
124
  initConfig(config: any): void;
125
+ protected getInitValue(value: any): any;
126
+ abstract updateInitValue(value: any): void;
124
127
  find(name: string | number): AbstractControl | null;
125
128
  setControl(name: string | number, control: AbstractControl): void;
126
129
  private reduceChildren;
@@ -147,6 +150,7 @@ declare class FieldGroup<TControl extends {
147
150
  find(name: string): AbstractControl | null;
148
151
  looseValue$$: _angular_core.Signal<any>;
149
152
  updateValue(value: any): void;
153
+ updateInitValue(value: any): void;
150
154
  }
151
155
 
152
156
  declare class FieldControl<TValue = any> extends AbstractControl<TValue> {
@@ -170,8 +174,8 @@ declare class FieldControl<TValue = any> extends AbstractControl<TValue> {
170
174
  /** view变更 */
171
175
  viewValueChange(value: TValue | undefined): void;
172
176
  updateValue(value: any, force?: boolean): void;
173
- initConfig(config: any): void;
174
177
  emitSubmit(): void;
178
+ updateInitValue(value: any): void;
175
179
  }
176
180
 
177
181
  declare class FieldArray<TControl extends AbstractControl<any> = any> extends AbstractControl {
@@ -190,6 +194,7 @@ declare class FieldArray<TControl extends AbstractControl<any> = any> extends Ab
190
194
  find(name: number): AbstractControl;
191
195
  beforeUpdateList: ((value: any[]) => void)[];
192
196
  updateValue(value?: any[]): void;
197
+ updateInitValue(value: any): void;
193
198
  }
194
199
 
195
200
  declare class FieldLogicGroup extends FieldArray {
@@ -200,8 +205,10 @@ declare class FieldLogicGroup extends FieldArray {
200
205
  value$$: _angular_core.Signal<any>;
201
206
  getActivateControls(): AbstractControl<any>[];
202
207
  getValue(rawData: boolean): any;
208
+ reset(value?: any[]): void;
203
209
  getRawValue(): any;
204
210
  updateValue(value: any): void;
211
+ updateInitValue(value: any): void;
205
212
  }
206
213
 
207
214
  declare function isFieldGroup(input: any): input is FieldGroup;
@@ -401,7 +408,7 @@ declare class CoreSchemaHandle<Self extends CoreSchemaHandle<any, any>, RESOLVED
401
408
  wrappers?: CoreRawWrapperConfig[];
402
409
  attributes?: Record<string, any>;
403
410
  alias?: string;
404
- movePath?: QueryPath;
411
+ movePath?: KeyPath;
405
412
  renderConfig?: FieldRenderConfig;
406
413
  /** todo 非表单应该可选 */
407
414
  formConfig: FieldFormConfig;
@@ -696,7 +703,7 @@ declare class FormBuilder<SchemaHandle extends CoreSchemaHandle<any, any>> {
696
703
  interface PiCommonConfig {
697
704
  types?: Record<string, PiCommonDefaultConfig>;
698
705
  defaultConfig?: PiCommonDefaultConfig;
699
- defaultConfigMergeStrategy?: ConfigMergeStrategy | Record<DefaultConfigKey, ConfigMergeStrategy>;
706
+ defaultConfigMergeStrategy?: Record<DefaultConfigKey, ConfigMergeStrategy>;
700
707
  wrappers?: Record<string, Omit<CoreWrapperConfig1, 'type'> & {
701
708
  type: any | LazyImport<any>;
702
709
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piying/view-angular-core",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "homepage": "https://piying-org.github.io/website/docs/client/intro",
5
5
  "repository": {
6
6
  "url": "https://github.com/piying-org/piying-view"
package/readme.md CHANGED
@@ -1 +1 @@
1
- [document](https://piying-org.github.io/website/docs/client/intro)
1
+ [document](https://piying-org.github.io/website/docs/client/intro)