@atlaskit/editor-plugin-tasks-and-decisions
Version:
Tasks and decisions plugin for @atlaskit/editor-core
34 lines • 1.5 kB
JavaScript
import { useMemo } from 'react';
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
import { TextSelection } from '@atlaskit/editor-prosemirror/state';
export var useShowPlaceholder = function useShowPlaceholder(_ref) {
var editorView = _ref.editorView,
api = _ref.api,
isContentNodeEmpty = _ref.isContentNodeEmpty,
getPos = _ref.getPos;
var _useSharedPluginState = useSharedPluginState(api, ['typeAhead']),
typeAheadState = _useSharedPluginState.typeAheadState;
var isTypeAheadOpen = Boolean(typeAheadState === null || typeAheadState === void 0 ? void 0 : typeAheadState.isOpen);
var isTypeAheadOpenedInsideItem = useMemo(function () {
var _selection$$cursor;
if (!isTypeAheadOpen) {
return false;
}
var itemPosition = getPos();
if (typeof itemPosition !== 'number') {
return false;
}
var selection = editorView.state.selection;
if (!(selection instanceof TextSelection)) {
return false;
}
var maybeItemNode = editorView.state.doc.nodeAt(itemPosition);
var maybeParentItemNode = (_selection$$cursor = selection.$cursor) === null || _selection$$cursor === void 0 ? void 0 : _selection$$cursor.node();
if (maybeItemNode && maybeParentItemNode && maybeItemNode.eq(maybeParentItemNode)) {
return true;
}
return false;
}, [isTypeAheadOpen, getPos, editorView]);
var showPlaceholder = Boolean(!isTypeAheadOpenedInsideItem && isContentNodeEmpty);
return showPlaceholder;
};