@sanity/code-input 7.2.4 → 7.2.5
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/dist/CodeMirrorProxy.js +446 -0
- package/dist/CodeMirrorProxy.js.map +1 -0
- package/dist/CodeModeContext.js +5 -0
- package/dist/CodeModeContext.js.map +1 -0
- package/dist/index.js +665 -8
- package/dist/index.js.map +1 -1
- package/package.json +5 -6
- package/dist/_chunks-es/CodeMirrorProxy.js +0 -511
- package/dist/_chunks-es/CodeMirrorProxy.js.map +0 -1
- package/dist/_chunks-es/index.js +0 -589
- package/dist/_chunks-es/index.js.map +0 -1
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { t as CodeInputConfigContext } from "./CodeModeContext.js";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import { rem, useRootTheme, useTheme } from "@sanity/ui";
|
|
4
|
+
import { useContext, useEffect, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { Decoration, EditorView, lineNumbers } from "@codemirror/view";
|
|
7
|
+
import CodeMirror from "@uiw/react-codemirror";
|
|
8
|
+
import { StreamLanguage } from "@codemirror/language";
|
|
9
|
+
import { StateEffect, StateField } from "@codemirror/state";
|
|
10
|
+
import { rgba } from "@sanity/ui/theme";
|
|
11
|
+
import { tags } from "@lezer/highlight";
|
|
12
|
+
import { createTheme } from "@uiw/codemirror-themes";
|
|
13
|
+
const defaultCodeModes = [
|
|
14
|
+
{
|
|
15
|
+
name: "groq",
|
|
16
|
+
loader: () => import("@sanity/lezer-groq").then(({ groq }) => groq())
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "javascript",
|
|
20
|
+
loader: () => import("@codemirror/lang-javascript").then(({ javascript }) => javascript({ jsx: !1 }))
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "jsx",
|
|
24
|
+
loader: () => import("@codemirror/lang-javascript").then(({ javascript }) => javascript({ jsx: !0 }))
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "typescript",
|
|
28
|
+
loader: () => import("@codemirror/lang-javascript").then(({ javascript }) => javascript({
|
|
29
|
+
jsx: !1,
|
|
30
|
+
typescript: !0
|
|
31
|
+
}))
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "tsx",
|
|
35
|
+
loader: () => import("@codemirror/lang-javascript").then(({ javascript }) => javascript({
|
|
36
|
+
jsx: !0,
|
|
37
|
+
typescript: !0
|
|
38
|
+
}))
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "php",
|
|
42
|
+
loader: () => import("@codemirror/lang-php").then(({ php }) => php())
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "sql",
|
|
46
|
+
loader: () => import("@codemirror/lang-sql").then(({ sql }) => sql())
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "mysql",
|
|
50
|
+
loader: () => import("@codemirror/lang-sql").then(({ sql, MySQL }) => sql({ dialect: MySQL }))
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "json",
|
|
54
|
+
loader: () => import("@codemirror/lang-json").then(({ json }) => json())
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "markdown",
|
|
58
|
+
loader: () => import("@codemirror/lang-markdown").then(({ markdown }) => markdown())
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "java",
|
|
62
|
+
loader: () => import("@codemirror/lang-java").then(({ java }) => java())
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "html",
|
|
66
|
+
loader: () => import("@codemirror/lang-html").then(({ html }) => html())
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "csharp",
|
|
70
|
+
loader: () => import("@codemirror/legacy-modes/mode/clike").then(({ csharp }) => StreamLanguage.define(csharp))
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: "sh",
|
|
74
|
+
loader: () => import("@codemirror/legacy-modes/mode/shell").then(({ shell }) => StreamLanguage.define(shell))
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: "css",
|
|
78
|
+
loader: () => import("@codemirror/legacy-modes/mode/css").then(({ css }) => StreamLanguage.define(css))
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "scss",
|
|
82
|
+
loader: () => import("@codemirror/legacy-modes/mode/css").then(({ css }) => StreamLanguage.define(css))
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "sass",
|
|
86
|
+
loader: () => import("@codemirror/legacy-modes/mode/sass").then(({ sass }) => StreamLanguage.define(sass))
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "ruby",
|
|
90
|
+
loader: () => import("@codemirror/legacy-modes/mode/ruby").then(({ ruby }) => StreamLanguage.define(ruby))
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "python",
|
|
94
|
+
loader: () => import("@codemirror/legacy-modes/mode/python").then(({ python }) => StreamLanguage.define(python))
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "xml",
|
|
98
|
+
loader: () => import("@codemirror/legacy-modes/mode/xml").then(({ xml }) => StreamLanguage.define(xml))
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "yaml",
|
|
102
|
+
loader: () => import("@codemirror/legacy-modes/mode/yaml").then(({ yaml }) => StreamLanguage.define(yaml))
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "golang",
|
|
106
|
+
loader: () => import("@codemirror/legacy-modes/mode/go").then(({ go }) => StreamLanguage.define(go))
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "text",
|
|
110
|
+
loader: () => void 0
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "batch",
|
|
114
|
+
loader: () => void 0
|
|
115
|
+
}
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* `@sanity/ui@v2.9` introduced two new tones; "neutral" and "suggest",
|
|
119
|
+
* which maps to "default" and "primary" respectively in the old theme.
|
|
120
|
+
* This function returns the "backwards compatible" tone value.
|
|
121
|
+
*
|
|
122
|
+
* @returns The tone value that is backwards compatible with the old theme.
|
|
123
|
+
* @internal
|
|
124
|
+
*/
|
|
125
|
+
function getBackwardsCompatibleTone(themeCtx) {
|
|
126
|
+
return themeCtx.tone !== "neutral" && themeCtx.tone !== "suggest" ? themeCtx.tone : themeCtx.tone === "neutral" ? "default" : "primary";
|
|
127
|
+
}
|
|
128
|
+
const highlightLineClass = "cm-highlight-line", addLineHighlight = StateEffect.define(), removeLineHighlight = StateEffect.define(), lineHighlightField = StateField.define({
|
|
129
|
+
create() {
|
|
130
|
+
return Decoration.none;
|
|
131
|
+
},
|
|
132
|
+
update(lines, tr) {
|
|
133
|
+
lines = lines.map(tr.changes);
|
|
134
|
+
for (let e of tr.effects) e.is(addLineHighlight) && (lines = lines.update({ add: [lineHighlightMark.range(e.value)] })), e.is(removeLineHighlight) && (lines = lines.update({ filter: (from) => from !== e.value }));
|
|
135
|
+
return lines;
|
|
136
|
+
},
|
|
137
|
+
toJSON(value, state) {
|
|
138
|
+
let highlightLines = [], iter = value.iter();
|
|
139
|
+
for (; iter.value;) {
|
|
140
|
+
let lineNumber = state.doc.lineAt(iter.from).number;
|
|
141
|
+
highlightLines.includes(lineNumber) || highlightLines.push(lineNumber), iter.next();
|
|
142
|
+
}
|
|
143
|
+
return highlightLines;
|
|
144
|
+
},
|
|
145
|
+
fromJSON(value, state) {
|
|
146
|
+
let lines = state.doc.lines, highlights = value.filter((line) => line <= lines).map((line) => lineHighlightMark.range(state.doc.line(line).from));
|
|
147
|
+
highlights.sort((a, b) => a.from - b.from);
|
|
148
|
+
try {
|
|
149
|
+
return Decoration.none.update({ add: highlights });
|
|
150
|
+
} catch (e) {
|
|
151
|
+
return console.error(e), Decoration.none;
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
provide: (f) => EditorView.decorations.from(f)
|
|
155
|
+
}), lineHighlightMark = Decoration.line({ class: highlightLineClass }), highlightState = { highlight: lineHighlightField };
|
|
156
|
+
function createCodeMirrorTheme(options) {
|
|
157
|
+
let { themeCtx } = options, fallbackTone = getBackwardsCompatibleTone(themeCtx), dark = { color: themeCtx.theme.color.dark[fallbackTone] }, light = { color: themeCtx.theme.color.light[fallbackTone] };
|
|
158
|
+
return EditorView.baseTheme({
|
|
159
|
+
".cm-lineNumbers": { cursor: "default" },
|
|
160
|
+
".cm-line.cm-line": { position: "relative" },
|
|
161
|
+
[`.${highlightLineClass}::before`]: {
|
|
162
|
+
position: "absolute",
|
|
163
|
+
top: 0,
|
|
164
|
+
bottom: 0,
|
|
165
|
+
left: 0,
|
|
166
|
+
right: 0,
|
|
167
|
+
zIndex: -3,
|
|
168
|
+
content: "''",
|
|
169
|
+
boxSizing: "border-box"
|
|
170
|
+
},
|
|
171
|
+
[`&dark .${highlightLineClass}::before`]: { background: rgba(dark.color.muted.caution.pressed.bg, .5) },
|
|
172
|
+
[`&light .${highlightLineClass}::before`]: { background: rgba(light.color.muted.caution.pressed.bg, .75) }
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
const highlightLine = (config) => {
|
|
176
|
+
let highlightTheme = createCodeMirrorTheme({ themeCtx: config.theme });
|
|
177
|
+
return [
|
|
178
|
+
lineHighlightField,
|
|
179
|
+
config.readOnly ? [] : lineNumbers({ domEventHandlers: { mousedown: (editorView, lineInfo) => {
|
|
180
|
+
let line = editorView.state.doc.lineAt(lineInfo.from), isHighlighted = !1;
|
|
181
|
+
return editorView.state.field(lineHighlightField).between(line.from, line.to, (_from, _to, value) => {
|
|
182
|
+
if (value) return isHighlighted = !0, !1;
|
|
183
|
+
}), isHighlighted ? editorView.dispatch({ effects: removeLineHighlight.of(line.from) }) : editorView.dispatch({ effects: addLineHighlight.of(line.from) }), config?.onHighlightChange && config.onHighlightChange(editorView.state.toJSON(highlightState).highlight), !0;
|
|
184
|
+
} } }),
|
|
185
|
+
highlightTheme
|
|
186
|
+
];
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Adds and removes highlights to the provided view using highlightLines
|
|
190
|
+
* @param view
|
|
191
|
+
* @param highlightLines
|
|
192
|
+
*/
|
|
193
|
+
function setHighlightedLines(view, highlightLines) {
|
|
194
|
+
let doc = view.state.doc, lines = doc.lines, allLineNumbers = Array.from({ length: lines }, (_x, i) => i + 1);
|
|
195
|
+
view.dispatch({ effects: allLineNumbers.map((lineNumber) => {
|
|
196
|
+
let line = doc.line(lineNumber);
|
|
197
|
+
return highlightLines?.includes(lineNumber) ? addLineHighlight.of(line.from) : removeLineHighlight.of(line.from);
|
|
198
|
+
}) });
|
|
199
|
+
}
|
|
200
|
+
function useThemeExtension() {
|
|
201
|
+
let $ = c(6), themeCtx = useRootTheme(), t0;
|
|
202
|
+
$[0] === themeCtx ? t0 = $[1] : (t0 = getBackwardsCompatibleTone(themeCtx), $[0] = themeCtx, $[1] = t0);
|
|
203
|
+
let fallbackTone = t0, t1 = themeCtx.theme.color.dark[fallbackTone], t2;
|
|
204
|
+
if ($[2] !== fallbackTone || $[3] !== t1 || $[4] !== themeCtx.theme.color.light) {
|
|
205
|
+
let dark = { color: t1 }, light = { color: themeCtx.theme.color.light[fallbackTone] };
|
|
206
|
+
t2 = EditorView.baseTheme({
|
|
207
|
+
"&.cm-editor": { height: "100%" },
|
|
208
|
+
"&.cm-editor.cm-focused": { outline: "none" },
|
|
209
|
+
"&.cm-editor.cm-focused .cm-matchingBracket": { backgroundColor: "transparent" },
|
|
210
|
+
"&.cm-editor.cm-focused .cm-nonmatchingBracket": { backgroundColor: "transparent" },
|
|
211
|
+
"&dark.cm-editor.cm-focused .cm-matchingBracket": { outline: `1px solid ${dark.color.base.border}` },
|
|
212
|
+
"&dark.cm-editor.cm-focused .cm-nonmatchingBracket": { outline: `1px solid ${dark.color.base.border}` },
|
|
213
|
+
"&light.cm-editor.cm-focused .cm-matchingBracket": { outline: `1px solid ${light.color.base.border}` },
|
|
214
|
+
"&light.cm-editor.cm-focused .cm-nonmatchingBracket": { outline: `1px solid ${light.color.base.border}` },
|
|
215
|
+
"& .cm-lineNumbers .cm-gutterElement": {
|
|
216
|
+
minWidth: "32px !important",
|
|
217
|
+
padding: "0 8px !important"
|
|
218
|
+
},
|
|
219
|
+
"& .cm-gutter.cm-foldGutter": { width: "0px !important" },
|
|
220
|
+
"&dark .cm-gutters": {
|
|
221
|
+
color: `${rgba(dark.color.card.enabled.code.fg, .5)} !important`,
|
|
222
|
+
borderRight: `1px solid ${rgba(dark.color.base.border, .5)}`
|
|
223
|
+
},
|
|
224
|
+
"&light .cm-gutters": {
|
|
225
|
+
color: `${rgba(light.color.card.enabled.code.fg, .5)} !important`,
|
|
226
|
+
borderRight: `1px solid ${rgba(light.color.base.border, .5)}`
|
|
227
|
+
}
|
|
228
|
+
}), $[2] = fallbackTone, $[3] = t1, $[4] = themeCtx.theme.color.light, $[5] = t2;
|
|
229
|
+
} else t2 = $[5];
|
|
230
|
+
return t2;
|
|
231
|
+
}
|
|
232
|
+
function useCodeMirrorTheme() {
|
|
233
|
+
let $ = c(19), theme = useTheme(), { code: codeFont } = theme.sanity.fonts, { base, card, dark, syntax } = theme.sanity.color, t0 = dark ? "dark" : "light", t1;
|
|
234
|
+
return $[0] !== base.focusRing || $[1] !== card.disabled.bg || $[2] !== card.disabled.code.fg || $[3] !== card.enabled.bg || $[4] !== card.enabled.code.fg || $[5] !== card.enabled.fg || $[6] !== codeFont.family || $[7] !== syntax.attrName || $[8] !== syntax.boolean || $[9] !== syntax.className || $[10] !== syntax.comment || $[11] !== syntax.function || $[12] !== syntax.keyword || $[13] !== syntax.number || $[14] !== syntax.operator || $[15] !== syntax.property || $[16] !== syntax.string || $[17] !== t0 ? (t1 = createTheme({
|
|
235
|
+
theme: t0,
|
|
236
|
+
settings: {
|
|
237
|
+
background: card.enabled.bg,
|
|
238
|
+
foreground: card.enabled.code.fg,
|
|
239
|
+
lineHighlight: card.enabled.bg,
|
|
240
|
+
fontFamily: codeFont.family,
|
|
241
|
+
caret: base.focusRing,
|
|
242
|
+
selection: rgba(base.focusRing, .2),
|
|
243
|
+
selectionMatch: rgba(base.focusRing, .4),
|
|
244
|
+
gutterBackground: card.disabled.bg,
|
|
245
|
+
gutterForeground: card.disabled.code.fg,
|
|
246
|
+
gutterActiveForeground: card.enabled.fg
|
|
247
|
+
},
|
|
248
|
+
styles: [
|
|
249
|
+
{
|
|
250
|
+
tag: [
|
|
251
|
+
tags.heading,
|
|
252
|
+
tags.heading2,
|
|
253
|
+
tags.heading3,
|
|
254
|
+
tags.heading4,
|
|
255
|
+
tags.heading5,
|
|
256
|
+
tags.heading6
|
|
257
|
+
],
|
|
258
|
+
color: card.enabled.fg
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
tag: tags.angleBracket,
|
|
262
|
+
color: card.enabled.code.fg
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
tag: tags.atom,
|
|
266
|
+
color: syntax.keyword
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
tag: tags.attributeName,
|
|
270
|
+
color: syntax.attrName
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
tag: tags.bool,
|
|
274
|
+
color: syntax.boolean
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
tag: tags.bracket,
|
|
278
|
+
color: card.enabled.code.fg
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
tag: tags.className,
|
|
282
|
+
color: syntax.className
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
tag: tags.comment,
|
|
286
|
+
color: syntax.comment
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
tag: tags.definition(tags.typeName),
|
|
290
|
+
color: syntax.function
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
tag: [
|
|
294
|
+
tags.definition(tags.variableName),
|
|
295
|
+
tags.function(tags.variableName),
|
|
296
|
+
tags.className,
|
|
297
|
+
tags.attributeName
|
|
298
|
+
],
|
|
299
|
+
color: syntax.function
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
tag: [tags.function(tags.propertyName), tags.propertyName],
|
|
303
|
+
color: syntax.function
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
tag: tags.keyword,
|
|
307
|
+
color: syntax.keyword
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
tag: tags.null,
|
|
311
|
+
color: syntax.number
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
tag: tags.number,
|
|
315
|
+
color: syntax.number
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
tag: tags.meta,
|
|
319
|
+
color: card.enabled.code.fg
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
tag: tags.operator,
|
|
323
|
+
color: syntax.operator
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
tag: tags.propertyName,
|
|
327
|
+
color: syntax.property
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
tag: [tags.string, tags.special(tags.brace)],
|
|
331
|
+
color: syntax.string
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
tag: tags.tagName,
|
|
335
|
+
color: syntax.className
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
tag: tags.typeName,
|
|
339
|
+
color: syntax.keyword
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}), $[0] = base.focusRing, $[1] = card.disabled.bg, $[2] = card.disabled.code.fg, $[3] = card.enabled.bg, $[4] = card.enabled.code.fg, $[5] = card.enabled.fg, $[6] = codeFont.family, $[7] = syntax.attrName, $[8] = syntax.boolean, $[9] = syntax.className, $[10] = syntax.comment, $[11] = syntax.function, $[12] = syntax.keyword, $[13] = syntax.number, $[14] = syntax.operator, $[15] = syntax.property, $[16] = syntax.string, $[17] = t0, $[18] = t1) : t1 = $[18], t1;
|
|
343
|
+
}
|
|
344
|
+
function useFontSizeExtension(props) {
|
|
345
|
+
let $ = c(3), { fontSize: fontSizeProp } = props, { code: codeFont } = useTheme().sanity.fonts, { fontSize, lineHeight } = codeFont.sizes[fontSizeProp] || codeFont.sizes[2], t0;
|
|
346
|
+
return $[0] !== fontSize || $[1] !== lineHeight ? (t0 = EditorView.baseTheme({
|
|
347
|
+
"&": { fontSize: rem(fontSize) },
|
|
348
|
+
"& .cm-scroller": { lineHeight: `${lineHeight / fontSize} !important` }
|
|
349
|
+
}), $[0] = fontSize, $[1] = lineHeight, $[2] = t0) : t0 = $[2], t0;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* CodeMirrorProxy is a wrapper component around CodeMirror that we lazy load to reduce initial bundle size.
|
|
353
|
+
*
|
|
354
|
+
* It is also responsible for integrating any CodeMirror extensions.
|
|
355
|
+
*/
|
|
356
|
+
function CodeMirrorProxy(props) {
|
|
357
|
+
let $ = c(42), basicSetupProp, codeMirrorProps, highlightLines, languageMode, onHighlightChange, readOnly, ref, value;
|
|
358
|
+
$[0] === props ? (basicSetupProp = $[1], codeMirrorProps = $[2], highlightLines = $[3], languageMode = $[4], onHighlightChange = $[5], readOnly = $[6], ref = $[7], value = $[8]) : ({basicSetup: basicSetupProp, highlightLines, languageMode, onHighlightChange, readOnly, value, ref, ...codeMirrorProps} = props, $[0] = props, $[1] = basicSetupProp, $[2] = codeMirrorProps, $[3] = highlightLines, $[4] = languageMode, $[5] = onHighlightChange, $[6] = readOnly, $[7] = ref, $[8] = value);
|
|
359
|
+
let themeCtx = useRootTheme(), codeMirrorTheme = useCodeMirrorTheme(), [editorView, setEditorView] = useState(void 0), themeExtension = useThemeExtension(), t0;
|
|
360
|
+
$[9] === Symbol.for("react.memo_cache_sentinel") ? (t0 = { fontSize: 1 }, $[9] = t0) : t0 = $[9];
|
|
361
|
+
let fontSizeExtension = useFontSizeExtension(t0), languageExtension = useLanguageExtension(languageMode), t1;
|
|
362
|
+
$[10] !== onHighlightChange || $[11] !== readOnly || $[12] !== themeCtx ? (t1 = highlightLine({
|
|
363
|
+
onHighlightChange,
|
|
364
|
+
readOnly,
|
|
365
|
+
theme: themeCtx
|
|
366
|
+
}), $[10] = onHighlightChange, $[11] = readOnly, $[12] = themeCtx, $[13] = t1) : t1 = $[13];
|
|
367
|
+
let highlightLineExtension = t1, t2;
|
|
368
|
+
bb0: {
|
|
369
|
+
let t3;
|
|
370
|
+
$[14] !== fontSizeExtension || $[15] !== highlightLineExtension || $[16] !== themeExtension ? (t3 = [
|
|
371
|
+
themeExtension,
|
|
372
|
+
fontSizeExtension,
|
|
373
|
+
highlightLineExtension,
|
|
374
|
+
EditorView.lineWrapping
|
|
375
|
+
], $[14] = fontSizeExtension, $[15] = highlightLineExtension, $[16] = themeExtension, $[17] = t3) : t3 = $[17];
|
|
376
|
+
let baseExtensions = t3;
|
|
377
|
+
if (languageExtension) {
|
|
378
|
+
let t4;
|
|
379
|
+
$[18] !== baseExtensions || $[19] !== languageExtension ? (t4 = [...baseExtensions, languageExtension], $[18] = baseExtensions, $[19] = languageExtension, $[20] = t4) : t4 = $[20], t2 = t4;
|
|
380
|
+
break bb0;
|
|
381
|
+
}
|
|
382
|
+
t2 = baseExtensions;
|
|
383
|
+
}
|
|
384
|
+
let extensions = t2, t3;
|
|
385
|
+
$[21] !== editorView || $[22] !== highlightLines ? (t3 = () => {
|
|
386
|
+
editorView && setHighlightedLines(editorView, highlightLines ?? []);
|
|
387
|
+
}, $[21] = editorView, $[22] = highlightLines, $[23] = t3) : t3 = $[23];
|
|
388
|
+
let t4;
|
|
389
|
+
$[24] !== editorView || $[25] !== highlightLines || $[26] !== value ? (t4 = [
|
|
390
|
+
editorView,
|
|
391
|
+
highlightLines,
|
|
392
|
+
value
|
|
393
|
+
], $[24] = editorView, $[25] = highlightLines, $[26] = value, $[27] = t4) : t4 = $[27], useEffect(t3, t4);
|
|
394
|
+
let t5;
|
|
395
|
+
$[28] !== highlightLines || $[29] !== value ? (t5 = () => ({
|
|
396
|
+
json: {
|
|
397
|
+
doc: value ?? "",
|
|
398
|
+
selection: {
|
|
399
|
+
main: 0,
|
|
400
|
+
ranges: [{
|
|
401
|
+
anchor: 0,
|
|
402
|
+
head: 0
|
|
403
|
+
}]
|
|
404
|
+
},
|
|
405
|
+
highlight: highlightLines ?? []
|
|
406
|
+
},
|
|
407
|
+
fields: highlightState
|
|
408
|
+
}), $[28] = highlightLines, $[29] = value, $[30] = t5) : t5 = $[30];
|
|
409
|
+
let [initialState] = useState(t5), t6;
|
|
410
|
+
$[31] === Symbol.for("react.memo_cache_sentinel") ? (t6 = (view) => {
|
|
411
|
+
setEditorView(view);
|
|
412
|
+
}, $[31] = t6) : t6 = $[31];
|
|
413
|
+
let handleCreateEditor = t6, t7;
|
|
414
|
+
$[32] === basicSetupProp ? t7 = $[33] : (t7 = basicSetupProp ?? { highlightActiveLine: !1 }, $[32] = basicSetupProp, $[33] = t7);
|
|
415
|
+
let basicSetup = t7, t8;
|
|
416
|
+
return $[34] !== basicSetup || $[35] !== codeMirrorProps || $[36] !== codeMirrorTheme || $[37] !== extensions || $[38] !== initialState || $[39] !== ref || $[40] !== value ? (t8 = /* @__PURE__ */ jsx(CodeMirror, {
|
|
417
|
+
...codeMirrorProps,
|
|
418
|
+
value,
|
|
419
|
+
ref,
|
|
420
|
+
extensions,
|
|
421
|
+
theme: codeMirrorTheme,
|
|
422
|
+
onCreateEditor: handleCreateEditor,
|
|
423
|
+
initialState,
|
|
424
|
+
basicSetup
|
|
425
|
+
}), $[34] = basicSetup, $[35] = codeMirrorProps, $[36] = codeMirrorTheme, $[37] = extensions, $[38] = initialState, $[39] = ref, $[40] = value, $[41] = t8) : t8 = $[41], t8;
|
|
426
|
+
}
|
|
427
|
+
function useLanguageExtension(mode) {
|
|
428
|
+
let $ = c(6), codeConfig = useContext(CodeInputConfigContext), [languageExtension, setLanguageExtension] = useState(), t0;
|
|
429
|
+
$[0] !== codeConfig?.codeModes || $[1] !== mode ? (t0 = () => {
|
|
430
|
+
let codeMode = [...codeConfig?.codeModes ?? [], ...defaultCodeModes].find((m) => m.name === mode);
|
|
431
|
+
codeMode?.loader || console.warn(`Found no codeMode for language mode ${mode}, syntax highlighting will be disabled.`);
|
|
432
|
+
let active = !0;
|
|
433
|
+
return Promise.resolve(codeMode?.loader()).then((extension) => {
|
|
434
|
+
active && setLanguageExtension(extension);
|
|
435
|
+
}).catch((e) => {
|
|
436
|
+
console.error(`Failed to load language mode ${mode}`, e), active && setLanguageExtension(void 0);
|
|
437
|
+
}), () => {
|
|
438
|
+
active = !1;
|
|
439
|
+
};
|
|
440
|
+
}, $[0] = codeConfig?.codeModes, $[1] = mode, $[2] = t0) : t0 = $[2];
|
|
441
|
+
let t1;
|
|
442
|
+
return $[3] !== codeConfig || $[4] !== mode ? (t1 = [mode, codeConfig], $[3] = codeConfig, $[4] = mode, $[5] = t1) : t1 = $[5], useEffect(t0, t1), languageExtension;
|
|
443
|
+
}
|
|
444
|
+
export { CodeMirrorProxy as default };
|
|
445
|
+
|
|
446
|
+
//# sourceMappingURL=CodeMirrorProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeMirrorProxy.js","names":["StreamLanguage","Extension","CodeMode","name","loader","ModeLoader","Promise","defaultCodeModes","then","groq","javascript","jsx","typescript","php","sql","MySQL","dialect","json","markdown","java","html","csharp","define","shell","css","sass","ruby","python","xml","yaml","go","undefined","ThemeContextValue","getBackwardsCompatibleTone","themeCtx","Exclude","tone","Extension","StateEffect","StateField","Decoration","DecorationSet","EditorView","lineNumbers","ThemeContextValue","rgba","getBackwardsCompatibleTone","highlightLineClass","addLineHighlight","define","removeLineHighlight","lineHighlightField","create","none","update","lines","tr","map","changes","e","effects","is","add","lineHighlightMark","range","value","filter","from","toJSON","state","highlightLines","iter","lineNumber","doc","lineAt","number","includes","push","next","fromJSON","highlights","line","sort","a","b","console","error","provide","f","decorations","class","highlightState","prop","highlight","HighlightLineConfig","onHighlightChange","readOnly","theme","createCodeMirrorTheme","options","themeCtx","fallbackTone","dark","color","light","baseTheme","cursor","position","top","bottom","left","right","zIndex","content","boxSizing","background","muted","caution","pressed","bg","highlightLine","config","highlightTheme","domEventHandlers","mousedown","editorView","lineInfo","isHighlighted","field","between","to","_from","_to","undefined","dispatch","of","setHighlightedLines","view","allLineNumbers","Array","length","_x","i","Extension","EditorView","useRootTheme","rgba","useMemo","getBackwardsCompatibleTone","useThemeExtension","$","_c","themeCtx","t0","fallbackTone","t1","theme","color","dark","t2","light","baseTheme","height","outline","backgroundColor","base","border","minWidth","padding","width","card","enabled","code","fg","borderRight","Extension","tags","t","useTheme","rgba","createTheme","useMemo","useCodeMirrorTheme","$","_c","theme","code","codeFont","sanity","fonts","base","card","dark","syntax","color","t0","t1","focusRing","disabled","bg","fg","enabled","family","attrName","boolean","className","comment","function","keyword","number","operator","property","string","settings","background","foreground","lineHighlight","fontFamily","caret","selection","selectionMatch","gutterBackground","gutterForeground","gutterActiveForeground","styles","tag","heading","heading2","heading3","heading4","heading5","heading6","angleBracket","atom","attributeName","bool","bracket","definition","typeName","variableName","propertyName","null","meta","special","brace","tagName","Extension","EditorView","rem","useTheme","useMemo","useFontSizeExtension","props","$","_c","fontSize","fontSizeProp","theme","code","codeFont","sanity","fonts","lineHeight","sizes","t0","baseTheme","Extension","EditorView","useRootTheme","CodeMirror","ReactCodeMirrorProps","ReactCodeMirrorRef","Ref","useCallback","useContext","useEffect","useMemo","useState","CodeInputConfigContext","defaultCodeModes","highlightLine","highlightState","setHighlightedLines","useThemeExtension","useCodeMirrorTheme","useFontSizeExtension","CodeMirrorProps","highlightLines","languageMode","onHighlightChange","lines","CodeMirrorProxy","props","$","_c","basicSetupProp","codeMirrorProps","readOnly","ref","value","basicSetup","themeCtx","codeMirrorTheme","editorView","setEditorView","undefined","themeExtension","t0","Symbol","for","fontSize","fontSizeExtension","languageExtension","useLanguageExtension","t1","theme","highlightLineExtension","t2","bb0","t3","lineWrapping","baseExtensions","t4","extensions","t5","json","doc","selection","main","ranges","anchor","head","highlight","fields","initialState","t6","view","handleCreateEditor","t7","highlightActiveLine","t8","mode","codeConfig","setLanguageExtension","codeModes","customModes","modes","codeMode","find","m","name","loader","console","warn","active","Promise","resolve","then","extension","catch","e","error"],"sources":["../src/codemirror/defaultCodeModes.ts","../src/codemirror/extensions/backwardsCompatibleTone.ts","../src/codemirror/extensions/highlightLineExtension.ts","../src/codemirror/extensions/theme.ts","../src/codemirror/extensions/useCodeMirrorTheme.ts","../src/codemirror/extensions/useFontSize.ts","../src/codemirror/CodeMirrorProxy.tsx"],"sourcesContent":["import {StreamLanguage} from '@codemirror/language'\nimport type {Extension} from '@codemirror/state'\n\nexport interface CodeMode {\n name: string\n loader: ModeLoader\n}\nexport type ModeLoader = () => Promise<Extension | undefined> | Extension | undefined\n\nexport const defaultCodeModes: CodeMode[] = [\n {\n name: 'groq',\n loader: () => import('@sanity/lezer-groq').then(({groq}) => groq()),\n },\n {\n name: 'javascript',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) => javascript({jsx: false})),\n },\n {\n name: 'jsx',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) => javascript({jsx: true})),\n },\n {\n name: 'typescript',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) =>\n javascript({jsx: false, typescript: true}),\n ),\n },\n {\n name: 'tsx',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) =>\n javascript({jsx: true, typescript: true}),\n ),\n },\n {name: 'php', loader: () => import('@codemirror/lang-php').then(({php}) => php())},\n {name: 'sql', loader: () => import('@codemirror/lang-sql').then(({sql}) => sql())},\n {\n name: 'mysql',\n loader: () => import('@codemirror/lang-sql').then(({sql, MySQL}) => sql({dialect: MySQL})),\n },\n {name: 'json', loader: () => import('@codemirror/lang-json').then(({json}) => json())},\n {\n name: 'markdown',\n loader: () => import('@codemirror/lang-markdown').then(({markdown}) => markdown()),\n },\n {name: 'java', loader: () => import('@codemirror/lang-java').then(({java}) => java())},\n {name: 'html', loader: () => import('@codemirror/lang-html').then(({html}) => html())},\n {\n name: 'csharp',\n loader: () =>\n import('@codemirror/legacy-modes/mode/clike').then(({csharp}) =>\n StreamLanguage.define(csharp),\n ),\n },\n {\n name: 'sh',\n loader: () =>\n import('@codemirror/legacy-modes/mode/shell').then(({shell}) => StreamLanguage.define(shell)),\n },\n {\n name: 'css',\n loader: () =>\n import('@codemirror/legacy-modes/mode/css').then(({css}) => StreamLanguage.define(css)),\n },\n {\n name: 'scss',\n loader: () =>\n import('@codemirror/legacy-modes/mode/css').then(({css}) => StreamLanguage.define(css)),\n },\n {\n name: 'sass',\n loader: () =>\n import('@codemirror/legacy-modes/mode/sass').then(({sass}) => StreamLanguage.define(sass)),\n },\n {\n name: 'ruby',\n loader: () =>\n import('@codemirror/legacy-modes/mode/ruby').then(({ruby}) => StreamLanguage.define(ruby)),\n },\n {\n name: 'python',\n loader: () =>\n import('@codemirror/legacy-modes/mode/python').then(({python}) =>\n StreamLanguage.define(python),\n ),\n },\n {\n name: 'xml',\n loader: () =>\n import('@codemirror/legacy-modes/mode/xml').then(({xml}) => StreamLanguage.define(xml)),\n },\n {\n name: 'yaml',\n loader: () =>\n import('@codemirror/legacy-modes/mode/yaml').then(({yaml}) => StreamLanguage.define(yaml)),\n },\n {\n name: 'golang',\n loader: () =>\n import('@codemirror/legacy-modes/mode/go').then(({go}) => StreamLanguage.define(go)),\n },\n {name: 'text', loader: () => undefined},\n {name: 'batch', loader: () => undefined},\n]\n","import type {ThemeContextValue} from '@sanity/ui'\n\n/**\n * `@sanity/ui@v2.9` introduced two new tones; \"neutral\" and \"suggest\",\n * which maps to \"default\" and \"primary\" respectively in the old theme.\n * This function returns the \"backwards compatible\" tone value.\n *\n * @returns The tone value that is backwards compatible with the old theme.\n * @internal\n */\nexport function getBackwardsCompatibleTone(\n themeCtx: ThemeContextValue,\n): Exclude<ThemeContextValue['tone'], 'neutral' | 'suggest'> {\n if (themeCtx.tone !== 'neutral' && themeCtx.tone !== 'suggest') {\n return themeCtx.tone\n }\n\n return themeCtx.tone === 'neutral' ? 'default' : 'primary'\n}\n","import {type Extension, StateEffect, StateField} from '@codemirror/state'\nimport {Decoration, type DecorationSet, EditorView, lineNumbers} from '@codemirror/view'\nimport type {ThemeContextValue} from '@sanity/ui'\nimport {rgba} from '@sanity/ui/theme'\n\nimport {getBackwardsCompatibleTone} from './backwardsCompatibleTone'\n\nconst highlightLineClass = 'cm-highlight-line'\n\nconst addLineHighlight = StateEffect.define<number>()\nconst removeLineHighlight = StateEffect.define<number>()\n\nconst lineHighlightField = StateField.define({\n create() {\n return Decoration.none\n },\n update(lines, tr) {\n lines = lines.map(tr.changes)\n for (const e of tr.effects) {\n if (e.is(addLineHighlight)) {\n lines = lines.update({add: [lineHighlightMark.range(e.value)]})\n }\n if (e.is(removeLineHighlight)) {\n lines = lines.update({\n filter: (from) => {\n // removeLineHighlight value is lineStart for the highlight, so keep other effects\n return from !== e.value\n },\n })\n }\n }\n return lines\n },\n toJSON(value, state) {\n const highlightLines: number[] = []\n const iter = value.iter()\n while (iter.value) {\n const lineNumber = state.doc.lineAt(iter.from).number\n if (!highlightLines.includes(lineNumber)) {\n highlightLines.push(lineNumber)\n }\n iter.next()\n }\n return highlightLines\n },\n fromJSON(value: number[], state) {\n const lines = state.doc.lines\n const highlights = value\n .filter((line) => line <= lines) // one-indexed\n .map((line) => lineHighlightMark.range(state.doc.line(line).from))\n highlights.sort((a, b) => a.from - b.from)\n try {\n return Decoration.none.update({\n add: highlights,\n })\n } catch (e) {\n console.error(e)\n return Decoration.none\n }\n },\n provide: (f) => EditorView.decorations.from(f),\n})\n\nconst lineHighlightMark = Decoration.line({\n class: highlightLineClass,\n})\n\nexport const highlightState: {\n [prop: string]: StateField<DecorationSet>\n} = {\n highlight: lineHighlightField,\n}\n\nexport interface HighlightLineConfig {\n onHighlightChange?: (lines: number[]) => void\n readOnly?: boolean\n theme: ThemeContextValue\n}\n\nfunction createCodeMirrorTheme(options: {themeCtx: ThemeContextValue}) {\n const {themeCtx} = options\n\n const fallbackTone = getBackwardsCompatibleTone(themeCtx)\n\n // TODO: when upgrading to @sanity/ui@4 start using the new tokens\n // oxlint-disable-next-line typescript/no-deprecated\n const dark = {color: themeCtx.theme.color.dark[fallbackTone]}\n // oxlint-disable-next-line typescript/no-deprecated\n const light = {color: themeCtx.theme.color.light[fallbackTone]}\n\n return EditorView.baseTheme({\n '.cm-lineNumbers': {\n cursor: 'default',\n },\n '.cm-line.cm-line': {\n position: 'relative',\n },\n\n // need set background with pseudoelement so it does not render over selection color\n [`.${highlightLineClass}::before`]: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: -3,\n content: \"''\",\n boxSizing: 'border-box',\n },\n [`&dark .${highlightLineClass}::before`]: {\n background: rgba(dark.color.muted.caution.pressed.bg, 0.5),\n },\n [`&light .${highlightLineClass}::before`]: {\n background: rgba(light.color.muted.caution.pressed.bg, 0.75),\n },\n })\n}\n\nexport const highlightLine = (config: HighlightLineConfig): Extension => {\n const highlightTheme = createCodeMirrorTheme({themeCtx: config.theme})\n\n return [\n lineHighlightField,\n config.readOnly\n ? []\n : lineNumbers({\n domEventHandlers: {\n mousedown: (editorView, lineInfo) => {\n // Determine if the line for the clicked gutter line number has highlighted state or not\n const line = editorView.state.doc.lineAt(lineInfo.from)\n let isHighlighted = false\n editorView.state\n .field(lineHighlightField)\n .between(line.from, line.to, (_from, _to, value) => {\n if (value) {\n isHighlighted = true\n return false // stop iteration\n }\n return undefined\n })\n\n if (isHighlighted) {\n editorView.dispatch({effects: removeLineHighlight.of(line.from)})\n } else {\n editorView.dispatch({effects: addLineHighlight.of(line.from)})\n }\n if (config?.onHighlightChange) {\n config.onHighlightChange(editorView.state.toJSON(highlightState).highlight)\n }\n return true\n },\n },\n }),\n highlightTheme,\n ]\n}\n\n/**\n * Adds and removes highlights to the provided view using highlightLines\n * @param view\n * @param highlightLines\n */\nexport function setHighlightedLines(view: EditorView, highlightLines: number[]): void {\n const doc = view.state.doc\n const lines = doc.lines\n //1-based line numbers\n const allLineNumbers = Array.from({length: lines}, (_x, i) => i + 1)\n view.dispatch({\n effects: allLineNumbers.map((lineNumber) => {\n const line = doc.line(lineNumber)\n if (highlightLines?.includes(lineNumber)) {\n return addLineHighlight.of(line.from)\n }\n return removeLineHighlight.of(line.from)\n }),\n })\n}\n","import type {Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {useRootTheme} from '@sanity/ui'\nimport {rgba} from '@sanity/ui/theme'\nimport {useMemo} from 'react'\n\nimport {getBackwardsCompatibleTone} from './backwardsCompatibleTone'\n\nexport function useThemeExtension(): Extension {\n const themeCtx = useRootTheme()\n\n return useMemo(() => {\n const fallbackTone = getBackwardsCompatibleTone(themeCtx)\n // TODO: when upgrading to @sanity/ui@4 start using the new tokens\n // oxlint-disable-next-line typescript/no-deprecated\n const dark = {color: themeCtx.theme.color.dark[fallbackTone]}\n // oxlint-disable-next-line typescript/no-deprecated\n const light = {color: themeCtx.theme.color.light[fallbackTone]}\n\n return EditorView.baseTheme({\n '&.cm-editor': {\n height: '100%',\n },\n '&.cm-editor.cm-focused': {\n outline: 'none',\n },\n\n // Matching brackets\n '&.cm-editor.cm-focused .cm-matchingBracket': {\n backgroundColor: 'transparent',\n },\n '&.cm-editor.cm-focused .cm-nonmatchingBracket': {\n backgroundColor: 'transparent',\n },\n '&dark.cm-editor.cm-focused .cm-matchingBracket': {\n outline: `1px solid ${dark.color.base.border}`,\n },\n '&dark.cm-editor.cm-focused .cm-nonmatchingBracket': {\n outline: `1px solid ${dark.color.base.border}`,\n },\n '&light.cm-editor.cm-focused .cm-matchingBracket': {\n outline: `1px solid ${light.color.base.border}`,\n },\n '&light.cm-editor.cm-focused .cm-nonmatchingBracket': {\n outline: `1px solid ${light.color.base.border}`,\n },\n\n // Size and padding of gutter\n '& .cm-lineNumbers .cm-gutterElement': {\n minWidth: `32px !important`,\n padding: `0 8px !important`,\n },\n '& .cm-gutter.cm-foldGutter': {\n width: `0px !important`,\n },\n\n // Color of gutter\n '&dark .cm-gutters': {\n color: `${rgba(dark.color.card.enabled.code.fg, 0.5)} !important`,\n borderRight: `1px solid ${rgba(dark.color.base.border, 0.5)}`,\n },\n '&light .cm-gutters': {\n color: `${rgba(light.color.card.enabled.code.fg, 0.5)} !important`,\n borderRight: `1px solid ${rgba(light.color.base.border, 0.5)}`,\n },\n })\n }, [themeCtx])\n}\n","import type {Extension} from '@codemirror/state'\nimport {tags as t} from '@lezer/highlight'\nimport {useTheme} from '@sanity/ui'\nimport {rgba} from '@sanity/ui/theme'\nimport {createTheme} from '@uiw/codemirror-themes'\nimport {useMemo} from 'react'\n\nexport function useCodeMirrorTheme(): Extension {\n const theme = useTheme()\n\n return useMemo(() => {\n // TODO: when upgrading to @sanity/ui@4 start using the new tokens\n // oxlint-disable-next-line typescript/no-deprecated\n const {code: codeFont} = theme.sanity.fonts\n // oxlint-disable-next-line typescript/no-deprecated\n const {base, card, dark, syntax} = theme.sanity.color\n\n return createTheme({\n theme: dark ? 'dark' : 'light',\n settings: {\n background: card.enabled.bg,\n foreground: card.enabled.code.fg,\n lineHighlight: card.enabled.bg,\n fontFamily: codeFont.family,\n caret: base.focusRing,\n selection: rgba(base.focusRing, 0.2),\n selectionMatch: rgba(base.focusRing, 0.4),\n gutterBackground: card.disabled.bg,\n gutterForeground: card.disabled.code.fg,\n gutterActiveForeground: card.enabled.fg,\n },\n styles: [\n {\n tag: [t.heading, t.heading2, t.heading3, t.heading4, t.heading5, t.heading6],\n color: card.enabled.fg,\n },\n {tag: t.angleBracket, color: card.enabled.code.fg},\n {tag: t.atom, color: syntax.keyword},\n {tag: t.attributeName, color: syntax.attrName},\n {tag: t.bool, color: syntax.boolean},\n {tag: t.bracket, color: card.enabled.code.fg},\n {tag: t.className, color: syntax.className},\n {tag: t.comment, color: syntax.comment},\n {tag: t.definition(t.typeName), color: syntax.function},\n {\n tag: [\n t.definition(t.variableName),\n t.function(t.variableName),\n t.className,\n t.attributeName,\n ],\n color: syntax.function,\n },\n {tag: [t.function(t.propertyName), t.propertyName], color: syntax.function},\n {tag: t.keyword, color: syntax.keyword},\n {tag: t.null, color: syntax.number},\n {tag: t.number, color: syntax.number},\n {tag: t.meta, color: card.enabled.code.fg},\n {tag: t.operator, color: syntax.operator},\n {tag: t.propertyName, color: syntax.property},\n {tag: [t.string, t.special(t.brace)], color: syntax.string},\n {tag: t.tagName, color: syntax.className},\n {tag: t.typeName, color: syntax.keyword},\n ],\n })\n }, [theme])\n}\n","import type {Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {rem, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nexport function useFontSizeExtension(props: {fontSize: number}): Extension {\n const {fontSize: fontSizeProp} = props\n const theme = useTheme()\n\n return useMemo(() => {\n // TODO: when upgrading to @sanity/ui@4 start using the new tokens\n // oxlint-disable-next-line typescript/no-deprecated\n const {code: codeFont} = theme.sanity.fonts\n const {fontSize, lineHeight} = codeFont.sizes[fontSizeProp] || codeFont.sizes[2]!\n\n return EditorView.baseTheme({\n '&': {\n fontSize: rem(fontSize),\n },\n\n '& .cm-scroller': {\n lineHeight: `${lineHeight / fontSize} !important`,\n },\n })\n }, [fontSizeProp, theme])\n}\n","import type {Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {useRootTheme} from '@sanity/ui'\nimport CodeMirror, {type ReactCodeMirrorProps, type ReactCodeMirrorRef} from '@uiw/react-codemirror'\nimport {type Ref, useCallback, useContext, useEffect, useMemo, useState} from 'react'\n\nimport {CodeInputConfigContext} from './CodeModeContext'\nimport {defaultCodeModes} from './defaultCodeModes'\nimport {\n highlightLine,\n highlightState,\n setHighlightedLines,\n} from './extensions/highlightLineExtension'\nimport {useThemeExtension} from './extensions/theme'\nimport {useCodeMirrorTheme} from './extensions/useCodeMirrorTheme'\nimport {useFontSizeExtension} from './extensions/useFontSize'\n\nexport interface CodeMirrorProps extends ReactCodeMirrorProps {\n highlightLines?: number[]\n languageMode?: string\n onHighlightChange?: (lines: number[]) => void\n}\n\n/**\n * CodeMirrorProxy is a wrapper component around CodeMirror that we lazy load to reduce initial bundle size.\n *\n * It is also responsible for integrating any CodeMirror extensions.\n */\nfunction CodeMirrorProxy(props: CodeMirrorProps & {ref?: Ref<ReactCodeMirrorRef>}) {\n const {\n basicSetup: basicSetupProp,\n highlightLines,\n languageMode,\n onHighlightChange,\n readOnly,\n value,\n ref,\n ...codeMirrorProps\n } = props\n\n const themeCtx = useRootTheme()\n const codeMirrorTheme = useCodeMirrorTheme()\n const [editorView, setEditorView] = useState<EditorView | undefined>(undefined)\n\n // Resolve extensions\n const themeExtension = useThemeExtension()\n const fontSizeExtension = useFontSizeExtension({fontSize: 1})\n const languageExtension = useLanguageExtension(languageMode)\n const highlightLineExtension = useMemo(\n () =>\n highlightLine({\n onHighlightChange,\n readOnly,\n theme: themeCtx,\n }),\n [onHighlightChange, readOnly, themeCtx],\n )\n\n const extensions = useMemo(() => {\n const baseExtensions = [\n themeExtension,\n fontSizeExtension,\n highlightLineExtension,\n EditorView.lineWrapping,\n ]\n if (languageExtension) {\n return [...baseExtensions, languageExtension]\n }\n return baseExtensions\n }, [fontSizeExtension, highlightLineExtension, languageExtension, themeExtension])\n\n useEffect(() => {\n if (editorView) {\n setHighlightedLines(editorView, highlightLines ?? [])\n }\n }, [editorView, highlightLines, value])\n\n const [initialState] = useState(() => {\n return {\n json: {\n doc: value ?? '',\n selection: {\n main: 0,\n ranges: [{anchor: 0, head: 0}],\n },\n highlight: highlightLines ?? [],\n },\n fields: highlightState,\n }\n })\n\n const handleCreateEditor = useCallback((view: EditorView) => {\n setEditorView(view)\n }, [])\n\n const basicSetup = useMemo(\n () =>\n basicSetupProp ?? {\n highlightActiveLine: false,\n },\n [basicSetupProp],\n )\n\n return (\n <CodeMirror\n {...codeMirrorProps}\n value={value}\n ref={ref}\n extensions={extensions}\n theme={codeMirrorTheme}\n onCreateEditor={handleCreateEditor}\n initialState={initialState}\n basicSetup={basicSetup}\n />\n )\n}\n\nfunction useLanguageExtension(mode?: string) {\n const codeConfig = useContext(CodeInputConfigContext)\n\n const [languageExtension, setLanguageExtension] = useState<Extension | undefined>()\n\n useEffect(() => {\n const customModes = codeConfig?.codeModes ?? []\n const modes = [...customModes, ...defaultCodeModes]\n\n const codeMode = modes.find((m) => m.name === mode)\n if (!codeMode?.loader) {\n console.warn(\n `Found no codeMode for language mode ${mode}, syntax highlighting will be disabled.`,\n )\n }\n let active = true\n Promise.resolve(codeMode?.loader())\n .then((extension) => {\n if (active) {\n setLanguageExtension(extension)\n }\n return undefined\n })\n .catch((e) => {\n console.error(`Failed to load language mode ${mode}`, e)\n if (active) {\n setLanguageExtension(undefined)\n }\n })\n return () => {\n active = false\n }\n }, [mode, codeConfig])\n\n return languageExtension\n}\n\nexport default CodeMirrorProxy\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeModeContext.js","names":["createContext","CodeInputConfig","CodeInputConfigContext","undefined"],"sources":["../src/codemirror/CodeModeContext.tsx"],"sourcesContent":["import {createContext} from 'react'\n\nimport type {CodeInputConfig} from '../plugin'\n\nexport const CodeInputConfigContext = createContext<CodeInputConfig | undefined>(undefined)\n"],"mappings":";AAIA,MAAaE,yBAAyBF,cAA2CG,KAAAA,CAAS"}
|