1
0
Files
malta-slides/node_modules/@marp-team/marpit/lib/markdown/fragment.js

55 lines
1.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fragment = exports.default = void 0;
var _plugin = _interopRequireDefault(require("../plugin"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/** @module */
const fragmentedListMarkups = ['*', ')'];
/**
* Marpit fragment plugin.
*
* @function fragment
* @param {MarkdownIt} md markdown-it instance.
*/
function _fragment(md) {
// Fragmented list
md.core.ruler.after('marpit_directives_parse', 'marpit_fragment', state => {
if (state.inlineMode) return;
for (const token of state.tokens) {
if (token.type === 'list_item_open' && fragmentedListMarkups.includes(token.markup)) {
token.meta = token.meta || {};
token.meta.marpitFragment = true;
}
}
});
// Add data-marpit-fragment(s) attributes to token
md.core.ruler.after('marpit_fragment', 'marpit_apply_fragment', state => {
if (state.inlineMode) return;
const fragments = {
slide: undefined,
count: 0
};
for (const token of state.tokens) {
if (token.meta && token.meta.marpitSlideElement === 1) {
fragments.slide = token;
fragments.count = 0;
} else if (token.meta && token.meta.marpitSlideElement === -1) {
if (fragments.slide && fragments.count > 0) {
fragments.slide.attrSet('data-marpit-fragments', fragments.count);
}
} else if (token.meta && token.meta.marpitFragment) {
fragments.count += 1;
token.meta.marpitFragment = fragments.count;
token.attrSet('data-marpit-fragment', fragments.count);
}
}
});
}
const fragment = exports.fragment = (0, _plugin.default)(_fragment);
var _default = exports.default = fragment;