"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.wrapTokens = wrapTokens; /** @module */ /** * Wrap array of tokens by specified container object. * * @param {Token} Token markdown-it's Token class. * @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(Token, 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(`${type}_open`, tag, 1); const close = new Token(`${type}_close`, tag, -1); Object.assign(open, { ...(container.open || {}) }); Object.assign(close, { ...(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 = exports.default = wrapTokens;