UNPKG

@atlaskit/editor-plugin-tasks-and-decisions

Version:

Tasks and decisions plugin for @atlaskit/editor-core

36 lines 1.35 kB
import { useMemo } from 'react'; import { useSharedPluginState } from '@atlaskit/editor-common/hooks'; import { TextSelection } from '@atlaskit/editor-prosemirror/state'; export const useShowPlaceholder = ({ editorView, api, isContentNodeEmpty, getPos }) => { const { typeAheadState } = useSharedPluginState(api, ['typeAhead']); const isTypeAheadOpen = Boolean(typeAheadState === null || typeAheadState === void 0 ? void 0 : typeAheadState.isOpen); const isTypeAheadOpenedInsideItem = useMemo(() => { var _selection$$cursor; if (!isTypeAheadOpen) { return false; } const itemPosition = getPos(); if (typeof itemPosition !== 'number') { return false; } const selection = editorView.state.selection; if (!(selection instanceof TextSelection)) { return false; } const maybeItemNode = editorView.state.doc.nodeAt(itemPosition); const 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]); const showPlaceholder = Boolean(!isTypeAheadOpenedInsideItem && isContentNodeEmpty); return showPlaceholder; };