48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = exports.applyImage = void 0;
|
|
var _inline_style = _interopRequireDefault(require("../../helpers/inline_style"));
|
|
var _plugin = _interopRequireDefault(require("../../plugin"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
/** @module */
|
|
|
|
/**
|
|
* Marpit image apply plugin.
|
|
*
|
|
* Apply image style and color spot directive based on parsed meta.
|
|
*
|
|
* @function applyImage
|
|
* @param {MarkdownIt} md markdown-it instance.
|
|
*/
|
|
function _applyImage(md) {
|
|
// Build and apply image style
|
|
md.inline.ruler2.push('marpit_apply_image', ({
|
|
tokens
|
|
}) => {
|
|
for (const token of tokens) {
|
|
if (token.type === 'image') {
|
|
const {
|
|
filters,
|
|
height,
|
|
width
|
|
} = token.meta.marpitImage;
|
|
const style = new _inline_style.default(token.attrGet('style'));
|
|
if (width && !width.endsWith('%')) style.set('width', width);
|
|
if (height && !height.endsWith('%')) style.set('height', height);
|
|
if (filters) {
|
|
const filterStyle = [];
|
|
for (const fltrs of filters) filterStyle.push(`${fltrs[0]}(${fltrs[1]})`);
|
|
token.meta.marpitImage.filter = filterStyle.join(' ');
|
|
style.set('filter', token.meta.marpitImage.filter);
|
|
}
|
|
const stringified = style.toString();
|
|
if (stringified) token.attrSet('style', stringified);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
const applyImage = exports.applyImage = (0, _plugin.default)(_applyImage);
|
|
var _default = exports.default = applyImage; |