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 65 66 67 68 69 70 | 1x 34x 34x 23x 23x 9x 9x 9x 9x 9x 2x 2x 2x 2x | import type {
EntityRemovalOperation,
FormatContentModelContext,
ReadonlyContentModelBlock,
} from 'roosterjs-content-model-types';
/**
* Delete a content model block from current selection
* @param blocks Array of the block to delete
* @param blockToDelete The block to delete
* @param replacement @optional If specified, use this block to replace the deleted block
* @param context @optional Context object provided by formatContentModel API
* @param direction @optional Whether this is deleting forward or backward. This is only used for deleting entity.
* If not specified, only selected entity will be deleted
*/
export function deleteBlock(
blocks: ReadonlyContentModelBlock[],
blockToDelete: ReadonlyContentModelBlock,
replacement?: ReadonlyContentModelBlock,
context?: FormatContentModelContext,
direction?: 'forward' | 'backward'
): boolean {
const index = blocks.indexOf(blockToDelete);
switch (blockToDelete.blockType) {
case 'Table':
case 'Divider':
replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);
return true;
case 'Entity':
const operation: EntityRemovalOperation | undefined = blockToDelete.isSelected
? 'overwrite'
: direction == 'forward'
? 'removeFromStart'
: direction == 'backward'
? 'removeFromEnd'
: undefined;
Eif (operation !== undefined) {
replacement ? blocks.splice(index, 1, replacement) : blocks.splice(index, 1);
context?.deletedEntities.push({
entity: blockToDelete,
operation,
});
}
return true;
case 'BlockGroup':
switch (blockToDelete.blockGroupType) {
case 'General':
Eif (replacement) {
blocks.splice(index, 1, replacement);
return true;
} else {
// no op, let browser handle it
return false;
}
case 'ListItem':
case 'FormatContainer':
blocks.splice(index, 1);
return true;
}
}
return false;
}
|