@cocoar/vue-markdown 1.13.1 → 1.15.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.
@@ -536,6 +536,41 @@ export declare const DefaultLineBreak: import('vue').DefineComponent<import('vue
536
536
  required: true;
537
537
  };
538
538
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
539
+ /**
540
+ * Inline color mark — renders children inside a `<span>` with a single
541
+ * sanitized `color: …` inline style. The color is re-validated through
542
+ * `sanitizeColor` here so a malformed attr can't slip an arbitrary style
543
+ * through the renderer.
544
+ */
545
+ export declare const DefaultColorSpan: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
546
+ node: {
547
+ type: PropType<MarkdownNode>;
548
+ required: true;
549
+ };
550
+ renderChildren: {
551
+ type: PropType<() => VNode[]>;
552
+ required: true;
553
+ };
554
+ renderNodes: {
555
+ type: PropType<(nodes: readonly MarkdownNode[]) => VNode[]>;
556
+ required: true;
557
+ };
558
+ }>, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
559
+ [key: string]: any;
560
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
561
+ node: {
562
+ type: PropType<MarkdownNode>;
563
+ required: true;
564
+ };
565
+ renderChildren: {
566
+ type: PropType<() => VNode[]>;
567
+ required: true;
568
+ };
569
+ renderNodes: {
570
+ type: PropType<(nodes: readonly MarkdownNode[]) => VNode[]>;
571
+ required: true;
572
+ };
573
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
539
574
  /**
540
575
  * Block-style fallback for unknown node types. Most "unsupported" nodes that
541
576
  * reach the registry are block-level (custom remark plugins emitting embeds,
@@ -1 +1 @@
1
- {"version":3,"file":"default-renderers.d.ts","sourceRoot":"","sources":["../src/default-renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-renderers.d.ts","sourceRoot":"","sources":["../src/default-renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAsB9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAe1D,eAAO,MAAM,cAAc;;cAXD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAmBzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cA3BH,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA2BzE,CAAC;AAEH,eAAO,MAAM,iBAAiB;;cAnCJ,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAmCzE,CAAC;AAEH,eAAO,MAAM,WAAW;;cA3CE,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA0DzE,CAAC;AAEH,eAAO,MAAM,eAAe;;cAlEF,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAsFzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cA9FH,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAsGzE,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;cA3HC,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA+KzE,CAAC;AAIH,eAAO,MAAM,eAAe;;cAzLF,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAyLzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cAjMH,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAiMzE,CAAC;AAEH,eAAO,MAAM,oBAAoB;;cAzMP,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAyMzE,CAAC;AAIH,eAAO,MAAM,WAAW;;cAnNE,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAmNzE,CAAC;AAEH,eAAO,MAAM,eAAe;;cA3NF,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA2NzE,CAAC;AAEH,eAAO,MAAM,aAAa;;cAnOA,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAmOzE,CAAC;AAEH,eAAO,MAAM,oBAAoB;;cA3OP,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA2OzE,CAAC;AAEH,eAAO,MAAM,iBAAiB;;cAnPJ,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAoPzE,CAAC;AAEH,eAAO,MAAM,WAAW;;cA5PE,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA4QzE,CAAC;AAEH,eAAO,MAAM,YAAY;;cApRC,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA8RzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cAtSH,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAsSzE,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;cApTH,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGA8TzE,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;cA9UL,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;;;;;cANjD,QAAQ,CAAC,YAAY,CAAC;;;;cAE1B,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC;;;;cAIvB,QAAQ,CAAC,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;;;iGAmVzE,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,uBAqBtC,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -16,4 +16,12 @@ export declare function imageTitle(node: MarkdownNode): string | null;
16
16
  export declare function isTableColumnRightAligned(tableNode: MarkdownNode, columnIndex: number): boolean;
17
17
  export declare function isTableColumnCenterAligned(tableNode: MarkdownNode, columnIndex: number): boolean;
18
18
  export declare function unsupportedType(node: MarkdownNode): string;
19
+ /**
20
+ * Read a colorSpan node's color attribute and re-validate it through the
21
+ * sanitizer. Defence in depth — a custom transform could in principle inject
22
+ * a malformed color, so we never trust the attr directly. Returns `null` when
23
+ * the value isn't a known-safe CSS color, in which case the renderer should
24
+ * skip the inline style.
25
+ */
26
+ export declare function colorSpanColor(node: MarkdownNode): string | null;
19
27
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAUtE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG5D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAS1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG1D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAGnD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG5D;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG1D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAUtE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG5D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAS1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG1D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAGnD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAG5D;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/F;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAIhE"}
package/dist/index.css CHANGED
@@ -1,2 +1,2 @@
1
- .coar-markdown{--coar-markdown-text:var(--coar-text-neutral-primary);--coar-markdown-link:var(--coar-text-brand-primary,var(--coar-text-neutral-primary));--coar-markdown-muted-text:var(--coar-text-neutral-tertiary);--coar-markdown-border:var(--coar-border-neutral-tertiary);--coar-markdown-surface:var(--coar-background-neutral-primary);--coar-markdown-surface-muted:var(--coar-background-neutral-tertiary,var(--coar-background-neutral-primary));--coar-markdown-radius:var(--coar-radius-xs);--coar-markdown-space-1:var(--coar-spacing-s,.5rem);--coar-markdown-space-2:var(--coar-spacing-m,1rem);--coar-markdown-heading-block-start:var(--coar-spacing-xxxl,4rem);color:var(--coar-markdown-text);display:block}.coar-markdown :where(h1,h2,h3,h4,h5,h6){font-family:var(--coar-font-family-title,inherit);color:var(--coar-markdown-text)}.coar-markdown h1{font-size:var(--coar-font-size-xl);font-weight:var(--coar-font-weight-bold);line-height:var(--coar-line-height-tight)}.coar-markdown h2{font-size:var(--coar-font-size-l);font-weight:var(--coar-font-weight-bold);line-height:1.25}.coar-markdown h3{font-size:var(--coar-font-size-m);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-snug)}.coar-markdown h4{font-size:var(--coar-font-size-s);font-weight:var(--coar-font-weight-semi-bold);line-height:1.35}.coar-markdown h5{font-size:var(--coar-font-size-xs);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-normal)}.coar-markdown h6{font-size:var(--coar-font-size-xxs);font-weight:var(--coar-font-weight-medium);line-height:1.45}.coar-markdown-heading,.coar-markdown-paragraph,.coar-markdown-blockquote,.coar-markdown-list,.coar-markdown-code-block,.coar-markdown-table,.coar-markdown-hr{margin:0}.coar-markdown>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host){margin-block:0 var(--coar-markdown-space-2)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-heading-block-start)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-space-1)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6):first-child{margin-block-start:0}.coar-markdown-blockquote{padding-inline:var(--coar-markdown-space-2);border-left:2px solid var(--coar-markdown-border)}.coar-markdown-list{padding-inline-start:var(--coar-spacing-l,1.5rem);list-style-position:outside}.coar-markdown-list--unordered{list-style-type:disc}.coar-markdown-list--ordered{list-style-type:decimal}.coar-markdown-list-item{margin-block:.25em;display:list-item}.coar-markdown-list-item--task{align-items:flex-start;gap:var(--coar-spacing-s,.5rem);list-style:none;display:flex}.coar-markdown-list-item-content{min-width:0}.coar-markdown-task-checkbox{margin-top:.15em}.coar-markdown-code-block,.coar-markdown-code{display:block}.coar-markdown-inline-code{color:var(--coar-text-accent-secondary,var(--coar-markdown-link));background:0 0;border:0;border-radius:0;padding:0}.coar-markdown-link{color:var(--coar-markdown-link);text-decoration:underline}.coar-markdown-image{vertical-align:middle;max-width:100%;height:auto}.coar-markdown :where(table),.coar-markdown-table{border-collapse:collapse;border-spacing:0;width:100%;font-size:var(--coar-body-small-base-size,.9rem);line-height:var(--coar-line-height-relaxed,1.5);display:table}.coar-markdown :where(table thead),.coar-markdown-table>thead{background:var(--coar-markdown-surface-muted)}.coar-markdown :where(table th),.coar-markdown-table>thead th{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;font-weight:var(--coar-font-weight-semi-bold,600);font-size:var(--coar-component-s-font-size,.85em);color:var(--coar-markdown-text);border-bottom:1px solid var(--coar-markdown-border);text-transform:uppercase;letter-spacing:.025em}.coar-markdown :where(table td),.coar-markdown-table>tbody td{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;color:var(--coar-text-neutral-secondary,var(--coar-markdown-text));border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown :where(table tbody tr:nth-child(odd)),.coar-markdown-table>tbody tr:nth-child(odd){background:var(--coar-markdown-surface)}.coar-markdown :where(table tbody tr:nth-child(2n)),.coar-markdown-table>tbody tr:nth-child(2n){background:var(--coar-markdown-surface-muted)}.coar-markdown :where(table tbody tr:last-child td),.coar-markdown-table>tbody tr:last-child td{border-bottom:0}.coar-markdown-table-cell{padding:var(--coar-markdown-space-1);vertical-align:top;border-right:1px solid var(--coar-markdown-border);border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-hr{border:0;border-top:1px solid var(--coar-markdown-border)}.coar-markdown-unsupported,.coar-markdown-unsupported-inline{color:var(--coar-markdown-muted-text);font-style:italic}.coar-markdown-unsupported{padding:var(--coar-markdown-space-1);border:1px dashed var(--coar-markdown-border);border-radius:var(--coar-markdown-radius);background:var(--coar-markdown-surface)}
1
+ .coar-markdown{--coar-markdown-text:var(--coar-text-neutral-primary);--coar-markdown-link:var(--coar-text-brand-primary,var(--coar-text-neutral-primary));--coar-markdown-muted-text:var(--coar-text-neutral-tertiary);--coar-markdown-border:var(--coar-border-neutral-tertiary);--coar-markdown-surface:var(--coar-background-neutral-primary);--coar-markdown-surface-muted:var(--coar-background-neutral-tertiary,var(--coar-background-neutral-primary));--coar-markdown-radius:var(--coar-radius-xs);--coar-markdown-space-1:var(--coar-spacing-s,.5rem);--coar-markdown-space-2:var(--coar-spacing-m,1rem);--coar-markdown-heading-block-start:var(--coar-spacing-xl,2rem);color:var(--coar-markdown-text);display:block}.coar-markdown :where(h1,h2,h3,h4,h5,h6){font-family:var(--coar-font-family-title,inherit);color:var(--coar-markdown-text)}.coar-markdown h1{font-size:var(--coar-font-size-xl);font-weight:var(--coar-font-weight-bold);line-height:var(--coar-line-height-tight)}.coar-markdown h2{font-size:var(--coar-font-size-l);font-weight:var(--coar-font-weight-bold);line-height:1.25}.coar-markdown h3{font-size:var(--coar-font-size-m);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-snug)}.coar-markdown h4{font-size:var(--coar-font-size-s);font-weight:var(--coar-font-weight-semi-bold);line-height:1.35}.coar-markdown h5{font-size:var(--coar-font-size-xs);font-weight:var(--coar-font-weight-semi-bold);line-height:var(--coar-line-height-normal)}.coar-markdown h6{font-size:var(--coar-font-size-xxs);font-weight:var(--coar-font-weight-medium);line-height:1.45}.coar-markdown-heading,.coar-markdown-paragraph,.coar-markdown-blockquote,.coar-markdown-list,.coar-markdown-code-block,.coar-markdown-table,.coar-markdown-hr,.coar-markdown :where(p,blockquote,ul,ol,pre,table,hr){margin:0}.coar-markdown>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host){margin-block:0 var(--coar-markdown-space-2)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-heading-block-start)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6)+:where(h1,h2,h3,h4,h5,h6){margin-block-start:var(--coar-markdown-space-1)}.coar-markdown>:where(h1,h2,h3,h4,h5,h6):first-child,.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6):first-child{margin-block-start:0}.coar-markdown :where(blockquote),.coar-markdown-blockquote{padding-inline:var(--coar-markdown-space-2);border-left:2px solid var(--coar-markdown-border);color:var(--coar-text-neutral-secondary)}.coar-markdown :where(ul,ol),.coar-markdown-list{padding-inline-start:var(--coar-spacing-l,1.5rem);list-style-position:outside}.coar-markdown :where(ul),.coar-markdown-list--unordered{list-style-type:disc}.coar-markdown :where(ol),.coar-markdown-list--ordered{list-style-type:decimal}.coar-markdown :where(li),.coar-markdown-list-item{margin-block:.25em;display:list-item}.coar-markdown :where(li,td,th)>:where(p){margin-block:0}.coar-markdown :where(li[data-item-type=task]){margin-left:-1.25em;padding-left:1.5em;list-style:none;position:relative}.coar-markdown :where(li[data-item-type=task]):before{content:"";border:1.5px solid var(--coar-border-neutral-secondary,var(--coar-border-neutral));border-radius:var(--coar-radius-xs,2px);background:var(--coar-background-neutral-primary);cursor:pointer;box-sizing:border-box;width:14px;height:14px;transition:background-color .1s,border-color .1s;position:absolute;top:.45em;left:0}.coar-markdown :where(li[data-item-type=task][data-checked=true]):before{background:var(--coar-background-accent-primary);border-color:var(--coar-background-accent-primary)}.coar-markdown :where(li[data-item-type=task][data-checked=true]):after{content:"";border-left:2px solid var(--coar-text-on-bold,#fff);border-bottom:2px solid var(--coar-text-on-bold,#fff);pointer-events:none;width:8px;height:5px;position:absolute;top:calc(.45em + 2px);left:3px;transform:rotate(-45deg)}.coar-markdown :where(li[data-item-type=task][data-checked=true])>:where(p){color:var(--coar-text-neutral-tertiary);text-decoration:line-through}.coar-markdown :where(li[data-item-type=task]) input[type=checkbox]{display:none}.coar-markdown-list-item--task{align-items:flex-start;gap:var(--coar-spacing-s,.5rem);list-style:none;display:flex}.coar-markdown-list-item-content{min-width:0}.coar-markdown-task-checkbox{margin-top:.15em}.coar-markdown-code-block,.coar-markdown-code{display:block}.coar-markdown :where(:not(pre)>code),.coar-markdown-inline-code{color:var(--coar-text-accent-secondary,var(--coar-markdown-link));background:0 0;border:0;border-radius:0;padding:0}.coar-markdown :where(a),.coar-markdown-link{color:var(--coar-markdown-link);text-decoration:underline}.coar-markdown-image{vertical-align:middle;max-width:100%;height:auto}.coar-markdown :where(table),.coar-markdown-table{border-collapse:collapse;border-spacing:0;width:100%;font-size:var(--coar-body-small-base-size,.9rem);line-height:var(--coar-line-height-relaxed,1.5);display:table}.coar-markdown :where(table thead,table tr[data-is-header]),.coar-markdown-table>thead{background:var(--coar-markdown-surface-muted)}.coar-markdown :where(table th),.coar-markdown-table>thead th{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;font-weight:var(--coar-font-weight-semi-bold,600);font-size:var(--coar-component-s-font-size,.85em);color:var(--coar-markdown-text);border-bottom:1px solid var(--coar-markdown-border);text-transform:uppercase;letter-spacing:.025em}.coar-markdown :where(table td),.coar-markdown-table>tbody td{padding:.625rem var(--coar-markdown-space-2);text-align:left;vertical-align:top;color:var(--coar-text-neutral-secondary,var(--coar-markdown-text));border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-table>tbody tr:nth-child(odd of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(odd of :not([data-is-header]))){background:var(--coar-markdown-surface)}.coar-markdown-table>tbody tr:nth-child(2n of :not([data-is-header])),.coar-markdown :where(table>tbody tr:nth-child(2n of :not([data-is-header]))){background:var(--coar-markdown-surface-muted)}.coar-markdown-table>tbody tr:last-child td,.coar-markdown :where(table>tbody tr:last-child:not([data-is-header]) td){border-bottom:0}.coar-markdown-table-cell{padding:var(--coar-markdown-space-1);vertical-align:top;border-right:1px solid var(--coar-markdown-border);border-bottom:1px solid var(--coar-markdown-border)}.coar-markdown-hr{border:0;border-top:1px solid var(--coar-markdown-border)}.coar-markdown-unsupported,.coar-markdown-unsupported-inline{color:var(--coar-markdown-muted-text);font-style:italic}.coar-markdown-unsupported{padding:var(--coar-markdown-space-1);border:1px dashed var(--coar-markdown-border);border-radius:var(--coar-markdown-radius);background:var(--coar-markdown-surface)}
2
2
  /*$vite$:1*/
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { default as CoarMarkdown } from './CoarMarkdown.vue';
16
16
  export type { CoarMarkdownProps } from './CoarMarkdown.vue';
17
17
  export { MARKDOWN_RENDERERS_KEY, rendererNameFor } from './registry';
18
18
  export type { MarkdownEditorNodeViewSpec, MarkdownEditorNodeViews, MarkdownRendererName, MarkdownRendererProps, MarkdownViewerRenderers, } from './registry';
19
- export { defaultMarkdownRenderers, DefaultBlockquote, DefaultCodeBlock, DefaultEmphasis, DefaultHeading, DefaultImage, DefaultInlineCode, DefaultLineBreak, DefaultLink, DefaultList, DefaultListItem, DefaultParagraph, DefaultStrikethrough, DefaultStrong, DefaultTable, DefaultTableCell, DefaultTableRow, DefaultText, DefaultThematicBreak, DefaultUnsupported, } from './default-renderers';
19
+ export { defaultMarkdownRenderers, DefaultBlockquote, DefaultCodeBlock, DefaultColorSpan, DefaultEmphasis, DefaultHeading, DefaultImage, DefaultInlineCode, DefaultLineBreak, DefaultLink, DefaultList, DefaultListItem, DefaultParagraph, DefaultStrikethrough, DefaultStrong, DefaultTable, DefaultTableCell, DefaultTableRow, DefaultText, DefaultThematicBreak, DefaultUnsupported, } from './default-renderers';
20
20
  export { RenderNode, renderMarkdownNodes } from './RenderNode';
21
21
  export * from './helpers';
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI/D,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EACV,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI/D,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,71 +1,76 @@
1
1
  import { Fragment as e, createBlock as t, createElementBlock as n, defineComponent as r, h as i, inject as a, openBlock as o, provide as ee, renderList as s, unref as c } from "vue";
2
- import { CoarCodeBlock as l } from "@cocoar/vue-ui";
2
+ import { CoarCodeBlock as te } from "@cocoar/vue-ui";
3
+ import { sanitizeColor as ne } from "@cocoar/vue-markdown-core";
3
4
  //#region src/helpers.ts
4
- function u(e) {
5
+ function l(e) {
5
6
  let t = e.attrs?.depth;
6
7
  if (typeof t != "number") return 1;
7
8
  let n = Math.trunc(t);
8
9
  return n <= 1 ? 1 : n === 2 ? 2 : n === 3 ? 3 : n === 4 ? 4 : n === 5 ? 5 : 6;
9
10
  }
10
- function d(e) {
11
+ function u(e) {
11
12
  let t = e.attrs?.anchor;
12
13
  return typeof t == "string" && t.length > 0 ? t : null;
13
14
  }
14
- function f(e) {
15
+ function d(e) {
15
16
  let t = e.attrs?.language;
16
17
  return typeof t == "string" && t.trim().length > 0 ? t.trim() : "text";
17
18
  }
18
- function p(e) {
19
+ function f(e) {
19
20
  return !!e.attrs?.ordered;
20
21
  }
21
- function m(e) {
22
+ function p(e) {
22
23
  let t = e.attrs?.start;
23
24
  return typeof t == "number" ? t : null;
24
25
  }
25
- function h(e) {
26
+ function m(e) {
26
27
  return typeof e.attrs?.checked == "boolean";
27
28
  }
28
- function g(e) {
29
+ function h(e) {
29
30
  return e.attrs?.checked === !0;
30
31
  }
31
- function _(e) {
32
+ function g(e) {
32
33
  let t = e.attrs?.url;
33
34
  return typeof t == "string" && t.length > 0 ? t : null;
34
35
  }
35
- function v(e) {
36
- let t = _(e);
36
+ function _(e) {
37
+ let t = g(e);
37
38
  return t ? t.startsWith("#") && typeof window < "u" ? `${window.location.pathname}${window.location.search}${t}` : t : null;
38
39
  }
39
- function y(e) {
40
- let t = _(e);
40
+ function v(e) {
41
+ let t = g(e);
41
42
  return t && O(t) ? "_blank" : null;
42
43
  }
43
- function b(e) {
44
- let t = _(e);
44
+ function y(e) {
45
+ let t = g(e);
45
46
  return t && O(t) ? "noopener noreferrer" : null;
46
47
  }
47
- function x(e) {
48
+ function b(e) {
48
49
  let t = e.attrs?.url;
49
50
  return typeof t == "string" && t.trim().length > 0 ? t.trim() : null;
50
51
  }
51
- function S(e) {
52
+ function x(e) {
52
53
  let t = e.attrs?.alt;
53
54
  return typeof t == "string" ? t : "";
54
55
  }
55
- function C(e) {
56
+ function S(e) {
56
57
  let t = e.attrs?.title;
57
58
  return typeof t == "string" && t.trim().length > 0 ? t.trim() : null;
58
59
  }
59
- function w(e, t) {
60
+ function C(e, t) {
60
61
  return D(e, t) === "right";
61
62
  }
62
- function T(e, t) {
63
+ function w(e, t) {
63
64
  return D(e, t) === "center";
64
65
  }
65
- function E(e) {
66
+ function T(e) {
66
67
  let t = e.attrs?.originalType;
67
68
  return typeof t == "string" ? t : String(e.type);
68
69
  }
70
+ function E(e) {
71
+ let t = e.attrs?.color;
72
+ return typeof t == "string" ? ne(t) : null;
73
+ }
69
74
  function D(e, t) {
70
75
  let n = e.attrs?.align;
71
76
  if (!Array.isArray(n)) return null;
@@ -96,7 +101,7 @@ var k = {
96
101
  props: k,
97
102
  setup(e) {
98
103
  return () => {
99
- let t = u(e.node), n = d(e.node);
104
+ let t = l(e.node), n = u(e.node);
100
105
  return i(`h${t}`, {
101
106
  id: n ?? void 0,
102
107
  class: "coar-markdown-heading"
@@ -120,7 +125,7 @@ var k = {
120
125
  props: k,
121
126
  setup(e) {
122
127
  return () => {
123
- let t = p(e.node), n = t ? "ol" : "ul", r = t ? m(e.node) : null;
128
+ let t = f(e.node), n = t ? "ol" : "ul", r = t ? p(e.node) : null;
124
129
  return i(n, {
125
130
  class: ["coar-markdown-list", t ? "coar-markdown-list--ordered" : "coar-markdown-list--unordered"],
126
131
  start: r ?? void 0
@@ -132,25 +137,22 @@ var k = {
132
137
  props: k,
133
138
  setup(e) {
134
139
  return () => {
135
- let t = h(e.node), n = t && g(e.node), r = [];
136
- return t && r.push(i("input", {
137
- class: "coar-markdown-task-checkbox",
138
- type: "checkbox",
139
- checked: n,
140
- disabled: !0,
141
- "aria-hidden": "true",
142
- tabindex: -1
143
- })), r.push(i("div", { class: "coar-markdown-list-item-content" }, e.renderChildren())), i("li", { class: ["coar-markdown-list-item", t ? "coar-markdown-list-item--task" : null] }, r);
140
+ let t = m(e.node), n = t && h(e.node);
141
+ return i("li", {
142
+ class: ["coar-markdown-list-item", t ? "coar-markdown-list-item--task" : null],
143
+ "data-item-type": t ? "task" : void 0,
144
+ "data-checked": t ? n ? "true" : "false" : void 0
145
+ }, e.renderChildren());
144
146
  };
145
147
  }
146
148
  }), F = r({
147
149
  name: "DefaultCodeBlock",
148
150
  props: k,
149
151
  setup(e) {
150
- return () => i(l, {
152
+ return () => i(te, {
151
153
  class: "coar-markdown-code-block",
152
154
  code: e.node.text ?? "",
153
- language: f(e.node),
155
+ language: d(e.node),
154
156
  collapsible: !1,
155
157
  showCopy: !0
156
158
  });
@@ -165,10 +167,10 @@ var k = {
165
167
  let [n, ...r] = t;
166
168
  return i("table", { class: "coar-markdown-table" }, [i("thead", null, [i("tr", null, (n.children ?? []).map((t, n) => i("th", {
167
169
  key: t.id,
168
- class: [w(e.node, n) ? "text-right" : null, T(e.node, n) ? "text-center" : null]
170
+ class: [C(e.node, n) ? "text-right" : null, w(e.node, n) ? "text-center" : null]
169
171
  }, e.renderNodes(t.children ?? []))))]), i("tbody", null, r.map((t) => i("tr", { key: t.id }, (t.children ?? []).map((t, n) => i("td", {
170
172
  key: t.id,
171
- class: [w(e.node, n) ? "text-right" : null, T(e.node, n) ? "text-center" : null]
173
+ class: [C(e.node, n) ? "text-right" : null, w(e.node, n) ? "text-center" : null]
172
174
  }, e.renderNodes(t.children ?? []))))))]);
173
175
  };
174
176
  }
@@ -225,12 +227,12 @@ var k = {
225
227
  props: k,
226
228
  setup(e) {
227
229
  return () => {
228
- let t = v(e.node);
230
+ let t = _(e.node);
229
231
  return t ? i("a", {
230
232
  class: "coar-markdown-link",
231
233
  href: t,
232
- target: y(e.node) ?? void 0,
233
- rel: b(e.node) ?? void 0
234
+ target: v(e.node) ?? void 0,
235
+ rel: y(e.node) ?? void 0
234
236
  }, e.renderChildren()) : e.renderChildren();
235
237
  };
236
238
  }
@@ -239,12 +241,12 @@ var k = {
239
241
  props: k,
240
242
  setup(e) {
241
243
  return () => {
242
- let t = x(e.node);
244
+ let t = b(e.node);
243
245
  return t ? i("img", {
244
246
  class: "coar-markdown-image",
245
247
  src: t,
246
- alt: S(e.node),
247
- title: C(e.node) ?? void 0,
248
+ alt: x(e.node),
249
+ title: S(e.node) ?? void 0,
248
250
  loading: "lazy"
249
251
  }) : null;
250
252
  };
@@ -256,12 +258,24 @@ var k = {
256
258
  return () => i("br");
257
259
  }
258
260
  }), J = r({
261
+ name: "DefaultColorSpan",
262
+ props: k,
263
+ setup(e) {
264
+ return () => {
265
+ let t = E(e.node);
266
+ return i("span", {
267
+ class: "coar-markdown-color",
268
+ style: t ? { color: t } : void 0
269
+ }, e.renderChildren());
270
+ };
271
+ }
272
+ }), Y = r({
259
273
  name: "DefaultUnsupported",
260
274
  props: k,
261
275
  setup(e) {
262
- return () => i("div", { class: "coar-markdown-unsupported" }, `Unsupported markdown node: ${E(e.node)}`);
276
+ return () => i("div", { class: "coar-markdown-unsupported" }, `Unsupported markdown node: ${T(e.node)}`);
263
277
  }
264
- }), Y = {
278
+ }), X = {
265
279
  heading: A,
266
280
  paragraph: j,
267
281
  blockquote: M,
@@ -280,14 +294,15 @@ var k = {
280
294
  link: G,
281
295
  image: K,
282
296
  lineBreak: q,
283
- unsupported: J
297
+ colorSpan: J,
298
+ unsupported: Y
284
299
  };
285
300
  //#endregion
286
301
  //#region src/registry.ts
287
- function X(e) {
288
- return e in Z ? e : "unsupported";
302
+ function Z(e) {
303
+ return e in re ? e : "unsupported";
289
304
  }
290
- var Z = {
305
+ var re = {
291
306
  heading: !0,
292
307
  paragraph: !0,
293
308
  blockquote: !0,
@@ -306,6 +321,7 @@ var Z = {
306
321
  link: !0,
307
322
  image: !0,
308
323
  lineBreak: !0,
324
+ colorSpan: !0,
309
325
  unsupported: !0
310
326
  }, Q = Symbol.for("coar:markdown-renderers"), $ = r({
311
327
  name: "RenderNode",
@@ -320,14 +336,14 @@ var Z = {
320
336
  }
321
337
  },
322
338
  setup(e) {
323
- let t = a(Q, void 0), n = () => e.renderers ?? t ?? Y;
339
+ let t = a(Q, void 0), n = () => e.renderers ?? t ?? X;
324
340
  e.renderers && ee(Q, e.renderers);
325
341
  let r = (e) => e.map((e) => i($, {
326
342
  node: e,
327
343
  key: e.id
328
344
  })), o = () => r(e.node.children ?? []);
329
345
  return () => {
330
- let t = n()[X(e.node.type)];
346
+ let t = n()[Z(e.node.type)];
331
347
  return i(t, {
332
348
  node: e.node,
333
349
  renderChildren: o,
@@ -336,7 +352,7 @@ var Z = {
336
352
  };
337
353
  }
338
354
  });
339
- function te(e, t) {
355
+ function ie(e, t) {
340
356
  return e.map((e) => i($, {
341
357
  node: e,
342
358
  renderers: t,
@@ -345,14 +361,14 @@ function te(e, t) {
345
361
  }
346
362
  //#endregion
347
363
  //#region src/CoarMarkdown.vue?vue&type=script&setup=true&lang.ts
348
- var ne = { class: "coar-markdown" }, re = /* @__PURE__ */ r({
364
+ var ae = { class: "coar-markdown" }, oe = /* @__PURE__ */ r({
349
365
  __name: "CoarMarkdown",
350
366
  props: {
351
367
  doc: {},
352
368
  renderers: {}
353
369
  },
354
370
  setup(r) {
355
- return (i, a) => (o(), n("div", ne, [(o(!0), n(e, null, s(r.doc.nodes, (e) => (o(), t(c($), {
371
+ return (i, a) => (o(), n("div", ae, [(o(!0), n(e, null, s(r.doc.nodes, (e) => (o(), t(c($), {
356
372
  key: e.id,
357
373
  node: e,
358
374
  renderers: r.renderers
@@ -360,4 +376,4 @@ var ne = { class: "coar-markdown" }, re = /* @__PURE__ */ r({
360
376
  }
361
377
  });
362
378
  //#endregion
363
- export { re as CoarMarkdown, M as DefaultBlockquote, F as DefaultCodeBlock, V as DefaultEmphasis, A as DefaultHeading, K as DefaultImage, W as DefaultInlineCode, q as DefaultLineBreak, G as DefaultLink, N as DefaultList, P as DefaultListItem, j as DefaultParagraph, U as DefaultStrikethrough, H as DefaultStrong, I as DefaultTable, R as DefaultTableCell, L as DefaultTableRow, B as DefaultText, z as DefaultThematicBreak, J as DefaultUnsupported, Q as MARKDOWN_RENDERERS_KEY, $ as RenderNode, f as codeBlockLanguage, Y as defaultMarkdownRenderers, d as headingAnchor, u as headingDepth, S as imageAlt, x as imageSrc, C as imageTitle, p as isOrderedList, T as isTableColumnCenterAligned, w as isTableColumnRightAligned, h as isTaskListItem, v as linkHref, b as linkRel, y as linkTarget, _ as linkUrl, m as listStart, te as renderMarkdownNodes, X as rendererNameFor, g as taskChecked, E as unsupportedType };
379
+ export { oe as CoarMarkdown, M as DefaultBlockquote, F as DefaultCodeBlock, J as DefaultColorSpan, V as DefaultEmphasis, A as DefaultHeading, K as DefaultImage, W as DefaultInlineCode, q as DefaultLineBreak, G as DefaultLink, N as DefaultList, P as DefaultListItem, j as DefaultParagraph, U as DefaultStrikethrough, H as DefaultStrong, I as DefaultTable, R as DefaultTableCell, L as DefaultTableRow, B as DefaultText, z as DefaultThematicBreak, Y as DefaultUnsupported, Q as MARKDOWN_RENDERERS_KEY, $ as RenderNode, d as codeBlockLanguage, E as colorSpanColor, X as defaultMarkdownRenderers, u as headingAnchor, l as headingDepth, x as imageAlt, b as imageSrc, S as imageTitle, f as isOrderedList, w as isTableColumnCenterAligned, C as isTableColumnRightAligned, m as isTaskListItem, _ as linkHref, y as linkRel, v as linkTarget, g as linkUrl, p as listStart, ie as renderMarkdownNodes, Z as rendererNameFor, h as taskChecked, T as unsupportedType };
@@ -40,6 +40,7 @@ export interface MarkdownViewerRenderers {
40
40
  link: Component<MarkdownRendererProps>;
41
41
  image: Component<MarkdownRendererProps>;
42
42
  lineBreak: Component<MarkdownRendererProps>;
43
+ colorSpan: Component<MarkdownRendererProps>;
43
44
  unsupported: Component<MarkdownRendererProps>;
44
45
  }
45
46
  export type MarkdownRendererName = keyof MarkdownViewerRenderers;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,YAAY,GAAG,YAAY;IAC9E,IAAI,EAAE,KAAK,CAAC;IACZ,cAAc,EAAE,MAAM,KAAK,EAAE,CAAC;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IAEtC,OAAO,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,UAAU,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,aAAa,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAEhD,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,MAAM,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACzC,aAAa,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAChD,UAAU,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAE5C,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,uBAAuB,CAAC;AAEjE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,oBAAoB,CAIrF;AAYD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,uBAAuB,CAExE,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,KAAK,CAAC,EAAE,0BAA0B,CAAC;CACpC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,YAAY,GAAG,YAAY;IAC9E,IAAI,EAAE,KAAK,CAAC;IACZ,cAAc,EAAE,MAAM,KAAK,EAAE,CAAC;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,KAAK,KAAK,EAAE,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IAEtC,OAAO,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC1C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,UAAU,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,aAAa,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAEhD,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC3C,MAAM,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACzC,aAAa,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAChD,UAAU,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAE5C,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,uBAAuB,CAAC;AAEjE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,oBAAoB,CAIrF;AAaD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,uBAAuB,CAExE,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,KAAK,CAAC,EAAE,0BAA0B,CAAC;CACpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocoar/vue-markdown",
3
- "version": "1.13.1",
3
+ "version": "1.15.0",
4
4
  "description": "Markdown viewer + shared rendering registry for Vue 3. The viewer (`<CoarMarkdown>`) and the editor (`@cocoar/vue-markdown-editor`) consume the same component map so a code block, table, etc. looks identical in both contexts.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -42,10 +42,10 @@
42
42
  "lint": "eslint src/"
43
43
  },
44
44
  "dependencies": {
45
- "@cocoar/vue-markdown-core": "1.13.1"
45
+ "@cocoar/vue-markdown-core": "1.15.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "@cocoar/vue-ui": "1.13.1",
48
+ "@cocoar/vue-ui": "1.15.0",
49
49
  "vue": "^3.5.0"
50
50
  },
51
51
  "devDependencies": {
@@ -33,7 +33,11 @@
33
33
  --coar-markdown-radius: var(--coar-radius-xs);
34
34
  --coar-markdown-space-1: var(--coar-spacing-s, 0.5rem);
35
35
  --coar-markdown-space-2: var(--coar-spacing-m, 1rem);
36
- --coar-markdown-heading-block-start: var(--coar-spacing-xxxl, 4rem);
36
+ /* Block-start margin before top-level headings. Override on `.coar-markdown`
37
+ itself for per-instance tuning. The default sits at `xl` (~32px) — large
38
+ enough to mark sections, small enough that an editor's heading doesn't
39
+ push four lines of whitespace into view. */
40
+ --coar-markdown-heading-block-start: var(--coar-spacing-xl, 2rem);
37
41
 
38
42
  color: var(--coar-markdown-text);
39
43
  }
@@ -79,73 +83,154 @@
79
83
  line-height: 1.45;
80
84
  }
81
85
 
86
+ /* Zero out user-agent margins on every block we render. The bare-element
87
+ `:where(blockquote, ul, ol, table)` half is essential for the editor's
88
+ PM-managed DOM (no `coar-markdown-*` classes), where the browser's
89
+ default `<blockquote>` `margin: 1em 40px` would otherwise indent the
90
+ block far more than the viewer's class-based reset. Vertical rhythm
91
+ then comes solely from the explicit block-spacing rules below. */
82
92
  .coar-markdown-heading,
83
93
  .coar-markdown-paragraph,
84
94
  .coar-markdown-blockquote,
85
95
  .coar-markdown-list,
86
96
  .coar-markdown-code-block,
87
97
  .coar-markdown-table,
88
- .coar-markdown-hr {
98
+ .coar-markdown-hr,
99
+ .coar-markdown :where(p, blockquote, ul, ol, pre, table, hr) {
89
100
  margin: 0;
90
101
  }
91
102
 
103
+ /* Block-spacing rules apply at the document's *top level*. Two selector
104
+ shapes:
105
+ - `.coar-markdown > :where(...)` — the viewer's direct-child layout.
106
+ - `.coar-markdown .ProseMirror > :where(...)` — the editor's PM-managed
107
+ contenteditable. PM inserts a `.milkdown` and a `.ProseMirror` div
108
+ between `.coar-markdown` and the actual blocks, so the viewer's
109
+ `>`-combinator never matched in the editor. Mirroring the rules here
110
+ lets editor and viewer share the same vertical rhythm. */
92
111
  .coar-markdown
93
112
  > :where(
94
- h1,
95
- h2,
96
- h3,
97
- h4,
98
- h5,
99
- h6,
100
- p,
101
- blockquote,
102
- ul,
103
- ol,
104
- pre,
105
- table,
106
- hr,
107
- .coar-code-block-host,
108
- .coar-table-host
113
+ h1, h2, h3, h4, h5, h6, p, blockquote, ul, ol, pre, table, hr,
114
+ .coar-code-block-host, .coar-table-host
115
+ ),
116
+ .coar-markdown .ProseMirror
117
+ > :where(
118
+ h1, h2, h3, h4, h5, h6, p, blockquote, ul, ol, pre, table, hr,
119
+ .coar-code-block-host, .coar-table-host
109
120
  ) {
110
121
  margin-block: 0 var(--coar-markdown-space-2);
111
122
  }
112
123
 
113
- .coar-markdown > :where(h1, h2, h3, h4, h5, h6) {
124
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6),
125
+ .coar-markdown .ProseMirror > :where(h1, h2, h3, h4, h5, h6) {
114
126
  margin-block-start: var(--coar-markdown-heading-block-start);
115
127
  }
116
128
 
117
129
  /* Large section spacing is great, but keep heading hierarchies tight (e.g. h2 -> h3). */
118
- .coar-markdown > :where(h1, h2, h3, h4, h5, h6) + :where(h1, h2, h3, h4, h5, h6) {
130
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6) + :where(h1, h2, h3, h4, h5, h6),
131
+ .coar-markdown .ProseMirror > :where(h1, h2, h3, h4, h5, h6) + :where(h1, h2, h3, h4, h5, h6) {
119
132
  margin-block-start: var(--coar-markdown-space-1);
120
133
  }
121
134
 
122
- .coar-markdown > :where(h1, h2, h3, h4, h5, h6):first-child {
135
+ .coar-markdown > :where(h1, h2, h3, h4, h5, h6):first-child,
136
+ .coar-markdown .ProseMirror > :where(h1, h2, h3, h4, h5, h6):first-child {
123
137
  margin-block-start: 0;
124
138
  }
125
139
 
140
+ /* Bare-element fallbacks (`.coar-markdown :where(blockquote)` etc.) are
141
+ important for parity with the editor's PM-managed DOM, where the
142
+ blocks have no `coar-markdown-*` class — only the surrounding
143
+ `.coar-markdown` wrapper carries one. */
144
+ .coar-markdown :where(blockquote),
126
145
  .coar-markdown-blockquote {
127
146
  padding-inline: var(--coar-markdown-space-2);
128
147
  border-left: 2px solid var(--coar-markdown-border);
148
+ color: var(--coar-text-neutral-secondary);
129
149
  }
130
150
 
151
+ .coar-markdown :where(ul, ol),
131
152
  .coar-markdown-list {
132
153
  padding-inline-start: var(--coar-spacing-l, 1.5rem);
133
154
  list-style-position: outside;
134
155
  }
135
156
 
157
+ .coar-markdown :where(ul),
136
158
  .coar-markdown-list--unordered {
137
159
  list-style-type: disc;
138
160
  }
139
161
 
162
+ .coar-markdown :where(ol),
140
163
  .coar-markdown-list--ordered {
141
164
  list-style-type: decimal;
142
165
  }
143
166
 
167
+ .coar-markdown :where(li),
144
168
  .coar-markdown-list-item {
145
169
  display: list-item;
146
170
  margin-block: 0.25em;
147
171
  }
148
172
 
173
+ /* Strip the user-agent `<p>` margin when ProseMirror wraps cell/list content
174
+ in a paragraph node (the editor's case). The viewer renders cell/list
175
+ text directly, so it isn't affected. Without this, every editor list
176
+ item or table cell is visually one line taller than its viewer pendant
177
+ because the inner `<p>` adds `1em` top + `1em` bottom margin. */
178
+ .coar-markdown :where(li, td, th) > :where(p) {
179
+ margin-block: 0;
180
+ }
181
+
182
+ /* ── GFM task list items ──
183
+ Both the viewer's `DefaultListItem` and the editor's PM-managed list
184
+ render the same DOM shape: `<li data-item-type="task" data-checked="…">`.
185
+ The visual checkbox is a `::before` pseudo-element on the `<li>` (no
186
+ `<input>` involved) so editor and viewer look pixel-identical, and
187
+ completed items get a strikethrough + muted color. */
188
+ .coar-markdown :where(li[data-item-type="task"]) {
189
+ list-style: none;
190
+ margin-left: -1.25em;
191
+ padding-left: 1.5em;
192
+ position: relative;
193
+ }
194
+ .coar-markdown :where(li[data-item-type="task"])::before {
195
+ content: '';
196
+ position: absolute;
197
+ left: 0;
198
+ top: 0.45em;
199
+ width: 14px;
200
+ height: 14px;
201
+ border: 1.5px solid var(--coar-border-neutral-secondary, var(--coar-border-neutral));
202
+ border-radius: var(--coar-radius-xs, 2px);
203
+ background: var(--coar-background-neutral-primary);
204
+ cursor: pointer;
205
+ box-sizing: border-box;
206
+ transition: background-color 0.1s, border-color 0.1s;
207
+ }
208
+ .coar-markdown :where(li[data-item-type="task"][data-checked="true"])::before {
209
+ background: var(--coar-background-accent-primary);
210
+ border-color: var(--coar-background-accent-primary);
211
+ }
212
+ .coar-markdown :where(li[data-item-type="task"][data-checked="true"])::after {
213
+ content: '';
214
+ position: absolute;
215
+ left: 3px;
216
+ top: calc(0.45em + 2px);
217
+ width: 8px;
218
+ height: 5px;
219
+ border-left: 2px solid var(--coar-text-on-bold, #fff);
220
+ border-bottom: 2px solid var(--coar-text-on-bold, #fff);
221
+ transform: rotate(-45deg);
222
+ pointer-events: none;
223
+ }
224
+ .coar-markdown :where(li[data-item-type="task"][data-checked="true"]) > :where(p) {
225
+ color: var(--coar-text-neutral-tertiary);
226
+ text-decoration: line-through;
227
+ }
228
+ /* Hide any native input the schema or renderer may emit — visual is the
229
+ pseudo-element above. */
230
+ .coar-markdown :where(li[data-item-type="task"]) input[type="checkbox"] {
231
+ display: none;
232
+ }
233
+
149
234
  .coar-markdown-list-item--task {
150
235
  list-style: none;
151
236
  display: flex;
@@ -169,6 +254,10 @@
169
254
  display: block;
170
255
  }
171
256
 
257
+ /* Inline code — also targets bare `<code>` (i.e. not inside a `<pre>`) so
258
+ the editor's PM-rendered `<code>` matches the viewer's
259
+ `.coar-markdown-inline-code` without a custom mark schema. */
260
+ .coar-markdown :where(:not(pre) > code),
172
261
  .coar-markdown-inline-code {
173
262
  padding: 0;
174
263
  border: 0;
@@ -177,6 +266,9 @@
177
266
  color: var(--coar-text-accent-secondary, var(--coar-markdown-link));
178
267
  }
179
268
 
269
+ /* Links — same fallback pattern: bare `<a>` inside `.coar-markdown` picks
270
+ up the same color/underline as the viewer's `.coar-markdown-link`. */
271
+ .coar-markdown :where(a),
180
272
  .coar-markdown-link {
181
273
  text-decoration: underline;
182
274
  color: var(--coar-markdown-link);
@@ -188,11 +280,12 @@
188
280
  vertical-align: middle;
189
281
  }
190
282
 
191
- /* Tables — applies to both the viewer's named `.coar-markdown-table` and any
192
- bare `<table>` rendered inside `.coar-markdown` (e.g. the editor's PM-
193
- managed table). Rules use `:where()` so consumers can override without
194
- specificity wars. The visual matches `CoarTable` (zebra rows, header
195
- surface, generous padding) so editor and viewer read the same. */
283
+ /* Tables — applies to both the viewer's named `.coar-markdown-table` (with
284
+ explicit `<thead>`/`<tbody>` wrappers) and the editor's PM-managed table
285
+ (flat `<table><tr data-is-header><th>...</tr><tr><td>...`, no thead/tbody).
286
+ Rules use `:where()` so consumers can override without specificity wars.
287
+ The visual matches `CoarTable` (zebra rows, header surface, generous
288
+ padding) so editor and viewer read the same. */
196
289
  .coar-markdown :where(table),
197
290
  .coar-markdown-table {
198
291
  display: table;
@@ -203,7 +296,9 @@
203
296
  line-height: var(--coar-line-height-relaxed, 1.5);
204
297
  }
205
298
 
206
- .coar-markdown :where(table thead),
299
+ /* Header row background — covers the viewer's `<thead>` *and* the editor's
300
+ `<tr data-is-header>` Milkdown emits. */
301
+ .coar-markdown :where(table thead, table tr[data-is-header]),
207
302
  .coar-markdown-table > thead {
208
303
  background: var(--coar-markdown-surface-muted);
209
304
  }
@@ -230,21 +325,22 @@
230
325
  border-bottom: 1px solid var(--coar-markdown-border);
231
326
  }
232
327
 
233
- /* Zebra stripes — odd rows on the primary surface, even rows on the muted
234
- surface same pattern CoarTable uses by default. */
235
- .coar-markdown :where(table tbody tr:nth-child(odd)),
236
- .coar-markdown-table > tbody tr:nth-child(odd) {
328
+ /* Zebra stripes — `:nth-child(<n> of <selector>)` excludes the editor's
329
+ `<tr data-is-header>` from the alternation index so the first data row
330
+ is "1st" → odd → primary surface in both panes. (Milkdown wraps even
331
+ the header row in `<tbody>`, so we can't rely on tbody-vs-thead alone.) */
332
+ .coar-markdown-table > tbody tr:nth-child(odd of :not([data-is-header])),
333
+ .coar-markdown :where(table > tbody tr:nth-child(odd of :not([data-is-header]))) {
237
334
  background: var(--coar-markdown-surface);
238
335
  }
239
- .coar-markdown :where(table tbody tr:nth-child(even)),
240
- .coar-markdown-table > tbody tr:nth-child(even) {
336
+ .coar-markdown-table > tbody tr:nth-child(even of :not([data-is-header])),
337
+ .coar-markdown :where(table > tbody tr:nth-child(even of :not([data-is-header]))) {
241
338
  background: var(--coar-markdown-surface-muted);
242
339
  }
243
340
 
244
- /* Last row drops its bottom border so it doesn't double-up with any wrapping
245
- container's border. */
246
- .coar-markdown :where(table tbody tr:last-child td),
247
- .coar-markdown-table > tbody tr:last-child td {
341
+ /* Last data row drops its bottom border. */
342
+ .coar-markdown-table > tbody tr:last-child td,
343
+ .coar-markdown :where(table > tbody tr:last-child:not([data-is-header]) td) {
248
344
  border-bottom: 0;
249
345
  }
250
346