@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.
Files changed (51) hide show
  1. package/README.md +1 -16
  2. package/assets/all-options.png +0 -0
  3. package/assets/basic-input.png +0 -0
  4. package/dist/_chunks-es/CodeMirrorProxy.js +510 -0
  5. package/dist/_chunks-es/CodeMirrorProxy.js.map +1 -0
  6. package/dist/_chunks-es/index.js +427 -0
  7. package/dist/_chunks-es/index.js.map +1 -0
  8. package/dist/index.d.ts +95 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/package.json +31 -86
  11. package/lib/_chunks-cjs/CodeMirrorProxy.cjs +0 -407
  12. package/lib/_chunks-cjs/CodeMirrorProxy.cjs.map +0 -1
  13. package/lib/_chunks-cjs/index.cjs +0 -433
  14. package/lib/_chunks-cjs/index.cjs.map +0 -1
  15. package/lib/_chunks-es/CodeMirrorProxy.js +0 -395
  16. package/lib/_chunks-es/CodeMirrorProxy.js.map +0 -1
  17. package/lib/_chunks-es/index.js +0 -437
  18. package/lib/_chunks-es/index.js.map +0 -1
  19. package/lib/index.cjs +0 -8
  20. package/lib/index.cjs.map +0 -1
  21. package/lib/index.d.cts +0 -121
  22. package/lib/index.d.ts +0 -121
  23. package/sanity.json +0 -8
  24. package/src/CodeInput.tsx +0 -181
  25. package/src/LanguageField.tsx +0 -41
  26. package/src/LanguageInput.tsx +0 -35
  27. package/src/PreviewCode.tsx +0 -71
  28. package/src/codemirror/CodeMirrorProxy.tsx +0 -159
  29. package/src/codemirror/CodeModeContext.tsx +0 -5
  30. package/src/codemirror/defaultCodeModes.ts +0 -109
  31. package/src/codemirror/extensions/backwardsCompatibleTone.ts +0 -19
  32. package/src/codemirror/extensions/highlightLineExtension.ts +0 -175
  33. package/src/codemirror/extensions/theme.ts +0 -65
  34. package/src/codemirror/extensions/useCodeMirrorTheme.ts +0 -64
  35. package/src/codemirror/extensions/useFontSize.ts +0 -24
  36. package/src/codemirror/useCodeMirror-client.test.tsx +0 -51
  37. package/src/codemirror/useCodeMirror-server.test.tsx +0 -18
  38. package/src/codemirror/useCodeMirror.tsx +0 -11
  39. package/src/codemirror/useLanguageMode.tsx +0 -60
  40. package/src/config.ts +0 -35
  41. package/src/getMedia.tsx +0 -93
  42. package/src/index.ts +0 -8
  43. package/src/plugin.tsx +0 -40
  44. package/src/sanity-ui.d.ts +0 -5
  45. package/src/schema.tsx +0 -86
  46. package/src/types.ts +0 -35
  47. package/src/ui/focusRingStyle.ts +0 -27
  48. package/src/useFieldMember.ts +0 -16
  49. package/v2-incompatible.js +0 -11
  50. /package/{lib → dist}/index.js +0 -0
  51. /package/{lib → dist}/index.js.map +0 -0
@@ -1,437 +0,0 @@
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 { Select, Card, Box, Text, Stack, Flex, Label } from "@sanity/ui";
5
- import { lazy, useState, useEffect, startTransition, useMemo, useCallback, Suspense, createContext } from "react";
6
- import { styled, css } from "styled-components";
7
- const CodeMirrorProxy = lazy(() => import("./CodeMirrorProxy.js"));
8
- function useMounted() {
9
- const [mounted, setMounted] = useState(!1);
10
- return useEffect(() => {
11
- requestAnimationFrame(() => startTransition(() => setMounted(!0)));
12
- }, []), mounted;
13
- }
14
- const SUPPORTED_LANGUAGES = [
15
- { title: "Batch file", value: "batchfile" },
16
- { title: "C#", value: "csharp" },
17
- { title: "CSS", value: "css" },
18
- { title: "Go", value: "golang" },
19
- { title: "GROQ", value: "groq" },
20
- { title: "HTML", value: "html" },
21
- { title: "Java", value: "java" },
22
- { title: "JavaScript", value: "javascript" },
23
- { title: "JSON", value: "json" },
24
- { title: "JSX", value: "jsx" },
25
- { title: "Markdown", value: "markdown" },
26
- { title: "MySQL", value: "mysql" },
27
- { title: "PHP", value: "php" },
28
- { title: "Plain text", value: "text" },
29
- { title: "Python", value: "python" },
30
- { title: "Ruby", value: "ruby" },
31
- { title: "SASS", value: "sass" },
32
- { title: "SCSS", value: "scss" },
33
- { title: "sh", value: "sh" },
34
- { title: "SQL", value: "sql" },
35
- { title: "TSX", value: "tsx" },
36
- { title: "TypeScript", value: "typescript" },
37
- { title: "XML", value: "xml" },
38
- { title: "YAML", value: "yaml" }
39
- ], LANGUAGE_ALIASES = { js: "javascript" }, PATH_CODE = ["code"], defaultLanguageMode = "text";
40
- function useLanguageMode(schemaType, value) {
41
- const languages = useLanguageAlternatives(schemaType), fixedLanguage = schemaType.options?.language, language = value?.language ?? fixedLanguage ?? defaultLanguageMode, languageMode = languages.find((entry) => entry.value === language)?.mode ?? resolveAliasedLanguage(language) ?? defaultLanguageMode;
42
- return { language, languageMode, languages };
43
- }
44
- function resolveAliasedLanguage(lang) {
45
- return (lang && LANGUAGE_ALIASES[lang]) ?? lang;
46
- }
47
- function useLanguageAlternatives(type) {
48
- return useMemo(() => {
49
- const languageAlternatives = type.options?.languageAlternatives;
50
- if (!languageAlternatives)
51
- return SUPPORTED_LANGUAGES;
52
- if (!Array.isArray(languageAlternatives))
53
- throw new Error(
54
- `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`
55
- );
56
- return languageAlternatives.reduce((acc, { title, value: val, mode }) => {
57
- const alias = LANGUAGE_ALIASES[val];
58
- return alias ? (console.warn(
59
- `'options.languageAlternatives' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"`,
60
- val,
61
- alias,
62
- alias
63
- ), acc.concat({ title, value: alias, mode })) : acc.concat({ title, value: val, mode });
64
- }, []);
65
- }, [type]);
66
- }
67
- function LanguageInput(props) {
68
- const { language, languages, onChange, elementProps } = props, handleChange = useCallback(
69
- (e) => {
70
- const newValue = e.currentTarget.value;
71
- onChange(newValue ? set(newValue) : unset());
72
- },
73
- [onChange]
74
- );
75
- return /* @__PURE__ */ jsx(Select, { ...elementProps, value: language, onChange: handleChange, children: languages.map((lang) => /* @__PURE__ */ jsx("option", { value: lang.value, children: lang.title }, lang.value)) });
76
- }
77
- function LanguageField(props) {
78
- const { member, languages, language, renderItem, renderField, renderPreview } = props, renderInput = useCallback(
79
- ({ elementProps, onChange }) => /* @__PURE__ */ jsx(
80
- LanguageInput,
81
- {
82
- onChange,
83
- elementProps,
84
- language,
85
- languages
86
- }
87
- ),
88
- [languages, language]
89
- );
90
- return /* @__PURE__ */ jsx(
91
- MemberField,
92
- {
93
- member,
94
- renderItem,
95
- renderField,
96
- renderInput,
97
- renderPreview
98
- }
99
- );
100
- }
101
- function focusRingBorderStyle(border) {
102
- return `inset 0 0 0 ${border.width}px ${border.color}`;
103
- }
104
- function focusRingStyle(opts) {
105
- const { base, border, focusRing } = opts, focusRingOutsetWidth = focusRing.offset + focusRing.width, focusRingInsetWidth = 0 - focusRing.offset, bgColor = base ? base.bg : "var(--card-bg-color)";
106
- return [
107
- focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,
108
- border && focusRingBorderStyle(border),
109
- focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,
110
- focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`
111
- ].filter(Boolean).join(",");
112
- }
113
- function useFieldMember(members, fieldName) {
114
- return useMemo(
115
- () => members.find(
116
- (member) => member.kind === "field" && member.name === fieldName
117
- ),
118
- [members, fieldName]
119
- );
120
- }
121
- const EditorContainer = styled(Card)(({ theme }) => {
122
- const { focusRing, input } = theme.sanity, base = theme.sanity.color.base, border = {
123
- color: theme.sanity.color.input.default.enabled.border,
124
- width: input.border.width
125
- };
126
- return css`
127
- --input-box-shadow: ${focusRingBorderStyle(border)};
128
-
129
- box-shadow: var(--input-box-shadow);
130
- height: 250px;
131
- min-height: 80px;
132
- overflow-y: auto;
133
- position: relative;
134
- resize: vertical;
135
- z-index: 0;
136
-
137
- & > .cm-theme {
138
- height: 100%;
139
- }
140
-
141
- &:focus-within {
142
- --input-box-shadow: ${focusRingStyle({
143
- base,
144
- border,
145
- focusRing
146
- })};
147
- }
148
- `;
149
- });
150
- function CodeInput(props) {
151
- const {
152
- members,
153
- elementProps,
154
- onChange,
155
- readOnly,
156
- renderField,
157
- renderInput,
158
- renderItem,
159
- renderPreview,
160
- schemaType: type,
161
- value,
162
- onPathFocus
163
- } = props, languageFieldMember = useFieldMember(members, "language"), filenameMember = useFieldMember(members, "filename"), codeFieldMember = useFieldMember(members, "code"), handleCodeFocus = useCallback(() => {
164
- onPathFocus(PATH_CODE);
165
- }, [onPathFocus]), onHighlightChange = useCallback(
166
- (lines) => onChange(set(lines, ["highlightedLines"])),
167
- [onChange]
168
- ), handleCodeChange = useCallback(
169
- (code) => {
170
- const path = PATH_CODE, fixedLanguage = type.options?.language;
171
- onChange([
172
- setIfMissing({ _type: type.name, language: fixedLanguage }),
173
- code ? set(code, path) : unset(path)
174
- ]);
175
- },
176
- [onChange, type]
177
- ), { languages, language, languageMode } = useLanguageMode(props.schemaType, props.value), mounted = useMounted(), renderCodeInput = useCallback(
178
- (inputProps) => /* @__PURE__ */ jsx(EditorContainer, { border: !0, overflow: "hidden", radius: 1, sizing: "border", readOnly, children: mounted && /* @__PURE__ */ jsx(
179
- Suspense,
180
- {
181
- fallback: /* @__PURE__ */ jsx(Box, { padding: 3, children: /* @__PURE__ */ jsx(Text, { children: "Loading code editor..." }) }),
182
- children: /* @__PURE__ */ jsx(
183
- CodeMirrorProxy,
184
- {
185
- languageMode,
186
- onChange: handleCodeChange,
187
- value: inputProps.value,
188
- highlightLines: value?.highlightedLines,
189
- onHighlightChange,
190
- readOnly,
191
- onFocus: handleCodeFocus,
192
- onBlur: elementProps.onBlur
193
- }
194
- )
195
- }
196
- ) }),
197
- [
198
- readOnly,
199
- mounted,
200
- languageMode,
201
- handleCodeChange,
202
- value?.highlightedLines,
203
- onHighlightChange,
204
- handleCodeFocus,
205
- elementProps.onBlur
206
- ]
207
- );
208
- return /* @__PURE__ */ jsxs(Stack, { space: 4, children: [
209
- languageFieldMember && /* @__PURE__ */ jsx(
210
- LanguageField,
211
- {
212
- member: languageFieldMember,
213
- language,
214
- languages,
215
- renderField,
216
- renderItem,
217
- renderInput,
218
- renderPreview
219
- }
220
- ),
221
- type.options?.withFilename && filenameMember && /* @__PURE__ */ jsx(
222
- MemberField,
223
- {
224
- member: filenameMember,
225
- renderItem,
226
- renderField,
227
- renderInput,
228
- renderPreview
229
- }
230
- ),
231
- codeFieldMember && /* @__PURE__ */ jsx(
232
- MemberField,
233
- {
234
- member: codeFieldMember,
235
- renderInput: renderCodeInput,
236
- renderItem,
237
- renderField,
238
- renderPreview
239
- }
240
- )
241
- ] });
242
- }
243
- function getMedia(language) {
244
- if (language === "jsx")
245
- return /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128", children: /* @__PURE__ */ jsxs("g", { fill: "#61DAFB", children: [
246
- /* @__PURE__ */ jsx("circle", { cx: "64", cy: "64", r: "11.4" }),
247
- /* @__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" })
248
- ] }) });
249
- if (language === "javascript")
250
- return /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128", children: [
251
- /* @__PURE__ */ jsx("path", { fill: "#F0DB4F", d: "M1.408 1.408h125.184v125.185H1.408z" }),
252
- /* @__PURE__ */ jsx(
253
- "path",
254
- {
255
- fill: "#323330",
256
- 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"
257
- }
258
- )
259
- ] });
260
- if (language === "php")
261
- 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: [
262
- /* @__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" }),
263
- /* @__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" }),
264
- /* @__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" })
265
- ] }) }) });
266
- if (language === "json")
267
- return /* @__PURE__ */ jsxs(
268
- "svg",
269
- {
270
- xmlns: "http://www.w3.org/2000/svg",
271
- xmlnsXlink: "http://www.w3.org/1999/xlink",
272
- viewBox: "0 0 160 160",
273
- children: [
274
- /* @__PURE__ */ jsxs("defs", { children: [
275
- /* @__PURE__ */ jsxs("linearGradient", { id: "a", children: [
276
- /* @__PURE__ */ jsx("stop", { offset: "0" }),
277
- /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#fff" })
278
- ] }),
279
- /* @__PURE__ */ jsx(
280
- "linearGradient",
281
- {
282
- x1: "-553.27",
283
- y1: "525.908",
284
- x2: "-666.116",
285
- y2: "413.045",
286
- id: "c",
287
- xlinkHref: "#a",
288
- gradientUnits: "userSpaceOnUse",
289
- gradientTransform: "matrix(.99884 0 0 .9987 689.008 -388.844)"
290
- }
291
- ),
292
- /* @__PURE__ */ jsx(
293
- "linearGradient",
294
- {
295
- x1: "-666.117",
296
- y1: "413.045",
297
- x2: "-553.27",
298
- y2: "525.908",
299
- id: "b",
300
- xlinkHref: "#a",
301
- gradientUnits: "userSpaceOnUse",
302
- gradientTransform: "matrix(.99884 0 0 .9987 689.008 -388.844)"
303
- }
304
- )
305
- ] }),
306
- /* @__PURE__ */ jsx(
307
- "path",
308
- {
309
- 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",
310
- style: { marker: "none" },
311
- color: "#000",
312
- fill: "url(#b)",
313
- fillRule: "evenodd",
314
- overflow: "visible"
315
- }
316
- ),
317
- /* @__PURE__ */ jsx(
318
- "path",
319
- {
320
- 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",
321
- style: { marker: "none" },
322
- color: "#000",
323
- fill: "url(#c)",
324
- fillRule: "evenodd",
325
- overflow: "visible"
326
- }
327
- )
328
- ]
329
- }
330
- );
331
- }
332
- const PreviewContainer = styled(Box)`
333
- position: relative;
334
- `;
335
- function PreviewCode(props) {
336
- const { selection, schemaType: type } = props, { languageMode } = useLanguageMode(type, props.selection), mounted = useMounted();
337
- return /* @__PURE__ */ jsx(PreviewContainer, { children: /* @__PURE__ */ jsxs(Card, { padding: 4, children: [
338
- selection?.filename || selection?.language ? /* @__PURE__ */ jsx(
339
- Card,
340
- {
341
- paddingBottom: 4,
342
- marginBottom: selection.code ? 4 : 0,
343
- borderBottom: !!selection.code,
344
- children: /* @__PURE__ */ jsxs(Flex, { align: "center", justify: "flex-end", children: [
345
- selection?.filename ? /* @__PURE__ */ jsx(Box, { flex: 1, children: /* @__PURE__ */ jsx(Text, { children: /* @__PURE__ */ jsx("code", { children: selection.filename }) }) }) : null,
346
- selection?.language ? /* @__PURE__ */ jsx(Label, { muted: !0, children: selection.language }) : null
347
- ] })
348
- }
349
- ) : null,
350
- mounted && /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Card, { padding: 2, children: "Loading code preview..." }), children: /* @__PURE__ */ jsx(
351
- CodeMirrorProxy,
352
- {
353
- readOnly: !0,
354
- editable: !1,
355
- value: selection?.code || "",
356
- highlightLines: selection?.highlightedLines || [],
357
- basicSetup: {
358
- lineNumbers: !1,
359
- foldGutter: !1,
360
- highlightSelectionMatches: !1,
361
- highlightActiveLineGutter: !1,
362
- highlightActiveLine: !1
363
- },
364
- languageMode
365
- }
366
- ) })
367
- ] }) });
368
- }
369
- const codeTypeName = "code", codeSchema = defineType({
370
- name: "code",
371
- type: "object",
372
- title: "Code",
373
- components: { input: CodeInput, preview: PreviewCode },
374
- icon: CodeBlockIcon,
375
- fields: [
376
- {
377
- name: "language",
378
- title: "Language",
379
- type: "string"
380
- },
381
- {
382
- name: "filename",
383
- title: "Filename",
384
- type: "string"
385
- },
386
- {
387
- title: "Code",
388
- name: "code",
389
- type: "text"
390
- },
391
- {
392
- title: "Highlighted lines",
393
- name: "highlightedLines",
394
- type: "array",
395
- of: [
396
- {
397
- type: "number",
398
- title: "Highlighted line"
399
- }
400
- ]
401
- }
402
- ],
403
- preview: {
404
- select: {
405
- language: "language",
406
- code: "code",
407
- filename: "filename",
408
- highlightedLines: "highlightedLines"
409
- },
410
- prepare: (value) => ({
411
- title: value.filename || (value.language || "unknown").toUpperCase(),
412
- media: getMedia(value?.language),
413
- selection: value
414
- })
415
- }
416
- }), CodeInputConfigContext = createContext(void 0), codeInput = definePlugin((config) => {
417
- const codeModes = config && config.codeModes, basePlugin = {
418
- name: "@sanity/code-input",
419
- schema: { types: [codeSchema] }
420
- };
421
- return codeModes ? {
422
- ...basePlugin,
423
- form: {
424
- components: {
425
- input: (props) => props.id !== "root" ? props.renderDefault(props) : /* @__PURE__ */ jsx(CodeInputConfigContext.Provider, { value: config, children: props.renderDefault(props) })
426
- }
427
- }
428
- } : basePlugin;
429
- });
430
- export {
431
- CodeInputConfigContext,
432
- PreviewCode,
433
- codeInput,
434
- codeSchema,
435
- codeTypeName
436
- };
437
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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 {LANGUAGE_ALIASES, SUPPORTED_LANGUAGES} from '../config'\nimport type {CodeInputLanguage, CodeInputValue, CodeSchemaType} from '../types'\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 // eslint-disable-next-line no-console\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 {LanguageInput} from './LanguageInput'\nimport type {CodeInputLanguage} from './types'\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 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 {useMemo} from 'react'\nimport type {FieldMember, ObjectMember} from 'sanity'\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 {CodeMirrorProxy, useMounted} from './codemirror/useCodeMirror'\nimport {useLanguageMode} from './codemirror/useLanguageMode'\nimport {PATH_CODE} from './config'\nimport {LanguageField} from './LanguageField'\nimport type {CodeInputValue, CodeSchemaType} from './types'\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 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 {Box, Card, Flex, Label, Text} from '@sanity/ui'\nimport {Suspense} from 'react'\nimport type {PreviewProps} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {CodeMirrorProxy, useMounted} from './codemirror/useCodeMirror'\nimport {useLanguageMode} from './codemirror/useLanguageMode'\nimport type {CodeInputValue, CodeSchemaType} from './types'\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 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 {CodeInput} from './CodeInput'\nimport {getMedia} from './getMedia'\nimport {PreviewCode} from './PreviewCode'\nimport type {CodeOptions} from './types'\n\n/**\n * @public\n */\nexport const codeTypeName = 'code' as const\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 {CodeInputConfigContext} from './codemirror/CodeModeContext'\nimport type {CodeMode} from './codemirror/defaultCodeModes'\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":[],"mappings":"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"}
package/lib/index.cjs DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: !0 });
3
- var index = require("./_chunks-cjs/index.cjs");
4
- exports.PreviewCode = index.PreviewCode;
5
- exports.codeInput = index.codeInput;
6
- exports.codeSchema = index.codeSchema;
7
- exports.codeTypeName = index.codeTypeName;
8
- //# sourceMappingURL=index.cjs.map
package/lib/index.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
package/lib/index.d.cts DELETED
@@ -1,121 +0,0 @@
1
- import type {Extension} from '@codemirror/state'
2
- import {JSX} from 'react'
3
- import {ObjectDefinition} from 'sanity'
4
- import {ObjectInputProps} from 'sanity'
5
- import type {ObjectSchemaType} from 'sanity'
6
- import {Plugin as Plugin_2} from 'sanity'
7
- import {PreviewConfig} from 'sanity'
8
- import type {PreviewProps} from 'sanity'
9
-
10
- /**
11
- * @public
12
- */
13
- export declare interface CodeDefinition
14
- extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {
15
- type: typeof codeTypeName
16
- options?: CodeOptions
17
- }
18
-
19
- /** @public */
20
- export declare function CodeInput(props: CodeInputProps): React.JSX.Element
21
-
22
- /**
23
- * @public
24
- */
25
- export declare const codeInput: Plugin_2<void | CodeInputConfig>
26
-
27
- declare interface CodeInputConfig {
28
- codeModes?: CodeMode[]
29
- }
30
-
31
- export declare interface CodeInputLanguage {
32
- title: string
33
- value: string
34
- mode?: string
35
- }
36
-
37
- /**
38
- * @public
39
- */
40
- export declare interface CodeInputProps extends ObjectInputProps<CodeInputValue, CodeSchemaType> {}
41
-
42
- /**
43
- * @public
44
- */
45
- export declare interface CodeInputValue {
46
- _type?: 'code'
47
- code?: string
48
- filename?: string
49
- language?: string
50
- highlightedLines?: number[]
51
- }
52
-
53
- declare interface CodeMode {
54
- name: string
55
- loader: ModeLoader
56
- }
57
-
58
- /**
59
- * @public
60
- */
61
- export declare interface CodeOptions {
62
- theme?: string
63
- darkTheme?: string
64
- languageAlternatives?: CodeInputLanguage[]
65
- language?: string
66
- withFilename?: boolean
67
- }
68
-
69
- /**
70
- * @public
71
- */
72
- export declare const codeSchema: {
73
- type: 'object'
74
- name: 'code'
75
- } & Omit<ObjectDefinition, 'preview'> & {
76
- preview?:
77
- | PreviewConfig<
78
- {
79
- language: string
80
- code: string
81
- filename: string
82
- highlightedLines: string
83
- },
84
- Record<'language' | 'code' | 'filename' | 'highlightedLines', any>
85
- >
86
- | undefined
87
- }
88
-
89
- /**
90
- * @public
91
- */
92
- export declare interface CodeSchemaType extends Omit<ObjectSchemaType, 'options'> {
93
- options?: CodeOptions
94
- }
95
-
96
- /**
97
- * @public
98
- */
99
- export declare const codeTypeName: 'code'
100
-
101
- declare type ModeLoader = () => Promise<Extension | undefined> | Extension | undefined
102
-
103
- /**
104
- * @public
105
- */
106
- export declare function PreviewCode(props: PreviewCodeProps): JSX.Element
107
-
108
- /**
109
- * @public
110
- */
111
- export declare interface PreviewCodeProps extends PreviewProps {
112
- selection?: CodeInputValue
113
- }
114
-
115
- export {}
116
-
117
- declare module 'sanity' {
118
- interface IntrinsicDefinitions {
119
- code: CodeDefinition
120
- }
121
- }