yoastseo-dep
Version:
Yoast clientside page analysis
30 lines (27 loc) • 931 B
JavaScript
import { flatten, isUndefined, uniq } from "lodash-es";
import { getSubheadings } from "./getSubheadings";
/**
* Gets the part of the html that we want to apply the marking to.
*
* @param {array} marks The array of mark objects.
* @param {string} html The html of the page where we want to apply the marking to.
*
* @returns {{selectedHTML: *[], fieldsToMark: *}} The selected part of the html we want to apply the marking to.
*/
export function getFieldsToMark( marks, html ) {
const fieldsToMark = uniq( flatten( marks.map( mark => {
if ( ! isUndefined( mark.getFieldsToMark() ) ) {
return mark.getFieldsToMark();
}
} ) ) );
const selectedHTML = [];
fieldsToMark.forEach( field => {
if ( field === "heading" ) {
const subheadings = getSubheadings( html );
subheadings.forEach( subheading => {
selectedHTML.push( subheading[ 0 ] );
} );
}
} );
return { fieldsToMark, selectedHTML };
}