"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;