UNPKG

@braineet/ui

Version:

Braineet design system

143 lines (142 loc) 6.42 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _box = _interopRequireDefault(require("../box")); var _documentViewer = require("../document-viewer"); var _heading = _interopRequireDefault(require("../heading")); var _modal = _interopRequireWildcard(require("../modal")); var _text = _interopRequireDefault(require("../text")); var _sc = require("./sc.modalMediaViewer"); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["author", "date", "fileName", "url", "onClose", "isOpen", "type", "texts", "viewerConfig"]; /* eslint-disable no-nested-ternary */ /* eslint-disable no-useless-escape */ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } var defaultTranslations = { title: 'Vizualize this file', closeButton: 'Close modal' }; var ModalMediaViewer = function ModalMediaViewer(_ref) { var author = _ref.author, date = _ref.date, fileName = _ref.fileName, url = _ref.url, onClose = _ref.onClose, isOpen = _ref.isOpen, type = _ref.type, texts = _ref.texts, _ref$viewerConfig = _ref.viewerConfig, viewerConfig = _ref$viewerConfig === void 0 ? {} : _ref$viewerConfig, restProps = _objectWithoutPropertiesLoose(_ref, _excluded); var translations = _extends({}, defaultTranslations, texts); var embeddedUrl = (0, _react.useMemo)(function () { if (url) { var embedData = (0, _documentViewer.getEmbedUrl)(url, type); return embedData; } return false; }, [url, type]); var overlayRef = _react.default.useRef(); var downloadFile = function downloadFile() { var a = document.createElement('a'); a.setAttribute('download', ''); a.href = url; document.body.appendChild(a); a.click(); a.remove(); }; var handleCloseOnOverlay = function handleCloseOnOverlay(e) { if (e.target === (overlayRef == null ? void 0 : overlayRef.current)) { onClose(); } }; if (!isOpen) return null; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_modal.default, _extends({ isOpen: isOpen, title: fileName || translations.title, closeSrText: translations.closeButton, onClose: onClose, size: "fullscreen", overlayStyles: { background: 'rgba(0,0,0,0.8)', backdropFilter: 'blur(4px)' }, modalInnerStyles: { boxShadow: 'none', border: 'none', background: 'transparent', height: 'calc(100vh - 2rem)', width: 'calc(100vw - 2rem)' }, isCentered: true, standalone: true }, restProps, { children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_sc.HeaderFile, { children: [fileName ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sc.ModalIconContainer, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sc.ModalIcon, { name: embeddedUrl.iconModal, fileType: embeddedUrl.fileType }) }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_box.default, { flexGrow: 1, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_heading.default, { color: "white", children: fileName || translations.title }), author || date ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_text.default, { size: "xs", color: "white", children: [author ? author.fullname : '', author && date ? ' • ' : '', date || ''] }) : null] })] }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_box.default, { flexGrow: 1 }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_box.default, { display: "flex", alignItems: "flex-end", children: [embeddedUrl.canDownload ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sc.ButtonStyled, { marginRight: 8, styleType: "solid", color: "black", icon: "download_cloud", onClick: downloadFile }) : null, embeddedUrl.canOpen ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sc.ButtonStyled, { forwardedAs: "a", href: url, rel: "noreferrer", target: "_blank", marginRight: 8, styleType: "solid", color: "black", icon: "share" }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_modal.ModalCloseButton, { color: "white", position: "relative", top: "auto", right: "auto" })] })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_box.default, { ref: overlayRef, display: "flex", color: "white", alignItems: "center", justifyContent: "center", height: "100%", onClick: handleCloseOnOverlay, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_documentViewer.DocumentViewer, _extends({ texts: texts, url: url, type: type }, viewerConfig)) })] }) })); }; var _default = exports.default = ModalMediaViewer;