synapse-react-client 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts +3 -0
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +112 -118
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +30 -32
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js +27 -30
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.js +14 -17
- package/dist/components/SynapseHomepageV2/SynapseSearchChips.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +90 -91
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +66 -64
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { formatDate as u } from "../../utils/functions/DateFormatter.js";
|
|
3
|
-
import { getEndpoint as m, BackendDestinationEnum as c } from "../../utils/functions/getEndpoint.js";
|
|
4
|
-
import { useInView as I } from "react-intersection-observer";
|
|
5
|
-
import { Update as T, ArticleOutlined as g, InfoOutline as w, DashboardTwoTone as D } from "@mui/icons-material";
|
|
6
|
-
import { styled as N, Box as r, Link as s, Chip as S, Stack as C, Typography as n, Paper as M } from "@mui/material";
|
|
7
|
-
import O from "dayjs";
|
|
8
|
-
import { EntityTypeIcon as E } from "../EntityIcon.js";
|
|
9
|
-
import { EntityType as R } from "@sage-bionetworks/synapse-client";
|
|
10
|
-
import b from "../favorites/FavoriteButton.js";
|
|
11
|
-
import { EntityDownloadButton as L } from "../EntityDownloadButton/EntityDownloadButton.js";
|
|
12
|
-
import { HasAccessChip as P } from "./HasAccessChip.js";
|
|
13
|
-
import { searchResultsCardChipStyles as B } from "./chipStyles.js";
|
|
14
|
-
import a from "./SynapseSearchResultsCard.module.scss.js";
|
|
15
|
-
import { calculateFriendlyFileSize as $ } from "../../utils/functions/calculateFriendlyFileSize.js";
|
|
16
2
|
import "../../synapse-client/SynapseClient.js";
|
|
17
3
|
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
|
|
18
4
|
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
|
|
19
5
|
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
|
|
20
6
|
import "@sage-bionetworks/synapse-types";
|
|
21
7
|
import "../../utils/functions/EntityTypeUtils.js";
|
|
8
|
+
import { getEndpoint as c, BackendDestinationEnum as s } from "../../utils/functions/getEndpoint.js";
|
|
22
9
|
import "lodash-es";
|
|
23
10
|
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
|
|
24
11
|
import "@tanstack/react-query";
|
|
25
12
|
import "../../utils/PermissionLevelToAccessType.js";
|
|
26
13
|
import "../../utils/SynapseConstants.js";
|
|
27
|
-
import "react";
|
|
14
|
+
import { useRef as I } from "react";
|
|
28
15
|
import "../../utils/context/SynapseContext.js";
|
|
29
16
|
import "use-deep-compare-effect";
|
|
17
|
+
import { styled as T, Box as n, Link as p, Chip as g, Stack as w, Typography as r, Paper as D } from "@mui/material";
|
|
30
18
|
import "../../utils/hooks/useCookiePreferences.js";
|
|
31
19
|
import "../../utils/hooks/useSourceAppConfigs.js";
|
|
32
20
|
import "universal-cookie";
|
|
@@ -39,12 +27,24 @@ import "lodash-es/isEmpty";
|
|
|
39
27
|
import "lodash-es/isEqual";
|
|
40
28
|
import "lodash-es/xorWith";
|
|
41
29
|
import "react-router";
|
|
30
|
+
import { EntityType as N } from "@sage-bionetworks/synapse-client";
|
|
42
31
|
import "../../utils/types/IsType.js";
|
|
43
|
-
import { useGetEntityBundle as
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
|
|
47
|
-
|
|
32
|
+
import { useGetEntityBundle as S } from "../../synapse-queries/entity/useEntityBundle.js";
|
|
33
|
+
import { calculateFriendlyFileSize as C } from "../../utils/functions/calculateFriendlyFileSize.js";
|
|
34
|
+
import { formatDate as M } from "../../utils/functions/DateFormatter.js";
|
|
35
|
+
import { Update as R, ArticleOutlined as O, InfoOutline as E, DashboardTwoTone as b } from "@mui/icons-material";
|
|
36
|
+
import L from "dayjs";
|
|
37
|
+
import { useInView as P } from "react-intersection-observer";
|
|
38
|
+
import { EntityDownloadButton as B } from "../EntityDownloadButton/EntityDownloadButton.js";
|
|
39
|
+
import { EntityTypeIcon as $ } from "../EntityIcon.js";
|
|
40
|
+
import k from "../favorites/FavoriteButton.js";
|
|
41
|
+
import { markdownToPlainText as v } from "../Markdown/MarkdownUtils.js";
|
|
42
|
+
import { searchResultsCardChipStyles as z } from "./chipStyles.js";
|
|
43
|
+
import { HasAccessChip as F } from "./HasAccessChip.js";
|
|
44
|
+
import { HighlightedTypography as y } from "./HighlightedTypography.js";
|
|
45
|
+
import a from "./SynapseSearchResultsCard.module.scss.js";
|
|
46
|
+
const H = T(
|
|
47
|
+
D,
|
|
48
48
|
{
|
|
49
49
|
label: "SynapseSearchResultsCardContainer"
|
|
50
50
|
}
|
|
@@ -57,21 +57,21 @@ const F = N(
|
|
|
57
57
|
padding: "32px",
|
|
58
58
|
gap: "15px"
|
|
59
59
|
});
|
|
60
|
-
function
|
|
61
|
-
const { ref:
|
|
60
|
+
function Le(e) {
|
|
61
|
+
const o = I(null), { ref: f, inView: h } = P({
|
|
62
62
|
triggerOnce: !0,
|
|
63
63
|
rootMargin: "250px 0px"
|
|
64
|
-
}), { data: x } =
|
|
64
|
+
}), { data: x } = S(
|
|
65
65
|
e.entityId,
|
|
66
66
|
void 0,
|
|
67
67
|
{ includeFileHandles: !0 },
|
|
68
|
-
{ enabled: e.entityType ===
|
|
69
|
-
),
|
|
70
|
-
(
|
|
71
|
-
),
|
|
72
|
-
return /* @__PURE__ */ i(
|
|
68
|
+
{ enabled: e.entityType === N.file && h }
|
|
69
|
+
), d = x?.fileHandles.find(
|
|
70
|
+
(u) => u.isPreview !== !0
|
|
71
|
+
), l = d?.contentSize ? C(d?.contentSize) : "", m = e.description ? v(e.description) : "";
|
|
72
|
+
return /* @__PURE__ */ i(H, { ref: f, children: [
|
|
73
73
|
/* @__PURE__ */ i(
|
|
74
|
-
|
|
74
|
+
n,
|
|
75
75
|
{
|
|
76
76
|
sx: {
|
|
77
77
|
display: "flex",
|
|
@@ -81,17 +81,17 @@ function Re(e) {
|
|
|
81
81
|
},
|
|
82
82
|
children: [
|
|
83
83
|
/* @__PURE__ */ t(
|
|
84
|
-
|
|
84
|
+
p,
|
|
85
85
|
{
|
|
86
|
-
href: `${
|
|
87
|
-
|
|
86
|
+
href: `${c(
|
|
87
|
+
s.PORTAL_ENDPOINT
|
|
88
88
|
)}Synapse:${e.entityId}`,
|
|
89
89
|
sx: {
|
|
90
90
|
textDecoration: "underline 2px",
|
|
91
91
|
textUnderlineOffset: "9px"
|
|
92
92
|
},
|
|
93
93
|
children: /* @__PURE__ */ t(
|
|
94
|
-
|
|
94
|
+
y,
|
|
95
95
|
{
|
|
96
96
|
className: a.cardTitle,
|
|
97
97
|
variant: "headline3",
|
|
@@ -102,7 +102,7 @@ function Re(e) {
|
|
|
102
102
|
}
|
|
103
103
|
),
|
|
104
104
|
/* @__PURE__ */ i(
|
|
105
|
-
|
|
105
|
+
n,
|
|
106
106
|
{
|
|
107
107
|
sx: {
|
|
108
108
|
display: "flex",
|
|
@@ -110,13 +110,14 @@ function Re(e) {
|
|
|
110
110
|
alignItems: "center"
|
|
111
111
|
},
|
|
112
112
|
children: [
|
|
113
|
-
/* @__PURE__ */ t(
|
|
113
|
+
/* @__PURE__ */ t(k, { entityId: e.entityId }),
|
|
114
114
|
/* @__PURE__ */ t(
|
|
115
|
-
|
|
115
|
+
B,
|
|
116
116
|
{
|
|
117
117
|
entityId: e.entityId,
|
|
118
118
|
name: e.name,
|
|
119
|
-
entityType: e.entityType
|
|
119
|
+
entityType: e.entityType,
|
|
120
|
+
downloadConfirmationContainer: o
|
|
120
121
|
}
|
|
121
122
|
)
|
|
122
123
|
]
|
|
@@ -125,8 +126,9 @@ function Re(e) {
|
|
|
125
126
|
]
|
|
126
127
|
}
|
|
127
128
|
),
|
|
129
|
+
/* @__PURE__ */ t("div", { ref: o }),
|
|
128
130
|
/* @__PURE__ */ i(
|
|
129
|
-
|
|
131
|
+
n,
|
|
130
132
|
{
|
|
131
133
|
sx: {
|
|
132
134
|
display: "flex",
|
|
@@ -134,10 +136,10 @@ function Re(e) {
|
|
|
134
136
|
},
|
|
135
137
|
children: [
|
|
136
138
|
/* @__PURE__ */ t(
|
|
137
|
-
|
|
139
|
+
g,
|
|
138
140
|
{
|
|
139
141
|
icon: /* @__PURE__ */ t(
|
|
140
|
-
|
|
142
|
+
$,
|
|
141
143
|
{
|
|
142
144
|
type: e.entityType,
|
|
143
145
|
wrap: !1,
|
|
@@ -145,59 +147,59 @@ function Re(e) {
|
|
|
145
147
|
}
|
|
146
148
|
),
|
|
147
149
|
label: e.entityType,
|
|
148
|
-
sx: { ...
|
|
150
|
+
sx: { ...z }
|
|
149
151
|
}
|
|
150
152
|
),
|
|
151
|
-
/* @__PURE__ */ t(
|
|
153
|
+
/* @__PURE__ */ t(F, { entityId: e.entityId })
|
|
152
154
|
]
|
|
153
155
|
}
|
|
154
156
|
),
|
|
155
157
|
/* @__PURE__ */ t(
|
|
156
|
-
|
|
158
|
+
n,
|
|
157
159
|
{
|
|
158
160
|
sx: {
|
|
159
161
|
display: "flex",
|
|
160
162
|
flexDirection: "row",
|
|
161
163
|
gap: "8px"
|
|
162
164
|
},
|
|
163
|
-
children: /* @__PURE__ */ i(
|
|
164
|
-
/* @__PURE__ */ i(
|
|
165
|
-
/* @__PURE__ */ t(
|
|
166
|
-
/* @__PURE__ */ i(
|
|
165
|
+
children: /* @__PURE__ */ i(w, { sx: { gap: "20px", minWidth: 0, width: "100%" }, children: [
|
|
166
|
+
/* @__PURE__ */ i(n, { sx: { display: "flex" }, children: [
|
|
167
|
+
/* @__PURE__ */ t(R, { className: a.cardMetadataIcon }),
|
|
168
|
+
/* @__PURE__ */ i(r, { className: a.cardMetadataTypographyWithIcon, children: [
|
|
167
169
|
"Last updated:",
|
|
168
170
|
" ",
|
|
169
|
-
|
|
171
|
+
M(L.unix(e.modifiedOn), "M/D/YYYY")
|
|
170
172
|
] })
|
|
171
173
|
] }),
|
|
172
|
-
|
|
173
|
-
/* @__PURE__ */ t(
|
|
174
|
+
m && /* @__PURE__ */ i(n, { sx: { display: "flex" }, children: [
|
|
175
|
+
/* @__PURE__ */ t(O, { className: a.cardMetadataIcon }),
|
|
174
176
|
/* @__PURE__ */ t(
|
|
175
|
-
|
|
177
|
+
y,
|
|
176
178
|
{
|
|
177
179
|
className: `${a.cardMetadataTypographyWithIcon} ${a.cardDescription}`,
|
|
178
|
-
text:
|
|
180
|
+
text: m,
|
|
179
181
|
searchTerms: e.searchTerms ?? []
|
|
180
182
|
}
|
|
181
183
|
)
|
|
182
184
|
] }),
|
|
183
|
-
|
|
184
|
-
/* @__PURE__ */ t(
|
|
185
|
-
/* @__PURE__ */ i(
|
|
185
|
+
l && /* @__PURE__ */ i(n, { sx: { display: "flex" }, children: [
|
|
186
|
+
/* @__PURE__ */ t(E, { className: a.cardMetadataIcon }),
|
|
187
|
+
/* @__PURE__ */ i(r, { className: a.cardMetadataTypographyWithIcon, children: [
|
|
186
188
|
"File size: ",
|
|
187
|
-
/* @__PURE__ */ t("b", { children:
|
|
189
|
+
/* @__PURE__ */ t("b", { children: l })
|
|
188
190
|
] })
|
|
189
191
|
] }),
|
|
190
192
|
e.locatedIn && /* @__PURE__ */ i(
|
|
191
|
-
|
|
193
|
+
n,
|
|
192
194
|
{
|
|
193
195
|
sx: { display: "flex", marginLeft: "24px", alignItems: "center" },
|
|
194
196
|
children: [
|
|
195
|
-
/* @__PURE__ */ i(
|
|
197
|
+
/* @__PURE__ */ i(r, { className: a.cardMetadataTypographyWithIcon, children: [
|
|
196
198
|
"Located in:",
|
|
197
199
|
" "
|
|
198
200
|
] }),
|
|
199
201
|
/* @__PURE__ */ t(
|
|
200
|
-
|
|
202
|
+
b,
|
|
201
203
|
{
|
|
202
204
|
className: a.cardMetadataIcon,
|
|
203
205
|
sx: {
|
|
@@ -206,11 +208,11 @@ function Re(e) {
|
|
|
206
208
|
}
|
|
207
209
|
),
|
|
208
210
|
/* @__PURE__ */ t(
|
|
209
|
-
|
|
211
|
+
p,
|
|
210
212
|
{
|
|
211
213
|
className: a.locatedInLink,
|
|
212
|
-
href: `${
|
|
213
|
-
|
|
214
|
+
href: `${c(
|
|
215
|
+
s.PORTAL_ENDPOINT
|
|
214
216
|
)}Synapse:${e.locatedIn?.id}`,
|
|
215
217
|
children: e.locatedIn?.name
|
|
216
218
|
}
|
|
@@ -224,7 +226,7 @@ function Re(e) {
|
|
|
224
226
|
] });
|
|
225
227
|
}
|
|
226
228
|
export {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
+
Le as SynapseSearchResultsCard,
|
|
230
|
+
Le as default
|
|
229
231
|
};
|
|
230
232
|
//# sourceMappingURL=SynapseSearchResultsCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseSearchResultsCard.js","sources":["../../../src/components/SynapseSearchPageResults/SynapseSearchResultsCard.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { useInView } from 'react-intersection-observer'\nimport { StyledComponent } from '@emotion/styled'\nimport {\n ArticleOutlined,\n DashboardTwoTone,\n InfoOutline,\n Update as UpdateIcon,\n} from '@mui/icons-material'\nimport {\n Box,\n Chip,\n Link,\n Paper,\n PaperProps,\n Stack,\n styled,\n Typography,\n} from '@mui/material'\nimport dayjs from 'dayjs'\nimport { EntityTypeIcon } from '../EntityIcon'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport FavoriteButton from '../favorites/FavoriteButton'\nimport { EntityDownloadButton } from '../EntityDownloadButton/EntityDownloadButton'\nimport HasAccessChip from './HasAccessChip'\nimport { searchResultsCardChipStyles } from './chipStyles'\nimport styles from './SynapseSearchResultsCard.module.scss'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { useGetEntityBundle } from '@/synapse-queries'\nimport { FileHandleWithPreview } from '../EntityFinder/details/view/table/TableCellTypes'\nimport { HighlightedTypography } from './HighlightedTypography'\nimport { markdownToPlainText } from '../Markdown/MarkdownUtils'\n\nexport type SynapseSearchResultsCardProps = {\n entityId: string\n name: string\n description?: string\n entityType: EntityType\n modifiedOn: number\n locatedIn?: { name: string; id: string }\n searchTerms?: string[]\n}\n\nconst SynapseSearchResultsCardContainer: StyledComponent<PaperProps> = styled(\n Paper,\n {\n label: 'SynapseSearchResultsCardContainer',\n },\n)({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '250px',\n width: '100%',\n borderRadius: '10px',\n padding: '32px',\n gap: '15px',\n})\n\nexport function SynapseSearchResultsCard(props: SynapseSearchResultsCardProps) {\n const { ref, inView } = useInView({\n triggerOnce: true,\n rootMargin: '250px 0px',\n })\n\n const { data: entityBundle } = useGetEntityBundle(\n props.entityId,\n undefined,\n { includeFileHandles: true },\n { enabled: props.entityType === EntityType.file && inView },\n )\n\n const file = entityBundle?.fileHandles.find(\n (file: FileHandleWithPreview) => file.isPreview !== true,\n )\n\n const friendlySize = file?.contentSize\n ? calculateFriendlyFileSize(file?.contentSize)\n : ''\n\n const plainDescription = props.description\n ? markdownToPlainText(props.description)\n : ''\n\n return (\n <SynapseSearchResultsCardContainer ref={ref}>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${props.entityId}`}\n sx={{\n textDecoration: 'underline 2px',\n textUnderlineOffset: '9px',\n }}\n >\n <HighlightedTypography\n className={styles.cardTitle}\n variant=\"headline3\"\n text={props.name}\n searchTerms={props.searchTerms ?? []}\n />\n </Link>\n\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n alignItems: 'center',\n }}\n >\n <FavoriteButton entityId={props.entityId} />\n <EntityDownloadButton\n entityId={props.entityId}\n name={props.name}\n entityType={props.entityType}\n />\n </Box>\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <Chip\n icon={\n <EntityTypeIcon\n type={props.entityType}\n wrap={false}\n sx={{ color: '#265149', width: '18px' }}\n />\n }\n label={props.entityType}\n sx={{ ...searchResultsCardChipStyles }}\n />\n <HasAccessChip entityId={props.entityId} />\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n }}\n >\n <Stack sx={{ gap: '20px', minWidth: 0, width: '100%' }}>\n <Box sx={{ display: 'flex' }}>\n <UpdateIcon className={styles.cardMetadataIcon} />\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n Last updated:{' '}\n {formatDate(dayjs.unix(props.modifiedOn), 'M/D/YYYY')}\n </Typography>\n </Box>\n {plainDescription && (\n <Box sx={{ display: 'flex' }}>\n <ArticleOutlined className={styles.cardMetadataIcon} />\n <HighlightedTypography\n className={`${styles.cardMetadataTypographyWithIcon} ${styles.cardDescription}`}\n text={plainDescription}\n searchTerms={props.searchTerms ?? []}\n />\n </Box>\n )}\n\n {friendlySize && (\n <Box sx={{ display: 'flex' }}>\n <InfoOutline className={styles.cardMetadataIcon} />\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n File size: <b>{friendlySize}</b>\n </Typography>\n </Box>\n )}\n {props.locatedIn && (\n <Box\n sx={{ display: 'flex', marginLeft: '24px', alignItems: 'center' }}\n >\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n Located in:{' '}\n </Typography>\n <DashboardTwoTone\n className={styles.cardMetadataIcon}\n sx={{\n marginRight: '4px',\n }}\n />\n <Link\n className={styles.locatedInLink}\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${props.locatedIn?.id}`}\n >\n {props.locatedIn?.name}\n </Link>\n </Box>\n )}\n </Stack>\n </Box>\n </SynapseSearchResultsCardContainer>\n )\n}\n\nexport default SynapseSearchResultsCard\n"],"names":["SynapseSearchResultsCardContainer","styled","Paper","SynapseSearchResultsCard","props","ref","inView","useInView","entityBundle","useGetEntityBundle","EntityType","file","friendlySize","calculateFriendlyFileSize","plainDescription","markdownToPlainText","jsxs","Box","jsx","Link","getEndpoint","BackendDestinationEnum","HighlightedTypography","styles","FavoriteButton","EntityDownloadButton","Chip","EntityTypeIcon","searchResultsCardChipStyles","HasAccessChip","Stack","UpdateIcon","Typography","formatDate","dayjs","ArticleOutlined","InfoOutline","DashboardTwoTone"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SynapseSearchResultsCard.js","sources":["../../../src/components/SynapseSearchPageResults/SynapseSearchResultsCard.tsx"],"sourcesContent":["import { useGetEntityBundle } from '@/synapse-queries'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { StyledComponent } from '@emotion/styled'\nimport {\n ArticleOutlined,\n DashboardTwoTone,\n InfoOutline,\n Update as UpdateIcon,\n} from '@mui/icons-material'\nimport {\n Box,\n Chip,\n Link,\n Paper,\n PaperProps,\n Stack,\n styled,\n Typography,\n} from '@mui/material'\nimport { EntityType } from '@sage-bionetworks/synapse-client'\nimport dayjs from 'dayjs'\nimport { useRef } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport { EntityDownloadButton } from '../EntityDownloadButton/EntityDownloadButton'\nimport { FileHandleWithPreview } from '../EntityFinder/details/view/table/TableCellTypes'\nimport { EntityTypeIcon } from '../EntityIcon'\nimport FavoriteButton from '../favorites/FavoriteButton'\nimport { markdownToPlainText } from '../Markdown/MarkdownUtils'\nimport { searchResultsCardChipStyles } from './chipStyles'\nimport HasAccessChip from './HasAccessChip'\nimport { HighlightedTypography } from './HighlightedTypography'\nimport styles from './SynapseSearchResultsCard.module.scss'\n\nexport type SynapseSearchResultsCardProps = {\n entityId: string\n name: string\n description?: string\n entityType: EntityType\n modifiedOn: number\n locatedIn?: { name: string; id: string }\n searchTerms?: string[]\n}\n\nconst SynapseSearchResultsCardContainer: StyledComponent<PaperProps> = styled(\n Paper,\n {\n label: 'SynapseSearchResultsCardContainer',\n },\n)({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '250px',\n width: '100%',\n borderRadius: '10px',\n padding: '32px',\n gap: '15px',\n})\n\nexport function SynapseSearchResultsCard(props: SynapseSearchResultsCardProps) {\n const downloadConfirmationRef = useRef<HTMLDivElement>(null)\n\n const { ref, inView } = useInView({\n triggerOnce: true,\n rootMargin: '250px 0px',\n })\n\n const { data: entityBundle } = useGetEntityBundle(\n props.entityId,\n undefined,\n { includeFileHandles: true },\n { enabled: props.entityType === EntityType.file && inView },\n )\n\n const file = entityBundle?.fileHandles.find(\n (file: FileHandleWithPreview) => file.isPreview !== true,\n )\n\n const friendlySize = file?.contentSize\n ? calculateFriendlyFileSize(file?.contentSize)\n : ''\n\n const plainDescription = props.description\n ? markdownToPlainText(props.description)\n : ''\n\n return (\n <SynapseSearchResultsCardContainer ref={ref}>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${props.entityId}`}\n sx={{\n textDecoration: 'underline 2px',\n textUnderlineOffset: '9px',\n }}\n >\n <HighlightedTypography\n className={styles.cardTitle}\n variant=\"headline3\"\n text={props.name}\n searchTerms={props.searchTerms ?? []}\n />\n </Link>\n\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n alignItems: 'center',\n }}\n >\n <FavoriteButton entityId={props.entityId} />\n <EntityDownloadButton\n entityId={props.entityId}\n name={props.name}\n entityType={props.entityType}\n downloadConfirmationContainer={downloadConfirmationRef}\n />\n </Box>\n </Box>\n {/* Portal target for EntityDownloadButton's download confirmation dialog */}\n <div ref={downloadConfirmationRef} />\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <Chip\n icon={\n <EntityTypeIcon\n type={props.entityType}\n wrap={false}\n sx={{ color: '#265149', width: '18px' }}\n />\n }\n label={props.entityType}\n sx={{ ...searchResultsCardChipStyles }}\n />\n <HasAccessChip entityId={props.entityId} />\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n }}\n >\n <Stack sx={{ gap: '20px', minWidth: 0, width: '100%' }}>\n <Box sx={{ display: 'flex' }}>\n <UpdateIcon className={styles.cardMetadataIcon} />\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n Last updated:{' '}\n {formatDate(dayjs.unix(props.modifiedOn), 'M/D/YYYY')}\n </Typography>\n </Box>\n {plainDescription && (\n <Box sx={{ display: 'flex' }}>\n <ArticleOutlined className={styles.cardMetadataIcon} />\n <HighlightedTypography\n className={`${styles.cardMetadataTypographyWithIcon} ${styles.cardDescription}`}\n text={plainDescription}\n searchTerms={props.searchTerms ?? []}\n />\n </Box>\n )}\n\n {friendlySize && (\n <Box sx={{ display: 'flex' }}>\n <InfoOutline className={styles.cardMetadataIcon} />\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n File size: <b>{friendlySize}</b>\n </Typography>\n </Box>\n )}\n {props.locatedIn && (\n <Box\n sx={{ display: 'flex', marginLeft: '24px', alignItems: 'center' }}\n >\n <Typography className={styles.cardMetadataTypographyWithIcon}>\n Located in:{' '}\n </Typography>\n <DashboardTwoTone\n className={styles.cardMetadataIcon}\n sx={{\n marginRight: '4px',\n }}\n />\n <Link\n className={styles.locatedInLink}\n href={`${getEndpoint(\n BackendDestinationEnum.PORTAL_ENDPOINT,\n )}Synapse:${props.locatedIn?.id}`}\n >\n {props.locatedIn?.name}\n </Link>\n </Box>\n )}\n </Stack>\n </Box>\n </SynapseSearchResultsCardContainer>\n )\n}\n\nexport default SynapseSearchResultsCard\n"],"names":["SynapseSearchResultsCardContainer","styled","Paper","SynapseSearchResultsCard","props","downloadConfirmationRef","useRef","ref","inView","useInView","entityBundle","useGetEntityBundle","EntityType","file","friendlySize","calculateFriendlyFileSize","plainDescription","markdownToPlainText","jsxs","Box","jsx","Link","getEndpoint","BackendDestinationEnum","HighlightedTypography","styles","FavoriteButton","EntityDownloadButton","Chip","EntityTypeIcon","searchResultsCardChipStyles","HasAccessChip","Stack","UpdateIcon","Typography","formatDate","dayjs","ArticleOutlined","InfoOutline","DashboardTwoTone"],"mappings":"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"}
|