@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
56 lines (54 loc) • 2.47 kB
JavaScript
/*
* 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/>.
*/
import * as React from 'react';
import EditModesSwitcherUI from './EditModesSwitcherUI';
import { useActiveUser } from '../../hooks/useActiveUser';
import { isItemLockedForMe } from '../../utils/content';
import { useDispatch } from 'react-redux';
import { setPreviewEditMode } from '../../state/actions/preview';
import { usePreviewState } from '../../hooks/usePreviewState';
export function EditModesSwitcher(props) {
const { item, disabled } = props;
const user = useActiveUser();
const isLocked = isItemLockedForMe(item, user.username);
const write = Boolean(item === null || item === void 0 ? void 0 : item.availableActionsMap.edit);
const dispatch = useDispatch();
const { editMode, highlightMode } = usePreviewState();
const onChange = (editMode, highlightMode) => dispatch(setPreviewEditMode({ editMode, highlightMode }));
const isDisabled = disabled || !write || isLocked;
return React.createElement(EditModesSwitcherUI, {
disabled: isDisabled,
isEditMode: editMode,
highlightMode: highlightMode,
onEditModeChange: onChange
});
}
export default EditModesSwitcher;