@ckeditor/ckeditor5-table 0.0.0-nightly-20260118.0 → 0.0.0-nightly-next-20260118.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 (356) hide show
  1. package/ckeditor5-metadata.json +16 -7
  2. package/{src → dist}/augmentation.d.ts +0 -15
  3. package/{src → dist}/commands/insertcolumncommand.d.ts +1 -1
  4. package/{src → dist}/commands/insertrowcommand.d.ts +1 -1
  5. package/{src → dist}/commands/inserttablecommand.d.ts +1 -1
  6. package/{src → dist}/commands/inserttablelayoutcommand.d.ts +1 -1
  7. package/{src → dist}/commands/mergecellcommand.d.ts +3 -3
  8. package/{src → dist}/commands/mergecellscommand.d.ts +1 -1
  9. package/{src → dist}/commands/removecolumncommand.d.ts +1 -1
  10. package/{src → dist}/commands/removerowcommand.d.ts +1 -1
  11. package/{src → dist}/commands/selectcolumncommand.d.ts +1 -1
  12. package/{src → dist}/commands/selectrowcommand.d.ts +1 -1
  13. package/{src → dist}/commands/setheadercolumncommand.d.ts +1 -1
  14. package/{src → dist}/commands/setheaderrowcommand.d.ts +1 -1
  15. package/{src → dist}/commands/splitcellcommand.d.ts +1 -1
  16. package/{src → dist}/converters/downcast.d.ts +2 -2
  17. package/{src → dist}/converters/table-caption-post-fixer.d.ts +1 -1
  18. package/{src → dist}/converters/table-cell-paragraph-post-fixer.d.ts +1 -1
  19. package/{src → dist}/converters/table-cell-refresh-handler.d.ts +1 -1
  20. package/{src → dist}/converters/table-headings-refresh-handler.d.ts +1 -1
  21. package/{src → dist}/converters/table-layout-post-fixer.d.ts +1 -1
  22. package/{src → dist}/converters/tableproperties.d.ts +2 -2
  23. package/{src → dist}/converters/upcasttable.d.ts +1 -1
  24. package/dist/index-content.css +30 -30
  25. package/dist/index-editor.css +104 -170
  26. package/dist/index.css +147 -237
  27. package/dist/index.css.map +1 -1
  28. package/{src → dist}/index.d.ts +2 -5
  29. package/dist/index.js +423 -2408
  30. package/dist/index.js.map +1 -1
  31. package/{src → dist}/plaintableoutput.d.ts +1 -1
  32. package/{src → dist}/table.d.ts +2 -2
  33. package/{src → dist}/tablecaption/tablecaptionediting.d.ts +2 -2
  34. package/{src → dist}/tablecaption/tablecaptionui.d.ts +1 -1
  35. package/{src → dist}/tablecaption/toggletablecaptioncommand.d.ts +1 -1
  36. package/{src → dist}/tablecaption/utils.d.ts +1 -1
  37. package/{src → dist}/tablecaption.d.ts +1 -1
  38. package/{src → dist}/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +1 -1
  39. package/{src → dist}/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +2 -2
  40. package/{src → dist}/tablecellproperties/commands/tablecellborderstylecommand.d.ts +2 -2
  41. package/{src → dist}/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +2 -2
  42. package/{src → dist}/tablecellproperties/commands/tablecellheightcommand.d.ts +1 -1
  43. package/{src → dist}/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +1 -1
  44. package/{src → dist}/tablecellproperties/commands/tablecellpaddingcommand.d.ts +2 -2
  45. package/{src → dist}/tablecellproperties/commands/tablecellpropertycommand.d.ts +2 -2
  46. package/{src → dist}/tablecellproperties/commands/tablecelltypecommand.d.ts +2 -6
  47. package/{src → dist}/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +1 -1
  48. package/{src → dist}/tablecellproperties/tablecellpropertiesediting.d.ts +1 -1
  49. package/{src → dist}/tablecellproperties/tablecellpropertiesui.d.ts +2 -2
  50. package/dist/tablecellproperties/tablecellpropertiesutils.d.ts +18 -0
  51. package/{src/tablecellproperties/ui/tablecellpropertiesviewexperimental.d.ts → dist/tablecellproperties/ui/tablecellpropertiesview.d.ts} +11 -12
  52. package/{src → dist}/tablecellproperties.d.ts +1 -1
  53. package/{src → dist}/tablecellwidth/commands/tablecellwidthcommand.d.ts +1 -1
  54. package/{src → dist}/tablecellwidth/tablecellwidthediting.d.ts +1 -1
  55. package/{src → dist}/tableclipboard.d.ts +3 -3
  56. package/{src → dist}/tablecolumnresize/converters.d.ts +1 -1
  57. package/{src → dist}/tablecolumnresize/tablecolumnresizeediting.d.ts +2 -2
  58. package/{src → dist}/tablecolumnresize/tablewidthscommand.d.ts +2 -2
  59. package/{src → dist}/tablecolumnresize/utils.d.ts +2 -2
  60. package/{src → dist}/tablecolumnresize.d.ts +1 -1
  61. package/{src → dist}/tableconfig.d.ts +26 -6
  62. package/{src → dist}/tableediting.d.ts +3 -3
  63. package/{src → dist}/tablekeyboard.d.ts +3 -3
  64. package/{src → dist}/tablelayout/commands/tabletypecommand.d.ts +1 -1
  65. package/{src → dist}/tablelayout/tablelayoutediting.d.ts +1 -1
  66. package/{src → dist}/tablelayout/tablelayoutui.d.ts +1 -1
  67. package/{src → dist}/tablelayout.d.ts +1 -1
  68. package/{src → dist}/tablemouse/mouseeventsobserver.d.ts +1 -1
  69. package/{src → dist}/tablemouse.d.ts +1 -1
  70. package/{src → dist}/tableproperties/commands/tablealignmentcommand.d.ts +1 -1
  71. package/{src → dist}/tableproperties/commands/tablebackgroundcolorcommand.d.ts +1 -1
  72. package/{src → dist}/tableproperties/commands/tablebordercolorcommand.d.ts +2 -2
  73. package/{src → dist}/tableproperties/commands/tableborderstylecommand.d.ts +2 -2
  74. package/{src → dist}/tableproperties/commands/tableborderwidthcommand.d.ts +2 -2
  75. package/{src → dist}/tableproperties/commands/tableheightcommand.d.ts +1 -1
  76. package/{src → dist}/tableproperties/commands/tablepropertycommand.d.ts +2 -2
  77. package/{src → dist}/tableproperties/commands/tablewidthcommand.d.ts +1 -1
  78. package/{src → dist}/tableproperties/tablepropertiesediting.d.ts +1 -1
  79. package/{src → dist}/tableproperties/tablepropertiesui.d.ts +2 -2
  80. package/{src → dist}/tableproperties/ui/tablepropertiesview.d.ts +10 -2
  81. package/{src → dist}/tableproperties.d.ts +1 -1
  82. package/{src → dist}/tableselection.d.ts +2 -2
  83. package/{src → dist}/tabletoolbar.d.ts +2 -2
  84. package/{src → dist}/tableui.d.ts +1 -1
  85. package/{src → dist}/tableutils.d.ts +2 -2
  86. package/{src → dist}/tablewalker.d.ts +1 -1
  87. package/{src → dist}/ui/colorinputview.d.ts +2 -2
  88. package/{src → dist}/ui/inserttableview.d.ts +2 -2
  89. package/{src → dist}/utils/common.d.ts +2 -2
  90. package/{src → dist}/utils/structure.d.ts +1 -1
  91. package/{src → dist}/utils/table-properties.d.ts +1 -1
  92. package/{src → dist}/utils/ui/contextualballoon.d.ts +2 -2
  93. package/{src → dist}/utils/ui/table-properties.d.ts +2 -2
  94. package/{src → dist}/utils/ui/widget.d.ts +1 -1
  95. package/package.json +26 -49
  96. package/build/table.js +0 -5
  97. package/build/translations/af.js +0 -1
  98. package/build/translations/ar.js +0 -1
  99. package/build/translations/ast.js +0 -1
  100. package/build/translations/az.js +0 -1
  101. package/build/translations/be.js +0 -1
  102. package/build/translations/bg.js +0 -1
  103. package/build/translations/bn.js +0 -1
  104. package/build/translations/bs.js +0 -1
  105. package/build/translations/ca.js +0 -1
  106. package/build/translations/cs.js +0 -1
  107. package/build/translations/da.js +0 -1
  108. package/build/translations/de-ch.js +0 -1
  109. package/build/translations/de.js +0 -1
  110. package/build/translations/el.js +0 -1
  111. package/build/translations/en-au.js +0 -1
  112. package/build/translations/en-gb.js +0 -1
  113. package/build/translations/eo.js +0 -1
  114. package/build/translations/es-co.js +0 -1
  115. package/build/translations/es.js +0 -1
  116. package/build/translations/et.js +0 -1
  117. package/build/translations/eu.js +0 -1
  118. package/build/translations/fa.js +0 -1
  119. package/build/translations/fi.js +0 -1
  120. package/build/translations/fr.js +0 -1
  121. package/build/translations/gl.js +0 -1
  122. package/build/translations/gu.js +0 -1
  123. package/build/translations/he.js +0 -1
  124. package/build/translations/hi.js +0 -1
  125. package/build/translations/hr.js +0 -1
  126. package/build/translations/hu.js +0 -1
  127. package/build/translations/hy.js +0 -1
  128. package/build/translations/id.js +0 -1
  129. package/build/translations/it.js +0 -1
  130. package/build/translations/ja.js +0 -1
  131. package/build/translations/jv.js +0 -1
  132. package/build/translations/kk.js +0 -1
  133. package/build/translations/km.js +0 -1
  134. package/build/translations/kn.js +0 -1
  135. package/build/translations/ko.js +0 -1
  136. package/build/translations/ku.js +0 -1
  137. package/build/translations/lt.js +0 -1
  138. package/build/translations/lv.js +0 -1
  139. package/build/translations/ms.js +0 -1
  140. package/build/translations/nb.js +0 -1
  141. package/build/translations/ne.js +0 -1
  142. package/build/translations/nl.js +0 -1
  143. package/build/translations/no.js +0 -1
  144. package/build/translations/oc.js +0 -1
  145. package/build/translations/pl.js +0 -1
  146. package/build/translations/pt-br.js +0 -1
  147. package/build/translations/pt.js +0 -1
  148. package/build/translations/ro.js +0 -1
  149. package/build/translations/ru.js +0 -1
  150. package/build/translations/si.js +0 -1
  151. package/build/translations/sk.js +0 -1
  152. package/build/translations/sl.js +0 -1
  153. package/build/translations/sq.js +0 -1
  154. package/build/translations/sr-latn.js +0 -1
  155. package/build/translations/sr.js +0 -1
  156. package/build/translations/sv.js +0 -1
  157. package/build/translations/th.js +0 -1
  158. package/build/translations/ti.js +0 -1
  159. package/build/translations/tk.js +0 -1
  160. package/build/translations/tr.js +0 -1
  161. package/build/translations/tt.js +0 -1
  162. package/build/translations/ug.js +0 -1
  163. package/build/translations/uk.js +0 -1
  164. package/build/translations/ur.js +0 -1
  165. package/build/translations/uz.js +0 -1
  166. package/build/translations/vi.js +0 -1
  167. package/build/translations/zh-cn.js +0 -1
  168. package/build/translations/zh.js +0 -1
  169. package/lang/contexts.json +0 -82
  170. package/lang/translations/af.po +0 -332
  171. package/lang/translations/ar.po +0 -332
  172. package/lang/translations/ast.po +0 -332
  173. package/lang/translations/az.po +0 -332
  174. package/lang/translations/be.po +0 -332
  175. package/lang/translations/bg.po +0 -332
  176. package/lang/translations/bn.po +0 -334
  177. package/lang/translations/bs.po +0 -332
  178. package/lang/translations/ca.po +0 -332
  179. package/lang/translations/cs.po +0 -332
  180. package/lang/translations/da.po +0 -332
  181. package/lang/translations/de-ch.po +0 -332
  182. package/lang/translations/de.po +0 -332
  183. package/lang/translations/el.po +0 -332
  184. package/lang/translations/en-au.po +0 -332
  185. package/lang/translations/en-gb.po +0 -332
  186. package/lang/translations/en.po +0 -332
  187. package/lang/translations/eo.po +0 -332
  188. package/lang/translations/es-co.po +0 -332
  189. package/lang/translations/es.po +0 -332
  190. package/lang/translations/et.po +0 -332
  191. package/lang/translations/eu.po +0 -332
  192. package/lang/translations/fa.po +0 -332
  193. package/lang/translations/fi.po +0 -332
  194. package/lang/translations/fr.po +0 -332
  195. package/lang/translations/gl.po +0 -332
  196. package/lang/translations/gu.po +0 -332
  197. package/lang/translations/he.po +0 -332
  198. package/lang/translations/hi.po +0 -332
  199. package/lang/translations/hr.po +0 -332
  200. package/lang/translations/hu.po +0 -332
  201. package/lang/translations/hy.po +0 -332
  202. package/lang/translations/id.po +0 -332
  203. package/lang/translations/it.po +0 -332
  204. package/lang/translations/ja.po +0 -332
  205. package/lang/translations/jv.po +0 -332
  206. package/lang/translations/kk.po +0 -332
  207. package/lang/translations/km.po +0 -332
  208. package/lang/translations/kn.po +0 -332
  209. package/lang/translations/ko.po +0 -332
  210. package/lang/translations/ku.po +0 -332
  211. package/lang/translations/lt.po +0 -332
  212. package/lang/translations/lv.po +0 -332
  213. package/lang/translations/ms.po +0 -332
  214. package/lang/translations/nb.po +0 -332
  215. package/lang/translations/ne.po +0 -332
  216. package/lang/translations/nl.po +0 -332
  217. package/lang/translations/no.po +0 -332
  218. package/lang/translations/oc.po +0 -332
  219. package/lang/translations/pl.po +0 -332
  220. package/lang/translations/pt-br.po +0 -332
  221. package/lang/translations/pt.po +0 -332
  222. package/lang/translations/ro.po +0 -332
  223. package/lang/translations/ru.po +0 -332
  224. package/lang/translations/si.po +0 -332
  225. package/lang/translations/sk.po +0 -332
  226. package/lang/translations/sl.po +0 -332
  227. package/lang/translations/sq.po +0 -332
  228. package/lang/translations/sr-latn.po +0 -332
  229. package/lang/translations/sr.po +0 -332
  230. package/lang/translations/sv.po +0 -332
  231. package/lang/translations/th.po +0 -332
  232. package/lang/translations/ti.po +0 -332
  233. package/lang/translations/tk.po +0 -332
  234. package/lang/translations/tr.po +0 -332
  235. package/lang/translations/tt.po +0 -332
  236. package/lang/translations/ug.po +0 -332
  237. package/lang/translations/uk.po +0 -332
  238. package/lang/translations/ur.po +0 -332
  239. package/lang/translations/uz.po +0 -332
  240. package/lang/translations/vi.po +0 -332
  241. package/lang/translations/zh-cn.po +0 -332
  242. package/lang/translations/zh.po +0 -332
  243. package/src/augmentation.js +0 -5
  244. package/src/commands/insertcolumncommand.js +0 -71
  245. package/src/commands/insertrowcommand.js +0 -70
  246. package/src/commands/inserttablecommand.js +0 -69
  247. package/src/commands/inserttablelayoutcommand.js +0 -65
  248. package/src/commands/mergecellcommand.js +0 -206
  249. package/src/commands/mergecellscommand.js +0 -94
  250. package/src/commands/removecolumncommand.js +0 -109
  251. package/src/commands/removerowcommand.js +0 -82
  252. package/src/commands/selectcolumncommand.js +0 -60
  253. package/src/commands/selectrowcommand.js +0 -56
  254. package/src/commands/setheadercolumncommand.js +0 -76
  255. package/src/commands/setheaderrowcommand.js +0 -83
  256. package/src/commands/splitcellcommand.js +0 -58
  257. package/src/converters/downcast.js +0 -298
  258. package/src/converters/table-caption-post-fixer.js +0 -55
  259. package/src/converters/table-cell-paragraph-post-fixer.js +0 -109
  260. package/src/converters/table-cell-refresh-handler.js +0 -47
  261. package/src/converters/table-headings-refresh-handler.js +0 -51
  262. package/src/converters/table-layout-post-fixer.js +0 -369
  263. package/src/converters/tableproperties.js +0 -444
  264. package/src/converters/upcasttable.js +0 -385
  265. package/src/index.js +0 -98
  266. package/src/plaintableoutput.js +0 -49
  267. package/src/table.js +0 -50
  268. package/src/tablecaption/tablecaptionediting.js +0 -136
  269. package/src/tablecaption/tablecaptionui.js +0 -64
  270. package/src/tablecaption/toggletablecaptioncommand.js +0 -105
  271. package/src/tablecaption/utils.js +0 -61
  272. package/src/tablecaption.js +0 -34
  273. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +0 -30
  274. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +0 -44
  275. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +0 -44
  276. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +0 -64
  277. package/src/tablecellproperties/commands/tablecellheightcommand.js +0 -51
  278. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +0 -30
  279. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +0 -64
  280. package/src/tablecellproperties/commands/tablecellpropertycommand.js +0 -138
  281. package/src/tablecellproperties/commands/tablecelltypecommand.js +0 -167
  282. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +0 -38
  283. package/src/tablecellproperties/tablecellpropertiesediting.js +0 -412
  284. package/src/tablecellproperties/tablecellpropertiesui.js +0 -385
  285. package/src/tablecellproperties/tablecellpropertiesuiexperimental.d.ts +0 -128
  286. package/src/tablecellproperties/tablecellpropertiesuiexperimental.js +0 -408
  287. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +0 -229
  288. package/src/tablecellproperties/ui/tablecellpropertiesview.js +0 -612
  289. package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.js +0 -744
  290. package/src/tablecellproperties.js +0 -40
  291. package/src/tablecellwidth/commands/tablecellwidthcommand.js +0 -51
  292. package/src/tablecellwidth/tablecellwidthediting.js +0 -53
  293. package/src/tableclipboard.js +0 -500
  294. package/src/tablecolumnresize/constants.js +0 -33
  295. package/src/tablecolumnresize/converters.js +0 -62
  296. package/src/tablecolumnresize/tablecolumnresizeediting.js +0 -729
  297. package/src/tablecolumnresize/tablewidthscommand.js +0 -61
  298. package/src/tablecolumnresize/utils.js +0 -370
  299. package/src/tablecolumnresize.js +0 -36
  300. package/src/tableconfig.js +0 -5
  301. package/src/tableediting.js +0 -246
  302. package/src/tablekeyboard.js +0 -273
  303. package/src/tablelayout/commands/tabletypecommand.js +0 -68
  304. package/src/tablelayout/tablelayoutediting.js +0 -295
  305. package/src/tablelayout/tablelayoutui.js +0 -196
  306. package/src/tablelayout.js +0 -37
  307. package/src/tablemouse/mouseeventsobserver.js +0 -34
  308. package/src/tablemouse.js +0 -178
  309. package/src/tableproperties/commands/tablealignmentcommand.js +0 -30
  310. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +0 -30
  311. package/src/tableproperties/commands/tablebordercolorcommand.js +0 -44
  312. package/src/tableproperties/commands/tableborderstylecommand.js +0 -44
  313. package/src/tableproperties/commands/tableborderwidthcommand.js +0 -64
  314. package/src/tableproperties/commands/tableheightcommand.js +0 -54
  315. package/src/tableproperties/commands/tablepropertycommand.js +0 -103
  316. package/src/tableproperties/commands/tablewidthcommand.js +0 -54
  317. package/src/tableproperties/tablepropertiesediting.js +0 -546
  318. package/src/tableproperties/tablepropertiesui.js +0 -374
  319. package/src/tableproperties/tablepropertiesuiexperimental.d.ts +0 -136
  320. package/src/tableproperties/tablepropertiesuiexperimental.js +0 -375
  321. package/src/tableproperties/ui/tablepropertiesview.js +0 -520
  322. package/src/tableproperties/ui/tablepropertiesviewexperimental.d.ts +0 -216
  323. package/src/tableproperties/ui/tablepropertiesviewexperimental.js +0 -544
  324. package/src/tableproperties.js +0 -40
  325. package/src/tableselection.js +0 -323
  326. package/src/tabletoolbar.js +0 -63
  327. package/src/tableui.js +0 -335
  328. package/src/tableutils.js +0 -1282
  329. package/src/tablewalker.js +0 -489
  330. package/src/ui/colorinputview.js +0 -305
  331. package/src/ui/inserttableview.js +0 -192
  332. package/src/utils/common.js +0 -118
  333. package/src/utils/structure.js +0 -452
  334. package/src/utils/table-properties.js +0 -121
  335. package/src/utils/ui/contextualballoon.js +0 -111
  336. package/src/utils/ui/table-properties.js +0 -390
  337. package/src/utils/ui/table-propertiesexperimental.d.ts +0 -215
  338. package/src/utils/ui/table-propertiesexperimental.js +0 -391
  339. package/src/utils/ui/widget.js +0 -56
  340. package/theme/colorinput.css +0 -39
  341. package/theme/formrow-experimental.css +0 -15
  342. package/theme/formrow.css +0 -13
  343. package/theme/inserttable.css +0 -10
  344. package/theme/table.css +0 -144
  345. package/theme/tablecaption.css +0 -66
  346. package/theme/tablecellproperties-experimental.css +0 -4
  347. package/theme/tablecellproperties.css +0 -28
  348. package/theme/tablecolumnresize.css +0 -62
  349. package/theme/tableediting.css +0 -10
  350. package/theme/tableform-experimental.css +0 -61
  351. package/theme/tableform.css +0 -64
  352. package/theme/tablelayout.css +0 -74
  353. package/theme/tableproperties-experimental.css +0 -78
  354. package/theme/tableproperties.css +0 -18
  355. package/theme/tableselection.css +0 -10
  356. /package/{src → dist}/tablecolumnresize/constants.d.ts +0 -0
@@ -1,61 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- import { Command } from 'ckeditor5/src/core.js';
6
- import { normalizeColumnWidths } from './utils.js';
7
- /**
8
- * Command used by the {@link module:table/tablecolumnresize~TableColumnResize Table column resize feature} that
9
- * updates the width of the whole table as well as its individual columns.
10
- */
11
- export class TableWidthsCommand extends Command {
12
- /**
13
- * @inheritDoc
14
- */
15
- refresh() {
16
- // The command is always enabled as it doesn't care about the actual selection - table can be resized
17
- // even if the selection is elsewhere.
18
- this.isEnabled = true;
19
- }
20
- /**
21
- * Updated the `tableWidth` attribute of the table and the `columnWidth` attribute of the columns of that table.
22
- */
23
- execute(options = {}) {
24
- const { model, plugins } = this.editor;
25
- let { table = model.document.selection.getSelectedElement(), columnWidths, tableWidth } = options;
26
- if (columnWidths) {
27
- // For backwards compatibility, columnWidths might be an array or a string of comma-separated values.
28
- columnWidths = Array.isArray(columnWidths) ?
29
- columnWidths :
30
- columnWidths.split(',');
31
- }
32
- model.change(writer => {
33
- if (tableWidth) {
34
- writer.setAttribute('tableWidth', tableWidth, table);
35
- }
36
- else {
37
- writer.removeAttribute('tableWidth', table);
38
- }
39
- const tableColumnGroup = plugins
40
- .get('TableColumnResizeEditing')
41
- .getColumnGroupElement(table);
42
- if (!columnWidths && !tableColumnGroup) {
43
- return;
44
- }
45
- if (!columnWidths) {
46
- return writer.remove(tableColumnGroup);
47
- }
48
- const widths = normalizeColumnWidths(columnWidths);
49
- if (!tableColumnGroup) {
50
- const colGroupElement = writer.createElement('tableColumnGroup');
51
- widths.forEach(columnWidth => writer.appendElement('tableColumn', { columnWidth }, colGroupElement));
52
- writer.append(colGroupElement, table);
53
- }
54
- else {
55
- Array
56
- .from(tableColumnGroup.getChildren())
57
- .forEach((column, index) => writer.setAttribute('columnWidth', widths[index], column));
58
- }
59
- });
60
- }
61
- }
@@ -1,370 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- import { global } from 'ckeditor5/src/utils.js';
6
- import { COLUMN_WIDTH_PRECISION, COLUMN_MIN_WIDTH_AS_PERCENTAGE, COLUMN_MIN_WIDTH_IN_PIXELS } from './constants.js';
7
- /**
8
- * Returns all the inserted or changed table model elements in a given change set. Only the tables
9
- * with 'columnsWidth' attribute are taken into account. The returned set may be empty.
10
- *
11
- * Most notably if an entire table is removed it will not be included in returned set.
12
- *
13
- * @internal
14
- * @param model The model to collect the affected elements from.
15
- * @returns A set of table model elements.
16
- */
17
- export function getChangedResizedTables(model) {
18
- const affectedTables = new Set();
19
- for (const change of model.document.differ.getChanges()) {
20
- let referencePosition = null;
21
- // Checks if the particular change from the differ is:
22
- // - an insertion or removal of a table, a row or a cell,
23
- // - an attribute change on a table, a row or a cell.
24
- switch (change.type) {
25
- case 'insert':
26
- referencePosition = ['table', 'tableRow', 'tableCell'].includes(change.name) ?
27
- change.position :
28
- null;
29
- break;
30
- case 'remove':
31
- // If the whole table is removed, there's no need to update its column widths (#12201).
32
- referencePosition = ['tableRow', 'tableCell'].includes(change.name) ?
33
- change.position :
34
- null;
35
- break;
36
- case 'attribute':
37
- if (change.range.start.nodeAfter) {
38
- referencePosition = ['table', 'tableRow', 'tableCell'].includes(change.range.start.nodeAfter.name) ?
39
- change.range.start :
40
- null;
41
- }
42
- break;
43
- }
44
- if (!referencePosition) {
45
- continue;
46
- }
47
- const tableNode = (referencePosition.nodeAfter && referencePosition.nodeAfter.is('element', 'table')) ?
48
- referencePosition.nodeAfter : referencePosition.findAncestor('table');
49
- // We iterate over the whole table looking for the nested tables that are also affected.
50
- for (const node of model.createRangeOn(tableNode).getItems()) {
51
- if (!node.is('element', 'table')) {
52
- continue;
53
- }
54
- if (!getColumnGroupElement(node)) {
55
- continue;
56
- }
57
- affectedTables.add(node);
58
- }
59
- }
60
- return affectedTables;
61
- }
62
- /**
63
- * Calculates the percentage of the minimum column width given in pixels for a given table.
64
- *
65
- * @internal
66
- * @param modelTable A table model element.
67
- * @param editor The editor instance.
68
- * @returns The minimal column width in percentage.
69
- */
70
- export function getColumnMinWidthAsPercentage(modelTable, editor) {
71
- return COLUMN_MIN_WIDTH_IN_PIXELS * 100 / getTableWidthInPixels(modelTable, editor);
72
- }
73
- /**
74
- * Calculates the table width in pixels.
75
- *
76
- * @internal
77
- * @param modelTable A table model element.
78
- * @param editor The editor instance.
79
- * @returns The width of the table in pixels.
80
- */
81
- export function getTableWidthInPixels(modelTable, editor) {
82
- // It is possible for a table to not have a <tbody> element - see #11878.
83
- const referenceElement = getChildrenViewElement(modelTable, 'tbody', editor) || getChildrenViewElement(modelTable, 'thead', editor);
84
- const domReferenceElement = editor.editing.view.domConverter.mapViewToDom(referenceElement);
85
- return getElementWidthInPixels(domReferenceElement);
86
- }
87
- /**
88
- * Returns the a view element with a given name that is nested directly in a `<table>` element
89
- * related to a given `modelTable`.
90
- *
91
- * @param elementName Name of a view to be looked for, e.g. `'colgroup`', `'thead`'.
92
- * @returns Matched view or `undefined` otherwise.
93
- */
94
- function getChildrenViewElement(modelTable, elementName, editor) {
95
- const viewFigure = editor.editing.mapper.toViewElement(modelTable);
96
- const viewTable = [...viewFigure.getChildren()]
97
- .find((node) => node.is('element', 'table'));
98
- return [...viewTable.getChildren()]
99
- .find((node) => node.is('element', elementName));
100
- }
101
- /**
102
- * Returns the computed width (in pixels) of the DOM element without padding and borders.
103
- *
104
- * @internal
105
- * @param domElement A DOM element.
106
- * @returns The width of the DOM element in pixels.
107
- */
108
- export function getElementWidthInPixels(domElement) {
109
- const styles = global.window.getComputedStyle(domElement);
110
- // In the 'border-box' box sizing algorithm, the element's width
111
- // already includes the padding and border width (#12335).
112
- if (styles.boxSizing === 'border-box') {
113
- return parseFloat(styles.width) -
114
- parseFloat(styles.paddingLeft) -
115
- parseFloat(styles.paddingRight) -
116
- parseFloat(styles.borderLeftWidth) -
117
- parseFloat(styles.borderRightWidth);
118
- }
119
- else {
120
- return parseFloat(styles.width);
121
- }
122
- }
123
- /**
124
- * Returns the column indexes on the left and right edges of a cell. They differ if the cell spans
125
- * across multiple columns.
126
- *
127
- * @internal
128
- * @param cell A table cell model element.
129
- * @param tableUtils The Table Utils plugin instance.
130
- * @returns An object containing the indexes of the left and right edges of the cell.
131
- */
132
- export function getColumnEdgesIndexes(cell, tableUtils) {
133
- const cellColumnIndex = tableUtils.getCellLocation(cell).column;
134
- const cellWidth = cell.getAttribute('colspan') || 1;
135
- return {
136
- leftEdge: cellColumnIndex,
137
- rightEdge: cellColumnIndex + cellWidth - 1
138
- };
139
- }
140
- /**
141
- * Rounds the provided value to a fixed-point number with defined number of digits after the decimal point.
142
- *
143
- * @internal
144
- * @param value A number to be rounded.
145
- * @returns The rounded number.
146
- */
147
- export function toPrecision(value) {
148
- const multiplier = Math.pow(10, COLUMN_WIDTH_PRECISION);
149
- const number = typeof value === 'number' ? value : parseFloat(value);
150
- return Math.round(number * multiplier) / multiplier;
151
- }
152
- /**
153
- * Clamps the number within the inclusive lower (min) and upper (max) bounds. Returned number is rounded using the
154
- * {@link ~toPrecision `toPrecision()`} function.
155
- *
156
- * @internal
157
- * @param number A number to be clamped.
158
- * @param min A lower bound.
159
- * @param max An upper bound.
160
- * @returns The clamped number.
161
- */
162
- export function clamp(number, min, max) {
163
- if (number <= min) {
164
- return toPrecision(min);
165
- }
166
- if (number >= max) {
167
- return toPrecision(max);
168
- }
169
- return toPrecision(number);
170
- }
171
- /**
172
- * Creates an array with defined length and fills all elements with defined value.
173
- *
174
- * @internal
175
- * @param length The length of the array.
176
- * @param value The value to fill the array with.
177
- * @returns An array with defined length and filled with defined value.
178
- */
179
- export function createFilledArray(length, value) {
180
- return Array(length).fill(value);
181
- }
182
- /**
183
- * Sums all array values that can be parsed to a float.
184
- *
185
- * @internal
186
- * @param array An array of numbers.
187
- * @returns The sum of all array values.
188
- */
189
- export function sumArray(array) {
190
- return array
191
- .map(value => typeof value === 'number' ? value : parseFloat(value))
192
- .filter(value => !Number.isNaN(value))
193
- .reduce((result, item) => result + item, 0);
194
- }
195
- /**
196
- * Makes sure that the sum of the widths from all columns is 100%. If the sum of all the widths is not equal 100%, all the widths are
197
- * changed proportionally so that they all sum back to 100%. If there are columns without specified width, the amount remaining
198
- * after assigning the known widths will be distributed equally between them.
199
- *
200
- * @internal
201
- * @param columnWidths An array of column widths.
202
- * @returns An array of column widths guaranteed to sum up to 100%.
203
- */
204
- export function normalizeColumnWidths(columnWidths) {
205
- const widths = columnWidths.map(width => {
206
- if (width === 'auto' || width === undefined) {
207
- return 'auto';
208
- }
209
- return parseFloat(width.replace('%', ''));
210
- });
211
- let normalizedWidths = calculateMissingColumnWidths(widths);
212
- const totalWidth = sumArray(normalizedWidths);
213
- if (totalWidth !== 100) {
214
- normalizedWidths = normalizedWidths
215
- // Adjust all the columns proportionally.
216
- .map(width => toPrecision(width * 100 / totalWidth))
217
- // Due to rounding of numbers it may happen that the sum of the widths of all columns will not be exactly 100%.
218
- // Therefore, the width of the last column is explicitly adjusted (narrowed or expanded), since all the columns
219
- // have been proportionally changed already.
220
- .map((columnWidth, columnIndex, width) => {
221
- const isLastColumn = columnIndex === width.length - 1;
222
- if (!isLastColumn) {
223
- return columnWidth;
224
- }
225
- const totalWidth = sumArray(width);
226
- return toPrecision(columnWidth + 100 - totalWidth);
227
- });
228
- }
229
- return normalizedWidths.map(width => width + '%');
230
- }
231
- /**
232
- * Initializes the column widths by parsing the attribute value and calculating the uninitialized column widths. The special value 'auto'
233
- * indicates that width for the column must be calculated. The width of such uninitialized column is calculated as follows:
234
- * - If there is enough free space in the table for all uninitialized columns to have at least the minimum allowed width for all of them,
235
- * then set this width equally for all uninitialized columns.
236
- * - Otherwise, just set the minimum allowed width for all uninitialized columns. The sum of all column widths will be greater than 100%,
237
- * but then it will be adjusted proportionally to 100% in {@link #normalizeColumnWidths `normalizeColumnWidths()`}.
238
- *
239
- * @param columnWidths An array of column widths.
240
- * @returns An array with 'auto' values replaced with calculated widths.
241
- */
242
- function calculateMissingColumnWidths(columnWidths) {
243
- const numberOfUninitializedColumns = columnWidths.filter(columnWidth => columnWidth === 'auto').length;
244
- if (numberOfUninitializedColumns === 0) {
245
- return columnWidths.map(columnWidth => toPrecision(columnWidth));
246
- }
247
- const totalWidthOfInitializedColumns = sumArray(columnWidths);
248
- const widthForUninitializedColumn = Math.max((100 - totalWidthOfInitializedColumns) / numberOfUninitializedColumns, COLUMN_MIN_WIDTH_AS_PERCENTAGE);
249
- return columnWidths
250
- .map(columnWidth => columnWidth === 'auto' ? widthForUninitializedColumn : columnWidth)
251
- .map(columnWidth => toPrecision(columnWidth));
252
- }
253
- /**
254
- * Calculates the total horizontal space taken by the cell. That includes:
255
- * * width,
256
- * * left and red padding,
257
- * * border width.
258
- *
259
- * @internal
260
- * @param domCell A DOM cell element.
261
- * @returns Width in pixels without `px` at the end.
262
- */
263
- export function getDomCellOuterWidth(domCell) {
264
- const styles = global.window.getComputedStyle(domCell);
265
- // In the 'border-box' box sizing algorithm, the element's width
266
- // already includes the padding and border width (#12335).
267
- if (styles.boxSizing === 'border-box') {
268
- return parseInt(styles.width);
269
- }
270
- else {
271
- return parseFloat(styles.width) +
272
- parseFloat(styles.paddingLeft) +
273
- parseFloat(styles.paddingRight) +
274
- parseFloat(styles.borderWidth);
275
- }
276
- }
277
- /**
278
- * Updates column elements to match columns widths.
279
- *
280
- * @internal
281
- * @param columns
282
- * @param tableColumnGroup
283
- * @param normalizedWidths
284
- * @param writer
285
- */
286
- export function updateColumnElements(columns, tableColumnGroup, normalizedWidths, writer) {
287
- for (let i = 0; i < Math.max(normalizedWidths.length, columns.length); i++) {
288
- const column = columns[i];
289
- const columnWidth = normalizedWidths[i];
290
- if (!columnWidth) {
291
- // Number of `<tableColumn>` elements exceeds actual number of columns.
292
- writer.remove(column);
293
- }
294
- else if (!column) {
295
- // There is fewer `<tableColumn>` elements than actual columns.
296
- writer.appendElement('tableColumn', { columnWidth }, tableColumnGroup);
297
- }
298
- else {
299
- // Update column width.
300
- writer.setAttribute('columnWidth', columnWidth, column);
301
- }
302
- }
303
- }
304
- /**
305
- * Returns a 'tableColumnGroup' element from the 'table'.
306
- *
307
- * @internal
308
- * @param element A 'table' or 'tableColumnGroup' element.
309
- * @returns A 'tableColumnGroup' element.
310
- */
311
- export function getColumnGroupElement(element) {
312
- if (element.is('element', 'tableColumnGroup')) {
313
- return element;
314
- }
315
- const children = element.getChildren();
316
- return Array
317
- .from(children)
318
- .find(element => element.is('element', 'tableColumnGroup'));
319
- }
320
- /**
321
- * Returns an array of 'tableColumn' elements. It may be empty if there's no `tableColumnGroup` element.
322
- *
323
- * @internal
324
- * @param element A 'table' or 'tableColumnGroup' element.
325
- * @returns An array of 'tableColumn' elements.
326
- */
327
- export function getTableColumnElements(element) {
328
- const columnGroupElement = getColumnGroupElement(element);
329
- if (!columnGroupElement) {
330
- return [];
331
- }
332
- return Array.from(columnGroupElement.getChildren());
333
- }
334
- /**
335
- * Returns an array of table column widths.
336
- *
337
- * @internal
338
- * @param element A 'table' or 'tableColumnGroup' element.
339
- * @returns An array of table column widths.
340
- */
341
- export function getTableColumnsWidths(element) {
342
- return getTableColumnElements(element).map(column => column.getAttribute('columnWidth'));
343
- }
344
- /**
345
- * Translates the `colSpan` model attribute into additional column widths and returns the resulting array.
346
- *
347
- * @internal
348
- * @param element A 'table' or 'tableColumnGroup' element.
349
- * @param writer A writer instance.
350
- * @returns An array of table column widths.
351
- */
352
- export function translateColSpanAttribute(element, writer) {
353
- const tableColumnElements = getTableColumnElements(element);
354
- return tableColumnElements.reduce((acc, element) => {
355
- const columnWidth = element.getAttribute('columnWidth');
356
- const colSpan = element.getAttribute('colSpan');
357
- if (!colSpan) {
358
- acc.push(columnWidth);
359
- return acc;
360
- }
361
- // Translate the `colSpan` model attribute on to the proper number of column widths
362
- // and remove it from the element.
363
- // See https://github.com/ckeditor/ckeditor5/issues/14521#issuecomment-1662102889 for more details.
364
- for (let i = 0; i < colSpan; i++) {
365
- acc.push(columnWidth);
366
- }
367
- writer.removeAttribute('colSpan', element);
368
- return acc;
369
- }, []);
370
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- /**
6
- * @module table/tablecolumnresize
7
- */
8
- import { Plugin } from 'ckeditor5/src/core.js';
9
- import { TableColumnResizeEditing } from './tablecolumnresize/tablecolumnresizeediting.js';
10
- import { TableCellWidthEditing } from './tablecellwidth/tablecellwidthediting.js';
11
- import '../theme/tablecolumnresize.css';
12
- /**
13
- * The table column resize feature.
14
- *
15
- * It provides the possibility to set the width of each column in a table using a resize handler.
16
- */
17
- export class TableColumnResize extends Plugin {
18
- /**
19
- * @inheritDoc
20
- */
21
- static get requires() {
22
- return [TableColumnResizeEditing, TableCellWidthEditing];
23
- }
24
- /**
25
- * @inheritDoc
26
- */
27
- static get pluginName() {
28
- return 'TableColumnResize';
29
- }
30
- /**
31
- * @inheritDoc
32
- */
33
- static get isOfficialPlugin() {
34
- return true;
35
- }
36
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- export {};