@scalar/use-codemirror 0.11.38 → 0.11.40

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @scalar/use-codemirror
2
2
 
3
+ ## 0.11.40
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [28a6b05]
8
+ - @scalar/components@0.12.73
9
+
10
+ ## 0.11.39
11
+
12
+ ### Patch Changes
13
+
14
+ - 1e3214c: fix: replace scalarcodeblock with codemirror for response preview
15
+ - Updated dependencies [12fed75]
16
+ - @scalar/components@0.12.72
17
+
3
18
  ## 0.11.38
4
19
 
5
20
  ### Patch Changes
@@ -20,6 +20,7 @@ type BaseParameters = {
20
20
  /** Option to show line numbers in the editor */
21
21
  lineNumbers?: MaybeRefOrGetter<boolean | undefined>;
22
22
  withVariables?: MaybeRefOrGetter<boolean | undefined>;
23
+ forceFoldGutter?: MaybeRefOrGetter<boolean | undefined>;
23
24
  disableEnter?: MaybeRefOrGetter<boolean | undefined>;
24
25
  disableCloseBrackets?: MaybeRefOrGetter<boolean | undefined>;
25
26
  /** Option to lint and show error in the editor */
@@ -1 +1 @@
1
- {"version":3,"file":"useCodeMirror.d.ts","sourceRoot":"","sources":["../../src/hooks/useCodeMirror.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EACL,UAAU,EAMX,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,GAAG,EAQT,MAAM,KAAK,CAAA;AAGZ,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAGlD,KAAK,cAAc,GAAG;IACpB,yCAAyC;IACzC,aAAa,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACzC,mDAAmD;IACnD,UAAU,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;IAC1C,8BAA8B;IAC9B,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACpD,mDAAmD;IACnD,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAA;IAC1D,2CAA2C;IAC3C,OAAO,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IAChD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAChD,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACxD,gDAAgD;IAChD,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACnD,aAAa,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACrD,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACpD,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC5D,kDAAkD;IAClD,IAAI,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACnD,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,CAAC,cAAc,GAAG;IAChB,qEAAqE;IACrE,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,QAAQ,EAAE,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,CAAC,CAAA;AAsBN,sCAAsC;AACtC,eAAO,MAAM,aAAa,WAChB,uBAAuB,KAC9B;IACD,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAmInC,CAAA"}
1
+ {"version":3,"file":"useCodeMirror.d.ts","sourceRoot":"","sources":["../../src/hooks/useCodeMirror.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EACL,UAAU,EAMX,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,GAAG,EAQT,MAAM,KAAK,CAAA;AAGZ,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAGlD,KAAK,cAAc,GAAG;IACpB,yCAAyC;IACzC,aAAa,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IACzC,mDAAmD;IACnD,UAAU,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAA;IAC1C,8BAA8B;IAC9B,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACpD,mDAAmD;IACnD,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAA;IAC1D,2CAA2C;IAC3C,OAAO,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IAChD,yCAAyC;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAChD,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACxD,gDAAgD;IAChD,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACnD,aAAa,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACrD,eAAe,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACvD,YAAY,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACpD,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC5D,kDAAkD;IAClD,IAAI,CAAC,EAAE,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CACnD,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,CAAC,cAAc,GAAG;IAChB,qEAAqE;IACrE,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,CAAC,GACF,CAAC,cAAc,GAAG;IAChB,QAAQ,EAAE,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,CAAC,CAAA;AAsBN,sCAAsC;AACtC,eAAO,MAAM,aAAa,WAChB,uBAAuB,KAC9B;IACD,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAoInC,CAAA"}
@@ -1,50 +1,50 @@
1
- import { autocompletion as I, completionKeymap as O, closeBrackets as j, closeBracketsKeymap as B } from "@codemirror/autocomplete";
2
- import { indentWithTab as L, insertNewline as R } from "@codemirror/commands";
3
- import { css as K } from "@codemirror/lang-css";
4
- import { html as V } from "@codemirror/lang-html";
5
- import { json as z } from "@codemirror/lang-json";
6
- import { xml as A } from "@codemirror/lang-xml";
7
- import { yaml as D } from "@codemirror/lang-yaml";
8
- import { syntaxHighlighting as P, defaultHighlightStyle as G, indentOnInput as J, bracketMatching as y, foldGutter as U } from "@codemirror/language";
9
- import { linter as W } from "@codemirror/lint";
10
- import { StateEffect as q } from "@codemirror/state";
11
- import { EditorView as a, highlightSpecialChars as Q, keymap as d, placeholder as X, lineNumbers as Y } from "@codemirror/view";
12
- import { ScalarIcon as Z } from "@scalar/components";
13
- import { ref as _, watch as g, onBeforeUnmount as F, toValue as t, computed as $, h as ee, render as te } from "vue";
14
- import { customTheme as oe } from "../themes/index.js";
15
- import { variables as re } from "./variables.js";
16
- const u = (e) => "provider" in e && !!t(e.provider), ne = {
1
+ import { autocompletion as B, completionKeymap as D, closeBrackets as z, closeBracketsKeymap as K } from "@codemirror/autocomplete";
2
+ import { indentWithTab as V, insertNewline as A } from "@codemirror/commands";
3
+ import { css as G } from "@codemirror/lang-css";
4
+ import { html as P } from "@codemirror/lang-html";
5
+ import { json as J } from "@codemirror/lang-json";
6
+ import { xml as U } from "@codemirror/lang-xml";
7
+ import { yaml as W } from "@codemirror/lang-yaml";
8
+ import { syntaxHighlighting as q, defaultHighlightStyle as F, indentOnInput as Q, bracketMatching as k, foldGutter as x } from "@codemirror/language";
9
+ import { linter as X } from "@codemirror/lint";
10
+ import { StateEffect as Y } from "@codemirror/state";
11
+ import { EditorView as h, highlightSpecialChars as Z, keymap as u, placeholder as _, lineNumbers as $ } from "@codemirror/view";
12
+ import { ScalarIcon as E } from "@scalar/components";
13
+ import { ref as ee, watch as g, onBeforeUnmount as te, toValue as t, computed as oe, h as C, render as M } from "vue";
14
+ import { customTheme as re } from "../themes/index.js";
15
+ import { variables as ne } from "./variables.js";
16
+ const a = (e) => "provider" in e && !!t(e.provider), ie = {
17
17
  key: "Mod-a",
18
18
  run: (e) => (e.dispatch({
19
19
  selection: { anchor: 0, head: e.state.doc.length },
20
20
  scrollIntoView: !1
21
21
  }), !0)
22
- }, ke = (e) => {
23
- const r = _(null);
22
+ }, xe = (e) => {
23
+ const n = ee(null);
24
24
  g(
25
25
  e.codeMirrorRef,
26
26
  () => {
27
27
  var o;
28
- (o = r.value) == null || o.destroy(), c();
28
+ (o = n.value) == null || o.destroy(), c();
29
29
  },
30
30
  { immediate: !0 }
31
- ), F(() => {
31
+ ), te(() => {
32
32
  var o;
33
- return (o = r.value) == null ? void 0 : o.destroy();
33
+ return (o = n.value) == null ? void 0 : o.destroy();
34
34
  });
35
35
  function c() {
36
36
  if (e.codeMirrorRef.value) {
37
- const o = u(e) ? t(e.provider) : null, h = x({
37
+ const o = a(e) ? t(e.provider) : null, m = w({
38
38
  ...f.value,
39
39
  provider: o
40
40
  });
41
- r.value = new a({
41
+ n.value = new h({
42
42
  parent: e.codeMirrorRef.value,
43
- extensions: h
44
- }), u(e) || l(t(e.content));
43
+ extensions: m
44
+ }), a(e) || l(t(e.content));
45
45
  }
46
46
  }
47
- const f = $(() => ({
47
+ const f = oe(() => ({
48
48
  onChange: e.onChange,
49
49
  onBlur: e.onBlur,
50
50
  onFocus: e.onFocus,
@@ -54,6 +54,7 @@ const u = (e) => "provider" in e && !!t(e.provider), ne = {
54
54
  readOnly: t(e.readOnly),
55
55
  lineNumbers: t(e.lineNumbers),
56
56
  withVariables: t(e.withVariables),
57
+ forceFoldGutter: t(e.forceFoldGutter),
57
58
  disableEnter: t(e.disableEnter),
58
59
  disableCloseBrackets: t(e.disableCloseBrackets),
59
60
  withoutTheme: t(e.withoutTheme),
@@ -62,21 +63,21 @@ const u = (e) => "provider" in e && !!t(e.provider), ne = {
62
63
  placeholder: t(e.placeholder)
63
64
  }));
64
65
  g(
65
- () => u(e) ? t(e.provider) : null,
66
+ () => a(e) ? t(e.provider) : null,
66
67
  () => {
67
68
  var o;
68
- u(e) && ((o = r.value) == null || o.destroy(), c());
69
+ a(e) && ((o = n.value) == null || o.destroy(), c());
69
70
  }
70
71
  ), g(
71
72
  f,
72
73
  () => {
73
- if (r.value) {
74
- const o = u(e) ? t(e.provider) : null, h = x({
74
+ if (n.value) {
75
+ const o = a(e) ? t(e.provider) : null, m = w({
75
76
  ...f.value,
76
77
  provider: o
77
78
  });
78
- r.value.dispatch({
79
- effects: q.reconfigure.of(h)
79
+ n.value.dispatch({
80
+ effects: Y.reconfigure.of(m)
80
81
  });
81
82
  } else
82
83
  return;
@@ -84,15 +85,15 @@ const u = (e) => "provider" in e && !!t(e.provider), ne = {
84
85
  { immediate: !0 }
85
86
  );
86
87
  const l = (o = "") => {
87
- r.value && r.value.state.doc.toString() !== o && r.value.dispatch({
88
+ n.value && n.value.state.doc.toString() !== o && n.value.dispatch({
88
89
  changes: {
89
90
  from: 0,
90
- to: r.value.state.doc.length,
91
+ to: n.value.state.doc.length,
91
92
  insert: o
92
93
  },
93
94
  selection: {
94
95
  anchor: Math.min(
95
- r.value.state.selection.main.anchor,
96
+ n.value.state.selection.main.anchor,
96
97
  o.length
97
98
  )
98
99
  }
@@ -101,44 +102,45 @@ const u = (e) => "provider" in e && !!t(e.provider), ne = {
101
102
  return g(
102
103
  () => t(e.content),
103
104
  () => {
104
- u(e) || l(t(e.content));
105
+ a(e) || l(t(e.content));
105
106
  },
106
107
  { immediate: !0 }
107
108
  ), {
108
109
  /** Replaces the current content with the given value. */
109
110
  setCodeMirrorContent: l,
110
111
  /** Codemirror instance */
111
- codeMirror: r
112
+ codeMirror: n
112
113
  };
113
- }, k = {
114
- html: V,
115
- json: z,
116
- yaml: D,
117
- css: K,
118
- xml: A
114
+ }, S = {
115
+ html: P,
116
+ json: J,
117
+ yaml: W,
118
+ css: G,
119
+ xml: U
119
120
  };
120
- function x({
121
+ function w({
121
122
  onChange: e,
122
- onBlur: r,
123
+ onBlur: n,
123
124
  onFocus: c,
124
125
  provider: f,
125
126
  language: l,
126
127
  classes: o = [],
127
- readOnly: h = !1,
128
- lineNumbers: E = !1,
129
- withVariables: C = !1,
130
- disableEnter: M = !1,
131
- disableCloseBrackets: S = !1,
132
- disableTabIndent: T = !1,
133
- withoutTheme: w = !1,
134
- lint: N = !1,
135
- additionalExtensions: H = [],
136
- placeholder: p
128
+ readOnly: m = !1,
129
+ lineNumbers: T = !1,
130
+ withVariables: N = !1,
131
+ forceFoldGutter: p = !1,
132
+ disableEnter: O = !1,
133
+ disableCloseBrackets: H = !1,
134
+ disableTabIndent: I = !1,
135
+ withoutTheme: L = !1,
136
+ lint: R = !1,
137
+ additionalExtensions: j = [],
138
+ placeholder: v
137
139
  }) {
138
- const n = [
139
- Q(),
140
- P(G, { fallback: !0 }),
141
- a.theme({
140
+ const r = [
141
+ Z(),
142
+ q(F, { fallback: !0 }),
143
+ h.theme({
142
144
  ".cm-line": {
143
145
  lineHeight: "20px",
144
146
  padding: "0 2px 0 4px"
@@ -164,29 +166,29 @@ function x({
164
166
  }
165
167
  }),
166
168
  // Listen to updates
167
- a.updateListener.of((s) => {
169
+ h.updateListener.of((s) => {
168
170
  s.docChanged && (e == null || e(s.state.doc.toString()));
169
171
  }),
170
- a.domEventHandlers({
172
+ h.domEventHandlers({
171
173
  blur: (s, i) => {
172
- r == null || r(i.state.doc.toString());
174
+ n == null || n(i.state.doc.toString());
173
175
  },
174
176
  focus: (s, i) => {
175
177
  c == null || c(i.state.doc.toString());
176
178
  }
177
179
  }),
178
180
  // Add Classes
179
- a.editorAttributes.of({ class: o.join(" ") }),
180
- ...H
181
+ h.editorAttributes.of({ class: o.join(" ") }),
182
+ ...j
181
183
  ];
182
- if (f && n.push(f), w || n.push(oe), h ? n.push(a.editable.of(!1)) : (n.push(
183
- J(),
184
- y(),
185
- I(),
186
- d.of([...O, ne]),
187
- y()
188
- ), S || n.push(j(), d.of([...B])), T ? n.push(
189
- d.of([
184
+ if (f && r.push(f), L || r.push(re), m ? r.push(h.editable.of(!1)) : (r.push(
185
+ Q(),
186
+ k(),
187
+ B(),
188
+ u.of([...D, ie]),
189
+ k()
190
+ ), H || r.push(z(), u.of([...K])), I ? r.push(
191
+ u.of([
190
192
  {
191
193
  key: "Tab",
192
194
  run: () => !1,
@@ -195,39 +197,50 @@ function x({
195
197
  // Prevent default Shift+Tab behavior
196
198
  }
197
199
  ])
198
- ) : n.push(d.of([L]))), p && n.push(X(p)), E && n.push(Y()), l && k[l] && n.push(
199
- k[l](),
200
- U({
200
+ ) : r.push(u.of([V]))), v && r.push(_(v)), T && r.push($()), p && r.push(
201
+ x({
202
+ markerDOM: (s) => {
203
+ const i = document.createElement("div");
204
+ i.classList.add("cm-foldMarker");
205
+ const d = C(E, {
206
+ icon: s ? "ChevronDown" : "ChevronRight",
207
+ size: "xs"
208
+ });
209
+ return M(d, i), i;
210
+ }
211
+ })
212
+ ), l && S[l] && (r.push(S[l]()), p || r.push(
213
+ x({
201
214
  markerDOM: (s) => {
202
215
  const i = document.createElement("div");
203
216
  i.classList.add("cm-foldMarker");
204
- const m = ee(Z, {
217
+ const d = C(E, {
205
218
  icon: s ? "ChevronDown" : "ChevronRight",
206
219
  size: "xs"
207
220
  });
208
- return te(m, i), i;
221
+ return M(d, i), i;
209
222
  }
210
223
  })
211
- ), N && l === "json") {
212
- const s = W((i) => {
213
- const m = [], b = i.state.doc.toString();
224
+ )), R && l === "json") {
225
+ const s = X((i) => {
226
+ const d = [], b = i.state.doc.toString();
214
227
  if (b.trim())
215
228
  try {
216
229
  JSON.parse(b);
217
- } catch (v) {
218
- v instanceof Error && m.push({
230
+ } catch (y) {
231
+ y instanceof Error && d.push({
219
232
  from: 0,
220
233
  to: i.state.doc.length,
221
234
  severity: "error",
222
- message: v.message
235
+ message: y.message
223
236
  });
224
237
  }
225
- return m;
238
+ return d;
226
239
  });
227
- n.push(s);
240
+ r.push(s);
228
241
  }
229
- return C && n.push(re()), M ? n.push(
230
- d.of([
242
+ return N && r.push(ne()), O ? r.push(
243
+ u.of([
231
244
  {
232
245
  key: "Enter",
233
246
  run: () => !0
@@ -242,15 +255,15 @@ function x({
242
255
  run: () => !0
243
256
  }
244
257
  ])
245
- ) : n.push(
246
- d.of([
258
+ ) : r.push(
259
+ u.of([
247
260
  {
248
261
  key: "Enter",
249
- run: R
262
+ run: A
250
263
  }
251
264
  ])
252
- ), n;
265
+ ), r;
253
266
  }
254
267
  export {
255
- ke as useCodeMirror
268
+ xe as useCodeMirror
256
269
  };
@@ -49,7 +49,7 @@ const c = r({
49
49
  },
50
50
  {
51
51
  tag: [a.number],
52
- color: "var(--scalar-color-blue)"
52
+ color: "var(--scalar-color-orange)"
53
53
  },
54
54
  {
55
55
  tag: [a.name, a.quote],
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "vue",
17
17
  "vue3"
18
18
  ],
19
- "version": "0.11.38",
19
+ "version": "0.11.40",
20
20
  "engines": {
21
21
  "node": ">=18"
22
22
  },
@@ -53,12 +53,12 @@
53
53
  "@uiw/codemirror-themes": "^4.21.21",
54
54
  "codemirror": "^6.0.0",
55
55
  "vue": "^3.5.12",
56
- "@scalar/components": "0.12.71"
56
+ "@scalar/components": "0.12.73"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@vitejs/plugin-vue": "^5.0.4",
60
60
  "@vitest/coverage-v8": "^1.6.0",
61
- "vite": "^5.4.9",
61
+ "vite": "^5.4.10",
62
62
  "vitest": "^1.6.0",
63
63
  "vue": "^3.5.12",
64
64
  "y-codemirror.next": "^0.3.2",