UNPKG

@braineet/ui

Version:

Braineet design system

142 lines (141 loc) 6.87 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"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } 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 = ModalMediaViewer; exports.default = _default;