UNPKG

electron-html-to

Version:

Convert html to html/image using electron

69 lines (54 loc) 2.01 kB
// disabling import rule because `electron` is a built-in module // eslint-disable-next-line import/no-unresolved 'use strict'; var renderer = require('electron').ipcMain, assign = require('object-assign'); module.exports = function (settings, browserWindow, evaluate, log, converter, respond) { var pageJSisDone = !Boolean(settings.waitForJS); renderer.once(browserWindow.id + ':waitForJS', function () { log('waitForJS signal received..'); pageJSisDone = true; }); browserWindow.webContents.on('did-finish-load', function () { log('browser window loaded..'); if (settings.browserWindow.webPreferences.javascript === false) { log('javascript is disabled for the page..'); next(); } else { evaluate(function () { var sElectronHeader = '#electronHeader', sElectronFooter = '#electronFooter'; return { electronHeader: document.querySelector(sElectronHeader) ? document.querySelector(sElectronHeader).innerHTML : null, electronFooter: document.querySelector(sElectronFooter) ? document.querySelector(sElectronFooter).innerHTML : null }; }, function (err, extraContent) { if (err) { return respond(err); } next(extraContent); }); } function next(extraContent) { /* eslint no-unused-vars: [0] */ // TODO: ask support for header/footer pdf and numberOfPages in electron log('waiting for browser window resolution..'); setTimeout(function () { resolvePage(); }, settings.delay || 0); } function resolvePage() { if (settings.waitForJS && !pageJSisDone) { setTimeout(function () { resolvePage(); }, 100); return; } log('calling converter function..'); converter(log, assign({}, settings), browserWindow, function (converterErr, data) { log('converter function ended..'); respond(converterErr, data); }); } }); };