@@ -18,7 +18,6 @@ import {
1818 type UseMarkdownEditorProps ,
1919 WysiwygPlaceholderOptions ,
2020 logger ,
21- markupToolbarConfigs ,
2221 useMarkdownEditor ,
2322 wysiwygToolbarConfigs ,
2423} from '../../src' ;
@@ -29,8 +28,8 @@ import {Math} from '../../src/extensions/additional/Math';
2928import { Mermaid } from '../../src/extensions/additional/Mermaid' ;
3029import { YfmHtmlBlock } from '../../src/extensions/additional/YfmHtmlBlock' ;
3130import { getSanitizeYfmHtmlBlock } from '../../src/extensions/additional/YfmHtmlBlock/utils' ;
32- import { cloneDeep } from '../../src/lodash' ;
3331import type { CodeEditor } from '../../src/markup' ;
32+ import { ToolbarsPreset } from '../../src/modules/toolbars/types' ;
3433import { VERSION } from '../../src/version' ;
3534import { getPlugins } from '../defaults/md-plugins' ;
3635import useYfmHtmlBlockStyles from '../hooks/useYfmHtmlBlockStyles' ;
@@ -52,19 +51,6 @@ const fileUploadHandler: FileUploadHandler = async (file) => {
5251 return { url : URL . createObjectURL ( file ) } ;
5352} ;
5453
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-
6854const wCommandMenuConfig = wysiwygToolbarConfigs . wCommandMenuConfig . concat (
6955 wysiwygToolbarConfigs . wMathInlineItemData ,
7056 wysiwygToolbarConfigs . wMathBlockItemData ,
@@ -92,6 +78,7 @@ export type PlaygroundProps = {
9278 escapeConfig ?: EscapeConfig ;
9379 wysiwygCommandMenuConfig ?: wysiwygToolbarConfigs . WToolbarItemData [ ] ;
9480 markupToolbarConfig ?: ToolbarGroupData < CodeEditor > [ ] ;
81+ toolbarsPreset ?: ToolbarsPreset ;
9582 onChangeEditorType ?: ( mode : MarkdownEditorMode ) => void ;
9683 onChangeSplitModeEnabled ?: ( splitModeEnabled : boolean ) => void ;
9784 directiveSyntax ?: DirectiveSyntaxValue ;
@@ -137,6 +124,7 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
137124 height,
138125 extraExtensions,
139126 extensionOptions,
127+ toolbarsPreset,
140128 wysiwygToolbarConfig,
141129 wysiwygCommandMenuConfig,
142130 markupConfigExtensions,
@@ -175,6 +163,47 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
175163
176164 const mdEditor = useMarkdownEditor (
177165 {
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+ } ,
178207 allowHTML,
179208 linkify,
180209 linkifyTlds,
@@ -184,13 +213,9 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
184213 initialSplitModeEnabled : initialSplitModeEnabled ,
185214 initialToolbarVisible : true ,
186215 splitMode : splitModeOrientation ,
187- escapeConfig : escapeConfig ,
188216 needToSetDimensionsForUploadedImages,
189217 renderPreview : renderPreviewDefined ? renderPreview : undefined ,
190218 fileUploadHandler,
191- wysiwygConfig : {
192- placeholderOptions : placeholderOptions ,
193- } ,
194219 experimental : {
195220 ...experimental ,
196221 directiveSyntax,
@@ -209,42 +234,6 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
209234 extensions : markupConfigExtensions ,
210235 parseInsertedUrlAsImage,
211236 } ,
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- } ,
248237 } ,
249238 [
250239 allowHTML ,
@@ -394,8 +383,9 @@ export const Playground = React.memo<PlaygroundProps>((props) => {
394383 toaster = { toaster }
395384 className = { b ( 'editor-view' ) }
396385 stickyToolbar = { Boolean ( stickyToolbar ) }
397- wysiwygToolbarConfig = { wysiwygToolbarConfig ?? wToolbarConfig }
398- markupToolbarConfig = { markupToolbarConfig ?? mToolbarConfig }
386+ toolbarsPreset = { toolbarsPreset }
387+ wysiwygToolbarConfig = { wysiwygToolbarConfig }
388+ markupToolbarConfig = { markupToolbarConfig }
399389 settingsVisible = { settingsVisible }
400390 editor = { mdEditor }
401391 enableSubmitInPreview = { enableSubmitInPreview }
0 commit comments