@ckeditor/ckeditor5-table 0.0.0-nightly-20260118.0 → 0.0.0-nightly-next-20260118.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/ckeditor5-metadata.json +16 -7
  2. package/{src → dist}/augmentation.d.ts +0 -15
  3. package/{src → dist}/commands/insertcolumncommand.d.ts +1 -1
  4. package/{src → dist}/commands/insertrowcommand.d.ts +1 -1
  5. package/{src → dist}/commands/inserttablecommand.d.ts +1 -1
  6. package/{src → dist}/commands/inserttablelayoutcommand.d.ts +1 -1
  7. package/{src → dist}/commands/mergecellcommand.d.ts +3 -3
  8. package/{src → dist}/commands/mergecellscommand.d.ts +1 -1
  9. package/{src → dist}/commands/removecolumncommand.d.ts +1 -1
  10. package/{src → dist}/commands/removerowcommand.d.ts +1 -1
  11. package/{src → dist}/commands/selectcolumncommand.d.ts +1 -1
  12. package/{src → dist}/commands/selectrowcommand.d.ts +1 -1
  13. package/{src → dist}/commands/setheadercolumncommand.d.ts +1 -1
  14. package/{src → dist}/commands/setheaderrowcommand.d.ts +1 -1
  15. package/{src → dist}/commands/splitcellcommand.d.ts +1 -1
  16. package/{src → dist}/converters/downcast.d.ts +2 -2
  17. package/{src → dist}/converters/table-caption-post-fixer.d.ts +1 -1
  18. package/{src → dist}/converters/table-cell-paragraph-post-fixer.d.ts +1 -1
  19. package/{src → dist}/converters/table-cell-refresh-handler.d.ts +1 -1
  20. package/{src → dist}/converters/table-headings-refresh-handler.d.ts +1 -1
  21. package/{src → dist}/converters/table-layout-post-fixer.d.ts +1 -1
  22. package/{src → dist}/converters/tableproperties.d.ts +2 -2
  23. package/{src → dist}/converters/upcasttable.d.ts +1 -1
  24. package/dist/index-content.css +30 -30
  25. package/dist/index-editor.css +104 -170
  26. package/dist/index.css +147 -237
  27. package/dist/index.css.map +1 -1
  28. package/{src → dist}/index.d.ts +2 -5
  29. package/dist/index.js +423 -2408
  30. package/dist/index.js.map +1 -1
  31. package/{src → dist}/plaintableoutput.d.ts +1 -1
  32. package/{src → dist}/table.d.ts +2 -2
  33. package/{src → dist}/tablecaption/tablecaptionediting.d.ts +2 -2
  34. package/{src → dist}/tablecaption/tablecaptionui.d.ts +1 -1
  35. package/{src → dist}/tablecaption/toggletablecaptioncommand.d.ts +1 -1
  36. package/{src → dist}/tablecaption/utils.d.ts +1 -1
  37. package/{src → dist}/tablecaption.d.ts +1 -1
  38. package/{src → dist}/tablecellproperties/commands/tablecellbackgroundcolorcommand.d.ts +1 -1
  39. package/{src → dist}/tablecellproperties/commands/tablecellbordercolorcommand.d.ts +2 -2
  40. package/{src → dist}/tablecellproperties/commands/tablecellborderstylecommand.d.ts +2 -2
  41. package/{src → dist}/tablecellproperties/commands/tablecellborderwidthcommand.d.ts +2 -2
  42. package/{src → dist}/tablecellproperties/commands/tablecellheightcommand.d.ts +1 -1
  43. package/{src → dist}/tablecellproperties/commands/tablecellhorizontalalignmentcommand.d.ts +1 -1
  44. package/{src → dist}/tablecellproperties/commands/tablecellpaddingcommand.d.ts +2 -2
  45. package/{src → dist}/tablecellproperties/commands/tablecellpropertycommand.d.ts +2 -2
  46. package/{src → dist}/tablecellproperties/commands/tablecelltypecommand.d.ts +2 -6
  47. package/{src → dist}/tablecellproperties/commands/tablecellverticalalignmentcommand.d.ts +1 -1
  48. package/{src → dist}/tablecellproperties/tablecellpropertiesediting.d.ts +1 -1
  49. package/{src → dist}/tablecellproperties/tablecellpropertiesui.d.ts +2 -2
  50. package/dist/tablecellproperties/tablecellpropertiesutils.d.ts +18 -0
  51. package/{src/tablecellproperties/ui/tablecellpropertiesviewexperimental.d.ts → dist/tablecellproperties/ui/tablecellpropertiesview.d.ts} +11 -12
  52. package/{src → dist}/tablecellproperties.d.ts +1 -1
  53. package/{src → dist}/tablecellwidth/commands/tablecellwidthcommand.d.ts +1 -1
  54. package/{src → dist}/tablecellwidth/tablecellwidthediting.d.ts +1 -1
  55. package/{src → dist}/tableclipboard.d.ts +3 -3
  56. package/{src → dist}/tablecolumnresize/converters.d.ts +1 -1
  57. package/{src → dist}/tablecolumnresize/tablecolumnresizeediting.d.ts +2 -2
  58. package/{src → dist}/tablecolumnresize/tablewidthscommand.d.ts +2 -2
  59. package/{src → dist}/tablecolumnresize/utils.d.ts +2 -2
  60. package/{src → dist}/tablecolumnresize.d.ts +1 -1
  61. package/{src → dist}/tableconfig.d.ts +26 -6
  62. package/{src → dist}/tableediting.d.ts +3 -3
  63. package/{src → dist}/tablekeyboard.d.ts +3 -3
  64. package/{src → dist}/tablelayout/commands/tabletypecommand.d.ts +1 -1
  65. package/{src → dist}/tablelayout/tablelayoutediting.d.ts +1 -1
  66. package/{src → dist}/tablelayout/tablelayoutui.d.ts +1 -1
  67. package/{src → dist}/tablelayout.d.ts +1 -1
  68. package/{src → dist}/tablemouse/mouseeventsobserver.d.ts +1 -1
  69. package/{src → dist}/tablemouse.d.ts +1 -1
  70. package/{src → dist}/tableproperties/commands/tablealignmentcommand.d.ts +1 -1
  71. package/{src → dist}/tableproperties/commands/tablebackgroundcolorcommand.d.ts +1 -1
  72. package/{src → dist}/tableproperties/commands/tablebordercolorcommand.d.ts +2 -2
  73. package/{src → dist}/tableproperties/commands/tableborderstylecommand.d.ts +2 -2
  74. package/{src → dist}/tableproperties/commands/tableborderwidthcommand.d.ts +2 -2
  75. package/{src → dist}/tableproperties/commands/tableheightcommand.d.ts +1 -1
  76. package/{src → dist}/tableproperties/commands/tablepropertycommand.d.ts +2 -2
  77. package/{src → dist}/tableproperties/commands/tablewidthcommand.d.ts +1 -1
  78. package/{src → dist}/tableproperties/tablepropertiesediting.d.ts +1 -1
  79. package/{src → dist}/tableproperties/tablepropertiesui.d.ts +2 -2
  80. package/{src → dist}/tableproperties/ui/tablepropertiesview.d.ts +10 -2
  81. package/{src → dist}/tableproperties.d.ts +1 -1
  82. package/{src → dist}/tableselection.d.ts +2 -2
  83. package/{src → dist}/tabletoolbar.d.ts +2 -2
  84. package/{src → dist}/tableui.d.ts +1 -1
  85. package/{src → dist}/tableutils.d.ts +2 -2
  86. package/{src → dist}/tablewalker.d.ts +1 -1
  87. package/{src → dist}/ui/colorinputview.d.ts +2 -2
  88. package/{src → dist}/ui/inserttableview.d.ts +2 -2
  89. package/{src → dist}/utils/common.d.ts +2 -2
  90. package/{src → dist}/utils/structure.d.ts +1 -1
  91. package/{src → dist}/utils/table-properties.d.ts +1 -1
  92. package/{src → dist}/utils/ui/contextualballoon.d.ts +2 -2
  93. package/{src → dist}/utils/ui/table-properties.d.ts +2 -2
  94. package/{src → dist}/utils/ui/widget.d.ts +1 -1
  95. package/package.json +26 -49
  96. package/build/table.js +0 -5
  97. package/build/translations/af.js +0 -1
  98. package/build/translations/ar.js +0 -1
  99. package/build/translations/ast.js +0 -1
  100. package/build/translations/az.js +0 -1
  101. package/build/translations/be.js +0 -1
  102. package/build/translations/bg.js +0 -1
  103. package/build/translations/bn.js +0 -1
  104. package/build/translations/bs.js +0 -1
  105. package/build/translations/ca.js +0 -1
  106. package/build/translations/cs.js +0 -1
  107. package/build/translations/da.js +0 -1
  108. package/build/translations/de-ch.js +0 -1
  109. package/build/translations/de.js +0 -1
  110. package/build/translations/el.js +0 -1
  111. package/build/translations/en-au.js +0 -1
  112. package/build/translations/en-gb.js +0 -1
  113. package/build/translations/eo.js +0 -1
  114. package/build/translations/es-co.js +0 -1
  115. package/build/translations/es.js +0 -1
  116. package/build/translations/et.js +0 -1
  117. package/build/translations/eu.js +0 -1
  118. package/build/translations/fa.js +0 -1
  119. package/build/translations/fi.js +0 -1
  120. package/build/translations/fr.js +0 -1
  121. package/build/translations/gl.js +0 -1
  122. package/build/translations/gu.js +0 -1
  123. package/build/translations/he.js +0 -1
  124. package/build/translations/hi.js +0 -1
  125. package/build/translations/hr.js +0 -1
  126. package/build/translations/hu.js +0 -1
  127. package/build/translations/hy.js +0 -1
  128. package/build/translations/id.js +0 -1
  129. package/build/translations/it.js +0 -1
  130. package/build/translations/ja.js +0 -1
  131. package/build/translations/jv.js +0 -1
  132. package/build/translations/kk.js +0 -1
  133. package/build/translations/km.js +0 -1
  134. package/build/translations/kn.js +0 -1
  135. package/build/translations/ko.js +0 -1
  136. package/build/translations/ku.js +0 -1
  137. package/build/translations/lt.js +0 -1
  138. package/build/translations/lv.js +0 -1
  139. package/build/translations/ms.js +0 -1
  140. package/build/translations/nb.js +0 -1
  141. package/build/translations/ne.js +0 -1
  142. package/build/translations/nl.js +0 -1
  143. package/build/translations/no.js +0 -1
  144. package/build/translations/oc.js +0 -1
  145. package/build/translations/pl.js +0 -1
  146. package/build/translations/pt-br.js +0 -1
  147. package/build/translations/pt.js +0 -1
  148. package/build/translations/ro.js +0 -1
  149. package/build/translations/ru.js +0 -1
  150. package/build/translations/si.js +0 -1
  151. package/build/translations/sk.js +0 -1
  152. package/build/translations/sl.js +0 -1
  153. package/build/translations/sq.js +0 -1
  154. package/build/translations/sr-latn.js +0 -1
  155. package/build/translations/sr.js +0 -1
  156. package/build/translations/sv.js +0 -1
  157. package/build/translations/th.js +0 -1
  158. package/build/translations/ti.js +0 -1
  159. package/build/translations/tk.js +0 -1
  160. package/build/translations/tr.js +0 -1
  161. package/build/translations/tt.js +0 -1
  162. package/build/translations/ug.js +0 -1
  163. package/build/translations/uk.js +0 -1
  164. package/build/translations/ur.js +0 -1
  165. package/build/translations/uz.js +0 -1
  166. package/build/translations/vi.js +0 -1
  167. package/build/translations/zh-cn.js +0 -1
  168. package/build/translations/zh.js +0 -1
  169. package/lang/contexts.json +0 -82
  170. package/lang/translations/af.po +0 -332
  171. package/lang/translations/ar.po +0 -332
  172. package/lang/translations/ast.po +0 -332
  173. package/lang/translations/az.po +0 -332
  174. package/lang/translations/be.po +0 -332
  175. package/lang/translations/bg.po +0 -332
  176. package/lang/translations/bn.po +0 -334
  177. package/lang/translations/bs.po +0 -332
  178. package/lang/translations/ca.po +0 -332
  179. package/lang/translations/cs.po +0 -332
  180. package/lang/translations/da.po +0 -332
  181. package/lang/translations/de-ch.po +0 -332
  182. package/lang/translations/de.po +0 -332
  183. package/lang/translations/el.po +0 -332
  184. package/lang/translations/en-au.po +0 -332
  185. package/lang/translations/en-gb.po +0 -332
  186. package/lang/translations/en.po +0 -332
  187. package/lang/translations/eo.po +0 -332
  188. package/lang/translations/es-co.po +0 -332
  189. package/lang/translations/es.po +0 -332
  190. package/lang/translations/et.po +0 -332
  191. package/lang/translations/eu.po +0 -332
  192. package/lang/translations/fa.po +0 -332
  193. package/lang/translations/fi.po +0 -332
  194. package/lang/translations/fr.po +0 -332
  195. package/lang/translations/gl.po +0 -332
  196. package/lang/translations/gu.po +0 -332
  197. package/lang/translations/he.po +0 -332
  198. package/lang/translations/hi.po +0 -332
  199. package/lang/translations/hr.po +0 -332
  200. package/lang/translations/hu.po +0 -332
  201. package/lang/translations/hy.po +0 -332
  202. package/lang/translations/id.po +0 -332
  203. package/lang/translations/it.po +0 -332
  204. package/lang/translations/ja.po +0 -332
  205. package/lang/translations/jv.po +0 -332
  206. package/lang/translations/kk.po +0 -332
  207. package/lang/translations/km.po +0 -332
  208. package/lang/translations/kn.po +0 -332
  209. package/lang/translations/ko.po +0 -332
  210. package/lang/translations/ku.po +0 -332
  211. package/lang/translations/lt.po +0 -332
  212. package/lang/translations/lv.po +0 -332
  213. package/lang/translations/ms.po +0 -332
  214. package/lang/translations/nb.po +0 -332
  215. package/lang/translations/ne.po +0 -332
  216. package/lang/translations/nl.po +0 -332
  217. package/lang/translations/no.po +0 -332
  218. package/lang/translations/oc.po +0 -332
  219. package/lang/translations/pl.po +0 -332
  220. package/lang/translations/pt-br.po +0 -332
  221. package/lang/translations/pt.po +0 -332
  222. package/lang/translations/ro.po +0 -332
  223. package/lang/translations/ru.po +0 -332
  224. package/lang/translations/si.po +0 -332
  225. package/lang/translations/sk.po +0 -332
  226. package/lang/translations/sl.po +0 -332
  227. package/lang/translations/sq.po +0 -332
  228. package/lang/translations/sr-latn.po +0 -332
  229. package/lang/translations/sr.po +0 -332
  230. package/lang/translations/sv.po +0 -332
  231. package/lang/translations/th.po +0 -332
  232. package/lang/translations/ti.po +0 -332
  233. package/lang/translations/tk.po +0 -332
  234. package/lang/translations/tr.po +0 -332
  235. package/lang/translations/tt.po +0 -332
  236. package/lang/translations/ug.po +0 -332
  237. package/lang/translations/uk.po +0 -332
  238. package/lang/translations/ur.po +0 -332
  239. package/lang/translations/uz.po +0 -332
  240. package/lang/translations/vi.po +0 -332
  241. package/lang/translations/zh-cn.po +0 -332
  242. package/lang/translations/zh.po +0 -332
  243. package/src/augmentation.js +0 -5
  244. package/src/commands/insertcolumncommand.js +0 -71
  245. package/src/commands/insertrowcommand.js +0 -70
  246. package/src/commands/inserttablecommand.js +0 -69
  247. package/src/commands/inserttablelayoutcommand.js +0 -65
  248. package/src/commands/mergecellcommand.js +0 -206
  249. package/src/commands/mergecellscommand.js +0 -94
  250. package/src/commands/removecolumncommand.js +0 -109
  251. package/src/commands/removerowcommand.js +0 -82
  252. package/src/commands/selectcolumncommand.js +0 -60
  253. package/src/commands/selectrowcommand.js +0 -56
  254. package/src/commands/setheadercolumncommand.js +0 -76
  255. package/src/commands/setheaderrowcommand.js +0 -83
  256. package/src/commands/splitcellcommand.js +0 -58
  257. package/src/converters/downcast.js +0 -298
  258. package/src/converters/table-caption-post-fixer.js +0 -55
  259. package/src/converters/table-cell-paragraph-post-fixer.js +0 -109
  260. package/src/converters/table-cell-refresh-handler.js +0 -47
  261. package/src/converters/table-headings-refresh-handler.js +0 -51
  262. package/src/converters/table-layout-post-fixer.js +0 -369
  263. package/src/converters/tableproperties.js +0 -444
  264. package/src/converters/upcasttable.js +0 -385
  265. package/src/index.js +0 -98
  266. package/src/plaintableoutput.js +0 -49
  267. package/src/table.js +0 -50
  268. package/src/tablecaption/tablecaptionediting.js +0 -136
  269. package/src/tablecaption/tablecaptionui.js +0 -64
  270. package/src/tablecaption/toggletablecaptioncommand.js +0 -105
  271. package/src/tablecaption/utils.js +0 -61
  272. package/src/tablecaption.js +0 -34
  273. package/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js +0 -30
  274. package/src/tablecellproperties/commands/tablecellbordercolorcommand.js +0 -44
  275. package/src/tablecellproperties/commands/tablecellborderstylecommand.js +0 -44
  276. package/src/tablecellproperties/commands/tablecellborderwidthcommand.js +0 -64
  277. package/src/tablecellproperties/commands/tablecellheightcommand.js +0 -51
  278. package/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js +0 -30
  279. package/src/tablecellproperties/commands/tablecellpaddingcommand.js +0 -64
  280. package/src/tablecellproperties/commands/tablecellpropertycommand.js +0 -138
  281. package/src/tablecellproperties/commands/tablecelltypecommand.js +0 -167
  282. package/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js +0 -38
  283. package/src/tablecellproperties/tablecellpropertiesediting.js +0 -412
  284. package/src/tablecellproperties/tablecellpropertiesui.js +0 -385
  285. package/src/tablecellproperties/tablecellpropertiesuiexperimental.d.ts +0 -128
  286. package/src/tablecellproperties/tablecellpropertiesuiexperimental.js +0 -408
  287. package/src/tablecellproperties/ui/tablecellpropertiesview.d.ts +0 -229
  288. package/src/tablecellproperties/ui/tablecellpropertiesview.js +0 -612
  289. package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.js +0 -744
  290. package/src/tablecellproperties.js +0 -40
  291. package/src/tablecellwidth/commands/tablecellwidthcommand.js +0 -51
  292. package/src/tablecellwidth/tablecellwidthediting.js +0 -53
  293. package/src/tableclipboard.js +0 -500
  294. package/src/tablecolumnresize/constants.js +0 -33
  295. package/src/tablecolumnresize/converters.js +0 -62
  296. package/src/tablecolumnresize/tablecolumnresizeediting.js +0 -729
  297. package/src/tablecolumnresize/tablewidthscommand.js +0 -61
  298. package/src/tablecolumnresize/utils.js +0 -370
  299. package/src/tablecolumnresize.js +0 -36
  300. package/src/tableconfig.js +0 -5
  301. package/src/tableediting.js +0 -246
  302. package/src/tablekeyboard.js +0 -273
  303. package/src/tablelayout/commands/tabletypecommand.js +0 -68
  304. package/src/tablelayout/tablelayoutediting.js +0 -295
  305. package/src/tablelayout/tablelayoutui.js +0 -196
  306. package/src/tablelayout.js +0 -37
  307. package/src/tablemouse/mouseeventsobserver.js +0 -34
  308. package/src/tablemouse.js +0 -178
  309. package/src/tableproperties/commands/tablealignmentcommand.js +0 -30
  310. package/src/tableproperties/commands/tablebackgroundcolorcommand.js +0 -30
  311. package/src/tableproperties/commands/tablebordercolorcommand.js +0 -44
  312. package/src/tableproperties/commands/tableborderstylecommand.js +0 -44
  313. package/src/tableproperties/commands/tableborderwidthcommand.js +0 -64
  314. package/src/tableproperties/commands/tableheightcommand.js +0 -54
  315. package/src/tableproperties/commands/tablepropertycommand.js +0 -103
  316. package/src/tableproperties/commands/tablewidthcommand.js +0 -54
  317. package/src/tableproperties/tablepropertiesediting.js +0 -546
  318. package/src/tableproperties/tablepropertiesui.js +0 -374
  319. package/src/tableproperties/tablepropertiesuiexperimental.d.ts +0 -136
  320. package/src/tableproperties/tablepropertiesuiexperimental.js +0 -375
  321. package/src/tableproperties/ui/tablepropertiesview.js +0 -520
  322. package/src/tableproperties/ui/tablepropertiesviewexperimental.d.ts +0 -216
  323. package/src/tableproperties/ui/tablepropertiesviewexperimental.js +0 -544
  324. package/src/tableproperties.js +0 -40
  325. package/src/tableselection.js +0 -323
  326. package/src/tabletoolbar.js +0 -63
  327. package/src/tableui.js +0 -335
  328. package/src/tableutils.js +0 -1282
  329. package/src/tablewalker.js +0 -489
  330. package/src/ui/colorinputview.js +0 -305
  331. package/src/ui/inserttableview.js +0 -192
  332. package/src/utils/common.js +0 -118
  333. package/src/utils/structure.js +0 -452
  334. package/src/utils/table-properties.js +0 -121
  335. package/src/utils/ui/contextualballoon.js +0 -111
  336. package/src/utils/ui/table-properties.js +0 -390
  337. package/src/utils/ui/table-propertiesexperimental.d.ts +0 -215
  338. package/src/utils/ui/table-propertiesexperimental.js +0 -391
  339. package/src/utils/ui/widget.js +0 -56
  340. package/theme/colorinput.css +0 -39
  341. package/theme/formrow-experimental.css +0 -15
  342. package/theme/formrow.css +0 -13
  343. package/theme/inserttable.css +0 -10
  344. package/theme/table.css +0 -144
  345. package/theme/tablecaption.css +0 -66
  346. package/theme/tablecellproperties-experimental.css +0 -4
  347. package/theme/tablecellproperties.css +0 -28
  348. package/theme/tablecolumnresize.css +0 -62
  349. package/theme/tableediting.css +0 -10
  350. package/theme/tableform-experimental.css +0 -61
  351. package/theme/tableform.css +0 -64
  352. package/theme/tablelayout.css +0 -74
  353. package/theme/tableproperties-experimental.css +0 -78
  354. package/theme/tableproperties.css +0 -18
  355. package/theme/tableselection.css +0 -10
  356. /package/{src → dist}/tablecolumnresize/constants.d.ts +0 -0
@@ -1,295 +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/tablelayoutediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core.js';
9
- import { InsertTableLayoutCommand } from './../commands/inserttablelayoutcommand.js';
10
- import { TableColumnResize } from '../tablecolumnresize.js';
11
- import { TableTypeCommand } from './commands/tabletypecommand.js';
12
- import { createEmptyTableCell } from '../utils/common.js';
13
- import '../../theme/tablelayout.css';
14
- const TABLE_TYPES = ['content', 'layout'];
15
- /**
16
- * The table layout editing plugin.
17
- */
18
- export class TableLayoutEditing extends Plugin {
19
- /**
20
- * @inheritDoc
21
- */
22
- static get pluginName() {
23
- return 'TableLayoutEditing';
24
- }
25
- /**
26
- * @inheritDoc
27
- * @internal
28
- */
29
- static get licenseFeatureCode() {
30
- return 'TL';
31
- }
32
- /**
33
- * @inheritDoc
34
- */
35
- static get requires() {
36
- return [TableColumnResize];
37
- }
38
- /**
39
- * @inheritDoc
40
- */
41
- static get isOfficialPlugin() {
42
- return true;
43
- }
44
- /**
45
- * @inheritDoc
46
- */
47
- static get isPremiumPlugin() {
48
- return true;
49
- }
50
- /**
51
- * @inheritDoc
52
- */
53
- init() {
54
- this._defineSchema();
55
- this._defineConverters();
56
- this._defineClipboardPasteHandlers();
57
- this._registerTableTypeAttributePostfixer();
58
- this.editor.commands.add('insertTableLayout', new InsertTableLayoutCommand(this.editor));
59
- this.editor.commands.add('tableType', new TableTypeCommand(this.editor));
60
- }
61
- /**
62
- * Defines the schema for the table layout feature.
63
- */
64
- _defineSchema() {
65
- const { schema } = this.editor.model;
66
- schema.extend('table', {
67
- allowAttributes: 'tableType'
68
- });
69
- // Disallow adding `caption` to layout table.
70
- schema.addChildCheck(layoutTableCheck, 'caption');
71
- // Disallow adding `headingRows` attribute to layout table.
72
- schema.addAttributeCheck(layoutTableCheck, 'headingRows');
73
- // Disallow adding `headingColumns` attribute to layout table.
74
- schema.addAttributeCheck(layoutTableCheck, 'headingColumns');
75
- }
76
- /**
77
- * Defines the converters for the table layout feature.
78
- */
79
- _defineConverters() {
80
- const { editor } = this;
81
- const { conversion } = editor;
82
- const preferredExternalTableType = editor.config.get('table.tableLayout.preferredExternalTableType');
83
- conversion.for('upcast').add(upcastLayoutTable(editor, preferredExternalTableType));
84
- conversion.for('dataDowncast').add(dataDowncastLayoutTable());
85
- conversion.for('editingDowncast').attributeToAttribute({
86
- model: {
87
- key: 'tableType',
88
- values: ['layout', 'content']
89
- },
90
- view: {
91
- layout: {
92
- key: 'class',
93
- value: ['layout-table']
94
- },
95
- content: {
96
- key: 'class',
97
- value: ['content-table']
98
- }
99
- }
100
- });
101
- }
102
- /**
103
- * Handles the clipboard content insertion events.
104
- *
105
- * - If the content is from another editor, do not override the table type.
106
- * - If the content is from another source, set the table type to 'content'.
107
- *
108
- * It handles the scenario when user copies `<table></table>` from Word. We do not want to
109
- * change the table type to `layout` because it is really `content` table.
110
- */
111
- _defineClipboardPasteHandlers() {
112
- const { plugins } = this.editor;
113
- if (!plugins.has('ClipboardPipeline')) {
114
- return;
115
- }
116
- const clipboardPipeline = plugins.get('ClipboardPipeline');
117
- this.listenTo(clipboardPipeline, 'contentInsertion', (evt, data) => {
118
- // If content is pasted from the other editor, skip overriding table type.
119
- if (data.sourceEditorId) {
120
- return;
121
- }
122
- // For content from other sources, always set table type to 'content'.
123
- this.editor.model.change(writer => {
124
- for (const { item } of writer.createRangeIn(data.content)) {
125
- if (item.is('element', 'table')) {
126
- writer.setAttribute('tableType', 'content', item);
127
- }
128
- }
129
- });
130
- });
131
- }
132
- /**
133
- * Registers a post-fixer that sets the `tableType` attribute to `content` for inserted "default" tables.
134
- * Also fixes potential issues with the table structure when the `tableType` attribute has been changed.
135
- */
136
- _registerTableTypeAttributePostfixer() {
137
- const editor = this.editor;
138
- editor.model.document.registerPostFixer((writer) => {
139
- const changes = editor.model.document.differ.getChanges();
140
- let hasChanged = false;
141
- for (const entry of changes) {
142
- if (entry.type == 'insert' && entry.name != '$text') {
143
- const element = entry.position.nodeAfter;
144
- const range = writer.createRangeOn(element);
145
- for (const item of range.getItems()) {
146
- if (item.is('element', 'table') && !item.hasAttribute('tableType')) {
147
- writer.setAttribute('tableType', 'content', item);
148
- hasChanged = true;
149
- }
150
- }
151
- }
152
- // Remove disallowed attributes and children for layout tables
153
- // when `tableType` attribute has been changed by `TableTypeCommand`.
154
- if (entry.type == 'attribute' && entry.attributeKey == 'tableType') {
155
- for (const item of entry.range.getItems()) {
156
- if (item.is('element', 'table')) {
157
- editor.model.schema.removeDisallowedAttributes([item], writer);
158
- const tableChildren = item.getChildren();
159
- // Check if all children are allowed for the new table type.
160
- for (const child of tableChildren) {
161
- if (!editor.model.schema.checkChild(item, child)) {
162
- writer.remove(child);
163
- hasChanged = true;
164
- }
165
- }
166
- }
167
- }
168
- }
169
- }
170
- return hasChanged;
171
- });
172
- }
173
- }
174
- /**
175
- * View table element to model table element conversion helper.
176
- *
177
- * This conversion helper overrides the default table converter to meet table layout conditions.
178
- *
179
- * @param editor Editor instance.
180
- * @returns Conversion helper.
181
- */
182
- function upcastLayoutTable(editor, preferredExternalTableType) {
183
- return (dispatcher) => {
184
- dispatcher.on('element:table', (evt, data, conversionApi) => {
185
- const viewTable = data.viewItem;
186
- if (!conversionApi.consumable.test(viewTable, { name: true })) {
187
- return;
188
- }
189
- const resolvedTableType = resolveTableType(viewTable, preferredExternalTableType);
190
- // When an element is a content table, then skip it.
191
- if (resolvedTableType == 'content') {
192
- return;
193
- }
194
- const table = conversionApi.writer.createElement('table', { tableType: 'layout' });
195
- if (!conversionApi.safeInsert(table, data.modelCursor)) {
196
- return;
197
- }
198
- conversionApi.consumable.consume(viewTable, { name: true });
199
- conversionApi.consumable.consume(viewTable, { attributes: ['role'] });
200
- conversionApi.consumable.consume(viewTable, { classes: ['layout-table'] });
201
- // Layout tables have no border, so it's equitable to consume the border="0" attribute.
202
- if (editor.config.get('experimentalFlags.upcastTableBorderZeroAttributes') &&
203
- viewTable.getAttribute('border') === '0') {
204
- conversionApi.consumable.consume(viewTable, { attributes: ['border'] });
205
- }
206
- // Get all rows from the table and convert them.
207
- // While looping over the children of `<table>` we can be sure that first will be `<tbody>`
208
- // and optionally `<thead>` and `<tfoot>`, and in these elements are the table rows found.
209
- // We can be sure of that because of `DomParser` handle it.
210
- for (const tableChild of viewTable.getChildren()) {
211
- if (tableChild.is('element')) {
212
- for (const row of tableChild.getChildren()) {
213
- if (row.is('element', 'tr')) {
214
- conversionApi.convertItem(row, conversionApi.writer.createPositionAt(table, 'end'));
215
- }
216
- }
217
- }
218
- }
219
- // Convert everything else.
220
- conversionApi.convertChildren(viewTable, conversionApi.writer.createPositionAt(table, 'end'));
221
- // Create one row and one table cell for empty table.
222
- if (table.isEmpty) {
223
- const row = conversionApi.writer.createElement('tableRow');
224
- conversionApi.writer.insert(row, conversionApi.writer.createPositionAt(table, 'end'));
225
- createEmptyTableCell(conversionApi.writer, conversionApi.writer.createPositionAt(row, 'end'));
226
- }
227
- conversionApi.updateConversionResult(table, data);
228
- }, { priority: 'high' });
229
- // Sets only the table type attribute.
230
- dispatcher.on('element:table', (evt, data, conversionApi) => {
231
- const { viewItem, modelRange } = data;
232
- if (modelRange) {
233
- conversionApi.writer.setAttribute('tableType', resolveTableType(viewItem, preferredExternalTableType), modelRange);
234
- conversionApi.consumable.consume(viewItem, { classes: ['layout-table'] });
235
- conversionApi.consumable.consume(viewItem, { classes: ['content-table'] });
236
- }
237
- }, { priority: 'low' });
238
- };
239
- }
240
- /**
241
- * Model table container element to view table element conversion helper.
242
- *
243
- * @returns Conversion helper.
244
- */
245
- function dataDowncastLayoutTable() {
246
- return (dispatcher) => {
247
- return dispatcher.on('attribute:tableType:table', (evt, data, conversionApi) => {
248
- const { item, attributeNewValue } = data;
249
- const { mapper, writer } = conversionApi;
250
- if (!conversionApi.consumable.test(item, evt.name)) {
251
- return;
252
- }
253
- const table = mapper.toViewElement(item);
254
- writer.addClass(`${attributeNewValue}-table`, table);
255
- if (attributeNewValue == 'layout') {
256
- writer.setAttribute('role', 'presentation', table);
257
- }
258
- conversionApi.consumable.consume(item, evt.name);
259
- });
260
- };
261
- }
262
- /**
263
- * Resolves the table type based on the view table element and the preferred external table type.
264
- */
265
- function resolveTableType(viewTable, preferredExternalTableType) {
266
- if (viewTable.hasClass('content-table')) {
267
- return 'content';
268
- }
269
- if (viewTable.hasClass('layout-table')) {
270
- return 'layout';
271
- }
272
- if (preferredExternalTableType && TABLE_TYPES.includes(preferredExternalTableType)) {
273
- return preferredExternalTableType;
274
- }
275
- const parent = viewTable.parent;
276
- /**
277
- * Checks if the table is a content table if any of the following conditions are met:
278
- * - the `<table>` is wrapped with `<figure>`,
279
- * - the `<table>` has a `<caption>` element.
280
- */
281
- if (parent.is('element', 'figure') ||
282
- Array.from(viewTable.getChildren()).some(child => child.is('element', 'caption'))) {
283
- return 'content';
284
- }
285
- return 'layout';
286
- }
287
- /**
288
- * Checks if the element is a layout table.
289
- * It is used to disallow attributes or children that is managed by `Schema`.
290
- */
291
- function layoutTableCheck(context) {
292
- if (context.endsWith('table') && context.last.getAttribute('tableType') == 'layout') {
293
- return false;
294
- }
295
- }
@@ -1,196 +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/tablelayoutui
7
- */
8
- import { Plugin } from 'ckeditor5/src/core.js';
9
- import { IconTableLayout, IconTableProperties } from 'ckeditor5/src/icons.js';
10
- import { createDropdown, addListToDropdown, MenuBarMenuView, SplitButtonView, DropdownButtonView, UIModel } from 'ckeditor5/src/ui.js';
11
- import { Collection } from 'ckeditor5/src/utils.js';
12
- import { InsertTableView } from '../ui/inserttableview.js';
13
- /**
14
- * The table layout UI plugin. It introduces:
15
- *
16
- * * The `'insertTableLayout'` dropdown,
17
- * * The `'menuBar:insertTableLayout'` menu bar menu.
18
- */
19
- export class TableLayoutUI extends Plugin {
20
- /**
21
- * @inheritDoc
22
- */
23
- static get pluginName() {
24
- return 'TableLayoutUI';
25
- }
26
- /**
27
- * @inheritDoc
28
- */
29
- static get isOfficialPlugin() {
30
- return true;
31
- }
32
- /**
33
- * @inheritDoc
34
- */
35
- init() {
36
- const editor = this.editor;
37
- const t = this.editor.t;
38
- editor.ui.componentFactory.add('insertTableLayout', locale => {
39
- const command = editor.commands.get('insertTableLayout');
40
- const dropdownView = createDropdown(locale);
41
- dropdownView.bind('isEnabled').to(command);
42
- // Decorate dropdown's button.
43
- dropdownView.buttonView.set({
44
- icon: IconTableLayout,
45
- label: t('Insert table layout'),
46
- tooltip: true
47
- });
48
- let insertTableLayoutView;
49
- dropdownView.on('change:isOpen', () => {
50
- if (insertTableLayoutView) {
51
- return;
52
- }
53
- // Prepare custom view for dropdown's panel.
54
- insertTableLayoutView = new InsertTableView(locale);
55
- dropdownView.panelView.children.add(insertTableLayoutView);
56
- insertTableLayoutView.delegate('execute').to(dropdownView);
57
- dropdownView.on('execute', () => {
58
- editor.execute('insertTableLayout', {
59
- rows: insertTableLayoutView.rows,
60
- columns: insertTableLayoutView.columns
61
- });
62
- editor.editing.view.focus();
63
- });
64
- });
65
- return dropdownView;
66
- });
67
- editor.ui.componentFactory.add('menuBar:insertTableLayout', locale => {
68
- const command = editor.commands.get('insertTableLayout');
69
- const menuView = new MenuBarMenuView(locale);
70
- const insertTableLayoutView = new InsertTableView(locale);
71
- insertTableLayoutView.delegate('execute').to(menuView);
72
- menuView.on('change:isOpen', (event, name, isOpen) => {
73
- if (!isOpen) {
74
- insertTableLayoutView.reset();
75
- }
76
- });
77
- insertTableLayoutView.on('execute', () => {
78
- editor.execute('insertTableLayout', {
79
- rows: insertTableLayoutView.rows,
80
- columns: insertTableLayoutView.columns
81
- });
82
- editor.editing.view.focus();
83
- });
84
- menuView.buttonView.set({
85
- label: t('Table layout'),
86
- icon: IconTableLayout
87
- });
88
- menuView.panelView.children.add(insertTableLayoutView);
89
- menuView.bind('isEnabled').to(command);
90
- return menuView;
91
- });
92
- // Create table type dropdown button.
93
- editor.ui.componentFactory.add('tableType', () => {
94
- const editor = this.editor;
95
- const t = editor.t;
96
- const button = new DropdownButtonView(editor.locale);
97
- button.set({
98
- label: t('Table type'),
99
- icon: IconTableProperties,
100
- tooltip: true
101
- });
102
- return createTableTypeDropdown(editor, button);
103
- });
104
- }
105
- /**
106
- * @inheritDoc
107
- */
108
- afterInit() {
109
- const { editor } = this;
110
- const { ui, plugins } = editor;
111
- let tablePropertiesUI;
112
- if (plugins.has('TablePropertiesUIExperimental')) {
113
- tablePropertiesUI = plugins.get('TablePropertiesUIExperimental');
114
- }
115
- else if (plugins.has('TablePropertiesUI')) {
116
- tablePropertiesUI = plugins.get('TablePropertiesUI');
117
- }
118
- else {
119
- return;
120
- }
121
- // Override the default table properties button to include the table type dropdown.
122
- // It needs to be done in `afterInit()` to make sure that `tableProperties` button is
123
- // registered after the initialization of the `TablePropertiesUI`. Otherwise, the
124
- // button will be overridden by the default one if the `TablePropertiesUI` is
125
- // initialized after the `TableLayoutUI`.
126
- ui.componentFactory.add('tableProperties', locale => {
127
- const baseButton = tablePropertiesUI._createTablePropertiesButton();
128
- const splitButtonView = new SplitButtonView(locale, baseButton);
129
- return createTableTypeDropdown(editor, splitButtonView);
130
- });
131
- }
132
- }
133
- /**
134
- * Creates a dropdown for the table type selection.
135
- *
136
- * @param editor The editor instance.
137
- * @param dropdownButton The button view that will be used as the dropdown trigger.
138
- * @returns A dropdown view containing table type options.
139
- */
140
- function createTableTypeDropdown(editor, dropdownButton) {
141
- const t = editor.t;
142
- const locale = editor.locale;
143
- const tableTypeCommand = editor.commands.get('tableType');
144
- // Wrap the original button in a SplitButtonView.
145
- const dropdownView = createDropdown(locale, dropdownButton);
146
- const itemsDefinitions = createTableLayoutTypeDropdownItems(editor);
147
- // Add table types to the dropdown.
148
- addListToDropdown(dropdownView, itemsDefinitions, {
149
- ariaLabel: t('Table type options'),
150
- role: 'menu'
151
- });
152
- dropdownButton.tooltip = t('Choose table type');
153
- dropdownView.on('execute', evt => {
154
- const tableType = evt.source.tableType;
155
- if (tableType) {
156
- tableTypeCommand.execute(tableType);
157
- }
158
- });
159
- return dropdownView;
160
- }
161
- /**
162
- * Creates dropdown items for table type selection.
163
- *
164
- * @param editor The editor instance.
165
- * @returns A collection of dropdown items for the table type dropdown.
166
- */
167
- function createTableLayoutTypeDropdownItems(editor) {
168
- const t = editor.t;
169
- const tableTypeCommand = editor.commands.get('tableType');
170
- const itemDefinitions = new Collection();
171
- itemDefinitions.add(createTableTypeDropdownItem(tableTypeCommand, 'layout', t('Layout table')));
172
- itemDefinitions.add(createTableTypeDropdownItem(tableTypeCommand, 'content', t('Content table')));
173
- return itemDefinitions;
174
- }
175
- /**
176
- * Creates a dropdown item for a specific table type.
177
- *
178
- * @param tableTypeCommand The table type command.
179
- * @param type The table type value ('layout' or 'content').
180
- * @param label The localized label for the dropdown item.
181
- * @returns The dropdown item definition.
182
- */
183
- function createTableTypeDropdownItem(tableTypeCommand, type, label) {
184
- const model = new UIModel({
185
- label,
186
- role: 'menuitemradio',
187
- withText: true,
188
- tableType: type
189
- });
190
- model.bind('isEnabled').to(tableTypeCommand, 'isEnabled');
191
- model.bind('isOn').to(tableTypeCommand, 'value', value => value === type);
192
- return {
193
- type: 'button',
194
- model
195
- };
196
- }
@@ -1,37 +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
7
- */
8
- import { Plugin } from 'ckeditor5/src/core.js';
9
- import { TableLayoutUI } from './tablelayout/tablelayoutui.js';
10
- import { TableLayoutEditing } from './tablelayout/tablelayoutediting.js';
11
- import { PlainTableOutput } from './plaintableoutput.js';
12
- import { TableColumnResize } from './tablecolumnresize.js';
13
- /**
14
- * The table plugin.
15
- *
16
- * For a detailed overview, check the {@glink features/tables/layout-tables Layout table feature documentation}.
17
- */
18
- export class TableLayout extends Plugin {
19
- /**
20
- * @inheritDoc
21
- */
22
- static get pluginName() {
23
- return 'TableLayout';
24
- }
25
- /**
26
- * @inheritDoc
27
- */
28
- static get isOfficialPlugin() {
29
- return true;
30
- }
31
- /**
32
- * @inheritDoc
33
- */
34
- static get requires() {
35
- return [PlainTableOutput, TableColumnResize, TableLayoutEditing, TableLayoutUI];
36
- }
37
- }
@@ -1,34 +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/tablemouse/mouseeventsobserver
7
- */
8
- import { DomEventObserver } from 'ckeditor5/src/engine.js';
9
- /**
10
- * The mouse selection event observer.
11
- *
12
- * It registers listeners for the following DOM events:
13
- *
14
- * - `'mousemove'`
15
- * - `'mouseleave'`
16
- *
17
- * Note that this observer is disabled by default. To enable this observer, it needs to be added to
18
- * {@link module:engine/view/view~EditingView} using the {@link module:engine/view/view~EditingView#addObserver} method.
19
- *
20
- * The observer is registered by the {@link module:table/tableselection~TableSelection} plugin.
21
- *
22
- * @internal
23
- */
24
- export class MouseEventsObserver extends DomEventObserver {
25
- domEventType = [
26
- 'mousemove', 'mouseleave'
27
- ];
28
- /**
29
- * @inheritDoc
30
- */
31
- onDomEvent(domEvent) {
32
- this.fire(domEvent.type, domEvent);
33
- }
34
- }