@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.
- package/dist/cjs/FrappeCalendar.cjs +3 -2
- package/dist/cjs/FrappeCalendar.native.js +3 -2
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeForm.cjs +148 -464
- package/dist/cjs/FrappeForm.native.js +152 -633
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeListView.cjs +5 -27
- package/dist/cjs/FrappeListView.native.js +11 -32
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +523 -309
- package/dist/cjs/FrappeReportBuilder.native.js +658 -353
- package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
- package/dist/cjs/FrappeReportView.cjs +35 -234
- package/dist/cjs/FrappeReportView.native.js +39 -283
- package/dist/cjs/FrappeReportView.native.js.map +1 -1
- package/dist/cjs/dependsOn.cjs +2 -2
- package/dist/cjs/dependsOn.native.js +1 -2
- package/dist/cjs/dependsOn.native.js.map +1 -1
- package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +2 -2
- package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/cjs/formEngine/docPermissions.cjs +20 -0
- package/dist/cjs/formEngine/docPermissions.native.js +69 -0
- package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
- package/dist/cjs/formEngine/index.cjs +2 -0
- package/dist/cjs/formEngine/index.native.js +2 -0
- package/dist/cjs/formEngine/index.native.js.map +1 -1
- package/dist/cjs/index.cjs +67 -7
- package/dist/cjs/index.native.js +67 -7
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/liveErrors.cjs +8 -2
- package/dist/cjs/liveErrors.native.js +8 -2
- package/dist/cjs/liveErrors.native.js.map +1 -1
- package/dist/cjs/measures.cjs +31 -0
- package/dist/cjs/measures.native.js +34 -0
- package/dist/cjs/measures.native.js.map +1 -0
- package/dist/cjs/recordShape.cjs +103 -0
- package/dist/cjs/recordShape.native.js +115 -0
- package/dist/cjs/recordShape.native.js.map +1 -0
- package/dist/cjs/report/ReportGrid.cjs +453 -0
- package/dist/cjs/report/ReportGrid.native.js +510 -0
- package/dist/cjs/report/ReportGrid.native.js.map +1 -0
- package/dist/cjs/report/ReportViewToolbar.cjs +253 -0
- package/dist/cjs/report/ReportViewToolbar.native.js +303 -0
- package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/cjs/report/queryReport.cjs +444 -0
- package/dist/cjs/report/queryReport.native.js +588 -0
- package/dist/cjs/report/queryReport.native.js.map +1 -0
- package/dist/cjs/report/queryReportColumns.cjs +131 -0
- package/dist/cjs/report/queryReportColumns.native.js +159 -0
- package/dist/cjs/report/queryReportColumns.native.js.map +1 -0
- package/dist/cjs/report/reportViewModel.cjs +386 -0
- package/dist/cjs/report/reportViewModel.native.js +657 -0
- package/dist/cjs/report/reportViewModel.native.js.map +1 -0
- package/dist/cjs/report/savedReports.cjs +137 -0
- package/dist/cjs/report/savedReports.native.js +169 -0
- package/dist/cjs/report/savedReports.native.js.map +1 -0
- package/dist/cjs/report/useFrappeReport.cjs +184 -0
- package/dist/cjs/report/useFrappeReport.native.js +214 -0
- package/dist/cjs/report/useFrappeReport.native.js.map +1 -0
- package/dist/cjs/report/useQueryReport.cjs +201 -0
- package/dist/cjs/report/useQueryReport.native.js +233 -0
- package/dist/cjs/report/useQueryReport.native.js.map +1 -0
- package/dist/cjs/useFrappeForm.cjs +558 -0
- package/dist/cjs/useFrappeForm.native.js +714 -0
- package/dist/cjs/useFrappeForm.native.js.map +1 -0
- package/dist/esm/FrappeCalendar.mjs +4 -3
- package/dist/esm/FrappeCalendar.mjs.map +1 -1
- package/dist/esm/FrappeCalendar.native.js +4 -3
- package/dist/esm/FrappeCalendar.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +151 -467
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +155 -636
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeListView.mjs +6 -28
- package/dist/esm/FrappeListView.mjs.map +1 -1
- package/dist/esm/FrappeListView.native.js +12 -33
- package/dist/esm/FrappeListView.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +526 -312
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +661 -356
- package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
- package/dist/esm/FrappeReportView.mjs +30 -229
- package/dist/esm/FrappeReportView.mjs.map +1 -1
- package/dist/esm/FrappeReportView.native.js +34 -278
- package/dist/esm/FrappeReportView.native.js.map +1 -1
- package/dist/esm/dependsOn.mjs +2 -2
- package/dist/esm/dependsOn.mjs.map +1 -1
- package/dist/esm/dependsOn.native.js +1 -2
- package/dist/esm/dependsOn.native.js.map +1 -1
- package/dist/esm/fields/shared/EditorPreviewPanes.mjs +2 -2
- package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
- package/dist/esm/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/esm/formEngine/docPermissions.mjs +19 -1
- package/dist/esm/formEngine/docPermissions.mjs.map +1 -1
- package/dist/esm/formEngine/docPermissions.native.js +68 -1
- package/dist/esm/formEngine/docPermissions.native.js.map +1 -1
- package/dist/esm/formEngine/index.mjs +2 -2
- package/dist/esm/formEngine/index.mjs.map +1 -1
- package/dist/esm/formEngine/index.native.js +2 -2
- package/dist/esm/formEngine/index.native.js.map +1 -1
- package/dist/esm/index.mjs +16 -4
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +16 -4
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/liveErrors.mjs +8 -3
- package/dist/esm/liveErrors.mjs.map +1 -1
- package/dist/esm/liveErrors.native.js +8 -3
- package/dist/esm/liveErrors.native.js.map +1 -1
- package/dist/esm/measures.mjs +5 -0
- package/dist/esm/measures.mjs.map +1 -0
- package/dist/esm/measures.native.js +5 -0
- package/dist/esm/measures.native.js.map +1 -0
- package/dist/esm/recordShape.mjs +74 -0
- package/dist/esm/recordShape.mjs.map +1 -0
- package/dist/esm/recordShape.native.js +83 -0
- package/dist/esm/recordShape.native.js.map +1 -0
- package/dist/esm/report/ReportGrid.mjs +428 -0
- package/dist/esm/report/ReportGrid.mjs.map +1 -0
- package/dist/esm/report/ReportGrid.native.js +471 -0
- package/dist/esm/report/ReportGrid.native.js.map +1 -0
- package/dist/esm/report/ReportViewToolbar.mjs +228 -0
- package/dist/esm/report/ReportViewToolbar.mjs.map +1 -0
- package/dist/esm/report/ReportViewToolbar.native.js +264 -0
- package/dist/esm/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/esm/report/queryReport.mjs +404 -0
- package/dist/esm/report/queryReport.mjs.map +1 -0
- package/dist/esm/report/queryReport.native.js +545 -0
- package/dist/esm/report/queryReport.native.js.map +1 -0
- package/dist/esm/report/queryReportColumns.mjs +105 -0
- package/dist/esm/report/queryReportColumns.mjs.map +1 -0
- package/dist/esm/report/queryReportColumns.native.js +119 -0
- package/dist/esm/report/queryReportColumns.native.js.map +1 -0
- package/dist/esm/report/reportViewModel.mjs +343 -0
- package/dist/esm/report/reportViewModel.mjs.map +1 -0
- package/dist/esm/report/reportViewModel.native.js +611 -0
- package/dist/esm/report/reportViewModel.native.js.map +1 -0
- package/dist/esm/report/savedReports.mjs +112 -0
- package/dist/esm/report/savedReports.mjs.map +1 -0
- package/dist/esm/report/savedReports.native.js +141 -0
- package/dist/esm/report/savedReports.native.js.map +1 -0
- package/dist/esm/report/useFrappeReport.mjs +158 -0
- package/dist/esm/report/useFrappeReport.mjs.map +1 -0
- package/dist/esm/report/useFrappeReport.native.js +185 -0
- package/dist/esm/report/useFrappeReport.native.js.map +1 -0
- package/dist/esm/report/useQueryReport.mjs +176 -0
- package/dist/esm/report/useQueryReport.mjs.map +1 -0
- package/dist/esm/report/useQueryReport.native.js +205 -0
- package/dist/esm/report/useQueryReport.native.js.map +1 -0
- package/dist/esm/useFrappeForm.mjs +533 -0
- package/dist/esm/useFrappeForm.mjs.map +1 -0
- package/dist/esm/useFrappeForm.native.js +686 -0
- package/dist/esm/useFrappeForm.native.js.map +1 -0
- package/dist/jsx/FrappeCalendar.mjs +4 -3
- package/dist/jsx/FrappeCalendar.mjs.map +1 -1
- package/dist/jsx/FrappeCalendar.native.js +3 -2
- package/dist/jsx/FrappeCalendar.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +151 -467
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +152 -633
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeListView.mjs +6 -28
- package/dist/jsx/FrappeListView.mjs.map +1 -1
- package/dist/jsx/FrappeListView.native.js +11 -32
- package/dist/jsx/FrappeListView.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +526 -312
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +658 -353
- package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
- package/dist/jsx/FrappeReportView.mjs +30 -229
- package/dist/jsx/FrappeReportView.mjs.map +1 -1
- package/dist/jsx/FrappeReportView.native.js +39 -283
- package/dist/jsx/FrappeReportView.native.js.map +1 -1
- package/dist/jsx/dependsOn.mjs +2 -2
- package/dist/jsx/dependsOn.mjs.map +1 -1
- package/dist/jsx/dependsOn.native.js +1 -2
- package/dist/jsx/dependsOn.native.js.map +1 -1
- package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +2 -2
- package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
- package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +2 -2
- package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/jsx/formEngine/docPermissions.mjs +19 -1
- package/dist/jsx/formEngine/docPermissions.mjs.map +1 -1
- package/dist/jsx/formEngine/docPermissions.native.js +69 -0
- package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
- package/dist/jsx/formEngine/index.mjs +2 -2
- package/dist/jsx/formEngine/index.mjs.map +1 -1
- package/dist/jsx/formEngine/index.native.js +2 -0
- package/dist/jsx/formEngine/index.native.js.map +1 -1
- package/dist/jsx/index.js +16 -4
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +16 -4
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +67 -7
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/liveErrors.mjs +8 -3
- package/dist/jsx/liveErrors.mjs.map +1 -1
- package/dist/jsx/liveErrors.native.js +8 -2
- package/dist/jsx/liveErrors.native.js.map +1 -1
- package/dist/jsx/measures.mjs +5 -0
- package/dist/jsx/measures.mjs.map +1 -0
- package/dist/jsx/measures.native.js +34 -0
- package/dist/jsx/measures.native.js.map +1 -0
- package/dist/jsx/recordShape.mjs +74 -0
- package/dist/jsx/recordShape.mjs.map +1 -0
- package/dist/jsx/recordShape.native.js +115 -0
- package/dist/jsx/recordShape.native.js.map +1 -0
- package/dist/jsx/report/ReportGrid.mjs +428 -0
- package/dist/jsx/report/ReportGrid.mjs.map +1 -0
- package/dist/jsx/report/ReportGrid.native.js +510 -0
- package/dist/jsx/report/ReportGrid.native.js.map +1 -0
- package/dist/jsx/report/ReportViewToolbar.mjs +228 -0
- package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -0
- package/dist/jsx/report/ReportViewToolbar.native.js +303 -0
- package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -0
- package/dist/jsx/report/queryReport.mjs +404 -0
- package/dist/jsx/report/queryReport.mjs.map +1 -0
- package/dist/jsx/report/queryReport.native.js +588 -0
- package/dist/jsx/report/queryReport.native.js.map +1 -0
- package/dist/jsx/report/queryReportColumns.mjs +105 -0
- package/dist/jsx/report/queryReportColumns.mjs.map +1 -0
- package/dist/jsx/report/queryReportColumns.native.js +159 -0
- package/dist/jsx/report/queryReportColumns.native.js.map +1 -0
- package/dist/jsx/report/reportViewModel.mjs +343 -0
- package/dist/jsx/report/reportViewModel.mjs.map +1 -0
- package/dist/jsx/report/reportViewModel.native.js +657 -0
- package/dist/jsx/report/reportViewModel.native.js.map +1 -0
- package/dist/jsx/report/savedReports.mjs +112 -0
- package/dist/jsx/report/savedReports.mjs.map +1 -0
- package/dist/jsx/report/savedReports.native.js +169 -0
- package/dist/jsx/report/savedReports.native.js.map +1 -0
- package/dist/jsx/report/useFrappeReport.mjs +158 -0
- package/dist/jsx/report/useFrappeReport.mjs.map +1 -0
- package/dist/jsx/report/useFrappeReport.native.js +214 -0
- package/dist/jsx/report/useFrappeReport.native.js.map +1 -0
- package/dist/jsx/report/useQueryReport.mjs +176 -0
- package/dist/jsx/report/useQueryReport.mjs.map +1 -0
- package/dist/jsx/report/useQueryReport.native.js +233 -0
- package/dist/jsx/report/useQueryReport.native.js.map +1 -0
- package/dist/jsx/useFrappeForm.mjs +533 -0
- package/dist/jsx/useFrappeForm.mjs.map +1 -0
- package/dist/jsx/useFrappeForm.native.js +714 -0
- package/dist/jsx/useFrappeForm.native.js.map +1 -0
- package/package.json +16 -16
- package/src/FrappeCalendar.tsx +8 -2
- package/src/FrappeForm.stories.tsx +52 -0
- package/src/FrappeForm.tsx +176 -565
- package/src/FrappeListView.cards.stories.tsx +3 -6
- package/src/FrappeListView.tsx +15 -55
- package/src/FrappeReportBuilder.stories.tsx +34 -7
- package/src/FrappeReportBuilder.tsx +790 -380
- package/src/FrappeReportView.spec.tsx +10 -6
- package/src/FrappeReportView.stories.tsx +20 -1
- package/src/FrappeReportView.tsx +89 -415
- package/src/dependsOn.ts +4 -1
- package/src/fields/shared/EditorPreviewPanes.tsx +2 -2
- package/src/formEngine/docPermissions.spec.ts +36 -1
- package/src/formEngine/docPermissions.ts +34 -0
- package/src/formEngine/index.ts +8 -1
- package/src/frappeRemainder.designLaw.spec.ts +9 -1
- package/src/frappeRoutes.spec.tsx +9 -0
- package/src/frappeViews.designLaw.spec.ts +15 -2
- package/src/guestFallback.spec.tsx +236 -0
- package/src/index.ts +117 -16
- package/src/liveErrors.spec.ts +10 -0
- package/src/liveErrors.ts +16 -3
- package/src/measures.ts +11 -0
- package/src/recordShape.spec.ts +100 -0
- package/src/recordShape.ts +133 -0
- package/src/report/ReportGrid.spec.tsx +175 -0
- package/src/report/ReportGrid.tsx +530 -0
- package/src/report/ReportViewToolbar.spec.tsx +90 -0
- package/src/report/ReportViewToolbar.tsx +314 -0
- package/src/report/queryReport.spec.ts +483 -0
- package/src/report/queryReport.ts +722 -0
- package/src/report/queryReportColumns.tsx +123 -0
- package/src/report/reportViewModel.spec.ts +393 -0
- package/src/report/reportViewModel.ts +617 -0
- package/src/report/savedReports.ts +172 -0
- package/src/report/seam.spec.ts +216 -0
- package/src/report/useFrappeReport.ts +241 -0
- package/src/report/useQueryReport.spec.tsx +131 -0
- package/src/report/useQueryReport.ts +309 -0
- package/src/useFrappeForm.spec.tsx +209 -0
- package/src/useFrappeForm.ts +778 -0
- package/types/FrappeCalendar.d.ts.map +1 -1
- package/types/FrappeForm.d.ts +21 -1
- package/types/FrappeForm.d.ts.map +1 -1
- package/types/FrappeListView.d.ts.map +1 -1
- package/types/FrappeReportBuilder.d.ts +66 -16
- package/types/FrappeReportBuilder.d.ts.map +1 -1
- package/types/FrappeReportView.d.ts +9 -127
- package/types/FrappeReportView.d.ts.map +1 -1
- package/types/dependsOn.d.ts.map +1 -1
- package/types/formEngine/docPermissions.d.ts +14 -0
- package/types/formEngine/docPermissions.d.ts.map +1 -1
- package/types/formEngine/index.d.ts +1 -1
- package/types/formEngine/index.d.ts.map +1 -1
- package/types/index.d.ts +15 -3
- package/types/index.d.ts.map +1 -1
- package/types/liveErrors.d.ts +9 -1
- package/types/liveErrors.d.ts.map +1 -1
- package/types/measures.d.ts +3 -0
- package/types/measures.d.ts.map +1 -0
- package/types/recordShape.d.ts +45 -0
- package/types/recordShape.d.ts.map +1 -0
- package/types/report/ReportGrid.d.ts +20 -0
- package/types/report/ReportGrid.d.ts.map +1 -0
- package/types/report/ReportViewToolbar.d.ts +31 -0
- package/types/report/ReportViewToolbar.d.ts.map +1 -0
- package/types/report/queryReport.d.ts +181 -0
- package/types/report/queryReport.d.ts.map +1 -0
- package/types/report/queryReportColumns.d.ts +12 -0
- package/types/report/queryReportColumns.d.ts.map +1 -0
- package/types/report/reportViewModel.d.ts +146 -0
- package/types/report/reportViewModel.d.ts.map +1 -0
- package/types/report/savedReports.d.ts +27 -0
- package/types/report/savedReports.d.ts.map +1 -0
- package/types/report/useFrappeReport.d.ts +60 -0
- package/types/report/useFrappeReport.d.ts.map +1 -0
- package/types/report/useQueryReport.d.ts +37 -0
- package/types/report/useQueryReport.d.ts.map +1 -0
- package/types/useFrappeForm.d.ts +142 -0
- package/types/useFrappeForm.d.ts.map +1 -0
|
@@ -0,0 +1,533 @@
|
|
|
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.mjs";
|
|
6
|
+
import { setCreatePrefill, takeCreatePrefill } from "./formEngine/createPrefill.mjs";
|
|
7
|
+
import { computeDirtyFields, isEmptyValue, isSameValue } from "./formEngine/dirtyTracking.mjs";
|
|
8
|
+
import { buildAmendValues } from "./formEngine/docLifecycle.mjs";
|
|
9
|
+
import { applyFetchedValues, buildFetchMap } from "./formEngine/fetchFrom.mjs";
|
|
10
|
+
import { buildPermLevelMatrix } from "./formEngine/fieldPermissions.mjs";
|
|
11
|
+
import { createHttpClient, validateLink } from "./formEngine/formActions.mjs";
|
|
12
|
+
import { buildCopyValues, buildCreateDefaults, buildFormTabs, isPromptNamed } from "./formEngine/formLayout.mjs";
|
|
13
|
+
import { useAmendedAs } from "./formEngine/useAmendedAs.mjs";
|
|
14
|
+
import { useDocRights } from "./formEngine/useDocRights.mjs";
|
|
15
|
+
import { extractServerError } from "./formEngine/useFormEngine.mjs";
|
|
16
|
+
function sectionsToLayoutFields(sections) {
|
|
17
|
+
const fields = [];
|
|
18
|
+
sections.forEach((section, sectionIndex) => {
|
|
19
|
+
fields.push({
|
|
20
|
+
fieldname: `__section_${sectionIndex}`,
|
|
21
|
+
fieldtype: section.tab ? "Tab Break" : "Section Break",
|
|
22
|
+
label: section.label,
|
|
23
|
+
collapsible: section.collapsible ? 1 : 0
|
|
24
|
+
});
|
|
25
|
+
section.columns.forEach((column, columnIndex) => {
|
|
26
|
+
if (columnIndex > 0) {
|
|
27
|
+
fields.push({
|
|
28
|
+
fieldname: `__column_${sectionIndex}_${columnIndex}`,
|
|
29
|
+
fieldtype: "Column Break"
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
fields.push(...column.fields);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
return fields;
|
|
36
|
+
}
|
|
37
|
+
function isConflictError(err) {
|
|
38
|
+
const e = err;
|
|
39
|
+
if (!e) return false;
|
|
40
|
+
if (e.status === 409) return true;
|
|
41
|
+
if (e.exc_type === "TimestampMismatchError") return true;
|
|
42
|
+
return /TimestampMismatch|has been modified/i.test(e.message ?? "");
|
|
43
|
+
}
|
|
44
|
+
function useFrappeForm(options) {
|
|
45
|
+
const {
|
|
46
|
+
doctype,
|
|
47
|
+
name,
|
|
48
|
+
baseURL,
|
|
49
|
+
auth,
|
|
50
|
+
syncOptions,
|
|
51
|
+
fields,
|
|
52
|
+
sections,
|
|
53
|
+
hideFields,
|
|
54
|
+
hideSections,
|
|
55
|
+
roles,
|
|
56
|
+
rights: rightsOverride,
|
|
57
|
+
shares: sharesOverride,
|
|
58
|
+
readShares = true,
|
|
59
|
+
disabled = false,
|
|
60
|
+
initialDoc,
|
|
61
|
+
meta: metaSource
|
|
62
|
+
} = options;
|
|
63
|
+
const config = useFrappeConfig();
|
|
64
|
+
const {
|
|
65
|
+
t
|
|
66
|
+
} = useTranslation();
|
|
67
|
+
const isCreate = !name;
|
|
68
|
+
const seedDoc = name && initialDoc && initialDoc.name === name ? initialDoc : void 0;
|
|
69
|
+
const seedRef = useRef(seedDoc);
|
|
70
|
+
seedRef.current = seedDoc;
|
|
71
|
+
const [localDoc, setLocalDoc] = useState(() => seedDoc ?? {});
|
|
72
|
+
const [baselineDoc, setBaselineDoc] = useState(() => seedDoc);
|
|
73
|
+
const [docError, setDocError] = useState(null);
|
|
74
|
+
const [conflictFields, setConflictFields] = useState([]);
|
|
75
|
+
const [saveConflict, setSaveConflict] = useState(false);
|
|
76
|
+
const [wasDeleted, setWasDeleted] = useState(false);
|
|
77
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
78
|
+
const [errors, setErrors] = useState({});
|
|
79
|
+
const [activeTab, setActiveTab] = useState(void 0);
|
|
80
|
+
const everLoadedRef = useRef(false);
|
|
81
|
+
const localDocRef = useRef(localDoc);
|
|
82
|
+
localDocRef.current = localDoc;
|
|
83
|
+
const baselineRef = useRef(baselineDoc);
|
|
84
|
+
baselineRef.current = baselineDoc;
|
|
85
|
+
const createDraftRef = useRef(void 0);
|
|
86
|
+
const createSeededRef = useRef(void 0);
|
|
87
|
+
const finalBaseURL = baseURL ?? config?.baseURL;
|
|
88
|
+
const finalAuth = auth ?? config?.auth;
|
|
89
|
+
const finalSyncOptions = syncOptions ?? config?.syncOptions;
|
|
90
|
+
const frappeConfig = useMemo(() => finalBaseURL ? {
|
|
91
|
+
baseURL: finalBaseURL,
|
|
92
|
+
socketPort: config?.socketPort,
|
|
93
|
+
siteName: config?.siteName,
|
|
94
|
+
socketBaseURL: config?.socketBaseURL,
|
|
95
|
+
auth: finalAuth,
|
|
96
|
+
syncOptions: finalSyncOptions,
|
|
97
|
+
realtime: config?.realtime,
|
|
98
|
+
fixtures: config?.fixtures
|
|
99
|
+
} : void 0, [finalBaseURL, config?.socketPort, config?.siteName, config?.socketBaseURL, config?.realtime, finalAuth, finalSyncOptions, config?.fixtures]);
|
|
100
|
+
const ownMeta = useDocTypeMeta(metaSource ? void 0 : frappeConfig, doctype);
|
|
101
|
+
const meta = metaSource ? metaSource.meta : ownMeta.meta;
|
|
102
|
+
const isMetaLoading = metaSource ? metaSource.isLoading : ownMeta.isLoading;
|
|
103
|
+
const metaError = metaSource ? metaSource.error : ownMeta.error;
|
|
104
|
+
const isSubmittable = !!meta?.is_submittable;
|
|
105
|
+
const docstatus = Number(baselineDoc?.docstatus ?? 0);
|
|
106
|
+
const layoutFields = useMemo(() => {
|
|
107
|
+
if (!meta) return void 0;
|
|
108
|
+
return sections ? sectionsToLayoutFields(sections) : meta.fields;
|
|
109
|
+
}, [meta, sections]);
|
|
110
|
+
const amendedAs = useAmendedAs(isSubmittable && docstatus === 2 ? frappeConfig : void 0, doctype, name);
|
|
111
|
+
const promptNamed = isCreate && !!meta && isPromptNamed(meta.autoname, meta.naming_rule);
|
|
112
|
+
const fetchMap = useMemo(() => meta ? buildFetchMap(meta.fields) : void 0, [meta]);
|
|
113
|
+
const handleDocSyncError = useCallback(err => {
|
|
114
|
+
setDocError(err instanceof Error ? err : new Error(String(err)));
|
|
115
|
+
}, []);
|
|
116
|
+
const docCollection = useFrappeCollection(name ? frappeConfig : void 0, doctype, {
|
|
117
|
+
fields,
|
|
118
|
+
filters: name ? {
|
|
119
|
+
name
|
|
120
|
+
} : void 0,
|
|
121
|
+
onSyncError: handleDocSyncError
|
|
122
|
+
});
|
|
123
|
+
const {
|
|
124
|
+
data: rawDocData,
|
|
125
|
+
isLoading: isDocLoading
|
|
126
|
+
} = useLiveQuery(q => {
|
|
127
|
+
if (!docCollection || !name) return null;
|
|
128
|
+
return q.from({
|
|
129
|
+
_doc: docCollection
|
|
130
|
+
}).where(({
|
|
131
|
+
_doc
|
|
132
|
+
}) => {
|
|
133
|
+
if (!_doc) return eq(name, name);
|
|
134
|
+
return eq(_doc.name, name);
|
|
135
|
+
});
|
|
136
|
+
}, [docCollection, name]);
|
|
137
|
+
const liveDoc = useMemo(() => {
|
|
138
|
+
const arr = Array.isArray(rawDocData) ? rawDocData : rawDocData ? [rawDocData] : [];
|
|
139
|
+
const doc = arr[0] ?? null;
|
|
140
|
+
return doc ? {
|
|
141
|
+
data: doc,
|
|
142
|
+
isLoading: isDocLoading
|
|
143
|
+
} : name ? {
|
|
144
|
+
data: null,
|
|
145
|
+
isLoading: isDocLoading
|
|
146
|
+
} : null;
|
|
147
|
+
}, [rawDocData, isDocLoading, name]);
|
|
148
|
+
const collection = useFrappeCollection(name ? void 0 : frappeConfig, doctype, {
|
|
149
|
+
fields
|
|
150
|
+
});
|
|
151
|
+
const shareCollection = useFrappeCollection(readShares && !sharesOverride && name ? frappeConfig : void 0, "DocShare", {
|
|
152
|
+
fields: ["name", "user", "everyone", "read", "write", "share"],
|
|
153
|
+
filters: {
|
|
154
|
+
share_doctype: doctype,
|
|
155
|
+
share_name: name
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
const {
|
|
159
|
+
data: rawShareRows
|
|
160
|
+
} = useLiveQuery(q => shareCollection ? q.from({
|
|
161
|
+
_share: shareCollection
|
|
162
|
+
}) : null, [shareCollection]);
|
|
163
|
+
const shareRows = useMemo(() => sharesOverride ?? (shareCollection ? rawShareRows ?? [] : void 0), [sharesOverride, shareCollection, rawShareRows]);
|
|
164
|
+
const owner = baselineDoc?.owner;
|
|
165
|
+
const {
|
|
166
|
+
rights: sessionRights,
|
|
167
|
+
pending: sessionPending,
|
|
168
|
+
roles: effectiveRoles,
|
|
169
|
+
user
|
|
170
|
+
} = useDocRights(frappeConfig, meta, {
|
|
171
|
+
roles,
|
|
172
|
+
owner: typeof owner === "string" ? owner : void 0,
|
|
173
|
+
shares: shareRows
|
|
174
|
+
});
|
|
175
|
+
const rights = rightsOverride ?? sessionRights;
|
|
176
|
+
const rightsPending = rightsOverride ? false : sessionPending;
|
|
177
|
+
const permLevels = useMemo(() => buildPermLevelMatrix(meta?.permissions, effectiveRoles), [meta?.permissions, effectiveRoles]);
|
|
178
|
+
const tabs = useMemo(() => {
|
|
179
|
+
if (!layoutFields) return void 0;
|
|
180
|
+
return buildFormTabs({
|
|
181
|
+
fields: layoutFields,
|
|
182
|
+
doc: {
|
|
183
|
+
...localDoc,
|
|
184
|
+
__islocal: isCreate ? 1 : 0,
|
|
185
|
+
...(user ? {
|
|
186
|
+
__session_user: user
|
|
187
|
+
} : {})
|
|
188
|
+
},
|
|
189
|
+
docstatus,
|
|
190
|
+
formReadOnly: !!meta?.read_only,
|
|
191
|
+
isCreate,
|
|
192
|
+
detailsLabel: t("Details"),
|
|
193
|
+
permLevels,
|
|
194
|
+
hiddenFields: hideFields,
|
|
195
|
+
hiddenSections: hideSections
|
|
196
|
+
});
|
|
197
|
+
}, [layoutFields, localDoc, isCreate, user, docstatus, meta?.read_only, permLevels, hideFields, hideSections, t]);
|
|
198
|
+
useEffect(() => {
|
|
199
|
+
everLoadedRef.current = false;
|
|
200
|
+
if (name) createDraftRef.current = void 0;
|
|
201
|
+
createSeededRef.current = void 0;
|
|
202
|
+
setWasDeleted(false);
|
|
203
|
+
setConflictFields([]);
|
|
204
|
+
setSaveConflict(false);
|
|
205
|
+
setDocError(null);
|
|
206
|
+
const seed = seedRef.current;
|
|
207
|
+
setBaselineDoc(seed);
|
|
208
|
+
if (seed) setLocalDoc(seed);
|
|
209
|
+
}, [doctype, name]);
|
|
210
|
+
useFrappeDoctypeEvents(name ? frappeConfig : void 0, doctype, event => {
|
|
211
|
+
if (event.type !== "doc_deleted") return;
|
|
212
|
+
const payload = event.payload;
|
|
213
|
+
if (payload?.name === name) setWasDeleted(true);
|
|
214
|
+
}, Boolean(name));
|
|
215
|
+
useEffect(() => {
|
|
216
|
+
const incoming = liveDoc?.data;
|
|
217
|
+
if (incoming) {
|
|
218
|
+
everLoadedRef.current = true;
|
|
219
|
+
setWasDeleted(false);
|
|
220
|
+
const baseline = baselineRef.current;
|
|
221
|
+
if (!baseline) {
|
|
222
|
+
setBaselineDoc(incoming);
|
|
223
|
+
setLocalDoc(incoming);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const local = localDocRef.current;
|
|
227
|
+
const merged = {
|
|
228
|
+
...incoming
|
|
229
|
+
};
|
|
230
|
+
const newConflicts = [];
|
|
231
|
+
for (const key of Object.keys(local)) {
|
|
232
|
+
const localValue = local[key];
|
|
233
|
+
if (isSameValue(localValue, baseline[key])) continue;
|
|
234
|
+
merged[key] = localValue;
|
|
235
|
+
const remote = incoming[key];
|
|
236
|
+
if (!isSameValue(remote, baseline[key]) && !isSameValue(remote, localValue)) {
|
|
237
|
+
newConflicts.push(key);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
setBaselineDoc(incoming);
|
|
241
|
+
setLocalDoc(merged);
|
|
242
|
+
if (newConflicts.length > 0) {
|
|
243
|
+
setConflictFields(prev => Array.from(/* @__PURE__ */new Set([...prev, ...newConflicts])));
|
|
244
|
+
}
|
|
245
|
+
} else if (name && everLoadedRef.current && !liveDoc?.isLoading) {
|
|
246
|
+
setWasDeleted(true);
|
|
247
|
+
}
|
|
248
|
+
}, [liveDoc?.data, liveDoc?.isLoading, doctype, name]);
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
if (name) return;
|
|
251
|
+
if (createDraftRef.current?.doctype !== doctype) {
|
|
252
|
+
createDraftRef.current = {
|
|
253
|
+
doctype,
|
|
254
|
+
values: takeCreatePrefill(doctype)
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
const draft = createDraftRef.current.values;
|
|
258
|
+
const defaults = meta ? buildCreateDefaults(meta.fields, user) : {};
|
|
259
|
+
const fresh = createSeededRef.current !== doctype;
|
|
260
|
+
createSeededRef.current = doctype;
|
|
261
|
+
setLocalDoc(prev => ({
|
|
262
|
+
...defaults,
|
|
263
|
+
...draft,
|
|
264
|
+
...(fresh ? {} : prev),
|
|
265
|
+
doctype
|
|
266
|
+
}));
|
|
267
|
+
}, [name, doctype, meta, user]);
|
|
268
|
+
const dirtyFields = useMemo(() => computeDirtyFields(localDoc, baselineDoc), [localDoc, baselineDoc]);
|
|
269
|
+
const isDirty = dirtyFields.length > 0;
|
|
270
|
+
const runFetchFrom = (field, value) => {
|
|
271
|
+
const rules = fetchMap?.get(field);
|
|
272
|
+
if (!rules || rules.length === 0 || !frappeConfig) return;
|
|
273
|
+
const applyPatch = fetched2 => {
|
|
274
|
+
setLocalDoc(prev => {
|
|
275
|
+
const current = prev;
|
|
276
|
+
if (current[field] !== value) return prev;
|
|
277
|
+
const patch = applyFetchedValues(rules, fetched2, current);
|
|
278
|
+
return Object.keys(patch).length > 0 ? {
|
|
279
|
+
...current,
|
|
280
|
+
...patch
|
|
281
|
+
} : prev;
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
if (isEmptyValue(value)) {
|
|
285
|
+
applyPatch({});
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const linkField = meta?.fields.find(metaField => metaField.fieldname === field);
|
|
289
|
+
const targetDoctype = typeof linkField?.options === "string" ? linkField.options : "";
|
|
290
|
+
if (!targetDoctype) return;
|
|
291
|
+
const sources = Array.from(new Set(rules.map(rule => rule.source)));
|
|
292
|
+
const fixtures = frappeConfig.fixtures;
|
|
293
|
+
const fetched = fixtures ? fixtures.getDoc(targetDoctype, String(value), sources).then(doc => doc ?? {}) : validateLink(createHttpClient(frappeConfig), targetDoctype, String(value), sources);
|
|
294
|
+
fetched.then(applyPatch).catch(() => void 0);
|
|
295
|
+
};
|
|
296
|
+
const setValue = (field, value) => {
|
|
297
|
+
setLocalDoc(prev => ({
|
|
298
|
+
...prev,
|
|
299
|
+
[field]: value
|
|
300
|
+
}));
|
|
301
|
+
setErrors(prev => {
|
|
302
|
+
if (!(String(field) in prev)) return prev;
|
|
303
|
+
const next = {
|
|
304
|
+
...prev
|
|
305
|
+
};
|
|
306
|
+
delete next[String(field)];
|
|
307
|
+
return next;
|
|
308
|
+
});
|
|
309
|
+
runFetchFrom(String(field), value);
|
|
310
|
+
};
|
|
311
|
+
const validate = () => {
|
|
312
|
+
if (!tabs) return {};
|
|
313
|
+
const validationErrors = {};
|
|
314
|
+
const doc = localDoc;
|
|
315
|
+
if (promptNamed && isEmptyValue(doc.name)) {
|
|
316
|
+
validationErrors.name = t("Name is required");
|
|
317
|
+
}
|
|
318
|
+
for (const tab of tabs) {
|
|
319
|
+
for (const field of tab.schema.fields) {
|
|
320
|
+
if (!field.required) continue;
|
|
321
|
+
if (isEmptyValue(doc[field.name])) {
|
|
322
|
+
validationErrors[field.name] = t("{{label}} is required", {
|
|
323
|
+
label: field.label || field.name
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return validationErrors;
|
|
329
|
+
};
|
|
330
|
+
const canWrite = isCreate ? rights.create : rights.write;
|
|
331
|
+
const save = async () => {
|
|
332
|
+
if (wasDeleted || !canWrite || disabled) return void 0;
|
|
333
|
+
const requiredErrors = validate();
|
|
334
|
+
if (Object.keys(requiredErrors).length > 0) {
|
|
335
|
+
setErrors(requiredErrors);
|
|
336
|
+
return void 0;
|
|
337
|
+
}
|
|
338
|
+
setIsSubmitting(true);
|
|
339
|
+
setErrors({});
|
|
340
|
+
try {
|
|
341
|
+
if (name) {
|
|
342
|
+
if (!docCollection) return void 0;
|
|
343
|
+
if (dirtyFields.length > 0) {
|
|
344
|
+
const local = localDoc;
|
|
345
|
+
const tx2 = docCollection.update(name, draft => {
|
|
346
|
+
for (const key of dirtyFields) {
|
|
347
|
+
draft[key] = local[key];
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
await tx2.isPersisted.promise;
|
|
351
|
+
}
|
|
352
|
+
setConflictFields([]);
|
|
353
|
+
setSaveConflict(false);
|
|
354
|
+
return name;
|
|
355
|
+
}
|
|
356
|
+
if (!collection || !frappeConfig) return void 0;
|
|
357
|
+
const temporaryName = localDoc.name ?? `new-${Date.now()}`;
|
|
358
|
+
const docToInsert = {
|
|
359
|
+
...localDoc,
|
|
360
|
+
doctype,
|
|
361
|
+
name: temporaryName
|
|
362
|
+
};
|
|
363
|
+
const tx = collection.insert(docToInsert);
|
|
364
|
+
await tx.isPersisted.promise;
|
|
365
|
+
return getFrappeSyncModule(frappeConfig)?.createdName(temporaryName) ?? temporaryName;
|
|
366
|
+
} catch (err) {
|
|
367
|
+
const e = err;
|
|
368
|
+
if (isConflictError(err)) setSaveConflict(true);
|
|
369
|
+
if (e?.exc_type === "ValidationError") {
|
|
370
|
+
const validationErrors = {};
|
|
371
|
+
if (e._server_messages) {
|
|
372
|
+
try {
|
|
373
|
+
const messages = JSON.parse(e._server_messages);
|
|
374
|
+
for (const msg of messages) {
|
|
375
|
+
const parsed = typeof msg === "string" ? JSON.parse(msg) : msg;
|
|
376
|
+
if (parsed.message) {
|
|
377
|
+
validationErrors.general = parsed.message;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
} catch {
|
|
381
|
+
validationErrors.general = t("Validation error occurred");
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
setErrors(validationErrors);
|
|
385
|
+
} else {
|
|
386
|
+
setErrors({
|
|
387
|
+
general: e?.message || t("Failed to save document")
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
return void 0;
|
|
391
|
+
} finally {
|
|
392
|
+
setIsSubmitting(false);
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
const reset = () => {
|
|
396
|
+
if (baselineDoc) {
|
|
397
|
+
setLocalDoc(baselineDoc);
|
|
398
|
+
} else if (liveDoc?.data) {
|
|
399
|
+
setLocalDoc(liveDoc.data);
|
|
400
|
+
} else {
|
|
401
|
+
setLocalDoc({
|
|
402
|
+
doctype
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
setConflictFields([]);
|
|
406
|
+
setSaveConflict(false);
|
|
407
|
+
setErrors({});
|
|
408
|
+
};
|
|
409
|
+
const remove = async () => {
|
|
410
|
+
if (!docCollection || !name || wasDeleted || !rights.delete) return false;
|
|
411
|
+
setIsSubmitting(true);
|
|
412
|
+
setErrors({});
|
|
413
|
+
try {
|
|
414
|
+
const tx = docCollection.delete(name);
|
|
415
|
+
await tx.isPersisted.promise;
|
|
416
|
+
return true;
|
|
417
|
+
} catch (err) {
|
|
418
|
+
setErrors({
|
|
419
|
+
general: err?.message || t("Failed to delete")
|
|
420
|
+
});
|
|
421
|
+
return false;
|
|
422
|
+
} finally {
|
|
423
|
+
setIsSubmitting(false);
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
const transitionDocstatus = async (to, failure) => {
|
|
427
|
+
if (!docCollection || !name || wasDeleted || !rights[to === 1 ? "submit" : "cancel"]) {
|
|
428
|
+
return false;
|
|
429
|
+
}
|
|
430
|
+
if (to === 1) {
|
|
431
|
+
const requiredErrors = validate();
|
|
432
|
+
if (Object.keys(requiredErrors).length > 0) {
|
|
433
|
+
setErrors(requiredErrors);
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
setIsSubmitting(true);
|
|
438
|
+
setErrors({});
|
|
439
|
+
try {
|
|
440
|
+
const tx = docCollection.update(name, draft => {
|
|
441
|
+
draft.docstatus = to;
|
|
442
|
+
});
|
|
443
|
+
await tx.isPersisted.promise;
|
|
444
|
+
return true;
|
|
445
|
+
} catch (err) {
|
|
446
|
+
if (isConflictError(err)) setSaveConflict(true);
|
|
447
|
+
setErrors({
|
|
448
|
+
general: extractServerError(err, failure)
|
|
449
|
+
});
|
|
450
|
+
return false;
|
|
451
|
+
} finally {
|
|
452
|
+
setIsSubmitting(false);
|
|
453
|
+
}
|
|
454
|
+
};
|
|
455
|
+
const submitDocument = () => transitionDocstatus(1, t("Failed to submit"));
|
|
456
|
+
const cancelDocument = () => transitionDocstatus(2, t("Failed to cancel"));
|
|
457
|
+
const amend = () => {
|
|
458
|
+
if (!meta || !name || !rights.amend) return void 0;
|
|
459
|
+
const draft = buildAmendValues(meta.fields, localDoc, name);
|
|
460
|
+
setCreatePrefill(doctype, draft);
|
|
461
|
+
return draft;
|
|
462
|
+
};
|
|
463
|
+
const duplicate = () => {
|
|
464
|
+
if (!meta) return void 0;
|
|
465
|
+
const values = buildCopyValues(meta.fields, localDoc);
|
|
466
|
+
setCreatePrefill(doctype, values);
|
|
467
|
+
return values;
|
|
468
|
+
};
|
|
469
|
+
const fieldTargets = useMemo(() => (tabs ?? []).flatMap(tab => tab.schema.fields.map(field => ({
|
|
470
|
+
name: field.name,
|
|
471
|
+
label: field.label || field.name,
|
|
472
|
+
tabKey: tab.key,
|
|
473
|
+
tabLabel: tab.label
|
|
474
|
+
}))), [tabs]);
|
|
475
|
+
const revealField = fieldName => {
|
|
476
|
+
const target = fieldTargets.find(field => field.name === fieldName);
|
|
477
|
+
if (!target) return false;
|
|
478
|
+
setActiveTab(target.tabKey);
|
|
479
|
+
return true;
|
|
480
|
+
};
|
|
481
|
+
const isDocReading = Boolean(name) && (!docCollection || Boolean(liveDoc?.isLoading));
|
|
482
|
+
const showsSeed = Boolean(seedDoc) && isDocReading;
|
|
483
|
+
const status = !name ? "ready" : docError && !liveDoc?.data && !wasDeleted ? "error" : isDocReading && !showsSeed && !wasDeleted ? "loading" : !isDocReading && !liveDoc?.data && !wasDeleted ? "notFound" : "ready";
|
|
484
|
+
return {
|
|
485
|
+
doctype,
|
|
486
|
+
name,
|
|
487
|
+
isCreate,
|
|
488
|
+
connection: frappeConfig,
|
|
489
|
+
meta,
|
|
490
|
+
metaLoading: isMetaLoading,
|
|
491
|
+
metaError,
|
|
492
|
+
doc: localDoc,
|
|
493
|
+
baseline: baselineDoc,
|
|
494
|
+
setValue,
|
|
495
|
+
errors,
|
|
496
|
+
setErrors,
|
|
497
|
+
dirtyFields,
|
|
498
|
+
isDirty,
|
|
499
|
+
isSubmitting,
|
|
500
|
+
docstatus,
|
|
501
|
+
isSubmittable,
|
|
502
|
+
rights,
|
|
503
|
+
rightsPending,
|
|
504
|
+
roles: effectiveRoles,
|
|
505
|
+
user,
|
|
506
|
+
shareRows,
|
|
507
|
+
canWrite,
|
|
508
|
+
readOnly: disabled || wasDeleted || !!meta?.read_only || !canWrite,
|
|
509
|
+
wasDeleted,
|
|
510
|
+
conflictFields,
|
|
511
|
+
conflict: saveConflict || conflictFields.length > 0,
|
|
512
|
+
status,
|
|
513
|
+
docError,
|
|
514
|
+
showsSeed,
|
|
515
|
+
tabs,
|
|
516
|
+
promptNamed,
|
|
517
|
+
fieldTargets,
|
|
518
|
+
activeTab,
|
|
519
|
+
setActiveTab,
|
|
520
|
+
revealField,
|
|
521
|
+
amendedAs,
|
|
522
|
+
validate,
|
|
523
|
+
save,
|
|
524
|
+
submitDocument,
|
|
525
|
+
cancelDocument,
|
|
526
|
+
remove,
|
|
527
|
+
reset,
|
|
528
|
+
amend,
|
|
529
|
+
duplicate
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
export { useFrappeForm };
|
|
533
|
+
//# sourceMappingURL=useFrappeForm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getFrappeSyncModule","useDocTypeMeta","useFrappeCollection","useFrappeDoctypeEvents","useLiveQuery","eq","useCallback","useEffect","useMemo","useRef","useState","useTranslation","useFrappeConfig","setCreatePrefill","takeCreatePrefill","computeDirtyFields","isEmptyValue","isSameValue","buildAmendValues","applyFetchedValues","buildFetchMap","buildPermLevelMatrix","createHttpClient","validateLink","buildCopyValues","buildCreateDefaults","buildFormTabs","isPromptNamed","useAmendedAs","useDocRights","extractServerError","sectionsToLayoutFields","sections","fields","forEach","section","sectionIndex","push","fieldname","fieldtype","tab","label","collapsible","columns","column","columnIndex","isConflictError","err","e","status","exc_type","test","message","useFrappeForm","options","doctype","name","baseURL","auth","syncOptions","hideFields","hideSections","roles","rights","rightsOverride","shares","sharesOverride","readShares","disabled","initialDoc","meta","metaSource","config","t","isCreate","seedDoc","seedRef","current","localDoc","setLocalDoc","baselineDoc","setBaselineDoc","docError","setDocError","conflictFields","setConflictFields","saveConflict","setSaveConflict","wasDeleted","setWasDeleted","isSubmitting","setIsSubmitting","errors","setErrors","activeTab","setActiveTab","everLoadedRef","localDocRef","baselineRef","createDraftRef","createSeededRef","finalBaseURL","finalAuth","finalSyncOptions","frappeConfig","socketPort","siteName","socketBaseURL","realtime","fixtures","ownMeta","isMetaLoading","isLoading","metaError","error","isSubmittable","is_submittable","docstatus","Number","layoutFields","amendedAs","promptNamed","autoname","naming_rule","fetchMap","handleDocSyncError","Error","String","docCollection","filters","onSyncError","data","rawDocData","isDocLoading","q","from","_doc","where","liveDoc","arr","Array","isArray","doc","collection","shareCollection","share_doctype","share_name","rawShareRows","_share","shareRows","owner","sessionRights","pending","sessionPending","effectiveRoles","user","rightsPending","permLevels","permissions","tabs","__islocal","__session_user","formReadOnly","read_only","detailsLabel","hiddenFields","hiddenSections","seed","event","type","payload","Boolean","incoming","baseline","local","merged","newConflicts","key","Object","keys","localValue","remote","length","prev","Set","values","draft","defaults","fresh","dirtyFields","isDirty","runFetchFrom","field","value","rules","get","applyPatch","fetched","patch","linkField","find","metaField","targetDoctype","sources","map","rule","source","getDoc","then","catch","setValue","next","validate","validationErrors","schema","required","canWrite","create","write","save","requiredErrors","tx","update","isPersisted","promise","temporaryName","Date","now","docToInsert","insert","createdName","_server_messages","messages","JSON","parse","msg","parsed","general","reset","remove","delete","transitionDocstatus","to","failure","submitDocument","cancelDocument","amend","duplicate","fieldTargets","flatMap","tabKey","tabLabel","revealField","fieldName","target","isDocReading","showsSeed","connection","metaLoading","readOnly","conflict"],"sources":["../../src/useFrappeForm.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,mBAAA,EACAC,cAAA,EACAC,mBAAA,EACAC,sBAAA,EACAC,YAAA,QAIK;AACP,SAASC,EAAA,QAAU;AACnB,SAASC,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,MAAA,EAAQC,QAAA,QAAgB;AAClE,SAASC,cAAA,QAAsB;AAC/B,SAASC,eAAA,QAAuB;AAChC,SAASC,gBAAA,EAAkBC,iBAAA,QAAyB;AACpD,SAASC,kBAAA,EAAoBC,YAAA,EAAcC,WAAA,QAAmB;AAC9D,SAASC,gBAAA,QAAwB;AAEjC,SAASC,kBAAA,EAAoBC,aAAA,QAAqB;AAClD,SAASC,oBAAA,QAA4B;AACrC,SAASC,gBAAA,EAAkBC,YAAA,QAA2C;AACtE,SACEC,eAAA,EACAC,mBAAA,EACAC,aAAA,EACAC,aAAA,QAEK;AACP,SAASC,YAAA,QAAoB;AAC7B,SAASC,YAAA,QAAoB;AAC7B,SAASC,kBAAA,QAA0B;AAiInC,SAASC,uBAAuBC,QAAA,EAAyC;EACvE,MAAMC,MAAA,GAAyB,EAAC;EAChCD,QAAA,CAASE,OAAA,CAAQ,CAACC,OAAA,EAASC,YAAA,KAAiB;IAC1CH,MAAA,CAAOI,IAAA,CAAK;MACVC,SAAA,EAAW,aAAaF,YAAY;MACpCG,SAAA,EAAWJ,OAAA,CAAQK,GAAA,GAAM,cAAc;MACvCC,KAAA,EAAON,OAAA,CAAQM,KAAA;MACfC,WAAA,EAAaP,OAAA,CAAQO,WAAA,GAAc,IAAI;IACzC,CAAC;IACDP,OAAA,CAAQQ,OAAA,CAAQT,OAAA,CAAQ,CAACU,MAAA,EAAQC,WAAA,KAAgB;MAC/C,IAAIA,WAAA,GAAc,GAAG;QACnBZ,MAAA,CAAOI,IAAA,CAAK;UACVC,SAAA,EAAW,YAAYF,YAAY,IAAIS,WAAW;UAClDN,SAAA,EAAW;QACb,CAAC;MACH;MACAN,MAAA,CAAOI,IAAA,CAAK,GAAGO,MAAA,CAAOX,MAAM;IAC9B,CAAC;EACH,CAAC;EACD,OAAOA,MAAA;AACT;AAEA,SAASa,gBAAgBC,GAAA,EAAuB;EAC9C,MAAMC,CAAA,GAAID,GAAA;EACV,IAAI,CAACC,CAAA,EAAG,OAAO;EACf,IAAIA,CAAA,CAAEC,MAAA,KAAW,KAAK,OAAO;EAC7B,IAAID,CAAA,CAAEE,QAAA,KAAa,0BAA0B,OAAO;EACpD,OAAO,uCAAuCC,IAAA,CAAKH,CAAA,CAAEI,OAAA,IAAW,EAAE;AACpE;AASO,SAASC,cACdC,OAAA,EAC4B;EAC5B,MAAM;IACJC,OAAA;IACAC,IAAA;IACAC,OAAA;IACAC,IAAA;IACAC,WAAA;IACA1B,MAAA;IACAD,QAAA;IACA4B,UAAA;IACAC,YAAA;IACAC,KAAA;IACAC,MAAA,EAAQC,cAAA;IACRC,MAAA,EAAQC,cAAA;IACRC,UAAA,GAAa;IACbC,QAAA,GAAW;IACXC,UAAA;IACAC,IAAA,EAAMC;EACR,IAAIjB,OAAA;EACJ,MAAMkB,MAAA,GAAS5D,eAAA,CAAgB;EAC/B,MAAM;IAAE6D;EAAE,IAAI9D,cAAA,CAAe;EAC7B,MAAM+D,QAAA,GAAW,CAAClB,IAAA;EAClB,MAAMmB,OAAA,GACJnB,IAAA,IAAQa,UAAA,IAAeA,UAAA,CAAiCb,IAAA,KAASA,IAAA,GAAOa,UAAA,GAAa;EACvF,MAAMO,OAAA,GAAUnE,MAAA,CAAOkE,OAAO;EAC9BC,OAAA,CAAQC,OAAA,GAAUF,OAAA;EAClB,MAAM,CAACG,QAAA,EAAUC,WAAW,IAAIrE,QAAA,CAAwB,MAAMiE,OAAA,IAAW,CAAC,CAAC;EAC3E,MAAM,CAACK,WAAA,EAAaC,cAAc,IAAIvE,QAAA,CAAoC,MAAMiE,OAAO;EACvF,MAAM,CAACO,QAAA,EAAUC,WAAW,IAAIzE,QAAA,CAAuB,IAAI;EAC3D,MAAM,CAAC0E,cAAA,EAAgBC,iBAAiB,IAAI3E,QAAA,CAAmB,EAAE;EACjE,MAAM,CAAC4E,YAAA,EAAcC,eAAe,IAAI7E,QAAA,CAAS,KAAK;EACtD,MAAM,CAAC8E,UAAA,EAAYC,aAAa,IAAI/E,QAAA,CAAS,KAAK;EAClD,MAAM,CAACgF,YAAA,EAAcC,eAAe,IAAIjF,QAAA,CAAS,KAAK;EACtD,MAAM,CAACkF,MAAA,EAAQC,SAAS,IAAInF,QAAA,CAAiC,CAAC,CAAC;EAC/D,MAAM,CAACoF,SAAA,EAAWC,YAAY,IAAIrF,QAAA,CAA6B,MAAS;EACxE,MAAMsF,aAAA,GAAgBvF,MAAA,CAAO,KAAK;EAClC,MAAMwF,WAAA,GAAcxF,MAAA,CAAOqE,QAAQ;EACnCmB,WAAA,CAAYpB,OAAA,GAAUC,QAAA;EACtB,MAAMoB,WAAA,GAAczF,MAAA,CAAOuE,WAAW;EACtCkB,WAAA,CAAYrB,OAAA,GAAUG,WAAA;EAGtB,MAAMmB,cAAA,GAAiB1F,MAAA,CAA8D,MAAS;EAC9F,MAAM2F,eAAA,GAAkB3F,MAAA,CAA2B,MAAS;EAE5D,MAAM4F,YAAA,GAAe5C,OAAA,IAAWe,MAAA,EAAQf,OAAA;EACxC,MAAM6C,SAAA,GAAY5C,IAAA,IAAQc,MAAA,EAAQd,IAAA;EAClC,MAAM6C,gBAAA,GAAmB5C,WAAA,IAAea,MAAA,EAAQb,WAAA;EAEhD,MAAM6C,YAAA,GAAehG,OAAA,CACnB,MACE6F,YAAA,GACI;IACE5C,OAAA,EAAS4C,YAAA;IACTI,UAAA,EAAYjC,MAAA,EAAQiC,UAAA;IACpBC,QAAA,EAAUlC,MAAA,EAAQkC,QAAA;IAClBC,aAAA,EAAenC,MAAA,EAAQmC,aAAA;IACvBjD,IAAA,EAAM4C,SAAA;IACN3C,WAAA,EAAa4C,gBAAA;IACbK,QAAA,EAAUpC,MAAA,EAAQoC,QAAA;IAClBC,QAAA,EAAUrC,MAAA,EAAQqC;EACpB,IACA,QACN,CACER,YAAA,EACA7B,MAAA,EAAQiC,UAAA,EACRjC,MAAA,EAAQkC,QAAA,EACRlC,MAAA,EAAQmC,aAAA,EACRnC,MAAA,EAAQoC,QAAA,EACRN,SAAA,EACAC,gBAAA,EACA/B,MAAA,EAAQqC,QAAA,CAEZ;EAEA,MAAMC,OAAA,GAAU7G,cAAA,CAAesE,UAAA,GAAa,SAAYiC,YAAA,EAAcjD,OAAO;EAC7E,MAAMe,IAAA,GAAOC,UAAA,GAAaA,UAAA,CAAWD,IAAA,GAAOwC,OAAA,CAAQxC,IAAA;EACpD,MAAMyC,aAAA,GAAgBxC,UAAA,GAAaA,UAAA,CAAWyC,SAAA,GAAYF,OAAA,CAAQE,SAAA;EAClE,MAAMC,SAAA,GAAY1C,UAAA,GAAaA,UAAA,CAAW2C,KAAA,GAAQJ,OAAA,CAAQI,KAAA;EAE1D,MAAMC,aAAA,GAAgB,CAAC,CAAC7C,IAAA,EAAM8C,cAAA;EAC9B,MAAMC,SAAA,GAAYC,MAAA,CAAQtC,WAAA,EAAqDqC,SAAA,IAAa,CAAC;EAC7F,MAAME,YAAA,GAAe/G,OAAA,CAAQ,MAAM;IACjC,IAAI,CAAC8D,IAAA,EAAM,OAAO;IAClB,OAAOtC,QAAA,GAAWD,sBAAA,CAAuBC,QAAQ,IAAIsC,IAAA,CAAKrC,MAAA;EAC5D,GAAG,CAACqC,IAAA,EAAMtC,QAAQ,CAAC;EACnB,MAAMwF,SAAA,GAAY5F,YAAA,CAChBuF,aAAA,IAAiBE,SAAA,KAAc,IAAIb,YAAA,GAAe,QAClDjD,OAAA,EACAC,IACF;EACA,MAAMiE,WAAA,GAAc/C,QAAA,IAAY,CAAC,CAACJ,IAAA,IAAQ3C,aAAA,CAAc2C,IAAA,CAAKoD,QAAA,EAAUpD,IAAA,CAAKqD,WAAW;EACvF,MAAMC,QAAA,GAAWpH,OAAA,CAAQ,MAAO8D,IAAA,GAAOlD,aAAA,CAAckD,IAAA,CAAKrC,MAAM,IAAI,QAAY,CAACqC,IAAI,CAAC;EAEtF,MAAMuD,kBAAA,GAAqBvH,WAAA,CAAayC,GAAA,IAAiB;IACvDoC,WAAA,CAAYpC,GAAA,YAAe+E,KAAA,GAAQ/E,GAAA,GAAM,IAAI+E,KAAA,CAAMC,MAAA,CAAOhF,GAAG,CAAC,CAAC;EACjE,GAAG,EAAE;EACL,MAAMiF,aAAA,GAAgB9H,mBAAA,CAA0BsD,IAAA,GAAOgD,YAAA,GAAe,QAAWjD,OAAA,EAAS;IACxFtB,MAAA;IACAgG,OAAA,EAASzE,IAAA,GAAO;MAAEA;IAAK,IAAI;IAC3B0E,WAAA,EAAaL;EACf,CAAC;EACD,MAAM;IAAEM,IAAA,EAAMC,UAAA;IAAYpB,SAAA,EAAWqB;EAAa,IAAIjI,YAAA,CACnDkI,CAAA,IAAM;IACL,IAAI,CAACN,aAAA,IAAiB,CAACxE,IAAA,EAAM,OAAO;IACpC,OAAO8E,CAAA,CAAEC,IAAA,CAAK;MAAEC,IAAA,EAAMR;IAAc,CAAC,EAAES,KAAA,CAAM,CAAC;MAAED;IAAK,MAAM;MACzD,IAAI,CAACA,IAAA,EAAM,OAAOnI,EAAA,CAAGmD,IAAA,EAAMA,IAAI;MAC/B,OAAOnD,EAAA,CAAGmI,IAAA,CAAKhF,IAAA,EAAMA,IAAI;IAC3B,CAAC;EACH,GACA,CAACwE,aAAA,EAAexE,IAAI,CACtB;EACA,MAAMkF,OAAA,GAAUlI,OAAA,CAAQ,MAAM;IAC5B,MAAMmI,GAAA,GAAMC,KAAA,CAAMC,OAAA,CAAQT,UAAU,IAAIA,UAAA,GAAaA,UAAA,GAAa,CAACA,UAAU,IAAI,EAAC;IAClF,MAAMU,GAAA,GAAOH,GAAA,CAAI,CAAC,KAAK;IACvB,OAAOG,GAAA,GACH;MAAEX,IAAA,EAAMW,GAAA;MAAK9B,SAAA,EAAWqB;IAAa,IACrC7E,IAAA,GACE;MAAE2E,IAAA,EAAM;MAAMnB,SAAA,EAAWqB;IAAa,IACtC;EACR,GAAG,CAACD,UAAA,EAAYC,YAAA,EAAc7E,IAAI,CAAC;EAInC,MAAMuF,UAAA,GAAa7I,mBAAA,CAA0BsD,IAAA,GAAO,SAAYgD,YAAA,EAAcjD,OAAA,EAAS;IACrFtB;EACF,CAAC;EAED,MAAM+G,eAAA,GAAkB9I,mBAAA,CACtBiE,UAAA,IAAc,CAACD,cAAA,IAAkBV,IAAA,GAAOgD,YAAA,GAAe,QACvD,YACA;IACEvE,MAAA,EAAQ,CAAC,QAAQ,QAAQ,YAAY,QAAQ,SAAS,OAAO;IAC7DgG,OAAA,EAAS;MAAEgB,aAAA,EAAe1F,OAAA;MAAS2F,UAAA,EAAY1F;IAAK;EACtD,CACF;EACA,MAAM;IAAE2E,IAAA,EAAMgB;EAAa,IAAI/I,YAAA,CAC5BkI,CAAA,IAAOU,eAAA,GAAkBV,CAAA,CAAEC,IAAA,CAAK;IAAEa,MAAA,EAAQJ;EAAgB,CAAC,IAAI,MAChE,CAACA,eAAe,CAClB;EACA,MAAMK,SAAA,GAAY7I,OAAA,CAChB,MACE0D,cAAA,KACC8E,eAAA,GAAoBG,YAAA,IAAgD,EAAC,GAAK,SAC7E,CAACjF,cAAA,EAAgB8E,eAAA,EAAiBG,YAAY,CAChD;EAEA,MAAMG,KAAA,GAAStE,WAAA,EAAqDsE,KAAA;EACpE,MAAM;IACJvF,MAAA,EAAQwF,aAAA;IACRC,OAAA,EAASC,cAAA;IACT3F,KAAA,EAAO4F,cAAA;IACPC;EACF,IAAI9H,YAAA,CAAa2E,YAAA,EAAclC,IAAA,EAAM;IACnCR,KAAA;IACAwF,KAAA,EAAO,OAAOA,KAAA,KAAU,WAAWA,KAAA,GAAQ;IAC3CrF,MAAA,EAAQoF;EACV,CAAC;EACD,MAAMtF,MAAA,GAASC,cAAA,IAAkBuF,aAAA;EACjC,MAAMK,aAAA,GAAgB5F,cAAA,GAAiB,QAAQyF,cAAA;EAC/C,MAAMI,UAAA,GAAarJ,OAAA,CACjB,MAAMa,oBAAA,CAAqBiD,IAAA,EAAMwF,WAAA,EAAaJ,cAAc,GAC5D,CAACpF,IAAA,EAAMwF,WAAA,EAAaJ,cAAc,CACpC;EACA,MAAMK,IAAA,GAAOvJ,OAAA,CAAQ,MAAM;IACzB,IAAI,CAAC+G,YAAA,EAAc,OAAO;IAC1B,OAAO7F,aAAA,CAAc;MACnBO,MAAA,EAAQsF,YAAA;MACRuB,GAAA,EAAK;QACH,GAAIhE,QAAA;QACJkF,SAAA,EAAWtF,QAAA,GAAW,IAAI;QAC1B,IAAIiF,IAAA,GAAO;UAAEM,cAAA,EAAgBN;QAAK,IAAI,CAAC;MACzC;MACAtC,SAAA;MACA6C,YAAA,EAAc,CAAC,CAAC5F,IAAA,EAAM6F,SAAA;MACtBzF,QAAA;MACA0F,YAAA,EAAc3F,CAAA,CAAE,SAAS;MACzBoF,UAAA;MACAQ,YAAA,EAAczG,UAAA;MACd0G,cAAA,EAAgBzG;IAClB,CAAC;EACH,GAAG,CACD0D,YAAA,EACAzC,QAAA,EACAJ,QAAA,EACAiF,IAAA,EACAtC,SAAA,EACA/C,IAAA,EAAM6F,SAAA,EACNN,UAAA,EACAjG,UAAA,EACAC,YAAA,EACAY,CAAA,CACD;EAGDlE,SAAA,CAAU,MAAM;IACdyF,aAAA,CAAcnB,OAAA,GAAU;IACxB,IAAIrB,IAAA,EAAM2C,cAAA,CAAetB,OAAA,GAAU;IACnCuB,eAAA,CAAgBvB,OAAA,GAAU;IAC1BY,aAAA,CAAc,KAAK;IACnBJ,iBAAA,CAAkB,EAAE;IACpBE,eAAA,CAAgB,KAAK;IACrBJ,WAAA,CAAY,IAAI;IAChB,MAAMoF,IAAA,GAAO3F,OAAA,CAAQC,OAAA;IACrBI,cAAA,CAAesF,IAAI;IACnB,IAAIA,IAAA,EAAMxF,WAAA,CAAYwF,IAAI;EAC5B,GAAG,CAAChH,OAAA,EAASC,IAAI,CAAC;EAIlBrD,sBAAA,CACEqD,IAAA,GAAOgD,YAAA,GAAe,QACtBjD,OAAA,EACCiH,KAAA,IAAU;IACT,IAAIA,KAAA,CAAMC,IAAA,KAAS,eAAe;IAClC,MAAMC,OAAA,GAAUF,KAAA,CAAME,OAAA;IACtB,IAAIA,OAAA,EAASlH,IAAA,KAASA,IAAA,EAAMiC,aAAA,CAAc,IAAI;EAChD,GACAkF,OAAA,CAAQnH,IAAI,CACd;EAIAjD,SAAA,CAAU,MAAM;IACd,MAAMqK,QAAA,GAAWlC,OAAA,EAASP,IAAA;IAC1B,IAAIyC,QAAA,EAAU;MACZ5E,aAAA,CAAcnB,OAAA,GAAU;MACxBY,aAAA,CAAc,KAAK;MACnB,MAAMoF,QAAA,GAAW3E,WAAA,CAAYrB,OAAA;MAC7B,IAAI,CAACgG,QAAA,EAAU;QACb5F,cAAA,CAAe2F,QAAyB;QACxC7F,WAAA,CAAY6F,QAAyB;QACrC;MACF;MACA,MAAME,KAAA,GAAQ7E,WAAA,CAAYpB,OAAA;MAC1B,MAAMkG,MAAA,GAAkC;QAAE,GAAGH;MAAS;MACtD,MAAMI,YAAA,GAAyB,EAAC;MAChC,WAAWC,GAAA,IAAOC,MAAA,CAAOC,IAAA,CAAKL,KAAK,GAAG;QACpC,MAAMM,UAAA,GAAaN,KAAA,CAAMG,GAAG;QAC5B,IAAIhK,WAAA,CAAYmK,UAAA,EAAYP,QAAA,CAASI,GAAG,CAAC,GAAG;QAC5CF,MAAA,CAAOE,GAAG,IAAIG,UAAA;QACd,MAAMC,MAAA,GAAST,QAAA,CAASK,GAAG;QAC3B,IAAI,CAAChK,WAAA,CAAYoK,MAAA,EAAQR,QAAA,CAASI,GAAG,CAAC,KAAK,CAAChK,WAAA,CAAYoK,MAAA,EAAQD,UAAU,GAAG;UAC3EJ,YAAA,CAAa3I,IAAA,CAAK4I,GAAG;QACvB;MACF;MACAhG,cAAA,CAAe2F,QAAyB;MACxC7F,WAAA,CAAYgG,MAAuB;MACnC,IAAIC,YAAA,CAAaM,MAAA,GAAS,GAAG;QAC3BjG,iBAAA,CAAmBkG,IAAA,IAAS3C,KAAA,CAAML,IAAA,CAAK,mBAAIiD,GAAA,CAAI,CAAC,GAAGD,IAAA,EAAM,GAAGP,YAAY,CAAC,CAAC,CAAC;MAC7E;IACF,WAAWxH,IAAA,IAAQwC,aAAA,CAAcnB,OAAA,IAAW,CAAC6D,OAAA,EAAS1B,SAAA,EAAW;MAG/DvB,aAAA,CAAc,IAAI;IACpB;EACF,GAAG,CAACiD,OAAA,EAASP,IAAA,EAAMO,OAAA,EAAS1B,SAAA,EAAWzD,OAAA,EAASC,IAAI,CAAC;EAKrDjD,SAAA,CAAU,MAAM;IACd,IAAIiD,IAAA,EAAM;IACV,IAAI2C,cAAA,CAAetB,OAAA,EAAStB,OAAA,KAAYA,OAAA,EAAS;MAC/C4C,cAAA,CAAetB,OAAA,GAAU;QAAEtB,OAAA;QAASkI,MAAA,EAAQ3K,iBAAA,CAAkByC,OAAO;MAAE;IACzE;IACA,MAAMmI,KAAA,GAAQvF,cAAA,CAAetB,OAAA,CAAQ4G,MAAA;IACrC,MAAME,QAAA,GAAWrH,IAAA,GAAO7C,mBAAA,CAAoB6C,IAAA,CAAKrC,MAAA,EAAQ0H,IAAI,IAAI,CAAC;IAClE,MAAMiC,KAAA,GAAQxF,eAAA,CAAgBvB,OAAA,KAAYtB,OAAA;IAC1C6C,eAAA,CAAgBvB,OAAA,GAAUtB,OAAA;IAC1BwB,WAAA,CACGwG,IAAA,KAAU;MAAE,GAAGI,QAAA;MAAU,GAAGD,KAAA;MAAO,IAAIE,KAAA,GAAQ,CAAC,IAAIL,IAAA;MAAOhI;IAAQ,EACtE;EACF,GAAG,CAACC,IAAA,EAAMD,OAAA,EAASe,IAAA,EAAMqF,IAAI,CAAC;EAE9B,MAAMkC,WAAA,GAAcrL,OAAA,CAClB,MACEO,kBAAA,CACE+D,QAAA,EACAE,WACF,GACF,CAACF,QAAA,EAAUE,WAAW,CACxB;EACA,MAAM8G,OAAA,GAAUD,WAAA,CAAYP,MAAA,GAAS;EAKrC,MAAMS,YAAA,GAAeA,CAACC,KAAA,EAAeC,KAAA,KAAmB;IACtD,MAAMC,KAAA,GAAQtE,QAAA,EAAUuE,GAAA,CAAIH,KAAK;IACjC,IAAI,CAACE,KAAA,IAASA,KAAA,CAAMZ,MAAA,KAAW,KAAK,CAAC9E,YAAA,EAAc;IACnD,MAAM4F,UAAA,GAAcC,QAAA,IAAqC;MACvDtH,WAAA,CAAawG,IAAA,IAAS;QACpB,MAAM1G,OAAA,GAAU0G,IAAA;QAChB,IAAI1G,OAAA,CAAQmH,KAAK,MAAMC,KAAA,EAAO,OAAOV,IAAA;QACrC,MAAMe,KAAA,GAAQnL,kBAAA,CAAmB+K,KAAA,EAAOG,QAAA,EAASxH,OAAO;QACxD,OAAOqG,MAAA,CAAOC,IAAA,CAAKmB,KAAK,EAAEhB,MAAA,GAAS,IAAK;UAAE,GAAGzG,OAAA;UAAS,GAAGyH;QAAM,IAAsBf,IAAA;MACvF,CAAC;IACH;IACA,IAAIvK,YAAA,CAAaiL,KAAK,GAAG;MACvBG,UAAA,CAAW,CAAC,CAAC;MACb;IACF;IACA,MAAMG,SAAA,GAAYjI,IAAA,EAAMrC,MAAA,CAAOuK,IAAA,CAAMC,SAAA,IAAcA,SAAA,CAAUnK,SAAA,KAAc0J,KAAK;IAChF,MAAMU,aAAA,GAAgB,OAAOH,SAAA,EAAWjJ,OAAA,KAAY,WAAWiJ,SAAA,CAAUjJ,OAAA,GAAU;IACnF,IAAI,CAACoJ,aAAA,EAAe;IACpB,MAAMC,OAAA,GAAU/D,KAAA,CAAML,IAAA,CAAK,IAAIiD,GAAA,CAAIU,KAAA,CAAMU,GAAA,CAAKC,IAAA,IAASA,IAAA,CAAKC,MAAM,CAAC,CAAC;IACpE,MAAMjG,QAAA,GAAWL,YAAA,CAAaK,QAAA;IAC9B,MAAMwF,OAAA,GAAUxF,QAAA,GACZA,QAAA,CACGkG,MAAA,CAAOL,aAAA,EAAe3E,MAAA,CAAOkE,KAAK,GAAGU,OAAO,EAC5CK,IAAA,CAAMlE,GAAA,IAASA,GAAA,IAAO,CAAC,CAA6B,IACvDvH,YAAA,CAAaD,gBAAA,CAAiBkF,YAAY,GAAGkG,aAAA,EAAe3E,MAAA,CAAOkE,KAAK,GAAGU,OAAO;IAEtFN,OAAA,CAAQW,IAAA,CAAKZ,UAAU,EAAEa,KAAA,CAAM,MAAM,MAAS;EAChD;EAEA,MAAMC,QAAA,GAAWA,CAAClB,KAAA,EAA4BC,KAAA,KAAmB;IAC/DlH,WAAA,CAAawG,IAAA,KAAU;MACrB,GAAGA,IAAA;MACH,CAACS,KAAK,GAAGC;IACX,EAAE;IACFpG,SAAA,CAAW0F,IAAA,IAAS;MAClB,IAAI,EAAExD,MAAA,CAAOiE,KAAK,KAAKT,IAAA,GAAO,OAAOA,IAAA;MACrC,MAAM4B,IAAA,GAAO;QAAE,GAAG5B;MAAK;MACvB,OAAO4B,IAAA,CAAKpF,MAAA,CAAOiE,KAAK,CAAC;MACzB,OAAOmB,IAAA;IACT,CAAC;IACDpB,YAAA,CAAahE,MAAA,CAAOiE,KAAK,GAAGC,KAAK;EACnC;EAKA,MAAMmB,QAAA,GAAWA,CAAA,KAA8B;IAC7C,IAAI,CAACrD,IAAA,EAAM,OAAO,CAAC;IACnB,MAAMsD,gBAAA,GAA2C,CAAC;IAClD,MAAMvE,GAAA,GAAMhE,QAAA;IACZ,IAAI2C,WAAA,IAAezG,YAAA,CAAa8H,GAAA,CAAItF,IAAI,GAAG;MACzC6J,gBAAA,CAAiB7J,IAAA,GAAOiB,CAAA,CAAE,kBAAkB;IAC9C;IACA,WAAWjC,GAAA,IAAOuH,IAAA,EAAM;MACtB,WAAWiC,KAAA,IAASxJ,GAAA,CAAI8K,MAAA,CAAOrL,MAAA,EAAQ;QACrC,IAAI,CAAC+J,KAAA,CAAMuB,QAAA,EAAU;QACrB,IAAIvM,YAAA,CAAa8H,GAAA,CAAIkD,KAAA,CAAMxI,IAAI,CAAC,GAAG;UACjC6J,gBAAA,CAAiBrB,KAAA,CAAMxI,IAAI,IAAIiB,CAAA,CAAE,yBAAyB;YACxDhC,KAAA,EAAOuJ,KAAA,CAAMvJ,KAAA,IAASuJ,KAAA,CAAMxI;UAC9B,CAAC;QACH;MACF;IACF;IACA,OAAO6J,gBAAA;EACT;EAEA,MAAMG,QAAA,GAAW9I,QAAA,GAAWX,MAAA,CAAO0J,MAAA,GAAS1J,MAAA,CAAO2J,KAAA;EAEnD,MAAMC,IAAA,GAAO,MAAAA,CAAA,KAAyC;IACpD,IAAInI,UAAA,IAAc,CAACgI,QAAA,IAAYpJ,QAAA,EAAU,OAAO;IAEhD,MAAMwJ,cAAA,GAAiBR,QAAA,CAAS;IAChC,IAAIlC,MAAA,CAAOC,IAAA,CAAKyC,cAAc,EAAEtC,MAAA,GAAS,GAAG;MAC1CzF,SAAA,CAAU+H,cAAc;MACxB,OAAO;IACT;IAEAjI,eAAA,CAAgB,IAAI;IACpBE,SAAA,CAAU,CAAC,CAAC;IAEZ,IAAI;MACF,IAAIrC,IAAA,EAAM;QACR,IAAI,CAACwE,aAAA,EAAe,OAAO;QAG3B,IAAI6D,WAAA,CAAYP,MAAA,GAAS,GAAG;UAC1B,MAAMR,KAAA,GAAQhG,QAAA;UACd,MAAM+I,GAAA,GAAK7F,aAAA,CAAc8F,MAAA,CAAOtK,IAAA,EAAOkI,KAAA,IAAU;YAC/C,WAAWT,GAAA,IAAOY,WAAA,EAAa;cAC5BH,KAAA,CAAkCT,GAAG,IAAIH,KAAA,CAAMG,GAAG;YACrD;UACF,CAAC;UACD,MAAM4C,GAAA,CAAGE,WAAA,CAAYC,OAAA;QACvB;QACA3I,iBAAA,CAAkB,EAAE;QACpBE,eAAA,CAAgB,KAAK;QACrB,OAAO/B,IAAA;MACT;MACA,IAAI,CAACuF,UAAA,IAAc,CAACvC,YAAA,EAAc,OAAO;MACzC,MAAMyH,aAAA,GACFnJ,QAAA,CAAqCtB,IAAA,IAA+B,OAAO0K,IAAA,CAAKC,GAAA,CAAI,CAAC;MACzF,MAAMC,WAAA,GAAc;QAAE,GAAGtJ,QAAA;QAAUvB,OAAA;QAASC,IAAA,EAAMyK;MAAc;MAChE,MAAMJ,EAAA,GAAK9E,UAAA,CAAWsF,MAAA,CAAOD,WAAW;MACxC,MAAMP,EAAA,CAAGE,WAAA,CAAYC,OAAA;MACrB,OAAOhO,mBAAA,CAAoBwG,YAAY,GAAG8H,WAAA,CAAYL,aAAa,KAAKA,aAAA;IAC1E,SAASlL,GAAA,EAAc;MACrB,MAAMC,CAAA,GAAID,GAAA;MACV,IAAID,eAAA,CAAgBC,GAAG,GAAGwC,eAAA,CAAgB,IAAI;MAC9C,IAAIvC,CAAA,EAAGE,QAAA,KAAa,mBAAmB;QACrC,MAAMmK,gBAAA,GAA2C,CAAC;QAClD,IAAIrK,CAAA,CAAEuL,gBAAA,EAAkB;UACtB,IAAI;YACF,MAAMC,QAAA,GAAWC,IAAA,CAAKC,KAAA,CAAM1L,CAAA,CAAEuL,gBAAgB;YAC9C,WAAWI,GAAA,IAAOH,QAAA,EAAU;cAC1B,MAAMI,MAAA,GACJ,OAAOD,GAAA,KAAQ,WAAYF,IAAA,CAAKC,KAAA,CAAMC,GAAG,IAA6BA,GAAA;cACxE,IAAIC,MAAA,CAAOxL,OAAA,EAAS;gBAClBiK,gBAAA,CAAiBwB,OAAA,GAAUD,MAAA,CAAOxL,OAAA;cACpC;YACF;UACF,QAAQ;YACNiK,gBAAA,CAAiBwB,OAAA,GAAUpK,CAAA,CAAE,2BAA2B;UAC1D;QACF;QACAoB,SAAA,CAAUwH,gBAAgB;MAC5B,OAAO;QACLxH,SAAA,CAAU;UAAEgJ,OAAA,EAAS7L,CAAA,EAAGI,OAAA,IAAWqB,CAAA,CAAE,yBAAyB;QAAE,CAAC;MACnE;MACA,OAAO;IACT,UAAE;MACAkB,eAAA,CAAgB,KAAK;IACvB;EACF;EAEA,MAAMmJ,KAAA,GAAQA,CAAA,KAAM;IAClB,IAAI9J,WAAA,EAAa;MACfD,WAAA,CAAYC,WAAW;IACzB,WAAW0D,OAAA,EAASP,IAAA,EAAM;MACxBpD,WAAA,CAAY2D,OAAA,CAAQP,IAAqB;IAC3C,OAAO;MACLpD,WAAA,CAAY;QAAExB;MAAQ,CAAkB;IAC1C;IACA8B,iBAAA,CAAkB,EAAE;IACpBE,eAAA,CAAgB,KAAK;IACrBM,SAAA,CAAU,CAAC,CAAC;EACd;EAEA,MAAMkJ,MAAA,GAAS,MAAAA,CAAA,KAA8B;IAC3C,IAAI,CAAC/G,aAAA,IAAiB,CAACxE,IAAA,IAAQgC,UAAA,IAAc,CAACzB,MAAA,CAAOiL,MAAA,EAAQ,OAAO;IACpErJ,eAAA,CAAgB,IAAI;IACpBE,SAAA,CAAU,CAAC,CAAC;IACZ,IAAI;MACF,MAAMgI,EAAA,GAAK7F,aAAA,CAAcgH,MAAA,CAAOxL,IAAI;MACpC,MAAMqK,EAAA,CAAGE,WAAA,CAAYC,OAAA;MACrB,OAAO;IACT,SAASjL,GAAA,EAAK;MACZ8C,SAAA,CAAU;QAAEgJ,OAAA,EAAU9L,GAAA,EAAeK,OAAA,IAAWqB,CAAA,CAAE,kBAAkB;MAAE,CAAC;MACvE,OAAO;IACT,UAAE;MACAkB,eAAA,CAAgB,KAAK;IACvB;EACF;EAKA,MAAMsJ,mBAAA,GAAsB,MAAAA,CAAOC,EAAA,EAAWC,OAAA,KAAsC;IAClF,IAAI,CAACnH,aAAA,IAAiB,CAACxE,IAAA,IAAQgC,UAAA,IAAc,CAACzB,MAAA,CAAOmL,EAAA,KAAO,IAAI,WAAW,QAAQ,GAAG;MACpF,OAAO;IACT;IACA,IAAIA,EAAA,KAAO,GAAG;MACZ,MAAMtB,cAAA,GAAiBR,QAAA,CAAS;MAChC,IAAIlC,MAAA,CAAOC,IAAA,CAAKyC,cAAc,EAAEtC,MAAA,GAAS,GAAG;QAC1CzF,SAAA,CAAU+H,cAAc;QACxB,OAAO;MACT;IACF;IACAjI,eAAA,CAAgB,IAAI;IACpBE,SAAA,CAAU,CAAC,CAAC;IACZ,IAAI;MACF,MAAMgI,EAAA,GAAK7F,aAAA,CAAc8F,MAAA,CAAOtK,IAAA,EAAOkI,KAAA,IAAU;QAC9CA,KAAA,CAAkCrE,SAAA,GAAY6H,EAAA;MACjD,CAAC;MACD,MAAMrB,EAAA,CAAGE,WAAA,CAAYC,OAAA;MACrB,OAAO;IACT,SAASjL,GAAA,EAAK;MACZ,IAAID,eAAA,CAAgBC,GAAG,GAAGwC,eAAA,CAAgB,IAAI;MAC9CM,SAAA,CAAU;QAAEgJ,OAAA,EAAS/M,kBAAA,CAAmBiB,GAAA,EAAKoM,OAAO;MAAE,CAAC;MACvD,OAAO;IACT,UAAE;MACAxJ,eAAA,CAAgB,KAAK;IACvB;EACF;EAEA,MAAMyJ,cAAA,GAAiBA,CAAA,KAAMH,mBAAA,CAAoB,GAAGxK,CAAA,CAAE,kBAAkB,CAAC;EACzE,MAAM4K,cAAA,GAAiBA,CAAA,KAAMJ,mBAAA,CAAoB,GAAGxK,CAAA,CAAE,kBAAkB,CAAC;EAEzE,MAAM6K,KAAA,GAAQA,CAAA,KAAiC;IAC7C,IAAI,CAAChL,IAAA,IAAQ,CAACd,IAAA,IAAQ,CAACO,MAAA,CAAOuL,KAAA,EAAO,OAAO;IAC5C,MAAM5D,KAAA,GAAQxK,gBAAA,CAAiBoD,IAAA,CAAKrC,MAAA,EAAQ6C,QAAA,EAAqCtB,IAAI;IACrF3C,gBAAA,CAAiB0C,OAAA,EAASmI,KAAK;IAC/B,OAAOA,KAAA;EACT;EAEA,MAAM6D,SAAA,GAAYA,CAAA,KAA2C;IAC3D,IAAI,CAACjL,IAAA,EAAM,OAAO;IAClB,MAAMmH,MAAA,GAASjK,eAAA,CAAgB8C,IAAA,CAAKrC,MAAA,EAAQ6C,QAAmC;IAC/EjE,gBAAA,CAAiB0C,OAAA,EAASkI,MAAM;IAChC,OAAOA,MAAA;EACT;EAEA,MAAM+D,YAAA,GAAehP,OAAA,CACnB,OACGuJ,IAAA,IAAQ,EAAC,EAAG0F,OAAA,CAASjN,GAAA,IACpBA,GAAA,CAAI8K,MAAA,CAAOrL,MAAA,CAAO2K,GAAA,CAAKZ,KAAA,KAAW;IAChCxI,IAAA,EAAMwI,KAAA,CAAMxI,IAAA;IACZf,KAAA,EAAOuJ,KAAA,CAAMvJ,KAAA,IAASuJ,KAAA,CAAMxI,IAAA;IAC5BkM,MAAA,EAAQlN,GAAA,CAAIyI,GAAA;IACZ0E,QAAA,EAAUnN,GAAA,CAAIC;EAChB,EAAE,CACJ,GACF,CAACsH,IAAI,CACP;EACA,MAAM6F,WAAA,GAAeC,SAAA,IAA+B;IAClD,MAAMC,MAAA,GAASN,YAAA,CAAahD,IAAA,CAAMR,KAAA,IAAUA,KAAA,CAAMxI,IAAA,KAASqM,SAAS;IACpE,IAAI,CAACC,MAAA,EAAQ,OAAO;IACpB/J,YAAA,CAAa+J,MAAA,CAAOJ,MAAM;IAC1B,OAAO;EACT;EAIA,MAAMK,YAAA,GAAepF,OAAA,CAAQnH,IAAI,MAAM,CAACwE,aAAA,IAAiB2C,OAAA,CAAQjC,OAAA,EAAS1B,SAAS;EACnF,MAAMgJ,SAAA,GAAYrF,OAAA,CAAQhG,OAAO,KAAKoL,YAAA;EACtC,MAAM9M,MAAA,GAA2B,CAACO,IAAA,GAC9B,UACA0B,QAAA,IAAY,CAACwD,OAAA,EAASP,IAAA,IAAQ,CAAC3C,UAAA,GAC7B,UACAuK,YAAA,IAAgB,CAACC,SAAA,IAAa,CAACxK,UAAA,GAC7B,YACA,CAACuK,YAAA,IAAgB,CAACrH,OAAA,EAASP,IAAA,IAAQ,CAAC3C,UAAA,GAClC,aACA;EAEV,OAAO;IACLjC,OAAA;IACAC,IAAA;IACAkB,QAAA;IACAuL,UAAA,EAAYzJ,YAAA;IACZlC,IAAA;IACA4L,WAAA,EAAanJ,aAAA;IACbE,SAAA;IACA6B,GAAA,EAAKhE,QAAA;IACL+F,QAAA,EAAU7F,WAAA;IACVkI,QAAA;IACAtH,MAAA;IACAC,SAAA;IACAgG,WAAA;IACAC,OAAA;IACApG,YAAA;IACA2B,SAAA;IACAF,aAAA;IACApD,MAAA;IACA6F,aAAA;IACA9F,KAAA,EAAO4F,cAAA;IACPC,IAAA;IACAN,SAAA;IACAmE,QAAA;IACA2C,QAAA,EAAU/L,QAAA,IAAYoB,UAAA,IAAc,CAAC,CAAClB,IAAA,EAAM6F,SAAA,IAAa,CAACqD,QAAA;IAC1DhI,UAAA;IACAJ,cAAA;IACAgL,QAAA,EAAU9K,YAAA,IAAgBF,cAAA,CAAekG,MAAA,GAAS;IAClDrI,MAAA;IACAiC,QAAA;IACA8K,SAAA;IACAjG,IAAA;IACAtC,WAAA;IACA+H,YAAA;IACA1J,SAAA;IACAC,YAAA;IACA6J,WAAA;IACApI,SAAA;IACA4F,QAAA;IACAO,IAAA;IACAyB,cAAA;IACAC,cAAA;IACAN,MAAA;IACAD,KAAA;IACAQ,KAAA;IACAC;EACF;AACF","ignoreList":[]}
|