UNPKG

synapse-react-client

Version:

[![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synapse-react-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettie

126 lines (125 loc) 4.2 kB
import { jsxs as I, jsx as o, Fragment as b } from "react/jsx-runtime"; import { getEntity as S, getFiles as L } from "../../synapse-client/SynapseClient.js"; import "../../utils/PermissionLevelToAccessType.js"; import { SRC_SIGN_IN_CLASS as E } from "../../utils/SynapseConstants.js"; import { useState as m, useEffect as P } from "react"; import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode"; import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse"; import "@sage-bionetworks/synapse-client/util/SynapseClientError"; import { FileHandleAssociateType as h } from "@sage-bionetworks/synapse-types"; import "../../utils/functions/EntityTypeUtils.js"; import "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import { useSynapseContext as R } from "../../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 "@mui/material"; import "@sage-bionetworks/synapse-client"; import "../../utils/types/IsType.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 '../../style/components/_spinner.css';/* empty css */ import "react-router"; function re({ params: e }) { const { accessToken: n, isAuthenticated: v } = R(), [s, u] = m(), [f, F] = m(), [g, H] = m(), c = e.width ?? "", a = e.height ?? ""; return P(() => { const U = async () => { if (e.videoId) u(`https://www.youtube.com/embed/${e.videoId}`); else if (e.vimeoId) u(`https://player.vimeo.com/video/${e.vimeoId}`); else { const d = e.oggSynapseId || e.mp4SynapseId || e.webmSynapseId, r = await S(n, d), i = [ { associateObjectId: d, associateObjectType: h.FileEntity, fileHandleId: r.dataFileHandleId } ]; let p; if (e.vttSynapseId) { const t = await S( n, e.vttSynapseId ); p = t.dataFileHandleId, i.push({ associateObjectId: e.vttSynapseId, associateObjectType: h.FileEntity, fileHandleId: t.dataFileHandleId }); } w( i, r.dataFileHandleId, p ); } }, w = (d, r, i) => { L({ includeFileHandles: !1, includePreSignedURLs: !0, includePreviewPreSignedURLs: !1, requestedFiles: d }, n).then((t) => { const y = t.requestedFiles.find( (l) => l.fileHandleId === r ); if (y?.preSignedURL && F(y.preSignedURL), i) { const l = t.requestedFiles.find( (V) => V.fileHandleId === i ); l?.preSignedURL && H(l.preSignedURL); } }).catch((t) => { console.error("Error on getting video ", t); }); }; U(); }, [s, e, n, a, c]), !v && !s ? /* @__PURE__ */ I("p", { children: [ "You will need to", /* @__PURE__ */ o( "button", { "data-testid": "video-login", className: `${E} sign-in-btn default `, children: "Sign in" } ), "in for access to that resource." ] }) : f ? /* @__PURE__ */ I( "video", { controls: !0, width: c, height: a, "data-testid": "synapse-video-url", crossOrigin: "anonymous", children: [ /* @__PURE__ */ o("source", { src: f }), g && /* @__PURE__ */ o("track", { src: g, kind: "subtitles", default: !0 }), "It does not support the HTML5 Video element." ] } ) : s ? /* @__PURE__ */ o( "iframe", { title: "video frame", src: s, width: c, height: a } ) : /* @__PURE__ */ o(b, {}); } export { re as default }; //# sourceMappingURL=SynapseVideo.js.map