@ckeditor/ckeditor5-table 39.0.1 → 40.0.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 (229) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -3
  3. package/build/table.js +1 -1
  4. package/build/table.js.map +1 -0
  5. package/build/translations/hy.js +1 -0
  6. package/lang/translations/ar.po +1 -0
  7. package/lang/translations/az.po +1 -0
  8. package/lang/translations/bg.po +1 -0
  9. package/lang/translations/bn.po +1 -0
  10. package/lang/translations/ca.po +1 -0
  11. package/lang/translations/cs.po +1 -0
  12. package/lang/translations/da.po +1 -0
  13. package/lang/translations/de-ch.po +1 -0
  14. package/lang/translations/de.po +1 -0
  15. package/lang/translations/el.po +1 -0
  16. package/lang/translations/en-au.po +1 -0
  17. package/lang/translations/en-gb.po +1 -0
  18. package/lang/translations/en.po +1 -0
  19. package/lang/translations/es.po +1 -0
  20. package/lang/translations/et.po +1 -0
  21. package/lang/translations/fa.po +1 -0
  22. package/lang/translations/fi.po +1 -0
  23. package/lang/translations/fr.po +1 -0
  24. package/lang/translations/gl.po +1 -0
  25. package/lang/translations/he.po +1 -0
  26. package/lang/translations/hi.po +1 -0
  27. package/lang/translations/hr.po +1 -0
  28. package/lang/translations/hu.po +1 -0
  29. package/lang/translations/hy.po +262 -0
  30. package/lang/translations/id.po +1 -0
  31. package/lang/translations/it.po +1 -0
  32. package/lang/translations/ja.po +1 -0
  33. package/lang/translations/ko.po +1 -0
  34. package/lang/translations/ku.po +1 -0
  35. package/lang/translations/lt.po +1 -0
  36. package/lang/translations/lv.po +1 -0
  37. package/lang/translations/ms.po +1 -0
  38. package/lang/translations/nb.po +1 -0
  39. package/lang/translations/ne.po +1 -0
  40. package/lang/translations/nl.po +1 -0
  41. package/lang/translations/no.po +1 -0
  42. package/lang/translations/pl.po +1 -0
  43. package/lang/translations/pt-br.po +1 -0
  44. package/lang/translations/pt.po +1 -0
  45. package/lang/translations/ro.po +1 -0
  46. package/lang/translations/ru.po +1 -0
  47. package/lang/translations/sk.po +1 -0
  48. package/lang/translations/sl.po +1 -0
  49. package/lang/translations/sq.po +1 -0
  50. package/lang/translations/sr-latn.po +1 -0
  51. package/lang/translations/sr.po +1 -0
  52. package/lang/translations/sv.po +1 -0
  53. package/lang/translations/th.po +1 -0
  54. package/lang/translations/tk.po +1 -0
  55. package/lang/translations/tr.po +1 -0
  56. package/lang/translations/tt.po +1 -0
  57. package/lang/translations/ug.po +1 -0
  58. package/lang/translations/uk.po +1 -0
  59. package/lang/translations/ur.po +1 -0
  60. package/lang/translations/uz.po +1 -0
  61. package/lang/translations/vi.po +1 -0
  62. package/lang/translations/zh-cn.po +1 -0
  63. package/lang/translations/zh.po +1 -0
  64. package/package.json +2 -6
  65. package/src/augmentation.d.ts +76 -76
  66. package/src/augmentation.js +5 -5
  67. package/src/commands/insertcolumncommand.d.ts +55 -55
  68. package/src/commands/insertcolumncommand.js +67 -67
  69. package/src/commands/insertrowcommand.d.ts +54 -54
  70. package/src/commands/insertrowcommand.js +66 -66
  71. package/src/commands/inserttablecommand.d.ts +44 -44
  72. package/src/commands/inserttablecommand.js +69 -69
  73. package/src/commands/mergecellcommand.d.ts +68 -68
  74. package/src/commands/mergecellcommand.js +198 -198
  75. package/src/commands/mergecellscommand.d.ts +28 -28
  76. package/src/commands/mergecellscommand.js +94 -94
  77. package/src/commands/removecolumncommand.d.ts +29 -29
  78. package/src/commands/removecolumncommand.js +109 -109
  79. package/src/commands/removerowcommand.d.ts +29 -29
  80. package/src/commands/removerowcommand.js +82 -82
  81. package/src/commands/selectcolumncommand.d.ts +33 -33
  82. package/src/commands/selectcolumncommand.js +60 -60
  83. package/src/commands/selectrowcommand.d.ts +33 -33
  84. package/src/commands/selectrowcommand.js +56 -56
  85. package/src/commands/setheadercolumncommand.d.ts +50 -50
  86. package/src/commands/setheadercolumncommand.js +71 -71
  87. package/src/commands/setheaderrowcommand.d.ts +53 -53
  88. package/src/commands/setheaderrowcommand.js +79 -79
  89. package/src/commands/splitcellcommand.d.ts +43 -43
  90. package/src/commands/splitcellcommand.js +54 -54
  91. package/src/converters/downcast.d.ts +63 -63
  92. package/src/converters/downcast.js +146 -146
  93. package/src/converters/table-caption-post-fixer.d.ts +20 -20
  94. package/src/converters/table-caption-post-fixer.js +53 -53
  95. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -32
  96. package/src/converters/table-cell-paragraph-post-fixer.js +107 -107
  97. package/src/converters/table-cell-refresh-handler.d.ts +18 -18
  98. package/src/converters/table-cell-refresh-handler.js +45 -45
  99. package/src/converters/table-headings-refresh-handler.d.ts +17 -17
  100. package/src/converters/table-headings-refresh-handler.js +49 -49
  101. package/src/converters/table-layout-post-fixer.d.ts +226 -226
  102. package/src/converters/table-layout-post-fixer.js +367 -367
  103. package/src/converters/tableproperties.d.ts +54 -54
  104. package/src/converters/tableproperties.js +159 -159
  105. package/src/converters/upcasttable.d.ts +49 -49
  106. package/src/converters/upcasttable.js +243 -243
  107. package/src/index.d.ts +60 -60
  108. package/src/index.js +30 -30
  109. package/src/plaintableoutput.d.ts +26 -26
  110. package/src/plaintableoutput.js +123 -123
  111. package/src/table.d.ts +40 -40
  112. package/src/table.js +44 -44
  113. package/src/tablecaption/tablecaptionediting.d.ts +63 -63
  114. package/src/tablecaption/tablecaptionediting.js +122 -122
  115. package/src/tablecaption/tablecaptionui.d.ts +21 -21
  116. package/src/tablecaption/tablecaptionui.js +57 -57
  117. package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -68
  118. package/src/tablecaption/toggletablecaptioncommand.js +104 -104
  119. package/src/tablecaption/utils.d.ts +42 -42
  120. package/src/tablecaption/utils.js +67 -67
  121. package/src/tablecaption.d.ts +24 -24
  122. package/src/tablecaption.js +28 -28
  123. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -32
  124. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +30 -30
  125. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -37
  126. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +44 -44
  127. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -37
  128. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +44 -44
  129. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -51
  130. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +64 -64
  131. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -46
  132. package/src/tablecellproperties/commands/tablecellheightcommand.js +51 -51
  133. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -32
  134. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +30 -30
  135. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -51
  136. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +64 -64
  137. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -62
  138. package/src/tablecellproperties/commands/tablecellpropertycommand.js +92 -92
  139. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -40
  140. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +38 -38
  141. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +43 -43
  142. package/src/tablecellproperties/tablecellpropertiesediting.js +241 -241
  143. package/src/tablecellproperties/tablecellpropertiesui.d.ts +112 -112
  144. package/src/tablecellproperties/tablecellpropertiesui.js +330 -330
  145. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +228 -228
  146. package/src/tablecellproperties/ui/tablecellpropertiesview.js +548 -539
  147. package/src/tablecellproperties.d.ts +30 -30
  148. package/src/tablecellproperties.js +34 -34
  149. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -46
  150. package/src/tablecellwidth/commands/tablecellwidthcommand.js +51 -51
  151. package/src/tablecellwidth/tablecellwidthediting.d.ts +29 -29
  152. package/src/tablecellwidth/tablecellwidthediting.js +45 -45
  153. package/src/tableclipboard.d.ts +65 -65
  154. package/src/tableclipboard.js +450 -450
  155. package/src/tablecolumnresize/constants.d.ts +20 -20
  156. package/src/tablecolumnresize/constants.js +20 -20
  157. package/src/tablecolumnresize/converters.d.ts +18 -18
  158. package/src/tablecolumnresize/converters.js +46 -45
  159. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +139 -139
  160. package/src/tablecolumnresize/tablecolumnresizeediting.js +583 -571
  161. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -38
  162. package/src/tablecolumnresize/tablewidthscommand.js +61 -61
  163. package/src/tablecolumnresize/utils.d.ts +148 -141
  164. package/src/tablecolumnresize/utils.js +358 -330
  165. package/src/tablecolumnresize.d.ts +26 -26
  166. package/src/tablecolumnresize.js +30 -30
  167. package/src/tableconfig.d.ts +343 -343
  168. package/src/tableconfig.js +5 -5
  169. package/src/tableediting.d.ts +98 -98
  170. package/src/tableediting.js +191 -191
  171. package/src/tablekeyboard.d.ts +68 -68
  172. package/src/tablekeyboard.js +279 -279
  173. package/src/tablemouse/mouseeventsobserver.d.ts +62 -62
  174. package/src/tablemouse/mouseeventsobserver.js +35 -35
  175. package/src/tablemouse.d.ts +48 -48
  176. package/src/tablemouse.js +172 -172
  177. package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -32
  178. package/src/tableproperties/commands/tablealignmentcommand.js +30 -30
  179. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -32
  180. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +30 -30
  181. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -37
  182. package/src/tableproperties/commands/tablebordercolorcommand.js +44 -44
  183. package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -37
  184. package/src/tableproperties/commands/tableborderstylecommand.js +44 -44
  185. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -51
  186. package/src/tableproperties/commands/tableborderwidthcommand.js +64 -64
  187. package/src/tableproperties/commands/tableheightcommand.d.ts +46 -46
  188. package/src/tableproperties/commands/tableheightcommand.js +54 -54
  189. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -61
  190. package/src/tableproperties/commands/tablepropertycommand.js +80 -80
  191. package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -46
  192. package/src/tableproperties/commands/tablewidthcommand.js +54 -54
  193. package/src/tableproperties/tablepropertiesediting.d.ts +40 -40
  194. package/src/tableproperties/tablepropertiesediting.js +206 -206
  195. package/src/tableproperties/tablepropertiesui.d.ts +114 -114
  196. package/src/tableproperties/tablepropertiesui.js +321 -321
  197. package/src/tableproperties/ui/tablepropertiesview.d.ts +207 -207
  198. package/src/tableproperties/ui/tablepropertiesview.js +466 -457
  199. package/src/tableproperties.d.ts +30 -30
  200. package/src/tableproperties.js +34 -34
  201. package/src/tableselection.d.ts +107 -107
  202. package/src/tableselection.js +297 -297
  203. package/src/tabletoolbar.d.ts +32 -32
  204. package/src/tabletoolbar.js +57 -57
  205. package/src/tableui.d.ts +53 -53
  206. package/src/tableui.js +309 -309
  207. package/src/tableutils.d.ts +448 -448
  208. package/src/tableutils.js +1055 -1041
  209. package/src/tablewalker.d.ts +362 -323
  210. package/src/tablewalker.js +393 -333
  211. package/src/ui/colorinputview.d.ts +140 -140
  212. package/src/ui/colorinputview.js +271 -265
  213. package/src/ui/formrowview.d.ts +61 -61
  214. package/src/ui/formrowview.js +57 -57
  215. package/src/ui/inserttableview.d.ts +77 -77
  216. package/src/ui/inserttableview.js +169 -169
  217. package/src/utils/common.d.ts +42 -42
  218. package/src/utils/common.js +57 -57
  219. package/src/utils/structure.d.ts +245 -245
  220. package/src/utils/structure.js +426 -426
  221. package/src/utils/table-properties.d.ts +67 -67
  222. package/src/utils/table-properties.js +86 -86
  223. package/src/utils/ui/contextualballoon.d.ts +34 -34
  224. package/src/utils/ui/contextualballoon.js +106 -106
  225. package/src/utils/ui/table-properties.d.ts +195 -195
  226. package/src/utils/ui/table-properties.js +362 -362
  227. package/src/utils/ui/widget.d.ts +16 -16
  228. package/src/utils/ui/widget.js +38 -38
  229. package/theme/tablecolumnresize.css +8 -6
@@ -1,68 +1,68 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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 table/tablecaption/toggletablecaptioncommand
7
- */
8
- import { Command } from 'ckeditor5/src/core';
9
- /**
10
- * The toggle table caption command.
11
- *
12
- * This command is registered by {@link module:table/tablecaption/tablecaptionediting~TableCaptionEditing} as the
13
- * `'toggleTableCaption'` editor command.
14
- *
15
- * Executing this command:
16
- *
17
- * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),
18
- * * removes the table caption if the selection is anchored in one.
19
- *
20
- * ```ts
21
- * // Toggle the presence of the caption.
22
- * editor.execute( 'toggleTableCaption' );
23
- * ```
24
- *
25
- * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using
26
- * the `focusCaptionOnShow` option:
27
- *
28
- * ```ts
29
- * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
30
- * ```
31
- */
32
- export default class ToggleTableCaptionCommand extends Command {
33
- value: boolean;
34
- /**
35
- * @inheritDoc
36
- */
37
- refresh(): void;
38
- /**
39
- * Executes the command.
40
- *
41
- * ```ts
42
- * editor.execute( 'toggleTableCaption' );
43
- * ```
44
- *
45
- * @param options Options for the executed command.
46
- * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.
47
- * @fires execute
48
- */
49
- execute({ focusCaptionOnShow }?: {
50
- focusCaptionOnShow?: boolean;
51
- }): void;
52
- /**
53
- * Shows the table caption. Also:
54
- *
55
- * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
56
- * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
57
- *
58
- * @param focusCaptionOnShow Default focus behavior when showing the caption.
59
- */
60
- private _showTableCaption;
61
- /**
62
- * Hides the caption of a selected table (or an table caption the selection is anchored to).
63
- *
64
- * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
65
- * a reversible action.
66
- */
67
- private _hideTableCaption;
68
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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 table/tablecaption/toggletablecaptioncommand
7
+ */
8
+ import { Command } from 'ckeditor5/src/core';
9
+ /**
10
+ * The toggle table caption command.
11
+ *
12
+ * This command is registered by {@link module:table/tablecaption/tablecaptionediting~TableCaptionEditing} as the
13
+ * `'toggleTableCaption'` editor command.
14
+ *
15
+ * Executing this command:
16
+ *
17
+ * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),
18
+ * * removes the table caption if the selection is anchored in one.
19
+ *
20
+ * ```ts
21
+ * // Toggle the presence of the caption.
22
+ * editor.execute( 'toggleTableCaption' );
23
+ * ```
24
+ *
25
+ * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using
26
+ * the `focusCaptionOnShow` option:
27
+ *
28
+ * ```ts
29
+ * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
30
+ * ```
31
+ */
32
+ export default class ToggleTableCaptionCommand extends Command {
33
+ value: boolean;
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ refresh(): void;
38
+ /**
39
+ * Executes the command.
40
+ *
41
+ * ```ts
42
+ * editor.execute( 'toggleTableCaption' );
43
+ * ```
44
+ *
45
+ * @param options Options for the executed command.
46
+ * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.
47
+ * @fires execute
48
+ */
49
+ execute({ focusCaptionOnShow }?: {
50
+ focusCaptionOnShow?: boolean;
51
+ }): void;
52
+ /**
53
+ * Shows the table caption. Also:
54
+ *
55
+ * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
56
+ * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
57
+ *
58
+ * @param focusCaptionOnShow Default focus behavior when showing the caption.
59
+ */
60
+ private _showTableCaption;
61
+ /**
62
+ * Hides the caption of a selected table (or an table caption the selection is anchored to).
63
+ *
64
+ * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
65
+ * a reversible action.
66
+ */
67
+ private _hideTableCaption;
68
+ }
@@ -1,104 +1,104 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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 table/tablecaption/toggletablecaptioncommand
7
- */
8
- import { Command } from 'ckeditor5/src/core';
9
- import { getCaptionFromTableModelElement, getSelectionAffectedTable } from './utils';
10
- /**
11
- * The toggle table caption command.
12
- *
13
- * This command is registered by {@link module:table/tablecaption/tablecaptionediting~TableCaptionEditing} as the
14
- * `'toggleTableCaption'` editor command.
15
- *
16
- * Executing this command:
17
- *
18
- * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),
19
- * * removes the table caption if the selection is anchored in one.
20
- *
21
- * ```ts
22
- * // Toggle the presence of the caption.
23
- * editor.execute( 'toggleTableCaption' );
24
- * ```
25
- *
26
- * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using
27
- * the `focusCaptionOnShow` option:
28
- *
29
- * ```ts
30
- * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
31
- * ```
32
- */
33
- export default class ToggleTableCaptionCommand extends Command {
34
- /**
35
- * @inheritDoc
36
- */
37
- refresh() {
38
- const editor = this.editor;
39
- const tableElement = getSelectionAffectedTable(editor.model.document.selection);
40
- this.isEnabled = !!tableElement;
41
- if (!this.isEnabled) {
42
- this.value = false;
43
- }
44
- else {
45
- this.value = !!getCaptionFromTableModelElement(tableElement);
46
- }
47
- }
48
- /**
49
- * Executes the command.
50
- *
51
- * ```ts
52
- * editor.execute( 'toggleTableCaption' );
53
- * ```
54
- *
55
- * @param options Options for the executed command.
56
- * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.
57
- * @fires execute
58
- */
59
- execute({ focusCaptionOnShow = false } = {}) {
60
- this.editor.model.change(writer => {
61
- if (this.value) {
62
- this._hideTableCaption(writer);
63
- }
64
- else {
65
- this._showTableCaption(writer, focusCaptionOnShow);
66
- }
67
- });
68
- }
69
- /**
70
- * Shows the table caption. Also:
71
- *
72
- * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
73
- * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
74
- *
75
- * @param focusCaptionOnShow Default focus behavior when showing the caption.
76
- */
77
- _showTableCaption(writer, focusCaptionOnShow) {
78
- const model = this.editor.model;
79
- const tableElement = getSelectionAffectedTable(model.document.selection);
80
- const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
81
- const savedCaptionElement = tableCaptionEditing._getSavedCaption(tableElement);
82
- // Try restoring the caption from the TableCaptionEditing plugin storage.
83
- const newCaptionElement = savedCaptionElement || writer.createElement('caption');
84
- model.insertContent(newCaptionElement, tableElement, 'end');
85
- if (focusCaptionOnShow) {
86
- writer.setSelection(newCaptionElement, 'in');
87
- }
88
- }
89
- /**
90
- * Hides the caption of a selected table (or an table caption the selection is anchored to).
91
- *
92
- * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
93
- * a reversible action.
94
- */
95
- _hideTableCaption(writer) {
96
- const model = this.editor.model;
97
- const tableElement = getSelectionAffectedTable(model.document.selection);
98
- const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
99
- const captionElement = getCaptionFromTableModelElement(tableElement);
100
- // Store the caption content so it can be restored quickly if the user changes their mind.
101
- tableCaptionEditing._saveCaption(tableElement, captionElement);
102
- model.deleteContent(writer.createSelection(captionElement, 'on'));
103
- }
104
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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 table/tablecaption/toggletablecaptioncommand
7
+ */
8
+ import { Command } from 'ckeditor5/src/core';
9
+ import { getCaptionFromTableModelElement, getSelectionAffectedTable } from './utils';
10
+ /**
11
+ * The toggle table caption command.
12
+ *
13
+ * This command is registered by {@link module:table/tablecaption/tablecaptionediting~TableCaptionEditing} as the
14
+ * `'toggleTableCaption'` editor command.
15
+ *
16
+ * Executing this command:
17
+ *
18
+ * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),
19
+ * * removes the table caption if the selection is anchored in one.
20
+ *
21
+ * ```ts
22
+ * // Toggle the presence of the caption.
23
+ * editor.execute( 'toggleTableCaption' );
24
+ * ```
25
+ *
26
+ * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using
27
+ * the `focusCaptionOnShow` option:
28
+ *
29
+ * ```ts
30
+ * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );
31
+ * ```
32
+ */
33
+ export default class ToggleTableCaptionCommand extends Command {
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ refresh() {
38
+ const editor = this.editor;
39
+ const tableElement = getSelectionAffectedTable(editor.model.document.selection);
40
+ this.isEnabled = !!tableElement;
41
+ if (!this.isEnabled) {
42
+ this.value = false;
43
+ }
44
+ else {
45
+ this.value = !!getCaptionFromTableModelElement(tableElement);
46
+ }
47
+ }
48
+ /**
49
+ * Executes the command.
50
+ *
51
+ * ```ts
52
+ * editor.execute( 'toggleTableCaption' );
53
+ * ```
54
+ *
55
+ * @param options Options for the executed command.
56
+ * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.
57
+ * @fires execute
58
+ */
59
+ execute({ focusCaptionOnShow = false } = {}) {
60
+ this.editor.model.change(writer => {
61
+ if (this.value) {
62
+ this._hideTableCaption(writer);
63
+ }
64
+ else {
65
+ this._showTableCaption(writer, focusCaptionOnShow);
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * Shows the table caption. Also:
71
+ *
72
+ * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,
73
+ * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.
74
+ *
75
+ * @param focusCaptionOnShow Default focus behavior when showing the caption.
76
+ */
77
+ _showTableCaption(writer, focusCaptionOnShow) {
78
+ const model = this.editor.model;
79
+ const tableElement = getSelectionAffectedTable(model.document.selection);
80
+ const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
81
+ const savedCaptionElement = tableCaptionEditing._getSavedCaption(tableElement);
82
+ // Try restoring the caption from the TableCaptionEditing plugin storage.
83
+ const newCaptionElement = savedCaptionElement || writer.createElement('caption');
84
+ model.insertContent(newCaptionElement, tableElement, 'end');
85
+ if (focusCaptionOnShow) {
86
+ writer.setSelection(newCaptionElement, 'in');
87
+ }
88
+ }
89
+ /**
90
+ * Hides the caption of a selected table (or an table caption the selection is anchored to).
91
+ *
92
+ * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this
93
+ * a reversible action.
94
+ */
95
+ _hideTableCaption(writer) {
96
+ const model = this.editor.model;
97
+ const tableElement = getSelectionAffectedTable(model.document.selection);
98
+ const tableCaptionEditing = this.editor.plugins.get('TableCaptionEditing');
99
+ const captionElement = getCaptionFromTableModelElement(tableElement);
100
+ // Store the caption content so it can be restored quickly if the user changes their mind.
101
+ tableCaptionEditing._saveCaption(tableElement, captionElement);
102
+ model.deleteContent(writer.createSelection(captionElement, 'on'));
103
+ }
104
+ }
@@ -1,42 +1,42 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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 table/tablecaption/utils
7
- */
8
- import type { DocumentFragment, DocumentSelection, Element, ViewElement } from 'ckeditor5/src/engine';
9
- /**
10
- * Checks if the provided model element is a `table`.
11
- *
12
- * @param modelElement Element to check if it is a table.
13
- */
14
- export declare function isTable(modelElement: Element | DocumentFragment | null): boolean;
15
- /**
16
- * Returns the caption model element from a given table element. Returns `null` if no caption is found.
17
- *
18
- * @param tableModelElement Table element in which we will try to find a caption element.
19
- */
20
- export declare function getCaptionFromTableModelElement(tableModelElement: Element): Element | null;
21
- /**
22
- * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
23
- *
24
- * @param selection The selection checked for caption presence.
25
- */
26
- export declare function getCaptionFromModelSelection(selection: DocumentSelection): Element | null;
27
- /**
28
- * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
29
- *
30
- * There are two possible forms of the valid caption:
31
- * - A `<figcaption>` element inside a `<figure class="table">` element.
32
- * - A `<caption>` inside a <table>.
33
- *
34
- * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
35
- */
36
- export declare function matchTableCaptionViewElement(element: ViewElement): {
37
- name: true;
38
- } | null;
39
- /**
40
- * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
41
- */
42
- export declare function getSelectionAffectedTable(selection: DocumentSelection): Element;
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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 table/tablecaption/utils
7
+ */
8
+ import type { DocumentFragment, DocumentSelection, Element, ViewElement } from 'ckeditor5/src/engine';
9
+ /**
10
+ * Checks if the provided model element is a `table`.
11
+ *
12
+ * @param modelElement Element to check if it is a table.
13
+ */
14
+ export declare function isTable(modelElement: Element | DocumentFragment | null): boolean;
15
+ /**
16
+ * Returns the caption model element from a given table element. Returns `null` if no caption is found.
17
+ *
18
+ * @param tableModelElement Table element in which we will try to find a caption element.
19
+ */
20
+ export declare function getCaptionFromTableModelElement(tableModelElement: Element): Element | null;
21
+ /**
22
+ * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
23
+ *
24
+ * @param selection The selection checked for caption presence.
25
+ */
26
+ export declare function getCaptionFromModelSelection(selection: DocumentSelection): Element | null;
27
+ /**
28
+ * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
29
+ *
30
+ * There are two possible forms of the valid caption:
31
+ * - A `<figcaption>` element inside a `<figure class="table">` element.
32
+ * - A `<caption>` inside a <table>.
33
+ *
34
+ * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
35
+ */
36
+ export declare function matchTableCaptionViewElement(element: ViewElement): {
37
+ name: true;
38
+ } | null;
39
+ /**
40
+ * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
41
+ */
42
+ export declare function getSelectionAffectedTable(selection: DocumentSelection): Element;
@@ -1,67 +1,67 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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
- * Checks if the provided model element is a `table`.
7
- *
8
- * @param modelElement Element to check if it is a table.
9
- */
10
- export function isTable(modelElement) {
11
- return !!modelElement && modelElement.is('element', 'table');
12
- }
13
- /**
14
- * Returns the caption model element from a given table element. Returns `null` if no caption is found.
15
- *
16
- * @param tableModelElement Table element in which we will try to find a caption element.
17
- */
18
- export function getCaptionFromTableModelElement(tableModelElement) {
19
- for (const node of tableModelElement.getChildren()) {
20
- if (node.is('element', 'caption')) {
21
- return node;
22
- }
23
- }
24
- return null;
25
- }
26
- /**
27
- * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
28
- *
29
- * @param selection The selection checked for caption presence.
30
- */
31
- export function getCaptionFromModelSelection(selection) {
32
- const tableElement = getSelectionAffectedTable(selection);
33
- if (!tableElement) {
34
- return null;
35
- }
36
- return getCaptionFromTableModelElement(tableElement);
37
- }
38
- /**
39
- * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
40
- *
41
- * There are two possible forms of the valid caption:
42
- * - A `<figcaption>` element inside a `<figure class="table">` element.
43
- * - A `<caption>` inside a <table>.
44
- *
45
- * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
46
- */
47
- export function matchTableCaptionViewElement(element) {
48
- const parent = element.parent;
49
- if (element.name == 'figcaption' && parent && parent.is('element', 'figure') && parent.hasClass('table')) {
50
- return { name: true };
51
- }
52
- if (element.name == 'caption' && parent && parent.is('element', 'table')) {
53
- return { name: true };
54
- }
55
- return null;
56
- }
57
- /**
58
- * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
59
- */
60
- export function getSelectionAffectedTable(selection) {
61
- const selectedElement = selection.getSelectedElement();
62
- // Is the command triggered from the `tableToolbar`?
63
- if (selectedElement && selectedElement.is('element', 'table')) {
64
- return selectedElement;
65
- }
66
- return selection.getFirstPosition().findAncestor('table');
67
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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
+ * Checks if the provided model element is a `table`.
7
+ *
8
+ * @param modelElement Element to check if it is a table.
9
+ */
10
+ export function isTable(modelElement) {
11
+ return !!modelElement && modelElement.is('element', 'table');
12
+ }
13
+ /**
14
+ * Returns the caption model element from a given table element. Returns `null` if no caption is found.
15
+ *
16
+ * @param tableModelElement Table element in which we will try to find a caption element.
17
+ */
18
+ export function getCaptionFromTableModelElement(tableModelElement) {
19
+ for (const node of tableModelElement.getChildren()) {
20
+ if (node.is('element', 'caption')) {
21
+ return node;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ /**
27
+ * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.
28
+ *
29
+ * @param selection The selection checked for caption presence.
30
+ */
31
+ export function getCaptionFromModelSelection(selection) {
32
+ const tableElement = getSelectionAffectedTable(selection);
33
+ if (!tableElement) {
34
+ return null;
35
+ }
36
+ return getCaptionFromTableModelElement(tableElement);
37
+ }
38
+ /**
39
+ * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.
40
+ *
41
+ * There are two possible forms of the valid caption:
42
+ * - A `<figcaption>` element inside a `<figure class="table">` element.
43
+ * - A `<caption>` inside a <table>.
44
+ *
45
+ * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.
46
+ */
47
+ export function matchTableCaptionViewElement(element) {
48
+ const parent = element.parent;
49
+ if (element.name == 'figcaption' && parent && parent.is('element', 'figure') && parent.hasClass('table')) {
50
+ return { name: true };
51
+ }
52
+ if (element.name == 'caption' && parent && parent.is('element', 'table')) {
53
+ return { name: true };
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.
59
+ */
60
+ export function getSelectionAffectedTable(selection) {
61
+ const selectedElement = selection.getSelectedElement();
62
+ // Is the command triggered from the `tableToolbar`?
63
+ if (selectedElement && selectedElement.is('element', 'table')) {
64
+ return selectedElement;
65
+ }
66
+ return selection.getFirstPosition().findAncestor('table');
67
+ }
@@ -1,24 +1,24 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, 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 table/tablecaption
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import TableCaptionEditing from './tablecaption/tablecaptionediting';
10
- import TableCaptionUI from './tablecaption/tablecaptionui';
11
- import '../theme/tablecaption.css';
12
- /**
13
- * The table caption plugin.
14
- */
15
- export default class TableCaption extends Plugin {
16
- /**
17
- * @inheritDoc
18
- */
19
- static get pluginName(): "TableCaption";
20
- /**
21
- * @inheritDoc
22
- */
23
- static get requires(): readonly [typeof TableCaptionEditing, typeof TableCaptionUI];
24
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, 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 table/tablecaption
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import TableCaptionEditing from './tablecaption/tablecaptionediting';
10
+ import TableCaptionUI from './tablecaption/tablecaptionui';
11
+ import '../theme/tablecaption.css';
12
+ /**
13
+ * The table caption plugin.
14
+ */
15
+ export default class TableCaption extends Plugin {
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ static get pluginName(): "TableCaption";
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires(): readonly [typeof TableCaptionEditing, typeof TableCaptionUI];
24
+ }