| |
| import { split } from '../helpers/split' |
| import { wrapArray } from '../helpers/wrap_array' |
| import { wrapTokens } from '../helpers/wrap_tokens' |
| import marpitPlugin from '../plugin' |
| |
| |
| |
| |
| |
| |
| |
| function _slideContainer(md) { |
| const containers = wrapArray(md.marpit.options.slideContainer) |
| if (!containers) return |
| |
| const target = [...containers].reverse() |
| |
| md.core.ruler.push('marpit_slide_containers', (state) => { |
| if (state.inlineMode) return |
| |
| const newTokens = [] |
| |
| for (const tokens of split( |
| state.tokens, |
| (t) => t.meta && t.meta.marpitSlideElement === 1, |
| true, |
| )) { |
| if (tokens.length > 0) |
| newTokens.push( |
| ...target.reduce( |
| (slides, conts) => |
| wrapTokens(state.Token, 'marpit_slide_containers', conts, slides), |
| tokens, |
| ), |
| ) |
| } |
| |
| state.tokens = newTokens |
| }) |
| } |
| |
| export const slideContainer = marpitPlugin(_slideContainer) |
| export default slideContainer |