UNPKG

@sanity/default-layout

Version:

The default layout components for Sanity

88 lines (87 loc) 5.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchResultItem = SearchResultItem; var _components = require("@sanity/base/components"); var _hooks = require("@sanity/base/hooks"); var _router = require("@sanity/base/router"); var _ui = require("@sanity/ui"); var _schema = _interopRequireDefault(require("part:@sanity/base/schema")); var _draftUtils = require("part:@sanity/base/util/draft-utils"); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _commandList = require("../../contexts/commandList"); var _DebugOverlay = require("./DebugOverlay"); var _SearchResultItemPreview = _interopRequireDefault(require("./SearchResultItemPreview")); var _templateObject; // @todo: remove the following line when part imports has been removed from this file ///<reference types="@sanity/types/parts" /> 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } var SearchResultItemBox = (0, _styledComponents.default)(_ui.Box)(_ref => { var $level = _ref.$level; return (0, _styledComponents.css)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n\n [data-focused='true'][data-level='", "'] &,\n [data-hovered='true'][data-level='", "'] & {\n &[data-active='true'] a {\n // Allow nested cards to inherit the correct background color\n --card-bg-color: ", ";\n background: var(--card-bg-color);\n // Disable box-shadow to hide the halo effect when we have keyboard focus over a selected <Button>\n box-shadow: none;\n }\n }\n "])), $level, $level, _ref2 => { var theme = _ref2.theme; return theme.sanity.color.button.bleed.default.hovered.bg; }); }); function SearchResultItem(_ref3) { var data = _ref3.data, debug = _ref3.debug, documentId = _ref3.documentId, index = _ref3.index, onClick = _ref3.onClick, onMouseDown = _ref3.onMouseDown, onMouseEnter = _ref3.onMouseEnter, virtualRow = _ref3.virtualRow; var hit = data.hit, resultIndex = data.resultIndex; var type = _schema.default.get(hit === null || hit === void 0 ? void 0 : hit._type); var documentPresence = (0, _hooks.useDocumentPresenceUsers)(documentId); var _useCommandList = (0, _commandList.useCommandList)(), level = _useCommandList.level; var LinkComponent = (0, _react.useMemo)(() => /*#__PURE__*/ // eslint-disable-next-line @typescript-eslint/no-shadow (0, _react.forwardRef)(function LinkComponent(linkProps, ref) { return /*#__PURE__*/_react.default.createElement(_router.IntentLink, _extends({}, linkProps, { "data-hit-index": resultIndex, intent: "edit", params: { id: (0, _draftUtils.getPublishedId)(hit._id), type: type.name }, ref: ref })); }), [hit._id, resultIndex, type.name]); return /*#__PURE__*/_react.default.createElement(SearchResultItemBox, { $level: level, "data-index": index, flex: 1, style: { // Kept inline to prevent styled-components from generating loads of classes on virtual list scroll height: "".concat(virtualRow.size, "px"), transform: "translateY(".concat(virtualRow.start, "px)") } }, /*#__PURE__*/_react.default.createElement(_components.PreviewCard, { as: LinkComponent, "data-as": "a", onClick: onClick, onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, marginTop: 1, marginX: 1, padding: 2, radius: 2, tabIndex: -1 }, /*#__PURE__*/_react.default.createElement(_SearchResultItemPreview.default, { documentId: hit._id, presence: documentPresence, schemaType: type })), debug && /*#__PURE__*/_react.default.createElement(_DebugOverlay.DebugOverlay, { data: data })); }