@atlaskit/editor-plugin-find-replace
Version:
find replace plugin for @atlaskit/editor-core
28 lines • 1.29 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import { useState, useEffect, useRef } from 'react';
import isEqual from 'lodash/isEqual';
// custom non-debounced hook for the find-replace plugin shared state
export function useFindReplacePluginStateSelector(api, key) {
var _useState = useState(function () {
var currentState = api === null || api === void 0 ? void 0 : api.findReplace.sharedState.currentState();
return currentState === null || currentState === void 0 ? void 0 : currentState[key];
}),
_useState2 = _slicedToArray(_useState, 2),
selectedState = _useState2[0],
setSelectedState = _useState2[1];
var previousStateRef = useRef(selectedState);
useEffect(function () {
var unsub = api === null || api === void 0 ? void 0 : api.findReplace.sharedState.onChange(function (_ref) {
var nextSharedState = _ref.nextSharedState;
var newState = nextSharedState === null || nextSharedState === void 0 ? void 0 : nextSharedState[key];
if (!isEqual(previousStateRef.current, newState)) {
previousStateRef.current = newState;
setSelectedState(newState);
}
});
return function () {
unsub === null || unsub === void 0 || unsub();
};
}, [api, key]);
return selectedState;
}