@uiw/react-codemirror 4.5.2 → 4.7.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 +5 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +3 -1
- package/cjs/index.js.map +3 -2
- package/cjs/useCodeMirror.js +6 -21
- package/cjs/useCodeMirror.js.map +5 -11
- package/dist/codemirror.js +2923 -1072
- package/dist/codemirror.min.js +1 -1
- package/dist/codemirror.min.js.LICENSE.txt +2 -7
- package/esm/index.d.ts +1 -0
- package/esm/index.js +3 -1
- package/esm/index.js.map +3 -2
- package/esm/useCodeMirror.js +5 -21
- package/esm/useCodeMirror.js.map +4 -10
- package/package.json +31 -30
- package/src/index.tsx +3 -0
- package/src/useCodeMirror.ts +4 -20
package/README.md
CHANGED
|
@@ -246,6 +246,11 @@ export interface ReactCodeMirrorProps
|
|
|
246
246
|
* @default true
|
|
247
247
|
*/
|
|
248
248
|
editable?: boolean;
|
|
249
|
+
/**
|
|
250
|
+
* This disables editing of the editor content by the user.
|
|
251
|
+
* @default false
|
|
252
|
+
*/
|
|
253
|
+
readOnly?: boolean;
|
|
249
254
|
/**
|
|
250
255
|
* Whether to optional basicSetup by default
|
|
251
256
|
* @default true
|
package/cjs/index.d.ts
CHANGED
package/cjs/index.js
CHANGED
|
@@ -75,7 +75,7 @@ Object.keys(_state).forEach(function (key) {
|
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
-
var _excluded = ["className", "value", "selection", "extensions", "onChange", "onUpdate", "autoFocus", "theme", "height", "minHeight", "maxHeight", "width", "minWidth", "maxWidth", "basicSetup", "placeholder", "indentWithTab", "editable", "root"];
|
|
78
|
+
var _excluded = ["className", "value", "selection", "extensions", "onChange", "onUpdate", "autoFocus", "theme", "height", "minHeight", "maxHeight", "width", "minWidth", "maxWidth", "basicSetup", "placeholder", "indentWithTab", "editable", "readOnly", "root"];
|
|
79
79
|
|
|
80
80
|
var ReactCodeMirror = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
81
81
|
var className = props.className,
|
|
@@ -99,6 +99,7 @@ var ReactCodeMirror = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
99
99
|
placeholder = props.placeholder,
|
|
100
100
|
indentWithTab = props.indentWithTab,
|
|
101
101
|
editable = props.editable,
|
|
102
|
+
readOnly = props.readOnly,
|
|
102
103
|
root = props.root,
|
|
103
104
|
other = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
104
105
|
var editor = (0, _react.useRef)(null);
|
|
@@ -119,6 +120,7 @@ var ReactCodeMirror = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
119
120
|
placeholder: placeholder,
|
|
120
121
|
indentWithTab: indentWithTab,
|
|
121
122
|
editable: editable,
|
|
123
|
+
readOnly: readOnly,
|
|
122
124
|
selection: selection,
|
|
123
125
|
onChange: onChange,
|
|
124
126
|
onUpdate: onUpdate,
|
package/cjs/index.js.map
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"placeholder",
|
|
28
28
|
"indentWithTab",
|
|
29
29
|
"editable",
|
|
30
|
+
"readOnly",
|
|
30
31
|
"root",
|
|
31
32
|
"other",
|
|
32
33
|
"editor",
|
|
@@ -39,8 +40,8 @@
|
|
|
39
40
|
"defaultClassNames",
|
|
40
41
|
"displayName"
|
|
41
42
|
],
|
|
42
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;;AAGA;;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAHA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;
|
|
43
|
+
"mappings": "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",
|
|
43
44
|
"sourcesContent": [
|
|
44
|
-
"import React, { useEffect, useRef, useImperativeHandle } from 'react';\nimport { EditorState, EditorStateConfig, Extension } from '@codemirror/state';\nimport { EditorView, ViewUpdate } from '@codemirror/view';\nimport { useCodeMirror } from './useCodeMirror';\n\nexport * from '@codemirror/view';\nexport * from '@codemirror/basic-setup';\nexport * from '@codemirror/state';\nexport * from './useCodeMirror';\n\nexport interface ReactCodeMirrorProps\n extends Omit<EditorStateConfig, 'doc' | 'extensions'>,\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'placeholder'> {\n /** value of the auto created model in the editor. */\n value?: string;\n height?: string;\n minHeight?: string;\n maxHeight?: string;\n width?: string;\n minWidth?: string;\n maxWidth?: string;\n /** focus on the editor. */\n autoFocus?: boolean;\n /** Enables a placeholder—a piece of example content to show when the editor is empty. */\n placeholder?: string | HTMLElement;\n /**\n * `light` / `dark` / `Extension` Defaults to `light`.\n * @default light\n */\n theme?: 'light' | 'dark' | Extension;\n /**\n * Whether to optional basicSetup by default\n * @default true\n */\n basicSetup?: boolean;\n /**\n * This disables editing of the editor content by the user.\n * @default true\n */\n editable?: boolean;\n /**\n * Whether to optional basicSetup by default\n * @default true\n */\n indentWithTab?: boolean;\n /** Fired whenever a change occurs to the document. */\n onChange?(value: string, viewUpdate: ViewUpdate): void;\n /** Fired whenever a change occurs to the document. There is a certain difference with `onChange`. */\n onUpdate?(viewUpdate: ViewUpdate): void;\n /**\n * Extension values can be [provided](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions) when creating a state to attach various kinds of configuration and behavior information.\n * They can either be built-in extension-providing objects,\n * such as [state fields](https://codemirror.net/6/docs/ref/#state.StateField) or [facet providers](https://codemirror.net/6/docs/ref/#state.Facet.of),\n * or objects with an extension in its `extension` property. Extensions can be nested in arrays arbitrarily deep—they will be flattened when processed.\n */\n extensions?: Extension[];\n /**\n * If the view is going to be mounted in a shadow root or document other than the one held by the global variable document (the default), you should pass it here.\n * Originally from the [config of EditorView](https://codemirror.net/6/docs/ref/#view.EditorView.constructor%5Econfig.root)\n */\n root?: ShadowRoot | Document;\n}\n\nexport interface ReactCodeMirrorRef {\n editor?: HTMLDivElement | null;\n state?: EditorState;\n view?: EditorView;\n}\n\nconst ReactCodeMirror = React.forwardRef<ReactCodeMirrorRef, ReactCodeMirrorProps>((props, ref) => {\n const {\n className,\n value = '',\n selection,\n extensions = [],\n onChange,\n onUpdate,\n autoFocus,\n theme = 'light',\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n basicSetup,\n placeholder,\n indentWithTab,\n editable,\n root,\n ...other\n } = props;\n const editor = useRef<HTMLDivElement>(null);\n const { state, view, container, setContainer } = useCodeMirror({\n container: editor.current,\n root,\n value,\n autoFocus,\n theme,\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n basicSetup,\n placeholder,\n indentWithTab,\n editable,\n selection,\n onChange,\n onUpdate,\n extensions,\n });\n useImperativeHandle(ref, () => ({ editor: container, state, view }), [container, state, view]);\n useEffect(() => {\n setContainer(editor.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // check type of value\n if (typeof value !== 'string') {\n throw new Error(`value must be typeof string but got ${typeof value}`);\n }\n\n const defaultClassNames = typeof theme === 'string' ? `cm-theme-${theme}` : 'cm-theme';\n return <div ref={editor} className={`${defaultClassNames}${className ? ` ${className}` : ''}`} {...other}></div>;\n});\n\nReactCodeMirror.displayName = 'CodeMirror';\n\nexport default ReactCodeMirror;\n"
|
|
45
|
+
"import React, { useEffect, useRef, useImperativeHandle } from 'react';\nimport { EditorState, EditorStateConfig, Extension } from '@codemirror/state';\nimport { EditorView, ViewUpdate } from '@codemirror/view';\nimport { useCodeMirror } from './useCodeMirror';\n\nexport * from '@codemirror/view';\nexport * from '@codemirror/basic-setup';\nexport * from '@codemirror/state';\nexport * from './useCodeMirror';\n\nexport interface ReactCodeMirrorProps\n extends Omit<EditorStateConfig, 'doc' | 'extensions'>,\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'placeholder'> {\n /** value of the auto created model in the editor. */\n value?: string;\n height?: string;\n minHeight?: string;\n maxHeight?: string;\n width?: string;\n minWidth?: string;\n maxWidth?: string;\n /** focus on the editor. */\n autoFocus?: boolean;\n /** Enables a placeholder—a piece of example content to show when the editor is empty. */\n placeholder?: string | HTMLElement;\n /**\n * `light` / `dark` / `Extension` Defaults to `light`.\n * @default light\n */\n theme?: 'light' | 'dark' | Extension;\n /**\n * Whether to optional basicSetup by default\n * @default true\n */\n basicSetup?: boolean;\n /**\n * This disables editing of the editor content by the user.\n * @default true\n */\n editable?: boolean;\n readOnly?: boolean;\n /**\n * Whether to optional basicSetup by default\n * @default true\n */\n indentWithTab?: boolean;\n /** Fired whenever a change occurs to the document. */\n onChange?(value: string, viewUpdate: ViewUpdate): void;\n /** Fired whenever a change occurs to the document. There is a certain difference with `onChange`. */\n onUpdate?(viewUpdate: ViewUpdate): void;\n /**\n * Extension values can be [provided](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions) when creating a state to attach various kinds of configuration and behavior information.\n * They can either be built-in extension-providing objects,\n * such as [state fields](https://codemirror.net/6/docs/ref/#state.StateField) or [facet providers](https://codemirror.net/6/docs/ref/#state.Facet.of),\n * or objects with an extension in its `extension` property. Extensions can be nested in arrays arbitrarily deep—they will be flattened when processed.\n */\n extensions?: Extension[];\n /**\n * If the view is going to be mounted in a shadow root or document other than the one held by the global variable document (the default), you should pass it here.\n * Originally from the [config of EditorView](https://codemirror.net/6/docs/ref/#view.EditorView.constructor%5Econfig.root)\n */\n root?: ShadowRoot | Document;\n}\n\nexport interface ReactCodeMirrorRef {\n editor?: HTMLDivElement | null;\n state?: EditorState;\n view?: EditorView;\n}\n\nconst ReactCodeMirror = React.forwardRef<ReactCodeMirrorRef, ReactCodeMirrorProps>((props, ref) => {\n const {\n className,\n value = '',\n selection,\n extensions = [],\n onChange,\n onUpdate,\n autoFocus,\n theme = 'light',\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n basicSetup,\n placeholder,\n indentWithTab,\n editable,\n readOnly,\n root,\n ...other\n } = props;\n const editor = useRef<HTMLDivElement>(null);\n const { state, view, container, setContainer } = useCodeMirror({\n container: editor.current,\n root,\n value,\n autoFocus,\n theme,\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n basicSetup,\n placeholder,\n indentWithTab,\n editable,\n readOnly,\n selection,\n onChange,\n onUpdate,\n extensions,\n });\n useImperativeHandle(ref, () => ({ editor: container, state, view }), [container, state, view]);\n useEffect(() => {\n setContainer(editor.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // check type of value\n if (typeof value !== 'string') {\n throw new Error(`value must be typeof string but got ${typeof value}`);\n }\n\n const defaultClassNames = typeof theme === 'string' ? `cm-theme-${theme}` : 'cm-theme';\n return <div ref={editor} className={`${defaultClassNames}${className ? ` ${className}` : ''}`} {...other}></div>;\n});\n\nReactCodeMirror.displayName = 'CodeMirror';\n\nexport default ReactCodeMirror;\n"
|
|
45
46
|
]
|
|
46
47
|
}
|
package/cjs/useCodeMirror.js
CHANGED
|
@@ -49,6 +49,8 @@ function useCodeMirror(props) {
|
|
|
49
49
|
maxWidth = _props$maxWidth === void 0 ? '' : _props$maxWidth,
|
|
50
50
|
_props$editable = props.editable,
|
|
51
51
|
editable = _props$editable === void 0 ? true : _props$editable,
|
|
52
|
+
_props$readOnly = props.readOnly,
|
|
53
|
+
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
|
|
52
54
|
_props$indentWithTab = props.indentWithTab,
|
|
53
55
|
defaultIndentWithTab = _props$indentWithTab === void 0 ? true : _props$indentWithTab,
|
|
54
56
|
_props$basicSetup = props.basicSetup,
|
|
@@ -98,27 +100,6 @@ function useCodeMirror(props) {
|
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
if (defaultBasicSetup) {
|
|
101
|
-
if (Array.isArray(_basicSetup.basicSetup)) {
|
|
102
|
-
/**
|
|
103
|
-
* 🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧
|
|
104
|
-
* This is not a solution.
|
|
105
|
-
* https://github.com/uiwjs/react-codemirror/issues/280
|
|
106
|
-
*/
|
|
107
|
-
_basicSetup.basicSetup.map(function (item) {
|
|
108
|
-
if (item.value && Array.isArray(item.value)) {
|
|
109
|
-
item.value = item.value.map(function (keymap) {
|
|
110
|
-
if ('Mod-f' === keymap.key) {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return keymap;
|
|
115
|
-
}).filter(Boolean);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return item;
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
|
|
122
103
|
getExtensions.unshift(_basicSetup.basicSetup);
|
|
123
104
|
}
|
|
124
105
|
|
|
@@ -144,6 +125,10 @@ function useCodeMirror(props) {
|
|
|
144
125
|
getExtensions.push(_view.EditorView.editable.of(false));
|
|
145
126
|
}
|
|
146
127
|
|
|
128
|
+
if (readOnly) {
|
|
129
|
+
getExtensions.push(_state.EditorState.readOnly.of(true));
|
|
130
|
+
}
|
|
131
|
+
|
|
147
132
|
if (onUpdate && typeof onUpdate === 'function') {
|
|
148
133
|
getExtensions.push(_view.EditorView.updateListener.of(onUpdate));
|
|
149
134
|
}
|
package/cjs/useCodeMirror.js.map
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"minWidth",
|
|
23
23
|
"maxWidth",
|
|
24
24
|
"editable",
|
|
25
|
+
"readOnly",
|
|
25
26
|
"indentWithTab",
|
|
26
27
|
"defaultIndentWithTab",
|
|
27
28
|
"basicSetup",
|
|
@@ -44,23 +45,16 @@
|
|
|
44
45
|
"getExtensions",
|
|
45
46
|
"unshift",
|
|
46
47
|
"keymap",
|
|
47
|
-
"Array",
|
|
48
|
-
"isArray",
|
|
49
|
-
"map",
|
|
50
|
-
"item",
|
|
51
|
-
"key",
|
|
52
|
-
"undefined",
|
|
53
|
-
"filter",
|
|
54
|
-
"Boolean",
|
|
55
48
|
"push",
|
|
56
49
|
"defaultLightThemeOption",
|
|
57
50
|
"oneDark",
|
|
51
|
+
"EditorState",
|
|
58
52
|
"concat",
|
|
59
53
|
"stateCurrent",
|
|
60
|
-
"EditorState",
|
|
61
54
|
"create",
|
|
62
55
|
"viewCurrent",
|
|
63
56
|
"parent",
|
|
57
|
+
"undefined",
|
|
64
58
|
"destroy",
|
|
65
59
|
"focus",
|
|
66
60
|
"currentValue",
|
|
@@ -74,8 +68,8 @@
|
|
|
74
68
|
"StateEffect",
|
|
75
69
|
"reconfigure"
|
|
76
70
|
],
|
|
77
|
-
"mappings": ";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAMO,SAASA,aAAT,CAAuBC,KAAvB,EAA6C;AAClD,MACEC,KADF,
|
|
71
|
+
"mappings": "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",
|
|
78
72
|
"sourcesContent": [
|
|
79
|
-
"import { useEffect, useState } from 'react';\nimport { basicSetup } from '@codemirror/basic-setup';\nimport { EditorState, StateEffect } from '@codemirror/state';\nimport { indentWithTab } from '@codemirror/commands';\nimport { EditorView, keymap, ViewUpdate, placeholder } from '@codemirror/view';\nimport { oneDark } from '@codemirror/theme-one-dark';\nimport { ReactCodeMirrorProps } from './';\nimport { defaultLightThemeOption } from './theme/light';\n\nexport interface UseCodeMirror extends ReactCodeMirrorProps {\n container?: HTMLDivElement | null;\n}\n\nexport function useCodeMirror(props: UseCodeMirror) {\n const {\n value,\n selection,\n onChange,\n onUpdate,\n extensions = [],\n autoFocus,\n theme = 'light',\n height = '',\n minHeight = '',\n maxHeight = '',\n placeholder: placeholderStr = '',\n width = '',\n minWidth = '',\n maxWidth = '',\n editable = true,\n indentWithTab: defaultIndentWithTab = true,\n basicSetup: defaultBasicSetup = true,\n root,\n } = props;\n const [container, setContainer] = useState(props.container);\n const [view, setView] = useState<EditorView>();\n const [state, setState] = useState<EditorState>();\n const defaultThemeOption = EditorView.theme({\n '&': {\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n },\n });\n const updateListener = EditorView.updateListener.of((vu: ViewUpdate) => {\n if (vu.docChanged && typeof onChange === 'function') {\n const doc = vu.state.doc;\n const value = doc.toString();\n onChange(value, vu);\n }\n });\n let getExtensions = [updateListener, defaultThemeOption];\n if (defaultIndentWithTab) {\n getExtensions.unshift(keymap.of([indentWithTab]));\n }\n if (defaultBasicSetup) {\n
|
|
73
|
+
"import { useEffect, useState } from 'react';\nimport { basicSetup } from '@codemirror/basic-setup';\nimport { EditorState, StateEffect } from '@codemirror/state';\nimport { indentWithTab } from '@codemirror/commands';\nimport { EditorView, keymap, ViewUpdate, placeholder } from '@codemirror/view';\nimport { oneDark } from '@codemirror/theme-one-dark';\nimport { ReactCodeMirrorProps } from './';\nimport { defaultLightThemeOption } from './theme/light';\n\nexport interface UseCodeMirror extends ReactCodeMirrorProps {\n container?: HTMLDivElement | null;\n}\n\nexport function useCodeMirror(props: UseCodeMirror) {\n const {\n value,\n selection,\n onChange,\n onUpdate,\n extensions = [],\n autoFocus,\n theme = 'light',\n height = '',\n minHeight = '',\n maxHeight = '',\n placeholder: placeholderStr = '',\n width = '',\n minWidth = '',\n maxWidth = '',\n editable = true,\n readOnly = false,\n indentWithTab: defaultIndentWithTab = true,\n basicSetup: defaultBasicSetup = true,\n root,\n } = props;\n const [container, setContainer] = useState(props.container);\n const [view, setView] = useState<EditorView>();\n const [state, setState] = useState<EditorState>();\n const defaultThemeOption = EditorView.theme({\n '&': {\n height,\n minHeight,\n maxHeight,\n width,\n minWidth,\n maxWidth,\n },\n });\n const updateListener = EditorView.updateListener.of((vu: ViewUpdate) => {\n if (vu.docChanged && typeof onChange === 'function') {\n const doc = vu.state.doc;\n const value = doc.toString();\n onChange(value, vu);\n }\n });\n let getExtensions = [updateListener, defaultThemeOption];\n if (defaultIndentWithTab) {\n getExtensions.unshift(keymap.of([indentWithTab]));\n }\n if (defaultBasicSetup) {\n getExtensions.unshift(basicSetup);\n }\n\n if (placeholderStr) {\n getExtensions.unshift(placeholder(placeholderStr));\n }\n\n switch (theme) {\n case 'light':\n getExtensions.push(defaultLightThemeOption);\n break;\n case 'dark':\n getExtensions.push(oneDark);\n break;\n default:\n getExtensions.push(theme);\n break;\n }\n\n if (editable === false) {\n getExtensions.push(EditorView.editable.of(false));\n }\n if (readOnly) {\n getExtensions.push(EditorState.readOnly.of(true));\n }\n\n if (onUpdate && typeof onUpdate === 'function') {\n getExtensions.push(EditorView.updateListener.of(onUpdate));\n }\n getExtensions = getExtensions.concat(extensions);\n\n useEffect(() => {\n if (container && !state) {\n const stateCurrent = EditorState.create({\n doc: value,\n selection,\n extensions: getExtensions,\n });\n setState(stateCurrent);\n if (!view) {\n const viewCurrent = new EditorView({\n state: stateCurrent,\n parent: container,\n root,\n });\n setView(viewCurrent);\n }\n }\n return () => {\n if (view) {\n setView(undefined);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [container, state]);\n\n useEffect(\n () => () => {\n if (view) {\n view.destroy();\n setView(undefined);\n }\n },\n [view],\n );\n\n useEffect(() => {\n if (autoFocus && view) {\n view.focus();\n }\n }, [autoFocus, view]);\n\n useEffect(() => {\n const currentValue = view ? view.state.doc.toString() : '';\n if (view && value !== currentValue) {\n view.dispatch({\n changes: { from: 0, to: currentValue.length, insert: value || '' },\n });\n }\n }, [value, view]);\n\n useEffect(() => {\n if (view) {\n view.dispatch({ effects: StateEffect.reconfigure.of(getExtensions) });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n theme,\n extensions,\n height,\n minHeight,\n maxHeight,\n width,\n placeholderStr,\n minWidth,\n maxWidth,\n editable,\n defaultIndentWithTab,\n defaultBasicSetup,\n ]);\n\n return { state, setState, view, setView, container, setContainer };\n}\n"
|
|
80
74
|
]
|
|
81
75
|
}
|