|
@@ -1,14 +1,19 @@
|
|
import { useCallback, useContext, useMemo } from 'react';
|
|
import { useCallback, useContext, useMemo } from 'react';
|
|
import { TextBlockKeyEventHandlerParams } from '$app/interfaces/document';
|
|
import { TextBlockKeyEventHandlerParams } from '$app/interfaces/document';
|
|
import { keyBoardEventKeyMap } from '$app/constants/document/text_block';
|
|
import { keyBoardEventKeyMap } from '$app/constants/document/text_block';
|
|
-import { canHandleToHeadingBlock, canHandleToCheckboxBlock } from '$app/utils/document/slate/markdown';
|
|
|
|
|
|
+import {
|
|
|
|
+ canHandleToHeadingBlock,
|
|
|
|
+ canHandleToCheckboxBlock,
|
|
|
|
+ canHandleToQuoteBlock,
|
|
|
|
+} from '$app/utils/document/slate/markdown';
|
|
import { useAppDispatch } from '$app/stores/store';
|
|
import { useAppDispatch } from '$app/stores/store';
|
|
import { DocumentControllerContext } from '$app/stores/effects/document/document_controller';
|
|
import { DocumentControllerContext } from '$app/stores/effects/document/document_controller';
|
|
import { turnToHeadingBlockThunk } from '$app_reducers/document/async-actions/blocks/heading';
|
|
import { turnToHeadingBlockThunk } from '$app_reducers/document/async-actions/blocks/heading';
|
|
import { turnToTodoListBlockThunk } from '$app_reducers/document/async-actions/blocks/todo_list';
|
|
import { turnToTodoListBlockThunk } from '$app_reducers/document/async-actions/blocks/todo_list';
|
|
|
|
+import { turnToQuoteBlockThunk } from '$app_reducers/document/async-actions/blocks/quote';
|
|
|
|
|
|
export function useMarkDown(id: string) {
|
|
export function useMarkDown(id: string) {
|
|
- const { toHeadingBlockAction, toCheckboxBlockAction } = useActions(id);
|
|
|
|
|
|
+ const { toHeadingBlockAction, toCheckboxBlockAction, toQuoteBlockAction } = useActions(id);
|
|
const toHeadingBlockEvent = useMemo(() => {
|
|
const toHeadingBlockEvent = useMemo(() => {
|
|
return {
|
|
return {
|
|
triggerEventKey: keyBoardEventKeyMap.Space,
|
|
triggerEventKey: keyBoardEventKeyMap.Space,
|
|
@@ -25,9 +30,17 @@ export function useMarkDown(id: string) {
|
|
};
|
|
};
|
|
}, [toCheckboxBlockAction]);
|
|
}, [toCheckboxBlockAction]);
|
|
|
|
|
|
|
|
+ const toQuoteBlockEvent = useMemo(() => {
|
|
|
|
+ return {
|
|
|
|
+ triggerEventKey: keyBoardEventKeyMap.Space,
|
|
|
|
+ canHandle: canHandleToQuoteBlock,
|
|
|
|
+ handler: toQuoteBlockAction,
|
|
|
|
+ };
|
|
|
|
+ }, [toQuoteBlockAction]);
|
|
|
|
+
|
|
const markdownEvents = useMemo(
|
|
const markdownEvents = useMemo(
|
|
- () => [toHeadingBlockEvent, toCheckboxBlockEvent],
|
|
|
|
- [toHeadingBlockEvent, toCheckboxBlockEvent]
|
|
|
|
|
|
+ () => [toHeadingBlockEvent, toCheckboxBlockEvent, toQuoteBlockEvent],
|
|
|
|
+ [toHeadingBlockEvent, toCheckboxBlockEvent, toQuoteBlockEvent]
|
|
);
|
|
);
|
|
|
|
|
|
return {
|
|
return {
|
|
@@ -56,8 +69,18 @@ function useActions(id: string) {
|
|
[controller, dispatch, id]
|
|
[controller, dispatch, id]
|
|
);
|
|
);
|
|
|
|
|
|
|
|
+ const toQuoteBlockAction = useCallback(
|
|
|
|
+ (...args: TextBlockKeyEventHandlerParams) => {
|
|
|
|
+ if (!controller) return;
|
|
|
|
+ const [_event, editor] = args;
|
|
|
|
+ dispatch(turnToQuoteBlockThunk({ id, controller, editor }));
|
|
|
|
+ },
|
|
|
|
+ [controller, dispatch, id]
|
|
|
|
+ );
|
|
|
|
+
|
|
return {
|
|
return {
|
|
toHeadingBlockAction,
|
|
toHeadingBlockAction,
|
|
toCheckboxBlockAction,
|
|
toCheckboxBlockAction,
|
|
|
|
+ toQuoteBlockAction,
|
|
};
|
|
};
|
|
}
|
|
}
|