@cocoar/vue-markdown 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/default-renderers.d.ts +35 -0
- package/dist/default-renderers.d.ts.map +1 -1
- package/dist/helpers.d.ts +8 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -54
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
- package/styles/markdown-blocks.css +132 -36
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"default-renderers.d.ts","sourceRoot":"","sources":["../src/default-renderers.ts"],"names":[],"mappings":"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"}
|
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
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
19
|
+
function f(e) {
|
|
19
20
|
return !!e.attrs?.ordered;
|
|
20
21
|
}
|
|
21
|
-
function
|
|
22
|
+
function p(e) {
|
|
22
23
|
let t = e.attrs?.start;
|
|
23
24
|
return typeof t == "number" ? t : null;
|
|
24
25
|
}
|
|
25
|
-
function
|
|
26
|
+
function m(e) {
|
|
26
27
|
return typeof e.attrs?.checked == "boolean";
|
|
27
28
|
}
|
|
28
|
-
function
|
|
29
|
+
function h(e) {
|
|
29
30
|
return e.attrs?.checked === !0;
|
|
30
31
|
}
|
|
31
|
-
function
|
|
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
|
|
36
|
-
let t =
|
|
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
|
|
40
|
-
let t =
|
|
40
|
+
function v(e) {
|
|
41
|
+
let t = g(e);
|
|
41
42
|
return t && O(t) ? "_blank" : null;
|
|
42
43
|
}
|
|
43
|
-
function
|
|
44
|
-
let t =
|
|
44
|
+
function y(e) {
|
|
45
|
+
let t = g(e);
|
|
45
46
|
return t && O(t) ? "noopener noreferrer" : null;
|
|
46
47
|
}
|
|
47
|
-
function
|
|
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
|
|
52
|
+
function x(e) {
|
|
52
53
|
let t = e.attrs?.alt;
|
|
53
54
|
return typeof t == "string" ? t : "";
|
|
54
55
|
}
|
|
55
|
-
function
|
|
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
|
|
60
|
+
function C(e, t) {
|
|
60
61
|
return D(e, t) === "right";
|
|
61
62
|
}
|
|
62
|
-
function
|
|
63
|
+
function w(e, t) {
|
|
63
64
|
return D(e, t) === "center";
|
|
64
65
|
}
|
|
65
|
-
function
|
|
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 =
|
|
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 =
|
|
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 =
|
|
136
|
-
return
|
|
137
|
-
class: "coar-markdown-
|
|
138
|
-
type: "
|
|
139
|
-
checked: n
|
|
140
|
-
|
|
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(
|
|
152
|
+
return () => i(te, {
|
|
151
153
|
class: "coar-markdown-code-block",
|
|
152
154
|
code: e.node.text ?? "",
|
|
153
|
-
language:
|
|
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: [
|
|
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: [
|
|
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 =
|
|
230
|
+
let t = _(e.node);
|
|
229
231
|
return t ? i("a", {
|
|
230
232
|
class: "coar-markdown-link",
|
|
231
233
|
href: t,
|
|
232
|
-
target:
|
|
233
|
-
rel:
|
|
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 =
|
|
244
|
+
let t = b(e.node);
|
|
243
245
|
return t ? i("img", {
|
|
244
246
|
class: "coar-markdown-image",
|
|
245
247
|
src: t,
|
|
246
|
-
alt:
|
|
247
|
-
title:
|
|
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: ${
|
|
276
|
+
return () => i("div", { class: "coar-markdown-unsupported" }, `Unsupported markdown node: ${T(e.node)}`);
|
|
263
277
|
}
|
|
264
|
-
}),
|
|
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
|
-
|
|
297
|
+
colorSpan: J,
|
|
298
|
+
unsupported: Y
|
|
284
299
|
};
|
|
285
300
|
//#endregion
|
|
286
301
|
//#region src/registry.ts
|
|
287
|
-
function
|
|
288
|
-
return e in
|
|
302
|
+
function Z(e) {
|
|
303
|
+
return e in re ? e : "unsupported";
|
|
289
304
|
}
|
|
290
|
-
var
|
|
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 ??
|
|
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()[
|
|
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
|
|
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
|
|
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",
|
|
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 {
|
|
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 };
|
package/dist/registry.d.ts
CHANGED
|
@@ -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;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
3
|
+
"version": "1.16.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.
|
|
45
|
+
"@cocoar/vue-markdown-core": "1.16.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@cocoar/vue-ui": "1.
|
|
48
|
+
"@cocoar/vue-ui": "1.16.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
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
h6,
|
|
100
|
-
|
|
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`
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
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 —
|
|
234
|
-
|
|
235
|
-
.
|
|
236
|
-
|
|
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
|
|
240
|
-
.coar-markdown
|
|
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
|
|
245
|
-
|
|
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
|
|