doc.yeswiki.pro/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/highlight/parseAttribute.js
2023-05-20 19:38:02 +03:00

52 lines
No EOL
1.4 KiB
JavaScript

import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants';
/**
* Creates a data structure that allows to concatenate similar highlighting
* parts in a single value.
*/
function createAttributeSet() {
var initialValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var value = initialValue;
return {
get: function get() {
return value;
},
add: function add(part) {
var lastPart = value[value.length - 1];
if ((lastPart === null || lastPart === void 0 ? void 0 : lastPart.isHighlighted) === part.isHighlighted) {
value[value.length - 1] = {
value: lastPart.value + part.value,
isHighlighted: lastPart.isHighlighted
};
} else {
value.push(part);
}
}
};
}
export function parseAttribute(_ref) {
var highlightedValue = _ref.highlightedValue;
var preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG);
var firstValue = preTagParts.shift();
var parts = createAttributeSet(firstValue ? [{
value: firstValue,
isHighlighted: false
}] : []);
preTagParts.forEach(function (part) {
var postTagParts = part.split(HIGHLIGHT_POST_TAG);
parts.add({
value: postTagParts[0],
isHighlighted: true
});
if (postTagParts[1] !== '') {
parts.add({
value: postTagParts[1],
isHighlighted: false
});
}
});
return parts.get();
}