markmap-lib 0.16.1 → 0.16.3-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/plugins.mjs CHANGED
@@ -1,14 +1,13 @@
1
1
  import { Hook, buildJSItem, buildCSSItem, noop, wrapFunction } from "markmap-common";
2
2
  import yaml from "js-yaml";
3
3
  import hljs from "highlight.js";
4
- import remarkableKatex from "remarkable-katex";
4
+ import katexPlugin from "@iktakahiro/markdown-it-katex";
5
5
  function createTransformHooks(transformer) {
6
6
  return {
7
7
  transformer,
8
8
  parser: new Hook(),
9
9
  beforeParse: new Hook(),
10
10
  afterParse: new Hook(),
11
- htmltag: new Hook(),
12
11
  retransform: new Hook()
13
12
  };
14
13
  }
@@ -26,27 +25,22 @@ const plugin$3 = definePlugin({
26
25
  name: name$5,
27
26
  transform(transformHooks) {
28
27
  transformHooks.parser.tap((md) => {
29
- md.core.ruler.before(
30
- "inline",
31
- "checkbox",
32
- (state) => {
33
- for (let i = 2; i < state.tokens.length; i += 1) {
34
- const token = state.tokens[i];
35
- if (token.type === "inline" && token.content) {
36
- const prevType = state.tokens[i - 1].type;
37
- const prevPrevType = state.tokens[i - 2].type;
38
- if (prevType === "heading_open" || prevType === "paragraph_open" && prevPrevType === "list_item_open") {
39
- token.content = token.content.replace(
40
- /^\[(.)\] /,
41
- (m, g) => images[g] ? `${images[g]} ` : m
42
- );
43
- }
28
+ md.core.ruler.before("inline", "checkbox", (state) => {
29
+ for (let i = 2; i < state.tokens.length; i += 1) {
30
+ const token = state.tokens[i];
31
+ if (token.type === "inline" && token.content) {
32
+ const prevType = state.tokens[i - 1].type;
33
+ const prevPrevType = state.tokens[i - 2].type;
34
+ if (prevType === "heading_open" || prevType === "paragraph_open" && prevPrevType === "list_item_open") {
35
+ token.content = token.content.replace(
36
+ /^\[(.)\] /,
37
+ (m, g) => images[g] ? `${images[g]} ` : m
38
+ );
44
39
  }
45
40
  }
46
- return false;
47
- },
48
- {}
49
- );
41
+ }
42
+ return false;
43
+ });
50
44
  });
51
45
  return {};
52
46
  }
@@ -207,14 +201,16 @@ const plugin$1 = definePlugin({
207
201
  var _a, _b;
208
202
  let enableFeature = noop;
209
203
  transformHooks.parser.tap((md) => {
210
- md.use(remarkableKatex);
211
- md.renderer.rules.katex = wrapFunction(
212
- md.renderer.rules.katex,
213
- (render, ...args) => {
214
- enableFeature();
215
- return render(...args);
204
+ md.use(katexPlugin);
205
+ ["math_block", "math_inline"].forEach((key) => {
206
+ const fn = md.renderer.rules[key];
207
+ if (fn) {
208
+ md.renderer.rules[key] = wrapFunction(fn, (render, ...args) => {
209
+ enableFeature();
210
+ return render(...args);
211
+ });
216
212
  }
217
- );
213
+ });
218
214
  });
219
215
  transformHooks.beforeParse.tap((_, context) => {
220
216
  enableFeature = () => {
@@ -259,32 +255,20 @@ const plugin = definePlugin({
259
255
  name,
260
256
  transform(transformHooks) {
261
257
  transformHooks.parser.tap((md) => {
262
- Object.entries(md.renderer.rules).forEach(([key, value]) => {
263
- if (typeof value === "function") {
264
- md.renderer.rules[key] = patchRule(value);
265
- } else {
266
- Object.entries(value).forEach(([k, v]) => {
267
- value[k] = patchRule(v);
268
- });
258
+ md.renderer.renderAttrs = wrapFunction(
259
+ md.renderer.renderAttrs,
260
+ (renderAttrs, token) => {
261
+ let attrs = renderAttrs(token);
262
+ if (token.block && token.map) {
263
+ attrs += ` data-lines=${token.map.join(",")}`;
264
+ }
265
+ return attrs;
269
266
  }
270
- });
267
+ );
271
268
  });
272
269
  return {};
273
270
  }
274
271
  });
275
- function patchRule(rule, _key) {
276
- return wrapFunction(rule, (render, tokens, idx, ...rest) => {
277
- let html = render(tokens, idx, ...rest);
278
- const { lines } = tokens[idx];
279
- if (lines) {
280
- html = html.replace(
281
- /^<[\w-]+/,
282
- (m) => `${m} data-lines="${lines.join(",")}"`
283
- );
284
- }
285
- return html;
286
- });
287
- }
288
272
  const pluginSourceLines = plugin;
289
273
  const plugins = [
290
274
  pluginFrontmatter,
@@ -1,11 +1,11 @@
1
+ import type MarkdownIt from 'markdown-it';
1
2
  import { UrlBuilder } from 'markmap-common';
2
3
  import { IHtmlParserOptions } from 'markmap-html-parser';
3
- import { Remarkable } from 'remarkable';
4
4
  import { IAssets, IFeatures, ITransformHooks, ITransformPlugin, ITransformResult, ITransformer } from './types';
5
5
  export declare const builtInPlugins: ITransformPlugin[];
6
6
  export declare class Transformer implements ITransformer {
7
7
  hooks: ITransformHooks;
8
- md: Remarkable;
8
+ md: MarkdownIt;
9
9
  assetsMap: Record<string, IAssets>;
10
10
  urlBuilder: UrlBuilder;
11
11
  plugins: ITransformPlugin[];
package/dist/types.d.ts CHANGED
@@ -1,26 +1,21 @@
1
- import { CSSItem, Hook, IPureNode, IWrapContext, JSItem, UrlBuilder } from 'markmap-common';
1
+ import type MarkdownIt from 'markdown-it';
2
+ import { CSSItem, Hook, IPureNode, JSItem, UrlBuilder } from 'markmap-common';
2
3
  import { IHtmlParserOptions } from 'markmap-html-parser';
3
4
  import { IMarkmapJSONOptions as IMarkmapJSONOptionsForView } from 'markmap-view';
4
- import type { Remarkable } from 'remarkable';
5
- type Htmltag = Remarkable.Rule<Remarkable.HtmlTagToken, string>;
6
5
  export interface ITransformHooks {
7
6
  transformer: ITransformer;
8
7
  /**
9
8
  * Tapped once when the parser is created.
10
9
  */
11
- parser: Hook<[md: Remarkable]>;
10
+ parser: Hook<[md: MarkdownIt]>;
12
11
  /**
13
12
  * Tapped every time before Markdown content is parsed.
14
13
  */
15
- beforeParse: Hook<[md: Remarkable, context: ITransformContext]>;
14
+ beforeParse: Hook<[md: MarkdownIt, context: ITransformContext]>;
16
15
  /**
17
16
  * Tapped every time after Markdown content is parsed.
18
17
  */
19
- afterParse: Hook<[md: Remarkable, context: ITransformContext]>;
20
- /**
21
- * Tapped when Remarkable renders an HTML tag in Markdown.
22
- */
23
- htmltag: Hook<[ctx: IWrapContext<Parameters<Htmltag>, ReturnType<Htmltag>>]>;
18
+ afterParse: Hook<[md: MarkdownIt, context: ITransformContext]>;
24
19
  /**
25
20
  * Used in autoloader to force rerender when resource is loaded.
26
21
  */
@@ -54,6 +49,7 @@ export interface ITransformContext {
54
49
  features: IFeatures;
55
50
  content: string;
56
51
  frontmatter?: {
52
+ title?: string;
57
53
  markmap?: IMarkmapJSONOptions;
58
54
  };
59
55
  /** The index of line where content without frontmatter starts */
@@ -73,4 +69,3 @@ export interface ITransformPlugin {
73
69
  */
74
70
  transform: (transformHooks: ITransformHooks) => IAssets;
75
71
  }
76
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markmap-lib",
3
- "version": "0.16.1",
3
+ "version": "0.16.3-alpha.2+0f4c3f8",
4
4
  "description": "Visualize your Markdown as mindmaps with Markmap",
5
5
  "author": "Gerald <gera2ld@live.com>",
6
6
  "license": "MIT",
@@ -58,20 +58,25 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@highlightjs/cdn-assets": "^11.8.0",
61
- "@types/remarkable": "^2.0.3",
61
+ "@types/katex": "^0.16.7",
62
+ "@types/markdown-it": "^14.0.0",
62
63
  "markmap-common": "0.16.0",
63
64
  "webfontloader": "^1.6.28"
64
65
  },
65
66
  "dependencies": {
66
67
  "@babel/runtime": "^7.22.6",
68
+ "@iktakahiro/markdown-it-katex": "^4.0.1",
67
69
  "highlight.js": "^11.8.0",
68
70
  "js-yaml": "^4.1.0",
69
71
  "katex": "^0.16.8",
72
+ "markdown-it": "^14.1.0",
73
+ "markdown-it-ins": "^4.0.0",
74
+ "markdown-it-mark": "^4.0.0",
75
+ "markdown-it-sub": "^2.0.0",
76
+ "markdown-it-sup": "^2.0.0",
70
77
  "markmap-html-parser": "0.16.1",
71
- "markmap-view": "0.16.0",
72
- "prismjs": "^1.29.0",
73
- "remarkable": "^2.0.1",
74
- "remarkable-katex": "^1.2.1"
78
+ "markmap-view": "0.16.3-alpha.2+0f4c3f8",
79
+ "prismjs": "^1.29.0"
75
80
  },
76
81
  "peerDependencies": {
77
82
  "markmap-common": "*"
@@ -90,5 +95,5 @@
90
95
  "^(.*\\.svg)\\?raw$": "$1"
91
96
  }
92
97
  },
93
- "gitHead": "f10ad62ef03e02a1843484cca51521f48989fab7"
98
+ "gitHead": "0f4c3f84ff21f0957ec3dbf338ed7a453f050638"
94
99
  }