@multiplatform.one/frappe-ui 7.6.3 → 7.7.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 (229) hide show
  1. package/dist/cjs/ChartCard.cjs +52 -0
  2. package/dist/cjs/ChartCard.native.js +72 -0
  3. package/dist/cjs/ChartCard.native.js.map +1 -0
  4. package/dist/cjs/FrappeChartCard.cjs +3 -3
  5. package/dist/cjs/FrappeChartCard.native.js +3 -3
  6. package/dist/cjs/FrappeChartCard.native.js.map +1 -1
  7. package/dist/cjs/FrappeDashboard.cjs +6 -27
  8. package/dist/cjs/FrappeDashboard.native.js +6 -33
  9. package/dist/cjs/FrappeDashboard.native.js.map +1 -1
  10. package/dist/cjs/fields/CodeEditor/index.cjs +4 -0
  11. package/dist/cjs/fields/CodeEditor/index.native.js +4 -0
  12. package/dist/cjs/fields/CodeEditor/index.native.js.map +1 -1
  13. package/dist/cjs/formEngine/createPrefill.cjs +37 -0
  14. package/dist/cjs/formEngine/createPrefill.native.js +40 -0
  15. package/dist/cjs/formEngine/createPrefill.native.js.map +1 -0
  16. package/dist/cjs/formEngine/dirtyTracking.cjs +55 -0
  17. package/dist/cjs/formEngine/dirtyTracking.native.js +77 -0
  18. package/dist/cjs/formEngine/dirtyTracking.native.js.map +1 -0
  19. package/dist/cjs/formEngine/doctypeMeta.cjs +18 -0
  20. package/dist/cjs/formEngine/doctypeMeta.native.js +21 -0
  21. package/dist/cjs/formEngine/doctypeMeta.native.js.map +1 -0
  22. package/dist/cjs/formEngine/fetchFrom.cjs +67 -0
  23. package/dist/cjs/formEngine/fetchFrom.native.js +110 -0
  24. package/dist/cjs/formEngine/fetchFrom.native.js.map +1 -0
  25. package/dist/cjs/formEngine/fieldPermissions.cjs +55 -0
  26. package/dist/cjs/formEngine/fieldPermissions.native.js +80 -0
  27. package/dist/cjs/formEngine/fieldPermissions.native.js.map +1 -0
  28. package/dist/cjs/formEngine/formActions.cjs +189 -0
  29. package/dist/cjs/formEngine/formActions.native.js +199 -0
  30. package/dist/cjs/formEngine/formActions.native.js.map +1 -0
  31. package/dist/cjs/formEngine/formLayout.cjs +245 -0
  32. package/dist/cjs/formEngine/formLayout.native.js +388 -0
  33. package/dist/cjs/formEngine/formLayout.native.js.map +1 -0
  34. package/dist/cjs/formEngine/index.cjs +48 -0
  35. package/dist/cjs/formEngine/index.native.js +51 -0
  36. package/dist/cjs/formEngine/index.native.js.map +1 -0
  37. package/dist/cjs/formEngine/useFormEngine.cjs +387 -0
  38. package/dist/cjs/formEngine/useFormEngine.native.js +476 -0
  39. package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -0
  40. package/dist/cjs/index.cjs +19 -1
  41. package/dist/cjs/index.native.js +19 -1
  42. package/dist/cjs/index.native.js.map +1 -1
  43. package/dist/esm/ChartCard.mjs +27 -0
  44. package/dist/esm/ChartCard.mjs.map +1 -0
  45. package/dist/esm/ChartCard.native.js +33 -0
  46. package/dist/esm/ChartCard.native.js.map +1 -0
  47. package/dist/esm/FrappeChartCard.mjs +1 -1
  48. package/dist/esm/FrappeChartCard.native.js +1 -1
  49. package/dist/esm/FrappeChartCard.native.js.map +1 -1
  50. package/dist/esm/FrappeDashboard.mjs +6 -27
  51. package/dist/esm/FrappeDashboard.mjs.map +1 -1
  52. package/dist/esm/FrappeDashboard.native.js +6 -33
  53. package/dist/esm/FrappeDashboard.native.js.map +1 -1
  54. package/dist/esm/fields/CodeEditor/index.mjs +4 -0
  55. package/dist/esm/fields/CodeEditor/index.mjs.map +1 -1
  56. package/dist/esm/fields/CodeEditor/index.native.js +4 -0
  57. package/dist/esm/fields/CodeEditor/index.native.js.map +1 -1
  58. package/dist/esm/formEngine/createPrefill.mjs +11 -0
  59. package/dist/esm/formEngine/createPrefill.mjs.map +1 -0
  60. package/dist/esm/formEngine/createPrefill.native.js +11 -0
  61. package/dist/esm/formEngine/createPrefill.native.js.map +1 -0
  62. package/dist/esm/formEngine/dirtyTracking.mjs +28 -0
  63. package/dist/esm/formEngine/dirtyTracking.mjs.map +1 -0
  64. package/dist/esm/formEngine/dirtyTracking.native.js +47 -0
  65. package/dist/esm/formEngine/dirtyTracking.native.js.map +1 -0
  66. package/dist/esm/formEngine/doctypeMeta.mjs +2 -0
  67. package/dist/esm/formEngine/doctypeMeta.mjs.map +1 -0
  68. package/dist/esm/formEngine/doctypeMeta.native.js +2 -0
  69. package/dist/esm/formEngine/doctypeMeta.native.js.map +1 -0
  70. package/dist/esm/formEngine/fetchFrom.mjs +40 -0
  71. package/dist/esm/formEngine/fetchFrom.mjs.map +1 -0
  72. package/dist/esm/formEngine/fetchFrom.native.js +80 -0
  73. package/dist/esm/formEngine/fetchFrom.native.js.map +1 -0
  74. package/dist/esm/formEngine/fieldPermissions.mjs +28 -0
  75. package/dist/esm/formEngine/fieldPermissions.mjs.map +1 -0
  76. package/dist/esm/formEngine/fieldPermissions.native.js +50 -0
  77. package/dist/esm/formEngine/fieldPermissions.native.js.map +1 -0
  78. package/dist/esm/formEngine/formActions.mjs +146 -0
  79. package/dist/esm/formEngine/formActions.mjs.map +1 -0
  80. package/dist/esm/formEngine/formActions.native.js +153 -0
  81. package/dist/esm/formEngine/formActions.native.js.map +1 -0
  82. package/dist/esm/formEngine/formLayout.mjs +217 -0
  83. package/dist/esm/formEngine/formLayout.mjs.map +1 -0
  84. package/dist/esm/formEngine/formLayout.native.js +357 -0
  85. package/dist/esm/formEngine/formLayout.native.js.map +1 -0
  86. package/dist/esm/formEngine/index.mjs +8 -0
  87. package/dist/esm/formEngine/index.mjs.map +1 -0
  88. package/dist/esm/formEngine/index.native.js +8 -0
  89. package/dist/esm/formEngine/index.native.js.map +1 -0
  90. package/dist/esm/formEngine/useFormEngine.mjs +362 -0
  91. package/dist/esm/formEngine/useFormEngine.mjs.map +1 -0
  92. package/dist/esm/formEngine/useFormEngine.native.js +448 -0
  93. package/dist/esm/formEngine/useFormEngine.native.js.map +1 -0
  94. package/dist/esm/index.mjs +4 -2
  95. package/dist/esm/index.mjs.map +1 -1
  96. package/dist/esm/index.native.js +4 -2
  97. package/dist/esm/index.native.js.map +1 -1
  98. package/dist/jsx/ChartCard.mjs +27 -0
  99. package/dist/jsx/ChartCard.mjs.map +1 -0
  100. package/dist/jsx/ChartCard.native.js +72 -0
  101. package/dist/jsx/ChartCard.native.js.map +1 -0
  102. package/dist/jsx/FrappeChartCard.mjs +1 -1
  103. package/dist/jsx/FrappeChartCard.native.js +3 -3
  104. package/dist/jsx/FrappeChartCard.native.js.map +1 -1
  105. package/dist/jsx/FrappeDashboard.mjs +6 -27
  106. package/dist/jsx/FrappeDashboard.mjs.map +1 -1
  107. package/dist/jsx/FrappeDashboard.native.js +6 -33
  108. package/dist/jsx/FrappeDashboard.native.js.map +1 -1
  109. package/dist/jsx/fields/CodeEditor/index.mjs +4 -0
  110. package/dist/jsx/fields/CodeEditor/index.mjs.map +1 -1
  111. package/dist/jsx/fields/CodeEditor/index.native.js +4 -0
  112. package/dist/jsx/fields/CodeEditor/index.native.js.map +1 -1
  113. package/dist/jsx/formEngine/createPrefill.mjs +11 -0
  114. package/dist/jsx/formEngine/createPrefill.mjs.map +1 -0
  115. package/dist/jsx/formEngine/createPrefill.native.js +40 -0
  116. package/dist/jsx/formEngine/createPrefill.native.js.map +1 -0
  117. package/dist/jsx/formEngine/dirtyTracking.mjs +28 -0
  118. package/dist/jsx/formEngine/dirtyTracking.mjs.map +1 -0
  119. package/dist/jsx/formEngine/dirtyTracking.native.js +77 -0
  120. package/dist/jsx/formEngine/dirtyTracking.native.js.map +1 -0
  121. package/dist/jsx/formEngine/doctypeMeta.mjs +2 -0
  122. package/dist/jsx/formEngine/doctypeMeta.mjs.map +1 -0
  123. package/dist/jsx/formEngine/doctypeMeta.native.js +21 -0
  124. package/dist/jsx/formEngine/doctypeMeta.native.js.map +1 -0
  125. package/dist/jsx/formEngine/fetchFrom.mjs +40 -0
  126. package/dist/jsx/formEngine/fetchFrom.mjs.map +1 -0
  127. package/dist/jsx/formEngine/fetchFrom.native.js +110 -0
  128. package/dist/jsx/formEngine/fetchFrom.native.js.map +1 -0
  129. package/dist/jsx/formEngine/fieldPermissions.mjs +28 -0
  130. package/dist/jsx/formEngine/fieldPermissions.mjs.map +1 -0
  131. package/dist/jsx/formEngine/fieldPermissions.native.js +80 -0
  132. package/dist/jsx/formEngine/fieldPermissions.native.js.map +1 -0
  133. package/dist/jsx/formEngine/formActions.mjs +146 -0
  134. package/dist/jsx/formEngine/formActions.mjs.map +1 -0
  135. package/dist/jsx/formEngine/formActions.native.js +199 -0
  136. package/dist/jsx/formEngine/formActions.native.js.map +1 -0
  137. package/dist/jsx/formEngine/formLayout.mjs +217 -0
  138. package/dist/jsx/formEngine/formLayout.mjs.map +1 -0
  139. package/dist/jsx/formEngine/formLayout.native.js +388 -0
  140. package/dist/jsx/formEngine/formLayout.native.js.map +1 -0
  141. package/dist/jsx/formEngine/index.mjs +8 -0
  142. package/dist/jsx/formEngine/index.mjs.map +1 -0
  143. package/dist/jsx/formEngine/index.native.js +51 -0
  144. package/dist/jsx/formEngine/index.native.js.map +1 -0
  145. package/dist/jsx/formEngine/useFormEngine.mjs +362 -0
  146. package/dist/jsx/formEngine/useFormEngine.mjs.map +1 -0
  147. package/dist/jsx/formEngine/useFormEngine.native.js +476 -0
  148. package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -0
  149. package/dist/jsx/index.js +4 -2
  150. package/dist/jsx/index.js.map +1 -1
  151. package/dist/jsx/index.mjs +4 -2
  152. package/dist/jsx/index.mjs.map +1 -1
  153. package/dist/jsx/index.native.js +19 -1
  154. package/dist/jsx/index.native.js.map +1 -1
  155. package/package.json +23 -17
  156. package/src/ChartCard.tsx +31 -0
  157. package/src/FileBrowser/FileBrowser.spec.tsx +16 -0
  158. package/src/FileBrowser/FileBrowser.stories.tsx +18 -1
  159. package/src/FileBrowser/folderTree.spec.tsx +68 -0
  160. package/src/FrappeCalendar.stories.tsx +1 -2
  161. package/src/FrappeChartCard.stories.tsx +1 -1
  162. package/src/FrappeChartCard.tsx +1 -1
  163. package/src/FrappeDashboard.stories.tsx +6 -5
  164. package/src/FrappeDashboard.tsx +6 -33
  165. package/src/FrappeGantt.stories.tsx +1 -2
  166. package/src/FrappeList.stories.tsx +3 -10
  167. package/src/components/attachments.stories.tsx +9 -2
  168. package/src/dependsOn.ts +2 -2
  169. package/src/fields/CodeEditor/CodeEditor.spec.tsx +37 -0
  170. package/src/fields/CodeEditor/CodeEditor.stories.tsx +83 -66
  171. package/src/fields/CodeEditor/index.tsx +4 -0
  172. package/src/fields/DateRange/DateRange.spec.tsx +143 -0
  173. package/src/fields/FileUpload.spec.tsx +334 -0
  174. package/src/fields/FileUploadField/FileUploadField.spec.tsx +166 -0
  175. package/src/fields/HTML/Html.spec.tsx +179 -0
  176. package/src/fields/Icon/Icon.stories.tsx +138 -0
  177. package/src/fields/Link.stories.tsx +2 -0
  178. package/src/fields/LongText/LongText.spec.tsx +217 -0
  179. package/src/fields/OTPInput/OTPInput.spec.tsx +167 -0
  180. package/src/fields/Password/Password.stories.tsx +21 -0
  181. package/src/fields/Phone/Phone.spec.tsx +151 -0
  182. package/src/fields/ReadOnly/ReadOnly.spec.tsx +229 -0
  183. package/src/fields/SmallText/SmallText.spec.tsx +175 -0
  184. package/src/fields/shared/EditorPreviewPanes.spec.tsx +122 -0
  185. package/src/formEngine/createPrefill.ts +28 -0
  186. package/src/formEngine/dirtyTracking.spec.ts +91 -0
  187. package/src/formEngine/dirtyTracking.ts +64 -0
  188. package/src/formEngine/doctypeMeta.ts +117 -0
  189. package/src/formEngine/fetchFrom.spec.ts +92 -0
  190. package/src/formEngine/fetchFrom.ts +111 -0
  191. package/src/formEngine/fieldPermissions.spec.ts +61 -0
  192. package/src/formEngine/fieldPermissions.ts +68 -0
  193. package/src/formEngine/formActions.ts +285 -0
  194. package/src/formEngine/formLayout.spec.ts +373 -0
  195. package/src/formEngine/formLayout.ts +392 -0
  196. package/src/formEngine/index.ts +33 -0
  197. package/src/formEngine/seam.spec.ts +148 -0
  198. package/src/formEngine/useFormEngine.ts +496 -0
  199. package/src/frappeRemainder.designLaw.spec.ts +9 -0
  200. package/src/frappeViews.designLaw.spec.ts +1 -0
  201. package/src/index.spec.ts +7 -3
  202. package/src/index.ts +51 -1
  203. package/src/schemaForm/SchemaForm.spec.tsx +4 -1
  204. package/types/ChartCard.d.ts +13 -0
  205. package/types/ChartCard.d.ts.map +1 -0
  206. package/types/FrappeDashboard.d.ts +2 -10
  207. package/types/FrappeDashboard.d.ts.map +1 -1
  208. package/types/dependsOn.d.ts +2 -2
  209. package/types/fields/CodeEditor/index.d.ts.map +1 -1
  210. package/types/formEngine/createPrefill.d.ts +19 -0
  211. package/types/formEngine/createPrefill.d.ts.map +1 -0
  212. package/types/formEngine/dirtyTracking.d.ts +36 -0
  213. package/types/formEngine/dirtyTracking.d.ts.map +1 -0
  214. package/types/formEngine/doctypeMeta.d.ts +117 -0
  215. package/types/formEngine/doctypeMeta.d.ts.map +1 -0
  216. package/types/formEngine/fetchFrom.d.ts +43 -0
  217. package/types/formEngine/fetchFrom.d.ts.map +1 -0
  218. package/types/formEngine/fieldPermissions.d.ts +38 -0
  219. package/types/formEngine/fieldPermissions.d.ts.map +1 -0
  220. package/types/formEngine/formActions.d.ts +95 -0
  221. package/types/formEngine/formActions.d.ts.map +1 -0
  222. package/types/formEngine/formLayout.d.ts +91 -0
  223. package/types/formEngine/formLayout.d.ts.map +1 -0
  224. package/types/formEngine/index.d.ts +27 -0
  225. package/types/formEngine/index.d.ts.map +1 -0
  226. package/types/formEngine/useFormEngine.d.ts +61 -0
  227. package/types/formEngine/useFormEngine.d.ts.map +1 -0
  228. package/types/index.d.ts +4 -1
  229. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,476 @@
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 useFormEngine_exports = {};
26
+ __export(useFormEngine_exports, {
27
+ useFormEngine: () => useFormEngine
28
+ });
29
+ module.exports = __toCommonJS(useFormEngine_exports);
30
+ var import_frappe = require("@multiplatform.one/frappe");
31
+ var import_react = require("react");
32
+ var import_formActions = require("./formActions.native.js");
33
+ var import_formLayout = require("./formLayout.native.js");
34
+ var import_createPrefill = require("./createPrefill.native.js");
35
+ var import_dependsOn = require("../dependsOn.native.js");
36
+ var import_dirtyTracking = require("./dirtyTracking.native.js");
37
+ var import_fetchFrom = require("./fetchFrom.native.js");
38
+ var LAYOUT_TYPES = /* @__PURE__ */new Set(["Section Break", "Column Break", "Tab Break", "Fold"]);
39
+ function isConflictError(err) {
40
+ var _e_message;
41
+ var e = err;
42
+ if (!e) return false;
43
+ if (e.status === 409) return true;
44
+ if (e.exc_type === "TimestampMismatchError") return true;
45
+ return /TimestampMismatch|has been modified/i.test((_e_message = e.message) !== null && _e_message !== void 0 ? _e_message : "");
46
+ }
47
+ function extractServerError(err, fallback) {
48
+ var e = err;
49
+ if (e === null || e === void 0 ? void 0 : e._server_messages) {
50
+ try {
51
+ var messages = JSON.parse(e._server_messages);
52
+ var parsed = messages.map(function (msg) {
53
+ try {
54
+ var _JSON_parse_message;
55
+ return (_JSON_parse_message = JSON.parse(msg).message) !== null && _JSON_parse_message !== void 0 ? _JSON_parse_message : "";
56
+ } catch (unused) {
57
+ return msg;
58
+ }
59
+ }).filter(Boolean);
60
+ if (parsed.length > 0) return parsed.join("\n");
61
+ } catch (unused) {}
62
+ }
63
+ return (e === null || e === void 0 ? void 0 : e.message) || fallback;
64
+ }
65
+ function useFormEngine(connection, doctype, name, meta, translate) {
66
+ var _ref;
67
+ var isCreate = !name;
68
+ var [localDoc, setLocalDoc] = (0, import_react.useState)({});
69
+ var [baseline, setBaseline] = (0, import_react.useState)(void 0);
70
+ var [isSaving, setIsSaving] = (0, import_react.useState)(false);
71
+ var [errors, setErrors] = (0, import_react.useState)({});
72
+ var [conflict, setConflict] = (0, import_react.useState)(false);
73
+ var [wasDeleted, setWasDeleted] = (0, import_react.useState)(false);
74
+ var [currentUser, setCurrentUser] = (0, import_react.useState)("");
75
+ var everLoadedRef = (0, import_react.useRef)(false);
76
+ var seededRef = (0, import_react.useRef)(false);
77
+ var localDocRef = (0, import_react.useRef)(localDoc);
78
+ localDocRef.current = localDoc;
79
+ var baselineRef = (0, import_react.useRef)(baseline);
80
+ baselineRef.current = baseline;
81
+ var docCollection = (0, import_frappe.useFrappeCollection)(name ? connection : void 0, doctype, {
82
+ filters: name ? {
83
+ name
84
+ } : void 0
85
+ });
86
+ var {
87
+ data: rawDocData,
88
+ isLoading: isDocLoading
89
+ } = (0, import_frappe.useLiveQuery)(function (q) {
90
+ if (!docCollection || !name) return null;
91
+ return q.from({
92
+ _doc: docCollection
93
+ }).where(function (param) {
94
+ var {
95
+ _doc
96
+ } = param;
97
+ return (0, import_frappe.eq)(_doc.name, name);
98
+ });
99
+ }, [docCollection, name]);
100
+ var liveDoc = (0, import_react.useMemo)(function () {
101
+ var _arr_;
102
+ var arr = Array.isArray(rawDocData) ? rawDocData : rawDocData ? [rawDocData] : [];
103
+ return (_arr_ = arr[0]) !== null && _arr_ !== void 0 ? _arr_ : null;
104
+ }, [rawDocData]);
105
+ (0, import_react.useEffect)(function () {
106
+ if (!connection) return;
107
+ var cancelled = false;
108
+ (0, import_formActions.getLoggedUser)((0, import_formActions.createHttpClient)(connection)).then(function (user) {
109
+ if (!cancelled) setCurrentUser(user);
110
+ }).catch(function () {});
111
+ return function () {
112
+ cancelled = true;
113
+ };
114
+ }, [connection === null || connection === void 0 ? void 0 : connection.baseURL]);
115
+ (0, import_react.useEffect)(function () {
116
+ everLoadedRef.current = false;
117
+ seededRef.current = false;
118
+ setWasDeleted(false);
119
+ setConflict(false);
120
+ setErrors({});
121
+ setBaseline(void 0);
122
+ setLocalDoc({});
123
+ }, [doctype, name]);
124
+ (0, import_react.useEffect)(function () {
125
+ if (!isCreate || !meta || seededRef.current) return;
126
+ seededRef.current = true;
127
+ var defaults = (0, import_formLayout.buildCreateDefaults)(meta.fields, currentUser || void 0);
128
+ var prefill = (0, import_createPrefill.takeCreatePrefill)(doctype);
129
+ setLocalDoc({
130
+ ...defaults,
131
+ ...prefill,
132
+ doctype
133
+ });
134
+ },
135
+ // currentUser intentionally not a dep: seeding happens once per mount;
136
+ // a late-resolving user only matters for brand-new blank forms where
137
+ // the meta usually arrives later anyway.
138
+ [isCreate, meta, doctype]);
139
+ (0, import_react.useEffect)(function () {
140
+ if (!name) return;
141
+ if (liveDoc) {
142
+ everLoadedRef.current = true;
143
+ setWasDeleted(false);
144
+ var incoming = liveDoc;
145
+ var prevBaseline = baselineRef.current;
146
+ if (!prevBaseline) {
147
+ setBaseline(incoming);
148
+ setLocalDoc(incoming);
149
+ return;
150
+ }
151
+ var local = localDocRef.current;
152
+ var merged = {
153
+ ...incoming
154
+ };
155
+ var _iteratorNormalCompletion = true,
156
+ _didIteratorError = false,
157
+ _iteratorError = void 0;
158
+ try {
159
+ for (var _iterator = Object.keys(local)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
160
+ var key = _step.value;
161
+ if (!(0, import_dirtyTracking.isSameValue)(local[key], prevBaseline[key])) merged[key] = local[key];
162
+ }
163
+ } catch (err) {
164
+ _didIteratorError = true;
165
+ _iteratorError = err;
166
+ } finally {
167
+ try {
168
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
169
+ _iterator.return();
170
+ }
171
+ } finally {
172
+ if (_didIteratorError) {
173
+ throw _iteratorError;
174
+ }
175
+ }
176
+ }
177
+ setBaseline(incoming);
178
+ setLocalDoc(merged);
179
+ } else if (everLoadedRef.current && !isDocLoading) {
180
+ setWasDeleted(true);
181
+ }
182
+ }, [liveDoc, isDocLoading, name]);
183
+ var dirtyFields = (0, import_react.useMemo)(function () {
184
+ return (0, import_dirtyTracking.computeDirtyFields)(localDoc, baseline);
185
+ }, [localDoc, baseline]);
186
+ var isDirty = dirtyFields.length > 0;
187
+ var fetchMap = (0, import_react.useMemo)(function () {
188
+ return meta ? (0, import_fetchFrom.buildFetchMap)(meta.fields) : void 0;
189
+ }, [meta]);
190
+ var fetchStateRef = (0, import_react.useRef)({
191
+ meta: void 0,
192
+ connection: void 0
193
+ });
194
+ fetchStateRef.current = {
195
+ meta,
196
+ connection
197
+ };
198
+ var fetchMapRef = (0, import_react.useRef)(fetchMap);
199
+ fetchMapRef.current = fetchMap;
200
+ var runFetchFrom = (0, import_react.useCallback)(function (field, value) {
201
+ var _fetchMapRef_current;
202
+ var rules = (_fetchMapRef_current = fetchMapRef.current) === null || _fetchMapRef_current === void 0 ? void 0 : _fetchMapRef_current.get(field);
203
+ if (!rules || rules.length === 0) return;
204
+ var {
205
+ meta: currentMeta,
206
+ connection: currentConnection
207
+ } = fetchStateRef.current;
208
+ var linkField = currentMeta === null || currentMeta === void 0 ? void 0 : currentMeta.fields.find(function (f) {
209
+ return f.fieldname === field;
210
+ });
211
+ var targetDoctype = typeof (linkField === null || linkField === void 0 ? void 0 : linkField.options) === "string" ? linkField.options : "";
212
+ var applyPatch = function applyPatch2(fetched) {
213
+ setLocalDoc(function (prev) {
214
+ if (prev[field] !== value) return prev;
215
+ var patch = (0, import_fetchFrom.applyFetchedValues)(rules, fetched, prev);
216
+ return Object.keys(patch).length > 0 ? {
217
+ ...prev,
218
+ ...patch
219
+ } : prev;
220
+ });
221
+ };
222
+ if (value === void 0 || value === null || value === "") {
223
+ applyPatch({});
224
+ return;
225
+ }
226
+ if (!currentConnection || !targetDoctype || currentConnection.fixtures) return;
227
+ var sources = Array.from(new Set(rules.map(function (rule) {
228
+ return rule.source;
229
+ })));
230
+ (0, import_formActions.validateLink)((0, import_formActions.createHttpClient)(currentConnection), targetDoctype, String(value), sources).then(applyPatch).catch(function () {});
231
+ },
232
+ // Invalid link / no read perm on source — leave targets as-is;
233
+ // the server re-validates on save.
234
+ []);
235
+ var setValue = (0, import_react.useCallback)(function (field, value) {
236
+ setLocalDoc(function (prev) {
237
+ return {
238
+ ...prev,
239
+ [field]: value
240
+ };
241
+ });
242
+ setErrors(function (prev) {
243
+ if (!(field in prev)) return prev;
244
+ var next = {
245
+ ...prev
246
+ };
247
+ delete next[field];
248
+ return next;
249
+ });
250
+ runFetchFrom(field, value);
251
+ }, [runFetchFrom]);
252
+ var validate = (0, import_react.useCallback)(function () {
253
+ if (!meta) return {};
254
+ var doc = {
255
+ ...localDocRef.current,
256
+ __islocal: isCreate ? 1 : 0,
257
+ ...(currentUser ? {
258
+ __session_user: currentUser
259
+ } : {})
260
+ };
261
+ var validationErrors = {};
262
+ if (isCreate && (0, import_formLayout.isPromptNamed)(meta.autoname, meta.naming_rule) && (0, import_dirtyTracking.isEmptyValue)(doc.name)) {
263
+ validationErrors.name = translate("nameRequired", {
264
+ defaultValue: "Name is required"
265
+ });
266
+ }
267
+ var _iteratorNormalCompletion = true,
268
+ _didIteratorError = false,
269
+ _iteratorError = void 0;
270
+ try {
271
+ for (var _iterator = meta.fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
272
+ var field = _step.value;
273
+ if (field.hidden || LAYOUT_TYPES.has(field.fieldtype)) continue;
274
+ if (!(0, import_dependsOn.evaluateDependsOn)(field.depends_on, doc, true)) continue;
275
+ var required = !!field.reqd || !!field.mandatory_depends_on && (0, import_dependsOn.evaluateDependsOn)(field.mandatory_depends_on, doc, false);
276
+ if (!required) continue;
277
+ if ((0, import_dirtyTracking.isEmptyValue)(doc[field.fieldname])) {
278
+ validationErrors[field.fieldname] = translate("fieldRequired", {
279
+ defaultValue: "{{label}} is required",
280
+ label: field.label || field.fieldname
281
+ });
282
+ }
283
+ }
284
+ } catch (err) {
285
+ _didIteratorError = true;
286
+ _iteratorError = err;
287
+ } finally {
288
+ try {
289
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
290
+ _iterator.return();
291
+ }
292
+ } finally {
293
+ if (_didIteratorError) {
294
+ throw _iteratorError;
295
+ }
296
+ }
297
+ }
298
+ return validationErrors;
299
+ }, [meta, isCreate, currentUser, translate]);
300
+ var save = (0, import_react.useCallback)(async function () {
301
+ if (wasDeleted || !connection) return void 0;
302
+ var requiredErrors = validate();
303
+ if (Object.keys(requiredErrors).length > 0) {
304
+ setErrors(requiredErrors);
305
+ return void 0;
306
+ }
307
+ setIsSaving(true);
308
+ setErrors({});
309
+ try {
310
+ var _created_name;
311
+ if (name) {
312
+ var _baselineRef_current;
313
+ if (!docCollection) return void 0;
314
+ var local = localDocRef.current;
315
+ var base = (_baselineRef_current = baselineRef.current) !== null && _baselineRef_current !== void 0 ? _baselineRef_current : {};
316
+ var changed = Object.keys(local).filter(function (key) {
317
+ return key !== "doctype" && key !== "name" && !(0, import_dirtyTracking.isSameValue)(local[key], base[key]);
318
+ });
319
+ if (changed.length > 0) {
320
+ var tx = docCollection.update(name, function (draft) {
321
+ var _iteratorNormalCompletion = true,
322
+ _didIteratorError = false,
323
+ _iteratorError = void 0;
324
+ try {
325
+ for (var _iterator = changed[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
326
+ var key = _step.value;
327
+ draft[key] = local[key];
328
+ }
329
+ } catch (err) {
330
+ _didIteratorError = true;
331
+ _iteratorError = err;
332
+ } finally {
333
+ try {
334
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
335
+ _iterator.return();
336
+ }
337
+ } finally {
338
+ if (_didIteratorError) {
339
+ throw _iteratorError;
340
+ }
341
+ }
342
+ }
343
+ });
344
+ await tx.isPersisted.promise;
345
+ }
346
+ setConflict(false);
347
+ return name;
348
+ }
349
+ var {
350
+ doctype: _dt,
351
+ name: newName,
352
+ ...values
353
+ } = localDocRef.current;
354
+ if (typeof newName === "string" && newName.trim()) {
355
+ values.name = newName.trim();
356
+ }
357
+ var created = await (0, import_formActions.insertDoc)((0, import_formActions.createHttpClient)(connection), doctype, values);
358
+ return String((_created_name = created.name) !== null && _created_name !== void 0 ? _created_name : "");
359
+ } catch (err) {
360
+ if (isConflictError(err)) {
361
+ setConflict(true);
362
+ setErrors({
363
+ general: translate("conflictError", {
364
+ defaultValue: "This document was modified on the server after you opened it. Reload to get the latest version \u2014 your unsaved edits will be discarded."
365
+ })
366
+ });
367
+ } else {
368
+ setErrors({
369
+ general: extractServerError(err, translate("saveFailed", {
370
+ defaultValue: "Failed to save"
371
+ }))
372
+ });
373
+ }
374
+ return void 0;
375
+ } finally {
376
+ setIsSaving(false);
377
+ }
378
+ }, [wasDeleted, connection, validate, name, docCollection, doctype, translate]);
379
+ var submit = (0, import_react.useCallback)(async function () {
380
+ if (!connection || !name) return false;
381
+ setIsSaving(true);
382
+ setErrors({});
383
+ try {
384
+ var base = baselineRef.current;
385
+ if (!base) return false;
386
+ await (0, import_formActions.submitDoc)((0, import_formActions.createHttpClient)(connection), {
387
+ ...base,
388
+ doctype
389
+ });
390
+ return true;
391
+ } catch (err) {
392
+ if (isConflictError(err)) setConflict(true);
393
+ setErrors({
394
+ general: extractServerError(err, translate("submitFailed", {
395
+ defaultValue: "Failed to submit"
396
+ }))
397
+ });
398
+ return false;
399
+ } finally {
400
+ setIsSaving(false);
401
+ }
402
+ }, [connection, name, doctype, translate]);
403
+ var cancel = (0, import_react.useCallback)(async function () {
404
+ if (!connection || !name) return false;
405
+ setIsSaving(true);
406
+ setErrors({});
407
+ try {
408
+ await (0, import_formActions.cancelDoc)((0, import_formActions.createHttpClient)(connection), doctype, name);
409
+ return true;
410
+ } catch (err) {
411
+ setErrors({
412
+ general: extractServerError(err, translate("cancelFailed", {
413
+ defaultValue: "Failed to cancel"
414
+ }))
415
+ });
416
+ return false;
417
+ } finally {
418
+ setIsSaving(false);
419
+ }
420
+ }, [connection, name, doctype, translate]);
421
+ var remove = (0, import_react.useCallback)(async function () {
422
+ if (!docCollection || !name || wasDeleted) return false;
423
+ setIsSaving(true);
424
+ setErrors({});
425
+ try {
426
+ var tx = docCollection.delete(name);
427
+ await tx.isPersisted.promise;
428
+ return true;
429
+ } catch (err) {
430
+ setErrors({
431
+ general: extractServerError(err, translate("deleteFailed", {
432
+ defaultValue: "Failed to delete"
433
+ }))
434
+ });
435
+ return false;
436
+ } finally {
437
+ setIsSaving(false);
438
+ }
439
+ }, [docCollection, name, wasDeleted, translate]);
440
+ var reload = (0, import_react.useCallback)(function () {
441
+ setConflict(false);
442
+ setErrors({});
443
+ if (baselineRef.current) {
444
+ setLocalDoc(baselineRef.current);
445
+ } else if (!name) {
446
+ seededRef.current = false;
447
+ setLocalDoc({
448
+ doctype
449
+ });
450
+ }
451
+ }, [doctype, name]);
452
+ var docstatus = Number((_ref = baseline === null || baseline === void 0 ? void 0 : baseline.docstatus) !== null && _ref !== void 0 ? _ref : 0);
453
+ return {
454
+ doc: localDoc,
455
+ baseline,
456
+ isLoading: !!name && isDocLoading && !everLoadedRef.current,
457
+ notFound: !!name && !isDocLoading && !liveDoc && !everLoadedRef.current,
458
+ wasDeleted,
459
+ isCreate,
460
+ isDirty,
461
+ dirtyFields,
462
+ isSaving,
463
+ errors,
464
+ conflict,
465
+ currentUser,
466
+ docstatus,
467
+ setValue,
468
+ save,
469
+ submit,
470
+ cancel,
471
+ remove,
472
+ reload,
473
+ validate
474
+ };
475
+ }
476
+ //# sourceMappingURL=useFormEngine.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useFormEngine_exports","__export","useFormEngine","module","exports","import_frappe","require","import_react","import_formActions","import_formLayout","import_createPrefill","import_dependsOn","import_dirtyTracking","import_fetchFrom","LAYOUT_TYPES","Set","isConflictError","err","_e_message","e","status","exc_type","test","message","extractServerError","fallback","_server_messages","messages","JSON","parse","parsed","map","msg","_JSON_parse_message","unused","filter","Boolean","length","join","connection","doctype","name","meta","translate","_ref","isCreate","localDoc","setLocalDoc","useState","baseline","setBaseline","isSaving","setIsSaving","errors","setErrors","conflict","setConflict","wasDeleted","setWasDeleted","currentUser","setCurrentUser","everLoadedRef","useRef","seededRef","localDocRef","current","baselineRef","docCollection","useFrappeCollection","filters","data","rawDocData","isLoading","isDocLoading","useLiveQuery","q","from","_doc","where","param","eq","liveDoc","useMemo","_arr_","arr","Array","isArray","useEffect","cancelled","getLoggedUser","createHttpClient","then","user","catch","baseURL","defaults","buildCreateDefaults","fields","prefill","takeCreatePrefill","incoming","prevBaseline","local","merged","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","keys","Symbol","iterator","_step","next","done","key","isSameValue","return","dirtyFields","computeDirtyFields","isDirty","fetchMap","buildFetchMap","fetchStateRef","fetchMapRef","runFetchFrom","useCallback","field","_fetchMapRef_current","rules","get","currentMeta","currentConnection","linkField","find","f","fieldname","targetDoctype","options","applyPatch","applyPatch2","fetched","prev","patch","applyFetchedValues","fixtures","sources","rule","source","validateLink","String","setValue","validate","doc","__islocal","__session_user","validationErrors","isPromptNamed","autoname","naming_rule","isEmptyValue","defaultValue","hidden","has","fieldtype","evaluateDependsOn","depends_on","required","reqd","mandatory_depends_on","label","save","requiredErrors","_created_name","_baselineRef_current","base","changed","tx","update","draft"],"sources":["../../../src/formEngine/useFormEngine.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -36,7 +36,7 @@ __export(index_exports, {
36
36
  AttachLibrary: () => import_AttachLibrary.AttachLibrary,
37
37
  Awesomebar: () => import_awesomebar.Awesomebar,
38
38
  Barcode: () => import_Barcode.Barcode,
39
- ChartCard: () => import_FrappeDashboard.ChartCard,
39
+ ChartCard: () => import_ChartCard.ChartCard,
40
40
  Check: () => import_Check.Check,
41
41
  CodeEditorField: () => import_CodeEditor.CodeEditorField,
42
42
  Color: () => import_Color.Color,
@@ -114,14 +114,23 @@ __export(index_exports, {
114
114
  addToFavorites: () => import_DeskSidebar.addToFavorites,
115
115
  addToRecent: () => import_DeskSidebar.addToRecent,
116
116
  aggregateData: () => import_components.aggregateData,
117
+ applyFetchedValues: () => import_formEngine.applyFetchedValues,
117
118
  applyFieldOrder: () => import_schemaForm.applyFieldOrder,
118
119
  applyOrderToSchema: () => import_schemaForm.applyOrderToSchema,
119
120
  buildAssignmentTodo: () => import_FrappeAssignment.buildAssignmentTodo,
121
+ buildCopyValues: () => import_formEngine.buildCopyValues,
122
+ buildCreateDefaults: () => import_formEngine.buildCreateDefaults,
123
+ buildFetchMap: () => import_formEngine.buildFetchMap,
124
+ buildFormTabs: () => import_formEngine.buildFormTabs,
125
+ buildPermLevelMatrix: () => import_formEngine.buildPermLevelMatrix,
120
126
  calculatePercentageChange: () => import_components.calculatePercentageChange,
121
127
  calculateTrend: () => import_components.calculateTrend,
128
+ canReadLevel: () => import_formEngine.canReadLevel,
129
+ canWriteLevel: () => import_formEngine.canWriteLevel,
122
130
  childFieldsToColumns: () => import_fieldRegistry.childFieldsToColumns,
123
131
  compactFilterValues: () => import_FrappeReportView.compactFilterValues,
124
132
  compileDependsOn: () => import_dependsOn.compileDependsOn,
133
+ computeDirtyFields: () => import_formEngine.computeDirtyFields,
125
134
  deriveAssignments: () => import_FrappeAssignment.deriveAssignments,
126
135
  docFieldsToFilterFields: () => import_filterFields.docFieldsToFilterFields,
127
136
  evaluateDependsOn: () => import_dependsOn.evaluateDependsOn,
@@ -134,7 +143,11 @@ __export(index_exports, {
134
143
  frappeStoryBaseUrl: () => import_frappeStoryTarget.frappeStoryBaseUrl,
135
144
  getFieldComponent: () => import_fieldRegistry.getFieldComponent,
136
145
  initDefaultRegistry: () => import_fieldRegistry.initDefaultRegistry,
146
+ isEmptyValue: () => import_formEngine.isEmptyValue,
137
147
  isFacetFilterActive: () => import_useFrappeFacets.isFacetFilterActive,
148
+ isFetchLocked: () => import_formEngine.isFetchLocked,
149
+ isPromptNamed: () => import_formEngine.isPromptNamed,
150
+ isSameValue: () => import_formEngine.isSameValue,
138
151
  normalizeReportColumn: () => import_FrappeReportView.normalizeReportColumn,
139
152
  normalizeReportPayload: () => import_FrappeReportView.normalizeReportPayload,
140
153
  normalizeReportRows: () => import_FrappeReportView.normalizeReportRows,
@@ -150,9 +163,12 @@ __export(index_exports, {
150
163
  schemaToWizardSteps: () => import_SchemaWizard.schemaToWizardSteps,
151
164
  scrubFieldname: () => import_FrappeReportView.scrubFieldname,
152
165
  scrubUserFacetRows: () => import_useFrappeFacets.scrubUserFacetRows,
166
+ setCreatePrefill: () => import_formEngine.setCreatePrefill,
167
+ takeCreatePrefill: () => import_formEngine.takeCreatePrefill,
153
168
  toggleFacetFilter: () => import_useFrappeFacets.toggleFacetFilter,
154
169
  toggleLikedBy: () => import_FrappeLikedBy.toggleLikedBy,
155
170
  useFieldResolver: () => import_fieldOverrides.useFieldResolver,
171
+ useFormEngine: () => import_formEngine.useFormEngine,
156
172
  useFrappeAggregate: () => import_useFrappeAggregate.useFrappeAggregate,
157
173
  useFrappeCollection: () => import_frappe.useFrappeCollection,
158
174
  useFrappeCommentActions: () => import_commentActions.useFrappeCommentActions,
@@ -180,6 +196,7 @@ var import_FrappeGantt = require("./FrappeGantt.cjs");
180
196
  var import_frappeEventColor = require("./frappeEventColor.cjs");
181
197
  var import_FrappeReportBuilder = require("./FrappeReportBuilder.cjs");
182
198
  var import_FrappeDashboard = require("./FrappeDashboard.cjs");
199
+ var import_ChartCard = require("./ChartCard.cjs");
183
200
  var import_components = require("@multiplatform.one/components");
184
201
  var import_FrappeKPICard = require("./FrappeKPICard.cjs");
185
202
  var import_FrappeChartCard = require("./FrappeChartCard.cjs");
@@ -247,6 +264,7 @@ var import_commentActions = require("./commentActions.cjs");
247
264
  var import_useFrappePagination = require("./useFrappePagination.cjs");
248
265
  var import_frappe = require("@multiplatform.one/frappe");
249
266
  var import_FrappeReportView = require("./FrappeReportView.cjs");
267
+ var import_formEngine = require("./formEngine/index.cjs");
250
268
  const TextEditor = (0, import_react.lazy)(() => import("./fields/TextEditor").then(m => ({
251
269
  default: m.TextEditor
252
270
  })));
@@ -38,7 +38,7 @@ __export(index_exports, {
38
38
  AttachLibrary: () => import_AttachLibrary.AttachLibrary,
39
39
  Awesomebar: () => import_awesomebar.Awesomebar,
40
40
  Barcode: () => import_Barcode.Barcode,
41
- ChartCard: () => import_FrappeDashboard.ChartCard,
41
+ ChartCard: () => import_ChartCard.ChartCard,
42
42
  Check: () => import_Check.Check,
43
43
  CodeEditorField: () => import_CodeEditor.CodeEditorField,
44
44
  Color: () => import_Color.Color,
@@ -116,14 +116,23 @@ __export(index_exports, {
116
116
  addToFavorites: () => import_DeskSidebar.addToFavorites,
117
117
  addToRecent: () => import_DeskSidebar.addToRecent,
118
118
  aggregateData: () => import_components.aggregateData,
119
+ applyFetchedValues: () => import_formEngine.applyFetchedValues,
119
120
  applyFieldOrder: () => import_schemaForm.applyFieldOrder,
120
121
  applyOrderToSchema: () => import_schemaForm.applyOrderToSchema,
121
122
  buildAssignmentTodo: () => import_FrappeAssignment.buildAssignmentTodo,
123
+ buildCopyValues: () => import_formEngine.buildCopyValues,
124
+ buildCreateDefaults: () => import_formEngine.buildCreateDefaults,
125
+ buildFetchMap: () => import_formEngine.buildFetchMap,
126
+ buildFormTabs: () => import_formEngine.buildFormTabs,
127
+ buildPermLevelMatrix: () => import_formEngine.buildPermLevelMatrix,
122
128
  calculatePercentageChange: () => import_components.calculatePercentageChange,
123
129
  calculateTrend: () => import_components.calculateTrend,
130
+ canReadLevel: () => import_formEngine.canReadLevel,
131
+ canWriteLevel: () => import_formEngine.canWriteLevel,
124
132
  childFieldsToColumns: () => import_fieldRegistry.childFieldsToColumns,
125
133
  compactFilterValues: () => import_FrappeReportView.compactFilterValues,
126
134
  compileDependsOn: () => import_dependsOn.compileDependsOn,
135
+ computeDirtyFields: () => import_formEngine.computeDirtyFields,
127
136
  deriveAssignments: () => import_FrappeAssignment.deriveAssignments,
128
137
  docFieldsToFilterFields: () => import_filterFields.docFieldsToFilterFields,
129
138
  evaluateDependsOn: () => import_dependsOn.evaluateDependsOn,
@@ -136,7 +145,11 @@ __export(index_exports, {
136
145
  frappeStoryBaseUrl: () => import_frappeStoryTarget.frappeStoryBaseUrl,
137
146
  getFieldComponent: () => import_fieldRegistry.getFieldComponent,
138
147
  initDefaultRegistry: () => import_fieldRegistry.initDefaultRegistry,
148
+ isEmptyValue: () => import_formEngine.isEmptyValue,
139
149
  isFacetFilterActive: () => import_useFrappeFacets.isFacetFilterActive,
150
+ isFetchLocked: () => import_formEngine.isFetchLocked,
151
+ isPromptNamed: () => import_formEngine.isPromptNamed,
152
+ isSameValue: () => import_formEngine.isSameValue,
140
153
  normalizeReportColumn: () => import_FrappeReportView.normalizeReportColumn,
141
154
  normalizeReportPayload: () => import_FrappeReportView.normalizeReportPayload,
142
155
  normalizeReportRows: () => import_FrappeReportView.normalizeReportRows,
@@ -152,9 +165,12 @@ __export(index_exports, {
152
165
  schemaToWizardSteps: () => import_SchemaWizard.schemaToWizardSteps,
153
166
  scrubFieldname: () => import_FrappeReportView.scrubFieldname,
154
167
  scrubUserFacetRows: () => import_useFrappeFacets.scrubUserFacetRows,
168
+ setCreatePrefill: () => import_formEngine.setCreatePrefill,
169
+ takeCreatePrefill: () => import_formEngine.takeCreatePrefill,
155
170
  toggleFacetFilter: () => import_useFrappeFacets.toggleFacetFilter,
156
171
  toggleLikedBy: () => import_FrappeLikedBy.toggleLikedBy,
157
172
  useFieldResolver: () => import_fieldOverrides.useFieldResolver,
173
+ useFormEngine: () => import_formEngine.useFormEngine,
158
174
  useFrappeAggregate: () => import_useFrappeAggregate.useFrappeAggregate,
159
175
  useFrappeCollection: () => import_frappe.useFrappeCollection,
160
176
  useFrappeCommentActions: () => import_commentActions.useFrappeCommentActions,
@@ -182,6 +198,7 @@ var import_FrappeGantt = require("./FrappeGantt.native.js");
182
198
  var import_frappeEventColor = require("./frappeEventColor.native.js");
183
199
  var import_FrappeReportBuilder = require("./FrappeReportBuilder.native.js");
184
200
  var import_FrappeDashboard = require("./FrappeDashboard.native.js");
201
+ var import_ChartCard = require("./ChartCard.native.js");
185
202
  var import_components = require("@multiplatform.one/components");
186
203
  var import_FrappeKPICard = require("./FrappeKPICard.native.js");
187
204
  var import_FrappeChartCard = require("./FrappeChartCard.native.js");
@@ -249,6 +266,7 @@ var import_commentActions = require("./commentActions.native.js");
249
266
  var import_useFrappePagination = require("./useFrappePagination.native.js");
250
267
  var import_frappe = require("@multiplatform.one/frappe");
251
268
  var import_FrappeReportView = require("./FrappeReportView.native.js");
269
+ var import_formEngine = require("./formEngine/index.native.js");
252
270
  var TextEditor = (0, import_react.lazy)(function () {
253
271
  return import("./fields/TextEditor").then(function (m) {
254
272
  return {