@cocoar/vue-markdown 2.10.0 → 2.12.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/CoarMarkdown.vue.d.ts +7 -0
- package/dist/CoarMarkdown.vue.d.ts.map +1 -1
- package/dist/default-renderers.d.ts +36 -0
- package/dist/default-renderers.d.ts.map +1 -1
- package/dist/embeds.d.ts +116 -0
- package/dist/embeds.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +175 -126
- 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 +26 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MarkdownDocument } from '@cocoar/vue-markdown-core';
|
|
2
2
|
import { MarkdownViewerRenderers } from './registry';
|
|
3
|
+
import { EmbedRegistry } from './embeds';
|
|
3
4
|
export interface CoarMarkdownProps {
|
|
4
5
|
/** The parsed markdown document to render. */
|
|
5
6
|
doc: MarkdownDocument;
|
|
@@ -10,6 +11,12 @@ export interface CoarMarkdownProps {
|
|
|
10
11
|
* `{ ...defaultMarkdownRenderers, codeBlock: MyCustomCodeBlock }`.
|
|
11
12
|
*/
|
|
12
13
|
renderers?: MarkdownViewerRenderers;
|
|
14
|
+
/**
|
|
15
|
+
* Custom-embed registry: maps a `:::key{props}` key to a Vue component.
|
|
16
|
+
* Provided down to the `DefaultEmbed` renderer via inject. An app-wide
|
|
17
|
+
* default can also be set with `app.provide(MARKDOWN_EMBEDS_KEY, ...)`.
|
|
18
|
+
*/
|
|
19
|
+
embeds?: EmbedRegistry;
|
|
13
20
|
}
|
|
14
21
|
declare const _default: import('vue').DefineComponent<CoarMarkdownProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<CoarMarkdownProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
15
22
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoarMarkdown.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdown.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoarMarkdown.vue.d.ts","sourceRoot":"","sources":["../src/CoarMarkdown.vue"],"names":[],"mappings":"AAyFA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,GAAG,EAAE,gBAAgB,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;;AAkED,wBAOG"}
|
|
@@ -607,6 +607,42 @@ export declare const DefaultColorSpan: import('vue').DefineComponent<import('vue
|
|
|
607
607
|
required: true;
|
|
608
608
|
};
|
|
609
609
|
}>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
610
|
+
/**
|
|
611
|
+
* Custom-embed renderer for the `embed` node type (`:::key{props}`). Looks the
|
|
612
|
+
* key up in the embed registry (injected via `MARKDOWN_EMBEDS_KEY`) and renders
|
|
613
|
+
* the registered component with the directive props; an unregistered key shows
|
|
614
|
+
* a labelled placeholder. The actual resolution lives in {@link EmbedRenderer}
|
|
615
|
+
* so the editor's NodeView can reuse it.
|
|
616
|
+
*/
|
|
617
|
+
export declare const DefaultEmbed: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
618
|
+
node: {
|
|
619
|
+
type: PropType<MarkdownNode>;
|
|
620
|
+
required: true;
|
|
621
|
+
};
|
|
622
|
+
renderChildren: {
|
|
623
|
+
type: PropType<() => VNode[]>;
|
|
624
|
+
required: true;
|
|
625
|
+
};
|
|
626
|
+
renderNodes: {
|
|
627
|
+
type: PropType<(nodes: readonly MarkdownNode[]) => VNode[]>;
|
|
628
|
+
required: true;
|
|
629
|
+
};
|
|
630
|
+
}>, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
631
|
+
[key: string]: any;
|
|
632
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
633
|
+
node: {
|
|
634
|
+
type: PropType<MarkdownNode>;
|
|
635
|
+
required: true;
|
|
636
|
+
};
|
|
637
|
+
renderChildren: {
|
|
638
|
+
type: PropType<() => VNode[]>;
|
|
639
|
+
required: true;
|
|
640
|
+
};
|
|
641
|
+
renderNodes: {
|
|
642
|
+
type: PropType<(nodes: readonly MarkdownNode[]) => VNode[]>;
|
|
643
|
+
required: true;
|
|
644
|
+
};
|
|
645
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
610
646
|
/**
|
|
611
647
|
* Block-style fallback for unknown node types. Most "unsupported" nodes that
|
|
612
648
|
* 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;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AA0B9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAe1D;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;cAlBL,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;;;iGAsCzE,CAAC;AAEH,eAAO,MAAM,cAAc;;cA9CD,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;;;iGAsDzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cA9DH,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;;;iGA8DzE,CAAC;AAEH,eAAO,MAAM,iBAAiB;;cAtEJ,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;;;iGAsEzE,CAAC;AAEH,eAAO,MAAM,WAAW;;cA9EE,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;;;iGA6FzE,CAAC;AAEH,eAAO,MAAM,eAAe;;cArGF,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;;;iGAyHzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cAjIH,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;;;iGAyIzE,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;cA9JC,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;;;iGAkNzE,CAAC;AAIH,eAAO,MAAM,eAAe;;cA5NF,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;;;iGA4NzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cApOH,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;;;iGAoOzE,CAAC;AAEH,eAAO,MAAM,oBAAoB;;cA5OP,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;;;iGA4OzE,CAAC;AAIH,eAAO,MAAM,WAAW;;cAtPE,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;;;iGAsPzE,CAAC;AAEH,eAAO,MAAM,eAAe;;cA9PF,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;;;iGA8PzE,CAAC;AAEH,eAAO,MAAM,aAAa;;cAtQA,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;;;iGAsQzE,CAAC;AAEH,eAAO,MAAM,oBAAoB;;cA9QP,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;;;iGA8QzE,CAAC;AAEH,eAAO,MAAM,iBAAiB;;cAtRJ,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;;;iGAuRzE,CAAC;AAEH,eAAO,MAAM,WAAW;;cA/RE,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+SzE,CAAC;AAEH,eAAO,MAAM,YAAY;;cAvTC,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;;;iGAiUzE,CAAC;AAEH,eAAO,MAAM,gBAAgB;;cAzUH,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;;;iGAyUzE,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;cAvVH,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;;;iGAiWzE,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;;cAhXC,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;;;iGAsXzE,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;cAtYL,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;;;iGA2YzE,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,uBAuBtC,CAAC"}
|
package/dist/embeds.d.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Component, InjectionKey, PropType } from 'vue';
|
|
2
|
+
import { toEmbedProps } from '@cocoar/vue-markdown-core';
|
|
3
|
+
/**
|
|
4
|
+
* Insert affordance for an embed (future toolbar / slash-command entry). Data +
|
|
5
|
+
* callbacks only — deliberately free of Milkdown/ProseMirror types so this
|
|
6
|
+
* contract can live in the shared viewer package the editor also consumes.
|
|
7
|
+
*/
|
|
8
|
+
export interface EmbedInsertIntegration {
|
|
9
|
+
/** Label for an insert menu / toolbar entry. */
|
|
10
|
+
label?: string;
|
|
11
|
+
/** Optional icon (name or emoji) for the insert affordance. */
|
|
12
|
+
icon?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Produce the attributes for a NEW embed of this key — e.g. open a picker.
|
|
15
|
+
* Resolve `null` to cancel. When omitted, the editor inserts a bare `:::key`.
|
|
16
|
+
*/
|
|
17
|
+
pick?: () => Promise<Record<string, string> | null> | Record<string, string> | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The write-back channel handed to an embed's **editor** component. This is the
|
|
21
|
+
* whole point of an editor (vs. the read-only viewer): it can change the
|
|
22
|
+
* directive attributes, and those changes round-trip into the `:::key{props}`
|
|
23
|
+
* markdown. There is no other way to mutate an embed — the viewer can't, because
|
|
24
|
+
* it renders an immutable parsed document.
|
|
25
|
+
*
|
|
26
|
+
* `T` lets a specific embed type its own attribute bag (e.g.
|
|
27
|
+
* `EmbedEditorController<{ id: string; zoom: string }>`).
|
|
28
|
+
*/
|
|
29
|
+
export interface EmbedEditorController<T extends Record<string, string> = Record<string, string>> {
|
|
30
|
+
/** Current directive attributes (re-supplied whenever the node changes). */
|
|
31
|
+
readonly props: Readonly<T>;
|
|
32
|
+
/** Replace the whole attribute bag — writes back to the markdown. */
|
|
33
|
+
update(next: T): void;
|
|
34
|
+
/** Merge a partial patch over the current attributes (the common case). */
|
|
35
|
+
patch(partial: Partial<T>): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Props an embed editor component receives — a SINGLE typed `controller`, no
|
|
39
|
+
* magic `v-model` emit string. Type your editor with it:
|
|
40
|
+
* `defineProps<EmbedEditorProps>()` (or `EmbedEditorProps<MyAttrs>`), then call
|
|
41
|
+
* `controller.patch({ ... })` / `controller.update({ ... })` to write back.
|
|
42
|
+
*/
|
|
43
|
+
export interface EmbedEditorProps<T extends Record<string, string> = Record<string, string>> {
|
|
44
|
+
controller: EmbedEditorController<T>;
|
|
45
|
+
}
|
|
46
|
+
/** One registry entry: a required read-only viewer + optional editable editor. */
|
|
47
|
+
export interface EmbedDefinition {
|
|
48
|
+
/** Read-only render for this key — used by the viewer AND as the editor's
|
|
49
|
+
* fallback when no editable `editor` component is supplied. */
|
|
50
|
+
viewer: Component;
|
|
51
|
+
/**
|
|
52
|
+
* Editable variant mounted inside the editor NodeView. Receives a single
|
|
53
|
+
* {@link EmbedEditorProps} `controller` prop and writes attribute changes back
|
|
54
|
+
* through it. When omitted, the editor shows the read-only `viewer` instead.
|
|
55
|
+
*
|
|
56
|
+
* Typed `Component<EmbedEditorProps>` as a best-effort hint — Vue can't fully
|
|
57
|
+
* enforce a registered component's prop shape at this boundary, but the
|
|
58
|
+
* controller makes the write contract explicit and impossible to mis-name.
|
|
59
|
+
*/
|
|
60
|
+
editor?: Component<EmbedEditorProps>;
|
|
61
|
+
/** Optional insert affordance (toolbar / slash) — not yet wired. */
|
|
62
|
+
insert?: EmbedInsertIntegration;
|
|
63
|
+
}
|
|
64
|
+
/** Map of embed `key` (the bit after `:::`) → its definition. */
|
|
65
|
+
export type EmbedRegistry = Record<string, EmbedDefinition>;
|
|
66
|
+
/** Vue inject key. Set via `<CoarMarkdown :embeds>` or `app.provide`. */
|
|
67
|
+
export declare const MARKDOWN_EMBEDS_KEY: InjectionKey<EmbedRegistry>;
|
|
68
|
+
/** Look up a definition, tolerating an undefined registry. */
|
|
69
|
+
export declare function resolveEmbed(registry: EmbedRegistry | undefined, key: string): EmbedDefinition | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Renders one embed: resolves the registry (explicit prop > injected), looks up
|
|
72
|
+
* the key, and renders the registered component with the directive props spread
|
|
73
|
+
* straight through. An unregistered key degrades to a labelled placeholder
|
|
74
|
+
* instead of vanishing — the author still sees that an embed is there.
|
|
75
|
+
*
|
|
76
|
+
* Shared by the viewer's `DefaultEmbed` node renderer (registry via inject) and
|
|
77
|
+
* the editor's NodeView (registry passed explicitly, since a manually-mounted
|
|
78
|
+
* NodeView doesn't inherit component-level provides).
|
|
79
|
+
*/
|
|
80
|
+
export declare const EmbedRenderer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
81
|
+
embedKey: {
|
|
82
|
+
type: StringConstructor;
|
|
83
|
+
required: true;
|
|
84
|
+
};
|
|
85
|
+
embedProps: {
|
|
86
|
+
type: PropType<Record<string, string>>;
|
|
87
|
+
default: () => {};
|
|
88
|
+
};
|
|
89
|
+
/** Explicit registry — wins over the injected one. */
|
|
90
|
+
registry: {
|
|
91
|
+
type: PropType<EmbedRegistry>;
|
|
92
|
+
default: undefined;
|
|
93
|
+
};
|
|
94
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
95
|
+
[key: string]: any;
|
|
96
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
97
|
+
embedKey: {
|
|
98
|
+
type: StringConstructor;
|
|
99
|
+
required: true;
|
|
100
|
+
};
|
|
101
|
+
embedProps: {
|
|
102
|
+
type: PropType<Record<string, string>>;
|
|
103
|
+
default: () => {};
|
|
104
|
+
};
|
|
105
|
+
/** Explicit registry — wins over the injected one. */
|
|
106
|
+
registry: {
|
|
107
|
+
type: PropType<EmbedRegistry>;
|
|
108
|
+
default: undefined;
|
|
109
|
+
};
|
|
110
|
+
}>> & Readonly<{}>, {
|
|
111
|
+
embedProps: Record<string, string>;
|
|
112
|
+
registry: EmbedRegistry;
|
|
113
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
114
|
+
/** Re-export the core coercion helper so renderers needn't import core directly. */
|
|
115
|
+
export { toEmbedProps };
|
|
116
|
+
//# sourceMappingURL=embeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeds.d.ts","sourceRoot":"","sources":["../src/embeds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACrF;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC9F,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,qEAAqE;IACrE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,2EAA2E;IAC3E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACzF,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B;oEACgE;IAChE,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACrC,oEAAoE;IACpE,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE5D,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,aAAa,CAE3D,CAAC;AAEF,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,GAAG,EAAE,MAAM,GACV,eAAe,GAAG,SAAS,CAE7B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa;;;;;;cAKJ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;IAGlD,sDAAsD;;cAC1B,QAAQ,CAAC,aAAa,CAAC;;;;;;;;;;;cAJjC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;IAGlD,sDAAsD;;cAC1B,QAAQ,CAAC,aAAa,CAAC;;;;;;4EAiCrD,CAAC;AAEH,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
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-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-frontmatter),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter){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)}.coar-markdown-frontmatter{color:var(--coar-color-gray-400,silver);font-style:italic}.coar-markdown-frontmatter__entry{overflow-wrap:anywhere}.coar-markdown-frontmatter__raw{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;color:inherit;margin:0;font-style:italic}
|
|
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-frontmatter),.coar-markdown .ProseMirror>:where(h1,h2,h3,h4,h5,h6,p,blockquote,ul,ol,pre,table,hr,.coar-code-block-host,.coar-table-host,.coar-markdown-frontmatter){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)}.coar-markdown-frontmatter{color:var(--coar-color-gray-400,silver);font-style:italic}.coar-markdown-frontmatter__entry{overflow-wrap:anywhere}.coar-markdown-frontmatter__raw{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;color:inherit;margin:0;font-style:italic}.coar-markdown-embed{margin:var(--coar-markdown-block-gap,1em) 0}.coar-markdown-embed--unknown{border:1px dashed var(--coar-border-neutral,#d4d4d4);border-radius:var(--coar-markdown-radius,8px);background:var(--coar-background-neutral-secondary,#f5f5f5);color:var(--coar-text-neutral-secondary,#666);align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.coar-markdown-embed__icon{font-size:16px;line-height:1}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,9 @@ 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, DefaultColorSpan, DefaultEmphasis, DefaultFrontmatter, 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, DefaultEmbed, DefaultEmphasis, DefaultFrontmatter, 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
|
+
export { EmbedRenderer, MARKDOWN_EMBEDS_KEY, resolveEmbed, toEmbedProps, } from './embeds';
|
|
22
|
+
export type { EmbedDefinition, EmbedEditorController, EmbedEditorProps, EmbedInsertIntegration, EmbedRegistry, } from './embeds';
|
|
21
23
|
export * from './helpers';
|
|
22
24
|
//# 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,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,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;
|
|
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,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,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;AAK/D,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,GACd,MAAM,UAAU,CAAC;AAIlB,cAAc,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,97 +1,133 @@
|
|
|
1
|
-
import { Fragment as e, createBlock as t, createElementBlock as n, defineComponent as r, h as i, inject as ee, openBlock as a, provide as
|
|
2
|
-
import { CoarCodeBlock as
|
|
3
|
-
import { sanitizeColor as ae } from "@cocoar/vue-markdown-core";
|
|
1
|
+
import { Fragment as e, createBlock as t, createElementBlock as n, defineComponent as r, h as i, inject as ee, openBlock as a, provide as o, renderList as te, unref as ne } from "vue";
|
|
2
|
+
import { CoarCodeBlock as re } from "@cocoar/vue-ui";
|
|
3
|
+
import { sanitizeColor as ie, toEmbedProps as ae } from "@cocoar/vue-markdown-core";
|
|
4
|
+
//#region src/embeds.ts
|
|
5
|
+
var s = Symbol.for("coar:markdown-embeds");
|
|
6
|
+
function c(e, t) {
|
|
7
|
+
return e ? e[t] : void 0;
|
|
8
|
+
}
|
|
9
|
+
var l = r({
|
|
10
|
+
name: "CoarMarkdownEmbed",
|
|
11
|
+
props: {
|
|
12
|
+
embedKey: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: !0
|
|
15
|
+
},
|
|
16
|
+
embedProps: {
|
|
17
|
+
type: Object,
|
|
18
|
+
default: () => ({})
|
|
19
|
+
},
|
|
20
|
+
registry: {
|
|
21
|
+
type: Object,
|
|
22
|
+
default: void 0
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
setup(e) {
|
|
26
|
+
let t = ee(s, void 0);
|
|
27
|
+
return () => {
|
|
28
|
+
let n = c(e.registry ?? t, e.embedKey);
|
|
29
|
+
return n ? i("div", {
|
|
30
|
+
class: "coar-markdown-embed",
|
|
31
|
+
"data-embed-key": e.embedKey
|
|
32
|
+
}, [i(n.viewer, { ...e.embedProps })]) : i("div", {
|
|
33
|
+
class: "coar-markdown-embed coar-markdown-embed--unknown",
|
|
34
|
+
"data-embed-key": e.embedKey
|
|
35
|
+
}, [i("span", { class: "coar-markdown-embed__icon" }, "🧩"), i("span", { class: "coar-markdown-embed__label" }, `Unknown embed: :::${e.embedKey}`)]);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//#endregion
|
|
4
40
|
//#region src/helpers.ts
|
|
5
|
-
function
|
|
41
|
+
function u(e) {
|
|
6
42
|
let t = e.attrs?.depth;
|
|
7
43
|
if (typeof t != "number") return 1;
|
|
8
44
|
let n = Math.trunc(t);
|
|
9
45
|
return n <= 1 ? 1 : n === 2 ? 2 : n === 3 ? 3 : n === 4 ? 4 : n === 5 ? 5 : 6;
|
|
10
46
|
}
|
|
11
|
-
function
|
|
47
|
+
function d(e) {
|
|
12
48
|
let t = e.attrs?.anchor;
|
|
13
49
|
return typeof t == "string" && t.length > 0 ? t : null;
|
|
14
50
|
}
|
|
15
|
-
function
|
|
51
|
+
function f(e) {
|
|
16
52
|
let t = e.attrs?.language;
|
|
17
53
|
return typeof t == "string" && t.trim().length > 0 ? t.trim() : "text";
|
|
18
54
|
}
|
|
19
|
-
function
|
|
55
|
+
function p(e) {
|
|
20
56
|
return !!e.attrs?.ordered;
|
|
21
57
|
}
|
|
22
|
-
function
|
|
58
|
+
function m(e) {
|
|
23
59
|
let t = e.attrs?.start;
|
|
24
60
|
return typeof t == "number" ? t : null;
|
|
25
61
|
}
|
|
26
|
-
function
|
|
62
|
+
function h(e) {
|
|
27
63
|
return typeof e.attrs?.checked == "boolean";
|
|
28
64
|
}
|
|
29
|
-
function
|
|
65
|
+
function g(e) {
|
|
30
66
|
return e.attrs?.checked === !0;
|
|
31
67
|
}
|
|
32
|
-
function
|
|
68
|
+
function _(e) {
|
|
33
69
|
let t = e.attrs?.url;
|
|
34
70
|
return typeof t == "string" && t.length > 0 ? t : null;
|
|
35
71
|
}
|
|
36
|
-
function
|
|
37
|
-
let t =
|
|
72
|
+
function v(e) {
|
|
73
|
+
let t = _(e);
|
|
38
74
|
return t ? t.startsWith("#") && typeof window < "u" ? `${window.location.pathname}${window.location.search}${t}` : t : null;
|
|
39
75
|
}
|
|
40
|
-
function
|
|
41
|
-
let t =
|
|
42
|
-
return t &&
|
|
76
|
+
function y(e) {
|
|
77
|
+
let t = _(e);
|
|
78
|
+
return t && oe(t) ? "_blank" : null;
|
|
43
79
|
}
|
|
44
|
-
function
|
|
45
|
-
let t =
|
|
46
|
-
return t &&
|
|
80
|
+
function b(e) {
|
|
81
|
+
let t = _(e);
|
|
82
|
+
return t && oe(t) ? "noopener noreferrer" : null;
|
|
47
83
|
}
|
|
48
|
-
function
|
|
84
|
+
function x(e) {
|
|
49
85
|
let t = e.attrs?.url;
|
|
50
86
|
return typeof t == "string" && t.trim().length > 0 ? t.trim() : null;
|
|
51
87
|
}
|
|
52
|
-
function
|
|
88
|
+
function S(e) {
|
|
53
89
|
let t = e.attrs?.alt;
|
|
54
90
|
return typeof t == "string" ? t : "";
|
|
55
91
|
}
|
|
56
|
-
function
|
|
92
|
+
function C(e) {
|
|
57
93
|
let t = e.attrs?.title;
|
|
58
94
|
return typeof t == "string" && t.trim().length > 0 ? t.trim() : null;
|
|
59
95
|
}
|
|
60
|
-
function
|
|
61
|
-
return
|
|
96
|
+
function w(e, t) {
|
|
97
|
+
return A(e, t) === "right";
|
|
62
98
|
}
|
|
63
|
-
function
|
|
64
|
-
return
|
|
99
|
+
function T(e, t) {
|
|
100
|
+
return A(e, t) === "center";
|
|
65
101
|
}
|
|
66
|
-
function
|
|
102
|
+
function E(e) {
|
|
67
103
|
let t = e.attrs?.originalType;
|
|
68
104
|
return typeof t == "string" ? t : String(e.type);
|
|
69
105
|
}
|
|
70
|
-
function
|
|
106
|
+
function D(e) {
|
|
71
107
|
let t = e.attrs?.entries;
|
|
72
108
|
return Array.isArray(t) ? t.filter((e) => !!e && typeof e == "object" && typeof e.key == "string" && typeof e.value == "string") : [];
|
|
73
109
|
}
|
|
74
|
-
function
|
|
110
|
+
function O(e) {
|
|
75
111
|
let t = e.attrs?.raw;
|
|
76
112
|
return typeof t == "string" ? t : "";
|
|
77
113
|
}
|
|
78
|
-
function
|
|
114
|
+
function k(e) {
|
|
79
115
|
let t = e.attrs?.color;
|
|
80
|
-
return typeof t == "string" ?
|
|
116
|
+
return typeof t == "string" ? ie(t) : null;
|
|
81
117
|
}
|
|
82
|
-
function
|
|
118
|
+
function A(e, t) {
|
|
83
119
|
let n = e.attrs?.align;
|
|
84
120
|
if (!Array.isArray(n)) return null;
|
|
85
121
|
let r = n[t];
|
|
86
122
|
return r === "left" || r === "right" || r === "center" ? r : null;
|
|
87
123
|
}
|
|
88
|
-
function
|
|
124
|
+
function oe(e) {
|
|
89
125
|
let t = e.trim();
|
|
90
126
|
return t.startsWith("#") || t.startsWith("/") || t.startsWith("./") || t.startsWith("../") || t.startsWith("mailto:") || t.startsWith("tel:") ? !1 : t.startsWith("http://") || t.startsWith("https://");
|
|
91
127
|
}
|
|
92
128
|
//#endregion
|
|
93
129
|
//#region src/default-renderers.ts
|
|
94
|
-
var
|
|
130
|
+
var j = {
|
|
95
131
|
node: {
|
|
96
132
|
type: Object,
|
|
97
133
|
required: !0
|
|
@@ -104,16 +140,16 @@ var O = {
|
|
|
104
140
|
type: Function,
|
|
105
141
|
required: !0
|
|
106
142
|
}
|
|
107
|
-
},
|
|
143
|
+
}, M = r({
|
|
108
144
|
name: "DefaultFrontmatter",
|
|
109
|
-
props:
|
|
145
|
+
props: j,
|
|
110
146
|
setup(e) {
|
|
111
147
|
return () => {
|
|
112
|
-
let t =
|
|
148
|
+
let t = D(e.node);
|
|
113
149
|
return t.length === 0 ? i("div", {
|
|
114
150
|
class: "coar-markdown-frontmatter",
|
|
115
151
|
"aria-label": "Document metadata"
|
|
116
|
-
}, [i("pre", { class: "coar-markdown-frontmatter__raw" },
|
|
152
|
+
}, [i("pre", { class: "coar-markdown-frontmatter__raw" }, O(e.node))]) : i("div", {
|
|
117
153
|
class: "coar-markdown-frontmatter",
|
|
118
154
|
role: "group",
|
|
119
155
|
"aria-label": "Document metadata"
|
|
@@ -127,48 +163,48 @@ var O = {
|
|
|
127
163
|
])));
|
|
128
164
|
};
|
|
129
165
|
}
|
|
130
|
-
}),
|
|
166
|
+
}), N = r({
|
|
131
167
|
name: "DefaultHeading",
|
|
132
|
-
props:
|
|
168
|
+
props: j,
|
|
133
169
|
setup(e) {
|
|
134
170
|
return () => {
|
|
135
|
-
let t =
|
|
171
|
+
let t = u(e.node), n = d(e.node);
|
|
136
172
|
return i(`h${t}`, {
|
|
137
173
|
id: n ?? void 0,
|
|
138
174
|
class: "coar-markdown-heading"
|
|
139
175
|
}, e.renderChildren());
|
|
140
176
|
};
|
|
141
177
|
}
|
|
142
|
-
}),
|
|
178
|
+
}), P = r({
|
|
143
179
|
name: "DefaultParagraph",
|
|
144
|
-
props:
|
|
180
|
+
props: j,
|
|
145
181
|
setup(e) {
|
|
146
182
|
return () => i("p", { class: "coar-markdown-paragraph" }, e.renderChildren());
|
|
147
183
|
}
|
|
148
|
-
}),
|
|
184
|
+
}), F = r({
|
|
149
185
|
name: "DefaultBlockquote",
|
|
150
|
-
props:
|
|
186
|
+
props: j,
|
|
151
187
|
setup(e) {
|
|
152
188
|
return () => i("blockquote", { class: "coar-markdown-blockquote" }, e.renderChildren());
|
|
153
189
|
}
|
|
154
|
-
}),
|
|
190
|
+
}), I = r({
|
|
155
191
|
name: "DefaultList",
|
|
156
|
-
props:
|
|
192
|
+
props: j,
|
|
157
193
|
setup(e) {
|
|
158
194
|
return () => {
|
|
159
|
-
let t =
|
|
195
|
+
let t = p(e.node), n = t ? "ol" : "ul", r = t ? m(e.node) : null;
|
|
160
196
|
return i(n, {
|
|
161
197
|
class: ["coar-markdown-list", t ? "coar-markdown-list--ordered" : "coar-markdown-list--unordered"],
|
|
162
198
|
start: r ?? void 0
|
|
163
199
|
}, e.renderChildren());
|
|
164
200
|
};
|
|
165
201
|
}
|
|
166
|
-
}),
|
|
202
|
+
}), L = r({
|
|
167
203
|
name: "DefaultListItem",
|
|
168
|
-
props:
|
|
204
|
+
props: j,
|
|
169
205
|
setup(e) {
|
|
170
206
|
return () => {
|
|
171
|
-
let t =
|
|
207
|
+
let t = h(e.node), n = t && g(e.node);
|
|
172
208
|
return i("li", {
|
|
173
209
|
class: ["coar-markdown-list-item", t ? "coar-markdown-list-item--task" : null],
|
|
174
210
|
"data-item-type": t ? "task" : void 0,
|
|
@@ -176,21 +212,21 @@ var O = {
|
|
|
176
212
|
}, e.renderChildren());
|
|
177
213
|
};
|
|
178
214
|
}
|
|
179
|
-
}),
|
|
215
|
+
}), R = r({
|
|
180
216
|
name: "DefaultCodeBlock",
|
|
181
|
-
props:
|
|
217
|
+
props: j,
|
|
182
218
|
setup(e) {
|
|
183
|
-
return () => i(
|
|
219
|
+
return () => i(re, {
|
|
184
220
|
class: "coar-markdown-code-block",
|
|
185
221
|
code: e.node.text ?? "",
|
|
186
|
-
language:
|
|
222
|
+
language: f(e.node),
|
|
187
223
|
collapsible: !1,
|
|
188
224
|
showCopy: !0
|
|
189
225
|
});
|
|
190
226
|
}
|
|
191
|
-
}),
|
|
227
|
+
}), z = r({
|
|
192
228
|
name: "DefaultTable",
|
|
193
|
-
props:
|
|
229
|
+
props: j,
|
|
194
230
|
setup(e) {
|
|
195
231
|
return () => {
|
|
196
232
|
let t = e.node.children ?? [];
|
|
@@ -198,143 +234,153 @@ var O = {
|
|
|
198
234
|
let [n, ...r] = t;
|
|
199
235
|
return i("table", { class: "coar-markdown-table" }, [i("thead", null, [i("tr", null, (n.children ?? []).map((t, n) => i("th", {
|
|
200
236
|
key: t.id,
|
|
201
|
-
class: [
|
|
237
|
+
class: [w(e.node, n) ? "text-right" : null, T(e.node, n) ? "text-center" : null]
|
|
202
238
|
}, e.renderNodes(t.children ?? []))))]), i("tbody", null, r.map((t) => i("tr", { key: t.id }, (t.children ?? []).map((t, n) => i("td", {
|
|
203
239
|
key: t.id,
|
|
204
|
-
class: [
|
|
240
|
+
class: [w(e.node, n) ? "text-right" : null, T(e.node, n) ? "text-center" : null]
|
|
205
241
|
}, e.renderNodes(t.children ?? []))))))]);
|
|
206
242
|
};
|
|
207
243
|
}
|
|
208
|
-
}),
|
|
244
|
+
}), B = r({
|
|
209
245
|
name: "DefaultTableRow",
|
|
210
|
-
props:
|
|
246
|
+
props: j,
|
|
211
247
|
setup(e) {
|
|
212
248
|
return () => i("tr", null, e.renderChildren());
|
|
213
249
|
}
|
|
214
|
-
}),
|
|
250
|
+
}), V = r({
|
|
215
251
|
name: "DefaultTableCell",
|
|
216
|
-
props:
|
|
252
|
+
props: j,
|
|
217
253
|
setup(e) {
|
|
218
254
|
return () => i("td", { class: "coar-markdown-table-cell" }, e.renderChildren());
|
|
219
255
|
}
|
|
220
|
-
}),
|
|
256
|
+
}), H = r({
|
|
221
257
|
name: "DefaultThematicBreak",
|
|
222
|
-
props:
|
|
258
|
+
props: j,
|
|
223
259
|
setup() {
|
|
224
260
|
return () => i("hr", { class: "coar-markdown-hr" });
|
|
225
261
|
}
|
|
226
|
-
}),
|
|
262
|
+
}), U = r({
|
|
227
263
|
name: "DefaultText",
|
|
228
|
-
props:
|
|
264
|
+
props: j,
|
|
229
265
|
setup(e) {
|
|
230
266
|
return () => e.node.text ?? "";
|
|
231
267
|
}
|
|
232
|
-
}),
|
|
268
|
+
}), W = r({
|
|
233
269
|
name: "DefaultEmphasis",
|
|
234
|
-
props:
|
|
270
|
+
props: j,
|
|
235
271
|
setup(e) {
|
|
236
272
|
return () => i("em", null, e.renderChildren());
|
|
237
273
|
}
|
|
238
|
-
}),
|
|
274
|
+
}), G = r({
|
|
239
275
|
name: "DefaultStrong",
|
|
240
|
-
props:
|
|
276
|
+
props: j,
|
|
241
277
|
setup(e) {
|
|
242
278
|
return () => i("strong", null, e.renderChildren());
|
|
243
279
|
}
|
|
244
|
-
}),
|
|
280
|
+
}), K = r({
|
|
245
281
|
name: "DefaultStrikethrough",
|
|
246
|
-
props:
|
|
282
|
+
props: j,
|
|
247
283
|
setup(e) {
|
|
248
284
|
return () => i("del", null, e.renderChildren());
|
|
249
285
|
}
|
|
250
|
-
}),
|
|
286
|
+
}), q = r({
|
|
251
287
|
name: "DefaultInlineCode",
|
|
252
|
-
props:
|
|
288
|
+
props: j,
|
|
253
289
|
setup(e) {
|
|
254
290
|
return () => i("code", { class: "coar-markdown-inline-code" }, e.node.text ?? "");
|
|
255
291
|
}
|
|
256
|
-
}),
|
|
292
|
+
}), J = r({
|
|
257
293
|
name: "DefaultLink",
|
|
258
|
-
props:
|
|
294
|
+
props: j,
|
|
259
295
|
setup(e) {
|
|
260
296
|
return () => {
|
|
261
|
-
let t =
|
|
297
|
+
let t = v(e.node);
|
|
262
298
|
return t ? i("a", {
|
|
263
299
|
class: "coar-markdown-link",
|
|
264
300
|
href: t,
|
|
265
|
-
target:
|
|
266
|
-
rel:
|
|
301
|
+
target: y(e.node) ?? void 0,
|
|
302
|
+
rel: b(e.node) ?? void 0
|
|
267
303
|
}, e.renderChildren()) : e.renderChildren();
|
|
268
304
|
};
|
|
269
305
|
}
|
|
270
|
-
}),
|
|
306
|
+
}), Y = r({
|
|
271
307
|
name: "DefaultImage",
|
|
272
|
-
props:
|
|
308
|
+
props: j,
|
|
273
309
|
setup(e) {
|
|
274
310
|
return () => {
|
|
275
|
-
let t =
|
|
311
|
+
let t = x(e.node);
|
|
276
312
|
return t ? i("img", {
|
|
277
313
|
class: "coar-markdown-image",
|
|
278
314
|
src: t,
|
|
279
|
-
alt:
|
|
280
|
-
title:
|
|
315
|
+
alt: S(e.node),
|
|
316
|
+
title: C(e.node) ?? void 0,
|
|
281
317
|
loading: "lazy"
|
|
282
318
|
}) : null;
|
|
283
319
|
};
|
|
284
320
|
}
|
|
285
|
-
}),
|
|
321
|
+
}), X = r({
|
|
286
322
|
name: "DefaultLineBreak",
|
|
287
|
-
props:
|
|
323
|
+
props: j,
|
|
288
324
|
setup() {
|
|
289
325
|
return () => i("br");
|
|
290
326
|
}
|
|
291
|
-
}),
|
|
327
|
+
}), Z = r({
|
|
292
328
|
name: "DefaultColorSpan",
|
|
293
|
-
props:
|
|
329
|
+
props: j,
|
|
294
330
|
setup(e) {
|
|
295
331
|
return () => {
|
|
296
|
-
let t =
|
|
332
|
+
let t = k(e.node);
|
|
297
333
|
return i("span", {
|
|
298
334
|
class: "coar-markdown-color",
|
|
299
335
|
style: t ? { color: t } : void 0
|
|
300
336
|
}, e.renderChildren());
|
|
301
337
|
};
|
|
302
338
|
}
|
|
303
|
-
}),
|
|
339
|
+
}), se = r({
|
|
340
|
+
name: "DefaultEmbed",
|
|
341
|
+
props: j,
|
|
342
|
+
setup(e) {
|
|
343
|
+
return () => i(l, {
|
|
344
|
+
embedKey: typeof e.node.attrs?.key == "string" ? e.node.attrs.key : "",
|
|
345
|
+
embedProps: ae(e.node.attrs?.props)
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}), ce = r({
|
|
304
349
|
name: "DefaultUnsupported",
|
|
305
|
-
props:
|
|
350
|
+
props: j,
|
|
306
351
|
setup(e) {
|
|
307
|
-
return () => i("div", { class: "coar-markdown-unsupported" }, `Unsupported markdown node: ${
|
|
352
|
+
return () => i("div", { class: "coar-markdown-unsupported" }, `Unsupported markdown node: ${E(e.node)}`);
|
|
308
353
|
}
|
|
309
|
-
}),
|
|
310
|
-
frontmatter:
|
|
311
|
-
heading:
|
|
312
|
-
paragraph:
|
|
313
|
-
blockquote:
|
|
314
|
-
list:
|
|
315
|
-
listItem:
|
|
316
|
-
codeBlock:
|
|
317
|
-
table:
|
|
318
|
-
tableRow:
|
|
319
|
-
tableCell:
|
|
320
|
-
thematicBreak:
|
|
321
|
-
text:
|
|
322
|
-
emphasis:
|
|
323
|
-
strong:
|
|
324
|
-
strikethrough:
|
|
325
|
-
inlineCode:
|
|
326
|
-
link:
|
|
327
|
-
image:
|
|
328
|
-
lineBreak:
|
|
329
|
-
colorSpan:
|
|
330
|
-
|
|
354
|
+
}), le = {
|
|
355
|
+
frontmatter: M,
|
|
356
|
+
heading: N,
|
|
357
|
+
paragraph: P,
|
|
358
|
+
blockquote: F,
|
|
359
|
+
list: I,
|
|
360
|
+
listItem: L,
|
|
361
|
+
codeBlock: R,
|
|
362
|
+
table: z,
|
|
363
|
+
tableRow: B,
|
|
364
|
+
tableCell: V,
|
|
365
|
+
thematicBreak: H,
|
|
366
|
+
text: U,
|
|
367
|
+
emphasis: W,
|
|
368
|
+
strong: G,
|
|
369
|
+
strikethrough: K,
|
|
370
|
+
inlineCode: q,
|
|
371
|
+
link: J,
|
|
372
|
+
image: Y,
|
|
373
|
+
lineBreak: X,
|
|
374
|
+
colorSpan: Z,
|
|
375
|
+
embed: se,
|
|
376
|
+
unsupported: ce
|
|
331
377
|
};
|
|
332
378
|
//#endregion
|
|
333
379
|
//#region src/registry.ts
|
|
334
|
-
function
|
|
335
|
-
return e in
|
|
380
|
+
function ue(e) {
|
|
381
|
+
return e in de ? e : "unsupported";
|
|
336
382
|
}
|
|
337
|
-
var
|
|
383
|
+
var de = {
|
|
338
384
|
frontmatter: !0,
|
|
339
385
|
heading: !0,
|
|
340
386
|
paragraph: !0,
|
|
@@ -355,6 +401,7 @@ var oe = {
|
|
|
355
401
|
image: !0,
|
|
356
402
|
lineBreak: !0,
|
|
357
403
|
colorSpan: !0,
|
|
404
|
+
embed: !0,
|
|
358
405
|
unsupported: !0
|
|
359
406
|
}, Q = Symbol.for("coar:markdown-renderers"), $ = r({
|
|
360
407
|
name: "RenderNode",
|
|
@@ -369,14 +416,14 @@ var oe = {
|
|
|
369
416
|
}
|
|
370
417
|
},
|
|
371
418
|
setup(e) {
|
|
372
|
-
let t = ee(Q, void 0), n = () => e.renderers ?? t ??
|
|
373
|
-
e.renderers &&
|
|
419
|
+
let t = ee(Q, void 0), n = () => e.renderers ?? t ?? le;
|
|
420
|
+
e.renderers && o(Q, e.renderers);
|
|
374
421
|
let r = (e) => e.map((e) => i($, {
|
|
375
422
|
node: e,
|
|
376
423
|
key: e.id
|
|
377
424
|
})), a = () => r(e.node.children ?? []);
|
|
378
425
|
return () => {
|
|
379
|
-
let t = n()[
|
|
426
|
+
let t = n()[ue(e.node.type)];
|
|
380
427
|
return i(t, {
|
|
381
428
|
node: e.node,
|
|
382
429
|
renderChildren: a,
|
|
@@ -385,7 +432,7 @@ var oe = {
|
|
|
385
432
|
};
|
|
386
433
|
}
|
|
387
434
|
});
|
|
388
|
-
function
|
|
435
|
+
function fe(e, t) {
|
|
389
436
|
return e.map((e) => i($, {
|
|
390
437
|
node: e,
|
|
391
438
|
renderers: t,
|
|
@@ -394,14 +441,16 @@ function se(e, t) {
|
|
|
394
441
|
}
|
|
395
442
|
//#endregion
|
|
396
443
|
//#region src/CoarMarkdown.vue?vue&type=script&setup=true&lang.ts
|
|
397
|
-
var
|
|
444
|
+
var pe = { class: "coar-markdown" }, me = /* @__PURE__ */ r({
|
|
398
445
|
__name: "CoarMarkdown",
|
|
399
446
|
props: {
|
|
400
447
|
doc: {},
|
|
401
|
-
renderers: {}
|
|
448
|
+
renderers: {},
|
|
449
|
+
embeds: {}
|
|
402
450
|
},
|
|
403
451
|
setup(r) {
|
|
404
|
-
|
|
452
|
+
let i = r;
|
|
453
|
+
return i.embeds && o(s, i.embeds), (i, ee) => (a(), n("div", pe, [(a(!0), n(e, null, te(r.doc.nodes, (e) => (a(), t(ne($), {
|
|
405
454
|
key: e.id,
|
|
406
455
|
node: e,
|
|
407
456
|
renderers: r.renderers
|
|
@@ -409,4 +458,4 @@ var ce = { class: "coar-markdown" }, le = /* @__PURE__ */ r({
|
|
|
409
458
|
}
|
|
410
459
|
});
|
|
411
460
|
//#endregion
|
|
412
|
-
export {
|
|
461
|
+
export { me as CoarMarkdown, F as DefaultBlockquote, R as DefaultCodeBlock, Z as DefaultColorSpan, se as DefaultEmbed, W as DefaultEmphasis, M as DefaultFrontmatter, N as DefaultHeading, Y as DefaultImage, q as DefaultInlineCode, X as DefaultLineBreak, J as DefaultLink, I as DefaultList, L as DefaultListItem, P as DefaultParagraph, K as DefaultStrikethrough, G as DefaultStrong, z as DefaultTable, V as DefaultTableCell, B as DefaultTableRow, U as DefaultText, H as DefaultThematicBreak, ce as DefaultUnsupported, l as EmbedRenderer, s as MARKDOWN_EMBEDS_KEY, Q as MARKDOWN_RENDERERS_KEY, $ as RenderNode, f as codeBlockLanguage, k as colorSpanColor, le as defaultMarkdownRenderers, D as frontmatterEntries, O as frontmatterRaw, 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, fe as renderMarkdownNodes, ue as rendererNameFor, c as resolveEmbed, g as taskChecked, ae as toEmbedProps, E as unsupportedType };
|
package/dist/registry.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export interface MarkdownViewerRenderers {
|
|
|
42
42
|
image: Component<MarkdownRendererProps>;
|
|
43
43
|
lineBreak: Component<MarkdownRendererProps>;
|
|
44
44
|
colorSpan: Component<MarkdownRendererProps>;
|
|
45
|
+
embed: Component<MarkdownRendererProps>;
|
|
45
46
|
unsupported: Component<MarkdownRendererProps>;
|
|
46
47
|
}
|
|
47
48
|
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,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC9C,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;
|
|
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,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC9C,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,KAAK,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAExC,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;AAeD;;;;;;;;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": "2.
|
|
3
|
+
"version": "2.12.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": {
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"typecheck": "vue-tsc --noEmit"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@cocoar/vue-markdown-core": "2.
|
|
46
|
+
"@cocoar/vue-markdown-core": "2.12.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@cocoar/vue-ui": "2.
|
|
49
|
+
"@cocoar/vue-ui": "2.12.0",
|
|
50
50
|
"vue": "^3.5.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
@@ -395,3 +395,29 @@
|
|
|
395
395
|
overflow-wrap: anywhere;
|
|
396
396
|
color: inherit;
|
|
397
397
|
}
|
|
398
|
+
|
|
399
|
+
/* Custom embed (`:::key{props}`). The wrapper just owns the block rhythm; the
|
|
400
|
+
registered component controls its own look. Both the viewer's DefaultEmbed
|
|
401
|
+
and the editor's NodeView mount inside this wrapper so they match. */
|
|
402
|
+
.coar-markdown-embed {
|
|
403
|
+
margin: var(--coar-markdown-block-gap, 1em) 0;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/* Unregistered key — a labelled placeholder so the author still sees the embed
|
|
407
|
+
instead of a blank gap. */
|
|
408
|
+
.coar-markdown-embed--unknown {
|
|
409
|
+
display: flex;
|
|
410
|
+
align-items: center;
|
|
411
|
+
gap: 8px;
|
|
412
|
+
padding: 10px 14px;
|
|
413
|
+
border: 1px dashed var(--coar-border-neutral, #d4d4d4);
|
|
414
|
+
border-radius: var(--coar-markdown-radius, 8px);
|
|
415
|
+
background: var(--coar-background-neutral-secondary, #f5f5f5);
|
|
416
|
+
color: var(--coar-text-neutral-secondary, #666);
|
|
417
|
+
font-size: 13px;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.coar-markdown-embed__icon {
|
|
421
|
+
font-size: 16px;
|
|
422
|
+
line-height: 1;
|
|
423
|
+
}
|