@multiplatform.one/frappe-ui 7.28.1 → 7.29.1

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