import { EditorView } from 'prosemirror-view' ; import Logger from './logger' ; function printHtml ( dom ) { const style = Array . from ( document . querySelectorAll ( 'style, link' ) ) . reduce ( ( str , style ) => str + style . outerHTML , '' ) ; const content = style + dom . outerHTML ; const iframe = document . createElement ( 'iframe' ) ; iframe . id = 'el-tiptap-iframe' ; iframe . setAttribute ( 'style' , 'position: absolute; width: 0; height: 0; top: -10px; left: -10px;' ) ; document . body . appendChild ( iframe ) ; const frameWindow = iframe . contentWindow ; const doc = iframe . contentDocument || ( iframe . contentWindow && iframe . contentWindow . document ) ; if ( doc ) { doc . open ( ) ; doc . write ( content ) ; doc . close ( ) ; } if ( frameWindow ) { iframe . onload = function ( ) { try { setTimeout ( ( ) => { frameWindow . focus ( ) ; try { if ( ! frameWindow . document . execCommand ( 'print' , false ) ) { frameWindow . print ( ) ; } } catch ( e ) { frameWindow . print ( ) ; } frameWindow . close ( ) ; } , 10 ) ; } catch ( err ) { Logger . error ( err ) ; } setTimeout ( function ( ) { document . body . removeChild ( iframe ) ; } , 100 ) ; } ; } } export function printEditorContent ( view ) { const editorContent = view . dom . closest ( '.el-tiptap-editor__content' ) ; if ( editorContent ) { printHtml ( editorContent ) ; return true ; } return false ; }