UNPKG

jodit

Version:

Jodit is an awesome and useful wysiwyg editor with filebrowser

70 lines (69 loc) 2.69 kB
/*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net */ import * as consts from "../../core/constants.js"; import { Dom } from "../../core/dom/index.js"; import { getContainer, pluginSystem } from "../../core/global.js"; import { defaultLanguage } from "../../core/helpers/utils/default-language.js"; import { previewBox } from "../../core/helpers/utils/print.js"; import { Icon } from "../../core/ui/icon.js"; import { Config } from "../../config.js"; import { generateCriticalCSS } from "./lib/generate-critical-css.js"; import printIcon from "./print.svg.js"; Icon.set('print', printIcon); Config.prototype.controls.print = { exec: (editor) => { 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 = () => { 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('<!doctype html><html lang="' + defaultLanguage(editor.o.language) + '"><head><title></title></head><style>' + generateCriticalCSS(editor) + '</style><body></body></html>'); myWindow.document.close(); previewBox(editor, undefined, 'px', myWindow.document.body); } const style = myWindow.document.createElement('style'); style.innerHTML = `@media print { body { -webkit-print-color-adjust: exact; } }`; myWindow.document.head.appendChild(style); myWindow.focus(); myWindow.print(); } }, mode: consts.MODE_SOURCE + consts.MODE_WYSIWYG, tooltip: 'Print' }; export function print(editor) { editor.registerButton({ name: 'print' }); } pluginSystem.add('print', print);