ds-markdown 0.2.4-beta.0 → 0.2.4-beta.2

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.
Files changed (159) hide show
  1. package/es/AutoScroll/index.d.ts +7 -0
  2. package/es/AutoScroll/index.d.ts.map +1 -0
  3. package/es/AutoScroll/index.js +7 -0
  4. package/es/AutoScroll/index.js.map +1 -0
  5. package/es/Markdown/index.d.ts +5 -0
  6. package/es/Markdown/index.d.ts.map +1 -0
  7. package/es/Markdown/index.js +78 -0
  8. package/es/Markdown/index.js.map +1 -0
  9. package/es/MarkdownCMD/index.d.ts +13 -0
  10. package/es/MarkdownCMD/index.d.ts.map +1 -0
  11. package/es/MarkdownCMD/index.js +122 -0
  12. package/es/MarkdownCMD/index.js.map +1 -0
  13. package/es/components/CodeComponent/BlockWrap/index.css +64 -0
  14. package/es/components/CodeComponent/BlockWrap/index.d.ts +10 -0
  15. package/es/components/CodeComponent/BlockWrap/index.d.ts.map +1 -0
  16. package/es/components/CodeComponent/BlockWrap/index.js +20 -0
  17. package/es/components/CodeComponent/BlockWrap/index.js.map +1 -0
  18. package/es/components/CodeComponent/CodeBlockActions/index.d.ts +8 -0
  19. package/es/components/CodeComponent/CodeBlockActions/index.d.ts.map +1 -0
  20. package/es/components/CodeComponent/CodeBlockActions/index.js +8 -0
  21. package/es/components/CodeComponent/CodeBlockActions/index.js.map +1 -0
  22. package/es/components/CodeComponent/CodeBlockWrap/index.d.ts +8 -0
  23. package/es/components/CodeComponent/CodeBlockWrap/index.d.ts.map +1 -0
  24. package/es/components/CodeComponent/CodeBlockWrap/index.js +8 -0
  25. package/es/components/CodeComponent/CodeBlockWrap/index.js.map +1 -0
  26. package/es/components/CodeComponent/HighlightCode/index.d.ts +8 -0
  27. package/es/components/CodeComponent/HighlightCode/index.d.ts.map +1 -0
  28. package/es/components/CodeComponent/HighlightCode/index.js +7 -0
  29. package/es/components/CodeComponent/HighlightCode/index.js.map +1 -0
  30. package/es/components/CodeComponent/index.css +551 -0
  31. package/es/components/CodeComponent/index.d.ts +8 -0
  32. package/es/components/CodeComponent/index.d.ts.map +1 -0
  33. package/es/components/CodeComponent/index.js +11 -0
  34. package/es/components/CodeComponent/index.js.map +1 -0
  35. package/es/components/CopyButton/index.d.ts +9 -0
  36. package/es/components/CopyButton/index.d.ts.map +1 -0
  37. package/es/components/CopyButton/index.js +24 -0
  38. package/es/components/CopyButton/index.js.map +1 -0
  39. package/es/components/DownloadButton/index.d.ts +10 -0
  40. package/es/components/DownloadButton/index.d.ts.map +1 -0
  41. package/es/components/DownloadButton/index.js +61 -0
  42. package/es/components/DownloadButton/index.js.map +1 -0
  43. package/es/components/Icon/index.d.ts +12 -0
  44. package/es/components/Icon/index.d.ts.map +1 -0
  45. package/es/components/Icon/index.js +12 -0
  46. package/es/components/Icon/index.js.map +1 -0
  47. package/es/components/TableComponent/index.css +24 -0
  48. package/es/components/TableComponent/index.d.ts +8 -0
  49. package/es/components/TableComponent/index.d.ts.map +1 -0
  50. package/es/components/TableComponent/index.js +7 -0
  51. package/es/components/TableComponent/index.js.map +1 -0
  52. package/es/components/ui/Button/index.d.ts +12 -0
  53. package/es/components/ui/Button/index.d.ts.map +1 -0
  54. package/es/components/ui/Button/index.js +17 -0
  55. package/es/components/ui/Button/index.js.map +1 -0
  56. package/es/components/ui/IconButton/index.d.ts +9 -0
  57. package/es/components/ui/IconButton/index.d.ts.map +1 -0
  58. package/es/components/ui/IconButton/index.js +7 -0
  59. package/es/components/ui/IconButton/index.js.map +1 -0
  60. package/es/components/ui/Segmented/index.css +35 -0
  61. package/es/components/ui/Segmented/index.d.ts +14 -0
  62. package/es/components/ui/Segmented/index.d.ts.map +1 -0
  63. package/es/components/ui/Segmented/index.js +10 -0
  64. package/es/components/ui/Segmented/index.js.map +1 -0
  65. package/es/components/ui/SuccessButton/index.d.ts +11 -0
  66. package/es/components/ui/SuccessButton/index.d.ts.map +1 -0
  67. package/es/components/ui/SuccessButton/index.js +46 -0
  68. package/es/components/ui/SuccessButton/index.js.map +1 -0
  69. package/es/constant.d.ts +6 -0
  70. package/es/constant.d.ts.map +1 -0
  71. package/es/constant.js +7 -0
  72. package/es/constant.js.map +1 -0
  73. package/es/context/ConfigProvider/index.d.ts +40 -0
  74. package/es/context/ConfigProvider/index.d.ts.map +1 -0
  75. package/es/context/ConfigProvider/index.js +32 -0
  76. package/es/context/ConfigProvider/index.js.map +1 -0
  77. package/es/context/MarkdownProvider.d.ts +9 -0
  78. package/es/context/MarkdownProvider.d.ts.map +1 -0
  79. package/es/context/MarkdownProvider.js +10 -0
  80. package/es/context/MarkdownProvider.js.map +1 -0
  81. package/es/context/MarkdownThemeProvider.d.ts +21 -0
  82. package/es/context/MarkdownThemeProvider.d.ts.map +1 -0
  83. package/es/context/MarkdownThemeProvider.js +31 -0
  84. package/es/context/MarkdownThemeProvider.js.map +1 -0
  85. package/es/defined/index.d.ts +75 -0
  86. package/es/defined/index.d.ts.map +1 -0
  87. package/es/defined/index.js +3 -0
  88. package/es/defined/index.js.map +1 -0
  89. package/{dist/cjs/index.d.ts → es/defined/mermaid.type.d.ts} +6 -234
  90. package/es/defined/mermaid.type.d.ts.map +1 -0
  91. package/es/defined/mermaid.type.js +2 -0
  92. package/es/defined/mermaid.type.js.map +1 -0
  93. package/es/defined.css +481 -0
  94. package/{dist/cjs → es}/i18n/en/index.d.ts +4 -5
  95. package/es/i18n/en/index.d.ts.map +1 -0
  96. package/{dist/esm → es}/i18n/en/index.js +4 -4
  97. package/es/i18n/en/index.js.map +1 -0
  98. package/es/i18n/index.d.ts +7 -0
  99. package/es/i18n/index.d.ts.map +1 -0
  100. package/es/i18n/index.js +7 -0
  101. package/es/i18n/index.js.map +1 -0
  102. package/{dist/esm/i18n/en → es/i18n/zh}/index.d.ts +5 -6
  103. package/es/i18n/zh/index.d.ts.map +1 -0
  104. package/{dist/esm → es}/i18n/zh/index.js +4 -4
  105. package/es/i18n/zh/index.js.map +1 -0
  106. package/es/index.css +330 -0
  107. package/es/index.d.ts +23 -0
  108. package/es/index.d.ts.map +1 -0
  109. package/es/index.js +21 -0
  110. package/es/index.js.map +1 -0
  111. package/es/plugins/index.d.ts +6 -0
  112. package/es/plugins/index.d.ts.map +1 -0
  113. package/{dist/esm → es}/plugins/index.js +3 -11
  114. package/es/plugins/index.js.map +1 -0
  115. package/es/utils/Tokenizer.d.ts +48 -0
  116. package/es/utils/Tokenizer.d.ts.map +1 -0
  117. package/es/utils/Tokenizer.js +191 -0
  118. package/es/utils/Tokenizer.js.map +1 -0
  119. package/es/utils/compiler.d.ts +5 -0
  120. package/es/utils/compiler.d.ts.map +1 -0
  121. package/es/utils/compiler.js +62 -0
  122. package/es/utils/compiler.js.map +1 -0
  123. package/es/utils/grapheme.d.ts +2 -0
  124. package/es/utils/grapheme.d.ts.map +1 -0
  125. package/es/utils/grapheme.js +4 -0
  126. package/es/utils/grapheme.js.map +1 -0
  127. package/es/utils/methods/deepClone.d.ts +2 -0
  128. package/es/utils/methods/deepClone.d.ts.map +1 -0
  129. package/es/utils/methods/deepClone.js +4 -0
  130. package/es/utils/methods/deepClone.js.map +1 -0
  131. package/es/utils/remarkMathBracket.d.ts +21 -0
  132. package/es/utils/remarkMathBracket.d.ts.map +1 -0
  133. package/es/utils/remarkMathBracket.js +49 -0
  134. package/es/utils/remarkMathBracket.js.map +1 -0
  135. package/es/utils/rule.d.ts +26 -0
  136. package/es/utils/rule.d.ts.map +1 -0
  137. package/es/utils/rule.js +69 -0
  138. package/es/utils/rule.js.map +1 -0
  139. package/package.json +27 -29
  140. package/dist/cjs/i18n/en/index.js +0 -30
  141. package/dist/cjs/i18n/en/index.js.map +0 -1
  142. package/dist/cjs/i18n/zh/index.d.ts +0 -26
  143. package/dist/cjs/i18n/zh/index.js +0 -30
  144. package/dist/cjs/i18n/zh/index.js.map +0 -1
  145. package/dist/cjs/index.js +0 -1106
  146. package/dist/cjs/index.js.map +0 -1
  147. package/dist/cjs/plugins/index.d.ts +0 -20
  148. package/dist/cjs/plugins/index.js +0 -30
  149. package/dist/cjs/plugins/index.js.map +0 -1
  150. package/dist/esm/i18n/en/index.js.map +0 -1
  151. package/dist/esm/i18n/zh/index.d.ts +0 -26
  152. package/dist/esm/i18n/zh/index.js.map +0 -1
  153. package/dist/esm/index.d.ts +0 -1747
  154. package/dist/esm/index.js +0 -1084
  155. package/dist/esm/index.js.map +0 -1
  156. package/dist/esm/plugins/index.d.ts +0 -20
  157. package/dist/esm/plugins/index.js.map +0 -1
  158. /package/{dist → es}/katex.css +0 -0
  159. /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
@@ -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
- export { createBuildInPlugin, katexId, katexPlugin, mermaidId };
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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"}