@wordpress/edit-post
Version:
Edit Post module for WordPress.
27 lines (24 loc) • 757 B
JavaScript
/**
* Given a selector returns a functions that returns the listener only
* if the returned value from the selector changes.
*
* @param {Function} selector Selector.
* @param {Function} listener Listener.
* @param {boolean} initial Flags whether listener should be invoked on
* initial call.
* @return {Function} Listener creator.
*/
export const onChangeListener = (selector, listener, initial = false) => {
let previousValue = selector();
if (initial) {
listener(selector());
}
return () => {
const selectedValue = selector();
if (selectedValue !== previousValue) {
previousValue = selectedValue;
listener(selectedValue);
}
};
};
//# sourceMappingURL=utils.js.map