mdast-util-to-vnode 0.3.1 → 0.4.0

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/README.md CHANGED
@@ -8,6 +8,9 @@ This package is a utility that takes [mdast](https://github.com/syntax-tree/mdas
8
8
 
9
9
  ## When should I use this?
10
10
 
11
+ > [!TIP]
12
+ > Vue Markdown: the vue component for render markdown string, and support streaming for AI. [Learn more 👉](https://github.com/litingyes/vue-markdown)
13
+
11
14
  If you want to use Vue.js to render mdast, use it. It is especially useful when you want to render streamed MarkDown strings in AI application development.
12
15
 
13
16
  ## Install
package/dist/index.d.ts CHANGED
@@ -7,4 +7,8 @@ export interface ToVNodeOptions {
7
7
  export declare function toVNode(node: Root, options?: ToVNodeOptions): VNode<import('vue').RendererNode, import('vue').RendererElement, {
8
8
  [key: string]: any;
9
9
  }>;
10
- export declare function createVNode(node: Node, options?: ToVNodeOptions, index?: number): VNode;
10
+ export interface CreateVNodeContext {
11
+ index: number;
12
+ parent: Node | null;
13
+ }
14
+ export declare function createVNode(node: Node, options: ToVNodeOptions | undefined, context: CreateVNodeContext): VNode;
package/dist/index.js CHANGED
@@ -1,95 +1,98 @@
1
- import { h as a, Text as y } from "vue";
2
- function m(r) {
1
+ import { h as t, Comment as O, Text as j } from "vue";
2
+ function p(r) {
3
3
  return Array.isArray(r);
4
4
  }
5
- function v(r) {
5
+ function C(r) {
6
6
  return typeof r == "object" && r !== null;
7
7
  }
8
- function h(r) {
8
+ function y(r) {
9
9
  return typeof r == "function";
10
10
  }
11
- function n(r) {
12
- return v(r) && !m(r) && !h(r);
11
+ function s(r) {
12
+ return C(r) && !p(r) && !y(r);
13
13
  }
14
- function l(r, ...u) {
15
- if (!n(r))
14
+ function i(r, ...l) {
15
+ if (!s(r))
16
16
  return r;
17
- const s = u.filter((t) => n(t));
18
- if (!s.length)
17
+ const c = l.filter((a) => s(a));
18
+ if (!c.length)
19
19
  return r;
20
- const e = s.shift();
21
- for (const t in e)
22
- n(e[t]) ? (Object.prototype.hasOwnProperty.call(r, t) || Object.assign(r, { [t]: {} }), l(r[t], e[t])) : Object.assign(r, { [t]: e[t] });
23
- return l(r, ...s);
20
+ const e = c.shift();
21
+ for (const a in e)
22
+ s(e[a]) ? (Object.prototype.hasOwnProperty.call(r, a) || Object.assign(r, { [a]: {} }), i(r[a], e[a])) : Object.assign(r, { [a]: e[a] });
23
+ return i(r, ...c);
24
24
  }
25
- function i(r, u) {
26
- return u.reduce((s, e) => (s[e] = r[e], s), {});
25
+ function n(r, l) {
26
+ return l.reduce((c, e) => (c[e] = r[e], c), {});
27
27
  }
28
- function p(r, u = {}) {
29
- return b(r, u, 0);
28
+ function N(r, l = {}) {
29
+ return v(r, l, {
30
+ index: 0,
31
+ parent: null
32
+ });
30
33
  }
31
- function b(r, u = {}, s) {
32
- var f;
33
- let e = (f = u.components) == null ? void 0 : f[r.type], t = {};
34
- switch (h(e) && (e = e(r)), m(e) && (t = e[1] ?? {}, e = e[0]), r.type) {
34
+ function v(r, l = {}, c) {
35
+ var f, m, h, b, g;
36
+ let e = (f = l.components) == null ? void 0 : f[r.type], a = {};
37
+ switch (y(e) && (e = e(r)), p(e) && (a = e[1] ?? {}, e = e[0]), r.type) {
35
38
  case "blockquote":
36
- return a(
39
+ return t(
37
40
  e ?? "blockquote",
38
- t,
39
- c(r, u)
41
+ a,
42
+ u(r, l)
40
43
  );
41
44
  case "break":
42
- return a(
45
+ return t(
43
46
  e ?? "br",
44
- t
47
+ a
45
48
  );
46
49
  case "code":
47
- return e ? a(
50
+ return e ? t(
48
51
  e,
49
- l(i(r, ["lang", "meta", "value"]), t)
50
- ) : a(
52
+ i(n(r, ["lang", "meta", "value"]), a)
53
+ ) : t(
51
54
  "pre",
52
55
  {
53
- dataLang: r.lang,
54
- dataMeta: r.meta
56
+ "data-lang": r.lang,
57
+ "data-meta": r.meta
55
58
  },
56
- a("code", r.value)
59
+ t("code", r.value)
57
60
  );
58
61
  case "delete":
59
- return a(
62
+ return t(
60
63
  e ?? "s",
61
- t,
62
- c(r, u)
64
+ a,
65
+ u(r, l)
63
66
  );
64
67
  case "emphasis":
65
- return a(
68
+ return t(
66
69
  e ?? "em",
67
- t,
68
- c(r, u)
70
+ a,
71
+ u(r, l)
69
72
  );
70
73
  case "heading":
71
- return e ? a(
74
+ return e ? t(
72
75
  e,
73
- l(i(r, ["depth"]), t)
74
- ) : a(
76
+ i(n(r, ["depth"]), a)
77
+ ) : t(
75
78
  `h${r.depth}`,
76
- c(r, u)
79
+ u(r, l)
77
80
  );
78
81
  case "html":
79
- return e ? a(
82
+ return e ? t(
80
83
  e,
81
- l(i(r, ["value"]), t)
82
- ) : a(
84
+ i(n(r, ["value"]), a)
85
+ ) : t(
83
86
  "div",
84
87
  {
85
88
  innerHTML: r.value
86
89
  }
87
90
  );
88
91
  case "image":
89
- return e ? a(
92
+ return e ? t(
90
93
  e,
91
- l(i(r, ["url", "alt", "title"]), t)
92
- ) : a(
94
+ i(n(r, ["url", "alt", "title"]), a)
95
+ ) : t(
93
96
  "img",
94
97
  {
95
98
  src: r.url,
@@ -98,117 +101,135 @@ function b(r, u = {}, s) {
98
101
  }
99
102
  );
100
103
  case "inlineCode":
101
- return e ? a(
104
+ return e ? t(
102
105
  e,
103
- l(i(r, ["value"]), t)
104
- ) : a(
106
+ i(n(r, ["value"]), a)
107
+ ) : t(
105
108
  "code",
106
109
  r.value
107
110
  );
108
111
  case "link":
109
- return e ? a(
112
+ return e ? t(
110
113
  e,
111
- l(i(r, ["url", "title"]), t),
112
- c(r, u)
113
- ) : a(
114
+ i(
115
+ {
116
+ target: "_blank"
117
+ },
118
+ n(r, ["url", "title"]),
119
+ a
120
+ ),
121
+ u(r, l)
122
+ ) : t(
114
123
  "a",
115
124
  {
116
- href: r.url
125
+ href: r.url,
126
+ target: "_blank"
117
127
  },
118
- c(r, u)
128
+ u(r, l)
119
129
  );
120
130
  case "list":
121
- return e ? a(
131
+ return e ? t(
122
132
  e,
123
- l(i(r, ["ordered", "spread", "start"]), t),
124
- c(r, u)
125
- ) : a(
133
+ i(n(r, ["ordered", "spread", "start"]), a),
134
+ u(r, l)
135
+ ) : t(
126
136
  r.ordered ? "ol" : "ul",
127
- c(r, u)
137
+ u(r, l)
128
138
  );
129
139
  case "listItem":
130
- return e ? a(
140
+ return e ? t(
131
141
  e,
132
- l(i(r, ["checked", "spread"]), t),
133
- c(r, u)
134
- ) : a(
142
+ i(n(r, ["checked", "spread"]), a),
143
+ u(r, l)
144
+ ) : t(
135
145
  "li",
136
- c(r, u)
146
+ u(r, l)
137
147
  );
138
148
  case "paragraph":
139
- return a(
149
+ return t(
140
150
  e ?? "p",
141
- t,
142
- c(r, u)
151
+ a,
152
+ u(r, l)
143
153
  );
144
154
  case "root":
145
- return a(
155
+ return t(
146
156
  e ?? "div",
147
- t,
148
- c(r, u)
157
+ a,
158
+ u(r, l)
149
159
  );
150
160
  case "strong":
151
- return a(
161
+ return t(
152
162
  e ?? "strong",
153
- t,
154
- c(r, u)
163
+ a,
164
+ u(r, l)
155
165
  );
156
166
  case "table":
157
- return a(
167
+ return t(
158
168
  e ?? "table",
159
- l(i(r, ["align"]), t),
160
- c(r, u)
169
+ a,
170
+ u(r, l)
161
171
  );
162
172
  case "tableRow":
163
- return a(
164
- e ?? (s === 0 ? "th" : "tr"),
165
- l(t, {
166
- index: s
173
+ return e ? t(
174
+ e,
175
+ i(a, {
176
+ index: c.index,
177
+ align: ((m = c.parent.align) == null ? void 0 : m[c.index]) ?? "left"
167
178
  }),
168
- c(r, u)
169
- );
170
- case "tableCell":
171
- return a(
172
- e ?? "td",
173
- t,
174
- c(r, u)
175
- );
179
+ u(r, l)
180
+ ) : t("tr", {
181
+ align: ((h = c.parent.align) == null ? void 0 : h[c.index]) ?? "left"
182
+ }, u(r, l));
183
+ case "tableCell": {
184
+ const k = ((g = (b = c.parent.position) == null ? void 0 : b.start) == null ? void 0 : g.offset) === 0;
185
+ return t(
186
+ e ?? (k ? "th" : "td"),
187
+ a,
188
+ u(r, l)
189
+ );
190
+ }
176
191
  case "text":
177
- return a(
178
- y,
192
+ return t(
193
+ j,
179
194
  r.value
180
195
  );
181
196
  case "thematicBreak":
182
- return a(
197
+ return t(
183
198
  e ?? "hr",
184
- t
199
+ a
185
200
  );
186
201
  case "yaml":
187
- return e ? a(
202
+ return e ? t(
188
203
  e,
189
- l(
204
+ i(
190
205
  {
191
206
  lang: "yaml",
192
207
  value: r.value
193
208
  },
194
- t
209
+ a
195
210
  )
196
- ) : a(
211
+ ) : t(
197
212
  "pre",
198
213
  {
199
- dataLang: "yaml"
214
+ "data-lang": "yaml"
200
215
  },
201
- a("code", r.value)
216
+ t("code", r.value)
202
217
  );
203
218
  default:
204
- return a(Comment);
219
+ return e ? t(
220
+ e,
221
+ a
222
+ ) : t(O, JSON.stringify(r));
205
223
  }
206
224
  }
207
- function c(r, u = {}) {
208
- var s;
209
- return ((s = r.children) == null ? void 0 : s.map((e, t) => b(e, u, t))) ?? [];
225
+ function u(r, l = {}) {
226
+ var c;
227
+ return ((c = r.children) == null ? void 0 : c.map((e, a) => v(e, l, {
228
+ index: a,
229
+ parent: r
230
+ }))) ?? [];
210
231
  }
211
232
  export {
212
- b as createVNode,
213
- p as toVNode
233
+ v as createVNode,
234
+ N as toVNode
214
235
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mdast-util-to-vnode",
3
3
  "type": "module",
4
- "version": "0.3.1",
4
+ "version": "0.4.0",
5
5
  "private": false,
6
6
  "packageManager": "pnpm@10.5.2+sha512.da9dc28cd3ff40d0592188235ab25d3202add8a207afbedc682220e4a0029ffbff4562102b9e6e46b4e3f9e8bd53e6d05de48544b0c57d4b0179e22c76d1199b",
7
7
  "description": "mdast utility to get the vue vnode",