@gravity-ui/markdown-editor 15.5.1 → 15.6.1

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 (56) hide show
  1. package/build/cjs/bundle/MarkdownEditorView.js +2 -2
  2. package/build/cjs/bundle/MarkdownEditorView.js.map +1 -1
  3. package/build/cjs/bundle/MarkupEditorView.js +1 -1
  4. package/build/cjs/bundle/MarkupEditorView.js.map +1 -1
  5. package/build/cjs/bundle/WysiwygEditorView.js +1 -1
  6. package/build/cjs/bundle/WysiwygEditorView.js.map +1 -1
  7. package/build/cjs/bundle/config/w-heading-config.js +1 -0
  8. package/build/cjs/bundle/config/w-heading-config.js.map +1 -1
  9. package/build/cjs/bundle/settings/index.js +3 -3
  10. package/build/cjs/bundle/settings/index.js.map +1 -1
  11. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  12. package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  13. package/build/cjs/extensions/additional/QuoteLink/index.css +0 -4
  14. package/build/cjs/extensions/behavior/Clipboard/utils.d.ts +8 -1
  15. package/build/cjs/extensions/behavior/Clipboard/utils.js +3 -3
  16. package/build/cjs/extensions/behavior/Clipboard/utils.js.map +1 -1
  17. package/build/cjs/modules/toolbars/items.js +1 -0
  18. package/build/cjs/modules/toolbars/items.js.map +1 -1
  19. package/build/cjs/modules/toolbars/types.d.ts +2 -0
  20. package/build/cjs/modules/toolbars/types.js.map +1 -1
  21. package/build/cjs/toolbar/ToolbarListButton.d.ts +1 -1
  22. package/build/cjs/toolbar/ToolbarListButton.js +6 -4
  23. package/build/cjs/toolbar/ToolbarListButton.js.map +1 -1
  24. package/build/cjs/toolbar/types.d.ts +2 -0
  25. package/build/cjs/toolbar/types.js.map +1 -1
  26. package/build/cjs/version.js +1 -1
  27. package/build/cjs/version.js.map +1 -1
  28. package/build/esm/bundle/MarkdownEditorView.js +2 -2
  29. package/build/esm/bundle/MarkdownEditorView.js.map +1 -1
  30. package/build/esm/bundle/MarkupEditorView.js +1 -1
  31. package/build/esm/bundle/MarkupEditorView.js.map +1 -1
  32. package/build/esm/bundle/WysiwygEditorView.js +1 -1
  33. package/build/esm/bundle/WysiwygEditorView.js.map +1 -1
  34. package/build/esm/bundle/config/w-heading-config.js +1 -0
  35. package/build/esm/bundle/config/w-heading-config.js.map +1 -1
  36. package/build/esm/bundle/settings/index.js +3 -3
  37. package/build/esm/bundle/settings/index.js.map +1 -1
  38. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +4 -1
  39. package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
  40. package/build/esm/extensions/additional/QuoteLink/index.css +0 -4
  41. package/build/esm/extensions/behavior/Clipboard/utils.d.ts +8 -1
  42. package/build/esm/extensions/behavior/Clipboard/utils.js +3 -3
  43. package/build/esm/extensions/behavior/Clipboard/utils.js.map +1 -1
  44. package/build/esm/modules/toolbars/items.js +1 -0
  45. package/build/esm/modules/toolbars/items.js.map +1 -1
  46. package/build/esm/modules/toolbars/types.d.ts +2 -0
  47. package/build/esm/modules/toolbars/types.js.map +1 -1
  48. package/build/esm/toolbar/ToolbarListButton.d.ts +1 -1
  49. package/build/esm/toolbar/ToolbarListButton.js +6 -4
  50. package/build/esm/toolbar/ToolbarListButton.js.map +1 -1
  51. package/build/esm/toolbar/types.d.ts +2 -0
  52. package/build/esm/toolbar/types.js.map +1 -1
  53. package/build/esm/version.js +1 -1
  54. package/build/esm/version.js.map +1 -1
  55. package/build/styles.css +0 -4
  56. package/package.json +26 -26
@@ -23,7 +23,7 @@ export const MarkupEditorView = memo((props) => {
23
23
  duration: time,
24
24
  });
25
25
  });
26
- return (_jsxs("div", { className: b({ toolbar: toolbarVisible }, [className]), "data-mode": editor.currentMode, "data-qa": qa, children: [toolbarVisible ? (_jsx(MarkupToolbarContextProvider, { value: {
26
+ return (_jsxs("div", { className: b({ toolbar: toolbarVisible }, [className]), "data-qa": qa, children: [toolbarVisible ? (_jsx(MarkupToolbarContextProvider, { value: {
27
27
  uploadHandler: editor.fileUploadHandler,
28
28
  needToSetDimensionsForUploadedImages: editor.needToSetDimensionsForUploadedImages,
29
29
  }, children: _jsx(ToolbarView, { editor: editor, editorMode: "markup", toolbarEditor: editor, hiddenActionsConfig: hiddenActionsConfig, stickyToolbar: stickyToolbar, toolbarConfig: toolbarConfig, toolbarFocus: () => editor.focus(), settingsVisible: settingsVisible, className: b('toolbar', [toolbarClassName]), children: children }) })) : null, _jsx(MarkupEditorComponent, { autofocus: autofocus, editor: editor, className: b('editor', { 'toolbar-visible': toolbarVisible }), children: _jsx(ReactRendererComponent, { storage: editor.renderStorage }) })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"MarkupEditorView.js","sourceRoot":"../../../src","sources":["bundle/MarkupEditorView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,EAAsB,EAAE,EAAC,wBAAqB;AACrD,OAAO,EAAC,sBAAsB,EAAC,+BAAsB;AACrD,OAAO,EAAC,YAAY,EAAC,qBAAkB;AACvC,OAAO,EAAC,aAAa,EAAC,gCAA6B;AAGnD,OAAO,EAAC,qBAAqB,EAAC,mCAAgC;AAC9D,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,4BAA4B,EAAC,oCAAiC;AAItE,gCAAiC;AAEjC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;AAiB9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAwB,CAAC,KAAK,EAAE,EAAE;IAClE,MAAM,EACF,MAAM,EACN,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,EAAE,EACF,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GAAG,IAAI,GACvB,GAAG,KAAK,CAAC;IACV,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,eACI,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,cAAc,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,eACzC,MAAM,CAAC,WAAW,aACpB,EAAE,aAEV,cAAc,CAAC,CAAC,CAAC,CACd,KAAC,4BAA4B,IACzB,KAAK,EAAE;oBACH,aAAa,EAAE,MAAM,CAAC,iBAAiB;oBACvC,oCAAoC,EAChC,MAAM,CAAC,oCAAoC;iBAClD,YAED,KAAC,WAAW,IACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAC,QAAQ,EACnB,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAClC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC,YAE1C,QAAQ,GACC,GACa,CAClC,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,qBAAqB,IAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,iBAAiB,EAAE,cAAc,EAAC,CAAC,YAE3D,KAAC,sBAAsB,IAAC,OAAO,EAAE,MAAM,CAAC,aAAa,GAAI,GACrC,IACtB,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AACH,gBAAgB,CAAC,WAAW,GAAG,0BAA0B,CAAC","sourcesContent":["import {memo} from 'react';\n\nimport type {QAProps} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {ReactRendererComponent} from '../extensions';\nimport {globalLogger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport type {EditorInt} from './Editor';\nimport {MarkupEditorComponent} from './MarkupEditorComponent';\nimport {ToolbarView} from './ToolbarView';\nimport {MarkupToolbarContextProvider} from './toolbar/markup/context';\nimport type {MToolbarData, MToolbarItemData} from './toolbar/types';\nimport type {MarkdownEditorSplitMode} from './types';\n\nimport './MarkupEditorView.scss';\n\nconst b = cn('markup-editor');\n\nexport type MarkupEditorViewProps = ClassNameProps &\n QAProps & {\n editor: EditorInt;\n autofocus?: boolean;\n toolbarConfig: MToolbarData;\n settingsVisible?: boolean;\n toolbarVisible?: boolean;\n stickyToolbar?: boolean;\n toolbarClassName?: string;\n splitMode?: MarkdownEditorSplitMode;\n splitModeEnabled: boolean;\n hiddenActionsConfig?: MToolbarItemData[];\n children?: React.ReactNode;\n };\n\nexport const MarkupEditorView = memo<MarkupEditorViewProps>((props) => {\n const {\n editor,\n autofocus,\n settingsVisible,\n toolbarVisible,\n toolbarConfig,\n hiddenActionsConfig,\n qa,\n className,\n toolbarClassName,\n children,\n stickyToolbar = true,\n } = props;\n useRenderTime((time) => {\n globalLogger.metrics({\n component: 'markup-editor',\n event: 'render',\n duration: time,\n });\n editor.logger.metrics({\n component: 'markup-editor',\n event: 'render',\n duration: time,\n });\n });\n\n return (\n <div\n className={b({toolbar: toolbarVisible}, [className])}\n data-mode={editor.currentMode}\n data-qa={qa}\n >\n {toolbarVisible ? (\n <MarkupToolbarContextProvider\n value={{\n uploadHandler: editor.fileUploadHandler,\n needToSetDimensionsForUploadedImages:\n editor.needToSetDimensionsForUploadedImages,\n }}\n >\n <ToolbarView\n editor={editor}\n editorMode=\"markup\"\n toolbarEditor={editor}\n hiddenActionsConfig={hiddenActionsConfig}\n stickyToolbar={stickyToolbar}\n toolbarConfig={toolbarConfig}\n toolbarFocus={() => editor.focus()}\n settingsVisible={settingsVisible}\n className={b('toolbar', [toolbarClassName])}\n >\n {children}\n </ToolbarView>\n </MarkupToolbarContextProvider>\n ) : null}\n <MarkupEditorComponent\n autofocus={autofocus}\n editor={editor}\n className={b('editor', {'toolbar-visible': toolbarVisible})}\n >\n <ReactRendererComponent storage={editor.renderStorage} />\n </MarkupEditorComponent>\n </div>\n );\n});\nMarkupEditorView.displayName = 'MarkdownMarkupEditorView';\n"]}
1
+ {"version":3,"file":"MarkupEditorView.js","sourceRoot":"../../../src","sources":["bundle/MarkupEditorView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,EAAsB,EAAE,EAAC,wBAAqB;AACrD,OAAO,EAAC,sBAAsB,EAAC,+BAAsB;AACrD,OAAO,EAAC,YAAY,EAAC,qBAAkB;AACvC,OAAO,EAAC,aAAa,EAAC,gCAA6B;AAGnD,OAAO,EAAC,qBAAqB,EAAC,mCAAgC;AAC9D,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,4BAA4B,EAAC,oCAAiC;AAItE,gCAAiC;AAEjC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;AAiB9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAwB,CAAC,KAAK,EAAE,EAAE;IAClE,MAAM,EACF,MAAM,EACN,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,EAAE,EACF,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GAAG,IAAI,GACvB,GAAG,KAAK,CAAC;IACV,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,cAAc,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,aAAW,EAAE,aACjE,cAAc,CAAC,CAAC,CAAC,CACd,KAAC,4BAA4B,IACzB,KAAK,EAAE;oBACH,aAAa,EAAE,MAAM,CAAC,iBAAiB;oBACvC,oCAAoC,EAChC,MAAM,CAAC,oCAAoC;iBAClD,YAED,KAAC,WAAW,IACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAC,QAAQ,EACnB,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAClC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC,YAE1C,QAAQ,GACC,GACa,CAClC,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,qBAAqB,IAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,iBAAiB,EAAE,cAAc,EAAC,CAAC,YAE3D,KAAC,sBAAsB,IAAC,OAAO,EAAE,MAAM,CAAC,aAAa,GAAI,GACrC,IACtB,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AACH,gBAAgB,CAAC,WAAW,GAAG,0BAA0B,CAAC","sourcesContent":["import {memo} from 'react';\n\nimport type {QAProps} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {ReactRendererComponent} from '../extensions';\nimport {globalLogger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport type {EditorInt} from './Editor';\nimport {MarkupEditorComponent} from './MarkupEditorComponent';\nimport {ToolbarView} from './ToolbarView';\nimport {MarkupToolbarContextProvider} from './toolbar/markup/context';\nimport type {MToolbarData, MToolbarItemData} from './toolbar/types';\nimport type {MarkdownEditorSplitMode} from './types';\n\nimport './MarkupEditorView.scss';\n\nconst b = cn('markup-editor');\n\nexport type MarkupEditorViewProps = ClassNameProps &\n QAProps & {\n editor: EditorInt;\n autofocus?: boolean;\n toolbarConfig: MToolbarData;\n settingsVisible?: boolean;\n toolbarVisible?: boolean;\n stickyToolbar?: boolean;\n toolbarClassName?: string;\n splitMode?: MarkdownEditorSplitMode;\n splitModeEnabled: boolean;\n hiddenActionsConfig?: MToolbarItemData[];\n children?: React.ReactNode;\n };\n\nexport const MarkupEditorView = memo<MarkupEditorViewProps>((props) => {\n const {\n editor,\n autofocus,\n settingsVisible,\n toolbarVisible,\n toolbarConfig,\n hiddenActionsConfig,\n qa,\n className,\n toolbarClassName,\n children,\n stickyToolbar = true,\n } = props;\n useRenderTime((time) => {\n globalLogger.metrics({\n component: 'markup-editor',\n event: 'render',\n duration: time,\n });\n editor.logger.metrics({\n component: 'markup-editor',\n event: 'render',\n duration: time,\n });\n });\n\n return (\n <div className={b({toolbar: toolbarVisible}, [className])} data-qa={qa}>\n {toolbarVisible ? (\n <MarkupToolbarContextProvider\n value={{\n uploadHandler: editor.fileUploadHandler,\n needToSetDimensionsForUploadedImages:\n editor.needToSetDimensionsForUploadedImages,\n }}\n >\n <ToolbarView\n editor={editor}\n editorMode=\"markup\"\n toolbarEditor={editor}\n hiddenActionsConfig={hiddenActionsConfig}\n stickyToolbar={stickyToolbar}\n toolbarConfig={toolbarConfig}\n toolbarFocus={() => editor.focus()}\n settingsVisible={settingsVisible}\n className={b('toolbar', [toolbarClassName])}\n >\n {children}\n </ToolbarView>\n </MarkupToolbarContextProvider>\n ) : null}\n <MarkupEditorComponent\n autofocus={autofocus}\n editor={editor}\n className={b('editor', {'toolbar-visible': toolbarVisible})}\n >\n <ReactRendererComponent storage={editor.renderStorage} />\n </MarkupEditorComponent>\n </div>\n );\n});\nMarkupEditorView.displayName = 'MarkdownMarkupEditorView';\n"]}
@@ -22,7 +22,7 @@ export const WysiwygEditorView = memo((props) => {
22
22
  duration: time,
23
23
  });
24
24
  });
25
- return (_jsxs("div", { className: b({ toolbar: toolbarVisible }, [className]), "data-mode": editor.currentMode, "data-qa": qa, children: [toolbarVisible ? (_jsx(ToolbarView, { editor: editor, editorMode: "wysiwyg", toolbarEditor: editor, stickyToolbar: stickyToolbar, toolbarConfig: toolbarConfig, toolbarFocus: () => editor.focus(), hiddenActionsConfig: hiddenActionsConfig, settingsVisible: settingsVisible, className: b('toolbar', [toolbarClassName]), children: children })) : null, _jsx(WysiwygEditorComponent, { autofocus: autofocus, editor: editor, className: b('editor'), children: _jsx(ReactRendererComponent, { storage: editor.renderStorage }) })] }));
25
+ return (_jsxs("div", { className: b({ toolbar: toolbarVisible }, [className]), "data-qa": qa, children: [toolbarVisible ? (_jsx(ToolbarView, { editor: editor, editorMode: "wysiwyg", toolbarEditor: editor, stickyToolbar: stickyToolbar, toolbarConfig: toolbarConfig, toolbarFocus: () => editor.focus(), hiddenActionsConfig: hiddenActionsConfig, settingsVisible: settingsVisible, className: b('toolbar', [toolbarClassName]), children: children })) : null, _jsx(WysiwygEditorComponent, { autofocus: autofocus, editor: editor, className: b('editor'), children: _jsx(ReactRendererComponent, { storage: editor.renderStorage }) })] }));
26
26
  });
27
27
  WysiwygEditorView.displayName = 'MarkdownWysiwgEditorView';
28
28
  //# sourceMappingURL=WysiwygEditorView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WysiwygEditorView.js","sourceRoot":"../../../src","sources":["bundle/WysiwygEditorView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,EAAsB,EAAE,EAAC,wBAAqB;AACrD,OAAO,EAAC,sBAAsB,EAAC,+BAAsB;AACrD,OAAO,EAAC,YAAY,EAAC,qBAAkB;AACvC,OAAO,EAAC,aAAa,EAAC,gCAA6B;AAGnD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,sBAAsB,EAAC,oCAAiC;AAGhE,iCAAkC;AAElC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAe/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAyB,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EACF,MAAM,EACN,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,EAAE,EACF,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GAAG,IAAI,GACvB,GAAG,KAAK,CAAC;IACV,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,CACH,eACI,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,cAAc,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,eACzC,MAAM,CAAC,WAAW,aACpB,EAAE,aAEV,cAAc,CAAC,CAAC,CAAC,CACd,KAAC,WAAW,IACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAC,SAAS,EACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC,YAE1C,QAAQ,GACC,CACjB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,sBAAsB,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YAChF,KAAC,sBAAsB,IAAC,OAAO,EAAE,MAAM,CAAC,aAAa,GAAI,GACpC,IACvB,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AACH,iBAAiB,CAAC,WAAW,GAAG,0BAA0B,CAAC","sourcesContent":["import {memo} from 'react';\n\nimport type {QAProps} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {ReactRendererComponent} from '../extensions';\nimport {globalLogger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport type {EditorInt} from './Editor';\nimport {ToolbarView} from './ToolbarView';\nimport {WysiwygEditorComponent} from './WysiwygEditorComponent';\nimport type {WToolbarData, WToolbarItemData} from './toolbar/types';\n\nimport './WysiwygEditorView.scss';\n\nconst b = cn('wysiwyg-editor');\n\nexport type WysiwygEditorViewProps = ClassNameProps &\n QAProps & {\n editor: EditorInt;\n autofocus?: boolean;\n settingsVisible?: boolean;\n toolbarConfig: WToolbarData;\n toolbarVisible?: boolean;\n stickyToolbar?: boolean;\n toolbarClassName?: string;\n hiddenActionsConfig?: WToolbarItemData[];\n children?: React.ReactNode;\n };\n\nexport const WysiwygEditorView = memo<WysiwygEditorViewProps>((props) => {\n const {\n editor,\n autofocus,\n settingsVisible,\n toolbarVisible,\n toolbarConfig,\n hiddenActionsConfig,\n qa,\n className,\n toolbarClassName,\n children,\n stickyToolbar = true,\n } = props;\n useRenderTime((time) => {\n globalLogger.metrics({\n component: 'wysiwyg-editor',\n event: 'render',\n duration: time,\n });\n editor.logger.metrics({\n component: 'wysiwyg-editor',\n event: 'render',\n duration: time,\n });\n });\n return (\n <div\n className={b({toolbar: toolbarVisible}, [className])}\n data-mode={editor.currentMode}\n data-qa={qa}\n >\n {toolbarVisible ? (\n <ToolbarView\n editor={editor}\n editorMode=\"wysiwyg\"\n toolbarEditor={editor}\n stickyToolbar={stickyToolbar}\n toolbarConfig={toolbarConfig}\n toolbarFocus={() => editor.focus()}\n hiddenActionsConfig={hiddenActionsConfig}\n settingsVisible={settingsVisible}\n className={b('toolbar', [toolbarClassName])}\n >\n {children}\n </ToolbarView>\n ) : null}\n <WysiwygEditorComponent autofocus={autofocus} editor={editor} className={b('editor')}>\n <ReactRendererComponent storage={editor.renderStorage} />\n </WysiwygEditorComponent>\n </div>\n );\n});\nWysiwygEditorView.displayName = 'MarkdownWysiwgEditorView';\n"]}
1
+ {"version":3,"file":"WysiwygEditorView.js","sourceRoot":"../../../src","sources":["bundle/WysiwygEditorView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,EAAsB,EAAE,EAAC,wBAAqB;AACrD,OAAO,EAAC,sBAAsB,EAAC,+BAAsB;AACrD,OAAO,EAAC,YAAY,EAAC,qBAAkB;AACvC,OAAO,EAAC,aAAa,EAAC,gCAA6B;AAGnD,OAAO,EAAC,WAAW,EAAC,yBAAsB;AAC1C,OAAO,EAAC,sBAAsB,EAAC,oCAAiC;AAGhE,iCAAkC;AAElC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAe/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAyB,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EACF,MAAM,EACN,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,EAAE,EACF,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,GAAG,IAAI,GACvB,GAAG,KAAK,CAAC;IACV,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC;YACjB,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,cAAc,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,aAAW,EAAE,aACjE,cAAc,CAAC,CAAC,CAAC,CACd,KAAC,WAAW,IACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAC,SAAS,EACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC,YAE1C,QAAQ,GACC,CACjB,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,sBAAsB,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YAChF,KAAC,sBAAsB,IAAC,OAAO,EAAE,MAAM,CAAC,aAAa,GAAI,GACpC,IACvB,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AACH,iBAAiB,CAAC,WAAW,GAAG,0BAA0B,CAAC","sourcesContent":["import {memo} from 'react';\n\nimport type {QAProps} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../classname';\nimport {ReactRendererComponent} from '../extensions';\nimport {globalLogger} from '../logger';\nimport {useRenderTime} from '../react-utils/hooks';\n\nimport type {EditorInt} from './Editor';\nimport {ToolbarView} from './ToolbarView';\nimport {WysiwygEditorComponent} from './WysiwygEditorComponent';\nimport type {WToolbarData, WToolbarItemData} from './toolbar/types';\n\nimport './WysiwygEditorView.scss';\n\nconst b = cn('wysiwyg-editor');\n\nexport type WysiwygEditorViewProps = ClassNameProps &\n QAProps & {\n editor: EditorInt;\n autofocus?: boolean;\n settingsVisible?: boolean;\n toolbarConfig: WToolbarData;\n toolbarVisible?: boolean;\n stickyToolbar?: boolean;\n toolbarClassName?: string;\n hiddenActionsConfig?: WToolbarItemData[];\n children?: React.ReactNode;\n };\n\nexport const WysiwygEditorView = memo<WysiwygEditorViewProps>((props) => {\n const {\n editor,\n autofocus,\n settingsVisible,\n toolbarVisible,\n toolbarConfig,\n hiddenActionsConfig,\n qa,\n className,\n toolbarClassName,\n children,\n stickyToolbar = true,\n } = props;\n useRenderTime((time) => {\n globalLogger.metrics({\n component: 'wysiwyg-editor',\n event: 'render',\n duration: time,\n });\n editor.logger.metrics({\n component: 'wysiwyg-editor',\n event: 'render',\n duration: time,\n });\n });\n return (\n <div className={b({toolbar: toolbarVisible}, [className])} data-qa={qa}>\n {toolbarVisible ? (\n <ToolbarView\n editor={editor}\n editorMode=\"wysiwyg\"\n toolbarEditor={editor}\n stickyToolbar={stickyToolbar}\n toolbarConfig={toolbarConfig}\n toolbarFocus={() => editor.focus()}\n hiddenActionsConfig={hiddenActionsConfig}\n settingsVisible={settingsVisible}\n className={b('toolbar', [toolbarClassName])}\n >\n {children}\n </ToolbarView>\n ) : null}\n <WysiwygEditorComponent autofocus={autofocus} editor={editor} className={b('editor')}>\n <ReactRendererComponent storage={editor.renderStorage} />\n </WysiwygEditorComponent>\n </div>\n );\n});\nWysiwygEditorView.displayName = 'MarkdownWysiwgEditorView';\n"]}
@@ -79,6 +79,7 @@ export const wHeading6ItemData = {
79
79
  export const wHeadingListConfig = {
80
80
  icon: icons.headline,
81
81
  withArrow: true,
82
+ replaceActiveIcon: true,
82
83
  title: i18n.bind(null, 'heading'),
83
84
  data: [
84
85
  wTextItemData,
@@ -1 +1 @@
1
- {"version":3,"file":"w-heading-config.js","sourceRoot":"../../../../src","sources":["bundle/config/w-heading-config.tsx"],"names":[],"mappings":"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","sourcesContent":["import {i18n} from '../../i18n/menubar';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {WToolbarListButtonData, WToolbarListButtonItemData} from '../toolbar/types';\n\nimport {ActionName} from './action-names';\nimport {icons} from './icons';\nimport {HeadingPreview} from './previews/HeadingPreview';\nimport {TextPreview} from './previews/TextPreview';\n\nexport const wTextItemData: WToolbarListButtonItemData = {\n id: ActionName.paragraph,\n title: i18n.bind(null, 'text'),\n icon: icons.text,\n hotkey: f.toView(A.Text),\n exec: (e) => e.actions.toParagraph.run(),\n isActive: (e) => e.actions.toParagraph.isActive(),\n isEnable: (e) => e.actions.toParagraph.isEnable(),\n doNotActivateList: true,\n preview: <TextPreview />,\n};\nexport const wHeading1ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading1,\n title: i18n.bind(null, 'heading1'),\n icon: icons.h1,\n hotkey: f.toView(A.Heading1),\n exec: (e) => e.actions.toH1.run(),\n isActive: (e) => e.actions.toH1.isActive(),\n isEnable: (e) => e.actions.toH1.isEnable(),\n preview: <HeadingPreview level={1} />,\n};\nexport const wHeading2ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading2,\n title: i18n.bind(null, 'heading2'),\n icon: icons.h2,\n hotkey: f.toView(A.Heading2),\n exec: (e) => e.actions.toH2.run(),\n isActive: (e) => e.actions.toH2.isActive(),\n isEnable: (e) => e.actions.toH2.isEnable(),\n preview: <HeadingPreview level={2} />,\n};\nexport const wHeading3ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading3,\n title: i18n.bind(null, 'heading3'),\n icon: icons.h3,\n hotkey: f.toView(A.Heading3),\n exec: (e) => e.actions.toH3.run(),\n isActive: (e) => e.actions.toH3.isActive(),\n isEnable: (e) => e.actions.toH3.isEnable(),\n preview: <HeadingPreview level={3} />,\n};\nexport const wHeading4ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading4,\n title: i18n.bind(null, 'heading4'),\n icon: icons.h4, // Предполагается, что icon исправлен для h4\n hotkey: f.toView(A.Heading4),\n exec: (e) => e.actions.toH4.run(),\n isActive: (e) => e.actions.toH4.isActive(),\n isEnable: (e) => e.actions.toH4.isEnable(),\n preview: <HeadingPreview level={4} />,\n};\nexport const wHeading5ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading5,\n title: i18n.bind(null, 'heading5'),\n icon: icons.h5, // Предполагается, что icon исправлен для h5\n hotkey: f.toView(A.Heading5),\n exec: (e) => e.actions.toH5.run(),\n isActive: (e) => e.actions.toH5.isActive(),\n isEnable: (e) => e.actions.toH5.isEnable(),\n preview: <HeadingPreview level={5} />,\n};\nexport const wHeading6ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading6,\n title: i18n.bind(null, 'heading6'),\n icon: icons.h6, // Предполагается, что icon исправлен для h6\n hotkey: f.toView(A.Heading6),\n exec: (e) => e.actions.toH6.run(),\n isActive: (e) => e.actions.toH6.isActive(),\n isEnable: (e) => e.actions.toH6.isEnable(),\n preview: <HeadingPreview level={6} />,\n};\n\nexport const wHeadingListConfig: WToolbarListButtonData = {\n icon: icons.headline,\n withArrow: true,\n title: i18n.bind(null, 'heading'),\n data: [\n wTextItemData,\n wHeading1ItemData,\n wHeading2ItemData,\n wHeading3ItemData,\n wHeading4ItemData,\n wHeading5ItemData,\n wHeading6ItemData,\n ],\n};\n"]}
1
+ {"version":3,"file":"w-heading-config.js","sourceRoot":"../../../../src","sources":["bundle/config/w-heading-config.tsx"],"names":[],"mappings":"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","sourcesContent":["import {i18n} from '../../i18n/menubar';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {WToolbarListButtonData, WToolbarListButtonItemData} from '../toolbar/types';\n\nimport {ActionName} from './action-names';\nimport {icons} from './icons';\nimport {HeadingPreview} from './previews/HeadingPreview';\nimport {TextPreview} from './previews/TextPreview';\n\nexport const wTextItemData: WToolbarListButtonItemData = {\n id: ActionName.paragraph,\n title: i18n.bind(null, 'text'),\n icon: icons.text,\n hotkey: f.toView(A.Text),\n exec: (e) => e.actions.toParagraph.run(),\n isActive: (e) => e.actions.toParagraph.isActive(),\n isEnable: (e) => e.actions.toParagraph.isEnable(),\n doNotActivateList: true,\n preview: <TextPreview />,\n};\nexport const wHeading1ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading1,\n title: i18n.bind(null, 'heading1'),\n icon: icons.h1,\n hotkey: f.toView(A.Heading1),\n exec: (e) => e.actions.toH1.run(),\n isActive: (e) => e.actions.toH1.isActive(),\n isEnable: (e) => e.actions.toH1.isEnable(),\n preview: <HeadingPreview level={1} />,\n};\nexport const wHeading2ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading2,\n title: i18n.bind(null, 'heading2'),\n icon: icons.h2,\n hotkey: f.toView(A.Heading2),\n exec: (e) => e.actions.toH2.run(),\n isActive: (e) => e.actions.toH2.isActive(),\n isEnable: (e) => e.actions.toH2.isEnable(),\n preview: <HeadingPreview level={2} />,\n};\nexport const wHeading3ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading3,\n title: i18n.bind(null, 'heading3'),\n icon: icons.h3,\n hotkey: f.toView(A.Heading3),\n exec: (e) => e.actions.toH3.run(),\n isActive: (e) => e.actions.toH3.isActive(),\n isEnable: (e) => e.actions.toH3.isEnable(),\n preview: <HeadingPreview level={3} />,\n};\nexport const wHeading4ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading4,\n title: i18n.bind(null, 'heading4'),\n icon: icons.h4, // Предполагается, что icon исправлен для h4\n hotkey: f.toView(A.Heading4),\n exec: (e) => e.actions.toH4.run(),\n isActive: (e) => e.actions.toH4.isActive(),\n isEnable: (e) => e.actions.toH4.isEnable(),\n preview: <HeadingPreview level={4} />,\n};\nexport const wHeading5ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading5,\n title: i18n.bind(null, 'heading5'),\n icon: icons.h5, // Предполагается, что icon исправлен для h5\n hotkey: f.toView(A.Heading5),\n exec: (e) => e.actions.toH5.run(),\n isActive: (e) => e.actions.toH5.isActive(),\n isEnable: (e) => e.actions.toH5.isEnable(),\n preview: <HeadingPreview level={5} />,\n};\nexport const wHeading6ItemData: WToolbarListButtonItemData = {\n id: ActionName.heading6,\n title: i18n.bind(null, 'heading6'),\n icon: icons.h6, // Предполагается, что icon исправлен для h6\n hotkey: f.toView(A.Heading6),\n exec: (e) => e.actions.toH6.run(),\n isActive: (e) => e.actions.toH6.isActive(),\n isEnable: (e) => e.actions.toH6.isEnable(),\n preview: <HeadingPreview level={6} />,\n};\n\nexport const wHeadingListConfig: WToolbarListButtonData = {\n icon: icons.headline,\n withArrow: true,\n replaceActiveIcon: true,\n title: i18n.bind(null, 'heading'),\n data: [\n wTextItemData,\n wHeading1ItemData,\n wHeading2ItemData,\n wHeading3ItemData,\n wHeading4ItemData,\n wHeading5ItemData,\n wHeading6ItemData,\n ],\n};\n"]}
@@ -20,14 +20,14 @@ export const EditorSettings = memo(function EditorSettings(props) {
20
20
  const { className, onShowPreviewChange, showPreview, renderPreviewButton, settingsVisible } = props;
21
21
  const [chevronElement, setChevronElement] = useState(null);
22
22
  const [popupShown, , hidePopup, togglePopup] = useBooleanState(false);
23
- return (_jsxs("div", { className: bSettings(null, [className]), children: [renderPreviewButton && (_jsxs(_Fragment, { children: [_jsx(ActionTooltip, { openDelay: ToolbarTooltipDelay.Open, closeDelay: ToolbarTooltipDelay.Close, title: i18n('preview_hint'), hotkey: "mod+shift+p", children: _jsx(Button, { size: "m", view: "flat", pin: "round-round", className: bSettings('preview-button'), onClick: () => onShowPreviewChange?.(!showPreview), selected: showPreview, children: _jsx(Icon, { data: Eye }) }) }), settingsVisible && _jsx("div", { className: bSettings('separator') })] })), settingsVisible && (_jsxs(_Fragment, { children: [_jsx(Button, { size: "m", view: "flat", pin: "round-round", onClick: togglePopup, ref: setChevronElement, qa: "g-md-settings-button", className: bSettings('dropdown-button'), children: _jsx(Icon, { data: Gear }) }), _jsx(Popup, { open: popupShown, anchorElement: chevronElement, placement: placement, onOpenChange: hidePopup, children: _jsx(SettingsContent, { ...props, onClose: hidePopup, className: bSettings('content') }) })] }))] }));
23
+ return (_jsxs("div", { className: bSettings(null, [className]), children: [renderPreviewButton && (_jsxs(_Fragment, { children: [_jsx(ActionTooltip, { openDelay: ToolbarTooltipDelay.Open, closeDelay: ToolbarTooltipDelay.Close, title: i18n('preview_hint'), hotkey: "mod+shift+p", children: _jsx(Button, { qa: "g-md-markup-preview-button", size: "m", view: "flat", pin: "round-round", className: bSettings('preview-button'), onClick: () => onShowPreviewChange?.(!showPreview), selected: showPreview, children: _jsx(Icon, { data: Eye }) }) }), settingsVisible && _jsx("div", { className: bSettings('separator') })] })), settingsVisible && (_jsxs(_Fragment, { children: [_jsx(Button, { size: "m", view: "flat", pin: "round-round", onClick: togglePopup, ref: setChevronElement, qa: "g-md-settings-button", className: bSettings('dropdown-button'), children: _jsx(Icon, { data: Gear }) }), _jsx(Popup, { open: popupShown, anchorElement: chevronElement, placement: placement, onOpenChange: hidePopup, children: _jsx(SettingsContent, { ...props, onClose: hidePopup, className: bSettings('content') }) })] }))] }));
24
24
  });
25
25
  const mdHelpPlacement = ['bottom', 'bottom-end', 'right-start', 'right', 'left'];
26
26
  const SettingsContent = function SettingsContent({ mode, onClose, onModeChange, toolbarVisibility, onToolbarVisibilityChange, onSplitModeChange, splitMode = false, splitModeEnabled, className, showPreview, }) {
27
- return (_jsxs("div", { className: bContent(null, [className]), "data-qa": "g-md-settings-content", children: [_jsxs(Menu, { size: "l", className: bContent('mode'), children: [_jsx(Menu.Item, { qa: "md-settings-mode-wysiwyg", active: mode === 'wysiwyg', onClick: () => {
27
+ return (_jsxs("div", { className: bContent(null, [className]), "data-qa": "g-md-settings-content", children: [_jsxs(Menu, { size: "l", className: bContent('mode'), children: [_jsx(Menu.Item, { qa: "g-md-settings-mode-wysiwyg", active: mode === 'wysiwyg', onClick: () => {
28
28
  onModeChange('wysiwyg');
29
29
  onClose();
30
- }, iconStart: _jsx(Icon, { data: WysiwygModeIcon }), children: i18n('settings_wysiwyg') }), _jsxs(Menu.Item, { qa: "md-settings-mode-markup", active: mode === 'markup', onClick: () => {
30
+ }, iconStart: _jsx(Icon, { data: WysiwygModeIcon }), children: i18n('settings_wysiwyg') }), _jsxs(Menu.Item, { qa: "g-md-settings-mode-markup", active: mode === 'markup', onClick: () => {
31
31
  onModeChange('markup');
32
32
  onClose();
33
33
  }, iconStart: _jsx(Icon, { data: LogoMarkdown }), children: [i18n('settings_markup'), _jsx(HelpMark, { popoverProps: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["bundle/settings/index.tsx"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,0DAA0D;AAC1D,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,EAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACH,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,KAAK,GAER,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAsB,EAAE,EAAC,2BAAwB;AACxD,OAAO,EAAC,IAAI,EAAC,mCAA0B;AACvC,OAAO,eAAe,mCAAgC;AACtD,OAAO,EAAC,IAAI,EAAC,wBAAqB;AAClC,OAAO,EAAC,eAAe,EAAC,mCAAgC;AACxD,OAAO,EAAC,mBAAmB,EAAC,+BAAsB;AAClD,OAAO,EAAC,OAAO,EAAC,yBAAsB;AAGtC,OAAO,EAAC,aAAa,EAAC,iCAAwB;AAE9C,qBAAsB;AAEtB,MAAM,SAAS,GAAmB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;AACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;AAOxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAsB,SAAS,cAAc,CAAC,KAAK;IACjF,MAAM,EAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAC,GACrF,KAAK,CAAC;IACV,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAA2B,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,UAAU,EAAE,AAAD,EAAG,SAAS,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEtE,OAAO,CACH,eAAK,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,aACvC,mBAAmB,IAAI,CACpB,8BACI,KAAC,aAAa,IACV,SAAS,EAAE,mBAAmB,CAAC,IAAI,EACnC,UAAU,EAAE,mBAAmB,CAAC,KAAK,EACrC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,EAC3B,MAAM,EAAC,aAAa,YAEpB,KAAC,MAAM,IACH,IAAI,EAAC,GAAG,EACR,IAAI,EAAC,MAAM,EACX,GAAG,EAAC,aAAa,EACjB,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,CAAC,EAClD,QAAQ,EAAE,WAAW,YAErB,KAAC,IAAI,IAAC,IAAI,EAAE,GAAG,GAAI,GACd,GACG,EACf,eAAe,IAAI,cAAK,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,GAAI,IAC/D,CACN,EACA,eAAe,IAAI,CAChB,8BACI,KAAC,MAAM,IACH,IAAI,EAAC,GAAG,EACR,IAAI,EAAC,MAAM,EACX,GAAG,EAAC,aAAa,EACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,iBAAiB,EACtB,EAAE,EAAC,sBAAsB,EACzB,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,YAEvC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,GACf,EACT,KAAC,KAAK,IACF,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,SAAS,YAEvB,KAAC,eAAe,OACR,KAAK,EACT,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,GACjC,GACE,IACT,CACN,IACC,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AAeH,MAAM,eAAe,GAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjG,MAAM,eAAe,GAAmC,SAAS,eAAe,CAAC,EAC7E,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,GAAG,KAAK,EACjB,gBAAgB,EAChB,SAAS,EACT,WAAW,GACd;IACG,OAAO,CACH,eAAK,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,aAAU,uBAAuB,aACxE,MAAC,IAAI,IAAC,IAAI,EAAC,GAAG,EAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,aACtC,KAAC,IAAI,CAAC,IAAI,IACN,EAAE,EAAC,0BAA0B,EAC7B,MAAM,EAAE,IAAI,KAAK,SAAS,EAC1B,OAAO,EAAE,GAAG,EAAE;4BACV,YAAY,CAAC,SAAS,CAAC,CAAC;4BACxB,OAAO,EAAE,CAAC;wBACd,CAAC,EACD,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,eAAe,GAAI,YAEzC,IAAI,CAAC,kBAAkB,CAAC,GACjB,EACZ,MAAC,IAAI,CAAC,IAAI,IACN,EAAE,EAAC,yBAAyB,EAC5B,MAAM,EAAE,IAAI,KAAK,QAAQ,EACzB,OAAO,EAAE,GAAG,EAAE;4BACV,YAAY,CAAC,QAAQ,CAAC,CAAC;4BACvB,OAAO,EAAE,CAAC;wBACd,CAAC,EACD,SAAS,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,YAAY,GAAI,aAEtC,IAAI,CAAC,iBAAiB,CAAC,EACxB,KAAC,QAAQ,IACL,YAAY,EAAE;oCACV,SAAS,EAAE,eAAe;oCAC1B,KAAK,EAAE,KAAK;iCACf,EACD,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,YAEhC,cACI,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wCACX,0BAA0B;wCAC1B,wEAAwE;wCACxE,CAAC,CAAC,eAAe,EAAE,CAAC;oCACxB,CAAC,YAED,KAAC,aAAa,KAAG,GACf,GACC,IACH,IACT,EACP,cAAK,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAI,EACxC,CAAC,WAAW,IAAI,CACb,eAAK,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,aAC/B,KAAC,QAAQ,IACL,IAAI,EAAC,GAAG,EACR,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,yBAAyB,YAElC,IAAI,CAAC,kBAAkB,CAAC,GAClB,EACX,cAAK,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAG,IAAI,CAAC,eAAe,CAAC,GAAO,IACrE,CACT,EACA,SAAS,IAAI,CACV,eAAK,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,aAClC,KAAC,QAAQ,IACL,IAAI,EAAC,GAAG,EACR,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAC3B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,iBAAiB,IAAI,IAAI,YAElC,IAAI,CAAC,qBAAqB,CAAC,GACrB,EACX,cAAK,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,YACnC,IAAI,CAAC,0BAA0B,CAAC,GAC/B,IACJ,CACT,EACD,eAAM,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAG,OAAO,GAAQ,IACpD,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport {memo, useState} from 'react';\n\nimport {Eye, Gear, LogoMarkdown} from '@gravity-ui/icons';\nimport {\n ActionTooltip,\n Button,\n Checkbox,\n HelpMark,\n Icon,\n Menu,\n Popup,\n type PopupPlacement,\n} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../../classname';\nimport {i18n} from '../../i18n/bundle';\nimport WysiwygModeIcon from '../../icons/WysiwygMode';\nimport {noop} from '../../lodash';\nimport {useBooleanState} from '../../react-utils/hooks';\nimport {ToolbarTooltipDelay} from '../../toolbar';\nimport {VERSION} from '../../version';\nimport type {MarkdownEditorMode, MarkdownEditorSplitMode} from '../types';\n\nimport {MarkdownHints} from './MarkdownHints';\n\nimport './index.scss';\n\nconst placement: PopupPlacement = ['bottom-end', 'top-end'];\n\nconst bSettings = cn('editor-settings');\nconst bContent = cn('settings-content');\n\nexport type EditorSettingsProps = Omit<SettingsContentProps, 'onClose'> & {\n renderPreviewButton?: boolean;\n settingsVisible?: boolean;\n};\n\nexport const EditorSettings = memo<EditorSettingsProps>(function EditorSettings(props) {\n const {className, onShowPreviewChange, showPreview, renderPreviewButton, settingsVisible} =\n props;\n const [chevronElement, setChevronElement] = useState<HTMLButtonElement | null>(null);\n const [popupShown, , hidePopup, togglePopup] = useBooleanState(false);\n\n return (\n <div className={bSettings(null, [className])}>\n {renderPreviewButton && (\n <>\n <ActionTooltip\n openDelay={ToolbarTooltipDelay.Open}\n closeDelay={ToolbarTooltipDelay.Close}\n title={i18n('preview_hint')}\n hotkey=\"mod+shift+p\"\n >\n <Button\n size=\"m\"\n view=\"flat\"\n pin=\"round-round\"\n className={bSettings('preview-button')}\n onClick={() => onShowPreviewChange?.(!showPreview)}\n selected={showPreview}\n >\n <Icon data={Eye} />\n </Button>\n </ActionTooltip>\n {settingsVisible && <div className={bSettings('separator')} />}\n </>\n )}\n {settingsVisible && (\n <>\n <Button\n size=\"m\"\n view=\"flat\"\n pin=\"round-round\"\n onClick={togglePopup}\n ref={setChevronElement}\n qa=\"g-md-settings-button\"\n className={bSettings('dropdown-button')}\n >\n <Icon data={Gear} />\n </Button>\n <Popup\n open={popupShown}\n anchorElement={chevronElement}\n placement={placement}\n onOpenChange={hidePopup}\n >\n <SettingsContent\n {...props}\n onClose={hidePopup}\n className={bSettings('content')}\n />\n </Popup>\n </>\n )}\n </div>\n );\n});\n\ntype SettingsContentProps = ClassNameProps & {\n mode: MarkdownEditorMode;\n onClose: () => void;\n onModeChange: (mode: MarkdownEditorMode) => void;\n onShowPreviewChange: (showPreview: boolean) => void;\n showPreview: boolean;\n toolbarVisibility: boolean;\n onToolbarVisibilityChange: (val: boolean) => void;\n splitMode?: MarkdownEditorSplitMode;\n splitModeEnabled?: boolean;\n onSplitModeChange?: (splitModeEnabled: boolean) => void;\n};\n\nconst mdHelpPlacement: PopupPlacement = ['bottom', 'bottom-end', 'right-start', 'right', 'left'];\n\nconst SettingsContent: React.FC<SettingsContentProps> = function SettingsContent({\n mode,\n onClose,\n onModeChange,\n toolbarVisibility,\n onToolbarVisibilityChange,\n onSplitModeChange,\n splitMode = false,\n splitModeEnabled,\n className,\n showPreview,\n}) {\n return (\n <div className={bContent(null, [className])} data-qa=\"g-md-settings-content\">\n <Menu size=\"l\" className={bContent('mode')}>\n <Menu.Item\n qa=\"md-settings-mode-wysiwyg\"\n active={mode === 'wysiwyg'}\n onClick={() => {\n onModeChange('wysiwyg');\n onClose();\n }}\n iconStart={<Icon data={WysiwygModeIcon} />}\n >\n {i18n('settings_wysiwyg')}\n </Menu.Item>\n <Menu.Item\n qa=\"md-settings-mode-markup\"\n active={mode === 'markup'}\n onClick={() => {\n onModeChange('markup');\n onClose();\n }}\n iconStart={<Icon data={LogoMarkdown} />}\n >\n {i18n('settings_markup')}\n <HelpMark\n popoverProps={{\n placement: mdHelpPlacement,\n modal: false,\n }}\n className={bContent('mode-help')}\n >\n <div\n onClick={(e) => {\n // stop clicks propagation\n // because otherwise click in MarkdownHints handled as click on MenuItem\n e.stopPropagation();\n }}\n >\n <MarkdownHints />\n </div>\n </HelpMark>\n </Menu.Item>\n </Menu>\n <div className={bContent('separator')} />\n {!showPreview && (\n <div className={bContent('toolbar')}>\n <Checkbox\n size=\"m\"\n checked={toolbarVisibility}\n onUpdate={onToolbarVisibilityChange}\n >\n {i18n('settings_menubar')}\n </Checkbox>\n <div className={bContent('toolbar-hint')}>{i18n('settings_hint')}</div>\n </div>\n )}\n {splitMode && (\n <div className={bContent('split-mode')}>\n <Checkbox\n size=\"m\"\n disabled={mode !== 'markup'}\n checked={splitModeEnabled}\n onUpdate={onSplitModeChange ?? noop}\n >\n {i18n('settings_split-mode')}\n </Checkbox>\n <div className={bContent('toolbar-hint')}>\n {i18n('settings_split-mode-hint')}\n </div>\n </div>\n )}\n <span className={bContent('version')}>{VERSION}</span>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../../../../src","sources":["bundle/settings/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport {memo, useState} from 'react';\n\nimport {Eye, Gear, LogoMarkdown} from '@gravity-ui/icons';\nimport {\n ActionTooltip,\n Button,\n Checkbox,\n HelpMark,\n Icon,\n Menu,\n Popup,\n type PopupPlacement,\n} from '@gravity-ui/uikit';\n\nimport {type ClassNameProps, cn} from '../../classname';\nimport {i18n} from '../../i18n/bundle';\nimport WysiwygModeIcon from '../../icons/WysiwygMode';\nimport {noop} from '../../lodash';\nimport {useBooleanState} from '../../react-utils/hooks';\nimport {ToolbarTooltipDelay} from '../../toolbar';\nimport {VERSION} from '../../version';\nimport type {MarkdownEditorMode, MarkdownEditorSplitMode} from '../types';\n\nimport {MarkdownHints} from './MarkdownHints';\n\nimport './index.scss';\n\nconst placement: PopupPlacement = ['bottom-end', 'top-end'];\n\nconst bSettings = cn('editor-settings');\nconst bContent = cn('settings-content');\n\nexport type EditorSettingsProps = Omit<SettingsContentProps, 'onClose'> & {\n renderPreviewButton?: boolean;\n settingsVisible?: boolean;\n};\n\nexport const EditorSettings = memo<EditorSettingsProps>(function EditorSettings(props) {\n const {className, onShowPreviewChange, showPreview, renderPreviewButton, settingsVisible} =\n props;\n const [chevronElement, setChevronElement] = useState<HTMLButtonElement | null>(null);\n const [popupShown, , hidePopup, togglePopup] = useBooleanState(false);\n\n return (\n <div className={bSettings(null, [className])}>\n {renderPreviewButton && (\n <>\n <ActionTooltip\n openDelay={ToolbarTooltipDelay.Open}\n closeDelay={ToolbarTooltipDelay.Close}\n title={i18n('preview_hint')}\n hotkey=\"mod+shift+p\"\n >\n <Button\n qa=\"g-md-markup-preview-button\"\n size=\"m\"\n view=\"flat\"\n pin=\"round-round\"\n className={bSettings('preview-button')}\n onClick={() => onShowPreviewChange?.(!showPreview)}\n selected={showPreview}\n >\n <Icon data={Eye} />\n </Button>\n </ActionTooltip>\n {settingsVisible && <div className={bSettings('separator')} />}\n </>\n )}\n {settingsVisible && (\n <>\n <Button\n size=\"m\"\n view=\"flat\"\n pin=\"round-round\"\n onClick={togglePopup}\n ref={setChevronElement}\n qa=\"g-md-settings-button\"\n className={bSettings('dropdown-button')}\n >\n <Icon data={Gear} />\n </Button>\n <Popup\n open={popupShown}\n anchorElement={chevronElement}\n placement={placement}\n onOpenChange={hidePopup}\n >\n <SettingsContent\n {...props}\n onClose={hidePopup}\n className={bSettings('content')}\n />\n </Popup>\n </>\n )}\n </div>\n );\n});\n\ntype SettingsContentProps = ClassNameProps & {\n mode: MarkdownEditorMode;\n onClose: () => void;\n onModeChange: (mode: MarkdownEditorMode) => void;\n onShowPreviewChange: (showPreview: boolean) => void;\n showPreview: boolean;\n toolbarVisibility: boolean;\n onToolbarVisibilityChange: (val: boolean) => void;\n splitMode?: MarkdownEditorSplitMode;\n splitModeEnabled?: boolean;\n onSplitModeChange?: (splitModeEnabled: boolean) => void;\n};\n\nconst mdHelpPlacement: PopupPlacement = ['bottom', 'bottom-end', 'right-start', 'right', 'left'];\n\nconst SettingsContent: React.FC<SettingsContentProps> = function SettingsContent({\n mode,\n onClose,\n onModeChange,\n toolbarVisibility,\n onToolbarVisibilityChange,\n onSplitModeChange,\n splitMode = false,\n splitModeEnabled,\n className,\n showPreview,\n}) {\n return (\n <div className={bContent(null, [className])} data-qa=\"g-md-settings-content\">\n <Menu size=\"l\" className={bContent('mode')}>\n <Menu.Item\n qa=\"g-md-settings-mode-wysiwyg\"\n active={mode === 'wysiwyg'}\n onClick={() => {\n onModeChange('wysiwyg');\n onClose();\n }}\n iconStart={<Icon data={WysiwygModeIcon} />}\n >\n {i18n('settings_wysiwyg')}\n </Menu.Item>\n <Menu.Item\n qa=\"g-md-settings-mode-markup\"\n active={mode === 'markup'}\n onClick={() => {\n onModeChange('markup');\n onClose();\n }}\n iconStart={<Icon data={LogoMarkdown} />}\n >\n {i18n('settings_markup')}\n <HelpMark\n popoverProps={{\n placement: mdHelpPlacement,\n modal: false,\n }}\n className={bContent('mode-help')}\n >\n <div\n onClick={(e) => {\n // stop clicks propagation\n // because otherwise click in MarkdownHints handled as click on MenuItem\n e.stopPropagation();\n }}\n >\n <MarkdownHints />\n </div>\n </HelpMark>\n </Menu.Item>\n </Menu>\n <div className={bContent('separator')} />\n {!showPreview && (\n <div className={bContent('toolbar')}>\n <Checkbox\n size=\"m\"\n checked={toolbarVisibility}\n onUpdate={onToolbarVisibilityChange}\n >\n {i18n('settings_menubar')}\n </Checkbox>\n <div className={bContent('toolbar-hint')}>{i18n('settings_hint')}</div>\n </div>\n )}\n {splitMode && (\n <div className={bContent('split-mode')}>\n <Checkbox\n size=\"m\"\n disabled={mode !== 'markup'}\n checked={splitModeEnabled}\n onUpdate={onSplitModeChange ?? noop}\n >\n {i18n('settings_split-mode')}\n </Checkbox>\n <div className={bContent('toolbar-hint')}>\n {i18n('settings_split-mode-hint')}\n </div>\n </div>\n )}\n <span className={bContent('version')}>{VERSION}</span>\n </div>\n );\n};\n"]}
@@ -25,7 +25,10 @@ const transformItem = (type, item, id = 'unknown') => {
25
25
  hotkey: item.view.hotkey,
26
26
  doNotActivateList: item.view.doNotActivateList,
27
27
  ...(isSingleButton && { preview: item.view.preview }),
28
- ...(isListButton && { withArrow: item.view.withArrow }),
28
+ ...(isListButton && {
29
+ withArrow: item.view.withArrow,
30
+ replaceActiveIcon: item.view.replaceActiveIcon,
31
+ }),
29
32
  ...(type === 'wysiwyg' && item.wysiwyg && { ...item.wysiwyg }),
30
33
  ...(type === 'markup' && item.markup && { ...item.markup }),
31
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toolbarsConfigs.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/utils/toolbarsConfigs.ts"],"names":[],"mappings":"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","sourcesContent":["import {ToolbarName} from '../../../modules/toolbars/constants';\nimport {commonmark, defaultPreset, full, yfm, zero} from '../../../modules/toolbars/presets';\nimport type {\n ToolbarItem,\n ToolbarItemMarkup,\n ToolbarItemWysiwyg,\n ToolbarsPreset,\n} from '../../../modules/toolbars/types';\nimport type {MarkdownEditorViewProps} from '../../MarkdownEditorView';\nimport type {MarkdownEditorPreset} from '../../types';\nimport {ToolbarDataType} from '../types';\nimport type {MToolbarData, ToolbarIconData, WToolbarData} from '../types';\n\nimport {flattenPreset} from './flattenPreset';\n\nconst defaultPresets: Record<MarkdownEditorPreset, ToolbarsPreset> = {\n zero,\n commonmark,\n default: defaultPreset,\n yfm,\n full,\n};\n\ninterface TransformedItem {\n type: ToolbarDataType;\n id: string;\n title?: string | (() => string);\n hint?: string | (() => string);\n icon?: ToolbarIconData;\n hotkey?: string;\n withArrow?: boolean;\n doNotActivateList?: boolean;\n preview?: React.ReactNode;\n wysiwyg?: ToolbarItemWysiwyg<ToolbarDataType>;\n markup?: ToolbarItemMarkup<ToolbarDataType>;\n}\n\nconst transformItem = (\n type: 'wysiwyg' | 'markup',\n item?: ToolbarItem<ToolbarDataType.SingleButton | ToolbarDataType.ListButton>,\n id = 'unknown',\n): TransformedItem => {\n if (!item) {\n console.warn(\n `Toolbar item \"${id}\" not found, it might not have been added to the items dictionary.`,\n );\n return {} as TransformedItem;\n }\n\n const isListButton = item.view.type === ToolbarDataType.ListButton;\n const isSingleButton = item.view.type === ToolbarDataType.SingleButton;\n\n return {\n type: item.view.type ?? ToolbarDataType.SingleButton,\n id,\n title: item.view.title,\n hint: item.view.hint,\n icon: item.view.icon,\n hotkey: item.view.hotkey,\n doNotActivateList: item.view.doNotActivateList,\n ...(isSingleButton && {preview: (item.view as any).preview}),\n ...(isListButton && {withArrow: (item.view as any).withArrow}),\n ...(type === 'wysiwyg' && item.wysiwyg && {...item.wysiwyg}),\n ...(type === 'markup' && item.markup && {...item.markup}),\n };\n};\n\nexport const createToolbarConfig = <T extends WToolbarData | MToolbarData>(\n editorType: 'wysiwyg' | 'markup',\n toolbarPreset: ToolbarsPreset | MarkdownEditorPreset,\n toolbarName: string,\n): T => {\n const preset =\n typeof toolbarPreset === 'string'\n ? defaultPresets[toolbarPreset] || defaultPresets.default\n : toolbarPreset;\n const orders = preset.orders[toolbarName] ?? [[]];\n const {items} = preset;\n\n const toolbarData = orders.map((group) =>\n group.map((action) => {\n return typeof action === 'string'\n ? transformItem(editorType, items[action], action)\n : {\n ...transformItem(editorType, items[action.id], action.id),\n data: action.items.map((id) => transformItem(editorType, items[id], id)),\n };\n }),\n );\n\n return toolbarData as T;\n};\n\ninterface GetToolbarsConfigsArgs {\n toolbarsPreset?: ToolbarsPreset;\n props: Pick<\n MarkdownEditorViewProps,\n | 'markupToolbarConfig'\n | 'wysiwygToolbarConfig'\n | 'wysiwygHiddenActionsConfig'\n | 'markupHiddenActionsConfig'\n >;\n preset: MarkdownEditorPreset;\n}\nexport const getToolbarsConfigs = ({toolbarsPreset, props, preset}: GetToolbarsConfigsArgs) => {\n const wysiwygToolbarConfig = toolbarsPreset\n ? createToolbarConfig<WToolbarData>('wysiwyg', toolbarsPreset, ToolbarName.wysiwygMain)\n : props.wysiwygToolbarConfig ??\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygMain);\n\n const markupToolbarConfig = toolbarsPreset\n ? createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupMain)\n : props.markupToolbarConfig ??\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupMain);\n\n const wysiwygHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<WToolbarData>(\n 'wysiwyg',\n toolbarsPreset,\n ToolbarName.wysiwygHidden,\n ),\n )\n : props.wysiwygHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygHidden),\n );\n\n const markupHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupHidden),\n )\n : props.markupHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupHidden),\n );\n\n return {\n wysiwygToolbarConfig,\n markupToolbarConfig,\n wysiwygHiddenActionsConfig,\n markupHiddenActionsConfig,\n };\n};\n"]}
1
+ {"version":3,"file":"toolbarsConfigs.js","sourceRoot":"../../../../../src","sources":["bundle/toolbar/utils/toolbarsConfigs.ts"],"names":[],"mappings":"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","sourcesContent":["import {ToolbarName} from '../../../modules/toolbars/constants';\nimport {commonmark, defaultPreset, full, yfm, zero} from '../../../modules/toolbars/presets';\nimport type {\n ToolbarItem,\n ToolbarItemMarkup,\n ToolbarItemWysiwyg,\n ToolbarsPreset,\n} from '../../../modules/toolbars/types';\nimport type {MarkdownEditorViewProps} from '../../MarkdownEditorView';\nimport type {MarkdownEditorPreset} from '../../types';\nimport {ToolbarDataType} from '../types';\nimport type {MToolbarData, ToolbarIconData, WToolbarData} from '../types';\n\nimport {flattenPreset} from './flattenPreset';\n\nconst defaultPresets: Record<MarkdownEditorPreset, ToolbarsPreset> = {\n zero,\n commonmark,\n default: defaultPreset,\n yfm,\n full,\n};\n\ninterface TransformedItem {\n type: ToolbarDataType;\n id: string;\n title?: string | (() => string);\n hint?: string | (() => string);\n icon?: ToolbarIconData;\n hotkey?: string;\n withArrow?: boolean;\n replaceActiveIcon?: true;\n doNotActivateList?: boolean;\n preview?: React.ReactNode;\n wysiwyg?: ToolbarItemWysiwyg<ToolbarDataType>;\n markup?: ToolbarItemMarkup<ToolbarDataType>;\n}\n\nconst transformItem = (\n type: 'wysiwyg' | 'markup',\n item?: ToolbarItem<ToolbarDataType.SingleButton | ToolbarDataType.ListButton>,\n id = 'unknown',\n): TransformedItem => {\n if (!item) {\n console.warn(\n `Toolbar item \"${id}\" not found, it might not have been added to the items dictionary.`,\n );\n return {} as TransformedItem;\n }\n\n const isListButton = item.view.type === ToolbarDataType.ListButton;\n const isSingleButton = item.view.type === ToolbarDataType.SingleButton;\n\n return {\n type: item.view.type ?? ToolbarDataType.SingleButton,\n id,\n title: item.view.title,\n hint: item.view.hint,\n icon: item.view.icon,\n hotkey: item.view.hotkey,\n doNotActivateList: item.view.doNotActivateList,\n ...(isSingleButton && {preview: (item.view as any).preview}),\n ...(isListButton && {\n withArrow: (item.view as any).withArrow,\n replaceActiveIcon: (item.view as any).replaceActiveIcon,\n }),\n ...(type === 'wysiwyg' && item.wysiwyg && {...item.wysiwyg}),\n ...(type === 'markup' && item.markup && {...item.markup}),\n };\n};\n\nexport const createToolbarConfig = <T extends WToolbarData | MToolbarData>(\n editorType: 'wysiwyg' | 'markup',\n toolbarPreset: ToolbarsPreset | MarkdownEditorPreset,\n toolbarName: string,\n): T => {\n const preset =\n typeof toolbarPreset === 'string'\n ? defaultPresets[toolbarPreset] || defaultPresets.default\n : toolbarPreset;\n const orders = preset.orders[toolbarName] ?? [[]];\n const {items} = preset;\n\n const toolbarData = orders.map((group) =>\n group.map((action) => {\n return typeof action === 'string'\n ? transformItem(editorType, items[action], action)\n : {\n ...transformItem(editorType, items[action.id], action.id),\n data: action.items.map((id) => transformItem(editorType, items[id], id)),\n };\n }),\n );\n\n return toolbarData as T;\n};\n\ninterface GetToolbarsConfigsArgs {\n toolbarsPreset?: ToolbarsPreset;\n props: Pick<\n MarkdownEditorViewProps,\n | 'markupToolbarConfig'\n | 'wysiwygToolbarConfig'\n | 'wysiwygHiddenActionsConfig'\n | 'markupHiddenActionsConfig'\n >;\n preset: MarkdownEditorPreset;\n}\nexport const getToolbarsConfigs = ({toolbarsPreset, props, preset}: GetToolbarsConfigsArgs) => {\n const wysiwygToolbarConfig = toolbarsPreset\n ? createToolbarConfig<WToolbarData>('wysiwyg', toolbarsPreset, ToolbarName.wysiwygMain)\n : props.wysiwygToolbarConfig ??\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygMain);\n\n const markupToolbarConfig = toolbarsPreset\n ? createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupMain)\n : props.markupToolbarConfig ??\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupMain);\n\n const wysiwygHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<WToolbarData>(\n 'wysiwyg',\n toolbarsPreset,\n ToolbarName.wysiwygHidden,\n ),\n )\n : props.wysiwygHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<WToolbarData>('wysiwyg', preset, ToolbarName.wysiwygHidden),\n );\n\n const markupHiddenActionsConfig = toolbarsPreset\n ? flattenPreset(\n createToolbarConfig<MToolbarData>('markup', toolbarsPreset, ToolbarName.markupHidden),\n )\n : props.markupHiddenActionsConfig ??\n flattenPreset(\n createToolbarConfig<MToolbarData>('markup', preset, ToolbarName.markupHidden),\n );\n\n return {\n wysiwygToolbarConfig,\n markupToolbarConfig,\n wysiwygHiddenActionsConfig,\n markupHiddenActionsConfig,\n };\n};\n"]}
@@ -2,10 +2,6 @@
2
2
  --yfm-quote-link-background: var(--g-color-private-black-50-solid);
3
3
  --yfm-quote-link-background-hover: var(--g-color-base-simple-hover);
4
4
  }
5
- .yfm-quote-link * {
6
- position: relative;
7
- z-index: 1;
8
- }
9
5
 
10
6
  .g-root_theme_dark .yfm-quote-link,
11
7
  .g-root_theme_dark-hc .yfm-quote-link {
@@ -14,5 +14,12 @@ export declare function isFilesOnly({ types }: DataTransfer): boolean;
14
14
  export declare function isFilesFromHtml({ types }: DataTransfer): boolean;
15
15
  export declare function isImageFile(file: File): boolean;
16
16
  export declare function extractTextContentFromHtml(html: string): string | null;
17
- export declare function findNotEmptyContentPosses(fragment: Fragment): [number, number, number, number];
17
+ type ContentBoundaryPositions = [
18
+ firstNotEmptyPos: number,
19
+ lastNotEmptyPos: number,
20
+ firstPos: number,
21
+ lastPos: number
22
+ ];
23
+ export declare function findNotEmptyContentPosses(fragment: Fragment): ContentBoundaryPositions;
18
24
  export declare function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment;
25
+ export {};
@@ -59,10 +59,10 @@ export function findNotEmptyContentPosses(fragment) {
59
59
  if (isListNode(contentNode) || isListItemNode(contentNode)) {
60
60
  const [start, end] = findNotEmptyContentPosses(contentNode.content);
61
61
  if (firstNotEmptyNodePos === -1 && start !== -1) {
62
- firstNotEmptyNodePos = offset + start;
62
+ firstNotEmptyNodePos = offset + start + 1;
63
63
  }
64
64
  if (end !== -1) {
65
- lastNotEmptyNodePos = offset + end;
65
+ lastNotEmptyNodePos = offset + end + 1;
66
66
  }
67
67
  }
68
68
  else {
@@ -83,6 +83,6 @@ export function trimContent(fragment, creatEmptyFragment) {
83
83
  else if (notEmptyStart === -1 && notEmptyEnd === -1) {
84
84
  return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;
85
85
  }
86
- return fragment.cut(notEmptyStart + 1, notEmptyEnd + 1);
86
+ return fragment.cut(notEmptyStart, notEmptyEnd);
87
87
  }
88
88
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/Clipboard/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,cAAc,EAAE,UAAU,EAAC,sCAA4C;AAC/E,OAAO,EAAC,aAAa,EAAC,gCAAkB;AAExC,4CAA4C;AAC5C,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IACxB,uCAAmB,CAAA;IACnB,sCAAkB,CAAA;IAClB,oCAAgB,CAAA;IAChB,oCAAgB,CAAA;IAChB,6CAAyB,CAAA;IACzB,qDAAiC,CAAA;IACjC,mCAAe,CAAA;AACnB,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAC,KAAK,EAAe;IAClD,kDAAkD;IAClD,uDAAuD;IACvD,OAAO,CACH,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACxC,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACtC,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACzC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAC,KAAK,EAAe;IAC7C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAC,KAAK,EAAe;IACjD,OAAO,CACH,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACtC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACxC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC;IAE9F,kGAAkG;IAClG,IACI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAC,EAAE,EAAE;QACrE,OAAO,CACH,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,CAAC;YAC3C,CAAC,SAAS,CAAC,MAAM;YACjB,UAAU,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAC1E,CAAC;IACN,CAAC,CAAC,EACJ,CAAC;QACC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAkB;IACxD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;IAE7B,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,YAAY,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC;QAE5C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,yBAAyB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACpE,IAAI,oBAAoB,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC9C,oBAAoB,GAAG,MAAM,GAAG,KAAK,CAAC;gBAC1C,CAAC;gBACD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACb,mBAAmB,GAAG,MAAM,GAAG,GAAG,CAAC;gBACvC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC9B,oBAAoB,GAAG,MAAM,CAAC;gBAClC,CAAC;gBACD,mBAAmB,GAAG,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC;YACxD,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE,kBAAmC;IAC/E,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAErF,IAAI,aAAa,KAAK,KAAK,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC;IACpB,CAAC;SAAM,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtE,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["import {Fragment} from 'prosemirror-model';\n\nimport {isListItemNode, isListNode} from 'src/extensions/markdown/Lists/utils';\nimport {isEmptyString} from 'src/utils';\n\n/** Сontains all data formats known to us */\nexport enum DataTransferType {\n Text = 'text/plain',\n Html = 'text/html',\n Yfm = 'text/yfm', // self\n Rtf = 'text/rtf', // Safari, WebStorm/Intelij\n UriList = 'text/uri-list',\n VSCodeData = 'vscode-editor-data',\n Files = 'Files',\n}\n\nexport function isIosSafariShare({types}: DataTransfer): boolean {\n // if link is copied from ios safari share button,\n // then data transfer only have text/uri-list data type\n return (\n types.includes(DataTransferType.UriList) &&\n !types.includes(DataTransferType.Text) &&\n !types.includes(DataTransferType.Html)\n );\n}\n\nexport function isFilesOnly({types}: DataTransfer): boolean {\n return types.length === 1 && types[0] === DataTransferType.Files;\n}\n\nexport function isFilesFromHtml({types}: DataTransfer): boolean {\n return (\n types.length === 2 &&\n types.includes(DataTransferType.Files) &&\n types.includes(DataTransferType.Html)\n );\n}\n\nexport function isImageFile(file: File): boolean {\n return file.type.startsWith('image/');\n}\n\nexport function extractTextContentFromHtml(html: string) {\n const element = document.createElement('div');\n element.innerHTML = html;\n element.replaceChildren(...Array.from(element.children).filter((v) => v.nodeName !== 'META'));\n\n // Look if all nodes are div or span. That they don't have any classname and have only text child.\n if (\n Array.from(element.children).every(({nodeName, classList, childNodes}) => {\n return (\n (nodeName === 'DIV' || nodeName === 'SPAN') &&\n !classList.length &&\n childNodes.length === 1 &&\n (childNodes[0].nodeName === '#text' || childNodes[0].nodeName === 'BR')\n );\n })\n ) {\n return Array.from(element.children).reduce((a, v) => a + v.textContent + '\\n', '');\n }\n\n return null;\n}\n\nexport function findNotEmptyContentPosses(fragment: Fragment): [number, number, number, number] {\n let firstNodePos = -1;\n let lastNodePos = -1;\n let firstNotEmptyNodePos = -1;\n let lastNotEmptyNodePos = -1;\n\n fragment.forEach((contentNode, offset) => {\n if (firstNodePos === -1) {\n firstNodePos = offset;\n }\n lastNodePos = offset + contentNode.nodeSize;\n\n if (!isEmptyString(contentNode)) {\n if (isListNode(contentNode) || isListItemNode(contentNode)) {\n const [start, end] = findNotEmptyContentPosses(contentNode.content);\n if (firstNotEmptyNodePos === -1 && start !== -1) {\n firstNotEmptyNodePos = offset + start;\n }\n if (end !== -1) {\n lastNotEmptyNodePos = offset + end;\n }\n } else {\n if (firstNotEmptyNodePos === -1) {\n firstNotEmptyNodePos = offset;\n }\n lastNotEmptyNodePos = offset + contentNode.nodeSize;\n }\n }\n });\n\n return [firstNotEmptyNodePos, lastNotEmptyNodePos, firstNodePos, lastNodePos];\n}\n\nexport function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment {\n const [notEmptyStart, notEmptyEnd, start, end] = findNotEmptyContentPosses(fragment);\n\n if (notEmptyStart === start && notEmptyEnd === end) {\n return fragment;\n } else if (notEmptyStart === -1 && notEmptyEnd === -1) {\n return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;\n }\n\n return fragment.cut(notEmptyStart + 1, notEmptyEnd + 1);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"../../../../../src","sources":["extensions/behavior/Clipboard/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {Fragment} from 'prosemirror-model';\n\nimport {isListItemNode, isListNode} from 'src/extensions/markdown/Lists/utils';\nimport {isEmptyString} from 'src/utils';\n\n/** Сontains all data formats known to us */\nexport enum DataTransferType {\n Text = 'text/plain',\n Html = 'text/html',\n Yfm = 'text/yfm', // self\n Rtf = 'text/rtf', // Safari, WebStorm/Intelij\n UriList = 'text/uri-list',\n VSCodeData = 'vscode-editor-data',\n Files = 'Files',\n}\n\nexport function isIosSafariShare({types}: DataTransfer): boolean {\n // if link is copied from ios safari share button,\n // then data transfer only have text/uri-list data type\n return (\n types.includes(DataTransferType.UriList) &&\n !types.includes(DataTransferType.Text) &&\n !types.includes(DataTransferType.Html)\n );\n}\n\nexport function isFilesOnly({types}: DataTransfer): boolean {\n return types.length === 1 && types[0] === DataTransferType.Files;\n}\n\nexport function isFilesFromHtml({types}: DataTransfer): boolean {\n return (\n types.length === 2 &&\n types.includes(DataTransferType.Files) &&\n types.includes(DataTransferType.Html)\n );\n}\n\nexport function isImageFile(file: File): boolean {\n return file.type.startsWith('image/');\n}\n\nexport function extractTextContentFromHtml(html: string) {\n const element = document.createElement('div');\n element.innerHTML = html;\n element.replaceChildren(...Array.from(element.children).filter((v) => v.nodeName !== 'META'));\n\n // Look if all nodes are div or span. That they don't have any classname and have only text child.\n if (\n Array.from(element.children).every(({nodeName, classList, childNodes}) => {\n return (\n (nodeName === 'DIV' || nodeName === 'SPAN') &&\n !classList.length &&\n childNodes.length === 1 &&\n (childNodes[0].nodeName === '#text' || childNodes[0].nodeName === 'BR')\n );\n })\n ) {\n return Array.from(element.children).reduce((a, v) => a + v.textContent + '\\n', '');\n }\n\n return null;\n}\n\ntype ContentBoundaryPositions = [\n firstNotEmptyPos: number,\n lastNotEmptyPos: number,\n firstPos: number,\n lastPos: number,\n];\nexport function findNotEmptyContentPosses(fragment: Fragment): ContentBoundaryPositions {\n let firstNodePos = -1;\n let lastNodePos = -1;\n let firstNotEmptyNodePos = -1;\n let lastNotEmptyNodePos = -1;\n\n fragment.forEach((contentNode, offset) => {\n if (firstNodePos === -1) {\n firstNodePos = offset;\n }\n lastNodePos = offset + contentNode.nodeSize;\n\n if (!isEmptyString(contentNode)) {\n if (isListNode(contentNode) || isListItemNode(contentNode)) {\n const [start, end] = findNotEmptyContentPosses(contentNode.content);\n if (firstNotEmptyNodePos === -1 && start !== -1) {\n firstNotEmptyNodePos = offset + start + 1;\n }\n if (end !== -1) {\n lastNotEmptyNodePos = offset + end + 1;\n }\n } else {\n if (firstNotEmptyNodePos === -1) {\n firstNotEmptyNodePos = offset;\n }\n lastNotEmptyNodePos = offset + contentNode.nodeSize;\n }\n }\n });\n\n return [firstNotEmptyNodePos, lastNotEmptyNodePos, firstNodePos, lastNodePos];\n}\n\nexport function trimContent(fragment: Fragment, creatEmptyFragment?: () => Fragment): Fragment {\n const [notEmptyStart, notEmptyEnd, start, end] = findNotEmptyContentPosses(fragment);\n\n if (notEmptyStart === start && notEmptyEnd === end) {\n return fragment;\n } else if (notEmptyStart === -1 && notEmptyEnd === -1) {\n return creatEmptyFragment ? creatEmptyFragment() : Fragment.empty;\n }\n\n return fragment.cut(notEmptyStart, notEmptyEnd);\n}\n"]}
@@ -727,6 +727,7 @@ export const headingListItemView = {
727
727
  icon: icons.headline,
728
728
  title: i18n.bind(null, 'heading'),
729
729
  withArrow: true,
730
+ replaceActiveIcon: true,
730
731
  };
731
732
  // ---- Lists list ----
732
733
  export const listsListItemView = {