74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.printable = exports.postprocess = exports.default = void 0;
|
|
var _postcss_plugin = _interopRequireDefault(require("../helpers/postcss_plugin"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
/** @module */
|
|
|
|
const marpitPrintContainerStyle = `
|
|
html, body {
|
|
background-color: #fff;
|
|
margin: 0;
|
|
page-break-inside: avoid;
|
|
break-inside: avoid-page;
|
|
}
|
|
`.trim();
|
|
|
|
/**
|
|
* Marpit PostCSS printable plugin.
|
|
*
|
|
* Make printable slide deck as PDF.
|
|
*
|
|
* @param {Object} opts
|
|
* @param {string} opts.width
|
|
* @param {string} opts.height
|
|
* @function printable
|
|
*/
|
|
const printable = exports.printable = (0, _postcss_plugin.default)('marpit-postcss-printable', opts => css => {
|
|
css.walkAtRules('media', rule => {
|
|
if (rule.params === 'marpit-print') rule.remove();
|
|
});
|
|
css.first.before(`
|
|
@page {
|
|
size: ${opts.width} ${opts.height};
|
|
margin: 0;
|
|
}
|
|
|
|
@media marpit-print {
|
|
section {
|
|
page-break-before: always;
|
|
break-before: page;
|
|
}
|
|
|
|
section, section * {
|
|
-webkit-print-color-adjust: exact !important;
|
|
animation-delay: 0s !important;
|
|
animation-duration: 0s !important;
|
|
color-adjust: exact !important;
|
|
print-color-adjust: exact !important;
|
|
transition: none !important;
|
|
}
|
|
|
|
:marpit-container > svg[data-marpit-svg] {
|
|
display: block;
|
|
height: 100vh;
|
|
width: 100vw;
|
|
}
|
|
}
|
|
`.trim());
|
|
});
|
|
|
|
/**
|
|
* The post-process PostCSS plugin of Marpit printable plugin.
|
|
*
|
|
* @function postprocess
|
|
*/
|
|
const postprocess = exports.postprocess = (0, _postcss_plugin.default)('marpit-postcss-printable-postprocess', () => css => css.walkAtRules('media', rule => {
|
|
if (rule.params !== 'marpit-print') return;
|
|
rule.params = 'print';
|
|
rule.first.before(marpitPrintContainerStyle);
|
|
}));
|
|
var _default = exports.default = printable; |