diff options
author | Robin Appelman <robin@icewind.nl> | 2020-06-05 19:22:23 +0300 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2020-06-05 19:22:23 +0300 |
commit | 6cc42ec33431a03679bab575d852a776d2cd3a1b (patch) | |
tree | 3254bca582054ed32e8a91a3c5d2aa97ec8552ce /js | |
parent | 803e78ca8afc867745a766aec0bb41b97b43a1b3 (diff) |
bumb dependencies
and use less depricated methods for loading scripts
Diffstat (limited to 'js')
-rw-r--r-- | js/CheckboxPlugin.ts | 7 | ||||
-rw-r--r-- | js/MermaidPlugin.ts | 24 | ||||
-rw-r--r-- | js/VideoPlugin.ts | 16 |
3 files changed, 27 insertions, 20 deletions
diff --git a/js/CheckboxPlugin.ts b/js/CheckboxPlugin.ts index ce4e1f6..f17c7d2 100644 --- a/js/CheckboxPlugin.ts +++ b/js/CheckboxPlugin.ts @@ -2,6 +2,7 @@ import MarkdownIt from "markdown-it"; import Token from 'markdown-it/lib/token'; +import {RuleCore} from 'markdown-it/lib/parser_core'; import StateCore from "markdown-it/lib/rules_core/state_core"; export interface CheckboxPluginOptions { @@ -20,7 +21,7 @@ interface CheckboxReplacerState extends StateCore { Token: TokenConstructor; } -export function CheckBoxReplacer(md: MarkdownIt, userOptions: Partial<CheckboxPluginOptions>): MarkdownIt.Rule { +export function CheckBoxReplacer(md: MarkdownIt, userOptions: Partial<CheckboxPluginOptions>): RuleCore { let lastId = 0; const defaults: CheckboxPluginOptions = { divWrap: false, @@ -101,7 +102,7 @@ export function CheckBoxReplacer(md: MarkdownIt, userOptions: Partial<CheckboxPl return function (state: CheckboxReplacerState) { for (const token of state.tokens) { - if (token.type === "inline") { + if (token.type === "inline" && token.children) { let currentLine = token.map ? token.map[0] : 0; let newChildren: Token[] = []; for (const childToken of token.children) { @@ -113,6 +114,8 @@ export function CheckBoxReplacer(md: MarkdownIt, userOptions: Partial<CheckboxPl token.children = newChildren; } } + + return false; }; } diff --git a/js/MermaidPlugin.ts b/js/MermaidPlugin.ts index e9f7c73..70e1de4 100644 --- a/js/MermaidPlugin.ts +++ b/js/MermaidPlugin.ts @@ -39,17 +39,19 @@ const mermaidChart = (code: string): string => { }; export const MermaidPlugin = (md: MarkdownIt) => { - const originalRenderer = md.renderer.rules.fence.bind(md.renderer.rules); - md.renderer.rules.fence = (tokens: Token[], idx: number, options, env, slf) => { - const token = tokens[idx]; - const code = token.content.trim(); - if (token.info === 'mermaid') { - return mermaidChart(code); + if (md.renderer.rules.fence) { + const originalRenderer = md.renderer.rules.fence.bind(md.renderer.rules); + md.renderer.rules.fence = (tokens: Token[], idx: number, options, env, slf) => { + const token = tokens[idx]; + const code = token.content.trim(); + if (token.info === 'mermaid') { + return mermaidChart(code); + } + const firstLine = code.split(/\n/)[0].trim(); + if (firstLine === 'gantt' || firstLine === 'sequenceDiagram' || firstLine.match(/^graph (?:TB|BT|RL|LR|TD);?$/)) { + return mermaidChart(code); + } + return originalRenderer(tokens, idx, options, env, slf); } - const firstLine = code.split(/\n/)[0].trim(); - if (firstLine === 'gantt' || firstLine === 'sequenceDiagram' || firstLine.match(/^graph (?:TB|BT|RL|LR|TD);?$/)) { - return mermaidChart(code); - } - return originalRenderer(tokens, idx, options, env, slf); } }; diff --git a/js/VideoPlugin.ts b/js/VideoPlugin.ts index 8b5cf2f..0999cbd 100644 --- a/js/VideoPlugin.ts +++ b/js/VideoPlugin.ts @@ -78,7 +78,7 @@ function renderVideo(md: MarkdownIt, options: VideoOptions) { return (tokens: Token[], idx: number, env) => { const token = tokens[idx]; const url = token.attrGet('src'); - if (!url) { + if (!url || !token.attrs || !token.children) { return false; } token.attrs[token.attrIndex('alt')][1] = altTokenizer(token.children, options, env); @@ -123,7 +123,7 @@ export interface VineOptions extends VideoServiceOptions { embed: string; } -export interface VideoOptions { +export interface VideoOptions extends MarkdownIt.Options { youtube: VideoServiceOptions; vimeo: VideoServiceOptions; vine: VineOptions; @@ -139,9 +139,11 @@ const defaults: VideoOptions = { export default function VideoPlugin(md: MarkdownIt, options: VideoOptions) { const originalRenderer = md.renderer.rules.image; - md.renderer.rules.image = (tokens: Token[], idx: number, options: VideoOptions, env, slf) => { - options = $.extend(defaults, options); - const videoResult = renderVideo(md, options)(tokens, idx, env); - return videoResult || originalRenderer(tokens, idx, options, env, slf) - }; + if (originalRenderer) { + md.renderer.rules.image = (tokens: Token[], idx: number, options: VideoOptions, env, slf) => { + options = $.extend(defaults, options); + const videoResult = renderVideo(md, options)(tokens, idx, env); + return videoResult || originalRenderer(tokens, idx, options, env, slf) + }; + } } |