@atlaskit/editor-plugin-list
Version:
List plugin for @atlaskit/editor-core
33 lines (32 loc) • 1.4 kB
JavaScript
import { getFirstParagraphBlockMarkAttrs, reconcileBlockMarkForContainerAtPos } from '@atlaskit/editor-common/lists';
import { isListNode } from '@atlaskit/editor-common/utils';
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
export function mergeNextListAtPosition({
tr,
listPosition
}) {
const listNodeAtPosition = tr.doc.nodeAt(listPosition);
if (!isListNode(listNodeAtPosition)) {
return;
}
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const listPositionResolved = tr.doc.resolve(listPosition + listNodeAtPosition.nodeSize);
const {
pos,
nodeAfter,
nodeBefore
} = listPositionResolved;
if (!isListNode(nodeBefore) || !isListNode(nodeAfter)) {
return;
}
const previousListPosition = pos - nodeBefore.nodeSize;
if (nodeAfter && nodeAfter.type.name !== (nodeBefore === null || nodeBefore === void 0 ? void 0 : nodeBefore.type.name)) {
tr.setNodeMarkup(previousListPosition, nodeAfter.type);
}
tr.join(pos);
if (tr.doc.type.schema.marks.fontSize && expValEquals('platform_editor_small_font_size', 'isEnabled', true)) {
const upperListFontSizeAttrs = getFirstParagraphBlockMarkAttrs(nodeBefore, tr.doc.type.schema.marks.fontSize);
reconcileBlockMarkForContainerAtPos(tr, previousListPosition, tr.doc.type.schema.marks.fontSize, upperListFontSizeAttrs);
}
}