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 | 1x 1x 1x 10x 10x 10x 9x 9x 9x 9x 9x 9x 9x 9x 9x 5x 5x | import { cleanForbiddenElements } from './cleanForbiddenElements';
import {
createDomToModelContext,
domToContentModel,
getNodePositionFromEvent,
mergeModel,
} from 'roosterjs-content-model-dom';
import type { IEditor } from 'roosterjs-content-model-types';
/**
* @internal
* Handle dropped HTML content by inserting it at the drop position
*/
export function handleDroppedContent(
editor: IEditor,
event: DragEvent,
html: string,
forbiddenElements: string[]
): void {
const doc = editor.getDocument();
const domPosition = getNodePositionFromEvent(doc, editor.getDOMHelper(), event.x, event.y);
if (domPosition) {
event.preventDefault();
event.stopPropagation();
const range = doc.createRange();
range.setStart(domPosition.node, domPosition.offset);
range.collapse(true);
const parsedHtml = editor.getDOMCreator().htmlToDOM(html);
cleanForbiddenElements(parsedHtml, forbiddenElements);
const droppedModel = domToContentModel(parsedHtml.body, createDomToModelContext());
editor.formatContentModel(
(model, context) => {
mergeModel(model, droppedModel, context);
return true;
},
{
selectionOverride: {
type: 'range',
range,
isReverted: false,
},
}
);
}
}
|