UNPKG

@sanity/desk-tool

Version:

Tool for managing all sorts of content in a structured manner

122 lines (121 loc) 6.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ChangesPanel = ChangesPanel; var _changeIndicators = require("@sanity/base/change-indicators"); var _diff = require("@sanity/field/diff"); var _components = require("@sanity/base/components"); var _icons = require("@sanity/icons"); var _ui = require("@sanity/ui"); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _timeline = require("../timeline"); var _pane = require("../../../components/pane"); var _usePane2 = require("../../../components/pane/usePane"); var _useDocumentPane3 = require("../useDocumentPane"); var _LoadingContent = require("./content/LoadingContent"); var _helpers = require("./helpers"); var _templateObject; 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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } var Scroller = (0, _styledComponents.default)(_components.ScrollContainer)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: 100%;\n overflow: auto;\n position: relative;\n scroll-behavior: smooth;\n"]))); function ChangesPanel() { var _useDocumentPane = (0, _useDocumentPane3.useDocumentPane)(), documentId = _useDocumentPane.documentId, documentSchema = _useDocumentPane.documentSchema, handleHistoryClose = _useDocumentPane.handleHistoryClose, historyController = _useDocumentPane.historyController, value = _useDocumentPane.value; var _usePane = (0, _usePane2.usePane)(), collapsed = _usePane.collapsed; var scrollRef = (0, _react.useRef)(null); var historyState = historyController.selectionState; var loading = historyState === 'loading'; var since = historyController.sinceTime; var diff = historyController.currentObjectDiff(); var isComparingCurrent = !historyController.onOlderRevision(); var documentContext = _react.default.useMemo(() => ({ documentId, schemaType: documentSchema, FieldWrapper: _changeIndicators.ChangeFieldWrapper, rootDiff: diff, isComparingCurrent, value }), [documentId, documentSchema, diff, isComparingCurrent, value]); var changeAnnotations = _react.default.useMemo(() => diff ? (0, _helpers.collectLatestAuthorAnnotations)(diff) : [], [diff]); if (collapsed) { return null; } return /*#__PURE__*/_react.default.createElement(_ui.Flex, { direction: "column", flex: 1, style: { borderLeft: '1px dashed var(--card-border-color)', overflow: 'hidden', minWidth: 320 }, "data-testid": "review-changes-pane" }, /*#__PURE__*/_react.default.createElement(_pane.PaneHeader, { actions: /*#__PURE__*/_react.default.createElement(_ui.Button, { icon: _icons.CloseIcon, mode: "bleed", onClick: handleHistoryClose, padding: 3, title: "Hide changes panel" }), subActions: changeAnnotations.length > 0 && /*#__PURE__*/_react.default.createElement(_ui.Box, { paddingRight: 1 }, /*#__PURE__*/_react.default.createElement(_diff.DiffTooltip, { annotations: changeAnnotations, description: "Changes by", placement: "bottom-end" }, /*#__PURE__*/_react.default.createElement(_ui.AvatarStack, { maxLength: 4 }, changeAnnotations.map(_ref => { var author = _ref.author; return /*#__PURE__*/_react.default.createElement(_components.UserAvatar, { key: author, userId: author }); })))), tabs: /*#__PURE__*/_react.default.createElement(_timeline.TimelineMenu, { mode: "since", chunk: since }), title: "Changes" }), /*#__PURE__*/_react.default.createElement(_pane.PaneContent, null, /*#__PURE__*/_react.default.createElement(_ui.BoundaryElementProvider, { element: scrollRef.current }, /*#__PURE__*/_react.default.createElement(Scroller, { "data-ui": "Scroller", ref: scrollRef }, /*#__PURE__*/_react.default.createElement(_ui.Box, { flex: 1, padding: 4 }, /*#__PURE__*/_react.default.createElement(Content, { diff: diff, documentContext: documentContext, loading: loading })))))); } function Content(_ref2) { var diff = _ref2.diff, documentContext = _ref2.documentContext, loading = _ref2.loading; var _useDocumentPane2 = (0, _useDocumentPane3.useDocumentPane)(), documentSchema = _useDocumentPane2.documentSchema; if (loading) { return /*#__PURE__*/_react.default.createElement(_LoadingContent.LoadingContent, null); } if (!diff) { return /*#__PURE__*/_react.default.createElement(_diff.NoChanges, null); } return /*#__PURE__*/_react.default.createElement(_diff.DocumentChangeContext.Provider, { value: documentContext }, /*#__PURE__*/_react.default.createElement(_diff.ChangeList, { diff: diff, schemaType: documentSchema })); }