synapse-react-client 4.0.42 → 4.0.43

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 (122) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +6 -20
  3. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.js +165 -159
  5. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  6. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +3 -2
  7. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
  8. package/dist/components/AccessRequirementList/AccessRequirementListItem.js +23 -22
  9. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  10. package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts +4 -3
  11. package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js +6 -4
  13. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  14. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts +22 -0
  15. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts.map +1 -0
  16. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js +166 -0
  17. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js.map +1 -0
  18. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts +18 -0
  19. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts.map +1 -0
  20. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js +91 -0
  21. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js.map +1 -0
  22. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts +33 -0
  23. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts.map +1 -0
  24. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js +49 -0
  25. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js.map +1 -0
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.d.ts.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +26 -42
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +140 -155
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +43 -60
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +4 -5
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +5 -5
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +88 -103
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.d.ts.map +1 -1
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +14 -30
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.d.ts → RequestableAccessRequirementItem.d.ts} +9 -8
  46. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.d.ts.map +1 -0
  47. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.js → RequestableAccessRequirementItem.js} +16 -16
  48. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.js.map +1 -0
  49. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.d.ts → RequestableAccessRequirementItemView.d.ts} +5 -5
  50. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.d.ts.map +1 -0
  51. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.js → RequestableAccessRequirementItemView.js} +3 -4
  52. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.js.map +1 -0
  53. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  54. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +94 -110
  55. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  56. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +0 -2
  57. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
  58. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +35 -52
  59. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -1
  60. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  61. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +79 -95
  62. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  63. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +2 -1
  64. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -1
  65. package/dist/components/AccessRequirementList/RequestDataStep.d.ts +34 -0
  66. package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -0
  67. package/dist/components/AccessRequirementList/RequestDataStep.js +37 -0
  68. package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -0
  69. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.d.ts +1 -1
  70. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  71. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -1
  72. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +29 -30
  73. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -1
  74. package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts +21 -0
  75. package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts.map +1 -0
  76. package/dist/components/JsonSchemaForm/SchemaStepForm.js +29 -0
  77. package/dist/components/JsonSchemaForm/SchemaStepForm.js.map +1 -0
  78. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.d.ts +2 -2
  79. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.d.ts.map +1 -1
  80. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js +11 -10
  81. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  82. package/dist/components/SynapseForm/SynapseForm.js +28 -28
  83. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  84. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +5 -4
  85. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  86. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.d.ts.map +1 -1
  87. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +5 -4
  88. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  89. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -1
  90. package/dist/features/curator/dashboard/CuratorDashboardRouter.js +15 -15
  91. package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -1
  92. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -1
  93. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +15 -14
  94. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -1
  95. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
  96. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
  97. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +30 -15
  98. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
  99. package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts +3 -0
  100. package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts.map +1 -1
  101. package/dist/mocks/dataaccess/MockDataAccessRequest.js +24 -12
  102. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  103. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  104. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +42 -30
  105. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  106. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.d.ts +19 -0
  107. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.d.ts.map +1 -0
  108. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js +26 -0
  109. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js.map +1 -0
  110. package/dist/tsconfig.build.tsbuildinfo +1 -1
  111. package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
  112. package/dist/utils/hooks/useDetectSSOCode.js +31 -26
  113. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  114. package/dist/utils/jsonschema/schemaData.d.ts +18 -0
  115. package/dist/utils/jsonschema/schemaData.d.ts.map +1 -0
  116. package/dist/utils/jsonschema/schemaData.js +26 -0
  117. package/dist/utils/jsonschema/schemaData.js.map +1 -0
  118. package/package.json +2 -2
  119. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.d.ts.map +0 -1
  120. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +0 -1
  121. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +0 -1
  122. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +0 -1
@@ -2,67 +2,67 @@ import { SynapseErrorBoundary as e } from "../../../error/ErrorBanner.js";
2
2
  import { useSynapseContext as t } from "../../../../utils/context/SynapseContext.js";
3
3
  import "../../../../utils/index.js";
4
4
  import { useSubmitDataAccessRequest as n } from "../../../../synapse-queries/dataaccess/useDataAccessSubmission.js";
5
- import { useGetDataAccessRequestForUpdate as ee, useUpdateDataAccessRequest as te } from "../../../../synapse-queries/dataaccess/useAccessRequirements.js";
6
- import { useGetCurrentUserProfile as r } from "../../../../synapse-queries/user/useUserBundle.js";
5
+ import { useGetDataAccessRequestForUpdate as r, useUpdateDataAccessRequest as i } from "../../../../synapse-queries/dataaccess/useAccessRequirements.js";
6
+ import { useGetCurrentUserProfile as ee } from "../../../../synapse-queries/user/useUserBundle.js";
7
7
  import "../../../../synapse-queries/index.js";
8
- import i from "../../../IconSvg/IconSvg.js";
8
+ import { DialogBaseTitle as te } from "../../../DialogBase.js";
9
9
  import { longFieldLabelSx as a } from "../styles.js";
10
10
  import ne from "../DataAccessRequestAccessorsEditor.js";
11
- import o from "../AccessorRequirementHelpText.js";
12
- import { UploadDocumentField as s } from "../UploadDocumentField.js";
13
- import re from "../DucUploadSection.js";
14
- import c from "../ManagedACTAccessRequirementFormWikiWrapper.js";
15
- import ie from "../SigningOfficialFields.js";
16
- import { useInitializeRequestAccessors as l } from "../useInitializeRequestAccessors.js";
17
- import { useEffect as ae, useState as u } from "react";
18
- import { Alert as d, Box as f, Button as p, DialogActions as m, DialogContent as oe, DialogTitle as se, Divider as h, IconButton as ce, Stack as le, Typography as g } from "@mui/material";
19
- import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
20
- import { FileHandleAssociateType as b } from "@sage-bionetworks/synapse-types";
21
- import x from "lodash-es/isEmpty";
11
+ import re from "../AccessorRequirementHelpText.js";
12
+ import { UploadDocumentField as o } from "../UploadDocumentField.js";
13
+ import s from "../DucUploadSection.js";
14
+ import ie from "../ManagedACTAccessRequirementFormWikiWrapper.js";
15
+ import c from "../SigningOfficialFields.js";
16
+ import { useInitializeRequestAccessors as ae } from "../useInitializeRequestAccessors.js";
17
+ import { useEffect as oe, useState as l } from "react";
18
+ import { Alert as u, Box as d, Button as f, DialogActions as se, DialogContent as ce, Divider as p, Typography as m } from "@mui/material";
19
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
20
+ import { FileHandleAssociateType as v } from "@sage-bionetworks/synapse-types";
21
+ import y from "lodash-es/isEmpty";
22
22
  //#region src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx
23
- var S = 97;
24
- function C(S) {
25
- let { onSubmissionCreated: C, managedACTAccessRequirement: w, subjectId: T, subjectType: E, researchProjectId: D, onCancel: ue, onBackClicked: de, onEDucContinue: O } = S, { isAuthenticated: k } = t(), { data: A } = r({ enabled: k }), [j, M] = u(), N = !!w.eDucTemplateId, [P, F] = u(), [I, L] = u(), [R, z] = u(), [B, V] = u(""), [H, U] = u(""), { data: W, isLoading: G } = ee(String(w.id), {
26
- enabled: k,
23
+ var b = 97;
24
+ function x(b) {
25
+ let { onSubmissionCreated: x, managedACTAccessRequirement: S, subjectId: le, subjectType: C, researchProjectId: w, onCancel: T, onBackClicked: E, onEDucContinue: D } = b, { isAuthenticated: O } = t(), { data: k } = ee({ enabled: O }), [A, j] = l(), M = !!S.eDucTemplateId, [N, P] = l(), [F, I] = l(), [L, R] = l(), [z, B] = l(""), [V, H] = l(""), { data: U, isLoading: W } = r(String(S.id), {
26
+ enabled: O,
27
27
  staleTime: Infinity,
28
28
  throwOnError: !0
29
- }), K = W?.concreteType === "org.sagebionetworks.repo.model.dataaccess.Renewal";
30
- function q(e) {
31
- console.log("RequestDataAccessStep2: Error updating form", e), M({
29
+ }), G = U?.concreteType === "org.sagebionetworks.repo.model.dataaccess.Renewal";
30
+ function K(e) {
31
+ console.log("RequestDataAccessStep2: Error updating form", e), j({
32
32
  key: "error",
33
- message: Q(e.reason)
33
+ message: Z(e.reason)
34
34
  });
35
35
  }
36
- let { mutate: fe, isPending: J } = n({
36
+ let { mutate: ue, isPending: q } = n({
37
37
  onSuccess: (e) => {
38
- C(e.submissionId);
38
+ x(e.submissionId);
39
39
  },
40
- onError: q
41
- }), { mutate: Y, mutateAsync: pe, isPending: me } = te({ onError: q }), X = G || me || J, he = G || J, ge = J || N && (!B || !H);
42
- l({
43
- dataAccessRequest: W,
44
- user: A,
45
- isRenewal: K,
46
- updateRequest: Y,
47
- researchProjectId: D
48
- }), ae(() => {
49
- if (W && (W.accessorChanges && P == null && F(W.accessorChanges), K && W.publication && R == null && z(W.publication), K && W.summaryOfUse && I == null && L(W.summaryOfUse), N)) {
50
- let e = W.signingOfficial;
51
- x(B) && e?.name && V(e.name), x(H) && e?.institutionalEmail && U(e.institutionalEmail);
40
+ onError: K
41
+ }), { mutate: J, mutateAsync: de, isPending: fe } = i({ onError: K }), Y = W || fe || q, pe = W || q, me = q || M && (!z || !V);
42
+ ae({
43
+ dataAccessRequest: U,
44
+ user: k,
45
+ isRenewal: G,
46
+ updateRequest: J,
47
+ researchProjectId: w
48
+ }), oe(() => {
49
+ if (U && (U.accessorChanges && N == null && P(U.accessorChanges), G && U.publication && L == null && R(U.publication), G && U.summaryOfUse && F == null && I(U.summaryOfUse), M)) {
50
+ let e = U.signingOfficial;
51
+ y(z) && e?.name && B(e.name), y(V) && e?.institutionalEmail && H(e.institutionalEmail);
52
52
  }
53
- }, [W]);
54
- function Z() {
53
+ }, [U]);
54
+ function X() {
55
55
  let e = {
56
- ...W,
57
- accessorChanges: P,
58
- publication: R,
59
- summaryOfUse: I
56
+ ...U,
57
+ accessorChanges: N,
58
+ publication: L,
59
+ summaryOfUse: F
60
60
  };
61
- if (N) {
61
+ if (M) {
62
62
  let t = {
63
- ...W?.signingOfficial,
64
- name: B || void 0,
65
- institutionalEmail: H || void 0
63
+ ...U?.signingOfficial,
64
+ name: z || void 0,
65
+ institutionalEmail: V || void 0
66
66
  };
67
67
  return {
68
68
  ...e,
@@ -71,90 +71,75 @@ function C(S) {
71
71
  }
72
72
  return e;
73
73
  }
74
- async function _e() {
75
- if (W) {
76
- let e = await pe(Z());
77
- if (O) {
78
- O();
74
+ async function he() {
75
+ if (U) {
76
+ let e = await de(X());
77
+ if (D) {
78
+ D();
79
79
  return;
80
80
  }
81
- fe({
81
+ ue({
82
82
  request: {
83
83
  requestId: e.id,
84
84
  requestEtag: e.etag,
85
- subjectId: T,
86
- subjectType: E
85
+ subjectId: le,
86
+ subjectType: C
87
87
  },
88
- accessRequirementId: String(w.id)
88
+ accessRequirementId: String(S.id)
89
89
  });
90
90
  }
91
91
  }
92
- let Q = (e = "") => /* @__PURE__ */ y(_, { children: [
93
- /* @__PURE__ */ v("strong", { children: "Sorry, there is an error in submitting your request." }),
94
- /* @__PURE__ */ v("br", {}),
92
+ let Z = (e = "") => /* @__PURE__ */ _(h, { children: [
93
+ /* @__PURE__ */ g("strong", { children: "Sorry, there is an error in submitting your request." }),
94
+ /* @__PURE__ */ g("br", {}),
95
95
  e
96
- ] }), ve = (e) => {
97
- F([...e(P || [])]);
98
- }, ye = (e) => {
99
- Y({
100
- ...W,
101
- attachments: W.attachments?.filter((t) => t !== e)
96
+ ] }), Q = (e) => {
97
+ P([...e(N || [])]);
98
+ }, ge = (e) => {
99
+ J({
100
+ ...U,
101
+ attachments: U.attachments?.filter((t) => t !== e)
102
102
  });
103
103
  }, $ = (e, t) => {
104
104
  if (e.resp && e.success) {
105
105
  let n = e.resp;
106
- Y(t === "attachments" ? {
107
- ...W,
108
- attachments: [...W.attachments || [], n.fileHandleId]
106
+ J(t === "attachments" ? {
107
+ ...U,
108
+ attachments: [...U.attachments || [], n.fileHandleId]
109
109
  } : {
110
- ...W,
110
+ ...U,
111
111
  [t]: n.fileHandleId
112
112
  });
113
- } else !e.success && e.error && (console.log("RequestDataAccessStep2: Error uploading the file", e.error), M({
113
+ } else !e.success && e.error && (console.log("RequestDataAccessStep2: Error uploading the file", e.error), j({
114
114
  key: "error",
115
- message: Q(e.error.reason)
115
+ message: Z(e.error.reason)
116
116
  }));
117
- }, be = W?.ducFileHandleId ? [{
118
- fileHandleId: W?.ducFileHandleId,
119
- associateObjectType: b.DataAccessRequestAttachment,
120
- associateObjectId: String(W.id)
121
- }] : [], xe = W?.irbFileHandleId ? [{
122
- fileHandleId: W.irbFileHandleId,
123
- associateObjectType: b.DataAccessRequestAttachment,
124
- associateObjectId: String(W.id)
125
- }] : [], Se = (W?.attachments || []).map((e) => ({
117
+ }, _e = U?.ducFileHandleId ? [{
118
+ fileHandleId: U?.ducFileHandleId,
119
+ associateObjectType: v.DataAccessRequestAttachment,
120
+ associateObjectId: String(U.id)
121
+ }] : [], ve = U?.irbFileHandleId ? [{
122
+ fileHandleId: U.irbFileHandleId,
123
+ associateObjectType: v.DataAccessRequestAttachment,
124
+ associateObjectId: String(U.id)
125
+ }] : [], ye = (U?.attachments || []).map((e) => ({
126
126
  fileHandleId: e,
127
- associateObjectType: b.DataAccessRequestAttachment,
128
- associateObjectId: String(W.id)
127
+ associateObjectType: v.DataAccessRequestAttachment,
128
+ associateObjectId: String(U.id)
129
129
  })) ?? [];
130
- return /* @__PURE__ */ y(_, { children: [
131
- /* @__PURE__ */ v(se, { children: /* @__PURE__ */ y(le, {
132
- direction: "row",
133
- sx: {
134
- alignItems: "center",
135
- gap: "5px"
136
- },
137
- children: [
138
- "Request Access",
139
- /* @__PURE__ */ v(f, { sx: { flexGrow: 1 } }),
140
- /* @__PURE__ */ v(ce, {
141
- onClick: S.onHide,
142
- children: /* @__PURE__ */ v(i, {
143
- icon: "close",
144
- wrap: !1,
145
- sx: { color: "grey.700" }
146
- })
147
- })
148
- ]
149
- }) }),
150
- /* @__PURE__ */ y(oe, { children: [/* @__PURE__ */ v(c, {
151
- managedACTAccessRequirementId: String(w.id),
152
- children: /* @__PURE__ */ y(f, {
130
+ return /* @__PURE__ */ _(h, { children: [
131
+ /* @__PURE__ */ g(te, {
132
+ title: "Request Access",
133
+ onCancel: b.onHide
134
+ }),
135
+ /* @__PURE__ */ _(ce, { children: [/* @__PURE__ */ g(ie, {
136
+ accessRequirement: S,
137
+ children: /* @__PURE__ */ _(d, {
153
138
  component: "form",
154
139
  sx: { minHeight: "475px" },
155
140
  onSubmit: (e) => e.preventDefault(),
156
141
  children: [
157
- /* @__PURE__ */ v(g, {
142
+ /* @__PURE__ */ g(m, {
158
143
  variant: "body1",
159
144
  sx: {
160
145
  mb: 2,
@@ -162,37 +147,37 @@ function C(S) {
162
147
  },
163
148
  children: "Please provide the information below to submit the request for access."
164
149
  }),
165
- N && /* @__PURE__ */ v(ie, {
166
- name: B,
167
- email: H,
168
- disabled: he,
169
- onNameChange: V,
170
- onEmailChange: U
150
+ M && /* @__PURE__ */ g(c, {
151
+ name: z,
152
+ email: V,
153
+ disabled: pe,
154
+ onNameChange: B,
155
+ onEmailChange: H
171
156
  }),
172
- W && A && /* @__PURE__ */ v(ne, {
173
- accessorChanges: P || [],
174
- onChange: ve,
175
- isRenewal: K,
176
- collaboratorLimit: N ? 97 : void 0,
177
- helpText: /* @__PURE__ */ v(o, {
178
- accessRequirement: w,
179
- isEDucEnabled: N
157
+ U && k && /* @__PURE__ */ g(ne, {
158
+ accessorChanges: N || [],
159
+ onChange: Q,
160
+ isRenewal: G,
161
+ collaboratorLimit: M ? 97 : void 0,
162
+ helpText: /* @__PURE__ */ g(re, {
163
+ accessRequirement: S,
164
+ isEDucEnabled: M
180
165
  })
181
166
  }),
182
- (w?.isDUCRequired && !N || w?.isIRBApprovalRequired || w?.areOtherAttachmentsRequired) && /* @__PURE__ */ v(h, { sx: { my: 4 } }),
183
- w?.isDUCRequired && !N && /* @__PURE__ */ y(_, { children: [/* @__PURE__ */ v(re, {
184
- accessRequirement: w,
185
- isLoading: X,
186
- uploadedDucAssociations: be,
167
+ (S?.isDUCRequired && !M || S?.isIRBApprovalRequired || S?.areOtherAttachmentsRequired) && /* @__PURE__ */ g(p, { sx: { my: 4 } }),
168
+ S?.isDUCRequired && !M && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(s, {
169
+ accessRequirement: S,
170
+ isLoading: Y,
171
+ uploadedDucAssociations: _e,
187
172
  onUpload: (e) => $(e, "ducFileHandleId")
188
- }), (w?.isIRBApprovalRequired || w?.areOtherAttachmentsRequired) && /* @__PURE__ */ v(h, { sx: { my: 4 } })] }),
189
- w?.isIRBApprovalRequired && /* @__PURE__ */ y(_, { children: [
190
- /* @__PURE__ */ v(g, {
173
+ }), (S?.isIRBApprovalRequired || S?.areOtherAttachmentsRequired) && /* @__PURE__ */ g(p, { sx: { my: 4 } })] }),
174
+ S?.isIRBApprovalRequired && /* @__PURE__ */ _(h, { children: [
175
+ /* @__PURE__ */ g(m, {
191
176
  variant: "headline3",
192
177
  sx: { my: 2 },
193
178
  children: "IRB Approval"
194
179
  }),
195
- /* @__PURE__ */ v(g, {
180
+ /* @__PURE__ */ g(m, {
196
181
  variant: "body1",
197
182
  sx: {
198
183
  ...a,
@@ -200,22 +185,22 @@ function C(S) {
200
185
  },
201
186
  children: "Upload a signed IRB letter on institutional letterhead. The letter must include the names of all the datasets requested, as well as the names of the data requesters above. Use the button below to upload the document."
202
187
  }),
203
- /* @__PURE__ */ v(e, { children: /* @__PURE__ */ v(s, {
188
+ /* @__PURE__ */ g(e, { children: /* @__PURE__ */ g(o, {
204
189
  id: "irb",
205
- isLoading: X,
190
+ isLoading: Y,
206
191
  documentName: "IRB Approval Letter",
207
192
  uploadCallback: (e) => $(e, "irbFileHandleId"),
208
- fileHandleAssociations: xe
193
+ fileHandleAssociations: ve
209
194
  }) }),
210
- w?.areOtherAttachmentsRequired && /* @__PURE__ */ v(h, { sx: { my: 4 } })
195
+ S?.areOtherAttachmentsRequired && /* @__PURE__ */ g(p, { sx: { my: 4 } })
211
196
  ] }),
212
- w?.areOtherAttachmentsRequired && /* @__PURE__ */ y(_, { children: [
213
- /* @__PURE__ */ v(g, {
197
+ S?.areOtherAttachmentsRequired && /* @__PURE__ */ _(h, { children: [
198
+ /* @__PURE__ */ g(m, {
214
199
  variant: "headline3",
215
200
  sx: { my: 2 },
216
201
  children: "Upload other required documents"
217
202
  }),
218
- /* @__PURE__ */ v(g, {
203
+ /* @__PURE__ */ g(m, {
219
204
  variant: "body1",
220
205
  sx: {
221
206
  ...a,
@@ -223,52 +208,52 @@ function C(S) {
223
208
  },
224
209
  children: "You must upload other required documents. Please review the instructions to gain data access to determine which documents must also be uploaded."
225
210
  }),
226
- /* @__PURE__ */ v(e, { children: /* @__PURE__ */ v(s, {
211
+ /* @__PURE__ */ g(e, { children: /* @__PURE__ */ g(o, {
227
212
  id: "file-attachment",
228
- isLoading: X,
213
+ isLoading: Y,
229
214
  documentName: "Attachment",
230
215
  uploadCallback: (e) => $(e, "attachments"),
231
216
  isMultiFileUpload: !0,
232
- fileHandleAssociations: Se,
233
- onClearAttachment: ye
217
+ fileHandleAssociations: ye,
218
+ onClearAttachment: ge
234
219
  }) })
235
220
  ] })
236
221
  ]
237
222
  })
238
- }), j && /* @__PURE__ */ v(d, {
239
- severity: j.key,
240
- children: j.message
223
+ }), A && /* @__PURE__ */ g(u, {
224
+ severity: A.key,
225
+ children: A.message
241
226
  })] }),
242
- /* @__PURE__ */ y(m, { children: [
243
- /* @__PURE__ */ v(p, {
227
+ /* @__PURE__ */ _(se, { children: [
228
+ /* @__PURE__ */ g(f, {
244
229
  variant: "outlined",
245
230
  onClick: () => {
246
- de();
231
+ E();
247
232
  },
248
233
  children: "Back"
249
234
  }),
250
- /* @__PURE__ */ v(f, { sx: { flexGrow: 1 } }),
251
- /* @__PURE__ */ v(p, {
235
+ /* @__PURE__ */ g(d, { sx: { flexGrow: 1 } }),
236
+ /* @__PURE__ */ g(f, {
252
237
  variant: "outlined",
253
- disabled: J,
238
+ disabled: q,
254
239
  onClick: () => {
255
- W && ue(Z());
240
+ U && T(X());
256
241
  },
257
242
  children: "Cancel"
258
243
  }),
259
- /* @__PURE__ */ v(p, {
244
+ /* @__PURE__ */ g(f, {
260
245
  variant: "contained",
261
- loading: J,
262
- disabled: ge,
246
+ loading: q,
247
+ disabled: me,
263
248
  onClick: () => {
264
- _e();
249
+ he();
265
250
  },
266
- children: O ? "Continue" : "Submit"
251
+ children: D ? "Continue" : "Submit"
267
252
  })
268
253
  ] })
269
254
  ] });
270
255
  }
271
256
  //#endregion
272
- export { S as EDUC_COLLABORATOR_LIMIT, C as default };
257
+ export { b as EDUC_COLLABORATOR_LIMIT, x as default };
273
258
 
274
259
  //# sourceMappingURL=DataAccessRequestAccessorsFilesForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n Stack,\n Typography,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport isEmpty from 'lodash-es/isEmpty'\nimport {\n AccessorChange,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SigningOfficial,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport IconSvg from '../../../IconSvg/IconSvg'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport { longFieldLabelSx } from '../styles'\nimport AccessorRequirementHelpText from '../AccessorRequirementHelpText'\nimport DucUploadSection from '../DucUploadSection'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport SigningOfficialFields from '../SigningOfficialFields'\nimport { useInitializeRequestAccessors } from '../useInitializeRequestAccessors'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\n// PORTALS-4376: eDUC DARs cap total accessors at 100 (submitter + PI + 97 collaborators + 1 slack).\nexport const EDUC_COLLABORATOR_LIMIT = 97\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n /**\n * When set (used for eDUC ARs), clicking the primary action saves the DAR and invokes this callback\n * instead of creating a submission. Submission happens later in the eDUC flow.\n */\n onEDucContinue?: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n onEDucContinue,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n const [soName, setSoName] = useState<string>('')\n const [soEmail, setSoEmail] = useState<string>('')\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutate: updateRequest,\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * Fields backed by local state are not synced with the server until the request is submitted, so an in-flight\n * background update to the request must not block the user from editing them.\n */\n const disableLocalStateFields =\n isLoadingGetDataAccessRequest || submitDataAccessRequestIsPending\n\n const disableSubmitButton =\n submitDataAccessRequestIsPending || (isEDucEnabled && (!soName || !soEmail))\n\n useInitializeRequestAccessors({\n dataAccessRequest,\n user,\n isRenewal,\n updateRequest,\n researchProjectId,\n })\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n if (isEDucEnabled) {\n const so = dataAccessRequest.signingOfficial\n if (isEmpty(soName) && so?.name) {\n setSoName(so.name)\n }\n if (isEmpty(soEmail) && so?.institutionalEmail) {\n setSoEmail(so.institutionalEmail)\n }\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n const base = {\n ...dataAccessRequest,\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n if (isEDucEnabled) {\n const nextSo: SigningOfficial = {\n ...dataAccessRequest?.signingOfficial,\n name: soName || undefined,\n institutionalEmail: soEmail || undefined,\n }\n return { ...base, signingOfficial: nextSo }\n }\n return base\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n if (onEDucContinue) {\n onEDucContinue()\n return\n }\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequest({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequest({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequest({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogTitle>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'center',\n gap: '5px',\n }}\n >\n Request Access\n <Box sx={{ flexGrow: 1 }} />\n <IconButton onClick={props.onHide}>\n <IconSvg icon={'close'} wrap={false} sx={{ color: 'grey.700' }} />\n </IconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n managedACTAccessRequirementId={String(managedACTAccessRequirement.id)}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2, fontSize: '16px' }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {isEDucEnabled && (\n <SigningOfficialFields\n name={soName}\n email={soEmail}\n disabled={disableLocalStateFields}\n onNameChange={setSoName}\n onEmailChange={setSoEmail}\n />\n )}\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n collaboratorLimit={\n isEDucEnabled ? EDUC_COLLABORATOR_LIMIT : undefined\n }\n helpText={\n <AccessorRequirementHelpText\n accessRequirement={managedACTAccessRequirement}\n isEDucEnabled={isEDucEnabled}\n />\n }\n />\n )}\n\n {((managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled) ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC — hidden for eDUC ARs, which handle DUC via the eDUC flow */}\n {managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled && (\n <>\n <DucUploadSection\n accessRequirement={managedACTAccessRequirement}\n isLoading={isLoading}\n uploadedDucAssociations={ducFileHandleAssociation}\n onUpload={resp => uploadCallback(resp, 'ducFileHandleId')}\n />\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={submitDataAccessRequestIsPending}\n disabled={disableSubmitButton}\n onClick={() => {\n handleSubmit()\n }}\n >\n {onEDucContinue ? 'Continue' : 'Submit'}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataAccessRequestAccessorsFilesForm.js","names":[],"sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.tsx"],"sourcesContent":["import {\n Alert,\n AlertProps as MuiAlertProps,\n Box,\n Button,\n DialogActions,\n DialogContent,\n Divider,\n Typography,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport isEmpty from 'lodash-es/isEmpty'\nimport {\n AccessorChange,\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n Renewal,\n Request,\n RestrictableObjectType,\n SigningOfficial,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useEffect, useState } from 'react'\nimport {\n useGetCurrentUserProfile,\n useGetDataAccessRequestForUpdate,\n useSubmitDataAccessRequest,\n useUpdateDataAccessRequest,\n} from '../../../../synapse-queries'\nimport { useSynapseContext } from '../../../../utils'\nimport { SynapseErrorBoundary } from '../../../error/ErrorBanner'\nimport { DialogBaseTitle } from '../../../DialogBase'\nimport DataAccessRequestAccessorsEditor, {\n DataAccessRequestAccessorsEditorProps,\n} from '../DataAccessRequestAccessorsEditor'\nimport { longFieldLabelSx } from '../styles'\nimport AccessorRequirementHelpText from '../AccessorRequirementHelpText'\nimport DucUploadSection from '../DucUploadSection'\nimport ManagedACTAccessRequirementFormWikiWrapper from '../ManagedACTAccessRequirementFormWikiWrapper'\nimport SigningOfficialFields from '../SigningOfficialFields'\nimport { useInitializeRequestAccessors } from '../useInitializeRequestAccessors'\nimport { UploadDocumentField } from '../UploadDocumentField'\n\n// PORTALS-4376: eDUC DARs cap total accessors at 100 (submitter + PI + 97 collaborators + 1 slack).\nexport const EDUC_COLLABORATOR_LIMIT = 97\n\nexport type DataAccessRequestAccessorsFilesFormProps = {\n /**\n * The ID of the object of interest. This corresponds to the subjectId of the {@link CreateSubmissionRequest}\n */\n subjectId: string\n /* The type of the subject */\n subjectType: RestrictableObjectType\n /* The access requirement to which the user is requesting access */\n managedACTAccessRequirement: ManagedACTAccessRequirement\n onSubmissionCreated: (submissionId: string) => void\n researchProjectId: string\n onHide: () => void\n /* Callback invoked when the user clicks cancel. The unsaved, modified dataAccessRequest is returned so the calling component may prompt the user to save this data */\n onCancel: (modifiedDataAccessRequest: Request | Renewal) => void\n /** Callback invoked when the 'Back' action button is clicked */\n onBackClicked: () => void\n /**\n * When set (used for eDUC ARs), clicking the primary action saves the DAR and invokes this callback\n * instead of creating a submission. Submission happens later in the eDUC flow.\n */\n onEDucContinue?: () => void\n}\n\nexport type AlertProps = {\n key: MuiAlertProps['severity']\n message: string | ReactNode\n}\n\n/**\n * Step 2 of the Data Access Request/Renewal flow prompts the user to\n * - Manage the list of accessors, i.e. Synapse users who will gain, renew, or lose access\n * - Download and upload documents required by the Access Requirement\n * - If a renewal, provide publications and a summary of use statement.\n *\n * The component expects a researchProjectId, which should reference complete researchProject created in Step 1.\n * The user may click a \"Submit\" button, which will save the request and issue a data access submission that references\n * the requestId created/updated in this component.\n */\nexport default function DataAccessRequestAccessorsFilesForm(\n props: DataAccessRequestAccessorsFilesFormProps,\n) {\n const {\n onSubmissionCreated,\n managedACTAccessRequirement,\n subjectId,\n subjectType,\n researchProjectId,\n onCancel,\n onBackClicked,\n onEDucContinue,\n } = props\n const { isAuthenticated } = useSynapseContext()\n const { data: user } = useGetCurrentUserProfile({ enabled: isAuthenticated })\n const [alert, setAlert] = useState<AlertProps | undefined>()\n const isEDucEnabled = Boolean(managedACTAccessRequirement.eDucTemplateId)\n const [accessorChanges, setAccessorChanges] = useState<\n AccessorChange[] | undefined\n >()\n const [summaryOfUse, setSummaryOfUse] = useState<string | undefined>()\n const [publication, setPublication] = useState<string | undefined>()\n const [soName, setSoName] = useState<string>('')\n const [soEmail, setSoEmail] = useState<string>('')\n\n const { data: dataAccessRequest, isLoading: isLoadingGetDataAccessRequest } =\n useGetDataAccessRequestForUpdate(String(managedACTAccessRequirement.id), {\n enabled: isAuthenticated,\n // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation\n staleTime: Infinity,\n // This call should never fail, so if we run into an error, throwing to an error boundary is acceptable\n throwOnError: true,\n })\n\n const isRenewal =\n dataAccessRequest?.concreteType ===\n 'org.sagebionetworks.repo.model.dataaccess.Renewal'\n\n function onError(e: SynapseClientError) {\n console.log('RequestDataAccessStep2: Error updating form', e)\n setAlert({\n key: 'error',\n message: getErrorMessage(e.reason),\n })\n }\n\n const { mutate: submit, isPending: submitDataAccessRequestIsPending } =\n useSubmitDataAccessRequest({\n onSuccess: submission => {\n onSubmissionCreated(submission.submissionId)\n },\n onError: onError,\n })\n\n const {\n mutate: updateRequest,\n mutateAsync: updateRequestAsync,\n isPending: updateDataAccessRequestIsPending,\n } = useUpdateDataAccessRequest({\n onError: onError,\n })\n\n const isLoading =\n isLoadingGetDataAccessRequest ||\n updateDataAccessRequestIsPending ||\n submitDataAccessRequestIsPending\n\n /**\n * Fields backed by local state are not synced with the server until the request is submitted, so an in-flight\n * background update to the request must not block the user from editing them.\n */\n const disableLocalStateFields =\n isLoadingGetDataAccessRequest || submitDataAccessRequestIsPending\n\n const disableSubmitButton =\n submitDataAccessRequestIsPending || (isEDucEnabled && (!soName || !soEmail))\n\n useInitializeRequestAccessors({\n dataAccessRequest,\n user,\n isRenewal,\n updateRequest,\n researchProjectId,\n })\n\n /**\n * Fields other than uploaded files are NOT immediately synced with the server. Set local state if these values exist in the\n * fetched object, and no value exists in local state.\n */\n useEffect(() => {\n if (dataAccessRequest) {\n if (dataAccessRequest.accessorChanges && accessorChanges == undefined) {\n setAccessorChanges(dataAccessRequest.accessorChanges)\n }\n if (\n isRenewal &&\n dataAccessRequest.publication &&\n publication == undefined\n ) {\n setPublication(dataAccessRequest.publication)\n }\n if (\n isRenewal &&\n dataAccessRequest.summaryOfUse &&\n summaryOfUse == undefined\n ) {\n setSummaryOfUse(dataAccessRequest.summaryOfUse)\n }\n if (isEDucEnabled) {\n const so = dataAccessRequest.signingOfficial\n if (isEmpty(soName) && so?.name) {\n setSoName(so.name)\n }\n if (isEmpty(soEmail) && so?.institutionalEmail) {\n setSoEmail(so.institutionalEmail)\n }\n }\n }\n // Intentionally only re-synchronize state when server state changes\n // oxlint-disable-next-line react-hooks/exhaustive-deps\n }, [dataAccessRequest])\n\n function getDataAccessRequestWithLocalState(): Request | Renewal {\n const base = {\n ...dataAccessRequest,\n accessorChanges: accessorChanges,\n publication,\n summaryOfUse,\n } as Request | Renewal\n if (isEDucEnabled) {\n const nextSo: SigningOfficial = {\n ...dataAccessRequest?.signingOfficial,\n name: soName || undefined,\n institutionalEmail: soEmail || undefined,\n }\n return { ...base, signingOfficial: nextSo }\n }\n return base\n }\n\n async function handleSubmit() {\n if (dataAccessRequest) {\n // Save the request\n const requestObject = await updateRequestAsync(\n getDataAccessRequestWithLocalState(),\n )\n if (onEDucContinue) {\n onEDucContinue()\n return\n }\n // Create a submission and attach the request\n submit({\n request: {\n requestId: requestObject.id,\n requestEtag: requestObject.etag,\n subjectId: subjectId,\n subjectType: subjectType,\n },\n accessRequirementId: String(managedACTAccessRequirement.id),\n })\n }\n }\n\n const getErrorMessage = (reason: string = '') => {\n return (\n <>\n <strong>Sorry, there is an error in submitting your request.</strong>\n <br />\n {reason}\n </>\n )\n }\n\n const onAccessorChange: DataAccessRequestAccessorsEditorProps['onChange'] =\n updater => {\n // Copy the array so the caller doesn't have to worry about immutability\n setAccessorChanges([...updater(accessorChanges || [])])\n }\n\n const onClearAttachment = (fid: string) => {\n updateRequest({\n ...dataAccessRequest!,\n attachments: dataAccessRequest!.attachments?.filter(item => item !== fid),\n })\n }\n\n const uploadCallback = (\n data: UploadCallbackResp,\n context: keyof Pick<\n Request,\n 'attachments' | 'irbFileHandleId' | 'ducFileHandleId'\n >,\n ) => {\n if (data.resp && data.success) {\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n if (context === 'attachments') {\n updateRequest({\n ...dataAccessRequest!,\n attachments: [\n ...(dataAccessRequest!.attachments || []),\n uploadResponse.fileHandleId,\n ],\n })\n } else {\n updateRequest({\n ...dataAccessRequest!,\n [context]: uploadResponse.fileHandleId,\n })\n }\n } else if (!data.success && data.error) {\n // show the error\n console.log(\n 'RequestDataAccessStep2: Error uploading the file',\n data.error,\n )\n setAlert({\n key: 'error',\n message: getErrorMessage(data.error.reason),\n })\n }\n }\n\n const ducFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.ducFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest?.ducFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n const irbFileHandleAssociation: FileHandleAssociation[] =\n dataAccessRequest?.irbFileHandleId\n ? [\n {\n fileHandleId: dataAccessRequest.irbFileHandleId,\n associateObjectType:\n FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest.id),\n },\n ]\n : []\n\n const attachmentFileHandleAssociations: FileHandleAssociation[] =\n (dataAccessRequest?.attachments || []).map(attachmentFileHandleId => ({\n fileHandleId: attachmentFileHandleId,\n associateObjectType: FileHandleAssociateType.DataAccessRequestAttachment,\n associateObjectId: String(dataAccessRequest!.id),\n })) ?? []\n\n return (\n <>\n <DialogBaseTitle title={'Request Access'} onCancel={props.onHide} />\n <DialogContent>\n <ManagedACTAccessRequirementFormWikiWrapper\n accessRequirement={managedACTAccessRequirement}\n >\n <Box\n component={'form'}\n sx={{\n // Must set a minHeight to ensure the user picker in the DataAccessRequestAccessorsEditor doesn't get cut off\n minHeight: '475px',\n }}\n onSubmit={e => e.preventDefault()}\n >\n <Typography variant={'body1'} sx={{ mb: 2, fontSize: '16px' }}>\n Please provide the information below to submit the request for\n access.\n </Typography>\n\n {isEDucEnabled && (\n <SigningOfficialFields\n name={soName}\n email={soEmail}\n disabled={disableLocalStateFields}\n onNameChange={setSoName}\n onEmailChange={setSoEmail}\n />\n )}\n\n {dataAccessRequest && user && (\n <DataAccessRequestAccessorsEditor\n accessorChanges={accessorChanges || []}\n onChange={onAccessorChange}\n isRenewal={isRenewal}\n collaboratorLimit={\n isEDucEnabled ? EDUC_COLLABORATOR_LIMIT : undefined\n }\n helpText={\n <AccessorRequirementHelpText\n accessRequirement={managedACTAccessRequirement}\n isEDucEnabled={isEDucEnabled}\n />\n }\n />\n )}\n\n {((managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled) ||\n managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n {/* DUC — hidden for eDUC ARs, which handle DUC via the eDUC flow */}\n {managedACTAccessRequirement?.isDUCRequired && !isEDucEnabled && (\n <>\n <DucUploadSection\n accessRequirement={managedACTAccessRequirement}\n isLoading={isLoading}\n uploadedDucAssociations={ducFileHandleAssociation}\n onUpload={resp => uploadCallback(resp, 'ducFileHandleId')}\n />\n {(managedACTAccessRequirement?.isIRBApprovalRequired ||\n managedACTAccessRequirement?.areOtherAttachmentsRequired) && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {/* IRB */}\n {managedACTAccessRequirement?.isIRBApprovalRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n IRB Approval\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n Upload a signed IRB letter on institutional letterhead. The\n letter must include the names of all the datasets requested,\n as well as the names of the data requesters above. Use the\n button below to upload the document.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'irb'}\n isLoading={isLoading}\n documentName={'IRB Approval Letter'}\n uploadCallback={resp =>\n uploadCallback(resp, 'irbFileHandleId')\n }\n fileHandleAssociations={irbFileHandleAssociation}\n />\n </SynapseErrorBoundary>\n {managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <Divider sx={{ my: 4 }} />\n )}\n </>\n )}\n\n {\n /* Attachments */\n managedACTAccessRequirement?.areOtherAttachmentsRequired && (\n <>\n <Typography variant={'headline3'} sx={{ my: 2 }}>\n Upload other required documents\n </Typography>\n <Typography\n variant={'body1'}\n sx={{ ...longFieldLabelSx, my: 2 }}\n >\n You must upload other required documents. Please review the\n instructions to gain data access to determine which\n documents must also be uploaded.\n </Typography>\n <SynapseErrorBoundary>\n <UploadDocumentField\n id={'file-attachment'}\n isLoading={isLoading}\n documentName={'Attachment'}\n uploadCallback={res => uploadCallback(res, 'attachments')}\n isMultiFileUpload={true}\n fileHandleAssociations={attachmentFileHandleAssociations}\n onClearAttachment={onClearAttachment}\n />\n </SynapseErrorBoundary>\n </>\n )\n }\n\n {\n // SWC-7319 - Per GovernanceInnovation, do not show these fields on renewal\n // Publications & Summary of Use\n // isRenewal && (\n // <>\n // <TextField\n // id={'publications'}\n // label={'Publication(s)'}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // value={publication}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setPublication(e.target.value)\n // }\n // />\n // <TextField\n // id={'summaryOfUse'}\n // label={'Summary of use'}\n // value={summaryOfUse}\n // disabled={submitDataAccessRequestIsPending}\n // multiline\n // rows={3}\n // onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>\n // setSummaryOfUse(e.target.value)\n // }\n // />\n // </>\n // )\n }\n </Box>\n </ManagedACTAccessRequirementFormWikiWrapper>\n {alert && <Alert severity={alert.key}>{alert.message}</Alert>}\n </DialogContent>\n <DialogActions>\n <Button\n variant={'outlined'}\n onClick={() => {\n onBackClicked()\n }}\n >\n Back\n </Button>\n <Box sx={{ flexGrow: 1 }}>{/* spacer */}</Box>\n\n <Button\n variant=\"outlined\"\n disabled={submitDataAccessRequestIsPending}\n onClick={() => {\n if (dataAccessRequest) {\n // include the local state in the onCancel callback so the user may save their changes\n onCancel(getDataAccessRequestWithLocalState())\n }\n }}\n >\n Cancel\n </Button>\n <Button\n variant=\"contained\"\n loading={submitDataAccessRequestIsPending}\n disabled={disableSubmitButton}\n onClick={() => {\n handleSubmit()\n }}\n >\n {onEDucContinue ? 'Continue' : 'Submit'}\n </Button>\n </DialogActions>\n </>\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EDucPreviewStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAIlE,eAAO,MAAM,8BAA8B,kCAAkC,CAAA;AAE7E,eAAO,MAAM,4BAA4B,8CACI,CAAA;AAC7C,eAAO,MAAM,6BAA6B,sBAAsB,CAAA;AAChE,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,eAAO,MAAM,4BAA4B,yBAAyB,CAAA;AAClE,eAAO,MAAM,mCAAmC,+BAA+B,CAAA;AAW/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B,EAAE,4BAA4B,CAAA;IACzD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA+YlE"}
1
+ {"version":3,"file":"EDucPreviewStep.d.ts","sourceRoot":"","sources":["../../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAIlE,eAAO,MAAM,8BAA8B,kCAAkC,CAAA;AAE7E,eAAO,MAAM,4BAA4B,8CACI,CAAA;AAC7C,eAAO,MAAM,6BAA6B,sBAAsB,CAAA;AAChE,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,eAAO,MAAM,4BAA4B,yBAAyB,CAAA;AAClE,eAAO,MAAM,mCAAmC,+BAA+B,CAAA;AAW/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B,EAAE,4BAA4B,CAAA;IACzD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAuYlE"}