@ckeditor/ckeditor5-table 47.6.1 → 48.0.0-alpha.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 (505) hide show
  1. package/LICENSE.md +1 -1
  2. package/ckeditor5-metadata.json +35 -22
  3. package/{src → dist}/augmentation.d.ts +2 -30
  4. package/{src → dist}/commands/insertcolumncommand.d.ts +1 -1
  5. package/{src → dist}/commands/insertrowcommand.d.ts +1 -1
  6. package/{src → dist}/commands/inserttablecommand.d.ts +5 -1
  7. package/{src → dist}/commands/inserttablelayoutcommand.d.ts +1 -1
  8. package/{src → dist}/commands/mergecellcommand.d.ts +3 -3
  9. package/{src → dist}/commands/mergecellscommand.d.ts +1 -1
  10. package/{src → dist}/commands/removecolumncommand.d.ts +1 -1
  11. package/{src → dist}/commands/removerowcommand.d.ts +1 -1
  12. package/{src → dist}/commands/selectcolumncommand.d.ts +1 -1
  13. package/{src → dist}/commands/selectrowcommand.d.ts +1 -1
  14. package/dist/commands/setfooterrowcommand.d.ts +53 -0
  15. package/{src → dist}/commands/setheadercolumncommand.d.ts +1 -1
  16. package/{src → dist}/commands/setheaderrowcommand.d.ts +1 -1
  17. package/{src → dist}/commands/splitcellcommand.d.ts +1 -1
  18. package/{src → dist}/converters/downcast.d.ts +3 -3
  19. package/{src → dist}/converters/table-caption-post-fixer.d.ts +1 -1
  20. package/{src → dist}/converters/table-cell-paragraph-post-fixer.d.ts +1 -1
  21. package/{src → dist}/converters/table-cell-refresh-handler.d.ts +1 -1
  22. package/{src → dist}/converters/table-layout-post-fixer.d.ts +1 -1
  23. package/dist/converters/table-structure-post-fixer.d.ts +20 -0
  24. package/{src/converters/table-headings-refresh-handler.d.ts → dist/converters/table-structure-refresh-handler.d.ts} +3 -3
  25. package/{src → dist}/converters/tableproperties.d.ts +11 -2
  26. package/{src → dist}/converters/upcasttable.d.ts +6 -2
  27. package/dist/index-content.css +100 -110
  28. package/dist/index-editor.css +620 -289
  29. package/dist/index.css +692 -585
  30. package/dist/index.css.map +1 -1
  31. package/{src → dist}/index.d.ts +5 -7
  32. package/dist/index.js +11002 -12488
  33. package/dist/index.js.map +1 -1
  34. package/{src → dist}/plaintableoutput.d.ts +1 -1
  35. package/{src → dist}/table.d.ts +2 -2
  36. package/{src → dist}/tablecaption/tablecaptionediting.d.ts +2 -2
  37. package/{src → dist}/tablecaption/tablecaptionui.d.ts +1 -1
  38. package/{src → dist}/tablecaption/toggletablecaptioncommand.d.ts +1 -1
  39. package/{src → dist}/tablecaption/utils.d.ts +1 -1
  40. package/{src → dist}/tablecaption.d.ts +1 -1
  41. package/{src → dist}/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +1 -1
  42. package/{src → dist}/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +2 -2
  43. package/{src → dist}/tablecellproperties/commands/tablecellborderstylecommand.d.ts +2 -2
  44. package/{src → dist}/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +2 -2
  45. package/{src → dist}/tablecellproperties/commands/tablecellheightcommand.d.ts +1 -1
  46. package/{src → dist}/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +1 -1
  47. package/{src → dist}/tablecellproperties/commands/tablecellpaddingcommand.d.ts +2 -2
  48. package/{src → dist}/tablecellproperties/commands/tablecellpropertycommand.d.ts +2 -2
  49. package/{src → dist}/tablecellproperties/commands/tablecelltypecommand.d.ts +2 -6
  50. package/{src → dist}/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +1 -1
  51. package/{src → dist}/tablecellproperties/tablecellpropertiesediting.d.ts +1 -1
  52. package/{src → dist}/tablecellproperties/tablecellpropertiesui.d.ts +2 -2
  53. package/dist/tablecellproperties/tablecellpropertiesutils.d.ts +18 -0
  54. package/{src/tablecellproperties/ui/tablecellpropertiesviewexperimental.d.ts → dist/tablecellproperties/ui/tablecellpropertiesview.d.ts} +11 -13
  55. package/{src → dist}/tablecellproperties.d.ts +1 -1
  56. package/{src → dist}/tablecellwidth/commands/tablecellwidthcommand.d.ts +1 -1
  57. package/{src → dist}/tablecellwidth/tablecellwidthediting.d.ts +1 -1
  58. package/{src → dist}/tableclipboard.d.ts +3 -3
  59. package/{src → dist}/tablecolumnresize/converters.d.ts +1 -1
  60. package/{src → dist}/tablecolumnresize/tablecolumnresizeediting.d.ts +2 -2
  61. package/{src → dist}/tablecolumnresize/tablewidthscommand.d.ts +2 -2
  62. package/{src → dist}/tablecolumnresize/utils.d.ts +2 -2
  63. package/{src → dist}/tablecolumnresize.d.ts +1 -1
  64. package/{src → dist}/tableconfig.d.ts +57 -8
  65. package/{src → dist}/tableediting.d.ts +3 -3
  66. package/{src → dist}/tablekeyboard.d.ts +3 -3
  67. package/{src → dist}/tablelayout/commands/tabletypecommand.d.ts +1 -1
  68. package/{src → dist}/tablelayout/tablelayoutediting.d.ts +1 -1
  69. package/{src → dist}/tablelayout/tablelayoutui.d.ts +1 -1
  70. package/{src → dist}/tablelayout.d.ts +1 -1
  71. package/{src → dist}/tablemouse/mouseeventsobserver.d.ts +1 -1
  72. package/{src → dist}/tablemouse.d.ts +1 -1
  73. package/{src → dist}/tableproperties/commands/tablealignmentcommand.d.ts +1 -1
  74. package/{src → dist}/tableproperties/commands/tablebackgroundcolorcommand.d.ts +1 -1
  75. package/{src → dist}/tableproperties/commands/tablebordercolorcommand.d.ts +2 -2
  76. package/{src → dist}/tableproperties/commands/tableborderstylecommand.d.ts +2 -2
  77. package/{src → dist}/tableproperties/commands/tableborderwidthcommand.d.ts +2 -2
  78. package/{src → dist}/tableproperties/commands/tableheightcommand.d.ts +1 -1
  79. package/{src → dist}/tableproperties/commands/tablepropertycommand.d.ts +2 -2
  80. package/{src → dist}/tableproperties/commands/tablewidthcommand.d.ts +1 -1
  81. package/{src → dist}/tableproperties/tablepropertiesediting.d.ts +1 -1
  82. package/{src → dist}/tableproperties/tablepropertiesui.d.ts +2 -2
  83. package/{src → dist}/tableproperties/ui/tablepropertiesview.d.ts +10 -3
  84. package/{src → dist}/tableproperties.d.ts +1 -1
  85. package/{src → dist}/tableselection.d.ts +2 -2
  86. package/{src → dist}/tabletoolbar.d.ts +2 -2
  87. package/{src → dist}/tableui.d.ts +1 -1
  88. package/{src → dist}/tableutils.d.ts +69 -17
  89. package/{src → dist}/tablewalker.d.ts +1 -1
  90. package/dist/translations/af.js +1 -1
  91. package/dist/translations/af.umd.js +1 -1
  92. package/dist/translations/ar.js +1 -1
  93. package/dist/translations/ar.umd.js +1 -1
  94. package/dist/translations/ast.js +1 -1
  95. package/dist/translations/ast.umd.js +1 -1
  96. package/dist/translations/az.js +1 -1
  97. package/dist/translations/az.umd.js +1 -1
  98. package/dist/translations/be.js +1 -1
  99. package/dist/translations/be.umd.js +1 -1
  100. package/dist/translations/bg.js +1 -1
  101. package/dist/translations/bg.umd.js +1 -1
  102. package/dist/translations/bn.js +1 -1
  103. package/dist/translations/bn.umd.js +1 -1
  104. package/dist/translations/bs.js +1 -1
  105. package/dist/translations/bs.umd.js +1 -1
  106. package/dist/translations/ca.js +1 -1
  107. package/dist/translations/ca.umd.js +1 -1
  108. package/dist/translations/cs.js +1 -1
  109. package/dist/translations/cs.umd.js +1 -1
  110. package/dist/translations/da.js +1 -1
  111. package/dist/translations/da.umd.js +1 -1
  112. package/dist/translations/de-ch.js +1 -1
  113. package/dist/translations/de-ch.umd.js +1 -1
  114. package/dist/translations/de.js +1 -1
  115. package/dist/translations/de.umd.js +1 -1
  116. package/dist/translations/el.js +1 -1
  117. package/dist/translations/el.umd.js +1 -1
  118. package/dist/translations/en-au.js +1 -1
  119. package/dist/translations/en-au.umd.js +1 -1
  120. package/dist/translations/en-gb.js +1 -1
  121. package/dist/translations/en-gb.umd.js +1 -1
  122. package/dist/translations/en.js +1 -1
  123. package/dist/translations/en.umd.js +1 -1
  124. package/dist/translations/eo.js +1 -1
  125. package/dist/translations/eo.umd.js +1 -1
  126. package/dist/translations/es-co.js +1 -1
  127. package/dist/translations/es-co.umd.js +1 -1
  128. package/dist/translations/es.js +1 -1
  129. package/dist/translations/es.umd.js +1 -1
  130. package/dist/translations/et.js +1 -1
  131. package/dist/translations/et.umd.js +1 -1
  132. package/dist/translations/eu.js +1 -1
  133. package/dist/translations/eu.umd.js +1 -1
  134. package/dist/translations/fa.js +1 -1
  135. package/dist/translations/fa.umd.js +1 -1
  136. package/dist/translations/fi.js +1 -1
  137. package/dist/translations/fi.umd.js +1 -1
  138. package/dist/translations/fr.js +1 -1
  139. package/dist/translations/fr.umd.js +1 -1
  140. package/dist/translations/gl.js +1 -1
  141. package/dist/translations/gl.umd.js +1 -1
  142. package/dist/translations/gu.js +1 -1
  143. package/dist/translations/gu.umd.js +1 -1
  144. package/dist/translations/he.js +1 -1
  145. package/dist/translations/he.umd.js +1 -1
  146. package/dist/translations/hi.js +1 -1
  147. package/dist/translations/hi.umd.js +1 -1
  148. package/dist/translations/hr.js +1 -1
  149. package/dist/translations/hr.umd.js +1 -1
  150. package/dist/translations/hu.js +1 -1
  151. package/dist/translations/hu.umd.js +1 -1
  152. package/dist/translations/hy.js +1 -1
  153. package/dist/translations/hy.umd.js +1 -1
  154. package/dist/translations/id.js +1 -1
  155. package/dist/translations/id.umd.js +1 -1
  156. package/dist/translations/it.js +1 -1
  157. package/dist/translations/it.umd.js +1 -1
  158. package/dist/translations/ja.js +1 -1
  159. package/dist/translations/ja.umd.js +1 -1
  160. package/dist/translations/jv.js +1 -1
  161. package/dist/translations/jv.umd.js +1 -1
  162. package/dist/translations/kk.js +1 -1
  163. package/dist/translations/kk.umd.js +1 -1
  164. package/dist/translations/km.js +1 -1
  165. package/dist/translations/km.umd.js +1 -1
  166. package/dist/translations/kn.js +1 -1
  167. package/dist/translations/kn.umd.js +1 -1
  168. package/dist/translations/ko.js +1 -1
  169. package/dist/translations/ko.umd.js +1 -1
  170. package/dist/translations/ku.js +1 -1
  171. package/dist/translations/ku.umd.js +1 -1
  172. package/dist/translations/lt.js +1 -1
  173. package/dist/translations/lt.umd.js +1 -1
  174. package/dist/translations/lv.js +1 -1
  175. package/dist/translations/lv.umd.js +1 -1
  176. package/dist/translations/ms.js +1 -1
  177. package/dist/translations/ms.umd.js +1 -1
  178. package/dist/translations/nb.js +1 -1
  179. package/dist/translations/nb.umd.js +1 -1
  180. package/dist/translations/ne.js +1 -1
  181. package/dist/translations/ne.umd.js +1 -1
  182. package/dist/translations/nl.js +1 -1
  183. package/dist/translations/nl.umd.js +1 -1
  184. package/dist/translations/no.js +1 -1
  185. package/dist/translations/no.umd.js +1 -1
  186. package/dist/translations/oc.js +1 -1
  187. package/dist/translations/oc.umd.js +1 -1
  188. package/dist/translations/pl.js +1 -1
  189. package/dist/translations/pl.umd.js +1 -1
  190. package/dist/translations/pt-br.js +1 -1
  191. package/dist/translations/pt-br.umd.js +1 -1
  192. package/dist/translations/pt.js +1 -1
  193. package/dist/translations/pt.umd.js +1 -1
  194. package/dist/translations/ro.js +1 -1
  195. package/dist/translations/ro.umd.js +1 -1
  196. package/dist/translations/ru.js +1 -1
  197. package/dist/translations/ru.umd.js +1 -1
  198. package/dist/translations/si.js +1 -1
  199. package/dist/translations/si.umd.js +1 -1
  200. package/dist/translations/sk.js +1 -1
  201. package/dist/translations/sk.umd.js +1 -1
  202. package/dist/translations/sl.js +1 -1
  203. package/dist/translations/sl.umd.js +1 -1
  204. package/dist/translations/sq.js +1 -1
  205. package/dist/translations/sq.umd.js +1 -1
  206. package/dist/translations/sr-latn.js +1 -1
  207. package/dist/translations/sr-latn.umd.js +1 -1
  208. package/dist/translations/sr.js +1 -1
  209. package/dist/translations/sr.umd.js +1 -1
  210. package/dist/translations/sv.js +1 -1
  211. package/dist/translations/sv.umd.js +1 -1
  212. package/dist/translations/th.js +1 -1
  213. package/dist/translations/th.umd.js +1 -1
  214. package/dist/translations/ti.js +1 -1
  215. package/dist/translations/ti.umd.js +1 -1
  216. package/dist/translations/tk.js +1 -1
  217. package/dist/translations/tk.umd.js +1 -1
  218. package/dist/translations/tr.js +1 -1
  219. package/dist/translations/tr.umd.js +1 -1
  220. package/dist/translations/tt.js +1 -1
  221. package/dist/translations/tt.umd.js +1 -1
  222. package/dist/translations/ug.js +1 -1
  223. package/dist/translations/ug.umd.js +1 -1
  224. package/dist/translations/uk.js +1 -1
  225. package/dist/translations/uk.umd.js +1 -1
  226. package/dist/translations/ur.js +1 -1
  227. package/dist/translations/ur.umd.js +1 -1
  228. package/dist/translations/uz.js +1 -1
  229. package/dist/translations/uz.umd.js +1 -1
  230. package/dist/translations/vi.js +1 -1
  231. package/dist/translations/vi.umd.js +1 -1
  232. package/dist/translations/zh-cn.js +1 -1
  233. package/dist/translations/zh-cn.umd.js +1 -1
  234. package/dist/translations/zh.js +1 -1
  235. package/dist/translations/zh.umd.js +1 -1
  236. package/{src → dist}/ui/colorinputview.d.ts +2 -2
  237. package/{src → dist}/ui/inserttableview.d.ts +2 -2
  238. package/{src → dist}/utils/common.d.ts +2 -2
  239. package/{src → dist}/utils/structure.d.ts +1 -1
  240. package/{src → dist}/utils/table-properties.d.ts +1 -1
  241. package/{src → dist}/utils/ui/contextualballoon.d.ts +2 -2
  242. package/{src → dist}/utils/ui/table-properties.d.ts +2 -2
  243. package/{src → dist}/utils/ui/widget.d.ts +1 -1
  244. package/package.json +27 -50
  245. package/build/table.js +0 -5
  246. package/build/translations/af.js +0 -1
  247. package/build/translations/ar.js +0 -1
  248. package/build/translations/ast.js +0 -1
  249. package/build/translations/az.js +0 -1
  250. package/build/translations/be.js +0 -1
  251. package/build/translations/bg.js +0 -1
  252. package/build/translations/bn.js +0 -1
  253. package/build/translations/bs.js +0 -1
  254. package/build/translations/ca.js +0 -1
  255. package/build/translations/cs.js +0 -1
  256. package/build/translations/da.js +0 -1
  257. package/build/translations/de-ch.js +0 -1
  258. package/build/translations/de.js +0 -1
  259. package/build/translations/el.js +0 -1
  260. package/build/translations/en-au.js +0 -1
  261. package/build/translations/en-gb.js +0 -1
  262. package/build/translations/eo.js +0 -1
  263. package/build/translations/es-co.js +0 -1
  264. package/build/translations/es.js +0 -1
  265. package/build/translations/et.js +0 -1
  266. package/build/translations/eu.js +0 -1
  267. package/build/translations/fa.js +0 -1
  268. package/build/translations/fi.js +0 -1
  269. package/build/translations/fr.js +0 -1
  270. package/build/translations/gl.js +0 -1
  271. package/build/translations/gu.js +0 -1
  272. package/build/translations/he.js +0 -1
  273. package/build/translations/hi.js +0 -1
  274. package/build/translations/hr.js +0 -1
  275. package/build/translations/hu.js +0 -1
  276. package/build/translations/hy.js +0 -1
  277. package/build/translations/id.js +0 -1
  278. package/build/translations/it.js +0 -1
  279. package/build/translations/ja.js +0 -1
  280. package/build/translations/jv.js +0 -1
  281. package/build/translations/kk.js +0 -1
  282. package/build/translations/km.js +0 -1
  283. package/build/translations/kn.js +0 -1
  284. package/build/translations/ko.js +0 -1
  285. package/build/translations/ku.js +0 -1
  286. package/build/translations/lt.js +0 -1
  287. package/build/translations/lv.js +0 -1
  288. package/build/translations/ms.js +0 -1
  289. package/build/translations/nb.js +0 -1
  290. package/build/translations/ne.js +0 -1
  291. package/build/translations/nl.js +0 -1
  292. package/build/translations/no.js +0 -1
  293. package/build/translations/oc.js +0 -1
  294. package/build/translations/pl.js +0 -1
  295. package/build/translations/pt-br.js +0 -1
  296. package/build/translations/pt.js +0 -1
  297. package/build/translations/ro.js +0 -1
  298. package/build/translations/ru.js +0 -1
  299. package/build/translations/si.js +0 -1
  300. package/build/translations/sk.js +0 -1
  301. package/build/translations/sl.js +0 -1
  302. package/build/translations/sq.js +0 -1
  303. package/build/translations/sr-latn.js +0 -1
  304. package/build/translations/sr.js +0 -1
  305. package/build/translations/sv.js +0 -1
  306. package/build/translations/th.js +0 -1
  307. package/build/translations/ti.js +0 -1
  308. package/build/translations/tk.js +0 -1
  309. package/build/translations/tr.js +0 -1
  310. package/build/translations/tt.js +0 -1
  311. package/build/translations/ug.js +0 -1
  312. package/build/translations/uk.js +0 -1
  313. package/build/translations/ur.js +0 -1
  314. package/build/translations/uz.js +0 -1
  315. package/build/translations/vi.js +0 -1
  316. package/build/translations/zh-cn.js +0 -1
  317. package/build/translations/zh.js +0 -1
  318. package/lang/contexts.json +0 -82
  319. package/lang/translations/af.po +0 -332
  320. package/lang/translations/ar.po +0 -332
  321. package/lang/translations/ast.po +0 -332
  322. package/lang/translations/az.po +0 -332
  323. package/lang/translations/be.po +0 -332
  324. package/lang/translations/bg.po +0 -332
  325. package/lang/translations/bn.po +0 -334
  326. package/lang/translations/bs.po +0 -332
  327. package/lang/translations/ca.po +0 -332
  328. package/lang/translations/cs.po +0 -332
  329. package/lang/translations/da.po +0 -332
  330. package/lang/translations/de-ch.po +0 -332
  331. package/lang/translations/de.po +0 -332
  332. package/lang/translations/el.po +0 -332
  333. package/lang/translations/en-au.po +0 -332
  334. package/lang/translations/en-gb.po +0 -332
  335. package/lang/translations/en.po +0 -332
  336. package/lang/translations/eo.po +0 -332
  337. package/lang/translations/es-co.po +0 -332
  338. package/lang/translations/es.po +0 -332
  339. package/lang/translations/et.po +0 -332
  340. package/lang/translations/eu.po +0 -332
  341. package/lang/translations/fa.po +0 -332
  342. package/lang/translations/fi.po +0 -332
  343. package/lang/translations/fr.po +0 -332
  344. package/lang/translations/gl.po +0 -332
  345. package/lang/translations/gu.po +0 -332
  346. package/lang/translations/he.po +0 -332
  347. package/lang/translations/hi.po +0 -332
  348. package/lang/translations/hr.po +0 -332
  349. package/lang/translations/hu.po +0 -332
  350. package/lang/translations/hy.po +0 -332
  351. package/lang/translations/id.po +0 -332
  352. package/lang/translations/it.po +0 -332
  353. package/lang/translations/ja.po +0 -332
  354. package/lang/translations/jv.po +0 -332
  355. package/lang/translations/kk.po +0 -332
  356. package/lang/translations/km.po +0 -332
  357. package/lang/translations/kn.po +0 -332
  358. package/lang/translations/ko.po +0 -332
  359. package/lang/translations/ku.po +0 -332
  360. package/lang/translations/lt.po +0 -332
  361. package/lang/translations/lv.po +0 -332
  362. package/lang/translations/ms.po +0 -332
  363. package/lang/translations/nb.po +0 -332
  364. package/lang/translations/ne.po +0 -332
  365. package/lang/translations/nl.po +0 -332
  366. package/lang/translations/no.po +0 -332
  367. package/lang/translations/oc.po +0 -332
  368. package/lang/translations/pl.po +0 -332
  369. package/lang/translations/pt-br.po +0 -332
  370. package/lang/translations/pt.po +0 -332
  371. package/lang/translations/ro.po +0 -332
  372. package/lang/translations/ru.po +0 -332
  373. package/lang/translations/si.po +0 -332
  374. package/lang/translations/sk.po +0 -332
  375. package/lang/translations/sl.po +0 -332
  376. package/lang/translations/sq.po +0 -332
  377. package/lang/translations/sr-latn.po +0 -332
  378. package/lang/translations/sr.po +0 -332
  379. package/lang/translations/sv.po +0 -332
  380. package/lang/translations/th.po +0 -332
  381. package/lang/translations/ti.po +0 -332
  382. package/lang/translations/tk.po +0 -332
  383. package/lang/translations/tr.po +0 -332
  384. package/lang/translations/tt.po +0 -332
  385. package/lang/translations/ug.po +0 -332
  386. package/lang/translations/uk.po +0 -332
  387. package/lang/translations/ur.po +0 -332
  388. package/lang/translations/uz.po +0 -332
  389. package/lang/translations/vi.po +0 -332
  390. package/lang/translations/zh-cn.po +0 -332
  391. package/lang/translations/zh.po +0 -332
  392. package/src/augmentation.js +0 -5
  393. package/src/commands/insertcolumncommand.js +0 -71
  394. package/src/commands/insertrowcommand.js +0 -70
  395. package/src/commands/inserttablecommand.js +0 -69
  396. package/src/commands/inserttablelayoutcommand.js +0 -65
  397. package/src/commands/mergecellcommand.js +0 -206
  398. package/src/commands/mergecellscommand.js +0 -94
  399. package/src/commands/removecolumncommand.js +0 -109
  400. package/src/commands/removerowcommand.js +0 -82
  401. package/src/commands/selectcolumncommand.js +0 -60
  402. package/src/commands/selectrowcommand.js +0 -56
  403. package/src/commands/setheadercolumncommand.js +0 -76
  404. package/src/commands/setheaderrowcommand.js +0 -83
  405. package/src/commands/splitcellcommand.js +0 -58
  406. package/src/converters/downcast.js +0 -322
  407. package/src/converters/table-caption-post-fixer.js +0 -55
  408. package/src/converters/table-cell-paragraph-post-fixer.js +0 -109
  409. package/src/converters/table-cell-refresh-handler.js +0 -47
  410. package/src/converters/table-headings-refresh-handler.js +0 -51
  411. package/src/converters/table-layout-post-fixer.js +0 -369
  412. package/src/converters/tableproperties.js +0 -451
  413. package/src/converters/upcasttable.js +0 -385
  414. package/src/index.js +0 -98
  415. package/src/plaintableoutput.js +0 -49
  416. package/src/table.js +0 -50
  417. package/src/tablecaption/tablecaptionediting.js +0 -178
  418. package/src/tablecaption/tablecaptionui.js +0 -64
  419. package/src/tablecaption/toggletablecaptioncommand.js +0 -105
  420. package/src/tablecaption/utils.js +0 -61
  421. package/src/tablecaption.js +0 -34
  422. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +0 -30
  423. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +0 -44
  424. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +0 -44
  425. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +0 -64
  426. package/src/tablecellproperties/commands/tablecellheightcommand.js +0 -51
  427. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +0 -30
  428. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +0 -64
  429. package/src/tablecellproperties/commands/tablecellpropertycommand.js +0 -138
  430. package/src/tablecellproperties/commands/tablecelltypecommand.js +0 -167
  431. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +0 -38
  432. package/src/tablecellproperties/tablecellpropertiesediting.js +0 -412
  433. package/src/tablecellproperties/tablecellpropertiesui.js +0 -385
  434. package/src/tablecellproperties/tablecellpropertiesuiexperimental.d.ts +0 -128
  435. package/src/tablecellproperties/tablecellpropertiesuiexperimental.js +0 -408
  436. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +0 -229
  437. package/src/tablecellproperties/ui/tablecellpropertiesview.js +0 -612
  438. package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.js +0 -744
  439. package/src/tablecellproperties.js +0 -40
  440. package/src/tablecellwidth/commands/tablecellwidthcommand.js +0 -51
  441. package/src/tablecellwidth/tablecellwidthediting.js +0 -53
  442. package/src/tableclipboard.js +0 -500
  443. package/src/tablecolumnresize/constants.js +0 -33
  444. package/src/tablecolumnresize/converters.js +0 -62
  445. package/src/tablecolumnresize/tablecolumnresizeediting.js +0 -734
  446. package/src/tablecolumnresize/tablewidthscommand.js +0 -61
  447. package/src/tablecolumnresize/utils.js +0 -370
  448. package/src/tablecolumnresize.js +0 -36
  449. package/src/tableconfig.js +0 -5
  450. package/src/tableediting.js +0 -246
  451. package/src/tablekeyboard.js +0 -273
  452. package/src/tablelayout/commands/tabletypecommand.js +0 -68
  453. package/src/tablelayout/tablelayoutediting.js +0 -295
  454. package/src/tablelayout/tablelayoutui.js +0 -196
  455. package/src/tablelayout.js +0 -36
  456. package/src/tablemouse/mouseeventsobserver.js +0 -34
  457. package/src/tablemouse.js +0 -178
  458. package/src/tableproperties/commands/tablealignmentcommand.js +0 -30
  459. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +0 -30
  460. package/src/tableproperties/commands/tablebordercolorcommand.js +0 -44
  461. package/src/tableproperties/commands/tableborderstylecommand.js +0 -44
  462. package/src/tableproperties/commands/tableborderwidthcommand.js +0 -64
  463. package/src/tableproperties/commands/tableheightcommand.js +0 -54
  464. package/src/tableproperties/commands/tablepropertycommand.js +0 -103
  465. package/src/tableproperties/commands/tablewidthcommand.js +0 -54
  466. package/src/tableproperties/tablepropertiesediting.js +0 -546
  467. package/src/tableproperties/tablepropertiesui.js +0 -374
  468. package/src/tableproperties/tablepropertiesuiexperimental.d.ts +0 -136
  469. package/src/tableproperties/tablepropertiesuiexperimental.js +0 -375
  470. package/src/tableproperties/ui/tablepropertiesview.js +0 -520
  471. package/src/tableproperties/ui/tablepropertiesviewexperimental.d.ts +0 -216
  472. package/src/tableproperties/ui/tablepropertiesviewexperimental.js +0 -544
  473. package/src/tableproperties.js +0 -40
  474. package/src/tableselection.js +0 -323
  475. package/src/tabletoolbar.js +0 -63
  476. package/src/tableui.js +0 -335
  477. package/src/tableutils.js +0 -1282
  478. package/src/tablewalker.js +0 -489
  479. package/src/ui/colorinputview.js +0 -305
  480. package/src/ui/inserttableview.js +0 -192
  481. package/src/utils/common.js +0 -118
  482. package/src/utils/structure.js +0 -452
  483. package/src/utils/table-properties.js +0 -121
  484. package/src/utils/ui/contextualballoon.js +0 -111
  485. package/src/utils/ui/table-properties.js +0 -390
  486. package/src/utils/ui/table-propertiesexperimental.d.ts +0 -215
  487. package/src/utils/ui/table-propertiesexperimental.js +0 -391
  488. package/src/utils/ui/widget.js +0 -56
  489. package/theme/colorinput.css +0 -39
  490. package/theme/formrow-experimental.css +0 -15
  491. package/theme/formrow.css +0 -13
  492. package/theme/inserttable.css +0 -10
  493. package/theme/table.css +0 -144
  494. package/theme/tablecaption.css +0 -66
  495. package/theme/tablecellproperties-experimental.css +0 -4
  496. package/theme/tablecellproperties.css +0 -28
  497. package/theme/tablecolumnresize.css +0 -62
  498. package/theme/tableediting.css +0 -10
  499. package/theme/tableform-experimental.css +0 -61
  500. package/theme/tableform.css +0 -64
  501. package/theme/tablelayout.css +0 -74
  502. package/theme/tableproperties-experimental.css +0 -78
  503. package/theme/tableproperties.css +0 -18
  504. package/theme/tableselection.css +0 -10
  505. /package/{src → dist}/tablecolumnresize/constants.d.ts +0 -0
@@ -1,109 +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
- * Injects a table cell post-fixer into the model which inserts a `paragraph` element into empty table cells.
7
- *
8
- * A table cell must contain at least one block element as a child. An empty table cell will have an empty `paragraph` as a child.
9
- *
10
- * ```xml
11
- * <table>
12
- * <tableRow>
13
- * <tableCell></tableCell>
14
- * </tableRow>
15
- * </table>
16
- * ```
17
- *
18
- * Will be fixed to:
19
- *
20
- * ```xml
21
- * <table>
22
- * <tableRow>
23
- * <tableCell><paragraph></paragraph></tableCell>
24
- * </tableRow>
25
- * </table>
26
- * ```
27
- *
28
- * @internal
29
- */
30
- export function injectTableCellParagraphPostFixer(model) {
31
- model.document.registerPostFixer(writer => tableCellContentsPostFixer(writer, model));
32
- }
33
- /**
34
- * The table cell contents post-fixer.
35
- */
36
- function tableCellContentsPostFixer(writer, model) {
37
- const changes = model.document.differ.getChanges();
38
- let wasFixed = false;
39
- for (const entry of changes) {
40
- if (entry.type == 'insert' && entry.name == 'table') {
41
- wasFixed = fixTable(entry.position.nodeAfter, writer) || wasFixed;
42
- }
43
- if (entry.type == 'insert' && entry.name == 'tableRow') {
44
- wasFixed = fixTableRow(entry.position.nodeAfter, writer) || wasFixed;
45
- }
46
- if (entry.type == 'insert' && entry.name == 'tableCell') {
47
- wasFixed = fixTableCellContent(entry.position.nodeAfter, writer) || wasFixed;
48
- }
49
- if ((entry.type == 'remove' || entry.type == 'insert') && checkTableCellChange(entry)) {
50
- wasFixed = fixTableCellContent(entry.position.parent, writer) || wasFixed;
51
- }
52
- }
53
- return wasFixed;
54
- }
55
- /**
56
- * Fixes all table cells in a table.
57
- */
58
- function fixTable(table, writer) {
59
- let wasFixed = false;
60
- for (const row of table.getChildren()) {
61
- if (row.is('element', 'tableRow')) {
62
- wasFixed = fixTableRow(row, writer) || wasFixed;
63
- }
64
- }
65
- return wasFixed;
66
- }
67
- /**
68
- * Fixes all table cells in a table row.
69
- */
70
- function fixTableRow(tableRow, writer) {
71
- let wasFixed = false;
72
- for (const tableCell of tableRow.getChildren()) {
73
- wasFixed = fixTableCellContent(tableCell, writer) || wasFixed;
74
- }
75
- return wasFixed;
76
- }
77
- /**
78
- * Fixes all table cell content by:
79
- * - Adding a paragraph to a table cell without any child.
80
- * - Wrapping direct $text in a `<paragraph>`.
81
- */
82
- function fixTableCellContent(tableCell, writer) {
83
- // Insert paragraph to an empty table cell.
84
- if (tableCell.childCount == 0) {
85
- // @if CK_DEBUG_TABLE // console.log( 'Post-fixing table: insert paragraph in empty cell.' );
86
- writer.insertElement('paragraph', tableCell);
87
- return true;
88
- }
89
- // Check table cell children for directly placed text nodes.
90
- // Temporary solution. See https://github.com/ckeditor/ckeditor5/issues/1464.
91
- const textNodes = Array.from(tableCell.getChildren()).filter(child => child.is('$text'));
92
- // @if CK_DEBUG_TABLE // textNodes.length && console.log( 'Post-fixing table: wrap cell content with paragraph.' );
93
- for (const child of textNodes) {
94
- writer.wrap(writer.createRangeOn(child), 'paragraph');
95
- }
96
- // Return true when there were text nodes to fix.
97
- return !!textNodes.length;
98
- }
99
- /**
100
- * Checks if a differ change should fix the table cell. This happens on:
101
- * - Removing content from the table cell (i.e. `tableCell` can be left empty).
102
- * - Adding a text node directly into a table cell.
103
- */
104
- function checkTableCellChange(entry) {
105
- if (!entry.position.parent.is('element', 'tableCell')) {
106
- return false;
107
- }
108
- return entry.type == 'insert' && entry.name == '$text' || entry.type == 'remove';
109
- }
@@ -1,47 +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 { isSingleParagraphWithoutAttributes } from './downcast.js';
6
- /**
7
- * A table cell refresh handler which marks the table cell in the differ to have it re-rendered.
8
- *
9
- * Model `paragraph` inside a table cell can be rendered as `<span>` or `<p>`. It is rendered as `<span>` if this is the only block
10
- * element in that table cell and it does not have any attributes. It is rendered as `<p>` otherwise.
11
- *
12
- * When table cell content changes, for example a second `paragraph` element is added, we need to ensure that the first `paragraph` is
13
- * re-rendered so it changes from `<span>` to `<p>`. The easiest way to do it is to re-render the entire table cell.
14
- *
15
- * @internal
16
- */
17
- export function tableCellRefreshHandler(model, editing) {
18
- const differ = model.document.differ;
19
- // Stores cells to be refreshed, so the table cell will be refreshed once for multiple changes.
20
- const cellsToCheck = new Set();
21
- for (const change of differ.getChanges()) {
22
- const parent = change.type == 'attribute' ? change.range.start.parent : change.position.parent;
23
- if (parent.is('element', 'tableCell')) {
24
- cellsToCheck.add(parent);
25
- }
26
- }
27
- for (const tableCell of cellsToCheck.values()) {
28
- const paragraphsToRefresh = Array.from(tableCell.getChildren())
29
- .filter(child => shouldRefresh(child, editing.mapper));
30
- for (const paragraph of paragraphsToRefresh) {
31
- editing.reconvertItem(paragraph);
32
- }
33
- }
34
- }
35
- /**
36
- * Check if given model element needs refreshing.
37
- */
38
- function shouldRefresh(child, mapper) {
39
- if (!child.is('element', 'paragraph')) {
40
- return false;
41
- }
42
- const viewElement = mapper.toViewElement(child);
43
- if (!viewElement) {
44
- return false;
45
- }
46
- return isSingleParagraphWithoutAttributes(child) !== viewElement.is('element', 'span');
47
- }
@@ -1,51 +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 { TableWalker } from '../tablewalker.js';
6
- /**
7
- * A table headings refresh handler which marks the table cells or rows in the differ to have it re-rendered
8
- * if the headings attribute changed.
9
- *
10
- * Table heading rows and heading columns are represented in the model by a `headingRows` and `headingColumns` attributes.
11
- *
12
- * When table headings attribute changes, all the cells/rows are marked to re-render to change between `<td>` and `<th>`.
13
- *
14
- * @internal
15
- */
16
- export function tableHeadingsRefreshHandler(model, editing) {
17
- const differ = model.document.differ;
18
- for (const change of differ.getChanges()) {
19
- let table;
20
- let isRowChange = false;
21
- if (change.type == 'attribute') {
22
- const element = change.range.start.nodeAfter;
23
- if (!element || !element.is('element', 'table')) {
24
- continue;
25
- }
26
- if (change.attributeKey != 'headingRows' && change.attributeKey != 'headingColumns') {
27
- continue;
28
- }
29
- table = element;
30
- isRowChange = change.attributeKey == 'headingRows';
31
- }
32
- else if (change.name == 'tableRow' || change.name == 'tableCell') {
33
- table = change.position.findAncestor('table');
34
- isRowChange = change.name == 'tableRow';
35
- }
36
- if (!table) {
37
- continue;
38
- }
39
- const headingRows = table.getAttribute('headingRows') || 0;
40
- const headingColumns = table.getAttribute('headingColumns') || 0;
41
- const tableWalker = new TableWalker(table);
42
- for (const tableSlot of tableWalker) {
43
- const isHeading = tableSlot.row < headingRows || tableSlot.column < headingColumns;
44
- const expectedElementName = isHeading ? 'th' : 'td';
45
- const viewElement = editing.mapper.toViewElement(tableSlot.cell);
46
- if (viewElement && viewElement.is('element') && viewElement.name != expectedElementName) {
47
- editing.reconvertItem((isRowChange ? tableSlot.cell.parent : tableSlot.cell));
48
- }
49
- }
50
- }
51
- }
@@ -1,369 +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 { TableWalker } from './../tablewalker.js';
6
- import { createEmptyTableCell, updateNumericAttribute } from '../utils/common.js';
7
- /**
8
- * Injects a table layout post-fixer into the model.
9
- *
10
- * The role of the table layout post-fixer is to ensure that the table rows have the correct structure
11
- * after a {@link module:engine/model/model~Model#change `change()`} block was executed.
12
- *
13
- * The correct structure means that:
14
- *
15
- * * All table rows have the same size.
16
- * * None of the table cells extend vertically beyond their section (either header or body).
17
- * * A table cell has always at least one element as a child.
18
- *
19
- * If the table structure is not correct, the post-fixer will automatically correct it in two steps:
20
- *
21
- * 1. It will clip table cells that extend beyond their section.
22
- * 2. It will add empty table cells to the rows that are narrower than the widest table row.
23
- *
24
- * ## Clipping overlapping table cells
25
- *
26
- * Such situation may occur when pasting a table (or a part of a table) to the editor from external sources.
27
- *
28
- * For example, see the following table which has a cell (FOO) with the rowspan attribute (2):
29
- *
30
- * ```xml
31
- * <table headingRows="1">
32
- * <tableRow>
33
- * <tableCell rowspan="2"><paragraph>FOO</paragraph></tableCell>
34
- * <tableCell colspan="2"><paragraph>BAR</paragraph></tableCell>
35
- * </tableRow>
36
- * <tableRow>
37
- * <tableCell><paragraph>BAZ</paragraph></tableCell>
38
- * <tableCell><paragraph>XYZ</paragraph></tableCell>
39
- * </tableRow>
40
- * </table>
41
- * ```
42
- *
43
- * It will be rendered in the view as:
44
- *
45
- * ```xml
46
- * <table>
47
- * <thead>
48
- * <tr>
49
- * <td rowspan="2">FOO</td>
50
- * <td colspan="2">BAR</td>
51
- * </tr>
52
- * </thead>
53
- * <tbody>
54
- * <tr>
55
- * <td>BAZ</td>
56
- * <td>XYZ</td>
57
- * </tr>
58
- * </tbody>
59
- * </table>
60
- * ```
61
- *
62
- * In the above example the table will be rendered as a table with two rows: one in the header and second one in the body.
63
- * The table cell (FOO) cannot span over multiple rows as it would extend from the header to the body section.
64
- * The `rowspan` attribute must be changed to (1). The value (1) is the default value of the `rowspan` attribute
65
- * so the `rowspan` attribute will be removed from the model.
66
- *
67
- * The table cell with BAZ in the content will be in the first column of the table.
68
- *
69
- * ## Adding missing table cells
70
- *
71
- * The table post-fixer will insert empty table cells to equalize table row sizes (the number of columns).
72
- * The size of a table row is calculated by counting column spans of table cells, both horizontal (from the same row) and
73
- * vertical (from the rows above).
74
- *
75
- * In the above example, the table row in the body section of the table is narrower then the row from the header: it has two cells
76
- * with the default colspan (1). The header row has one cell with colspan (1) and the second with colspan (2).
77
- * The table cell (FOO) does not extend beyond the head section (and as such will be fixed in the first step of this post-fixer).
78
- * The post-fixer will add a missing table cell to the row in the body section of the table.
79
- *
80
- * The table from the above example will be fixed and rendered to the view as below:
81
- *
82
- * ```xml
83
- * <table>
84
- * <thead>
85
- * <tr>
86
- * <td rowspan="2">FOO</td>
87
- * <td colspan="2">BAR</td>
88
- * </tr>
89
- * </thead>
90
- * <tbody>
91
- * <tr>
92
- * <td>BAZ</td>
93
- * <td>XYZ</td>
94
- * </tr>
95
- * </tbody>
96
- * </table>
97
- * ```
98
- *
99
- * ## Collaboration and undo - Expectations vs post-fixer results
100
- *
101
- * The table post-fixer only ensures proper structure without a deeper analysis of the nature of the change. As such, it might lead
102
- * to a structure which was not intended by the user. In particular, it will also fix undo steps (in conjunction with collaboration)
103
- * in which the editor content might not return to the original state.
104
- *
105
- * This will usually happen when one or more users change the size of the table.
106
- *
107
- * As an example see the table below:
108
- *
109
- * ```xml
110
- * <table>
111
- * <tbody>
112
- * <tr>
113
- * <td>11</td>
114
- * <td>12</td>
115
- * </tr>
116
- * <tr>
117
- * <td>21</td>
118
- * <td>22</td>
119
- * </tr>
120
- * </tbody>
121
- * </table>
122
- * ```
123
- *
124
- * and the user actions:
125
- *
126
- * 1. Both users have a table with two rows and two columns.
127
- * 2. User A adds a column at the end of the table. This will insert empty table cells to two rows.
128
- * 3. User B adds a row at the end of the table. This will insert a row with two empty table cells.
129
- * 4. Both users will have a table as below:
130
- *
131
- * ```xml
132
- * <table>
133
- * <tbody>
134
- * <tr>
135
- * <td>11</td>
136
- * <td>12</td>
137
- * <td>(empty, inserted by A)</td>
138
- * </tr>
139
- * <tr>
140
- * <td>21</td>
141
- * <td>22</td>
142
- * <td>(empty, inserted by A)</td>
143
- * </tr>
144
- * <tr>
145
- * <td>(empty, inserted by B)</td>
146
- * <td>(empty, inserted by B)</td>
147
- * </tr>
148
- * </tbody>
149
- * </table>
150
- * ```
151
- *
152
- * The last row is shorter then others so the table post-fixer will add an empty row to the last row:
153
- *
154
- * ```xml
155
- * <table>
156
- * <tbody>
157
- * <tr>
158
- * <td>11</td>
159
- * <td>12</td>
160
- * <td>(empty, inserted by A)</td>
161
- * </tr>
162
- * <tr>
163
- * <td>21</td>
164
- * <td>22</td>
165
- * <td>(empty, inserted by A)</td>
166
- * </tr>
167
- * <tr>
168
- * <td>(empty, inserted by B)</td>
169
- * <td>(empty, inserted by B)</td>
170
- * <td>(empty, inserted by the post-fixer)</td>
171
- * </tr>
172
- * </tbody>
173
- * </table>
174
- * ```
175
- *
176
- * Unfortunately undo does not know the nature of the changes and depending on which user applies the post-fixer changes, undoing them
177
- * might lead to a broken table. If User B undoes inserting the column to the table, the undo engine will undo only the operations of
178
- * inserting empty cells to rows from the initial table state (row 1 and 2) but the cell in the post-fixed row will remain:
179
- *
180
- * ```xml
181
- * <table>
182
- * <tbody>
183
- * <tr>
184
- * <td>11</td>
185
- * <td>12</td>
186
- * </tr>
187
- * <tr>
188
- * <td>21</td>
189
- * <td>22</td>
190
- * </tr>
191
- * <tr>
192
- * <td>(empty, inserted by B)</td>
193
- * <td>(empty, inserted by B)</td>
194
- * <td>(empty, inserted by a post-fixer)</td>
195
- * </tr>
196
- * </tbody>
197
- * </table>
198
- * ```
199
- *
200
- * After undo, the table post-fixer will detect that two rows are shorter than others and will fix the table to:
201
- *
202
- * ```xml
203
- * <table>
204
- * <tbody>
205
- * <tr>
206
- * <td>11</td>
207
- * <td>12</td>
208
- * <td>(empty, inserted by a post-fixer after undo)</td>
209
- * </tr>
210
- * <tr>
211
- * <td>21</td>
212
- * <td>22</td>
213
- * <td>(empty, inserted by a post-fixer after undo)</td>
214
- * </tr>
215
- * <tr>
216
- * <td>(empty, inserted by B)</td>
217
- * <td>(empty, inserted by B)</td>
218
- * <td>(empty, inserted by a post-fixer)</td>
219
- * </tr>
220
- * </tbody>
221
- * </table>
222
- * ```
223
- *
224
- * @internal
225
- */
226
- export function injectTableLayoutPostFixer(model) {
227
- model.document.registerPostFixer(writer => tableLayoutPostFixer(writer, model));
228
- }
229
- /**
230
- * The table layout post-fixer.
231
- */
232
- function tableLayoutPostFixer(writer, model) {
233
- const changes = model.document.differ.getChanges();
234
- let wasFixed = false;
235
- // Do not analyze the same table more then once - may happen for multiple changes in the same table.
236
- const analyzedTables = new Set();
237
- for (const entry of changes) {
238
- let table = null;
239
- if (entry.type == 'insert' && entry.name == 'table') {
240
- table = entry.position.nodeAfter;
241
- }
242
- // Fix table on adding/removing table cells and rows.
243
- if ((entry.type == 'insert' || entry.type == 'remove') && (entry.name == 'tableRow' || entry.name == 'tableCell')) {
244
- table = entry.position.findAncestor('table');
245
- }
246
- // Fix table on any table's attribute change - including attributes of table cells.
247
- if (isTableAttributeEntry(entry)) {
248
- table = entry.range.start.findAncestor('table');
249
- }
250
- if (table && !analyzedTables.has(table)) {
251
- // Step 1: correct rowspans of table cells if necessary.
252
- // The wasFixed flag should be true if any of tables in batch was fixed - might be more then one.
253
- wasFixed = fixTableCellsRowspan(table, writer) || wasFixed;
254
- // Step 2: fix table rows sizes.
255
- wasFixed = fixTableRowsSizes(table, writer) || wasFixed;
256
- analyzedTables.add(table);
257
- }
258
- }
259
- return wasFixed;
260
- }
261
- /**
262
- * Fixes the invalid value of the `rowspan` attribute because a table cell cannot vertically extend beyond the table section it belongs to.
263
- *
264
- * @returns Returns `true` if the table was fixed.
265
- */
266
- function fixTableCellsRowspan(table, writer) {
267
- let wasFixed = false;
268
- const cellsToTrim = findCellsToTrim(table);
269
- if (cellsToTrim.length) {
270
- // @if CK_DEBUG_TABLE // console.log( `Post-fixing table: trimming cells row-spans (${ cellsToTrim.length }).` );
271
- wasFixed = true;
272
- for (const data of cellsToTrim) {
273
- updateNumericAttribute('rowspan', data.rowspan, data.cell, writer, 1);
274
- }
275
- }
276
- return wasFixed;
277
- }
278
- /**
279
- * Makes all table rows in a table the same size.
280
- *
281
- * @returns Returns `true` if the table was fixed.
282
- */
283
- function fixTableRowsSizes(table, writer) {
284
- let wasFixed = false;
285
- const childrenLengths = getChildrenLengths(table);
286
- const rowsToRemove = [];
287
- // Find empty rows.
288
- for (const [rowIndex, size] of childrenLengths.entries()) {
289
- // Ignore all non-row models.
290
- if (!size && table.getChild(rowIndex).is('element', 'tableRow')) {
291
- rowsToRemove.push(rowIndex);
292
- }
293
- }
294
- // Remove empty rows.
295
- if (rowsToRemove.length) {
296
- // @if CK_DEBUG_TABLE // console.log( `Post-fixing table: remove empty rows (${ rowsToRemove.length }).` );
297
- wasFixed = true;
298
- for (const rowIndex of rowsToRemove.reverse()) {
299
- writer.remove(table.getChild(rowIndex));
300
- childrenLengths.splice(rowIndex, 1);
301
- }
302
- }
303
- // Filter out everything that's not a table row.
304
- const rowsLengths = childrenLengths.filter((row, rowIndex) => table.getChild(rowIndex).is('element', 'tableRow'));
305
- // Verify if all the rows have the same number of columns.
306
- const tableSize = rowsLengths[0];
307
- const isValid = rowsLengths.every(length => length === tableSize);
308
- if (!isValid) {
309
- // @if CK_DEBUG_TABLE // console.log( 'Post-fixing table: adding missing cells.' );
310
- // Find the maximum number of columns.
311
- const maxColumns = rowsLengths.reduce((prev, current) => current > prev ? current : prev, 0);
312
- for (const [rowIndex, size] of rowsLengths.entries()) {
313
- const columnsToInsert = maxColumns - size;
314
- if (columnsToInsert) {
315
- for (let i = 0; i < columnsToInsert; i++) {
316
- createEmptyTableCell(writer, writer.createPositionAt(table.getChild(rowIndex), 'end'));
317
- }
318
- wasFixed = true;
319
- }
320
- }
321
- }
322
- return wasFixed;
323
- }
324
- /**
325
- * Searches for table cells that extend beyond the table section to which they belong to. It will return an array of objects
326
- * that stores table cells to be trimmed and the correct value of the `rowspan` attribute to set.
327
- */
328
- function findCellsToTrim(table) {
329
- const headingRows = parseInt(table.getAttribute('headingRows') || '0');
330
- const maxRows = Array.from(table.getChildren())
331
- .reduce((count, row) => row.is('element', 'tableRow') ? count + 1 : count, 0);
332
- const cellsToTrim = [];
333
- for (const { row, cell, cellHeight } of new TableWalker(table)) {
334
- // Skip cells that do not expand over its row.
335
- if (cellHeight < 2) {
336
- continue;
337
- }
338
- const isInHeader = row < headingRows;
339
- // Row limit is either end of header section or whole table as table body is after the header.
340
- const rowLimit = isInHeader ? headingRows : maxRows;
341
- // If table cell expands over its limit reduce it height to proper value.
342
- if (row + cellHeight > rowLimit) {
343
- const newRowspan = rowLimit - row;
344
- cellsToTrim.push({ cell, rowspan: newRowspan });
345
- }
346
- }
347
- return cellsToTrim;
348
- }
349
- /**
350
- * Returns an array with lengths of rows assigned to the corresponding row index.
351
- */
352
- function getChildrenLengths(table) {
353
- // TableWalker will not provide items for the empty rows, we need to pre-fill this array.
354
- const lengths = new Array(table.childCount).fill(0);
355
- for (const { rowIndex } of new TableWalker(table, { includeAllSlots: true })) {
356
- lengths[rowIndex]++;
357
- }
358
- return lengths;
359
- }
360
- /**
361
- * Checks if the differ entry for an attribute change is one of the table's attributes.
362
- */
363
- function isTableAttributeEntry(entry) {
364
- if (entry.type !== 'attribute') {
365
- return false;
366
- }
367
- const key = entry.attributeKey;
368
- return key === 'headingRows' || key === 'colspan' || key === 'rowspan';
369
- }