@ckeditor/ckeditor5-ui 48.8.1-alpha.3 → 49.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 (273) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/arialiveannouncer.d.ts +89 -90
  3. package/dist/augmentation.d.ts +86 -86
  4. package/dist/autocomplete/autocompleteview.d.ts +69 -70
  5. package/dist/badge/badge.d.ts +119 -121
  6. package/dist/bindings/addkeyboardhandlingforgrid.d.ts +22 -22
  7. package/dist/bindings/clickoutsidehandler.d.ts +24 -26
  8. package/dist/bindings/csstransitiondisablermixin.d.ts +47 -36
  9. package/dist/bindings/draggableviewmixin.d.ts +45 -37
  10. package/dist/bindings/preventdefault.d.ts +30 -30
  11. package/dist/bindings/submithandler.d.ts +49 -49
  12. package/dist/button/button.d.ts +167 -167
  13. package/dist/button/buttonlabel.d.ts +28 -28
  14. package/dist/button/buttonlabelview.d.ts +26 -26
  15. package/dist/button/buttonview.d.ts +191 -192
  16. package/dist/button/filedialogbuttonview.d.ts +107 -99
  17. package/dist/button/listitembuttonview.d.ts +72 -73
  18. package/dist/button/switchbuttonview.d.ts +39 -40
  19. package/dist/collapsible/collapsibleview.d.ts +62 -63
  20. package/dist/colorgrid/colorgridview.d.ts +116 -117
  21. package/dist/colorgrid/colors.d.ts +28 -0
  22. package/dist/colorgrid/colortileview.d.ts +21 -21
  23. package/dist/colorgrid/utils.d.ts +47 -35
  24. package/dist/colorpicker/colorpickerview.d.ts +154 -157
  25. package/dist/colorpicker/utils.d.ts +37 -37
  26. package/dist/colorselector/colorgridsfragmentview.d.ts +191 -191
  27. package/dist/colorselector/colorpickerfragmentview.d.ts +129 -129
  28. package/dist/colorselector/colorselectorview.d.ts +226 -229
  29. package/dist/colorselector/documentcolorcollection.d.ts +52 -59
  30. package/dist/componentfactory.d.ts +76 -76
  31. package/dist/dialog/dialog.d.ts +311 -288
  32. package/dist/dialog/dialogactionsview.d.ts +61 -62
  33. package/dist/dialog/dialogcontentview.d.ts +22 -22
  34. package/dist/dialog/dialogview.d.ts +254 -251
  35. package/dist/dropdown/button/dropdownbutton.d.ts +17 -17
  36. package/dist/dropdown/button/dropdownbuttonview.d.ts +41 -41
  37. package/dist/dropdown/button/splitbuttonview.d.ts +154 -155
  38. package/dist/dropdown/dropdownpanelfocusable.d.ts +16 -16
  39. package/dist/dropdown/dropdownpanelview.d.ts +56 -56
  40. package/dist/dropdown/dropdownview.d.ts +337 -326
  41. package/dist/dropdown/menu/dropdownmenubehaviors.d.ts +43 -43
  42. package/dist/dropdown/menu/dropdownmenubuttonview.d.ts +28 -29
  43. package/dist/dropdown/menu/dropdownmenulistitembuttonview.d.ts +11 -12
  44. package/dist/dropdown/menu/dropdownmenulistitemview.d.ts +16 -17
  45. package/dist/dropdown/menu/dropdownmenulistview.d.ts +19 -19
  46. package/dist/dropdown/menu/dropdownmenunestedmenupanelview.d.ts +27 -28
  47. package/dist/dropdown/menu/dropdownmenunestedmenuview.d.ts +125 -126
  48. package/dist/dropdown/menu/dropdownmenurootlistview.d.ts +132 -132
  49. package/dist/dropdown/menu/utils.d.ts +112 -112
  50. package/dist/dropdown/utils.d.ts +270 -272
  51. package/dist/editableui/editableuiview.d.ts +78 -67
  52. package/dist/editableui/inline/inlineeditableuiview.d.ts +38 -36
  53. package/dist/editorui/accessibilityhelp/accessibilityhelp.d.ts +49 -50
  54. package/dist/editorui/accessibilityhelp/accessibilityhelpcontentview.d.ts +30 -30
  55. package/dist/editorui/bodycollection.d.ts +167 -86
  56. package/dist/editorui/boxed/boxededitoruiview.d.ts +35 -35
  57. package/dist/editorui/editorui.d.ts +382 -351
  58. package/dist/editorui/editoruiview.d.ts +48 -53
  59. package/dist/editorui/evaluationbadge.d.ts +28 -28
  60. package/dist/editorui/poweredby.d.ts +25 -25
  61. package/dist/focuscycler.d.ts +265 -270
  62. package/dist/formheader/formheaderview.d.ts +52 -53
  63. package/dist/formrow/formrowview.d.ts +51 -52
  64. package/dist/highlightedtext/buttonlabelwithhighlightview.d.ts +25 -25
  65. package/dist/highlightedtext/highlightedtextview.d.ts +30 -34
  66. package/dist/highlightedtext/labelwithhighlightview.d.ts +21 -21
  67. package/dist/icon/iconview.d.ts +82 -83
  68. package/dist/iframe/iframeview.d.ts +42 -42
  69. package/dist/index-content.css +3 -0
  70. package/dist/index-content.css.map +1 -0
  71. package/dist/index-editor.css +3240 -2329
  72. package/dist/index-editor.css.map +1 -0
  73. package/dist/index.css +2939 -2032
  74. package/dist/index.css.map +1 -1
  75. package/dist/index.d.ts +144 -136
  76. package/dist/index.js +17821 -17732
  77. package/dist/index.js.map +1 -1
  78. package/dist/input/inputbase.d.ts +114 -114
  79. package/dist/input/inputview.d.ts +27 -28
  80. package/dist/inputnumber/inputnumberview.d.ts +44 -44
  81. package/dist/inputtext/inputtextview.d.ts +13 -13
  82. package/dist/label/labelview.d.ts +30 -31
  83. package/dist/labeledfield/labeledfieldview.d.ts +179 -180
  84. package/dist/labeledfield/utils.d.ts +112 -112
  85. package/dist/labeledinput/labeledinputview.d.ts +119 -120
  86. package/dist/legacyerrors.d.ts +0 -4
  87. package/dist/list/listitemgroupview.d.ts +54 -54
  88. package/dist/list/listitemview.d.ts +31 -31
  89. package/dist/list/listseparatorview.d.ts +13 -13
  90. package/dist/list/listview.d.ts +118 -119
  91. package/dist/menubar/menubarmenubuttonview.d.ts +27 -28
  92. package/dist/menubar/menubarmenulistitembuttonview.d.ts +15 -16
  93. package/dist/menubar/menubarmenulistitemfiledialogbuttonview.d.ts +17 -18
  94. package/dist/menubar/menubarmenulistitemview.d.ts +19 -20
  95. package/dist/menubar/menubarmenulistview.d.ts +24 -24
  96. package/dist/menubar/menubarmenupanelview.d.ts +46 -47
  97. package/dist/menubar/menubarmenuview.d.ts +112 -113
  98. package/dist/menubar/menubarview.d.ts +144 -145
  99. package/dist/menubar/utils.d.ts +455 -455
  100. package/dist/model.d.ts +19 -18
  101. package/dist/notification/notification.d.ts +200 -200
  102. package/dist/overlayhost.d.ts +210 -0
  103. package/dist/panel/balloon/balloonpanelview.d.ts +700 -692
  104. package/dist/panel/balloon/contextualballoon.d.ts +296 -298
  105. package/dist/panel/sticky/stickypanelview.d.ts +162 -151
  106. package/dist/search/filteredview.d.ts +23 -23
  107. package/dist/search/filtergroupanditemnames.d.ts +11 -11
  108. package/dist/search/searchinfoview.d.ts +39 -39
  109. package/dist/search/searchresultsview.d.ts +49 -49
  110. package/dist/search/text/searchtextqueryview.d.ts +63 -63
  111. package/dist/search/text/searchtextview.d.ts +202 -203
  112. package/dist/spinner/spinnerview.d.ts +19 -20
  113. package/dist/tabs/tabbuttonview.d.ts +53 -0
  114. package/dist/tabs/tabpanelview.d.ts +45 -0
  115. package/dist/template.d.ts +897 -902
  116. package/dist/textarea/textareaview.d.ts +100 -96
  117. package/dist/toolbar/balloon/balloontoolbar.d.ts +122 -122
  118. package/dist/toolbar/block/blockbuttonview.d.ts +29 -30
  119. package/dist/toolbar/block/blocktoolbar.d.ts +166 -166
  120. package/dist/toolbar/normalizetoolbarconfig.d.ts +35 -35
  121. package/dist/toolbar/toolbarlinebreakview.d.ts +13 -13
  122. package/dist/toolbar/toolbarseparatorview.d.ts +13 -13
  123. package/dist/toolbar/toolbarview.d.ts +270 -271
  124. package/dist/tooltipmanager.d.ts +317 -193
  125. package/dist/translations/af.js +1 -1
  126. package/dist/translations/af.umd.js +5 -3
  127. package/dist/translations/ar.js +1 -1
  128. package/dist/translations/ar.umd.js +5 -3
  129. package/dist/translations/ast.js +1 -1
  130. package/dist/translations/ast.umd.js +5 -3
  131. package/dist/translations/az.js +1 -1
  132. package/dist/translations/az.umd.js +5 -3
  133. package/dist/translations/be.js +1 -1
  134. package/dist/translations/be.umd.js +5 -3
  135. package/dist/translations/bg.js +1 -1
  136. package/dist/translations/bg.umd.js +5 -3
  137. package/dist/translations/bn.js +1 -1
  138. package/dist/translations/bn.umd.js +5 -3
  139. package/dist/translations/bs.js +1 -1
  140. package/dist/translations/bs.umd.js +5 -3
  141. package/dist/translations/ca.js +1 -1
  142. package/dist/translations/ca.umd.js +5 -3
  143. package/dist/translations/cs.js +1 -1
  144. package/dist/translations/cs.umd.js +5 -3
  145. package/dist/translations/da.js +1 -1
  146. package/dist/translations/da.umd.js +5 -3
  147. package/dist/translations/de-ch.js +1 -1
  148. package/dist/translations/de-ch.umd.js +5 -3
  149. package/dist/translations/de.js +1 -1
  150. package/dist/translations/de.umd.js +5 -3
  151. package/dist/translations/el.js +1 -1
  152. package/dist/translations/el.umd.js +5 -3
  153. package/dist/translations/en-au.js +1 -1
  154. package/dist/translations/en-au.umd.js +5 -3
  155. package/dist/translations/en-gb.js +1 -1
  156. package/dist/translations/en-gb.umd.js +5 -3
  157. package/dist/translations/en.js +1 -1
  158. package/dist/translations/en.umd.js +5 -3
  159. package/dist/translations/eo.js +1 -1
  160. package/dist/translations/eo.umd.js +5 -3
  161. package/dist/translations/es-co.js +1 -1
  162. package/dist/translations/es-co.umd.js +5 -3
  163. package/dist/translations/es.js +1 -1
  164. package/dist/translations/es.umd.js +5 -3
  165. package/dist/translations/et.js +1 -1
  166. package/dist/translations/et.umd.js +5 -3
  167. package/dist/translations/eu.js +1 -1
  168. package/dist/translations/eu.umd.js +5 -3
  169. package/dist/translations/fa.js +1 -1
  170. package/dist/translations/fa.umd.js +5 -3
  171. package/dist/translations/fi.js +1 -1
  172. package/dist/translations/fi.umd.js +5 -3
  173. package/dist/translations/fr.js +1 -1
  174. package/dist/translations/fr.umd.js +5 -3
  175. package/dist/translations/gl.js +1 -1
  176. package/dist/translations/gl.umd.js +5 -3
  177. package/dist/translations/gu.js +1 -1
  178. package/dist/translations/gu.umd.js +5 -3
  179. package/dist/translations/he.js +1 -1
  180. package/dist/translations/he.umd.js +5 -3
  181. package/dist/translations/hi.js +1 -1
  182. package/dist/translations/hi.umd.js +5 -3
  183. package/dist/translations/hr.js +1 -1
  184. package/dist/translations/hr.umd.js +5 -3
  185. package/dist/translations/hu.js +1 -1
  186. package/dist/translations/hu.umd.js +5 -3
  187. package/dist/translations/hy.js +1 -1
  188. package/dist/translations/hy.umd.js +5 -3
  189. package/dist/translations/id.js +1 -1
  190. package/dist/translations/id.umd.js +5 -3
  191. package/dist/translations/it.js +1 -1
  192. package/dist/translations/it.umd.js +5 -3
  193. package/dist/translations/ja.js +1 -1
  194. package/dist/translations/ja.umd.js +5 -3
  195. package/dist/translations/jv.js +1 -1
  196. package/dist/translations/jv.umd.js +5 -3
  197. package/dist/translations/kk.js +1 -1
  198. package/dist/translations/kk.umd.js +5 -3
  199. package/dist/translations/km.js +1 -1
  200. package/dist/translations/km.umd.js +5 -3
  201. package/dist/translations/kn.js +1 -1
  202. package/dist/translations/kn.umd.js +5 -3
  203. package/dist/translations/ko.js +1 -1
  204. package/dist/translations/ko.umd.js +5 -3
  205. package/dist/translations/ku.js +1 -1
  206. package/dist/translations/ku.umd.js +5 -3
  207. package/dist/translations/lt.js +1 -1
  208. package/dist/translations/lt.umd.js +5 -3
  209. package/dist/translations/lv.js +1 -1
  210. package/dist/translations/lv.umd.js +5 -3
  211. package/dist/translations/ms.js +1 -1
  212. package/dist/translations/ms.umd.js +5 -3
  213. package/dist/translations/nb.js +1 -1
  214. package/dist/translations/nb.umd.js +5 -3
  215. package/dist/translations/ne.js +1 -1
  216. package/dist/translations/ne.umd.js +5 -3
  217. package/dist/translations/nl.js +1 -1
  218. package/dist/translations/nl.umd.js +5 -3
  219. package/dist/translations/no.js +1 -1
  220. package/dist/translations/no.umd.js +5 -3
  221. package/dist/translations/oc.js +1 -1
  222. package/dist/translations/oc.umd.js +5 -3
  223. package/dist/translations/pl.js +1 -1
  224. package/dist/translations/pl.umd.js +5 -3
  225. package/dist/translations/pt-br.js +1 -1
  226. package/dist/translations/pt-br.umd.js +5 -3
  227. package/dist/translations/pt.js +1 -1
  228. package/dist/translations/pt.umd.js +5 -3
  229. package/dist/translations/ro.js +1 -1
  230. package/dist/translations/ro.umd.js +5 -3
  231. package/dist/translations/ru.js +1 -1
  232. package/dist/translations/ru.umd.js +5 -3
  233. package/dist/translations/si.js +1 -1
  234. package/dist/translations/si.umd.js +5 -3
  235. package/dist/translations/sk.js +1 -1
  236. package/dist/translations/sk.umd.js +5 -3
  237. package/dist/translations/sl.js +1 -1
  238. package/dist/translations/sl.umd.js +5 -3
  239. package/dist/translations/sq.js +1 -1
  240. package/dist/translations/sq.umd.js +5 -3
  241. package/dist/translations/sr-latn.js +1 -1
  242. package/dist/translations/sr-latn.umd.js +5 -3
  243. package/dist/translations/sr.js +1 -1
  244. package/dist/translations/sr.umd.js +5 -3
  245. package/dist/translations/sv.js +1 -1
  246. package/dist/translations/sv.umd.js +5 -3
  247. package/dist/translations/th.js +1 -1
  248. package/dist/translations/th.umd.js +5 -3
  249. package/dist/translations/ti.js +1 -1
  250. package/dist/translations/ti.umd.js +5 -3
  251. package/dist/translations/tk.js +1 -1
  252. package/dist/translations/tk.umd.js +5 -3
  253. package/dist/translations/tr.js +1 -1
  254. package/dist/translations/tr.umd.js +5 -3
  255. package/dist/translations/tt.js +1 -1
  256. package/dist/translations/tt.umd.js +5 -3
  257. package/dist/translations/ug.js +1 -1
  258. package/dist/translations/ug.umd.js +5 -3
  259. package/dist/translations/uk.js +1 -1
  260. package/dist/translations/uk.umd.js +5 -3
  261. package/dist/translations/ur.js +1 -1
  262. package/dist/translations/ur.umd.js +5 -3
  263. package/dist/translations/uz.js +1 -1
  264. package/dist/translations/uz.umd.js +5 -3
  265. package/dist/translations/vi.js +1 -1
  266. package/dist/translations/vi.umd.js +5 -3
  267. package/dist/translations/zh-cn.js +1 -1
  268. package/dist/translations/zh-cn.umd.js +5 -3
  269. package/dist/translations/zh.js +1 -1
  270. package/dist/translations/zh.umd.js +5 -3
  271. package/dist/view.d.ts +384 -388
  272. package/dist/viewcollection.d.ts +134 -134
  273. package/package.json +8 -7
@@ -1,198 +1,322 @@
1
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
- */
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
5
  /**
6
- * @module ui/tooltipmanager
7
- */
8
- import { View } from './view.js';
9
- import { BalloonPanelView } from './panel/balloon/balloonpanelview.js';
10
- import { type PositioningFunction } from '@ckeditor/ckeditor5-utils';
11
- import type { Editor } from '@ckeditor/ckeditor5-core';
12
- import '../theme/components/tooltip/tooltip.css';
13
- declare const TooltipManager_base: {
14
- new (): import("@ckeditor/ckeditor5-utils").DomEmitter;
15
- prototype: import("@ckeditor/ckeditor5-utils").DomEmitter;
16
- };
6
+ * @module ui/tooltipmanager
7
+ */
8
+ import { View } from "./view.js";
9
+ import { BalloonPanelView } from "./panel/balloon/balloonpanelview.js";
10
+ import type { BodyCollection } from "./editorui/bodycollection.js";
11
+ import { type Emitter, type Locale, type PositioningFunction, type ShadowRootRegistry, type DomEmitterMixinConstructor } from "@ckeditor/ckeditor5-utils";
12
+ declare const TooltipManagerBase: DomEmitterMixinConstructor;
17
13
  /**
18
- * A tooltip manager class for the UI of the editor.
19
- *
20
- * **Note**: Most likely you do not have to use the `TooltipManager` API listed below in order to display tooltips. Popular
21
- * {@glink framework/architecture/ui-library UI components} support tooltips out-of-the-box via observable properties
22
- * (see {@link module:ui/button/buttonview~ButtonView#tooltip} and {@link module:ui/button/buttonview~ButtonView#tooltipPosition}).
23
- *
24
- * # Displaying tooltips
25
- *
26
- * To display a tooltip, set `data-cke-tooltip-text` attribute on any DOM element:
27
- *
28
- * ```ts
29
- * domElement.dataset.ckeTooltipText = 'My tooltip';
30
- * ```
31
- *
32
- * The tooltip will show up whenever the user moves the mouse over the element or the element gets focus in DOM.
33
- *
34
- * # Positioning tooltips
35
- *
36
- * To change the position of the tooltip, use the `data-cke-tooltip-position` attribute (`s`, `se`, `sw`, `n`, `e`, or `w`):
37
- *
38
- * ```ts
39
- * domElement.dataset.ckeTooltipText = 'Tooltip to the north';
40
- * domElement.dataset.ckeTooltipPosition = 'n';
41
- * ```
42
- *
43
- * # Disabling tooltips
44
- *
45
- * In order to disable the tooltip temporarily, use the `data-cke-tooltip-disabled` attribute:
46
- *
47
- * ```ts
48
- * domElement.dataset.ckeTooltipText = 'Disabled. For now.';
49
- * domElement.dataset.ckeTooltipDisabled = 'true';
50
- * ```
51
- *
52
- * # Instant tooltips
53
- *
54
- * To remove the delay before showing or hiding the tooltip, use the `data-cke-tooltip-instant` attribute:
55
- *
56
- * ```ts
57
- * domElement.dataset.ckeTooltipInstant = 'true';
58
- * ```
59
- *
60
- * # Styling tooltips
61
- *
62
- * By default, the tooltip has `.ck-tooltip` class and its text inner `.ck-tooltip__text`.
63
- *
64
- * If your tooltip requires custom styling, using `data-cke-tooltip-class` attribute will add additional class to the balloon
65
- * displaying the tooltip:
66
- *
67
- * ```ts
68
- * domElement.dataset.ckeTooltipText = 'Tooltip with a red text';
69
- * domElement.dataset.ckeTooltipClass = 'my-class';
70
- * ```
71
- *
72
- * ```css
73
- * .ck.ck-tooltip.my-class { color: red }
74
- * ```
75
- *
76
- * **Note**: This class is a singleton. All editor instances re-use the same instance loaded by
77
- * {@link module:ui/editorui/editorui~EditorUI} of the first editor.
78
- */
79
- export declare class TooltipManager extends /* #__PURE__ */ TooltipManager_base {
80
- /**
81
- * The view rendering text of the tooltip.
82
- */
83
- readonly tooltipTextView: View & {
84
- text: string;
85
- };
86
- /**
87
- * The instance of the balloon panel that renders and positions the tooltip.
88
- */
89
- readonly balloonPanelView: BalloonPanelView;
90
- /**
91
- * A set of default {@link module:utils/dom/position~PositioningFunction positioning functions} used by the `TooltipManager`
92
- * to pin tooltips in different positions.
93
- */
94
- static defaultBalloonPositions: Record<string, PositioningFunction>;
95
- /**
96
- * Stores the reference to the DOM element the tooltip is attached to. `null` when there's no tooltip
97
- * in the UI.
98
- */
99
- private _currentElementWithTooltip;
100
- /**
101
- * Stores the current tooltip position. `null` when there's no tooltip in the UI.
102
- */
103
- private _currentTooltipPosition;
104
- /**
105
- * An instance of the mutation observer that keeps track on target element attributes changes.
106
- */
107
- private _mutationObserver;
108
- /**
109
- * A debounced version of {@link #_pinTooltip}. Tooltips show with a delay to avoid flashing and
110
- * to improve the UX.
111
- */
112
- private _pinTooltipDebounced;
113
- /**
114
- * A debounced version of {@link #_unpinTooltip}. Tooltips hide with a delay to allow hovering of their titles.
115
- */
116
- private _unpinTooltipDebounced;
117
- private readonly _watchdogExcluded;
118
- /**
119
- * A set of editors the single tooltip manager instance must listen to.
120
- * This is mostly to handle `EditorUI#update` listeners from individual editors.
121
- */
122
- private static _editors;
123
- /**
124
- * A reference to the `TooltipManager` instance. The class is a singleton and as such,
125
- * successive attempts at creating instances should return this instance.
126
- */
127
- private static _instance;
128
- /**
129
- * Creates an instance of the tooltip manager.
130
- */
131
- constructor(editor: Editor);
132
- /**
133
- * Destroys the tooltip manager.
134
- *
135
- * **Note**: The manager singleton cannot be destroyed until all editors that use it are destroyed.
136
- *
137
- * @param editor The editor the manager was created for.
138
- */
139
- destroy(editor: Editor): void;
140
- /**
141
- * Returns {@link #balloonPanelView} {@link module:utils/dom/position~PositioningFunction positioning functions} for a given position
142
- * name.
143
- *
144
- * @param position Name of the position (`s`, `se`, `sw`, `n`, `e`, or `w`).
145
- * @returns Positioning functions to be used by the {@link #balloonPanelView}.
146
- */
147
- static getPositioningFunctions(position: TooltipPosition): Array<PositioningFunction>;
148
- /**
149
- * Handles hiding tooltips on `keydown` in DOM.
150
- *
151
- * @param evt An object containing information about the fired event.
152
- * @param domEvent The DOM event.
153
- */
154
- private _onKeyDown;
155
- /**
156
- * Handles displaying tooltips on `mouseenter` and `focus` in DOM.
157
- *
158
- * @param evt An object containing information about the fired event.
159
- * @param domEvent The DOM event.
160
- */
161
- private _onEnterOrFocus;
162
- /**
163
- * Handles hiding tooltips on `mouseleave` and `blur` in DOM.
164
- *
165
- * @param evt An object containing information about the fired event.
166
- * @param domEvent The DOM event.
167
- */
168
- private _onLeaveOrBlur;
169
- /**
170
- * Handles hiding tooltips on `scroll` in DOM.
171
- *
172
- * @param evt An object containing information about the fired event.
173
- * @param domEvent The DOM event.
174
- */
175
- private _onScroll;
176
- /**
177
- * Pins the tooltip to a specific DOM element.
178
- *
179
- * @param targetDomElement Element to be pinned to.
180
- * @param options Options for the tooltip.
181
- * @param options.text Text of the tooltip to display.
182
- * @param options.position The position of the tooltip.
183
- * @param options.cssClass Additional CSS class of the balloon with the tooltip.
184
- */
185
- private _pinTooltip;
186
- /**
187
- * Unpins the tooltip and cancels all queued pinning.
188
- */
189
- private _unpinTooltip;
190
- /**
191
- * Updates the position of the tooltip so it stays in sync with the element it is pinned to.
192
- *
193
- * Hides the tooltip when the element is no longer visible in DOM or the tooltip text was removed.
194
- */
195
- private _updateTooltipPosition;
14
+ * A tooltip manager class for the UI of the editor.
15
+ *
16
+ * **Note**: Most likely you do not have to use the `TooltipManager` API listed below in order to display tooltips. Popular
17
+ * {@glink framework/architecture/ui-library UI components} support tooltips out-of-the-box via observable properties
18
+ * (see {@link module:ui/button/buttonview~ButtonView#tooltip} and {@link module:ui/button/buttonview~ButtonView#tooltipPosition}).
19
+ *
20
+ * # Displaying tooltips
21
+ *
22
+ * To display a tooltip, set `data-cke-tooltip-text` attribute on any DOM element:
23
+ *
24
+ * ```ts
25
+ * domElement.dataset.ckeTooltipText = 'My tooltip';
26
+ * ```
27
+ *
28
+ * The tooltip will show up whenever the user moves the mouse over the element or the element gets focus in DOM.
29
+ *
30
+ * # Positioning tooltips
31
+ *
32
+ * To change the position of the tooltip, use the `data-cke-tooltip-position` attribute (`s`, `se`, `sw`, `n`, `e`, or `w`):
33
+ *
34
+ * ```ts
35
+ * domElement.dataset.ckeTooltipText = 'Tooltip to the north';
36
+ * domElement.dataset.ckeTooltipPosition = 'n';
37
+ * ```
38
+ *
39
+ * # Disabling tooltips
40
+ *
41
+ * In order to disable the tooltip temporarily, use the `data-cke-tooltip-disabled` attribute:
42
+ *
43
+ * ```ts
44
+ * domElement.dataset.ckeTooltipText = 'Disabled. For now.';
45
+ * domElement.dataset.ckeTooltipDisabled = 'true';
46
+ * ```
47
+ *
48
+ * # Instant tooltips
49
+ *
50
+ * To remove the delay before showing or hiding the tooltip, use the `data-cke-tooltip-instant` attribute:
51
+ *
52
+ * ```ts
53
+ * domElement.dataset.ckeTooltipInstant = 'true';
54
+ * ```
55
+ *
56
+ * # Styling tooltips
57
+ *
58
+ * By default, the tooltip has `.ck-tooltip` class and its text inner `.ck-tooltip__text`.
59
+ *
60
+ * If your tooltip requires custom styling, using `data-cke-tooltip-class` attribute will add additional class to the balloon
61
+ * displaying the tooltip:
62
+ *
63
+ * ```ts
64
+ * domElement.dataset.ckeTooltipText = 'Tooltip with a red text';
65
+ * domElement.dataset.ckeTooltipClass = 'my-class';
66
+ * ```
67
+ *
68
+ * ```css
69
+ * .ck.ck-tooltip.my-class { color: red }
70
+ * ```
71
+ *
72
+ * **Note**: This class is a singleton. All editor instances re-use the same instance loaded by
73
+ * {@link module:ui/editorui/editorui~EditorUI} of the first editor.
74
+ */
75
+ export declare class TooltipManager extends TooltipManagerBase {
76
+ /**
77
+ * The view rendering text of the tooltip.
78
+ */
79
+ readonly tooltipTextView: View & {
80
+ text: string;
81
+ };
82
+ /**
83
+ * The instance of the balloon panel that renders and positions the tooltip.
84
+ */
85
+ readonly balloonPanelView: BalloonPanelView;
86
+ /**
87
+ * A set of default {@link module:utils/dom/position~PositioningFunction positioning functions} used by the `TooltipManager`
88
+ * to pin tooltips in different positions.
89
+ */
90
+ static defaultBalloonPositions: Record<string, PositioningFunction>;
91
+ /**
92
+ * Stores the reference to the DOM element the tooltip is attached to. `null` when there's no tooltip
93
+ * in the UI.
94
+ */
95
+ private _currentElementWithTooltip;
96
+ /**
97
+ * Stores the current tooltip position. `null` when there's no tooltip in the UI.
98
+ */
99
+ private _currentTooltipPosition;
100
+ /**
101
+ * An instance of the mutation observer that keeps track on target element attributes changes.
102
+ */
103
+ private _mutationObserver;
104
+ /**
105
+ * A debounced version of {@link #_pinTooltip}. Tooltips show with a delay to avoid flashing and
106
+ * to improve the UX.
107
+ */
108
+ private _pinTooltipDebounced;
109
+ /**
110
+ * A debounced version of {@link #_unpinTooltip}. Tooltips hide with a delay to allow hovering of their titles.
111
+ */
112
+ private _unpinTooltipDebounced;
113
+ /**
114
+ * Shadow roots the manager currently has listeners attached to.
115
+ */
116
+ private _shadowRoots;
117
+ /**
118
+ * Maps each DOM tree (the document or a shadow root) that hosts tooltip-bearing UI to the body collection
119
+ * the shared tooltip balloon should be pinned into for targets in that tree. Rebuilt from
120
+ * {@link module:ui/tooltipmanager~TooltipManager._registrations} by {@link #_rebuild}.
121
+ */
122
+ private _bodyCollectionByTree;
123
+ private readonly _watchdogExcluded;
124
+ /**
125
+ * The number of holders (editors and features) currently using the singleton, so it is destroyed only when
126
+ * the last one {@link #release releases} it.
127
+ */
128
+ private _refCount;
129
+ /**
130
+ * A reference to the `TooltipManager` instance. The class is a singleton and as such,
131
+ * successive attempts at creating instances should return this instance.
132
+ */
133
+ private static _instance;
134
+ /**
135
+ * The body collections the shared tooltip balloon may be pinned into, each with the sources describing where
136
+ * its tooltip-bearing UI lives: an optional {@link module:utils/dom/shadowrootregistry~ShadowRootRegistry}
137
+ * (the shadow roots its out-of-collection UI occupies) and an optional emitter whose `update` event should
138
+ * reposition a pinned tooltip.
139
+ */
140
+ private static _registrations;
141
+ /**
142
+ * Returns the shared `TooltipManager` singleton, creating it – with the given locale – on first use, and
143
+ * marks one more holder as using it. Every caller must later {@link #release} it, so the singleton is
144
+ * destroyed once the last holder is gone.
145
+ *
146
+ * Editors and features obtain the manager this way and then {@link #registerBodyCollection register} the
147
+ * body collection their tooltip-bearing UI renders into. A feature therefore does not need an editor
148
+ * reference to display tooltips – it attaches to the same singleton directly.
149
+ *
150
+ * @param locale The locale used to create the tooltip views on first use.
151
+ */
152
+ static for(locale: Locale): TooltipManager;
153
+ /**
154
+ * Creates an instance of the tooltip manager. Private – use {@link module:ui/tooltipmanager~TooltipManager.for} to obtain the shared
155
+ * singleton.
156
+ */
157
+ private constructor();
158
+ /**
159
+ * Marks one holder as done with the singleton (see {@link module:ui/tooltipmanager~TooltipManager.for}). When the last holder
160
+ * releases it, the singleton unpins the tooltip, destroys the shared balloon and drops every listener.
161
+ */
162
+ release(): void;
163
+ /**
164
+ * Registers a body collection the shared tooltip balloon may be pinned into, so that a tooltip triggered
165
+ * inside its DOM tree is hosted there instead of an unrelated one – keeping it in the same shadow tree, not
166
+ * clipped by or mis-styled across a boundary. Editors register their own
167
+ * {@link module:ui/editorui/editoruiview~EditorUIView#body body collection}; features that render floating UI
168
+ * in their own body collection register it too, which is what lets them display tooltips without an editor.
169
+ *
170
+ * @param bodyCollection The body collection to register.
171
+ * @param options Additional sources describing where this collection's tooltip-bearing UI lives.
172
+ * @param options.shadowRootRegistry The shadow roots hosting UI that is *not* inside `bodyCollection` (an
173
+ * editor's editables, toolbar, menu bar). Omit it when all tooltip-bearing UI lives inside the collection.
174
+ * @param options.updateEmitter An emitter whose `update` event should reposition a pinned tooltip (an editor
175
+ * passes its {@link module:ui/editorui/editorui~EditorUI}). Omit it when nothing moves the tooltip anchor.
176
+ */
177
+ registerBodyCollection(bodyCollection: BodyCollection, { shadowRootRegistry, updateEmitter }?: BodyCollectionRegistration): void;
178
+ /**
179
+ * Reverts {@link #registerBodyCollection}: stops hosting the shared balloon in the given collection and
180
+ * drops the listeners set up for it. Pulls the shared balloon out first, so it never dangles in a collection
181
+ * that is going away.
182
+ *
183
+ * @param bodyCollection The body collection to unregister.
184
+ */
185
+ unregisterBodyCollection(bodyCollection: BodyCollection): void;
186
+ /**
187
+ * Returns the distinct `update` emitters of all registered body collections.
188
+ *
189
+ * Deduplicated, because an emitter can be shared by several registrations (an editor and a feature hosting its
190
+ * own overlay layer both follow the editor's UI update) while listeners are attached per emitter, not per
191
+ * registration – listening once per registration would reposition a pinned tooltip several times per update.
192
+ */
193
+ private _getUpdateEmitters;
194
+ /**
195
+ * Rebuilds {@link #_bodyCollectionByTree} from {@link module:ui/tooltipmanager~TooltipManager._registrations}: every registered
196
+ * collection claims the DOM tree it is mounted in, and – for editors – every shadow root its registry reports (ancestor-inclusive,
197
+ * so nested and decoupled trees resolve too). Then re-syncs the per-shadow-root listeners.
198
+ */
199
+ private _rebuild;
200
+ /**
201
+ * Returns {@link #balloonPanelView} {@link module:utils/dom/position~PositioningFunction positioning functions} for a given position
202
+ * name.
203
+ *
204
+ * @param position Name of the position (`s`, `se`, `sw`, `n`, `e`, or `w`).
205
+ * @returns Positioning functions to be used by the {@link #balloonPanelView}.
206
+ */
207
+ static getPositioningFunctions(position: TooltipPosition): Array<PositioningFunction>;
208
+ /**
209
+ * Handles hiding tooltips on `keydown` in DOM.
210
+ *
211
+ * @param evt An object containing information about the fired event.
212
+ * @param domEvent The DOM event.
213
+ */
214
+ private _onKeyDown;
215
+ /**
216
+ * Handles displaying tooltips on `mouseenter` and `focus` in DOM.
217
+ *
218
+ * @param evt An object containing information about the fired event.
219
+ * @param domEvent The DOM event.
220
+ */
221
+ private _onEnterOrFocus;
222
+ /**
223
+ * Handles hiding tooltips on `mouseleave` and `blur` in DOM.
224
+ *
225
+ * @param evt An object containing information about the fired event.
226
+ * @param domEvent The DOM event.
227
+ */
228
+ private _onLeaveOrBlur;
229
+ /**
230
+ * Attaches or detaches listeners on shadow roots so they match the shadow roots that host tooltip-bearing UI
231
+ * exactly, i.e. the shadow-root keys of {@link #_bodyCollectionByTree}.
232
+ *
233
+ * The listeners duplicate the ones on `document` for two different reasons:
234
+ *
235
+ * * `mouseenter`, `mouseleave` and `scroll` are not `composed`, so their event path ends at the shadow root
236
+ * they originated in and the `document` listeners never see them at all. Here the per-root listener is what
237
+ * delivers the event.
238
+ * * `focus` and `blur` are `composed`, so the capturing `document` listeners do see them (the capture phase
239
+ * walks the whole composed path even though these events do not bubble) — but with `target` retargeted to
240
+ * the shadow host, which is useless for `getDescendantWithTooltip()`. Here the per-root listener is
241
+ * what provides the real target. It cannot be replaced by reading `composedPath()[0]` on `document`,
242
+ * because that path is truncated at the boundary of a `closed` root.
243
+ *
244
+ * Since the capture phase runs outwards-in, the `document` listener fires *before* these; see the
245
+ * `isShadowHostOf()` guards in {@link #_onEnterOrFocus} and {@link #_onLeaveOrBlur}, which make the
246
+ * outer listeners step aside for the innermost one.
247
+ */
248
+ private _resyncShadowRootListeners;
249
+ /**
250
+ * Handles hiding tooltips on `scroll` in DOM.
251
+ *
252
+ * @param evt An object containing information about the fired event.
253
+ * @param domEvent The DOM event.
254
+ */
255
+ private _onScroll;
256
+ /**
257
+ * Pins the tooltip to a specific DOM element.
258
+ *
259
+ * @param targetDomElement Element to be pinned to.
260
+ * @param options Options for the tooltip.
261
+ * @param options.text Text of the tooltip to display.
262
+ * @param options.position The position of the tooltip.
263
+ * @param options.cssClass Additional CSS class of the balloon with the tooltip.
264
+ */
265
+ private _pinTooltip;
266
+ /**
267
+ * Moves the shared tooltip balloon into the body collection returned by {@link #_getConnectedBodyCollection},
268
+ * first removing it from any registered body collection that previously hosted it. The balloon is a singleton
269
+ * shared by every registrant, so it must belong to exactly one collection at a time; otherwise unregistering
270
+ * one collection would detach the shared element while another registrant still references it.
271
+ *
272
+ * @param targetDomElement The element the tooltip is being pinned to, used to prefer the body collection
273
+ * that hosts its DOM tree.
274
+ * @returns `true` if a host body collection was found (and the balloon moved into it), `false` when none is
275
+ * registered and the tooltip therefore cannot be shown.
276
+ */
277
+ private _moveBalloonToConnectedBodyCollection;
278
+ /**
279
+ * Returns the body collection the shared tooltip balloon should be pinned into. The balloon is a singleton,
280
+ * but each registered body collection can live in a different DOM tree (a shadow root, or a configured
281
+ * `ui.overlayContainer`). To keep the tooltip in the tree of the hovered element — so it is styled by that
282
+ * tree's sheets and not clipped by another root — the tree is looked up in {@link #_bodyCollectionByTree},
283
+ * which maps every tree hosting tooltip-bearing UI (a collection's own mount tree, and an editor's editable,
284
+ * toolbar or menu bar trees) to the collection that should host it.
285
+ *
286
+ * A body collection is mounted lazily and unmounted when its host leaves the document, and a configured
287
+ * `ui.overlayContainer` may be detached — a body in either state would render the balloon outside the
288
+ * document and hide tooltips, so the mount target must be connected, not merely set. When no connected body
289
+ * collection hosts the hovered element's tree, it falls back to the first connected registrant, then to the
290
+ * first registered one, and to `null` when nothing is registered at all.
291
+ *
292
+ * @param targetDomElement The element the tooltip is being pinned to.
293
+ */
294
+ private _getConnectedBodyCollection;
295
+ /**
296
+ * Unpins the tooltip and cancels all queued pinning.
297
+ */
298
+ private _unpinTooltip;
299
+ /**
300
+ * Updates the position of the tooltip so it stays in sync with the element it is pinned to.
301
+ *
302
+ * Hides the tooltip when the element is no longer visible in DOM or the tooltip text was removed.
303
+ */
304
+ private _updateTooltipPosition;
305
+ }
306
+ export type TooltipPosition = "s" | "n" | "e" | "w" | "sw" | "se";
307
+ /**
308
+ * The sources describing where a {@link module:ui/tooltipmanager~TooltipManager#registerBodyCollection registered}
309
+ * body collection's tooltip-bearing UI lives.
310
+ */
311
+ export interface BodyCollectionRegistration {
312
+ /**
313
+ * The shadow roots hosting UI that is not inside the registered body collection (an editor's editables,
314
+ * toolbar or menu bar). Omitted when all tooltip-bearing UI lives inside the collection.
315
+ */
316
+ shadowRootRegistry?: ShadowRootRegistry;
317
+ /**
318
+ * An emitter whose `update` event should reposition a pinned tooltip. Omitted when nothing moves the anchor.
319
+ */
320
+ updateEmitter?: Emitter;
196
321
  }
197
- export type TooltipPosition = 's' | 'n' | 'e' | 'w' | 'sw' | 'se';
198
322
  export {};
@@ -2,4 +2,4 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
- export default {"af":{"dictionary":{"Rich Text Editor":"","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"Wysig","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""},getPluralForm(n){return (n != 1);}}}
5
+ export default {"af":{"dictionary":{"Rich Text Editor":"","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Indigo":"","Cyan":"","Teal":"","Lime":"","Amber":"","Blue grey":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"Wysig","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""}}}
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  ( e => {
7
- const { [ 'af' ]: { dictionary, getPluralForm } } = {"af":{"dictionary":{"Rich Text Editor":"","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"Wysig","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""},getPluralForm(n){return (n != 1);}}};
7
+ const { [ 'af' ]: translations } = {"af":{"dictionary":{"Rich Text Editor":"","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Indigo":"","Cyan":"","Teal":"","Lime":"","Amber":"","Blue grey":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"Wysig","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""}}};
8
8
  e[ 'af' ] ||= { dictionary: {}, getPluralForm: null };
9
- e[ 'af' ].dictionary = Object.assign( e[ 'af' ].dictionary, dictionary );
10
- e[ 'af' ].getPluralForm = getPluralForm;
9
+ e[ 'af' ].dictionary = Object.assign( e[ 'af' ].dictionary, translations.dictionary );
10
+ if ( translations.getPluralForm ) {
11
+ e[ 'af' ].getPluralForm = translations.getPluralForm;
12
+ }
11
13
  } )( window.CKEDITOR_TRANSLATIONS ||= {} );
@@ -2,4 +2,4 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
- export default {"ar":{"dictionary":{"Rich Text Editor":"معالج نصوص","Edit block":"كتلة التحرير","Click to edit block":"انقر لتحرير الوحدة التجميعية","Drag to move":"اسحب للنقل","Next":"التالي","Previous":"السابق","Editor toolbar":"شريط أدوات المحرر","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Dropdown menu":"القائمة المنسدلة","Black":"أسود","Dim grey":"رمادي خافت","Grey":"رمادي","Light grey":"رمادي فاتح","White":"أبيض","Red":"أحمر","Orange":"برتقالي","Yellow":"أصفر","Light green":"أخضر فاتح","Green":"أخضر","Aquamarine":"أخضر زبرجد","Turquoise":"فيروزي","Light blue":"أزرق فاتح","Blue":"أزرق","Purple":"أرجواني","Editor block content toolbar":"شريط المحرر لأدوات كتلة المحتوى","Editor contextual toolbar":"شريط المحرر للأدوات السياقية","HEX":"لون سداسي عشري","No results found":"لم يتم العثور على نتائج","No searchable items":"لا توجد عناصر قابلة للبحث متاحة","Editor dialog":"حوار المحرر","Close":"إغلاق","Help Contents. To close this dialog press ESC.":"محتويات التعليمات. لإغلاق هذا الحوار، اضغطْ على مفتاح ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"ستجد أدناه قائمة باختصارات لوحة المفاتيح التي يمكن استخدامها في المحرِّر.","(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","Accessibility":"إمكانية الوصول","Accessibility help":"تعليمات إمكانية الوصول","Press %0 for help.":"اضغط على %0 للحصول على التعليمات.","Move focus in and out of an active dialog window":"انقلْ التركيز داخل وخارج نافذة الحوار النشطة","MENU_BAR_MENU_FILE":"ملف","MENU_BAR_MENU_EDIT":"تحرير","MENU_BAR_MENU_VIEW":"عرض","MENU_BAR_MENU_INSERT":"إدراج","MENU_BAR_MENU_FORMAT":"صيغة","MENU_BAR_MENU_TOOLS":"أدوات","MENU_BAR_MENU_HELP":"مساعدة","MENU_BAR_MENU_TEXT":"نص","MENU_BAR_MENU_FONT":"خط","Editor menu bar":"شريط قائمة المحرِّر","Please enter a valid color (e.g. \"ff0000\").":"يُرجى إدخال لون صالح (على سبيل المثال \"ff0000\")."},getPluralForm(n){return (n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);}}}
5
+ export default {"ar":{"dictionary":{"Rich Text Editor":"معالج نصوص","Edit block":"كتلة التحرير","Click to edit block":"انقر لتحرير الوحدة التجميعية","Drag to move":"اسحب للنقل","Next":"التالي","Previous":"السابق","Editor toolbar":"شريط أدوات المحرر","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Dropdown menu":"القائمة المنسدلة","Black":"أسود","Dim grey":"رمادي خافت","Grey":"رمادي","Light grey":"رمادي فاتح","White":"أبيض","Red":"أحمر","Orange":"برتقالي","Yellow":"أصفر","Light green":"أخضر فاتح","Green":"أخضر","Aquamarine":"أخضر زبرجد","Turquoise":"فيروزي","Light blue":"أزرق فاتح","Blue":"أزرق","Purple":"أرجواني","Indigo":"نيلي","Cyan":"سماوي","Teal":"أزرق مخضر","Lime":"أخضر ليموني","Amber":"كهرماني","Blue grey":"رمادي مزرق","Editor block content toolbar":"شريط المحرر لأدوات كتلة المحتوى","Editor contextual toolbar":"شريط المحرر للأدوات السياقية","HEX":"لون سداسي عشري","No results found":"لم يتم العثور على نتائج","No searchable items":"لا توجد عناصر قابلة للبحث متاحة","Editor dialog":"حوار المحرر","Close":"إغلاق","Help Contents. To close this dialog press ESC.":"محتويات التعليمات. لإغلاق هذا الحوار، اضغطْ على مفتاح ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"ستجد أدناه قائمة باختصارات لوحة المفاتيح التي يمكن استخدامها في المحرِّر.","(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","Accessibility":"إمكانية الوصول","Accessibility help":"تعليمات إمكانية الوصول","Press %0 for help.":"اضغط على %0 للحصول على التعليمات.","Move focus in and out of an active dialog window":"انقلْ التركيز داخل وخارج نافذة الحوار النشطة","MENU_BAR_MENU_FILE":"ملف","MENU_BAR_MENU_EDIT":"تحرير","MENU_BAR_MENU_VIEW":"عرض","MENU_BAR_MENU_INSERT":"إدراج","MENU_BAR_MENU_FORMAT":"صيغة","MENU_BAR_MENU_TOOLS":"أدوات","MENU_BAR_MENU_HELP":"مساعدة","MENU_BAR_MENU_TEXT":"نص","MENU_BAR_MENU_FONT":"خط","Editor menu bar":"شريط قائمة المحرِّر","Please enter a valid color (e.g. \"ff0000\").":"يُرجى إدخال لون صالح (على سبيل المثال \"ff0000\")."}}}
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  ( e => {
7
- const { [ 'ar' ]: { dictionary, getPluralForm } } = {"ar":{"dictionary":{"Rich Text Editor":"معالج نصوص","Edit block":"كتلة التحرير","Click to edit block":"انقر لتحرير الوحدة التجميعية","Drag to move":"اسحب للنقل","Next":"التالي","Previous":"السابق","Editor toolbar":"شريط أدوات المحرر","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Dropdown menu":"القائمة المنسدلة","Black":"أسود","Dim grey":"رمادي خافت","Grey":"رمادي","Light grey":"رمادي فاتح","White":"أبيض","Red":"أحمر","Orange":"برتقالي","Yellow":"أصفر","Light green":"أخضر فاتح","Green":"أخضر","Aquamarine":"أخضر زبرجد","Turquoise":"فيروزي","Light blue":"أزرق فاتح","Blue":"أزرق","Purple":"أرجواني","Editor block content toolbar":"شريط المحرر لأدوات كتلة المحتوى","Editor contextual toolbar":"شريط المحرر للأدوات السياقية","HEX":"لون سداسي عشري","No results found":"لم يتم العثور على نتائج","No searchable items":"لا توجد عناصر قابلة للبحث متاحة","Editor dialog":"حوار المحرر","Close":"إغلاق","Help Contents. To close this dialog press ESC.":"محتويات التعليمات. لإغلاق هذا الحوار، اضغطْ على مفتاح ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"ستجد أدناه قائمة باختصارات لوحة المفاتيح التي يمكن استخدامها في المحرِّر.","(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","Accessibility":"إمكانية الوصول","Accessibility help":"تعليمات إمكانية الوصول","Press %0 for help.":"اضغط على %0 للحصول على التعليمات.","Move focus in and out of an active dialog window":"انقلْ التركيز داخل وخارج نافذة الحوار النشطة","MENU_BAR_MENU_FILE":"ملف","MENU_BAR_MENU_EDIT":"تحرير","MENU_BAR_MENU_VIEW":"عرض","MENU_BAR_MENU_INSERT":"إدراج","MENU_BAR_MENU_FORMAT":"صيغة","MENU_BAR_MENU_TOOLS":"أدوات","MENU_BAR_MENU_HELP":"مساعدة","MENU_BAR_MENU_TEXT":"نص","MENU_BAR_MENU_FONT":"خط","Editor menu bar":"شريط قائمة المحرِّر","Please enter a valid color (e.g. \"ff0000\").":"يُرجى إدخال لون صالح (على سبيل المثال \"ff0000\")."},getPluralForm(n){return (n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);}}};
7
+ const { [ 'ar' ]: translations } = {"ar":{"dictionary":{"Rich Text Editor":"معالج نصوص","Edit block":"كتلة التحرير","Click to edit block":"انقر لتحرير الوحدة التجميعية","Drag to move":"اسحب للنقل","Next":"التالي","Previous":"السابق","Editor toolbar":"شريط أدوات المحرر","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Dropdown menu":"القائمة المنسدلة","Black":"أسود","Dim grey":"رمادي خافت","Grey":"رمادي","Light grey":"رمادي فاتح","White":"أبيض","Red":"أحمر","Orange":"برتقالي","Yellow":"أصفر","Light green":"أخضر فاتح","Green":"أخضر","Aquamarine":"أخضر زبرجد","Turquoise":"فيروزي","Light blue":"أزرق فاتح","Blue":"أزرق","Purple":"أرجواني","Indigo":"نيلي","Cyan":"سماوي","Teal":"أزرق مخضر","Lime":"أخضر ليموني","Amber":"كهرماني","Blue grey":"رمادي مزرق","Editor block content toolbar":"شريط المحرر لأدوات كتلة المحتوى","Editor contextual toolbar":"شريط المحرر للأدوات السياقية","HEX":"لون سداسي عشري","No results found":"لم يتم العثور على نتائج","No searchable items":"لا توجد عناصر قابلة للبحث متاحة","Editor dialog":"حوار المحرر","Close":"إغلاق","Help Contents. To close this dialog press ESC.":"محتويات التعليمات. لإغلاق هذا الحوار، اضغطْ على مفتاح ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"ستجد أدناه قائمة باختصارات لوحة المفاتيح التي يمكن استخدامها في المحرِّر.","(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","Accessibility":"إمكانية الوصول","Accessibility help":"تعليمات إمكانية الوصول","Press %0 for help.":"اضغط على %0 للحصول على التعليمات.","Move focus in and out of an active dialog window":"انقلْ التركيز داخل وخارج نافذة الحوار النشطة","MENU_BAR_MENU_FILE":"ملف","MENU_BAR_MENU_EDIT":"تحرير","MENU_BAR_MENU_VIEW":"عرض","MENU_BAR_MENU_INSERT":"إدراج","MENU_BAR_MENU_FORMAT":"صيغة","MENU_BAR_MENU_TOOLS":"أدوات","MENU_BAR_MENU_HELP":"مساعدة","MENU_BAR_MENU_TEXT":"نص","MENU_BAR_MENU_FONT":"خط","Editor menu bar":"شريط قائمة المحرِّر","Please enter a valid color (e.g. \"ff0000\").":"يُرجى إدخال لون صالح (على سبيل المثال \"ff0000\")."}}};
8
8
  e[ 'ar' ] ||= { dictionary: {}, getPluralForm: null };
9
- e[ 'ar' ].dictionary = Object.assign( e[ 'ar' ].dictionary, dictionary );
10
- e[ 'ar' ].getPluralForm = getPluralForm;
9
+ e[ 'ar' ].dictionary = Object.assign( e[ 'ar' ].dictionary, translations.dictionary );
10
+ if ( translations.getPluralForm ) {
11
+ e[ 'ar' ].getPluralForm = translations.getPluralForm;
12
+ }
11
13
  } )( window.CKEDITOR_TRANSLATIONS ||= {} );
@@ -2,4 +2,4 @@
2
2
  * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
- export default {"ast":{"dictionary":{"Rich Text Editor":"Editor de testu arriquecíu","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""},getPluralForm(n){return (n != 1);}}}
5
+ export default {"ast":{"dictionary":{"Rich Text Editor":"Editor de testu arriquecíu","Edit block":"","Click to edit block":"","Drag to move":"","Next":"","Previous":"","Editor toolbar":"","Dropdown toolbar":"","Dropdown menu":"","Black":"","Dim grey":"","Grey":"","Light grey":"","White":"","Red":"","Orange":"","Yellow":"","Light green":"","Green":"","Aquamarine":"","Turquoise":"","Light blue":"","Blue":"","Purple":"","Indigo":"","Cyan":"","Teal":"","Lime":"","Amber":"","Blue grey":"","Editor block content toolbar":"","Editor contextual toolbar":"","HEX":"","No results found":"","No searchable items":"","Editor dialog":"","Close":"","Help Contents. To close this dialog press ESC.":"","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"","(may require <kbd>Fn</kbd>)":"","Accessibility":"","Accessibility help":"","Press %0 for help.":"","Move focus in and out of an active dialog window":"","MENU_BAR_MENU_FILE":"","MENU_BAR_MENU_EDIT":"","MENU_BAR_MENU_VIEW":"","MENU_BAR_MENU_INSERT":"","MENU_BAR_MENU_FORMAT":"","MENU_BAR_MENU_TOOLS":"","MENU_BAR_MENU_HELP":"","MENU_BAR_MENU_TEXT":"","MENU_BAR_MENU_FONT":"","Editor menu bar":"","Please enter a valid color (e.g. \"ff0000\").":""}}}