|
|
@@ -2,7 +2,8 @@ import { useCallback, useState } from 'react';
|
|
|
|
|
|
import { Collapse } from 'reactstrap';
|
|
|
|
|
|
-import { useCodeMirrorEditorIsolated } from '../../../stores';
|
|
|
+import type { GlobalCodeMirrorEditorKey } from '../../../consts';
|
|
|
+import { useCodeMirrorEditorIsolated, useCodeMirrorEditorIsolated } from '../../../stores';
|
|
|
|
|
|
|
|
|
import styles from './TextFormatTools.module.scss';
|
|
|
@@ -33,7 +34,7 @@ const TextFormatToolsToggler = (props: TogglarProps): JSX.Element => {
|
|
|
};
|
|
|
|
|
|
type TextFormatToolsType = {
|
|
|
- editorKey: string,
|
|
|
+ editorKey: string | GlobalCodeMirrorEditorKey,
|
|
|
}
|
|
|
|
|
|
export const TextFormatTools = (props: TextFormatToolsType): JSX.Element => {
|
|
|
@@ -47,25 +48,27 @@ export const TextFormatTools = (props: TextFormatToolsType): JSX.Element => {
|
|
|
|
|
|
const onClickAddHeaderToSelection = (prefix: string) => codeMirrorEditor?.insertHeader(prefix);
|
|
|
|
|
|
+ const onClickInsertMarkdownElements = (prefix: string, suffix: string) => codeMirrorEditor?.insertMarkdownElements(prefix, suffix);
|
|
|
+
|
|
|
return (
|
|
|
<div className="d-flex">
|
|
|
<TextFormatToolsToggler isOpen={isOpen} onClick={toggle} />
|
|
|
|
|
|
<Collapse isOpen={isOpen} horizontal>
|
|
|
<div className="d-flex px-1 gap-1" style={{ width: '220px' }}>
|
|
|
- <button type="button" className="btn btn-toolbar-button">
|
|
|
+ <button type="button" className="btn btn-toolbar-button" onClick={() => onClickInsertMarkdownElements('**', '**')}>
|
|
|
<span className="material-symbols-outlined fs-5">format_bold</span>
|
|
|
</button>
|
|
|
<button type="button" className="btn btn-toolbar-button">
|
|
|
- <span className="material-symbols-outlined fs-5">format_italic</span>
|
|
|
+ <span className="material-symbols-outlined fs-5" onClick={() => onClickInsertMarkdownElements('*', '*')}>format_italic</span>
|
|
|
</button>
|
|
|
- <button type="button" className="btn btn-toolbar-button">
|
|
|
+ <button type="button" className="btn btn-toolbar-button" onClick={() => onClickInsertMarkdownElements('~', '~')}>
|
|
|
<span className="material-symbols-outlined fs-5">format_strikethrough</span>
|
|
|
</button>
|
|
|
<button type="button" className="btn btn-toolbar-button" onClick={() => onClickAddHeaderToSelection('#')}>
|
|
|
<span className="material-symbols-outlined fs-5">block</span>
|
|
|
</button>
|
|
|
- <button type="button" className="btn btn-toolbar-button">
|
|
|
+ <button type="button" className="btn btn-toolbar-button" onClick={() => onClickInsertMarkdownElements('`', '`')}>
|
|
|
<span className="material-symbols-outlined fs-5">code</span>
|
|
|
</button>
|
|
|
<button type="button" className="btn btn-toolbar-button">
|