@atlaskit/editor-plugin-tasks-and-decisions
Version:
Tasks and decisions plugin for @atlaskit/editor-core
40 lines (39 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useShowPlaceholder = void 0;
var _react = require("react");
var _hooks = require("@atlaskit/editor-common/hooks");
var _state = require("@atlaskit/editor-prosemirror/state");
var useShowPlaceholder = exports.useShowPlaceholder = function useShowPlaceholder(_ref) {
var editorView = _ref.editorView,
api = _ref.api,
isContentNodeEmpty = _ref.isContentNodeEmpty,
getPos = _ref.getPos;
var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['typeAhead']),
typeAheadState = _useSharedPluginState.typeAheadState;
var isTypeAheadOpen = Boolean(typeAheadState === null || typeAheadState === void 0 ? void 0 : typeAheadState.isOpen);
var isTypeAheadOpenedInsideItem = (0, _react.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 _state.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;
};