@@ -18,7 +18,6 @@ import {
18
18
type UseMarkdownEditorProps ,
19
19
WysiwygPlaceholderOptions ,
20
20
logger ,
21
- markupToolbarConfigs ,
22
21
useMarkdownEditor ,
23
22
wysiwygToolbarConfigs ,
24
23
} from '../../src' ;
@@ -29,8 +28,8 @@ import {Math} from '../../src/extensions/additional/Math';
29
28
import { Mermaid } from '../../src/extensions/additional/Mermaid' ;
30
29
import { YfmHtmlBlock } from '../../src/extensions/additional/YfmHtmlBlock' ;
31
30
import { getSanitizeYfmHtmlBlock } from '../../src/extensions/additional/YfmHtmlBlock/utils' ;
32
- import { cloneDeep } from '../../src/lodash' ;
33
31
import type { CodeEditor } from '../../src/markup' ;
32
+ import { ToolbarsPreset } from '../../src/modules/toolbars/types' ;
34
33
import { VERSION } from '../../src/version' ;
35
34
import { getPlugins } from '../defaults/md-plugins' ;
36
35
import useYfmHtmlBlockStyles from '../hooks/useYfmHtmlBlockStyles' ;
@@ -52,19 +51,6 @@ const fileUploadHandler: FileUploadHandler = async (file) => {
52
51
return { url : URL . createObjectURL ( file ) } ;
53
52
} ;
54
53
55
- const mToolbarConfig = [
56
- ...markupToolbarConfigs . mToolbarConfig ,
57
- [ markupToolbarConfigs . mMermaidButton , markupToolbarConfigs . mYfmHtmlBlockButton ] ,
58
- ] ;
59
- mToolbarConfig [ 2 ] . push ( markupToolbarConfigs . mMathListItem ) ;
60
-
61
- const wToolbarConfig = cloneDeep ( wysiwygToolbarConfigs . wToolbarConfig ) ;
62
- wToolbarConfig [ 2 ] . push ( wysiwygToolbarConfigs . wMathListItem ) ;
63
- wToolbarConfig . push ( [
64
- wysiwygToolbarConfigs . wMermaidItemData ,
65
- wysiwygToolbarConfigs . wYfmHtmlBlockItemData ,
66
- ] ) ;
67
-
68
54
const wCommandMenuConfig = wysiwygToolbarConfigs . wCommandMenuConfig . concat (
69
55
wysiwygToolbarConfigs . wMathInlineItemData ,
70
56
wysiwygToolbarConfigs . wMathBlockItemData ,
@@ -92,6 +78,7 @@ export type PlaygroundProps = {
92
78
escapeConfig ?: EscapeConfig ;
93
79
wysiwygCommandMenuConfig ?: wysiwygToolbarConfigs . WToolbarItemData [ ] ;
94
80
markupToolbarConfig ?: ToolbarGroupData < CodeEditor > [ ] ;
81
+ toolbarsPreset ?: ToolbarsPreset ;
95
82
onChangeEditorType ?: ( mode : MarkdownEditorMode ) => void ;
96
83
onChangeSplitModeEnabled ?: ( splitModeEnabled : boolean ) => void ;
97
84
directiveSyntax ?: DirectiveSyntaxValue ;
@@ -137,6 +124,7 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
137
124
height,
138
125
extraExtensions,
139
126
extensionOptions,
127
+ toolbarsPreset,
140
128
wysiwygToolbarConfig,
141
129
wysiwygCommandMenuConfig,
142
130
markupConfigExtensions,
@@ -175,6 +163,47 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
175
163
176
164
const mdEditor = useMarkdownEditor (
177
165
{
166
+ preset : 'full' ,
167
+ wysiwygConfig : {
168
+ escapeConfig,
169
+ placeholderOptions : placeholderOptions ,
170
+ extensions : ( builder ) => {
171
+ builder
172
+ . use ( Math , {
173
+ loadRuntimeScript : ( ) => {
174
+ import (
175
+ /* webpackChunkName: "latex-runtime" */ '@diplodoc/latex-extension/runtime'
176
+ ) ;
177
+ import (
178
+ // @ts -expect-error // no types for styles
179
+ /* webpackChunkName: "latex-styles" */ '@diplodoc/latex-extension/runtime/styles'
180
+ ) ;
181
+ } ,
182
+ } )
183
+ . use ( Mermaid , {
184
+ loadRuntimeScript : ( ) => {
185
+ import (
186
+ /* webpackChunkName: "mermaid-runtime" */ '@diplodoc/mermaid-extension/runtime'
187
+ ) ;
188
+ } ,
189
+ } )
190
+ . use ( FoldingHeading )
191
+ . use ( YfmHtmlBlock , {
192
+ useConfig : useYfmHtmlBlockStyles ,
193
+ sanitize : getSanitizeYfmHtmlBlock ( { options : defaultOptions } ) ,
194
+ head : `
195
+ <base target="_blank" />
196
+ <style>
197
+ html, body {
198
+ margin: 0;
199
+ padding: 0;
200
+ }
201
+ </style
202
+ ` ,
203
+ } ) ;
204
+ if ( extraExtensions ) builder . use ( extraExtensions ) ;
205
+ } ,
206
+ } ,
178
207
allowHTML,
179
208
linkify,
180
209
linkifyTlds,
@@ -184,13 +213,9 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
184
213
initialSplitModeEnabled : initialSplitModeEnabled ,
185
214
initialToolbarVisible : true ,
186
215
splitMode : splitModeOrientation ,
187
- escapeConfig : escapeConfig ,
188
216
needToSetDimensionsForUploadedImages,
189
217
renderPreview : renderPreviewDefined ? renderPreview : undefined ,
190
218
fileUploadHandler,
191
- wysiwygConfig : {
192
- placeholderOptions : placeholderOptions ,
193
- } ,
194
219
experimental : {
195
220
...experimental ,
196
221
directiveSyntax,
@@ -209,42 +234,6 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
209
234
extensions : markupConfigExtensions ,
210
235
parseInsertedUrlAsImage,
211
236
} ,
212
- extraExtensions : ( builder ) => {
213
- builder
214
- . use ( Math , {
215
- loadRuntimeScript : ( ) => {
216
- import (
217
- /* webpackChunkName: "latex-runtime" */ '@diplodoc/latex-extension/runtime'
218
- ) ;
219
- import (
220
- // @ts -expect-error // no types for styles
221
- /* webpackChunkName: "latex-styles" */ '@diplodoc/latex-extension/runtime/styles'
222
- ) ;
223
- } ,
224
- } )
225
- . use ( Mermaid , {
226
- loadRuntimeScript : ( ) => {
227
- import (
228
- /* webpackChunkName: "mermaid-runtime" */ '@diplodoc/mermaid-extension/runtime'
229
- ) ;
230
- } ,
231
- } )
232
- . use ( FoldingHeading )
233
- . use ( YfmHtmlBlock , {
234
- useConfig : useYfmHtmlBlockStyles ,
235
- sanitize : getSanitizeYfmHtmlBlock ( { options : defaultOptions } ) ,
236
- head : `
237
- <base target="_blank" />
238
- <style>
239
- html, body {
240
- margin: 0;
241
- padding: 0;
242
- }
243
- </style
244
- ` ,
245
- } ) ;
246
- if ( extraExtensions ) builder . use ( extraExtensions ) ;
247
- } ,
248
237
} ,
249
238
[
250
239
allowHTML ,
@@ -394,8 +383,9 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
394
383
toaster = { toaster }
395
384
className = { b ( 'editor-view' ) }
396
385
stickyToolbar = { Boolean ( stickyToolbar ) }
397
- wysiwygToolbarConfig = { wysiwygToolbarConfig ?? wToolbarConfig }
398
- markupToolbarConfig = { markupToolbarConfig ?? mToolbarConfig }
386
+ toolbarsPreset = { toolbarsPreset }
387
+ wysiwygToolbarConfig = { wysiwygToolbarConfig }
388
+ markupToolbarConfig = { markupToolbarConfig }
399
389
settingsVisible = { settingsVisible }
400
390
editor = { mdEditor }
401
391
enableSubmitInPreview = { enableSubmitInPreview }
0 commit comments