@ckeditor/ckeditor5-undo 0.0.0-internal-20241017.0

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 (287) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE.md +17 -0
  3. package/README.md +22 -0
  4. package/ckeditor5-metadata.json +23 -0
  5. package/dist/augmentation.d.ts +20 -0
  6. package/dist/basecommand.d.ts +76 -0
  7. package/dist/index-content.css +4 -0
  8. package/dist/index-editor.css +4 -0
  9. package/dist/index.css +4 -0
  10. package/dist/index.d.ts +17 -0
  11. package/dist/index.js +547 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/redocommand.d.ts +31 -0
  14. package/dist/translations/ar.d.ts +8 -0
  15. package/dist/translations/ar.js +5 -0
  16. package/dist/translations/ar.umd.js +11 -0
  17. package/dist/translations/ast.d.ts +8 -0
  18. package/dist/translations/ast.js +5 -0
  19. package/dist/translations/ast.umd.js +11 -0
  20. package/dist/translations/az.d.ts +8 -0
  21. package/dist/translations/az.js +5 -0
  22. package/dist/translations/az.umd.js +11 -0
  23. package/dist/translations/bg.d.ts +8 -0
  24. package/dist/translations/bg.js +5 -0
  25. package/dist/translations/bg.umd.js +11 -0
  26. package/dist/translations/bn.d.ts +8 -0
  27. package/dist/translations/bn.js +5 -0
  28. package/dist/translations/bn.umd.js +11 -0
  29. package/dist/translations/ca.d.ts +8 -0
  30. package/dist/translations/ca.js +5 -0
  31. package/dist/translations/ca.umd.js +11 -0
  32. package/dist/translations/cs.d.ts +8 -0
  33. package/dist/translations/cs.js +5 -0
  34. package/dist/translations/cs.umd.js +11 -0
  35. package/dist/translations/da.d.ts +8 -0
  36. package/dist/translations/da.js +5 -0
  37. package/dist/translations/da.umd.js +11 -0
  38. package/dist/translations/de-ch.d.ts +8 -0
  39. package/dist/translations/de-ch.js +5 -0
  40. package/dist/translations/de-ch.umd.js +11 -0
  41. package/dist/translations/de.d.ts +8 -0
  42. package/dist/translations/de.js +5 -0
  43. package/dist/translations/de.umd.js +11 -0
  44. package/dist/translations/el.d.ts +8 -0
  45. package/dist/translations/el.js +5 -0
  46. package/dist/translations/el.umd.js +11 -0
  47. package/dist/translations/en-au.d.ts +8 -0
  48. package/dist/translations/en-au.js +5 -0
  49. package/dist/translations/en-au.umd.js +11 -0
  50. package/dist/translations/en-gb.d.ts +8 -0
  51. package/dist/translations/en-gb.js +5 -0
  52. package/dist/translations/en-gb.umd.js +11 -0
  53. package/dist/translations/en.d.ts +8 -0
  54. package/dist/translations/en.js +5 -0
  55. package/dist/translations/en.umd.js +11 -0
  56. package/dist/translations/eo.d.ts +8 -0
  57. package/dist/translations/eo.js +5 -0
  58. package/dist/translations/eo.umd.js +11 -0
  59. package/dist/translations/es.d.ts +8 -0
  60. package/dist/translations/es.js +5 -0
  61. package/dist/translations/es.umd.js +11 -0
  62. package/dist/translations/et.d.ts +8 -0
  63. package/dist/translations/et.js +5 -0
  64. package/dist/translations/et.umd.js +11 -0
  65. package/dist/translations/eu.d.ts +8 -0
  66. package/dist/translations/eu.js +5 -0
  67. package/dist/translations/eu.umd.js +11 -0
  68. package/dist/translations/fa.d.ts +8 -0
  69. package/dist/translations/fa.js +5 -0
  70. package/dist/translations/fa.umd.js +11 -0
  71. package/dist/translations/fi.d.ts +8 -0
  72. package/dist/translations/fi.js +5 -0
  73. package/dist/translations/fi.umd.js +11 -0
  74. package/dist/translations/fr.d.ts +8 -0
  75. package/dist/translations/fr.js +5 -0
  76. package/dist/translations/fr.umd.js +11 -0
  77. package/dist/translations/gl.d.ts +8 -0
  78. package/dist/translations/gl.js +5 -0
  79. package/dist/translations/gl.umd.js +11 -0
  80. package/dist/translations/he.d.ts +8 -0
  81. package/dist/translations/he.js +5 -0
  82. package/dist/translations/he.umd.js +11 -0
  83. package/dist/translations/hi.d.ts +8 -0
  84. package/dist/translations/hi.js +5 -0
  85. package/dist/translations/hi.umd.js +11 -0
  86. package/dist/translations/hr.d.ts +8 -0
  87. package/dist/translations/hr.js +5 -0
  88. package/dist/translations/hr.umd.js +11 -0
  89. package/dist/translations/hu.d.ts +8 -0
  90. package/dist/translations/hu.js +5 -0
  91. package/dist/translations/hu.umd.js +11 -0
  92. package/dist/translations/id.d.ts +8 -0
  93. package/dist/translations/id.js +5 -0
  94. package/dist/translations/id.umd.js +11 -0
  95. package/dist/translations/it.d.ts +8 -0
  96. package/dist/translations/it.js +5 -0
  97. package/dist/translations/it.umd.js +11 -0
  98. package/dist/translations/ja.d.ts +8 -0
  99. package/dist/translations/ja.js +5 -0
  100. package/dist/translations/ja.umd.js +11 -0
  101. package/dist/translations/km.d.ts +8 -0
  102. package/dist/translations/km.js +5 -0
  103. package/dist/translations/km.umd.js +11 -0
  104. package/dist/translations/kn.d.ts +8 -0
  105. package/dist/translations/kn.js +5 -0
  106. package/dist/translations/kn.umd.js +11 -0
  107. package/dist/translations/ko.d.ts +8 -0
  108. package/dist/translations/ko.js +5 -0
  109. package/dist/translations/ko.umd.js +11 -0
  110. package/dist/translations/ku.d.ts +8 -0
  111. package/dist/translations/ku.js +5 -0
  112. package/dist/translations/ku.umd.js +11 -0
  113. package/dist/translations/lt.d.ts +8 -0
  114. package/dist/translations/lt.js +5 -0
  115. package/dist/translations/lt.umd.js +11 -0
  116. package/dist/translations/lv.d.ts +8 -0
  117. package/dist/translations/lv.js +5 -0
  118. package/dist/translations/lv.umd.js +11 -0
  119. package/dist/translations/ms.d.ts +8 -0
  120. package/dist/translations/ms.js +5 -0
  121. package/dist/translations/ms.umd.js +11 -0
  122. package/dist/translations/nb.d.ts +8 -0
  123. package/dist/translations/nb.js +5 -0
  124. package/dist/translations/nb.umd.js +11 -0
  125. package/dist/translations/ne.d.ts +8 -0
  126. package/dist/translations/ne.js +5 -0
  127. package/dist/translations/ne.umd.js +11 -0
  128. package/dist/translations/nl.d.ts +8 -0
  129. package/dist/translations/nl.js +5 -0
  130. package/dist/translations/nl.umd.js +11 -0
  131. package/dist/translations/no.d.ts +8 -0
  132. package/dist/translations/no.js +5 -0
  133. package/dist/translations/no.umd.js +11 -0
  134. package/dist/translations/pl.d.ts +8 -0
  135. package/dist/translations/pl.js +5 -0
  136. package/dist/translations/pl.umd.js +11 -0
  137. package/dist/translations/pt-br.d.ts +8 -0
  138. package/dist/translations/pt-br.js +5 -0
  139. package/dist/translations/pt-br.umd.js +11 -0
  140. package/dist/translations/pt.d.ts +8 -0
  141. package/dist/translations/pt.js +5 -0
  142. package/dist/translations/pt.umd.js +11 -0
  143. package/dist/translations/ro.d.ts +8 -0
  144. package/dist/translations/ro.js +5 -0
  145. package/dist/translations/ro.umd.js +11 -0
  146. package/dist/translations/ru.d.ts +8 -0
  147. package/dist/translations/ru.js +5 -0
  148. package/dist/translations/ru.umd.js +11 -0
  149. package/dist/translations/si.d.ts +8 -0
  150. package/dist/translations/si.js +5 -0
  151. package/dist/translations/si.umd.js +11 -0
  152. package/dist/translations/sk.d.ts +8 -0
  153. package/dist/translations/sk.js +5 -0
  154. package/dist/translations/sk.umd.js +11 -0
  155. package/dist/translations/sq.d.ts +8 -0
  156. package/dist/translations/sq.js +5 -0
  157. package/dist/translations/sq.umd.js +11 -0
  158. package/dist/translations/sr-latn.d.ts +8 -0
  159. package/dist/translations/sr-latn.js +5 -0
  160. package/dist/translations/sr-latn.umd.js +11 -0
  161. package/dist/translations/sr.d.ts +8 -0
  162. package/dist/translations/sr.js +5 -0
  163. package/dist/translations/sr.umd.js +11 -0
  164. package/dist/translations/sv.d.ts +8 -0
  165. package/dist/translations/sv.js +5 -0
  166. package/dist/translations/sv.umd.js +11 -0
  167. package/dist/translations/th.d.ts +8 -0
  168. package/dist/translations/th.js +5 -0
  169. package/dist/translations/th.umd.js +11 -0
  170. package/dist/translations/ti.d.ts +8 -0
  171. package/dist/translations/ti.js +5 -0
  172. package/dist/translations/ti.umd.js +11 -0
  173. package/dist/translations/tk.d.ts +8 -0
  174. package/dist/translations/tk.js +5 -0
  175. package/dist/translations/tk.umd.js +11 -0
  176. package/dist/translations/tr.d.ts +8 -0
  177. package/dist/translations/tr.js +5 -0
  178. package/dist/translations/tr.umd.js +11 -0
  179. package/dist/translations/tt.d.ts +8 -0
  180. package/dist/translations/tt.js +5 -0
  181. package/dist/translations/tt.umd.js +11 -0
  182. package/dist/translations/ug.d.ts +8 -0
  183. package/dist/translations/ug.js +5 -0
  184. package/dist/translations/ug.umd.js +11 -0
  185. package/dist/translations/uk.d.ts +8 -0
  186. package/dist/translations/uk.js +5 -0
  187. package/dist/translations/uk.umd.js +11 -0
  188. package/dist/translations/ur.d.ts +8 -0
  189. package/dist/translations/ur.js +5 -0
  190. package/dist/translations/ur.umd.js +11 -0
  191. package/dist/translations/uz.d.ts +8 -0
  192. package/dist/translations/uz.js +5 -0
  193. package/dist/translations/uz.umd.js +11 -0
  194. package/dist/translations/vi.d.ts +8 -0
  195. package/dist/translations/vi.js +5 -0
  196. package/dist/translations/vi.umd.js +11 -0
  197. package/dist/translations/zh-cn.d.ts +8 -0
  198. package/dist/translations/zh-cn.js +5 -0
  199. package/dist/translations/zh-cn.umd.js +11 -0
  200. package/dist/translations/zh.d.ts +8 -0
  201. package/dist/translations/zh.js +5 -0
  202. package/dist/translations/zh.umd.js +11 -0
  203. package/dist/undo.d.ts +125 -0
  204. package/dist/undocommand.d.ts +41 -0
  205. package/dist/undoediting.d.ts +45 -0
  206. package/dist/undoui.d.ts +42 -0
  207. package/lang/contexts.json +4 -0
  208. package/lang/translations/ar.po +26 -0
  209. package/lang/translations/ast.po +26 -0
  210. package/lang/translations/az.po +26 -0
  211. package/lang/translations/bg.po +26 -0
  212. package/lang/translations/bn.po +26 -0
  213. package/lang/translations/ca.po +26 -0
  214. package/lang/translations/cs.po +26 -0
  215. package/lang/translations/da.po +26 -0
  216. package/lang/translations/de-ch.po +26 -0
  217. package/lang/translations/de.po +26 -0
  218. package/lang/translations/el.po +26 -0
  219. package/lang/translations/en-au.po +26 -0
  220. package/lang/translations/en-gb.po +26 -0
  221. package/lang/translations/en.po +26 -0
  222. package/lang/translations/eo.po +26 -0
  223. package/lang/translations/es.po +26 -0
  224. package/lang/translations/et.po +26 -0
  225. package/lang/translations/eu.po +26 -0
  226. package/lang/translations/fa.po +26 -0
  227. package/lang/translations/fi.po +26 -0
  228. package/lang/translations/fr.po +26 -0
  229. package/lang/translations/gl.po +26 -0
  230. package/lang/translations/he.po +26 -0
  231. package/lang/translations/hi.po +26 -0
  232. package/lang/translations/hr.po +26 -0
  233. package/lang/translations/hu.po +26 -0
  234. package/lang/translations/id.po +26 -0
  235. package/lang/translations/it.po +26 -0
  236. package/lang/translations/ja.po +26 -0
  237. package/lang/translations/km.po +26 -0
  238. package/lang/translations/kn.po +26 -0
  239. package/lang/translations/ko.po +26 -0
  240. package/lang/translations/ku.po +26 -0
  241. package/lang/translations/lt.po +26 -0
  242. package/lang/translations/lv.po +26 -0
  243. package/lang/translations/ms.po +26 -0
  244. package/lang/translations/nb.po +26 -0
  245. package/lang/translations/ne.po +26 -0
  246. package/lang/translations/nl.po +26 -0
  247. package/lang/translations/no.po +26 -0
  248. package/lang/translations/pl.po +26 -0
  249. package/lang/translations/pt-br.po +26 -0
  250. package/lang/translations/pt.po +26 -0
  251. package/lang/translations/ro.po +26 -0
  252. package/lang/translations/ru.po +26 -0
  253. package/lang/translations/si.po +26 -0
  254. package/lang/translations/sk.po +26 -0
  255. package/lang/translations/sq.po +26 -0
  256. package/lang/translations/sr-latn.po +26 -0
  257. package/lang/translations/sr.po +26 -0
  258. package/lang/translations/sv.po +26 -0
  259. package/lang/translations/th.po +26 -0
  260. package/lang/translations/ti.po +26 -0
  261. package/lang/translations/tk.po +26 -0
  262. package/lang/translations/tr.po +26 -0
  263. package/lang/translations/tt.po +26 -0
  264. package/lang/translations/ug.po +26 -0
  265. package/lang/translations/uk.po +26 -0
  266. package/lang/translations/ur.po +26 -0
  267. package/lang/translations/uz.po +26 -0
  268. package/lang/translations/vi.po +26 -0
  269. package/lang/translations/zh-cn.po +26 -0
  270. package/lang/translations/zh.po +26 -0
  271. package/package.json +39 -0
  272. package/src/augmentation.d.ts +16 -0
  273. package/src/augmentation.js +5 -0
  274. package/src/basecommand.d.ts +72 -0
  275. package/src/basecommand.js +192 -0
  276. package/src/index.d.ts +13 -0
  277. package/src/index.js +11 -0
  278. package/src/redocommand.d.ts +27 -0
  279. package/src/redocommand.js +40 -0
  280. package/src/undo.d.ts +121 -0
  281. package/src/undo.js +127 -0
  282. package/src/undocommand.d.ts +37 -0
  283. package/src/undocommand.js +44 -0
  284. package/src/undoediting.d.ts +41 -0
  285. package/src/undoediting.js +102 -0
  286. package/src/undoui.d.ts +38 -0
  287. package/src/undoui.js +79 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module undo/undoediting
7
+ */
8
+ import { Plugin } from '@ckeditor/ckeditor5-core';
9
+ import UndoCommand from './undocommand.js';
10
+ import RedoCommand from './redocommand.js';
11
+ /**
12
+ * The undo engine feature.
13
+ *
14
+ * It introduces the `'undo'` and `'redo'` commands to the editor.
15
+ */
16
+ export default class UndoEditing extends Plugin {
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * Keeps track of which batches were registered in undo.
21
+ */
22
+ this._batchRegistry = new WeakSet();
23
+ }
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get pluginName() {
28
+ return 'UndoEditing';
29
+ }
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ static get isOfficialPlugin() {
34
+ return true;
35
+ }
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ init() {
40
+ const editor = this.editor;
41
+ const t = editor.t;
42
+ // Create commands.
43
+ this._undoCommand = new UndoCommand(editor);
44
+ this._redoCommand = new RedoCommand(editor);
45
+ // Register command to the editor.
46
+ editor.commands.add('undo', this._undoCommand);
47
+ editor.commands.add('redo', this._redoCommand);
48
+ this.listenTo(editor.model, 'applyOperation', (evt, args) => {
49
+ const operation = args[0];
50
+ // Do not register batch if the operation is not a document operation.
51
+ // This prevents from creating empty undo steps, where all operations where non-document operations.
52
+ // Non-document operations creates and alters content in detached tree fragments (for example, document fragments).
53
+ // Most of time this is preparing data before it is inserted into actual tree (for example during copy & paste).
54
+ // Such operations should not be reversed.
55
+ if (!operation.isDocumentOperation) {
56
+ return;
57
+ }
58
+ const batch = operation.batch;
59
+ const isRedoBatch = this._redoCommand.createdBatches.has(batch);
60
+ const isUndoBatch = this._undoCommand.createdBatches.has(batch);
61
+ const wasProcessed = this._batchRegistry.has(batch);
62
+ // Skip the batch if it was already processed.
63
+ if (wasProcessed) {
64
+ return;
65
+ }
66
+ // Add the batch to the registry so it will not be processed again.
67
+ this._batchRegistry.add(batch);
68
+ if (!batch.isUndoable) {
69
+ return;
70
+ }
71
+ if (isRedoBatch) {
72
+ // If this batch comes from `redoCommand`, add it to the `undoCommand` stack.
73
+ this._undoCommand.addBatch(batch);
74
+ }
75
+ else if (!isUndoBatch) {
76
+ // If the batch comes neither from `redoCommand` nor from `undoCommand` then it is a new, regular batch.
77
+ // Add the batch to the `undoCommand` stack and clear the `redoCommand` stack.
78
+ this._undoCommand.addBatch(batch);
79
+ this._redoCommand.clearStack();
80
+ }
81
+ }, { priority: 'highest' });
82
+ this.listenTo(this._undoCommand, 'revert', (evt, undoneBatch, undoingBatch) => {
83
+ this._redoCommand.addBatch(undoingBatch);
84
+ });
85
+ editor.keystrokes.set('CTRL+Z', 'undo');
86
+ editor.keystrokes.set('CTRL+Y', 'redo');
87
+ editor.keystrokes.set('CTRL+SHIFT+Z', 'redo');
88
+ // Add the information about the keystrokes to the accessibility database.
89
+ editor.accessibility.addKeystrokeInfos({
90
+ keystrokes: [
91
+ {
92
+ label: t('Undo'),
93
+ keystroke: 'CTRL+Z'
94
+ },
95
+ {
96
+ label: t('Redo'),
97
+ keystroke: [['CTRL+Y'], ['CTRL+SHIFT+Z']]
98
+ }
99
+ ]
100
+ });
101
+ }
102
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module undo/undoui
7
+ */
8
+ import { Plugin } from '@ckeditor/ckeditor5-core';
9
+ /**
10
+ * The undo UI feature. It introduces the `'undo'` and `'redo'` buttons to the editor.
11
+ */
12
+ export default class UndoUI extends Plugin {
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ static get pluginName(): "UndoUI";
17
+ /**
18
+ * @inheritDoc
19
+ */
20
+ static get isOfficialPlugin(): true;
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ init(): void;
25
+ /**
26
+ * Creates a button for the specified command.
27
+ *
28
+ * @param name Command name.
29
+ * @param label Button label.
30
+ * @param keystroke Command keystroke.
31
+ * @param Icon Source of the icon.
32
+ */
33
+ private _addButtonsToFactory;
34
+ /**
35
+ * TODO
36
+ */
37
+ private _createButton;
38
+ }
package/src/undoui.js ADDED
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module undo/undoui
7
+ */
8
+ import { icons, Plugin } from '@ckeditor/ckeditor5-core';
9
+ import { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui';
10
+ /**
11
+ * The undo UI feature. It introduces the `'undo'` and `'redo'` buttons to the editor.
12
+ */
13
+ export default class UndoUI extends Plugin {
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ static get pluginName() {
18
+ return 'UndoUI';
19
+ }
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get isOfficialPlugin() {
24
+ return true;
25
+ }
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ init() {
30
+ const editor = this.editor;
31
+ const locale = editor.locale;
32
+ const t = editor.t;
33
+ const localizedUndoIcon = locale.uiLanguageDirection == 'ltr' ? icons.undo : icons.redo;
34
+ const localizedRedoIcon = locale.uiLanguageDirection == 'ltr' ? icons.redo : icons.undo;
35
+ this._addButtonsToFactory('undo', t('Undo'), 'CTRL+Z', localizedUndoIcon);
36
+ this._addButtonsToFactory('redo', t('Redo'), 'CTRL+Y', localizedRedoIcon);
37
+ }
38
+ /**
39
+ * Creates a button for the specified command.
40
+ *
41
+ * @param name Command name.
42
+ * @param label Button label.
43
+ * @param keystroke Command keystroke.
44
+ * @param Icon Source of the icon.
45
+ */
46
+ _addButtonsToFactory(name, label, keystroke, Icon) {
47
+ const editor = this.editor;
48
+ editor.ui.componentFactory.add(name, () => {
49
+ const buttonView = this._createButton(ButtonView, name, label, keystroke, Icon);
50
+ buttonView.set({
51
+ tooltip: true
52
+ });
53
+ return buttonView;
54
+ });
55
+ editor.ui.componentFactory.add('menuBar:' + name, () => {
56
+ return this._createButton(MenuBarMenuListItemButtonView, name, label, keystroke, Icon);
57
+ });
58
+ }
59
+ /**
60
+ * TODO
61
+ */
62
+ _createButton(ButtonClass, name, label, keystroke, Icon) {
63
+ const editor = this.editor;
64
+ const locale = editor.locale;
65
+ const command = editor.commands.get(name);
66
+ const view = new ButtonClass(locale);
67
+ view.set({
68
+ label,
69
+ icon: Icon,
70
+ keystroke
71
+ });
72
+ view.bind('isEnabled').to(command, 'isEnabled');
73
+ this.listenTo(view, 'execute', () => {
74
+ editor.execute(name);
75
+ editor.editing.view.focus();
76
+ });
77
+ return view;
78
+ }
79
+ }