@inkandswitch/patchwork-pkg-base 0.0.123 → 0.0.125
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/module-settings-url +1 -1
- package/package.json +1 -1
- package/packages/codemirror-markdown/dist/{chunk-IJCIGXUN.js → chunk-3U6A6M3C.js} +3 -3
- package/packages/codemirror-markdown/dist/{chunk-IJCIGXUN.js.map → chunk-3U6A6M3C.js.map} +2 -2
- package/packages/codemirror-markdown/dist/{chunk-DQNB5ERJ.js → chunk-AOCXO46Z.js} +4 -4
- package/packages/codemirror-markdown/dist/{chunk-4ZTKTN2T.js → chunk-BK6BYU4X.js} +3 -3
- package/packages/codemirror-markdown/dist/{chunk-4RNBFSBX.js → chunk-JCGWNVO7.js} +2 -2
- package/packages/codemirror-markdown/dist/{chunk-6JHOS434.js → chunk-ZMDZRV6X.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-5FW47RX2.js → dist-3WYN573Y.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-XVLR6T5U.js → dist-4STDX7WZ.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-PAVPWBMY.js → dist-66V2OZNR.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-D27NTZAI.js → dist-7EHN4UZA.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-STDOJSRA.js → dist-D4E7IXYD.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-EG4ZREHT.js → dist-E6QAN4VQ.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-4N6A6FHO.js → dist-E72K6GKZ.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-B5G4LYVR.js → dist-EVYTVY4T.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-6BZJTPMQ.js → dist-ITLHNFUL.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-YSRXNTXV.js → dist-KLLOFSEO.js} +3 -3
- package/packages/codemirror-markdown/dist/{dist-6NY2CMU2.js → dist-LCUXA5AJ.js} +3 -3
- package/packages/codemirror-markdown/dist/{dist-HB4M34TX.js → dist-NFD5VVC6.js} +6 -6
- package/packages/codemirror-markdown/dist/{dist-SFP5SWTJ.js → dist-O6G7IUZY.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-TYTABVEN.js → dist-OU44YTSZ.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-XM4FBMZA.js → dist-RCBHVDL7.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-DX7TJIOI.js → dist-RUK5SWS5.js} +2 -2
- package/packages/codemirror-markdown/dist/{dist-VYHSBFVD.js → dist-TFWDIHAP.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-BYFOH52X.js → dist-VBHD2NRU.js} +3 -3
- package/packages/codemirror-markdown/dist/{dist-TV5CSRQ2.js → dist-XL62MJER.js} +5 -5
- package/packages/codemirror-markdown/dist/{dist-ITGX4OZJ.js → dist-YK6XD4UJ.js} +3 -3
- package/packages/codemirror-markdown/dist/{dist-KBGGPCDW.js → dist-YNO26IAD.js} +2 -2
- package/packages/codemirror-markdown/dist/extensions/links.js +6 -1
- package/packages/codemirror-markdown/dist/extensions/links.js.map +2 -2
- package/packages/codemirror-markdown/dist/extensions/markdown.js +510 -166
- package/packages/codemirror-markdown/dist/extensions/markdown.js.map +4 -4
- package/packages/codemirror-markdown/package.json +1 -1
- package/plugin-registry-url +1 -1
- /package/packages/codemirror-markdown/dist/{chunk-DQNB5ERJ.js.map → chunk-AOCXO46Z.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{chunk-4ZTKTN2T.js.map → chunk-BK6BYU4X.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{chunk-4RNBFSBX.js.map → chunk-JCGWNVO7.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{chunk-6JHOS434.js.map → chunk-ZMDZRV6X.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-5FW47RX2.js.map → dist-3WYN573Y.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-HB4M34TX.js.map → dist-4STDX7WZ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-PAVPWBMY.js.map → dist-66V2OZNR.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-D27NTZAI.js.map → dist-7EHN4UZA.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-STDOJSRA.js.map → dist-D4E7IXYD.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-EG4ZREHT.js.map → dist-E6QAN4VQ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-4N6A6FHO.js.map → dist-E72K6GKZ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-B5G4LYVR.js.map → dist-EVYTVY4T.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-6BZJTPMQ.js.map → dist-ITLHNFUL.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-ITGX4OZJ.js.map → dist-KLLOFSEO.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-6NY2CMU2.js.map → dist-LCUXA5AJ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-XVLR6T5U.js.map → dist-NFD5VVC6.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-SFP5SWTJ.js.map → dist-O6G7IUZY.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-TYTABVEN.js.map → dist-OU44YTSZ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-XM4FBMZA.js.map → dist-RCBHVDL7.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-DX7TJIOI.js.map → dist-RUK5SWS5.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-VYHSBFVD.js.map → dist-TFWDIHAP.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-BYFOH52X.js.map → dist-VBHD2NRU.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-TV5CSRQ2.js.map → dist-XL62MJER.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-YSRXNTXV.js.map → dist-YK6XD4UJ.js.map} +0 -0
- /package/packages/codemirror-markdown/dist/{dist-KBGGPCDW.js.map → dist-YNO26IAD.js.map} +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
markdown,
|
|
3
3
|
markdownLanguage
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-BK6BYU4X.js";
|
|
5
|
+
import "../chunk-AOCXO46Z.js";
|
|
6
|
+
import "../chunk-JCGWNVO7.js";
|
|
7
|
+
import "../chunk-ZMDZRV6X.js";
|
|
8
8
|
import {
|
|
9
9
|
completionKeymap
|
|
10
10
|
} from "../chunk-UQ2NFKSJ.js";
|
|
11
11
|
import {
|
|
12
|
+
styleTags,
|
|
12
13
|
tags
|
|
13
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-3U6A6M3C.js";
|
|
14
15
|
|
|
15
16
|
// src/extensions/markdown.ts
|
|
16
17
|
import { defaultKeymap, indentWithTab } from "@codemirror/commands";
|
|
@@ -22,7 +23,7 @@ function legacy(parser) {
|
|
|
22
23
|
return new LanguageSupport(StreamLanguage.define(parser));
|
|
23
24
|
}
|
|
24
25
|
function sql(dialectName) {
|
|
25
|
-
return import("../dist-
|
|
26
|
+
return import("../dist-3WYN573Y.js").then((m) => m.sql({ dialect: m[dialectName] }));
|
|
26
27
|
}
|
|
27
28
|
var languages = [
|
|
28
29
|
// New-style language modes
|
|
@@ -30,7 +31,7 @@ var languages = [
|
|
|
30
31
|
name: "C",
|
|
31
32
|
extensions: ["c", "h", "ino"],
|
|
32
33
|
load() {
|
|
33
|
-
return import("../dist-
|
|
34
|
+
return import("../dist-66V2OZNR.js").then((m) => m.cpp());
|
|
34
35
|
}
|
|
35
36
|
}),
|
|
36
37
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -38,7 +39,7 @@ var languages = [
|
|
|
38
39
|
alias: ["cpp"],
|
|
39
40
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
40
41
|
load() {
|
|
41
|
-
return import("../dist-
|
|
42
|
+
return import("../dist-66V2OZNR.js").then((m) => m.cpp());
|
|
42
43
|
}
|
|
43
44
|
}),
|
|
44
45
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -53,14 +54,14 @@ var languages = [
|
|
|
53
54
|
name: "CSS",
|
|
54
55
|
extensions: ["css"],
|
|
55
56
|
load() {
|
|
56
|
-
return import("../dist-
|
|
57
|
+
return import("../dist-YK6XD4UJ.js").then((m) => m.css());
|
|
57
58
|
}
|
|
58
59
|
}),
|
|
59
60
|
/* @__PURE__ */ LanguageDescription.of({
|
|
60
61
|
name: "Go",
|
|
61
62
|
extensions: ["go"],
|
|
62
63
|
load() {
|
|
63
|
-
return import("../dist-
|
|
64
|
+
return import("../dist-ITLHNFUL.js").then((m) => m.go());
|
|
64
65
|
}
|
|
65
66
|
}),
|
|
66
67
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -68,14 +69,14 @@ var languages = [
|
|
|
68
69
|
alias: ["xhtml"],
|
|
69
70
|
extensions: ["html", "htm", "handlebars", "hbs"],
|
|
70
71
|
load() {
|
|
71
|
-
return import("../dist-
|
|
72
|
+
return import("../dist-4STDX7WZ.js").then((m) => m.html());
|
|
72
73
|
}
|
|
73
74
|
}),
|
|
74
75
|
/* @__PURE__ */ LanguageDescription.of({
|
|
75
76
|
name: "Java",
|
|
76
77
|
extensions: ["java"],
|
|
77
78
|
load() {
|
|
78
|
-
return import("../dist-
|
|
79
|
+
return import("../dist-OU44YTSZ.js").then((m) => m.java());
|
|
79
80
|
}
|
|
80
81
|
}),
|
|
81
82
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -83,14 +84,14 @@ var languages = [
|
|
|
83
84
|
alias: ["ecmascript", "js", "node"],
|
|
84
85
|
extensions: ["js", "mjs", "cjs"],
|
|
85
86
|
load() {
|
|
86
|
-
return import("../dist-
|
|
87
|
+
return import("../dist-KLLOFSEO.js").then((m) => m.javascript());
|
|
87
88
|
}
|
|
88
89
|
}),
|
|
89
90
|
/* @__PURE__ */ LanguageDescription.of({
|
|
90
91
|
name: "Jinja",
|
|
91
92
|
extensions: ["j2", "jinja", "jinja2"],
|
|
92
93
|
load() {
|
|
93
|
-
return import("../dist-
|
|
94
|
+
return import("../dist-EVYTVY4T.js").then((m) => m.jinja());
|
|
94
95
|
}
|
|
95
96
|
}),
|
|
96
97
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -98,28 +99,28 @@ var languages = [
|
|
|
98
99
|
alias: ["json5"],
|
|
99
100
|
extensions: ["json", "map"],
|
|
100
101
|
load() {
|
|
101
|
-
return import("../dist-
|
|
102
|
+
return import("../dist-YNO26IAD.js").then((m) => m.json());
|
|
102
103
|
}
|
|
103
104
|
}),
|
|
104
105
|
/* @__PURE__ */ LanguageDescription.of({
|
|
105
106
|
name: "JSX",
|
|
106
107
|
extensions: ["jsx"],
|
|
107
108
|
load() {
|
|
108
|
-
return import("../dist-
|
|
109
|
+
return import("../dist-KLLOFSEO.js").then((m) => m.javascript({ jsx: true }));
|
|
109
110
|
}
|
|
110
111
|
}),
|
|
111
112
|
/* @__PURE__ */ LanguageDescription.of({
|
|
112
113
|
name: "LESS",
|
|
113
114
|
extensions: ["less"],
|
|
114
115
|
load() {
|
|
115
|
-
return import("../dist-
|
|
116
|
+
return import("../dist-VBHD2NRU.js").then((m) => m.less());
|
|
116
117
|
}
|
|
117
118
|
}),
|
|
118
119
|
/* @__PURE__ */ LanguageDescription.of({
|
|
119
120
|
name: "Liquid",
|
|
120
121
|
extensions: ["liquid"],
|
|
121
122
|
load() {
|
|
122
|
-
return import("../dist-
|
|
123
|
+
return import("../dist-7EHN4UZA.js").then((m) => m.liquid());
|
|
123
124
|
}
|
|
124
125
|
}),
|
|
125
126
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -132,7 +133,7 @@ var languages = [
|
|
|
132
133
|
name: "Markdown",
|
|
133
134
|
extensions: ["md", "markdown", "mkd"],
|
|
134
135
|
load() {
|
|
135
|
-
return import("../dist-
|
|
136
|
+
return import("../dist-NFD5VVC6.js").then((m) => m.markdown());
|
|
136
137
|
}
|
|
137
138
|
}),
|
|
138
139
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -151,7 +152,7 @@ var languages = [
|
|
|
151
152
|
name: "PHP",
|
|
152
153
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
153
154
|
load() {
|
|
154
|
-
return import("../dist-
|
|
155
|
+
return import("../dist-XL62MJER.js").then((m) => m.php());
|
|
155
156
|
}
|
|
156
157
|
}),
|
|
157
158
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -172,28 +173,28 @@ var languages = [
|
|
|
172
173
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
173
174
|
filename: /^(BUCK|BUILD)$/,
|
|
174
175
|
load() {
|
|
175
|
-
return import("../dist-
|
|
176
|
+
return import("../dist-RUK5SWS5.js").then((m) => m.python());
|
|
176
177
|
}
|
|
177
178
|
}),
|
|
178
179
|
/* @__PURE__ */ LanguageDescription.of({
|
|
179
180
|
name: "Rust",
|
|
180
181
|
extensions: ["rs"],
|
|
181
182
|
load() {
|
|
182
|
-
return import("../dist-
|
|
183
|
+
return import("../dist-O6G7IUZY.js").then((m) => m.rust());
|
|
183
184
|
}
|
|
184
185
|
}),
|
|
185
186
|
/* @__PURE__ */ LanguageDescription.of({
|
|
186
187
|
name: "Sass",
|
|
187
188
|
extensions: ["sass"],
|
|
188
189
|
load() {
|
|
189
|
-
return import("../dist-
|
|
190
|
+
return import("../dist-LCUXA5AJ.js").then((m) => m.sass({ indented: true }));
|
|
190
191
|
}
|
|
191
192
|
}),
|
|
192
193
|
/* @__PURE__ */ LanguageDescription.of({
|
|
193
194
|
name: "SCSS",
|
|
194
195
|
extensions: ["scss"],
|
|
195
196
|
load() {
|
|
196
|
-
return import("../dist-
|
|
197
|
+
return import("../dist-LCUXA5AJ.js").then((m) => m.sass());
|
|
197
198
|
}
|
|
198
199
|
}),
|
|
199
200
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -213,7 +214,7 @@ var languages = [
|
|
|
213
214
|
name: "TSX",
|
|
214
215
|
extensions: ["tsx"],
|
|
215
216
|
load() {
|
|
216
|
-
return import("../dist-
|
|
217
|
+
return import("../dist-KLLOFSEO.js").then((m) => m.javascript({ jsx: true, typescript: true }));
|
|
217
218
|
}
|
|
218
219
|
}),
|
|
219
220
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -221,14 +222,14 @@ var languages = [
|
|
|
221
222
|
alias: ["ts"],
|
|
222
223
|
extensions: ["ts", "mts", "cts"],
|
|
223
224
|
load() {
|
|
224
|
-
return import("../dist-
|
|
225
|
+
return import("../dist-KLLOFSEO.js").then((m) => m.javascript({ typescript: true }));
|
|
225
226
|
}
|
|
226
227
|
}),
|
|
227
228
|
/* @__PURE__ */ LanguageDescription.of({
|
|
228
229
|
name: "WebAssembly",
|
|
229
230
|
extensions: ["wat", "wast"],
|
|
230
231
|
load() {
|
|
231
|
-
return import("../dist-
|
|
232
|
+
return import("../dist-RCBHVDL7.js").then((m) => m.wast());
|
|
232
233
|
}
|
|
233
234
|
}),
|
|
234
235
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -236,7 +237,7 @@ var languages = [
|
|
|
236
237
|
alias: ["rss", "wsdl", "xsd"],
|
|
237
238
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
238
239
|
load() {
|
|
239
|
-
return import("../dist-
|
|
240
|
+
return import("../dist-E72K6GKZ.js").then((m) => m.xml());
|
|
240
241
|
}
|
|
241
242
|
}),
|
|
242
243
|
/* @__PURE__ */ LanguageDescription.of({
|
|
@@ -244,7 +245,7 @@ var languages = [
|
|
|
244
245
|
alias: ["yml"],
|
|
245
246
|
extensions: ["yaml", "yml"],
|
|
246
247
|
load() {
|
|
247
|
-
return import("../dist-
|
|
248
|
+
return import("../dist-E6QAN4VQ.js").then((m) => m.yaml());
|
|
248
249
|
}
|
|
249
250
|
}),
|
|
250
251
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -1033,13 +1034,13 @@ var languages = [
|
|
|
1033
1034
|
name: "Vue",
|
|
1034
1035
|
extensions: ["vue"],
|
|
1035
1036
|
load() {
|
|
1036
|
-
return import("../dist-
|
|
1037
|
+
return import("../dist-TFWDIHAP.js").then((m) => m.vue());
|
|
1037
1038
|
}
|
|
1038
1039
|
}),
|
|
1039
1040
|
/* @__PURE__ */ LanguageDescription.of({
|
|
1040
1041
|
name: "Angular Template",
|
|
1041
1042
|
load() {
|
|
1042
|
-
return import("../dist-
|
|
1043
|
+
return import("../dist-D4E7IXYD.js").then((m) => m.angular());
|
|
1043
1044
|
}
|
|
1044
1045
|
})
|
|
1045
1046
|
];
|
|
@@ -2065,7 +2066,7 @@ var searchExtensions = [
|
|
|
2065
2066
|
];
|
|
2066
2067
|
|
|
2067
2068
|
// src/extensions/markdown.ts
|
|
2068
|
-
import { EditorView as
|
|
2069
|
+
import { EditorView as EditorView6, keymap as keymap3 } from "@codemirror/view";
|
|
2069
2070
|
|
|
2070
2071
|
// src/extensions/formatting.ts
|
|
2071
2072
|
import { EditorSelection as EditorSelection2 } from "@codemirror/state";
|
|
@@ -2225,18 +2226,433 @@ var taskCheckboxes = ViewPlugin2.fromClass(
|
|
|
2225
2226
|
{ decorations: (v) => v.decorations }
|
|
2226
2227
|
);
|
|
2227
2228
|
|
|
2228
|
-
// src/extensions/
|
|
2229
|
-
import {
|
|
2229
|
+
// src/extensions/margin.ts
|
|
2230
|
+
import { syntaxTree as syntaxTree2 } from "@codemirror/language";
|
|
2231
|
+
import {
|
|
2232
|
+
Decoration as Decoration3,
|
|
2233
|
+
EditorView as EditorView3,
|
|
2234
|
+
ViewPlugin as ViewPlugin3,
|
|
2235
|
+
WidgetType as WidgetType2
|
|
2236
|
+
} from "@codemirror/view";
|
|
2237
|
+
var numberMark = Decoration3.mark({ class: "cm-md-hang cm-md-hang-number" });
|
|
2238
|
+
var quoteMark = Decoration3.mark({ class: "cm-md-hang cm-md-hang-quote" });
|
|
2239
|
+
var hidden = Decoration3.replace({});
|
|
2240
|
+
var taskMark = Decoration3.mark({ class: "cm-md-hang", inclusive: true });
|
|
2241
|
+
var HeadingLabel = class extends WidgetType2 {
|
|
2242
|
+
constructor(level) {
|
|
2243
|
+
super();
|
|
2244
|
+
this.level = level;
|
|
2245
|
+
}
|
|
2246
|
+
eq(other) {
|
|
2247
|
+
return other.level === this.level;
|
|
2248
|
+
}
|
|
2249
|
+
toDOM() {
|
|
2250
|
+
const span = document.createElement("span");
|
|
2251
|
+
span.className = "cm-md-hang cm-md-heading-label";
|
|
2252
|
+
span.setAttribute("aria-hidden", "true");
|
|
2253
|
+
const n = document.createElement("span");
|
|
2254
|
+
n.className = "cm-md-heading-level";
|
|
2255
|
+
n.textContent = String(this.level);
|
|
2256
|
+
span.append("H", n);
|
|
2257
|
+
return span;
|
|
2258
|
+
}
|
|
2259
|
+
};
|
|
2260
|
+
var Bullet = class extends WidgetType2 {
|
|
2261
|
+
eq() {
|
|
2262
|
+
return true;
|
|
2263
|
+
}
|
|
2264
|
+
toDOM() {
|
|
2265
|
+
const span = document.createElement("span");
|
|
2266
|
+
span.className = "cm-md-hang";
|
|
2267
|
+
const dot = document.createElement("span");
|
|
2268
|
+
dot.className = "cm-bullet";
|
|
2269
|
+
span.append(dot);
|
|
2270
|
+
return span;
|
|
2271
|
+
}
|
|
2272
|
+
};
|
|
2273
|
+
var NumberLabel = class extends WidgetType2 {
|
|
2274
|
+
constructor(text) {
|
|
2275
|
+
super();
|
|
2276
|
+
this.text = text;
|
|
2277
|
+
}
|
|
2278
|
+
eq(other) {
|
|
2279
|
+
return other.text === this.text;
|
|
2280
|
+
}
|
|
2281
|
+
toDOM() {
|
|
2282
|
+
const span = document.createElement("span");
|
|
2283
|
+
span.className = "cm-md-hang cm-md-hang-number";
|
|
2284
|
+
span.textContent = this.text;
|
|
2285
|
+
return span;
|
|
2286
|
+
}
|
|
2287
|
+
};
|
|
2288
|
+
function renderedNumber(state, mark) {
|
|
2289
|
+
const text = state.doc.sliceString(mark.from, mark.to);
|
|
2290
|
+
const delimiter = text.slice(-1);
|
|
2291
|
+
let item = mark.parent;
|
|
2292
|
+
if (!item || item.name !== "ListItem") return text;
|
|
2293
|
+
let index = 0;
|
|
2294
|
+
let first = item;
|
|
2295
|
+
for (let prev = item.prevSibling; prev; prev = prev.prevSibling) {
|
|
2296
|
+
if (prev.name !== "ListItem") continue;
|
|
2297
|
+
index++;
|
|
2298
|
+
first = prev;
|
|
2299
|
+
}
|
|
2300
|
+
const firstMark = first.getChild("ListMark");
|
|
2301
|
+
const start = firstMark ? parseInt(state.doc.sliceString(firstMark.from, firstMark.to), 10) : 1;
|
|
2302
|
+
return `${(Number.isNaN(start) ? 1 : start) + index}${delimiter}`;
|
|
2303
|
+
}
|
|
2304
|
+
function caretLines(state) {
|
|
2305
|
+
const lines = /* @__PURE__ */ new Set();
|
|
2306
|
+
for (const r of state.selection.ranges) {
|
|
2307
|
+
const first = state.doc.lineAt(r.from).number;
|
|
2308
|
+
const last = state.doc.lineAt(r.to).number;
|
|
2309
|
+
for (let n = first; n <= last; n++) lines.add(n);
|
|
2310
|
+
}
|
|
2311
|
+
return lines;
|
|
2312
|
+
}
|
|
2313
|
+
function skipSpaces(state, pos) {
|
|
2314
|
+
const line = state.doc.lineAt(pos);
|
|
2315
|
+
while (pos < line.to && state.doc.sliceString(pos, pos + 1) === " ") pos++;
|
|
2316
|
+
return pos;
|
|
2317
|
+
}
|
|
2318
|
+
function build2(view) {
|
|
2319
|
+
const { state } = view;
|
|
2320
|
+
const { doc } = state;
|
|
2321
|
+
const editing = caretLines(state);
|
|
2322
|
+
const decos = [];
|
|
2323
|
+
for (const { from, to } of view.visibleRanges) {
|
|
2324
|
+
syntaxTree2(state).iterate({
|
|
2325
|
+
from,
|
|
2326
|
+
to,
|
|
2327
|
+
enter: (node) => {
|
|
2328
|
+
const name = node.name;
|
|
2329
|
+
const heading = /^ATXHeading(\d)$/.exec(name);
|
|
2330
|
+
if (heading) {
|
|
2331
|
+
const mark = node.node.firstChild;
|
|
2332
|
+
if (!mark || mark.name !== "HeaderMark" || mark.from !== node.from)
|
|
2333
|
+
return;
|
|
2334
|
+
decos.push(
|
|
2335
|
+
Decoration3.replace({
|
|
2336
|
+
widget: new HeadingLabel(Number(heading[1]))
|
|
2337
|
+
}).range(mark.from, skipSpaces(state, mark.to))
|
|
2338
|
+
);
|
|
2339
|
+
return;
|
|
2340
|
+
}
|
|
2341
|
+
if (name === "ListMark") {
|
|
2342
|
+
const end = skipSpaces(state, node.to);
|
|
2343
|
+
const char = doc.sliceString(node.from, node.to);
|
|
2344
|
+
const bullet = ["-", "+", "*"].includes(char);
|
|
2345
|
+
const task = node.node.nextSibling?.firstChild;
|
|
2346
|
+
const isTask = bullet && task?.name === "TaskMarker" && doc.sliceString(end, task.from).trim() === "";
|
|
2347
|
+
if (isTask && task) {
|
|
2348
|
+
if (end > node.from) decos.push(hidden.range(node.from, end));
|
|
2349
|
+
decos.push(taskMark.range(task.from, skipSpaces(state, task.to)));
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
2352
|
+
if (bullet) {
|
|
2353
|
+
decos.push(
|
|
2354
|
+
Decoration3.replace({ widget: new Bullet() }).range(node.from, end)
|
|
2355
|
+
);
|
|
2356
|
+
} else if (editing.has(doc.lineAt(node.from).number)) {
|
|
2357
|
+
decos.push(numberMark.range(node.from, end));
|
|
2358
|
+
} else {
|
|
2359
|
+
decos.push(
|
|
2360
|
+
Decoration3.replace({
|
|
2361
|
+
widget: new NumberLabel(renderedNumber(state, node.node))
|
|
2362
|
+
}).range(node.from, end)
|
|
2363
|
+
);
|
|
2364
|
+
}
|
|
2365
|
+
return;
|
|
2366
|
+
}
|
|
2367
|
+
if (name === "Blockquote") {
|
|
2368
|
+
for (let p = node.node.parent; p; p = p.parent)
|
|
2369
|
+
if (p.name === "Blockquote") return;
|
|
2370
|
+
const first = doc.lineAt(node.from).number;
|
|
2371
|
+
const last = doc.lineAt(node.to).number;
|
|
2372
|
+
for (let n = first; n <= last; n++) {
|
|
2373
|
+
const line = doc.line(n);
|
|
2374
|
+
const classes = ["cm-md-quote"];
|
|
2375
|
+
if (n === first) classes.push("cm-md-quote-first");
|
|
2376
|
+
if (n === last) classes.push("cm-md-quote-last");
|
|
2377
|
+
decos.push(
|
|
2378
|
+
Decoration3.line({ class: classes.join(" ") }).range(line.from)
|
|
2379
|
+
);
|
|
2380
|
+
}
|
|
2381
|
+
return;
|
|
2382
|
+
}
|
|
2383
|
+
if (name === "QuoteMark") {
|
|
2384
|
+
const line = doc.lineAt(node.from);
|
|
2385
|
+
const before = doc.sliceString(line.from, node.from);
|
|
2386
|
+
if (before.trim() !== "") return;
|
|
2387
|
+
let end = node.to;
|
|
2388
|
+
for (; ; ) {
|
|
2389
|
+
const next = skipSpaces(state, end);
|
|
2390
|
+
if (doc.sliceString(next, next + 1) !== ">") break;
|
|
2391
|
+
end = next + 1;
|
|
2392
|
+
}
|
|
2393
|
+
end = skipSpaces(state, end);
|
|
2394
|
+
decos.push(
|
|
2395
|
+
(editing.has(line.number) ? quoteMark : hidden).range(
|
|
2396
|
+
line.from,
|
|
2397
|
+
end
|
|
2398
|
+
)
|
|
2399
|
+
);
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
});
|
|
2403
|
+
}
|
|
2404
|
+
return Decoration3.set(decos, true);
|
|
2405
|
+
}
|
|
2406
|
+
var marginPlugin = ViewPlugin3.fromClass(
|
|
2407
|
+
class {
|
|
2408
|
+
decorations;
|
|
2409
|
+
constructor(view) {
|
|
2410
|
+
this.decorations = build2(view);
|
|
2411
|
+
}
|
|
2412
|
+
update(update) {
|
|
2413
|
+
if (update.docChanged || update.selectionSet || update.viewportChanged || syntaxTree2(update.startState) !== syntaxTree2(update.state)) {
|
|
2414
|
+
this.decorations = build2(update.view);
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
},
|
|
2418
|
+
{ decorations: (v) => v.decorations }
|
|
2419
|
+
);
|
|
2420
|
+
var zoomed = (length) => `calc(${length} * var(--markdown-zoom, 1))`;
|
|
2421
|
+
var marginTheme = EditorView3.baseTheme({
|
|
2422
|
+
".cm-content": {
|
|
2423
|
+
"--markdown-hang": zoomed("2.5rem")
|
|
2424
|
+
},
|
|
2425
|
+
".cm-md-hang": {
|
|
2426
|
+
display: "inline-flex",
|
|
2427
|
+
justifyContent: "flex-end",
|
|
2428
|
+
alignItems: "baseline",
|
|
2429
|
+
boxSizing: "border-box",
|
|
2430
|
+
width: "var(--markdown-hang)",
|
|
2431
|
+
marginLeft: "calc(-1 * var(--markdown-hang))",
|
|
2432
|
+
paddingRight: zoomed("0.6rem"),
|
|
2433
|
+
whiteSpace: "pre",
|
|
2434
|
+
// a heading's raw `## ` shrinks to label size so it fits the margin.
|
|
2435
|
+
fontSize: zoomed("0.8rem"),
|
|
2436
|
+
color: "var(--text-editor-line-offset-40, #999)",
|
|
2437
|
+
fontWeight: "normal",
|
|
2438
|
+
fontStyle: "normal",
|
|
2439
|
+
textDecoration: "none"
|
|
2440
|
+
},
|
|
2441
|
+
// highlight spans inside the box (a heading's `##`) keep their own size and
|
|
2442
|
+
// margins otherwise, and as flex items those margins would push the line.
|
|
2443
|
+
".cm-md-hang *": {
|
|
2444
|
+
fontSize: "inherit",
|
|
2445
|
+
margin: "0"
|
|
2446
|
+
},
|
|
2447
|
+
".cm-md-hang-number": {
|
|
2448
|
+
fontSize: "inherit",
|
|
2449
|
+
color: "inherit",
|
|
2450
|
+
fontVariantNumeric: "tabular-nums"
|
|
2451
|
+
},
|
|
2452
|
+
".cm-md-heading-label": {
|
|
2453
|
+
fontFamily: "var(--markdown-body-family, inherit)",
|
|
2454
|
+
letterSpacing: "0.02em"
|
|
2455
|
+
},
|
|
2456
|
+
".cm-md-heading-level": {
|
|
2457
|
+
fontSize: "0.75em",
|
|
2458
|
+
verticalAlign: "-0.15em"
|
|
2459
|
+
},
|
|
2460
|
+
".cm-md-hang .cm-bullet": {
|
|
2461
|
+
display: "inline-block",
|
|
2462
|
+
width: "0.4em",
|
|
2463
|
+
height: "0.4em",
|
|
2464
|
+
borderRadius: "50%",
|
|
2465
|
+
background: "var(--syntax-list-marker, currentColor)",
|
|
2466
|
+
color: "var(--text-editor-line)",
|
|
2467
|
+
alignSelf: "center"
|
|
2468
|
+
},
|
|
2469
|
+
".cm-md-hang .cm-task": {
|
|
2470
|
+
margin: "0"
|
|
2471
|
+
},
|
|
2472
|
+
".cm-md-quote": {
|
|
2473
|
+
position: "relative"
|
|
2474
|
+
},
|
|
2475
|
+
".cm-md-quote::before": {
|
|
2476
|
+
content: '""',
|
|
2477
|
+
position: "absolute",
|
|
2478
|
+
// centred in the left half of the margin, clear of a hung `>`.
|
|
2479
|
+
left: "calc(-0.5 * var(--markdown-hang))",
|
|
2480
|
+
top: "0",
|
|
2481
|
+
bottom: "0",
|
|
2482
|
+
width: "3px",
|
|
2483
|
+
background: "var(--syntax-quote-bar, var(--studio-link, currentColor))",
|
|
2484
|
+
opacity: "0.6"
|
|
2485
|
+
},
|
|
2486
|
+
".cm-md-quote-first::before": {
|
|
2487
|
+
top: "0.2em",
|
|
2488
|
+
borderTopLeftRadius: "3px",
|
|
2489
|
+
borderTopRightRadius: "3px"
|
|
2490
|
+
},
|
|
2491
|
+
".cm-md-quote-last::before": {
|
|
2492
|
+
bottom: "0.2em",
|
|
2493
|
+
borderBottomLeftRadius: "3px",
|
|
2494
|
+
borderBottomRightRadius: "3px"
|
|
2495
|
+
}
|
|
2496
|
+
});
|
|
2497
|
+
var margin = [marginPlugin, marginTheme];
|
|
2498
|
+
|
|
2499
|
+
// src/extensions/headings.ts
|
|
2500
|
+
import { syntaxTree as syntaxTree3 } from "@codemirror/language";
|
|
2501
|
+
import {
|
|
2502
|
+
EditorSelection as EditorSelection3,
|
|
2503
|
+
EditorState as EditorState2,
|
|
2504
|
+
Prec as Prec2
|
|
2505
|
+
} from "@codemirror/state";
|
|
2230
2506
|
import { keymap } from "@codemirror/view";
|
|
2507
|
+
function headingPrefix(state, line) {
|
|
2508
|
+
for (let node = syntaxTree3(state).resolveInner(line.from, 1); node; node = node.parent) {
|
|
2509
|
+
const m = /^ATXHeading(\d)$/.exec(node.name);
|
|
2510
|
+
if (!m) continue;
|
|
2511
|
+
if (state.doc.lineAt(node.from).number !== line.number) return null;
|
|
2512
|
+
const mark = node.firstChild;
|
|
2513
|
+
if (!mark || mark.name !== "HeaderMark") return null;
|
|
2514
|
+
let to = mark.to;
|
|
2515
|
+
while (to < line.to && state.doc.sliceString(to, to + 1) === " ") to++;
|
|
2516
|
+
return { from: line.from, to, level: Number(m[1]) };
|
|
2517
|
+
}
|
|
2518
|
+
return null;
|
|
2519
|
+
}
|
|
2520
|
+
var keepOutOfPrefix = EditorState2.transactionFilter.of((tr) => {
|
|
2521
|
+
if (!tr.selection) return tr;
|
|
2522
|
+
const { state } = tr;
|
|
2523
|
+
const before = tr.startState.selection;
|
|
2524
|
+
let moved = false;
|
|
2525
|
+
const ranges = tr.selection.ranges.map((r, i) => {
|
|
2526
|
+
if (!r.empty) return r;
|
|
2527
|
+
const line = state.doc.lineAt(r.head);
|
|
2528
|
+
if (r.head >= line.to && line.length > 0) return r;
|
|
2529
|
+
const prefix = headingPrefix(state, line);
|
|
2530
|
+
if (!prefix || r.head >= prefix.to) return r;
|
|
2531
|
+
const old = before.ranges[i] ?? before.main;
|
|
2532
|
+
const leaving = !tr.docChanged && old.empty && old.head === prefix.to && line.from > 0;
|
|
2533
|
+
moved = true;
|
|
2534
|
+
return EditorSelection3.cursor(leaving ? line.from - 1 : prefix.to);
|
|
2535
|
+
});
|
|
2536
|
+
if (!moved) return tr;
|
|
2537
|
+
return [
|
|
2538
|
+
tr,
|
|
2539
|
+
{
|
|
2540
|
+
selection: EditorSelection3.create(ranges, tr.selection.mainIndex),
|
|
2541
|
+
sequential: true
|
|
2542
|
+
}
|
|
2543
|
+
];
|
|
2544
|
+
});
|
|
2545
|
+
function selectedLines(state) {
|
|
2546
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2547
|
+
const lines = [];
|
|
2548
|
+
for (const r of state.selection.ranges) {
|
|
2549
|
+
for (let n = state.doc.lineAt(r.from).number; n <= state.doc.lineAt(r.to).number; n++) {
|
|
2550
|
+
if (seen.has(n)) continue;
|
|
2551
|
+
seen.add(n);
|
|
2552
|
+
lines.push(state.doc.line(n));
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
return lines;
|
|
2556
|
+
}
|
|
2557
|
+
var setHeading = (level) => ({ state, dispatch }) => {
|
|
2558
|
+
const lines = selectedLines(state);
|
|
2559
|
+
const prefixes = lines.map((line) => headingPrefix(state, line));
|
|
2560
|
+
const already = level > 0 && prefixes.every((p) => p && p.level === level);
|
|
2561
|
+
const target = already ? 0 : level;
|
|
2562
|
+
const insert = target ? "#".repeat(target) + " " : "";
|
|
2563
|
+
const changes = lines.map((line, i) => {
|
|
2564
|
+
const p = prefixes[i];
|
|
2565
|
+
return { from: line.from, to: p ? p.to : line.from, insert };
|
|
2566
|
+
});
|
|
2567
|
+
dispatch(
|
|
2568
|
+
state.update({
|
|
2569
|
+
changes,
|
|
2570
|
+
scrollIntoView: true,
|
|
2571
|
+
userEvent: "input.format"
|
|
2572
|
+
})
|
|
2573
|
+
);
|
|
2574
|
+
return true;
|
|
2575
|
+
};
|
|
2576
|
+
function atHeadingStart(state) {
|
|
2577
|
+
const sel = state.selection;
|
|
2578
|
+
if (sel.ranges.length !== 1 || !sel.main.empty) return null;
|
|
2579
|
+
const line = state.doc.lineAt(sel.main.head);
|
|
2580
|
+
const prefix = headingPrefix(state, line);
|
|
2581
|
+
return prefix && sel.main.head === prefix.to ? prefix : null;
|
|
2582
|
+
}
|
|
2583
|
+
var backspace = ({ state, dispatch }) => {
|
|
2584
|
+
const prefix = atHeadingStart(state);
|
|
2585
|
+
if (!prefix) return false;
|
|
2586
|
+
dispatch(
|
|
2587
|
+
state.update({
|
|
2588
|
+
changes: { from: prefix.from, to: prefix.to },
|
|
2589
|
+
selection: EditorSelection3.cursor(prefix.from),
|
|
2590
|
+
userEvent: "delete.backward"
|
|
2591
|
+
})
|
|
2592
|
+
);
|
|
2593
|
+
return true;
|
|
2594
|
+
};
|
|
2595
|
+
var enter = ({ state, dispatch }) => {
|
|
2596
|
+
const prefix = atHeadingStart(state);
|
|
2597
|
+
if (!prefix) return false;
|
|
2598
|
+
const line = state.doc.lineAt(prefix.from);
|
|
2599
|
+
if (prefix.to >= line.to) return false;
|
|
2600
|
+
dispatch(
|
|
2601
|
+
state.update({
|
|
2602
|
+
changes: { from: line.from, insert: "\n" },
|
|
2603
|
+
selection: EditorSelection3.cursor(prefix.to + 1),
|
|
2604
|
+
scrollIntoView: true,
|
|
2605
|
+
userEvent: "input"
|
|
2606
|
+
})
|
|
2607
|
+
);
|
|
2608
|
+
return true;
|
|
2609
|
+
};
|
|
2610
|
+
var deleteForward = ({ state, dispatch }) => {
|
|
2611
|
+
const sel = state.selection;
|
|
2612
|
+
if (sel.ranges.length !== 1 || !sel.main.empty) return false;
|
|
2613
|
+
const line = state.doc.lineAt(sel.main.head);
|
|
2614
|
+
if (sel.main.head !== line.to || line.number >= state.doc.lines) return false;
|
|
2615
|
+
const prefix = headingPrefix(state, state.doc.line(line.number + 1));
|
|
2616
|
+
if (!prefix) return false;
|
|
2617
|
+
dispatch(
|
|
2618
|
+
state.update({
|
|
2619
|
+
changes: { from: line.to, to: prefix.to },
|
|
2620
|
+
userEvent: "delete.forward"
|
|
2621
|
+
})
|
|
2622
|
+
);
|
|
2623
|
+
return true;
|
|
2624
|
+
};
|
|
2625
|
+
var headings = [
|
|
2626
|
+
keepOutOfPrefix,
|
|
2627
|
+
// above lang-markdown's own (Prec.high) Enter and Backspace.
|
|
2628
|
+
Prec2.highest(
|
|
2629
|
+
keymap.of([
|
|
2630
|
+
{ key: "Backspace", run: backspace },
|
|
2631
|
+
{ key: "Enter", run: enter },
|
|
2632
|
+
{ key: "Delete", run: deleteForward },
|
|
2633
|
+
{ key: "Mod-Shift-h", run: setHeading(2), preventDefault: true },
|
|
2634
|
+
{ key: "Mod-Shift-j", run: setHeading(3), preventDefault: true },
|
|
2635
|
+
{ key: "Mod-Shift-b", run: setHeading(0), preventDefault: true },
|
|
2636
|
+
{ key: "Mod-Alt-1", run: setHeading(1), preventDefault: true },
|
|
2637
|
+
{ key: "Mod-Alt-2", run: setHeading(2), preventDefault: true },
|
|
2638
|
+
{ key: "Mod-Alt-3", run: setHeading(3), preventDefault: true },
|
|
2639
|
+
{ key: "Mod-Alt-0", run: setHeading(0), preventDefault: true }
|
|
2640
|
+
])
|
|
2641
|
+
)
|
|
2642
|
+
];
|
|
2643
|
+
|
|
2644
|
+
// src/extensions/zoom.ts
|
|
2645
|
+
import { Prec as Prec3 } from "@codemirror/state";
|
|
2646
|
+
import { keymap as keymap2 } from "@codemirror/view";
|
|
2231
2647
|
var MIN_FONT_SIZE = 6;
|
|
2232
2648
|
var FALLBACK_FONT_SIZE = 16;
|
|
2233
2649
|
var px = (value) => parseFloat(value) || FALLBACK_FONT_SIZE;
|
|
2234
2650
|
function baseSize(view) {
|
|
2235
2651
|
const { style } = view.dom;
|
|
2236
|
-
const
|
|
2652
|
+
const zoomed3 = style.fontSize;
|
|
2237
2653
|
style.fontSize = "";
|
|
2238
2654
|
const base = px(getComputedStyle(view.dom).fontSize);
|
|
2239
|
-
style.fontSize =
|
|
2655
|
+
style.fontSize = zoomed3;
|
|
2240
2656
|
return base;
|
|
2241
2657
|
}
|
|
2242
2658
|
function step(view, by) {
|
|
@@ -2256,8 +2672,8 @@ function step(view, by) {
|
|
|
2256
2672
|
var zoomIn = (view) => step(view, 1);
|
|
2257
2673
|
var zoomOut = (view) => step(view, -1);
|
|
2258
2674
|
var zoomReset = (view) => step(view, 0);
|
|
2259
|
-
var markdownZoom =
|
|
2260
|
-
|
|
2675
|
+
var markdownZoom = Prec3.high(
|
|
2676
|
+
keymap2.of([
|
|
2261
2677
|
// `+` and `_` are the shifted keys, for keyboards that need Shift.
|
|
2262
2678
|
{ key: "Mod-=", run: zoomIn, preventDefault: true },
|
|
2263
2679
|
{ key: "Mod-+", run: zoomIn, preventDefault: true },
|
|
@@ -2268,20 +2684,10 @@ var markdownZoom = Prec2.high(
|
|
|
2268
2684
|
);
|
|
2269
2685
|
|
|
2270
2686
|
// src/themes/markdown.ts
|
|
2271
|
-
import {
|
|
2272
|
-
|
|
2273
|
-
syntaxHighlighting,
|
|
2274
|
-
syntaxTree as syntaxTree2
|
|
2275
|
-
} from "@codemirror/language";
|
|
2276
|
-
import { RangeSetBuilder as RangeSetBuilder3 } from "@codemirror/state";
|
|
2277
|
-
import {
|
|
2278
|
-
Decoration as Decoration3,
|
|
2279
|
-
EditorView as EditorView4,
|
|
2280
|
-
ViewPlugin as ViewPlugin3,
|
|
2281
|
-
WidgetType as WidgetType2
|
|
2282
|
-
} from "@codemirror/view";
|
|
2687
|
+
import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
|
|
2688
|
+
import { EditorView as EditorView5 } from "@codemirror/view";
|
|
2283
2689
|
var bodyFont = (style) => style == "serif" ? 'var(--text-editor-family-serif, "Merriweather", serif)' : "var(--text-editor-family-sans)";
|
|
2284
|
-
var
|
|
2690
|
+
var zoomed2 = (length) => `calc(${length} * var(--markdown-zoom, 1))`;
|
|
2285
2691
|
var markdownStyles = (style) => ({
|
|
2286
2692
|
"&": {},
|
|
2287
2693
|
"&.cm-editor.cm-focused": {
|
|
@@ -2301,20 +2707,24 @@ var markdownStyles = (style) => ({
|
|
|
2301
2707
|
background: "transparent"
|
|
2302
2708
|
},
|
|
2303
2709
|
".cm-content": {
|
|
2710
|
+
// for things outside the highlighter (the link widget) to match the text.
|
|
2711
|
+
"--markdown-body-family": bodyFont(style),
|
|
2304
2712
|
// Justified text makes it look more like the I&S web essay template,
|
|
2305
2713
|
// but doesn't feel right for most documents.
|
|
2306
2714
|
// textAlign: "justify",
|
|
2307
2715
|
textWrap: "pretty",
|
|
2308
2716
|
fontFamily: bodyFont(style),
|
|
2309
|
-
lineHeight:
|
|
2717
|
+
lineHeight: zoomed2("1.5rem"),
|
|
2310
2718
|
color: "var(--text-editor-line)",
|
|
2311
2719
|
caretColor: "var(--text-editor-cursor-fill)",
|
|
2312
2720
|
background: "var(--text-editor-fill)",
|
|
2313
|
-
marginBlock:
|
|
2721
|
+
marginBlock: zoomed2("2rem"),
|
|
2314
2722
|
marginInline: "auto",
|
|
2315
2723
|
// lol i guess this is the same as box-sizing: content-box
|
|
2316
|
-
maxWidth: `calc(var(--max-text-line-width, 100ex) - ${
|
|
2317
|
-
padding:
|
|
2724
|
+
maxWidth: `calc(var(--max-text-line-width, 100ex) - ${zoomed2("2rem")})`,
|
|
2725
|
+
padding: zoomed2("2rem"),
|
|
2726
|
+
// room for the markers hung in the margin (extensions/margin.ts).
|
|
2727
|
+
paddingLeft: `calc(${zoomed2("2rem")} + var(--markdown-hang, 0px))`,
|
|
2318
2728
|
boxShadow: "none",
|
|
2319
2729
|
marginBottom: "8em",
|
|
2320
2730
|
borderRadius: "8px"
|
|
@@ -2322,20 +2732,6 @@ var markdownStyles = (style) => ({
|
|
|
2322
2732
|
".cm-content li": {
|
|
2323
2733
|
marginBottom: 0
|
|
2324
2734
|
},
|
|
2325
|
-
".cm-bullet": {
|
|
2326
|
-
display: "inline-block",
|
|
2327
|
-
width: "1ch"
|
|
2328
|
-
},
|
|
2329
|
-
".cm-bullet::before": {
|
|
2330
|
-
content: '""',
|
|
2331
|
-
display: "inline-block",
|
|
2332
|
-
width: "0.4em",
|
|
2333
|
-
height: "0.4em",
|
|
2334
|
-
borderRadius: "50%",
|
|
2335
|
-
background: "currentColor",
|
|
2336
|
-
color: "var(--text-editor-line)",
|
|
2337
|
-
verticalAlign: "0.15em"
|
|
2338
|
-
},
|
|
2339
2735
|
".cm-task": {
|
|
2340
2736
|
margin: "0 0.1em",
|
|
2341
2737
|
verticalAlign: "-0.1em",
|
|
@@ -2351,7 +2747,7 @@ var markdownStyles = (style) => ({
|
|
|
2351
2747
|
backgroundColor: "inherit"
|
|
2352
2748
|
},
|
|
2353
2749
|
".frontmatter, .frontmatter *": {
|
|
2354
|
-
fontSize:
|
|
2750
|
+
fontSize: zoomed2("14px"),
|
|
2355
2751
|
fontFamily: "var(--text-editor-family-code)",
|
|
2356
2752
|
color: "var(--syntax-comment, #666)",
|
|
2357
2753
|
textDecoration: "none",
|
|
@@ -2380,9 +2776,6 @@ var markdownStyles = (style) => ({
|
|
|
2380
2776
|
},
|
|
2381
2777
|
".cm-folded-range": {
|
|
2382
2778
|
background: "var(--text-editor-fill)"
|
|
2383
|
-
},
|
|
2384
|
-
".codeblock": {
|
|
2385
|
-
background: "orange"
|
|
2386
2779
|
}
|
|
2387
2780
|
});
|
|
2388
2781
|
var baseHeadingStyles = {
|
|
@@ -2395,7 +2788,12 @@ var baseCodeStyles = {
|
|
|
2395
2788
|
fontSize: "1em"
|
|
2396
2789
|
};
|
|
2397
2790
|
var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
|
|
2398
|
-
// this is how you ensure that codeblocks are still monospace
|
|
2791
|
+
// this is how you ensure that codeblocks are still monospace.
|
|
2792
|
+
// a node's own class *replaces* its parent's in the highlighter, so text
|
|
2793
|
+
// inside **bold**, *italic* and ~~struck~~ loses this one and falls back to
|
|
2794
|
+
// `.cm-content`, which the patchwork theme sets to the code font. those
|
|
2795
|
+
// rules set the body font again; inline code inside them still wins,
|
|
2796
|
+
// being later in this list.
|
|
2399
2797
|
{
|
|
2400
2798
|
tag: tags.content,
|
|
2401
2799
|
fontFamily: bodyFont(style)
|
|
@@ -2403,33 +2801,33 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
|
|
|
2403
2801
|
{
|
|
2404
2802
|
tag: tags.heading1,
|
|
2405
2803
|
...baseHeadingStyles,
|
|
2406
|
-
fontSize: `var(--studio-heading-size-1, ${
|
|
2407
|
-
lineHeight:
|
|
2408
|
-
marginBottom:
|
|
2409
|
-
marginTop:
|
|
2804
|
+
fontSize: `var(--studio-heading-size-1, ${zoomed2("1.5rem")})`,
|
|
2805
|
+
lineHeight: zoomed2("2rem"),
|
|
2806
|
+
marginBottom: zoomed2("1rem"),
|
|
2807
|
+
marginTop: zoomed2("2rem")
|
|
2410
2808
|
},
|
|
2411
2809
|
{
|
|
2412
2810
|
tag: tags.heading2,
|
|
2413
2811
|
...baseHeadingStyles,
|
|
2414
|
-
fontSize: `var(--studio-heading-size-2, ${
|
|
2415
|
-
lineHeight:
|
|
2416
|
-
marginBottom:
|
|
2417
|
-
marginTop:
|
|
2812
|
+
fontSize: `var(--studio-heading-size-2, ${zoomed2("1.5rem")})`,
|
|
2813
|
+
lineHeight: zoomed2("2rem"),
|
|
2814
|
+
marginBottom: zoomed2("1rem"),
|
|
2815
|
+
marginTop: zoomed2("2rem")
|
|
2418
2816
|
},
|
|
2419
2817
|
{
|
|
2420
2818
|
tag: tags.heading3,
|
|
2421
2819
|
...baseHeadingStyles,
|
|
2422
|
-
fontSize: `var(--studio-heading-size-3, ${
|
|
2423
|
-
lineHeight:
|
|
2424
|
-
marginBottom:
|
|
2425
|
-
marginTop:
|
|
2820
|
+
fontSize: `var(--studio-heading-size-3, ${zoomed2("1.25rem")})`,
|
|
2821
|
+
lineHeight: zoomed2("1.75rem"),
|
|
2822
|
+
marginBottom: zoomed2("1rem"),
|
|
2823
|
+
marginTop: zoomed2("2rem")
|
|
2426
2824
|
},
|
|
2427
2825
|
{
|
|
2428
2826
|
tag: tags.heading4,
|
|
2429
2827
|
...baseHeadingStyles,
|
|
2430
|
-
fontSize: `var(--studio-heading-size-4, ${
|
|
2431
|
-
marginBottom:
|
|
2432
|
-
marginTop:
|
|
2828
|
+
fontSize: `var(--studio-heading-size-4, ${zoomed2("1.1rem")})`,
|
|
2829
|
+
marginBottom: zoomed2("1rem"),
|
|
2830
|
+
marginTop: zoomed2("2rem")
|
|
2433
2831
|
},
|
|
2434
2832
|
{
|
|
2435
2833
|
tag: tags.processingInstruction,
|
|
@@ -2443,14 +2841,17 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
|
|
|
2443
2841
|
{ tag: tags.quote, fontStyle: "var(--syntax-style-quote, italic)" },
|
|
2444
2842
|
{
|
|
2445
2843
|
tag: tags.strong,
|
|
2844
|
+
fontFamily: bodyFont(style),
|
|
2446
2845
|
fontWeight: "var(--syntax-weight-strong, bold)"
|
|
2447
2846
|
},
|
|
2448
2847
|
{
|
|
2449
2848
|
tag: tags.emphasis,
|
|
2849
|
+
fontFamily: bodyFont(style),
|
|
2450
2850
|
fontStyle: "var(--syntax-style-emphasis, italic)"
|
|
2451
2851
|
},
|
|
2452
2852
|
{
|
|
2453
2853
|
tag: tags.strikethrough,
|
|
2854
|
+
fontFamily: bodyFont(style),
|
|
2454
2855
|
textDecoration: "line-through"
|
|
2455
2856
|
},
|
|
2456
2857
|
{
|
|
@@ -2499,81 +2900,9 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
|
|
|
2499
2900
|
{ tag: tags.monospace, ...baseCodeStyles }
|
|
2500
2901
|
]);
|
|
2501
2902
|
var theme = (style) => [
|
|
2502
|
-
|
|
2503
|
-
syntaxHighlighting(markdownSyntaxHighlighting(style))
|
|
2504
|
-
bullets,
|
|
2505
|
-
codeblocks
|
|
2903
|
+
EditorView5.theme(markdownStyles(style)),
|
|
2904
|
+
syntaxHighlighting(markdownSyntaxHighlighting(style))
|
|
2506
2905
|
];
|
|
2507
|
-
var bullets = ViewPlugin3.fromClass(
|
|
2508
|
-
class {
|
|
2509
|
-
decorations;
|
|
2510
|
-
view;
|
|
2511
|
-
constructor(view) {
|
|
2512
|
-
this.view = view;
|
|
2513
|
-
this.decorations = this.build();
|
|
2514
|
-
}
|
|
2515
|
-
update(update) {
|
|
2516
|
-
if (update.docChanged || update.viewportChanged) {
|
|
2517
|
-
this.decorations = this.build();
|
|
2518
|
-
}
|
|
2519
|
-
}
|
|
2520
|
-
build() {
|
|
2521
|
-
const builder = new RangeSetBuilder3();
|
|
2522
|
-
const doc = this.view.state.doc;
|
|
2523
|
-
syntaxTree2(this.view.state).iterate({
|
|
2524
|
-
enter: ({ type, from }) => {
|
|
2525
|
-
if (type.name === "ListMark") {
|
|
2526
|
-
const char = doc.sliceString(from, from + 1);
|
|
2527
|
-
if (["-", "+", "*"].includes(char)) {
|
|
2528
|
-
builder.add(
|
|
2529
|
-
from,
|
|
2530
|
-
from + 1,
|
|
2531
|
-
Decoration3.replace({ widget: new BulletWidget() })
|
|
2532
|
-
);
|
|
2533
|
-
}
|
|
2534
|
-
}
|
|
2535
|
-
}
|
|
2536
|
-
});
|
|
2537
|
-
return builder.finish();
|
|
2538
|
-
}
|
|
2539
|
-
},
|
|
2540
|
-
{
|
|
2541
|
-
decorations: (v) => v.decorations
|
|
2542
|
-
}
|
|
2543
|
-
);
|
|
2544
|
-
var BulletWidget = class extends WidgetType2 {
|
|
2545
|
-
toDOM() {
|
|
2546
|
-
const span = document.createElement("span");
|
|
2547
|
-
span.className = "cm-bullet";
|
|
2548
|
-
return span;
|
|
2549
|
-
}
|
|
2550
|
-
};
|
|
2551
|
-
var codeblocks = ViewPlugin3.fromClass(
|
|
2552
|
-
class BlockquotePlugin {
|
|
2553
|
-
decorations = Decoration3.none;
|
|
2554
|
-
constructor(view) {
|
|
2555
|
-
this.buildDeco(view);
|
|
2556
|
-
}
|
|
2557
|
-
update(update) {
|
|
2558
|
-
this.buildDeco(update.view);
|
|
2559
|
-
}
|
|
2560
|
-
buildDeco(view) {
|
|
2561
|
-
const builder = new RangeSetBuilder3();
|
|
2562
|
-
view.viewportLineBlocks.forEach((line) => {
|
|
2563
|
-
const lineObj = view.state.doc.lineAt(line.from);
|
|
2564
|
-
const match = /^>.*/g.exec(lineObj.text);
|
|
2565
|
-
if (match && match[0]) {
|
|
2566
|
-
builder.add(
|
|
2567
|
-
line.from,
|
|
2568
|
-
line.from,
|
|
2569
|
-
Decoration3.line({ class: "codeblock" })
|
|
2570
|
-
);
|
|
2571
|
-
}
|
|
2572
|
-
});
|
|
2573
|
-
this.decorations = builder.finish();
|
|
2574
|
-
}
|
|
2575
|
-
}
|
|
2576
|
-
);
|
|
2577
2906
|
|
|
2578
2907
|
// src/extensions/markdown.ts
|
|
2579
2908
|
function markdownExtensions() {
|
|
@@ -2581,7 +2910,7 @@ function markdownExtensions() {
|
|
|
2581
2910
|
...theme("sans"),
|
|
2582
2911
|
indentOnInput(),
|
|
2583
2912
|
markdownZoom,
|
|
2584
|
-
|
|
2913
|
+
keymap3.of([
|
|
2585
2914
|
...markdownFormattingKeymap,
|
|
2586
2915
|
...defaultKeymap,
|
|
2587
2916
|
...searchKeymap,
|
|
@@ -2589,14 +2918,29 @@ function markdownExtensions() {
|
|
|
2589
2918
|
...completionKeymap,
|
|
2590
2919
|
indentWithTab
|
|
2591
2920
|
]),
|
|
2592
|
-
|
|
2921
|
+
EditorView6.lineWrapping,
|
|
2593
2922
|
// GFM base: task lists, tables, strikethrough, autolinks.
|
|
2594
|
-
markdown({
|
|
2923
|
+
markdown({
|
|
2924
|
+
base: markdownLanguage,
|
|
2925
|
+
codeLanguages: languages,
|
|
2926
|
+
extensions: [bareUrls]
|
|
2927
|
+
}),
|
|
2595
2928
|
taskCheckboxes,
|
|
2929
|
+
margin,
|
|
2930
|
+
headings,
|
|
2596
2931
|
indentUnit.of(" ")
|
|
2597
2932
|
];
|
|
2598
2933
|
}
|
|
2934
|
+
var bareUrls = {
|
|
2935
|
+
props: [
|
|
2936
|
+
styleTags({
|
|
2937
|
+
URL: tags.link,
|
|
2938
|
+
"Link/URL Image/URL Autolink/URL LinkReference/URL": tags.url
|
|
2939
|
+
})
|
|
2940
|
+
]
|
|
2941
|
+
};
|
|
2599
2942
|
export {
|
|
2943
|
+
bareUrls,
|
|
2600
2944
|
markdownExtensions
|
|
2601
2945
|
};
|
|
2602
2946
|
//# sourceMappingURL=markdown.js.map
|