@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,246 +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/tableediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core.js';
9
- import { upcastTable, ensureParagraphInTableCell, skipEmptyTableRow, upcastTableFigure } from './converters/upcasttable.js';
10
- import { convertParagraphInTableCell, downcastCell, downcastRow, downcastTable, downcastTableBorderAndBackgroundAttributes, convertPlainTable, convertPlainTableCaption } from './converters/downcast.js';
11
- import { InsertTableCommand } from './commands/inserttablecommand.js';
12
- import { InsertRowCommand } from './commands/insertrowcommand.js';
13
- import { InsertColumnCommand } from './commands/insertcolumncommand.js';
14
- import { SplitCellCommand } from './commands/splitcellcommand.js';
15
- import { MergeCellCommand } from './commands/mergecellcommand.js';
16
- import { RemoveRowCommand } from './commands/removerowcommand.js';
17
- import { RemoveColumnCommand } from './commands/removecolumncommand.js';
18
- import { SetHeaderRowCommand } from './commands/setheaderrowcommand.js';
19
- import { SetHeaderColumnCommand } from './commands/setheadercolumncommand.js';
20
- import { MergeCellsCommand } from './commands/mergecellscommand.js';
21
- import { SelectRowCommand } from './commands/selectrowcommand.js';
22
- import { SelectColumnCommand } from './commands/selectcolumncommand.js';
23
- import { TableUtils } from '../src/tableutils.js';
24
- import { injectTableLayoutPostFixer } from './converters/table-layout-post-fixer.js';
25
- import { injectTableCellParagraphPostFixer } from './converters/table-cell-paragraph-post-fixer.js';
26
- import { tableHeadingsRefreshHandler } from './converters/table-headings-refresh-handler.js';
27
- import { tableCellRefreshHandler } from './converters/table-cell-refresh-handler.js';
28
- import { isTableCellTypeEnabled } from './utils/common.js';
29
- import '../theme/tableediting.css';
30
- /**
31
- * The table editing feature.
32
- */
33
- export class TableEditing extends Plugin {
34
- /**
35
- * Handlers for creating additional slots in the table.
36
- */
37
- _additionalSlots;
38
- /**
39
- * @inheritDoc
40
- */
41
- static get pluginName() {
42
- return 'TableEditing';
43
- }
44
- /**
45
- * @inheritDoc
46
- */
47
- static get isOfficialPlugin() {
48
- return true;
49
- }
50
- /**
51
- * @inheritDoc
52
- */
53
- static get requires() {
54
- return [TableUtils];
55
- }
56
- /**
57
- * @inheritDoc
58
- */
59
- constructor(editor) {
60
- super(editor);
61
- this._additionalSlots = [];
62
- }
63
- /**
64
- * @inheritDoc
65
- */
66
- init() {
67
- const editor = this.editor;
68
- const model = editor.model;
69
- const schema = model.schema;
70
- const conversion = editor.conversion;
71
- const tableUtils = editor.plugins.get(TableUtils);
72
- schema.register('table', {
73
- inheritAllFrom: '$blockObject',
74
- allowAttributes: ['headingRows', 'headingColumns']
75
- });
76
- schema.register('tableRow', {
77
- allowIn: 'table',
78
- isLimit: true
79
- });
80
- schema.register('tableCell', {
81
- allowContentOf: '$container',
82
- allowIn: 'tableRow',
83
- allowAttributes: ['colspan', 'rowspan'],
84
- isLimit: true,
85
- isSelectable: true
86
- });
87
- // Figure conversion.
88
- conversion.for('upcast').add(upcastTableFigure());
89
- // Table conversion.
90
- conversion.for('upcast').add(upcastTable());
91
- conversion.for('editingDowncast').elementToStructure({
92
- model: {
93
- name: 'table',
94
- attributes: ['headingRows']
95
- },
96
- view: downcastTable(tableUtils, {
97
- asWidget: true,
98
- additionalSlots: this._additionalSlots
99
- })
100
- });
101
- conversion.for('dataDowncast').elementToStructure({
102
- model: {
103
- name: 'table',
104
- attributes: ['headingRows']
105
- },
106
- view: downcastTable(tableUtils, {
107
- additionalSlots: this._additionalSlots
108
- })
109
- });
110
- // Table row conversion.
111
- conversion.for('upcast').elementToElement({ model: 'tableRow', view: 'tr' });
112
- conversion.for('upcast').add(skipEmptyTableRow());
113
- conversion.for('downcast').elementToElement({
114
- model: 'tableRow',
115
- view: downcastRow()
116
- });
117
- // Table cell conversion.
118
- conversion.for('upcast').elementToElement({ model: 'tableCell', view: 'td' });
119
- conversion.for('upcast').elementToElement({ model: 'tableCell', view: 'th' });
120
- conversion.for('upcast').add(ensureParagraphInTableCell('td'));
121
- conversion.for('upcast').add(ensureParagraphInTableCell('th'));
122
- conversion.for('editingDowncast').elementToElement({
123
- model: 'tableCell',
124
- view: downcastCell({
125
- asWidget: true,
126
- cellTypeEnabled: () => isTableCellTypeEnabled(this.editor)
127
- })
128
- });
129
- conversion.for('dataDowncast').elementToElement({
130
- model: 'tableCell',
131
- view: downcastCell({
132
- cellTypeEnabled: () => isTableCellTypeEnabled(this.editor)
133
- })
134
- });
135
- // Duplicates code - needed to properly refresh paragraph inside a table cell.
136
- conversion.for('editingDowncast').elementToElement({
137
- model: 'paragraph',
138
- view: convertParagraphInTableCell({ asWidget: true }),
139
- converterPriority: 'high'
140
- });
141
- conversion.for('dataDowncast').elementToElement({
142
- model: 'paragraph',
143
- view: convertParagraphInTableCell(),
144
- converterPriority: 'high'
145
- });
146
- // Table attributes conversion.
147
- conversion.for('downcast').attributeToAttribute({ model: 'colspan', view: 'colspan' });
148
- conversion.for('upcast').attributeToAttribute({
149
- model: { key: 'colspan', value: upcastCellSpan('colspan') },
150
- view: 'colspan'
151
- });
152
- conversion.for('downcast').attributeToAttribute({ model: 'rowspan', view: 'rowspan' });
153
- conversion.for('upcast').attributeToAttribute({
154
- model: { key: 'rowspan', value: upcastCellSpan('rowspan') },
155
- view: 'rowspan'
156
- });
157
- // Plain table output converters (also used in the clipboard pipeline).
158
- this._addPlainTableOutputConverters();
159
- // Define the config.
160
- editor.config.define('table.defaultHeadings.rows', 0);
161
- editor.config.define('table.defaultHeadings.columns', 0);
162
- editor.config.define('table.showHiddenBorders', true);
163
- if (editor.config.get('table.showHiddenBorders')) {
164
- editor.editing.view.change(writer => {
165
- for (const root of editor.editing.view.document.roots) {
166
- writer.addClass('ck-table-show-hidden-borders', root);
167
- }
168
- });
169
- }
170
- // Define all the commands.
171
- editor.commands.add('insertTable', new InsertTableCommand(editor));
172
- editor.commands.add('insertTableRowAbove', new InsertRowCommand(editor, { order: 'above' }));
173
- editor.commands.add('insertTableRowBelow', new InsertRowCommand(editor, { order: 'below' }));
174
- editor.commands.add('insertTableColumnLeft', new InsertColumnCommand(editor, { order: 'left' }));
175
- editor.commands.add('insertTableColumnRight', new InsertColumnCommand(editor, { order: 'right' }));
176
- editor.commands.add('removeTableRow', new RemoveRowCommand(editor));
177
- editor.commands.add('removeTableColumn', new RemoveColumnCommand(editor));
178
- editor.commands.add('splitTableCellVertically', new SplitCellCommand(editor, { direction: 'vertically' }));
179
- editor.commands.add('splitTableCellHorizontally', new SplitCellCommand(editor, { direction: 'horizontally' }));
180
- editor.commands.add('mergeTableCells', new MergeCellsCommand(editor));
181
- editor.commands.add('mergeTableCellRight', new MergeCellCommand(editor, { direction: 'right' }));
182
- editor.commands.add('mergeTableCellLeft', new MergeCellCommand(editor, { direction: 'left' }));
183
- editor.commands.add('mergeTableCellDown', new MergeCellCommand(editor, { direction: 'down' }));
184
- editor.commands.add('mergeTableCellUp', new MergeCellCommand(editor, { direction: 'up' }));
185
- editor.commands.add('setTableColumnHeader', new SetHeaderColumnCommand(editor));
186
- editor.commands.add('setTableRowHeader', new SetHeaderRowCommand(editor));
187
- editor.commands.add('selectTableRow', new SelectRowCommand(editor));
188
- editor.commands.add('selectTableColumn', new SelectColumnCommand(editor));
189
- injectTableLayoutPostFixer(model);
190
- injectTableCellParagraphPostFixer(model);
191
- this.listenTo(model.document, 'change:data', () => {
192
- // It's no longer needed to refresh table headings on every data change if table cell type feature is enabled.
193
- // It's because headings rows / columns are updated based on cell types which triggers their own refresh handler.
194
- if (!isTableCellTypeEnabled(editor)) {
195
- tableHeadingsRefreshHandler(model, editor.editing);
196
- }
197
- tableCellRefreshHandler(model, editor.editing);
198
- });
199
- }
200
- /**
201
- * Registers downcast handler for the additional table slot.
202
- */
203
- registerAdditionalSlot(slotHandler) {
204
- this._additionalSlots.push(slotHandler);
205
- }
206
- /**
207
- * Adds converters for plain table output. These converters are used either when the `PlainTableOutput` plugin is loaded
208
- * or when content is processed by the clipboard pipeline, ensuring that pasted tables are not wrapped in a <figure> element.
209
- */
210
- _addPlainTableOutputConverters() {
211
- const editor = this.editor;
212
- // Override default table data downcast converter.
213
- editor.conversion.for('dataDowncast').elementToStructure({
214
- model: 'table',
215
- view: convertPlainTable(editor),
216
- converterPriority: 'high'
217
- });
218
- // Make sure table <caption> is downcasted into <caption> in the data pipeline when necessary.
219
- if (editor.plugins.has('TableCaptionEditing')) {
220
- editor.conversion.for('dataDowncast').elementToElement({
221
- model: 'caption',
222
- view: convertPlainTableCaption(editor),
223
- converterPriority: 'high'
224
- });
225
- }
226
- // Handle border-style, border-color, border-width and background-color table attributes.
227
- if (editor.plugins.has('TablePropertiesEditing')) {
228
- downcastTableBorderAndBackgroundAttributes(editor);
229
- }
230
- }
231
- }
232
- /**
233
- * Returns fixed colspan and rowspan attrbutes values.
234
- *
235
- * @param type colspan or rowspan.
236
- * @returns conversion value function.
237
- */
238
- function upcastCellSpan(type) {
239
- return (cell) => {
240
- const span = parseInt(cell.getAttribute(type));
241
- if (Number.isNaN(span) || span <= 0) {
242
- return null;
243
- }
244
- return span;
245
- };
246
- }
@@ -1,273 +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/tablekeyboard
7
- */
8
- import { TableSelection } from './tableselection.js';
9
- import { TableWalker } from './tablewalker.js';
10
- import { TableUtils } from './tableutils.js';
11
- import { Plugin } from 'ckeditor5/src/core.js';
12
- import { getLocalizedArrowKeyCodeDirection } from 'ckeditor5/src/utils.js';
13
- /**
14
- * This plugin enables keyboard navigation for tables.
15
- * It is loaded automatically by the {@link module:table/table~Table} plugin.
16
- */
17
- export class TableKeyboard extends Plugin {
18
- /**
19
- * @inheritDoc
20
- */
21
- static get pluginName() {
22
- return 'TableKeyboard';
23
- }
24
- /**
25
- * @inheritDoc
26
- */
27
- static get isOfficialPlugin() {
28
- return true;
29
- }
30
- /**
31
- * @inheritDoc
32
- */
33
- static get requires() {
34
- return [TableSelection, TableUtils];
35
- }
36
- /**
37
- * @inheritDoc
38
- */
39
- init() {
40
- const editor = this.editor;
41
- const view = editor.editing.view;
42
- const viewDocument = view.document;
43
- const t = editor.t;
44
- this.listenTo(viewDocument, 'arrowKey', (...args) => this._onArrowKey(...args), { context: 'table' });
45
- this.listenTo(viewDocument, 'tab', (...args) => this._handleTabOnSelectedTable(...args), { context: 'figure' });
46
- this.listenTo(viewDocument, 'tab', (...args) => this._handleTab(...args), { context: ['th', 'td'] });
47
- // Add the information about the keystrokes to the accessibility database.
48
- editor.accessibility.addKeystrokeInfoGroup({
49
- id: 'table',
50
- label: t('Keystrokes that can be used in a table cell'),
51
- keystrokes: [
52
- {
53
- label: t('Move the selection to the next cell'),
54
- keystroke: 'Tab'
55
- },
56
- {
57
- label: t('Move the selection to the previous cell'),
58
- keystroke: 'Shift+Tab'
59
- },
60
- {
61
- label: t('Insert a new table row (when in the last cell of a table)'),
62
- keystroke: 'Tab'
63
- },
64
- {
65
- label: t('Navigate through the table'),
66
- keystroke: [['arrowup'], ['arrowright'], ['arrowdown'], ['arrowleft']]
67
- }
68
- ]
69
- });
70
- }
71
- /**
72
- * Handles {@link module:engine/view/document~ViewDocument#event:tab tab} events for the <kbd>Tab</kbd> key executed
73
- * when the table widget is selected.
74
- */
75
- _handleTabOnSelectedTable(bubblingEventInfo, domEventData) {
76
- const editor = this.editor;
77
- const selection = editor.model.document.selection;
78
- const selectedElement = selection.getSelectedElement();
79
- if (!selectedElement || !selectedElement.is('element', 'table')) {
80
- return;
81
- }
82
- // For backward compatibility stop propagation of this DOM event.
83
- // The default tab handling from widgets handles navigation.
84
- domEventData.stopPropagation();
85
- }
86
- /**
87
- * Handles {@link module:engine/view/document~ViewDocument#event:tab tab} events for the <kbd>Tab</kbd> key executed
88
- * inside table cells.
89
- */
90
- _handleTab(bubblingEventInfo, domEventData) {
91
- const editor = this.editor;
92
- const tableUtils = this.editor.plugins.get(TableUtils);
93
- const tableSelection = this.editor.plugins.get('TableSelection');
94
- const selection = editor.model.document.selection;
95
- const isForward = !domEventData.shiftKey;
96
- let tableCell = tableUtils.getTableCellsContainingSelection(selection)[0];
97
- if (!tableCell) {
98
- tableCell = tableSelection.getFocusCell();
99
- }
100
- if (!tableCell) {
101
- return;
102
- }
103
- // For backward compatibility stop propagation of this DOM event.
104
- // The default tab handling from widgets handles navigation.
105
- domEventData.stopPropagation();
106
- const tableRow = tableCell.parent;
107
- const table = tableRow.parent;
108
- const currentRowIndex = table.getChildIndex(tableRow);
109
- const currentCellIndex = tableRow.getChildIndex(tableCell);
110
- const isLastCellInRow = currentCellIndex === tableRow.childCount - 1;
111
- const isLastRow = currentRowIndex === tableUtils.getRows(table) - 1;
112
- if (isForward && isLastRow && isLastCellInRow) {
113
- editor.execute('insertTableRowBelow');
114
- }
115
- }
116
- /**
117
- * Handles {@link module:engine/view/document~ViewDocument#event:keydown keydown} events.
118
- */
119
- _onArrowKey(eventInfo, domEventData) {
120
- const editor = this.editor;
121
- const keyCode = domEventData.keyCode;
122
- const direction = getLocalizedArrowKeyCodeDirection(keyCode, editor.locale.contentLanguageDirection);
123
- const wasHandled = this._handleArrowKeys(direction, domEventData.shiftKey);
124
- if (wasHandled) {
125
- domEventData.preventDefault();
126
- domEventData.stopPropagation();
127
- eventInfo.stop();
128
- }
129
- }
130
- /**
131
- * Handles arrow keys to move the selection around the table.
132
- *
133
- * @param direction The direction of the arrow key.
134
- * @param expandSelection If the current selection should be expanded.
135
- * @returns Returns `true` if key was handled.
136
- */
137
- _handleArrowKeys(direction, expandSelection) {
138
- const tableUtils = this.editor.plugins.get(TableUtils);
139
- const tableSelection = this.editor.plugins.get('TableSelection');
140
- const model = this.editor.model;
141
- const selection = model.document.selection;
142
- const isForward = ['right', 'down'].includes(direction);
143
- // In case one or more table cells are selected (from outside),
144
- // move the selection to a cell adjacent to the selected table fragment.
145
- const selectedCells = tableUtils.getSelectedTableCells(selection);
146
- if (selectedCells.length) {
147
- let focusCell;
148
- if (expandSelection) {
149
- focusCell = tableSelection.getFocusCell();
150
- }
151
- else {
152
- focusCell = isForward ? selectedCells[selectedCells.length - 1] : selectedCells[0];
153
- }
154
- this._navigateFromCellInDirection(focusCell, direction, expandSelection);
155
- return true;
156
- }
157
- // Abort if we're not in a table cell.
158
- const tableCell = selection.focus.findAncestor('tableCell');
159
- /* istanbul ignore if: paranoid check -- @preserve */
160
- if (!tableCell) {
161
- return false;
162
- }
163
- // When the selection is not collapsed.
164
- if (!selection.isCollapsed) {
165
- if (expandSelection) {
166
- // Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.
167
- // Selection for sure will not approach cell edge.
168
- //
169
- // With a special case when all cell content is selected - then selection should expand to the other cell.
170
- // Note: When the entire cell gets selected using CTRL+A, the selection is always forward.
171
- if (selection.isBackward == isForward && !selection.containsEntireContent(tableCell)) {
172
- return false;
173
- }
174
- }
175
- else {
176
- const selectedElement = selection.getSelectedElement();
177
- // It will collapse for non-object selected so it's not going to move to other cell.
178
- if (!selectedElement || !model.schema.isObject(selectedElement)) {
179
- return false;
180
- }
181
- }
182
- }
183
- // Let's check if the selection is at the beginning/end of the cell.
184
- if (this._isSelectionAtCellEdge(selection, tableCell, isForward)) {
185
- this._navigateFromCellInDirection(tableCell, direction, expandSelection);
186
- return true;
187
- }
188
- return false;
189
- }
190
- /**
191
- * Returns `true` if the selection is at the boundary of a table cell according to the navigation direction.
192
- *
193
- * @param selection The current selection.
194
- * @param tableCell The current table cell element.
195
- * @param isForward The expected navigation direction.
196
- */
197
- _isSelectionAtCellEdge(selection, tableCell, isForward) {
198
- const model = this.editor.model;
199
- const schema = this.editor.model.schema;
200
- const focus = isForward ? selection.getLastPosition() : selection.getFirstPosition();
201
- // If the current limit element is not table cell we are for sure not at the cell edge.
202
- // Also `modifySelection` will not let us out of it.
203
- if (!schema.getLimitElement(focus).is('element', 'tableCell')) {
204
- const boundaryPosition = model.createPositionAt(tableCell, isForward ? 'end' : 0);
205
- return boundaryPosition.isTouching(focus);
206
- }
207
- const probe = model.createSelection(focus);
208
- model.modifySelection(probe, { direction: isForward ? 'forward' : 'backward' });
209
- // If there was no change in the focus position, then it's not possible to move the selection there.
210
- return focus.isEqual(probe.focus);
211
- }
212
- /**
213
- * Moves the selection from the given table cell in the specified direction.
214
- *
215
- * @param focusCell The table cell that is current multi-cell selection focus.
216
- * @param direction Direction in which selection should move.
217
- * @param expandSelection If the current selection should be expanded. Default value is false.
218
- */
219
- _navigateFromCellInDirection(focusCell, direction, expandSelection = false) {
220
- const model = this.editor.model;
221
- const table = focusCell.findAncestor('table');
222
- const tableMap = [...new TableWalker(table, { includeAllSlots: true })];
223
- const { row: lastRow, column: lastColumn } = tableMap[tableMap.length - 1];
224
- const currentCellInfo = tableMap.find(({ cell }) => cell == focusCell);
225
- let { row, column } = currentCellInfo;
226
- switch (direction) {
227
- case 'left':
228
- column--;
229
- break;
230
- case 'up':
231
- row--;
232
- break;
233
- case 'right':
234
- column += currentCellInfo.cellWidth;
235
- break;
236
- case 'down':
237
- row += currentCellInfo.cellHeight;
238
- break;
239
- }
240
- const isOutsideVertically = row < 0 || row > lastRow;
241
- const isBeforeFirstCell = column < 0 && row <= 0;
242
- const isAfterLastCell = column > lastColumn && row >= lastRow;
243
- // Note that if the table cell at the end of a row is row-spanned then isAfterLastCell will never be true.
244
- // However, we don't know if user was navigating on the last row or not, so let's stay in the table.
245
- if (isOutsideVertically || isBeforeFirstCell || isAfterLastCell) {
246
- model.change(writer => {
247
- writer.setSelection(writer.createRangeOn(table));
248
- });
249
- return;
250
- }
251
- if (column < 0) {
252
- column = expandSelection ? 0 : lastColumn;
253
- row--;
254
- }
255
- else if (column > lastColumn) {
256
- column = expandSelection ? lastColumn : 0;
257
- row++;
258
- }
259
- const cellToSelect = tableMap.find(cellInfo => cellInfo.row == row && cellInfo.column == column).cell;
260
- const isForward = ['right', 'down'].includes(direction);
261
- const tableSelection = this.editor.plugins.get('TableSelection');
262
- if (expandSelection && tableSelection.isEnabled) {
263
- const anchorCell = tableSelection.getAnchorCell() || focusCell;
264
- tableSelection.setCellSelection(anchorCell, cellToSelect);
265
- }
266
- else {
267
- const positionToSelect = model.createPositionAt(cellToSelect, isForward ? 0 : 'end');
268
- model.change(writer => {
269
- writer.setSelection(positionToSelect);
270
- });
271
- }
272
- }
273
- }
@@ -1,68 +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/tablelayout/commands/tabletypecommand
7
- */
8
- import { Command } from 'ckeditor5/src/core.js';
9
- import { getSelectionAffectedTable } from '../../utils/common.js';
10
- /**
11
- * The set table type command.
12
- *
13
- * The command is registered by {@link module:table/tablelayout/tablelayoutediting~TableLayoutEditing}
14
- * as the `'tableType'` editor command.
15
- *
16
- * To set the table type at the current selection, execute the command and specify the table type:
17
- *
18
- * ```ts
19
- * editor.execute( 'tableType', 'layout' );
20
- * ```
21
- */
22
- export class TableTypeCommand extends Command {
23
- /**
24
- * @inheritDoc
25
- */
26
- refresh() {
27
- const model = this.editor.model;
28
- const selection = model.document.selection;
29
- const selectedTable = getSelectionAffectedTable(selection);
30
- if (selectedTable) {
31
- this.isEnabled = true;
32
- this.value = selectedTable.getAttribute('tableType');
33
- }
34
- else {
35
- this.isEnabled = false;
36
- this.value = null;
37
- }
38
- }
39
- /**
40
- * Executes the command.
41
- *
42
- * Set table type by the given table type parameter.
43
- *
44
- * @param tableType The type of table it should become.
45
- * @fires execute
46
- */
47
- execute(tableType) {
48
- const editor = this.editor;
49
- const model = editor.model;
50
- const selection = model.document.selection;
51
- const table = getSelectionAffectedTable(selection);
52
- const currentTableType = table.getAttribute('tableType');
53
- if (currentTableType === tableType) {
54
- return;
55
- }
56
- model.change(writer => {
57
- writer.setAttribute('tableType', tableType, table);
58
- model.schema.removeDisallowedAttributes([table], writer);
59
- const tableChildren = table.getChildren();
60
- // Check if all children are allowed for the new table type.
61
- for (const child of tableChildren) {
62
- if (!model.schema.checkChild(table, child)) {
63
- writer.remove(child);
64
- }
65
- }
66
- });
67
- }
68
- }