/** * [[include:plugins/print/README.md]] * @packageDocumentation * @module plugins/print */ import type { IControlType, IJodit } from 'jodit/types'; import { Config } from 'jodit/config'; import { getContainer } from 'jodit/core/global'; import { Dom } from 'jodit/core/dom'; import { defaultLanguage } from 'jodit/core/helpers/utils/default-language'; import * as consts from 'jodit/core/constants'; import { pluginSystem } from 'jodit/core/global'; import { Icon } from 'jodit/core/ui/icon'; import { generateCriticalCSS } from './lib/generate-critical-css'; import { previewBox } from 'jodit/core/helpers/utils/print'; Icon.set('print', require('./print.svg')); Config.prototype.controls.print = { exec: (editor: IJodit) => { const iframe = editor.create.element('iframe'); Object.assign(iframe.style, { position: 'fixed', right: 0, bottom: 0, width: 0, height: 0, border: 0 }); getContainer(editor, Config).appendChild(iframe); const afterFinishPrint = (): void => { editor.e.off(editor.ow, 'mousemove', afterFinishPrint); Dom.safeRemove(iframe); }; const myWindow = iframe.contentWindow; if (myWindow) { editor.e .on(myWindow, 'onbeforeunload onafterprint', afterFinishPrint) .on(editor.ow, 'mousemove', afterFinishPrint); if (editor.o.iframe) { editor.e.fire( 'generateDocumentStructure.iframe', myWindow.document, editor ); myWindow.document.body.innerHTML = editor.value; } else { myWindow.document.write( '