@sanity/form-builder
Version:
Sanity form builder
37 lines (36 loc) • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useObjectEditFormBuilderFocus = useObjectEditFormBuilderFocus;
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
var _portableTextEditor = require("@sanity/portable-text-editor");
var _react = require("react");
var _paths = require("@sanity/util/paths");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var onBlur = () => {
// We don't need to act on these.
};
function useObjectEditFormBuilderFocus(onFocus) {
var editor = (0, _portableTextEditor.usePortableTextEditor)();
var selection = (0, _portableTextEditor.usePortableTextEditorSelection)();
var onEditObjectFormBuilderFocus = (0, _react.useCallback)(nextPath => {
var newPath;
if (selection) {
if ((0, _isEqual2.default)(nextPath, selection.focus.path)) {
newPath = [...nextPath, _paths.FOCUS_TERMINATOR];
}
_portableTextEditor.PortableTextEditor.blur(editor);
}
onFocus(newPath || nextPath);
}, [editor, onFocus, selection]);
var onEditObjectFormBuilderBlur = onBlur;
var onEditObjectClose = (0, _react.useCallback)(() => {
onFocus([]);
}, [onFocus]);
return (0, _react.useMemo)(() => ({
onEditObjectFormBuilderFocus,
onEditObjectFormBuilderBlur,
onEditObjectClose
}), [onEditObjectFormBuilderBlur, onEditObjectFormBuilderFocus, onEditObjectClose]);
}