@ckeditor/ckeditor5-table 40.0.0 → 40.2.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 (171) hide show
  1. package/CHANGELOG.md +15 -15
  2. package/LICENSE.md +3 -3
  3. package/build/table.js +1 -1
  4. package/build/translations/fi.js +1 -1
  5. package/lang/translations/fi.po +3 -3
  6. package/package.json +2 -2
  7. package/src/augmentation.d.ts +76 -76
  8. package/src/augmentation.js +5 -5
  9. package/src/commands/insertcolumncommand.d.ts +55 -55
  10. package/src/commands/insertcolumncommand.js +67 -67
  11. package/src/commands/insertrowcommand.d.ts +54 -54
  12. package/src/commands/insertrowcommand.js +66 -66
  13. package/src/commands/inserttablecommand.d.ts +44 -44
  14. package/src/commands/inserttablecommand.js +69 -69
  15. package/src/commands/mergecellcommand.d.ts +68 -68
  16. package/src/commands/mergecellcommand.js +198 -198
  17. package/src/commands/mergecellscommand.d.ts +28 -28
  18. package/src/commands/mergecellscommand.js +94 -94
  19. package/src/commands/removecolumncommand.d.ts +29 -29
  20. package/src/commands/removecolumncommand.js +109 -109
  21. package/src/commands/removerowcommand.d.ts +29 -29
  22. package/src/commands/removerowcommand.js +82 -82
  23. package/src/commands/selectcolumncommand.d.ts +33 -33
  24. package/src/commands/selectcolumncommand.js +60 -60
  25. package/src/commands/selectrowcommand.d.ts +33 -33
  26. package/src/commands/selectrowcommand.js +56 -56
  27. package/src/commands/setheadercolumncommand.d.ts +50 -50
  28. package/src/commands/setheadercolumncommand.js +71 -71
  29. package/src/commands/setheaderrowcommand.d.ts +53 -53
  30. package/src/commands/setheaderrowcommand.js +79 -79
  31. package/src/commands/splitcellcommand.d.ts +43 -43
  32. package/src/commands/splitcellcommand.js +54 -54
  33. package/src/converters/downcast.d.ts +63 -63
  34. package/src/converters/downcast.js +146 -146
  35. package/src/converters/table-caption-post-fixer.d.ts +20 -20
  36. package/src/converters/table-caption-post-fixer.js +53 -53
  37. package/src/converters/table-cell-paragraph-post-fixer.d.ts +32 -32
  38. package/src/converters/table-cell-paragraph-post-fixer.js +107 -107
  39. package/src/converters/table-cell-refresh-handler.d.ts +18 -18
  40. package/src/converters/table-cell-refresh-handler.js +45 -45
  41. package/src/converters/table-headings-refresh-handler.d.ts +17 -17
  42. package/src/converters/table-headings-refresh-handler.js +49 -49
  43. package/src/converters/table-layout-post-fixer.d.ts +226 -226
  44. package/src/converters/table-layout-post-fixer.js +367 -367
  45. package/src/converters/tableproperties.d.ts +54 -54
  46. package/src/converters/tableproperties.js +159 -159
  47. package/src/converters/upcasttable.d.ts +49 -49
  48. package/src/converters/upcasttable.js +243 -243
  49. package/src/index.d.ts +60 -60
  50. package/src/index.js +30 -30
  51. package/src/plaintableoutput.d.ts +26 -26
  52. package/src/plaintableoutput.js +123 -123
  53. package/src/table.d.ts +40 -40
  54. package/src/table.js +44 -44
  55. package/src/tablecaption/tablecaptionediting.d.ts +63 -63
  56. package/src/tablecaption/tablecaptionediting.js +122 -122
  57. package/src/tablecaption/tablecaptionui.d.ts +21 -21
  58. package/src/tablecaption/tablecaptionui.js +57 -57
  59. package/src/tablecaption/toggletablecaptioncommand.d.ts +68 -68
  60. package/src/tablecaption/toggletablecaptioncommand.js +105 -104
  61. package/src/tablecaption/utils.d.ts +38 -42
  62. package/src/tablecaption/utils.js +57 -67
  63. package/src/tablecaption.d.ts +24 -24
  64. package/src/tablecaption.js +28 -28
  65. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +32 -32
  66. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +30 -30
  67. package/src/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +37 -37
  68. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +44 -44
  69. package/src/tablecellproperties/commands/tablecellborderstylecommand.d.ts +37 -37
  70. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +44 -44
  71. package/src/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +51 -51
  72. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +64 -64
  73. package/src/tablecellproperties/commands/tablecellheightcommand.d.ts +46 -46
  74. package/src/tablecellproperties/commands/tablecellheightcommand.js +51 -51
  75. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +32 -32
  76. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +30 -30
  77. package/src/tablecellproperties/commands/tablecellpaddingcommand.d.ts +51 -51
  78. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +64 -64
  79. package/src/tablecellproperties/commands/tablecellpropertycommand.d.ts +62 -62
  80. package/src/tablecellproperties/commands/tablecellpropertycommand.js +92 -92
  81. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +40 -40
  82. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +38 -38
  83. package/src/tablecellproperties/tablecellpropertiesediting.d.ts +43 -43
  84. package/src/tablecellproperties/tablecellpropertiesediting.js +241 -241
  85. package/src/tablecellproperties/tablecellpropertiesui.d.ts +112 -112
  86. package/src/tablecellproperties/tablecellpropertiesui.js +330 -330
  87. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +228 -228
  88. package/src/tablecellproperties/ui/tablecellpropertiesview.js +548 -548
  89. package/src/tablecellproperties.d.ts +30 -30
  90. package/src/tablecellproperties.js +34 -34
  91. package/src/tablecellwidth/commands/tablecellwidthcommand.d.ts +46 -46
  92. package/src/tablecellwidth/commands/tablecellwidthcommand.js +51 -51
  93. package/src/tablecellwidth/tablecellwidthediting.d.ts +29 -29
  94. package/src/tablecellwidth/tablecellwidthediting.js +45 -45
  95. package/src/tableclipboard.d.ts +65 -65
  96. package/src/tableclipboard.js +450 -450
  97. package/src/tablecolumnresize/constants.d.ts +20 -20
  98. package/src/tablecolumnresize/constants.js +20 -20
  99. package/src/tablecolumnresize/converters.d.ts +18 -18
  100. package/src/tablecolumnresize/converters.js +46 -46
  101. package/src/tablecolumnresize/tablecolumnresizeediting.d.ts +139 -139
  102. package/src/tablecolumnresize/tablecolumnresizeediting.js +583 -583
  103. package/src/tablecolumnresize/tablewidthscommand.d.ts +38 -38
  104. package/src/tablecolumnresize/tablewidthscommand.js +61 -61
  105. package/src/tablecolumnresize/utils.d.ts +148 -148
  106. package/src/tablecolumnresize/utils.js +358 -358
  107. package/src/tablecolumnresize.d.ts +26 -26
  108. package/src/tablecolumnresize.js +30 -30
  109. package/src/tableconfig.d.ts +343 -343
  110. package/src/tableconfig.js +5 -5
  111. package/src/tableediting.d.ts +98 -98
  112. package/src/tableediting.js +191 -191
  113. package/src/tablekeyboard.d.ts +68 -68
  114. package/src/tablekeyboard.js +279 -279
  115. package/src/tablemouse/mouseeventsobserver.d.ts +62 -62
  116. package/src/tablemouse/mouseeventsobserver.js +35 -35
  117. package/src/tablemouse.d.ts +48 -48
  118. package/src/tablemouse.js +172 -172
  119. package/src/tableproperties/commands/tablealignmentcommand.d.ts +32 -32
  120. package/src/tableproperties/commands/tablealignmentcommand.js +30 -30
  121. package/src/tableproperties/commands/tablebackgroundcolorcommand.d.ts +32 -32
  122. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +30 -30
  123. package/src/tableproperties/commands/tablebordercolorcommand.d.ts +37 -37
  124. package/src/tableproperties/commands/tablebordercolorcommand.js +44 -44
  125. package/src/tableproperties/commands/tableborderstylecommand.d.ts +37 -37
  126. package/src/tableproperties/commands/tableborderstylecommand.js +44 -44
  127. package/src/tableproperties/commands/tableborderwidthcommand.d.ts +51 -51
  128. package/src/tableproperties/commands/tableborderwidthcommand.js +64 -64
  129. package/src/tableproperties/commands/tableheightcommand.d.ts +46 -46
  130. package/src/tableproperties/commands/tableheightcommand.js +54 -54
  131. package/src/tableproperties/commands/tablepropertycommand.d.ts +61 -61
  132. package/src/tableproperties/commands/tablepropertycommand.js +81 -80
  133. package/src/tableproperties/commands/tablewidthcommand.d.ts +46 -46
  134. package/src/tableproperties/commands/tablewidthcommand.js +54 -54
  135. package/src/tableproperties/tablepropertiesediting.d.ts +40 -40
  136. package/src/tableproperties/tablepropertiesediting.js +206 -206
  137. package/src/tableproperties/tablepropertiesui.d.ts +114 -114
  138. package/src/tableproperties/tablepropertiesui.js +321 -321
  139. package/src/tableproperties/ui/tablepropertiesview.d.ts +207 -207
  140. package/src/tableproperties/ui/tablepropertiesview.js +466 -466
  141. package/src/tableproperties.d.ts +30 -30
  142. package/src/tableproperties.js +34 -34
  143. package/src/tableselection.d.ts +107 -107
  144. package/src/tableselection.js +297 -297
  145. package/src/tabletoolbar.d.ts +32 -32
  146. package/src/tabletoolbar.js +57 -57
  147. package/src/tableui.d.ts +53 -53
  148. package/src/tableui.js +309 -309
  149. package/src/tableutils.d.ts +448 -448
  150. package/src/tableutils.js +1055 -1055
  151. package/src/tablewalker.d.ts +362 -362
  152. package/src/tablewalker.js +393 -393
  153. package/src/ui/colorinputview.d.ts +140 -140
  154. package/src/ui/colorinputview.js +271 -271
  155. package/src/ui/formrowview.d.ts +61 -61
  156. package/src/ui/formrowview.js +57 -57
  157. package/src/ui/inserttableview.d.ts +77 -77
  158. package/src/ui/inserttableview.js +169 -169
  159. package/src/utils/common.d.ts +46 -42
  160. package/src/utils/common.js +68 -57
  161. package/src/utils/structure.d.ts +245 -245
  162. package/src/utils/structure.js +426 -426
  163. package/src/utils/table-properties.d.ts +67 -67
  164. package/src/utils/table-properties.js +86 -86
  165. package/src/utils/ui/contextualballoon.d.ts +34 -34
  166. package/src/utils/ui/contextualballoon.js +110 -106
  167. package/src/utils/ui/table-properties.d.ts +195 -195
  168. package/src/utils/ui/table-properties.js +362 -362
  169. package/src/utils/ui/widget.d.ts +20 -16
  170. package/src/utils/ui/widget.js +48 -38
  171. package/build/table.js.map +0 -1
@@ -1,43 +1,43 @@
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/tablecellproperties/tablecellpropertiesediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import TableEditing from './../tableediting';
10
- import TableCellWidthEditing from '../tablecellwidth/tablecellwidthediting';
11
- /**
12
- * The table cell properties editing feature.
13
- *
14
- * Introduces table cell model attributes and their conversion:
15
- *
16
- * - border: `tableCellBorderStyle`, `tableCellBorderColor` and `tableCellBorderWidth`
17
- * - background color: `tableCellBackgroundColor`
18
- * - cell padding: `tableCellPadding`
19
- * - horizontal and vertical alignment: `tableCellHorizontalAlignment`, `tableCellVerticalAlignment`
20
- * - cell width and height: `tableCellWidth`, `tableCellHeight`
21
- *
22
- * It also registers commands used to manipulate the above attributes:
23
- *
24
- * - border: the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` commands
25
- * - background color: the `'tableCellBackgroundColor'` command
26
- * - cell padding: the `'tableCellPadding'` command
27
- * - horizontal and vertical alignment: the `'tableCellHorizontalAlignment'` and `'tableCellVerticalAlignment'` commands
28
- * - width and height: the `'tableCellWidth'` and `'tableCellHeight'` commands
29
- */
30
- export default class TableCellPropertiesEditing extends Plugin {
31
- /**
32
- * @inheritDoc
33
- */
34
- static get pluginName(): "TableCellPropertiesEditing";
35
- /**
36
- * @inheritDoc
37
- */
38
- static get requires(): readonly [typeof TableEditing, typeof TableCellWidthEditing];
39
- /**
40
- * @inheritDoc
41
- */
42
- init(): void;
43
- }
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/tablecellproperties/tablecellpropertiesediting
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import TableEditing from './../tableediting';
10
+ import TableCellWidthEditing from '../tablecellwidth/tablecellwidthediting';
11
+ /**
12
+ * The table cell properties editing feature.
13
+ *
14
+ * Introduces table cell model attributes and their conversion:
15
+ *
16
+ * - border: `tableCellBorderStyle`, `tableCellBorderColor` and `tableCellBorderWidth`
17
+ * - background color: `tableCellBackgroundColor`
18
+ * - cell padding: `tableCellPadding`
19
+ * - horizontal and vertical alignment: `tableCellHorizontalAlignment`, `tableCellVerticalAlignment`
20
+ * - cell width and height: `tableCellWidth`, `tableCellHeight`
21
+ *
22
+ * It also registers commands used to manipulate the above attributes:
23
+ *
24
+ * - border: the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` commands
25
+ * - background color: the `'tableCellBackgroundColor'` command
26
+ * - cell padding: the `'tableCellPadding'` command
27
+ * - horizontal and vertical alignment: the `'tableCellHorizontalAlignment'` and `'tableCellVerticalAlignment'` commands
28
+ * - width and height: the `'tableCellWidth'` and `'tableCellHeight'` commands
29
+ */
30
+ export default class TableCellPropertiesEditing extends Plugin {
31
+ /**
32
+ * @inheritDoc
33
+ */
34
+ static get pluginName(): "TableCellPropertiesEditing";
35
+ /**
36
+ * @inheritDoc
37
+ */
38
+ static get requires(): readonly [typeof TableEditing, typeof TableCellWidthEditing];
39
+ /**
40
+ * @inheritDoc
41
+ */
42
+ init(): void;
43
+ }
@@ -1,241 +1,241 @@
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/tablecellproperties/tablecellpropertiesediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import { addBorderRules, addPaddingRules, addBackgroundRules } from 'ckeditor5/src/engine';
10
- import { downcastAttributeToStyle, upcastBorderStyles } from './../converters/tableproperties';
11
- import TableEditing from './../tableediting';
12
- import TableCellWidthEditing from '../tablecellwidth/tablecellwidthediting';
13
- import TableCellPaddingCommand from './commands/tablecellpaddingcommand';
14
- import TableCellHeightCommand from './commands/tablecellheightcommand';
15
- import TableCellBackgroundColorCommand from './commands/tablecellbackgroundcolorcommand';
16
- import TableCellVerticalAlignmentCommand from './commands/tablecellverticalalignmentcommand';
17
- import TableCellHorizontalAlignmentCommand from './commands/tablecellhorizontalalignmentcommand';
18
- import TableCellBorderStyleCommand from './commands/tablecellborderstylecommand';
19
- import TableCellBorderColorCommand from './commands/tablecellbordercolorcommand';
20
- import TableCellBorderWidthCommand from './commands/tablecellborderwidthcommand';
21
- import { getNormalizedDefaultProperties } from '../utils/table-properties';
22
- import { enableProperty } from '../utils/common';
23
- const VALIGN_VALUES_REG_EXP = /^(top|middle|bottom)$/;
24
- const ALIGN_VALUES_REG_EXP = /^(left|center|right|justify)$/;
25
- /**
26
- * The table cell properties editing feature.
27
- *
28
- * Introduces table cell model attributes and their conversion:
29
- *
30
- * - border: `tableCellBorderStyle`, `tableCellBorderColor` and `tableCellBorderWidth`
31
- * - background color: `tableCellBackgroundColor`
32
- * - cell padding: `tableCellPadding`
33
- * - horizontal and vertical alignment: `tableCellHorizontalAlignment`, `tableCellVerticalAlignment`
34
- * - cell width and height: `tableCellWidth`, `tableCellHeight`
35
- *
36
- * It also registers commands used to manipulate the above attributes:
37
- *
38
- * - border: the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` commands
39
- * - background color: the `'tableCellBackgroundColor'` command
40
- * - cell padding: the `'tableCellPadding'` command
41
- * - horizontal and vertical alignment: the `'tableCellHorizontalAlignment'` and `'tableCellVerticalAlignment'` commands
42
- * - width and height: the `'tableCellWidth'` and `'tableCellHeight'` commands
43
- */
44
- export default class TableCellPropertiesEditing extends Plugin {
45
- /**
46
- * @inheritDoc
47
- */
48
- static get pluginName() {
49
- return 'TableCellPropertiesEditing';
50
- }
51
- /**
52
- * @inheritDoc
53
- */
54
- static get requires() {
55
- return [TableEditing, TableCellWidthEditing];
56
- }
57
- /**
58
- * @inheritDoc
59
- */
60
- init() {
61
- const editor = this.editor;
62
- const schema = editor.model.schema;
63
- const conversion = editor.conversion;
64
- editor.config.define('table.tableCellProperties.defaultProperties', {});
65
- const defaultTableCellProperties = getNormalizedDefaultProperties(editor.config.get('table.tableCellProperties.defaultProperties'), {
66
- includeVerticalAlignmentProperty: true,
67
- includeHorizontalAlignmentProperty: true,
68
- includePaddingProperty: true,
69
- isRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'
70
- });
71
- editor.data.addStyleProcessorRules(addBorderRules);
72
- enableBorderProperties(schema, conversion, {
73
- color: defaultTableCellProperties.borderColor,
74
- style: defaultTableCellProperties.borderStyle,
75
- width: defaultTableCellProperties.borderWidth
76
- });
77
- editor.commands.add('tableCellBorderStyle', new TableCellBorderStyleCommand(editor, defaultTableCellProperties.borderStyle));
78
- editor.commands.add('tableCellBorderColor', new TableCellBorderColorCommand(editor, defaultTableCellProperties.borderColor));
79
- editor.commands.add('tableCellBorderWidth', new TableCellBorderWidthCommand(editor, defaultTableCellProperties.borderWidth));
80
- enableProperty(schema, conversion, {
81
- modelAttribute: 'tableCellHeight',
82
- styleName: 'height',
83
- defaultValue: defaultTableCellProperties.height
84
- });
85
- editor.commands.add('tableCellHeight', new TableCellHeightCommand(editor, defaultTableCellProperties.height));
86
- editor.data.addStyleProcessorRules(addPaddingRules);
87
- enableProperty(schema, conversion, {
88
- modelAttribute: 'tableCellPadding',
89
- styleName: 'padding',
90
- reduceBoxSides: true,
91
- defaultValue: defaultTableCellProperties.padding
92
- });
93
- editor.commands.add('tableCellPadding', new TableCellPaddingCommand(editor, defaultTableCellProperties.padding));
94
- editor.data.addStyleProcessorRules(addBackgroundRules);
95
- enableProperty(schema, conversion, {
96
- modelAttribute: 'tableCellBackgroundColor',
97
- styleName: 'background-color',
98
- defaultValue: defaultTableCellProperties.backgroundColor
99
- });
100
- editor.commands.add('tableCellBackgroundColor', new TableCellBackgroundColorCommand(editor, defaultTableCellProperties.backgroundColor));
101
- enableHorizontalAlignmentProperty(schema, conversion, defaultTableCellProperties.horizontalAlignment);
102
- editor.commands.add('tableCellHorizontalAlignment', new TableCellHorizontalAlignmentCommand(editor, defaultTableCellProperties.horizontalAlignment));
103
- enableVerticalAlignmentProperty(schema, conversion, defaultTableCellProperties.verticalAlignment);
104
- editor.commands.add('tableCellVerticalAlignment', new TableCellVerticalAlignmentCommand(editor, defaultTableCellProperties.verticalAlignment));
105
- }
106
- }
107
- /**
108
- * Enables the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` attributes for table cells.
109
- *
110
- * @param defaultBorder The default border values.
111
- * @param defaultBorder.color The default `tableCellBorderColor` value.
112
- * @param defaultBorder.style The default `tableCellBorderStyle` value.
113
- * @param defaultBorder.width The default `tableCellBorderWidth` value.
114
- */
115
- function enableBorderProperties(schema, conversion, defaultBorder) {
116
- const modelAttributes = {
117
- width: 'tableCellBorderWidth',
118
- color: 'tableCellBorderColor',
119
- style: 'tableCellBorderStyle'
120
- };
121
- schema.extend('tableCell', {
122
- allowAttributes: Object.values(modelAttributes)
123
- });
124
- upcastBorderStyles(conversion, 'td', modelAttributes, defaultBorder);
125
- upcastBorderStyles(conversion, 'th', modelAttributes, defaultBorder);
126
- downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.style, styleName: 'border-style' });
127
- downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.color, styleName: 'border-color' });
128
- downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.width, styleName: 'border-width' });
129
- }
130
- /**
131
- * Enables the `'tableCellHorizontalAlignment'` attribute for table cells.
132
- *
133
- * @param defaultValue The default horizontal alignment value.
134
- */
135
- function enableHorizontalAlignmentProperty(schema, conversion, defaultValue) {
136
- schema.extend('tableCell', {
137
- allowAttributes: ['tableCellHorizontalAlignment']
138
- });
139
- conversion.for('downcast')
140
- .attributeToAttribute({
141
- model: {
142
- name: 'tableCell',
143
- key: 'tableCellHorizontalAlignment'
144
- },
145
- view: alignment => ({
146
- key: 'style',
147
- value: {
148
- 'text-align': alignment
149
- }
150
- })
151
- });
152
- conversion.for('upcast')
153
- // Support for the `text-align:*;` CSS definition for the table cell alignment.
154
- .attributeToAttribute({
155
- view: {
156
- name: /^(td|th)$/,
157
- styles: {
158
- 'text-align': ALIGN_VALUES_REG_EXP
159
- }
160
- },
161
- model: {
162
- key: 'tableCellHorizontalAlignment',
163
- value: (viewElement) => {
164
- const align = viewElement.getStyle('text-align');
165
- return align === defaultValue ? null : align;
166
- }
167
- }
168
- })
169
- // Support for the `align` attribute as the backward compatibility while pasting from other sources.
170
- .attributeToAttribute({
171
- view: {
172
- name: /^(td|th)$/,
173
- attributes: {
174
- align: ALIGN_VALUES_REG_EXP
175
- }
176
- },
177
- model: {
178
- key: 'tableCellHorizontalAlignment',
179
- value: (viewElement) => {
180
- const align = viewElement.getAttribute('align');
181
- return align === defaultValue ? null : align;
182
- }
183
- }
184
- });
185
- }
186
- /**
187
- * Enables the `'verticalAlignment'` attribute for table cells.
188
- *
189
- * @param defaultValue The default vertical alignment value.
190
- */
191
- function enableVerticalAlignmentProperty(schema, conversion, defaultValue) {
192
- schema.extend('tableCell', {
193
- allowAttributes: ['tableCellVerticalAlignment']
194
- });
195
- conversion.for('downcast')
196
- .attributeToAttribute({
197
- model: {
198
- name: 'tableCell',
199
- key: 'tableCellVerticalAlignment'
200
- },
201
- view: alignment => ({
202
- key: 'style',
203
- value: {
204
- 'vertical-align': alignment
205
- }
206
- })
207
- });
208
- conversion.for('upcast')
209
- // Support for the `vertical-align:*;` CSS definition for the table cell alignment.
210
- .attributeToAttribute({
211
- view: {
212
- name: /^(td|th)$/,
213
- styles: {
214
- 'vertical-align': VALIGN_VALUES_REG_EXP
215
- }
216
- },
217
- model: {
218
- key: 'tableCellVerticalAlignment',
219
- value: (viewElement) => {
220
- const align = viewElement.getStyle('vertical-align');
221
- return align === defaultValue ? null : align;
222
- }
223
- }
224
- })
225
- // Support for the `align` attribute as the backward compatibility while pasting from other sources.
226
- .attributeToAttribute({
227
- view: {
228
- name: /^(td|th)$/,
229
- attributes: {
230
- valign: VALIGN_VALUES_REG_EXP
231
- }
232
- },
233
- model: {
234
- key: 'tableCellVerticalAlignment',
235
- value: (viewElement) => {
236
- const valign = viewElement.getAttribute('valign');
237
- return valign === defaultValue ? null : valign;
238
- }
239
- }
240
- });
241
- }
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/tablecellproperties/tablecellpropertiesediting
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import { addBorderRules, addPaddingRules, addBackgroundRules } from 'ckeditor5/src/engine';
10
+ import { downcastAttributeToStyle, upcastBorderStyles } from './../converters/tableproperties';
11
+ import TableEditing from './../tableediting';
12
+ import TableCellWidthEditing from '../tablecellwidth/tablecellwidthediting';
13
+ import TableCellPaddingCommand from './commands/tablecellpaddingcommand';
14
+ import TableCellHeightCommand from './commands/tablecellheightcommand';
15
+ import TableCellBackgroundColorCommand from './commands/tablecellbackgroundcolorcommand';
16
+ import TableCellVerticalAlignmentCommand from './commands/tablecellverticalalignmentcommand';
17
+ import TableCellHorizontalAlignmentCommand from './commands/tablecellhorizontalalignmentcommand';
18
+ import TableCellBorderStyleCommand from './commands/tablecellborderstylecommand';
19
+ import TableCellBorderColorCommand from './commands/tablecellbordercolorcommand';
20
+ import TableCellBorderWidthCommand from './commands/tablecellborderwidthcommand';
21
+ import { getNormalizedDefaultProperties } from '../utils/table-properties';
22
+ import { enableProperty } from '../utils/common';
23
+ const VALIGN_VALUES_REG_EXP = /^(top|middle|bottom)$/;
24
+ const ALIGN_VALUES_REG_EXP = /^(left|center|right|justify)$/;
25
+ /**
26
+ * The table cell properties editing feature.
27
+ *
28
+ * Introduces table cell model attributes and their conversion:
29
+ *
30
+ * - border: `tableCellBorderStyle`, `tableCellBorderColor` and `tableCellBorderWidth`
31
+ * - background color: `tableCellBackgroundColor`
32
+ * - cell padding: `tableCellPadding`
33
+ * - horizontal and vertical alignment: `tableCellHorizontalAlignment`, `tableCellVerticalAlignment`
34
+ * - cell width and height: `tableCellWidth`, `tableCellHeight`
35
+ *
36
+ * It also registers commands used to manipulate the above attributes:
37
+ *
38
+ * - border: the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` commands
39
+ * - background color: the `'tableCellBackgroundColor'` command
40
+ * - cell padding: the `'tableCellPadding'` command
41
+ * - horizontal and vertical alignment: the `'tableCellHorizontalAlignment'` and `'tableCellVerticalAlignment'` commands
42
+ * - width and height: the `'tableCellWidth'` and `'tableCellHeight'` commands
43
+ */
44
+ export default class TableCellPropertiesEditing extends Plugin {
45
+ /**
46
+ * @inheritDoc
47
+ */
48
+ static get pluginName() {
49
+ return 'TableCellPropertiesEditing';
50
+ }
51
+ /**
52
+ * @inheritDoc
53
+ */
54
+ static get requires() {
55
+ return [TableEditing, TableCellWidthEditing];
56
+ }
57
+ /**
58
+ * @inheritDoc
59
+ */
60
+ init() {
61
+ const editor = this.editor;
62
+ const schema = editor.model.schema;
63
+ const conversion = editor.conversion;
64
+ editor.config.define('table.tableCellProperties.defaultProperties', {});
65
+ const defaultTableCellProperties = getNormalizedDefaultProperties(editor.config.get('table.tableCellProperties.defaultProperties'), {
66
+ includeVerticalAlignmentProperty: true,
67
+ includeHorizontalAlignmentProperty: true,
68
+ includePaddingProperty: true,
69
+ isRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'
70
+ });
71
+ editor.data.addStyleProcessorRules(addBorderRules);
72
+ enableBorderProperties(schema, conversion, {
73
+ color: defaultTableCellProperties.borderColor,
74
+ style: defaultTableCellProperties.borderStyle,
75
+ width: defaultTableCellProperties.borderWidth
76
+ });
77
+ editor.commands.add('tableCellBorderStyle', new TableCellBorderStyleCommand(editor, defaultTableCellProperties.borderStyle));
78
+ editor.commands.add('tableCellBorderColor', new TableCellBorderColorCommand(editor, defaultTableCellProperties.borderColor));
79
+ editor.commands.add('tableCellBorderWidth', new TableCellBorderWidthCommand(editor, defaultTableCellProperties.borderWidth));
80
+ enableProperty(schema, conversion, {
81
+ modelAttribute: 'tableCellHeight',
82
+ styleName: 'height',
83
+ defaultValue: defaultTableCellProperties.height
84
+ });
85
+ editor.commands.add('tableCellHeight', new TableCellHeightCommand(editor, defaultTableCellProperties.height));
86
+ editor.data.addStyleProcessorRules(addPaddingRules);
87
+ enableProperty(schema, conversion, {
88
+ modelAttribute: 'tableCellPadding',
89
+ styleName: 'padding',
90
+ reduceBoxSides: true,
91
+ defaultValue: defaultTableCellProperties.padding
92
+ });
93
+ editor.commands.add('tableCellPadding', new TableCellPaddingCommand(editor, defaultTableCellProperties.padding));
94
+ editor.data.addStyleProcessorRules(addBackgroundRules);
95
+ enableProperty(schema, conversion, {
96
+ modelAttribute: 'tableCellBackgroundColor',
97
+ styleName: 'background-color',
98
+ defaultValue: defaultTableCellProperties.backgroundColor
99
+ });
100
+ editor.commands.add('tableCellBackgroundColor', new TableCellBackgroundColorCommand(editor, defaultTableCellProperties.backgroundColor));
101
+ enableHorizontalAlignmentProperty(schema, conversion, defaultTableCellProperties.horizontalAlignment);
102
+ editor.commands.add('tableCellHorizontalAlignment', new TableCellHorizontalAlignmentCommand(editor, defaultTableCellProperties.horizontalAlignment));
103
+ enableVerticalAlignmentProperty(schema, conversion, defaultTableCellProperties.verticalAlignment);
104
+ editor.commands.add('tableCellVerticalAlignment', new TableCellVerticalAlignmentCommand(editor, defaultTableCellProperties.verticalAlignment));
105
+ }
106
+ }
107
+ /**
108
+ * Enables the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` attributes for table cells.
109
+ *
110
+ * @param defaultBorder The default border values.
111
+ * @param defaultBorder.color The default `tableCellBorderColor` value.
112
+ * @param defaultBorder.style The default `tableCellBorderStyle` value.
113
+ * @param defaultBorder.width The default `tableCellBorderWidth` value.
114
+ */
115
+ function enableBorderProperties(schema, conversion, defaultBorder) {
116
+ const modelAttributes = {
117
+ width: 'tableCellBorderWidth',
118
+ color: 'tableCellBorderColor',
119
+ style: 'tableCellBorderStyle'
120
+ };
121
+ schema.extend('tableCell', {
122
+ allowAttributes: Object.values(modelAttributes)
123
+ });
124
+ upcastBorderStyles(conversion, 'td', modelAttributes, defaultBorder);
125
+ upcastBorderStyles(conversion, 'th', modelAttributes, defaultBorder);
126
+ downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.style, styleName: 'border-style' });
127
+ downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.color, styleName: 'border-color' });
128
+ downcastAttributeToStyle(conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.width, styleName: 'border-width' });
129
+ }
130
+ /**
131
+ * Enables the `'tableCellHorizontalAlignment'` attribute for table cells.
132
+ *
133
+ * @param defaultValue The default horizontal alignment value.
134
+ */
135
+ function enableHorizontalAlignmentProperty(schema, conversion, defaultValue) {
136
+ schema.extend('tableCell', {
137
+ allowAttributes: ['tableCellHorizontalAlignment']
138
+ });
139
+ conversion.for('downcast')
140
+ .attributeToAttribute({
141
+ model: {
142
+ name: 'tableCell',
143
+ key: 'tableCellHorizontalAlignment'
144
+ },
145
+ view: alignment => ({
146
+ key: 'style',
147
+ value: {
148
+ 'text-align': alignment
149
+ }
150
+ })
151
+ });
152
+ conversion.for('upcast')
153
+ // Support for the `text-align:*;` CSS definition for the table cell alignment.
154
+ .attributeToAttribute({
155
+ view: {
156
+ name: /^(td|th)$/,
157
+ styles: {
158
+ 'text-align': ALIGN_VALUES_REG_EXP
159
+ }
160
+ },
161
+ model: {
162
+ key: 'tableCellHorizontalAlignment',
163
+ value: (viewElement) => {
164
+ const align = viewElement.getStyle('text-align');
165
+ return align === defaultValue ? null : align;
166
+ }
167
+ }
168
+ })
169
+ // Support for the `align` attribute as the backward compatibility while pasting from other sources.
170
+ .attributeToAttribute({
171
+ view: {
172
+ name: /^(td|th)$/,
173
+ attributes: {
174
+ align: ALIGN_VALUES_REG_EXP
175
+ }
176
+ },
177
+ model: {
178
+ key: 'tableCellHorizontalAlignment',
179
+ value: (viewElement) => {
180
+ const align = viewElement.getAttribute('align');
181
+ return align === defaultValue ? null : align;
182
+ }
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * Enables the `'verticalAlignment'` attribute for table cells.
188
+ *
189
+ * @param defaultValue The default vertical alignment value.
190
+ */
191
+ function enableVerticalAlignmentProperty(schema, conversion, defaultValue) {
192
+ schema.extend('tableCell', {
193
+ allowAttributes: ['tableCellVerticalAlignment']
194
+ });
195
+ conversion.for('downcast')
196
+ .attributeToAttribute({
197
+ model: {
198
+ name: 'tableCell',
199
+ key: 'tableCellVerticalAlignment'
200
+ },
201
+ view: alignment => ({
202
+ key: 'style',
203
+ value: {
204
+ 'vertical-align': alignment
205
+ }
206
+ })
207
+ });
208
+ conversion.for('upcast')
209
+ // Support for the `vertical-align:*;` CSS definition for the table cell alignment.
210
+ .attributeToAttribute({
211
+ view: {
212
+ name: /^(td|th)$/,
213
+ styles: {
214
+ 'vertical-align': VALIGN_VALUES_REG_EXP
215
+ }
216
+ },
217
+ model: {
218
+ key: 'tableCellVerticalAlignment',
219
+ value: (viewElement) => {
220
+ const align = viewElement.getStyle('vertical-align');
221
+ return align === defaultValue ? null : align;
222
+ }
223
+ }
224
+ })
225
+ // Support for the `align` attribute as the backward compatibility while pasting from other sources.
226
+ .attributeToAttribute({
227
+ view: {
228
+ name: /^(td|th)$/,
229
+ attributes: {
230
+ valign: VALIGN_VALUES_REG_EXP
231
+ }
232
+ },
233
+ model: {
234
+ key: 'tableCellVerticalAlignment',
235
+ value: (viewElement) => {
236
+ const valign = viewElement.getAttribute('valign');
237
+ return valign === defaultValue ? null : valign;
238
+ }
239
+ }
240
+ });
241
+ }