@mark-sorcery/vue 0.2.0 → 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.
Files changed (96) hide show
  1. package/README.md +141 -7
  2. package/dist/Blockquote-CQ00l7_X.js +41 -0
  3. package/dist/Blockquote-CQ00l7_X.js.map +1 -0
  4. package/dist/Blockquote-CsDuM74x.cjs +41 -0
  5. package/dist/Blockquote-CsDuM74x.cjs.map +1 -0
  6. package/dist/Bold-BeBMCbKR.js +41 -0
  7. package/dist/Bold-BeBMCbKR.js.map +1 -0
  8. package/dist/Bold-Ci8roG6o.cjs +41 -0
  9. package/dist/Bold-Ci8roG6o.cjs.map +1 -0
  10. package/dist/Code-CNHJYkyL.cjs +41 -0
  11. package/dist/Code-CNHJYkyL.cjs.map +1 -0
  12. package/dist/Code-wAxxAhcA.js +41 -0
  13. package/dist/Code-wAxxAhcA.js.map +1 -0
  14. package/dist/CodeBlock-6Pr5Z5NL.cjs +45 -0
  15. package/dist/CodeBlock-6Pr5Z5NL.cjs.map +1 -0
  16. package/dist/CodeBlock-ThF6XH4W.js +45 -0
  17. package/dist/CodeBlock-ThF6XH4W.js.map +1 -0
  18. package/dist/Default-BdwUq6V5.js +17 -0
  19. package/dist/Default-BdwUq6V5.js.map +1 -0
  20. package/dist/Default-D303gqxw.cjs +17 -0
  21. package/dist/Default-D303gqxw.cjs.map +1 -0
  22. package/dist/Heading-B9ci-RSS.js +51 -0
  23. package/dist/Heading-B9ci-RSS.js.map +1 -0
  24. package/dist/Heading-XHEaF_uw.cjs +51 -0
  25. package/dist/Heading-XHEaF_uw.cjs.map +1 -0
  26. package/dist/Italic-BtTOTH7U.js +41 -0
  27. package/dist/Italic-BtTOTH7U.js.map +1 -0
  28. package/dist/Italic-Dm3v-svR.cjs +41 -0
  29. package/dist/Italic-Dm3v-svR.cjs.map +1 -0
  30. package/dist/Link-4GqqHDBl.js +41 -0
  31. package/dist/Link-4GqqHDBl.js.map +1 -0
  32. package/dist/Link-CCApvA47.cjs +41 -0
  33. package/dist/Link-CCApvA47.cjs.map +1 -0
  34. package/dist/ListItem-C3yxx2gg.cjs +41 -0
  35. package/dist/ListItem-C3yxx2gg.cjs.map +1 -0
  36. package/dist/ListItem-Cprot4T5.js +41 -0
  37. package/dist/ListItem-Cprot4T5.js.map +1 -0
  38. package/dist/NodeList-BRtZi6mG.js +136 -0
  39. package/dist/NodeList-BRtZi6mG.js.map +1 -0
  40. package/dist/NodeList-BSXOJrlM.cjs +159 -0
  41. package/dist/NodeList-BSXOJrlM.cjs.map +1 -0
  42. package/dist/OrderedList-CV9g8PlL.cjs +41 -0
  43. package/dist/OrderedList-CV9g8PlL.cjs.map +1 -0
  44. package/dist/OrderedList-XZIbdRZq.js +41 -0
  45. package/dist/OrderedList-XZIbdRZq.js.map +1 -0
  46. package/dist/Paragraph-CjkSyimn.js +41 -0
  47. package/dist/Paragraph-CjkSyimn.js.map +1 -0
  48. package/dist/Paragraph-GnFhfGoR.cjs +41 -0
  49. package/dist/Paragraph-GnFhfGoR.cjs.map +1 -0
  50. package/dist/Strikethrough-DDhdCH3H.cjs +41 -0
  51. package/dist/Strikethrough-DDhdCH3H.cjs.map +1 -0
  52. package/dist/Strikethrough-Y9TM_SwO.js +41 -0
  53. package/dist/Strikethrough-Y9TM_SwO.js.map +1 -0
  54. package/dist/Table-Bpu3YpNv.js +41 -0
  55. package/dist/Table-Bpu3YpNv.js.map +1 -0
  56. package/dist/Table-D4j0j6E7.cjs +41 -0
  57. package/dist/Table-D4j0j6E7.cjs.map +1 -0
  58. package/dist/TableBody-COwElKNR.js +41 -0
  59. package/dist/TableBody-COwElKNR.js.map +1 -0
  60. package/dist/TableBody-DAzn9CUu.cjs +41 -0
  61. package/dist/TableBody-DAzn9CUu.cjs.map +1 -0
  62. package/dist/TableData-DJJe9Tf6.cjs +41 -0
  63. package/dist/TableData-DJJe9Tf6.cjs.map +1 -0
  64. package/dist/TableData-c1fn4umk.js +41 -0
  65. package/dist/TableData-c1fn4umk.js.map +1 -0
  66. package/dist/TableHead-DZpaTt5a.js +41 -0
  67. package/dist/TableHead-DZpaTt5a.js.map +1 -0
  68. package/dist/TableHead-rrVYInXV.cjs +41 -0
  69. package/dist/TableHead-rrVYInXV.cjs.map +1 -0
  70. package/dist/TableHeader-Cp4WDJMs.cjs +41 -0
  71. package/dist/TableHeader-Cp4WDJMs.cjs.map +1 -0
  72. package/dist/TableHeader-DKYmn1aU.js +41 -0
  73. package/dist/TableHeader-DKYmn1aU.js.map +1 -0
  74. package/dist/TableRow-CUFzFAvX.js +41 -0
  75. package/dist/TableRow-CUFzFAvX.js.map +1 -0
  76. package/dist/TableRow-YkwTraeY.cjs +41 -0
  77. package/dist/TableRow-YkwTraeY.cjs.map +1 -0
  78. package/dist/TaskListInput-BEzV7Vfw.js +33 -0
  79. package/dist/TaskListInput-BEzV7Vfw.js.map +1 -0
  80. package/dist/TaskListInput-CJaIxj3X.cjs +33 -0
  81. package/dist/TaskListInput-CJaIxj3X.cjs.map +1 -0
  82. package/dist/Text-B8_JK9gW.cjs +24 -0
  83. package/dist/Text-B8_JK9gW.cjs.map +1 -0
  84. package/dist/Text-C6WCz2NQ.js +24 -0
  85. package/dist/Text-C6WCz2NQ.js.map +1 -0
  86. package/dist/UnorderedList-CZRPCjH-.cjs +41 -0
  87. package/dist/UnorderedList-CZRPCjH-.cjs.map +1 -0
  88. package/dist/UnorderedList-Dz4nkM-t.js +41 -0
  89. package/dist/UnorderedList-Dz4nkM-t.js.map +1 -0
  90. package/dist/index.cjs +28 -69
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.d.cts +120 -36
  93. package/dist/index.d.ts +120 -36
  94. package/dist/index.js +27 -70
  95. package/dist/index.js.map +1 -1
  96. package/package.json +7 -3
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as vue from "vue";
2
- import { Component, VNodeArrayChildren } from "vue";
2
+ import { BaseTransitionProps, Component, ComputedRef } from "vue";
3
3
  import * as _mark_sorcery_markdown_parser0 from "@mark-sorcery/markdown-parser";
4
4
  import { CorePluginOptions, MarkdownProcessor, ParseMemory, ParseOptions, ParserPlugin, createCorePlugin } from "@mark-sorcery/markdown-parser";
5
5
 
@@ -318,27 +318,36 @@ interface Text extends Literal {
318
318
  interface TextData extends Data {}
319
319
  //#endregion
320
320
  //#region src/types.d.ts
321
- type MarkdownOptions = Omit<ParseOptions, 'plugins'>;
322
- /** A resolved component value: a Vue component, a tag string, or null/undefined to fall back to the default element. */
323
- type ComponentResolution = Component | string | null | undefined;
324
321
  /**
325
- * Resolves which Vue component or tag to render for a given HAST element node.
326
- *
327
- * Can be:
328
- * - A **record** mapping tag names to components or tag strings (e.g. `{ h1: MyHeading }`)
329
- * - A **function** `(node: Element) => ComponentResolution` — called for every element;
330
- * return `null` or `undefined` to fall back to the default HTML element.
331
- *
332
- * @example — record form
333
- * const components: Components = { h1: MyHeading, code: MyCode }
322
+ * Configuration forwarded to Vue's `<Transition>` component.
323
+ * All props are optional; when `transition: true` is used on `<Markdown>`,
324
+ * defaults to `{}` which activates Vue's default `v-enter-*` classes.
334
325
  *
335
- * @example — function form
336
- * const components: Components = (node) => {
337
- * if (node.tagName === 'h1') return MyHeading
338
- * if (node.properties?.className?.includes('warning')) return MyWarning
339
- * }
326
+ * @see https://vuejs.org/api/built-in-components.html#transition
340
327
  */
341
- type Components = Partial<Record<string, ComponentResolution>> | ((node: Element) => ComponentResolution);
328
+ interface TransitionConfig {
329
+ name?: string;
330
+ css?: boolean;
331
+ mode?: 'in-out' | 'out-in' | 'default';
332
+ enterFromClass?: string;
333
+ enterActiveClass?: string;
334
+ enterToClass?: string;
335
+ leaveFromClass?: string;
336
+ leaveActiveClass?: string;
337
+ leaveToClass?: string;
338
+ appearFromClass?: string;
339
+ appearActiveClass?: string;
340
+ appearToClass?: string;
341
+ onBeforeEnter?: BaseTransitionProps['onBeforeEnter'];
342
+ onEnter?: BaseTransitionProps['onEnter'];
343
+ onAfterEnter?: BaseTransitionProps['onAfterEnter'];
344
+ onEnterCancelled?: BaseTransitionProps['onEnterCancelled'];
345
+ onBeforeLeave?: BaseTransitionProps['onBeforeLeave'];
346
+ onLeave?: BaseTransitionProps['onLeave'];
347
+ onAfterLeave?: BaseTransitionProps['onAfterLeave'];
348
+ onLeaveCancelled?: BaseTransitionProps['onLeaveCancelled'];
349
+ }
350
+ type MarkdownOptions = Omit<ParseOptions, 'plugins'>;
342
351
  /**
343
352
  * Props automatically injected into every custom Vue component rendered by
344
353
  * `<Markdown>`. Use this to type your custom component's `node` prop.
@@ -361,8 +370,43 @@ interface MarkdownProps {
361
370
  /** Enables parse memory so growing markdown streams preserve confirmed blocks. */
362
371
  stream?: boolean;
363
372
  /** Custom Vue components or tags to use in place of default HTML elements. */
364
- components?: Components;
373
+ components?: Record<string, Component>;
374
+ /**
375
+ * Optional Vue `<Transition>` configuration applied to every rendered element node.
376
+ *
377
+ * - `true` — enables transitions with Vue's default classes (`v-enter-*`).
378
+ * - `TransitionConfig` object — forwarded as props to each `<Transition>` wrapper.
379
+ * - `false` / `undefined` — no transitions (default).
380
+ *
381
+ * @example
382
+ * // Basic fade (add CSS: .fade-enter-active { transition: opacity 0.3s } .fade-enter-from { opacity: 0 })
383
+ * :transition="{ name: 'fade', appear: true }"
384
+ */
385
+ transition?: boolean | TransitionConfig;
386
+ }
387
+ interface MarkdownNodeProps {
388
+ /** The HAST element to render. */
389
+ element: Element;
390
+ /** A unique key for the component instance. */
391
+ componentKey: string;
365
392
  }
393
+ type ItemProps = {
394
+ nodeIdx?: number;
395
+ deep?: number;
396
+ nodeKey?: string;
397
+ parentNode?: Nodes;
398
+ };
399
+ type NodeListProps = ItemProps & {
400
+ nodes: Nodes[];
401
+ components: NonNullable<MarkdownProps['components']>;
402
+ transition: MarkdownProps['transition'];
403
+ };
404
+ type ElementProps = ItemProps & {
405
+ element: Element;
406
+ };
407
+ type TextProps = ItemProps & {
408
+ element: Text;
409
+ };
366
410
  //#endregion
367
411
  //#region src/Markdown.d.ts
368
412
  declare const Markdown: vue.DefineComponent<vue.ExtractPropTypes<{
@@ -371,7 +415,7 @@ declare const Markdown: vue.DefineComponent<vue.ExtractPropTypes<{
371
415
  required: boolean;
372
416
  };
373
417
  options: {
374
- type: () => MarkdownOptions;
418
+ type: () => MarkdownProps["options"];
375
419
  default: undefined;
376
420
  };
377
421
  plugins: {
@@ -383,9 +427,13 @@ declare const Markdown: vue.DefineComponent<vue.ExtractPropTypes<{
383
427
  default: boolean;
384
428
  };
385
429
  components: {
386
- type: () => Components;
430
+ type: () => MarkdownProps["components"];
387
431
  default: () => {};
388
432
  };
433
+ transition: {
434
+ type: () => MarkdownProps["transition"];
435
+ default: boolean;
436
+ };
389
437
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
390
438
  [key: string]: any;
391
439
  }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
@@ -394,7 +442,7 @@ declare const Markdown: vue.DefineComponent<vue.ExtractPropTypes<{
394
442
  required: boolean;
395
443
  };
396
444
  options: {
397
- type: () => MarkdownOptions;
445
+ type: () => MarkdownProps["options"];
398
446
  default: undefined;
399
447
  };
400
448
  plugins: {
@@ -406,25 +454,61 @@ declare const Markdown: vue.DefineComponent<vue.ExtractPropTypes<{
406
454
  default: boolean;
407
455
  };
408
456
  components: {
409
- type: () => Components;
457
+ type: () => MarkdownProps["components"];
410
458
  default: () => {};
411
459
  };
460
+ transition: {
461
+ type: () => MarkdownProps["transition"];
462
+ default: boolean;
463
+ };
412
464
  }>> & Readonly<{}>, {
413
- options: MarkdownOptions;
465
+ options: MarkdownOptions | undefined;
414
466
  plugins: _mark_sorcery_markdown_parser0.ParserPlugin[] | undefined;
415
467
  stream: boolean;
416
- components: Components;
468
+ components: Record<string, vue.Component> | undefined;
469
+ transition: boolean | TransitionConfig | undefined;
417
470
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
418
471
  //#endregion
419
- //#region src/hast-to-vnodes.d.ts
420
- /**
421
- * Recursively convert a HAST node (or array of nodes) into Vue VNodeArrayChildren.
422
- *
423
- * @param node - Root HAST node or array of nodes to convert.
424
- * @param components - Custom component map or resolver function.
425
- * @param transition - Optional `<Transition>` config applied to every element node.
426
- */
427
- declare function hastToVNodes(node: Nodes | Nodes[], components: Components): VNodeArrayChildren;
472
+ //#region src/components/NodeList.vue.d.ts
473
+ declare const __VLS_export: vue.DefineComponent<NodeListProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<NodeListProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
474
+ declare const _default: typeof __VLS_export;
475
+ //#endregion
476
+ //#region src/components/index.d.ts
477
+ declare const DEFAULT_COMPONENTS: {
478
+ p: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
479
+ h1: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
480
+ h2: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
481
+ h3: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
482
+ h4: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
483
+ h5: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
484
+ h6: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
485
+ strong: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
486
+ em: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
487
+ del: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
488
+ blockquote: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
489
+ ul: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
490
+ ol: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
491
+ li: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
492
+ code: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
493
+ a: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
494
+ input: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
495
+ pre: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
496
+ table: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
497
+ thead: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
498
+ tbody: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
499
+ tr: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
500
+ th: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
501
+ td: vue.DefineComponent<ElementProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<ElementProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
502
+ text: vue.DefineComponent<TextProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<TextProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
503
+ default: vue.DefineComponent<{}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
504
+ };
505
+ //#endregion
506
+ //#region src/composables/markdown.d.ts
507
+ type MarkdownContext = {
508
+ components: ComputedRef<NonNullable<MarkdownProps['components']>>;
509
+ transition: ComputedRef<MarkdownProps['transition']>;
510
+ };
511
+ declare const useMarkdown: () => MarkdownContext;
428
512
  //#endregion
429
- export { type Components, type CorePluginOptions, Markdown, type MarkdownOptions, type MarkdownProcessor, type MarkdownProps, type NodeProps, type ParseMemory, type ParseOptions, type ParserPlugin, createCorePlugin, hastToVNodes };
513
+ export { type CorePluginOptions, DEFAULT_COMPONENTS, type ElementProps, type ItemProps, Markdown, type MarkdownNodeProps, type MarkdownOptions, type MarkdownProcessor, type MarkdownProps, _default as NodeList, type NodeListProps, type NodeProps, type ParseMemory, type ParseOptions, type ParserPlugin, createCorePlugin, useMarkdown };
430
514
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,69 +1,16 @@
1
- import { Fragment, computed, createCommentVNode, defineComponent, h, markRaw, shallowRef, watchEffect } from "vue";
1
+ import { i as DEFAULT_COMPONENTS, n as useMarkdown, r as useProvideMarkdown, t as _sfc_main } from "./NodeList-BRtZi6mG.js";
2
+ import { computed, defineComponent, h, shallowRef, watchEffect } from "vue";
2
3
  import { createCorePlugin, createMemory, createProcessor, parse } from "@mark-sorcery/markdown-parser";
4
+ import { remove } from "unist-util-remove";
3
5
 
4
- //#region src/hast-to-vnodes.ts
5
- function createNodeKey(node, path) {
6
- const start = node.position?.start?.offset;
7
- const end = node.position?.end?.offset;
8
- if (typeof start === "number" && typeof end === "number") return `${node.tagName}:${start}-${end}`;
9
- if (typeof start === "number") return `${node.tagName}:${start}`;
10
- return path;
11
- }
12
- /**
13
- * Convert HAST node properties to Vue-compatible props.
14
- * - `className` array → `class` string
15
- * - `htmlFor` → `for`
16
- * - All other properties pass through as-is
17
- */
18
- function convertProps(properties) {
19
- const props = {};
20
- for (const [key, value] of Object.entries(properties)) if (key === "className" && Array.isArray(value)) props["class"] = value.join(" ");
21
- else if (key === "htmlFor") props["for"] = value;
22
- else props[key] = value;
23
- return props;
24
- }
25
- /** Resolve the tag/component for an element node from the Components option. */
26
- function resolveTag(node, components) {
27
- return (typeof components === "function" ? components(node) : components[node.tagName]) ?? node.tagName;
28
- }
29
- /**
30
- * Internal recursive converter. `path` is a dot-separated string identifying
31
- * the node's position in the tree (e.g. `"0"`, `"0.1"`, `"0.1.2"`).
32
- */
33
- function toVNodes(node, components, path) {
34
- if (Array.isArray(node)) return node.flatMap((n, i) => toVNodes(n, components, `${path}.${i}`));
35
- switch (node.type) {
36
- case "root": return node.children.flatMap((child, i) => toVNodes(child, components, String(i)));
37
- case "element": {
38
- const { properties = {}, children } = node;
39
- const tag = resolveTag(node, components);
40
- const nodeKey = createNodeKey(node, path);
41
- const props = convertProps(properties);
42
- const childVNodes = children.flatMap((child, i) => toVNodes(child, components, `${path}.${i}`));
43
- return [typeof tag === "string" ? h(tag, {
44
- ...props,
45
- key: nodeKey
46
- }, childVNodes) : h(tag, {
47
- ...props,
48
- key: nodeKey,
49
- node
50
- }, { default: () => childVNodes })];
51
- }
52
- case "text": return [node.value];
53
- case "comment": return [createCommentVNode(node.value)];
54
- default: return [];
55
- }
56
- }
57
- /**
58
- * Recursively convert a HAST node (or array of nodes) into Vue VNodeArrayChildren.
59
- *
60
- * @param node - Root HAST node or array of nodes to convert.
61
- * @param components - Custom component map or resolver function.
62
- * @param transition - Optional `<Transition>` config applied to every element node.
63
- */
64
- function hastToVNodes(node, components) {
65
- return toVNodes(node, components, "");
66
- }
6
+ //#region src/plugins/remove-line-jump-nodes.ts
7
+ const rehypeRemoveLineJumpNodes = () => (tree) => {
8
+ remove(tree, {
9
+ type: "text",
10
+ value: "\n"
11
+ });
12
+ };
13
+ const removeLineJumpNodesPlugin = () => ({ rehype: [[rehypeRemoveLineJumpNodes]] });
67
14
 
68
15
  //#endregion
69
16
  //#region src/Markdown.ts
@@ -87,8 +34,12 @@ const Markdown = defineComponent({
87
34
  default: false
88
35
  },
89
36
  components: {
90
- type: [Object, Function],
37
+ type: Object,
91
38
  default: () => ({})
39
+ },
40
+ transition: {
41
+ type: [Boolean, Object],
42
+ default: false
92
43
  }
93
44
  },
94
45
  setup(props) {
@@ -98,7 +49,7 @@ const Markdown = defineComponent({
98
49
  const propPlugins = props.plugins ?? [];
99
50
  return createProcessor({
100
51
  ...options,
101
- plugins: propPlugins
52
+ plugins: [...propPlugins, removeLineJumpNodesPlugin()]
102
53
  });
103
54
  });
104
55
  const hast = shallowRef(parse(processor.value, getMarkdown()));
@@ -121,14 +72,20 @@ const Markdown = defineComponent({
121
72
  }
122
73
  hast.value = parse(currentProcessor, markdown);
123
74
  });
75
+ const { components: providedComponents, transition: providedTransition } = useProvideMarkdown(computed(() => props.components), computed(() => props.transition));
124
76
  return () => {
125
- const raw = props.components ?? {};
126
- const components = typeof raw === "function" ? raw : Object.fromEntries(Object.entries(raw).map(([k, v]) => [k, typeof v === "string" || v == null ? v : markRaw(v)]));
127
- return h(Fragment, hastToVNodes(hast.value, components));
77
+ return h(_sfc_main, {
78
+ nodes: hast.value.children,
79
+ nodeKey: "root",
80
+ deep: 0,
81
+ parentNode: hast.value,
82
+ components: providedComponents.value,
83
+ transition: providedTransition.value
84
+ });
128
85
  };
129
86
  }
130
87
  });
131
88
 
132
89
  //#endregion
133
- export { Markdown, createCorePlugin, hastToVNodes };
90
+ export { DEFAULT_COMPONENTS, Markdown, _sfc_main as NodeList, createCorePlugin, useMarkdown };
134
91
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/hast-to-vnodes.ts","../src/Markdown.ts"],"sourcesContent":["import { h, createCommentVNode } from 'vue';\nimport type { Element, Nodes } from 'hast';\nimport type { VNodeArrayChildren } from 'vue';\nimport type { ComponentResolution, Components } from './types.ts';\n\nfunction createNodeKey(node: Element, path: string): string {\n const start = node.position?.start?.offset;\n const end = node.position?.end?.offset;\n\n if (typeof start === 'number' && typeof end === 'number') {\n return `${node.tagName}:${start}-${end}`;\n }\n\n if (typeof start === 'number') {\n return `${node.tagName}:${start}`;\n }\n\n return path;\n}\n\n/**\n * Convert HAST node properties to Vue-compatible props.\n * - `className` array → `class` string\n * - `htmlFor` → `for`\n * - All other properties pass through as-is\n */\nfunction convertProps(properties: Record<string, unknown>): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(properties)) {\n if (key === 'className' && Array.isArray(value)) {\n props['class'] = value.join(' ');\n } else if (key === 'htmlFor') {\n props['for'] = value;\n } else {\n props[key] = value;\n }\n }\n\n return props;\n}\n\n/** Resolve the tag/component for an element node from the Components option. */\nfunction resolveTag(node: Element, components: Components): NonNullable<ComponentResolution> {\n const resolved = typeof components === 'function'\n ? components(node)\n : components[node.tagName];\n return resolved ?? node.tagName;\n}\n\n/**\n * Internal recursive converter. `path` is a dot-separated string identifying\n * the node's position in the tree (e.g. `\"0\"`, `\"0.1\"`, `\"0.1.2\"`).\n */\nfunction toVNodes(\n node: Nodes | Nodes[],\n components: Components,\n path: string,\n): VNodeArrayChildren {\n if (Array.isArray(node)) {\n return node.flatMap((n, i) => toVNodes(n, components, `${path}.${i}`));\n }\n\n switch (node.type) {\n case 'root':\n return node.children.flatMap((child, i) =>\n toVNodes(child, components, String(i)),\n );\n\n case 'element': {\n const { properties = {}, children } = node;\n const tag = resolveTag(node, components);\n const nodeKey = createNodeKey(node, path);\n const props = convertProps(properties as Record<string, unknown>);\n const childVNodes: VNodeArrayChildren = children.flatMap((child, i) =>\n toVNodes(child, components, `${path}.${i}`),\n );\n\n // Build the element VNode\n // Custom Vue components also receive the raw HAST `node` prop so they\n // can access the original element (e.g. to extract text content for\n // syntax highlighting or diagram rendering).\n const el = typeof tag === 'string'\n ? h(tag, { ...props, key: nodeKey }, childVNodes)\n : h(tag, { ...props, key: nodeKey, node }, { default: () => childVNodes });\n\n return [el];\n }\n\n case 'text':\n return [node.value];\n\n case 'comment':\n return [createCommentVNode(node.value)];\n\n default:\n return [];\n }\n}\n\n/**\n * Recursively convert a HAST node (or array of nodes) into Vue VNodeArrayChildren.\n *\n * @param node - Root HAST node or array of nodes to convert.\n * @param components - Custom component map or resolver function.\n * @param transition - Optional `<Transition>` config applied to every element node.\n */\nexport function hastToVNodes(\n node: Nodes | Nodes[],\n components: Components,\n): VNodeArrayChildren {\n return toVNodes(node, components, '');\n}\n","import { computed, defineComponent, Fragment, h, markRaw, shallowRef, watchEffect } from 'vue';\nimport { createMemory, createProcessor, parse } from '@mark-sorcery/markdown-parser';\nimport { hastToVNodes } from './hast-to-vnodes.ts';\nimport type {\n Components,\n MarkdownProcessor,\n MarkdownOptions,\n MarkdownProps,\n ParseMemory,\n} from './types.ts';\n\nexport const Markdown = defineComponent({\n name: 'Markdown',\n\n props: {\n markdown: {\n type: String,\n required: true,\n },\n options: {\n type: Object as () => MarkdownOptions,\n default: undefined,\n },\n plugins: {\n type: Array as () => MarkdownProps['plugins'],\n default: undefined,\n },\n stream: {\n type: Boolean,\n default: false,\n },\n components: {\n type: [Object, Function] as unknown as () => Components,\n default: () => ({}),\n },\n } satisfies {\n [K in keyof MarkdownProps]-?: unknown;\n },\n\n setup(props) {\n const getMarkdown = () => props.markdown ?? '';\n\n const processor = computed<MarkdownProcessor>(() => {\n const options = props.options;\n const propPlugins = props.plugins ?? [];\n\n return createProcessor({\n ...options,\n plugins: propPlugins,\n });\n });\n\n const hast = shallowRef(parse(processor.value, getMarkdown()));\n let streamMemory: ParseMemory | undefined;\n let activeProcessor: MarkdownProcessor | undefined;\n\n watchEffect(() => {\n const currentProcessor = processor.value;\n const markdown = getMarkdown();\n\n if (activeProcessor && activeProcessor !== currentProcessor) {\n streamMemory = props.stream ? createMemory() : undefined;\n }\n\n activeProcessor = currentProcessor;\n\n if (props.stream) {\n streamMemory ??= createMemory();\n hast.value = parse(currentProcessor, markdown, streamMemory);\n return;\n }\n\n if (streamMemory) {\n streamMemory.flush = true;\n streamMemory = undefined;\n return;\n }\n\n hast.value = parse(currentProcessor, markdown);\n });\n\n return () => {\n const raw = props.components ?? {};\n // Function resolvers pass through; record values are wrapped in markRaw\n // so Vue doesn't make component objects reactive (perf warning prevention)\n const components: Components = typeof raw === 'function'\n ? raw\n : Object.fromEntries(\n Object.entries(raw).map(([k, v]) =>\n [k, typeof v === 'string' || v == null ? v : markRaw(v)],\n ),\n );\n const vnodes = hastToVNodes(hast.value, components);\n return h(Fragment, vnodes);\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["NodeList"],"sources":["../src/plugins/remove-line-jump-nodes.ts","../src/Markdown.ts"],"sourcesContent":["import type { ParserPlugin } from \"@mark-sorcery/markdown-parser\";\r\nimport type { Root } from \"hast\";\r\nimport type { Plugin } from \"unified\";\r\nimport { remove } from \"unist-util-remove\";\r\n\r\nconst rehypeRemoveLineJumpNodes: Plugin<[string[]], Root> =\r\n () => (tree: Root) => {\r\n remove(tree, {\r\n type: \"text\",\r\n value: \"\\n\",\r\n })\r\n };\r\n\r\nexport const removeLineJumpNodesPlugin = (): ParserPlugin => ({\r\n rehype: [[rehypeRemoveLineJumpNodes]],\r\n});","import { computed, defineComponent, h, shallowRef, watchEffect } from 'vue';\nimport { createMemory, createProcessor, parse } from '@mark-sorcery/markdown-parser';\nimport type {\n MarkdownProcessor,\n MarkdownProps,\n ParseMemory,\n} from './types.ts';\nimport NodeList from './components/NodeList.vue';\nimport { useProvideMarkdown } from './composables/markdown.ts';\nimport { removeLineJumpNodesPlugin } from './plugins/remove-line-jump-nodes.ts';\n\nexport const Markdown = defineComponent({\n name: 'Markdown',\n\n props: {\n markdown: {\n type: String,\n required: true,\n },\n options: {\n type: Object as () => MarkdownProps['options'],\n default: undefined,\n },\n plugins: {\n type: Array as () => MarkdownProps['plugins'],\n default: undefined,\n },\n stream: {\n type: Boolean,\n default: false,\n },\n components: {\n type: Object as unknown as () => MarkdownProps['components'],\n default: () => ({}),\n },\n transition: {\n type: [Boolean, Object] as unknown as () => MarkdownProps['transition'],\n default: false,\n },\n } satisfies {\n [K in keyof MarkdownProps]-?: unknown;\n },\n\n setup(props) {\n const getMarkdown = () => props.markdown ?? '';\n\n const processor = computed<MarkdownProcessor>(() => {\n const options = props.options;\n const propPlugins = props.plugins ?? [];\n\n return createProcessor({\n ...options,\n plugins: [...propPlugins, removeLineJumpNodesPlugin()],\n });\n });\n\n const hast = shallowRef(parse(processor.value, getMarkdown()));\n let streamMemory: ParseMemory | undefined;\n let activeProcessor: MarkdownProcessor | undefined;\n\n watchEffect(() => {\n const currentProcessor = processor.value;\n const markdown = getMarkdown();\n\n if (activeProcessor && activeProcessor !== currentProcessor) {\n streamMemory = props.stream ? createMemory() : undefined;\n }\n\n activeProcessor = currentProcessor;\n\n if (props.stream) {\n streamMemory ??= createMemory();\n hast.value = parse(currentProcessor, markdown, streamMemory);\n return;\n }\n\n if (streamMemory) {\n streamMemory.flush = true;\n streamMemory = undefined;\n return;\n }\n\n hast.value = parse(currentProcessor, markdown);\n });\n\n const { components: providedComponents, transition: providedTransition } = useProvideMarkdown(computed(() => props.components), computed(() => props.transition));\n\n return () => {\n return h(NodeList, {\n nodes: hast.value.children,\n nodeKey: 'root',\n deep: 0,\n parentNode: hast.value,\n components: providedComponents.value,\n transition: providedTransition.value,\n });\n };\n },\n});\n"],"mappings":";;;;;;AAKA,MAAM,mCACK,SAAe;AAClB,QAAO,MAAM;EACT,MAAM;EACN,OAAO;EACV,CAAC;;AAGV,MAAa,mCAAiD,EAC1D,QAAQ,CAAC,CAAC,0BAA0B,CAAC,EACxC;;;;ACJD,MAAa,WAAW,gBAAgB;CACtC,MAAM;CAEN,OAAO;EACL,UAAU;GACR,MAAM;GACN,UAAU;GACX;EACD,SAAS;GACP,MAAM;GACN,SAAS;GACV;EACD,SAAS;GACP,MAAM;GACN,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACV;EACD,YAAY;GACV,MAAM;GACN,gBAAgB,EAAE;GACnB;EACD,YAAY;GACV,MAAM,CAAC,SAAS,OAAO;GACvB,SAAS;GACV;EACF;CAID,MAAM,OAAO;EACX,MAAM,oBAAoB,MAAM,YAAY;EAE5C,MAAM,YAAY,eAAkC;GAClD,MAAM,UAAU,MAAM;GACtB,MAAM,cAAc,MAAM,WAAW,EAAE;AAEvC,UAAO,gBAAgB;IACrB,GAAG;IACH,SAAS,CAAC,GAAG,aAAa,2BAA2B,CAAC;IACvD,CAAC;IACF;EAEF,MAAM,OAAO,WAAW,MAAM,UAAU,OAAO,aAAa,CAAC,CAAC;EAC9D,IAAI;EACJ,IAAI;AAEJ,oBAAkB;GAChB,MAAM,mBAAmB,UAAU;GACnC,MAAM,WAAW,aAAa;AAE9B,OAAI,mBAAmB,oBAAoB,iBACzC,gBAAe,MAAM,SAAS,cAAc,GAAG;AAGjD,qBAAkB;AAElB,OAAI,MAAM,QAAQ;AAChB,qBAAiB,cAAc;AAC/B,SAAK,QAAQ,MAAM,kBAAkB,UAAU,aAAa;AAC5D;;AAGF,OAAI,cAAc;AAChB,iBAAa,QAAQ;AACrB,mBAAe;AACf;;AAGF,QAAK,QAAQ,MAAM,kBAAkB,SAAS;IAC9C;EAEF,MAAM,EAAE,YAAY,oBAAoB,YAAY,uBAAuB,mBAAmB,eAAe,MAAM,WAAW,EAAE,eAAe,MAAM,WAAW,CAAC;AAEjK,eAAa;AACX,UAAO,EAAEA,WAAU;IACjB,OAAO,KAAK,MAAM;IAClB,SAAS;IACT,MAAM;IACN,YAAY,KAAK;IACjB,YAAY,mBAAmB;IAC/B,YAAY,mBAAmB;IAChC,CAAC;;;CAGP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mark-sorcery/vue",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Vue renderer for Mark Sorcery markdown.",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -27,14 +27,18 @@
27
27
  "test": "vitest run"
28
28
  },
29
29
  "dependencies": {
30
- "@mark-sorcery/markdown-parser": "^0.2.0"
30
+ "@mark-sorcery/markdown-parser": "^0.4.2",
31
+ "unified": "^11.0.5",
32
+ "unist-util-remove": "^4.0.0"
31
33
  },
32
34
  "devDependencies": {
33
35
  "@types/hast": "^3.0.4",
34
36
  "@vue/test-utils": "^2.4.6",
35
37
  "happy-dom": "^17.4.4",
36
38
  "tsdown": "^0.21.0",
37
- "vue": "^3.5.25"
39
+ "unplugin-vue": "^7.1.1",
40
+ "vue": "^3.5.25",
41
+ "vue-tsc": "^3.2.5"
38
42
  },
39
43
  "peerDependencies": {
40
44
  "typescript": "^5",