UNPKG

@marp-team/marpit

Version:

The skinny framework for creating slide deck from Markdown

50 lines (38 loc) 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _token = _interopRequireDefault(require("markdown-it/lib/token")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * Wrap array of tokens by specified container object. * * @alias module:helpers/wrap_tokens * @param {String} type Token type. It will be suffixed by `_open` / `_close`. * @param {Object} container A container object to wrap tokens, includes tag * name and attributes. * @param {String} container.tag The name of container element. * @param {Object} [container.open] The object assigning to an opening token. * @param {Object} [container.close] The object assigning to a closing token. * @param {Token[]} [tokens=[]] Wrapping tokens. * @returns {Token[]} Wrapped tokens. */ function wrapTokens(type, container, tokens = []) { const { tag } = container; // Update nesting level of wrapping tokens for (const t of tokens) t.level += 1; // Create markdown-it tokens const open = new _token.default(`${type}_open`, tag, 1); const close = new _token.default(`${type}_close`, tag, -1); Object.assign(open, _objectSpread({}, container.open || {})); Object.assign(close, _objectSpread({}, container.close || {})); // Assign attributes for (const attr of Object.keys(container)) { if (!['open', 'close', 'tag'].includes(attr) && container[attr] != null) open.attrSet(attr, container[attr]); } return [open, ...tokens, close]; } var _default = wrapTokens; exports.default = _default;