@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,206 +1,206 @@
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/tableproperties/tablepropertiesediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import { addBackgroundRules, addBorderRules } from 'ckeditor5/src/engine';
10
- import TableEditing from '../tableediting';
11
- import { downcastAttributeToStyle, downcastTableAttribute, upcastBorderStyles, upcastStyleToAttribute } from '../converters/tableproperties';
12
- import TableBackgroundColorCommand from './commands/tablebackgroundcolorcommand';
13
- import TableBorderColorCommand from './commands/tablebordercolorcommand';
14
- import TableBorderStyleCommand from './commands/tableborderstylecommand';
15
- import TableBorderWidthCommand from './commands/tableborderwidthcommand';
16
- import TableWidthCommand from './commands/tablewidthcommand';
17
- import TableHeightCommand from './commands/tableheightcommand';
18
- import TableAlignmentCommand from './commands/tablealignmentcommand';
19
- import { getNormalizedDefaultProperties } from '../utils/table-properties';
20
- const ALIGN_VALUES_REG_EXP = /^(left|center|right)$/;
21
- const FLOAT_VALUES_REG_EXP = /^(left|none|right)$/;
22
- /**
23
- * The table properties editing feature.
24
- *
25
- * Introduces table's model attributes and their conversion:
26
- *
27
- * - border: `tableBorderStyle`, `tableBorderColor` and `tableBorderWidth`
28
- * - background color: `tableBackgroundColor`
29
- * - horizontal alignment: `tableAlignment`
30
- * - width & height: `tableWidth` & `tableHeight`
31
- *
32
- * It also registers commands used to manipulate the above attributes:
33
- *
34
- * - border: `'tableBorderStyle'`, `'tableBorderColor'` and `'tableBorderWidth'` commands
35
- * - background color: `'tableBackgroundColor'`
36
- * - horizontal alignment: `'tableAlignment'`
37
- * - width & height: `'tableWidth'` & `'tableHeight'`
38
- */
39
- export default class TablePropertiesEditing extends Plugin {
40
- /**
41
- * @inheritDoc
42
- */
43
- static get pluginName() {
44
- return 'TablePropertiesEditing';
45
- }
46
- /**
47
- * @inheritDoc
48
- */
49
- static get requires() {
50
- return [TableEditing];
51
- }
52
- /**
53
- * @inheritDoc
54
- */
55
- init() {
56
- const editor = this.editor;
57
- const schema = editor.model.schema;
58
- const conversion = editor.conversion;
59
- editor.config.define('table.tableProperties.defaultProperties', {});
60
- const defaultTableProperties = getNormalizedDefaultProperties(editor.config.get('table.tableProperties.defaultProperties'), {
61
- includeAlignmentProperty: true
62
- });
63
- editor.data.addStyleProcessorRules(addBorderRules);
64
- enableBorderProperties(schema, conversion, {
65
- color: defaultTableProperties.borderColor,
66
- style: defaultTableProperties.borderStyle,
67
- width: defaultTableProperties.borderWidth
68
- });
69
- editor.commands.add('tableBorderColor', new TableBorderColorCommand(editor, defaultTableProperties.borderColor));
70
- editor.commands.add('tableBorderStyle', new TableBorderStyleCommand(editor, defaultTableProperties.borderStyle));
71
- editor.commands.add('tableBorderWidth', new TableBorderWidthCommand(editor, defaultTableProperties.borderWidth));
72
- enableAlignmentProperty(schema, conversion, defaultTableProperties.alignment);
73
- editor.commands.add('tableAlignment', new TableAlignmentCommand(editor, defaultTableProperties.alignment));
74
- enableTableToFigureProperty(schema, conversion, {
75
- modelAttribute: 'tableWidth',
76
- styleName: 'width',
77
- defaultValue: defaultTableProperties.width
78
- });
79
- editor.commands.add('tableWidth', new TableWidthCommand(editor, defaultTableProperties.width));
80
- enableTableToFigureProperty(schema, conversion, {
81
- modelAttribute: 'tableHeight',
82
- styleName: 'height',
83
- defaultValue: defaultTableProperties.height
84
- });
85
- editor.commands.add('tableHeight', new TableHeightCommand(editor, defaultTableProperties.height));
86
- editor.data.addStyleProcessorRules(addBackgroundRules);
87
- enableProperty(schema, conversion, {
88
- modelAttribute: 'tableBackgroundColor',
89
- styleName: 'background-color',
90
- defaultValue: defaultTableProperties.backgroundColor
91
- });
92
- editor.commands.add('tableBackgroundColor', new TableBackgroundColorCommand(editor, defaultTableProperties.backgroundColor));
93
- }
94
- }
95
- /**
96
- * Enables `tableBorderStyle'`, `tableBorderColor'` and `tableBorderWidth'` attributes for table.
97
- *
98
- * @param defaultBorder The default border values.
99
- * @param defaultBorder.color The default `tableBorderColor` value.
100
- * @param defaultBorder.style The default `tableBorderStyle` value.
101
- * @param defaultBorder.width The default `tableBorderWidth` value.
102
- */
103
- function enableBorderProperties(schema, conversion, defaultBorder) {
104
- const modelAttributes = {
105
- width: 'tableBorderWidth',
106
- color: 'tableBorderColor',
107
- style: 'tableBorderStyle'
108
- };
109
- schema.extend('table', {
110
- allowAttributes: Object.values(modelAttributes)
111
- });
112
- upcastBorderStyles(conversion, 'table', modelAttributes, defaultBorder);
113
- downcastTableAttribute(conversion, { modelAttribute: modelAttributes.color, styleName: 'border-color' });
114
- downcastTableAttribute(conversion, { modelAttribute: modelAttributes.style, styleName: 'border-style' });
115
- downcastTableAttribute(conversion, { modelAttribute: modelAttributes.width, styleName: 'border-width' });
116
- }
117
- /**
118
- * Enables the `'alignment'` attribute for table.
119
- *
120
- * @param defaultValue The default alignment value.
121
- */
122
- function enableAlignmentProperty(schema, conversion, defaultValue) {
123
- schema.extend('table', {
124
- allowAttributes: ['tableAlignment']
125
- });
126
- conversion.for('downcast')
127
- .attributeToAttribute({
128
- model: {
129
- name: 'table',
130
- key: 'tableAlignment'
131
- },
132
- view: alignment => ({
133
- key: 'style',
134
- value: {
135
- // Model: `alignment:center` => CSS: `float:none`.
136
- float: alignment === 'center' ? 'none' : alignment
137
- }
138
- }),
139
- converterPriority: 'high'
140
- });
141
- conversion.for('upcast')
142
- // Support for the `float:*;` CSS definition for the table alignment.
143
- .attributeToAttribute({
144
- view: {
145
- name: /^(table|figure)$/,
146
- styles: {
147
- float: FLOAT_VALUES_REG_EXP
148
- }
149
- },
150
- model: {
151
- key: 'tableAlignment',
152
- value: (viewElement) => {
153
- let align = viewElement.getStyle('float');
154
- // CSS: `float:none` => Model: `alignment:center`.
155
- if (align === 'none') {
156
- align = 'center';
157
- }
158
- return align === defaultValue ? null : align;
159
- }
160
- }
161
- })
162
- // Support for the `align` attribute as the backward compatibility while pasting from other sources.
163
- .attributeToAttribute({
164
- view: {
165
- attributes: {
166
- align: ALIGN_VALUES_REG_EXP
167
- }
168
- },
169
- model: {
170
- name: 'table',
171
- key: 'tableAlignment',
172
- value: (viewElement) => {
173
- const align = viewElement.getAttribute('align');
174
- return align === defaultValue ? null : align;
175
- }
176
- }
177
- });
178
- }
179
- /**
180
- * Enables conversion for an attribute for simple view-model mappings.
181
- *
182
- * @param options.defaultValue The default value for the specified `modelAttribute`.
183
- */
184
- function enableProperty(schema, conversion, options) {
185
- const { modelAttribute } = options;
186
- schema.extend('table', {
187
- allowAttributes: [modelAttribute]
188
- });
189
- upcastStyleToAttribute(conversion, { viewElement: 'table', ...options });
190
- downcastTableAttribute(conversion, options);
191
- }
192
- /**
193
- * Enables conversion for an attribute for simple view (figure) to model (table) mappings.
194
- */
195
- function enableTableToFigureProperty(schema, conversion, options) {
196
- const { modelAttribute } = options;
197
- schema.extend('table', {
198
- allowAttributes: [modelAttribute]
199
- });
200
- upcastStyleToAttribute(conversion, {
201
- viewElement: /^(table|figure)$/,
202
- shouldUpcast: (element) => !(element.name == 'table' && element.parent.name == 'figure'),
203
- ...options
204
- });
205
- downcastAttributeToStyle(conversion, { modelElement: 'table', ...options });
206
- }
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/tableproperties/tablepropertiesediting
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import { addBackgroundRules, addBorderRules } from 'ckeditor5/src/engine';
10
+ import TableEditing from '../tableediting';
11
+ import { downcastAttributeToStyle, downcastTableAttribute, upcastBorderStyles, upcastStyleToAttribute } from '../converters/tableproperties';
12
+ import TableBackgroundColorCommand from './commands/tablebackgroundcolorcommand';
13
+ import TableBorderColorCommand from './commands/tablebordercolorcommand';
14
+ import TableBorderStyleCommand from './commands/tableborderstylecommand';
15
+ import TableBorderWidthCommand from './commands/tableborderwidthcommand';
16
+ import TableWidthCommand from './commands/tablewidthcommand';
17
+ import TableHeightCommand from './commands/tableheightcommand';
18
+ import TableAlignmentCommand from './commands/tablealignmentcommand';
19
+ import { getNormalizedDefaultProperties } from '../utils/table-properties';
20
+ const ALIGN_VALUES_REG_EXP = /^(left|center|right)$/;
21
+ const FLOAT_VALUES_REG_EXP = /^(left|none|right)$/;
22
+ /**
23
+ * The table properties editing feature.
24
+ *
25
+ * Introduces table's model attributes and their conversion:
26
+ *
27
+ * - border: `tableBorderStyle`, `tableBorderColor` and `tableBorderWidth`
28
+ * - background color: `tableBackgroundColor`
29
+ * - horizontal alignment: `tableAlignment`
30
+ * - width & height: `tableWidth` & `tableHeight`
31
+ *
32
+ * It also registers commands used to manipulate the above attributes:
33
+ *
34
+ * - border: `'tableBorderStyle'`, `'tableBorderColor'` and `'tableBorderWidth'` commands
35
+ * - background color: `'tableBackgroundColor'`
36
+ * - horizontal alignment: `'tableAlignment'`
37
+ * - width & height: `'tableWidth'` & `'tableHeight'`
38
+ */
39
+ export default class TablePropertiesEditing extends Plugin {
40
+ /**
41
+ * @inheritDoc
42
+ */
43
+ static get pluginName() {
44
+ return 'TablePropertiesEditing';
45
+ }
46
+ /**
47
+ * @inheritDoc
48
+ */
49
+ static get requires() {
50
+ return [TableEditing];
51
+ }
52
+ /**
53
+ * @inheritDoc
54
+ */
55
+ init() {
56
+ const editor = this.editor;
57
+ const schema = editor.model.schema;
58
+ const conversion = editor.conversion;
59
+ editor.config.define('table.tableProperties.defaultProperties', {});
60
+ const defaultTableProperties = getNormalizedDefaultProperties(editor.config.get('table.tableProperties.defaultProperties'), {
61
+ includeAlignmentProperty: true
62
+ });
63
+ editor.data.addStyleProcessorRules(addBorderRules);
64
+ enableBorderProperties(schema, conversion, {
65
+ color: defaultTableProperties.borderColor,
66
+ style: defaultTableProperties.borderStyle,
67
+ width: defaultTableProperties.borderWidth
68
+ });
69
+ editor.commands.add('tableBorderColor', new TableBorderColorCommand(editor, defaultTableProperties.borderColor));
70
+ editor.commands.add('tableBorderStyle', new TableBorderStyleCommand(editor, defaultTableProperties.borderStyle));
71
+ editor.commands.add('tableBorderWidth', new TableBorderWidthCommand(editor, defaultTableProperties.borderWidth));
72
+ enableAlignmentProperty(schema, conversion, defaultTableProperties.alignment);
73
+ editor.commands.add('tableAlignment', new TableAlignmentCommand(editor, defaultTableProperties.alignment));
74
+ enableTableToFigureProperty(schema, conversion, {
75
+ modelAttribute: 'tableWidth',
76
+ styleName: 'width',
77
+ defaultValue: defaultTableProperties.width
78
+ });
79
+ editor.commands.add('tableWidth', new TableWidthCommand(editor, defaultTableProperties.width));
80
+ enableTableToFigureProperty(schema, conversion, {
81
+ modelAttribute: 'tableHeight',
82
+ styleName: 'height',
83
+ defaultValue: defaultTableProperties.height
84
+ });
85
+ editor.commands.add('tableHeight', new TableHeightCommand(editor, defaultTableProperties.height));
86
+ editor.data.addStyleProcessorRules(addBackgroundRules);
87
+ enableProperty(schema, conversion, {
88
+ modelAttribute: 'tableBackgroundColor',
89
+ styleName: 'background-color',
90
+ defaultValue: defaultTableProperties.backgroundColor
91
+ });
92
+ editor.commands.add('tableBackgroundColor', new TableBackgroundColorCommand(editor, defaultTableProperties.backgroundColor));
93
+ }
94
+ }
95
+ /**
96
+ * Enables `tableBorderStyle'`, `tableBorderColor'` and `tableBorderWidth'` attributes for table.
97
+ *
98
+ * @param defaultBorder The default border values.
99
+ * @param defaultBorder.color The default `tableBorderColor` value.
100
+ * @param defaultBorder.style The default `tableBorderStyle` value.
101
+ * @param defaultBorder.width The default `tableBorderWidth` value.
102
+ */
103
+ function enableBorderProperties(schema, conversion, defaultBorder) {
104
+ const modelAttributes = {
105
+ width: 'tableBorderWidth',
106
+ color: 'tableBorderColor',
107
+ style: 'tableBorderStyle'
108
+ };
109
+ schema.extend('table', {
110
+ allowAttributes: Object.values(modelAttributes)
111
+ });
112
+ upcastBorderStyles(conversion, 'table', modelAttributes, defaultBorder);
113
+ downcastTableAttribute(conversion, { modelAttribute: modelAttributes.color, styleName: 'border-color' });
114
+ downcastTableAttribute(conversion, { modelAttribute: modelAttributes.style, styleName: 'border-style' });
115
+ downcastTableAttribute(conversion, { modelAttribute: modelAttributes.width, styleName: 'border-width' });
116
+ }
117
+ /**
118
+ * Enables the `'alignment'` attribute for table.
119
+ *
120
+ * @param defaultValue The default alignment value.
121
+ */
122
+ function enableAlignmentProperty(schema, conversion, defaultValue) {
123
+ schema.extend('table', {
124
+ allowAttributes: ['tableAlignment']
125
+ });
126
+ conversion.for('downcast')
127
+ .attributeToAttribute({
128
+ model: {
129
+ name: 'table',
130
+ key: 'tableAlignment'
131
+ },
132
+ view: alignment => ({
133
+ key: 'style',
134
+ value: {
135
+ // Model: `alignment:center` => CSS: `float:none`.
136
+ float: alignment === 'center' ? 'none' : alignment
137
+ }
138
+ }),
139
+ converterPriority: 'high'
140
+ });
141
+ conversion.for('upcast')
142
+ // Support for the `float:*;` CSS definition for the table alignment.
143
+ .attributeToAttribute({
144
+ view: {
145
+ name: /^(table|figure)$/,
146
+ styles: {
147
+ float: FLOAT_VALUES_REG_EXP
148
+ }
149
+ },
150
+ model: {
151
+ key: 'tableAlignment',
152
+ value: (viewElement) => {
153
+ let align = viewElement.getStyle('float');
154
+ // CSS: `float:none` => Model: `alignment:center`.
155
+ if (align === 'none') {
156
+ align = 'center';
157
+ }
158
+ return align === defaultValue ? null : align;
159
+ }
160
+ }
161
+ })
162
+ // Support for the `align` attribute as the backward compatibility while pasting from other sources.
163
+ .attributeToAttribute({
164
+ view: {
165
+ attributes: {
166
+ align: ALIGN_VALUES_REG_EXP
167
+ }
168
+ },
169
+ model: {
170
+ name: 'table',
171
+ key: 'tableAlignment',
172
+ value: (viewElement) => {
173
+ const align = viewElement.getAttribute('align');
174
+ return align === defaultValue ? null : align;
175
+ }
176
+ }
177
+ });
178
+ }
179
+ /**
180
+ * Enables conversion for an attribute for simple view-model mappings.
181
+ *
182
+ * @param options.defaultValue The default value for the specified `modelAttribute`.
183
+ */
184
+ function enableProperty(schema, conversion, options) {
185
+ const { modelAttribute } = options;
186
+ schema.extend('table', {
187
+ allowAttributes: [modelAttribute]
188
+ });
189
+ upcastStyleToAttribute(conversion, { viewElement: 'table', ...options });
190
+ downcastTableAttribute(conversion, options);
191
+ }
192
+ /**
193
+ * Enables conversion for an attribute for simple view (figure) to model (table) mappings.
194
+ */
195
+ function enableTableToFigureProperty(schema, conversion, options) {
196
+ const { modelAttribute } = options;
197
+ schema.extend('table', {
198
+ allowAttributes: [modelAttribute]
199
+ });
200
+ upcastStyleToAttribute(conversion, {
201
+ viewElement: /^(table|figure)$/,
202
+ shouldUpcast: (element) => !(element.name == 'table' && element.parent.name == 'figure'),
203
+ ...options
204
+ });
205
+ downcastAttributeToStyle(conversion, { modelElement: 'table', ...options });
206
+ }
@@ -1,114 +1,114 @@
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/tableproperties/tablepropertiesui
7
- */
8
- import { type Editor, Plugin } from 'ckeditor5/src/core';
9
- import { ContextualBalloon } from 'ckeditor5/src/ui';
10
- import TablePropertiesView from './ui/tablepropertiesview';
11
- /**
12
- * The table properties UI plugin. It introduces the `'tableProperties'` button
13
- * that opens a form allowing to specify visual styling of an entire table.
14
- *
15
- * It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.
16
- */
17
- export default class TablePropertiesUI extends Plugin {
18
- /**
19
- * The default table properties.
20
- */
21
- private _defaultTableProperties;
22
- /**
23
- * The contextual balloon plugin instance.
24
- */
25
- private _balloon;
26
- /**
27
- * The properties form view displayed inside the balloon.
28
- */
29
- view: TablePropertiesView | null;
30
- /**
31
- * The batch used to undo all changes made by the form (which are live, as the user types)
32
- * when "Cancel" was pressed. Each time the view is shown, a new batch is created.
33
- */
34
- private _undoStepBatch?;
35
- /**
36
- * Flag used to indicate whether view is ready to execute update commands
37
- * (it finished loading initial data).
38
- */
39
- private _isReady?;
40
- /**
41
- * @inheritDoc
42
- */
43
- static get requires(): readonly [typeof ContextualBalloon];
44
- /**
45
- * @inheritDoc
46
- */
47
- static get pluginName(): "TablePropertiesUI";
48
- /**
49
- * @inheritDoc
50
- */
51
- constructor(editor: Editor);
52
- /**
53
- * @inheritDoc
54
- */
55
- init(): void;
56
- /**
57
- * @inheritDoc
58
- */
59
- destroy(): void;
60
- /**
61
- * Creates the {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView} instance.
62
- *
63
- * @returns The table properties form view instance.
64
- */
65
- private _createPropertiesView;
66
- /**
67
- * In this method the "editor data -> UI" binding is happening.
68
- *
69
- * When executed, this method obtains selected table property values from various table commands
70
- * and passes them to the {@link #view}.
71
- *
72
- * This way, the UI stays up–to–date with the editor data.
73
- */
74
- private _fillViewFormFromCommandValues;
75
- /**
76
- * Shows the {@link #view} in the {@link #_balloon}.
77
- *
78
- * **Note**: Each time a view is shown, the new {@link #_undoStepBatch} is created that contains
79
- * all changes made to the document when the view is visible, allowing a single undo step
80
- * for all of them.
81
- */
82
- protected _showView(): void;
83
- /**
84
- * Removes the {@link #view} from the {@link #_balloon}.
85
- */
86
- protected _hideView(): void;
87
- /**
88
- * Repositions the {@link #_balloon} or hides the {@link #view} if a table is no longer selected.
89
- */
90
- protected _updateView(): void;
91
- /**
92
- * Returns `true` when the {@link #view} is the visible in the {@link #_balloon}.
93
- */
94
- private get _isViewVisible();
95
- /**
96
- * Returns `true` when the {@link #view} is in the {@link #_balloon}.
97
- */
98
- private get _isViewInBalloon();
99
- /**
100
- * Creates a callback that when executed upon {@link #view view's} property change
101
- * executes a related editor command with the new property value.
102
- *
103
- * If new value will be set to the default value, the command will not be executed.
104
- *
105
- * @param commandName The command that will be executed.
106
- */
107
- private _getPropertyChangeCallback;
108
- /**
109
- * Creates a callback that when executed upon {@link #view view's} property change:
110
- * * executes a related editor command with the new property value if the value is valid,
111
- * * or sets the error text next to the invalid field, if the value did not pass the validation.
112
- */
113
- private _getValidatedPropertyChangeCallback;
114
- }
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/tableproperties/tablepropertiesui
7
+ */
8
+ import { type Editor, Plugin } from 'ckeditor5/src/core';
9
+ import { ContextualBalloon } from 'ckeditor5/src/ui';
10
+ import TablePropertiesView from './ui/tablepropertiesview';
11
+ /**
12
+ * The table properties UI plugin. It introduces the `'tableProperties'` button
13
+ * that opens a form allowing to specify visual styling of an entire table.
14
+ *
15
+ * It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.
16
+ */
17
+ export default class TablePropertiesUI extends Plugin {
18
+ /**
19
+ * The default table properties.
20
+ */
21
+ private _defaultTableProperties;
22
+ /**
23
+ * The contextual balloon plugin instance.
24
+ */
25
+ private _balloon;
26
+ /**
27
+ * The properties form view displayed inside the balloon.
28
+ */
29
+ view: TablePropertiesView | null;
30
+ /**
31
+ * The batch used to undo all changes made by the form (which are live, as the user types)
32
+ * when "Cancel" was pressed. Each time the view is shown, a new batch is created.
33
+ */
34
+ private _undoStepBatch?;
35
+ /**
36
+ * Flag used to indicate whether view is ready to execute update commands
37
+ * (it finished loading initial data).
38
+ */
39
+ private _isReady?;
40
+ /**
41
+ * @inheritDoc
42
+ */
43
+ static get requires(): readonly [typeof ContextualBalloon];
44
+ /**
45
+ * @inheritDoc
46
+ */
47
+ static get pluginName(): "TablePropertiesUI";
48
+ /**
49
+ * @inheritDoc
50
+ */
51
+ constructor(editor: Editor);
52
+ /**
53
+ * @inheritDoc
54
+ */
55
+ init(): void;
56
+ /**
57
+ * @inheritDoc
58
+ */
59
+ destroy(): void;
60
+ /**
61
+ * Creates the {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView} instance.
62
+ *
63
+ * @returns The table properties form view instance.
64
+ */
65
+ private _createPropertiesView;
66
+ /**
67
+ * In this method the "editor data -> UI" binding is happening.
68
+ *
69
+ * When executed, this method obtains selected table property values from various table commands
70
+ * and passes them to the {@link #view}.
71
+ *
72
+ * This way, the UI stays up–to–date with the editor data.
73
+ */
74
+ private _fillViewFormFromCommandValues;
75
+ /**
76
+ * Shows the {@link #view} in the {@link #_balloon}.
77
+ *
78
+ * **Note**: Each time a view is shown, the new {@link #_undoStepBatch} is created that contains
79
+ * all changes made to the document when the view is visible, allowing a single undo step
80
+ * for all of them.
81
+ */
82
+ protected _showView(): void;
83
+ /**
84
+ * Removes the {@link #view} from the {@link #_balloon}.
85
+ */
86
+ protected _hideView(): void;
87
+ /**
88
+ * Repositions the {@link #_balloon} or hides the {@link #view} if a table is no longer selected.
89
+ */
90
+ protected _updateView(): void;
91
+ /**
92
+ * Returns `true` when the {@link #view} is the visible in the {@link #_balloon}.
93
+ */
94
+ private get _isViewVisible();
95
+ /**
96
+ * Returns `true` when the {@link #view} is in the {@link #_balloon}.
97
+ */
98
+ private get _isViewInBalloon();
99
+ /**
100
+ * Creates a callback that when executed upon {@link #view view's} property change
101
+ * executes a related editor command with the new property value.
102
+ *
103
+ * If new value will be set to the default value, the command will not be executed.
104
+ *
105
+ * @param commandName The command that will be executed.
106
+ */
107
+ private _getPropertyChangeCallback;
108
+ /**
109
+ * Creates a callback that when executed upon {@link #view view's} property change:
110
+ * * executes a related editor command with the new property value if the value is valid,
111
+ * * or sets the error text next to the invalid field, if the value did not pass the validation.
112
+ */
113
+ private _getValidatedPropertyChangeCallback;
114
+ }