@akilli/editor-src 5.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/abbreviation/Abbreviation.js +32 -0
  2. package/abbreviation/AbbreviationDialog.js +21 -0
  3. package/audio/Audio.js +47 -0
  4. package/audio/AudioDialog.js +18 -0
  5. package/audio/AudioListener.js +50 -0
  6. package/base/AlignCommand.js +34 -0
  7. package/base/AlignableListener.js +45 -0
  8. package/base/Alignment.js +36 -0
  9. package/base/BarListener.js +95 -0
  10. package/base/Base.js +127 -0
  11. package/base/Command.js +139 -0
  12. package/base/CommandManager.js +60 -0
  13. package/base/ContentFilter.js +109 -0
  14. package/base/DeletableListener.js +36 -0
  15. package/base/DeleteCommand.js +18 -0
  16. package/base/Dialog.js +153 -0
  17. package/base/DialogManager.js +44 -0
  18. package/base/Dispatcher.js +88 -0
  19. package/base/Dom.js +790 -0
  20. package/base/EditableListener.js +82 -0
  21. package/base/Editor.js +448 -0
  22. package/base/Filter.js +35 -0
  23. package/base/FilterManager.js +44 -0
  24. package/base/FocusableListener.js +22 -0
  25. package/base/FocusbarListener.js +99 -0
  26. package/base/FormCreator.js +162 -0
  27. package/base/FormatbarListener.js +32 -0
  28. package/base/Key.js +258 -0
  29. package/base/Listener.js +51 -0
  30. package/base/NavigableListener.js +81 -0
  31. package/base/Plugin.js +176 -0
  32. package/base/PluginManager.js +51 -0
  33. package/base/SlotableListener.js +40 -0
  34. package/base/SortCommand.js +30 -0
  35. package/base/SortableListener.js +135 -0
  36. package/base/Sorting.js +36 -0
  37. package/base/Tag.js +113 -0
  38. package/base/TagGroup.js +183 -0
  39. package/base/TagListener.js +34 -0
  40. package/base/TagManager.js +61 -0
  41. package/base/TagName.js +470 -0
  42. package/base/ToolbarListener.js +11 -0
  43. package/base/util.js +59 -0
  44. package/block/Block.js +51 -0
  45. package/block/BlockDialog.js +11 -0
  46. package/block/BlockElement.js +21 -0
  47. package/block/BlockListener.js +60 -0
  48. package/blockquote/Blockquote.js +43 -0
  49. package/blockquote/BlockquoteFilter.js +22 -0
  50. package/blockquote/BlockquoteListener.js +34 -0
  51. package/bold/Bold.js +30 -0
  52. package/break/Break.js +33 -0
  53. package/break/BreakFilter.js +24 -0
  54. package/build/BuildEditor.js +97 -0
  55. package/build/editor.css +548 -0
  56. package/build/editor.woff2 +0 -0
  57. package/cite/Cite.js +30 -0
  58. package/code/Code.js +30 -0
  59. package/data/Data.js +32 -0
  60. package/data/DataDialog.js +13 -0
  61. package/definition/Definition.js +32 -0
  62. package/definition/DefinitionDialog.js +13 -0
  63. package/deletion/Deletion.js +30 -0
  64. package/details/Details.js +63 -0
  65. package/details/DetailsFilter.js +17 -0
  66. package/details/DetailsListener.js +102 -0
  67. package/division/Division.js +53 -0
  68. package/division/DivisionDialog.js +13 -0
  69. package/emphasis/Emphasis.js +30 -0
  70. package/figure/Figure.js +58 -0
  71. package/figure/FigureFilter.js +14 -0
  72. package/figure/FigureListener.js +23 -0
  73. package/heading/Heading.js +38 -0
  74. package/horizontalrule/HorizontalRule.js +37 -0
  75. package/i18n/I18n.js +26 -0
  76. package/i18n/de.js +167 -0
  77. package/iframe/Iframe.js +49 -0
  78. package/iframe/IframeDialog.js +20 -0
  79. package/iframe/IframeListener.js +48 -0
  80. package/image/Image.js +47 -0
  81. package/image/ImageDialog.js +23 -0
  82. package/image/ImageListener.js +47 -0
  83. package/insertion/Insertion.js +30 -0
  84. package/italic/Italic.js +30 -0
  85. package/keyboard/Keyboard.js +30 -0
  86. package/link/Link.js +34 -0
  87. package/link/LinkDialog.js +14 -0
  88. package/link/LinkListener.js +45 -0
  89. package/list/List.js +40 -0
  90. package/list/ListListener.js +91 -0
  91. package/mark/Mark.js +30 -0
  92. package/orderedlist/OrderedList.js +39 -0
  93. package/package.json +24 -0
  94. package/paragraph/Paragraph.js +42 -0
  95. package/paragraph/ParagraphListener.js +40 -0
  96. package/preformat/Preformat.js +43 -0
  97. package/preformat/PreformatFilter.js +22 -0
  98. package/preformat/PreformatListener.js +34 -0
  99. package/quote/Quote.js +30 -0
  100. package/sample/Sample.js +30 -0
  101. package/section/Section.js +55 -0
  102. package/section/SectionDialog.js +13 -0
  103. package/small/Small.js +30 -0
  104. package/strikethrough/Strikethrough.js +30 -0
  105. package/strong/Strong.js +30 -0
  106. package/subheading/Subheading.js +38 -0
  107. package/subscript/Subscript.js +30 -0
  108. package/superscript/Superscript.js +30 -0
  109. package/table/Table.js +113 -0
  110. package/table/TableCellListener.js +125 -0
  111. package/table/TableColumnAddCommand.js +19 -0
  112. package/table/TableColumnListener.js +34 -0
  113. package/table/TableCommand.js +23 -0
  114. package/table/TableDialog.js +14 -0
  115. package/table/TableFilter.js +35 -0
  116. package/table/TableListener.js +39 -0
  117. package/table/TableRowAddCommand.js +18 -0
  118. package/table/TableRowListener.js +34 -0
  119. package/time/Time.js +32 -0
  120. package/time/TimeDialog.js +13 -0
  121. package/underline/Underline.js +30 -0
  122. package/unorderedlist/UnorderedList.js +39 -0
  123. package/variable/Variable.js +30 -0
  124. package/video/Video.js +47 -0
  125. package/video/VideoDialog.js +20 -0
  126. package/video/VideoListener.js +48 -0
@@ -0,0 +1,49 @@
1
+ import Base from '../base/Base.js';
2
+ import Figure from '../figure/Figure.js';
3
+ import IframeDialog from './IframeDialog.js';
4
+ import IframeListener from './IframeListener.js';
5
+ import Plugin from '../base/Plugin.js';
6
+ import TagGroup from '../base/TagGroup.js';
7
+ import TagName from '../base/TagName.js';
8
+
9
+ export default class Iframe extends Plugin {
10
+ /**
11
+ * @type {string}
12
+ */
13
+ static get name() {
14
+ return 'iframe';
15
+ }
16
+
17
+ /**
18
+ * @type {Plugin[]}
19
+ */
20
+ static get dependencies() {
21
+ return [Base, Figure];
22
+ }
23
+
24
+ /**
25
+ * @type {Object.<string, any>}
26
+ */
27
+ static get config() {
28
+ return { browser: undefined };
29
+ }
30
+
31
+ /**
32
+ * @return {void}
33
+ */
34
+ init() {
35
+ this._tag({
36
+ name: TagName.IFRAME,
37
+ group: TagGroup.IFRAME,
38
+ attributes: ['allowfullscreen', 'height', 'id', 'src', 'width'],
39
+ empty: true,
40
+ navigable: true,
41
+ });
42
+ new IframeListener(this.editor);
43
+ this.editor.dialogs.set(
44
+ new IframeDialog(this.editor, this.constructor.name, this.editor.config.iframe.browser)
45
+ );
46
+ this._command(TagName.IFRAME);
47
+ this._toolbar('Iframe');
48
+ }
49
+ }
@@ -0,0 +1,20 @@
1
+ import Dialog from '../base/Dialog.js';
2
+
3
+ export default class IframeDialog extends Dialog {
4
+ /**
5
+ * @protected
6
+ * @return {void}
7
+ */
8
+ _prepareForm() {
9
+ this.formCreator
10
+ .addLegend(this._('Iframe'))
11
+ .addTextInput('src', this._('URL'), {
12
+ pattern: '(https?|/).+',
13
+ placeholder: this._('Insert URL to embedded page'),
14
+ required: 'required',
15
+ })
16
+ .addNumberInput('width', this._('Width'))
17
+ .addNumberInput('height', this._('Height'))
18
+ .addTextInput('id', this._('ID'));
19
+ }
20
+ }
@@ -0,0 +1,48 @@
1
+ import Iframe from './Iframe.js';
2
+ import Listener from '../base/Listener.js';
3
+ import TagName from '../base/TagName.js';
4
+
5
+ export default class IframeListener extends Listener {
6
+ /**
7
+ * @param {Editor} editor
8
+ */
9
+ constructor(editor) {
10
+ super(editor);
11
+ this.editor.root.addEventListener('sethtml', this);
12
+ this.editor.root.addEventListener('insertiframe', this);
13
+ }
14
+
15
+ /**
16
+ * @param {CustomEvent} event
17
+ * @param {HTMLElement} event.detail.element
18
+ * @return {void}
19
+ */
20
+ sethtml({ detail: { element } }) {
21
+ Array.from(element.getElementsByTagName(TagName.IFRAME)).forEach((item) => this.#init(item));
22
+ }
23
+
24
+ /**
25
+ * @param {CustomEvent} event
26
+ * @param {HTMLIFrameElement} event.detail.element
27
+ * @return {void}
28
+ */
29
+ insertiframe({ detail: { element } }) {
30
+ this.#init(element);
31
+ }
32
+
33
+ /**
34
+ * @param {HTMLIFrameElement} element
35
+ * @return {void}
36
+ */
37
+ #init(element) {
38
+ const src = element.getAttribute('src');
39
+
40
+ if (!src) {
41
+ element.parentElement.removeChild(element);
42
+ } else {
43
+ element.setAttribute('src', this.editor.url(src));
44
+ element.allowFullscreen = true;
45
+ this.editor.dom.wrap(element, TagName.FIGURE, { attributes: { class: Iframe.name } });
46
+ }
47
+ }
48
+ }
package/image/Image.js ADDED
@@ -0,0 +1,47 @@
1
+ import Base from '../base/Base.js';
2
+ import Figure from '../figure/Figure.js';
3
+ import ImageDialog from './ImageDialog.js';
4
+ import ImageListener from './ImageListener.js';
5
+ import Plugin from '../base/Plugin.js';
6
+ import TagGroup from '../base/TagGroup.js';
7
+ import TagName from '../base/TagName.js';
8
+
9
+ export default class Image extends Plugin {
10
+ /**
11
+ * @type {string}
12
+ */
13
+ static get name() {
14
+ return 'image';
15
+ }
16
+
17
+ /**
18
+ * @type {Plugin[]}
19
+ */
20
+ static get dependencies() {
21
+ return [Base, Figure];
22
+ }
23
+
24
+ /**
25
+ * @type {Object.<string, any>}
26
+ */
27
+ static get config() {
28
+ return { browser: undefined };
29
+ }
30
+
31
+ /**
32
+ * @return {void}
33
+ */
34
+ init() {
35
+ this._tag({
36
+ name: TagName.IMG,
37
+ group: TagGroup.IMAGE,
38
+ attributes: ['alt', 'height', 'id', 'src', 'width'],
39
+ empty: true,
40
+ navigable: true,
41
+ });
42
+ new ImageListener(this.editor);
43
+ this.editor.dialogs.set(new ImageDialog(this.editor, this.constructor.name, this.editor.config.image.browser));
44
+ this._command(TagName.IMG);
45
+ this._toolbar('Image');
46
+ }
47
+ }
@@ -0,0 +1,23 @@
1
+ import Dialog from '../base/Dialog.js';
2
+
3
+ export default class ImageDialog extends Dialog {
4
+ /**
5
+ * @protected
6
+ * @return {void}
7
+ */
8
+ _prepareForm() {
9
+ this.formCreator
10
+ .addLegend(this._('Image'))
11
+ .addTextInput('src', this._('URL'), {
12
+ pattern: '(https?|/).+',
13
+ placeholder: this._('Insert URL to image'),
14
+ required: 'required',
15
+ })
16
+ .addTextInput('alt', this._('Alternative text'), {
17
+ placeholder: this._('Text shown when media element is not available'),
18
+ })
19
+ .addNumberInput('width', this._('Width'))
20
+ .addNumberInput('height', this._('Height'))
21
+ .addTextInput('id', this._('ID'));
22
+ }
23
+ }
@@ -0,0 +1,47 @@
1
+ import Image from './Image.js';
2
+ import Listener from '../base/Listener.js';
3
+ import TagName from '../base/TagName.js';
4
+
5
+ export default class ImageListener extends Listener {
6
+ /**
7
+ * @param {Editor} editor
8
+ */
9
+ constructor(editor) {
10
+ super(editor);
11
+ this.editor.root.addEventListener('sethtml', this);
12
+ this.editor.root.addEventListener('insertimg', this);
13
+ }
14
+
15
+ /**
16
+ * @param {CustomEvent} event
17
+ * @param {HTMLElement} event.detail.element
18
+ * @return {void}
19
+ */
20
+ sethtml({ detail: { element } }) {
21
+ Array.from(element.getElementsByTagName(TagName.IMG)).forEach((item) => this.#init(item));
22
+ }
23
+
24
+ /**
25
+ * @param {CustomEvent} event
26
+ * @param {HTMLImageElement} event.detail.element
27
+ * @return {void}
28
+ */
29
+ insertimg({ detail: { element } }) {
30
+ this.#init(element);
31
+ }
32
+
33
+ /**
34
+ * @param {HTMLImageElement} element
35
+ * @return {void}
36
+ */
37
+ #init(element) {
38
+ const src = element.getAttribute('src');
39
+
40
+ if (!src) {
41
+ element.parentElement.removeChild(element);
42
+ } else {
43
+ element.setAttribute('src', this.editor.url(src));
44
+ this.editor.dom.wrap(element, TagName.FIGURE, { attributes: { class: Image.name } });
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Insertion extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'insertion';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.INS, group: TagGroup.FORMAT });
27
+ this._command(TagName.INS);
28
+ this._formatbar('Text Insertion', Key.F);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Italic extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'italic';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.I, group: TagGroup.FORMAT });
27
+ this._command(TagName.I);
28
+ this._formatbar('italic', Key.I);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Keyboard extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'keyboard';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.KBD, group: TagGroup.FORMAT });
27
+ this._command(TagName.KBD);
28
+ this._formatbar('User Input', Key.K);
29
+ }
30
+ }
package/link/Link.js ADDED
@@ -0,0 +1,34 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import LinkDialog from './LinkDialog.js';
4
+ import LinkListener from './LinkListener.js';
5
+ import Plugin from '../base/Plugin.js';
6
+ import TagGroup from '../base/TagGroup.js';
7
+ import TagName from '../base/TagName.js';
8
+
9
+ export default class Link extends Plugin {
10
+ /**
11
+ * @type {string}
12
+ */
13
+ static get name() {
14
+ return 'link';
15
+ }
16
+
17
+ /**
18
+ * @type {Plugin[]}
19
+ */
20
+ static get dependencies() {
21
+ return [Base];
22
+ }
23
+
24
+ /**
25
+ * @return {void}
26
+ */
27
+ init() {
28
+ this._tag({ name: TagName.A, group: TagGroup.FORMAT, attributes: ['href'] });
29
+ new LinkListener(this.editor);
30
+ this.editor.dialogs.set(new LinkDialog(this.editor, this.constructor.name));
31
+ this._command(TagName.A);
32
+ this._formatbar('Link', Key.L);
33
+ }
34
+ }
@@ -0,0 +1,14 @@
1
+ import Dialog from '../base/Dialog.js';
2
+
3
+ export default class LinkDialog extends Dialog {
4
+ /**
5
+ * @protected
6
+ * @return {void}
7
+ */
8
+ _prepareForm() {
9
+ this.formCreator.addLegend(this._('Link')).addTextInput('href', this._('URL'), {
10
+ pattern: '(https?|/|mailto:|tel:).+',
11
+ placeholder: this._('Insert link or leave empty to unlink'),
12
+ });
13
+ }
14
+ }
@@ -0,0 +1,45 @@
1
+ import Listener from '../base/Listener.js';
2
+ import TagName from '../base/TagName.js';
3
+
4
+ export default class LinkListener extends Listener {
5
+ /**
6
+ * @param {Editor} editor
7
+ */
8
+ constructor(editor) {
9
+ super(editor);
10
+ this.editor.root.addEventListener('sethtml', this);
11
+ this.editor.root.addEventListener('inserta', this);
12
+ }
13
+
14
+ /**
15
+ * @param {CustomEvent} event
16
+ * @param {HTMLElement} event.detail.element
17
+ * @return {void}
18
+ */
19
+ sethtml({ detail: { element } }) {
20
+ Array.from(element.getElementsByTagName(TagName.A)).forEach((item) => this.#init(item));
21
+ }
22
+
23
+ /**
24
+ * @param {CustomEvent} event
25
+ * @param {HTMLAnchorElement} event.detail.element
26
+ * @return {void}
27
+ */
28
+ inserta({ detail: { element } }) {
29
+ this.#init(element);
30
+ }
31
+
32
+ /**
33
+ * @param {HTMLAnchorElement} element
34
+ * @return {void}
35
+ */
36
+ #init(element) {
37
+ const href = element.getAttribute('href');
38
+
39
+ if (!href) {
40
+ element.parentElement.replaceChild(this.editor.dom.createText(element.textContent), element);
41
+ } else {
42
+ element.setAttribute('href', this.editor.url(href));
43
+ }
44
+ }
45
+ }
package/list/List.js ADDED
@@ -0,0 +1,40 @@
1
+ import Base from '../base/Base.js';
2
+ import Break from '../break/Break.js';
3
+ import ListListener from './ListListener.js';
4
+ import Plugin from '../base/Plugin.js';
5
+ import TagGroup from '../base/TagGroup.js';
6
+ import TagName from '../base/TagName.js';
7
+
8
+ export default class List extends Plugin {
9
+ /**
10
+ * @type {string}
11
+ */
12
+ static get name() {
13
+ return 'list';
14
+ }
15
+
16
+ /**
17
+ * @type {Plugin[]}
18
+ */
19
+ static get dependencies() {
20
+ return [Base, Break];
21
+ }
22
+
23
+ /**
24
+ * @return {void}
25
+ */
26
+ init() {
27
+ this._tag({
28
+ name: TagName.LI,
29
+ group: TagGroup.LISTITEM,
30
+ children: [TagGroup.BREAK, TagGroup.FORMAT],
31
+ deletable: true,
32
+ editable: true,
33
+ focusable: true,
34
+ navigable: true,
35
+ sortable: true,
36
+ enter: TagName.LI,
37
+ });
38
+ new ListListener(this.editor);
39
+ }
40
+ }
@@ -0,0 +1,91 @@
1
+ import Listener from '../base/Listener.js';
2
+ import TagName from '../base/TagName.js';
3
+
4
+ export default class ListListener extends Listener {
5
+ /**
6
+ * @param {Editor} editor
7
+ */
8
+ constructor(editor) {
9
+ super(editor);
10
+ this.editor.root.addEventListener('sethtml', this);
11
+ this.editor.root.addEventListener('insertli', this);
12
+ this.editor.root.addEventListener('deleteli', this);
13
+ this.editor.root.addEventListener('insertol', this);
14
+ this.editor.root.addEventListener('insertul', this);
15
+ }
16
+
17
+ /**
18
+ * @param {CustomEvent} event
19
+ * @param {HTMLElement} event.detail.element
20
+ * @return {void}
21
+ */
22
+ sethtml({ detail: { element } }) {
23
+ Array.from(element.getElementsByTagName(TagName.LI)).forEach((item) => this.#init(item));
24
+ }
25
+
26
+ /**
27
+ * @param {CustomEvent} event
28
+ * @param {HTMLLIElement} event.detail.element
29
+ * @return {void}
30
+ */
31
+ insertli({ detail: { element } }) {
32
+ this.#init(element);
33
+ }
34
+
35
+ /**
36
+ * Removes parent element too if deleted listitem was the only child
37
+ *
38
+ * @param {HTMLOListElement|HTMLUListElement} target
39
+ * @return {void}
40
+ */
41
+ deleteli({ detail: { target } }) {
42
+ if (target.children.length === 0) {
43
+ target.parentElement.removeChild(target);
44
+ }
45
+ }
46
+
47
+ /**
48
+ * @param {CustomEvent} event
49
+ * @param {HTMLOListElement} event.detail.element
50
+ * @return {void}
51
+ */
52
+ insertol({ detail: { element } }) {
53
+ this.#insert(element);
54
+ }
55
+
56
+ /**
57
+ * @param {CustomEvent} event
58
+ * @param {HTMLUListElement} event.detail.element
59
+ * @return {void}
60
+ */
61
+ insertul({ detail: { element } }) {
62
+ this.#insert(element);
63
+ }
64
+
65
+ /**
66
+ * Initializes listitem elements
67
+ *
68
+ * @param {HTMLLIElement} element
69
+ * @return {void}
70
+ */
71
+ #init(element) {
72
+ if (
73
+ !(element.parentElement instanceof HTMLOListElement) &&
74
+ !(element.parentElement instanceof HTMLUListElement)
75
+ ) {
76
+ this.editor.dom.wrap(element, TagName.UL);
77
+ }
78
+ }
79
+
80
+ /**
81
+ * Initializes list elements
82
+ *
83
+ * @param {HTMLOListElement|HTMLUListElement} element
84
+ * @return {void}
85
+ */
86
+ #insert(element) {
87
+ if (element.children.length === 0) {
88
+ this.editor.dom.insertLastChild(this.editor.dom.createElement(TagName.LI), element);
89
+ }
90
+ }
91
+ }
package/mark/Mark.js ADDED
@@ -0,0 +1,30 @@
1
+ import Base from '../base/Base.js';
2
+ import Key from '../base/Key.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class Mark extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'mark';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({ name: TagName.MARK, group: TagGroup.FORMAT });
27
+ this._command(TagName.MARK);
28
+ this._formatbar('mark', Key.M);
29
+ }
30
+ }
@@ -0,0 +1,39 @@
1
+ import Base from '../base/Base.js';
2
+ import List from '../list/List.js';
3
+ import Plugin from '../base/Plugin.js';
4
+ import TagGroup from '../base/TagGroup.js';
5
+ import TagName from '../base/TagName.js';
6
+
7
+ export default class OrderedList extends Plugin {
8
+ /**
9
+ * @type {string}
10
+ */
11
+ static get name() {
12
+ return 'orderedlist';
13
+ }
14
+
15
+ /**
16
+ * @type {Plugin[]}
17
+ */
18
+ static get dependencies() {
19
+ return [Base, List];
20
+ }
21
+
22
+ /**
23
+ * @return {void}
24
+ */
25
+ init() {
26
+ this._tag({
27
+ name: TagName.OL,
28
+ group: TagGroup.LIST,
29
+ children: [TagGroup.LISTITEM],
30
+ arbitrary: true,
31
+ deletable: true,
32
+ focusable: true,
33
+ navigable: true,
34
+ sortable: true,
35
+ });
36
+ this._command(TagName.OL);
37
+ this._toolbar('Ordered List');
38
+ }
39
+ }
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@akilli/editor-src",
3
+ "version": "5.1.5",
4
+ "description": "@akilli/editor source files",
5
+ "keywords": [
6
+ "contenteditable",
7
+ "editor",
8
+ "html-editor",
9
+ "rte",
10
+ "rich-text",
11
+ "rich-text-editor",
12
+ "wysiwyg",
13
+ "wysiwyg-editor"
14
+ ],
15
+ "author": "Ayhan Akilli",
16
+ "license": "MIT",
17
+ "bugs": "https://github.com/akilli/editor/issues",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/akilli/editor.git"
21
+ },
22
+ "type": "module",
23
+ "browser": "./build/BuildEditor.js"
24
+ }