stuff
This commit is contained in:
parent
bc92231240
commit
b8225c639e
11904 changed files with 1472749 additions and 133 deletions
98
node_modules/@marp-team/marpit/lib/markdown/directives/apply.js
generated
vendored
Normal file
98
node_modules/@marp-team/marpit/lib/markdown/directives/apply.js
generated
vendored
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = exports.apply = void 0;
|
||||
var _lodash = _interopRequireDefault(require("lodash.kebabcase"));
|
||||
var _inline_style = _interopRequireDefault(require("../../helpers/inline_style"));
|
||||
var _plugin = _interopRequireDefault(require("../../plugin"));
|
||||
var _directives = _interopRequireDefault(require("./directives"));
|
||||
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
||||
/** @module */
|
||||
|
||||
/**
|
||||
* Apply parsed Marpit directives to markdown-it tokens.
|
||||
*
|
||||
* @function apply
|
||||
* @param {MarkdownIt} md markdown-it instance.
|
||||
* @param {Object} [opts]
|
||||
* @param {boolean} [opts.dataset=true] Assigns directives as HTML data
|
||||
* attributes of each section tag.
|
||||
* @param {boolean} [opts.css=true] Assigns directives as CSS Custom Properties
|
||||
* of each section tag.
|
||||
*/
|
||||
function _apply(md, opts = {}) {
|
||||
const {
|
||||
marpit
|
||||
} = md;
|
||||
const {
|
||||
lang
|
||||
} = marpit.options;
|
||||
const dataset = opts.dataset === undefined ? true : !!opts.dataset;
|
||||
const css = opts.css === undefined ? true : !!opts.css;
|
||||
const {
|
||||
global,
|
||||
local
|
||||
} = marpit.customDirectives;
|
||||
const directives = [...Object.keys(global), ...Object.keys(local), ..._directives.default];
|
||||
md.core.ruler.after('marpit_directives_parse', 'marpit_directives_apply', state => {
|
||||
if (state.inlineMode) return;
|
||||
let pageNumber = 0;
|
||||
const tokensForPaginationTotal = [];
|
||||
for (const token of state.tokens) {
|
||||
const {
|
||||
marpitDirectives
|
||||
} = token.meta || {};
|
||||
if (token.type === 'marpit_slide_open') {
|
||||
// `skip` and `hold` disable increment of the page number
|
||||
if (!(marpitDirectives?.paginate === 'skip' || marpitDirectives?.paginate === 'hold')) {
|
||||
pageNumber += 1;
|
||||
}
|
||||
}
|
||||
if (marpitDirectives) {
|
||||
const style = new _inline_style.default(token.attrGet('style'));
|
||||
for (const dir of Object.keys(marpitDirectives)) {
|
||||
if (directives.includes(dir)) {
|
||||
const value = marpitDirectives[dir];
|
||||
if (value) {
|
||||
const kebabCaseDir = (0, _lodash.default)(dir);
|
||||
if (dataset) token.attrSet(`data-${kebabCaseDir}`, value);
|
||||
if (css) style.set(`--${kebabCaseDir}`, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Apply attribute to token
|
||||
if (marpitDirectives.lang || lang) token.attrSet('lang', marpitDirectives.lang || lang);
|
||||
if (marpitDirectives.class) token.attrJoin('class', marpitDirectives.class);
|
||||
if (marpitDirectives.color) style.set('color', marpitDirectives.color);
|
||||
if (marpitDirectives.backgroundColor) style.set('background-color', marpitDirectives.backgroundColor).set('background-image', 'none');
|
||||
if (marpitDirectives.backgroundImage) {
|
||||
style.set('background-image', marpitDirectives.backgroundImage).set('background-position', 'center').set('background-repeat', 'no-repeat').set('background-size', 'cover');
|
||||
if (marpitDirectives.backgroundPosition) style.set('background-position', marpitDirectives.backgroundPosition);
|
||||
if (marpitDirectives.backgroundRepeat) style.set('background-repeat', marpitDirectives.backgroundRepeat);
|
||||
if (marpitDirectives.backgroundSize) style.set('background-size', marpitDirectives.backgroundSize);
|
||||
}
|
||||
if (marpitDirectives.paginate && marpitDirectives.paginate !== 'skip') {
|
||||
// If the page number was still not incremented, mark this page as
|
||||
// the first page.
|
||||
if (pageNumber <= 0) pageNumber = 1;
|
||||
token.attrSet('data-marpit-pagination', pageNumber);
|
||||
tokensForPaginationTotal.push(token);
|
||||
}
|
||||
if (marpitDirectives.header) token.meta.marpitHeader = marpitDirectives.header;
|
||||
if (marpitDirectives.footer) token.meta.marpitFooter = marpitDirectives.footer;
|
||||
const styleStr = style.toString();
|
||||
if (styleStr !== '') token.attrSet('style', styleStr);
|
||||
}
|
||||
}
|
||||
|
||||
// Set total page number to each slide page that has pagination attribute
|
||||
for (const token of tokensForPaginationTotal) {
|
||||
token.attrSet('data-marpit-pagination-total', pageNumber);
|
||||
}
|
||||
});
|
||||
}
|
||||
const apply = exports.apply = (0, _plugin.default)(_apply);
|
||||
var _default = exports.default = apply;
|
||||
Loading…
Add table
Add a link
Reference in a new issue