UNPKG

1.94 kBPlain TextView Raw
1import {uniqueId} from 'lodash'
2import {ListBuilder, ListInput} from './List'
3import {
4 getDocumentTypeListItems,
5 getDocumentTypeListItem,
6 getDocumentTypeList
7} from './documentTypeListItems'
8import {
9 MenuItemBuilder,
10 MenuItem,
11 getOrderingMenuItemsForSchemaType,
12 getOrderingMenuItem
13} from './MenuItem'
14import {ListItemBuilder, ListItemInput} from './ListItem'
15import {MenuItemGroup, MenuItemGroupBuilder} from './MenuItemGroup'
16import {DocumentListBuilder, DocumentListInput} from './DocumentList'
17import {EditorBuilder} from './Editor'
18import {EditorNode, Divider} from './StructureNodes'
19import {SerializeError} from './SerializeError'
20import {ComponentInput, ComponentBuilder} from './Component'
21import {DocumentListItemBuilder, DocumentListItemInput} from './DocumentListItem'
22import {Ordering} from './Sort'
23
24const StructureBuilder = {
25 documentTypeList: getDocumentTypeList,
26 documentTypeListItem: getDocumentTypeListItem,
27 documentTypeListItems: getDocumentTypeListItems,
28
29 list: (spec?: ListInput) => new ListBuilder(spec),
30 listItem: (spec?: ListItemInput) => new ListItemBuilder(spec),
31
32 menuItem: (spec?: MenuItem) => new MenuItemBuilder(spec),
33 menuItemGroup: (spec?: MenuItemGroup) => new MenuItemGroupBuilder(spec),
34
35 documentList: (spec?: DocumentListInput) => new DocumentListBuilder(spec),
36 documentListItem: (spec?: DocumentListItemInput) => new DocumentListItemBuilder(spec),
37
38 orderingMenuItem: (ordering: Ordering) => getOrderingMenuItem(ordering),
39 orderingMenuItemsForType: (type: string) => getOrderingMenuItemsForSchemaType(type),
40
41 editor: (spec?: EditorNode) => new EditorBuilder(spec),
42 component: (spec?: ComponentInput | Function) => {
43 return typeof spec === 'function'
44 ? new ComponentBuilder().component(spec)
45 : new ComponentBuilder(spec)
46 },
47
48 divider: (): Divider => ({id: uniqueId('__divider__'), type: 'divider'})
49}
50
51export {StructureBuilder, SerializeError}