UNPKG

@atlaskit/editor-plugin-find-replace

Version:

find replace plugin for @atlaskit/editor-core

35 lines (34 loc) 1.63 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useFindReplacePluginStateSelector = useFindReplacePluginStateSelector; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _isEqual = _interopRequireDefault(require("lodash/isEqual")); // custom non-debounced hook for the find-replace plugin shared state function useFindReplacePluginStateSelector(api, key) { var _useState = (0, _react.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 = (0, _slicedToArray2.default)(_useState, 2), selectedState = _useState2[0], setSelectedState = _useState2[1]; var previousStateRef = (0, _react.useRef)(selectedState); (0, _react.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 (!(0, _isEqual.default)(previousStateRef.current, newState)) { previousStateRef.current = newState; setSelectedState(newState); } }); return function () { unsub === null || unsub === void 0 || unsub(); }; }, [api, key]); return selectedState; }