Total Complexity | 5 |
Complexity/F | 1.67 |
Lines of Code | 31 |
Function Count | 3 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { setBlockType } from 'prosemirror-commands'; |
||
2 | import AbstractMenuItemDispatcher from './AbstractMenuItemDispatcher'; |
||
3 | import MenuItem from '../MenuItem'; |
||
4 | import { svgIcon } from '../MDI'; |
||
5 | |||
6 | export default class HeadingMenuItemDispatcher extends AbstractMenuItemDispatcher { |
||
7 | /** |
||
8 | * Create an MenuItemDispatcher to set the blocktype to a heading at the given level |
||
9 | * |
||
10 | * @param {int} level the level of the heading, from 1 to 6 |
||
11 | */ |
||
12 | constructor(level) { |
||
13 | super(); |
||
14 | this.level = level; |
||
15 | } |
||
16 | |||
17 | isAvailable(schema) { // eslint-disable-line class-methods-use-this |
||
18 | return !!schema.nodes.heading; |
||
19 | } |
||
20 | |||
21 | getMenuItem(schema) { |
||
22 | if (!this.isAvailable(schema)) { |
||
23 | throw new Error('Headings not available in this schema!'); |
||
24 | } |
||
25 | return new MenuItem({ |
||
26 | command: setBlockType(schema.nodes.heading, { level: this.level }), |
||
27 | icon: svgIcon(`format-header-${this.level}`), |
||
28 | label: `Heading ${this.level}`, |
||
29 | }); |
||
30 | } |
||
31 | } |
||
32 |