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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 1x 1x 1x 1x 1x 1x 1x 51x 33x 33x 33x 27x 27x 27x 27x 33x 33x 33x 33x 33x 33x 33x 33x 33x 49x | import { cleanHtmlComments } from './cleanHtmlComments'; import { cloneModelForPaste, mergePasteContent } from './mergePasteContent'; import { convertInlineCss } from '../createModelFromHtml/convertInlineCss'; import { createPasteFragment } from './createPasteFragment'; import { generatePasteOptionFromPlugins } from './generatePasteOptionFromPlugins'; import { retrieveHtmlInfo } from './retrieveHtmlInfo'; import type { PasteTypeOrGetter, ClipboardData, IEditor, DOMCreator, } from 'roosterjs-content-model-types'; /** * Paste into editor using a clipboardData object * @param editor The Editor object. * @param clipboardData Clipboard data retrieved from clipboard * @param pasteTypeOrGetter Type of content to paste or function that returns the Paste Type to use based on the document and the clipboard Data. @default normal */ export function paste( editor: IEditor, clipboardData: ClipboardData, pasteTypeOrGetter: PasteTypeOrGetter = 'normal' ) { editor.focus(); let isFirstPaste = false; if (!clipboardData.modelBeforePaste) { isFirstPaste = true; editor.formatContentModel(model => { clipboardData.modelBeforePaste = cloneModelForPaste(model); return false; }); } // 1. Prepare variables const domCreator = editor.getDOMCreator(); Iif (!domCreator.isBypassed && clipboardData.rawHtml) { clipboardData.rawHtml = cleanHtmlComments(clipboardData.rawHtml); } const doc = createDOMFromHtml(clipboardData.rawHtml, domCreator); const pasteType = typeof pasteTypeOrGetter == 'function' ? pasteTypeOrGetter(doc, clipboardData) : pasteTypeOrGetter; // 2. Handle HTML from clipboard const htmlFromClipboard = retrieveHtmlInfo(doc, clipboardData); // 3. Create target fragment const sourceFragment = createPasteFragment( editor.getDocument(), clipboardData, pasteType, (clipboardData.rawHtml == clipboardData.html ? doc : createDOMFromHtml(clipboardData.html, domCreator) )?.body ); // 4. Trigger BeforePaste event to allow plugins modify the fragment const eventResult = generatePasteOptionFromPlugins( editor, clipboardData, sourceFragment, htmlFromClipboard, pasteType ); // 5. Convert global CSS to inline CSS convertInlineCss(eventResult.fragment, htmlFromClipboard.globalCssRules); // 6. Merge pasted content into main Content Model mergePasteContent(editor, eventResult, isFirstPaste); } function createDOMFromHtml( html: string | null | undefined, domCreator: DOMCreator ): Document | null { return html ? domCreator.htmlToDOM(html) : null; } |