ํ์ฅ
@inkio/extension๋ ์ ํํ ํ์ฅ ๋ชจ์์
๋๋ค.
- ๋ฃจํธ import:
@inkio/extension - ์๋ธํจ์ค import:
@inkio/extension/mention๋ฑ
๋น ๋ฅธ ๊ตฌ์ฑ
import { Editor, getDefaultCoreExtensions } from '@inkio/editor';
import { BlockHandle } from '@inkio/extension/block-handle';
import { Callout } from '@inkio/extension/callout';
import { HashTag } from '@inkio/extension/hashtag';
import { SlashCommand } from '@inkio/extension/slash-command';
import { WikiLink } from '@inkio/extension/wikilink';
import '@inkio/editor/minimal.css';
import '@inkio/extension/style.css';
const tags = ['inkio', 'editor', 'react'];
const extensions = [
...getDefaultCoreExtensions({
placeholder: 'Start typing...',
}),
Callout,
HashTag.configure({
items: ({ query }) =>
tags
.filter((tag) => tag.includes(query.toLowerCase()))
.map((tag) => ({ id: tag, label: `#${tag}` })),
}),
SlashCommand,
WikiLink,
BlockHandle,
];
export function Page() {
return <Editor initialContent="" extensions={extensions} />;
}์ ํ ๊ธฐ์ค:
- ๋น ๋ฅธ ํ๋กํ ํ์ดํ:
getDefaultInkioExtensions() - ๋ฒ๋ค ํฌ๊ธฐ์ ๋ช
์์ ์ ์ด:
getDefaultCoreExtensions()+ ํ์ํ ์๋ธํจ์ค import
HashTag๋ #์ heading markdown shortcut ์ถฉ๋ ๋๋ฌธ์ ๊ธฐ๋ณธ preset์์ opt-in์
๋๋ค.
ImageBlock์ @inkio/editor์ ๊ตฌํ๋์ด ์๊ณ @inkio/extension์์๋ ํ์ ํธํ์ฉ์ผ๋ก re-export๋ฉ๋๋ค.
์ ๊ณต ํ์ฅ
MentionHashTagSlashCommandCalloutWikiLinkImageBlockKeyboardShortcutsToggleListSimpleTableBookmarkEquationBlockEquationInlineCommentBlockHandle
BlockHandle ๊ธฐ๋ณธ ๋ฉ๋ด
blockHandle: true๋ฅผ ์ผ๋ฉด ๋๋๊ทธ ํธ๋ค๊ณผ ๊ธฐ๋ณธ ์ก์
๋ฉ๋ด๊ฐ ํจ๊ป ํ์ฑํ๋ฉ๋๋ค.
๊ธฐ๋ณธ ๋ฉ๋ด๋ ๋ค์์ ํฌํจํฉ๋๋ค.
- ์ญ์ / ๋ณต์
- Paragraph / Heading ๋ณํ
- Bullet / Ordered list ๋ณํ
- Quote / Callout / Code block ๋ณํ
๋์ ํน์ฑ:
- ๋ทฐํฌํธ ๊ฒฝ๊ณ ์ถฉ๋ ์ flip/shift ํด๋จํ ์ ์ฉ
- ์คํฌ๋กค/๋ฆฌ์ฌ์ด์ฆ ์ค ์์น ์๋ ์ ๋ฐ์ดํธ
Escape,ArrowUp/Down,Enter,Spaceํค๋ณด๋ ํ์ ์ง์- ๊ธฐ์กด ์ปค์คํ
์ด๋ฒคํธ(
inkio:block-menu)๋ ๊ณ์ ๋ฐํ
BlockHandle ์ปค์คํฐ๋ง์ด์ง
import { BlockHandle } from '@inkio/extension/block-handle';
const customBlockHandle = BlockHandle.configure({
locale: 'en-US',
messages: {
extensions: {
blockHandle: {
duplicate: 'Clone',
},
},
},
icons: {
duplicate: <span>+</span>,
},
});
icons๋BlockMenuIconsํํ์ ๋๋ค.
Comment UI
CommentPanel, CommentComposer๋ locale/messages/icons๋ฅผ ์ง์ ๋ฐ์ต๋๋ค.
<CommentPanel
editor={editor}
threads={threads}
locale="en-US"
messages={{
extensions: {
commentPanel: {
resolve: 'Done',
},
},
}}
onReply={onReply}
onResolve={onResolve}
onDelete={onDelete}
/>ImageEditor
ImageEditorModal์ locale/messages/icons๋ฅผ ์ง์ํฉ๋๋ค.
<ImageEditorModal
isOpen={open}
imageSrc={src}
locale="en-US,en;q=0.8"
messages={{
extensions: {
imageEditor: {
save: 'Apply',
},
},
}}
onSave={handleSave}
onClose={handleClose}
/>๋ ๊ฑฐ์ Comment export ๋ณ๊ฒฝ
CommentSidebar, CommentPopover export๋ ์ ๊ฑฐ๋์์ต๋๋ค.
Last updated on