UNPKG

gatsby-source-wordpress

Version:

Source data from WordPress in an efficient and scalable way.

62 lines (60 loc) 1.77 kB
"use strict"; exports.__esModule = true; exports.applyNodeFilter = exports.addNodeFilter = void 0; var _store = require("../store"); /** * Grabs an array of filter functions from the redux store, * orders them by priority, and then runs each in order over the * passed in data. The modified data is then returned * * @param {string} name The name of the filter to apply * @param {object} context Any additional data to pass to the filter functions that are applied * @param {object} data The initial data to be filtered */ const applyNodeFilter = async ({ name, context, data }) => { var _getStore$getState$wp; if (!name) { return data; } const nodeFilters = (_getStore$getState$wp = (0, _store.getStore)().getState().wpHooks.nodeFilters) === null || _getStore$getState$wp === void 0 ? void 0 : _getStore$getState$wp[name]; if (!nodeFilters || !nodeFilters.length) { return data; } const sortedNodeFilters = nodeFilters.sort((a, b) => a.priority - b.priority); for (const { filter } of sortedNodeFilters) { data = filter({ data, context, name }); } return data; }; /** * This function adds a filter to the internal redux store of filters * To be applied via applyNodeFilter above * * @param {string} name The name of the filter * @param {function} filter The function to run when applying this filter * @param {integer} priority The priority for this filter to run in. lower means earlier execution */ exports.applyNodeFilter = applyNodeFilter; const addNodeFilter = ({ name, filter, priority }) => { (0, _store.getStore)().dispatch.wpHooks.addNodeFilter({ name, filter, priority }); }; exports.addNodeFilter = addNodeFilter; //# sourceMappingURL=node-filters.js.map