palistor 0.0.24 → 0.0.26

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 (278) hide show
  1. package/README.md +574 -542
  2. package/README.ru.md +979 -0
  3. package/dist/index.d.ts +19 -28
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +21 -28
  6. package/dist/index.js.map +1 -1
  7. package/dist/react/createTrackingProxy.d.ts +27 -27
  8. package/dist/react/createTrackingProxy.d.ts.map +1 -1
  9. package/dist/react/createTrackingProxy.js +92 -42
  10. package/dist/react/createTrackingProxy.js.map +1 -1
  11. package/dist/react/useForm.d.ts +42 -43
  12. package/dist/react/useForm.d.ts.map +1 -1
  13. package/dist/react/useForm.js +38 -38
  14. package/dist/react/useForm.js.map +1 -1
  15. package/dist/react/usePersist.d.ts +14 -14
  16. package/dist/react/usePersist.js +18 -18
  17. package/dist/react/usePersist.js.map +1 -1
  18. package/dist/react/useStoreContext.d.ts +11 -11
  19. package/dist/react/useStoreContext.js +11 -11
  20. package/dist/react/useTranslator.d.ts +12 -12
  21. package/dist/react/useTranslator.js +12 -12
  22. package/dist/store/applyPatch/applyPatch.d.ts +8 -8
  23. package/dist/store/applyPatch/applyPatch.js +12 -12
  24. package/dist/store/applyPatch/applyPatch.js.map +1 -1
  25. package/dist/store/buildProxy/buildEntityProjectionProxy.js +6 -6
  26. package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -1
  27. package/dist/store/buildProxy/buildListProxy.d.ts +8 -8
  28. package/dist/store/buildProxy/buildListProxy.js +30 -30
  29. package/dist/store/buildProxy/buildListProxy.js.map +1 -1
  30. package/dist/store/buildProxy/buildProxy.d.ts +8 -8
  31. package/dist/store/buildProxy/buildProxy.d.ts.map +1 -1
  32. package/dist/store/buildProxy/buildProxy.js +84 -33
  33. package/dist/store/buildProxy/buildProxy.js.map +1 -1
  34. package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
  35. package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -1
  36. package/dist/store/buildProxy/computeProxyKeys.js +18 -13
  37. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -1
  38. package/dist/store/buildProxy/handleLazyResolve.d.ts +3 -3
  39. package/dist/store/buildProxy/handleLazyResolve.js +3 -3
  40. package/dist/store/buildProxy/initProxyCaches.d.ts +5 -5
  41. package/dist/store/buildProxy/initProxyCaches.js +5 -5
  42. package/dist/store/compute/computeFieldState.d.ts +3 -3
  43. package/dist/store/compute/computeFieldState.js +8 -8
  44. package/dist/store/compute/computeFieldState.js.map +1 -1
  45. package/dist/store/compute/fieldStateChanged.d.ts +1 -1
  46. package/dist/store/compute/fieldStateChanged.js +1 -1
  47. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +4 -4
  48. package/dist/store/compute/recompute/collectGroupComputeNodes.js +7 -7
  49. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -1
  50. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +3 -3
  51. package/dist/store/compute/recompute/recomputeAndNotify.js +3 -3
  52. package/dist/store/compute/recompute/recomputeLeaves.d.ts +11 -10
  53. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -1
  54. package/dist/store/compute/recompute/recomputeLeaves.js +26 -27
  55. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -1
  56. package/dist/store/compute/recompute/recomputeTargeted.d.ts +7 -7
  57. package/dist/store/compute/recompute/recomputeTargeted.js +12 -12
  58. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -1
  59. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +4 -4
  60. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -1
  61. package/dist/store/compute/recompute/topologicalSortComputed.js +11 -13
  62. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -1
  63. package/dist/store/compute/recompute/types.d.ts +4 -4
  64. package/dist/store/compute/resolveFlag.d.ts +2 -2
  65. package/dist/store/compute/resolveFlag.js +2 -2
  66. package/dist/store/compute/resolveString.d.ts +5 -5
  67. package/dist/store/compute/resolveString.js +6 -6
  68. package/dist/store/compute/resolveString.js.map +1 -1
  69. package/dist/store/compute/types.d.ts +3 -3
  70. package/dist/store/constants.d.ts +57 -38
  71. package/dist/store/constants.d.ts.map +1 -1
  72. package/dist/store/constants.js +70 -35
  73. package/dist/store/constants.js.map +1 -1
  74. package/dist/store/defineFieldMapping.d.ts +21 -19
  75. package/dist/store/defineFieldMapping.d.ts.map +1 -1
  76. package/dist/store/defineFieldMapping.js +21 -19
  77. package/dist/store/defineFieldMapping.js.map +1 -1
  78. package/dist/store/dirtyTracking/collectInitialSnapshot.js +1 -1
  79. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -1
  80. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +3 -3
  81. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +11 -11
  82. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -1
  83. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +6 -6
  84. package/dist/store/dirtyTracking/setGroupRevalidate.js +7 -7
  85. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -1
  86. package/dist/store/entityRegistry/entityRegistry.d.ts +72 -72
  87. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -1
  88. package/dist/store/entityRegistry/entityRegistry.js +91 -91
  89. package/dist/store/entityRegistry/entityRegistry.js.map +1 -1
  90. package/dist/store/entityRegistry/generateId.d.ts +3 -3
  91. package/dist/store/entityRegistry/generateId.js +3 -3
  92. package/dist/store/entityRegistry/types.d.ts +17 -17
  93. package/dist/store/entityRegistry/types.d.ts.map +1 -1
  94. package/dist/store/flow/buildFlowStepsProxy.d.ts +17 -0
  95. package/dist/store/flow/buildFlowStepsProxy.d.ts.map +1 -0
  96. package/dist/store/flow/buildFlowStepsProxy.js +72 -0
  97. package/dist/store/flow/buildFlowStepsProxy.js.map +1 -0
  98. package/dist/store/flow/defineFlow.d.ts +92 -0
  99. package/dist/store/flow/defineFlow.d.ts.map +1 -0
  100. package/dist/store/flow/defineFlow.js +99 -0
  101. package/dist/store/flow/defineFlow.js.map +1 -0
  102. package/dist/store/flow/flowApi.d.ts +18 -0
  103. package/dist/store/flow/flowApi.d.ts.map +1 -0
  104. package/dist/store/flow/flowApi.js +18 -0
  105. package/dist/store/flow/flowApi.js.map +1 -0
  106. package/dist/store/flow/flowNavigation.d.ts +137 -0
  107. package/dist/store/flow/flowNavigation.d.ts.map +1 -0
  108. package/dist/store/flow/flowNavigation.js +384 -0
  109. package/dist/store/flow/flowNavigation.js.map +1 -0
  110. package/dist/store/flow/flowState.d.ts +41 -0
  111. package/dist/store/flow/flowState.d.ts.map +1 -0
  112. package/dist/store/flow/flowState.js +51 -0
  113. package/dist/store/flow/flowState.js.map +1 -0
  114. package/dist/store/flow/index.d.ts +10 -0
  115. package/dist/store/flow/index.d.ts.map +1 -0
  116. package/dist/store/flow/index.js +6 -0
  117. package/dist/store/flow/index.js.map +1 -0
  118. package/dist/store/groupDeps/createGroupDeps.d.ts +3 -3
  119. package/dist/store/groupDeps/createGroupDeps.js +6 -6
  120. package/dist/store/groupDeps/createGroupDeps.js.map +1 -1
  121. package/dist/store/groupDeps/createTrackingValues.d.ts +9 -9
  122. package/dist/store/groupDeps/createTrackingValues.js +11 -11
  123. package/dist/store/groupDeps/createTrackingValues.js.map +1 -1
  124. package/dist/store/groupDeps/getNodeGroupPath.d.ts +3 -3
  125. package/dist/store/groupDeps/getNodeGroupPath.js +5 -5
  126. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -1
  127. package/dist/store/groupDeps/getRecipientGroups.d.ts +1 -1
  128. package/dist/store/groupDeps/getRecipientGroups.js +1 -1
  129. package/dist/store/groupDeps/groupDeps.d.ts +7 -7
  130. package/dist/store/groupDeps/groupDeps.js +7 -7
  131. package/dist/store/groupDeps/pairKey.d.ts +3 -3
  132. package/dist/store/groupDeps/pairKey.d.ts.map +1 -1
  133. package/dist/store/groupDeps/pairKey.js +4 -4
  134. package/dist/store/groupDeps/pairKey.js.map +1 -1
  135. package/dist/store/groupDeps/resolveGroupByPath.d.ts +3 -3
  136. package/dist/store/groupDeps/resolveGroupByPath.js +3 -3
  137. package/dist/store/init/createNotificationHub.d.ts +31 -31
  138. package/dist/store/init/createNotificationHub.d.ts.map +1 -1
  139. package/dist/store/init/createNotificationHub.js +36 -37
  140. package/dist/store/init/createNotificationHub.js.map +1 -1
  141. package/dist/store/init/createResolveManager.d.ts +72 -69
  142. package/dist/store/init/createResolveManager.d.ts.map +1 -1
  143. package/dist/store/init/createResolveManager.js +101 -98
  144. package/dist/store/init/createResolveManager.js.map +1 -1
  145. package/dist/store/init/initGroupSubmitting.d.ts +2 -2
  146. package/dist/store/init/initGroupSubmitting.js +4 -4
  147. package/dist/store/init/initGroupSubmitting.js.map +1 -1
  148. package/dist/store/normalizeConfig.d.ts +20 -18
  149. package/dist/store/normalizeConfig.d.ts.map +1 -1
  150. package/dist/store/normalizeConfig.js +31 -29
  151. package/dist/store/normalizeConfig.js.map +1 -1
  152. package/dist/store/onChangePipeline/computeFieldKey.d.ts +2 -2
  153. package/dist/store/onChangePipeline/computeFieldKey.js +2 -2
  154. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +2 -2
  155. package/dist/store/onChangePipeline/findOnChangeAncestors.js +4 -4
  156. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -1
  157. package/dist/store/onChangePipeline/onChangePipeline.d.ts +13 -12
  158. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -1
  159. package/dist/store/onChangePipeline/onChangePipeline.js +14 -13
  160. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -1
  161. package/dist/store/persist/drivers.d.ts +7 -7
  162. package/dist/store/persist/drivers.js +8 -8
  163. package/dist/store/persist/drivers.js.map +1 -1
  164. package/dist/store/persist/index.d.ts +1 -1
  165. package/dist/store/persist/persistManager.d.ts +23 -23
  166. package/dist/store/persist/persistManager.d.ts.map +1 -1
  167. package/dist/store/persist/persistManager.js +73 -42
  168. package/dist/store/persist/persistManager.js.map +1 -1
  169. package/dist/store/persist/types.d.ts +23 -23
  170. package/dist/store/persist/types.d.ts.map +1 -1
  171. package/dist/store/persist/types.js +4 -4
  172. package/dist/store/resetPipeline/buildResetPatch.d.ts +5 -5
  173. package/dist/store/resetPipeline/buildResetPatch.js +5 -5
  174. package/dist/store/resetPipeline/collectDefaults.d.ts +5 -5
  175. package/dist/store/resetPipeline/collectDefaults.js +6 -6
  176. package/dist/store/resetPipeline/collectDefaults.js.map +1 -1
  177. package/dist/store/resetPipeline/resetPipeline.d.ts +7 -7
  178. package/dist/store/resetPipeline/resetPipeline.d.ts.map +1 -1
  179. package/dist/store/resetPipeline/resetPipeline.js +17 -12
  180. package/dist/store/resetPipeline/resetPipeline.js.map +1 -1
  181. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +10 -10
  182. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -1
  183. package/dist/store/resolvePipeline/applyPendingWrites.js +35 -38
  184. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -1
  185. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +8 -7
  186. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -1
  187. package/dist/store/resolvePipeline/createContextTrackingProxy.js +6 -5
  188. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -1
  189. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +43 -43
  190. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -1
  191. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +70 -70
  192. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -1
  193. package/dist/store/resolvePipeline/executeListResolve.d.ts +14 -14
  194. package/dist/store/resolvePipeline/executeListResolve.js +27 -27
  195. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -1
  196. package/dist/store/resolvePipeline/executeResolve.d.ts +15 -15
  197. package/dist/store/resolvePipeline/executeResolve.js +46 -46
  198. package/dist/store/resolvePipeline/executeResolve.js.map +1 -1
  199. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +69 -56
  200. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
  201. package/dist/store/store/NodeRegistry/nodeRegistry.js +94 -78
  202. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -1
  203. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +5 -5
  204. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -1
  205. package/dist/store/store/NodeRegistry/nodeUtils.js +5 -5
  206. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -1
  207. package/dist/store/store/groupDepsMap.d.ts +23 -23
  208. package/dist/store/store/groupDepsMap.d.ts.map +1 -1
  209. package/dist/store/store/groupDepsMap.js +40 -34
  210. package/dist/store/store/groupDepsMap.js.map +1 -1
  211. package/dist/store/store/hasComputedProps.d.ts +2 -2
  212. package/dist/store/store/hasComputedProps.js +2 -2
  213. package/dist/store/store/nodeMap.d.ts +5 -5
  214. package/dist/store/store/nodeMap.js +7 -7
  215. package/dist/store/store/nodeMap.js.map +1 -1
  216. package/dist/store/store/palistor.d.ts +80 -80
  217. package/dist/store/store/palistor.d.ts.map +1 -1
  218. package/dist/store/store/palistor.js +151 -165
  219. package/dist/store/store/palistor.js.map +1 -1
  220. package/dist/store/store/registerNodes.d.ts +10 -10
  221. package/dist/store/store/registerNodes.d.ts.map +1 -1
  222. package/dist/store/store/registerNodes.js +33 -18
  223. package/dist/store/store/registerNodes.js.map +1 -1
  224. package/dist/store/store/serviceRegistry.d.ts +8 -8
  225. package/dist/store/store/serviceRegistry.d.ts.map +1 -1
  226. package/dist/store/store/serviceRegistry.js +8 -8
  227. package/dist/store/store/serviceRegistry.js.map +1 -1
  228. package/dist/store/store/types.d.ts +277 -223
  229. package/dist/store/store/types.d.ts.map +1 -1
  230. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +2 -2
  231. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +2 -2
  232. package/dist/store/submitPipeline/collectLeafStates.d.ts +2 -2
  233. package/dist/store/submitPipeline/collectLeafStates.js +2 -2
  234. package/dist/store/submitPipeline/submitPipeline.d.ts +8 -8
  235. package/dist/store/submitPipeline/submitPipeline.d.ts.map +1 -1
  236. package/dist/store/submitPipeline/submitPipeline.js +15 -11
  237. package/dist/store/submitPipeline/submitPipeline.js.map +1 -1
  238. package/dist/store/submitPipeline/types.d.ts +1 -1
  239. package/dist/store/submitPipeline/types.d.ts.map +1 -1
  240. package/dist/store/traversal/nodeClassifier.d.ts +9 -9
  241. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -1
  242. package/dist/store/traversal/nodeClassifier.js +11 -11
  243. package/dist/store/traversal/nodeClassifier.js.map +1 -1
  244. package/dist/store/traversal/walkFull.d.ts +14 -14
  245. package/dist/store/traversal/walkFull.js +2 -2
  246. package/dist/store/valuesCache/valuesCache.d.ts +9 -9
  247. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -1
  248. package/dist/store/valuesCache/valuesCache.js +6 -6
  249. package/dist/store/writePipeline/formatPatch.d.ts +5 -5
  250. package/dist/store/writePipeline/formatPatch.js +7 -7
  251. package/dist/store/writePipeline/formatPatch.js.map +1 -1
  252. package/dist/store/writePipeline/formatValue.d.ts +5 -5
  253. package/dist/store/writePipeline/formatValue.js +5 -5
  254. package/dist/store/writePipeline/mergeChanged.d.ts +4 -4
  255. package/dist/store/writePipeline/mergeChanged.js +4 -4
  256. package/dist/store/writePipeline/runSetter.d.ts +6 -6
  257. package/dist/store/writePipeline/runSetter.js +8 -8
  258. package/dist/store/writePipeline/storeValue.d.ts +3 -3
  259. package/dist/store/writePipeline/storeValue.js +3 -3
  260. package/dist/store/writePipeline/types.d.ts +4 -4
  261. package/dist/store/writePipeline/types.d.ts.map +1 -1
  262. package/dist/store/writePipeline/writePipeline.d.ts +7 -7
  263. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -1
  264. package/dist/store/writePipeline/writePipeline.js +15 -15
  265. package/dist/store/writePipeline/writePipeline.js.map +1 -1
  266. package/package.json +11 -4
  267. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +0 -11
  268. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +0 -1
  269. package/dist/store/compute/recompute/collectGroupLeafNodes.js +0 -26
  270. package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +0 -1
  271. package/dist/store/fieldMapping.typecheck.d.ts +0 -2
  272. package/dist/store/fieldMapping.typecheck.d.ts.map +0 -1
  273. package/dist/store/fieldMapping.typecheck.js +0 -71
  274. package/dist/store/fieldMapping.typecheck.js.map +0 -1
  275. package/dist/store/submitPipeline/getSubValues.d.ts +0 -9
  276. package/dist/store/submitPipeline/getSubValues.d.ts.map +0 -1
  277. package/dist/store/submitPipeline/getSubValues.js +0 -26
  278. package/dist/store/submitPipeline/getSubValues.js.map +0 -1
@@ -1,20 +1,28 @@
1
1
  /**
2
- * PersistManager — управляет гидратацией и автосохранением состояния формы.
2
+ * PersistManager — manages hydration and auto-saving of form state.
3
3
  *
4
- * Инстанцируется внутри Palistor.
5
- * Не зависит от React — может быть подключён из любого окружения.
4
+ * Instantiated inside Palistor.
5
+ * React-independentcan be wired up from any environment.
6
6
  *
7
- * Жизненный цикл:
8
- * 1. Создаётся при new Palistor(...) (неактивен).
9
- * 2. Активируется через enable(options) — гидратация + auto-save.
10
- * 3. Деактивируется через disable() — отписка от store, отмена таймеров.
7
+ * Lifecycle:
8
+ * 1. Created by new Palistor(...) (inactive).
9
+ * 2. Activated via enable(options) — hydration + auto-save.
10
+ * 3. Deactivated via disable() — unsubscribes from the store, cancels timers.
11
11
  */
12
12
  import { applyPatch } from "../applyPatch/applyPatch";
13
13
  import { recomputeAndNotify } from "../compute/recompute";
14
- // ─── Фильтрация полей ────────────────────────────────────────────────────────
14
+ import { restoreFlowNav, runFlowEntryLifecycle, serializeFlowNav, } from "../flow/flowNavigation";
15
15
  /**
16
- * Отфильтровать значения по pick/omit.
17
- * pick имеет приоритет. Если ни pick, ни omit не заданы — возвращает всё.
16
+ * Reserved persist-snapshot key for flow navigation (defineFlow):
17
+ * `{ [flowPath]: { currentStepKey, visitStack, visitedKeys } }`.
18
+ * Step field values are stored as regular values; step statuses are not
19
+ * saved — derived from navigation on hydrate.
20
+ */
21
+ const FLOWS_PERSIST_KEY = "__flows";
22
+ // ─── Field filtering ─────────────────────────────────────────────────────────
23
+ /**
24
+ * Filter values by pick/omit.
25
+ * pick takes priority. When neither is set — everything is returned.
18
26
  */
19
27
  function filterValues(values, pick, omit) {
20
28
  if (pick && pick.length > 0) {
@@ -36,29 +44,29 @@ function filterValues(values, pick, omit) {
36
44
  }
37
45
  return values;
38
46
  }
39
- // ─── Класс ───────────────────────────────────────────────────────────────────
47
+ // ─── Class ───────────────────────────────────────────────────────────────────
40
48
  /**
41
- * Менеджер персистенции формы.
49
+ * The form's persistence manager.
42
50
  *
43
- * Получает доступ ко всем данным формы через `kernel` (Palistor instance).
51
+ * Accesses all form data through the `kernel` (Palistor instance).
44
52
  */
45
53
  export class PersistManager {
46
54
  constructor(kernel) {
47
- // ─── Внутреннее состояние ─────────────────────────────────────────────────
55
+ // ─── Internal state ───────────────────────────────────────────────────────
48
56
  this.active = false;
49
57
  this.currentKey = null;
50
58
  this.currentDriver = null;
51
59
  this.serialize = JSON.stringify;
52
60
  this.deserialize = JSON.parse;
53
61
  this.debounceMs = 100;
54
- /** Отписка от subscribeGlobal. */
62
+ /** Unsubscribe from subscribeGlobal. */
55
63
  this.unsubscribe = null;
56
- /** ID таймера debounce. */
64
+ /** Debounce timer ID. */
57
65
  this.debounceTimer = null;
58
- /** Флаг, предотвращающий сохранение во время гидратации. */
66
+ /** Flag preventing saves during hydration. */
59
67
  this.isHydrating = false;
60
68
  /**
61
- * Запланировать сохранение с debounce.
69
+ * Schedule a debounced save.
62
70
  */
63
71
  this.scheduleSave = () => {
64
72
  if (!this.active || this.isHydrating)
@@ -75,7 +83,7 @@ export class PersistManager {
75
83
  };
76
84
  this.kernel = kernel;
77
85
  }
78
- // ─── Вспомогательные ──────────────────────────────────────────────────────
86
+ // ─── Helpers ──────────────────────────────────────────────────────────────
79
87
  cancelDebounce() {
80
88
  if (this.debounceTimer !== null) {
81
89
  clearTimeout(this.debounceTimer);
@@ -83,23 +91,27 @@ export class PersistManager {
83
91
  }
84
92
  }
85
93
  /**
86
- * Сохранить текущие значения в storage (без debounce).
94
+ * Save the current values to storage (no debounce).
87
95
  */
88
96
  async saveToStorage() {
89
97
  if (!this.active || !this.currentKey || !this.currentDriver)
90
98
  return;
91
99
  const allValues = this.kernel.getValues();
92
100
  const filtered = filterValues(allValues, this.pickFields, this.omitFields);
101
+ // Flow: navigation is stored under a separate reserved key, not subject
102
+ // to pick/omit (it is not a form field).
103
+ const flowNav = serializeFlowNav(this.kernel);
104
+ const payload = flowNav ? { ...filtered, [FLOWS_PERSIST_KEY]: flowNav } : filtered;
93
105
  try {
94
- const serialized = this.serialize(filtered);
106
+ const serialized = this.serialize(payload);
95
107
  await Promise.resolve(this.currentDriver.setItem(this.currentKey, serialized));
96
108
  }
97
109
  catch {
98
- // Ошибки сериализации/записи молчим (production-safe)
110
+ // Serialization/write errors are silenced (production-safe)
99
111
  }
100
112
  }
101
113
  /**
102
- * Прочитать из storage и применить значения к nodeState.
114
+ * Read from storage and apply the values to nodeState.
103
115
  */
104
116
  async hydrateFromStorage() {
105
117
  if (!this.currentKey || !this.currentDriver)
@@ -116,36 +128,55 @@ export class PersistManager {
116
128
  this.isHydrating = false;
117
129
  return;
118
130
  }
119
- // Применяем как патч applyPatch рекурсивно обходит дерево конфига
120
- // (скалярные/групповые поля; list-узлы он пропускает).
131
+ // Flow: extract the navigation snapshot before applying the values patch.
132
+ const flowSnapshots = values[FLOWS_PERSIST_KEY];
133
+ if (flowSnapshots !== undefined) {
134
+ delete values[FLOWS_PERSIST_KEY];
135
+ }
136
+ // Apply as a patch — applyPatch walks the config tree recursively
137
+ // (scalar/group fields; list nodes are skipped).
121
138
  const patchedNodes = applyPatch(this.kernel.rootConfig, this.kernel.nodes.nodeState, values, new Set());
122
- // C3: восстанавливаем состав корневых и per-entity списков из снимка.
123
- // Для конфигов без списков no-op (graceful для старых снимков).
139
+ // Restore root and per-entity list membership from the snapshot.
140
+ // No-op for configs without lists (graceful for older snapshots).
124
141
  const listChanged = this.kernel.restoreLists(values);
125
142
  for (const n of listChanged)
126
143
  patchedNodes.add(n);
127
- // Пересчитываем, объединяем и уведомляем подписчиков
144
+ // Flow: restore navigation (active step, stack, visited).
145
+ // Step statuses are recomputed from the navigation state.
146
+ let enteredFlows = [];
147
+ if (flowSnapshots && typeof flowSnapshots === "object") {
148
+ const { changed: flowChanged, entered } = restoreFlowNav(this.kernel, flowSnapshots);
149
+ for (const n of flowChanged)
150
+ patchedNodes.add(n);
151
+ enteredFlows = entered;
152
+ }
153
+ // Recompute, merge, and notify subscribers
128
154
  recomputeAndNotify(patchedNodes, () => this.kernel.recompute(), (c) => this.kernel.notifyChanged(c));
155
+ // Flow: when the active step changed during hydration — the restored
156
+ // step is "entered" anew: onEnter → resolve → onReady.
157
+ for (const flowState of enteredFlows) {
158
+ runFlowEntryLifecycle(this.kernel, flowState);
159
+ }
129
160
  }
130
161
  catch {
131
- // Ошибки десериализации молчим
162
+ // Deserialization errors are silenced
132
163
  }
133
164
  finally {
134
165
  this.isHydrating = false;
135
166
  }
136
167
  }
137
- // ─── Публичный API ─────────────────────────────────────────────────────────
168
+ // ─── Public API ────────────────────────────────────────────────────────────
138
169
  /**
139
- * Активировать персистенцию: гидратация из storage + auto-save при изменениях.
170
+ * Activate persistence: hydrate from storage + auto-save on changes.
140
171
  *
141
- * Если persist уже активен предыдущий отключается.
142
- * Возвращает Promise, который резолвится после успешной гидратации.
172
+ * When persist is already active, the previous one is disabled first.
173
+ * Returns a Promise that resolves after successful hydration.
143
174
  */
144
175
  enable(options) {
145
- // Если уже активен отключаем предыдущий
176
+ // Already activedisable the previous one
146
177
  if (this.active)
147
178
  this.disable();
148
- // Сохраняем настройки
179
+ // Store the settings
149
180
  this.currentKey = options.key;
150
181
  this.currentDriver = options.driver;
151
182
  this.serialize = options.serialize ?? JSON.stringify;
@@ -154,12 +185,12 @@ export class PersistManager {
154
185
  this.pickFields = options.pick;
155
186
  this.omitFields = options.omit;
156
187
  this.active = true;
157
- // Подписка на изменения для auto-save
188
+ // Subscribe to changes for auto-save
158
189
  this.unsubscribe = this.kernel.hub.subscribeGlobal(this.scheduleSave);
159
- // Гидратация
190
+ // Hydrate
160
191
  return this.hydrateFromStorage();
161
192
  }
162
- /** Деактивировать: отписка от store, отмена таймеров, очистка состояния. */
193
+ /** Deactivate: unsubscribe from the store, cancel timers, clear state. */
163
194
  disable() {
164
195
  this.active = false;
165
196
  this.cancelDebounce();
@@ -170,16 +201,16 @@ export class PersistManager {
170
201
  this.currentKey = null;
171
202
  this.currentDriver = null;
172
203
  }
173
- /** Принудительно сохранить текущие значения в storage (без debounce). */
204
+ /** Force-save the current values to storage (no debounce). */
174
205
  async flush() {
175
206
  this.cancelDebounce();
176
207
  await this.saveToStorage();
177
208
  }
178
- /** Принудительно гидратировать из storage. */
209
+ /** Force-hydrate from storage. */
179
210
  async hydrate() {
180
211
  await this.hydrateFromStorage();
181
212
  }
182
- /** Удалить данные из storage по текущему ключу. */
213
+ /** Remove the data from storage under the current key. */
183
214
  async clear() {
184
215
  if (!this.currentKey || !this.currentDriver)
185
216
  return;
@@ -190,7 +221,7 @@ export class PersistManager {
190
221
  // noop
191
222
  }
192
223
  }
193
- /** Активна ли персистенция в данный момент. */
224
+ /** Whether persistence is currently active. */
194
225
  isEnabled() {
195
226
  return this.active;
196
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistManager.js","sourceRoot":"","sources":["../../../store/persist/persistManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistManager.js","sourceRoot":"","sources":["../../../store/persist/persistManager.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  /**
2
- * Persist — абстрактный интерфейс драйвера хранения и опции персистенции.
2
+ * Persist — the abstract storage driver interface and persistence options.
3
3
  *
4
- * Драйвер может быть синхронным (localStorage) или асинхронным (IndexedDB).
5
- * Все методы возвращают `T | Promise<T>` — persist-менеджер обрабатывает оба
6
- * варианта единообразно через `Promise.resolve()`.
4
+ * A driver can be synchronous (localStorage) or asynchronous (IndexedDB).
5
+ * All methods return `T | Promise<T>` — the persist manager handles both
6
+ * uniformly via `Promise.resolve()`.
7
7
  */
8
8
  /**
9
- * Интерфейс драйвера хранения.
9
+ * Storage driver interface.
10
10
  *
11
- * Реализуйте этот интерфейс для любого бэкенда:
12
- * localStorage, sessionStorage, IndexedDB, AsyncStorage, файловая система и т.д.
11
+ * Implement this interface for any backend:
12
+ * localStorage, sessionStorage, IndexedDB, AsyncStorage, the file system, etc.
13
13
  *
14
14
  * @example
15
15
  * ```ts
@@ -21,45 +21,45 @@
21
21
  * ```
22
22
  */
23
23
  export interface PersistDriver {
24
- /** Прочитать значение по ключу. `null` если не найдено. */
24
+ /** Read a value by key. `null` when not found. */
25
25
  getItem(key: string): string | null | Promise<string | null>;
26
- /** Записать значение по ключу. */
26
+ /** Write a value by key. */
27
27
  setItem(key: string, value: string): void | Promise<void>;
28
- /** Удалить значение по ключу. */
28
+ /** Remove a value by key. */
29
29
  removeItem(key: string): void | Promise<void>;
30
30
  }
31
31
  /**
32
- * Опции персистенции для ProxyStore.
32
+ * Persistence options for the ProxyStore.
33
33
  *
34
- * @template TValues — тип значений формы
34
+ * @template TValues — the form values type
35
35
  */
36
36
  export interface PersistOptions<TValues = Record<string, unknown>> {
37
- /** Уникальный ключ хранения. */
37
+ /** Unique storage key. */
38
38
  key: string;
39
- /** Драйвер хранения (localStorage, IndexedDB, …). */
39
+ /** Storage driver (localStorage, IndexedDB, …). */
40
40
  driver: PersistDriver;
41
41
  /**
42
- * Кастомный сериализатор (по умолчанию `JSON.stringify`).
43
- * Полезно для binary-форматов, шифрования и т.д.
42
+ * Custom serializer (defaults to `JSON.stringify`).
43
+ * Useful for binary formats, encryption, etc.
44
44
  */
45
45
  serialize?: (values: Partial<TValues>) => string;
46
46
  /**
47
- * Кастомный десериализатор (по умолчанию `JSON.parse`).
47
+ * Custom deserializer (defaults to `JSON.parse`).
48
48
  */
49
49
  deserialize?: (raw: string) => Partial<TValues>;
50
50
  /**
51
- * Задержка записи в ms (debounce). По умолчанию 100 ms.
52
- * Установите 0 для мгновенной записи.
51
+ * Write delay in ms (debounce). Default 100 ms.
52
+ * Set 0 for immediate writes.
53
53
  */
54
54
  debounce?: number;
55
55
  /**
56
- * Персистить только указанные поля верхнего уровня.
57
- * Если задано `omit` игнорируется.
56
+ * Persist only the listed top-level fields.
57
+ * When set, `omit` is ignored.
58
58
  */
59
59
  pick?: (keyof TValues & string)[];
60
60
  /**
61
- * Исключить указанные поля верхнего уровня из персистенции.
62
- * Игнорируется если задано `pick`.
61
+ * Exclude the listed top-level fields from persistence.
62
+ * Ignored when `pick` is set.
63
63
  */
64
64
  omit?: (keyof TValues & string)[];
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../store/persist/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7D,kCAAkC;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,iCAAiC;IACjC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAID;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IAEZ,qDAAqD;IACrD,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../store/persist/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,6BAA6B;IAC7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAID;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IAEZ,mDAAmD;IACnD,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;CACnC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Persist — абстрактный интерфейс драйвера хранения и опции персистенции.
2
+ * Persist — the abstract storage driver interface and persistence options.
3
3
  *
4
- * Драйвер может быть синхронным (localStorage) или асинхронным (IndexedDB).
5
- * Все методы возвращают `T | Promise<T>` — persist-менеджер обрабатывает оба
6
- * варианта единообразно через `Promise.resolve()`.
4
+ * A driver can be synchronous (localStorage) or asynchronous (IndexedDB).
5
+ * All methods return `T | Promise<T>` — the persist manager handles both
6
+ * uniformly via `Promise.resolve()`.
7
7
  */
8
8
  export {};
9
9
  //# sourceMappingURL=types.js.map
@@ -1,11 +1,11 @@
1
1
  import type { AnyConfigNode } from "../store/types";
2
2
  /**
3
- * Строит патч для сброса группы.
3
+ * Builds the patch for a group reset.
4
4
  *
5
- * Приоритет:
6
- * 1. Если переданы явные `values` → используются как патч напрямую.
7
- * 2. Иначе берётся initial snapshot (или defaults из конфига как fallback),
8
- * после чего применяется reset-трансформер группы (если задан).
5
+ * Priority:
6
+ * 1. Explicit `values` → used as the patch directly.
7
+ * 2. Otherwise the initial snapshot (or config defaults as a fallback),
8
+ * then the group's reset transformer (if any) is applied.
9
9
  */
10
10
  export declare function buildResetPatch(groupNode: AnyConfigNode, initialValueMap: WeakMap<object, unknown> | undefined, values: Record<string, unknown> | undefined): Record<string, unknown>;
11
11
  //# sourceMappingURL=buildResetPatch.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import { collectDefaults } from "./collectDefaults";
2
2
  import { collectInitialSnapshot } from "../dirtyTracking";
3
3
  /**
4
- * Строит патч для сброса группы.
4
+ * Builds the patch for a group reset.
5
5
  *
6
- * Приоритет:
7
- * 1. Если переданы явные `values` → используются как патч напрямую.
8
- * 2. Иначе берётся initial snapshot (или defaults из конфига как fallback),
9
- * после чего применяется reset-трансформер группы (если задан).
6
+ * Priority:
7
+ * 1. Explicit `values` → used as the patch directly.
8
+ * 2. Otherwise the initial snapshot (or config defaults as a fallback),
9
+ * then the group's reset transformer (if any) is applied.
10
10
  */
11
11
  export function buildResetPatch(groupNode, initialValueMap, values) {
12
12
  if (values !== undefined)
@@ -1,12 +1,12 @@
1
1
  import type { AnyConfigNode } from "../store/types";
2
2
  /**
3
- * Рекурсивно собирает значения по умолчанию из конфига.
3
+ * Recursively collects default values from the config.
4
4
  *
5
- * Для листовых узлов:
6
- * - статическое значениеберётся как есть
7
- * - функция (computed) → "" как fallback
5
+ * For leaf nodes:
6
+ * - static valuetaken as-is
7
+ * - function (computed) → "" as a fallback
8
8
  *
9
- * Останавливается на вложенных группах с собственным `reset` (reset boundary).
9
+ * Stops at nested groups with their own `reset` (reset boundary).
10
10
  */
11
11
  export declare function collectDefaults(node: AnyConfigNode): Record<string, unknown>;
12
12
  //# sourceMappingURL=collectDefaults.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import { configKeys, isLeafNode, isListNode } from "../traversal";
2
2
  /**
3
- * Рекурсивно собирает значения по умолчанию из конфига.
3
+ * Recursively collects default values from the config.
4
4
  *
5
- * Для листовых узлов:
6
- * - статическое значениеберётся как есть
7
- * - функция (computed) → "" как fallback
5
+ * For leaf nodes:
6
+ * - static valuetaken as-is
7
+ * - function (computed) → "" as a fallback
8
8
  *
9
- * Останавливается на вложенных группах с собственным `reset` (reset boundary).
9
+ * Stops at nested groups with their own `reset` (reset boundary).
10
10
  */
11
11
  export function collectDefaults(node) {
12
12
  const result = {};
@@ -15,7 +15,7 @@ export function collectDefaults(node) {
15
15
  if (!child || typeof child !== "object")
16
16
  continue;
17
17
  if (isListNode(child))
18
- continue; // ListNode — пропускаем, обрабатывается в фазе 2
18
+ continue; // ListNode — skipped, restored separately
19
19
  if (isLeafNode(child)) {
20
20
  const raw = child.value;
21
21
  result[key] = typeof raw === "function" ? "" : raw;
@@ -1 +1 @@
1
- {"version":3,"file":"collectDefaults.js","sourceRoot":"","sources":["../../../store/resetPipeline/collectDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGlE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAA+B,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAkB,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,iDAAiD;QAElF,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"collectDefaults.js","sourceRoot":"","sources":["../../../store/resetPipeline/collectDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGlE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAA+B,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAkB,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,0CAA0C;QAE3E,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import type { AnyConfigNode } from "../store/types";
2
2
  import type { Palistor } from "../store/palistor";
3
3
  /**
4
- * ResetPipeline — сброс значений группового узла.
4
+ * ResetPipeline — resets a group node's values.
5
5
  *
6
- * - Если `values` передан явноприменяется как патч (новая baseline → dirty = false).
7
- * - Иначе восстанавливается initial snapshot (или config defaults как fallback),
8
- * с опциональной трансформацией через reset-функцию группы.
6
+ * - When `values` is passed explicitly applied as a patch (new baseline → dirty = false).
7
+ * - Otherwise the initial snapshot is restored (or config defaults as a
8
+ * fallback), optionally transformed by the group's reset function.
9
9
  *
10
- * После сброса:
11
- * - revalidate = false (очистка режима валидации)
12
- * - полный пересчёт вычисляемых свойств + уведомление подписчиков
10
+ * After the reset:
11
+ * - revalidate = false (validation mode cleared)
12
+ * - full recompute of computed props + subscriber notification
13
13
  */
14
14
  export declare class ResetPipeline {
15
15
  private readonly kernel;
@@ -1 +1 @@
1
- {"version":3,"file":"resetPipeline.d.ts","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAEvD,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAsC1E"}
1
+ {"version":3,"file":"resetPipeline.d.ts","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAEvD,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CA2C1E"}
@@ -2,16 +2,17 @@ import { applyPatch } from "../applyPatch/applyPatch";
2
2
  import { setGroupRevalidate, captureInitialValues } from "../dirtyTracking";
3
3
  import { recomputeAndNotify } from "../compute/recompute";
4
4
  import { buildResetPatch } from "./buildResetPatch";
5
+ import { resetFlowNavForSubtree } from "../flow/flowNavigation";
5
6
  /**
6
- * ResetPipeline — сброс значений группового узла.
7
+ * ResetPipeline — resets a group node's values.
7
8
  *
8
- * - Если `values` передан явноприменяется как патч (новая baseline → dirty = false).
9
- * - Иначе восстанавливается initial snapshot (или config defaults как fallback),
10
- * с опциональной трансформацией через reset-функцию группы.
9
+ * - When `values` is passed explicitly applied as a patch (new baseline → dirty = false).
10
+ * - Otherwise the initial snapshot is restored (or config defaults as a
11
+ * fallback), optionally transformed by the group's reset function.
11
12
  *
12
- * После сброса:
13
- * - revalidate = false (очистка режима валидации)
14
- * - полный пересчёт вычисляемых свойств + уведомление подписчиков
13
+ * After the reset:
14
+ * - revalidate = false (validation mode cleared)
15
+ * - full recompute of computed props + subscriber notification
15
16
  */
16
17
  export class ResetPipeline {
17
18
  constructor(kernel) {
@@ -21,16 +22,16 @@ export class ResetPipeline {
21
22
  const nodeState = this.kernel.nodes.nodeState;
22
23
  const initialValueMap = this.kernel.dirty.initialValueMap;
23
24
  const valuesCache = this.kernel.values;
24
- // При полном сбросе формы очищаем состояния резолва entity-полей,
25
- // чтобы они заново выполнились при загрузке сущностей через list resolver.
25
+ // On a full form reset, clear entity-field resolve states so they run
26
+ // again when entities are loaded through the list resolver.
26
27
  if (groupNode === this.kernel.rootConfig) {
27
28
  this.kernel.resolveManager.entityStates.clearAll();
28
29
  }
29
30
  const patch = buildResetPatch(groupNode, initialValueMap, values);
30
31
  const changed = applyPatch(groupNode, nodeState, patch, new Set(), valuesCache);
31
- // C2: при полном сбросе восстанавливаем состав per-entity списков к initial
32
- // и бампаем версии их EntityListState-узлов → React перерисует списки.
33
- // C3: пересинхронизируем projectionObj владельца getValues() вернёт initial.
32
+ // On a full reset, restore per-entity list membership to initial and bump
33
+ // their EntityListState versions → React redraws the lists. The owner's
34
+ // projectionObj is re-synced so getValues() returns the initial state.
34
35
  if (groupNode === this.kernel.rootConfig) {
35
36
  for (const { state } of this.kernel.entityRegistry.resetEntityListStates()) {
36
37
  this.kernel.syncListValuesCache(state);
@@ -44,6 +45,10 @@ export class ResetPipeline {
44
45
  for (const n of revalidateChanged)
45
46
  changed.add(n);
46
47
  recomputeAndNotify(changed, () => this.kernel.recompute(), (c) => this.kernel.notifyChanged(c));
48
+ // Flow: reset flow navigation inside the reset subtree — the first step is
49
+ // active again, step resolve states go idle, and the first step's entry
50
+ // lifecycle runs anew.
51
+ resetFlowNavForSubtree(this.kernel, groupNode);
47
52
  }
48
53
  }
49
54
  //# sourceMappingURL=resetPipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resetPipeline.js","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IACxB,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,OAAO,CAAC,SAAwB,EAAE,MAAgC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,kEAAkE;QAClE,2EAA2E;QAC3E,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhF,4EAA4E;QAC5E,uEAAuE;QACvE,+EAA+E;QAC/E,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBAC3E,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAA0B,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,EAAE,CAAC;YAC5C,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,iBAAiB;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAElD,kBAAkB,CAChB,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACpC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"resetPipeline.js","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IACxB,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,OAAO,CAAC,SAAwB,EAAE,MAAgC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,sEAAsE;QACtE,4DAA4D;QAC5D,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhF,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBAC3E,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAA0B,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,EAAE,CAAC;YAC5C,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,iBAAiB;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAElD,kBAAkB,CAChB,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACpC,CAAC;QAEF,2EAA2E;QAC3E,wEAAwE;QACxE,uBAAuB;QACvB,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -3,24 +3,24 @@ import { type PendingWrite } from "./createValuesTrackingProxy";
3
3
  import type { FieldState } from "../compute/index";
4
4
  import type { ValuesCache } from "../valuesCache/valuesCache";
5
5
  /**
6
- * Сбрасывает все буферизированные записи из одного запуска резолвера в реальное хранилище.
6
+ * Flushes all writes buffered during one resolver run into the real store.
7
7
  *
8
- * Преобразует каждый плоский путь (через точку) обратно во вложенную структуру патча,
9
- * которую понимает applyPatch(), затем применяет его.
8
+ * Converts each flat (dot-separated) path back into the nested patch
9
+ * structure applyPatch() understands, then applies it.
10
10
  *
11
- * Пример:
11
+ * Example:
12
12
  * PendingWrite { path: "user.vehicleExists", value: false }
13
13
  * → patch = { user: { vehicleExists: false } }
14
14
  * → applyPatch(rootConfig, nodeState, patch, changed, valuesCache)
15
15
  *
16
- * Несколько уровней вложенности работают аналогично:
16
+ * Deeper nesting works the same way:
17
17
  * path: "a.b.c" → patch = { a: { b: { c: value } } }
18
18
  *
19
- * @param writes — записи, буферизированные createValuesTrackingProxy во время выполнения резолвера
20
- * @param rootConfig — корень дерева конфига полей (используется applyPatch для поиска узлов)
21
- * @param nodeState — состояние узлов в рантайме (флаги dirty, ошибки и т.д.)
22
- * @param valuesCache — изменяемый кэш значений, который applyPatch обновляет на месте
23
- * @returns — множество узлов конфига, значение которых реально изменилось (для отслеживания зависимостей)
19
+ * @param writes — writes buffered by createValuesTrackingProxy during the resolver run
20
+ * @param rootConfig — root of the field config tree (used by applyPatch to find nodes)
21
+ * @param nodeState — runtime node state (dirty flags, errors, etc.)
22
+ * @param valuesCache — mutable values cache that applyPatch updates in place
23
+ * @returns — set of config nodes whose value actually changed (for dependency tracking)
24
24
  */
25
25
  export declare function applyPendingWrites(writes: PendingWrite[], rootConfig: AnyConfigNode, nodeState: WeakMap<object, FieldState>, valuesCache: ValuesCache): Set<object>;
26
26
  //# sourceMappingURL=applyPendingWrites.d.ts.map