mossmd 0.8.1
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/CHANGELOG.md +87 -0
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/collab/index.d.ts +14 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +6 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/core/code-languages.d.ts +3 -0
- package/dist/core/code-languages.d.ts.map +1 -0
- package/dist/core/code-languages.js +130 -0
- package/dist/core/code-languages.js.map +1 -0
- package/dist/core/decoration-utils.d.ts +4 -0
- package/dist/core/decoration-utils.d.ts.map +1 -0
- package/dist/core/decoration-utils.js +25 -0
- package/dist/core/decoration-utils.js.map +1 -0
- package/dist/core/edit-helpers.d.ts +13 -0
- package/dist/core/edit-helpers.d.ts.map +1 -0
- package/dist/core/edit-helpers.js +318 -0
- package/dist/core/edit-helpers.js.map +1 -0
- package/dist/core/icons.d.ts +16 -0
- package/dist/core/icons.d.ts.map +1 -0
- package/dist/core/icons.js +86 -0
- package/dist/core/icons.js.map +1 -0
- package/dist/core/inline-preview.d.ts +32 -0
- package/dist/core/inline-preview.d.ts.map +1 -0
- package/dist/core/inline-preview.js +925 -0
- package/dist/core/inline-preview.js.map +1 -0
- package/dist/core/list-editing.d.ts +10 -0
- package/dist/core/list-editing.d.ts.map +1 -0
- package/dist/core/list-editing.js +244 -0
- package/dist/core/list-editing.js.map +1 -0
- package/dist/core/list-model.d.ts +40 -0
- package/dist/core/list-model.d.ts.map +1 -0
- package/dist/core/list-model.js +114 -0
- package/dist/core/list-model.js.map +1 -0
- package/dist/core/list-navigation.d.ts +3 -0
- package/dist/core/list-navigation.d.ts.map +1 -0
- package/dist/core/list-navigation.js +234 -0
- package/dist/core/list-navigation.js.map +1 -0
- package/dist/core/markdown-context.d.ts +3 -0
- package/dist/core/markdown-context.d.ts.map +1 -0
- package/dist/core/markdown-context.js +10 -0
- package/dist/core/markdown-context.js.map +1 -0
- package/dist/core/preview-activity.d.ts +18 -0
- package/dist/core/preview-activity.d.ts.map +1 -0
- package/dist/core/preview-activity.js +199 -0
- package/dist/core/preview-activity.js.map +1 -0
- package/dist/core/preview-widgets.d.ts +65 -0
- package/dist/core/preview-widgets.d.ts.map +1 -0
- package/dist/core/preview-widgets.js +359 -0
- package/dist/core/preview-widgets.js.map +1 -0
- package/dist/core/read-only.d.ts +26 -0
- package/dist/core/read-only.d.ts.map +1 -0
- package/dist/core/read-only.js +49 -0
- package/dist/core/read-only.js.map +1 -0
- package/dist/core/tree-progress.d.ts +29 -0
- package/dist/core/tree-progress.d.ts.map +1 -0
- package/dist/core/tree-progress.js +143 -0
- package/dist/core/tree-progress.js.map +1 -0
- package/dist/editor.d.ts +219 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +551 -0
- package/dist/editor.js.map +1 -0
- package/dist/features/callout/index.d.ts +9 -0
- package/dist/features/callout/index.d.ts.map +1 -0
- package/dist/features/callout/index.js +223 -0
- package/dist/features/callout/index.js.map +1 -0
- package/dist/features/file-blocks/index.d.ts +12 -0
- package/dist/features/file-blocks/index.d.ts.map +1 -0
- package/dist/features/file-blocks/index.js +397 -0
- package/dist/features/file-blocks/index.js.map +1 -0
- package/dist/features/image/index.d.ts +28 -0
- package/dist/features/image/index.d.ts.map +1 -0
- package/dist/features/image/index.js +699 -0
- package/dist/features/image/index.js.map +1 -0
- package/dist/features/index.d.ts +17 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +9 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/search/index.d.ts +4 -0
- package/dist/features/search/index.d.ts.map +1 -0
- package/dist/features/search/index.js +131 -0
- package/dist/features/search/index.js.map +1 -0
- package/dist/features/slash-commands/index.d.ts +52 -0
- package/dist/features/slash-commands/index.d.ts.map +1 -0
- package/dist/features/slash-commands/index.js +422 -0
- package/dist/features/slash-commands/index.js.map +1 -0
- package/dist/features/table/index.d.ts +44 -0
- package/dist/features/table/index.d.ts.map +1 -0
- package/dist/features/table/index.js +1262 -0
- package/dist/features/table/index.js.map +1 -0
- package/dist/features/upload/index.d.ts +80 -0
- package/dist/features/upload/index.d.ts.map +1 -0
- package/dist/features/upload/index.js +790 -0
- package/dist/features/upload/index.js.map +1 -0
- package/dist/features/wiki-links/index.d.ts +27 -0
- package/dist/features/wiki-links/index.d.ts.map +1 -0
- package/dist/features/wiki-links/index.js +577 -0
- package/dist/features/wiki-links/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/content.css +247 -0
- package/dist/styles/inline-preview.css +2116 -0
- package/dist/styles/tokens.css +234 -0
- package/dist/syntax/highlight.d.ts +10 -0
- package/dist/syntax/highlight.d.ts.map +1 -0
- package/dist/syntax/highlight.js +75 -0
- package/dist/syntax/highlight.js.map +1 -0
- package/dist/syntax/index.d.ts +16 -0
- package/dist/syntax/index.d.ts.map +1 -0
- package/dist/syntax/index.js +29 -0
- package/dist/syntax/index.js.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +204 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +237 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Shared MossMD theme tokens.
|
|
3
|
+
*
|
|
4
|
+
* These variables are the contract between the editor surface and any
|
|
5
|
+
* rendered markdown surface outside CodeMirror. Consumers can override
|
|
6
|
+
* them on any ancestor element, or switch the palette by setting
|
|
7
|
+
* `data-theme="light"` on an ancestor.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
:root {
|
|
11
|
+
--moss-font: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
12
|
+
--moss-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
13
|
+
--moss-body-size: 1rem;
|
|
14
|
+
--moss-body-leading: 1.7;
|
|
15
|
+
--moss-measure: 70ch;
|
|
16
|
+
--moss-radius: 6px;
|
|
17
|
+
|
|
18
|
+
--moss-fg: #dcddde;
|
|
19
|
+
--moss-fg-muted: #888888;
|
|
20
|
+
--moss-fg-faint: #666666;
|
|
21
|
+
--moss-bg: #1e1e1e;
|
|
22
|
+
--moss-bg-panel: #252525;
|
|
23
|
+
--moss-bg-surface: #2d2d2d;
|
|
24
|
+
--moss-border: #3d3d3d;
|
|
25
|
+
--moss-accent: #7c3aed;
|
|
26
|
+
--moss-accent-bright: #a78bfa;
|
|
27
|
+
--moss-list-marker: #a78bfa;
|
|
28
|
+
--moss-list-ordered: var(--moss-list-marker);
|
|
29
|
+
--moss-list-unordered: var(--moss-list-marker);
|
|
30
|
+
--moss-accent-soft: color-mix(
|
|
31
|
+
in srgb,
|
|
32
|
+
var(--moss-accent-bright) 72%,
|
|
33
|
+
white 28%
|
|
34
|
+
);
|
|
35
|
+
--moss-link: #818cf8;
|
|
36
|
+
--moss-link-hover: #a5b4fc;
|
|
37
|
+
--moss-code-bg: color-mix(
|
|
38
|
+
in srgb,
|
|
39
|
+
var(--moss-bg-surface) 88%,
|
|
40
|
+
black 12%
|
|
41
|
+
);
|
|
42
|
+
--moss-code-rail: color-mix(
|
|
43
|
+
in srgb,
|
|
44
|
+
var(--moss-accent) 45%,
|
|
45
|
+
var(--moss-border) 55%
|
|
46
|
+
);
|
|
47
|
+
--moss-selection-bg: color-mix(
|
|
48
|
+
in srgb,
|
|
49
|
+
var(--moss-accent) 28%,
|
|
50
|
+
var(--moss-bg) 72%
|
|
51
|
+
);
|
|
52
|
+
--moss-search-bg: color-mix(in srgb, var(--moss-accent) 26%, transparent 74%);
|
|
53
|
+
--moss-search-bg-active: color-mix(
|
|
54
|
+
in srgb,
|
|
55
|
+
var(--moss-accent) 60%,
|
|
56
|
+
transparent 40%
|
|
57
|
+
);
|
|
58
|
+
--moss-initial-reveal-bg: color-mix(
|
|
59
|
+
in srgb,
|
|
60
|
+
var(--moss-accent-soft) 28%,
|
|
61
|
+
transparent 72%
|
|
62
|
+
);
|
|
63
|
+
--moss-initial-reveal-bg-strong: color-mix(
|
|
64
|
+
in srgb,
|
|
65
|
+
var(--moss-accent-soft) 42%,
|
|
66
|
+
transparent 58%
|
|
67
|
+
);
|
|
68
|
+
--moss-hl-keyword: #c792ea;
|
|
69
|
+
--moss-hl-string: #c3e88d;
|
|
70
|
+
--moss-hl-number: #f78c6c;
|
|
71
|
+
--moss-hl-comment: #6a7a82;
|
|
72
|
+
--moss-hl-type: #ffcb6b;
|
|
73
|
+
--moss-hl-function: #82aaff;
|
|
74
|
+
--moss-hl-property: #82aaff;
|
|
75
|
+
--moss-hl-regexp: #f07178;
|
|
76
|
+
--moss-hl-escape: #89ddff;
|
|
77
|
+
--moss-hl-tag: #f07178;
|
|
78
|
+
--moss-hl-variable: #eeffff;
|
|
79
|
+
--moss-hl-operator: #89ddff;
|
|
80
|
+
--moss-hl-invalid: #ff5370;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[data-theme="light"] {
|
|
84
|
+
--moss-fg: #24292f;
|
|
85
|
+
--moss-fg-muted: #57606a;
|
|
86
|
+
--moss-fg-faint: #8c959f;
|
|
87
|
+
--moss-bg: #ffffff;
|
|
88
|
+
--moss-bg-panel: #f6f8fa;
|
|
89
|
+
--moss-bg-surface: #eaeef2;
|
|
90
|
+
--moss-border: #d0d7de;
|
|
91
|
+
--moss-accent: #6639ba;
|
|
92
|
+
--moss-accent-bright: #8250df;
|
|
93
|
+
--moss-list-marker: #8250df;
|
|
94
|
+
--moss-list-ordered: var(--moss-list-marker);
|
|
95
|
+
--moss-list-unordered: var(--moss-list-marker);
|
|
96
|
+
--moss-accent-soft: #c4b5fd;
|
|
97
|
+
--moss-link: #6d28d9;
|
|
98
|
+
--moss-link-hover: #7c3aed;
|
|
99
|
+
--moss-code-bg: #f3f1fb;
|
|
100
|
+
--moss-selection-bg: color-mix(in srgb, #8250df 18%, transparent 82%);
|
|
101
|
+
--moss-search-bg: rgba(251, 189, 8, 0.35);
|
|
102
|
+
--moss-search-bg-active: rgba(251, 189, 8, 0.6);
|
|
103
|
+
--moss-initial-reveal-bg: color-mix(in srgb, #8250df 16%, transparent 84%);
|
|
104
|
+
--moss-initial-reveal-bg-strong: color-mix(in srgb, #8250df 30%, transparent 70%);
|
|
105
|
+
--moss-hl-keyword: #cf222e;
|
|
106
|
+
--moss-hl-string: #0a3069;
|
|
107
|
+
--moss-hl-number: #0550ae;
|
|
108
|
+
--moss-hl-comment: #6e7781;
|
|
109
|
+
--moss-hl-type: #953800;
|
|
110
|
+
--moss-hl-function: #8250df;
|
|
111
|
+
--moss-hl-property: #0550ae;
|
|
112
|
+
--moss-hl-regexp: #116329;
|
|
113
|
+
--moss-hl-escape: #0550ae;
|
|
114
|
+
--moss-hl-tag: #116329;
|
|
115
|
+
--moss-hl-variable: #24292f;
|
|
116
|
+
--moss-hl-operator: #cf222e;
|
|
117
|
+
--moss-hl-invalid: #82071e;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/*
|
|
121
|
+
* Blue presets.
|
|
122
|
+
*
|
|
123
|
+
* These palettes intentionally keep the document foreground neutral while
|
|
124
|
+
* moving interaction, links, selections, and surfaces into a blue family.
|
|
125
|
+
* Use `data-theme="blue"` for the dark preset or `data-theme="blue-light"`
|
|
126
|
+
* for the light preset.
|
|
127
|
+
*/
|
|
128
|
+
[data-theme="blue"] {
|
|
129
|
+
--moss-fg: #dbe7f5;
|
|
130
|
+
--moss-fg-muted: #8fa5bd;
|
|
131
|
+
--moss-fg-faint: #637a93;
|
|
132
|
+
--moss-bg: #0b1220;
|
|
133
|
+
--moss-bg-panel: #0f1b2d;
|
|
134
|
+
--moss-bg-surface: #16263d;
|
|
135
|
+
--moss-border: #2b4568;
|
|
136
|
+
--moss-accent: #2d6dc3;
|
|
137
|
+
--moss-accent-bright: #6da7ff;
|
|
138
|
+
--moss-list-marker: #8fb9ff;
|
|
139
|
+
--moss-list-ordered: var(--moss-list-marker);
|
|
140
|
+
--moss-list-unordered: var(--moss-list-marker);
|
|
141
|
+
--moss-accent-soft: #bcd8ff;
|
|
142
|
+
--moss-link: #7fb0ff;
|
|
143
|
+
--moss-link-hover: #bcd8ff;
|
|
144
|
+
--moss-code-bg: #101e32;
|
|
145
|
+
--moss-code-rail: color-mix(
|
|
146
|
+
in srgb,
|
|
147
|
+
var(--moss-accent) 55%,
|
|
148
|
+
var(--moss-border) 45%
|
|
149
|
+
);
|
|
150
|
+
--moss-selection-bg: color-mix(
|
|
151
|
+
in srgb,
|
|
152
|
+
var(--moss-accent) 42%,
|
|
153
|
+
var(--moss-bg) 58%
|
|
154
|
+
);
|
|
155
|
+
--moss-search-bg: rgba(250, 209, 59, 0.28);
|
|
156
|
+
--moss-search-bg-active: rgba(250, 209, 59, 0.58);
|
|
157
|
+
--moss-initial-reveal-bg: color-mix(
|
|
158
|
+
in srgb,
|
|
159
|
+
var(--moss-accent-bright) 28%,
|
|
160
|
+
transparent 72%
|
|
161
|
+
);
|
|
162
|
+
--moss-initial-reveal-bg-strong: color-mix(
|
|
163
|
+
in srgb,
|
|
164
|
+
var(--moss-accent-bright) 44%,
|
|
165
|
+
transparent 56%
|
|
166
|
+
);
|
|
167
|
+
--moss-hl-keyword: #9cc8ff;
|
|
168
|
+
--moss-hl-string: #a7d8b1;
|
|
169
|
+
--moss-hl-number: #ffb37a;
|
|
170
|
+
--moss-hl-comment: #7890a8;
|
|
171
|
+
--moss-hl-type: #ffd27a;
|
|
172
|
+
--moss-hl-function: #7ec8ff;
|
|
173
|
+
--moss-hl-property: #9bb3d7;
|
|
174
|
+
--moss-hl-regexp: #ff8e9e;
|
|
175
|
+
--moss-hl-escape: #7de3ff;
|
|
176
|
+
--moss-hl-tag: #ff8e9e;
|
|
177
|
+
--moss-hl-variable: #d9e7f5;
|
|
178
|
+
--moss-hl-operator: #7de3ff;
|
|
179
|
+
--moss-hl-invalid: #ff6b81;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
[data-theme="blue-light"] {
|
|
183
|
+
--moss-fg: #24364a;
|
|
184
|
+
--moss-fg-muted: #58708c;
|
|
185
|
+
--moss-fg-faint: #7e94aa;
|
|
186
|
+
--moss-bg: #f7fbff;
|
|
187
|
+
--moss-bg-panel: #ffffff;
|
|
188
|
+
--moss-bg-surface: #e8f0fb;
|
|
189
|
+
--moss-border: #c7d6e8;
|
|
190
|
+
--moss-accent: #2d6dc3;
|
|
191
|
+
--moss-accent-bright: #2871e9;
|
|
192
|
+
--moss-list-marker: #1d5db4;
|
|
193
|
+
--moss-list-ordered: var(--moss-list-marker);
|
|
194
|
+
--moss-list-unordered: var(--moss-list-marker);
|
|
195
|
+
--moss-accent-soft: #8fb9ff;
|
|
196
|
+
--moss-link: #1d5db4;
|
|
197
|
+
--moss-link-hover: #174b8f;
|
|
198
|
+
--moss-code-bg: #eff5fc;
|
|
199
|
+
--moss-code-rail: color-mix(
|
|
200
|
+
in srgb,
|
|
201
|
+
var(--moss-accent) 55%,
|
|
202
|
+
var(--moss-border) 45%
|
|
203
|
+
);
|
|
204
|
+
--moss-selection-bg: color-mix(
|
|
205
|
+
in srgb,
|
|
206
|
+
var(--moss-accent) 20%,
|
|
207
|
+
transparent 80%
|
|
208
|
+
);
|
|
209
|
+
--moss-search-bg: rgba(250, 209, 59, 0.35);
|
|
210
|
+
--moss-search-bg-active: rgba(250, 209, 59, 0.62);
|
|
211
|
+
--moss-initial-reveal-bg: color-mix(
|
|
212
|
+
in srgb,
|
|
213
|
+
var(--moss-accent-bright) 16%,
|
|
214
|
+
transparent 84%
|
|
215
|
+
);
|
|
216
|
+
--moss-initial-reveal-bg-strong: color-mix(
|
|
217
|
+
in srgb,
|
|
218
|
+
var(--moss-accent-bright) 30%,
|
|
219
|
+
transparent 70%
|
|
220
|
+
);
|
|
221
|
+
--moss-hl-keyword: #7c3aed;
|
|
222
|
+
--moss-hl-string: #16723a;
|
|
223
|
+
--moss-hl-number: #b54708;
|
|
224
|
+
--moss-hl-comment: #6b7d90;
|
|
225
|
+
--moss-hl-type: #8a5a00;
|
|
226
|
+
--moss-hl-function: #1d5db4;
|
|
227
|
+
--moss-hl-property: #245f9f;
|
|
228
|
+
--moss-hl-regexp: #b42318;
|
|
229
|
+
--moss-hl-escape: #087f9b;
|
|
230
|
+
--moss-hl-tag: #b42318;
|
|
231
|
+
--moss-hl-variable: #24364a;
|
|
232
|
+
--moss-hl-operator: #087f9b;
|
|
233
|
+
--moss-hl-invalid: #b42318;
|
|
234
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MarkdownConfig } from '@lezer/markdown';
|
|
2
|
+
/** Match one complete highlight span using the same rules as the Lezer parser. */
|
|
3
|
+
export declare function matchHighlight(text: string, from: number): {
|
|
4
|
+
contentFrom: number;
|
|
5
|
+
contentTo: number;
|
|
6
|
+
end: number;
|
|
7
|
+
} | null;
|
|
8
|
+
export declare const highlightMarkdown: MarkdownConfig;
|
|
9
|
+
export declare const mossHighlightMarkdown: MarkdownConfig;
|
|
10
|
+
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../src/syntax/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+B1E,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyBhE;AAoBD,eAAO,MAAM,iBAAiB,EAAE,cAkB/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,gBAAoB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { tags as t } from '@lezer/highlight';
|
|
2
|
+
const HighlightDelim = { resolve: 'Highlight', mark: 'HighlightMark' };
|
|
3
|
+
let Punctuation = /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;
|
|
4
|
+
try {
|
|
5
|
+
Punctuation = new RegExp('[\\p{S}\\p{P}]', 'u');
|
|
6
|
+
}
|
|
7
|
+
catch {
|
|
8
|
+
// Older runtimes fall back to the ASCII+Latin punctuation set above.
|
|
9
|
+
}
|
|
10
|
+
function delimiterFlags(before, after) {
|
|
11
|
+
const spacedBefore = /\s|^$/.test(before);
|
|
12
|
+
const spacedAfter = /\s|^$/.test(after);
|
|
13
|
+
const punctBefore = Punctuation.test(before);
|
|
14
|
+
const punctAfter = Punctuation.test(after);
|
|
15
|
+
return {
|
|
16
|
+
canOpen: !spacedAfter && (!punctAfter || spacedBefore || punctBefore),
|
|
17
|
+
canClose: !spacedBefore && (!punctBefore || spacedAfter || punctAfter),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function isExactDoubleEquals(text, pos) {
|
|
21
|
+
return (text.slice(pos, pos + 2) === '==' &&
|
|
22
|
+
text[pos - 1] !== '=' &&
|
|
23
|
+
text[pos + 2] !== '=');
|
|
24
|
+
}
|
|
25
|
+
/** Match one complete highlight span using the same rules as the Lezer parser. */
|
|
26
|
+
export function matchHighlight(text, from) {
|
|
27
|
+
if (!isExactDoubleEquals(text, from))
|
|
28
|
+
return null;
|
|
29
|
+
const opener = delimiterFlags(text.slice(from - 1, from), text.slice(from + 2, from + 3));
|
|
30
|
+
if (!opener.canOpen)
|
|
31
|
+
return null;
|
|
32
|
+
for (let close = text.indexOf('==', from + 2); close >= 0; close = text.indexOf('==', close + 1)) {
|
|
33
|
+
if (!isExactDoubleEquals(text, close))
|
|
34
|
+
continue;
|
|
35
|
+
const closer = delimiterFlags(text.slice(close - 1, close), text.slice(close + 2, close + 3));
|
|
36
|
+
if (closer.canClose && close > from + 2) {
|
|
37
|
+
return { contentFrom: from + 2, contentTo: close, end: close + 2 };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
function parseHighlight(cx, next, pos) {
|
|
43
|
+
if (next !== 61 /* '=' */ ||
|
|
44
|
+
cx.char(pos + 1) !== 61 ||
|
|
45
|
+
cx.char(pos - 1) === 61 ||
|
|
46
|
+
cx.char(pos + 2) === 61) {
|
|
47
|
+
return -1;
|
|
48
|
+
}
|
|
49
|
+
const before = cx.slice(pos - 1, pos);
|
|
50
|
+
const after = cx.slice(pos + 2, pos + 3);
|
|
51
|
+
const { canOpen, canClose } = delimiterFlags(before, after);
|
|
52
|
+
return cx.addDelimiter(HighlightDelim, pos, pos + 2, canOpen, canClose);
|
|
53
|
+
}
|
|
54
|
+
/// Markdown extension for `==highlight==` syntax.
|
|
55
|
+
export const highlightMarkdown = {
|
|
56
|
+
defineNodes: [
|
|
57
|
+
{
|
|
58
|
+
name: 'Highlight',
|
|
59
|
+
style: t.special(t.content),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'HighlightMark',
|
|
63
|
+
style: t.processingInstruction,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
parseInline: [
|
|
67
|
+
{
|
|
68
|
+
name: 'Highlight',
|
|
69
|
+
parse: parseHighlight,
|
|
70
|
+
after: 'Strikethrough',
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
export const mossHighlightMarkdown = highlightMarkdown;
|
|
75
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/syntax/highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import type { MarkdownExtension } from '@lezer/markdown';
|
|
3
|
+
export interface MossCustomSyntax {
|
|
4
|
+
name: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
markdown?: MarkdownExtension | readonly MarkdownExtension[];
|
|
7
|
+
extensions?: Extension | readonly Extension[];
|
|
8
|
+
}
|
|
9
|
+
export interface RegisteredMossSyntax {
|
|
10
|
+
syntaxes: readonly MossCustomSyntax[];
|
|
11
|
+
markdownExtensions: MarkdownExtension[];
|
|
12
|
+
extensions: Extension[];
|
|
13
|
+
}
|
|
14
|
+
export declare function defineMossSyntax(syntax: MossCustomSyntax): MossCustomSyntax;
|
|
15
|
+
export declare function registerMossSyntax(syntaxes?: readonly MossCustomSyntax[]): RegisteredMossSyntax;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/syntax/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,CAAC;IAC5D,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,gBAAgB,GACvB,gBAAgB,CAElB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,GAAE,SAAS,gBAAgB,EAAO,GACzC,oBAAoB,CA+BtB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function defineMossSyntax(syntax) {
|
|
2
|
+
return syntax;
|
|
3
|
+
}
|
|
4
|
+
export function registerMossSyntax(syntaxes = []) {
|
|
5
|
+
const seen = new Set();
|
|
6
|
+
const markdownExtensions = [];
|
|
7
|
+
const extensions = [];
|
|
8
|
+
for (const syntax of syntaxes) {
|
|
9
|
+
if (!syntax.name.trim()) {
|
|
10
|
+
throw new Error('Moss custom syntax requires a non-empty name.');
|
|
11
|
+
}
|
|
12
|
+
if (seen.has(syntax.name)) {
|
|
13
|
+
throw new Error(`Duplicate Moss custom syntax name: ${syntax.name}`);
|
|
14
|
+
}
|
|
15
|
+
seen.add(syntax.name);
|
|
16
|
+
if (syntax.markdown) {
|
|
17
|
+
markdownExtensions.push(...(Array.isArray(syntax.markdown)
|
|
18
|
+
? syntax.markdown
|
|
19
|
+
: [syntax.markdown]));
|
|
20
|
+
}
|
|
21
|
+
if (syntax.extensions) {
|
|
22
|
+
extensions.push(...(Array.isArray(syntax.extensions)
|
|
23
|
+
? syntax.extensions
|
|
24
|
+
: [syntax.extensions]));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { syntaxes, markdownExtensions, extensions };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/syntax/index.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,gBAAgB,CAC9B,MAAwB;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,WAAwC,EAAE;IAE1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,kBAAkB,GAAwB,EAAE,CAAC;IACnD,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,kBAAkB,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAChC,CAAC,CAAC,MAAM,CAAC,QAAQ;gBACjB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;gBAClC,CAAC,CAAC,MAAM,CAAC,UAAU;gBACnB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HighlightStyle } from '@codemirror/language';
|
|
2
|
+
import type { Extension } from '@codemirror/state';
|
|
3
|
+
export declare const mossTheme: Extension;
|
|
4
|
+
export declare const mossHighlight: HighlightStyle;
|
|
5
|
+
export declare const mossSyntax: Extension;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAG1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAQnD,eAAO,MAAM,SAAS,EAAE,SA8HvB,CAAC;AASF,eAAO,MAAM,aAAa,gBAwExB,CAAC;AAEH,eAAO,MAAM,UAAU,WAAoC,CAAC"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { HighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
|
2
|
+
import { EditorView } from '@codemirror/view';
|
|
3
|
+
import { tags as t } from '@lezer/highlight';
|
|
4
|
+
// Package CSS custom properties. Every value below falls back to a
|
|
5
|
+
// dark-neutral default; consumers override by setting the prefixed vars
|
|
6
|
+
// (`--moss-*`) at any ancestor of the editor. The defaults are
|
|
7
|
+
// deliberately unscoped so the package is usable standalone without
|
|
8
|
+
// forcing the consumer to theme it first.
|
|
9
|
+
export const mossTheme = EditorView.theme({
|
|
10
|
+
'&': {
|
|
11
|
+
color: 'var(--moss-fg, #dcddde)',
|
|
12
|
+
backgroundColor: 'transparent',
|
|
13
|
+
fontFamily: 'var(--moss-font, system-ui, -apple-system, BlinkMacSystemFont, sans-serif)',
|
|
14
|
+
fontSize: 'var(--moss-body-size, 1rem)',
|
|
15
|
+
height: '100%',
|
|
16
|
+
},
|
|
17
|
+
'.cm-scroller': {
|
|
18
|
+
fontFamily: 'var(--moss-font, system-ui, -apple-system, BlinkMacSystemFont, sans-serif)',
|
|
19
|
+
lineHeight: 'var(--moss-body-leading, 1.7)',
|
|
20
|
+
overflow: 'auto',
|
|
21
|
+
},
|
|
22
|
+
'.cm-content': {
|
|
23
|
+
caretColor: 'var(--moss-accent-bright, #a78bfa)',
|
|
24
|
+
padding: '0',
|
|
25
|
+
paddingBottom: '40vh',
|
|
26
|
+
tabSize: '4',
|
|
27
|
+
// CM6's base theme sets `min-width: max-content` on
|
|
28
|
+
// `.cm-content` so it always grows to fit its widest child.
|
|
29
|
+
// That defeats every width constraint on our block widgets
|
|
30
|
+
// (tables especially): a wide table tells `.cm-content`
|
|
31
|
+
// "I'm 800px", content grows to 800px, and the scroller
|
|
32
|
+
// shows horizontal scroll — the "editor overflows
|
|
33
|
+
// horizontally" behavior you see on mobile when a wide
|
|
34
|
+
// table enters the viewport. Forcing `min-width: 0` lets
|
|
35
|
+
// the content box stay at its parent width; wide children
|
|
36
|
+
// are expected to own their own horizontal scroll (see
|
|
37
|
+
// `.cm-moss-table-scroll`) rather than pushing the
|
|
38
|
+
// content.
|
|
39
|
+
minWidth: '0',
|
|
40
|
+
},
|
|
41
|
+
'.cm-line': {
|
|
42
|
+
padding: '0',
|
|
43
|
+
// Keep blank lines on the same vertical rhythm as the line's own
|
|
44
|
+
// computed line-height. Without this, an empty line's break widget
|
|
45
|
+
// can be shorter than a text-bearing line and shift posAtCoords.
|
|
46
|
+
lineHeight: 'var(--moss-body-leading, 1.7)',
|
|
47
|
+
minHeight: '1lh',
|
|
48
|
+
// Force-wrap words that have no natural break opportunity —
|
|
49
|
+
// long URLs, base64 chunks, and code tokens that would
|
|
50
|
+
// otherwise overflow the line and push the scroll container
|
|
51
|
+
// wider than the viewport. Without this, long unbroken
|
|
52
|
+
// tokens blow past the reading column and we get the
|
|
53
|
+
// transient horizontal overflow on mobile.
|
|
54
|
+
overflowWrap: 'anywhere',
|
|
55
|
+
},
|
|
56
|
+
// List marker classes are added by inline-preview after parsing. Keep
|
|
57
|
+
// the selector in CM's theme layer so it wins over generated syntax
|
|
58
|
+
// highlight classes.
|
|
59
|
+
'.cm-line .cm-moss-list-marker, .cm-line .cm-moss-list-marker *': {
|
|
60
|
+
color: 'var(--moss-list-marker, var(--moss-accent-bright, #a78bfa))',
|
|
61
|
+
fontWeight: '600',
|
|
62
|
+
},
|
|
63
|
+
'&.cm-focused': {
|
|
64
|
+
outline: 'none',
|
|
65
|
+
},
|
|
66
|
+
'.cm-cursor, .cm-dropCursor': {
|
|
67
|
+
borderLeftColor: 'var(--moss-accent-bright, #a78bfa)',
|
|
68
|
+
borderLeftWidth: '2px',
|
|
69
|
+
},
|
|
70
|
+
// The focused-selection selector must mirror CodeMirror's base-theme
|
|
71
|
+
// path (`&dark.cm-focused > .cm-scroller > .cm-selectionLayer
|
|
72
|
+
// .cm-selectionBackground`, which paints a default `#233`). A flat
|
|
73
|
+
// `.cm-selectionBackground` rule loses on specificity, so the
|
|
74
|
+
// `--moss-selection-bg` token silently had no effect. This
|
|
75
|
+
// matches the depth (the same approach oneDark uses) so the token
|
|
76
|
+
// actually wins, while keeping the unfocused + native fallbacks.
|
|
77
|
+
'&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, ::selection': {
|
|
78
|
+
backgroundColor: 'var(--moss-selection-bg, color-mix(in srgb, #7c3aed 28%, #1e1e1e 72%))',
|
|
79
|
+
},
|
|
80
|
+
'.cm-activeLine': {
|
|
81
|
+
backgroundColor: 'transparent',
|
|
82
|
+
},
|
|
83
|
+
'.cm-gutters': {
|
|
84
|
+
display: 'none',
|
|
85
|
+
},
|
|
86
|
+
'.cm-tooltip': {
|
|
87
|
+
backgroundColor: 'var(--moss-bg-surface, #2d2d2d)',
|
|
88
|
+
color: 'var(--moss-fg, #dcddde)',
|
|
89
|
+
border: '1px solid var(--moss-border, #3d3d3d)',
|
|
90
|
+
borderRadius: '6px',
|
|
91
|
+
},
|
|
92
|
+
'.cm-panels': {
|
|
93
|
+
backgroundColor: 'var(--moss-bg-panel, #252525)',
|
|
94
|
+
color: 'var(--moss-fg, #dcddde)',
|
|
95
|
+
borderColor: 'var(--moss-border, #3d3d3d)',
|
|
96
|
+
},
|
|
97
|
+
'.cm-panel.cm-search': {
|
|
98
|
+
padding: '8px 12px',
|
|
99
|
+
fontFamily: 'var(--moss-font, system-ui, sans-serif)',
|
|
100
|
+
},
|
|
101
|
+
'.cm-panel.cm-search input, .cm-panel.cm-search button, .cm-panel.cm-search label': {
|
|
102
|
+
fontFamily: 'var(--moss-font, system-ui, sans-serif)',
|
|
103
|
+
fontSize: '0.8125rem',
|
|
104
|
+
},
|
|
105
|
+
'.cm-panel.cm-search input[type=text]': {
|
|
106
|
+
backgroundColor: 'var(--moss-bg, #1e1e1e)',
|
|
107
|
+
color: 'var(--moss-fg, #dcddde)',
|
|
108
|
+
border: '1px solid var(--moss-border, #3d3d3d)',
|
|
109
|
+
borderRadius: '4px',
|
|
110
|
+
padding: '4px 8px',
|
|
111
|
+
},
|
|
112
|
+
'.cm-panel.cm-search button': {
|
|
113
|
+
backgroundColor: 'transparent',
|
|
114
|
+
color: 'var(--moss-fg-muted, #888)',
|
|
115
|
+
border: '1px solid var(--moss-border, #3d3d3d)',
|
|
116
|
+
borderRadius: '4px',
|
|
117
|
+
padding: '4px 10px',
|
|
118
|
+
cursor: 'pointer',
|
|
119
|
+
},
|
|
120
|
+
'.cm-searchMatch': {
|
|
121
|
+
backgroundColor: 'var(--moss-search-bg, color-mix(in srgb, #7c3aed 26%, transparent 74%))',
|
|
122
|
+
borderRadius: '2px',
|
|
123
|
+
},
|
|
124
|
+
'.cm-searchMatch.cm-searchMatch-selected': {
|
|
125
|
+
backgroundColor: 'var(--moss-search-bg-active, color-mix(in srgb, #7c3aed 60%, transparent 40%))',
|
|
126
|
+
outline: '1px solid var(--moss-accent-bright, #a78bfa)',
|
|
127
|
+
},
|
|
128
|
+
}, { dark: true });
|
|
129
|
+
// Markdown syntax tinting plus highlight colors for tokens emitted by
|
|
130
|
+
// grammars nested inside fenced code blocks (see `code-languages.ts`).
|
|
131
|
+
// Punctuation tokens (#, *, `, [, ]) stay muted so the surrounding
|
|
132
|
+
// prose reads cleanly; headings and structural markdown tokens get
|
|
133
|
+
// real visual weight. Code-language tokens (keyword, string, number,
|
|
134
|
+
// etc.) adopt a Material Palenight palette tuned for dark backgrounds;
|
|
135
|
+
// override any color via the `--moss-hl-*` CSS variables.
|
|
136
|
+
export const mossHighlight = HighlightStyle.define([
|
|
137
|
+
{ tag: t.heading1, fontWeight: '700' },
|
|
138
|
+
{ tag: t.heading2, fontWeight: '700' },
|
|
139
|
+
{ tag: t.heading3, fontWeight: '700' },
|
|
140
|
+
{ tag: t.heading4, fontWeight: '700' },
|
|
141
|
+
{ tag: [t.heading5, t.heading6], fontWeight: '700' },
|
|
142
|
+
{ tag: t.strong, fontWeight: '700', color: 'var(--moss-fg, #dcddde)' },
|
|
143
|
+
{ tag: t.emphasis, fontStyle: 'italic', color: 'var(--moss-fg, #dcddde)' },
|
|
144
|
+
{ tag: t.strikethrough, textDecoration: 'line-through', color: 'var(--moss-fg-muted, #888)' },
|
|
145
|
+
{
|
|
146
|
+
tag: [t.monospace],
|
|
147
|
+
fontFamily: 'var(--moss-font-mono, ui-monospace, monospace)',
|
|
148
|
+
color: 'var(--moss-link, #818cf8)',
|
|
149
|
+
},
|
|
150
|
+
{ tag: t.link, color: 'var(--moss-link, #818cf8)' },
|
|
151
|
+
{ tag: t.url, color: 'var(--moss-link, #818cf8)' },
|
|
152
|
+
{ tag: t.processingInstruction, color: 'var(--moss-fg-faint, #666)' },
|
|
153
|
+
{ tag: t.contentSeparator, color: 'var(--moss-fg-faint, #666)' },
|
|
154
|
+
{ tag: t.quote, color: 'var(--moss-fg-muted, #888)' },
|
|
155
|
+
{ tag: t.list, color: 'var(--moss-fg, #dcddde)' },
|
|
156
|
+
{ tag: t.meta, color: 'var(--moss-fg-faint, #666)' },
|
|
157
|
+
// Nested code-language tokens. `@codemirror/lang-markdown` wires the
|
|
158
|
+
// grammars from `code-languages.ts` into fenced blocks whose info
|
|
159
|
+
// string matches — each fence gets a real AST, so tags below apply.
|
|
160
|
+
{
|
|
161
|
+
tag: [t.keyword, t.modifier, t.operatorKeyword, t.controlKeyword, t.definitionKeyword, t.moduleKeyword, t.self],
|
|
162
|
+
color: 'var(--moss-hl-keyword, #c792ea)',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
tag: [t.string, t.special(t.string), t.character, t.attributeValue],
|
|
166
|
+
color: 'var(--moss-hl-string, #c3e88d)',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
tag: [t.number, t.integer, t.float, t.bool, t.null, t.atom],
|
|
170
|
+
color: 'var(--moss-hl-number, #f78c6c)',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
tag: [t.comment, t.lineComment, t.blockComment, t.docComment],
|
|
174
|
+
color: 'var(--moss-hl-comment, #6a7a82)',
|
|
175
|
+
fontStyle: 'italic',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
tag: [t.typeName, t.className, t.namespace, t.standard(t.variableName)],
|
|
179
|
+
color: 'var(--moss-hl-type, #ffcb6b)',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
tag: [t.function(t.variableName), t.function(t.propertyName), t.macroName],
|
|
183
|
+
color: 'var(--moss-hl-function, #82aaff)',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
tag: [t.propertyName, t.attributeName, t.definition(t.propertyName)],
|
|
187
|
+
color: 'var(--moss-hl-property, #82aaff)',
|
|
188
|
+
},
|
|
189
|
+
{ tag: t.regexp, color: 'var(--moss-hl-regexp, #f07178)' },
|
|
190
|
+
{ tag: t.escape, color: 'var(--moss-hl-escape, #89ddff)' },
|
|
191
|
+
{
|
|
192
|
+
tag: [t.tagName, t.angleBracket],
|
|
193
|
+
color: 'var(--moss-hl-tag, #f07178)',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
tag: [t.variableName, t.labelName, t.definition(t.variableName), t.local(t.variableName)],
|
|
197
|
+
color: 'var(--moss-hl-variable, #eeffff)',
|
|
198
|
+
},
|
|
199
|
+
{ tag: t.operator, color: 'var(--moss-hl-operator, #89ddff)' },
|
|
200
|
+
{ tag: t.invalid, color: 'var(--moss-hl-invalid, #ff5370)' },
|
|
201
|
+
{ tag: [t.punctuation, t.bracket, t.squareBracket, t.paren, t.brace], color: 'var(--moss-fg-muted, #888)' },
|
|
202
|
+
]);
|
|
203
|
+
export const mossSyntax = syntaxHighlighting(mossHighlight);
|
|
204
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"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"}
|