Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/icewind1991/files_markdown.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2020-06-05 19:22:23 +0300
committerRobin Appelman <robin@icewind.nl>2020-06-05 19:22:23 +0300
commit6cc42ec33431a03679bab575d852a776d2cd3a1b (patch)
tree3254bca582054ed32e8a91a3c5d2aa97ec8552ce /js
parent803e78ca8afc867745a766aec0bb41b97b43a1b3 (diff)
bumb dependencies
and use less depricated methods for loading scripts
Diffstat (limited to 'js')
-rw-r--r--js/CheckboxPlugin.ts7
-rw-r--r--js/MermaidPlugin.ts24
-rw-r--r--js/VideoPlugin.ts16
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)
+ };
+ }
}