@reformer/core 11.0.0-beta.3 → 11.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/behaviors.d.ts +1 -1
  2. package/dist/behaviors.js +37 -37
  3. package/dist/create-model-Dxh9cfLp.js +97 -0
  4. package/dist/form/behaviors/collections.d.ts +50 -0
  5. package/dist/form/behaviors/context.d.ts +23 -0
  6. package/dist/form/behaviors/index.d.ts +28 -0
  7. package/dist/form/behaviors/internals.d.ts +26 -0
  8. package/dist/form/{behaviors-node.d.ts → behaviors/node.d.ts} +3 -3
  9. package/dist/form/behaviors/operators.d.ts +51 -0
  10. package/dist/form/behaviors/types.d.ts +17 -0
  11. package/dist/form/create-core-form.d.ts +3 -3
  12. package/dist/form/create-form.d.ts +1 -1
  13. package/dist/form/index.d.ts +10 -16
  14. package/dist/form/nodes/model-array-node.d.ts +1 -1
  15. package/dist/form/types/contracts.d.ts +9 -6
  16. package/dist/form/types/validation-schema.d.ts +1 -1
  17. package/dist/form/{validation-config.d.ts → validation/config.d.ts} +3 -3
  18. package/dist/form/validation/context.d.ts +27 -0
  19. package/dist/form/{error-handler.d.ts → validation/error-handler.d.ts} +1 -1
  20. package/dist/form/validation/index.d.ts +23 -28
  21. package/dist/form/validation/operators.d.ts +42 -0
  22. package/dist/form/validation/run.d.ts +45 -0
  23. package/dist/form/{validation-strategy.d.ts → validation/strategy.d.ts} +2 -2
  24. package/dist/form/validation/types.d.ts +28 -0
  25. package/dist/form/{validation/validators → validators}/date-utils.d.ts +1 -1
  26. package/dist/form/{validation/validators → validators}/email.d.ts +1 -1
  27. package/dist/form/{validation/validators → validators}/file-type.d.ts +1 -1
  28. package/dist/form/{validation/validators → validators}/file-utils.d.ts +1 -1
  29. package/dist/form/{validation/validators → validators}/future-date.d.ts +1 -1
  30. package/dist/form/{validation/validators → validators}/index.d.ts +6 -4
  31. package/dist/form/{validation/validators → validators}/integer.d.ts +1 -1
  32. package/dist/form/{validation/validators → validators}/is-date.d.ts +1 -1
  33. package/dist/form/{validation/validators → validators}/is-number.d.ts +1 -1
  34. package/dist/form/{validation/validators → validators}/max-age.d.ts +1 -1
  35. package/dist/form/{validation/validators → validators}/max-date.d.ts +1 -1
  36. package/dist/form/{validation/validators → validators}/max-file-size.d.ts +1 -1
  37. package/dist/form/{validation/validators → validators}/max-files.d.ts +1 -1
  38. package/dist/form/{validation/validators → validators}/max-length.d.ts +1 -1
  39. package/dist/form/{validation/validators → validators}/max-total-file-size.d.ts +1 -1
  40. package/dist/form/{validation/validators → validators}/max.d.ts +1 -1
  41. package/dist/form/{validation/validators → validators}/min-age.d.ts +1 -1
  42. package/dist/form/{validation/validators → validators}/min-date.d.ts +1 -1
  43. package/dist/form/{validation/validators → validators}/min-file-size.d.ts +1 -1
  44. package/dist/form/{validation/validators → validators}/min-files.d.ts +1 -1
  45. package/dist/form/{validation/validators → validators}/min-length.d.ts +1 -1
  46. package/dist/form/{validation/validators → validators}/min.d.ts +1 -1
  47. package/dist/form/{validation/validators → validators}/multiple-of.d.ts +1 -1
  48. package/dist/form/{validation/validators → validators}/non-negative.d.ts +1 -1
  49. package/dist/form/{validation/validators → validators}/non-zero.d.ts +1 -1
  50. package/dist/form/{validation/validators → validators}/past-date.d.ts +1 -1
  51. package/dist/form/{validation/validators → validators}/pattern.d.ts +1 -1
  52. package/dist/form/{validation/validators → validators}/phone.d.ts +1 -1
  53. package/dist/form/{validation/validators → validators}/required.d.ts +1 -1
  54. package/dist/form/{validation/validators → validators}/url.d.ts +1 -1
  55. package/dist/index.d.ts +7 -4
  56. package/dist/index.js +246 -71
  57. package/dist/{state/form-model.d.ts → model/create-model.d.ts} +0 -14
  58. package/dist/{state → model}/index.d.ts +10 -11
  59. package/dist/model/model-nodes.d.ts +60 -0
  60. package/dist/model/model-signals-proxy.d.ts +32 -0
  61. package/dist/model/model-value-proxy.d.ts +3 -0
  62. package/dist/{state → model}/safe-effect.d.ts +1 -1
  63. package/dist/model-signals-proxy-mV3WGdlO.js +233 -0
  64. package/dist/model.d.ts +2 -0
  65. package/dist/model.js +21 -0
  66. package/dist/{form → platforms/react}/hooks/types.d.ts +1 -1
  67. package/dist/{form → platforms/react}/hooks/use-form-bundle.d.ts +1 -1
  68. package/dist/{form → platforms/react}/hooks/use-form-validation.d.ts +3 -3
  69. package/dist/{form → platforms/react}/hooks/useArrayLength.d.ts +1 -1
  70. package/dist/{form → platforms/react}/hooks/useFormControl.d.ts +3 -3
  71. package/dist/{form → platforms/react}/hooks/useFormControlValue.d.ts +2 -2
  72. package/dist/platforms/react/index.d.ts +23 -0
  73. package/dist/signals.d.ts +1 -1
  74. package/dist/strategy-DA3JwxsR.js +170 -0
  75. package/dist/validation.d.ts +1 -1
  76. package/dist/validation.js +10 -165
  77. package/dist/validators/email.d.ts +1 -1
  78. package/dist/validators/future-date.d.ts +1 -1
  79. package/dist/validators/integer.d.ts +1 -1
  80. package/dist/validators/is-date.d.ts +1 -1
  81. package/dist/validators/is-number.d.ts +1 -1
  82. package/dist/validators/max-age.d.ts +1 -1
  83. package/dist/validators/max-date.d.ts +1 -1
  84. package/dist/validators/max-length.d.ts +1 -1
  85. package/dist/validators/max.d.ts +1 -1
  86. package/dist/validators/min-age.d.ts +1 -1
  87. package/dist/validators/min-date.d.ts +1 -1
  88. package/dist/validators/min-length.d.ts +1 -1
  89. package/dist/validators/min.d.ts +1 -1
  90. package/dist/validators/multiple-of.d.ts +1 -1
  91. package/dist/validators/non-negative.d.ts +1 -1
  92. package/dist/validators/non-zero.d.ts +1 -1
  93. package/dist/validators/past-date.d.ts +1 -1
  94. package/dist/validators/pattern.d.ts +1 -1
  95. package/dist/validators/phone.d.ts +1 -1
  96. package/dist/validators/required.d.ts +1 -1
  97. package/dist/validators/url.d.ts +1 -1
  98. package/dist/validators.d.ts +1 -1
  99. package/llms.txt +64 -43
  100. package/package.json +4 -4
  101. package/dist/form/behaviors.d.ts +0 -133
  102. package/dist/form/validation-schema.d.ts +0 -106
  103. package/dist/form/validators.d.ts +0 -11
  104. package/dist/form-model-DhW2HZOB.js +0 -323
  105. package/dist/state.d.ts +0 -2
  106. package/dist/state.js +0 -21
  107. package/dist/subscription-manager-705bls97.js +0 -171
  108. /package/dist/{state → form/nodes}/subscription-manager.d.ts +0 -0
  109. /package/dist/{state → model}/behaviors-value.d.ts +0 -0
  110. /package/dist/{state → model}/derived-registry.d.ts +0 -0
  111. /package/dist/{state → model}/types.d.ts +0 -0
  112. /package/dist/{behaviors-node-DGEFMTQu.js → node-DGEFMTQu.js} +0 -0
  113. /package/dist/{form → platforms/react}/hooks/useSignalSubscription.d.ts +0 -0
@@ -1,167 +1,12 @@
1
- import { signal as A, effect as M } from "@preact/signals-core";
2
- import { e as E } from "./form-model-DhW2HZOB.js";
3
- import { g as p } from "./signal-node-registry-tiwel-TV.js";
4
- function B(e, n, t = {}) {
5
- const { strategy: r = "submit", debounce: o = 0, liveAfterSubmit: i = "change" } = t, s = A(!1);
6
- let a = 0, c = !1, d, l;
7
- const w = async (u) => {
8
- a++, s.value = !0;
9
- try {
10
- return await W(e, n, { touch: u });
11
- } finally {
12
- --a === 0 && (s.value = !1);
13
- }
14
- }, h = () => {
15
- w(!1);
16
- }, F = () => {
17
- if (!o) {
18
- h();
19
- return;
20
- }
21
- l && clearTimeout(l), l = setTimeout(h, o);
22
- }, k = (u, g) => {
23
- let S = !0;
24
- return M(() => {
25
- if (E(e, u), S) {
26
- S = !1;
27
- return;
28
- }
29
- r === "afterFirstSubmit" && !c || g();
30
- });
31
- }, m = {
32
- async validate() {
33
- return c = !0, w(!0);
34
- },
35
- start() {
36
- if (d) return () => m.dispose();
37
- const u = r === "afterFirstSubmit" ? i : r;
38
- return u === "change" ? d = k((g) => void g.value, F) : u === "blur" && (d = k((g) => void p(g)?.touched.value, h)), () => m.dispose();
39
- },
40
- dispose() {
41
- l && (clearTimeout(l), l = void 0), d?.(), d = void 0;
42
- },
43
- get isValidating() {
44
- return s.value;
45
- },
46
- get validating() {
47
- return s;
48
- }
49
- };
50
- return m;
51
- }
52
- let v = null;
53
- function f(e) {
54
- if (!v)
55
- throw new Error(
56
- `[@reformer/core/validation] "${e}" вызван вне схемы валидации — операторы валидации можно вызывать только внутри прогона validateModel(...) (напрямую или через apply/each).`
57
- );
58
- return v;
59
- }
60
- function b(e, n) {
61
- let t = e.errors.get(n);
62
- return t || e.errors.set(n, t = []), t;
63
- }
64
- const y = (e) => e.whenStack.every((n) => n());
65
- function D(e, n) {
66
- const t = f("validate"), r = b(t, e);
67
- if (!y(t)) return;
68
- const o = e.peek();
69
- for (const i of n) {
70
- const s = i(o, t.model, t.model);
71
- s && r.push(s);
72
- }
73
- }
74
- function N(e, n) {
75
- const t = f("validateAsync"), r = b(t, e);
76
- if (!y(t)) return;
77
- const o = e.peek(), i = t.signal;
78
- for (const s of n)
79
- t.pending.push(
80
- s(o, { signal: i }).then(
81
- (a) => {
82
- a && !i.aborted && r.push(a);
83
- },
84
- () => {
85
- }
86
- )
87
- );
88
- }
89
- function R(e, n) {
90
- const t = f("validateWhen");
91
- t.whenStack.push(e);
92
- try {
93
- n();
94
- } finally {
95
- t.whenStack.pop();
96
- }
97
- }
98
- function _(e, n) {
99
- const t = f("cross"), r = b(t, e);
100
- if (!y(t)) return;
101
- const o = n(t.model.get());
102
- o && r.push(o);
103
- }
104
- function $(e, n) {
105
- f("each");
106
- const t = e.length;
107
- for (let r = 0; r < t; r++) n(e.at(r));
108
- }
109
- function j(...e) {
110
- const t = f("apply").model;
111
- for (const r of e) r({ model: t });
112
- }
113
- function z(e) {
114
- return e;
115
- }
116
- const x = /* @__PURE__ */ new WeakMap();
117
- function L(e, n) {
118
- let t = x.get(e);
119
- t || x.set(e, t = /* @__PURE__ */ new WeakMap());
120
- let r = t.get(n);
121
- return r || t.set(n, r = { fields: /* @__PURE__ */ new Set(), ac: null }), r;
122
- }
123
- const P = (e) => {
124
- for (const n of e.values()) for (const t of n) if (t.severity !== "warning") return !0;
125
- return !1;
126
- };
127
- function T(e) {
128
- return e.aborted ? Promise.resolve() : new Promise((n) => {
129
- e.addEventListener("abort", () => n(), { once: !0 });
130
- });
131
- }
132
- async function W(e, n, t) {
133
- const r = L(e, n);
134
- r.ac?.abort();
135
- const o = new AbortController();
136
- r.ac = o;
137
- const i = {
138
- model: e,
139
- errors: /* @__PURE__ */ new Map(),
140
- pending: [],
141
- whenStack: [],
142
- signal: o.signal
143
- }, s = v;
144
- v = i;
145
- try {
146
- n({ model: e });
147
- } finally {
148
- v = s;
149
- }
150
- if (i.pending.length && await Promise.race([Promise.all(i.pending), T(o.signal)]), o.signal.aborted) return !1;
151
- const a = new Set(i.errors.keys());
152
- for (const c of r.fields) a.has(c) || p(c)?.setErrors([]);
153
- for (const c of a) p(c)?.setErrors(i.errors.get(c) ?? []);
154
- if (t?.touch) for (const c of a) p(c)?.markAsTouched();
155
- return r.fields = a, !P(i.errors);
156
- }
1
+ import { d as s, h as d, c as i, f as l, e as t, v as o, a as c, g as n, b as r } from "./strategy-DA3JwxsR.js";
157
2
  export {
158
- j as apply,
159
- B as createFormValidation,
160
- _ as cross,
161
- z as defineValidationSchema,
162
- $ as each,
163
- D as validate,
164
- N as validateAsync,
165
- W as validateModel,
166
- R as validateWhen
3
+ s as apply,
4
+ d as createFormValidation,
5
+ i as cross,
6
+ l as defineValidationSchema,
7
+ t as each,
8
+ o as validate,
9
+ c as validateAsync,
10
+ n as validateModel,
11
+ r as validateWhen
167
12
  };
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/email'
1
+ export * from '../form/validators/email'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/future-date'
1
+ export * from '../form/validators/future-date'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/integer'
1
+ export * from '../form/validators/integer'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/is-date'
1
+ export * from '../form/validators/is-date'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/is-number'
1
+ export * from '../form/validators/is-number'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/max-age'
1
+ export * from '../form/validators/max-age'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/max-date'
1
+ export * from '../form/validators/max-date'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/max-length'
1
+ export * from '../form/validators/max-length'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/max'
1
+ export * from '../form/validators/max'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/min-age'
1
+ export * from '../form/validators/min-age'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/min-date'
1
+ export * from '../form/validators/min-date'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/min-length'
1
+ export * from '../form/validators/min-length'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/min'
1
+ export * from '../form/validators/min'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/multiple-of'
1
+ export * from '../form/validators/multiple-of'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/non-negative'
1
+ export * from '../form/validators/non-negative'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/non-zero'
1
+ export * from '../form/validators/non-zero'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/past-date'
1
+ export * from '../form/validators/past-date'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/pattern'
1
+ export * from '../form/validators/pattern'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/phone'
1
+ export * from '../form/validators/phone'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/required'
1
+ export * from '../form/validators/required'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from '../form/validation/validators/url'
1
+ export * from '../form/validators/url'
2
2
  export {}
@@ -1,2 +1,2 @@
1
- export * from './form/validators'
1
+ export * from './form/validators/index'
2
2
  export {}
package/llms.txt CHANGED
@@ -4537,7 +4537,7 @@ Add Phone
4537
4537
  - {@link useFormControl} - хук для получения состояния
4538
4538
  - {@link FieldControlState} - состояние для полей
4539
4539
 
4540
- _Source: src/form/hooks/types.ts_
4540
+ _Source: src/platforms/react/hooks/types.ts_
4541
4541
 
4542
4542
  ### ArrayNode
4543
4543
 
@@ -4655,7 +4655,7 @@ _Source: src/form/types/contracts.ts_
4655
4655
  export type BehaviorCleanup = () => void;
4656
4656
  ```
4657
4657
 
4658
- _Source: src/state/behaviors-value.ts_
4658
+ _Source: src/model/behaviors-value.ts_
4659
4659
 
4660
4660
  ### buildValidation
4661
4661
 
@@ -4692,7 +4692,7 @@ await v!.validateStep(1); // правила шага `loan`
4692
4692
  await v!.validateAll(); // все шаги + extras
4693
4693
  ```
4694
4694
 
4695
- _Source: src/form/validation-config.ts_
4695
+ _Source: src/form/validation/config.ts_
4696
4696
 
4697
4697
  ### computeFrom
4698
4698
 
@@ -4723,7 +4723,7 @@ export function computeFrom<R>(
4723
4723
  computeFrom([model.$.price, model.$.qty], model.$.total, (price, qty) => price * qty);
4724
4724
  ```
4725
4725
 
4726
- _Source: src/state/behaviors-value.ts_
4726
+ _Source: src/model/behaviors-value.ts_
4727
4727
 
4728
4728
  ### ConfigWithSchema
4729
4729
 
@@ -4777,7 +4777,7 @@ export function copyFrom<T>(
4777
4777
  copyFrom(model.$.email, model.$.emailAdditional, { when: () => model.sameEmail });
4778
4778
  ```
4779
4779
 
4780
- _Source: src/state/behaviors-value.ts_
4780
+ _Source: src/model/behaviors-value.ts_
4781
4781
 
4782
4782
  ### CORE_RUNTIME_TOKEN
4783
4783
 
@@ -5087,7 +5087,7 @@ model.tags.push('x');
5087
5087
  model.get(); // { email: 'a@b.c', profile: { name: 'Ada' }, tags: ['x'] }
5088
5088
  ```
5089
5089
 
5090
- _Source: src/state/form-model.ts_
5090
+ _Source: src/model/create-model.ts_
5091
5091
 
5092
5092
  ### disableWhen
5093
5093
 
@@ -5119,7 +5119,28 @@ export function disableWhen(
5119
5119
  disableWhen(model.$.discount, () => model.plan !== 'promo', { resetOnDisable: true });
5120
5120
  ```
5121
5121
 
5122
- _Source: src/form/behaviors-node.ts_
5122
+ _Source: src/form/behaviors/node.ts_
5123
+
5124
+ ### eachLeafSignal
5125
+
5126
+ **Kind:** `function`
5127
+
5128
+ Обойти ВСЕ листовые сигналы модели (включая элементы массивов), вызвав `visit` на каждом.
5129
+
5130
+ Внутри реактивного `effect` служит подпиской «любое поле изменилось»: `visit(sig => void sig.value)`
5131
+ подписывает на значения листьев, а обход массивов через `items.value` — на их состав. Так строятся
5132
+ триггеры `change`/`blur` стратегий валидации (см. `createFormValidation`), тем же паттерном, что
5133
+ `revalidateWhen`, но без ручного перечисления зависимостей.
5134
+
5135
+ **Signature:**
5136
+ ```typescript
5137
+ export function eachLeafSignal<T>(
5138
+ model: FormModel<T>,
5139
+ visit: (signal: PathAwareSignal<unknown>) => void
5140
+ ): void
5141
+ ```
5142
+
5143
+ _Source: src/model/create-model.ts_
5123
5144
 
5124
5145
  ### enableWhen
5125
5146
 
@@ -5163,7 +5184,7 @@ compute(model.$.initialPayment, () => model.propertyValue * 0.2, {
5163
5184
  });
5164
5185
  ```
5165
5186
 
5166
- _Source: src/form/behaviors-node.ts_
5187
+ _Source: src/form/behaviors/node.ts_
5167
5188
 
5168
5189
  ### ErrorFilterOptions
5169
5190
 
@@ -5221,7 +5242,7 @@ export enum ErrorStrategy {
5221
5242
  }
5222
5243
  ```
5223
5244
 
5224
- _Source: src/form/error-handler.ts_
5245
+ _Source: src/form/validation/error-handler.ts_
5225
5246
 
5226
5247
  ### FieldConfig
5227
5248
 
@@ -5483,7 +5504,7 @@ onChange={e => control.setValue(e.target.value)}
5483
5504
  - {@link useFormControl} - хук для получения состояния
5484
5505
  - {@link ArrayControlState} - состояние для массивов
5485
5506
 
5486
- _Source: src/form/hooks/types.ts_
5507
+ _Source: src/platforms/react/hooks/types.ts_
5487
5508
 
5488
5509
  ### FieldNode
5489
5510
 
@@ -5595,7 +5616,7 @@ export interface FormBundleLike {
5595
5616
  }
5596
5617
  ```
5597
5618
 
5598
- _Source: src/form/hooks/use-form-bundle.ts_
5619
+ _Source: src/platforms/react/hooks/use-form-bundle.ts_
5599
5620
 
5600
5621
  ### FormControlsProxy
5601
5622
 
@@ -5709,7 +5730,7 @@ try {
5709
5730
  }
5710
5731
  ```
5711
5732
 
5712
- _Source: src/form/error-handler.ts_
5733
+ _Source: src/form/validation/error-handler.ts_
5713
5734
 
5714
5735
  ### FormModel
5715
5736
 
@@ -5724,7 +5745,7 @@ FormModel — под-модель объекта `T`: value-доступ ({@link
5724
5745
  export type FormModel<T> = ModelObject<T> & ModelApi<T>;
5725
5746
  ```
5726
5747
 
5727
- _Source: src/state/types.ts_
5748
+ _Source: src/model/types.ts_
5728
5749
 
5729
5750
  ### FormNode
5730
5751
 
@@ -6020,7 +6041,7 @@ export interface FormValidation<T> {
6020
6041
  }
6021
6042
  ```
6022
6043
 
6023
- _Source: src/form/validation-config.ts_
6044
+ _Source: src/form/validation/config.ts_
6024
6045
 
6025
6046
  ### FormValidationBundle
6026
6047
 
@@ -6051,7 +6072,7 @@ export interface FormValidationBundle<T> {
6051
6072
  }
6052
6073
  ```
6053
6074
 
6054
- _Source: src/form/validation-config.ts_
6075
+ _Source: src/form/validation/config.ts_
6055
6076
 
6056
6077
  ### FormValue
6057
6078
 
@@ -6254,7 +6275,7 @@ if (!isDerived(model.$.total)) {
6254
6275
  **See also:**
6255
6276
  - {@link markDerived} - пометить сигнал производным
6256
6277
 
6257
- _Source: src/state/derived-registry.ts_
6278
+ _Source: src/model/derived-registry.ts_
6258
6279
 
6259
6280
  ### isFieldNode
6260
6281
 
@@ -6366,7 +6387,7 @@ export function isModelContainerSignal(value: unknown): boolean
6366
6387
  const isLeaf = (v: unknown) => isSignalLike(v) && !isModelContainerSignal(v);
6367
6388
  ```
6368
6389
 
6369
- _Source: src/state/form-model.ts_
6390
+ _Source: src/model/model-signals-proxy.ts_
6370
6391
 
6371
6392
  ### markDerived
6372
6393
 
@@ -6402,7 +6423,7 @@ markDerived(model.$.total);
6402
6423
  - {@link isDerived} - проверка пометки
6403
6424
  - {@link unmarkDerived} - снять пометку при dispose оператора
6404
6425
 
6405
- _Source: src/state/derived-registry.ts_
6426
+ _Source: src/model/derived-registry.ts_
6406
6427
 
6407
6428
  ### ModelApi
6408
6429
 
@@ -6445,7 +6466,7 @@ export interface ModelApi<T> {
6445
6466
  }
6446
6467
  ```
6447
6468
 
6448
- _Source: src/state/types.ts_
6469
+ _Source: src/model/types.ts_
6449
6470
 
6450
6471
  ### ModelArray
6451
6472
 
@@ -6491,7 +6512,7 @@ export interface ModelArray<U> {
6491
6512
  }
6492
6513
  ```
6493
6514
 
6494
- _Source: src/state/types.ts_
6515
+ _Source: src/model/types.ts_
6495
6516
 
6496
6517
  ### ModelArrayControl
6497
6518
 
@@ -6580,7 +6601,7 @@ export type ModelArraySignals<U, V> = ContainerSignal<V, 'length'> & {
6580
6601
  };
6581
6602
  ```
6582
6603
 
6583
- _Source: src/state/types.ts_
6604
+ _Source: src/model/types.ts_
6584
6605
 
6585
6606
  ### ModelGroupSignals
6586
6607
 
@@ -6597,7 +6618,7 @@ _Source: src/state/types.ts_
6597
6618
  export type ModelGroupSignals<T> = ModelSignals<T> & ContainerSignal<T, keyof T>;
6598
6619
  ```
6599
6620
 
6600
- _Source: src/state/types.ts_
6621
+ _Source: src/model/types.ts_
6601
6622
 
6602
6623
  ### ModelObject
6603
6624
 
@@ -6614,7 +6635,7 @@ export type ModelObject<T> = {
6614
6635
  };
6615
6636
  ```
6616
6637
 
6617
- _Source: src/state/types.ts_
6638
+ _Source: src/model/types.ts_
6618
6639
 
6619
6640
  ### ModelSignals
6620
6641
 
@@ -6630,7 +6651,7 @@ export type ModelSignals<T> = {
6630
6651
  };
6631
6652
  ```
6632
6653
 
6633
- _Source: src/state/types.ts_
6654
+ _Source: src/model/types.ts_
6634
6655
 
6635
6656
  ### ModelValue
6636
6657
 
@@ -6655,7 +6676,7 @@ export type ModelValue<V> =
6655
6676
  : V;
6656
6677
  ```
6657
6678
 
6658
- _Source: src/state/types.ts_
6679
+ _Source: src/model/types.ts_
6659
6680
 
6660
6681
  ### NodeFactory
6661
6682
 
@@ -6742,7 +6763,7 @@ export type PathAwareSignal<T> = Signal<T> & {
6742
6763
  };
6743
6764
  ```
6744
6765
 
6745
- _Source: src/state/types.ts_
6766
+ _Source: src/model/types.ts_
6746
6767
 
6747
6768
  ### registerSignalNode
6748
6769
 
@@ -6799,7 +6820,7 @@ export function resetWhen<T>(
6799
6820
  resetWhen(model.$.cardNumber, () => model.paymentType !== 'card', { resetValue: '' });
6800
6821
  ```
6801
6822
 
6802
- _Source: src/state/behaviors-value.ts_
6823
+ _Source: src/model/behaviors-value.ts_
6803
6824
 
6804
6825
  ### revalidateWhen
6805
6826
 
@@ -6822,7 +6843,7 @@ export function revalidateWhen(
6822
6843
  revalidateWhen([model.$.maxAmount], () => void validateModel(model, schema));
6823
6844
  ```
6824
6845
 
6825
- _Source: src/state/behaviors-value.ts_
6846
+ _Source: src/model/behaviors-value.ts_
6826
6847
 
6827
6848
  ### runOutsideEffect
6828
6849
 
@@ -6856,7 +6877,7 @@ effect(() => {
6856
6877
  });
6857
6878
  ```
6858
6879
 
6859
- _Source: src/state/safe-effect.ts_
6880
+ _Source: src/model/safe-effect.ts_
6860
6881
 
6861
6882
  ### safeCallback
6862
6883
 
@@ -6895,7 +6916,7 @@ effect(() => {
6895
6916
  });
6896
6917
  ```
6897
6918
 
6898
- _Source: src/state/safe-effect.ts_
6919
+ _Source: src/model/safe-effect.ts_
6899
6920
 
6900
6921
  ### safeDebouncedCallback
6901
6922
 
@@ -6933,7 +6954,7 @@ return effect(() => {
6933
6954
  });
6934
6955
  ```
6935
6956
 
6936
- _Source: src/state/safe-effect.ts_
6957
+ _Source: src/model/safe-effect.ts_
6937
6958
 
6938
6959
  ### SchemaArrayControl
6939
6960
 
@@ -7076,7 +7097,7 @@ class FieldNode {
7076
7097
  }
7077
7098
  ```
7078
7099
 
7079
- _Source: src/state/subscription-manager.ts_
7100
+ _Source: src/form/nodes/subscription-manager.ts_
7080
7101
 
7081
7102
  ### syncFields
7082
7103
 
@@ -7100,7 +7121,7 @@ export function syncFields<T>(
7100
7121
  syncFields(model.$.field1, model.$.field2);
7101
7122
  ```
7102
7123
 
7103
- _Source: src/state/behaviors-value.ts_
7124
+ _Source: src/model/behaviors-value.ts_
7104
7125
 
7105
7126
  ### transformValue
7106
7127
 
@@ -7123,7 +7144,7 @@ export function transformValue<T>(
7123
7144
  transformValue(model.$.promoCode, (v) => (v ?? '').toUpperCase());
7124
7145
  ```
7125
7146
 
7126
- _Source: src/state/behaviors-value.ts_
7147
+ _Source: src/model/behaviors-value.ts_
7127
7148
 
7128
7149
  ### UnknownRecord
7129
7150
 
@@ -7173,7 +7194,7 @@ onDispose(() => unmarkDerived(model.$.total)); // при снятии compute с
7173
7194
  **See also:**
7174
7195
  - {@link markDerived} - пометить сигнал производным
7175
7196
 
7176
- _Source: src/state/derived-registry.ts_
7197
+ _Source: src/model/derived-registry.ts_
7177
7198
 
7178
7199
  ### useArrayLength
7179
7200
 
@@ -7211,7 +7232,7 @@ function ArrayRenderer({ arrayNode }) {
7211
7232
  }
7212
7233
  ```
7213
7234
 
7214
- _Source: src/form/hooks/useArrayLength.ts_
7235
+ _Source: src/platforms/react/hooks/useArrayLength.ts_
7215
7236
 
7216
7237
  ### useFormBundle
7217
7238
 
@@ -7236,7 +7257,7 @@ export function useFormBundle<B extends FormBundleLike>(factory: () => B): B
7236
7257
  const credit = useFormBundle(() => createCoreForm<CreditForm>({ model: createCreditModel() }));
7237
7258
  ```
7238
7259
 
7239
- _Source: src/form/hooks/use-form-bundle.ts_
7260
+ _Source: src/platforms/react/hooks/use-form-bundle.ts_
7240
7261
 
7241
7262
  ### useFormControl
7242
7263
 
@@ -7470,7 +7491,7 @@ return <div>Items: {length}</div>;
7470
7491
  - {@link FieldControlState} - тип состояния для FieldNode
7471
7492
  - {@link ArrayControlState} - тип состояния для ArrayNode
7472
7493
 
7473
- _Source: src/form/hooks/useFormControl.ts_
7494
+ _Source: src/platforms/react/hooks/useFormControl.ts_
7474
7495
 
7475
7496
  ### useFormControlValue
7476
7497
 
@@ -7651,7 +7672,7 @@ return (
7651
7672
  - {@link useFormControl} - для полного состояния поля
7652
7673
  - {@link FieldNode} - тип контрола поля
7653
7674
 
7654
- _Source: src/form/hooks/useFormControlValue.ts_
7675
+ _Source: src/platforms/react/hooks/useFormControlValue.ts_
7655
7676
 
7656
7677
  ### useFormValidation
7657
7678
 
@@ -7686,7 +7707,7 @@ function MyForm() {
7686
7707
  }
7687
7708
  ```
7688
7709
 
7689
- _Source: src/form/hooks/use-form-validation.ts_
7710
+ _Source: src/platforms/react/hooks/use-form-validation.ts_
7690
7711
 
7691
7712
  ### UseFormValidationArgs
7692
7713
 
@@ -7708,7 +7729,7 @@ export interface UseFormValidationArgs<T> {
7708
7729
  }
7709
7730
  ```
7710
7731
 
7711
- _Source: src/form/hooks/use-form-validation.ts_
7732
+ _Source: src/platforms/react/hooks/use-form-validation.ts_
7712
7733
 
7713
7734
  ### UseFormValidationResult
7714
7735
 
@@ -7726,7 +7747,7 @@ export interface UseFormValidationResult {
7726
7747
  }
7727
7748
  ```
7728
7749
 
7729
- _Source: src/form/hooks/use-form-validation.ts_
7750
+ _Source: src/platforms/react/hooks/use-form-validation.ts_
7730
7751
 
7731
7752
  ### ValidateOptions
7732
7753
 
@@ -7829,4 +7850,4 @@ watchField(model.$.country, async (country) => {
7829
7850
  });
7830
7851
  ```
7831
7852
 
7832
- _Source: src/state/behaviors-value.ts_
7853
+ _Source: src/model/behaviors-value.ts_