UNPKG

@atlaskit/editor-plugin-find-replace

Version:

find replace plugin for @atlaskit/editor-core

28 lines 1.29 kB
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; }