@sanity/code-input 6.0.3 → 7.0.0
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/README.md +1 -16
- package/assets/all-options.png +0 -0
- package/assets/basic-input.png +0 -0
- package/dist/_chunks-es/CodeMirrorProxy.js +510 -0
- package/dist/_chunks-es/CodeMirrorProxy.js.map +1 -0
- package/dist/_chunks-es/index.js +427 -0
- package/dist/_chunks-es/index.js.map +1 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.d.ts.map +1 -0
- package/package.json +31 -86
- package/lib/_chunks-cjs/CodeMirrorProxy.cjs +0 -407
- package/lib/_chunks-cjs/CodeMirrorProxy.cjs.map +0 -1
- package/lib/_chunks-cjs/index.cjs +0 -433
- package/lib/_chunks-cjs/index.cjs.map +0 -1
- package/lib/_chunks-es/CodeMirrorProxy.js +0 -395
- package/lib/_chunks-es/CodeMirrorProxy.js.map +0 -1
- package/lib/_chunks-es/index.js +0 -437
- package/lib/_chunks-es/index.js.map +0 -1
- package/lib/index.cjs +0 -8
- package/lib/index.cjs.map +0 -1
- package/lib/index.d.cts +0 -121
- package/lib/index.d.ts +0 -121
- package/sanity.json +0 -8
- package/src/CodeInput.tsx +0 -181
- package/src/LanguageField.tsx +0 -41
- package/src/LanguageInput.tsx +0 -35
- package/src/PreviewCode.tsx +0 -71
- package/src/codemirror/CodeMirrorProxy.tsx +0 -159
- package/src/codemirror/CodeModeContext.tsx +0 -5
- package/src/codemirror/defaultCodeModes.ts +0 -109
- package/src/codemirror/extensions/backwardsCompatibleTone.ts +0 -19
- package/src/codemirror/extensions/highlightLineExtension.ts +0 -175
- package/src/codemirror/extensions/theme.ts +0 -65
- package/src/codemirror/extensions/useCodeMirrorTheme.ts +0 -64
- package/src/codemirror/extensions/useFontSize.ts +0 -24
- package/src/codemirror/useCodeMirror-client.test.tsx +0 -51
- package/src/codemirror/useCodeMirror-server.test.tsx +0 -18
- package/src/codemirror/useCodeMirror.tsx +0 -11
- package/src/codemirror/useLanguageMode.tsx +0 -60
- package/src/config.ts +0 -35
- package/src/getMedia.tsx +0 -93
- package/src/index.ts +0 -8
- package/src/plugin.tsx +0 -40
- package/src/sanity-ui.d.ts +0 -5
- package/src/schema.tsx +0 -86
- package/src/types.ts +0 -35
- package/src/ui/focusRingStyle.ts +0 -27
- package/src/useFieldMember.ts +0 -16
- package/v2-incompatible.js +0 -11
- /package/{lib → dist}/index.js +0 -0
- /package/{lib → dist}/index.js.map +0 -0
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { CodeBlockIcon } from "@sanity/icons";
|
|
2
|
+
import { set, unset, MemberField, setIfMissing, defineType, definePlugin } from "sanity";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { c } from "react/compiler-runtime";
|
|
5
|
+
import { Select, Stack, Box, Text, Card, Flex, Label } from "@sanity/ui";
|
|
6
|
+
import { lazy, useState, useEffect, startTransition, Suspense, createContext } from "react";
|
|
7
|
+
import { styled, css } from "styled-components";
|
|
8
|
+
const CodeMirrorProxy = lazy(() => import("./CodeMirrorProxy.js"));
|
|
9
|
+
function useMounted() {
|
|
10
|
+
const $ = c(2), [mounted, setMounted] = useState(!1);
|
|
11
|
+
let t0, t1;
|
|
12
|
+
return $[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t0 = () => {
|
|
13
|
+
requestAnimationFrame(() => startTransition(() => setMounted(!0)));
|
|
14
|
+
}, t1 = [], $[0] = t0, $[1] = t1) : (t0 = $[0], t1 = $[1]), useEffect(t0, t1), mounted;
|
|
15
|
+
}
|
|
16
|
+
const SUPPORTED_LANGUAGES = [{
|
|
17
|
+
title: "Batch file",
|
|
18
|
+
value: "batchfile"
|
|
19
|
+
}, {
|
|
20
|
+
title: "C#",
|
|
21
|
+
value: "csharp"
|
|
22
|
+
}, {
|
|
23
|
+
title: "CSS",
|
|
24
|
+
value: "css"
|
|
25
|
+
}, {
|
|
26
|
+
title: "Go",
|
|
27
|
+
value: "golang"
|
|
28
|
+
}, {
|
|
29
|
+
title: "GROQ",
|
|
30
|
+
value: "groq"
|
|
31
|
+
}, {
|
|
32
|
+
title: "HTML",
|
|
33
|
+
value: "html"
|
|
34
|
+
}, {
|
|
35
|
+
title: "Java",
|
|
36
|
+
value: "java"
|
|
37
|
+
}, {
|
|
38
|
+
title: "JavaScript",
|
|
39
|
+
value: "javascript"
|
|
40
|
+
}, {
|
|
41
|
+
title: "JSON",
|
|
42
|
+
value: "json"
|
|
43
|
+
}, {
|
|
44
|
+
title: "JSX",
|
|
45
|
+
value: "jsx"
|
|
46
|
+
}, {
|
|
47
|
+
title: "Markdown",
|
|
48
|
+
value: "markdown"
|
|
49
|
+
}, {
|
|
50
|
+
title: "MySQL",
|
|
51
|
+
value: "mysql"
|
|
52
|
+
}, {
|
|
53
|
+
title: "PHP",
|
|
54
|
+
value: "php"
|
|
55
|
+
}, {
|
|
56
|
+
title: "Plain text",
|
|
57
|
+
value: "text"
|
|
58
|
+
}, {
|
|
59
|
+
title: "Python",
|
|
60
|
+
value: "python"
|
|
61
|
+
}, {
|
|
62
|
+
title: "Ruby",
|
|
63
|
+
value: "ruby"
|
|
64
|
+
}, {
|
|
65
|
+
title: "SASS",
|
|
66
|
+
value: "sass"
|
|
67
|
+
}, {
|
|
68
|
+
title: "SCSS",
|
|
69
|
+
value: "scss"
|
|
70
|
+
}, {
|
|
71
|
+
title: "sh",
|
|
72
|
+
value: "sh"
|
|
73
|
+
}, {
|
|
74
|
+
title: "SQL",
|
|
75
|
+
value: "sql"
|
|
76
|
+
}, {
|
|
77
|
+
title: "TSX",
|
|
78
|
+
value: "tsx"
|
|
79
|
+
}, {
|
|
80
|
+
title: "TypeScript",
|
|
81
|
+
value: "typescript"
|
|
82
|
+
}, {
|
|
83
|
+
title: "XML",
|
|
84
|
+
value: "xml"
|
|
85
|
+
}, {
|
|
86
|
+
title: "YAML",
|
|
87
|
+
value: "yaml"
|
|
88
|
+
}], LANGUAGE_ALIASES = {
|
|
89
|
+
js: "javascript"
|
|
90
|
+
}, PATH_CODE = ["code"], defaultLanguageMode = "text";
|
|
91
|
+
function useLanguageMode(schemaType, value) {
|
|
92
|
+
const $ = c(12), languages = useLanguageAlternatives(schemaType), fixedLanguage = schemaType.options?.language, language = value?.language ?? fixedLanguage ?? defaultLanguageMode;
|
|
93
|
+
let t0;
|
|
94
|
+
if ($[0] !== language || $[1] !== languages) {
|
|
95
|
+
let t12;
|
|
96
|
+
$[3] !== language ? (t12 = (entry) => entry.value === language, $[3] = language, $[4] = t12) : t12 = $[4], t0 = languages.find(t12), $[0] = language, $[1] = languages, $[2] = t0;
|
|
97
|
+
} else
|
|
98
|
+
t0 = $[2];
|
|
99
|
+
const configured = t0;
|
|
100
|
+
let t1;
|
|
101
|
+
$[5] !== configured?.mode || $[6] !== language ? (t1 = configured?.mode ?? resolveAliasedLanguage(language) ?? defaultLanguageMode, $[5] = configured?.mode, $[6] = language, $[7] = t1) : t1 = $[7];
|
|
102
|
+
const languageMode = t1;
|
|
103
|
+
let t2;
|
|
104
|
+
return $[8] !== language || $[9] !== languageMode || $[10] !== languages ? (t2 = {
|
|
105
|
+
language,
|
|
106
|
+
languageMode,
|
|
107
|
+
languages
|
|
108
|
+
}, $[8] = language, $[9] = languageMode, $[10] = languages, $[11] = t2) : t2 = $[11], t2;
|
|
109
|
+
}
|
|
110
|
+
function resolveAliasedLanguage(lang) {
|
|
111
|
+
return (lang && LANGUAGE_ALIASES[lang]) ?? lang;
|
|
112
|
+
}
|
|
113
|
+
function useLanguageAlternatives(type) {
|
|
114
|
+
const $ = c(2);
|
|
115
|
+
let t0;
|
|
116
|
+
bb0: {
|
|
117
|
+
const languageAlternatives = type.options?.languageAlternatives;
|
|
118
|
+
if (!languageAlternatives) {
|
|
119
|
+
t0 = SUPPORTED_LANGUAGES;
|
|
120
|
+
break bb0;
|
|
121
|
+
}
|
|
122
|
+
if (!Array.isArray(languageAlternatives))
|
|
123
|
+
throw new Error(`'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`);
|
|
124
|
+
let t1;
|
|
125
|
+
$[0] !== languageAlternatives ? (t1 = languageAlternatives.reduce(_temp$1, []), $[0] = languageAlternatives, $[1] = t1) : t1 = $[1], t0 = t1;
|
|
126
|
+
}
|
|
127
|
+
return t0;
|
|
128
|
+
}
|
|
129
|
+
function _temp$1(acc, t0) {
|
|
130
|
+
const {
|
|
131
|
+
title,
|
|
132
|
+
value: val,
|
|
133
|
+
mode
|
|
134
|
+
} = t0, alias = LANGUAGE_ALIASES[val];
|
|
135
|
+
return alias ? (console.warn(`'options.languageAlternatives' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"`, val, alias, alias), acc.concat({
|
|
136
|
+
title,
|
|
137
|
+
value: alias,
|
|
138
|
+
mode
|
|
139
|
+
})) : acc.concat({
|
|
140
|
+
title,
|
|
141
|
+
value: val,
|
|
142
|
+
mode
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function LanguageInput(props) {
|
|
146
|
+
const $ = c(9), {
|
|
147
|
+
language,
|
|
148
|
+
languages,
|
|
149
|
+
onChange,
|
|
150
|
+
elementProps
|
|
151
|
+
} = props;
|
|
152
|
+
let t0;
|
|
153
|
+
$[0] !== onChange ? (t0 = (e) => {
|
|
154
|
+
const newValue = e.currentTarget.value;
|
|
155
|
+
onChange(newValue ? set(newValue) : unset());
|
|
156
|
+
}, $[0] = onChange, $[1] = t0) : t0 = $[1];
|
|
157
|
+
const handleChange = t0;
|
|
158
|
+
let t1;
|
|
159
|
+
$[2] !== languages ? (t1 = languages.map(_temp), $[2] = languages, $[3] = t1) : t1 = $[3];
|
|
160
|
+
let t2;
|
|
161
|
+
return $[4] !== elementProps || $[5] !== handleChange || $[6] !== language || $[7] !== t1 ? (t2 = /* @__PURE__ */ jsx(Select, { ...elementProps, value: language, onChange: handleChange, children: t1 }), $[4] = elementProps, $[5] = handleChange, $[6] = language, $[7] = t1, $[8] = t2) : t2 = $[8], t2;
|
|
162
|
+
}
|
|
163
|
+
function _temp(lang) {
|
|
164
|
+
return /* @__PURE__ */ jsx("option", { value: lang.value, children: lang.title }, lang.value);
|
|
165
|
+
}
|
|
166
|
+
function LanguageField(props) {
|
|
167
|
+
const $ = c(9), {
|
|
168
|
+
member,
|
|
169
|
+
languages,
|
|
170
|
+
language,
|
|
171
|
+
renderItem,
|
|
172
|
+
renderField,
|
|
173
|
+
renderPreview
|
|
174
|
+
} = props;
|
|
175
|
+
let t0;
|
|
176
|
+
$[0] !== language || $[1] !== languages ? (t0 = (t12) => {
|
|
177
|
+
const {
|
|
178
|
+
elementProps,
|
|
179
|
+
onChange
|
|
180
|
+
} = t12;
|
|
181
|
+
return /* @__PURE__ */ jsx(LanguageInput, { onChange, elementProps, language, languages });
|
|
182
|
+
}, $[0] = language, $[1] = languages, $[2] = t0) : t0 = $[2];
|
|
183
|
+
const renderInput = t0;
|
|
184
|
+
let t1;
|
|
185
|
+
return $[3] !== member || $[4] !== renderField || $[5] !== renderInput || $[6] !== renderItem || $[7] !== renderPreview ? (t1 = /* @__PURE__ */ jsx(MemberField, { member, renderItem, renderField, renderInput, renderPreview }), $[3] = member, $[4] = renderField, $[5] = renderInput, $[6] = renderItem, $[7] = renderPreview, $[8] = t1) : t1 = $[8], t1;
|
|
186
|
+
}
|
|
187
|
+
function focusRingBorderStyle(border) {
|
|
188
|
+
return `inset 0 0 0 ${border.width}px ${border.color}`;
|
|
189
|
+
}
|
|
190
|
+
function focusRingStyle(opts) {
|
|
191
|
+
const {
|
|
192
|
+
base,
|
|
193
|
+
border,
|
|
194
|
+
focusRing
|
|
195
|
+
} = opts, focusRingOutsetWidth = focusRing.offset + focusRing.width, focusRingInsetWidth = 0 - focusRing.offset, bgColor = base ? base.bg : "var(--card-bg-color)";
|
|
196
|
+
return [focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`, border && focusRingBorderStyle(border), focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`, focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`].filter(Boolean).join(",");
|
|
197
|
+
}
|
|
198
|
+
function useFieldMember(members, fieldName) {
|
|
199
|
+
const $ = c(5);
|
|
200
|
+
let t0;
|
|
201
|
+
if ($[0] !== fieldName || $[1] !== members) {
|
|
202
|
+
let t1;
|
|
203
|
+
$[3] !== fieldName ? (t1 = (member) => member.kind === "field" && member.name === fieldName, $[3] = fieldName, $[4] = t1) : t1 = $[4], t0 = members.find(t1), $[0] = fieldName, $[1] = members, $[2] = t0;
|
|
204
|
+
} else
|
|
205
|
+
t0 = $[2];
|
|
206
|
+
return t0;
|
|
207
|
+
}
|
|
208
|
+
const EditorContainer = /* @__PURE__ */ styled(Card).withConfig({
|
|
209
|
+
displayName: "EditorContainer",
|
|
210
|
+
componentId: "sc-hbj24s-0"
|
|
211
|
+
})(({
|
|
212
|
+
theme
|
|
213
|
+
}) => {
|
|
214
|
+
const {
|
|
215
|
+
focusRing,
|
|
216
|
+
input
|
|
217
|
+
} = theme.sanity, base = theme.sanity.color.base, border = {
|
|
218
|
+
color: theme.sanity.color.input.default.enabled.border,
|
|
219
|
+
width: input.border.width
|
|
220
|
+
};
|
|
221
|
+
return css`
|
|
222
|
+
--input-box-shadow: ${focusRingBorderStyle(border)};
|
|
223
|
+
|
|
224
|
+
box-shadow: var(--input-box-shadow);
|
|
225
|
+
height: 250px;
|
|
226
|
+
min-height: 80px;
|
|
227
|
+
overflow-y: auto;
|
|
228
|
+
position: relative;
|
|
229
|
+
resize: vertical;
|
|
230
|
+
z-index: 0;
|
|
231
|
+
|
|
232
|
+
& > .cm-theme {
|
|
233
|
+
height: 100%;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
&:focus-within {
|
|
237
|
+
--input-box-shadow: ${focusRingStyle({
|
|
238
|
+
base,
|
|
239
|
+
border,
|
|
240
|
+
focusRing
|
|
241
|
+
})};
|
|
242
|
+
}
|
|
243
|
+
`;
|
|
244
|
+
});
|
|
245
|
+
function CodeInput(props) {
|
|
246
|
+
const $ = c(42), {
|
|
247
|
+
members,
|
|
248
|
+
elementProps,
|
|
249
|
+
onChange,
|
|
250
|
+
readOnly,
|
|
251
|
+
renderField,
|
|
252
|
+
renderInput,
|
|
253
|
+
renderItem,
|
|
254
|
+
renderPreview,
|
|
255
|
+
schemaType: type,
|
|
256
|
+
value,
|
|
257
|
+
onPathFocus
|
|
258
|
+
} = props, languageFieldMember = useFieldMember(members, "language"), filenameMember = useFieldMember(members, "filename"), codeFieldMember = useFieldMember(members, "code");
|
|
259
|
+
let t0;
|
|
260
|
+
$[0] !== onPathFocus ? (t0 = () => {
|
|
261
|
+
onPathFocus(PATH_CODE);
|
|
262
|
+
}, $[0] = onPathFocus, $[1] = t0) : t0 = $[1];
|
|
263
|
+
const handleCodeFocus = t0;
|
|
264
|
+
let t1;
|
|
265
|
+
$[2] !== onChange ? (t1 = (lines) => onChange(set(lines, ["highlightedLines"])), $[2] = onChange, $[3] = t1) : t1 = $[3];
|
|
266
|
+
const onHighlightChange = t1;
|
|
267
|
+
let t2;
|
|
268
|
+
$[4] !== onChange || $[5] !== type.name || $[6] !== type.options?.language ? (t2 = (code) => {
|
|
269
|
+
const fixedLanguage = type.options?.language;
|
|
270
|
+
onChange([setIfMissing({
|
|
271
|
+
_type: type.name,
|
|
272
|
+
language: fixedLanguage
|
|
273
|
+
}), code ? set(code, PATH_CODE) : unset(PATH_CODE)]);
|
|
274
|
+
}, $[4] = onChange, $[5] = type.name, $[6] = type.options?.language, $[7] = t2) : t2 = $[7];
|
|
275
|
+
const handleCodeChange = t2, {
|
|
276
|
+
languages,
|
|
277
|
+
language,
|
|
278
|
+
languageMode
|
|
279
|
+
} = useLanguageMode(props.schemaType, props.value), mounted = useMounted();
|
|
280
|
+
let t3;
|
|
281
|
+
$[8] !== elementProps.onBlur || $[9] !== handleCodeChange || $[10] !== handleCodeFocus || $[11] !== languageMode || $[12] !== mounted || $[13] !== onHighlightChange || $[14] !== readOnly || $[15] !== value?.highlightedLines ? (t3 = (inputProps) => /* @__PURE__ */ jsx(EditorContainer, { border: !0, overflow: "hidden", radius: 1, sizing: "border", readOnly, children: mounted && /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Box, { padding: 3, children: /* @__PURE__ */ jsx(Text, { children: "Loading code editor..." }) }), children: /* @__PURE__ */ jsx(CodeMirrorProxy, { languageMode, onChange: handleCodeChange, value: inputProps.value, highlightLines: value?.highlightedLines, onHighlightChange, readOnly, onFocus: handleCodeFocus, onBlur: elementProps.onBlur }) }) }), $[8] = elementProps.onBlur, $[9] = handleCodeChange, $[10] = handleCodeFocus, $[11] = languageMode, $[12] = mounted, $[13] = onHighlightChange, $[14] = readOnly, $[15] = value?.highlightedLines, $[16] = t3) : t3 = $[16];
|
|
282
|
+
const renderCodeInput = t3;
|
|
283
|
+
let t4;
|
|
284
|
+
$[17] !== language || $[18] !== languageFieldMember || $[19] !== languages || $[20] !== renderField || $[21] !== renderInput || $[22] !== renderItem || $[23] !== renderPreview ? (t4 = languageFieldMember && /* @__PURE__ */ jsx(LanguageField, { member: languageFieldMember, language, languages, renderField, renderItem, renderInput, renderPreview }), $[17] = language, $[18] = languageFieldMember, $[19] = languages, $[20] = renderField, $[21] = renderInput, $[22] = renderItem, $[23] = renderPreview, $[24] = t4) : t4 = $[24];
|
|
285
|
+
let t5;
|
|
286
|
+
$[25] !== filenameMember || $[26] !== renderField || $[27] !== renderInput || $[28] !== renderItem || $[29] !== renderPreview || $[30] !== type.options?.withFilename ? (t5 = type.options?.withFilename && filenameMember && /* @__PURE__ */ jsx(MemberField, { member: filenameMember, renderItem, renderField, renderInput, renderPreview }), $[25] = filenameMember, $[26] = renderField, $[27] = renderInput, $[28] = renderItem, $[29] = renderPreview, $[30] = type.options?.withFilename, $[31] = t5) : t5 = $[31];
|
|
287
|
+
let t6;
|
|
288
|
+
$[32] !== codeFieldMember || $[33] !== renderCodeInput || $[34] !== renderField || $[35] !== renderItem || $[36] !== renderPreview ? (t6 = codeFieldMember && /* @__PURE__ */ jsx(MemberField, { member: codeFieldMember, renderInput: renderCodeInput, renderItem, renderField, renderPreview }), $[32] = codeFieldMember, $[33] = renderCodeInput, $[34] = renderField, $[35] = renderItem, $[36] = renderPreview, $[37] = t6) : t6 = $[37];
|
|
289
|
+
let t7;
|
|
290
|
+
return $[38] !== t4 || $[39] !== t5 || $[40] !== t6 ? (t7 = /* @__PURE__ */ jsxs(Stack, { space: 4, children: [
|
|
291
|
+
t4,
|
|
292
|
+
t5,
|
|
293
|
+
t6
|
|
294
|
+
] }), $[38] = t4, $[39] = t5, $[40] = t6, $[41] = t7) : t7 = $[41], t7;
|
|
295
|
+
}
|
|
296
|
+
function getMedia(language) {
|
|
297
|
+
if (language === "jsx")
|
|
298
|
+
return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128", children: /* @__PURE__ */ jsxs("g", { fill: "#61DAFB", children: [
|
|
299
|
+
/* @__PURE__ */ jsx("circle", { cx: "64", cy: "64", r: "11.4" }),
|
|
300
|
+
/* @__PURE__ */ jsx("path", { d: "M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z" })
|
|
301
|
+
] }) });
|
|
302
|
+
if (language === "javascript")
|
|
303
|
+
return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128", children: [
|
|
304
|
+
/* @__PURE__ */ jsx("path", { fill: "#F0DB4F", d: "M1.408 1.408h125.184v125.185H1.408z" }),
|
|
305
|
+
/* @__PURE__ */ jsx("path", { fill: "#323330", d: "M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z" })
|
|
306
|
+
] });
|
|
307
|
+
if (language === "php")
|
|
308
|
+
return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 800 400", children: /* @__PURE__ */ jsx("g", { transform: "translate(-44.632 -141.55)", children: /* @__PURE__ */ jsxs("g", { transform: "matrix(8.3528 0 0 8.3119 -727.13 -3759.5)", children: [
|
|
309
|
+
/* @__PURE__ */ jsx("path", { d: "m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053" }),
|
|
310
|
+
/* @__PURE__ */ jsx("path", { d: "m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054" }),
|
|
311
|
+
/* @__PURE__ */ jsx("path", { d: "m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053" })
|
|
312
|
+
] }) }) });
|
|
313
|
+
if (language === "json")
|
|
314
|
+
return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: "0 0 160 160", children: [
|
|
315
|
+
/* @__PURE__ */ jsxs("defs", { children: [
|
|
316
|
+
/* @__PURE__ */ jsxs("linearGradient", { id: "a", children: [
|
|
317
|
+
/* @__PURE__ */ jsx("stop", { offset: "0" }),
|
|
318
|
+
/* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#fff" })
|
|
319
|
+
] }),
|
|
320
|
+
/* @__PURE__ */ jsx("linearGradient", { x1: "-553.27", y1: "525.908", x2: "-666.116", y2: "413.045", id: "c", xlinkHref: "#a", gradientUnits: "userSpaceOnUse", gradientTransform: "matrix(.99884 0 0 .9987 689.008 -388.844)" }),
|
|
321
|
+
/* @__PURE__ */ jsx("linearGradient", { x1: "-666.117", y1: "413.045", x2: "-553.27", y2: "525.908", id: "b", xlinkHref: "#a", gradientUnits: "userSpaceOnUse", gradientTransform: "matrix(.99884 0 0 .9987 689.008 -388.844)" })
|
|
322
|
+
] }),
|
|
323
|
+
/* @__PURE__ */ jsx("path", { d: "M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z", style: {
|
|
324
|
+
marker: "none"
|
|
325
|
+
}, color: "#000", fill: "url(#b)", fillRule: "evenodd", overflow: "visible" }),
|
|
326
|
+
/* @__PURE__ */ jsx("path", { d: "M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z", style: {
|
|
327
|
+
marker: "none"
|
|
328
|
+
}, color: "#000", fill: "url(#c)", fillRule: "evenodd", overflow: "visible" })
|
|
329
|
+
] });
|
|
330
|
+
}
|
|
331
|
+
const PreviewContainer = styled(Box).withConfig({
|
|
332
|
+
displayName: "PreviewContainer",
|
|
333
|
+
componentId: "sc-14g49ds-0"
|
|
334
|
+
})`position:relative;`;
|
|
335
|
+
function PreviewCode(props) {
|
|
336
|
+
const $ = c(10), {
|
|
337
|
+
selection,
|
|
338
|
+
schemaType: type
|
|
339
|
+
} = props, {
|
|
340
|
+
languageMode
|
|
341
|
+
} = useLanguageMode(type, props.selection), mounted = useMounted();
|
|
342
|
+
let t0;
|
|
343
|
+
$[0] !== selection ? (t0 = selection?.filename || selection?.language ? /* @__PURE__ */ jsx(Card, { paddingBottom: 4, marginBottom: selection.code ? 4 : 0, borderBottom: !!selection.code, children: /* @__PURE__ */ jsxs(Flex, { align: "center", justify: "flex-end", children: [
|
|
344
|
+
selection?.filename ? /* @__PURE__ */ jsx(Box, { flex: 1, children: /* @__PURE__ */ jsx(Text, { children: /* @__PURE__ */ jsx("code", { children: selection.filename }) }) }) : null,
|
|
345
|
+
selection?.language ? /* @__PURE__ */ jsx(Label, { muted: !0, children: selection.language }) : null
|
|
346
|
+
] }) }) : null, $[0] = selection, $[1] = t0) : t0 = $[1];
|
|
347
|
+
let t1;
|
|
348
|
+
$[2] !== languageMode || $[3] !== mounted || $[4] !== selection?.code || $[5] !== selection?.highlightedLines ? (t1 = mounted && /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Card, { padding: 2, children: "Loading code preview..." }), children: /* @__PURE__ */ jsx(CodeMirrorProxy, { readOnly: !0, editable: !1, value: selection?.code || "", highlightLines: selection?.highlightedLines || [], basicSetup: {
|
|
349
|
+
lineNumbers: !1,
|
|
350
|
+
foldGutter: !1,
|
|
351
|
+
highlightSelectionMatches: !1,
|
|
352
|
+
highlightActiveLineGutter: !1,
|
|
353
|
+
highlightActiveLine: !1
|
|
354
|
+
}, languageMode }) }), $[2] = languageMode, $[3] = mounted, $[4] = selection?.code, $[5] = selection?.highlightedLines, $[6] = t1) : t1 = $[6];
|
|
355
|
+
let t2;
|
|
356
|
+
return $[7] !== t0 || $[8] !== t1 ? (t2 = /* @__PURE__ */ jsx(PreviewContainer, { children: /* @__PURE__ */ jsxs(Card, { padding: 4, children: [
|
|
357
|
+
t0,
|
|
358
|
+
t1
|
|
359
|
+
] }) }), $[7] = t0, $[8] = t1, $[9] = t2) : t2 = $[9], t2;
|
|
360
|
+
}
|
|
361
|
+
const codeTypeName = "code", codeSchema = defineType({
|
|
362
|
+
name: "code",
|
|
363
|
+
type: "object",
|
|
364
|
+
title: "Code",
|
|
365
|
+
components: {
|
|
366
|
+
input: CodeInput,
|
|
367
|
+
preview: PreviewCode
|
|
368
|
+
},
|
|
369
|
+
icon: CodeBlockIcon,
|
|
370
|
+
fields: [{
|
|
371
|
+
name: "language",
|
|
372
|
+
title: "Language",
|
|
373
|
+
type: "string"
|
|
374
|
+
}, {
|
|
375
|
+
name: "filename",
|
|
376
|
+
title: "Filename",
|
|
377
|
+
type: "string"
|
|
378
|
+
}, {
|
|
379
|
+
title: "Code",
|
|
380
|
+
name: "code",
|
|
381
|
+
type: "text"
|
|
382
|
+
}, {
|
|
383
|
+
title: "Highlighted lines",
|
|
384
|
+
name: "highlightedLines",
|
|
385
|
+
type: "array",
|
|
386
|
+
of: [{
|
|
387
|
+
type: "number",
|
|
388
|
+
title: "Highlighted line"
|
|
389
|
+
}]
|
|
390
|
+
}],
|
|
391
|
+
preview: {
|
|
392
|
+
select: {
|
|
393
|
+
language: "language",
|
|
394
|
+
code: "code",
|
|
395
|
+
filename: "filename",
|
|
396
|
+
highlightedLines: "highlightedLines"
|
|
397
|
+
},
|
|
398
|
+
prepare: (value) => ({
|
|
399
|
+
title: value.filename || (value.language || "unknown").toUpperCase(),
|
|
400
|
+
media: getMedia(value?.language),
|
|
401
|
+
selection: value
|
|
402
|
+
})
|
|
403
|
+
}
|
|
404
|
+
}), CodeInputConfigContext = createContext(void 0), codeInput = definePlugin((config) => {
|
|
405
|
+
const codeModes = config && config.codeModes, basePlugin = {
|
|
406
|
+
name: "@sanity/code-input",
|
|
407
|
+
schema: {
|
|
408
|
+
types: [codeSchema]
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
return codeModes ? {
|
|
412
|
+
...basePlugin,
|
|
413
|
+
form: {
|
|
414
|
+
components: {
|
|
415
|
+
input: (props) => props.id !== "root" ? props.renderDefault(props) : /* @__PURE__ */ jsx(CodeInputConfigContext.Provider, { value: config, children: props.renderDefault(props) })
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
} : basePlugin;
|
|
419
|
+
});
|
|
420
|
+
export {
|
|
421
|
+
CodeInputConfigContext,
|
|
422
|
+
PreviewCode,
|
|
423
|
+
codeInput,
|
|
424
|
+
codeSchema,
|
|
425
|
+
codeTypeName
|
|
426
|
+
};
|
|
427
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/codemirror/useCodeMirror.tsx","../../src/config.ts","../../src/codemirror/useLanguageMode.tsx","../../src/LanguageInput.tsx","../../src/LanguageField.tsx","../../src/ui/focusRingStyle.ts","../../src/useFieldMember.ts","../../src/CodeInput.tsx","../../src/getMedia.tsx","../../src/PreviewCode.tsx","../../src/schema.tsx","../../src/codemirror/CodeModeContext.tsx","../../src/plugin.tsx"],"sourcesContent":["import {lazy, startTransition, useEffect, useState} from 'react'\n\nexport const CodeMirrorProxy = lazy(() => import('./CodeMirrorProxy'))\n\nexport function useMounted() {\n const [mounted, setMounted] = useState(false)\n useEffect(() => {\n requestAnimationFrame(() => startTransition(() => setMounted(true)))\n }, [])\n return mounted\n}\n","import type {CodeInputLanguage} from './types'\n\n// NOTE: MAKE SURE THESE ALIGN WITH CODE MODES IN ./codemirror/defaultCodeModes.ts\nexport const SUPPORTED_LANGUAGES: CodeInputLanguage[] = [\n {title: 'Batch file', value: 'batchfile'},\n {title: 'C#', value: 'csharp'},\n {title: 'CSS', value: 'css'},\n {title: 'Go', value: 'golang'},\n {title: 'GROQ', value: 'groq'},\n {title: 'HTML', value: 'html'},\n {title: 'Java', value: 'java'},\n {title: 'JavaScript', value: 'javascript'},\n {title: 'JSON', value: 'json'},\n {title: 'JSX', value: 'jsx'},\n {title: 'Markdown', value: 'markdown'},\n {title: 'MySQL', value: 'mysql'},\n {title: 'PHP', value: 'php'},\n {title: 'Plain text', value: 'text'},\n {title: 'Python', value: 'python'},\n {title: 'Ruby', value: 'ruby'},\n {title: 'SASS', value: 'sass'},\n {title: 'SCSS', value: 'scss'},\n {title: 'sh', value: 'sh'},\n {title: 'SQL', value: 'sql'},\n {title: 'TSX', value: 'tsx'},\n {title: 'TypeScript', value: 'typescript'},\n {title: 'XML', value: 'xml'},\n {title: 'YAML', value: 'yaml'},\n]\n\nexport const LANGUAGE_ALIASES: Record<string, string | undefined> = {js: 'javascript'}\n\nexport const PATH_LANGUAGE = ['language']\nexport const PATH_CODE = ['code']\nexport const PATH_FILENAME = ['filename']\n","import {useMemo} from 'react'\n\nimport type {CodeInputLanguage, CodeInputValue, CodeSchemaType} from '../types'\n\nimport {LANGUAGE_ALIASES, SUPPORTED_LANGUAGES} from '../config'\n\nexport const defaultLanguageMode = 'text'\n\nexport function useLanguageMode(\n schemaType: CodeSchemaType,\n value?: CodeInputValue,\n): {\n language: string\n languageMode: string\n languages: CodeInputLanguage[]\n} {\n const languages = useLanguageAlternatives(schemaType)\n const fixedLanguage = schemaType.options?.language\n const language = value?.language ?? fixedLanguage ?? defaultLanguageMode\n\n // the language config from the schema\n const configured = languages.find((entry) => entry.value === language)\n const languageMode = configured?.mode ?? resolveAliasedLanguage(language) ?? defaultLanguageMode\n\n return {language, languageMode, languages}\n}\n\nfunction resolveAliasedLanguage(lang?: string) {\n return (lang && LANGUAGE_ALIASES[lang]) ?? lang\n}\n\nfunction useLanguageAlternatives(type: CodeSchemaType) {\n return useMemo((): CodeInputLanguage[] => {\n const languageAlternatives = type.options?.languageAlternatives\n if (!languageAlternatives) {\n return SUPPORTED_LANGUAGES\n }\n\n if (!Array.isArray(languageAlternatives)) {\n throw new Error(\n `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`,\n )\n }\n\n return languageAlternatives.reduce((acc: CodeInputLanguage[], {title, value: val, mode}) => {\n const alias = LANGUAGE_ALIASES[val]\n if (alias) {\n console.warn(\n `'options.languageAlternatives' lists a language with value \"%s\", which is an alias of \"%s\" - please replace the value to read \"%s\"`,\n val,\n alias,\n alias,\n )\n\n return acc.concat({title, value: alias, mode: mode})\n }\n return acc.concat({title, value: val, mode})\n }, [])\n }, [type])\n}\n","import {Select} from '@sanity/ui'\nimport {type ChangeEvent, useCallback} from 'react'\nimport {set, type StringInputProps, unset} from 'sanity'\n\nimport type {CodeInputLanguage} from './types'\n\nexport interface LanguageInputProps {\n language: string\n languages: CodeInputLanguage[]\n onChange: StringInputProps['onChange']\n elementProps: StringInputProps['elementProps']\n}\n\n/** @internal */\nexport function LanguageInput(props: LanguageInputProps) {\n const {language, languages, onChange, elementProps} = props\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLSelectElement>) => {\n const newValue = e.currentTarget.value\n onChange(newValue ? set(newValue) : unset())\n },\n [onChange],\n )\n\n return (\n <Select {...elementProps} value={language} onChange={handleChange}>\n {languages.map((lang: {title: string; value: string}) => (\n <option key={lang.value} value={lang.value}>\n {lang.title}\n </option>\n ))}\n </Select>\n )\n}\n","import {useCallback} from 'react'\nimport {\n type FieldMember,\n type InputProps,\n MemberField,\n type MemberFieldProps,\n type PrimitiveInputElementProps,\n} from 'sanity'\n\nimport type {CodeInputLanguage} from './types'\n\nimport {LanguageInput} from './LanguageInput'\n\nexport function LanguageField(\n props: MemberFieldProps & {member: FieldMember; language: string; languages: CodeInputLanguage[]},\n) {\n const {member, languages, language, renderItem, renderField, renderPreview} = props\n\n const renderInput = useCallback(\n ({elementProps, onChange}: Omit<InputProps, 'renderDefault'>) => {\n return (\n <LanguageInput\n onChange={onChange}\n // oxlint-disable-next-line no-unsafe-type-assertion - fix later\n elementProps={elementProps as PrimitiveInputElementProps}\n language={language}\n languages={languages}\n />\n )\n },\n [languages, language],\n )\n\n return (\n <MemberField\n member={member}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )\n}\n","/** @internal */\n// todo: import from @sanity/ui instead\nexport function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\n/** @internal */\n// todo: import from @sanity/ui instead\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: {offset: number; width: number}\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import type {FieldMember, ObjectMember} from 'sanity'\n\nimport {useMemo} from 'react'\n\n/** @internal */\nexport function useFieldMember(\n members: ObjectMember[],\n fieldName: string,\n): FieldMember | undefined {\n return useMemo(\n () =>\n members.find(\n (member): member is FieldMember => member.kind === 'field' && member.name === fieldName,\n ),\n [members, fieldName],\n )\n}\n","import {Box, Card, Stack, Text} from '@sanity/ui'\nimport {Suspense, useCallback} from 'react'\nimport {\n MemberField,\n type ObjectInputProps,\n type RenderInputCallback,\n set,\n setIfMissing,\n unset,\n} from 'sanity'\nimport {css, styled} from 'styled-components'\n\nimport type {CodeInputValue, CodeSchemaType} from './types'\n\nimport {CodeMirrorProxy, useMounted} from './codemirror/useCodeMirror'\nimport {useLanguageMode} from './codemirror/useLanguageMode'\nimport {PATH_CODE} from './config'\nimport {LanguageField} from './LanguageField'\nimport {focusRingBorderStyle, focusRingStyle} from './ui/focusRingStyle'\nimport {useFieldMember} from './useFieldMember'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\n/**\n * @public\n */\nexport interface CodeInputProps extends ObjectInputProps<CodeInputValue, CodeSchemaType> {}\n\nconst EditorContainer = styled(Card)(({theme}) => {\n const {focusRing, input} = theme.sanity\n const base = theme.sanity.color.base\n const color = theme.sanity.color.input\n const border = {\n color: color.default.enabled.border,\n width: input.border.width,\n }\n\n return css`\n --input-box-shadow: ${focusRingBorderStyle(border)};\n\n box-shadow: var(--input-box-shadow);\n height: 250px;\n min-height: 80px;\n overflow-y: auto;\n position: relative;\n resize: vertical;\n z-index: 0;\n\n & > .cm-theme {\n height: 100%;\n }\n\n &:focus-within {\n --input-box-shadow: ${focusRingStyle({\n base,\n border,\n focusRing,\n })};\n }\n `\n})\n\n/** @public */\nexport function CodeInput(props: CodeInputProps): React.JSX.Element {\n const {\n members,\n elementProps,\n onChange,\n readOnly,\n renderField,\n renderInput,\n renderItem,\n renderPreview,\n schemaType: type,\n value,\n onPathFocus,\n } = props\n\n const languageFieldMember = useFieldMember(members, 'language')\n const filenameMember = useFieldMember(members, 'filename')\n const codeFieldMember = useFieldMember(members, 'code')\n\n const handleCodeFocus = useCallback(() => {\n onPathFocus(PATH_CODE)\n }, [onPathFocus])\n\n const onHighlightChange = useCallback(\n (lines: number[]) => onChange(set(lines, ['highlightedLines'])),\n [onChange],\n )\n\n const handleCodeChange = useCallback(\n (code: string) => {\n const path = PATH_CODE\n const fixedLanguage = type.options?.language\n\n onChange([\n setIfMissing({_type: type.name, language: fixedLanguage}),\n code ? set(code, path) : unset(path),\n ])\n },\n [onChange, type],\n )\n const {languages, language, languageMode} = useLanguageMode(props.schemaType, props.value)\n\n const mounted = useMounted()\n\n const renderCodeInput: RenderInputCallback = useCallback(\n (inputProps) => {\n return (\n <EditorContainer border overflow=\"hidden\" radius={1} sizing=\"border\" readOnly={readOnly}>\n {mounted && (\n <Suspense\n fallback={\n <Box padding={3}>\n <Text>Loading code editor...</Text>\n </Box>\n }\n >\n <CodeMirrorProxy\n languageMode={languageMode}\n onChange={handleCodeChange}\n // oxlint-disable-next-line no-unsafe-type-assertion - fix later\n value={inputProps.value as string}\n highlightLines={value?.highlightedLines}\n onHighlightChange={onHighlightChange}\n readOnly={readOnly}\n onFocus={handleCodeFocus}\n onBlur={elementProps.onBlur}\n />\n </Suspense>\n )}\n </EditorContainer>\n )\n },\n [\n readOnly,\n mounted,\n languageMode,\n handleCodeChange,\n value?.highlightedLines,\n onHighlightChange,\n handleCodeFocus,\n elementProps.onBlur,\n ],\n )\n\n return (\n <Stack space={4}>\n {languageFieldMember && (\n <LanguageField\n member={languageFieldMember}\n language={language}\n languages={languages}\n renderField={renderField}\n renderItem={renderItem}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {type.options?.withFilename && filenameMember && (\n <MemberField\n member={filenameMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {codeFieldMember && (\n <MemberField\n member={codeFieldMember}\n renderInput={renderCodeInput}\n renderItem={renderItem}\n renderField={renderField}\n renderPreview={renderPreview}\n />\n )}\n </Stack>\n )\n}\n","export function getMedia(language?: string) {\n if (language === 'jsx') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <g fill=\"#61DAFB\">\n <circle cx=\"64\" cy=\"64\" r=\"11.4\" />\n <path d=\"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z\" />\n </g>\n </svg>\n )\n }\n\n if (language === 'javascript') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path fill=\"#F0DB4F\" d=\"M1.408 1.408h125.184v125.185H1.408z\" />\n <path\n fill=\"#323330\"\n d=\"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z\"\n />\n </svg>\n )\n }\n\n if (language === 'php') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 400\">\n <g transform=\"translate(-44.632 -141.55)\">\n <g transform=\"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)\">\n <path d=\"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n <path d=\"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054\" />\n <path d=\"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n </g>\n </g>\n </svg>\n )\n }\n\n if (language === 'json') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 160 160\"\n >\n <defs>\n <linearGradient id=\"a\">\n <stop offset=\"0\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n x1=\"-553.27\"\n y1=\"525.908\"\n x2=\"-666.116\"\n y2=\"413.045\"\n id=\"c\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n <linearGradient\n x1=\"-666.117\"\n y1=\"413.045\"\n x2=\"-553.27\"\n y2=\"525.908\"\n id=\"b\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n </defs>\n <path\n d=\"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#b)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n <path\n d=\"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#c)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n </svg>\n )\n }\n\n return undefined\n}\n","import type {PreviewProps} from 'sanity'\n\nimport {Box, Card, Flex, Label, Text} from '@sanity/ui'\nimport {Suspense} from 'react'\nimport {styled} from 'styled-components'\n\nimport type {CodeInputValue, CodeSchemaType} from './types'\n\nimport {CodeMirrorProxy, useMounted} from './codemirror/useCodeMirror'\nimport {useLanguageMode} from './codemirror/useLanguageMode'\n\nconst PreviewContainer = styled(Box)`\n position: relative;\n`\n\n/**\n * @public\n */\nexport interface PreviewCodeProps extends PreviewProps {\n selection?: CodeInputValue\n}\n\n/**\n * @public\n */\nexport function PreviewCode(props: PreviewCodeProps) {\n const {selection, schemaType: type} = props\n // oxlint-disable-next-line no-unsafe-type-assertion - fix later\n const {languageMode} = useLanguageMode(type as CodeSchemaType, props.selection)\n\n const mounted = useMounted()\n return (\n <PreviewContainer>\n <Card padding={4}>\n {selection?.filename || selection?.language ? (\n <Card\n paddingBottom={4}\n marginBottom={selection.code ? 4 : 0}\n borderBottom={!!selection.code}\n >\n <Flex align=\"center\" justify=\"flex-end\">\n {selection?.filename ? (\n <Box flex={1}>\n <Text>\n <code>{selection.filename}</code>\n </Text>\n </Box>\n ) : null}\n {selection?.language ? <Label muted>{selection.language}</Label> : null}\n </Flex>\n </Card>\n ) : null}\n {mounted && (\n <Suspense fallback={<Card padding={2}>Loading code preview...</Card>}>\n <CodeMirrorProxy\n readOnly\n editable={false}\n value={selection?.code || ''}\n highlightLines={selection?.highlightedLines || []}\n basicSetup={{\n lineNumbers: false,\n foldGutter: false,\n highlightSelectionMatches: false,\n highlightActiveLineGutter: false,\n highlightActiveLine: false,\n }}\n languageMode={languageMode}\n />\n </Suspense>\n )}\n </Card>\n </PreviewContainer>\n )\n}\n","import {CodeBlockIcon} from '@sanity/icons'\nimport {defineType, type ObjectDefinition} from 'sanity'\n\nimport type {CodeOptions} from './types'\n\nimport {CodeInput} from './CodeInput'\nimport {getMedia} from './getMedia'\nimport {PreviewCode} from './PreviewCode'\n\n/**\n * @public\n */\nexport const codeTypeName = 'code'\n\n/**\n * @public\n */\nexport interface CodeDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof codeTypeName\n options?: CodeOptions\n}\n\ndeclare module 'sanity' {\n // makes type: 'code' narrow correctly when using defineType/defineField/defineArrayMember\n export interface IntrinsicDefinitions {\n code: CodeDefinition\n }\n}\n\n/**\n * @public\n */\nexport const codeSchema = defineType({\n name: 'code',\n type: 'object',\n title: 'Code',\n components: {input: CodeInput, preview: PreviewCode},\n icon: CodeBlockIcon,\n fields: [\n {\n name: 'language',\n title: 'Language',\n type: 'string',\n },\n {\n name: 'filename',\n title: 'Filename',\n type: 'string',\n },\n {\n title: 'Code',\n name: 'code',\n type: 'text',\n },\n {\n title: 'Highlighted lines',\n name: 'highlightedLines',\n type: 'array',\n of: [\n {\n type: 'number',\n title: 'Highlighted line',\n },\n ],\n },\n ],\n preview: {\n select: {\n language: 'language',\n code: 'code',\n filename: 'filename',\n highlightedLines: 'highlightedLines',\n },\n prepare: (value: {\n language?: string\n code?: string\n filename?: string\n highlightedLines?: number[]\n }) => {\n return {\n title: value.filename || (value.language || 'unknown').toUpperCase(),\n media: getMedia(value?.language),\n selection: value,\n }\n },\n },\n})\n","import {createContext} from 'react'\n\nimport type {CodeInputConfig} from '../plugin'\n\nexport const CodeInputConfigContext = createContext<CodeInputConfig | undefined>(undefined)\n","import {definePlugin} from 'sanity'\n\nimport type {CodeMode} from './codemirror/defaultCodeModes'\n\nimport {CodeInputConfigContext} from './codemirror/CodeModeContext'\nimport {codeSchema} from './schema'\n\nexport interface CodeInputConfig {\n codeModes?: CodeMode[]\n}\n\n/**\n * @public\n */\nexport const codeInput = definePlugin<CodeInputConfig | void>((config) => {\n const codeModes = config && config.codeModes\n const basePlugin = {\n name: '@sanity/code-input',\n schema: {types: [codeSchema]},\n }\n if (!codeModes) {\n return basePlugin\n }\n return {\n ...basePlugin,\n form: {\n components: {\n input: (props) => {\n if (props.id !== 'root') {\n return props.renderDefault(props)\n }\n return (\n <CodeInputConfigContext.Provider value={config}>\n {props.renderDefault(props)}\n </CodeInputConfigContext.Provider>\n )\n },\n },\n },\n }\n})\n"],"names":["CodeMirrorProxy","lazy","useMounted","$","_c","mounted","setMounted","useState","t0","t1","Symbol","for","requestAnimationFrame","startTransition","useEffect","SUPPORTED_LANGUAGES","title","value","LANGUAGE_ALIASES","js","PATH_CODE","defaultLanguageMode","useLanguageMode","schemaType","languages","useLanguageAlternatives","fixedLanguage","options","language","entry","find","configured","mode","resolveAliasedLanguage","languageMode","t2","lang","type","bb0","languageAlternatives","Array","isArray","Error","reduce","_temp","acc","val","alias","console","warn","concat","LanguageInput","props","onChange","elementProps","e","newValue","currentTarget","set","unset","handleChange","map","LanguageField","member","renderItem","renderField","renderPreview","renderInput","focusRingBorderStyle","border","width","color","focusRingStyle","opts","base","focusRing","focusRingOutsetWidth","offset","focusRingInsetWidth","bgColor","bg","filter","Boolean","join","useFieldMember","members","fieldName","kind","name","EditorContainer","styled","Card","withConfig","displayName","componentId","theme","input","sanity","default","enabled","css","CodeInput","readOnly","onPathFocus","languageFieldMember","filenameMember","codeFieldMember","handleCodeFocus","lines","onHighlightChange","code","setIfMissing","_type","handleCodeChange","t3","onBlur","highlightedLines","inputProps","renderCodeInput","t4","t5","withFilename","t6","t7","getMedia","marker","PreviewContainer","Box","PreviewCode","selection","filename","lineNumbers","foldGutter","highlightSelectionMatches","highlightActiveLineGutter","highlightActiveLine","codeTypeName","codeSchema","defineType","components","preview","icon","CodeBlockIcon","fields","of","select","prepare","toUpperCase","media","CodeInputConfigContext","createContext","undefined","codeInput","definePlugin","config","codeModes","basePlugin","schema","types","form","id","renderDefault"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import * as sanity2 from "sanity";
|
|
2
|
+
import { ObjectDefinition, ObjectInputProps, ObjectSchemaType, PreviewProps } from "sanity";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
|
+
import { Extension } from "@codemirror/state";
|
|
5
|
+
interface CodeInputLanguage {
|
|
6
|
+
title: string;
|
|
7
|
+
value: string;
|
|
8
|
+
mode?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
interface CodeInputValue {
|
|
14
|
+
_type?: 'code';
|
|
15
|
+
code?: string;
|
|
16
|
+
filename?: string;
|
|
17
|
+
language?: string;
|
|
18
|
+
highlightedLines?: number[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
interface CodeOptions {
|
|
24
|
+
theme?: string;
|
|
25
|
+
darkTheme?: string;
|
|
26
|
+
languageAlternatives?: CodeInputLanguage[];
|
|
27
|
+
language?: string;
|
|
28
|
+
withFilename?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
interface CodeSchemaType extends Omit<ObjectSchemaType, 'options'> {
|
|
34
|
+
options?: CodeOptions;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
declare const codeTypeName = "code";
|
|
40
|
+
/**
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
interface CodeDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {
|
|
44
|
+
type: typeof codeTypeName;
|
|
45
|
+
options?: CodeOptions;
|
|
46
|
+
}
|
|
47
|
+
declare module 'sanity' {
|
|
48
|
+
interface IntrinsicDefinitions {
|
|
49
|
+
code: CodeDefinition;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @public
|
|
54
|
+
*/
|
|
55
|
+
declare const codeSchema: {
|
|
56
|
+
type: "object";
|
|
57
|
+
name: "code";
|
|
58
|
+
} & Omit<ObjectDefinition, "preview"> & {
|
|
59
|
+
preview?: sanity2.PreviewConfig<{
|
|
60
|
+
language: string;
|
|
61
|
+
code: string;
|
|
62
|
+
filename: string;
|
|
63
|
+
highlightedLines: string;
|
|
64
|
+
}, Record<"code" | "filename" | "highlightedLines" | "language", any>> | undefined;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
interface CodeInputProps extends ObjectInputProps<CodeInputValue, CodeSchemaType> {}
|
|
70
|
+
/** @public */
|
|
71
|
+
declare function CodeInput(props: CodeInputProps): React.JSX.Element;
|
|
72
|
+
/**
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
75
|
+
interface PreviewCodeProps extends PreviewProps {
|
|
76
|
+
selection?: CodeInputValue;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @public
|
|
80
|
+
*/
|
|
81
|
+
declare function PreviewCode(props: PreviewCodeProps): react_jsx_runtime0.JSX.Element;
|
|
82
|
+
interface CodeMode {
|
|
83
|
+
name: string;
|
|
84
|
+
loader: ModeLoader;
|
|
85
|
+
}
|
|
86
|
+
type ModeLoader = () => Promise<Extension | undefined> | Extension | undefined;
|
|
87
|
+
interface CodeInputConfig {
|
|
88
|
+
codeModes?: CodeMode[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
declare const codeInput: sanity2.Plugin<void | CodeInputConfig>;
|
|
94
|
+
export { type CodeDefinition, type CodeInput, type CodeInputLanguage, type CodeInputProps, type CodeInputValue, type CodeOptions, type CodeSchemaType, PreviewCode, type PreviewCodeProps, codeInput, codeSchema, codeTypeName };
|
|
95
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["ObjectSchemaType","CodeInputLanguage","CodeInputValue","CodeOptions","CodeSchemaType","Omit","ObjectDefinition","CodeOptions","codeTypeName","CodeDefinition","Omit","_0","sideEffect","codeSchema","Record","sanity2","PreviewConfig","ObjectInputProps","CodeInputValue","CodeSchemaType","CodeInputLanguage","CodeInputProps","CodeInput","React","JSX","Element","PreviewProps","CodeInputValue","PreviewCodeProps","PreviewCode","react_jsx_runtime0","JSX","Element","Extension","CodeMode","ModeLoader","Promise","defaultCodeModes","CodeMode","CodeInputConfig","codeInput","sanity1","Plugin"],"sources":["../src/types.d.ts","../src/schema.d.ts","../src/CodeInput.d.ts","../src/PreviewCode.d.ts","../src/codemirror/defaultCodeModes.d.ts","../src/plugin.d.ts"],"sourcesContent":["import type { ObjectSchemaType } from 'sanity';\nexport interface CodeInputLanguage {\n title: string;\n value: string;\n mode?: string;\n}\n/**\n * @public\n */\nexport interface CodeInputValue {\n _type?: 'code';\n code?: string;\n filename?: string;\n language?: string;\n highlightedLines?: number[];\n}\n/**\n * @public\n */\nexport interface CodeOptions {\n theme?: string;\n darkTheme?: string;\n languageAlternatives?: CodeInputLanguage[];\n language?: string;\n withFilename?: boolean;\n}\n/**\n * @public\n */\nexport interface CodeSchemaType extends Omit<ObjectSchemaType, 'options'> {\n options?: CodeOptions;\n}\n//# sourceMappingURL=types.d.ts.map","import { type ObjectDefinition } from 'sanity';\nimport type { CodeOptions } from './types';\n/**\n * @public\n */\nexport declare const codeTypeName = \"code\";\n/**\n * @public\n */\nexport interface CodeDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof codeTypeName;\n options?: CodeOptions;\n}\ndeclare module 'sanity' {\n interface IntrinsicDefinitions {\n code: CodeDefinition;\n }\n}\n/**\n * @public\n */\nexport declare const codeSchema: {\n type: \"object\";\n name: \"code\";\n} & Omit<ObjectDefinition, \"preview\"> & {\n preview?: import(\"sanity\").PreviewConfig<{\n language: string;\n code: string;\n filename: string;\n highlightedLines: string;\n }, Record<\"code\" | \"filename\" | \"highlightedLines\" | \"language\", any>> | undefined;\n};\n//# sourceMappingURL=schema.d.ts.map","import { type ObjectInputProps } from 'sanity';\nimport type { CodeInputValue, CodeSchemaType } from './types';\nexport type { CodeInputLanguage, CodeInputValue } from './types';\n/**\n * @public\n */\nexport interface CodeInputProps extends ObjectInputProps<CodeInputValue, CodeSchemaType> {\n}\n/** @public */\nexport declare function CodeInput(props: CodeInputProps): React.JSX.Element;\n//# sourceMappingURL=CodeInput.d.ts.map","import type { PreviewProps } from 'sanity';\nimport type { CodeInputValue } from './types';\n/**\n * @public\n */\nexport interface PreviewCodeProps extends PreviewProps {\n selection?: CodeInputValue;\n}\n/**\n * @public\n */\nexport declare function PreviewCode(props: PreviewCodeProps): import(\"react/jsx-runtime\").JSX.Element;\n//# sourceMappingURL=PreviewCode.d.ts.map","import type { Extension } from '@codemirror/state';\nexport interface CodeMode {\n name: string;\n loader: ModeLoader;\n}\nexport type ModeLoader = () => Promise<Extension | undefined> | Extension | undefined;\nexport declare const defaultCodeModes: CodeMode[];\n//# sourceMappingURL=defaultCodeModes.d.ts.map","import type { CodeMode } from './codemirror/defaultCodeModes';\nexport interface CodeInputConfig {\n codeModes?: CodeMode[];\n}\n/**\n * @public\n */\nexport declare const codeInput: import(\"sanity\").Plugin<void | CodeInputConfig>;\n//# sourceMappingURL=plugin.d.ts.map"],"mappings":";;;;UACiBC,iBAAAA;;;;AAAjB;AAQA;AAUA;AAUA;AAA6CD,UApB5BE,cAAAA,CAoB4BF;EAC/BG,KAAAA,CAAAA,EAAAA,MAAAA;EAD0BE,IAAAA,CAAAA,EAAAA,MAAAA;EAAI,QAAA,CAAA,EAAA,MAAA;;ECxBvBG,gBAAY,CAAA,EAAA,MAAA,EAAA;AAIjC;;;;AAAwCE,UDUvBP,WAAAA,CCVuBO;EAAI,KAAA,CAAA,EAAA,MAAA;EAG3CC,SAAA,CAAA,EAAA,MAAA;EAAA,oBAAA,CAAA,EDU0BV,iBCV1B,EAAA;UAGaQ,CAAAA,EAAAA,MAAAA;EAAcG,YAAA,CAAA,EAAA,OAAA;;AAM5B;;;AASOE,UDDUV,cAAAA,SAAuBC,ICCjCS,CDDsCd,gBCCtCc,EAAAA,SAAAA,CAAAA,CAAAA;EAAMC,OALkBC,CAAAA,EDKjBb,WCLiBa;;;;;ADxBdf,cCIIO,YAAAA,GDJa,MAAA;AAQlC;AAUA;AAUA;AAA6CR,UCpB5BS,cAAAA,SAAuBC,IDoBKV,CCpBAM,gBDoBAN,EAAAA,MAAAA,GAAAA,QAAAA,GAAAA,SAAAA,CAAAA,CAAAA;EAC/BG,IAAAA,EAAAA,OCpBGK,YDoBHL;EAD0BE,OAAAA,CAAAA,EClB1BE,WDkB0BF;;;ECxBnBG,UAAAA,oBAAY,CAAA;IAIhBC,IAAAA,EAMHA,cANiB;EAAcH;;;;;AAG5CK,cASoBE,UATpB,EAAA;EAAA,IAAA,EAAA,QAAA;MAGaJ,EAAAA,MAAAA;CAAcG,GASxBF,IATwBE,CASnBN,gBATmB,EAAA,SAAA,CAAA,GAAA;EAAA,OAAA,CAAA,EAefS,OAAAA,CALkBC,aAVH,CAAA;IAMPH,QAAAA,EAUpB,MAAA;IAPQP,IAAAA,EAAAA,MAAAA;IAALI,QAAAA,EAAAA,MAAAA;IAMGI,gBAAAA,EAAAA,MAAAA;EAAMC,CAAAA,EAAND,MALwBE,CAAAA,MAAAA,GAAAA,UAAAA,GAAAA,kBAAAA,GAAAA,UAAAA,EAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA;CAAa;;;ADxB5C;AAQiBd,UEHAmB,cAAAA,SAAuBJ,gBFGT,CEH0BC,cFG1B,EEH0CC,cFG1C,CAAA,CAAA,CAU/B;AAUA;AAA6CnB,iBEpBrBsB,SAAAA,CFoBqBtB,KAAAA,EEpBJqB,cFoBIrB,CAAAA,EEpBauB,KAAAA,CAAMC,GAAAA,CAAIC,OFoBvBzB;;;;AA5B5BC,UGIA2B,gBAAAA,SAAyBF,YHJR,CAAA;EAQjBxB,SAAAA,CAAAA,EGHDyB,cHGe;AAU/B;AAUA;;;AAAwCtB,iBGlBhBwB,WAAAA,CHkBgBxB,KAAAA,EGlBGuB,gBHkBHvB,CAAAA,EGlBkDyB,kBAAAA,CAAAC,GAAAA,CAAIC,OHkBtD3B;UI5BvB6B,QAAAA;;UAELC;;AJFKlC,KIILkC,UAAAA,GJJsB,GAAA,GIIHC,OJJG,CIIKH,SJJL,GAAA,SAAA,CAAA,GII8BA,SJJ9B,GAAA,SAAA;UKAjBM,eAAAA;cACDD;;;ALDhB;AAQA;AAUiBnC,cKZIqC,SLeMvC,EKfmDwC,OAAAA,CAA7BC,MLeL,CAAA,IAAA,GKfmBH,eLenB,CAAA"}
|