@cocoar/vue-markdown 1.13.0-beta.6 → 1.13.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 +8 -0
- package/dist/CoarMarkdown.vue.d.ts.map +1 -1
- package/dist/RenderNode.d.ts +35 -0
- package/dist/RenderNode.d.ts.map +1 -0
- package/dist/default-renderers.d.ts +581 -0
- package/dist/default-renderers.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +299 -145
- package/dist/registry.d.ts +84 -0
- package/dist/registry.d.ts.map +1 -0
- package/package.json +11 -7
- package/styles/markdown-blocks.css +276 -0
- package/dist/MarkdownBlockNode.vue.d.ts +0 -9
- package/dist/MarkdownBlockNode.vue.d.ts.map +0 -1
- package/dist/MarkdownInlineNode.vue.d.ts +0 -7
- package/dist/MarkdownInlineNode.vue.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocoar/vue-markdown",
|
|
3
|
-
"version": "1.13.0
|
|
4
|
-
"description": "Markdown viewer
|
|
3
|
+
"version": "1.13.0",
|
|
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": {
|
|
7
7
|
"type": "git",
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
"vue",
|
|
15
15
|
"vue3",
|
|
16
16
|
"markdown",
|
|
17
|
-
"viewer"
|
|
17
|
+
"viewer",
|
|
18
|
+
"renderer",
|
|
19
|
+
"registry"
|
|
18
20
|
],
|
|
19
21
|
"type": "module",
|
|
20
22
|
"sideEffects": [
|
|
@@ -27,10 +29,12 @@
|
|
|
27
29
|
".": {
|
|
28
30
|
"import": "./dist/index.js",
|
|
29
31
|
"types": "./dist/index.d.ts"
|
|
30
|
-
}
|
|
32
|
+
},
|
|
33
|
+
"./styles": "./styles/markdown-blocks.css"
|
|
31
34
|
},
|
|
32
35
|
"files": [
|
|
33
|
-
"dist"
|
|
36
|
+
"dist",
|
|
37
|
+
"styles"
|
|
34
38
|
],
|
|
35
39
|
"scripts": {
|
|
36
40
|
"build": "vite build",
|
|
@@ -38,10 +42,10 @@
|
|
|
38
42
|
"lint": "eslint src/"
|
|
39
43
|
},
|
|
40
44
|
"dependencies": {
|
|
41
|
-
"@cocoar/vue-markdown-core": "1.13.0
|
|
45
|
+
"@cocoar/vue-markdown-core": "1.13.0"
|
|
42
46
|
},
|
|
43
47
|
"peerDependencies": {
|
|
44
|
-
"@cocoar/vue-ui": "1.13.0
|
|
48
|
+
"@cocoar/vue-ui": "1.13.0",
|
|
45
49
|
"vue": "^3.5.0"
|
|
46
50
|
},
|
|
47
51
|
"devDependencies": {
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Shared Markdown block + inline styling for `@cocoar/vue-markdown` (viewer)
|
|
3
|
+
* and `@cocoar/vue-markdown-editor`. Defines `.coar-markdown-*` classes that
|
|
4
|
+
* both packages emit so the same Markdown source looks identical when
|
|
5
|
+
* read vs. written.
|
|
6
|
+
*
|
|
7
|
+
* Outer container class: `.coar-markdown` — both viewer and editor wrap their
|
|
8
|
+
* content in a div carrying this class. The class establishes the
|
|
9
|
+
* `--coar-markdown-*` design-token scope used by all child rules.
|
|
10
|
+
*
|
|
11
|
+
* Code blocks (CoarCodeBlock) and tables (CoarTable) bring their own styling
|
|
12
|
+
* via the underlying Cocoar UI components. The rules here target the *plain*
|
|
13
|
+
* fallbacks and the surrounding margins / typography only.
|
|
14
|
+
*
|
|
15
|
+
* Import once at app entry:
|
|
16
|
+
*
|
|
17
|
+
* @import "@cocoar/vue-markdown/styles";
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
.coar-markdown {
|
|
21
|
+
display: block;
|
|
22
|
+
|
|
23
|
+
/* Component-level theme hooks — derived from Cocoar tokens. */
|
|
24
|
+
--coar-markdown-text: var(--coar-text-neutral-primary);
|
|
25
|
+
--coar-markdown-link: var(--coar-text-brand-primary, var(--coar-text-neutral-primary));
|
|
26
|
+
--coar-markdown-muted-text: var(--coar-text-neutral-tertiary);
|
|
27
|
+
--coar-markdown-border: var(--coar-border-neutral-tertiary);
|
|
28
|
+
--coar-markdown-surface: var(--coar-background-neutral-primary);
|
|
29
|
+
--coar-markdown-surface-muted: var(
|
|
30
|
+
--coar-background-neutral-tertiary,
|
|
31
|
+
var(--coar-background-neutral-primary)
|
|
32
|
+
);
|
|
33
|
+
--coar-markdown-radius: var(--coar-radius-xs);
|
|
34
|
+
--coar-markdown-space-1: var(--coar-spacing-s, 0.5rem);
|
|
35
|
+
--coar-markdown-space-2: var(--coar-spacing-m, 1rem);
|
|
36
|
+
--coar-markdown-heading-block-start: var(--coar-spacing-xxxl, 4rem);
|
|
37
|
+
|
|
38
|
+
color: var(--coar-markdown-text);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.coar-markdown :where(h1, h2, h3, h4, h5, h6) {
|
|
42
|
+
font-family: var(--coar-font-family-title, inherit);
|
|
43
|
+
color: var(--coar-markdown-text);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.coar-markdown h1 {
|
|
47
|
+
font-size: var(--coar-font-size-xl);
|
|
48
|
+
font-weight: var(--coar-font-weight-bold);
|
|
49
|
+
line-height: var(--coar-line-height-tight);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.coar-markdown h2 {
|
|
53
|
+
font-size: var(--coar-font-size-l);
|
|
54
|
+
font-weight: var(--coar-font-weight-bold);
|
|
55
|
+
line-height: 1.25;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.coar-markdown h3 {
|
|
59
|
+
font-size: var(--coar-font-size-m);
|
|
60
|
+
font-weight: var(--coar-font-weight-semi-bold);
|
|
61
|
+
line-height: var(--coar-line-height-snug);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.coar-markdown h4 {
|
|
65
|
+
font-size: var(--coar-font-size-s);
|
|
66
|
+
font-weight: var(--coar-font-weight-semi-bold);
|
|
67
|
+
line-height: 1.35;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.coar-markdown h5 {
|
|
71
|
+
font-size: var(--coar-font-size-xs);
|
|
72
|
+
font-weight: var(--coar-font-weight-semi-bold);
|
|
73
|
+
line-height: var(--coar-line-height-normal);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.coar-markdown h6 {
|
|
77
|
+
font-size: var(--coar-font-size-xxs);
|
|
78
|
+
font-weight: var(--coar-font-weight-medium);
|
|
79
|
+
line-height: 1.45;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.coar-markdown-heading,
|
|
83
|
+
.coar-markdown-paragraph,
|
|
84
|
+
.coar-markdown-blockquote,
|
|
85
|
+
.coar-markdown-list,
|
|
86
|
+
.coar-markdown-code-block,
|
|
87
|
+
.coar-markdown-table,
|
|
88
|
+
.coar-markdown-hr {
|
|
89
|
+
margin: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.coar-markdown
|
|
93
|
+
> :where(
|
|
94
|
+
h1,
|
|
95
|
+
h2,
|
|
96
|
+
h3,
|
|
97
|
+
h4,
|
|
98
|
+
h5,
|
|
99
|
+
h6,
|
|
100
|
+
p,
|
|
101
|
+
blockquote,
|
|
102
|
+
ul,
|
|
103
|
+
ol,
|
|
104
|
+
pre,
|
|
105
|
+
table,
|
|
106
|
+
hr,
|
|
107
|
+
.coar-code-block-host,
|
|
108
|
+
.coar-table-host
|
|
109
|
+
) {
|
|
110
|
+
margin-block: 0 var(--coar-markdown-space-2);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.coar-markdown > :where(h1, h2, h3, h4, h5, h6) {
|
|
114
|
+
margin-block-start: var(--coar-markdown-heading-block-start);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* 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) {
|
|
119
|
+
margin-block-start: var(--coar-markdown-space-1);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.coar-markdown > :where(h1, h2, h3, h4, h5, h6):first-child {
|
|
123
|
+
margin-block-start: 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.coar-markdown-blockquote {
|
|
127
|
+
padding-inline: var(--coar-markdown-space-2);
|
|
128
|
+
border-left: 2px solid var(--coar-markdown-border);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.coar-markdown-list {
|
|
132
|
+
padding-inline-start: var(--coar-spacing-l, 1.5rem);
|
|
133
|
+
list-style-position: outside;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.coar-markdown-list--unordered {
|
|
137
|
+
list-style-type: disc;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.coar-markdown-list--ordered {
|
|
141
|
+
list-style-type: decimal;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.coar-markdown-list-item {
|
|
145
|
+
display: list-item;
|
|
146
|
+
margin-block: 0.25em;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.coar-markdown-list-item--task {
|
|
150
|
+
list-style: none;
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: flex-start;
|
|
153
|
+
gap: var(--coar-spacing-s, 0.5rem);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.coar-markdown-list-item-content {
|
|
157
|
+
min-width: 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.coar-markdown-task-checkbox {
|
|
161
|
+
margin-top: 0.15em;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.coar-markdown-code-block {
|
|
165
|
+
display: block;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.coar-markdown-code {
|
|
169
|
+
display: block;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.coar-markdown-inline-code {
|
|
173
|
+
padding: 0;
|
|
174
|
+
border: 0;
|
|
175
|
+
border-radius: 0;
|
|
176
|
+
background: transparent;
|
|
177
|
+
color: var(--coar-text-accent-secondary, var(--coar-markdown-link));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.coar-markdown-link {
|
|
181
|
+
text-decoration: underline;
|
|
182
|
+
color: var(--coar-markdown-link);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.coar-markdown-image {
|
|
186
|
+
max-width: 100%;
|
|
187
|
+
height: auto;
|
|
188
|
+
vertical-align: middle;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* Tables — applies to both the viewer's named `.coar-markdown-table` and any
|
|
192
|
+
bare `<table>` rendered inside `.coar-markdown` (e.g. the editor's PM-
|
|
193
|
+
managed table). Rules use `:where()` so consumers can override without
|
|
194
|
+
specificity wars. The visual matches `CoarTable` (zebra rows, header
|
|
195
|
+
surface, generous padding) so editor and viewer read the same. */
|
|
196
|
+
.coar-markdown :where(table),
|
|
197
|
+
.coar-markdown-table {
|
|
198
|
+
display: table;
|
|
199
|
+
width: 100%;
|
|
200
|
+
border-collapse: collapse;
|
|
201
|
+
border-spacing: 0;
|
|
202
|
+
font-size: var(--coar-body-small-base-size, 0.9rem);
|
|
203
|
+
line-height: var(--coar-line-height-relaxed, 1.5);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.coar-markdown :where(table thead),
|
|
207
|
+
.coar-markdown-table > thead {
|
|
208
|
+
background: var(--coar-markdown-surface-muted);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.coar-markdown :where(table th),
|
|
212
|
+
.coar-markdown-table > thead th {
|
|
213
|
+
padding: 0.625rem var(--coar-markdown-space-2);
|
|
214
|
+
text-align: left;
|
|
215
|
+
vertical-align: top;
|
|
216
|
+
font-weight: var(--coar-font-weight-semi-bold, 600);
|
|
217
|
+
font-size: var(--coar-component-s-font-size, 0.85em);
|
|
218
|
+
color: var(--coar-markdown-text);
|
|
219
|
+
border-bottom: 1px solid var(--coar-markdown-border);
|
|
220
|
+
text-transform: uppercase;
|
|
221
|
+
letter-spacing: 0.025em;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.coar-markdown :where(table td),
|
|
225
|
+
.coar-markdown-table > tbody td {
|
|
226
|
+
padding: 0.625rem var(--coar-markdown-space-2);
|
|
227
|
+
text-align: left;
|
|
228
|
+
vertical-align: top;
|
|
229
|
+
color: var(--coar-text-neutral-secondary, var(--coar-markdown-text));
|
|
230
|
+
border-bottom: 1px solid var(--coar-markdown-border);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* Zebra stripes — odd rows on the primary surface, even rows on the muted
|
|
234
|
+
surface — same pattern CoarTable uses by default. */
|
|
235
|
+
.coar-markdown :where(table tbody tr:nth-child(odd)),
|
|
236
|
+
.coar-markdown-table > tbody tr:nth-child(odd) {
|
|
237
|
+
background: var(--coar-markdown-surface);
|
|
238
|
+
}
|
|
239
|
+
.coar-markdown :where(table tbody tr:nth-child(even)),
|
|
240
|
+
.coar-markdown-table > tbody tr:nth-child(even) {
|
|
241
|
+
background: var(--coar-markdown-surface-muted);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* Last row drops its bottom border so it doesn't double-up with any wrapping
|
|
245
|
+
container's border. */
|
|
246
|
+
.coar-markdown :where(table tbody tr:last-child td),
|
|
247
|
+
.coar-markdown-table > tbody tr:last-child td {
|
|
248
|
+
border-bottom: 0;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Standalone tableCell fallback — kept for the rare case where the parser
|
|
252
|
+
emits a tableCell without a containing table tree. */
|
|
253
|
+
.coar-markdown-table-cell {
|
|
254
|
+
padding: var(--coar-markdown-space-1);
|
|
255
|
+
vertical-align: top;
|
|
256
|
+
border-right: 1px solid var(--coar-markdown-border);
|
|
257
|
+
border-bottom: 1px solid var(--coar-markdown-border);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.coar-markdown-hr {
|
|
261
|
+
border: 0;
|
|
262
|
+
border-top: 1px solid var(--coar-markdown-border);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.coar-markdown-unsupported,
|
|
266
|
+
.coar-markdown-unsupported-inline {
|
|
267
|
+
font-style: italic;
|
|
268
|
+
color: var(--coar-markdown-muted-text);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.coar-markdown-unsupported {
|
|
272
|
+
padding: var(--coar-markdown-space-1);
|
|
273
|
+
border: 1px dashed var(--coar-markdown-border);
|
|
274
|
+
border-radius: var(--coar-markdown-radius);
|
|
275
|
+
background: var(--coar-markdown-surface);
|
|
276
|
+
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { MarkdownNode } from '@cocoar/vue-markdown-core';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
nodes: readonly MarkdownNode[];
|
|
4
|
-
/** The table node, passed down so cells can read column alignment. */
|
|
5
|
-
tableNode?: MarkdownNode;
|
|
6
|
-
};
|
|
7
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
8
|
-
export default _default;
|
|
9
|
-
//# sourceMappingURL=MarkdownBlockNode.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownBlockNode.vue.d.ts","sourceRoot":"","sources":["../src/MarkdownBlockNode.vue"],"names":[],"mappings":"AAqJA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAgB9D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,sEAAsE;IACtE,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;;AA0RF,wBAMG"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MarkdownNode } from '@cocoar/vue-markdown-core';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
nodes: readonly MarkdownNode[];
|
|
4
|
-
};
|
|
5
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
6
|
-
export default _default;
|
|
7
|
-
//# sourceMappingURL=MarkdownInlineNode.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownInlineNode.vue.d.ts","sourceRoot":"","sources":["../src/MarkdownInlineNode.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC,CAAC;;AAkJF,wBAMG"}
|