@multiplatform.one/frappe-ui 7.28.1 → 7.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/dist/cjs/FrappeCalendar.cjs +3 -2
  2. package/dist/cjs/FrappeCalendar.native.js +3 -2
  3. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  4. package/dist/cjs/FrappeForm.cjs +148 -464
  5. package/dist/cjs/FrappeForm.native.js +152 -633
  6. package/dist/cjs/FrappeForm.native.js.map +1 -1
  7. package/dist/cjs/FrappeListView.cjs +5 -27
  8. package/dist/cjs/FrappeListView.native.js +11 -32
  9. package/dist/cjs/FrappeListView.native.js.map +1 -1
  10. package/dist/cjs/FrappeReportBuilder.cjs +523 -309
  11. package/dist/cjs/FrappeReportBuilder.native.js +658 -353
  12. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  13. package/dist/cjs/FrappeReportView.cjs +35 -234
  14. package/dist/cjs/FrappeReportView.native.js +39 -283
  15. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  16. package/dist/cjs/dependsOn.cjs +2 -2
  17. package/dist/cjs/dependsOn.native.js +1 -2
  18. package/dist/cjs/dependsOn.native.js.map +1 -1
  19. package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +2 -2
  20. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +2 -2
  21. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  22. package/dist/cjs/formEngine/docPermissions.cjs +20 -0
  23. package/dist/cjs/formEngine/docPermissions.native.js +69 -0
  24. package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
  25. package/dist/cjs/formEngine/index.cjs +2 -0
  26. package/dist/cjs/formEngine/index.native.js +2 -0
  27. package/dist/cjs/formEngine/index.native.js.map +1 -1
  28. package/dist/cjs/index.cjs +67 -7
  29. package/dist/cjs/index.native.js +67 -7
  30. package/dist/cjs/index.native.js.map +1 -1
  31. package/dist/cjs/liveErrors.cjs +8 -2
  32. package/dist/cjs/liveErrors.native.js +8 -2
  33. package/dist/cjs/liveErrors.native.js.map +1 -1
  34. package/dist/cjs/measures.cjs +31 -0
  35. package/dist/cjs/measures.native.js +34 -0
  36. package/dist/cjs/measures.native.js.map +1 -0
  37. package/dist/cjs/recordShape.cjs +103 -0
  38. package/dist/cjs/recordShape.native.js +115 -0
  39. package/dist/cjs/recordShape.native.js.map +1 -0
  40. package/dist/cjs/report/ReportGrid.cjs +453 -0
  41. package/dist/cjs/report/ReportGrid.native.js +510 -0
  42. package/dist/cjs/report/ReportGrid.native.js.map +1 -0
  43. package/dist/cjs/report/ReportViewToolbar.cjs +253 -0
  44. package/dist/cjs/report/ReportViewToolbar.native.js +303 -0
  45. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -0
  46. package/dist/cjs/report/queryReport.cjs +444 -0
  47. package/dist/cjs/report/queryReport.native.js +588 -0
  48. package/dist/cjs/report/queryReport.native.js.map +1 -0
  49. package/dist/cjs/report/queryReportColumns.cjs +131 -0
  50. package/dist/cjs/report/queryReportColumns.native.js +159 -0
  51. package/dist/cjs/report/queryReportColumns.native.js.map +1 -0
  52. package/dist/cjs/report/reportViewModel.cjs +386 -0
  53. package/dist/cjs/report/reportViewModel.native.js +657 -0
  54. package/dist/cjs/report/reportViewModel.native.js.map +1 -0
  55. package/dist/cjs/report/savedReports.cjs +137 -0
  56. package/dist/cjs/report/savedReports.native.js +169 -0
  57. package/dist/cjs/report/savedReports.native.js.map +1 -0
  58. package/dist/cjs/report/useFrappeReport.cjs +184 -0
  59. package/dist/cjs/report/useFrappeReport.native.js +214 -0
  60. package/dist/cjs/report/useFrappeReport.native.js.map +1 -0
  61. package/dist/cjs/report/useQueryReport.cjs +201 -0
  62. package/dist/cjs/report/useQueryReport.native.js +233 -0
  63. package/dist/cjs/report/useQueryReport.native.js.map +1 -0
  64. package/dist/cjs/useFrappeForm.cjs +558 -0
  65. package/dist/cjs/useFrappeForm.native.js +714 -0
  66. package/dist/cjs/useFrappeForm.native.js.map +1 -0
  67. package/dist/esm/FrappeCalendar.mjs +4 -3
  68. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  69. package/dist/esm/FrappeCalendar.native.js +4 -3
  70. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  71. package/dist/esm/FrappeForm.mjs +151 -467
  72. package/dist/esm/FrappeForm.mjs.map +1 -1
  73. package/dist/esm/FrappeForm.native.js +155 -636
  74. package/dist/esm/FrappeForm.native.js.map +1 -1
  75. package/dist/esm/FrappeListView.mjs +6 -28
  76. package/dist/esm/FrappeListView.mjs.map +1 -1
  77. package/dist/esm/FrappeListView.native.js +12 -33
  78. package/dist/esm/FrappeListView.native.js.map +1 -1
  79. package/dist/esm/FrappeReportBuilder.mjs +526 -312
  80. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  81. package/dist/esm/FrappeReportBuilder.native.js +661 -356
  82. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  83. package/dist/esm/FrappeReportView.mjs +30 -229
  84. package/dist/esm/FrappeReportView.mjs.map +1 -1
  85. package/dist/esm/FrappeReportView.native.js +34 -278
  86. package/dist/esm/FrappeReportView.native.js.map +1 -1
  87. package/dist/esm/dependsOn.mjs +2 -2
  88. package/dist/esm/dependsOn.mjs.map +1 -1
  89. package/dist/esm/dependsOn.native.js +1 -2
  90. package/dist/esm/dependsOn.native.js.map +1 -1
  91. package/dist/esm/fields/shared/EditorPreviewPanes.mjs +2 -2
  92. package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  93. package/dist/esm/fields/shared/EditorPreviewPanes.native.js +2 -2
  94. package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  95. package/dist/esm/formEngine/docPermissions.mjs +19 -1
  96. package/dist/esm/formEngine/docPermissions.mjs.map +1 -1
  97. package/dist/esm/formEngine/docPermissions.native.js +68 -1
  98. package/dist/esm/formEngine/docPermissions.native.js.map +1 -1
  99. package/dist/esm/formEngine/index.mjs +2 -2
  100. package/dist/esm/formEngine/index.mjs.map +1 -1
  101. package/dist/esm/formEngine/index.native.js +2 -2
  102. package/dist/esm/formEngine/index.native.js.map +1 -1
  103. package/dist/esm/index.mjs +16 -4
  104. package/dist/esm/index.mjs.map +1 -1
  105. package/dist/esm/index.native.js +16 -4
  106. package/dist/esm/index.native.js.map +1 -1
  107. package/dist/esm/liveErrors.mjs +8 -3
  108. package/dist/esm/liveErrors.mjs.map +1 -1
  109. package/dist/esm/liveErrors.native.js +8 -3
  110. package/dist/esm/liveErrors.native.js.map +1 -1
  111. package/dist/esm/measures.mjs +5 -0
  112. package/dist/esm/measures.mjs.map +1 -0
  113. package/dist/esm/measures.native.js +5 -0
  114. package/dist/esm/measures.native.js.map +1 -0
  115. package/dist/esm/recordShape.mjs +74 -0
  116. package/dist/esm/recordShape.mjs.map +1 -0
  117. package/dist/esm/recordShape.native.js +83 -0
  118. package/dist/esm/recordShape.native.js.map +1 -0
  119. package/dist/esm/report/ReportGrid.mjs +428 -0
  120. package/dist/esm/report/ReportGrid.mjs.map +1 -0
  121. package/dist/esm/report/ReportGrid.native.js +471 -0
  122. package/dist/esm/report/ReportGrid.native.js.map +1 -0
  123. package/dist/esm/report/ReportViewToolbar.mjs +228 -0
  124. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -0
  125. package/dist/esm/report/ReportViewToolbar.native.js +264 -0
  126. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -0
  127. package/dist/esm/report/queryReport.mjs +404 -0
  128. package/dist/esm/report/queryReport.mjs.map +1 -0
  129. package/dist/esm/report/queryReport.native.js +545 -0
  130. package/dist/esm/report/queryReport.native.js.map +1 -0
  131. package/dist/esm/report/queryReportColumns.mjs +105 -0
  132. package/dist/esm/report/queryReportColumns.mjs.map +1 -0
  133. package/dist/esm/report/queryReportColumns.native.js +119 -0
  134. package/dist/esm/report/queryReportColumns.native.js.map +1 -0
  135. package/dist/esm/report/reportViewModel.mjs +343 -0
  136. package/dist/esm/report/reportViewModel.mjs.map +1 -0
  137. package/dist/esm/report/reportViewModel.native.js +611 -0
  138. package/dist/esm/report/reportViewModel.native.js.map +1 -0
  139. package/dist/esm/report/savedReports.mjs +112 -0
  140. package/dist/esm/report/savedReports.mjs.map +1 -0
  141. package/dist/esm/report/savedReports.native.js +141 -0
  142. package/dist/esm/report/savedReports.native.js.map +1 -0
  143. package/dist/esm/report/useFrappeReport.mjs +158 -0
  144. package/dist/esm/report/useFrappeReport.mjs.map +1 -0
  145. package/dist/esm/report/useFrappeReport.native.js +185 -0
  146. package/dist/esm/report/useFrappeReport.native.js.map +1 -0
  147. package/dist/esm/report/useQueryReport.mjs +176 -0
  148. package/dist/esm/report/useQueryReport.mjs.map +1 -0
  149. package/dist/esm/report/useQueryReport.native.js +205 -0
  150. package/dist/esm/report/useQueryReport.native.js.map +1 -0
  151. package/dist/esm/useFrappeForm.mjs +533 -0
  152. package/dist/esm/useFrappeForm.mjs.map +1 -0
  153. package/dist/esm/useFrappeForm.native.js +686 -0
  154. package/dist/esm/useFrappeForm.native.js.map +1 -0
  155. package/dist/jsx/FrappeCalendar.mjs +4 -3
  156. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  157. package/dist/jsx/FrappeCalendar.native.js +3 -2
  158. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  159. package/dist/jsx/FrappeForm.mjs +151 -467
  160. package/dist/jsx/FrappeForm.mjs.map +1 -1
  161. package/dist/jsx/FrappeForm.native.js +152 -633
  162. package/dist/jsx/FrappeForm.native.js.map +1 -1
  163. package/dist/jsx/FrappeListView.mjs +6 -28
  164. package/dist/jsx/FrappeListView.mjs.map +1 -1
  165. package/dist/jsx/FrappeListView.native.js +11 -32
  166. package/dist/jsx/FrappeListView.native.js.map +1 -1
  167. package/dist/jsx/FrappeReportBuilder.mjs +526 -312
  168. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  169. package/dist/jsx/FrappeReportBuilder.native.js +658 -353
  170. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  171. package/dist/jsx/FrappeReportView.mjs +30 -229
  172. package/dist/jsx/FrappeReportView.mjs.map +1 -1
  173. package/dist/jsx/FrappeReportView.native.js +39 -283
  174. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  175. package/dist/jsx/dependsOn.mjs +2 -2
  176. package/dist/jsx/dependsOn.mjs.map +1 -1
  177. package/dist/jsx/dependsOn.native.js +1 -2
  178. package/dist/jsx/dependsOn.native.js.map +1 -1
  179. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +2 -2
  180. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  181. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +2 -2
  182. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  183. package/dist/jsx/formEngine/docPermissions.mjs +19 -1
  184. package/dist/jsx/formEngine/docPermissions.mjs.map +1 -1
  185. package/dist/jsx/formEngine/docPermissions.native.js +69 -0
  186. package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
  187. package/dist/jsx/formEngine/index.mjs +2 -2
  188. package/dist/jsx/formEngine/index.mjs.map +1 -1
  189. package/dist/jsx/formEngine/index.native.js +2 -0
  190. package/dist/jsx/formEngine/index.native.js.map +1 -1
  191. package/dist/jsx/index.js +16 -4
  192. package/dist/jsx/index.js.map +1 -1
  193. package/dist/jsx/index.mjs +16 -4
  194. package/dist/jsx/index.mjs.map +1 -1
  195. package/dist/jsx/index.native.js +67 -7
  196. package/dist/jsx/index.native.js.map +1 -1
  197. package/dist/jsx/liveErrors.mjs +8 -3
  198. package/dist/jsx/liveErrors.mjs.map +1 -1
  199. package/dist/jsx/liveErrors.native.js +8 -2
  200. package/dist/jsx/liveErrors.native.js.map +1 -1
  201. package/dist/jsx/measures.mjs +5 -0
  202. package/dist/jsx/measures.mjs.map +1 -0
  203. package/dist/jsx/measures.native.js +34 -0
  204. package/dist/jsx/measures.native.js.map +1 -0
  205. package/dist/jsx/recordShape.mjs +74 -0
  206. package/dist/jsx/recordShape.mjs.map +1 -0
  207. package/dist/jsx/recordShape.native.js +115 -0
  208. package/dist/jsx/recordShape.native.js.map +1 -0
  209. package/dist/jsx/report/ReportGrid.mjs +428 -0
  210. package/dist/jsx/report/ReportGrid.mjs.map +1 -0
  211. package/dist/jsx/report/ReportGrid.native.js +510 -0
  212. package/dist/jsx/report/ReportGrid.native.js.map +1 -0
  213. package/dist/jsx/report/ReportViewToolbar.mjs +228 -0
  214. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -0
  215. package/dist/jsx/report/ReportViewToolbar.native.js +303 -0
  216. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -0
  217. package/dist/jsx/report/queryReport.mjs +404 -0
  218. package/dist/jsx/report/queryReport.mjs.map +1 -0
  219. package/dist/jsx/report/queryReport.native.js +588 -0
  220. package/dist/jsx/report/queryReport.native.js.map +1 -0
  221. package/dist/jsx/report/queryReportColumns.mjs +105 -0
  222. package/dist/jsx/report/queryReportColumns.mjs.map +1 -0
  223. package/dist/jsx/report/queryReportColumns.native.js +159 -0
  224. package/dist/jsx/report/queryReportColumns.native.js.map +1 -0
  225. package/dist/jsx/report/reportViewModel.mjs +343 -0
  226. package/dist/jsx/report/reportViewModel.mjs.map +1 -0
  227. package/dist/jsx/report/reportViewModel.native.js +657 -0
  228. package/dist/jsx/report/reportViewModel.native.js.map +1 -0
  229. package/dist/jsx/report/savedReports.mjs +112 -0
  230. package/dist/jsx/report/savedReports.mjs.map +1 -0
  231. package/dist/jsx/report/savedReports.native.js +169 -0
  232. package/dist/jsx/report/savedReports.native.js.map +1 -0
  233. package/dist/jsx/report/useFrappeReport.mjs +158 -0
  234. package/dist/jsx/report/useFrappeReport.mjs.map +1 -0
  235. package/dist/jsx/report/useFrappeReport.native.js +214 -0
  236. package/dist/jsx/report/useFrappeReport.native.js.map +1 -0
  237. package/dist/jsx/report/useQueryReport.mjs +176 -0
  238. package/dist/jsx/report/useQueryReport.mjs.map +1 -0
  239. package/dist/jsx/report/useQueryReport.native.js +233 -0
  240. package/dist/jsx/report/useQueryReport.native.js.map +1 -0
  241. package/dist/jsx/useFrappeForm.mjs +533 -0
  242. package/dist/jsx/useFrappeForm.mjs.map +1 -0
  243. package/dist/jsx/useFrappeForm.native.js +714 -0
  244. package/dist/jsx/useFrappeForm.native.js.map +1 -0
  245. package/package.json +16 -16
  246. package/src/FrappeCalendar.tsx +8 -2
  247. package/src/FrappeForm.stories.tsx +52 -0
  248. package/src/FrappeForm.tsx +176 -565
  249. package/src/FrappeListView.cards.stories.tsx +3 -6
  250. package/src/FrappeListView.tsx +15 -55
  251. package/src/FrappeReportBuilder.stories.tsx +34 -7
  252. package/src/FrappeReportBuilder.tsx +790 -380
  253. package/src/FrappeReportView.spec.tsx +10 -6
  254. package/src/FrappeReportView.stories.tsx +20 -1
  255. package/src/FrappeReportView.tsx +89 -415
  256. package/src/dependsOn.ts +4 -1
  257. package/src/fields/shared/EditorPreviewPanes.tsx +2 -2
  258. package/src/formEngine/docPermissions.spec.ts +36 -1
  259. package/src/formEngine/docPermissions.ts +34 -0
  260. package/src/formEngine/index.ts +8 -1
  261. package/src/frappeRemainder.designLaw.spec.ts +9 -1
  262. package/src/frappeRoutes.spec.tsx +9 -0
  263. package/src/frappeViews.designLaw.spec.ts +15 -2
  264. package/src/guestFallback.spec.tsx +236 -0
  265. package/src/index.ts +117 -16
  266. package/src/liveErrors.spec.ts +10 -0
  267. package/src/liveErrors.ts +16 -3
  268. package/src/measures.ts +11 -0
  269. package/src/recordShape.spec.ts +100 -0
  270. package/src/recordShape.ts +133 -0
  271. package/src/report/ReportGrid.spec.tsx +175 -0
  272. package/src/report/ReportGrid.tsx +530 -0
  273. package/src/report/ReportViewToolbar.spec.tsx +90 -0
  274. package/src/report/ReportViewToolbar.tsx +314 -0
  275. package/src/report/queryReport.spec.ts +483 -0
  276. package/src/report/queryReport.ts +722 -0
  277. package/src/report/queryReportColumns.tsx +123 -0
  278. package/src/report/reportViewModel.spec.ts +393 -0
  279. package/src/report/reportViewModel.ts +617 -0
  280. package/src/report/savedReports.ts +172 -0
  281. package/src/report/seam.spec.ts +216 -0
  282. package/src/report/useFrappeReport.ts +241 -0
  283. package/src/report/useQueryReport.spec.tsx +131 -0
  284. package/src/report/useQueryReport.ts +309 -0
  285. package/src/useFrappeForm.spec.tsx +209 -0
  286. package/src/useFrappeForm.ts +778 -0
  287. package/types/FrappeCalendar.d.ts.map +1 -1
  288. package/types/FrappeForm.d.ts +21 -1
  289. package/types/FrappeForm.d.ts.map +1 -1
  290. package/types/FrappeListView.d.ts.map +1 -1
  291. package/types/FrappeReportBuilder.d.ts +66 -16
  292. package/types/FrappeReportBuilder.d.ts.map +1 -1
  293. package/types/FrappeReportView.d.ts +9 -127
  294. package/types/FrappeReportView.d.ts.map +1 -1
  295. package/types/dependsOn.d.ts.map +1 -1
  296. package/types/formEngine/docPermissions.d.ts +14 -0
  297. package/types/formEngine/docPermissions.d.ts.map +1 -1
  298. package/types/formEngine/index.d.ts +1 -1
  299. package/types/formEngine/index.d.ts.map +1 -1
  300. package/types/index.d.ts +15 -3
  301. package/types/index.d.ts.map +1 -1
  302. package/types/liveErrors.d.ts +9 -1
  303. package/types/liveErrors.d.ts.map +1 -1
  304. package/types/measures.d.ts +3 -0
  305. package/types/measures.d.ts.map +1 -0
  306. package/types/recordShape.d.ts +45 -0
  307. package/types/recordShape.d.ts.map +1 -0
  308. package/types/report/ReportGrid.d.ts +20 -0
  309. package/types/report/ReportGrid.d.ts.map +1 -0
  310. package/types/report/ReportViewToolbar.d.ts +31 -0
  311. package/types/report/ReportViewToolbar.d.ts.map +1 -0
  312. package/types/report/queryReport.d.ts +181 -0
  313. package/types/report/queryReport.d.ts.map +1 -0
  314. package/types/report/queryReportColumns.d.ts +12 -0
  315. package/types/report/queryReportColumns.d.ts.map +1 -0
  316. package/types/report/reportViewModel.d.ts +146 -0
  317. package/types/report/reportViewModel.d.ts.map +1 -0
  318. package/types/report/savedReports.d.ts +27 -0
  319. package/types/report/savedReports.d.ts.map +1 -0
  320. package/types/report/useFrappeReport.d.ts +60 -0
  321. package/types/report/useFrappeReport.d.ts.map +1 -0
  322. package/types/report/useQueryReport.d.ts +37 -0
  323. package/types/report/useQueryReport.d.ts.map +1 -0
  324. package/types/useFrappeForm.d.ts +142 -0
  325. package/types/useFrappeForm.d.ts.map +1 -0
@@ -0,0 +1,686 @@
1
+ import { getFrappeSyncModule, useDocTypeMeta, useFrappeCollection, useFrappeDoctypeEvents, useLiveQuery } from "@multiplatform.one/frappe";
2
+ import { eq } from "@tanstack/db";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+ import { useFrappeConfig } from "./FrappeProvider.native.js";
6
+ import { setCreatePrefill, takeCreatePrefill } from "./formEngine/createPrefill.native.js";
7
+ import { computeDirtyFields, isEmptyValue, isSameValue } from "./formEngine/dirtyTracking.native.js";
8
+ import { buildAmendValues } from "./formEngine/docLifecycle.native.js";
9
+ import { applyFetchedValues, buildFetchMap } from "./formEngine/fetchFrom.native.js";
10
+ import { buildPermLevelMatrix } from "./formEngine/fieldPermissions.native.js";
11
+ import { createHttpClient, validateLink } from "./formEngine/formActions.native.js";
12
+ import { buildCopyValues, buildCreateDefaults, buildFormTabs, isPromptNamed } from "./formEngine/formLayout.native.js";
13
+ import { useAmendedAs } from "./formEngine/useAmendedAs.native.js";
14
+ import { useDocRights } from "./formEngine/useDocRights.native.js";
15
+ import { extractServerError } from "./formEngine/useFormEngine.native.js";
16
+ function _instanceof(left, right) {
17
+ "@swc/helpers - instanceof";
18
+
19
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
20
+ return !!right[Symbol.hasInstance](left);
21
+ } else {
22
+ return left instanceof right;
23
+ }
24
+ }
25
+ function sectionsToLayoutFields(sections) {
26
+ var fields = [];
27
+ sections.forEach(function (section, sectionIndex) {
28
+ fields.push({
29
+ fieldname: `__section_${sectionIndex}`,
30
+ fieldtype: section.tab ? "Tab Break" : "Section Break",
31
+ label: section.label,
32
+ collapsible: section.collapsible ? 1 : 0
33
+ });
34
+ section.columns.forEach(function (column, columnIndex) {
35
+ if (columnIndex > 0) {
36
+ fields.push({
37
+ fieldname: `__column_${sectionIndex}_${columnIndex}`,
38
+ fieldtype: "Column Break"
39
+ });
40
+ }
41
+ fields.push(...column.fields);
42
+ });
43
+ });
44
+ return fields;
45
+ }
46
+ function isConflictError(err) {
47
+ var _e_message;
48
+ var e = err;
49
+ if (!e) return false;
50
+ if (e.status === 409) return true;
51
+ if (e.exc_type === "TimestampMismatchError") return true;
52
+ return /TimestampMismatch|has been modified/i.test((_e_message = e.message) !== null && _e_message !== void 0 ? _e_message : "");
53
+ }
54
+ function useFrappeForm(options) {
55
+ var _ref;
56
+ var {
57
+ doctype,
58
+ name,
59
+ baseURL,
60
+ auth,
61
+ syncOptions,
62
+ fields,
63
+ sections,
64
+ hideFields,
65
+ hideSections,
66
+ roles,
67
+ rights: rightsOverride,
68
+ shares: sharesOverride,
69
+ readShares = true,
70
+ disabled = false,
71
+ initialDoc,
72
+ meta: metaSource
73
+ } = options;
74
+ var config = useFrappeConfig();
75
+ var {
76
+ t
77
+ } = useTranslation();
78
+ var isCreate = !name;
79
+ var seedDoc = name && initialDoc && initialDoc.name === name ? initialDoc : void 0;
80
+ var seedRef = useRef(seedDoc);
81
+ seedRef.current = seedDoc;
82
+ var [localDoc, setLocalDoc] = useState(function () {
83
+ return seedDoc !== null && seedDoc !== void 0 ? seedDoc : {};
84
+ });
85
+ var [baselineDoc, setBaselineDoc] = useState(function () {
86
+ return seedDoc;
87
+ });
88
+ var [docError, setDocError] = useState(null);
89
+ var [conflictFields, setConflictFields] = useState([]);
90
+ var [saveConflict, setSaveConflict] = useState(false);
91
+ var [wasDeleted, setWasDeleted] = useState(false);
92
+ var [isSubmitting, setIsSubmitting] = useState(false);
93
+ var [errors, setErrors] = useState({});
94
+ var [activeTab, setActiveTab] = useState(void 0);
95
+ var everLoadedRef = useRef(false);
96
+ var localDocRef = useRef(localDoc);
97
+ localDocRef.current = localDoc;
98
+ var baselineRef = useRef(baselineDoc);
99
+ baselineRef.current = baselineDoc;
100
+ var createDraftRef = useRef(void 0);
101
+ var createSeededRef = useRef(void 0);
102
+ var finalBaseURL = baseURL !== null && baseURL !== void 0 ? baseURL : config === null || config === void 0 ? void 0 : config.baseURL;
103
+ var finalAuth = auth !== null && auth !== void 0 ? auth : config === null || config === void 0 ? void 0 : config.auth;
104
+ var finalSyncOptions = syncOptions !== null && syncOptions !== void 0 ? syncOptions : config === null || config === void 0 ? void 0 : config.syncOptions;
105
+ var frappeConfig = useMemo(function () {
106
+ return finalBaseURL ? {
107
+ baseURL: finalBaseURL,
108
+ socketPort: config === null || config === void 0 ? void 0 : config.socketPort,
109
+ siteName: config === null || config === void 0 ? void 0 : config.siteName,
110
+ socketBaseURL: config === null || config === void 0 ? void 0 : config.socketBaseURL,
111
+ auth: finalAuth,
112
+ syncOptions: finalSyncOptions,
113
+ realtime: config === null || config === void 0 ? void 0 : config.realtime,
114
+ fixtures: config === null || config === void 0 ? void 0 : config.fixtures
115
+ } : void 0;
116
+ }, [finalBaseURL, config === null || config === void 0 ? void 0 : config.socketPort, config === null || config === void 0 ? void 0 : config.siteName, config === null || config === void 0 ? void 0 : config.socketBaseURL, config === null || config === void 0 ? void 0 : config.realtime, finalAuth, finalSyncOptions, config === null || config === void 0 ? void 0 : config.fixtures]);
117
+ var ownMeta = useDocTypeMeta(metaSource ? void 0 : frappeConfig, doctype);
118
+ var meta = metaSource ? metaSource.meta : ownMeta.meta;
119
+ var isMetaLoading = metaSource ? metaSource.isLoading : ownMeta.isLoading;
120
+ var metaError = metaSource ? metaSource.error : ownMeta.error;
121
+ var isSubmittable = !!(meta === null || meta === void 0 ? void 0 : meta.is_submittable);
122
+ var docstatus = Number((_ref = baselineDoc === null || baselineDoc === void 0 ? void 0 : baselineDoc.docstatus) !== null && _ref !== void 0 ? _ref : 0);
123
+ var layoutFields = useMemo(function () {
124
+ if (!meta) return void 0;
125
+ return sections ? sectionsToLayoutFields(sections) : meta.fields;
126
+ }, [meta, sections]);
127
+ var amendedAs = useAmendedAs(isSubmittable && docstatus === 2 ? frappeConfig : void 0, doctype, name);
128
+ var promptNamed = isCreate && !!meta && isPromptNamed(meta.autoname, meta.naming_rule);
129
+ var fetchMap = useMemo(function () {
130
+ return meta ? buildFetchMap(meta.fields) : void 0;
131
+ }, [meta]);
132
+ var handleDocSyncError = useCallback(function (err) {
133
+ setDocError(_instanceof(err, Error) ? err : new Error(String(err)));
134
+ }, []);
135
+ var docCollection = useFrappeCollection(name ? frappeConfig : void 0, doctype, {
136
+ fields,
137
+ filters: name ? {
138
+ name
139
+ } : void 0,
140
+ onSyncError: handleDocSyncError
141
+ });
142
+ var {
143
+ data: rawDocData,
144
+ isLoading: isDocLoading
145
+ } = useLiveQuery(function (q) {
146
+ if (!docCollection || !name) return null;
147
+ return q.from({
148
+ _doc: docCollection
149
+ }).where(function (param) {
150
+ var {
151
+ _doc
152
+ } = param;
153
+ if (!_doc) return eq(name, name);
154
+ return eq(_doc.name, name);
155
+ });
156
+ }, [docCollection, name]);
157
+ var liveDoc = useMemo(function () {
158
+ var _arr_;
159
+ var arr = Array.isArray(rawDocData) ? rawDocData : rawDocData ? [rawDocData] : [];
160
+ var doc = (_arr_ = arr[0]) !== null && _arr_ !== void 0 ? _arr_ : null;
161
+ return doc ? {
162
+ data: doc,
163
+ isLoading: isDocLoading
164
+ } : name ? {
165
+ data: null,
166
+ isLoading: isDocLoading
167
+ } : null;
168
+ }, [rawDocData, isDocLoading, name]);
169
+ var collection = useFrappeCollection(name ? void 0 : frappeConfig, doctype, {
170
+ fields
171
+ });
172
+ var shareCollection = useFrappeCollection(readShares && !sharesOverride && name ? frappeConfig : void 0, "DocShare", {
173
+ fields: ["name", "user", "everyone", "read", "write", "share"],
174
+ filters: {
175
+ share_doctype: doctype,
176
+ share_name: name
177
+ }
178
+ });
179
+ var {
180
+ data: rawShareRows
181
+ } = useLiveQuery(function (q) {
182
+ return shareCollection ? q.from({
183
+ _share: shareCollection
184
+ }) : null;
185
+ }, [shareCollection]);
186
+ var shareRows = useMemo(function () {
187
+ return sharesOverride !== null && sharesOverride !== void 0 ? sharesOverride : shareCollection ? rawShareRows !== null && rawShareRows !== void 0 ? rawShareRows : [] : void 0;
188
+ }, [sharesOverride, shareCollection, rawShareRows]);
189
+ var owner = baselineDoc === null || baselineDoc === void 0 ? void 0 : baselineDoc.owner;
190
+ var {
191
+ rights: sessionRights,
192
+ pending: sessionPending,
193
+ roles: effectiveRoles,
194
+ user
195
+ } = useDocRights(frappeConfig, meta, {
196
+ roles,
197
+ owner: typeof owner === "string" ? owner : void 0,
198
+ shares: shareRows
199
+ });
200
+ var rights = rightsOverride !== null && rightsOverride !== void 0 ? rightsOverride : sessionRights;
201
+ var rightsPending = rightsOverride ? false : sessionPending;
202
+ var permLevels = useMemo(function () {
203
+ return buildPermLevelMatrix(meta === null || meta === void 0 ? void 0 : meta.permissions, effectiveRoles);
204
+ }, [meta === null || meta === void 0 ? void 0 : meta.permissions, effectiveRoles]);
205
+ var tabs = useMemo(function () {
206
+ if (!layoutFields) return void 0;
207
+ return buildFormTabs({
208
+ fields: layoutFields,
209
+ doc: {
210
+ ...localDoc,
211
+ __islocal: isCreate ? 1 : 0,
212
+ ...(user ? {
213
+ __session_user: user
214
+ } : {})
215
+ },
216
+ docstatus,
217
+ formReadOnly: !!(meta === null || meta === void 0 ? void 0 : meta.read_only),
218
+ isCreate,
219
+ detailsLabel: t("Details"),
220
+ permLevels,
221
+ hiddenFields: hideFields,
222
+ hiddenSections: hideSections
223
+ });
224
+ }, [layoutFields, localDoc, isCreate, user, docstatus, meta === null || meta === void 0 ? void 0 : meta.read_only, permLevels, hideFields, hideSections, t]);
225
+ useEffect(function () {
226
+ everLoadedRef.current = false;
227
+ if (name) createDraftRef.current = void 0;
228
+ createSeededRef.current = void 0;
229
+ setWasDeleted(false);
230
+ setConflictFields([]);
231
+ setSaveConflict(false);
232
+ setDocError(null);
233
+ var seed = seedRef.current;
234
+ setBaselineDoc(seed);
235
+ if (seed) setLocalDoc(seed);
236
+ }, [doctype, name]);
237
+ useFrappeDoctypeEvents(name ? frappeConfig : void 0, doctype, function (event) {
238
+ if (event.type !== "doc_deleted") return;
239
+ var payload = event.payload;
240
+ if ((payload === null || payload === void 0 ? void 0 : payload.name) === name) setWasDeleted(true);
241
+ }, Boolean(name));
242
+ useEffect(function () {
243
+ var incoming = liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.data;
244
+ if (incoming) {
245
+ everLoadedRef.current = true;
246
+ setWasDeleted(false);
247
+ var baseline = baselineRef.current;
248
+ if (!baseline) {
249
+ setBaselineDoc(incoming);
250
+ setLocalDoc(incoming);
251
+ return;
252
+ }
253
+ var local = localDocRef.current;
254
+ var merged = {
255
+ ...incoming
256
+ };
257
+ var newConflicts = [];
258
+ var _iteratorNormalCompletion = true,
259
+ _didIteratorError = false,
260
+ _iteratorError = void 0;
261
+ try {
262
+ for (var _iterator = Object.keys(local)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
263
+ var key = _step.value;
264
+ var localValue = local[key];
265
+ if (isSameValue(localValue, baseline[key])) continue;
266
+ merged[key] = localValue;
267
+ var remote = incoming[key];
268
+ if (!isSameValue(remote, baseline[key]) && !isSameValue(remote, localValue)) {
269
+ newConflicts.push(key);
270
+ }
271
+ }
272
+ } catch (err) {
273
+ _didIteratorError = true;
274
+ _iteratorError = err;
275
+ } finally {
276
+ try {
277
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
278
+ _iterator.return();
279
+ }
280
+ } finally {
281
+ if (_didIteratorError) {
282
+ throw _iteratorError;
283
+ }
284
+ }
285
+ }
286
+ setBaselineDoc(incoming);
287
+ setLocalDoc(merged);
288
+ if (newConflicts.length > 0) {
289
+ setConflictFields(function (prev) {
290
+ return Array.from(/* @__PURE__ */new Set([...prev, ...newConflicts]));
291
+ });
292
+ }
293
+ } else if (name && everLoadedRef.current && !(liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.isLoading)) {
294
+ setWasDeleted(true);
295
+ }
296
+ }, [liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.data, liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.isLoading, doctype, name]);
297
+ useEffect(function () {
298
+ var _createDraftRef_current;
299
+ if (name) return;
300
+ if (((_createDraftRef_current = createDraftRef.current) === null || _createDraftRef_current === void 0 ? void 0 : _createDraftRef_current.doctype) !== doctype) {
301
+ createDraftRef.current = {
302
+ doctype,
303
+ values: takeCreatePrefill(doctype)
304
+ };
305
+ }
306
+ var draft = createDraftRef.current.values;
307
+ var defaults = meta ? buildCreateDefaults(meta.fields, user) : {};
308
+ var fresh = createSeededRef.current !== doctype;
309
+ createSeededRef.current = doctype;
310
+ setLocalDoc(function (prev) {
311
+ return {
312
+ ...defaults,
313
+ ...draft,
314
+ ...(fresh ? {} : prev),
315
+ doctype
316
+ };
317
+ });
318
+ }, [name, doctype, meta, user]);
319
+ var dirtyFields = useMemo(function () {
320
+ return computeDirtyFields(localDoc, baselineDoc);
321
+ }, [localDoc, baselineDoc]);
322
+ var isDirty = dirtyFields.length > 0;
323
+ var runFetchFrom = function runFetchFrom2(field, value) {
324
+ var rules = fetchMap === null || fetchMap === void 0 ? void 0 : fetchMap.get(field);
325
+ if (!rules || rules.length === 0 || !frappeConfig) return;
326
+ var applyPatch = function applyPatch2(fetched2) {
327
+ setLocalDoc(function (prev) {
328
+ var current = prev;
329
+ if (current[field] !== value) return prev;
330
+ var patch = applyFetchedValues(rules, fetched2, current);
331
+ return Object.keys(patch).length > 0 ? {
332
+ ...current,
333
+ ...patch
334
+ } : prev;
335
+ });
336
+ };
337
+ if (isEmptyValue(value)) {
338
+ applyPatch({});
339
+ return;
340
+ }
341
+ var linkField = meta === null || meta === void 0 ? void 0 : meta.fields.find(function (metaField) {
342
+ return metaField.fieldname === field;
343
+ });
344
+ var targetDoctype = typeof (linkField === null || linkField === void 0 ? void 0 : linkField.options) === "string" ? linkField.options : "";
345
+ if (!targetDoctype) return;
346
+ var sources = Array.from(new Set(rules.map(function (rule) {
347
+ return rule.source;
348
+ })));
349
+ var fixtures = frappeConfig.fixtures;
350
+ var fetched = fixtures ? fixtures.getDoc(targetDoctype, String(value), sources).then(function (doc) {
351
+ return doc !== null && doc !== void 0 ? doc : {};
352
+ }) : validateLink(createHttpClient(frappeConfig), targetDoctype, String(value), sources);
353
+ fetched.then(applyPatch).catch(function () {
354
+ return void 0;
355
+ });
356
+ };
357
+ var setValue = function setValue2(field, value) {
358
+ setLocalDoc(function (prev) {
359
+ return {
360
+ ...prev,
361
+ [field]: value
362
+ };
363
+ });
364
+ setErrors(function (prev) {
365
+ if (!(String(field) in prev)) return prev;
366
+ var next = {
367
+ ...prev
368
+ };
369
+ delete next[String(field)];
370
+ return next;
371
+ });
372
+ runFetchFrom(String(field), value);
373
+ };
374
+ var validate = function validate2() {
375
+ if (!tabs) return {};
376
+ var validationErrors = {};
377
+ var doc = localDoc;
378
+ if (promptNamed && isEmptyValue(doc.name)) {
379
+ validationErrors.name = t("Name is required");
380
+ }
381
+ var _iteratorNormalCompletion = true,
382
+ _didIteratorError = false,
383
+ _iteratorError = void 0;
384
+ try {
385
+ for (var _iterator = tabs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
386
+ var tab = _step.value;
387
+ var _iteratorNormalCompletion1 = true,
388
+ _didIteratorError1 = false,
389
+ _iteratorError1 = void 0;
390
+ try {
391
+ for (var _iterator1 = tab.schema.fields[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
392
+ var field = _step1.value;
393
+ if (!field.required) continue;
394
+ if (isEmptyValue(doc[field.name])) {
395
+ validationErrors[field.name] = t("{{label}} is required", {
396
+ label: field.label || field.name
397
+ });
398
+ }
399
+ }
400
+ } catch (err) {
401
+ _didIteratorError1 = true;
402
+ _iteratorError1 = err;
403
+ } finally {
404
+ try {
405
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
406
+ _iterator1.return();
407
+ }
408
+ } finally {
409
+ if (_didIteratorError1) {
410
+ throw _iteratorError1;
411
+ }
412
+ }
413
+ }
414
+ }
415
+ } catch (err) {
416
+ _didIteratorError = true;
417
+ _iteratorError = err;
418
+ } finally {
419
+ try {
420
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
421
+ _iterator.return();
422
+ }
423
+ } finally {
424
+ if (_didIteratorError) {
425
+ throw _iteratorError;
426
+ }
427
+ }
428
+ }
429
+ return validationErrors;
430
+ };
431
+ var canWrite = isCreate ? rights.create : rights.write;
432
+ var save = async function save2() {
433
+ if (wasDeleted || !canWrite || disabled) return void 0;
434
+ var requiredErrors = validate();
435
+ if (Object.keys(requiredErrors).length > 0) {
436
+ setErrors(requiredErrors);
437
+ return void 0;
438
+ }
439
+ setIsSubmitting(true);
440
+ setErrors({});
441
+ try {
442
+ var _localDoc_name, _ref2;
443
+ var _getFrappeSyncModule;
444
+ if (name) {
445
+ if (!docCollection) return void 0;
446
+ if (dirtyFields.length > 0) {
447
+ var local = localDoc;
448
+ var tx = docCollection.update(name, function (draft) {
449
+ var _iteratorNormalCompletion2 = true,
450
+ _didIteratorError2 = false,
451
+ _iteratorError2 = void 0;
452
+ try {
453
+ for (var _iterator2 = dirtyFields[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
454
+ var key = _step2.value;
455
+ draft[key] = local[key];
456
+ }
457
+ } catch (err) {
458
+ _didIteratorError2 = true;
459
+ _iteratorError2 = err;
460
+ } finally {
461
+ try {
462
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
463
+ _iterator2.return();
464
+ }
465
+ } finally {
466
+ if (_didIteratorError2) {
467
+ throw _iteratorError2;
468
+ }
469
+ }
470
+ }
471
+ });
472
+ await tx.isPersisted.promise;
473
+ }
474
+ setConflictFields([]);
475
+ setSaveConflict(false);
476
+ return name;
477
+ }
478
+ if (!collection || !frappeConfig) return void 0;
479
+ var temporaryName = (_localDoc_name = localDoc.name) !== null && _localDoc_name !== void 0 ? _localDoc_name : `new-${Date.now()}`;
480
+ var docToInsert = {
481
+ ...localDoc,
482
+ doctype,
483
+ name: temporaryName
484
+ };
485
+ var tx1 = collection.insert(docToInsert);
486
+ await tx1.isPersisted.promise;
487
+ return (_ref2 = (_getFrappeSyncModule = getFrappeSyncModule(frappeConfig)) === null || _getFrappeSyncModule === void 0 ? void 0 : _getFrappeSyncModule.createdName(temporaryName)) !== null && _ref2 !== void 0 ? _ref2 : temporaryName;
488
+ } catch (err1) {
489
+ var e = err1;
490
+ if (isConflictError(err1)) setSaveConflict(true);
491
+ if ((e === null || e === void 0 ? void 0 : e.exc_type) === "ValidationError") {
492
+ var validationErrors = {};
493
+ if (e._server_messages) {
494
+ try {
495
+ var messages = JSON.parse(e._server_messages);
496
+ var _iteratorNormalCompletion = true,
497
+ _didIteratorError = false,
498
+ _iteratorError = void 0;
499
+ try {
500
+ for (var _iterator = messages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
501
+ var msg = _step.value;
502
+ var parsed = typeof msg === "string" ? JSON.parse(msg) : msg;
503
+ if (parsed.message) {
504
+ validationErrors.general = parsed.message;
505
+ }
506
+ }
507
+ } catch (err) {
508
+ _didIteratorError = true;
509
+ _iteratorError = err;
510
+ } finally {
511
+ try {
512
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
513
+ _iterator.return();
514
+ }
515
+ } finally {
516
+ if (_didIteratorError) {
517
+ throw _iteratorError;
518
+ }
519
+ }
520
+ }
521
+ } catch (unused) {
522
+ validationErrors.general = t("Validation error occurred");
523
+ }
524
+ }
525
+ setErrors(validationErrors);
526
+ } else {
527
+ setErrors({
528
+ general: (e === null || e === void 0 ? void 0 : e.message) || t("Failed to save document")
529
+ });
530
+ }
531
+ return void 0;
532
+ } finally {
533
+ setIsSubmitting(false);
534
+ }
535
+ };
536
+ var reset = function reset2() {
537
+ if (baselineDoc) {
538
+ setLocalDoc(baselineDoc);
539
+ } else if (liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.data) {
540
+ setLocalDoc(liveDoc.data);
541
+ } else {
542
+ setLocalDoc({
543
+ doctype
544
+ });
545
+ }
546
+ setConflictFields([]);
547
+ setSaveConflict(false);
548
+ setErrors({});
549
+ };
550
+ var remove = async function remove2() {
551
+ if (!docCollection || !name || wasDeleted || !rights.delete) return false;
552
+ setIsSubmitting(true);
553
+ setErrors({});
554
+ try {
555
+ var tx = docCollection.delete(name);
556
+ await tx.isPersisted.promise;
557
+ return true;
558
+ } catch (err) {
559
+ setErrors({
560
+ general: (err === null || err === void 0 ? void 0 : err.message) || t("Failed to delete")
561
+ });
562
+ return false;
563
+ } finally {
564
+ setIsSubmitting(false);
565
+ }
566
+ };
567
+ var transitionDocstatus = async function transitionDocstatus2(to, failure) {
568
+ if (!docCollection || !name || wasDeleted || !rights[to === 1 ? "submit" : "cancel"]) {
569
+ return false;
570
+ }
571
+ if (to === 1) {
572
+ var requiredErrors = validate();
573
+ if (Object.keys(requiredErrors).length > 0) {
574
+ setErrors(requiredErrors);
575
+ return false;
576
+ }
577
+ }
578
+ setIsSubmitting(true);
579
+ setErrors({});
580
+ try {
581
+ var tx = docCollection.update(name, function (draft) {
582
+ draft.docstatus = to;
583
+ });
584
+ await tx.isPersisted.promise;
585
+ return true;
586
+ } catch (err) {
587
+ if (isConflictError(err)) setSaveConflict(true);
588
+ setErrors({
589
+ general: extractServerError(err, failure)
590
+ });
591
+ return false;
592
+ } finally {
593
+ setIsSubmitting(false);
594
+ }
595
+ };
596
+ var submitDocument = function submitDocument2() {
597
+ return transitionDocstatus(1, t("Failed to submit"));
598
+ };
599
+ var cancelDocument = function cancelDocument2() {
600
+ return transitionDocstatus(2, t("Failed to cancel"));
601
+ };
602
+ var amend = function amend2() {
603
+ if (!meta || !name || !rights.amend) return void 0;
604
+ var draft = buildAmendValues(meta.fields, localDoc, name);
605
+ setCreatePrefill(doctype, draft);
606
+ return draft;
607
+ };
608
+ var duplicate = function duplicate2() {
609
+ if (!meta) return void 0;
610
+ var values = buildCopyValues(meta.fields, localDoc);
611
+ setCreatePrefill(doctype, values);
612
+ return values;
613
+ };
614
+ var fieldTargets = useMemo(function () {
615
+ return (tabs !== null && tabs !== void 0 ? tabs : []).flatMap(function (tab) {
616
+ return tab.schema.fields.map(function (field) {
617
+ return {
618
+ name: field.name,
619
+ label: field.label || field.name,
620
+ tabKey: tab.key,
621
+ tabLabel: tab.label
622
+ };
623
+ });
624
+ });
625
+ }, [tabs]);
626
+ var revealField = function revealField2(fieldName) {
627
+ var target = fieldTargets.find(function (field) {
628
+ return field.name === fieldName;
629
+ });
630
+ if (!target) return false;
631
+ setActiveTab(target.tabKey);
632
+ return true;
633
+ };
634
+ var isDocReading = Boolean(name) && (!docCollection || Boolean(liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.isLoading));
635
+ var showsSeed = Boolean(seedDoc) && isDocReading;
636
+ var status = !name ? "ready" : docError && !(liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.data) && !wasDeleted ? "error" : isDocReading && !showsSeed && !wasDeleted ? "loading" : !isDocReading && !(liveDoc === null || liveDoc === void 0 ? void 0 : liveDoc.data) && !wasDeleted ? "notFound" : "ready";
637
+ return {
638
+ doctype,
639
+ name,
640
+ isCreate,
641
+ connection: frappeConfig,
642
+ meta,
643
+ metaLoading: isMetaLoading,
644
+ metaError,
645
+ doc: localDoc,
646
+ baseline: baselineDoc,
647
+ setValue,
648
+ errors,
649
+ setErrors,
650
+ dirtyFields,
651
+ isDirty,
652
+ isSubmitting,
653
+ docstatus,
654
+ isSubmittable,
655
+ rights,
656
+ rightsPending,
657
+ roles: effectiveRoles,
658
+ user,
659
+ shareRows,
660
+ canWrite,
661
+ readOnly: disabled || wasDeleted || !!(meta === null || meta === void 0 ? void 0 : meta.read_only) || !canWrite,
662
+ wasDeleted,
663
+ conflictFields,
664
+ conflict: saveConflict || conflictFields.length > 0,
665
+ status,
666
+ docError,
667
+ showsSeed,
668
+ tabs,
669
+ promptNamed,
670
+ fieldTargets,
671
+ activeTab,
672
+ setActiveTab,
673
+ revealField,
674
+ amendedAs,
675
+ validate,
676
+ save,
677
+ submitDocument,
678
+ cancelDocument,
679
+ remove,
680
+ reset,
681
+ amend,
682
+ duplicate
683
+ };
684
+ }
685
+ export { useFrappeForm };
686
+ //# sourceMappingURL=useFrappeForm.native.js.map