본문으로 건너뛰기

Flat List

에디터에 리스트를 표현하기 위한 서식과 관련 플러그인을 제공합니다.

설치

npm install @edybara/flat-list

스타일

src/index.scss
@import "@edybara/flat-list/styles/flat-list.scss";

서식

edybaraFlatOrderedListNodes

순차 리스트를 표현하기 위한 서식을 제공합니다. 반드시 edybaraFlatListItemNodes 와 함께 사용해야 합니다.

edybaraFlatBulletListNodes

글머리 기호 리스트를 표현하기 위한 서식을 제공합니다. 반드시 edybaraFlatListItemNodes 와 함께 사용해야 합니다.

edybaraFlatListItemNodes

리스트의 항목을 표현하기 위한 서식을 제공합니다. 반드시 edybaraFlatOrderedListNodes 또는 edybaraFlatBulletListNodes 와 함께 사용해야 합니다.

플러그인

edybaraFlatListPlugins

하단의 모든 플러그인을 통합 제공합니다.

edybaraFlatListKeymapPlugins

Flat List 내부에서 되는 기본 단축키를 제공합니다.

edybaraFlatListInputRulePlugins

-N 또는 N. 패턴의 문자를 입력하면 Flat List 노드로 전환하는 InputRule 을 제공합니다.

edybaraFlatListMergePlugins

동일한 인접 리스트 노드를 자동으로 병합하는 기능을 제공합니다.

사용 예시

src/index.ts
import { EditorState, Plugin } from 'prosemirror-state';
import { Schema } from 'prosemirror-model';
import { EditorView } from 'prosemirror-view';
import { edybaraBaseNodes, edybaraCorePlugins } from '@edybara/core';
import { edybaraParagraphNodes, edybaraParagraphPlugins, } from '@edybara/paragraph';
import { edybaraMenubarPlugins } from '@edybara/menubar';
import { edybaraFlatOrderedListNodes, edybaraFlatBulletListNodes, edybaraFlatListItemNodes, edybaraFlatListPlugins } from '@edybara/flat-list';

const schema = new Schema({
nodes: {
...edybaraBaseNodes(),
...edybaraParagraphNodes(),
...edybaraFlatOrderedListNodes({
nodeName: 'ordered_list',
}),
...edybaraFlatBulletListNodes({
nodeName: 'bullet_list',
}),
...edybaraFlatListItemNodes({
nodeName: 'list_item',
}),
},
});

const plugins: Plugin[] = [
...edybaraParagraphPlugins({
nodeType: schema.nodes['paragraph'],
}),
...edybaraFlatListPlugins({
orderedListNodeType: schema.nodes['ordered_list'],
bulletListNodeType: schema.nodes['bullet_list'],
listItemNodeType: schema.nodes['list_item'],
}),
...edybaraMenubarPlugins({
list: {
orderedListNodeType: schema.nodes['ordered_list'],
bulletListNodeType: schema.nodes['bullet_list'],
listItemNodeType: schema.nodes['list_item'],
},
align: {},
}),
...edybaraCorePlugins(),
];

const view = new EditorView(document.querySelector('#editor'), {
state: EditorState.create({
schema: schema,
plugins: plugins,
}),
});