@sanity/code-input 4.1.0 → 4.1.2

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/lib/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
-
3
1
  import {Extension} from '@codemirror/state'
2
+ import {JSX as JSX_2} from 'react/jsx-runtime'
4
3
  import {ObjectDefinition} from 'sanity'
5
4
  import {ObjectInputProps} from 'sanity'
6
5
  import {ObjectSchemaType} from 'sanity'
@@ -18,7 +17,7 @@ export declare interface CodeDefinition
18
17
  }
19
18
 
20
19
  /** @public */
21
- export declare function CodeInput(props: CodeInputProps): JSX.Element
20
+ export declare function CodeInput(props: CodeInputProps): JSX_2.Element
22
21
 
23
22
  /**
24
23
  * @public
@@ -104,7 +103,7 @@ declare type ModeLoader = () => Promise<Extension | undefined> | Extension | und
104
103
  /**
105
104
  * @public
106
105
  */
107
- export declare function PreviewCode(props: PreviewCodeProps): JSX.Element
106
+ export declare function PreviewCode(props: PreviewCodeProps): JSX_2.Element
108
107
 
109
108
  /**
110
109
  * @public
package/lib/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- export { PreviewCode, codeInput, codeSchema, codeTypeName } from './_chunks/index-9a4cb814.js';
1
+ export { PreviewCode, codeInput, codeSchema, codeTypeName } from './_chunks/index-KYa8fGra.js';
2
2
  //# sourceMappingURL=index.esm.js.map
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', {
4
4
  value: true
5
5
  });
6
- var index = require('./_chunks/index-17e68aff.js');
6
+ var index = require('./_chunks/index-AFlZ2FMk.js');
7
7
  exports.PreviewCode = index.PreviewCode;
8
8
  exports.codeInput = index.codeInput;
9
9
  exports.codeSchema = index.codeSchema;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sanity/code-input",
3
- "version": "4.1.0",
4
- "description": "Ace editor for editing code",
3
+ "version": "4.1.2",
4
+ "description": "Sanity input component for code, powered by CodeMirror",
5
5
  "keywords": [
6
6
  "sanity",
7
7
  "cms",
@@ -57,76 +57,76 @@
57
57
  "watch": "pkg-utils watch --strict"
58
58
  },
59
59
  "dependencies": {
60
- "@codemirror/autocomplete": "^6.1.0",
61
- "@codemirror/commands": "^6.0.1",
62
- "@codemirror/lang-html": "^6.4.0",
60
+ "@codemirror/autocomplete": "^6.11.1",
61
+ "@codemirror/commands": "^6.3.2",
62
+ "@codemirror/lang-html": "^6.4.7",
63
63
  "@codemirror/lang-java": "^6.0.1",
64
- "@codemirror/lang-javascript": "^6.1.2",
64
+ "@codemirror/lang-javascript": "^6.2.1",
65
65
  "@codemirror/lang-json": "^6.0.1",
66
- "@codemirror/lang-markdown": "^6.0.5",
66
+ "@codemirror/lang-markdown": "^6.2.3",
67
67
  "@codemirror/lang-php": "^6.0.1",
68
- "@codemirror/lang-sql": "^6.3.3",
69
- "@codemirror/language": "^6.2.1",
70
- "@codemirror/legacy-modes": "^6.3.1",
71
- "@codemirror/search": "^6.0.1",
72
- "@codemirror/state": "^6.1.0",
73
- "@codemirror/view": "^6.1.1",
68
+ "@codemirror/lang-sql": "^6.5.4",
69
+ "@codemirror/language": "^6.9.3",
70
+ "@codemirror/legacy-modes": "^6.3.3",
71
+ "@codemirror/search": "^6.5.5",
72
+ "@codemirror/state": "^6.3.3",
73
+ "@codemirror/view": "^6.22.3",
74
74
  "@juggle/resize-observer": "^3.3.1",
75
- "@lezer/highlight": "^1.0.0",
76
- "@sanity/icons": "^2.0.0",
75
+ "@lezer/highlight": "^1.2.0",
77
76
  "@sanity/incompatible-plugin": "^1.0.4",
78
77
  "@sanity/ui": "^1.0.0",
79
- "@uiw/codemirror-themes": "^4.19.4",
80
- "@uiw/react-codemirror": "^4.19.4"
78
+ "@uiw/codemirror-themes": "^4.21.21",
79
+ "@uiw/react-codemirror": "^4.21.21"
81
80
  },
82
81
  "devDependencies": {
83
- "@babel/core": "^7.20.12",
84
- "@babel/preset-env": "^7.18.10",
85
- "@babel/preset-react": "^7.18.6",
86
- "@commitlint/cli": "^17.2.0",
87
- "@commitlint/config-conventional": "^17.2.0",
88
- "@sanity/icons": "^2.2.2",
89
- "@sanity/pkg-utils": "^2.1.1",
82
+ "@babel/core": "^7.23.6",
83
+ "@babel/preset-env": "^7.23.6",
84
+ "@babel/preset-react": "^7.23.3",
85
+ "@commitlint/cli": "^18.4.3",
86
+ "@commitlint/config-conventional": "^18.4.3",
87
+ "@sanity/icons": "^2.8.0",
88
+ "@sanity/pkg-utils": "^3.3.5",
90
89
  "@sanity/plugin-kit": "^3.1.2",
91
- "@sanity/semantic-release-preset": "^2.0.2",
90
+ "@sanity/semantic-release-preset": "^4.1.6",
92
91
  "@sanity/ui-workshop": "^1.2.0",
93
92
  "@sanity/ui-workshop-plugin-sanity": "^1.0.0",
94
- "@testing-library/jest-dom": "^5.16.5",
95
- "@testing-library/react": "^13.4.0",
96
- "@types/jest": "^29.1.2",
97
- "@types/react": "^18.0.26",
98
- "@types/styled-components": "^5.1.25",
99
- "@typescript-eslint/eslint-plugin": "^5.48.0",
100
- "@typescript-eslint/parser": "^5.48.0",
101
- "eslint": "^8.31.0",
102
- "eslint-config-prettier": "^8.6.0",
103
- "eslint-config-sanity": "^6.0.0",
104
- "eslint-plugin-prettier": "^4.2.1",
105
- "eslint-plugin-react": "^7.31.11",
93
+ "@testing-library/jest-dom": "^6.1.5",
94
+ "@testing-library/react": "^14.1.2",
95
+ "@types/jest": "^29.5.11",
96
+ "@types/react": "^18.2.45",
97
+ "@types/styled-components": "^5.1.34",
98
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
99
+ "@typescript-eslint/parser": "^6.14.0",
100
+ "eslint": "^8.55.0",
101
+ "eslint-config-prettier": "^9.1.0",
102
+ "eslint-config-sanity": "^7.0.1",
103
+ "eslint-plugin-prettier": "^5.0.1",
104
+ "eslint-plugin-react": "^7.33.2",
106
105
  "eslint-plugin-react-hooks": "^4.6.0",
107
106
  "husky": "^8.0.1",
108
- "jest": "^28.1.3",
109
- "jest-environment-jsdom": "^28.1.3",
110
- "lint-staged": "^13.0.3",
107
+ "jest": "^29.7.0",
108
+ "jest-environment-jsdom": "^29.7.0",
109
+ "lint-staged": "^15.2.0",
111
110
  "npm-run-all": "^4.1.5",
112
- "prettier": "^2.8.1",
113
- "prettier-plugin-packagejson": "^2.3.0",
111
+ "prettier": "^3.1.1",
112
+ "prettier-plugin-packagejson": "^2.4.7",
114
113
  "react": "^18.2.0",
115
114
  "react-dom": "^18.2.0",
116
115
  "react-is": "^18.2.0",
117
- "rimraf": "^3.0.2",
118
- "sanity": "^3.2.3",
116
+ "rimraf": "^5.0.5",
117
+ "sanity": "^3.21.3",
119
118
  "sanity-extra": "^1.0.0",
120
119
  "sanity-testing-library": "^1.0.0",
121
- "styled-components": "^5.3.6",
122
- "ts-jest": "^28.0.7",
123
- "typescript": "^4.9.4"
120
+ "semantic-release": "^22.0.0",
121
+ "styled-components": "^6.1.1",
122
+ "ts-jest": "^29.1.1",
123
+ "typescript": "^5.3.3"
124
124
  },
125
125
  "peerDependencies": {
126
126
  "react": "^18",
127
127
  "react-dom": "^18",
128
128
  "sanity": "^3",
129
- "styled-components": "^5.2"
129
+ "styled-components": "^5.2 || ^6"
130
130
  },
131
131
  "engines": {
132
132
  "node": ">=14"
package/src/CodeInput.tsx CHANGED
@@ -77,7 +77,7 @@ export function CodeInput(props: CodeInputProps) {
77
77
 
78
78
  const onHighlightChange = useCallback(
79
79
  (lines: number[]) => onChange(set(lines, ['highlightedLines'])),
80
- [onChange]
80
+ [onChange],
81
81
  )
82
82
 
83
83
  const handleCodeChange = useCallback(
@@ -90,7 +90,7 @@ export function CodeInput(props: CodeInputProps) {
90
90
  code ? set(code, path) : unset(path),
91
91
  ])
92
92
  },
93
- [onChange, type]
93
+ [onChange, type],
94
94
  )
95
95
  const {languages, language, languageMode} = useLanguageMode(props.schemaType, props.value)
96
96
 
@@ -132,7 +132,7 @@ export function CodeInput(props: CodeInputProps) {
132
132
  elementProps.onBlur,
133
133
  readOnly,
134
134
  value,
135
- ]
135
+ ],
136
136
  )
137
137
 
138
138
  return (
@@ -4,7 +4,7 @@ import {CodeInputLanguage} from './types'
4
4
  import {LanguageInput} from './LanguageInput'
5
5
 
6
6
  export function LanguageField(
7
- props: MemberFieldProps & {member: FieldMember; language: string; languages: CodeInputLanguage[]}
7
+ props: MemberFieldProps & {member: FieldMember; language: string; languages: CodeInputLanguage[]},
8
8
  ) {
9
9
  const {member, languages, language, renderItem, renderField, renderPreview} = props
10
10
 
@@ -18,7 +18,7 @@ export function LanguageField(
18
18
  />
19
19
  )
20
20
  },
21
- [languages, language]
21
+ [languages, language],
22
22
  )
23
23
 
24
24
  return (
@@ -17,7 +17,7 @@ export function LanguageInput(props: LanguageInputProps) {
17
17
  const newValue = e.currentTarget.value
18
18
  onChange(newValue ? set(newValue) : unset())
19
19
  },
20
- [onChange]
20
+ [onChange],
21
21
  )
22
22
 
23
23
  return (
@@ -25,98 +25,97 @@ export interface CodeMirrorProps extends ReactCodeMirrorProps {
25
25
  *
26
26
  * It is also responsible for integrating any CodeMirror extensions.
27
27
  */
28
- const CodeMirrorProxy = forwardRef<ReactCodeMirrorRef, CodeMirrorProps>(function CodeMirrorProxy(
29
- props,
30
- ref
31
- ) {
32
- const {
33
- basicSetup: basicSetupProp,
34
- highlightLines,
35
- languageMode,
36
- onHighlightChange,
37
- readOnly,
38
- value,
39
- ...codeMirrorProps
40
- } = props
41
-
42
- const themeCtx = useRootTheme()
43
- const codeMirrorTheme = useCodeMirrorTheme()
44
- const [editorView, setEditorView] = useState<EditorView | undefined>(undefined)
45
-
46
- // Resolve extensions
47
- const themeExtension = useThemeExtension()
48
- const fontSizeExtension = useFontSizeExtension({fontSize: 1})
49
- const languageExtension = useLanguageExtension(languageMode)
50
- const highlightLineExtension = useMemo(
51
- () =>
52
- highlightLine({
53
- onHighlightChange,
54
- readOnly,
55
- theme: themeCtx,
56
- }),
57
- [onHighlightChange, readOnly, themeCtx]
58
- )
59
-
60
- const extensions = useMemo(() => {
61
- const baseExtensions = [
62
- themeExtension,
63
- fontSizeExtension,
64
- highlightLineExtension,
65
- EditorView.lineWrapping,
66
- ]
67
- if (languageExtension) {
68
- return [...baseExtensions, languageExtension]
69
- }
70
- return baseExtensions
71
- }, [fontSizeExtension, highlightLineExtension, languageExtension, themeExtension])
72
-
73
- useEffect(() => {
74
- if (editorView) {
75
- setHighlightedLines(editorView, highlightLines ?? [])
76
- }
77
- }, [editorView, highlightLines, value])
78
-
79
- const initialState = useMemo(() => {
80
- return {
81
- json: {
82
- doc: value ?? '',
83
- selection: {
84
- main: 0,
85
- ranges: [{anchor: 0, head: 0}],
28
+ const CodeMirrorProxy = forwardRef<ReactCodeMirrorRef, CodeMirrorProps>(
29
+ function CodeMirrorProxy(props, ref) {
30
+ const {
31
+ basicSetup: basicSetupProp,
32
+ highlightLines,
33
+ languageMode,
34
+ onHighlightChange,
35
+ readOnly,
36
+ value,
37
+ ...codeMirrorProps
38
+ } = props
39
+
40
+ const themeCtx = useRootTheme()
41
+ const codeMirrorTheme = useCodeMirrorTheme()
42
+ const [editorView, setEditorView] = useState<EditorView | undefined>(undefined)
43
+
44
+ // Resolve extensions
45
+ const themeExtension = useThemeExtension()
46
+ const fontSizeExtension = useFontSizeExtension({fontSize: 1})
47
+ const languageExtension = useLanguageExtension(languageMode)
48
+ const highlightLineExtension = useMemo(
49
+ () =>
50
+ highlightLine({
51
+ onHighlightChange,
52
+ readOnly,
53
+ theme: themeCtx,
54
+ }),
55
+ [onHighlightChange, readOnly, themeCtx],
56
+ )
57
+
58
+ const extensions = useMemo(() => {
59
+ const baseExtensions = [
60
+ themeExtension,
61
+ fontSizeExtension,
62
+ highlightLineExtension,
63
+ EditorView.lineWrapping,
64
+ ]
65
+ if (languageExtension) {
66
+ return [...baseExtensions, languageExtension]
67
+ }
68
+ return baseExtensions
69
+ }, [fontSizeExtension, highlightLineExtension, languageExtension, themeExtension])
70
+
71
+ useEffect(() => {
72
+ if (editorView) {
73
+ setHighlightedLines(editorView, highlightLines ?? [])
74
+ }
75
+ }, [editorView, highlightLines, value])
76
+
77
+ const initialState = useMemo(() => {
78
+ return {
79
+ json: {
80
+ doc: value ?? '',
81
+ selection: {
82
+ main: 0,
83
+ ranges: [{anchor: 0, head: 0}],
84
+ },
85
+ highlight: highlightLines ?? [],
86
86
  },
87
- highlight: highlightLines ?? [],
88
- },
89
- fields: highlightState,
90
- }
91
- // only need to calculate this on initial render
92
- // eslint-disable-next-line react-hooks/exhaustive-deps
93
- }, [])
94
-
95
- const handleCreateEditor = useCallback((view: EditorView) => {
96
- setEditorView(view)
97
- }, [])
98
-
99
- const basicSetup = useMemo(
100
- () =>
101
- basicSetupProp ?? {
102
- highlightActiveLine: false,
103
- },
104
- [basicSetupProp]
105
- )
106
-
107
- return (
108
- <CodeMirror
109
- {...codeMirrorProps}
110
- value={value}
111
- ref={ref}
112
- extensions={extensions}
113
- theme={codeMirrorTheme}
114
- onCreateEditor={handleCreateEditor}
115
- initialState={initialState}
116
- basicSetup={basicSetup}
117
- />
118
- )
119
- })
87
+ fields: highlightState,
88
+ }
89
+ // only need to calculate this on initial render
90
+ // eslint-disable-next-line react-hooks/exhaustive-deps
91
+ }, [])
92
+
93
+ const handleCreateEditor = useCallback((view: EditorView) => {
94
+ setEditorView(view)
95
+ }, [])
96
+
97
+ const basicSetup = useMemo(
98
+ () =>
99
+ basicSetupProp ?? {
100
+ highlightActiveLine: false,
101
+ },
102
+ [basicSetupProp],
103
+ )
104
+
105
+ return (
106
+ <CodeMirror
107
+ {...codeMirrorProps}
108
+ value={value}
109
+ ref={ref}
110
+ extensions={extensions}
111
+ theme={codeMirrorTheme}
112
+ onCreateEditor={handleCreateEditor}
113
+ initialState={initialState}
114
+ basicSetup={basicSetup}
115
+ />
116
+ )
117
+ },
118
+ )
120
119
 
121
120
  function useLanguageExtension(mode?: string) {
122
121
  const codeConfig = useContext(CodeInputConfigContext)
@@ -130,7 +129,7 @@ function useLanguageExtension(mode?: string) {
130
129
  const codeMode = modes.find((m) => m.name === mode)
131
130
  if (!codeMode?.loader) {
132
131
  console.warn(
133
- `Found no codeMode for language mode ${mode}, syntax highlighting will be disabled.`
132
+ `Found no codeMode for language mode ${mode}, syntax highlighting will be disabled.`,
134
133
  )
135
134
  }
136
135
  let active = true
@@ -27,14 +27,14 @@ export const defaultCodeModes: CodeMode[] = [
27
27
  name: 'typescript',
28
28
  loader: () =>
29
29
  import('@codemirror/lang-javascript').then(({javascript}) =>
30
- javascript({jsx: false, typescript: true})
30
+ javascript({jsx: false, typescript: true}),
31
31
  ),
32
32
  },
33
33
  {
34
34
  name: 'tsx',
35
35
  loader: () =>
36
36
  import('@codemirror/lang-javascript').then(({javascript}) =>
37
- javascript({jsx: true, typescript: true})
37
+ javascript({jsx: true, typescript: true}),
38
38
  ),
39
39
  },
40
40
  {name: 'php', loader: () => import('@codemirror/lang-php').then(({php}) => php())},
@@ -54,7 +54,7 @@ export const defaultCodeModes: CodeMode[] = [
54
54
  name: 'csharp',
55
55
  loader: () =>
56
56
  import('@codemirror/legacy-modes/mode/clike').then(({csharp}) =>
57
- StreamLanguage.define(csharp)
57
+ StreamLanguage.define(csharp),
58
58
  ),
59
59
  },
60
60
  {
@@ -86,7 +86,7 @@ export const defaultCodeModes: CodeMode[] = [
86
86
  name: 'python',
87
87
  loader: () =>
88
88
  import('@codemirror/legacy-modes/mode/python').then(({python}) =>
89
- StreamLanguage.define(python)
89
+ StreamLanguage.define(python),
90
90
  ),
91
91
  },
92
92
  {
@@ -47,9 +47,15 @@ export const lineHighlightField = StateField.define({
47
47
  const highlights = value
48
48
  .filter((line) => line <= lines) // one-indexed
49
49
  .map((line) => lineHighlightMark.range(state.doc.line(line).from))
50
- return Decoration.none.update({
51
- add: highlights,
52
- })
50
+ highlights.sort((a, b) => a.from - b.from)
51
+ try {
52
+ return Decoration.none.update({
53
+ add: highlights,
54
+ })
55
+ } catch (e) {
56
+ console.error(e)
57
+ return Decoration.none
58
+ }
53
59
  },
54
60
  provide: (f) => EditorView.decorations.from(f),
55
61
  })
@@ -29,7 +29,7 @@ function useLanguageAlternatives(type: CodeSchemaType) {
29
29
 
30
30
  if (!Array.isArray(languageAlternatives)) {
31
31
  throw new Error(
32
- `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`
32
+ `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`,
33
33
  )
34
34
  }
35
35
 
@@ -41,7 +41,7 @@ function useLanguageAlternatives(type: CodeSchemaType) {
41
41
  `'options.languageAlternatives' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"`,
42
42
  val,
43
43
  alias,
44
- alias
44
+ alias,
45
45
  )
46
46
 
47
47
  return acc.concat({title, value: alias, mode: mode})
@@ -4,13 +4,13 @@ import {FieldMember, ObjectMember} from 'sanity'
4
4
  /** @internal */
5
5
  export function useFieldMember(
6
6
  members: ObjectMember[],
7
- fieldName: string
7
+ fieldName: string,
8
8
  ): FieldMember | undefined {
9
9
  return useMemo(
10
10
  () =>
11
11
  members.find(
12
- (member): member is FieldMember => member.kind === 'field' && member.name === fieldName
12
+ (member): member is FieldMember => member.kind === 'field' && member.name === fieldName,
13
13
  ),
14
- [members, fieldName]
14
+ [members, fieldName],
15
15
  )
16
16
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeMirrorProxy-3836f097.js","sources":["../../src/codemirror/extensions/useCodeMirrorTheme.ts","../../src/codemirror/defaultCodeModes.ts","../../src/codemirror/extensions/highlightLineExtension.ts","../../src/codemirror/extensions/useFontSize.ts","../../src/codemirror/extensions/theme.ts","../../src/codemirror/CodeMirrorProxy.tsx"],"sourcesContent":["import {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {createTheme} from '@uiw/codemirror-themes'\nimport {tags as t} from '@lezer/highlight'\nimport {Extension} from '@codemirror/state'\n\nexport function useCodeMirrorTheme(): Extension {\n const theme = useTheme()\n\n return useMemo(() => {\n const {code: codeFont} = theme.sanity.fonts\n const {base, card, dark, syntax} = theme.sanity.color\n\n return createTheme({\n theme: dark ? 'dark' : 'light',\n settings: {\n background: card.enabled.bg,\n foreground: card.enabled.code.fg,\n lineHighlight: card.enabled.bg,\n fontFamily: codeFont.family,\n caret: base.focusRing,\n selection: rgba(base.focusRing, 0.2),\n selectionMatch: rgba(base.focusRing, 0.4),\n gutterBackground: card.disabled.bg,\n gutterForeground: card.disabled.code.fg,\n gutterActiveForeground: card.enabled.fg,\n },\n styles: [\n {\n tag: [t.heading, t.heading2, t.heading3, t.heading4, t.heading5, t.heading6],\n color: card.enabled.fg,\n },\n {tag: t.angleBracket, color: card.enabled.code.fg},\n {tag: t.atom, color: syntax.keyword},\n {tag: t.attributeName, color: syntax.attrName},\n {tag: t.bool, color: syntax.boolean},\n {tag: t.bracket, color: card.enabled.code.fg},\n {tag: t.className, color: syntax.className},\n {tag: t.comment, color: syntax.comment},\n {tag: t.definition(t.typeName), color: syntax.function},\n {\n tag: [\n t.definition(t.variableName),\n t.function(t.variableName),\n t.className,\n t.attributeName,\n ],\n color: syntax.function,\n },\n {tag: [t.function(t.propertyName), t.propertyName], color: syntax.function},\n {tag: t.keyword, color: syntax.keyword},\n {tag: t.null, color: syntax.number},\n {tag: t.number, color: syntax.number},\n {tag: t.meta, color: card.enabled.code.fg},\n {tag: t.operator, color: syntax.operator},\n {tag: t.propertyName, color: syntax.property},\n {tag: [t.string, t.special(t.brace)], color: syntax.string},\n {tag: t.tagName, color: syntax.className},\n {tag: t.typeName, color: syntax.keyword},\n ],\n })\n }, [theme])\n}\n","import {StreamLanguage} from '@codemirror/language'\nimport {type Extension} from '@codemirror/state'\n\nexport interface CodeMode {\n name: string\n loader: ModeLoader\n}\nexport type ModeLoader = () => Promise<Extension | undefined> | Extension | undefined\n\nexport const defaultCodeModes: CodeMode[] = [\n {\n name: 'groq',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) => javascript({jsx: false})),\n },\n {\n name: 'javascript',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) => javascript({jsx: false})),\n },\n {\n name: 'jsx',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) => javascript({jsx: true})),\n },\n {\n name: 'typescript',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) =>\n javascript({jsx: false, typescript: true})\n ),\n },\n {\n name: 'tsx',\n loader: () =>\n import('@codemirror/lang-javascript').then(({javascript}) =>\n javascript({jsx: true, typescript: true})\n ),\n },\n {name: 'php', loader: () => import('@codemirror/lang-php').then(({php}) => php())},\n {name: 'sql', loader: () => import('@codemirror/lang-sql').then(({sql}) => sql())},\n {\n name: 'mysql',\n loader: () => import('@codemirror/lang-sql').then(({sql, MySQL}) => sql({dialect: MySQL})),\n },\n {name: 'json', loader: () => import('@codemirror/lang-json').then(({json}) => json())},\n {\n name: 'markdown',\n loader: () => import('@codemirror/lang-markdown').then(({markdown}) => markdown()),\n },\n {name: 'java', loader: () => import('@codemirror/lang-java').then(({java}) => java())},\n {name: 'html', loader: () => import('@codemirror/lang-html').then(({html}) => html())},\n {\n name: 'csharp',\n loader: () =>\n import('@codemirror/legacy-modes/mode/clike').then(({csharp}) =>\n StreamLanguage.define(csharp)\n ),\n },\n {\n name: 'sh',\n loader: () =>\n import('@codemirror/legacy-modes/mode/shell').then(({shell}) => StreamLanguage.define(shell)),\n },\n {\n name: 'css',\n loader: () =>\n import('@codemirror/legacy-modes/mode/css').then(({css}) => StreamLanguage.define(css)),\n },\n {\n name: 'scss',\n loader: () =>\n import('@codemirror/legacy-modes/mode/css').then(({css}) => StreamLanguage.define(css)),\n },\n {\n name: 'sass',\n loader: () =>\n import('@codemirror/legacy-modes/mode/sass').then(({sass}) => StreamLanguage.define(sass)),\n },\n {\n name: 'ruby',\n loader: () =>\n import('@codemirror/legacy-modes/mode/ruby').then(({ruby}) => StreamLanguage.define(ruby)),\n },\n {\n name: 'python',\n loader: () =>\n import('@codemirror/legacy-modes/mode/python').then(({python}) =>\n StreamLanguage.define(python)\n ),\n },\n {\n name: 'xml',\n loader: () =>\n import('@codemirror/legacy-modes/mode/xml').then(({xml}) => StreamLanguage.define(xml)),\n },\n {\n name: 'yaml',\n loader: () =>\n import('@codemirror/legacy-modes/mode/yaml').then(({yaml}) => StreamLanguage.define(yaml)),\n },\n {\n name: 'golang',\n loader: () =>\n import('@codemirror/legacy-modes/mode/go').then(({go}) => StreamLanguage.define(go)),\n },\n {name: 'text', loader: () => undefined},\n {name: 'batch', loader: () => undefined},\n]\n","/* eslint-disable no-param-reassign */\n\nimport {Extension, StateEffect, StateField} from '@codemirror/state'\nimport {Decoration, EditorView, lineNumbers} from '@codemirror/view'\nimport {ThemeContextValue, rgba} from '@sanity/ui'\n\nconst highlightLineClass = 'cm-highlight-line'\n\nexport const addLineHighlight = StateEffect.define<number>()\nexport const removeLineHighlight = StateEffect.define<number>()\n\nexport const lineHighlightField = StateField.define({\n create() {\n return Decoration.none\n },\n update(lines, tr) {\n lines = lines.map(tr.changes)\n for (const e of tr.effects) {\n if (e.is(addLineHighlight)) {\n lines = lines.update({add: [lineHighlightMark.range(e.value)]})\n }\n if (e.is(removeLineHighlight)) {\n lines = lines.update({\n filter: (from) => {\n // removeLineHighlight value is lineStart for the highlight, so keep other effects\n return from !== e.value\n },\n })\n }\n }\n return lines\n },\n toJSON(value, state) {\n const highlightLines: number[] = []\n const iter = value.iter()\n while (iter.value) {\n const lineNumber = state.doc.lineAt(iter.from).number\n if (!highlightLines.includes(lineNumber)) {\n highlightLines.push(lineNumber)\n }\n iter.next()\n }\n return highlightLines\n },\n fromJSON(value: number[], state) {\n const lines = state.doc.lines\n const highlights = value\n .filter((line) => line <= lines) // one-indexed\n .map((line) => lineHighlightMark.range(state.doc.line(line).from))\n return Decoration.none.update({\n add: highlights,\n })\n },\n provide: (f) => EditorView.decorations.from(f),\n})\n\nconst lineHighlightMark = Decoration.line({\n class: highlightLineClass,\n})\n\nexport const highlightState: {\n [prop: string]: StateField<any>\n} = {\n highlight: lineHighlightField,\n}\n\nexport interface HighlightLineConfig {\n onHighlightChange?: (lines: number[]) => void\n readOnly?: boolean\n theme: ThemeContextValue\n}\n\nfunction createCodeMirrorTheme(options: {themeCtx: ThemeContextValue}) {\n const {themeCtx} = options\n const dark = {color: themeCtx.theme.color.dark[themeCtx.tone]}\n const light = {color: themeCtx.theme.color.light[themeCtx.tone]}\n\n return EditorView.baseTheme({\n '.cm-lineNumbers': {\n cursor: 'default',\n },\n '.cm-line.cm-line': {\n position: 'relative',\n },\n\n // need set background with pseudoelement so it does not render over selection color\n [`.${highlightLineClass}::before`]: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: -3,\n content: \"''\",\n boxSizing: 'border-box',\n },\n [`&dark .${highlightLineClass}::before`]: {\n background: rgba(dark.color.muted.caution.pressed.bg, 0.5),\n },\n [`&light .${highlightLineClass}::before`]: {\n background: rgba(light.color.muted.caution.pressed.bg, 0.75),\n },\n })\n}\n\nexport const highlightLine = (config: HighlightLineConfig): Extension => {\n const highlightTheme = createCodeMirrorTheme({themeCtx: config.theme})\n\n return [\n lineHighlightField,\n config.readOnly\n ? []\n : lineNumbers({\n domEventHandlers: {\n mousedown: (editorView, lineInfo) => {\n // Determine if the line for the clicked gutter line number has highlighted state or not\n const line = editorView.state.doc.lineAt(lineInfo.from)\n let isHighlighted = false\n editorView.state\n .field(lineHighlightField)\n .between(line.from, line.to, (from, to, value) => {\n if (value) {\n isHighlighted = true\n return false // stop iteration\n }\n return undefined\n })\n\n if (isHighlighted) {\n editorView.dispatch({effects: removeLineHighlight.of(line.from)})\n } else {\n editorView.dispatch({effects: addLineHighlight.of(line.from)})\n }\n if (config?.onHighlightChange) {\n config.onHighlightChange(editorView.state.toJSON(highlightState).highlight)\n }\n return true\n },\n },\n }),\n highlightTheme,\n ]\n}\n\n/**\n * Adds and removes highlights to the provided view using highlightLines\n * @param view\n * @param highlightLines\n */\nexport function setHighlightedLines(view: EditorView, highlightLines: number[]): void {\n const doc = view.state.doc\n const lines = doc.lines\n //1-based line numbers\n const allLineNumbers = Array.from({length: lines}, (x, i) => i + 1)\n view.dispatch({\n effects: allLineNumbers.map((lineNumber) => {\n const line = doc.line(lineNumber)\n if (highlightLines?.includes(lineNumber)) {\n return addLineHighlight.of(line.from)\n }\n return removeLineHighlight.of(line.from)\n }),\n })\n}\n","import {Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {rem, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nexport function useFontSizeExtension(props: {fontSize: number}): Extension {\n const {fontSize: fontSizeProp} = props\n const theme = useTheme()\n\n return useMemo(() => {\n const {code: codeFont} = theme.sanity.fonts\n const {fontSize, lineHeight} = codeFont.sizes[fontSizeProp] || codeFont.sizes[2]\n\n return EditorView.baseTheme({\n '&': {\n fontSize: rem(fontSize),\n },\n\n '& .cm-scroller': {\n lineHeight: `${lineHeight / fontSize} !important`,\n },\n })\n }, [fontSizeProp, theme])\n}\n","import {Extension} from '@codemirror/state'\nimport {EditorView} from '@codemirror/view'\nimport {rgba, useRootTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nexport function useThemeExtension(): Extension {\n const themeCtx = useRootTheme()\n\n return useMemo(() => {\n const dark = {color: themeCtx.theme.color.dark[themeCtx.tone]}\n const light = {color: themeCtx.theme.color.light[themeCtx.tone]}\n\n return EditorView.baseTheme({\n '&.cm-editor': {\n height: '100%',\n },\n '&.cm-editor.cm-focused': {\n outline: 'none',\n },\n\n // Matching brackets\n '&.cm-editor.cm-focused .cm-matchingBracket': {\n backgroundColor: 'transparent',\n },\n '&.cm-editor.cm-focused .cm-nonmatchingBracket': {\n backgroundColor: 'transparent',\n },\n '&dark.cm-editor.cm-focused .cm-matchingBracket': {\n outline: `1px solid ${dark.color.base.border}`,\n },\n '&dark.cm-editor.cm-focused .cm-nonmatchingBracket': {\n outline: `1px solid ${dark.color.base.border}`,\n },\n '&light.cm-editor.cm-focused .cm-matchingBracket': {\n outline: `1px solid ${light.color.base.border}`,\n },\n '&light.cm-editor.cm-focused .cm-nonmatchingBracket': {\n outline: `1px solid ${light.color.base.border}`,\n },\n\n // Size and padding of gutter\n '& .cm-lineNumbers .cm-gutterElement': {\n minWidth: `32px !important`,\n padding: `0 8px !important`,\n },\n '& .cm-gutter.cm-foldGutter': {\n width: `0px !important`,\n },\n\n // Color of gutter\n '&dark .cm-gutters': {\n color: `${rgba(dark.color.card.enabled.code.fg, 0.5)} !important`,\n borderRight: `1px solid ${rgba(dark.color.base.border, 0.5)}`,\n },\n '&light .cm-gutters': {\n color: `${rgba(light.color.card.enabled.code.fg, 0.5)} !important`,\n borderRight: `1px solid ${rgba(light.color.base.border, 0.5)}`,\n },\n })\n }, [themeCtx])\n}\n","import {forwardRef, useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport CodeMirror, {ReactCodeMirrorProps, ReactCodeMirrorRef} from '@uiw/react-codemirror'\nimport {useCodeMirrorTheme} from './extensions/useCodeMirrorTheme'\nimport {Extension} from '@codemirror/state'\nimport {CodeInputConfigContext} from './CodeModeContext'\nimport {defaultCodeModes} from './defaultCodeModes'\nimport {\n highlightLine,\n highlightState,\n setHighlightedLines,\n} from './extensions/highlightLineExtension'\nimport {EditorView} from '@codemirror/view'\nimport {useRootTheme} from '@sanity/ui'\nimport {useFontSizeExtension} from './extensions/useFontSize'\nimport {useThemeExtension} from './extensions/theme'\n\nexport interface CodeMirrorProps extends ReactCodeMirrorProps {\n highlightLines?: number[]\n languageMode?: string\n onHighlightChange?: (lines: number[]) => void\n}\n\n/**\n * CodeMirrorProxy is a wrapper component around CodeMirror that we lazy load to reduce initial bundle size.\n *\n * It is also responsible for integrating any CodeMirror extensions.\n */\nconst CodeMirrorProxy = forwardRef<ReactCodeMirrorRef, CodeMirrorProps>(function CodeMirrorProxy(\n props,\n ref\n) {\n const {\n basicSetup: basicSetupProp,\n highlightLines,\n languageMode,\n onHighlightChange,\n readOnly,\n value,\n ...codeMirrorProps\n } = props\n\n const themeCtx = useRootTheme()\n const codeMirrorTheme = useCodeMirrorTheme()\n const [editorView, setEditorView] = useState<EditorView | undefined>(undefined)\n\n // Resolve extensions\n const themeExtension = useThemeExtension()\n const fontSizeExtension = useFontSizeExtension({fontSize: 1})\n const languageExtension = useLanguageExtension(languageMode)\n const highlightLineExtension = useMemo(\n () =>\n highlightLine({\n onHighlightChange,\n readOnly,\n theme: themeCtx,\n }),\n [onHighlightChange, readOnly, themeCtx]\n )\n\n const extensions = useMemo(() => {\n const baseExtensions = [\n themeExtension,\n fontSizeExtension,\n highlightLineExtension,\n EditorView.lineWrapping,\n ]\n if (languageExtension) {\n return [...baseExtensions, languageExtension]\n }\n return baseExtensions\n }, [fontSizeExtension, highlightLineExtension, languageExtension, themeExtension])\n\n useEffect(() => {\n if (editorView) {\n setHighlightedLines(editorView, highlightLines ?? [])\n }\n }, [editorView, highlightLines, value])\n\n const initialState = useMemo(() => {\n return {\n json: {\n doc: value ?? '',\n selection: {\n main: 0,\n ranges: [{anchor: 0, head: 0}],\n },\n highlight: highlightLines ?? [],\n },\n fields: highlightState,\n }\n // only need to calculate this on initial render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n const handleCreateEditor = useCallback((view: EditorView) => {\n setEditorView(view)\n }, [])\n\n const basicSetup = useMemo(\n () =>\n basicSetupProp ?? {\n highlightActiveLine: false,\n },\n [basicSetupProp]\n )\n\n return (\n <CodeMirror\n {...codeMirrorProps}\n value={value}\n ref={ref}\n extensions={extensions}\n theme={codeMirrorTheme}\n onCreateEditor={handleCreateEditor}\n initialState={initialState}\n basicSetup={basicSetup}\n />\n )\n})\n\nfunction useLanguageExtension(mode?: string) {\n const codeConfig = useContext(CodeInputConfigContext)\n\n const [languageExtension, setLanguageExtension] = useState<Extension | undefined>()\n\n useEffect(() => {\n const customModes = codeConfig?.codeModes ?? []\n const modes = [...customModes, ...defaultCodeModes]\n\n const codeMode = modes.find((m) => m.name === mode)\n if (!codeMode?.loader) {\n console.warn(\n `Found no codeMode for language mode ${mode}, syntax highlighting will be disabled.`\n )\n }\n let active = true\n Promise.resolve(codeMode?.loader())\n .then((extension) => {\n if (active) {\n setLanguageExtension(extension)\n }\n })\n .catch((e) => {\n console.error(`Failed to load language mode ${mode}`, e)\n if (active) {\n setLanguageExtension(undefined)\n }\n })\n return () => {\n active = false\n }\n }, [mode, codeConfig])\n\n return languageExtension\n}\n\nexport default CodeMirrorProxy\n"],"names":["useCodeMirrorTheme","theme","useTheme","useMemo","code","codeFont","sanity","fonts","base","card","dark","syntax","color","createTheme","settings","background","enabled","bg","foreground","fg","lineHighlight","fontFamily","family","caret","focusRing","selection","rgba","selectionMatch","gutterBackground","disabled","gutterForeground","gutterActiveForeground","styles","tag","t","tags","heading","heading2","heading3","heading4","heading5","heading6","angleBracket","atom","keyword","attributeName","attrName","bool","boolean","bracket","className","comment","definition","typeName","function","variableName","propertyName","null","number","meta","operator","property","string","special","brace","tagName","defaultCodeModes","name","loader","then","javascript","jsx","typescript","php","sql","MySQL","dialect","json","markdown","java","html","csharp","StreamLanguage","define","shell","css","sass","ruby","python","xml","yaml","go","highlightLineClass","addLineHighlight","StateEffect","removeLineHighlight","lineHighlightField","StateField","create","Decoration","none","update","lines","tr","map","changes","e","effects","is","add","lineHighlightMark","range","value","filter","from","toJSON","state","highlightLines","iter","lineNumber","doc","lineAt","includes","push","next","fromJSON","highlights","line","provide","f","EditorView","decorations","class","highlightState","highlight","createCodeMirrorTheme","options","themeCtx","tone","light","baseTheme","cursor","position","top","bottom","left","right","zIndex","content","boxSizing","muted","caution","pressed","highlightLine","config","highlightTheme","readOnly","lineNumbers","domEventHandlers","mousedown","editorView","lineInfo","isHighlighted","field","between","to","dispatch","of","onHighlightChange","setHighlightedLines","view","allLineNumbers","Array","length","x","i","useFontSizeExtension","props","fontSize","fontSizeProp","lineHeight","sizes","rem","useThemeExtension","useRootTheme","height","outline","backgroundColor","border","minWidth","padding","width","borderRight","CodeMirrorProxy","forwardRef","ref","basicSetup","basicSetupProp","languageMode","codeMirrorProps","codeMirrorTheme","setEditorView","useState","themeExtension","fontSizeExtension","languageExtension","useLanguageExtension","highlightLineExtension","extensions","baseExtensions","lineWrapping","useEffect","initialState","main","ranges","anchor","head","fields","handleCreateEditor","useCallback","highlightActiveLine","CodeMirror","default","onCreateEditor","mode","codeConfig","useContext","CodeInputConfigContext","setLanguageExtension","_a","customModes","codeModes","modes","codeMode","find","m","console","warn","active","Promise","resolve","extension","catch","error"],"mappings":"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"}