@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,444 +0,0 @@
1
- /**
2
- * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */
5
- import { first } from 'ckeditor5/src/utils.js';
6
- const ALIGN_VALUES_REG_EXP = /^(left|center|right)$/;
7
- const FLOAT_VALUES_REG_EXP = /^(left|none|right)$/;
8
- /**
9
- * Conversion helper for upcasting attributes using normalized styles.
10
- *
11
- * @param options.modelAttribute The attribute to set.
12
- * @param options.styleName The style name to convert.
13
- * @param options.attributeName The HTML attribute name to convert.
14
- * @param options.attributeType The HTML attribute type for value normalization.
15
- * @param options.viewElement The view element name that should be converted.
16
- * @param options.defaultValue The default value for the specified `modelAttribute`.
17
- * @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.
18
- * @internal
19
- */
20
- export function upcastStyleToAttribute(conversion, options) {
21
- const { modelAttribute, styleName, attributeName, attributeType, viewElement, defaultValue, shouldUpcast = () => true, reduceBoxSides = false } = options;
22
- conversion.for('upcast').attributeToAttribute({
23
- view: {
24
- name: viewElement,
25
- styles: {
26
- [styleName]: /[\s\S]+/
27
- }
28
- },
29
- model: {
30
- key: modelAttribute,
31
- value: (viewElement, conversionApi, data) => {
32
- // Ignore table elements inside figures and figures without the table class.
33
- if (!shouldUpcast(viewElement)) {
34
- return;
35
- }
36
- const localDefaultValue = getDefaultValueAdjusted(defaultValue, '', data);
37
- const normalized = viewElement.getNormalizedStyle(styleName);
38
- const value = reduceBoxSides ? reduceBoxSidesValue(normalized) : normalized;
39
- if (localDefaultValue !== value) {
40
- return value;
41
- }
42
- // Consume the style even if not applied to the element so it won't be processed by other converters.
43
- conversionApi.consumable.consume(viewElement, { styles: styleName });
44
- }
45
- }
46
- });
47
- if (attributeName) {
48
- conversion.for('upcast').attributeToAttribute({
49
- view: {
50
- name: viewElement,
51
- attributes: {
52
- [attributeName]: /.+/
53
- }
54
- },
55
- model: {
56
- key: modelAttribute,
57
- value: (viewElement, conversionApi, data) => {
58
- // Convert attributes of table and table cell elements, ignore figure.
59
- // Do not convert attribute if related style is set as it has a higher priority.
60
- // Do not convert attribute if the element is a table inside a figure with the related style set.
61
- if (viewElement.name == 'figure' ||
62
- viewElement.hasStyle(styleName) ||
63
- viewElement.name == 'table' && viewElement.parent.name == 'figure' && viewElement.parent.hasStyle(styleName)) {
64
- return;
65
- }
66
- const localDefaultValue = getDefaultValueAdjusted(defaultValue, '', data);
67
- let value = viewElement.getAttribute(attributeName);
68
- if (value && attributeType == 'length' && !value.endsWith('px')) {
69
- value += 'px';
70
- }
71
- if (localDefaultValue !== value) {
72
- return value;
73
- }
74
- // Consume the attribute even if not applied to the element so it won't be processed by other converters.
75
- conversionApi.consumable.consume(viewElement, { attributes: attributeName });
76
- }
77
- }
78
- });
79
- }
80
- }
81
- /**
82
- * Conversion helper for upcasting border styles for view elements.
83
- *
84
- * @param editor The editor instance.
85
- * @param defaultBorder The default border values.
86
- * @param defaultBorder.color The default `borderColor` value.
87
- * @param defaultBorder.style The default `borderStyle` value.
88
- * @param defaultBorder.width The default `borderWidth` value.
89
- * @internal
90
- */
91
- export function upcastBorderStyles(editor, viewElementName, modelAttributes, defaultBorder) {
92
- const { conversion } = editor;
93
- conversion.for('upcast').add(dispatcher => dispatcher.on('element:' + viewElementName, (evt, data, conversionApi) => {
94
- // If the element was not converted by element-to-element converter,
95
- // we should not try to convert the style. See #8393.
96
- if (!data.modelRange) {
97
- return;
98
- }
99
- // Check the most detailed properties. These will be always set directly or
100
- // when using the "group" properties like: `border-(top|right|bottom|left)` or `border`.
101
- const stylesToConsume = [
102
- 'border-top-width',
103
- 'border-top-color',
104
- 'border-top-style',
105
- 'border-bottom-width',
106
- 'border-bottom-color',
107
- 'border-bottom-style',
108
- 'border-right-width',
109
- 'border-right-color',
110
- 'border-right-style',
111
- 'border-left-width',
112
- 'border-left-color',
113
- 'border-left-style'
114
- ].filter(styleName => data.viewItem.hasStyle(styleName));
115
- if (!stylesToConsume.length) {
116
- return;
117
- }
118
- const matcherPattern = {
119
- styles: stylesToConsume
120
- };
121
- // Try to consume appropriate values from consumable values list.
122
- if (!conversionApi.consumable.test(data.viewItem, matcherPattern)) {
123
- return;
124
- }
125
- const modelElement = [...data.modelRange.getItems({ shallow: true })].pop();
126
- const tableElement = modelElement.findAncestor('table', { includeSelf: true });
127
- let localDefaultBorder = defaultBorder;
128
- if (tableElement && tableElement.getAttribute('tableType') == 'layout') {
129
- localDefaultBorder = {
130
- style: 'none',
131
- color: '',
132
- width: ''
133
- };
134
- }
135
- conversionApi.consumable.consume(data.viewItem, matcherPattern);
136
- const normalizedBorder = {
137
- style: data.viewItem.getNormalizedStyle('border-style'),
138
- color: data.viewItem.getNormalizedStyle('border-color'),
139
- width: data.viewItem.getNormalizedStyle('border-width')
140
- };
141
- const reducedBorder = {
142
- style: reduceBoxSidesValue(normalizedBorder.style),
143
- color: reduceBoxSidesValue(normalizedBorder.color),
144
- width: reduceBoxSidesValue(normalizedBorder.width)
145
- };
146
- if (reducedBorder.style !== localDefaultBorder.style) {
147
- conversionApi.writer.setAttribute(modelAttributes.style, reducedBorder.style, modelElement);
148
- }
149
- if (reducedBorder.color !== localDefaultBorder.color) {
150
- conversionApi.writer.setAttribute(modelAttributes.color, reducedBorder.color, modelElement);
151
- }
152
- if (reducedBorder.width !== localDefaultBorder.width) {
153
- conversionApi.writer.setAttribute(modelAttributes.width, reducedBorder.width, modelElement);
154
- }
155
- }));
156
- if (editor.config.get('experimentalFlags.upcastTableBorderZeroAttributes')) {
157
- // If parent table has `border="0"` attribute then set border style to `none`
158
- // all table cells of that table and table itself.
159
- conversion.for('upcast').add(dispatcher => {
160
- dispatcher.on(`element:${viewElementName}`, (evt, data, conversionApi) => {
161
- const { modelRange, viewItem } = data;
162
- const viewTable = (viewItem.is('element', 'table') ?
163
- viewItem :
164
- viewItem.findAncestor('table'));
165
- // If something already consumed the border attribute on the nearest table element, skip the conversion.
166
- if (!conversionApi.consumable.test(viewTable, { attributes: 'border' })) {
167
- return;
168
- }
169
- // Ignore tables with border different than "0".
170
- if (viewTable.getAttribute('border') !== '0') {
171
- return;
172
- }
173
- const modelElement = modelRange?.start?.nodeAfter;
174
- // If model element has already border style attribute, skip the conversion.
175
- if (!modelElement || modelElement.hasAttribute(modelAttributes.style)) {
176
- return;
177
- }
178
- conversionApi.writer.setAttribute(modelAttributes.style, 'none', modelElement);
179
- if (viewItem.is('element', 'table')) {
180
- conversionApi.consumable.consume(viewItem, { attributes: 'border' });
181
- }
182
- });
183
- });
184
- }
185
- }
186
- /**
187
- * Conversion helper for downcasting an attribute to a style.
188
- *
189
- * @internal
190
- */
191
- export function downcastAttributeToStyle(conversion, options) {
192
- const { modelElement, modelAttribute, styleName } = options;
193
- conversion.for('downcast').attributeToAttribute({
194
- model: {
195
- name: modelElement,
196
- key: modelAttribute
197
- },
198
- view: modelAttributeValue => ({
199
- key: 'style',
200
- value: {
201
- [styleName]: modelAttributeValue
202
- }
203
- })
204
- });
205
- }
206
- /**
207
- * Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).
208
- *
209
- * @internal
210
- */
211
- export function downcastTableAttribute(conversion, options) {
212
- const { modelAttribute, styleName } = options;
213
- conversion.for('downcast').add(dispatcher => dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
214
- const { item, attributeNewValue } = data;
215
- const { mapper, writer } = conversionApi;
216
- if (!conversionApi.consumable.consume(data.item, evt.name)) {
217
- return;
218
- }
219
- const table = [...mapper.toViewElement(item).getChildren()].find(child => child.is('element', 'table'));
220
- if (attributeNewValue) {
221
- writer.setStyle(styleName, attributeNewValue, table);
222
- }
223
- else {
224
- writer.removeStyle(styleName, table);
225
- }
226
- }));
227
- }
228
- /**
229
- * Returns the default value for table or table cell property adjusted for layout tables.
230
- *
231
- * @internal
232
- */
233
- export function getDefaultValueAdjusted(defaultValue, layoutTableDefault, data) {
234
- const modelElement = data.modelRange && first(data.modelRange.getItems({ shallow: true }));
235
- const tableElement = modelElement && modelElement.is('element') && modelElement.findAncestor('table', { includeSelf: true });
236
- if (tableElement && tableElement.getAttribute('tableType') === 'layout') {
237
- return layoutTableDefault;
238
- }
239
- return defaultValue;
240
- }
241
- /**
242
- * Reduces the full top, right, bottom, left object to a single string if all sides are equal.
243
- * Returns original style otherwise.
244
- */
245
- function reduceBoxSidesValue(style) {
246
- if (!style) {
247
- return;
248
- }
249
- const sides = ['top', 'right', 'bottom', 'left'];
250
- const allSidesDefined = sides.every(side => style[side]);
251
- if (!allSidesDefined) {
252
- return style;
253
- }
254
- const topSideStyle = style.top;
255
- const allSidesEqual = sides.every(side => style[side] === topSideStyle);
256
- if (!allSidesEqual) {
257
- return style;
258
- }
259
- return topSideStyle;
260
- }
261
- /**
262
- * Default table alignment options.
263
- */
264
- export const DEFAULT_TABLE_ALIGNMENT_OPTIONS = {
265
- left: { className: 'table-style-align-left' },
266
- center: { className: 'table-style-align-center' },
267
- right: { className: 'table-style-align-right' },
268
- blockLeft: { className: 'table-style-block-align-left' },
269
- blockRight: { className: 'table-style-block-align-right' }
270
- };
271
- /**
272
- * Configuration for upcasting table alignment from view to model.
273
- */
274
- export const upcastTableAlignmentConfig = [
275
- // Support for the `float:*;` CSS definition for the table alignment.
276
- {
277
- view: {
278
- name: /^(table|figure)$/,
279
- styles: {
280
- float: FLOAT_VALUES_REG_EXP
281
- }
282
- },
283
- getAlign: (viewElement) => {
284
- let align = viewElement.getStyle('float');
285
- if (align === 'none') {
286
- align = 'center';
287
- }
288
- return align;
289
- },
290
- getConsumables(viewElement) {
291
- const float = viewElement.getStyle('float');
292
- const styles = ['float'];
293
- if (float === 'left' && viewElement.hasStyle('margin-right')) {
294
- styles.push('margin-right');
295
- }
296
- else if (float === 'right' && viewElement.hasStyle('margin-left')) {
297
- styles.push('margin-left');
298
- }
299
- return { styles };
300
- }
301
- },
302
- // Support for the `margin-left:auto; margin-right:auto;` CSS definition for the table alignment.
303
- {
304
- view: {
305
- name: /^(table|figure)$/,
306
- styles: {
307
- 'margin-left': 'auto',
308
- 'margin-right': 'auto'
309
- }
310
- },
311
- getAlign: () => 'center',
312
- getConsumables: () => {
313
- return { styles: ['margin-left', 'margin-right'] };
314
- }
315
- },
316
- // Support for the left alignment using CSS classes.
317
- {
318
- view: {
319
- name: /^(table|figure)$/,
320
- key: 'class',
321
- value: 'table-style-align-left'
322
- },
323
- getAlign: () => 'left',
324
- getConsumables() {
325
- return { classes: DEFAULT_TABLE_ALIGNMENT_OPTIONS.left.className };
326
- }
327
- },
328
- // Support for the right alignment using CSS classes.
329
- {
330
- view: {
331
- name: /^(table|figure)$/,
332
- key: 'class',
333
- value: DEFAULT_TABLE_ALIGNMENT_OPTIONS.right.className
334
- },
335
- getAlign: () => 'right',
336
- getConsumables() {
337
- return { classes: DEFAULT_TABLE_ALIGNMENT_OPTIONS.right.className };
338
- }
339
- },
340
- // Support for the center alignment using CSS classes.
341
- {
342
- view: {
343
- name: /^(table|figure)$/,
344
- key: 'class',
345
- value: DEFAULT_TABLE_ALIGNMENT_OPTIONS.center.className
346
- },
347
- getAlign: () => 'center',
348
- getConsumables() {
349
- return { classes: DEFAULT_TABLE_ALIGNMENT_OPTIONS.center.className };
350
- }
351
- },
352
- // Support for the block alignment left using CSS classes.
353
- {
354
- view: {
355
- name: /^(table|figure)$/,
356
- key: 'class',
357
- value: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockLeft.className
358
- },
359
- getAlign: () => 'blockLeft',
360
- getConsumables() {
361
- return { classes: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockLeft.className };
362
- }
363
- },
364
- // Support for the block alignment right using CSS classes.
365
- {
366
- view: {
367
- name: /^(table|figure)$/,
368
- key: 'class',
369
- value: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockRight.className
370
- },
371
- getAlign: () => 'blockRight',
372
- getConsumables() {
373
- return { classes: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockRight.className };
374
- }
375
- },
376
- // Support for the block alignment left using margin CSS styles.
377
- {
378
- view: {
379
- name: /^(table|figure)$/,
380
- styles: {
381
- 'margin-left': '0',
382
- 'margin-right': 'auto'
383
- }
384
- },
385
- getAlign: () => 'blockLeft',
386
- getConsumables() {
387
- return { styles: ['margin-left', 'margin-right'] };
388
- }
389
- },
390
- // Support for the block alignment right using margin CSS styles.
391
- {
392
- view: {
393
- name: /^(table|figure)$/,
394
- styles: {
395
- 'margin-left': 'auto',
396
- 'margin-right': '0'
397
- }
398
- },
399
- getAlign: () => 'blockRight',
400
- getConsumables() {
401
- return { styles: ['margin-left', 'margin-right'] };
402
- }
403
- },
404
- // Support for the `align` attribute as the backward compatibility while pasting from other sources.
405
- {
406
- view: {
407
- name: 'table',
408
- attributes: {
409
- align: ALIGN_VALUES_REG_EXP
410
- }
411
- },
412
- getAlign: (viewElement) => viewElement.getAttribute('align'),
413
- getConsumables() {
414
- return { attributes: 'align' };
415
- }
416
- }
417
- ];
418
- export const downcastTableAlignmentConfig = {
419
- center: {
420
- align: 'center',
421
- style: 'margin-left: auto; margin-right: auto;',
422
- className: 'table-style-align-center'
423
- },
424
- left: {
425
- align: 'left',
426
- style: 'float: left;',
427
- className: 'table-style-align-left'
428
- },
429
- right: {
430
- align: 'right',
431
- style: 'float: right;',
432
- className: 'table-style-align-right'
433
- },
434
- blockLeft: {
435
- align: undefined,
436
- style: 'margin-left: 0; margin-right: auto;',
437
- className: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockLeft.className
438
- },
439
- blockRight: {
440
- align: undefined,
441
- style: 'margin-left: auto; margin-right: 0;',
442
- className: DEFAULT_TABLE_ALIGNMENT_OPTIONS.blockRight.className
443
- }
444
- };