UNPKG

@craftercms/studio-ui

Version:

Services, components, models & utils to build CrafterCMS authoring extensions.

103 lines (101 loc) 3.95 kB
/* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === 'function') for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import React, { useState } from 'react'; import { PreviewDialogContainer } from './PreviewDialogContainer'; import { backgroundModes } from './utils'; import EnhancedDialog from '../EnhancedDialog'; import { useIntl } from 'react-intl'; import { translations } from './translations'; import { getStoredPreviewBackgroundMode, setStoredPreviewBackgroundMode } from '../../utils/state'; import useActiveUser from '../../hooks/useActiveUser'; export function PreviewDialog(props) { var _a; const { title, subtitle = props.url, type, url, content, mode, mimeType } = props, rest = __rest(props, ['title', 'subtitle', 'type', 'url', 'content', 'mode', 'mimeType']); const { username } = useActiveUser(); const [backgroundModeIndex, setBackgroundModeIndex] = useState( (_a = getStoredPreviewBackgroundMode(username)) !== null && _a !== void 0 ? _a : 0 ); const { formatMessage } = useIntl(); return React.createElement( EnhancedDialog, Object.assign( { maxWidth: 'xl', title: title, dialogHeaderProps: { subtitle: React.createElement('span', { title: subtitle }, subtitle), subtitleTypographyProps: { noWrap: true }, sxs: { subtitleWrapper: { maxWidth: '100%' } }, rightActions: [ (type === 'image' || type === 'video') && { icon: { id: '@mui/icons-material/ColorLensOutlined' }, onClick: () => { const index = (backgroundModeIndex + 1) % backgroundModes.length; setBackgroundModeIndex(index); setStoredPreviewBackgroundMode(username, index); }, tooltip: formatMessage(translations.toggleBackgroundColor) } ].filter(Boolean) } }, rest ), React.createElement(PreviewDialogContainer, { type: type, title: title, url: url, content: content, mode: mode, mimeType: mimeType, backgroundModeIndex: backgroundModeIndex }) ); } export default PreviewDialog;