add initial marp implementation with sample content and build configuration
This commit is contained in:
77
node_modules/@marp-team/marpit/lib/markdown/background_image/parse.js
generated
vendored
Normal file
77
node_modules/@marp-team/marpit/lib/markdown/background_image/parse.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = exports.backgroundImageParse = void 0;
|
||||
var _plugin = _interopRequireDefault(require("../../plugin"));
|
||||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
||||
/** @module */
|
||||
|
||||
const bgSizeKeywords = {
|
||||
auto: 'auto',
|
||||
contain: 'contain',
|
||||
cover: 'cover',
|
||||
fit: 'contain'
|
||||
};
|
||||
const splitSizeMatcher = /^(left|right)(?::((?:\d*\.)?\d+%))?$/;
|
||||
|
||||
/**
|
||||
* Marpit background image parse plugin.
|
||||
*
|
||||
* Parse Marpit's image token and mark as background image when the alternate
|
||||
* text includes `bg`. The marked images will not show as the regular image.
|
||||
*
|
||||
* Furthermore, it parses additional keywords needed for background image.
|
||||
*
|
||||
* @function backgroundImageParse
|
||||
* @param {MarkdownIt} md markdown-it instance.
|
||||
*/
|
||||
function _backgroundImageParse(md) {
|
||||
md.inline.ruler2.after('marpit_parse_image', 'marpit_background_image', ({
|
||||
tokens
|
||||
}) => {
|
||||
for (const t of tokens) {
|
||||
if (t.type === 'image') {
|
||||
const {
|
||||
marpitImage
|
||||
} = t.meta;
|
||||
if (marpitImage.options.some(v => !v.consumed && v.content === 'bg')) {
|
||||
marpitImage.background = true;
|
||||
t.hidden = true;
|
||||
for (const opt of marpitImage.options) {
|
||||
if (opt.consumed) continue;
|
||||
let consumed = false;
|
||||
|
||||
// bg keyword
|
||||
if (opt.content === 'bg') consumed = true;
|
||||
|
||||
// Background size keyword
|
||||
if (bgSizeKeywords[opt.content]) {
|
||||
marpitImage.backgroundSize = bgSizeKeywords[opt.content];
|
||||
consumed = true;
|
||||
}
|
||||
|
||||
// Split background keyword
|
||||
const matched = opt.content.match(splitSizeMatcher);
|
||||
if (matched) {
|
||||
const [, splitSide, splitSize] = matched;
|
||||
marpitImage.backgroundSplit = splitSide;
|
||||
marpitImage.backgroundSplitSize = splitSize;
|
||||
consumed = true;
|
||||
}
|
||||
|
||||
// Background aligned direction
|
||||
if (opt.content === 'vertical' || opt.content === 'horizontal') {
|
||||
marpitImage.backgroundDirection = opt.content;
|
||||
consumed = true;
|
||||
}
|
||||
if (consumed) opt.consumed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
const backgroundImageParse = exports.backgroundImageParse = (0, _plugin.default)(_backgroundImageParse);
|
||||
var _default = exports.default = backgroundImageParse;
|
||||
Reference in New Issue
Block a user