UNPKG

instantsearch-ui-components

Version:

Common UI components for InstantSearch.

64 lines (63 loc) 2.91 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.createHighlightComponent = createHighlightComponent; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _lib = require("../lib"); var _excluded = ["parts", "highlightedTagName", "nonHighlightedTagName", "separator", "className", "classNames"]; function createHighlightPartComponent(_ref) { var createElement = _ref.createElement; return function HighlightPart(_ref2) { var classNames = _ref2.classNames, children = _ref2.children, highlightedTagName = _ref2.highlightedTagName, isHighlighted = _ref2.isHighlighted, nonHighlightedTagName = _ref2.nonHighlightedTagName; var TagName = isHighlighted ? highlightedTagName : nonHighlightedTagName; return createElement(TagName, { className: isHighlighted ? classNames.highlighted : classNames.nonHighlighted }, children); }; } function createHighlightComponent(_ref3) { var createElement = _ref3.createElement, Fragment = _ref3.Fragment; var HighlightPart = createHighlightPartComponent({ createElement: createElement, Fragment: Fragment }); return function Highlight(userProps) { var parts = userProps.parts, _userProps$highlighte = userProps.highlightedTagName, highlightedTagName = _userProps$highlighte === void 0 ? 'mark' : _userProps$highlighte, _userProps$nonHighlig = userProps.nonHighlightedTagName, nonHighlightedTagName = _userProps$nonHighlig === void 0 ? 'span' : _userProps$nonHighlig, _userProps$separator = userProps.separator, separator = _userProps$separator === void 0 ? ', ' : _userProps$separator, className = userProps.className, _userProps$classNames = userProps.classNames, classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames, props = (0, _objectWithoutProperties2.default)(userProps, _excluded); return createElement("span", (0, _extends2.default)({}, props, { className: (0, _lib.cx)(classNames.root, className) }), parts.map(function (part, partIndex) { var isLastPart = partIndex === parts.length - 1; return createElement(Fragment, { key: partIndex }, part.map(function (subPart, subPartIndex) { return createElement(HighlightPart, { key: subPartIndex, classNames: classNames, highlightedTagName: highlightedTagName, nonHighlightedTagName: nonHighlightedTagName, isHighlighted: subPart.isHighlighted }, subPart.value); }), !isLastPart && createElement("span", { className: classNames.separator }, separator)); })); }; }