@incremark/vue 0.0.1
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/LICENSE +22 -0
- package/README.md +120 -0
- package/dist/index.css +348 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +1342 -0
- package/dist/index.js.map +1 -0
- package/package.json +59 -0
- package/src/components/Incremark.vue +99 -0
- package/src/components/IncremarkBlockquote.vue +40 -0
- package/src/components/IncremarkCode.vue +394 -0
- package/src/components/IncremarkDefault.vue +42 -0
- package/src/components/IncremarkHeading.vue +33 -0
- package/src/components/IncremarkInline.vue +75 -0
- package/src/components/IncremarkList.vue +83 -0
- package/src/components/IncremarkMath.vue +150 -0
- package/src/components/IncremarkParagraph.vue +21 -0
- package/src/components/IncremarkRenderer.vue +38 -0
- package/src/components/IncremarkTable.vue +74 -0
- package/src/components/IncremarkThematicBreak.vue +16 -0
- package/src/components/index.ts +18 -0
- package/src/composables/index.ts +8 -0
- package/src/composables/useDevTools.ts +54 -0
- package/src/composables/useIncremark.ts +147 -0
- package/src/composables/useStreamRenderer.ts +55 -0
- package/src/index.ts +30 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,1342 @@
|
|
|
1
|
+
// src/composables/useIncremark.ts
|
|
2
|
+
import { ref, shallowRef, computed, markRaw } from "vue";
|
|
3
|
+
import {
|
|
4
|
+
createIncremarkParser
|
|
5
|
+
} from "@incremark/core";
|
|
6
|
+
function useIncremark(options = {}) {
|
|
7
|
+
const parser = createIncremarkParser(options);
|
|
8
|
+
const completedBlocks = shallowRef([]);
|
|
9
|
+
const pendingBlocks = shallowRef([]);
|
|
10
|
+
const isLoading = ref(false);
|
|
11
|
+
const markdown = ref("");
|
|
12
|
+
const ast = computed(() => ({
|
|
13
|
+
type: "root",
|
|
14
|
+
children: [
|
|
15
|
+
...completedBlocks.value.map((b) => b.node),
|
|
16
|
+
...pendingBlocks.value.map((b) => b.node)
|
|
17
|
+
]
|
|
18
|
+
}));
|
|
19
|
+
const blocks = computed(() => {
|
|
20
|
+
const result = [];
|
|
21
|
+
for (const block of completedBlocks.value) {
|
|
22
|
+
result.push({ ...block, stableId: block.id });
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < pendingBlocks.value.length; i++) {
|
|
25
|
+
result.push({
|
|
26
|
+
...pendingBlocks.value[i],
|
|
27
|
+
stableId: `pending-${i}`
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
});
|
|
32
|
+
function append(chunk) {
|
|
33
|
+
isLoading.value = true;
|
|
34
|
+
const update = parser.append(chunk);
|
|
35
|
+
markdown.value = parser.getBuffer();
|
|
36
|
+
if (update.completed.length > 0) {
|
|
37
|
+
completedBlocks.value = [
|
|
38
|
+
...completedBlocks.value,
|
|
39
|
+
...update.completed.map((b) => markRaw(b))
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
pendingBlocks.value = update.pending.map((b) => markRaw(b));
|
|
43
|
+
return update;
|
|
44
|
+
}
|
|
45
|
+
function finalize() {
|
|
46
|
+
const update = parser.finalize();
|
|
47
|
+
markdown.value = parser.getBuffer();
|
|
48
|
+
if (update.completed.length > 0) {
|
|
49
|
+
completedBlocks.value = [
|
|
50
|
+
...completedBlocks.value,
|
|
51
|
+
...update.completed.map((b) => markRaw(b))
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
pendingBlocks.value = [];
|
|
55
|
+
isLoading.value = false;
|
|
56
|
+
return update;
|
|
57
|
+
}
|
|
58
|
+
function abort() {
|
|
59
|
+
return finalize();
|
|
60
|
+
}
|
|
61
|
+
function reset() {
|
|
62
|
+
parser.reset();
|
|
63
|
+
completedBlocks.value = [];
|
|
64
|
+
pendingBlocks.value = [];
|
|
65
|
+
markdown.value = "";
|
|
66
|
+
isLoading.value = false;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
/** 已收集的完整 Markdown 字符串 */
|
|
70
|
+
markdown,
|
|
71
|
+
/** 已完成的块列表 */
|
|
72
|
+
completedBlocks,
|
|
73
|
+
/** 待处理的块列表 */
|
|
74
|
+
pendingBlocks,
|
|
75
|
+
/** 当前完整的 AST */
|
|
76
|
+
ast,
|
|
77
|
+
/** 所有块(完成 + 待处理),带稳定 ID */
|
|
78
|
+
blocks,
|
|
79
|
+
/** 是否正在加载 */
|
|
80
|
+
isLoading,
|
|
81
|
+
/** 追加内容 */
|
|
82
|
+
append,
|
|
83
|
+
/** 完成解析 */
|
|
84
|
+
finalize,
|
|
85
|
+
/** 强制中断 */
|
|
86
|
+
abort,
|
|
87
|
+
/** 重置解析器 */
|
|
88
|
+
reset,
|
|
89
|
+
/** 解析器实例 */
|
|
90
|
+
parser
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/composables/useStreamRenderer.ts
|
|
95
|
+
import { computed as computed2 } from "vue";
|
|
96
|
+
function useStreamRenderer(options) {
|
|
97
|
+
const { completedBlocks, pendingBlocks } = options;
|
|
98
|
+
const stableCompletedBlocks = computed2(
|
|
99
|
+
() => completedBlocks.value.map((block) => ({
|
|
100
|
+
...block,
|
|
101
|
+
stableId: block.id
|
|
102
|
+
}))
|
|
103
|
+
);
|
|
104
|
+
const stablePendingBlocks = computed2(
|
|
105
|
+
() => pendingBlocks.value.map((block, index) => ({
|
|
106
|
+
...block,
|
|
107
|
+
stableId: `pending-${index}`
|
|
108
|
+
}))
|
|
109
|
+
);
|
|
110
|
+
const allStableBlocks = computed2(() => [...stableCompletedBlocks.value, ...stablePendingBlocks.value]);
|
|
111
|
+
return {
|
|
112
|
+
stableCompletedBlocks,
|
|
113
|
+
stablePendingBlocks,
|
|
114
|
+
allStableBlocks
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// src/composables/useDevTools.ts
|
|
119
|
+
import { onMounted, onUnmounted } from "vue";
|
|
120
|
+
import { createDevTools } from "@incremark/devtools";
|
|
121
|
+
function useDevTools(incremark, options = {}) {
|
|
122
|
+
const devtools = createDevTools(options);
|
|
123
|
+
incremark.parser.setOnChange((state) => {
|
|
124
|
+
const blocks = [
|
|
125
|
+
...state.completedBlocks.map((b) => ({ ...b, stableId: b.id })),
|
|
126
|
+
...state.pendingBlocks.map((b, i) => ({ ...b, stableId: `pending-${i}` }))
|
|
127
|
+
];
|
|
128
|
+
devtools.update({
|
|
129
|
+
blocks,
|
|
130
|
+
completedBlocks: state.completedBlocks,
|
|
131
|
+
pendingBlocks: state.pendingBlocks,
|
|
132
|
+
markdown: state.markdown,
|
|
133
|
+
ast: state.ast,
|
|
134
|
+
isLoading: state.pendingBlocks.length > 0
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
onMounted(() => {
|
|
138
|
+
devtools.mount();
|
|
139
|
+
});
|
|
140
|
+
onUnmounted(() => {
|
|
141
|
+
devtools.unmount();
|
|
142
|
+
incremark.parser.setOnChange(void 0);
|
|
143
|
+
});
|
|
144
|
+
return devtools;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/Incremark.vue?type=script
|
|
148
|
+
import { defineComponent as _defineComponent11 } from "vue";
|
|
149
|
+
import { computed as computed7 } from "vue";
|
|
150
|
+
|
|
151
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkHeading.vue?type=script
|
|
152
|
+
import { defineComponent as _defineComponent3 } from "vue";
|
|
153
|
+
import { computed as computed4 } from "vue";
|
|
154
|
+
|
|
155
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkInline.vue?type=script
|
|
156
|
+
import { defineComponent as _defineComponent2 } from "vue";
|
|
157
|
+
|
|
158
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkMath.vue?type=script
|
|
159
|
+
import { defineComponent as _defineComponent } from "vue";
|
|
160
|
+
import { computed as computed3, ref as ref3, watch, shallowRef as shallowRef2, onUnmounted as onUnmounted2 } from "vue";
|
|
161
|
+
var IncremarkMath_default = /* @__PURE__ */ _defineComponent({
|
|
162
|
+
__name: "IncremarkMath",
|
|
163
|
+
props: {
|
|
164
|
+
node: { type: Object, required: true },
|
|
165
|
+
renderDelay: { type: Number, required: false, default: 300 }
|
|
166
|
+
},
|
|
167
|
+
setup(__props, { expose: __expose }) {
|
|
168
|
+
__expose();
|
|
169
|
+
const props = __props;
|
|
170
|
+
const renderedHtml = ref3("");
|
|
171
|
+
const renderError = ref3("");
|
|
172
|
+
const isLoading = ref3(false);
|
|
173
|
+
const katexRef = shallowRef2(null);
|
|
174
|
+
let renderTimer = null;
|
|
175
|
+
const isInline = computed3(() => props.node.type === "inlineMath");
|
|
176
|
+
const formula = computed3(() => props.node.value);
|
|
177
|
+
function scheduleRender() {
|
|
178
|
+
if (!formula.value) {
|
|
179
|
+
renderedHtml.value = "";
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (renderTimer) {
|
|
183
|
+
clearTimeout(renderTimer);
|
|
184
|
+
}
|
|
185
|
+
isLoading.value = true;
|
|
186
|
+
renderTimer = setTimeout(() => {
|
|
187
|
+
doRender();
|
|
188
|
+
}, props.renderDelay);
|
|
189
|
+
}
|
|
190
|
+
async function doRender() {
|
|
191
|
+
if (!formula.value) return;
|
|
192
|
+
try {
|
|
193
|
+
if (!katexRef.value) {
|
|
194
|
+
const katexModule = await import("katex");
|
|
195
|
+
katexRef.value = katexModule.default;
|
|
196
|
+
}
|
|
197
|
+
const katex = katexRef.value;
|
|
198
|
+
renderedHtml.value = katex.renderToString(formula.value, {
|
|
199
|
+
displayMode: !isInline.value,
|
|
200
|
+
throwOnError: false,
|
|
201
|
+
strict: false
|
|
202
|
+
});
|
|
203
|
+
renderError.value = "";
|
|
204
|
+
} catch (e) {
|
|
205
|
+
renderError.value = "";
|
|
206
|
+
renderedHtml.value = "";
|
|
207
|
+
} finally {
|
|
208
|
+
isLoading.value = false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
onUnmounted2(() => {
|
|
212
|
+
if (renderTimer) {
|
|
213
|
+
clearTimeout(renderTimer);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
watch(formula, scheduleRender, { immediate: true });
|
|
217
|
+
const __returned__ = { props, renderedHtml, renderError, isLoading, katexRef, get renderTimer() {
|
|
218
|
+
return renderTimer;
|
|
219
|
+
}, set renderTimer(v) {
|
|
220
|
+
renderTimer = v;
|
|
221
|
+
}, isInline, formula, scheduleRender, doRender };
|
|
222
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
223
|
+
return __returned__;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkMath.vue?type=template
|
|
228
|
+
import { createCommentVNode as _createCommentVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, Fragment as _Fragment } from "vue";
|
|
229
|
+
var _hoisted_1 = {
|
|
230
|
+
key: 0,
|
|
231
|
+
class: "incremark-math-inline"
|
|
232
|
+
};
|
|
233
|
+
var _hoisted_2 = ["innerHTML"];
|
|
234
|
+
var _hoisted_3 = { class: "math-source" };
|
|
235
|
+
var _hoisted_4 = { class: "incremark-math-block" };
|
|
236
|
+
var _hoisted_5 = ["innerHTML"];
|
|
237
|
+
var _hoisted_6 = { class: "math-source-block" };
|
|
238
|
+
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
239
|
+
return _openBlock(), _createElementBlock(
|
|
240
|
+
_Fragment,
|
|
241
|
+
null,
|
|
242
|
+
[
|
|
243
|
+
_createCommentVNode(" \u884C\u5185\u516C\u5F0F "),
|
|
244
|
+
$setup.isInline ? (_openBlock(), _createElementBlock("span", _hoisted_1, [
|
|
245
|
+
_createCommentVNode(" \u6E32\u67D3\u6210\u529F "),
|
|
246
|
+
$setup.renderedHtml && !$setup.isLoading ? (_openBlock(), _createElementBlock("span", {
|
|
247
|
+
key: 0,
|
|
248
|
+
innerHTML: $setup.renderedHtml
|
|
249
|
+
}, null, 8, _hoisted_2)) : (_openBlock(), _createElementBlock(
|
|
250
|
+
_Fragment,
|
|
251
|
+
{ key: 1 },
|
|
252
|
+
[
|
|
253
|
+
_createCommentVNode(" \u52A0\u8F7D\u4E2D\u6216\u672A\u6E32\u67D3\uFF1A\u663E\u793A\u6E90\u7801 "),
|
|
254
|
+
_createElementVNode(
|
|
255
|
+
"code",
|
|
256
|
+
_hoisted_3,
|
|
257
|
+
_toDisplayString($setup.formula),
|
|
258
|
+
1
|
|
259
|
+
/* TEXT */
|
|
260
|
+
)
|
|
261
|
+
],
|
|
262
|
+
2112
|
|
263
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
264
|
+
))
|
|
265
|
+
])) : (_openBlock(), _createElementBlock(
|
|
266
|
+
_Fragment,
|
|
267
|
+
{ key: 1 },
|
|
268
|
+
[
|
|
269
|
+
_createCommentVNode(" \u5757\u7EA7\u516C\u5F0F "),
|
|
270
|
+
_createElementVNode("div", _hoisted_4, [
|
|
271
|
+
_createCommentVNode(" \u6E32\u67D3\u6210\u529F "),
|
|
272
|
+
$setup.renderedHtml && !$setup.isLoading ? (_openBlock(), _createElementBlock("div", {
|
|
273
|
+
key: 0,
|
|
274
|
+
innerHTML: $setup.renderedHtml,
|
|
275
|
+
class: "math-rendered"
|
|
276
|
+
}, null, 8, _hoisted_5)) : (_openBlock(), _createElementBlock(
|
|
277
|
+
_Fragment,
|
|
278
|
+
{ key: 1 },
|
|
279
|
+
[
|
|
280
|
+
_createCommentVNode(" \u52A0\u8F7D\u4E2D\u6216\u672A\u6E32\u67D3\uFF1A\u663E\u793A\u6E90\u7801 "),
|
|
281
|
+
_createElementVNode("pre", _hoisted_6, [
|
|
282
|
+
_createElementVNode(
|
|
283
|
+
"code",
|
|
284
|
+
null,
|
|
285
|
+
_toDisplayString($setup.formula),
|
|
286
|
+
1
|
|
287
|
+
/* TEXT */
|
|
288
|
+
)
|
|
289
|
+
])
|
|
290
|
+
],
|
|
291
|
+
2112
|
|
292
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
293
|
+
))
|
|
294
|
+
])
|
|
295
|
+
],
|
|
296
|
+
2112
|
|
297
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
298
|
+
))
|
|
299
|
+
],
|
|
300
|
+
2112
|
|
301
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// src/components/IncremarkMath.vue
|
|
306
|
+
IncremarkMath_default.render = render;
|
|
307
|
+
IncremarkMath_default.__file = "src/components/IncremarkMath.vue";
|
|
308
|
+
IncremarkMath_default.__scopeId = "data-v-6146c361";
|
|
309
|
+
var IncremarkMath_default2 = IncremarkMath_default;
|
|
310
|
+
|
|
311
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkInline.vue?type=script
|
|
312
|
+
var IncremarkInline_default = /* @__PURE__ */ _defineComponent2({
|
|
313
|
+
__name: "IncremarkInline",
|
|
314
|
+
props: {
|
|
315
|
+
nodes: { type: Array, required: true }
|
|
316
|
+
},
|
|
317
|
+
setup(__props, { expose: __expose }) {
|
|
318
|
+
__expose();
|
|
319
|
+
function escapeHtml(str) {
|
|
320
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
321
|
+
}
|
|
322
|
+
const __returned__ = { escapeHtml, IncremarkMath: IncremarkMath_default2 };
|
|
323
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
324
|
+
return __returned__;
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkInline.vue?type=template
|
|
329
|
+
import { renderList as _renderList, Fragment as _Fragment2, openBlock as _openBlock2, createElementBlock as _createElementBlock2, createCommentVNode as _createCommentVNode2, toDisplayString as _toDisplayString2, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode2 } from "vue";
|
|
330
|
+
var _hoisted_12 = { class: "incremark-inline-code" };
|
|
331
|
+
var _hoisted_22 = ["href"];
|
|
332
|
+
var _hoisted_32 = ["src", "alt"];
|
|
333
|
+
function render2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
334
|
+
const _component_IncremarkInline = _resolveComponent("IncremarkInline", true);
|
|
335
|
+
return _openBlock2(true), _createElementBlock2(
|
|
336
|
+
_Fragment2,
|
|
337
|
+
null,
|
|
338
|
+
_renderList($props.nodes, (node, idx) => {
|
|
339
|
+
return _openBlock2(), _createElementBlock2(
|
|
340
|
+
_Fragment2,
|
|
341
|
+
{ key: idx },
|
|
342
|
+
[
|
|
343
|
+
_createCommentVNode2(" \u6587\u672C "),
|
|
344
|
+
node.type === "text" ? (_openBlock2(), _createElementBlock2(
|
|
345
|
+
_Fragment2,
|
|
346
|
+
{ key: 0 },
|
|
347
|
+
[
|
|
348
|
+
_createTextVNode(
|
|
349
|
+
_toDisplayString2(node.value),
|
|
350
|
+
1
|
|
351
|
+
/* TEXT */
|
|
352
|
+
)
|
|
353
|
+
],
|
|
354
|
+
64
|
|
355
|
+
/* STABLE_FRAGMENT */
|
|
356
|
+
)) : node.type === "inlineMath" ? (_openBlock2(), _createElementBlock2(
|
|
357
|
+
_Fragment2,
|
|
358
|
+
{ key: 1 },
|
|
359
|
+
[
|
|
360
|
+
_createCommentVNode2(" \u884C\u5185\u516C\u5F0F "),
|
|
361
|
+
_createVNode($setup["IncremarkMath"], {
|
|
362
|
+
node
|
|
363
|
+
}, null, 8, ["node"])
|
|
364
|
+
],
|
|
365
|
+
2112
|
|
366
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
367
|
+
)) : node.type === "strong" ? (_openBlock2(), _createElementBlock2(
|
|
368
|
+
_Fragment2,
|
|
369
|
+
{ key: 2 },
|
|
370
|
+
[
|
|
371
|
+
_createCommentVNode2(" \u52A0\u7C97 "),
|
|
372
|
+
_createElementVNode2("strong", null, [
|
|
373
|
+
_createVNode(_component_IncremarkInline, {
|
|
374
|
+
nodes: node.children
|
|
375
|
+
}, null, 8, ["nodes"])
|
|
376
|
+
])
|
|
377
|
+
],
|
|
378
|
+
2112
|
|
379
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
380
|
+
)) : node.type === "emphasis" ? (_openBlock2(), _createElementBlock2(
|
|
381
|
+
_Fragment2,
|
|
382
|
+
{ key: 3 },
|
|
383
|
+
[
|
|
384
|
+
_createCommentVNode2(" \u659C\u4F53 "),
|
|
385
|
+
_createElementVNode2("em", null, [
|
|
386
|
+
_createVNode(_component_IncremarkInline, {
|
|
387
|
+
nodes: node.children
|
|
388
|
+
}, null, 8, ["nodes"])
|
|
389
|
+
])
|
|
390
|
+
],
|
|
391
|
+
2112
|
|
392
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
393
|
+
)) : node.type === "inlineCode" ? (_openBlock2(), _createElementBlock2(
|
|
394
|
+
_Fragment2,
|
|
395
|
+
{ key: 4 },
|
|
396
|
+
[
|
|
397
|
+
_createCommentVNode2(" \u884C\u5185\u4EE3\u7801 "),
|
|
398
|
+
_createElementVNode2(
|
|
399
|
+
"code",
|
|
400
|
+
_hoisted_12,
|
|
401
|
+
_toDisplayString2(node.value),
|
|
402
|
+
1
|
|
403
|
+
/* TEXT */
|
|
404
|
+
)
|
|
405
|
+
],
|
|
406
|
+
2112
|
|
407
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
408
|
+
)) : node.type === "link" ? (_openBlock2(), _createElementBlock2(
|
|
409
|
+
_Fragment2,
|
|
410
|
+
{ key: 5 },
|
|
411
|
+
[
|
|
412
|
+
_createCommentVNode2(" \u94FE\u63A5 "),
|
|
413
|
+
_createElementVNode2("a", {
|
|
414
|
+
href: node.url,
|
|
415
|
+
target: "_blank",
|
|
416
|
+
rel: "noopener"
|
|
417
|
+
}, [
|
|
418
|
+
_createVNode(_component_IncremarkInline, {
|
|
419
|
+
nodes: node.children
|
|
420
|
+
}, null, 8, ["nodes"])
|
|
421
|
+
], 8, _hoisted_22)
|
|
422
|
+
],
|
|
423
|
+
2112
|
|
424
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
425
|
+
)) : node.type === "image" ? (_openBlock2(), _createElementBlock2(
|
|
426
|
+
_Fragment2,
|
|
427
|
+
{ key: 6 },
|
|
428
|
+
[
|
|
429
|
+
_createCommentVNode2(" \u56FE\u7247 "),
|
|
430
|
+
_createElementVNode2("img", {
|
|
431
|
+
src: node.url,
|
|
432
|
+
alt: node.alt || "",
|
|
433
|
+
loading: "lazy"
|
|
434
|
+
}, null, 8, _hoisted_32)
|
|
435
|
+
],
|
|
436
|
+
2112
|
|
437
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
438
|
+
)) : node.type === "break" ? (_openBlock2(), _createElementBlock2(
|
|
439
|
+
_Fragment2,
|
|
440
|
+
{ key: 7 },
|
|
441
|
+
[
|
|
442
|
+
_createCommentVNode2(" \u6362\u884C "),
|
|
443
|
+
_cache[0] || (_cache[0] = _createElementVNode2(
|
|
444
|
+
"br",
|
|
445
|
+
null,
|
|
446
|
+
null,
|
|
447
|
+
-1
|
|
448
|
+
/* CACHED */
|
|
449
|
+
))
|
|
450
|
+
],
|
|
451
|
+
2112
|
|
452
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
453
|
+
)) : node.type === "delete" ? (_openBlock2(), _createElementBlock2(
|
|
454
|
+
_Fragment2,
|
|
455
|
+
{ key: 8 },
|
|
456
|
+
[
|
|
457
|
+
_createCommentVNode2(" \u5220\u9664\u7EBF "),
|
|
458
|
+
_createElementVNode2("del", null, [
|
|
459
|
+
_createVNode(_component_IncremarkInline, {
|
|
460
|
+
nodes: node.children
|
|
461
|
+
}, null, 8, ["nodes"])
|
|
462
|
+
])
|
|
463
|
+
],
|
|
464
|
+
2112
|
|
465
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
466
|
+
)) : _createCommentVNode2("v-if", true)
|
|
467
|
+
],
|
|
468
|
+
64
|
|
469
|
+
/* STABLE_FRAGMENT */
|
|
470
|
+
);
|
|
471
|
+
}),
|
|
472
|
+
128
|
|
473
|
+
/* KEYED_FRAGMENT */
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// src/components/IncremarkInline.vue
|
|
478
|
+
IncremarkInline_default.render = render2;
|
|
479
|
+
IncremarkInline_default.__file = "src/components/IncremarkInline.vue";
|
|
480
|
+
var IncremarkInline_default2 = IncremarkInline_default;
|
|
481
|
+
|
|
482
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkHeading.vue?type=script
|
|
483
|
+
var IncremarkHeading_default = /* @__PURE__ */ _defineComponent3({
|
|
484
|
+
__name: "IncremarkHeading",
|
|
485
|
+
props: {
|
|
486
|
+
node: { type: null, required: true }
|
|
487
|
+
},
|
|
488
|
+
setup(__props, { expose: __expose }) {
|
|
489
|
+
__expose();
|
|
490
|
+
const props = __props;
|
|
491
|
+
const tag = computed4(() => `h${props.node.depth}`);
|
|
492
|
+
const __returned__ = { props, tag, IncremarkInline: IncremarkInline_default2 };
|
|
493
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
494
|
+
return __returned__;
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkHeading.vue?type=template
|
|
499
|
+
import { createVNode as _createVNode2, resolveDynamicComponent as _resolveDynamicComponent, withCtx as _withCtx, openBlock as _openBlock3, createBlock as _createBlock } from "vue";
|
|
500
|
+
function render3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
501
|
+
return _openBlock3(), _createBlock(_resolveDynamicComponent($setup.tag), { class: "incremark-heading" }, {
|
|
502
|
+
default: _withCtx(() => [
|
|
503
|
+
_createVNode2($setup["IncremarkInline"], {
|
|
504
|
+
nodes: $props.node.children
|
|
505
|
+
}, null, 8, ["nodes"])
|
|
506
|
+
]),
|
|
507
|
+
_: 1
|
|
508
|
+
/* STABLE */
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// src/components/IncremarkHeading.vue
|
|
513
|
+
IncremarkHeading_default.render = render3;
|
|
514
|
+
IncremarkHeading_default.__file = "src/components/IncremarkHeading.vue";
|
|
515
|
+
IncremarkHeading_default.__scopeId = "data-v-56c8779f";
|
|
516
|
+
var IncremarkHeading_default2 = IncremarkHeading_default;
|
|
517
|
+
|
|
518
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkParagraph.vue?type=script
|
|
519
|
+
import { defineComponent as _defineComponent4 } from "vue";
|
|
520
|
+
var IncremarkParagraph_default = /* @__PURE__ */ _defineComponent4({
|
|
521
|
+
__name: "IncremarkParagraph",
|
|
522
|
+
props: {
|
|
523
|
+
node: { type: null, required: true }
|
|
524
|
+
},
|
|
525
|
+
setup(__props, { expose: __expose }) {
|
|
526
|
+
__expose();
|
|
527
|
+
const __returned__ = { IncremarkInline: IncremarkInline_default2 };
|
|
528
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
529
|
+
return __returned__;
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkParagraph.vue?type=template
|
|
534
|
+
import { createVNode as _createVNode3, openBlock as _openBlock4, createElementBlock as _createElementBlock3 } from "vue";
|
|
535
|
+
var _hoisted_13 = { class: "incremark-paragraph" };
|
|
536
|
+
function render4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
537
|
+
return _openBlock4(), _createElementBlock3("p", _hoisted_13, [
|
|
538
|
+
_createVNode3($setup["IncremarkInline"], {
|
|
539
|
+
nodes: $props.node.children
|
|
540
|
+
}, null, 8, ["nodes"])
|
|
541
|
+
]);
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
// src/components/IncremarkParagraph.vue
|
|
545
|
+
IncremarkParagraph_default.render = render4;
|
|
546
|
+
IncremarkParagraph_default.__file = "src/components/IncremarkParagraph.vue";
|
|
547
|
+
IncremarkParagraph_default.__scopeId = "data-v-6fa83031";
|
|
548
|
+
var IncremarkParagraph_default2 = IncremarkParagraph_default;
|
|
549
|
+
|
|
550
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkCode.vue?type=script
|
|
551
|
+
import { defineComponent as _defineComponent5 } from "vue";
|
|
552
|
+
import { computed as computed5, ref as ref4, watch as watch2, shallowRef as shallowRef3, onUnmounted as onUnmounted3 } from "vue";
|
|
553
|
+
var IncremarkCode_default = /* @__PURE__ */ _defineComponent5({
|
|
554
|
+
__name: "IncremarkCode",
|
|
555
|
+
props: {
|
|
556
|
+
node: { type: null, required: true },
|
|
557
|
+
theme: { type: String, required: false, default: "github-dark" },
|
|
558
|
+
disableHighlight: { type: Boolean, required: false, default: false },
|
|
559
|
+
mermaidDelay: { type: Number, required: false, default: 500 }
|
|
560
|
+
},
|
|
561
|
+
setup(__props, { expose: __expose }) {
|
|
562
|
+
__expose();
|
|
563
|
+
const props = __props;
|
|
564
|
+
const copied = ref4(false);
|
|
565
|
+
const highlightedHtml = ref4("");
|
|
566
|
+
const isHighlighting = ref4(false);
|
|
567
|
+
const highlightError = ref4(false);
|
|
568
|
+
const mermaidSvg = ref4("");
|
|
569
|
+
const mermaidError = ref4("");
|
|
570
|
+
const mermaidLoading = ref4(false);
|
|
571
|
+
const mermaidRef = shallowRef3(null);
|
|
572
|
+
let mermaidTimer = null;
|
|
573
|
+
const mermaidViewMode = ref4("preview");
|
|
574
|
+
function toggleMermaidView() {
|
|
575
|
+
mermaidViewMode.value = mermaidViewMode.value === "preview" ? "source" : "preview";
|
|
576
|
+
}
|
|
577
|
+
const language = computed5(() => props.node.lang || "text");
|
|
578
|
+
const code = computed5(() => props.node.value);
|
|
579
|
+
const isMermaid = computed5(() => language.value === "mermaid");
|
|
580
|
+
const highlighterRef = shallowRef3(null);
|
|
581
|
+
const loadedLanguages = /* @__PURE__ */ new Set();
|
|
582
|
+
const loadedThemes = /* @__PURE__ */ new Set();
|
|
583
|
+
function scheduleRenderMermaid() {
|
|
584
|
+
if (!isMermaid.value || !code.value) return;
|
|
585
|
+
if (mermaidTimer) {
|
|
586
|
+
clearTimeout(mermaidTimer);
|
|
587
|
+
}
|
|
588
|
+
mermaidLoading.value = true;
|
|
589
|
+
mermaidTimer = setTimeout(() => {
|
|
590
|
+
doRenderMermaid();
|
|
591
|
+
}, props.mermaidDelay);
|
|
592
|
+
}
|
|
593
|
+
async function doRenderMermaid() {
|
|
594
|
+
if (!code.value) return;
|
|
595
|
+
mermaidError.value = "";
|
|
596
|
+
try {
|
|
597
|
+
if (!mermaidRef.value) {
|
|
598
|
+
const mermaidModule = await import("mermaid");
|
|
599
|
+
mermaidRef.value = mermaidModule.default;
|
|
600
|
+
mermaidRef.value.initialize({
|
|
601
|
+
startOnLoad: false,
|
|
602
|
+
theme: "dark",
|
|
603
|
+
securityLevel: "loose"
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
const mermaid = mermaidRef.value;
|
|
607
|
+
const id = `mermaid-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
608
|
+
const { svg } = await mermaid.render(id, code.value);
|
|
609
|
+
mermaidSvg.value = svg;
|
|
610
|
+
} catch (e) {
|
|
611
|
+
mermaidError.value = "";
|
|
612
|
+
mermaidSvg.value = "";
|
|
613
|
+
} finally {
|
|
614
|
+
mermaidLoading.value = false;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
onUnmounted3(() => {
|
|
618
|
+
if (mermaidTimer) {
|
|
619
|
+
clearTimeout(mermaidTimer);
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
async function highlight() {
|
|
623
|
+
if (isMermaid.value) {
|
|
624
|
+
scheduleRenderMermaid();
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
627
|
+
if (!code.value || props.disableHighlight) {
|
|
628
|
+
highlightedHtml.value = "";
|
|
629
|
+
return;
|
|
630
|
+
}
|
|
631
|
+
isHighlighting.value = true;
|
|
632
|
+
highlightError.value = false;
|
|
633
|
+
try {
|
|
634
|
+
if (!highlighterRef.value) {
|
|
635
|
+
const { createHighlighter } = await import("shiki");
|
|
636
|
+
highlighterRef.value = await createHighlighter({
|
|
637
|
+
themes: [props.theme],
|
|
638
|
+
langs: []
|
|
639
|
+
});
|
|
640
|
+
loadedThemes.add(props.theme);
|
|
641
|
+
}
|
|
642
|
+
const highlighter = highlighterRef.value;
|
|
643
|
+
const lang = language.value;
|
|
644
|
+
if (!loadedLanguages.has(lang) && lang !== "text") {
|
|
645
|
+
try {
|
|
646
|
+
await highlighter.loadLanguage(lang);
|
|
647
|
+
loadedLanguages.add(lang);
|
|
648
|
+
} catch {
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
if (!loadedThemes.has(props.theme)) {
|
|
652
|
+
try {
|
|
653
|
+
await highlighter.loadTheme(props.theme);
|
|
654
|
+
loadedThemes.add(props.theme);
|
|
655
|
+
} catch {
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
const html = highlighter.codeToHtml(code.value, {
|
|
659
|
+
lang: loadedLanguages.has(lang) ? lang : "text",
|
|
660
|
+
theme: loadedThemes.has(props.theme) ? props.theme : "github-dark"
|
|
661
|
+
});
|
|
662
|
+
highlightedHtml.value = html;
|
|
663
|
+
} catch (e) {
|
|
664
|
+
highlightError.value = true;
|
|
665
|
+
highlightedHtml.value = "";
|
|
666
|
+
} finally {
|
|
667
|
+
isHighlighting.value = false;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
watch2([code, () => props.theme, isMermaid], highlight, { immediate: true });
|
|
671
|
+
async function copyCode() {
|
|
672
|
+
try {
|
|
673
|
+
await navigator.clipboard.writeText(code.value);
|
|
674
|
+
copied.value = true;
|
|
675
|
+
setTimeout(() => {
|
|
676
|
+
copied.value = false;
|
|
677
|
+
}, 2e3);
|
|
678
|
+
} catch {
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
const __returned__ = { props, copied, highlightedHtml, isHighlighting, highlightError, mermaidSvg, mermaidError, mermaidLoading, mermaidRef, get mermaidTimer() {
|
|
682
|
+
return mermaidTimer;
|
|
683
|
+
}, set mermaidTimer(v) {
|
|
684
|
+
mermaidTimer = v;
|
|
685
|
+
}, mermaidViewMode, toggleMermaidView, language, code, isMermaid, highlighterRef, loadedLanguages, loadedThemes, scheduleRenderMermaid, doRenderMermaid, highlight, copyCode };
|
|
686
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
687
|
+
return __returned__;
|
|
688
|
+
}
|
|
689
|
+
});
|
|
690
|
+
|
|
691
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkCode.vue?type=template
|
|
692
|
+
import { createCommentVNode as _createCommentVNode3, createElementVNode as _createElementVNode3, toDisplayString as _toDisplayString3, openBlock as _openBlock5, createElementBlock as _createElementBlock4, Fragment as _Fragment3 } from "vue";
|
|
693
|
+
var _hoisted_14 = {
|
|
694
|
+
key: 0,
|
|
695
|
+
class: "incremark-mermaid"
|
|
696
|
+
};
|
|
697
|
+
var _hoisted_23 = { class: "mermaid-header" };
|
|
698
|
+
var _hoisted_33 = { class: "mermaid-actions" };
|
|
699
|
+
var _hoisted_42 = ["disabled"];
|
|
700
|
+
var _hoisted_52 = { class: "mermaid-content" };
|
|
701
|
+
var _hoisted_62 = {
|
|
702
|
+
key: 0,
|
|
703
|
+
class: "mermaid-loading"
|
|
704
|
+
};
|
|
705
|
+
var _hoisted_7 = { class: "mermaid-source-code" };
|
|
706
|
+
var _hoisted_8 = { class: "mermaid-source-code" };
|
|
707
|
+
var _hoisted_9 = ["innerHTML"];
|
|
708
|
+
var _hoisted_10 = { class: "mermaid-source-code" };
|
|
709
|
+
var _hoisted_11 = { class: "incremark-code" };
|
|
710
|
+
var _hoisted_122 = { class: "code-header" };
|
|
711
|
+
var _hoisted_132 = { class: "language" };
|
|
712
|
+
var _hoisted_142 = { class: "code-content" };
|
|
713
|
+
var _hoisted_15 = {
|
|
714
|
+
key: 0,
|
|
715
|
+
class: "code-loading"
|
|
716
|
+
};
|
|
717
|
+
var _hoisted_16 = ["innerHTML"];
|
|
718
|
+
var _hoisted_17 = { class: "code-fallback" };
|
|
719
|
+
function render5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
720
|
+
return _openBlock5(), _createElementBlock4(
|
|
721
|
+
_Fragment3,
|
|
722
|
+
null,
|
|
723
|
+
[
|
|
724
|
+
_createCommentVNode3(" Mermaid \u56FE\u8868 "),
|
|
725
|
+
$setup.isMermaid ? (_openBlock5(), _createElementBlock4("div", _hoisted_14, [
|
|
726
|
+
_createElementVNode3("div", _hoisted_23, [
|
|
727
|
+
_cache[0] || (_cache[0] = _createElementVNode3(
|
|
728
|
+
"span",
|
|
729
|
+
{ class: "language" },
|
|
730
|
+
"MERMAID",
|
|
731
|
+
-1
|
|
732
|
+
/* CACHED */
|
|
733
|
+
)),
|
|
734
|
+
_createElementVNode3("div", _hoisted_33, [
|
|
735
|
+
_createElementVNode3("button", {
|
|
736
|
+
class: "view-toggle",
|
|
737
|
+
onClick: $setup.toggleMermaidView,
|
|
738
|
+
type: "button",
|
|
739
|
+
disabled: !$setup.mermaidSvg
|
|
740
|
+
}, _toDisplayString3($setup.mermaidViewMode === "preview" ? "\u6E90\u7801" : "\u9884\u89C8"), 9, _hoisted_42),
|
|
741
|
+
_createElementVNode3(
|
|
742
|
+
"button",
|
|
743
|
+
{
|
|
744
|
+
class: "copy-btn",
|
|
745
|
+
onClick: $setup.copyCode,
|
|
746
|
+
type: "button"
|
|
747
|
+
},
|
|
748
|
+
_toDisplayString3($setup.copied ? "\u2713 \u5DF2\u590D\u5236" : "\u590D\u5236"),
|
|
749
|
+
1
|
|
750
|
+
/* TEXT */
|
|
751
|
+
)
|
|
752
|
+
])
|
|
753
|
+
]),
|
|
754
|
+
_createElementVNode3("div", _hoisted_52, [
|
|
755
|
+
_createCommentVNode3(" \u52A0\u8F7D\u4E2D "),
|
|
756
|
+
$setup.mermaidLoading && !$setup.mermaidSvg ? (_openBlock5(), _createElementBlock4("div", _hoisted_62, [
|
|
757
|
+
_createElementVNode3(
|
|
758
|
+
"pre",
|
|
759
|
+
_hoisted_7,
|
|
760
|
+
_toDisplayString3($setup.code),
|
|
761
|
+
1
|
|
762
|
+
/* TEXT */
|
|
763
|
+
)
|
|
764
|
+
])) : $setup.mermaidViewMode === "source" ? (_openBlock5(), _createElementBlock4(
|
|
765
|
+
_Fragment3,
|
|
766
|
+
{ key: 1 },
|
|
767
|
+
[
|
|
768
|
+
_createCommentVNode3(" \u6E90\u7801\u6A21\u5F0F "),
|
|
769
|
+
_createElementVNode3(
|
|
770
|
+
"pre",
|
|
771
|
+
_hoisted_8,
|
|
772
|
+
_toDisplayString3($setup.code),
|
|
773
|
+
1
|
|
774
|
+
/* TEXT */
|
|
775
|
+
)
|
|
776
|
+
],
|
|
777
|
+
2112
|
|
778
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
779
|
+
)) : $setup.mermaidSvg ? (_openBlock5(), _createElementBlock4(
|
|
780
|
+
_Fragment3,
|
|
781
|
+
{ key: 2 },
|
|
782
|
+
[
|
|
783
|
+
_createCommentVNode3(" \u9884\u89C8\u6A21\u5F0F "),
|
|
784
|
+
_createElementVNode3("div", {
|
|
785
|
+
innerHTML: $setup.mermaidSvg,
|
|
786
|
+
class: "mermaid-svg"
|
|
787
|
+
}, null, 8, _hoisted_9)
|
|
788
|
+
],
|
|
789
|
+
2112
|
|
790
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
791
|
+
)) : (_openBlock5(), _createElementBlock4(
|
|
792
|
+
_Fragment3,
|
|
793
|
+
{ key: 3 },
|
|
794
|
+
[
|
|
795
|
+
_createCommentVNode3(" \u65E0\u6CD5\u6E32\u67D3\u65F6\u663E\u793A\u6E90\u7801 "),
|
|
796
|
+
_createElementVNode3(
|
|
797
|
+
"pre",
|
|
798
|
+
_hoisted_10,
|
|
799
|
+
_toDisplayString3($setup.code),
|
|
800
|
+
1
|
|
801
|
+
/* TEXT */
|
|
802
|
+
)
|
|
803
|
+
],
|
|
804
|
+
2112
|
|
805
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
806
|
+
))
|
|
807
|
+
])
|
|
808
|
+
])) : (_openBlock5(), _createElementBlock4(
|
|
809
|
+
_Fragment3,
|
|
810
|
+
{ key: 1 },
|
|
811
|
+
[
|
|
812
|
+
_createCommentVNode3(" \u666E\u901A\u4EE3\u7801\u5757 "),
|
|
813
|
+
_createElementVNode3("div", _hoisted_11, [
|
|
814
|
+
_createElementVNode3("div", _hoisted_122, [
|
|
815
|
+
_createElementVNode3(
|
|
816
|
+
"span",
|
|
817
|
+
_hoisted_132,
|
|
818
|
+
_toDisplayString3($setup.language),
|
|
819
|
+
1
|
|
820
|
+
/* TEXT */
|
|
821
|
+
),
|
|
822
|
+
_createElementVNode3(
|
|
823
|
+
"button",
|
|
824
|
+
{
|
|
825
|
+
class: "copy-btn",
|
|
826
|
+
onClick: $setup.copyCode,
|
|
827
|
+
type: "button"
|
|
828
|
+
},
|
|
829
|
+
_toDisplayString3($setup.copied ? "\u2713 \u5DF2\u590D\u5236" : "\u590D\u5236"),
|
|
830
|
+
1
|
|
831
|
+
/* TEXT */
|
|
832
|
+
)
|
|
833
|
+
]),
|
|
834
|
+
_createElementVNode3("div", _hoisted_142, [
|
|
835
|
+
_createCommentVNode3(" \u6B63\u5728\u52A0\u8F7D\u9AD8\u4EAE "),
|
|
836
|
+
$setup.isHighlighting && !$setup.highlightedHtml ? (_openBlock5(), _createElementBlock4("div", _hoisted_15, [
|
|
837
|
+
_createElementVNode3("pre", null, [
|
|
838
|
+
_createElementVNode3(
|
|
839
|
+
"code",
|
|
840
|
+
null,
|
|
841
|
+
_toDisplayString3($setup.code),
|
|
842
|
+
1
|
|
843
|
+
/* TEXT */
|
|
844
|
+
)
|
|
845
|
+
])
|
|
846
|
+
])) : $setup.highlightedHtml ? (_openBlock5(), _createElementBlock4(
|
|
847
|
+
_Fragment3,
|
|
848
|
+
{ key: 1 },
|
|
849
|
+
[
|
|
850
|
+
_createCommentVNode3(" \u9AD8\u4EAE\u540E\u7684\u4EE3\u7801 "),
|
|
851
|
+
_createElementVNode3("div", {
|
|
852
|
+
innerHTML: $setup.highlightedHtml,
|
|
853
|
+
class: "shiki-wrapper"
|
|
854
|
+
}, null, 8, _hoisted_16)
|
|
855
|
+
],
|
|
856
|
+
2112
|
|
857
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
858
|
+
)) : (_openBlock5(), _createElementBlock4(
|
|
859
|
+
_Fragment3,
|
|
860
|
+
{ key: 2 },
|
|
861
|
+
[
|
|
862
|
+
_createCommentVNode3(" \u56DE\u9000\uFF1A\u65E0\u9AD8\u4EAE "),
|
|
863
|
+
_createElementVNode3("pre", _hoisted_17, [
|
|
864
|
+
_createElementVNode3(
|
|
865
|
+
"code",
|
|
866
|
+
null,
|
|
867
|
+
_toDisplayString3($setup.code),
|
|
868
|
+
1
|
|
869
|
+
/* TEXT */
|
|
870
|
+
)
|
|
871
|
+
])
|
|
872
|
+
],
|
|
873
|
+
2112
|
|
874
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
875
|
+
))
|
|
876
|
+
])
|
|
877
|
+
])
|
|
878
|
+
],
|
|
879
|
+
2112
|
|
880
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
881
|
+
))
|
|
882
|
+
],
|
|
883
|
+
2112
|
|
884
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
885
|
+
);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
// src/components/IncremarkCode.vue
|
|
889
|
+
IncremarkCode_default.render = render5;
|
|
890
|
+
IncremarkCode_default.__file = "src/components/IncremarkCode.vue";
|
|
891
|
+
IncremarkCode_default.__scopeId = "data-v-c48b1022";
|
|
892
|
+
var IncremarkCode_default2 = IncremarkCode_default;
|
|
893
|
+
|
|
894
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkList.vue?type=script
|
|
895
|
+
import { defineComponent as _defineComponent6 } from "vue";
|
|
896
|
+
import { computed as computed6 } from "vue";
|
|
897
|
+
var IncremarkList_default = /* @__PURE__ */ _defineComponent6({
|
|
898
|
+
__name: "IncremarkList",
|
|
899
|
+
props: {
|
|
900
|
+
node: { type: null, required: true }
|
|
901
|
+
},
|
|
902
|
+
setup(__props, { expose: __expose }) {
|
|
903
|
+
__expose();
|
|
904
|
+
const props = __props;
|
|
905
|
+
const tag = computed6(() => props.node.ordered ? "ol" : "ul");
|
|
906
|
+
function getItemContent(item) {
|
|
907
|
+
const firstChild = item.children[0];
|
|
908
|
+
if (firstChild?.type === "paragraph") {
|
|
909
|
+
return firstChild.children;
|
|
910
|
+
}
|
|
911
|
+
return [];
|
|
912
|
+
}
|
|
913
|
+
const __returned__ = { props, tag, getItemContent, IncremarkInline: IncremarkInline_default2 };
|
|
914
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
915
|
+
return __returned__;
|
|
916
|
+
}
|
|
917
|
+
});
|
|
918
|
+
|
|
919
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkList.vue?type=template
|
|
920
|
+
import { renderList as _renderList2, Fragment as _Fragment4, openBlock as _openBlock6, createElementBlock as _createElementBlock5, createElementVNode as _createElementVNode4, createVNode as _createVNode4, createBlock as _createBlock2, normalizeClass as _normalizeClass, resolveDynamicComponent as _resolveDynamicComponent2, withCtx as _withCtx2 } from "vue";
|
|
921
|
+
var _hoisted_18 = {
|
|
922
|
+
key: 0,
|
|
923
|
+
class: "task-label"
|
|
924
|
+
};
|
|
925
|
+
var _hoisted_24 = ["checked"];
|
|
926
|
+
var _hoisted_34 = { class: "task-content" };
|
|
927
|
+
function render6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
928
|
+
return _openBlock6(), _createBlock2(_resolveDynamicComponent2($setup.tag), {
|
|
929
|
+
class: _normalizeClass(["incremark-list", { "task-list": $props.node.children.some((item) => item.checked !== null && item.checked !== void 0) }])
|
|
930
|
+
}, {
|
|
931
|
+
default: _withCtx2(() => [
|
|
932
|
+
(_openBlock6(true), _createElementBlock5(
|
|
933
|
+
_Fragment4,
|
|
934
|
+
null,
|
|
935
|
+
_renderList2($props.node.children, (item, index) => {
|
|
936
|
+
return _openBlock6(), _createElementBlock5(
|
|
937
|
+
"li",
|
|
938
|
+
{
|
|
939
|
+
key: index,
|
|
940
|
+
class: _normalizeClass(["incremark-list-item", { "task-item": item.checked !== null && item.checked !== void 0 }])
|
|
941
|
+
},
|
|
942
|
+
[
|
|
943
|
+
item.checked !== null && item.checked !== void 0 ? (_openBlock6(), _createElementBlock5("label", _hoisted_18, [
|
|
944
|
+
_createElementVNode4("input", {
|
|
945
|
+
type: "checkbox",
|
|
946
|
+
checked: item.checked,
|
|
947
|
+
disabled: "",
|
|
948
|
+
class: "checkbox"
|
|
949
|
+
}, null, 8, _hoisted_24),
|
|
950
|
+
_createElementVNode4("span", _hoisted_34, [
|
|
951
|
+
_createVNode4($setup["IncremarkInline"], {
|
|
952
|
+
nodes: $setup.getItemContent(item)
|
|
953
|
+
}, null, 8, ["nodes"])
|
|
954
|
+
])
|
|
955
|
+
])) : (_openBlock6(), _createBlock2($setup["IncremarkInline"], {
|
|
956
|
+
key: 1,
|
|
957
|
+
nodes: $setup.getItemContent(item)
|
|
958
|
+
}, null, 8, ["nodes"]))
|
|
959
|
+
],
|
|
960
|
+
2
|
|
961
|
+
/* CLASS */
|
|
962
|
+
);
|
|
963
|
+
}),
|
|
964
|
+
128
|
|
965
|
+
/* KEYED_FRAGMENT */
|
|
966
|
+
))
|
|
967
|
+
]),
|
|
968
|
+
_: 1
|
|
969
|
+
/* STABLE */
|
|
970
|
+
}, 8, ["class"]);
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
// src/components/IncremarkList.vue
|
|
974
|
+
IncremarkList_default.render = render6;
|
|
975
|
+
IncremarkList_default.__file = "src/components/IncremarkList.vue";
|
|
976
|
+
IncremarkList_default.__scopeId = "data-v-0778ccea";
|
|
977
|
+
var IncremarkList_default2 = IncremarkList_default;
|
|
978
|
+
|
|
979
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkTable.vue?type=script
|
|
980
|
+
import { defineComponent as _defineComponent7 } from "vue";
|
|
981
|
+
var IncremarkTable_default = /* @__PURE__ */ _defineComponent7({
|
|
982
|
+
__name: "IncremarkTable",
|
|
983
|
+
props: {
|
|
984
|
+
node: { type: null, required: true }
|
|
985
|
+
},
|
|
986
|
+
setup(__props, { expose: __expose }) {
|
|
987
|
+
__expose();
|
|
988
|
+
function getCellContent(cell) {
|
|
989
|
+
return cell.children;
|
|
990
|
+
}
|
|
991
|
+
const __returned__ = { getCellContent, IncremarkInline: IncremarkInline_default2 };
|
|
992
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
993
|
+
return __returned__;
|
|
994
|
+
}
|
|
995
|
+
});
|
|
996
|
+
|
|
997
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkTable.vue?type=template
|
|
998
|
+
import { renderList as _renderList3, Fragment as _Fragment5, openBlock as _openBlock7, createElementBlock as _createElementBlock6, createVNode as _createVNode5, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode5, createElementVNode as _createElementVNode5 } from "vue";
|
|
999
|
+
var _hoisted_19 = { class: "incremark-table-wrapper" };
|
|
1000
|
+
var _hoisted_25 = { class: "incremark-table" };
|
|
1001
|
+
var _hoisted_35 = { key: 0 };
|
|
1002
|
+
function render7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1003
|
+
return _openBlock7(), _createElementBlock6("div", _hoisted_19, [
|
|
1004
|
+
_createElementVNode5("table", _hoisted_25, [
|
|
1005
|
+
_createElementVNode5("thead", null, [
|
|
1006
|
+
$props.node.children[0] ? (_openBlock7(), _createElementBlock6("tr", _hoisted_35, [
|
|
1007
|
+
(_openBlock7(true), _createElementBlock6(
|
|
1008
|
+
_Fragment5,
|
|
1009
|
+
null,
|
|
1010
|
+
_renderList3($props.node.children[0].children, (cell, cellIndex) => {
|
|
1011
|
+
return _openBlock7(), _createElementBlock6(
|
|
1012
|
+
"th",
|
|
1013
|
+
{
|
|
1014
|
+
key: cellIndex,
|
|
1015
|
+
style: _normalizeStyle({ textAlign: $props.node.align?.[cellIndex] || "left" })
|
|
1016
|
+
},
|
|
1017
|
+
[
|
|
1018
|
+
_createVNode5($setup["IncremarkInline"], {
|
|
1019
|
+
nodes: $setup.getCellContent(cell)
|
|
1020
|
+
}, null, 8, ["nodes"])
|
|
1021
|
+
],
|
|
1022
|
+
4
|
|
1023
|
+
/* STYLE */
|
|
1024
|
+
);
|
|
1025
|
+
}),
|
|
1026
|
+
128
|
|
1027
|
+
/* KEYED_FRAGMENT */
|
|
1028
|
+
))
|
|
1029
|
+
])) : _createCommentVNode5("v-if", true)
|
|
1030
|
+
]),
|
|
1031
|
+
_createElementVNode5("tbody", null, [
|
|
1032
|
+
(_openBlock7(true), _createElementBlock6(
|
|
1033
|
+
_Fragment5,
|
|
1034
|
+
null,
|
|
1035
|
+
_renderList3($props.node.children.slice(1), (row, rowIndex) => {
|
|
1036
|
+
return _openBlock7(), _createElementBlock6("tr", { key: rowIndex }, [
|
|
1037
|
+
(_openBlock7(true), _createElementBlock6(
|
|
1038
|
+
_Fragment5,
|
|
1039
|
+
null,
|
|
1040
|
+
_renderList3(row.children, (cell, cellIndex) => {
|
|
1041
|
+
return _openBlock7(), _createElementBlock6(
|
|
1042
|
+
"td",
|
|
1043
|
+
{
|
|
1044
|
+
key: cellIndex,
|
|
1045
|
+
style: _normalizeStyle({ textAlign: $props.node.align?.[cellIndex] || "left" })
|
|
1046
|
+
},
|
|
1047
|
+
[
|
|
1048
|
+
_createVNode5($setup["IncremarkInline"], {
|
|
1049
|
+
nodes: $setup.getCellContent(cell)
|
|
1050
|
+
}, null, 8, ["nodes"])
|
|
1051
|
+
],
|
|
1052
|
+
4
|
|
1053
|
+
/* STYLE */
|
|
1054
|
+
);
|
|
1055
|
+
}),
|
|
1056
|
+
128
|
|
1057
|
+
/* KEYED_FRAGMENT */
|
|
1058
|
+
))
|
|
1059
|
+
]);
|
|
1060
|
+
}),
|
|
1061
|
+
128
|
|
1062
|
+
/* KEYED_FRAGMENT */
|
|
1063
|
+
))
|
|
1064
|
+
])
|
|
1065
|
+
])
|
|
1066
|
+
]);
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
// src/components/IncremarkTable.vue
|
|
1070
|
+
IncremarkTable_default.render = render7;
|
|
1071
|
+
IncremarkTable_default.__file = "src/components/IncremarkTable.vue";
|
|
1072
|
+
IncremarkTable_default.__scopeId = "data-v-7aea7ba6";
|
|
1073
|
+
var IncremarkTable_default2 = IncremarkTable_default;
|
|
1074
|
+
|
|
1075
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkBlockquote.vue?type=script
|
|
1076
|
+
import { defineComponent as _defineComponent8 } from "vue";
|
|
1077
|
+
var IncremarkBlockquote_default = /* @__PURE__ */ _defineComponent8({
|
|
1078
|
+
__name: "IncremarkBlockquote",
|
|
1079
|
+
props: {
|
|
1080
|
+
node: { type: null, required: true }
|
|
1081
|
+
},
|
|
1082
|
+
setup(__props, { expose: __expose }) {
|
|
1083
|
+
__expose();
|
|
1084
|
+
const __returned__ = { IncremarkParagraph: IncremarkParagraph_default2 };
|
|
1085
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
1086
|
+
return __returned__;
|
|
1087
|
+
}
|
|
1088
|
+
});
|
|
1089
|
+
|
|
1090
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkBlockquote.vue?type=template
|
|
1091
|
+
import { renderList as _renderList4, Fragment as _Fragment6, openBlock as _openBlock8, createElementBlock as _createElementBlock7, createBlock as _createBlock3, toDisplayString as _toDisplayString4 } from "vue";
|
|
1092
|
+
var _hoisted_110 = { class: "incremark-blockquote" };
|
|
1093
|
+
var _hoisted_26 = {
|
|
1094
|
+
key: 1,
|
|
1095
|
+
class: "unknown-child"
|
|
1096
|
+
};
|
|
1097
|
+
function render8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1098
|
+
return _openBlock8(), _createElementBlock7("blockquote", _hoisted_110, [
|
|
1099
|
+
(_openBlock8(true), _createElementBlock7(
|
|
1100
|
+
_Fragment6,
|
|
1101
|
+
null,
|
|
1102
|
+
_renderList4($props.node.children, (child, index) => {
|
|
1103
|
+
return _openBlock8(), _createElementBlock7(
|
|
1104
|
+
_Fragment6,
|
|
1105
|
+
{ key: index },
|
|
1106
|
+
[
|
|
1107
|
+
child.type === "paragraph" ? (_openBlock8(), _createBlock3($setup["IncremarkParagraph"], {
|
|
1108
|
+
key: 0,
|
|
1109
|
+
node: child
|
|
1110
|
+
}, null, 8, ["node"])) : (_openBlock8(), _createElementBlock7(
|
|
1111
|
+
"div",
|
|
1112
|
+
_hoisted_26,
|
|
1113
|
+
_toDisplayString4(child.type),
|
|
1114
|
+
1
|
|
1115
|
+
/* TEXT */
|
|
1116
|
+
))
|
|
1117
|
+
],
|
|
1118
|
+
64
|
|
1119
|
+
/* STABLE_FRAGMENT */
|
|
1120
|
+
);
|
|
1121
|
+
}),
|
|
1122
|
+
128
|
|
1123
|
+
/* KEYED_FRAGMENT */
|
|
1124
|
+
))
|
|
1125
|
+
]);
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
// src/components/IncremarkBlockquote.vue
|
|
1129
|
+
IncremarkBlockquote_default.render = render8;
|
|
1130
|
+
IncremarkBlockquote_default.__file = "src/components/IncremarkBlockquote.vue";
|
|
1131
|
+
IncremarkBlockquote_default.__scopeId = "data-v-67363f13";
|
|
1132
|
+
var IncremarkBlockquote_default2 = IncremarkBlockquote_default;
|
|
1133
|
+
|
|
1134
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkThematicBreak.vue?type=script
|
|
1135
|
+
import { defineComponent as _defineComponent9 } from "vue";
|
|
1136
|
+
var IncremarkThematicBreak_default = /* @__PURE__ */ _defineComponent9({
|
|
1137
|
+
__name: "IncremarkThematicBreak",
|
|
1138
|
+
setup(__props, { expose: __expose }) {
|
|
1139
|
+
__expose();
|
|
1140
|
+
const __returned__ = {};
|
|
1141
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
1142
|
+
return __returned__;
|
|
1143
|
+
}
|
|
1144
|
+
});
|
|
1145
|
+
|
|
1146
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkThematicBreak.vue?type=template
|
|
1147
|
+
import { openBlock as _openBlock9, createElementBlock as _createElementBlock8 } from "vue";
|
|
1148
|
+
var _hoisted_111 = { class: "incremark-hr" };
|
|
1149
|
+
function render9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1150
|
+
return _openBlock9(), _createElementBlock8("hr", _hoisted_111);
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
// src/components/IncremarkThematicBreak.vue
|
|
1154
|
+
IncremarkThematicBreak_default.render = render9;
|
|
1155
|
+
IncremarkThematicBreak_default.__file = "src/components/IncremarkThematicBreak.vue";
|
|
1156
|
+
IncremarkThematicBreak_default.__scopeId = "data-v-cb316429";
|
|
1157
|
+
var IncremarkThematicBreak_default2 = IncremarkThematicBreak_default;
|
|
1158
|
+
|
|
1159
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkDefault.vue?type=script
|
|
1160
|
+
import { defineComponent as _defineComponent10 } from "vue";
|
|
1161
|
+
var IncremarkDefault_default = /* @__PURE__ */ _defineComponent10({
|
|
1162
|
+
__name: "IncremarkDefault",
|
|
1163
|
+
props: {
|
|
1164
|
+
node: { type: null, required: true }
|
|
1165
|
+
},
|
|
1166
|
+
setup(__props, { expose: __expose }) {
|
|
1167
|
+
__expose();
|
|
1168
|
+
const __returned__ = {};
|
|
1169
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
1170
|
+
return __returned__;
|
|
1171
|
+
}
|
|
1172
|
+
});
|
|
1173
|
+
|
|
1174
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkDefault.vue?type=template
|
|
1175
|
+
import { toDisplayString as _toDisplayString5, createElementVNode as _createElementVNode6, openBlock as _openBlock10, createElementBlock as _createElementBlock9 } from "vue";
|
|
1176
|
+
var _hoisted_112 = { class: "incremark-default" };
|
|
1177
|
+
var _hoisted_27 = { class: "type-badge" };
|
|
1178
|
+
function render10(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1179
|
+
return _openBlock10(), _createElementBlock9("div", _hoisted_112, [
|
|
1180
|
+
_createElementVNode6(
|
|
1181
|
+
"span",
|
|
1182
|
+
_hoisted_27,
|
|
1183
|
+
_toDisplayString5($props.node.type),
|
|
1184
|
+
1
|
|
1185
|
+
/* TEXT */
|
|
1186
|
+
),
|
|
1187
|
+
_createElementVNode6(
|
|
1188
|
+
"pre",
|
|
1189
|
+
null,
|
|
1190
|
+
_toDisplayString5(JSON.stringify($props.node, null, 2)),
|
|
1191
|
+
1
|
|
1192
|
+
/* TEXT */
|
|
1193
|
+
)
|
|
1194
|
+
]);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
// src/components/IncremarkDefault.vue
|
|
1198
|
+
IncremarkDefault_default.render = render10;
|
|
1199
|
+
IncremarkDefault_default.__file = "src/components/IncremarkDefault.vue";
|
|
1200
|
+
IncremarkDefault_default.__scopeId = "data-v-5542d517";
|
|
1201
|
+
var IncremarkDefault_default2 = IncremarkDefault_default;
|
|
1202
|
+
|
|
1203
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/Incremark.vue?type=script
|
|
1204
|
+
var Incremark_default = /* @__PURE__ */ _defineComponent11({
|
|
1205
|
+
__name: "Incremark",
|
|
1206
|
+
props: {
|
|
1207
|
+
blocks: { type: Array, required: true },
|
|
1208
|
+
components: { type: Object, required: false, default: () => ({}) },
|
|
1209
|
+
pendingClass: { type: String, required: false, default: "incremark-pending" },
|
|
1210
|
+
completedClass: { type: String, required: false, default: "incremark-completed" },
|
|
1211
|
+
showBlockStatus: { type: Boolean, required: false, default: false }
|
|
1212
|
+
},
|
|
1213
|
+
setup(__props, { expose: __expose }) {
|
|
1214
|
+
__expose();
|
|
1215
|
+
const props = __props;
|
|
1216
|
+
const defaultComponents = {
|
|
1217
|
+
heading: IncremarkHeading_default2,
|
|
1218
|
+
paragraph: IncremarkParagraph_default2,
|
|
1219
|
+
code: IncremarkCode_default2,
|
|
1220
|
+
list: IncremarkList_default2,
|
|
1221
|
+
table: IncremarkTable_default2,
|
|
1222
|
+
blockquote: IncremarkBlockquote_default2,
|
|
1223
|
+
thematicBreak: IncremarkThematicBreak_default2,
|
|
1224
|
+
math: IncremarkMath_default2,
|
|
1225
|
+
inlineMath: IncremarkMath_default2
|
|
1226
|
+
};
|
|
1227
|
+
const mergedComponents = computed7(() => ({
|
|
1228
|
+
...defaultComponents,
|
|
1229
|
+
...props.components
|
|
1230
|
+
}));
|
|
1231
|
+
function getComponent(type) {
|
|
1232
|
+
return mergedComponents.value[type] || props.components?.default || IncremarkDefault_default2;
|
|
1233
|
+
}
|
|
1234
|
+
const __returned__ = { props, defaultComponents, mergedComponents, getComponent };
|
|
1235
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
1236
|
+
return __returned__;
|
|
1237
|
+
}
|
|
1238
|
+
});
|
|
1239
|
+
|
|
1240
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/Incremark.vue?type=template
|
|
1241
|
+
import { renderList as _renderList5, Fragment as _Fragment7, openBlock as _openBlock11, createElementBlock as _createElementBlock10, resolveDynamicComponent as _resolveDynamicComponent3, createBlock as _createBlock4, normalizeClass as _normalizeClass2, TransitionGroup as _TransitionGroup, withCtx as _withCtx3, createVNode as _createVNode6 } from "vue";
|
|
1242
|
+
var _hoisted_113 = { class: "incremark" };
|
|
1243
|
+
function render11(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1244
|
+
return _openBlock11(), _createElementBlock10("div", _hoisted_113, [
|
|
1245
|
+
_createVNode6(_TransitionGroup, { name: "incremark-fade" }, {
|
|
1246
|
+
default: _withCtx3(() => [
|
|
1247
|
+
(_openBlock11(true), _createElementBlock10(
|
|
1248
|
+
_Fragment7,
|
|
1249
|
+
null,
|
|
1250
|
+
_renderList5($props.blocks, (block) => {
|
|
1251
|
+
return _openBlock11(), _createElementBlock10(
|
|
1252
|
+
"div",
|
|
1253
|
+
{
|
|
1254
|
+
key: block.stableId,
|
|
1255
|
+
class: _normalizeClass2([
|
|
1256
|
+
"incremark-block",
|
|
1257
|
+
block.status === "completed" ? $props.completedClass : $props.pendingClass,
|
|
1258
|
+
{ "incremark-show-status": $props.showBlockStatus }
|
|
1259
|
+
])
|
|
1260
|
+
},
|
|
1261
|
+
[
|
|
1262
|
+
(_openBlock11(), _createBlock4(_resolveDynamicComponent3($setup.getComponent(block.node.type)), {
|
|
1263
|
+
node: block.node
|
|
1264
|
+
}, null, 8, ["node"]))
|
|
1265
|
+
],
|
|
1266
|
+
2
|
|
1267
|
+
/* CLASS */
|
|
1268
|
+
);
|
|
1269
|
+
}),
|
|
1270
|
+
128
|
|
1271
|
+
/* KEYED_FRAGMENT */
|
|
1272
|
+
))
|
|
1273
|
+
]),
|
|
1274
|
+
_: 1
|
|
1275
|
+
/* STABLE */
|
|
1276
|
+
})
|
|
1277
|
+
]);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
// src/components/Incremark.vue
|
|
1281
|
+
Incremark_default.render = render11;
|
|
1282
|
+
Incremark_default.__file = "src/components/Incremark.vue";
|
|
1283
|
+
Incremark_default.__scopeId = "data-v-5966b843";
|
|
1284
|
+
var Incremark_default2 = Incremark_default;
|
|
1285
|
+
|
|
1286
|
+
// sfc-script:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkRenderer.vue?type=script
|
|
1287
|
+
import { defineComponent as _defineComponent12 } from "vue";
|
|
1288
|
+
var IncremarkRenderer_default = /* @__PURE__ */ _defineComponent12({
|
|
1289
|
+
__name: "IncremarkRenderer",
|
|
1290
|
+
props: {
|
|
1291
|
+
node: { type: null, required: true }
|
|
1292
|
+
},
|
|
1293
|
+
setup(__props, { expose: __expose }) {
|
|
1294
|
+
__expose();
|
|
1295
|
+
const componentMap = {
|
|
1296
|
+
heading: IncremarkHeading_default2,
|
|
1297
|
+
paragraph: IncremarkParagraph_default2,
|
|
1298
|
+
code: IncremarkCode_default2,
|
|
1299
|
+
list: IncremarkList_default2,
|
|
1300
|
+
table: IncremarkTable_default2,
|
|
1301
|
+
blockquote: IncremarkBlockquote_default2,
|
|
1302
|
+
thematicBreak: IncremarkThematicBreak_default2,
|
|
1303
|
+
math: IncremarkMath_default2,
|
|
1304
|
+
inlineMath: IncremarkMath_default2
|
|
1305
|
+
};
|
|
1306
|
+
function getComponent(type) {
|
|
1307
|
+
return componentMap[type] || IncremarkDefault_default2;
|
|
1308
|
+
}
|
|
1309
|
+
const __returned__ = { componentMap, getComponent };
|
|
1310
|
+
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
1311
|
+
return __returned__;
|
|
1312
|
+
}
|
|
1313
|
+
});
|
|
1314
|
+
|
|
1315
|
+
// sfc-template:/Users/yishuai/develop/ai/markdown/packages/vue/src/components/IncremarkRenderer.vue?type=template
|
|
1316
|
+
import { resolveDynamicComponent as _resolveDynamicComponent4, openBlock as _openBlock12, createBlock as _createBlock5 } from "vue";
|
|
1317
|
+
function render12(_ctx, _cache, $props, $setup, $data, $options) {
|
|
1318
|
+
return _openBlock12(), _createBlock5(_resolveDynamicComponent4($setup.getComponent($props.node.type)), { node: $props.node }, null, 8, ["node"]);
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
// src/components/IncremarkRenderer.vue
|
|
1322
|
+
IncremarkRenderer_default.render = render12;
|
|
1323
|
+
IncremarkRenderer_default.__file = "src/components/IncremarkRenderer.vue";
|
|
1324
|
+
var IncremarkRenderer_default2 = IncremarkRenderer_default;
|
|
1325
|
+
export {
|
|
1326
|
+
Incremark_default2 as Incremark,
|
|
1327
|
+
IncremarkBlockquote_default2 as IncremarkBlockquote,
|
|
1328
|
+
IncremarkCode_default2 as IncremarkCode,
|
|
1329
|
+
IncremarkDefault_default2 as IncremarkDefault,
|
|
1330
|
+
IncremarkHeading_default2 as IncremarkHeading,
|
|
1331
|
+
IncremarkInline_default2 as IncremarkInline,
|
|
1332
|
+
IncremarkList_default2 as IncremarkList,
|
|
1333
|
+
IncremarkMath_default2 as IncremarkMath,
|
|
1334
|
+
IncremarkParagraph_default2 as IncremarkParagraph,
|
|
1335
|
+
IncremarkRenderer_default2 as IncremarkRenderer,
|
|
1336
|
+
IncremarkTable_default2 as IncremarkTable,
|
|
1337
|
+
IncremarkThematicBreak_default2 as IncremarkThematicBreak,
|
|
1338
|
+
useDevTools,
|
|
1339
|
+
useIncremark,
|
|
1340
|
+
useStreamRenderer
|
|
1341
|
+
};
|
|
1342
|
+
//# sourceMappingURL=index.js.map
|