index.js 1.13 KB
module.exports = function(options) {
    return {
        postcssPlugin: 'postcss-page-break',
        Declaration(decl) {
            if (decl.prop.startsWith('break-') && /^break-(inside|before|after)/.test(decl.prop)) {
                // do not process column|region related properties
                if (decl.value.search(/column|region/) >= 0) {
                    return;
                }

                let newValue;
                switch (decl.value) {
                    case 'page':
                        newValue = 'always';
                        break;
                    case 'avoid-page':
                        newValue = 'avoid';
                        break;
                    default:
                        newValue = decl.value;
                }

                const newProperty = 'page-' + decl.prop;
                if (decl.parent.every((sibling) => sibling.prop !== newProperty)) {
                    decl.cloneBefore({
                        prop: newProperty,
                        value: newValue,
                    });
                }
            }
        },
    };

};
module.exports.postcss = true;