@sanity/default-layout
Version:
The default layout components for Sanity
88 lines (87 loc) • 5.57 kB
JavaScript
"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
}));
}