Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 1x 1x 1x 1x 352x 327x 327x 113x 327x 327x 327x 1635x 327x 37x 37x 37x 37x 37x 37x | import { deleteExpandedSelection } from './deleteExpandedSelection';
import { mutateBlock } from '../common/mutate';
import { runEditSteps } from './runEditSteps';
import type {
DeleteSelectionContext,
DeleteSelectionResult,
DeleteSelectionStep,
FormatContentModelContext,
ReadonlyContentModelDocument,
} from 'roosterjs-content-model-types';
/**
* Delete selected content from Content Model
* @param model The model to delete selected content from
* @param additionalSteps @optional Addition delete steps
* @param formatContext @optional A context object provided by formatContentModel API
* @returns A DeleteSelectionResult object to specify the deletion result
*/
export function deleteSelection(
model: ReadonlyContentModelDocument,
additionalSteps: (DeleteSelectionStep | null)[] = [],
formatContext?: FormatContentModelContext
): DeleteSelectionResult {
const context = deleteExpandedSelection(model, formatContext);
const steps = additionalSteps.filter(
(x: DeleteSelectionStep | null): x is DeleteSelectionStep => !!x
);
runEditSteps(steps, context);
mergeParagraphAfterDelete(context);
return context;
}
// If we end up with multiple paragraphs impacted, we need to merge them
function mergeParagraphAfterDelete(context: DeleteSelectionContext) {
const {
insertPoint,
deleteResult,
lastParagraph,
lastTableContext,
undeletableSegments,
} = context;
if (
insertPoint &&
deleteResult != 'notDeleted' &&
deleteResult != 'nothingToDelete' &&
lastParagraph &&
lastParagraph != insertPoint.paragraph &&
lastTableContext == insertPoint.tableContext
) {
const mutableLastParagraph = mutateBlock(lastParagraph);
const mutableInsertingParagraph = mutateBlock(insertPoint.paragraph);
Eif (undeletableSegments) {
mutableLastParagraph.segments.unshift(...undeletableSegments);
}
mutableInsertingParagraph.segments.push(...mutableLastParagraph.segments);
mutableLastParagraph.segments = [];
}
}
|