@inkandswitch/patchwork-pkg-base 0.0.123 → 0.0.124

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 (60) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/codemirror-markdown/dist/{chunk-IJCIGXUN.js → chunk-3U6A6M3C.js} +3 -3
  4. package/packages/codemirror-markdown/dist/{chunk-IJCIGXUN.js.map → chunk-3U6A6M3C.js.map} +2 -2
  5. package/packages/codemirror-markdown/dist/{chunk-DQNB5ERJ.js → chunk-AOCXO46Z.js} +4 -4
  6. package/packages/codemirror-markdown/dist/{chunk-4ZTKTN2T.js → chunk-BK6BYU4X.js} +3 -3
  7. package/packages/codemirror-markdown/dist/{chunk-4RNBFSBX.js → chunk-JCGWNVO7.js} +2 -2
  8. package/packages/codemirror-markdown/dist/{chunk-6JHOS434.js → chunk-ZMDZRV6X.js} +2 -2
  9. package/packages/codemirror-markdown/dist/{dist-5FW47RX2.js → dist-3WYN573Y.js} +2 -2
  10. package/packages/codemirror-markdown/dist/{dist-XVLR6T5U.js → dist-4STDX7WZ.js} +5 -5
  11. package/packages/codemirror-markdown/dist/{dist-PAVPWBMY.js → dist-66V2OZNR.js} +2 -2
  12. package/packages/codemirror-markdown/dist/{dist-D27NTZAI.js → dist-7EHN4UZA.js} +5 -5
  13. package/packages/codemirror-markdown/dist/{dist-STDOJSRA.js → dist-D4E7IXYD.js} +5 -5
  14. package/packages/codemirror-markdown/dist/{dist-EG4ZREHT.js → dist-E6QAN4VQ.js} +2 -2
  15. package/packages/codemirror-markdown/dist/{dist-4N6A6FHO.js → dist-E72K6GKZ.js} +2 -2
  16. package/packages/codemirror-markdown/dist/{dist-B5G4LYVR.js → dist-EVYTVY4T.js} +5 -5
  17. package/packages/codemirror-markdown/dist/{dist-6BZJTPMQ.js → dist-ITLHNFUL.js} +2 -2
  18. package/packages/codemirror-markdown/dist/{dist-YSRXNTXV.js → dist-KLLOFSEO.js} +3 -3
  19. package/packages/codemirror-markdown/dist/{dist-6NY2CMU2.js → dist-LCUXA5AJ.js} +3 -3
  20. package/packages/codemirror-markdown/dist/{dist-HB4M34TX.js → dist-NFD5VVC6.js} +6 -6
  21. package/packages/codemirror-markdown/dist/{dist-SFP5SWTJ.js → dist-O6G7IUZY.js} +2 -2
  22. package/packages/codemirror-markdown/dist/{dist-TYTABVEN.js → dist-OU44YTSZ.js} +2 -2
  23. package/packages/codemirror-markdown/dist/{dist-XM4FBMZA.js → dist-RCBHVDL7.js} +2 -2
  24. package/packages/codemirror-markdown/dist/{dist-DX7TJIOI.js → dist-RUK5SWS5.js} +2 -2
  25. package/packages/codemirror-markdown/dist/{dist-VYHSBFVD.js → dist-TFWDIHAP.js} +5 -5
  26. package/packages/codemirror-markdown/dist/{dist-BYFOH52X.js → dist-VBHD2NRU.js} +3 -3
  27. package/packages/codemirror-markdown/dist/{dist-TV5CSRQ2.js → dist-XL62MJER.js} +5 -5
  28. package/packages/codemirror-markdown/dist/{dist-ITGX4OZJ.js → dist-YK6XD4UJ.js} +3 -3
  29. package/packages/codemirror-markdown/dist/{dist-KBGGPCDW.js → dist-YNO26IAD.js} +2 -2
  30. package/packages/codemirror-markdown/dist/extensions/links.js +6 -1
  31. package/packages/codemirror-markdown/dist/extensions/links.js.map +2 -2
  32. package/packages/codemirror-markdown/dist/extensions/markdown.js +328 -161
  33. package/packages/codemirror-markdown/dist/extensions/markdown.js.map +4 -4
  34. package/packages/codemirror-markdown/package.json +1 -1
  35. package/plugin-registry-url +1 -1
  36. /package/packages/codemirror-markdown/dist/{chunk-DQNB5ERJ.js.map → chunk-AOCXO46Z.js.map} +0 -0
  37. /package/packages/codemirror-markdown/dist/{chunk-4ZTKTN2T.js.map → chunk-BK6BYU4X.js.map} +0 -0
  38. /package/packages/codemirror-markdown/dist/{chunk-4RNBFSBX.js.map → chunk-JCGWNVO7.js.map} +0 -0
  39. /package/packages/codemirror-markdown/dist/{chunk-6JHOS434.js.map → chunk-ZMDZRV6X.js.map} +0 -0
  40. /package/packages/codemirror-markdown/dist/{dist-5FW47RX2.js.map → dist-3WYN573Y.js.map} +0 -0
  41. /package/packages/codemirror-markdown/dist/{dist-HB4M34TX.js.map → dist-4STDX7WZ.js.map} +0 -0
  42. /package/packages/codemirror-markdown/dist/{dist-PAVPWBMY.js.map → dist-66V2OZNR.js.map} +0 -0
  43. /package/packages/codemirror-markdown/dist/{dist-D27NTZAI.js.map → dist-7EHN4UZA.js.map} +0 -0
  44. /package/packages/codemirror-markdown/dist/{dist-STDOJSRA.js.map → dist-D4E7IXYD.js.map} +0 -0
  45. /package/packages/codemirror-markdown/dist/{dist-EG4ZREHT.js.map → dist-E6QAN4VQ.js.map} +0 -0
  46. /package/packages/codemirror-markdown/dist/{dist-4N6A6FHO.js.map → dist-E72K6GKZ.js.map} +0 -0
  47. /package/packages/codemirror-markdown/dist/{dist-B5G4LYVR.js.map → dist-EVYTVY4T.js.map} +0 -0
  48. /package/packages/codemirror-markdown/dist/{dist-6BZJTPMQ.js.map → dist-ITLHNFUL.js.map} +0 -0
  49. /package/packages/codemirror-markdown/dist/{dist-ITGX4OZJ.js.map → dist-KLLOFSEO.js.map} +0 -0
  50. /package/packages/codemirror-markdown/dist/{dist-6NY2CMU2.js.map → dist-LCUXA5AJ.js.map} +0 -0
  51. /package/packages/codemirror-markdown/dist/{dist-XVLR6T5U.js.map → dist-NFD5VVC6.js.map} +0 -0
  52. /package/packages/codemirror-markdown/dist/{dist-SFP5SWTJ.js.map → dist-O6G7IUZY.js.map} +0 -0
  53. /package/packages/codemirror-markdown/dist/{dist-TYTABVEN.js.map → dist-OU44YTSZ.js.map} +0 -0
  54. /package/packages/codemirror-markdown/dist/{dist-XM4FBMZA.js.map → dist-RCBHVDL7.js.map} +0 -0
  55. /package/packages/codemirror-markdown/dist/{dist-DX7TJIOI.js.map → dist-RUK5SWS5.js.map} +0 -0
  56. /package/packages/codemirror-markdown/dist/{dist-VYHSBFVD.js.map → dist-TFWDIHAP.js.map} +0 -0
  57. /package/packages/codemirror-markdown/dist/{dist-BYFOH52X.js.map → dist-VBHD2NRU.js.map} +0 -0
  58. /package/packages/codemirror-markdown/dist/{dist-TV5CSRQ2.js.map → dist-XL62MJER.js.map} +0 -0
  59. /package/packages/codemirror-markdown/dist/{dist-YSRXNTXV.js.map → dist-YK6XD4UJ.js.map} +0 -0
  60. /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-4ZTKTN2T.js";
5
- import "../chunk-DQNB5ERJ.js";
6
- import "../chunk-4RNBFSBX.js";
7
- import "../chunk-6JHOS434.js";
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-IJCIGXUN.js";
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-5FW47RX2.js").then((m) => m.sql({ dialect: m[dialectName] }));
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-PAVPWBMY.js").then((m) => m.cpp());
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-PAVPWBMY.js").then((m) => m.cpp());
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-ITGX4OZJ.js").then((m) => m.css());
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-6BZJTPMQ.js").then((m) => m.go());
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-XVLR6T5U.js").then((m) => m.html());
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-TYTABVEN.js").then((m) => m.java());
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-YSRXNTXV.js").then((m) => m.javascript());
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-B5G4LYVR.js").then((m) => m.jinja());
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-KBGGPCDW.js").then((m) => m.json());
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-YSRXNTXV.js").then((m) => m.javascript({ jsx: true }));
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-BYFOH52X.js").then((m) => m.less());
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-D27NTZAI.js").then((m) => m.liquid());
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-HB4M34TX.js").then((m) => m.markdown());
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-TV5CSRQ2.js").then((m) => m.php());
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-DX7TJIOI.js").then((m) => m.python());
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-SFP5SWTJ.js").then((m) => m.rust());
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-6NY2CMU2.js").then((m) => m.sass({ indented: true }));
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-6NY2CMU2.js").then((m) => m.sass());
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-YSRXNTXV.js").then((m) => m.javascript({ jsx: true, typescript: true }));
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-YSRXNTXV.js").then((m) => m.javascript({ typescript: true }));
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-XM4FBMZA.js").then((m) => m.wast());
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-4N6A6FHO.js").then((m) => m.xml());
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-EG4ZREHT.js").then((m) => m.yaml());
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-VYHSBFVD.js").then((m) => m.vue());
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-STDOJSRA.js").then((m) => m.angular());
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 EditorView5, keymap as keymap2 } from "@codemirror/view";
2069
+ import { EditorView as EditorView6, keymap as keymap2 } from "@codemirror/view";
2069
2070
 
2070
2071
  // src/extensions/formatting.ts
2071
2072
  import { EditorSelection as EditorSelection2 } from "@codemirror/state";
@@ -2225,6 +2226,245 @@ var taskCheckboxes = ViewPlugin2.fromClass(
2225
2226
  { decorations: (v) => v.decorations }
2226
2227
  );
2227
2228
 
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 hangMark = Decoration3.mark({ class: "cm-md-hang" });
2238
+ var numberMark = Decoration3.mark({ class: "cm-md-hang cm-md-hang-number" });
2239
+ var quoteMark = Decoration3.mark({ class: "cm-md-hang cm-md-hang-quote" });
2240
+ var hidden = Decoration3.replace({});
2241
+ var taskMark = Decoration3.mark({ class: "cm-md-hang", inclusive: true });
2242
+ var HeadingLabel = class extends WidgetType2 {
2243
+ constructor(level) {
2244
+ super();
2245
+ this.level = level;
2246
+ }
2247
+ eq(other) {
2248
+ return other.level === this.level;
2249
+ }
2250
+ toDOM() {
2251
+ const span = document.createElement("span");
2252
+ span.className = "cm-md-hang cm-md-heading-label";
2253
+ span.setAttribute("aria-hidden", "true");
2254
+ const n = document.createElement("span");
2255
+ n.className = "cm-md-heading-level";
2256
+ n.textContent = String(this.level);
2257
+ span.append("H", n);
2258
+ return span;
2259
+ }
2260
+ };
2261
+ var Bullet = class extends WidgetType2 {
2262
+ eq() {
2263
+ return true;
2264
+ }
2265
+ toDOM() {
2266
+ const span = document.createElement("span");
2267
+ span.className = "cm-md-hang";
2268
+ const dot = document.createElement("span");
2269
+ dot.className = "cm-bullet";
2270
+ span.append(dot);
2271
+ return span;
2272
+ }
2273
+ };
2274
+ function caretLines(state) {
2275
+ const lines = /* @__PURE__ */ new Set();
2276
+ for (const r of state.selection.ranges) {
2277
+ const first = state.doc.lineAt(r.from).number;
2278
+ const last = state.doc.lineAt(r.to).number;
2279
+ for (let n = first; n <= last; n++) lines.add(n);
2280
+ }
2281
+ return lines;
2282
+ }
2283
+ function skipSpaces(state, pos) {
2284
+ const line = state.doc.lineAt(pos);
2285
+ while (pos < line.to && state.doc.sliceString(pos, pos + 1) === " ") pos++;
2286
+ return pos;
2287
+ }
2288
+ function build2(view) {
2289
+ const { state } = view;
2290
+ const { doc } = state;
2291
+ const editing = caretLines(state);
2292
+ const decos = [];
2293
+ for (const { from, to } of view.visibleRanges) {
2294
+ syntaxTree2(state).iterate({
2295
+ from,
2296
+ to,
2297
+ enter: (node) => {
2298
+ const name = node.name;
2299
+ const heading = /^ATXHeading(\d)$/.exec(name);
2300
+ if (heading) {
2301
+ const mark = node.node.firstChild;
2302
+ if (!mark || mark.name !== "HeaderMark" || mark.from !== node.from)
2303
+ return;
2304
+ const end = skipSpaces(state, mark.to);
2305
+ if (editing.has(doc.lineAt(node.from).number)) {
2306
+ decos.push(hangMark.range(mark.from, end));
2307
+ } else {
2308
+ decos.push(
2309
+ Decoration3.replace({
2310
+ widget: new HeadingLabel(Number(heading[1]))
2311
+ }).range(mark.from, end)
2312
+ );
2313
+ }
2314
+ return;
2315
+ }
2316
+ if (name === "ListMark") {
2317
+ const end = skipSpaces(state, node.to);
2318
+ const char = doc.sliceString(node.from, node.to);
2319
+ const bullet = ["-", "+", "*"].includes(char);
2320
+ const task = node.node.nextSibling?.firstChild;
2321
+ const isTask = bullet && task?.name === "TaskMarker" && doc.sliceString(end, task.from).trim() === "";
2322
+ if (isTask && task) {
2323
+ if (end > node.from) decos.push(hidden.range(node.from, end));
2324
+ decos.push(taskMark.range(task.from, skipSpaces(state, task.to)));
2325
+ return;
2326
+ }
2327
+ if (bullet) {
2328
+ decos.push(
2329
+ Decoration3.replace({ widget: new Bullet() }).range(node.from, end)
2330
+ );
2331
+ } else {
2332
+ decos.push(numberMark.range(node.from, end));
2333
+ }
2334
+ return;
2335
+ }
2336
+ if (name === "Blockquote") {
2337
+ for (let p = node.node.parent; p; p = p.parent)
2338
+ if (p.name === "Blockquote") return;
2339
+ const first = doc.lineAt(node.from).number;
2340
+ const last = doc.lineAt(node.to).number;
2341
+ for (let n = first; n <= last; n++) {
2342
+ const line = doc.line(n);
2343
+ const classes = ["cm-md-quote"];
2344
+ if (n === first) classes.push("cm-md-quote-first");
2345
+ if (n === last) classes.push("cm-md-quote-last");
2346
+ decos.push(
2347
+ Decoration3.line({ class: classes.join(" ") }).range(line.from)
2348
+ );
2349
+ }
2350
+ return;
2351
+ }
2352
+ if (name === "QuoteMark") {
2353
+ const line = doc.lineAt(node.from);
2354
+ const before = doc.sliceString(line.from, node.from);
2355
+ if (before.trim() !== "") return;
2356
+ let end = node.to;
2357
+ for (; ; ) {
2358
+ const next = skipSpaces(state, end);
2359
+ if (doc.sliceString(next, next + 1) !== ">") break;
2360
+ end = next + 1;
2361
+ }
2362
+ end = skipSpaces(state, end);
2363
+ decos.push(
2364
+ (editing.has(line.number) ? quoteMark : hidden).range(
2365
+ line.from,
2366
+ end
2367
+ )
2368
+ );
2369
+ }
2370
+ }
2371
+ });
2372
+ }
2373
+ return Decoration3.set(decos, true);
2374
+ }
2375
+ var marginPlugin = ViewPlugin3.fromClass(
2376
+ class {
2377
+ decorations;
2378
+ constructor(view) {
2379
+ this.decorations = build2(view);
2380
+ }
2381
+ update(update) {
2382
+ if (update.docChanged || update.selectionSet || update.viewportChanged || syntaxTree2(update.startState) !== syntaxTree2(update.state)) {
2383
+ this.decorations = build2(update.view);
2384
+ }
2385
+ }
2386
+ },
2387
+ { decorations: (v) => v.decorations }
2388
+ );
2389
+ var zoomed = (length) => `calc(${length} * var(--markdown-zoom, 1))`;
2390
+ var marginTheme = EditorView3.baseTheme({
2391
+ ".cm-content": {
2392
+ "--markdown-hang": zoomed("2.5rem")
2393
+ },
2394
+ ".cm-md-hang": {
2395
+ display: "inline-flex",
2396
+ justifyContent: "flex-end",
2397
+ alignItems: "baseline",
2398
+ boxSizing: "border-box",
2399
+ width: "var(--markdown-hang)",
2400
+ marginLeft: "calc(-1 * var(--markdown-hang))",
2401
+ paddingRight: zoomed("0.6rem"),
2402
+ whiteSpace: "pre",
2403
+ // a heading's raw `## ` shrinks to label size so it fits the margin.
2404
+ fontSize: zoomed("0.8rem"),
2405
+ color: "var(--text-editor-line-offset-40, #999)",
2406
+ fontWeight: "normal",
2407
+ fontStyle: "normal",
2408
+ textDecoration: "none"
2409
+ },
2410
+ // highlight spans inside the box (a heading's `##`) keep their own size and
2411
+ // margins otherwise, and as flex items those margins would push the line.
2412
+ ".cm-md-hang *": {
2413
+ fontSize: "inherit",
2414
+ margin: "0"
2415
+ },
2416
+ ".cm-md-hang-number": {
2417
+ fontSize: "inherit",
2418
+ color: "inherit",
2419
+ fontVariantNumeric: "tabular-nums"
2420
+ },
2421
+ ".cm-md-heading-label": {
2422
+ fontFamily: "var(--markdown-body-family, inherit)",
2423
+ letterSpacing: "0.02em"
2424
+ },
2425
+ ".cm-md-heading-level": {
2426
+ fontSize: "0.75em",
2427
+ verticalAlign: "-0.15em"
2428
+ },
2429
+ ".cm-md-hang .cm-bullet": {
2430
+ display: "inline-block",
2431
+ width: "0.4em",
2432
+ height: "0.4em",
2433
+ borderRadius: "50%",
2434
+ background: "var(--syntax-list-marker, currentColor)",
2435
+ color: "var(--text-editor-line)",
2436
+ alignSelf: "center"
2437
+ },
2438
+ ".cm-md-hang .cm-task": {
2439
+ margin: "0"
2440
+ },
2441
+ ".cm-md-quote": {
2442
+ position: "relative"
2443
+ },
2444
+ ".cm-md-quote::before": {
2445
+ content: '""',
2446
+ position: "absolute",
2447
+ // centred in the left half of the margin, clear of a hung `>`.
2448
+ left: "calc(-0.5 * var(--markdown-hang))",
2449
+ top: "0",
2450
+ bottom: "0",
2451
+ width: "3px",
2452
+ background: "var(--syntax-quote-bar, var(--studio-link, currentColor))",
2453
+ opacity: "0.6"
2454
+ },
2455
+ ".cm-md-quote-first::before": {
2456
+ top: "0.2em",
2457
+ borderTopLeftRadius: "3px",
2458
+ borderTopRightRadius: "3px"
2459
+ },
2460
+ ".cm-md-quote-last::before": {
2461
+ bottom: "0.2em",
2462
+ borderBottomLeftRadius: "3px",
2463
+ borderBottomRightRadius: "3px"
2464
+ }
2465
+ });
2466
+ var margin = [marginPlugin, marginTheme];
2467
+
2228
2468
  // src/extensions/zoom.ts
2229
2469
  import { Prec as Prec2 } from "@codemirror/state";
2230
2470
  import { keymap } from "@codemirror/view";
@@ -2233,10 +2473,10 @@ var FALLBACK_FONT_SIZE = 16;
2233
2473
  var px = (value) => parseFloat(value) || FALLBACK_FONT_SIZE;
2234
2474
  function baseSize(view) {
2235
2475
  const { style } = view.dom;
2236
- const zoomed2 = style.fontSize;
2476
+ const zoomed3 = style.fontSize;
2237
2477
  style.fontSize = "";
2238
2478
  const base = px(getComputedStyle(view.dom).fontSize);
2239
- style.fontSize = zoomed2;
2479
+ style.fontSize = zoomed3;
2240
2480
  return base;
2241
2481
  }
2242
2482
  function step(view, by) {
@@ -2268,20 +2508,10 @@ var markdownZoom = Prec2.high(
2268
2508
  );
2269
2509
 
2270
2510
  // src/themes/markdown.ts
2271
- import {
2272
- HighlightStyle,
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";
2511
+ import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
2512
+ import { EditorView as EditorView5 } from "@codemirror/view";
2283
2513
  var bodyFont = (style) => style == "serif" ? 'var(--text-editor-family-serif, "Merriweather", serif)' : "var(--text-editor-family-sans)";
2284
- var zoomed = (length) => `calc(${length} * var(--markdown-zoom, 1))`;
2514
+ var zoomed2 = (length) => `calc(${length} * var(--markdown-zoom, 1))`;
2285
2515
  var markdownStyles = (style) => ({
2286
2516
  "&": {},
2287
2517
  "&.cm-editor.cm-focused": {
@@ -2301,20 +2531,24 @@ var markdownStyles = (style) => ({
2301
2531
  background: "transparent"
2302
2532
  },
2303
2533
  ".cm-content": {
2534
+ // for things outside the highlighter (the link widget) to match the text.
2535
+ "--markdown-body-family": bodyFont(style),
2304
2536
  // Justified text makes it look more like the I&S web essay template,
2305
2537
  // but doesn't feel right for most documents.
2306
2538
  // textAlign: "justify",
2307
2539
  textWrap: "pretty",
2308
2540
  fontFamily: bodyFont(style),
2309
- lineHeight: zoomed("1.5rem"),
2541
+ lineHeight: zoomed2("1.5rem"),
2310
2542
  color: "var(--text-editor-line)",
2311
2543
  caretColor: "var(--text-editor-cursor-fill)",
2312
2544
  background: "var(--text-editor-fill)",
2313
- marginBlock: zoomed("2rem"),
2545
+ marginBlock: zoomed2("2rem"),
2314
2546
  marginInline: "auto",
2315
2547
  // lol i guess this is the same as box-sizing: content-box
2316
- maxWidth: `calc(var(--max-text-line-width, 100ex) - ${zoomed("2rem")})`,
2317
- padding: zoomed("2rem"),
2548
+ maxWidth: `calc(var(--max-text-line-width, 100ex) - ${zoomed2("2rem")})`,
2549
+ padding: zoomed2("2rem"),
2550
+ // room for the markers hung in the margin (extensions/margin.ts).
2551
+ paddingLeft: `calc(${zoomed2("2rem")} + var(--markdown-hang, 0px))`,
2318
2552
  boxShadow: "none",
2319
2553
  marginBottom: "8em",
2320
2554
  borderRadius: "8px"
@@ -2322,20 +2556,6 @@ var markdownStyles = (style) => ({
2322
2556
  ".cm-content li": {
2323
2557
  marginBottom: 0
2324
2558
  },
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
2559
  ".cm-task": {
2340
2560
  margin: "0 0.1em",
2341
2561
  verticalAlign: "-0.1em",
@@ -2351,7 +2571,7 @@ var markdownStyles = (style) => ({
2351
2571
  backgroundColor: "inherit"
2352
2572
  },
2353
2573
  ".frontmatter, .frontmatter *": {
2354
- fontSize: zoomed("14px"),
2574
+ fontSize: zoomed2("14px"),
2355
2575
  fontFamily: "var(--text-editor-family-code)",
2356
2576
  color: "var(--syntax-comment, #666)",
2357
2577
  textDecoration: "none",
@@ -2380,9 +2600,6 @@ var markdownStyles = (style) => ({
2380
2600
  },
2381
2601
  ".cm-folded-range": {
2382
2602
  background: "var(--text-editor-fill)"
2383
- },
2384
- ".codeblock": {
2385
- background: "orange"
2386
2603
  }
2387
2604
  });
2388
2605
  var baseHeadingStyles = {
@@ -2395,7 +2612,12 @@ var baseCodeStyles = {
2395
2612
  fontSize: "1em"
2396
2613
  };
2397
2614
  var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
2398
- // this is how you ensure that codeblocks are still monospace
2615
+ // this is how you ensure that codeblocks are still monospace.
2616
+ // a node's own class *replaces* its parent's in the highlighter, so text
2617
+ // inside **bold**, *italic* and ~~struck~~ loses this one and falls back to
2618
+ // `.cm-content`, which the patchwork theme sets to the code font. those
2619
+ // rules set the body font again; inline code inside them still wins,
2620
+ // being later in this list.
2399
2621
  {
2400
2622
  tag: tags.content,
2401
2623
  fontFamily: bodyFont(style)
@@ -2403,33 +2625,33 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
2403
2625
  {
2404
2626
  tag: tags.heading1,
2405
2627
  ...baseHeadingStyles,
2406
- fontSize: `var(--studio-heading-size-1, ${zoomed("1.5rem")})`,
2407
- lineHeight: zoomed("2rem"),
2408
- marginBottom: zoomed("1rem"),
2409
- marginTop: zoomed("2rem")
2628
+ fontSize: `var(--studio-heading-size-1, ${zoomed2("1.5rem")})`,
2629
+ lineHeight: zoomed2("2rem"),
2630
+ marginBottom: zoomed2("1rem"),
2631
+ marginTop: zoomed2("2rem")
2410
2632
  },
2411
2633
  {
2412
2634
  tag: tags.heading2,
2413
2635
  ...baseHeadingStyles,
2414
- fontSize: `var(--studio-heading-size-2, ${zoomed("1.5rem")})`,
2415
- lineHeight: zoomed("2rem"),
2416
- marginBottom: zoomed("1rem"),
2417
- marginTop: zoomed("2rem")
2636
+ fontSize: `var(--studio-heading-size-2, ${zoomed2("1.5rem")})`,
2637
+ lineHeight: zoomed2("2rem"),
2638
+ marginBottom: zoomed2("1rem"),
2639
+ marginTop: zoomed2("2rem")
2418
2640
  },
2419
2641
  {
2420
2642
  tag: tags.heading3,
2421
2643
  ...baseHeadingStyles,
2422
- fontSize: `var(--studio-heading-size-3, ${zoomed("1.25rem")})`,
2423
- lineHeight: zoomed("1.75rem"),
2424
- marginBottom: zoomed("1rem"),
2425
- marginTop: zoomed("2rem")
2644
+ fontSize: `var(--studio-heading-size-3, ${zoomed2("1.25rem")})`,
2645
+ lineHeight: zoomed2("1.75rem"),
2646
+ marginBottom: zoomed2("1rem"),
2647
+ marginTop: zoomed2("2rem")
2426
2648
  },
2427
2649
  {
2428
2650
  tag: tags.heading4,
2429
2651
  ...baseHeadingStyles,
2430
- fontSize: `var(--studio-heading-size-4, ${zoomed("1.1rem")})`,
2431
- marginBottom: zoomed("1rem"),
2432
- marginTop: zoomed("2rem")
2652
+ fontSize: `var(--studio-heading-size-4, ${zoomed2("1.1rem")})`,
2653
+ marginBottom: zoomed2("1rem"),
2654
+ marginTop: zoomed2("2rem")
2433
2655
  },
2434
2656
  {
2435
2657
  tag: tags.processingInstruction,
@@ -2443,14 +2665,17 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
2443
2665
  { tag: tags.quote, fontStyle: "var(--syntax-style-quote, italic)" },
2444
2666
  {
2445
2667
  tag: tags.strong,
2668
+ fontFamily: bodyFont(style),
2446
2669
  fontWeight: "var(--syntax-weight-strong, bold)"
2447
2670
  },
2448
2671
  {
2449
2672
  tag: tags.emphasis,
2673
+ fontFamily: bodyFont(style),
2450
2674
  fontStyle: "var(--syntax-style-emphasis, italic)"
2451
2675
  },
2452
2676
  {
2453
2677
  tag: tags.strikethrough,
2678
+ fontFamily: bodyFont(style),
2454
2679
  textDecoration: "line-through"
2455
2680
  },
2456
2681
  {
@@ -2499,81 +2724,9 @@ var markdownSyntaxHighlighting = (style) => HighlightStyle.define([
2499
2724
  { tag: tags.monospace, ...baseCodeStyles }
2500
2725
  ]);
2501
2726
  var theme = (style) => [
2502
- EditorView4.theme(markdownStyles(style)),
2503
- syntaxHighlighting(markdownSyntaxHighlighting(style)),
2504
- bullets,
2505
- codeblocks
2727
+ EditorView5.theme(markdownStyles(style)),
2728
+ syntaxHighlighting(markdownSyntaxHighlighting(style))
2506
2729
  ];
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
2730
 
2578
2731
  // src/extensions/markdown.ts
2579
2732
  function markdownExtensions() {
@@ -2589,14 +2742,28 @@ function markdownExtensions() {
2589
2742
  ...completionKeymap,
2590
2743
  indentWithTab
2591
2744
  ]),
2592
- EditorView5.lineWrapping,
2745
+ EditorView6.lineWrapping,
2593
2746
  // GFM base: task lists, tables, strikethrough, autolinks.
2594
- markdown({ base: markdownLanguage, codeLanguages: languages }),
2747
+ markdown({
2748
+ base: markdownLanguage,
2749
+ codeLanguages: languages,
2750
+ extensions: [bareUrls]
2751
+ }),
2595
2752
  taskCheckboxes,
2753
+ margin,
2596
2754
  indentUnit.of(" ")
2597
2755
  ];
2598
2756
  }
2757
+ var bareUrls = {
2758
+ props: [
2759
+ styleTags({
2760
+ URL: tags.link,
2761
+ "Link/URL Image/URL Autolink/URL LinkReference/URL": tags.url
2762
+ })
2763
+ ]
2764
+ };
2599
2765
  export {
2766
+ bareUrls,
2600
2767
  markdownExtensions
2601
2768
  };
2602
2769
  //# sourceMappingURL=markdown.js.map