ds-markdown 0.2.4-beta.1 → 0.2.4-beta.3
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/README.en.md +2 -3
- package/README.md +2 -3
- package/es/AutoScroll/index.d.ts +7 -0
- package/es/AutoScroll/index.d.ts.map +1 -0
- package/es/AutoScroll/index.js +7 -0
- package/es/AutoScroll/index.js.map +1 -0
- package/es/Markdown/index.d.ts +5 -0
- package/es/Markdown/index.d.ts.map +1 -0
- package/es/Markdown/index.js +78 -0
- package/es/Markdown/index.js.map +1 -0
- package/es/MarkdownCMD/index.d.ts +13 -0
- package/es/MarkdownCMD/index.d.ts.map +1 -0
- package/es/MarkdownCMD/index.js +122 -0
- package/es/MarkdownCMD/index.js.map +1 -0
- package/es/components/CodeComponent/BlockWrap/index.css +64 -0
- package/es/components/CodeComponent/BlockWrap/index.d.ts +10 -0
- package/es/components/CodeComponent/BlockWrap/index.d.ts.map +1 -0
- package/es/components/CodeComponent/BlockWrap/index.js +20 -0
- package/es/components/CodeComponent/BlockWrap/index.js.map +1 -0
- package/es/components/CodeComponent/CodeBlockActions/index.d.ts +8 -0
- package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -0
- package/es/components/CodeComponent/CodeBlockActions/index.js +8 -0
- package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.d.ts +8 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.d.ts.map +1 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.js +8 -0
- package/es/components/CodeComponent/CodeBlockWrap/index.js.map +1 -0
- package/es/components/CodeComponent/HighlightCode/index.d.ts +8 -0
- package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -0
- package/es/components/CodeComponent/HighlightCode/index.js +7 -0
- package/es/components/CodeComponent/HighlightCode/index.js.map +1 -0
- package/es/components/CodeComponent/index.css +551 -0
- package/es/components/CodeComponent/index.d.ts +8 -0
- package/es/components/CodeComponent/index.d.ts.map +1 -0
- package/es/components/CodeComponent/index.js +11 -0
- package/es/components/CodeComponent/index.js.map +1 -0
- package/es/components/CopyButton/index.d.ts +9 -0
- package/es/components/CopyButton/index.d.ts.map +1 -0
- package/es/components/CopyButton/index.js +24 -0
- package/es/components/CopyButton/index.js.map +1 -0
- package/es/components/DownloadButton/index.d.ts +10 -0
- package/es/components/DownloadButton/index.d.ts.map +1 -0
- package/es/components/DownloadButton/index.js +61 -0
- package/es/components/DownloadButton/index.js.map +1 -0
- package/es/components/Icon/index.d.ts +12 -0
- package/es/components/Icon/index.d.ts.map +1 -0
- package/es/components/Icon/index.js +12 -0
- package/es/components/Icon/index.js.map +1 -0
- package/es/components/TableComponent/index.css +24 -0
- package/es/components/TableComponent/index.d.ts +8 -0
- package/es/components/TableComponent/index.d.ts.map +1 -0
- package/es/components/TableComponent/index.js +7 -0
- package/es/components/TableComponent/index.js.map +1 -0
- package/es/components/ui/Button/index.d.ts +12 -0
- package/es/components/ui/Button/index.d.ts.map +1 -0
- package/es/components/ui/Button/index.js +17 -0
- package/es/components/ui/Button/index.js.map +1 -0
- package/es/components/ui/IconButton/index.d.ts +9 -0
- package/es/components/ui/IconButton/index.d.ts.map +1 -0
- package/es/components/ui/IconButton/index.js +7 -0
- package/es/components/ui/IconButton/index.js.map +1 -0
- package/es/components/ui/Segmented/index.css +35 -0
- package/es/components/ui/Segmented/index.d.ts +14 -0
- package/es/components/ui/Segmented/index.d.ts.map +1 -0
- package/es/components/ui/Segmented/index.js +10 -0
- package/es/components/ui/Segmented/index.js.map +1 -0
- package/es/components/ui/SuccessButton/index.d.ts +11 -0
- package/es/components/ui/SuccessButton/index.d.ts.map +1 -0
- package/es/components/ui/SuccessButton/index.js +46 -0
- package/es/components/ui/SuccessButton/index.js.map +1 -0
- package/es/constant.d.ts +6 -0
- package/es/constant.d.ts.map +1 -0
- package/es/constant.js +7 -0
- package/es/constant.js.map +1 -0
- package/es/context/ConfigProvider/index.d.ts +40 -0
- package/es/context/ConfigProvider/index.d.ts.map +1 -0
- package/es/context/ConfigProvider/index.js +32 -0
- package/es/context/ConfigProvider/index.js.map +1 -0
- package/es/context/MarkdownProvider.d.ts +9 -0
- package/es/context/MarkdownProvider.d.ts.map +1 -0
- package/es/context/MarkdownProvider.js +10 -0
- package/es/context/MarkdownProvider.js.map +1 -0
- package/es/context/MarkdownThemeProvider.d.ts +21 -0
- package/es/context/MarkdownThemeProvider.d.ts.map +1 -0
- package/es/context/MarkdownThemeProvider.js +31 -0
- package/es/context/MarkdownThemeProvider.js.map +1 -0
- package/es/defined/index.d.ts +75 -0
- package/es/defined/index.d.ts.map +1 -0
- package/es/defined/index.js +3 -0
- package/es/defined/index.js.map +1 -0
- package/{dist/cjs/index.d.ts → es/defined/mermaid.type.d.ts} +6 -234
- package/es/defined/mermaid.type.d.ts.map +1 -0
- package/es/defined/mermaid.type.js +2 -0
- package/es/defined/mermaid.type.js.map +1 -0
- package/es/defined.css +481 -0
- package/{dist/cjs → es}/i18n/en/index.d.ts +4 -5
- package/es/i18n/en/index.d.ts.map +1 -0
- package/{dist/esm → es}/i18n/en/index.js +4 -4
- package/es/i18n/en/index.js.map +1 -0
- package/es/i18n/index.d.ts +7 -0
- package/es/i18n/index.d.ts.map +1 -0
- package/es/i18n/index.js +7 -0
- package/es/i18n/index.js.map +1 -0
- package/{dist/esm/i18n/en → es/i18n/zh}/index.d.ts +5 -6
- package/es/i18n/zh/index.d.ts.map +1 -0
- package/{dist/esm → es}/i18n/zh/index.js +4 -4
- package/es/i18n/zh/index.js.map +1 -0
- package/es/index.css +330 -0
- package/es/index.d.ts +23 -0
- package/es/index.d.ts.map +1 -0
- package/es/index.js +21 -0
- package/es/index.js.map +1 -0
- package/es/plugins/index.d.ts +6 -0
- package/es/plugins/index.d.ts.map +1 -0
- package/{dist/esm → es}/plugins/index.js +3 -11
- package/es/plugins/index.js.map +1 -0
- package/es/utils/Tokenizer.d.ts +48 -0
- package/es/utils/Tokenizer.d.ts.map +1 -0
- package/es/utils/Tokenizer.js +191 -0
- package/es/utils/Tokenizer.js.map +1 -0
- package/es/utils/compiler.d.ts +5 -0
- package/es/utils/compiler.d.ts.map +1 -0
- package/es/utils/compiler.js +62 -0
- package/es/utils/compiler.js.map +1 -0
- package/es/utils/grapheme.d.ts +2 -0
- package/es/utils/grapheme.d.ts.map +1 -0
- package/es/utils/grapheme.js +4 -0
- package/es/utils/grapheme.js.map +1 -0
- package/es/utils/methods/deepClone.d.ts +2 -0
- package/es/utils/methods/deepClone.d.ts.map +1 -0
- package/es/utils/methods/deepClone.js +4 -0
- package/es/utils/methods/deepClone.js.map +1 -0
- package/es/utils/remarkMathBracket.d.ts +21 -0
- package/es/utils/remarkMathBracket.d.ts.map +1 -0
- package/es/utils/remarkMathBracket.js +49 -0
- package/es/utils/remarkMathBracket.js.map +1 -0
- package/es/utils/rule.d.ts +26 -0
- package/es/utils/rule.d.ts.map +1 -0
- package/es/utils/rule.js +69 -0
- package/es/utils/rule.js.map +1 -0
- package/package.json +3 -3
- package/dist/cjs/i18n/en/index.js +0 -30
- package/dist/cjs/i18n/en/index.js.map +0 -1
- package/dist/cjs/i18n/zh/index.d.ts +0 -26
- package/dist/cjs/i18n/zh/index.js +0 -30
- package/dist/cjs/i18n/zh/index.js.map +0 -1
- package/dist/cjs/index.js +0 -1106
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/plugins/index.d.ts +0 -20
- package/dist/cjs/plugins/index.js +0 -30
- package/dist/cjs/plugins/index.js.map +0 -1
- package/dist/esm/i18n/en/index.js.map +0 -1
- package/dist/esm/i18n/zh/index.d.ts +0 -26
- package/dist/esm/i18n/zh/index.js.map +0 -1
- package/dist/esm/index.d.ts +0 -1747
- package/dist/esm/index.js +0 -1084
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/plugins/index.d.ts +0 -20
- package/dist/esm/plugins/index.js.map +0 -1
- /package/{dist → es}/katex.css +0 -0
- /package/{dist → es}/style.css +0 -0
package/es/index.css
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ds-rgb-neutral-50: 250 250 250;
|
|
3
|
+
--ds-rgb-neutral-100: 245 245 245;
|
|
4
|
+
--ds-rgb-neutral-150: 237 237 237;
|
|
5
|
+
--ds-rgb-neutral-200: 229 229 229;
|
|
6
|
+
--ds-rgb-neutral-250: 220 220 220;
|
|
7
|
+
--ds-rgb-neutral-300: 212 212 212;
|
|
8
|
+
--ds-rgb-neutral-350: 187 187 187;
|
|
9
|
+
--ds-rgb-neutral-400: 163 163 163;
|
|
10
|
+
--ds-rgb-neutral-450: 139 139 139;
|
|
11
|
+
--ds-rgb-neutral-500: 115 115 115;
|
|
12
|
+
--ds-rgb-neutral-550: 98 98 98;
|
|
13
|
+
--ds-rgb-neutral-600: 82 82 82;
|
|
14
|
+
--ds-rgb-neutral-650: 73 73 73;
|
|
15
|
+
--ds-rgb-neutral-700: 64 64 64;
|
|
16
|
+
--ds-rgb-neutral-750: 51 51 51;
|
|
17
|
+
--ds-rgb-neutral-800: 38 38 38;
|
|
18
|
+
--ds-rgb-neutral-850: 30 30 30;
|
|
19
|
+
--ds-rgb-neutral-900: 23 23 23;
|
|
20
|
+
--ds-rgb-neutral-950: 10 10 10;
|
|
21
|
+
--ds-rgb-blue-500: 59 130 246;
|
|
22
|
+
--ds-rgb-label-1: var(--ds-rgb-neutral-700);
|
|
23
|
+
}
|
|
24
|
+
.ds-markdown {
|
|
25
|
+
--ds-font-family-code: Menlo, 'Roboto Mono', 'Courier New', Courier, monospace, 'Inter', sans-serif;
|
|
26
|
+
font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Noto Sans, Ubuntu, Cantarell, Helvetica Neue, Oxygen, Open Sans, sans-serif;
|
|
27
|
+
}
|
|
28
|
+
.ds-markdown {
|
|
29
|
+
--ds-rgb-primary: var(--ds-rgb-blue-500);
|
|
30
|
+
--ds-rgb-label-1: var(--ds-rgb-neutral-700);
|
|
31
|
+
--ds-rgb-label-2: var(--ds-rgb-neutral-450);
|
|
32
|
+
--ds-rgb-label-3: var(--ds-rgb-neutral-400);
|
|
33
|
+
--dsr-border-1: rgb(var(--ds-rgb-neutral-350));
|
|
34
|
+
--dsr-border-2: rgb(var(--ds-rgb-neutral-200));
|
|
35
|
+
--ds-button-hover-color: rgba(0, 0, 0, 0.04);
|
|
36
|
+
--ds-md-inline-code-color: #ececec;
|
|
37
|
+
--dsr-bg: #ffffff;
|
|
38
|
+
--ds-thinking-border-color: #e5e5e5;
|
|
39
|
+
}
|
|
40
|
+
.ds-markdown.ds-markdown-dark {
|
|
41
|
+
--ds-rgb-label-1: var(--ds-rgb-neutral-50);
|
|
42
|
+
--ds-rgb-label-2: var(--ds-rgb-neutral-400);
|
|
43
|
+
--dsr-border-2: rgb(var(--ds-rgb-neutral-600));
|
|
44
|
+
--ds-button-hover-color: rgba(255, 255, 255, 0.04);
|
|
45
|
+
--ds-md-inline-code-color: #424242;
|
|
46
|
+
--dsr-bg: #292a2d;
|
|
47
|
+
--ds-thinking-border-color: #4e4e56;
|
|
48
|
+
}
|
|
49
|
+
.ds-markdown {
|
|
50
|
+
--ds-font-size-m: 14px;
|
|
51
|
+
--ds-font-size-xsp: 11px;
|
|
52
|
+
--ds-line-height-m: 25px;
|
|
53
|
+
--ds-transition-duration: 0.2s;
|
|
54
|
+
--ds-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
55
|
+
--ds-rgba-transparent: 255 255 255 / 0;
|
|
56
|
+
--ds-rgb-link: var(--ds-rgb-primary);
|
|
57
|
+
--ds-input-height-l: 44px;
|
|
58
|
+
--ds-input-height-m: 34px;
|
|
59
|
+
--ds-input-height-s: 30px;
|
|
60
|
+
--ds-input-height-xs: 26px;
|
|
61
|
+
}
|
|
62
|
+
.ds-markdown.apple {
|
|
63
|
+
--ds-font-weight-strong: 500;
|
|
64
|
+
}
|
|
65
|
+
.ds-markdown {
|
|
66
|
+
--ds-md-zoom: 1.143;
|
|
67
|
+
--ds-md-font-size: calc(var(--ds-md-zoom) * var(--ds-font-size-m));
|
|
68
|
+
--ds-md-line-height: calc(var(--ds-md-zoom) * var(--ds-line-height-m));
|
|
69
|
+
font-size: var(--ds-md-font-size);
|
|
70
|
+
min-height: var(--ds-md-font-size);
|
|
71
|
+
line-height: var(--ds-md-line-height);
|
|
72
|
+
color: rgb(var(--ds-rgb-label-1));
|
|
73
|
+
background-color: var(--dsr-bg);
|
|
74
|
+
}
|
|
75
|
+
.ds-markdown img {
|
|
76
|
+
max-width: 100%;
|
|
77
|
+
}
|
|
78
|
+
.ds-markdown h1,
|
|
79
|
+
.ds-markdown h2,
|
|
80
|
+
.ds-markdown h3,
|
|
81
|
+
.ds-markdown h4,
|
|
82
|
+
.ds-markdown h5,
|
|
83
|
+
.ds-markdown h6 {
|
|
84
|
+
font-weight: var(--ds-font-weight-strong);
|
|
85
|
+
font-size: var(--ds-md-font-size);
|
|
86
|
+
line-height: var(--ds-md-line-height);
|
|
87
|
+
margin: calc(var(--ds-md-zoom) * 16px) 0 calc(var(--ds-md-zoom) * 12px) 0;
|
|
88
|
+
}
|
|
89
|
+
.ds-markdown h1,
|
|
90
|
+
.ds-markdown h2,
|
|
91
|
+
.ds-markdown h3,
|
|
92
|
+
.ds-markdown h4,
|
|
93
|
+
.ds-markdown h5,
|
|
94
|
+
.ds-markdown h6 {
|
|
95
|
+
font-weight: var(--ds-font-weight-strong);
|
|
96
|
+
font-size: var(--ds-md-font-size);
|
|
97
|
+
line-height: var(--ds-md-line-height);
|
|
98
|
+
margin: calc(var(--ds-md-zoom) * 16px) 0 calc(var(--ds-md-zoom) * 12px) 0;
|
|
99
|
+
}
|
|
100
|
+
.ds-markdown h1 {
|
|
101
|
+
font-size: calc(var(--ds-md-zoom) * 24px);
|
|
102
|
+
line-height: 1.5;
|
|
103
|
+
}
|
|
104
|
+
.ds-markdown h2 {
|
|
105
|
+
font-size: calc(var(--ds-md-zoom) * 20px);
|
|
106
|
+
line-height: 1.5;
|
|
107
|
+
}
|
|
108
|
+
.ds-markdown h3 {
|
|
109
|
+
font-size: calc(var(--ds-md-zoom) * 16px);
|
|
110
|
+
line-height: 1.5;
|
|
111
|
+
}
|
|
112
|
+
.ds-markdown h1 .header-anchor,
|
|
113
|
+
.ds-markdown h2 .header-anchor,
|
|
114
|
+
.ds-markdown h3 .header-anchor,
|
|
115
|
+
.ds-markdown h4 .header-anchor,
|
|
116
|
+
.ds-markdown h5 .header-anchor,
|
|
117
|
+
.ds-markdown h6 .header-anchor {
|
|
118
|
+
opacity: 0;
|
|
119
|
+
margin-left: 4px;
|
|
120
|
+
}
|
|
121
|
+
.ds-markdown h1:hover .header-anchor,
|
|
122
|
+
.ds-markdown h2:hover .header-anchor,
|
|
123
|
+
.ds-markdown h3:hover .header-anchor,
|
|
124
|
+
.ds-markdown h4:hover .header-anchor,
|
|
125
|
+
.ds-markdown h5:hover .header-anchor,
|
|
126
|
+
.ds-markdown h6:hover .header-anchor {
|
|
127
|
+
opacity: 1;
|
|
128
|
+
}
|
|
129
|
+
.ds-markdown .ds-markdown-paragraph {
|
|
130
|
+
font-size: var(--ds-md-font-size);
|
|
131
|
+
line-height: var(--ds-md-line-height);
|
|
132
|
+
}
|
|
133
|
+
.ds-markdown a:not(.ds-a) {
|
|
134
|
+
color: rgb(var(--ds-rgb-link));
|
|
135
|
+
transition: box-shadow var(--ds-transition-duration) var(--ds-ease-in-out);
|
|
136
|
+
border-radius: calc(var(--ds-md-zoom) * 6px);
|
|
137
|
+
border-left: 3px solid rgba(var(--ds-rgba-transparent));
|
|
138
|
+
border-right: 3px solid rgba(var(--ds-rgba-transparent));
|
|
139
|
+
border-top: 2px solid rgba(var(--ds-rgba-transparent));
|
|
140
|
+
border-bottom: 2px solid rgba(var(--ds-rgba-transparent));
|
|
141
|
+
margin-left: -3px;
|
|
142
|
+
margin-right: -3px;
|
|
143
|
+
text-decoration: none;
|
|
144
|
+
position: relative;
|
|
145
|
+
}
|
|
146
|
+
.ds-markdown a:not(.ds-a):focus {
|
|
147
|
+
outline: none;
|
|
148
|
+
}
|
|
149
|
+
.ds-markdown a:not(.ds-a):focus-visible {
|
|
150
|
+
box-shadow: 0 0 0 2px rgb(var(--ds-rgb-primary));
|
|
151
|
+
}
|
|
152
|
+
.ds-markdown li > ul,
|
|
153
|
+
.ds-markdown li > ol {
|
|
154
|
+
margin-top: 4px;
|
|
155
|
+
}
|
|
156
|
+
.ds-markdown ul,
|
|
157
|
+
.ds-markdown ol {
|
|
158
|
+
margin: calc(var(--ds-md-zoom) * 12px) 0;
|
|
159
|
+
padding-left: calc(var(--ds-md-zoom) * 24px);
|
|
160
|
+
}
|
|
161
|
+
.ds-markdown li:not(:first-child) {
|
|
162
|
+
margin-top: 4px;
|
|
163
|
+
}
|
|
164
|
+
.ds-markdown li::marker {
|
|
165
|
+
line-height: var(--ds-md-line-height);
|
|
166
|
+
color: rgb(var(--ds-rgb-label-2));
|
|
167
|
+
}
|
|
168
|
+
.ds-markdown hr {
|
|
169
|
+
height: 1px;
|
|
170
|
+
margin: 32px 0;
|
|
171
|
+
background-color: var(--dsr-border-2);
|
|
172
|
+
border: none;
|
|
173
|
+
display: block;
|
|
174
|
+
}
|
|
175
|
+
.ds-markdown blockquote {
|
|
176
|
+
border-left: 2px solid rgb(var(--ds-rgb-label-3));
|
|
177
|
+
padding-left: calc(var(--ds-md-zoom) * 16px);
|
|
178
|
+
margin: 0;
|
|
179
|
+
}
|
|
180
|
+
.ds-markdown table {
|
|
181
|
+
border-collapse: collapse;
|
|
182
|
+
}
|
|
183
|
+
.ds-markdown th {
|
|
184
|
+
color: rgb(var(--ds-rgb-label-1));
|
|
185
|
+
padding: calc(var(--ds-md-zoom) * 6px) calc(var(--ds-md-zoom) * 12px);
|
|
186
|
+
border-bottom: 1px solid rgb(var(--ds-rgb-label-3));
|
|
187
|
+
border-top: 1px solid rgb(var(--ds-rgb-label-3));
|
|
188
|
+
font-weight: 600;
|
|
189
|
+
}
|
|
190
|
+
.ds-markdown th,
|
|
191
|
+
.ds-markdown td {
|
|
192
|
+
text-align: left;
|
|
193
|
+
}
|
|
194
|
+
.ds-markdown th:first-child {
|
|
195
|
+
padding-left: 0;
|
|
196
|
+
}
|
|
197
|
+
.ds-markdown td {
|
|
198
|
+
padding: calc(var(--ds-md-zoom) * 6px) calc(var(--ds-md-zoom) * 12px);
|
|
199
|
+
border-bottom: 1px solid rgb(var(--ds-rgb-label-3));
|
|
200
|
+
}
|
|
201
|
+
.ds-markdown td:first-child {
|
|
202
|
+
padding-left: 0;
|
|
203
|
+
}
|
|
204
|
+
.ds-markdown pre {
|
|
205
|
+
margin: calc(var(--ds-md-zoom) * 12px) 0;
|
|
206
|
+
font-family: var(--ds-font-family-code);
|
|
207
|
+
overflow: auto;
|
|
208
|
+
}
|
|
209
|
+
.ds-markdown code {
|
|
210
|
+
font-size: 0.875em;
|
|
211
|
+
font-weight: var(--ds-font-weight-strong);
|
|
212
|
+
font-family: var(--ds-font-family-code);
|
|
213
|
+
background-color: var(--ds-md-inline-code-color, #ececec);
|
|
214
|
+
border-radius: 4px;
|
|
215
|
+
}
|
|
216
|
+
.ds-markdown code:before {
|
|
217
|
+
margin-left: 4px;
|
|
218
|
+
}
|
|
219
|
+
.ds-markdown code:after {
|
|
220
|
+
margin-right: 4px;
|
|
221
|
+
}
|
|
222
|
+
ds-markdown-math {
|
|
223
|
+
text-align: center;
|
|
224
|
+
display: block;
|
|
225
|
+
overflow-x: auto;
|
|
226
|
+
overflow-y: hidden;
|
|
227
|
+
}
|
|
228
|
+
.ds-markdown > * .ds-markdown-math {
|
|
229
|
+
margin: calc(var(--ds-md-zoom) * 12px) 0;
|
|
230
|
+
}
|
|
231
|
+
.ds-markdown > * .ds-markdown-math:first-child {
|
|
232
|
+
margin-top: 0;
|
|
233
|
+
}
|
|
234
|
+
.ds-markdown > * .ds-markdown-math:last-child {
|
|
235
|
+
margin-bottom: 0;
|
|
236
|
+
}
|
|
237
|
+
.ds-markdown-code-copy-button {
|
|
238
|
+
background-color: rgba(var(--ds-rgba-transparent));
|
|
239
|
+
color: inherit;
|
|
240
|
+
cursor: pointer;
|
|
241
|
+
border: none;
|
|
242
|
+
margin: 0;
|
|
243
|
+
padding: 0;
|
|
244
|
+
}
|
|
245
|
+
.ds-markdown li > .ds-markdown-paragraph {
|
|
246
|
+
margin: 4px 0;
|
|
247
|
+
}
|
|
248
|
+
.ds-markdown li > :first-child {
|
|
249
|
+
margin-top: 0;
|
|
250
|
+
}
|
|
251
|
+
.ds-markdown li > :last-child {
|
|
252
|
+
margin-bottom: 0;
|
|
253
|
+
}
|
|
254
|
+
.ds-markdown .ds-markdown-paragraph:last-child {
|
|
255
|
+
margin-bottom: 0 !important;
|
|
256
|
+
}
|
|
257
|
+
.ds-markdown > :first-child {
|
|
258
|
+
margin-top: 0 !important;
|
|
259
|
+
}
|
|
260
|
+
.ds-markdown .ds-markdown-thinking {
|
|
261
|
+
border-left: 2px solid var(--ds-thinking-border-color);
|
|
262
|
+
padding: 0 0 0 12px;
|
|
263
|
+
color: rgb(var(--ds-rgb-label-2));
|
|
264
|
+
line-height: 26px;
|
|
265
|
+
font-size: var(--ds-font-size-m);
|
|
266
|
+
}
|
|
267
|
+
.ds-markdown .ds-markdown-answer {
|
|
268
|
+
margin: calc(var(--ds-md-zoom) * 12px) 0;
|
|
269
|
+
font-size: var(--ds-md-font-size);
|
|
270
|
+
line-height: var(--ds-md-line-height);
|
|
271
|
+
}
|
|
272
|
+
.ds-button {
|
|
273
|
+
--button-height: 28px;
|
|
274
|
+
--button-font-size: var(--ds-font-size-m);
|
|
275
|
+
--button-line-height: var(--ds-line-height-m);
|
|
276
|
+
--button-border-radius: 10px;
|
|
277
|
+
--button-padding: 0 14px;
|
|
278
|
+
--button-icon-size: 18px;
|
|
279
|
+
--button-icon-margin: 0 8px 0 0;
|
|
280
|
+
}
|
|
281
|
+
.ds-button {
|
|
282
|
+
height: var(--button-height);
|
|
283
|
+
line-height: var(--button-line-height);
|
|
284
|
+
font-size: var(--button-font-size);
|
|
285
|
+
border-radius: var(--button-border-radius);
|
|
286
|
+
padding: var(--button-padding);
|
|
287
|
+
-webkit-user-select: none;
|
|
288
|
+
-moz-user-select: none;
|
|
289
|
+
-ms-user-select: none;
|
|
290
|
+
user-select: none;
|
|
291
|
+
cursor: pointer;
|
|
292
|
+
white-space: nowrap;
|
|
293
|
+
box-sizing: border-box;
|
|
294
|
+
transition: opacity var(--ds-transition-duration) var(--ds-ease-in-out), background-color var(--ds-transition-duration) var(--ds-ease-in-out);
|
|
295
|
+
font-variant-numeric: tabular-nums;
|
|
296
|
+
outline: none;
|
|
297
|
+
align-items: center;
|
|
298
|
+
text-decoration: none;
|
|
299
|
+
display: inline-flex;
|
|
300
|
+
position: relative;
|
|
301
|
+
}
|
|
302
|
+
.ds-button__disabled {
|
|
303
|
+
cursor: not-allowed;
|
|
304
|
+
opacity: 0.5;
|
|
305
|
+
}
|
|
306
|
+
.ds-button > .ds-button__icon {
|
|
307
|
+
line-height: 0;
|
|
308
|
+
font-size: var(--button-icon-size);
|
|
309
|
+
width: var(--button-icon-size);
|
|
310
|
+
height: var(--button-icon-size);
|
|
311
|
+
margin: var(--button-icon-margin);
|
|
312
|
+
flex-grow: 0;
|
|
313
|
+
flex-shrink: 0;
|
|
314
|
+
justify-content: center;
|
|
315
|
+
align-items: center;
|
|
316
|
+
display: flex;
|
|
317
|
+
}
|
|
318
|
+
.ds-button:hover {
|
|
319
|
+
background-color: var(--ds-button-hover-color);
|
|
320
|
+
}
|
|
321
|
+
[id^='dmermaid-'] {
|
|
322
|
+
height: 0;
|
|
323
|
+
overflow: hidden;
|
|
324
|
+
}
|
|
325
|
+
.ds-button.ds-icon-button {
|
|
326
|
+
padding: 0 4px;
|
|
327
|
+
}
|
|
328
|
+
.ds-button.ds-icon-button .ds-button__icon {
|
|
329
|
+
margin-right: 0;
|
|
330
|
+
}
|
package/es/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import MarkdownCMD from './MarkdownCMD';
|
|
2
|
+
import Markdown from './Markdown';
|
|
3
|
+
import type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, MarkdownProps, MarkdownCMDProps, IMarkdownPlugin, IMarkdownMermaidConfig } from './defined';
|
|
4
|
+
import type { ITypedChar } from 'react-markdown-typer';
|
|
5
|
+
import Button from './components/ui/Button';
|
|
6
|
+
import IconButton from './components/ui/IconButton';
|
|
7
|
+
import Segmented from './components/ui/Segmented';
|
|
8
|
+
import SuccessButton from './components/ui/SuccessButton';
|
|
9
|
+
import CopyButton from './components/CopyButton';
|
|
10
|
+
import DownloadButton from './components/DownloadButton';
|
|
11
|
+
import CodeBlockActions from './components/CodeComponent/CodeBlockActions';
|
|
12
|
+
import CodeBlockWrap from './components/CodeComponent/CodeBlockWrap';
|
|
13
|
+
import HighlightCode from './components/CodeComponent/HighlightCode';
|
|
14
|
+
import './index.less';
|
|
15
|
+
export { CopyIcon, DownloadIcon, CheckMarkIcon } from './components/Icon';
|
|
16
|
+
export { ConfigProvider, useConfig, useLocale } from './context/ConfigProvider';
|
|
17
|
+
export { useThemeState } from './context/MarkdownThemeProvider';
|
|
18
|
+
export * from './defined/mermaid.type';
|
|
19
|
+
export type { Locale, ConfigProviderProps, ConfigContextType } from './context/ConfigProvider';
|
|
20
|
+
export default Markdown;
|
|
21
|
+
export type { MarkdownCMDRef, MarkdownRef, IMarkdownMath, ITypedChar, MarkdownProps, MarkdownCMDProps, IMarkdownPlugin, IMarkdownMermaidConfig };
|
|
22
|
+
export { Markdown, MarkdownCMD, Button, IconButton, CopyButton, DownloadButton, SuccessButton, CodeBlockActions, CodeBlockWrap, HighlightCode, Segmented };
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACtJ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,gBAAgB,MAAM,6CAA6C,CAAC;AAC3E,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE/F,eAAe,QAAQ,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC;AACjJ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}
|
package/es/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable react-refresh/only-export-components */
|
|
2
|
+
import MarkdownCMD from './MarkdownCMD/index.js';
|
|
3
|
+
import Markdown from './Markdown/index.js';
|
|
4
|
+
import Button from './components/ui/Button/index.js';
|
|
5
|
+
import IconButton from './components/ui/IconButton/index.js';
|
|
6
|
+
import Segmented from './components/ui/Segmented/index.js';
|
|
7
|
+
import SuccessButton from './components/ui/SuccessButton/index.js';
|
|
8
|
+
import CopyButton from './components/CopyButton/index.js';
|
|
9
|
+
import DownloadButton from './components/DownloadButton/index.js';
|
|
10
|
+
import CodeBlockActions from './components/CodeComponent/CodeBlockActions/index.js';
|
|
11
|
+
import CodeBlockWrap from './components/CodeComponent/CodeBlockWrap/index.js';
|
|
12
|
+
import HighlightCode from './components/CodeComponent/HighlightCode/index.js';
|
|
13
|
+
import './index.css';
|
|
14
|
+
export { CopyIcon, DownloadIcon, CheckMarkIcon } from './components/Icon/index.js';
|
|
15
|
+
// 导出 ConfigProvider 相关
|
|
16
|
+
export { ConfigProvider, useConfig, useLocale } from './context/ConfigProvider/index.js';
|
|
17
|
+
export { useThemeState } from './context/MarkdownThemeProvider.js';
|
|
18
|
+
export * from './defined/mermaid.type.js';
|
|
19
|
+
export default Markdown;
|
|
20
|
+
export { Markdown, MarkdownCMD, Button, IconButton, CopyButton, DownloadButton, SuccessButton, CodeBlockActions, CodeBlockWrap, HighlightCode, Segmented };
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
package/es/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAIlC,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAE1D,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,gBAAgB,MAAM,6CAA6C,CAAC;AAC3E,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1E,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,cAAc,wBAAwB,CAAC;AAGvC,eAAe,QAAQ,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IMarkdownPlugin } from '../defined';
|
|
2
|
+
import { katexId, mermaidId } from '../constant';
|
|
3
|
+
declare function createBuildInPlugin(partialPlugin: Partial<IMarkdownPlugin>): IMarkdownPlugin;
|
|
4
|
+
declare const katexPlugin: IMarkdownPlugin;
|
|
5
|
+
export { createBuildInPlugin, katexPlugin, mermaidId, katexId, IMarkdownPlugin };
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjD,iBAAS,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,mBAOnE;AAED,QAAA,MAAM,WAAW,iBAIf,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import remarkMath from 'remark-math';
|
|
2
2
|
import rehypeKatex from 'rehype-katex';
|
|
3
|
-
|
|
4
|
-
process.env.NODE_ENV === 'development';
|
|
5
|
-
const ID_PREFIX__ = '__ds-markdown__';
|
|
6
|
-
/** 数学公式插件id */
|
|
7
|
-
const katexId = `${ID_PREFIX__}katex`;
|
|
8
|
-
/** 流程图插件id */
|
|
9
|
-
const mermaidId = `${ID_PREFIX__}mermaid`;
|
|
10
|
-
|
|
3
|
+
import { katexId, mermaidId } from '../constant.js';
|
|
11
4
|
function createBuildInPlugin(partialPlugin) {
|
|
12
5
|
const plugin = {
|
|
13
6
|
...partialPlugin,
|
|
@@ -20,6 +13,5 @@ const katexPlugin = createBuildInPlugin({
|
|
|
20
13
|
rehypePlugin: rehypeKatex,
|
|
21
14
|
id: katexId,
|
|
22
15
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
|
16
|
+
export { createBuildInPlugin, katexPlugin, mermaidId, katexId };
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjD,SAAS,mBAAmB,CAAC,aAAuC;IAClE,MAAM,MAAM,GAAoB;QAC9B,GAAG,aAAa;QAChB,IAAI,EAAE,SAAS;KAChB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAAG,mBAAmB,CAAC;IACtC,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,WAAW;IACzB,EAAE,EAAE,OAAO;CACZ,CAAC,CAAC;AAEH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAmB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
+
export declare const getTokenId: () => number;
|
|
3
|
+
interface Space {
|
|
4
|
+
type: 'space';
|
|
5
|
+
raw: string;
|
|
6
|
+
noTrimEndRaw?: string;
|
|
7
|
+
id: number;
|
|
8
|
+
}
|
|
9
|
+
interface Fence {
|
|
10
|
+
type: 'fence';
|
|
11
|
+
raw: string;
|
|
12
|
+
id: number;
|
|
13
|
+
}
|
|
14
|
+
interface Segment {
|
|
15
|
+
type: 'segment';
|
|
16
|
+
raw: string;
|
|
17
|
+
id: number;
|
|
18
|
+
}
|
|
19
|
+
interface List {
|
|
20
|
+
type: 'list';
|
|
21
|
+
raw: string;
|
|
22
|
+
items: ListItem[];
|
|
23
|
+
loose: boolean;
|
|
24
|
+
id: number;
|
|
25
|
+
}
|
|
26
|
+
interface ListItem {
|
|
27
|
+
type: 'list_item';
|
|
28
|
+
raw: string;
|
|
29
|
+
task: boolean;
|
|
30
|
+
checked: boolean | undefined;
|
|
31
|
+
loose: boolean;
|
|
32
|
+
text: string;
|
|
33
|
+
tokens: Token[];
|
|
34
|
+
id: number;
|
|
35
|
+
}
|
|
36
|
+
export type Token = Space | Fence | Segment | List | ListItem;
|
|
37
|
+
export declare class Tokenizer {
|
|
38
|
+
/** 空行 */
|
|
39
|
+
space(src: string): Space | undefined;
|
|
40
|
+
/** 围栏 fence */
|
|
41
|
+
fence(src: string): Fence | undefined;
|
|
42
|
+
/** 块 */
|
|
43
|
+
segment(src: string): Segment | undefined;
|
|
44
|
+
/** 列表 */
|
|
45
|
+
list(src: string): List | undefined;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=Tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/utils/Tokenizer.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAMzB,eAAO,MAAM,UAAU,cAEtB,CAAC;AAEF,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,OAAO;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9D,qBAAa,SAAS;IACpB,SAAS;IACT,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,eAAe;IACf,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAUrC,QAAQ;IACR,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAWzC,SAAS;IACT,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CA6KpC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/** 此文件借鉴 marked 的部分代码 */
|
|
2
|
+
import { rules } from './rule.js';
|
|
3
|
+
let id = 0;
|
|
4
|
+
export const getTokenId = () => {
|
|
5
|
+
return id++;
|
|
6
|
+
};
|
|
7
|
+
export class Tokenizer {
|
|
8
|
+
/** 空行 */
|
|
9
|
+
space(src) {
|
|
10
|
+
const cap = rules.block.newline.exec(src);
|
|
11
|
+
if (cap) {
|
|
12
|
+
return {
|
|
13
|
+
type: 'space',
|
|
14
|
+
raw: cap[0],
|
|
15
|
+
id: getTokenId(),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** 围栏 fence */
|
|
20
|
+
fence(src) {
|
|
21
|
+
const cap = rules.block.fences.exec(src);
|
|
22
|
+
if (cap) {
|
|
23
|
+
return {
|
|
24
|
+
type: 'fence',
|
|
25
|
+
raw: cap[0],
|
|
26
|
+
id: getTokenId(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** 块 */
|
|
31
|
+
segment(src) {
|
|
32
|
+
const cap = rules.block.segment.exec(src);
|
|
33
|
+
if (cap) {
|
|
34
|
+
return {
|
|
35
|
+
type: 'segment',
|
|
36
|
+
raw: cap[0],
|
|
37
|
+
id: getTokenId(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** 列表 */
|
|
42
|
+
list(src) {
|
|
43
|
+
let cap = rules.block.list.exec(src);
|
|
44
|
+
if (cap) {
|
|
45
|
+
let bull = cap[1].trim();
|
|
46
|
+
const isordered = bull.length > 1;
|
|
47
|
+
const list = {
|
|
48
|
+
type: 'list',
|
|
49
|
+
raw: '',
|
|
50
|
+
items: [],
|
|
51
|
+
loose: false,
|
|
52
|
+
id: getTokenId(),
|
|
53
|
+
};
|
|
54
|
+
bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
|
|
55
|
+
// Get next list item
|
|
56
|
+
const itemRegex = rules.other.listItemRegex(bull);
|
|
57
|
+
while (src) {
|
|
58
|
+
let endEarly = false;
|
|
59
|
+
let raw = '';
|
|
60
|
+
let itemContents = '';
|
|
61
|
+
if (!(cap = itemRegex.exec(src))) {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (rules.block.hr.test(src)) {
|
|
65
|
+
// End list if bullet was actually HR (possibly move into itemRegex?)
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
raw = cap[0];
|
|
69
|
+
src = src.substring(raw.length);
|
|
70
|
+
/** 获取列表项 */
|
|
71
|
+
let line = cap[2].split('\n', 1)[0].replace(rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));
|
|
72
|
+
let nextLine = src.split('\n', 1)[0];
|
|
73
|
+
let blankLine = !line.trim();
|
|
74
|
+
let indent = 0;
|
|
75
|
+
if (blankLine) {
|
|
76
|
+
indent = cap[1].length + 1;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
indent = cap[2].search(rules.other.nonSpaceChar); // Find first non-space char
|
|
80
|
+
indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
|
|
81
|
+
itemContents = line.slice(indent);
|
|
82
|
+
indent += cap[1].length;
|
|
83
|
+
}
|
|
84
|
+
if (blankLine && src === '') {
|
|
85
|
+
endEarly = true;
|
|
86
|
+
}
|
|
87
|
+
else if (blankLine && rules.other.blankLine.test(nextLine)) {
|
|
88
|
+
// Items begin with at most one blank line
|
|
89
|
+
raw += nextLine + '\n';
|
|
90
|
+
src = src.substring(nextLine.length + 1);
|
|
91
|
+
endEarly = true;
|
|
92
|
+
}
|
|
93
|
+
if (!endEarly) {
|
|
94
|
+
const nextBulletRegex = rules.other.nextBulletRegex(indent);
|
|
95
|
+
const hrRegex = rules.other.hrRegex(indent);
|
|
96
|
+
const fencesBeginRegex = rules.other.fencesBeginRegex(indent);
|
|
97
|
+
const headingBeginRegex = rules.other.headingBeginRegex(indent);
|
|
98
|
+
const htmlBeginRegex = rules.other.htmlBeginRegex(indent);
|
|
99
|
+
// Check if following lines should be included in List Item
|
|
100
|
+
while (src) {
|
|
101
|
+
const rawLine = src.split('\n', 1)[0];
|
|
102
|
+
const nextLineWithoutTabs = nextLine.replace(rules.other.tabCharGlobal, ' ');
|
|
103
|
+
nextLine = rawLine;
|
|
104
|
+
// End list item if found code fences
|
|
105
|
+
if (fencesBeginRegex.test(nextLine)) {
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
// End list item if found start of new heading
|
|
109
|
+
if (headingBeginRegex.test(nextLine)) {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
// End list item if found start of html block
|
|
113
|
+
if (htmlBeginRegex.test(nextLine)) {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
// End list item if found start of new bullet
|
|
117
|
+
if (nextBulletRegex.test(nextLine)) {
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
// Horizontal rule found
|
|
121
|
+
if (hrRegex.test(nextLine)) {
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
if (nextLineWithoutTabs.search(rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {
|
|
125
|
+
// Dedent if possible
|
|
126
|
+
itemContents += '\n' + nextLineWithoutTabs.slice(indent);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// not enough indentation
|
|
130
|
+
if (blankLine) {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
// paragraph continuation unless last line was a different block level element
|
|
134
|
+
if (line.replace(rules.other.tabCharGlobal, ' ').search(rules.other.nonSpaceChar) >= 4) {
|
|
135
|
+
// indented code block
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
if (fencesBeginRegex.test(line)) {
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
if (headingBeginRegex.test(line)) {
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
if (hrRegex.test(line)) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
itemContents += '\n' + nextLine;
|
|
148
|
+
}
|
|
149
|
+
if (!blankLine && !nextLine.trim()) {
|
|
150
|
+
// Check if current line is blank
|
|
151
|
+
blankLine = true;
|
|
152
|
+
}
|
|
153
|
+
raw += rawLine + '\n';
|
|
154
|
+
src = src.substring(rawLine.length + 1);
|
|
155
|
+
line = nextLineWithoutTabs.slice(indent);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
let ischecked;
|
|
159
|
+
const istask = rules.other.listIsTask.exec(itemContents);
|
|
160
|
+
if (istask) {
|
|
161
|
+
ischecked = istask[0] !== '[ ] ';
|
|
162
|
+
itemContents = itemContents.replace(rules.other.listReplaceTask, '');
|
|
163
|
+
}
|
|
164
|
+
list.items.push({
|
|
165
|
+
type: 'list_item',
|
|
166
|
+
raw,
|
|
167
|
+
task: !!istask,
|
|
168
|
+
checked: ischecked,
|
|
169
|
+
loose: false,
|
|
170
|
+
text: itemContents,
|
|
171
|
+
tokens: [],
|
|
172
|
+
id: getTokenId(),
|
|
173
|
+
});
|
|
174
|
+
list.raw += raw;
|
|
175
|
+
}
|
|
176
|
+
// Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
|
|
177
|
+
const lastItem = list.items.at(-1);
|
|
178
|
+
if (lastItem) {
|
|
179
|
+
lastItem.raw = lastItem.raw.trimEnd();
|
|
180
|
+
lastItem.text = lastItem.text.trimEnd();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// not a list since there were no items
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
list.raw = list.raw.trimEnd();
|
|
187
|
+
return list;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=Tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../../src/utils/Tokenizer.ts"],"names":[],"mappings":"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"}
|