synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
511 lines (510 loc) • 19.9 kB
JavaScript
import { jsx as t, jsxs as m, Fragment as z } from "react/jsx-runtime";
import ot from "./components/GridMenuButton/GridMenuButton.js";
import rt from "./components/UploadCsvToGridButton.js";
import it from "./components/ExportCsvFromGridButton.js";
import et from "./hooks/useGetSchemaForGrid.js";
import mt from "./MergeGridWithSourceTableButton.js";
import pt from "./utils/computeReplicaSelectionModel.js";
import nt from "./utils/modelRowsToGrid.js";
import "../../assets/icons/error_page/maintenance.svg.js";
import "../../assets/icons/error_page/no-access.svg.js";
import "../../assets/icons/error_page/unavailable.svg.js";
import "../../utils/PermissionLevelToAccessType.js";
import "../../utils/SynapseConstants.js";
import { forwardRef as st, useState as g, useRef as I, useImperativeHandle as ct, useEffect as E, useMemo as L, useCallback as d } from "react";
import "../../synapse-client/SynapseClient.js";
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
import "@sage-bionetworks/synapse-types";
import "../../utils/functions/EntityTypeUtils.js";
import "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import "@tanstack/react-query";
import "@tanstack/query-core";
import "lodash-es/isEmpty";
import "lodash-es/isEqual";
import "lodash-es/xorWith";
import { Stack as lt } from "@mui/material";
import "@sage-bionetworks/synapse-client";
import { useGetEntity as dt } from "../../synapse-queries/entity/useEntity.js";
import "../../utils/types/IsType.js";
import { useGetCurrentUserBundle as at } from "../../synapse-queries/user/useUserBundle.js";
import "../../utils/hooks/useCookiePreferences.js";
import "../../utils/hooks/useSourceAppConfigs.js";
import "universal-cookie";
import "../../utils/AppUtils/session/ApplicationSessionContext.js";
import "../../utils/context/FullContextProvider.js";
import "../../utils/context/DocumentMetadataContext.js";
import '../Plot/SynapsePlot.css';import '../FullWidthAlert/FullWidthAlert.css';import '../../style/components/_spinner.css';/* empty css */
import "react-router";
import "@mui/icons-material/Close";
import "../styled/StyledPopover.js";
import "../Markdown/MarkdownSynapse.js";
import { SmartToyTwoTone as ut } from "@mui/icons-material";
import "react-hot-toast";
import "react-transition-group";
/* empty css */
import "@sage-bionetworks/synapse-client/generated/models/DoiObjectType";
import "react-error-boundary";
import "../AccessTokenPage/AccessTokenCard/AccessTokenCard.js";
import "@mui/icons-material/ContentCopy";
import "../styled/StyledFormControl.js";
import "../../assets/icons/account-certified.svg.js";
import "../../assets/icons/account-enabled-mfa.svg.js";
import "../../assets/icons/account-validated.svg.js";
import "../../utils/functions/DateFormatter.js";
import "@react-hookz/web";
import "dayjs";
import "../../assets/ArcusBioIcon.svg.js";
import "@mui/material/SvgIcon";
import "../../assets/icons/AccessPending.svg.js";
import "../../assets/icons/AccessPendingCloud.svg.js";
import "../../assets/icons/FileWithShield.svg.js";
import "../../assets/icons/MultiFile.svg.js";
import "../../assets/icons/UnpackagableFile.svg.js";
import "../../assets/icons/bioChemicalPhysical.svg.js";
import "../../assets/icons/computationalTool.svg.js";
import "../../assets/icons/dataReuse.svg.js";
import "../../assets/icons/inSilicoModel.svg.js";
import "../../assets/icons/modelSystem.svg.js";
import "../../assets/mui_components/PackagableFile.svg.js";
import "../../assets/icons/spatialProfiling.svg.js";
import "../Authentication/AuthenticationMethodSelection.js";
import "mui-one-time-password-input";
import "../Authentication/TwoFactorEnrollmentForm.js";
import "../styled/LeftRightPanel.js";
import "../Authentication/RecoveryCodeGrid.js";
import "../GenericCard/GenericCardActionButton.js";
import "@mui/material/Link";
import "@mui/material/Skeleton";
import "@mui/material/Tooltip";
import "@mui/material/Typography";
import "../../assets/icons/chart2.svg.js";
import "../../assets/icons/Data2.svg.js";
import "../../assets/icons/DNA_Two.svg.js";
import "../../assets/icons/file.svg.js";
import "../../assets/icons/institution.svg.js";
import "../../assets/icons/mouse.svg.js";
import "../../assets/icons/organizations.svg.js";
import "../../assets/icons/person.svg.js";
import "../../assets/icons/study-active.svg.js";
import "../../assets/icons/study-complete.svg.js";
import "../../assets/icons/translational.svg.js";
import "../../assets/icons/tree_horizontal.svg.js";
import "../../assets/icons/standardDataModel.svg.js";
import "../../assets/icons/Challenge.svg.js";
import "react-intersection-observer";
import "@rjsf/utils";
import "../SchemaDrivenAnnotationEditor/template/AdditionalPropertyContext.js";
import "@mui/material/TextField";
import "jsonpath-plus";
import "@mui/material/ListItem";
import "@mui/material/FormHelperText";
import "@mui/material/List";
import "../DateTimePicker/DateTimePicker.js";
import "../JsonSchemaForm/widgets/SelectWidget.js";
import "@rjsf/mui";
import "@rjsf/validator-ajv8";
import "../../utils/context/GlobalIsEditingContext.js";
import "../../assets/icons/DoubleQuotes.svg.js";
import "../EntityDownloadConfirmation/EntityDownloadConfirmation.js";
import "../QueryContext/QueryContext.js";
import "../QueryVisualizationWrapper/QueryVisualizationContext.js";
import "react-share";
import "../GenericCard/GenericCard.js";
import { SkeletonTable as ht } from "../Skeleton/SkeletonTable.js";
import "@mui/system";
import "../GenericCard/Linkify.js";
import "jotai";
import "lodash-es/noop";
import "../QueryWrapper/TableRowSelectionState.js";
import "../styled/WideButton.js";
import "pluralize";
import "react-select";
import "../AccessRequirementList/AccessRequirementList.js";
import "../DownloadCart/ActionRequiredCard/ActionRequiredCard.js";
import "../EntityAclEditor/EntityAclEditor.js";
import "../SynapseTable/SynapseTable.js";
import "../styled/StyledTableContainer.js";
import "@mui/icons-material/ExitToApp";
import "../ChallengeTeamWizard/CreateChallengeTeam.js";
import "../ChallengeTeamWizard/MembershipRequestForm.js";
import "@mui/x-data-grid";
import "@mui/material/InputBase";
import "@mui/icons-material/Search";
import "@mui/icons-material/AddCircleTwoTone";
import "../EntityFinder/details/configurations/EntityChildrenDetails.js";
import "../EntityFinder/details/view/DetailsView.js";
import "immutable";
import "../styled/LightTooltip.js";
import "../../assets/illustrations/challenges_illustration.svg.js";
import "../../assets/illustrations/cohort_builder_illustration.svg.js";
import "../../assets/illustrations/data_access_management_illustration.svg.js";
import "../../assets/illustrations/datasets_illustration.svg.js";
import "../../assets/illustrations/discussions_illustration.svg.js";
import "../../assets/illustrations/docker_illustration.svg.js";
import "../../assets/illustrations/favorites_illustration.svg.js";
import "../../assets/illustrations/files_illustration.svg.js";
import "../../assets/illustrations/following_illustration.svg.js";
import "../../assets/illustrations/projects_illustration.svg.js";
import "../../assets/illustrations/tables_illustration.svg.js";
import "../../assets/illustrations/teams_illustration.svg.js";
import "../../assets/illustrations/trash_can_illustration.svg.js";
import "../../assets/illustrations/wikis_illustration.svg.js";
import "../../assets/illustrations/donation_illustration.svg.js";
import "../../assets/illustrations/left_dot_blob_illustration.svg.js";
import "../../assets/illustrations/right_dot_blob_illustration.svg.js";
import "../../assets/illustrations/left_dot_blob_dark_illustration.svg.js";
import "../../assets/illustrations/right_dot_blob_dark_illustration.svg.js";
import "../../assets/illustrations/underconstruction_illustration.svg.js";
import "../DownloadCart/DownloadListTable.js";
import "@hyperjump/json-schema";
import "@hyperjump/json-schema/draft-07";
import "@hyperjump/json-schema/annotated-instance/experimental";
import "@hyperjump/json-schema/annotations/experimental";
import "@rjsf/core";
import "../EntityFinder/EntityFinder.js";
import "shortid";
import "../Evaluation/EvaluationRoundEditor.js";
import "react-switch";
import "../Plot/Plot.js";
import "../ColorGradient/ColorGradient.js";
import "@mui/x-date-pickers";
import "@mui/x-date-pickers/AdapterDayjs";
import "@mui/x-date-pickers/LocalizationProvider";
import "../FeaturedDataTabs/FacetPlotsCardGrid.js";
import "../Forum/ForumTable.js";
import "@mui/icons-material/NavigateNext";
import "@react-google-maps/api";
import "../Markdown/MarkdownUtils.js";
import "../OAuthClientManagement/OAuthManagement.js";
import "../OrientationBanner/OrientationBanner.js";
import "lodash-es/cloneDeep";
import "lodash-es/uniq";
import "lodash-es/countBy";
import "lodash-es/first";
import "lodash-es/orderBy";
import "../styled/LargeButton.js";
import "../../assets/illustrations/diagonalLinePattern.svg.js";
import "@upsetjs/react";
/* empty css */
import "reactflow";
import "../ProvenanceGraph/ProvenanceUtils.js";
import "reactflow/dist/style.css";
import "../download_list/DownloadDetails.js";
import "../WizardChoiceButton/WizardChoiceButton.js";
import "../SynapseTable/export/ExternalAnalysisPlatformsConstants.js";
import "../styled/InlineBadge.js";
import "../AccessRequirementAclEditor/AccessRequirementAclEditor.js";
import "../RssFeedCards/RssFeedCards.js";
import "../styled/InputSizedButton.js";
import "../SubsectionRowRenderer/SubsectionRowRenderer.js";
import "@apidevtools/json-schema-ref-parser";
import "json-rules-engine";
import "lodash-es/find";
import "lodash-es/findIndex";
import "lodash-es/get";
import "lodash-es/isUndefined";
import "lodash-es/keys";
import "lodash-es/pick";
import "lodash-es/remove";
import "lodash-es/set";
import "lodash-es/trimStart";
import "../SynapseForm/SynapseFormSubmissionGrid.js";
import "../SynapseChat/AccessLevelMenu.js";
import "react-draggable";
import "../TimelinePlot/phasesQueryResponseData.js";
import "../EntityHeaderTable/EntityHeaderTable.js";
import "../MuiContainer.js";
import s from "@mui/material/Grid";
import "@mui/icons-material/ArrowForwardIos";
import "../PortalAclEditor/PortalAclEditor.js";
import "../SynapseHomepageV2/HomepageStyles.js";
import { getSchemaPropertiesInfo as ft } from "../../utils/jsonschema/getSchemaPropertyInfo.js";
import { ClickableJsonCrdt as St } from "clickable-json";
import { GridAgentChat as gt } from "../SynapseChat/GridAgentChat.js";
import It from "./DataGrid.js";
import { useGridUndoRedo as Ct } from "./hooks/useGridUndoRedo.js";
import { StartGridSession as yt } from "./StartGridSession.js";
import { useDataGridWebSocket as Et } from "./useDataGridWebsocket.js";
import { applyModelChange as Rt } from "./utils/applyModelChange.js";
import { removeNoOpOperations as xt } from "./utils/DataGridUtils.js";
import { mapOperationsToModelChanges as Gt } from "./utils/mapOperationsToModelChanges.js";
import bt from "../AccessRequirementList/RequirementItem/CertificationRequirement.js";
import { ValidationAlert as vt } from "./components/ValidationAlert.js";
const Ye = st(
({ agentRegistrationId: B, showDebugInfo: R = !1 }, D) => {
const [o, P] = g(null), [p, A] = g(null), [j, v] = g(!1), [F, w] = g(
null
), a = I(null), u = I(null), { data: J, isLoading: W } = at();
ct(
D,
() => ({
initializeGrid: (r) => {
a.current && a.current.handleStartSession(r);
},
loadExistingSession: (r) => {
a.current && a.current.handleLoadSession(r);
}
}),
[]
);
const {
isConnected: n,
websocketInstance: T,
hasCompletedInitialSync: H,
model: i,
modelSnapshot: h,
connect: k,
presignedUrl: c,
hasSufficientData: N
} = Et(), C = I(null);
E(() => {
C.current = T;
}, [T]);
const x = I(null);
E(() => {
if (p == null || !o?.sessionId) {
x.current = null;
return;
}
const r = {
replicaId: p,
sessionId: o.sessionId
}, e = x.current;
e && e.replicaId === r.replicaId && e.sessionId === r.sessionId || (x.current = r, k(p, o.sessionId));
}, [p, o?.sessionId, k]), E(() => {
i === null && (w(null), u.current && u.current.setActiveCell(null));
}, [i]);
const G = et(o), { data: V } = dt(
o?.sourceEntityId,
void 0,
{
enabled: !!o?.sourceEntityId
}
), _ = V?.concreteType === "org.sagebionetworks.repo.model.table.EntityView", b = L(() => ft(G ?? null), [G]), $ = n ? "Connected" : "Disconnected", f = L(
() => h ? nt(i, h) : [],
[i, h]
), y = d(() => {
!n || !C.current || C.current.sendPatch();
}, [n, C]);
E(() => {
n && y();
}, [n, y]);
const l = d(
(r, e) => {
e.forEach((S) => {
Rt(r, S, b);
}), y();
},
[y, b]
), q = d(
(r) => {
if (!i) {
console.error("Model is not initialized");
return;
}
r.type === "DELETE" && u.current && u.current.setActiveCell(null), l(i, [r]);
},
[i, l]
), { undoUI: Y, redoUI: K, addOperationsToUndoStack: M, clearRedoStack: O } = Ct(q), Q = d(
(r, e) => {
if (!i) {
console.error("Model is not initialized");
return;
}
if (e = xt(r, f, e), e.length > 0) {
O(), M(e, f, r);
const S = Gt(e, r);
l(i, S);
}
},
[
i,
f,
O,
M,
l
]
), X = d(
(r) => {
const { selection: e } = r;
if (e != null && (w(e), i != null && p != null)) {
const S = pt(
e,
i
);
l(i, [
{
type: "SET_SELECTION",
replicaId: p.toString(),
selection: S
}
]);
}
},
[l, i, p]
), U = I(null), [, Z] = g({}), tt = d(
(r, e) => {
r !== null && (U.current = r, Z({}));
},
[]
);
return !W && !J?.isCertified ? /* @__PURE__ */ t(bt, {}) : /* @__PURE__ */ t("div", { children: /* @__PURE__ */ m(s, { container: !0, spacing: 2, children: [
/* @__PURE__ */ t(s, { size: { xs: 12, xl: 8 }, children: /* @__PURE__ */ t(
yt,
{
ref: a,
onSessionChange: P,
onReplicaChange: A,
show: R
}
) }),
/* @__PURE__ */ t(s, { size: { xs: 12, xl: 4 }, children: R && /* @__PURE__ */ m("div", { children: [
/* @__PURE__ */ m("p", { children: [
"Session ID: ",
o?.sessionId || "No session created"
] }),
/* @__PURE__ */ m("p", { children: [
"Replica ID: ",
p || "No replica created"
] }),
/* @__PURE__ */ m("p", { children: [
"Source Entity ID:",
" ",
o?.sourceEntityId || "No source entity"
] }),
/* @__PURE__ */ m("p", { children: [
"JSON Schema $id:",
" ",
o?.gridJsonSchema$Id || "No schema attached to session"
] }),
/* @__PURE__ */ m("p", { children: [
"Presigned URL:",
" ",
c ? c.substring(0, 30) + (c.length > 30 ? " ... " + c.substring(c.length - 10) : "") : "No URL generated"
] }),
/* @__PURE__ */ m("p", { children: [
"WebSocket Status:",
" ",
/* @__PURE__ */ t("span", { style: { color: n ? "green" : "red" }, children: $ })
] })
] }) }),
o && /* @__PURE__ */ m(z, { children: [
!N && /* @__PURE__ */ m(s, { size: 12, children: [
/* @__PURE__ */ t("h3", { children: "Setting up grid..." }),
/* @__PURE__ */ m("div", { style: { marginBottom: "10px" }, children: [
!o && /* @__PURE__ */ t("p", { children: "Creating grid session..." }),
o && !p && /* @__PURE__ */ t("p", { children: "Setting up real-time sync..." }),
o && p && !c && /* @__PURE__ */ t("p", { children: "Establishing secure connection..." }),
o && p && c && !n && /* @__PURE__ */ t("p", { children: "Connecting to server..." }),
n && !H && /* @__PURE__ */ t("p", { children: "Loading table data..." }),
/* @__PURE__ */ t(ht, { numRows: 4, numCols: 1 })
] })
] }),
N && /* @__PURE__ */ m(z, { children: [
/* @__PURE__ */ t(s, { size: 12, children: /* @__PURE__ */ m(
lt,
{
direction: "row",
spacing: 1,
sx: { justifyContent: "flex-end" },
children: [
Y,
K,
/* @__PURE__ */ t(
ot,
{
variant: "outlined",
onClick: () => v(!0),
startIcon: /* @__PURE__ */ t(ut, {}),
children: "Open chat"
}
),
/* @__PURE__ */ t(
gt,
{
agentRegistrationId: B,
open: j,
onClose: () => v(!1),
gridSessionId: o.sessionId,
usersReplicaId: p,
chatbotName: "Grid Assistant"
}
),
o.sourceEntityId && /* @__PURE__ */ t(
rt,
{
sourceEntityId: o.sourceEntityId,
gridSessionId: o.sessionId
}
),
o.sessionId && /* @__PURE__ */ t(
it,
{
gridSessionId: o.sessionId,
filename: "grid-" + (o.sourceEntityId || "export")
}
),
o.sourceEntityId && /* @__PURE__ */ t(
mt,
{
sourceEntityId: o.sourceEntityId,
gridSessionId: o.sessionId
}
)
]
}
) }),
/* @__PURE__ */ t(s, { size: 12, children: /* @__PURE__ */ t(
It,
{
gridRef: u,
rowValues: f,
columnNames: h?.columnNames ?? [],
columnOrder: h?.columnOrder ?? [],
schemaPropertiesInfo: b,
entityIsView: _,
jsonSchema: G,
lastSelection: F,
handleChange: Q,
handleSelectionChange: X,
onSelectedRowChange: tt
}
) }),
/* @__PURE__ */ t(s, { size: 12, children: /* @__PURE__ */ t(
vt,
{
selectedRowIndex: U.current,
rowValues: f
}
) })
] }),
R && /* @__PURE__ */ m(
s,
{
size: 12,
style: {
margin: "10px 0",
padding: "10px",
border: "1px solid #ccc",
maxHeight: "400px",
overflowY: "auto"
},
children: [
/* @__PURE__ */ t("h3", { children: "Model" }),
i ? /* @__PURE__ */ t(St, { model: i }) : "No model available"
]
}
)
] })
] }) });
}
);
export {
Ye as default
};
//# sourceMappingURL=SynapseGrid.js.map