synapse-react-client 4.0.5 → 4.0.7

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 (212) hide show
  1. package/dist/SWC.index.d.ts +2 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +47 -41
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/assets/DefaultColorfulPortalCardBackground.svg +50 -12
  6. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js +4 -4
  7. package/dist/assets/DefaultColorfulPortalCardBackground.svg.js.map +1 -1
  8. package/dist/components/CardDeck/TableQueryCardDeck.js +3 -4
  9. package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
  10. package/dist/components/ChangePassword/useChangePasswordFormState.js +2 -3
  11. package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
  12. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.css +1 -0
  13. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts +8 -0
  14. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.d.ts.map +1 -0
  15. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js +21 -0
  16. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.js.map +1 -0
  17. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss +32 -0
  18. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js +14 -0
  19. package/dist/components/ColoredBulletListItem/ColoredBulletListItem.module.scss.js.map +1 -0
  20. package/dist/components/ColoredBulletListItem/index.d.ts +5 -0
  21. package/dist/components/ColoredBulletListItem/index.d.ts.map +1 -0
  22. package/dist/components/ColoredBulletListItem/index.js +6 -0
  23. package/dist/components/ColoredBulletListItem/index.js.map +1 -0
  24. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
  25. package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
  26. package/dist/components/CreateProjectModal/CreateProjectModal.d.ts +2 -1
  27. package/dist/components/CreateProjectModal/CreateProjectModal.d.ts.map +1 -1
  28. package/dist/components/CreateProjectModal/CreateProjectModal.js +122 -43
  29. package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
  30. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts +7 -0
  31. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.d.ts.map +1 -0
  32. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js +132 -0
  33. package/dist/components/CreateProjectModal/ProjectVisibilityRadioGroup.js.map +1 -0
  34. package/dist/components/DataGrid/DataGrid.d.ts +2 -0
  35. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  36. package/dist/components/DataGrid/DataGrid.js +69 -67
  37. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  38. package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
  39. package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
  40. package/dist/components/DataGrid/DataGridWebSocket.js +47 -37
  41. package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
  42. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -3
  43. package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +1 -1
  44. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  45. package/dist/components/DataGrid/SynapseGrid.js +209 -162
  46. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  47. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -3
  48. package/dist/components/DataGrid/components/UploadCsvToGridDialog.js.map +1 -1
  49. package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts +16 -0
  50. package/dist/components/DataGrid/hooks/useRemoteSelections.d.ts.map +1 -0
  51. package/dist/components/DataGrid/hooks/useRemoteSelections.js +30 -0
  52. package/dist/components/DataGrid/hooks/useRemoteSelections.js.map +1 -0
  53. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +6 -1
  54. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  55. package/dist/components/DataGrid/useDataGridWebsocket.js +78 -69
  56. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  57. package/dist/components/DataGrid/utils/getCellClassName.d.ts +3 -0
  58. package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
  59. package/dist/components/DataGrid/utils/getCellClassName.js +21 -12
  60. package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
  61. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts +15 -0
  62. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.d.ts.map +1 -0
  63. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js +43 -0
  64. package/dist/components/DataGrid/utils/replicaSelectionToGridSelection.js.map +1 -0
  65. package/dist/components/DialogBase.d.ts +3 -1
  66. package/dist/components/DialogBase.d.ts.map +1 -1
  67. package/dist/components/DialogBase.js +75 -56
  68. package/dist/components/DialogBase.js.map +1 -1
  69. package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -3
  70. package/dist/components/Ecosystem/EcosystemSkeleton.js.map +1 -1
  71. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +2 -3
  72. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  73. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js +2 -3
  74. package/dist/components/FeaturedDataTabs/FeaturedDataTabs.js.map +1 -1
  75. package/dist/components/GenericCard/GenericCard.js +3 -4
  76. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  77. package/dist/components/HeaderCard.js +2 -3
  78. package/dist/components/HeaderCard.js.map +1 -1
  79. package/dist/components/IconSvg/IconSvg.d.ts +1 -1
  80. package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
  81. package/dist/components/IconSvg/IconSvg.js +168 -165
  82. package/dist/components/IconSvg/IconSvg.js.map +1 -1
  83. package/dist/components/StorybookComponentWrapper.js +3 -4
  84. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  85. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts +1 -0
  86. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.d.ts.map +1 -1
  87. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js +23 -16
  88. package/dist/components/SynapseForm/SynapseFormSubmissionGrid.js.map +1 -1
  89. package/dist/components/SynapseTable/SynapseTable.d.ts +6 -1
  90. package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
  91. package/dist/components/SynapseTable/SynapseTable.js +123 -93
  92. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  93. package/dist/components/TextField/TextField.css +1 -0
  94. package/dist/components/TextField/TextField.d.ts +2 -1
  95. package/dist/components/TextField/TextField.d.ts.map +1 -1
  96. package/dist/components/TextField/TextField.js +42 -28
  97. package/dist/components/TextField/TextField.js.map +1 -1
  98. package/dist/components/TextField/TextField.module.scss +25 -0
  99. package/dist/components/TextField/TextField.module.scss.js +14 -0
  100. package/dist/components/TextField/TextField.module.scss.js.map +1 -0
  101. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -3
  102. package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js.map +1 -1
  103. package/dist/components/index.d.ts +1 -0
  104. package/dist/components/index.d.ts.map +1 -1
  105. package/dist/components/index.js +242 -240
  106. package/dist/components/index.js.map +1 -1
  107. package/dist/components/styled/HoverPopover.css +1 -1
  108. package/dist/components/styled/HoverPopover.d.ts.map +1 -1
  109. package/dist/components/styled/HoverPopover.js +6 -5
  110. package/dist/components/styled/HoverPopover.js.map +1 -1
  111. package/dist/components/styled/HoverPopover.module.scss +2 -1
  112. package/dist/components/styled/HoverPopover.module.scss.js +1 -1
  113. package/dist/components/styled/StyledFormControl.js +1 -1
  114. package/dist/components/styled/StyledFormControl.js.map +1 -1
  115. package/dist/components/table/CsvPreview/CsvPreview.js +2 -3
  116. package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
  117. package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -3
  118. package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
  119. package/dist/features/curator/GridPage/GridPage.js +2 -3
  120. package/dist/features/curator/GridPage/GridPage.js.map +1 -1
  121. package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -3
  122. package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
  123. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +5 -2
  124. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
  125. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +46 -33
  126. package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
  127. package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
  128. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +52 -27
  129. package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
  130. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts +7 -0
  131. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -0
  132. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +322 -0
  133. package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -0
  134. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts +7 -1
  135. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.d.ts.map +1 -1
  136. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js +7 -7
  137. package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
  138. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts +9 -5
  139. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
  140. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +79 -16
  141. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
  142. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts +12 -0
  143. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -0
  144. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +20 -0
  145. package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -0
  146. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts +3 -3
  147. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
  148. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +54 -41
  149. package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
  150. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
  151. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
  152. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +11 -4
  153. package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
  154. package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts +3 -0
  155. package/dist/features/entity/metadata-task/utils/taskHasAssignee.d.ts.map +1 -0
  156. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js +7 -0
  157. package/dist/features/entity/metadata-task/utils/taskHasAssignee.js.map +1 -0
  158. package/dist/index.js +306 -304
  159. package/dist/index.js.map +1 -1
  160. package/dist/mocks/curation/mockCurationTask.d.ts +10 -0
  161. package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -0
  162. package/dist/mocks/curation/mockCurationTask.js +24 -0
  163. package/dist/mocks/curation/mockCurationTask.js.map +1 -0
  164. package/dist/style/components/_data-grid-extra.css +1 -1
  165. package/dist/style/components/_data-grid-extra.scss +16 -0
  166. package/dist/synapse-client/SynapseClient.d.ts +1 -1
  167. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  168. package/dist/synapse-client/SynapseClient.js +3 -2
  169. package/dist/synapse-client/SynapseClient.js.map +1 -1
  170. package/dist/synapse-queries/KeyFactory.d.ts +8 -3
  171. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  172. package/dist/synapse-queries/KeyFactory.js +22 -7
  173. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  174. package/dist/synapse-queries/curation/task/useCurationTask.d.ts +6 -3
  175. package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
  176. package/dist/synapse-queries/curation/task/useCurationTask.js +62 -18
  177. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  178. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
  179. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
  180. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  181. package/dist/synapse-queries/grid/useGridSession.d.ts +17 -2
  182. package/dist/synapse-queries/grid/useGridSession.d.ts.map +1 -1
  183. package/dist/synapse-queries/grid/useGridSession.js +63 -30
  184. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  185. package/dist/synapse-queries/index.js +103 -99
  186. package/dist/synapse-queries/team/index.js +18 -15
  187. package/dist/synapse-queries/team/useTeamMembers.d.ts +34 -0
  188. package/dist/synapse-queries/team/useTeamMembers.d.ts.map +1 -1
  189. package/dist/synapse-queries/team/useTeamMembers.js +110 -69
  190. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  191. package/dist/synapse-queries/types.d.ts +13 -0
  192. package/dist/synapse-queries/types.d.ts.map +1 -0
  193. package/dist/synapse-queries/types.js +2 -0
  194. package/dist/synapse-queries/types.js.map +1 -0
  195. package/dist/synapse-queries/user/index.js +12 -11
  196. package/dist/synapse-queries/user/useUserGroupHeader.d.ts +5 -0
  197. package/dist/synapse-queries/user/useUserGroupHeader.d.ts.map +1 -1
  198. package/dist/synapse-queries/user/useUserGroupHeader.js +28 -21
  199. package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
  200. package/dist/theme/palette/Palettes.d.ts +2 -0
  201. package/dist/theme/palette/Palettes.d.ts.map +1 -1
  202. package/dist/theme/palette/Palettes.js +46 -40
  203. package/dist/theme/palette/Palettes.js.map +1 -1
  204. package/dist/tsconfig.build.tsbuildinfo +1 -1
  205. package/dist/utils/hooks/useOverlay.d.ts +2 -2
  206. package/dist/utils/hooks/useOverlay.d.ts.map +1 -1
  207. package/dist/utils/hooks/useOverlay.js +41 -41
  208. package/dist/utils/hooks/useOverlay.js.map +1 -1
  209. package/package.json +4 -4
  210. package/dist/assets/ArcusBioIcon.svg +0 -1
  211. package/dist/assets/ArcusBioIcon.svg.js +0 -7
  212. package/dist/assets/ArcusBioIcon.svg.js.map +0 -1
@@ -1,86 +1,165 @@
1
- import { jsxs as m, Fragment as p, jsx as t } from "react/jsx-runtime";
2
- import * as C from "../../synapse-client/SynapseClient.js";
1
+ import { jsxs as D, Fragment as V, jsx as n } from "react/jsx-runtime";
2
+ import * as y from "../../synapse-client/SynapseClient.js";
3
3
  import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
4
4
  import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
5
5
  import "@sage-bionetworks/synapse-client/util/SynapseClientError";
6
- import "@sage-bionetworks/synapse-types";
6
+ import { ACCESS_TYPE as a } from "@sage-bionetworks/synapse-types";
7
7
  import "../../utils/functions/EntityTypeUtils.js";
8
8
  import "../../utils/SynapseConstants.js";
9
9
  import "lodash-es";
10
10
  import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
11
- import { useSynapseContext as j } from "../../utils/context/SynapseContext.js";
12
- import { Alert as g } from "@mui/material";
13
- import { useState as n } from "react";
14
- import { ConfirmationDialog as S } from "../ConfirmationDialog/ConfirmationDialog.js";
15
- import P from "../FullWidthAlert/FullWidthAlert.js";
16
- import w from "../TextField/TextField.js";
17
- function $({
18
- isShowingModal: f = !1,
19
- onClose: d
11
+ import { useGetRealmPrincipals as B } from "../../synapse-queries/realm/useRealmPrincipals.js";
12
+ import { useSynapseContext as O } from "../../utils/context/SynapseContext.js";
13
+ import { Stack as W, Alert as R } from "@mui/material";
14
+ import { useState as p } from "react";
15
+ import { useMutation as k } from "@tanstack/react-query";
16
+ import { ConfirmationDialog as F } from "../ConfirmationDialog/ConfirmationDialog.js";
17
+ import G from "../FullWidthAlert/FullWidthAlert.js";
18
+ import x from "../TextField/TextField.js";
19
+ import { ProjectVisibilityRadioGroup as M } from "./ProjectVisibilityRadioGroup.js";
20
+ function ce({
21
+ isShowingModal: I = !1,
22
+ onClose: T,
23
+ gotoPlace: C
20
24
  }) {
21
- const { accessToken: u } = j(), [o, i] = n(""), [h, s] = n(!1), [a, r] = n(), c = () => {
22
- i(""), r(void 0), d();
23
- }, l = async () => {
24
- try {
25
- const e = await C.createProject(
26
- o,
27
- u
25
+ const { accessToken: m } = O(), [d, g] = p(""), [A, P] = p(""), [c, w] = p("DISCOVERABLE"), [N, j] = p(!1), { data: S } = B(), l = S?.publicGroup, u = S?.authenticatedUsers, L = async (e) => {
26
+ if (c !== "PRIVATE")
27
+ try {
28
+ const i = await y.getEntityACL(
29
+ e,
30
+ m
31
+ ), o = (f, h, v) => f.find((s) => s.principalId === h) ? f.map(
32
+ (s) => s.principalId === h ? {
33
+ ...s,
34
+ accessType: [.../* @__PURE__ */ new Set([...s.accessType, ...v])]
35
+ } : s
36
+ ) : [...f, { principalId: h, accessType: v }];
37
+ let t = [...i.resourceAccess];
38
+ c === "DISCOVERABLE" ? (l && (t = o(
39
+ t,
40
+ Number(l),
41
+ [a.READ]
42
+ )), u && (t = o(
43
+ t,
44
+ Number(u),
45
+ [a.READ]
46
+ ))) : c === "PUBLIC" && (l && (t = o(
47
+ t,
48
+ Number(l),
49
+ [a.READ]
50
+ )), u && (t = o(
51
+ t,
52
+ Number(u),
53
+ [a.READ, a.DOWNLOAD]
54
+ ))), await y.updateEntityACL(
55
+ { ...i, resourceAccess: t },
56
+ m
57
+ );
58
+ } catch (i) {
59
+ const o = i;
60
+ throw new Error(
61
+ `Project was created, but visibility could not be set: ${o.reason ?? o.message}`
62
+ );
63
+ }
64
+ }, r = k({
65
+ mutationFn: async () => {
66
+ const e = await y.createProject(
67
+ d,
68
+ A,
69
+ m
28
70
  );
29
- s(!0), c(), window.location.href = `/Synapse:${e.id}`;
30
- } catch (e) {
31
- e.reason ? r(e.reason) : r(e.toString());
71
+ return await L(e.id), e;
72
+ },
73
+ onSuccess: (e) => {
74
+ j(!0), b();
75
+ const i = `/Synapse:${e.id}`;
76
+ C ? C(i) : window.location.href = i;
32
77
  }
33
- };
34
- return /* @__PURE__ */ m(p, { children: [
35
- /* @__PURE__ */ t(
36
- S,
78
+ }), b = () => {
79
+ g(""), P(""), w("DISCOVERABLE"), r.reset(), T();
80
+ }, E = r.error ? r.error.reason ?? r.error.message : void 0;
81
+ return /* @__PURE__ */ D(V, { children: [
82
+ /* @__PURE__ */ n(
83
+ F,
37
84
  {
38
- open: f,
85
+ open: I,
39
86
  title: "Create a new Project",
40
- content: /* @__PURE__ */ m(p, { children: [
41
- /* @__PURE__ */ t(
42
- w,
87
+ content: /* @__PURE__ */ D(W, { gap: 2, children: [
88
+ /* @__PURE__ */ n(
89
+ x,
43
90
  {
44
91
  id: "projectInput",
45
92
  label: "Project Name",
46
- value: o,
93
+ required: !0,
94
+ helperText: "Pick a unique title for your project",
95
+ value: d,
47
96
  fullWidth: !0,
48
97
  onChange: (e) => {
49
- i(e.target.value);
98
+ g(e.target.value);
50
99
  },
51
100
  inputProps: {
52
101
  onKeyDown: (e) => {
53
- e.key === "Enter" && o !== "" && l();
102
+ e.key === "Enter" && d !== "" && r.mutate();
54
103
  }
55
104
  }
56
105
  }
57
106
  ),
58
- a && /* @__PURE__ */ t(g, { severity: "error", children: a })
107
+ /* @__PURE__ */ n(
108
+ x,
109
+ {
110
+ id: "descriptionInput",
111
+ label: "Description",
112
+ helperText: "(optional)",
113
+ placeholder: "Brief description of this project",
114
+ multiline: !0,
115
+ minRows: 3,
116
+ value: A,
117
+ fullWidth: !0,
118
+ maxCharacterCount: 350,
119
+ onChange: (e) => {
120
+ P(e.target.value);
121
+ }
122
+ }
123
+ ),
124
+ /* @__PURE__ */ n(
125
+ M,
126
+ {
127
+ value: c,
128
+ onChange: w
129
+ }
130
+ ),
131
+ E && /* @__PURE__ */ n(R, { severity: "error", children: E }),
132
+ /* @__PURE__ */ n(R, { severity: "warning", children: "You can update project visibility at any time in Project Tools, or manage access at a more granular level for individual files and folders." })
59
133
  ] }),
60
- confirmButtonProps: { children: "Save" },
134
+ confirmButtonProps: {
135
+ children: "Save",
136
+ disabled: r.isPending,
137
+ loading: r.isPending
138
+ },
61
139
  onConfirm: () => {
62
- l();
140
+ r.mutate();
63
141
  },
64
- onCancel: c,
65
- maxWidth: "md"
142
+ onCancel: b,
143
+ maxWidth: "sm",
144
+ dense: !0
66
145
  }
67
146
  ),
68
- /* @__PURE__ */ t(
69
- P,
147
+ /* @__PURE__ */ n(
148
+ G,
70
149
  {
71
- show: h,
150
+ show: N,
72
151
  variant: "info",
73
152
  title: "Project created",
74
153
  description: "",
75
154
  autoCloseAfterDelayInSeconds: 10,
76
155
  onClose: () => {
77
- s(!1);
156
+ j(!1);
78
157
  }
79
158
  }
80
159
  )
81
160
  ] });
82
161
  }
83
162
  export {
84
- $ as CreateProjectModal
163
+ ce as CreateProjectModal
85
164
  };
86
165
  //# sourceMappingURL=CreateProjectModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateProjectModal.js","sources":["../../../src/components/CreateProjectModal/CreateProjectModal.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Alert } from '@mui/material'\nimport { KeyboardEvent, useState } from 'react'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport TextField from '../TextField/TextField'\n\nexport type CreateProjectModalProps = {\n isShowingModal?: boolean\n onClose: () => void\n}\n\nexport function CreateProjectModal({\n isShowingModal = false,\n onClose,\n}: CreateProjectModalProps) {\n const { accessToken } = useSynapseContext()\n const [projectName, setProjectName] = useState<string>('')\n const [isShowingSuccessAlert, setIsShowingSuccessAlert] =\n useState<boolean>(false)\n const [errorMessage, setErrorMessage] = useState<string>()\n const hide = () => {\n setProjectName('')\n setErrorMessage(undefined)\n onClose()\n }\n const onCreateProject = async () => {\n try {\n const newProject = await SynapseClient.createProject(\n projectName,\n accessToken,\n )\n setIsShowingSuccessAlert(true)\n hide()\n window.location.href = `/Synapse:${newProject.id}`\n } catch (err) {\n if (err.reason) {\n setErrorMessage(err.reason)\n } else {\n setErrorMessage(err.toString())\n }\n }\n }\n\n const dialogContent = (\n <>\n <TextField\n id=\"projectInput\"\n label=\"Project Name\"\n value={projectName}\n fullWidth\n onChange={event => {\n setProjectName(event.target.value)\n }}\n inputProps={{\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n if (projectName !== '') {\n onCreateProject()\n }\n }\n },\n }}\n />\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n </>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal}\n title=\"Create a new Project\"\n content={dialogContent}\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() => {\n void onCreateProject()\n }}\n onCancel={hide}\n maxWidth=\"md\"\n />\n <FullWidthAlert\n show={isShowingSuccessAlert}\n variant=\"info\"\n title=\"Project created\"\n description=\"\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingSuccessAlert(false)\n }}\n />\n </>\n )\n}\n"],"names":["CreateProjectModal","isShowingModal","onClose","accessToken","useSynapseContext","projectName","setProjectName","useState","isShowingSuccessAlert","setIsShowingSuccessAlert","errorMessage","setErrorMessage","hide","onCreateProject","newProject","SynapseClient","err","jsxs","Fragment","jsx","ConfirmationDialog","TextField","event","Alert","FullWidthAlert"],"mappings":";;;;;;;;;;;;;;;;AAaO,SAASA,EAAmB;AAAA,EACjC,gBAAAC,IAAiB;AAAA,EACjB,SAAAC;AACF,GAA4B;AAC1B,QAAM,EAAE,aAAAC,EAAA,IAAgBC,EAAA,GAClB,CAACC,GAAaC,CAAc,IAAIC,EAAiB,EAAE,GACnD,CAACC,GAAuBC,CAAwB,IACpDF,EAAkB,EAAK,GACnB,CAACG,GAAcC,CAAe,IAAIJ,EAAA,GAClCK,IAAO,MAAM;AACjB,IAAAN,EAAe,EAAE,GACjBK,EAAgB,MAAS,GACzBT,EAAA;AAAA,EACF,GACMW,IAAkB,YAAY;AAClC,QAAI;AACF,YAAMC,IAAa,MAAMC,EAAc;AAAA,QACrCV;AAAA,QACAF;AAAA,MAAA;AAEF,MAAAM,EAAyB,EAAI,GAC7BG,EAAA,GACA,OAAO,SAAS,OAAO,YAAYE,EAAW,EAAE;AAAA,IAClD,SAASE,GAAK;AACZ,MAAIA,EAAI,SACNL,EAAgBK,EAAI,MAAM,IAE1BL,EAAgBK,EAAI,UAAU;AAAA,IAElC;AAAA,EACF;AA0BA,SACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,MAAMnB;AAAA,QACN,OAAM;AAAA,QACN,SA5BJ,gBAAAgB,EAAAC,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,OAAM;AAAA,cACN,OAAOhB;AAAA,cACP,WAAS;AAAA,cACT,UAAU,CAAAiB,MAAS;AACjB,gBAAAhB,EAAegB,EAAM,OAAO,KAAK;AAAA,cACnC;AAAA,cACA,YAAY;AAAA,gBACV,WAAW,CAACA,MAA2C;AACrD,kBAAIA,EAAM,QAAQ,WACZjB,MAAgB,MAClBQ,EAAA;AAAA,gBAGN;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAEDH,KAAgB,gBAAAS,EAACI,GAAA,EAAM,UAAS,SAAS,UAAAb,EAAA,CAAa;AAAA,QAAA,GACzD;AAAA,QASI,oBAAoB,EAAE,UAAU,OAAA;AAAA,QAChC,WAAW,MAAM;AACf,UAAKG,EAAA;AAAA,QACP;AAAA,QACA,UAAUD;AAAA,QACV,UAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAEX,gBAAAO;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,MAAMhB;AAAA,QACN,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,aAAY;AAAA,QACZ,8BAA8B;AAAA,QAC9B,SAAS,MAAM;AACb,UAAAC,EAAyB,EAAK;AAAA,QAChC;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"CreateProjectModal.js","sources":["../../../src/components/CreateProjectModal/CreateProjectModal.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { useGetRealmPrincipals } from '@/synapse-queries/realm/useRealmPrincipals'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport { Alert, Stack } from '@mui/material'\nimport { ACCESS_TYPE } from '@sage-bionetworks/synapse-types'\nimport { KeyboardEvent, useState } from 'react'\nimport { useMutation } from '@tanstack/react-query'\nimport { ConfirmationDialog } from '../ConfirmationDialog/ConfirmationDialog'\nimport FullWidthAlert from '../FullWidthAlert/FullWidthAlert'\nimport TextField from '../TextField/TextField'\nimport {\n ProjectVisibility,\n ProjectVisibilityRadioGroup,\n} from './ProjectVisibilityRadioGroup'\n\nexport type CreateProjectModalProps = {\n isShowingModal?: boolean\n onClose: () => void\n gotoPlace?: (href: string) => void\n}\n\nexport function CreateProjectModal({\n isShowingModal = false,\n onClose,\n gotoPlace,\n}: CreateProjectModalProps) {\n const { accessToken } = useSynapseContext()\n const [projectName, setProjectName] = useState<string>('')\n const [description, setDescription] = useState<string>('')\n const [visibility, setVisibility] =\n useState<ProjectVisibility>('DISCOVERABLE')\n const [isShowingSuccessAlert, setIsShowingSuccessAlert] =\n useState<boolean>(false)\n\n const { data: realmPrincipals } = useGetRealmPrincipals()\n const publicGroupId = realmPrincipals?.publicGroup\n const authenticatedUsersId = realmPrincipals?.authenticatedUsers\n\n const applyVisibilityAcl = async (projectId: string): Promise<void> => {\n if (visibility === 'PRIVATE') {\n return\n }\n try {\n const currentAcl = await SynapseClient.getEntityACL(\n projectId,\n accessToken,\n )\n\n const upsertAccessTypes = (\n entries: typeof currentAcl.resourceAccess,\n principalId: number,\n accessTypes: ACCESS_TYPE[],\n ): typeof currentAcl.resourceAccess => {\n const existing = entries.find(e => e.principalId === principalId)\n if (existing) {\n return entries.map(e =>\n e.principalId === principalId\n ? {\n ...e,\n accessType: [...new Set([...e.accessType, ...accessTypes])],\n }\n : e,\n )\n }\n return [...entries, { principalId, accessType: accessTypes }]\n }\n\n let newResourceAccess = [...currentAcl.resourceAccess]\n\n if (visibility === 'DISCOVERABLE') {\n if (publicGroupId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(publicGroupId),\n [ACCESS_TYPE.READ],\n )\n }\n if (authenticatedUsersId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(authenticatedUsersId),\n [ACCESS_TYPE.READ],\n )\n }\n } else if (visibility === 'PUBLIC') {\n if (publicGroupId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(publicGroupId),\n [ACCESS_TYPE.READ],\n )\n }\n if (authenticatedUsersId) {\n newResourceAccess = upsertAccessTypes(\n newResourceAccess,\n Number(authenticatedUsersId),\n [ACCESS_TYPE.READ, ACCESS_TYPE.DOWNLOAD],\n )\n }\n }\n\n await SynapseClient.updateEntityACL(\n { ...currentAcl, resourceAccess: newResourceAccess },\n accessToken,\n )\n } catch (e) {\n const err = e as SynapseClientError\n throw new Error(\n `Project was created, but visibility could not be set: ${\n err.reason ?? err.message\n }`,\n )\n }\n }\n\n const createProjectMutation = useMutation({\n mutationFn: async () => {\n const newProject = await SynapseClient.createProject(\n projectName,\n description,\n accessToken,\n )\n await applyVisibilityAcl(newProject.id!)\n return newProject\n },\n onSuccess: newProject => {\n setIsShowingSuccessAlert(true)\n hide()\n const href = `/Synapse:${newProject.id}`\n if (gotoPlace) {\n gotoPlace(href)\n } else {\n window.location.href = href\n }\n },\n })\n\n const hide = () => {\n setProjectName('')\n setDescription('')\n setVisibility('DISCOVERABLE')\n createProjectMutation.reset()\n onClose()\n }\n\n const errorMessage = createProjectMutation.error\n ? (createProjectMutation.error as SynapseClientError).reason ??\n createProjectMutation.error.message\n : undefined\n\n const dialogContent = (\n <Stack gap={2}>\n <TextField\n id=\"projectInput\"\n label=\"Project Name\"\n required\n helperText=\"Pick a unique title for your project\"\n value={projectName}\n fullWidth\n onChange={event => {\n setProjectName(event.target.value)\n }}\n inputProps={{\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n if (projectName !== '') {\n createProjectMutation.mutate()\n }\n }\n },\n }}\n />\n <TextField\n id=\"descriptionInput\"\n label=\"Description\"\n helperText=\"(optional)\"\n placeholder=\"Brief description of this project\"\n multiline\n minRows={3}\n value={description}\n fullWidth\n maxCharacterCount={350}\n onChange={event => {\n setDescription(event.target.value)\n }}\n />\n <ProjectVisibilityRadioGroup\n value={visibility}\n onChange={setVisibility}\n />\n {errorMessage && <Alert severity=\"error\">{errorMessage}</Alert>}\n <Alert severity=\"warning\">\n You can update project visibility at any time in Project Tools, or\n manage access at a more granular level for individual files and folders.\n </Alert>\n </Stack>\n )\n\n return (\n <>\n <ConfirmationDialog\n open={isShowingModal}\n title=\"Create a new Project\"\n content={dialogContent}\n confirmButtonProps={{\n children: 'Save',\n disabled: createProjectMutation.isPending,\n loading: createProjectMutation.isPending,\n }}\n onConfirm={() => {\n createProjectMutation.mutate()\n }}\n onCancel={hide}\n maxWidth=\"sm\"\n dense\n />\n <FullWidthAlert\n show={isShowingSuccessAlert}\n variant=\"info\"\n title=\"Project created\"\n description=\"\"\n autoCloseAfterDelayInSeconds={10}\n onClose={() => {\n setIsShowingSuccessAlert(false)\n }}\n />\n </>\n )\n}\n"],"names":["CreateProjectModal","isShowingModal","onClose","gotoPlace","accessToken","useSynapseContext","projectName","setProjectName","useState","description","setDescription","visibility","setVisibility","isShowingSuccessAlert","setIsShowingSuccessAlert","realmPrincipals","useGetRealmPrincipals","publicGroupId","authenticatedUsersId","applyVisibilityAcl","projectId","currentAcl","SynapseClient","upsertAccessTypes","entries","principalId","accessTypes","e","newResourceAccess","ACCESS_TYPE","err","createProjectMutation","useMutation","newProject","hide","href","errorMessage","jsxs","Fragment","jsx","ConfirmationDialog","Stack","TextField","event","ProjectVisibilityRadioGroup","Alert","FullWidthAlert"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type ProjectVisibility = 'PRIVATE' | 'DISCOVERABLE' | 'PUBLIC' | 'OPEN';
2
+ export type ProjectVisibilityRadioGroupProps = {
3
+ value: ProjectVisibility;
4
+ onChange: (value: ProjectVisibility) => void;
5
+ };
6
+ export declare function ProjectVisibilityRadioGroup({ value, onChange, }: ProjectVisibilityRadioGroupProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=ProjectVisibilityRadioGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectVisibilityRadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/CreateProjectModal/ProjectVisibilityRadioGroup.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAA;AAqD9E,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;CAC7C,CAAA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,QAAQ,GACT,EAAE,gCAAgC,2CA6ElC"}
@@ -0,0 +1,132 @@
1
+ import { jsxs as l, jsx as i, Fragment as s } from "react/jsx-runtime";
2
+ import { FormControl as d, Typography as a, RadioGroup as c, FormControlLabel as p, Box as t, Chip as b, Radio as x } from "@mui/material";
3
+ import h from "../IconSvg/IconSvg.js";
4
+ const m = [
5
+ {
6
+ value: "PRIVATE",
7
+ label: "Private",
8
+ chipText: "Invisible",
9
+ description: "Only you and people you invite can see this project exists. Others with the link will see an error."
10
+ },
11
+ {
12
+ value: "DISCOVERABLE",
13
+ label: "Discoverable",
14
+ chipText: "Visible metadata",
15
+ description: "Anyone can find and view this project. Data download is not allowed."
16
+ },
17
+ {
18
+ value: "PUBLIC",
19
+ label: "Public",
20
+ chipText: "Visible metadata, registered download",
21
+ description: "Anyone can find and view this project. Registered Synapse users can download data."
22
+ },
23
+ {
24
+ value: "OPEN",
25
+ label: "Open",
26
+ chipText: "Fully visible, anonymous download",
27
+ description: "Anyone can find and view this project and download its data.",
28
+ note: "Currently available upon request for non-sensitive data.",
29
+ disabled: !0
30
+ }
31
+ ], y = {
32
+ PRIVATE: "privateVisibility",
33
+ DISCOVERABLE: "visibility",
34
+ PUBLIC: "publicVisibility",
35
+ OPEN: "openVisibility"
36
+ };
37
+ function f({
38
+ value: n,
39
+ onChange: r
40
+ }) {
41
+ return /* @__PURE__ */ l(d, { component: "fieldset", children: [
42
+ /* @__PURE__ */ i(a, { variant: "smallText2", component: "legend", sx: { mb: 1, pb: 1 }, children: "Visibility" }),
43
+ /* @__PURE__ */ i(
44
+ c,
45
+ {
46
+ sx: { mt: 1 },
47
+ value: n,
48
+ onChange: (e, o) => r(o),
49
+ children: m.map((e) => /* @__PURE__ */ i(
50
+ p,
51
+ {
52
+ value: e.value,
53
+ disabled: e.disabled,
54
+ sx: {
55
+ alignItems: "flex-start",
56
+ mb: 1,
57
+ opacity: e.disabled ? 0.5 : 1
58
+ },
59
+ control: /* @__PURE__ */ i(x, { sx: { pt: "2px" } }),
60
+ label: /* @__PURE__ */ l(t, { sx: { display: "flex", alignItems: "flex-start", gap: 1 }, children: [
61
+ /* @__PURE__ */ i(
62
+ h,
63
+ {
64
+ icon: y[e.value],
65
+ wrap: !1,
66
+ sx: { mt: "2px", flexShrink: 0 }
67
+ }
68
+ ),
69
+ /* @__PURE__ */ l(t, { children: [
70
+ /* @__PURE__ */ l(
71
+ t,
72
+ {
73
+ sx: {
74
+ display: "flex",
75
+ alignItems: "center",
76
+ gap: 1,
77
+ flexWrap: "wrap"
78
+ },
79
+ children: [
80
+ /* @__PURE__ */ i(
81
+ a,
82
+ {
83
+ variant: "body1",
84
+ component: "span",
85
+ fontWeight: "bold",
86
+ children: e.label
87
+ }
88
+ ),
89
+ /* @__PURE__ */ i(
90
+ b,
91
+ {
92
+ label: e.chipText,
93
+ size: "small",
94
+ sx: {
95
+ bgcolor: "grey.200",
96
+ color: "text.secondary",
97
+ height: 20,
98
+ fontSize: "0.7rem"
99
+ }
100
+ }
101
+ )
102
+ ]
103
+ }
104
+ ),
105
+ /* @__PURE__ */ l(
106
+ a,
107
+ {
108
+ variant: "body1",
109
+ color: "text.secondary",
110
+ sx: { mt: 0.25 },
111
+ children: [
112
+ e.description,
113
+ e.note && /* @__PURE__ */ l(s, { children: [
114
+ " ",
115
+ /* @__PURE__ */ i("em", { children: e.note })
116
+ ] })
117
+ ]
118
+ }
119
+ )
120
+ ] })
121
+ ] })
122
+ },
123
+ e.value
124
+ ))
125
+ }
126
+ )
127
+ ] });
128
+ }
129
+ export {
130
+ f as ProjectVisibilityRadioGroup
131
+ };
132
+ //# sourceMappingURL=ProjectVisibilityRadioGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectVisibilityRadioGroup.js","sources":["../../../src/components/CreateProjectModal/ProjectVisibilityRadioGroup.tsx"],"sourcesContent":["import {\n Box,\n Chip,\n FormControl,\n FormControlLabel,\n Radio,\n RadioGroup,\n Typography,\n} from '@mui/material'\nimport IconSvg from '../IconSvg'\n\nexport type ProjectVisibility = 'PRIVATE' | 'DISCOVERABLE' | 'PUBLIC' | 'OPEN'\n\ntype VisibilityOption = {\n value: ProjectVisibility\n label: string\n chipText: string\n description: string\n note?: string\n disabled?: boolean\n}\n\nconst VISIBILITY_OPTIONS: VisibilityOption[] = [\n {\n value: 'PRIVATE',\n label: 'Private',\n chipText: 'Invisible',\n description:\n 'Only you and people you invite can see this project exists. Others with the link will see an error.',\n },\n {\n value: 'DISCOVERABLE',\n label: 'Discoverable',\n chipText: 'Visible metadata',\n description:\n 'Anyone can find and view this project. Data download is not allowed.',\n },\n {\n value: 'PUBLIC',\n label: 'Public',\n chipText: 'Visible metadata, registered download',\n description:\n 'Anyone can find and view this project. Registered Synapse users can download data.',\n },\n {\n value: 'OPEN',\n label: 'Open',\n chipText: 'Fully visible, anonymous download',\n description: 'Anyone can find and view this project and download its data.',\n note: 'Currently available upon request for non-sensitive data.',\n disabled: true,\n },\n]\n\nconst VISIBILITY_ICONS: Record<\n ProjectVisibility,\n React.ComponentProps<typeof IconSvg>['icon']\n> = {\n PRIVATE: 'privateVisibility',\n DISCOVERABLE: 'visibility',\n PUBLIC: 'publicVisibility',\n OPEN: 'openVisibility',\n}\n\nexport type ProjectVisibilityRadioGroupProps = {\n value: ProjectVisibility\n onChange: (value: ProjectVisibility) => void\n}\n\nexport function ProjectVisibilityRadioGroup({\n value,\n onChange,\n}: ProjectVisibilityRadioGroupProps) {\n return (\n <FormControl component=\"fieldset\">\n <Typography variant=\"smallText2\" component=\"legend\" sx={{ mb: 1, pb: 1 }}>\n Visibility\n </Typography>\n <RadioGroup\n sx={{ mt: 1 }}\n value={value}\n onChange={(_e, val) => onChange(val as ProjectVisibility)}\n >\n {VISIBILITY_OPTIONS.map(option => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n sx={{\n alignItems: 'flex-start',\n mb: 1,\n opacity: option.disabled ? 0.5 : 1,\n }}\n control={<Radio sx={{ pt: '2px' }} />}\n label={\n <Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 1 }}>\n <IconSvg\n icon={VISIBILITY_ICONS[option.value]}\n wrap={false}\n sx={{ mt: '2px', flexShrink: 0 }}\n />\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n flexWrap: 'wrap',\n }}\n >\n <Typography\n variant=\"body1\"\n component=\"span\"\n fontWeight=\"bold\"\n >\n {option.label}\n </Typography>\n <Chip\n label={option.chipText}\n size=\"small\"\n sx={{\n bgcolor: 'grey.200',\n color: 'text.secondary',\n height: 20,\n fontSize: '0.7rem',\n }}\n />\n </Box>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mt: 0.25 }}\n >\n {option.description}\n {option.note && (\n <>\n {' '}\n <em>{option.note}</em>\n </>\n )}\n </Typography>\n </Box>\n </Box>\n }\n />\n ))}\n </RadioGroup>\n </FormControl>\n )\n}\n"],"names":["VISIBILITY_OPTIONS","VISIBILITY_ICONS","ProjectVisibilityRadioGroup","value","onChange","jsxs","FormControl","jsx","Typography","RadioGroup","_e","val","option","FormControlLabel","Radio","Box","IconSvg","Chip","Fragment"],"mappings":"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"}
@@ -5,6 +5,7 @@ import '@sage-bionetworks/react-datasheet-grid/dist/style.css';
5
5
  import '../../style/components/_data-grid-extra.scss';
6
6
  import { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid';
7
7
  import { DataGridRow, Operation } from './DataGridTypes';
8
+ import type { RemoteSelection } from './hooks/useRemoteSelections';
8
9
  type DataGridProps = {
9
10
  gridRef: React.RefObject<DataSheetGridRef | null>;
10
11
  columnNames: string[];
@@ -19,6 +20,7 @@ type DataGridProps = {
19
20
  selection: SelectionWithId | null;
20
21
  }) => void;
21
22
  onSelectedRowChange?: (rowIndex: number | null, row: DataGridRow | null) => void;
23
+ remoteSelections?: readonly RemoteSelection[];
22
24
  };
23
25
  /**
24
26
  * Component that renders a data grid/spreadsheet using react-datasheet-grid.
@@ -1 +1 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/DataGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,uDAAuD,CAAA;AAC9D,OAAO,8CAA8C,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAMxE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AASxD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACjD,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,oBAAoB,EAAE,mBAAmB,CAAA;IACzC,SAAS,EAAE,WAAW,EAAE,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAA;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;IACxE,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,mBAAmB,CAAC,EAAE,CACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,GAAG,EAAE,WAAW,GAAG,IAAI,KACpB,IAAI,CAAA;CACV,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAyOpD"}
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/DataGrid.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAEL,gBAAgB,EACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,uDAAuD,CAAA;AAC9D,OAAO,8CAA8C,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAMxE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAElE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACjD,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,oBAAoB,EAAE,mBAAmB,CAAA;IACzC,SAAS,EAAE,WAAW,EAAE,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAA;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,CAAA;IACxE,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,mBAAmB,CAAC,EAAE,CACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,GAAG,EAAE,WAAW,GAAG,IAAI,KACpB,IAAI,CAAA;IACT,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;CAC9C,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA2OpD"}