UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

65 lines (62 loc) 2.2 kB
import React__default, { useContext } from 'react'; import { PencilIcon, EyeIcon } from '@primer/octicons-react'; import { Button } from '../../Button/index.js'; import { MarkdownEditorContext } from './_MarkdownEditorContext.js'; import Box from '../../Box/Box.js'; import { IconButton } from '../../Button/IconButton.js'; 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); } // no point in memoizing this component because onLoadPreview depends on value, so it would still re-render on every change const ViewSwitch = ({ selectedView, onViewSelect, onLoadPreview, disabled }) => { // don't get disabled from context - the switch is not disabled when the editor is disabled const { condensed } = useContext(MarkdownEditorContext); const { label, icon, ...sharedProps } = selectedView === 'preview' ? { variant: 'invisible', sx: { color: 'fg.default', px: 2 }, onClick: () => onViewSelect === null || onViewSelect === void 0 ? void 0 : onViewSelect('edit'), icon: PencilIcon, label: 'Edit' } : { variant: 'invisible', sx: { color: 'fg.default', px: 2 }, onClick: () => { onLoadPreview(); onViewSelect === null || onViewSelect === void 0 ? void 0 : onViewSelect('preview'); }, onMouseOver: () => onLoadPreview(), onFocus: () => onLoadPreview(), icon: EyeIcon, label: 'Preview' }; return /*#__PURE__*/React__default.createElement(Box, { sx: { display: 'flex', flexDirection: 'row' } }, condensed ? /*#__PURE__*/React__default.createElement(IconButton, _extends({}, sharedProps, { disabled: disabled, icon: icon, "aria-label": label })) : /*#__PURE__*/React__default.createElement(Button, _extends({}, sharedProps, { leadingIcon: icon, disabled: disabled }), label)); }; ViewSwitch.displayName = "ViewSwitch"; export { ViewSwitch };