adminizer 4.2.0 → 4.3.0-build.100

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 (276) hide show
  1. package/assets/add-1E1UsMVZ.js +1 -0
  2. package/assets/add-form-CGa9QbwE.js +1 -0
  3. package/assets/add-group-7yAK6uFY.js +1 -0
  4. package/assets/add-group-form-BNmpvW8K.js +1 -0
  5. package/assets/add-user-NoYkTfZi.js +1 -0
  6. package/assets/add-user-form-DrclnTOd.js +1 -0
  7. package/assets/{app-CVnUv8s_.css → app-D8oqdt8J.css} +1 -1
  8. package/assets/app-layout-i2zN9Rn-.js +1 -0
  9. package/assets/app-shell-CHEYhVco.js +1 -0
  10. package/assets/app-sidebar-DeF8WNmW.js +1 -0
  11. package/assets/app-sidebar-header-DdM1EOrb.js +1 -0
  12. package/assets/app.js +1699 -1657
  13. package/assets/breadcrumbs-C439DWrC.js +1 -0
  14. package/assets/catalog-B9hdop59.js +6 -0
  15. package/assets/dashboard-Bi5KeZu2.js +3 -0
  16. package/assets/date-picker-DbJ8nHp5.js +1 -0
  17. package/assets/del-modal-_b3CSNHb.js +1 -0
  18. package/assets/dynamic-controls-BOYmRX_z.js +1 -0
  19. package/assets/field-renderer-4obZ_jUo.js +407 -0
  20. package/assets/{field-renderer-CsBa_tMB.css → field-renderer-CRNLShJD.css} +1 -1
  21. package/assets/form-Bte5kzjB.js +1 -0
  22. package/assets/form-oUlsuu7h.js +1 -0
  23. package/assets/geo-json-CadjdhwW.js +4 -0
  24. package/assets/handsontable-PVakPtJV.js +281 -0
  25. package/assets/home-CsUXA-O6.js +2 -0
  26. package/assets/icon-DM49pZW3.js +1 -0
  27. package/assets/init-user-DNrB8Xt5.js +1 -0
  28. package/assets/input-error--IOnWghB.js +1 -0
  29. package/assets/jsoneditor-D95dIAP2.js +3878 -0
  30. package/assets/list-CdfSnSN1.js +1 -0
  31. package/assets/list-table-Byzv346I.js +22 -0
  32. package/assets/login-6Xb8bcPq.js +1 -0
  33. package/assets/manifest.json +331 -221
  34. package/assets/material-icon-BedgD2NE.js +1 -0
  35. package/assets/media-manager-UQT6RhI8.js +14 -0
  36. package/assets/module-B4-7WkY5.js +1 -0
  37. package/assets/monaco-ICtx6xoc.js +11 -0
  38. package/assets/nav-footer-BwkQkwow.js +1 -0
  39. package/assets/nav-main-9Eb_A0rf.js +1 -0
  40. package/assets/nav-user-CRAfyE-x.js +1 -0
  41. package/assets/notification-ma2x7vka.js +27 -0
  42. package/assets/pagination-render-xsEktzA8.js +1 -0
  43. package/assets/register-BIyjCy8M.js +1 -0
  44. package/assets/tabs-BK_5wdPA.js +1 -0
  45. package/assets/theme-switcher-CKiJbMkh.js +1 -0
  46. package/assets/toast-editor-BZM5RHph.js +845 -0
  47. package/assets/user-info-CcYdmjMZ.js +1 -0
  48. package/assets/user-menu-content-DbUk8ZeY.js +1 -0
  49. package/assets/vanilla-picker-l5rcX3cq.js +8 -0
  50. package/assets/vendor-wzZzN_Jv.js +17 -0
  51. package/assets/welcome-cWh1qnl_.js +1 -0
  52. package/controllers/add.js +1 -1
  53. package/controllers/catalog/FrontentCatalogAdapter.d.ts +4 -4
  54. package/controllers/ckeditorUpload.d.ts +1 -1
  55. package/controllers/ckeditorUpload.js +50 -26
  56. package/controllers/edit.js +2 -2
  57. package/controllers/form.js +28 -13
  58. package/controllers/list.js +2 -2
  59. package/controllers/login.js +2 -2
  60. package/controllers/media-manager/mediaManagerAdapter.js +13 -2
  61. package/controllers/media-manager/mediaManagerApi.js +4 -3
  62. package/controllers/navigation/edit.js +1 -1
  63. package/controllers/notifications/NotificationController.d.ts +11 -0
  64. package/controllers/notifications/NotificationController.js +219 -0
  65. package/controllers/remove.js +2 -1
  66. package/controllers/view.js +1 -1
  67. package/files/favicon.png +0 -0
  68. package/helpers/configHelper.d.ts +1 -1
  69. package/helpers/controllerHelper.js +1 -1
  70. package/helpers/diffHelpers.d.ts +2 -0
  71. package/helpers/diffHelpers.js +69 -0
  72. package/helpers/fieldsHelper.d.ts +1 -1
  73. package/helpers/fieldsHelper.js +1 -1
  74. package/helpers/formHelper.js +3 -1
  75. package/helpers/inertiaAddHelper.d.ts +1 -1
  76. package/helpers/inertiaAutHelper.js +19 -0
  77. package/helpers/inertiaFromHelper.js +12 -0
  78. package/helpers/translationHelper.d.ts +1 -1
  79. package/helpers/translationHelper.js +1 -1
  80. package/index.d.ts +16 -14
  81. package/index.js +16 -14
  82. package/interfaces/adminpanelConfig.d.ts +18 -0
  83. package/interfaces/global.d.ts +3 -3
  84. package/interfaces/types.d.ts +44 -2
  85. package/lib/Adminizer.d.ts +16 -8
  86. package/lib/Adminizer.js +95 -12
  87. package/lib/{v4/DataAccessor.d.ts → DataAccessor.d.ts} +5 -5
  88. package/lib/{v4/DataAccessor.js → DataAccessor.js} +3 -3
  89. package/lib/{v4/I18n.js → I18n.js} +2 -2
  90. package/lib/{v4/PolicyManager.d.ts → PolicyManager.d.ts} +1 -1
  91. package/lib/{v4/PolicyManager.js → PolicyManager.js} +2 -2
  92. package/lib/{v4/catalog → catalog}/AbstractCatalog.d.ts +1 -1
  93. package/lib/{v4/catalog → catalog}/Navigation.d.ts +2 -2
  94. package/lib/{v4/catalog → catalog}/Navigation.js +1 -1
  95. package/lib/{v4/controls → controls}/AbstractControls.d.ts +1 -1
  96. package/lib/{v4/controls → controls}/codeEditor/MonacoEditor.d.ts +1 -1
  97. package/lib/{v4/controls → controls}/geojsoneditor/GeoEditor.d.ts +1 -1
  98. package/lib/{v4/controls → controls}/jsoneditor/JsonEditor.d.ts +1 -1
  99. package/lib/{v4/controls → controls}/markdown/ToastUiEditor.d.ts +1 -1
  100. package/lib/{v4/controls → controls}/table/Handsontable.d.ts +1 -1
  101. package/lib/{v4/controls → controls}/wysiwyg/CKeditor.d.ts +1 -1
  102. package/lib/{v4/controls → controls}/wysiwyg/CKeditor.js +1 -1
  103. package/lib/{v4/datatable → datatable}/NodeTable.d.ts +1 -1
  104. package/lib/media-manager/AbstractMediaManager.d.ts +3 -3
  105. package/lib/media-manager/AbstractMediaManager.js +2 -2
  106. package/lib/media-manager/DefaultMediaManager.d.ts +1 -1
  107. package/lib/media-manager/DefaultMediaManager.js +6 -8
  108. package/lib/media-manager/Items.d.ts +2 -1
  109. package/lib/media-manager/Items.js +7 -0
  110. package/lib/media-manager/helpers/MediaManagerHelper.d.ts +10 -0
  111. package/lib/media-manager/helpers/MediaManagerHelper.js +27 -10
  112. package/lib/{v4/model → model}/AbstractModel.d.ts +12 -0
  113. package/lib/model/AbstractModel.js +178 -0
  114. package/lib/{v4/model → model}/ModelHandler.js +1 -1
  115. package/lib/{v4/model → model}/adapter/sequelize.d.ts +3 -4
  116. package/lib/{v4/model → model}/adapter/sequelize.js +41 -14
  117. package/lib/notifications/AbstractNotificationService.d.ts +163 -0
  118. package/lib/notifications/AbstractNotificationService.js +353 -0
  119. package/lib/notifications/GeneralNotificationService.d.ts +8 -0
  120. package/lib/notifications/GeneralNotificationService.js +61 -0
  121. package/lib/notifications/NotificationHandler.d.ts +27 -0
  122. package/lib/notifications/NotificationHandler.js +41 -0
  123. package/lib/notifications/SystemNotificationService.d.ts +19 -0
  124. package/lib/notifications/SystemNotificationService.js +173 -0
  125. package/lib/{v4/widgets → widgets}/abstractCustom.d.ts +1 -1
  126. package/lib/{v4/widgets → widgets}/abstractLink.d.ts +1 -1
  127. package/lib/{v4/widgets → widgets}/abstractWidgetBase.d.ts +1 -1
  128. package/lib/{v4/widgets → widgets}/widgetHandler.d.ts +2 -2
  129. package/migrations/index.d.ts +3 -0
  130. package/migrations/index.js +4 -0
  131. package/migrations/umzug/0001.d.ts +7 -0
  132. package/migrations/umzug/0001.js +121 -0
  133. package/migrations/umzugExports.d.ts +2 -0
  134. package/migrations/umzugExports.js +9 -0
  135. package/models/MediaManagerAP.d.ts +9 -3
  136. package/models/MediaManagerAP.js +11 -5
  137. package/models/MediaManagerAssociationsAP.d.ts +9 -3
  138. package/models/MediaManagerAssociationsAP.js +11 -5
  139. package/models/MediaManagerMetaAP.d.ts +9 -3
  140. package/models/MediaManagerMetaAP.js +11 -5
  141. package/models/NotificationAP.d.ts +44 -0
  142. package/models/NotificationAP.js +30 -0
  143. package/models/UserAP.d.ts +1 -1
  144. package/models/UserNotificationAP.d.ts +26 -0
  145. package/models/UserNotificationAP.js +18 -0
  146. package/package.json +17 -8
  147. package/system/Router.js +21 -7
  148. package/system/bindAssets.js +1 -0
  149. package/system/bindControls.js +6 -6
  150. package/system/bindInertia.js +9 -3
  151. package/system/bindMediaManager.js +2 -1
  152. package/system/bindNavigation.js +3 -4
  153. package/system/bindNotifications.d.ts +2 -0
  154. package/system/bindNotifications.js +14 -0
  155. package/system/bindReqFunctions.js +8 -25
  156. package/system/defaults.js +6 -0
  157. package/translations/ar.json +5 -4
  158. package/translations/cn.json +5 -4
  159. package/translations/de.json +72 -71
  160. package/translations/en.json +5 -4
  161. package/translations/es.json +5 -4
  162. package/translations/fr.json +5 -4
  163. package/translations/hi.json +5 -4
  164. package/translations/jp.json +5 -4
  165. package/translations/ko.json +5 -4
  166. package/translations/pt.json +5 -4
  167. package/translations/ru.json +2 -1
  168. package/translations/ua.json +5 -4
  169. package/translations/uz.json +73 -72
  170. package/translations/vi.json +5 -4
  171. package/ui/components/VanillaJSONEditor.d.ts +2 -0
  172. package/ui/components/VanillaJSONEditor.js +101 -0
  173. package/ui/components/handsontable.d.ts +10 -0
  174. package/ui/components/handsontable.js +51 -0
  175. package/ui/components/monaco-editor.d.ts +11 -0
  176. package/ui/components/monaco-editor.js +57 -0
  177. package/ui/components/ui/table.d.ts +1 -1
  178. package/ui/components/ui/table.js +2 -2
  179. package/ui/hooks/form-state.d.ts +4 -0
  180. package/ui/hooks/form-state.js +45 -0
  181. package/ui/hooks/use-appearance.d.ts +7 -0
  182. package/ui/hooks/use-appearance.js +76 -0
  183. package/ui/hooks/use-window-size.d.ts +5 -0
  184. package/ui/hooks/use-window-size.js +21 -0
  185. package/assets/VanillaJSONEditor-x8tDbio1.js +0 -3833
  186. package/assets/add-DOaZgoTz.js +0 -1
  187. package/assets/add-form-BjackXJe.js +0 -1
  188. package/assets/add-group-Br44s2D6.js +0 -1
  189. package/assets/add-group-form-YI6KS37x.js +0 -1
  190. package/assets/add-user-DWcH0s9-.js +0 -1
  191. package/assets/add-user-form-bv5BNX5A.js +0 -1
  192. package/assets/app-layout-DecN527i.js +0 -1
  193. package/assets/app-shell-DHzMWA1L.js +0 -1
  194. package/assets/app-sidebar-4JFP8UdU.js +0 -1
  195. package/assets/app-sidebar-header-CIKLfLsF.js +0 -1
  196. package/assets/breadcrumbs-Bo2z-LNC.js +0 -1
  197. package/assets/catalog-DVyrGTNR.js +0 -6
  198. package/assets/dashboard-Dy3pk9t7.js +0 -3
  199. package/assets/date-picker-B2z-aeuv.js +0 -1
  200. package/assets/debounce-D6eaSoDg.js +0 -1
  201. package/assets/del-modal-l3LxJWCN.js +0 -1
  202. package/assets/dynamic-controls-CSVVCONh.js +0 -1
  203. package/assets/field-renderer-BHo944Cn.js +0 -407
  204. package/assets/form-BXfnz6h5.js +0 -1
  205. package/assets/form-hP8sjbND.js +0 -1
  206. package/assets/form-state-702tb_BV.js +0 -1
  207. package/assets/geo-json-CVaNUZbb.js +0 -4
  208. package/assets/handsontable-CZQ5Ietj.js +0 -347
  209. package/assets/home-BD4MWmm9.js +0 -2
  210. package/assets/icon-C_X2cQ6W.js +0 -1
  211. package/assets/index-C148XJoK.js +0 -1
  212. package/assets/index-Vcq4gwWv.js +0 -1
  213. package/assets/init-user-DgCD4ZN1.js +0 -1
  214. package/assets/input-error-Bab-HPbn.js +0 -1
  215. package/assets/list-C-27EH39.js +0 -1
  216. package/assets/list-table-_OiQmr2A.js +0 -22
  217. package/assets/login-jzvVXgAV.js +0 -1
  218. package/assets/material-icon-DsiW0iQG.js +0 -1
  219. package/assets/media-manager-CSB_XRcE.js +0 -14
  220. package/assets/module-Ceq6vuwa.js +0 -1
  221. package/assets/monaco-editor-XX8Hz76f.js +0 -11
  222. package/assets/multi-select-BbKSrMw2.js +0 -1
  223. package/assets/nav-footer-B8gMV6Wp.js +0 -1
  224. package/assets/nav-main-BUp9qA8R.js +0 -1
  225. package/assets/nav-user-DeF3SDRj.js +0 -1
  226. package/assets/pagination-render-B9U_hVbB.js +0 -1
  227. package/assets/register-C6acWsLe.js +0 -1
  228. package/assets/theme-switcher-D8T9NgWG.js +0 -1
  229. package/assets/toast-editor-C0550yms.js +0 -845
  230. package/assets/use-appearance-CXP5cHaQ.js +0 -1
  231. package/assets/use-window-size-DLSEoR6e.js +0 -1
  232. package/assets/user-info-CAgkqARx.js +0 -1
  233. package/assets/user-menu-content-BxL0QMC9.js +0 -1
  234. package/assets/vanilla-picker-B6E6ObS_.js +0 -8
  235. package/assets/welcome-Dk7GoS5R.js +0 -1
  236. package/lib/v4/model/AbstractModel.js +0 -67
  237. package/lib/v4/model/adapter/typeorm.d.ts +0 -23
  238. package/lib/v4/model/adapter/typeorm.js +0 -68
  239. package/migrations/20230303171134-adminpanel-init.js +0 -122
  240. package/migrations/20231223215835-add-widgets.js +0 -32
  241. package/migrations/20240804191001-added-navigationap.js +0 -53
  242. package/migrations/20241121184236-v4-init.js +0 -134
  243. /package/lib/{v4/I18n.d.ts → I18n.d.ts} +0 -0
  244. /package/lib/{v4/POWCaptcha.d.ts → POWCaptcha.d.ts} +0 -0
  245. /package/lib/{v4/POWCaptcha.js → POWCaptcha.js} +0 -0
  246. /package/lib/{v4/catalog → catalog}/AbstractCatalog.js +0 -0
  247. /package/lib/{v4/catalog → catalog}/CatalogHandler.d.ts +0 -0
  248. /package/lib/{v4/catalog → catalog}/CatalogHandler.js +0 -0
  249. /package/lib/{v4/controls → controls}/AbstractControls.js +0 -0
  250. /package/lib/{v4/controls → controls}/ControlsHandler.d.ts +0 -0
  251. /package/lib/{v4/controls → controls}/ControlsHandler.js +0 -0
  252. /package/lib/{v4/controls → controls}/codeEditor/MonacoEditor.js +0 -0
  253. /package/lib/{v4/controls → controls}/geojsoneditor/GeoEditor.js +0 -0
  254. /package/lib/{v4/controls → controls}/jsoneditor/JsonEditor.js +0 -0
  255. /package/lib/{v4/controls → controls}/markdown/ToastUiEditor.js +0 -0
  256. /package/lib/{v4/controls → controls}/table/Handsontable.js +0 -0
  257. /package/lib/{v4/datatable → datatable}/NodeTable.js +0 -0
  258. /package/lib/{v4/helper → helper}/jwt.d.ts +0 -0
  259. /package/lib/{v4/helper → helper}/jwt.js +0 -0
  260. /package/lib/{v4/inertia → inertia}/flash.d.ts +0 -0
  261. /package/lib/{v4/inertia → inertia}/flash.js +0 -0
  262. /package/lib/{v4/inertia → inertia}/inertiaAdapter.d.ts +0 -0
  263. /package/lib/{v4/inertia → inertia}/inertiaAdapter.js +0 -0
  264. /package/lib/{v4/model → model}/ModelHandler.d.ts +0 -0
  265. /package/lib/{v4/model → model}/adapter/waterline.d.ts +0 -0
  266. /package/lib/{v4/model → model}/adapter/waterline.js +0 -0
  267. /package/lib/{v4/widgets → widgets}/abstractAction.d.ts +0 -0
  268. /package/lib/{v4/widgets → widgets}/abstractAction.js +0 -0
  269. /package/lib/{v4/widgets → widgets}/abstractCustom.js +0 -0
  270. /package/lib/{v4/widgets → widgets}/abstractInfo.d.ts +0 -0
  271. /package/lib/{v4/widgets → widgets}/abstractInfo.js +0 -0
  272. /package/lib/{v4/widgets → widgets}/abstractLink.js +0 -0
  273. /package/lib/{v4/widgets → widgets}/abstractSwitch.d.ts +0 -0
  274. /package/lib/{v4/widgets → widgets}/abstractSwitch.js +0 -0
  275. /package/lib/{v4/widgets → widgets}/abstractWidgetBase.js +0 -0
  276. /package/lib/{v4/widgets → widgets}/widgetHandler.js +0 -0
@@ -0,0 +1,407 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./toast-editor-BZM5RHph.js","./app.js","./jsoneditor-D95dIAP2.js","./vendor-wzZzN_Jv.js","./monaco-ICtx6xoc.js","./handsontable-PVakPtJV.js","./app-D8oqdt8J.css","./geo-json-CadjdhwW.js","./media-manager-UQT6RhI8.js","./tabs-BK_5wdPA.js","./dynamic-controls-BOYmRX_z.js","./media-manager-BZPjl98I.css"])))=>i.map(i=>d[i]);
2
+ var Vp=Object.defineProperty;var zp=(o,i,e)=>i in o?Vp(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e;var u=(o,i,e)=>zp(o,typeof i!="symbol"?i+"":i,e);import{_ as $i}from"./jsoneditor-D95dIAP2.js";import{g as Np,j as D,Y as Dp,I as Op,bz as Fp,S as Up,b as Hp,c as Wp,d as qp,e as jp,bA as Gp,bB as $p,f as Kp}from"./app.js";import{e as ni,r as H}from"./monaco-ICtx6xoc.js";import ki from"./dynamic-controls-BOYmRX_z.js";import{g as ch}from"./vendor-wzZzN_Jv.js";function Zp(o,i){for(var e=0;e<i.length;e++){const t=i[e];if(typeof t!="string"&&!Array.isArray(t)){for(const n in t)if(n!=="default"&&!(n in o)){const s=Object.getOwnPropertyDescriptor(t,n);s&&Object.defineProperty(o,n,s.get?s:{enumerable:!0,get:()=>t[n]})}}}return Object.freeze(Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}))}/**
3
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
4
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
5
+ */function Jp(){const o={resolve:null,promise:null};return o.promise=new Promise(i=>{o.resolve=i}),o}/**
6
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
8
+ */function Yp(o){let i=null;return(...e)=>(i||(i={current:o(...e)}),i.current)}/**
9
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
10
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
11
+ */const Le=new Array(256).fill("").map((o,i)=>("0"+i.toString(16)).slice(-2));function Xp(){const[o,i,e,t]=crypto.getRandomValues(new Uint32Array(4));return"e"+Le[o>>0&255]+Le[o>>8&255]+Le[o>>16&255]+Le[o>>24&255]+Le[i>>0&255]+Le[i>>8&255]+Le[i>>16&255]+Le[i>>24&255]+Le[e>>0&255]+Le[e>>8&255]+Le[e>>16&255]+Le[e>>24&255]+Le[t>>0&255]+Le[t>>8&255]+Le[t>>16&255]+Le[t>>24&255]}/**
12
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
13
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
14
+ */function Qp(o,i){const e=o.extraPlugins||[];return{...o,extraPlugins:[...e,...i.filter(t=>!e.includes(t))]}}/**
15
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
16
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
17
+ */function dh(o){return!!o&&/^\d+\.\d+\.\d+/.test(o)}/**
18
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
19
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
20
+ */function uh(o){return o?["nightly","alpha","internal","nightly-","staging"].some(i=>o.includes(i)):!1}function ew(o){return dh(o)||uh(o)}/**
21
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
22
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
23
+ */function tw(o){if(!dh(o))throw new Error(`Invalid semantic version: ${o||"<blank>"}.`);const[i,e,t]=o.split(".");return{major:Number.parseInt(i,10),minor:Number.parseInt(e,10),patch:Number.parseInt(t,10)}}/**
24
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
25
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
26
+ */function iw(o){if(uh(o))return 3;const{major:i}=tw(o);switch(!0){case i>=44:return 3;case i>=38:return 2;default:return 1}}/**
27
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
28
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
29
+ */function nw(){const{CKEDITOR_VERSION:o,CKEDITOR:i}=window;return ew(o)?{source:i?"cdn":"npm",version:o}:null}/**
30
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
31
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
32
+ */function ow(){const o=nw();return o?iw(o.version):null}/**
33
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
34
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
35
+ */function hh(o,i){switch(i||(i=ow()||void 0),i){case 1:case 2:return o===void 0;case 3:return o==="GPL";default:return!1}}/**
36
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
37
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
38
+ */function sw(o,i){return function(t){hh(t.config.get("licenseKey"))||t.on("collectUsageData",(n,{setUsageData:s})=>{s(`integration.${o}`,i)})}}var rw=Object.defineProperty,aw=(o,i,e)=>i in o?rw(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e,Ve=(o,i,e)=>aw(o,typeof i!="symbol"?i+"":i,e);/**
39
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
40
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
41
+ */const mh=class gh{constructor(i,e){Ve(this,"_lifecycle"),Ve(this,"_element"),Ve(this,"_releaseLock",null),Ve(this,"_value",null),Ve(this,"_afterMountCallbacks",[]),Ve(this,"_state",{destroyedBeforeInitialization:!1,mountingInProgress:null}),Ve(this,"release",Yp(()=>{const{_releaseLock:t,_state:n,_element:s,_lifecycle:r}=this;n.mountingInProgress?n.mountingInProgress.then(()=>r.unmount({element:s,mountResult:this.value})).catch(a=>{console.error("Semaphore unmounting error:",a)}).then(t.resolve).then(()=>{this._value=null}):(n.destroyedBeforeInitialization=!0,t.resolve())})),this._element=i,this._lifecycle=e,this._lock()}get value(){return this._value}unsafeSetValue(i){this._value=i,this._afterMountCallbacks.forEach(e=>e(i)),this._afterMountCallbacks=[]}runAfterMount(i){const{_value:e,_afterMountCallbacks:t}=this;e?i(e):t.push(i)}_lock(){const{_semaphores:i}=gh,{_state:e,_element:t,_lifecycle:n}=this,s=i.get(t)||Promise.resolve(null),r=Jp();this._releaseLock=r;const a=s.then(()=>e.destroyedBeforeInitialization?Promise.resolve(void 0):(e.mountingInProgress=n.mount().then(l=>(l&&this.unsafeSetValue(l),l)),e.mountingInProgress)).then(async l=>{l&&n.afterMount&&await n.afterMount({element:t,mountResult:l})}).then(()=>r.promise).catch(l=>{console.error("Semaphore mounting error:",l)}).then(()=>{i.get(t)===a&&i.delete(t)});i.set(t,a)}};Ve(mh,"_semaphores",new Map);let lw=mh;/**
42
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
43
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
44
+ */const cw="$__CKEditorReactContextMetadata";function dw(o,i){return{...i,[cw]:o}}/**
45
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
46
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
47
+ */const uw=ni.createContext(null),hw=o=>!!o&&typeof o=="object"&&"status"in o&&["initializing","initialized","error"].includes(o.status),fh=o=>i=>hw(i)&&i.status===o,Hl=fh("initializing"),mw=o=>fh("initialized")(o)&&o.watchdog.state==="ready";/**
48
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
49
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
50
+ */const gw=sw("react",{version:"9.5.0",frameworkVersion:ni.version});/**
51
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
52
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
53
+ */function fw(o){return hh(o.licenseKey)?o:Qp(o,[gw])}/**
54
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
55
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
56
+ */const Ws="Lock from React integration (@ckeditor/ckeditor5-react)";class ph extends ni.Component{constructor(i){super(i),Ve(this,"domContainer",ni.createRef()),Ve(this,"editorSemaphore",null),this._checkVersion()}_checkVersion(){const{CKEDITOR_VERSION:i}=window;if(!i)return console.warn('Cannot find the "CKEDITOR_VERSION" in the "window" scope.');const[e]=i.split(".").map(Number);e>=42||i.startsWith("0.0.0")||console.warn("The <CKEditor> component requires using CKEditor 5 in version 42+ or nightly build.")}get _semaphoreValue(){const{editorSemaphore:i}=this;return i?i.value:null}get watchdog(){const{_semaphoreValue:i}=this;return i?i.watchdog:null}get editor(){const{_semaphoreValue:i}=this;return i?i.instance:null}shouldComponentUpdate(i){const{props:e,editorSemaphore:t}=this;return i.id!==e.id||i.disableWatchdog!==e.disableWatchdog?!0:(t&&(t.runAfterMount(({instance:n})=>{this._shouldUpdateEditorData(e,i,n)&&n.data.set(i.data)}),"disabled"in i&&t.runAfterMount(({instance:n})=>{i.disabled?n.enableReadOnlyMode(Ws):n.disableReadOnlyMode(Ws)})),!1)}componentDidMount(){Hl(this.context)||this._initLifeCycleSemaphore()}componentDidUpdate(){Hl(this.context)||this._initLifeCycleSemaphore()}componentWillUnmount(){this._unlockLifeCycleSemaphore()}_unlockLifeCycleSemaphore(){this.editorSemaphore&&(this.editorSemaphore.release(),this.editorSemaphore=null)}_initLifeCycleSemaphore(){this._unlockLifeCycleSemaphore(),this.editorSemaphore=new lw(this.domContainer.current,{mount:async()=>this._initializeEditor(),afterMount:({mountResult:i})=>{const{onReady:e}=this.props;e&&this.domContainer.current!==null&&e(i.instance)},unmount:async({element:i,mountResult:e})=>{const{onAfterDestroy:t}=this.props;try{await this._destroyEditor(e),i.innerHTML=""}finally{t&&t(e.instance)}}})}render(){return ni.createElement("div",{ref:this.domContainer})}async _initializeEditor(){if(this.props.disableWatchdog)return{instance:await this._createEditor(this.domContainer.current,this._getConfig()),watchdog:null};const i=mw(this.context)?new pw(this.context.watchdog):new this.props.editor.EditorWatchdog(this.props.editor,this.props.watchdogConfig),e={current:0};return i.setCreator(async(t,n)=>{var s;const{editorSemaphore:r}=this,{onAfterDestroy:a}=this.props;e.current>0&&a&&((s=r==null?void 0:r.value)!=null&&s.instance)&&a(r.value.instance);const l=await this._createEditor(t,n);return r&&e.current>0&&(r.unsafeSetValue({instance:l,watchdog:i}),setTimeout(()=>{this.props.onReady&&this.props.onReady(i.editor)})),e.current++,l}),i.on("error",(t,{error:n,causesRestart:s})=>{(this.props.onError||console.error)(n,{phase:"runtime",willEditorRestart:s})}),await i.create(this.domContainer.current,this._getConfig()).catch(t=>{(this.props.onError||console.error)(t,{phase:"initialization",willEditorRestart:!1})}),{watchdog:i,instance:i.editor}}_createEditor(i,e){const{contextItemMetadata:t}=this.props;return t&&(e=dw(t,e)),this.props.editor.create(i,fw(e)).then(n=>{if("disabled"in this.props){/* istanbul ignore else -- @preserve */this.props.disabled&&n.enableReadOnlyMode(Ws)}const s=n.model.document,r=n.editing.view.document;return s.on("change:data",a=>{/* istanbul ignore else -- @preserve */this.props.onChange&&this.props.onChange(a,n)}),r.on("focus",a=>{/* istanbul ignore else -- @preserve */this.props.onFocus&&this.props.onFocus(a,n)}),r.on("blur",a=>{/* istanbul ignore else -- @preserve */this.props.onBlur&&this.props.onBlur(a,n)}),n})}async _destroyEditor(i){const{watchdog:e,instance:t}=i;return new Promise((n,s)=>{/* istanbul ignore next -- @preserve */setTimeout(async()=>{try{if(e)return await e.destroy(),n();if(t)return await t.destroy(),n();n()}catch(r){console.error(r),s(r)}})})}_shouldUpdateEditorData(i,e,t){return!(i.data===e.data||t.data.get()===e.data)}_getConfig(){const i=this.props.config||{};return this.props.data&&i.initialData&&console.warn("Editor data should be provided either using `config.initialData` or `content` property. The config value takes precedence over `content` property and will be used when both are specified."),{...i,initialData:i.initialData||this.props.data||""}}}Ve(ph,"contextType",uw);class pw{constructor(i){Ve(this,"_contextWatchdog"),Ve(this,"_id"),Ve(this,"_creator"),this._contextWatchdog=i,this._id=Xp()}setCreator(i){this._creator=i}create(i,e){return this._contextWatchdog.add({sourceElementOrData:i,config:e,creator:this._creator,id:this._id,type:"editor"})}on(i,e){this._contextWatchdog.on("itemError",(t,{itemId:n,error:s})=>{n===this._id&&e(null,{error:s,causesRestart:void 0})})}destroy(){return this._contextWatchdog.state==="ready"?this._contextWatchdog.remove(this._id):Promise.resolve()}get editor(){return this._contextWatchdog.getItem(this._id)}}/**
57
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
58
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
59
+ */function wh(...o){return i=>{o.forEach(e=>{typeof e=="function"?e(i):e!=null&&(e.current=i)})}}const ww=H.memo(H.forwardRef(({id:o,semaphore:i,rootName:e},t)=>{const n=H.useRef(null);return H.useEffect(()=>{let s,r;return i.runAfterMount(({instance:a})=>{if(!n.current)return;r=a;const{ui:l,model:c}=r,d=c.document.getRoot(e);d&&r.ui.getEditableElement(e)&&r.detachEditable(d),s=l.view.createEditable(e,n.current),l.addEditable(s),a.editing.view.forceRender()}),()=>{if(r&&r.state!=="destroyed"&&n.current){const a=r.model.document.getRoot(e);/* istanbul ignore else -- @preserve */a&&r.detachEditable(a)}}},[i.revision]),ni.createElement("div",{key:i.revision,id:o,ref:wh(t,n)})}));ww.displayName="EditorEditable";const bw=H.forwardRef(({editor:o},i)=>{const e=H.useRef(null);return H.useEffect(()=>{const t=e.current;if(!o||!t)return;const n=o.ui.view.toolbar.element;return t.appendChild(n),()=>{t.contains(n)&&t.removeChild(n)}},[o&&o.id]),ni.createElement("div",{ref:wh(e,i)})});bw.displayName="EditorToolbarWrapper";function Si(o){return o}function jo(){}function _a(o){return o==null||typeof o!="object"&&typeof o!="function"}function Ca(o){return ArrayBuffer.isView(o)&&!(o instanceof DataView)}function La(o){if(_a(o))return o;if(Array.isArray(o)||Ca(o)||o instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&o instanceof SharedArrayBuffer)return o.slice(0);const i=Object.getPrototypeOf(o),e=i.constructor;if(o instanceof Date||o instanceof Map||o instanceof Set)return new e(o);if(o instanceof RegExp){const t=new e(o);return t.lastIndex=o.lastIndex,t}if(o instanceof DataView)return new e(o.buffer.slice(0));if(o instanceof Error){const t=new e(o.message);return t.stack=o.stack,t.name=o.name,t.cause=o.cause,t}if(typeof File<"u"&&o instanceof File)return new e([o],o.name,{type:o.type,lastModified:o.lastModified});if(typeof o=="object"){const t=Object.create(i);return Object.assign(t,o)}return o}function Wl(o){if(!o||typeof o!="object")return!1;const i=Object.getPrototypeOf(o);return i===null||i===Object.prototype||Object.getPrototypeOf(i)===null?Object.prototype.toString.call(o)==="[object Object]":!1}function Ir(o){return typeof o=="object"&&o!==null}function Go(o){return Object.getOwnPropertySymbols(o).filter(i=>Object.prototype.propertyIsEnumerable.call(o,i))}function $o(o){return o==null?o===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(o)}const bh="[object RegExp]",Ta="[object String]",Ea="[object Number]",xa="[object Boolean]",Ko="[object Arguments]",vh="[object Symbol]",kh="[object Date]",yh="[object Map]",_h="[object Set]",Ch="[object Array]",vw="[object Function]",Lh="[object ArrayBuffer]",Ro="[object Object]",kw="[object Error]",Th="[object DataView]",Eh="[object Uint8Array]",xh="[object Uint8ClampedArray]",Sh="[object Uint16Array]",Ah="[object Uint32Array]",yw="[object BigUint64Array]",Ih="[object Int8Array]",Ph="[object Int16Array]",Rh="[object Int32Array]",_w="[object BigInt64Array]",Mh="[object Float32Array]",Bh="[object Float64Array]";function Cw(o,i){return Vi(o,void 0,o,new Map,i)}function Vi(o,i,e,t=new Map,n=void 0){const s=n==null?void 0:n(o,i,e,t);if(s!=null)return s;if(_a(o))return o;if(t.has(o))return t.get(o);if(Array.isArray(o)){const r=new Array(o.length);t.set(o,r);for(let a=0;a<o.length;a++)r[a]=Vi(o[a],a,e,t,n);return Object.hasOwn(o,"index")&&(r.index=o.index),Object.hasOwn(o,"input")&&(r.input=o.input),r}if(o instanceof Date)return new Date(o.getTime());if(o instanceof RegExp){const r=new RegExp(o.source,o.flags);return r.lastIndex=o.lastIndex,r}if(o instanceof Map){const r=new Map;t.set(o,r);for(const[a,l]of o)r.set(a,Vi(l,a,e,t,n));return r}if(o instanceof Set){const r=new Set;t.set(o,r);for(const a of o)r.add(Vi(a,void 0,e,t,n));return r}if(typeof Buffer<"u"&&Buffer.isBuffer(o))return o.subarray();if(Ca(o)){const r=new(Object.getPrototypeOf(o)).constructor(o.length);t.set(o,r);for(let a=0;a<o.length;a++)r[a]=Vi(o[a],a,e,t,n);return r}if(o instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&o instanceof SharedArrayBuffer)return o.slice(0);if(o instanceof DataView){const r=new DataView(o.buffer.slice(0),o.byteOffset,o.byteLength);return t.set(o,r),ti(r,o,e,t,n),r}if(typeof File<"u"&&o instanceof File){const r=new File([o],o.name,{type:o.type});return t.set(o,r),ti(r,o,e,t,n),r}if(o instanceof Blob){const r=new Blob([o],{type:o.type});return t.set(o,r),ti(r,o,e,t,n),r}if(o instanceof Error){const r=new o.constructor;return t.set(o,r),r.message=o.message,r.name=o.name,r.stack=o.stack,r.cause=o.cause,ti(r,o,e,t,n),r}if(typeof o=="object"&&Lw(o)){const r=Object.create(Object.getPrototypeOf(o));return t.set(o,r),ti(r,o,e,t,n),r}return o}function ti(o,i,e=o,t,n){const s=[...Object.keys(i),...Go(i)];for(let r=0;r<s.length;r++){const a=s[r],l=Object.getOwnPropertyDescriptor(o,a);(l==null||l.writable)&&(o[a]=Vi(i[a],a,e,t,n))}}function Lw(o){switch($o(o)){case Ko:case Ch:case Lh:case Th:case xa:case kh:case Mh:case Bh:case Ih:case Ph:case Rh:case yh:case Ea:case Ro:case bh:case _h:case Ta:case vh:case Eh:case xh:case Sh:case Ah:return!0;default:return!1}}function Vh(o,i){return o===i||Number.isNaN(o)&&Number.isNaN(i)}function zh(o,i,e){return gn(o,i,void 0,void 0,void 0,void 0,e)}function gn(o,i,e,t,n,s,r){const a=r(o,i,e,t,n,s);if(a!==void 0)return a;if(typeof o==typeof i)switch(typeof o){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return o===i;case"number":return o===i||Object.is(o,i);case"function":return o===i;case"object":return bn(o,i,s,r)}return bn(o,i,s,r)}function bn(o,i,e,t){if(Object.is(o,i))return!0;let n=$o(o),s=$o(i);if(n===Ko&&(n=Ro),s===Ko&&(s=Ro),n!==s)return!1;switch(n){case Ta:return o.toString()===i.toString();case Ea:{const l=o.valueOf(),c=i.valueOf();return Vh(l,c)}case xa:case kh:case vh:return Object.is(o.valueOf(),i.valueOf());case bh:return o.source===i.source&&o.flags===i.flags;case vw:return o===i}e=e??new Map;const r=e.get(o),a=e.get(i);if(r!=null&&a!=null)return r===i;e.set(o,i),e.set(i,o);try{switch(n){case yh:{if(o.size!==i.size)return!1;for(const[l,c]of o.entries())if(!i.has(l)||!gn(c,i.get(l),l,o,i,e,t))return!1;return!0}case _h:{if(o.size!==i.size)return!1;const l=Array.from(o.values()),c=Array.from(i.values());for(let d=0;d<l.length;d++){const h=l[d],m=c.findIndex(g=>gn(h,g,void 0,o,i,e,t));if(m===-1)return!1;c.splice(m,1)}return!0}case Ch:case Eh:case xh:case Sh:case Ah:case yw:case Ih:case Ph:case Rh:case _w:case Mh:case Bh:{if(typeof Buffer<"u"&&Buffer.isBuffer(o)!==Buffer.isBuffer(i)||o.length!==i.length)return!1;for(let l=0;l<o.length;l++)if(!gn(o[l],i[l],l,o,i,e,t))return!1;return!0}case Lh:return o.byteLength!==i.byteLength?!1:bn(new Uint8Array(o),new Uint8Array(i),e,t);case Th:return o.byteLength!==i.byteLength||o.byteOffset!==i.byteOffset?!1:bn(new Uint8Array(o),new Uint8Array(i),e,t);case kw:return o.name===i.name&&o.message===i.message;case Ro:{if(!(bn(o.constructor,i.constructor,e,t)||Wl(o)&&Wl(i)))return!1;const c=[...Object.keys(o),...Go(o)],d=[...Object.keys(i),...Go(i)];if(c.length!==d.length)return!1;for(let h=0;h<c.length;h++){const m=c[h],g=o[m];if(!Object.hasOwn(i,m))return!1;const f=i[m];if(!gn(g,f,m,o,i,e,t))return!1}return!0}default:return!1}}finally{e.delete(o),e.delete(i)}}function Zo(o,i){return zh(o,i,jo)}function Jo(o){return typeof o=="function"}function Tw(o){return Number.isSafeInteger(o)&&o>=0}function Ew(o){return o!=null&&typeof o!="function"&&Tw(o.length)}function Nh(o){switch(typeof o){case"number":case"symbol":return!1;case"string":return o.includes(".")||o.includes("[")||o.includes("]")}}function Dh(o){return Object.is(o,-0)?"-0":o.toString()}function Sa(o){const i=[],e=o.length;if(e===0)return i;let t=0,n="",s="",r=!1;for(o.charCodeAt(0)===46&&(i.push(""),t++);t<e;){const a=o[t];s?a==="\\"&&t+1<e?(t++,n+=o[t]):a===s?s="":n+=a:r?a==='"'||a==="'"?s=a:a==="]"?(r=!1,i.push(n),n=""):n+=a:a==="["?(r=!0,n&&(i.push(n),n="")):a==="."?n&&(i.push(n),n=""):n+=a,t++}return n&&i.push(n),i}function jt(o,i,e){if(o==null)return e;switch(typeof i){case"string":{const t=o[i];return t===void 0?Nh(i)?jt(o,Sa(i),e):e:t}case"number":case"symbol":{typeof i=="number"&&(i=Dh(i));const t=o[i];return t===void 0?e:t}default:{if(Array.isArray(i))return xw(o,i,e);Object.is(i==null?void 0:i.valueOf(),-0)?i="-0":i=String(i);const t=o[i];return t===void 0?e:t}}}function xw(o,i,e){if(i.length===0)return e;let t=o;for(let n=0;n<i.length;n++){if(t==null)return e;t=t[i[n]]}return t===void 0?e:t}function Sw(o){return function(i){return jt(i,o)}}function Qe(o){return o!==null&&(typeof o=="object"||typeof o=="function")}function Ss(o,i){return Cw(o,(e,t,n,s)=>{const r=i==null?void 0:i(e,t,n,s);if(r!=null)return r;if(typeof o=="object")switch(Object.prototype.toString.call(o)){case Ea:case Ta:case xa:{const a=new o.constructor(o==null?void 0:o.valueOf());return ti(a,o),a}case Ko:{const a={};return ti(a,o),a.length=o.length,a[Symbol.iterator]=o[Symbol.iterator],a}default:return}})}function qe(o){return Ss(o)}const Aw=/^(?:0|[1-9]\d*)$/;function Iw(o,i=Number.MAX_SAFE_INTEGER){switch(typeof o){case"number":return Number.isInteger(o)&&o>=0&&o<i;case"symbol":return!1;case"string":return Aw.test(o)}}function ql(o){return o!==null&&typeof o=="object"&&$o(o)==="[object Arguments]"}function Pw(o){return typeof o=="symbol"||o instanceof Symbol}function Rw(o){return Pw(o)?NaN:Number(o)}function Mw(o){return o?(o=Rw(o),o===1/0||o===-1/0?(o<0?-1:1)*Number.MAX_VALUE:o===o?o:0):o===0?o:0}function Bw(o){const i=Mw(o),e=i%1;return e?i-e:i}function jl(o){return typeof o=="string"||o instanceof String}function Oh(o,i,e){const t=Array.isArray(i)?i:typeof i=="string"?Sa(i):[i];let n=o;for(let r=0;r<t.length-1;r++){const a=t[r],l=t[r+1];n[a]==null&&(n[a]=Iw(l)?[]:{}),n=n[a]}const s=t[t.length-1];return n[s]=e,o}function Vw(o,i,{signal:e,edges:t}={}){let n,s=null;const r=t!=null&&t.includes("leading"),a=t==null||t.includes("trailing"),l=()=>{s!==null&&(o.apply(n,s),n=void 0,s=null)},c=()=>{a&&l(),g()};let d=null;const h=()=>{d!=null&&clearTimeout(d),d=setTimeout(()=>{d=null,c()},i)},m=()=>{d!==null&&(clearTimeout(d),d=null)},g=()=>{m(),n=void 0,s=null},f=()=>{m(),l()},p=function(...b){if(e!=null&&e.aborted)return;n=this,s=b;const k=d==null;h(),r&&k&&l()};return p.schedule=h,p.cancel=g,p.flush=f,e==null||e.addEventListener("abort",g,{once:!0}),p}function at(o,i=0,e={}){typeof e!="object"&&(e={});const{signal:t,leading:n=!1,trailing:s=!0,maxWait:r}=e,a=Array(2);n&&(a[0]="leading"),s&&(a[1]="trailing");let l,c=null;const d=Vw(function(...g){l=o.apply(this,g),c=null},i,{signal:t,edges:a}),h=function(...g){if(r!=null){if(c===null)c=Date.now();else if(Date.now()-c>=r)return l=o.apply(this,g),c=Date.now(),d.cancel(),d.schedule(),l}return d.apply(this,g),l},m=()=>(d.flush(),l);return h.cancel=d.cancel,h.flush=m,h}function Hi(o,i=0,e={}){typeof e!="object"&&(e={});const{leading:t=!0,trailing:n=!0,signal:s}=e;return at(o,i,{leading:t,trailing:n,signal:s,maxWait:i})}function Fh(o){if(o==null)return"";if(Array.isArray(o))return o.map(Fh).join(",");const i=String(o);return i==="0"&&Object.is(Number(o),-0)?"-0":i}function zw(o){return typeof Buffer<"u"&&Buffer.isBuffer(o)}function Nw(o){const i=o==null?void 0:o.constructor,e=typeof i=="function"?i.prototype:Object.prototype;return o===e}function Uh(o){return Ca(o)}function Dw(o,i){if(o=Bw(o),o<1||!Number.isSafeInteger(o))return[];const e=new Array(o);for(let t=0;t<o;t++)e[t]=typeof i=="function"?i(t):t;return e}function Ow(o){if(o==null)return[];switch(typeof o){case"object":case"function":return Ew(o)?Uw(o):Nw(o)?Fw(o):Yo(o);default:return Yo(Object(o))}}function Yo(o){const i=[];for(const e in o)i.push(e);return i}function Fw(o){return Yo(o).filter(e=>e!=="constructor")}function Uw(o){const i=Dw(o.length,t=>`${t}`),e=new Set(i);return zw(o)&&(e.add("offset"),e.add("parent")),Uh(o)&&(e.add("buffer"),e.add("byteLength"),e.add("byteOffset")),[...i,...Yo(o).filter(t=>!e.has(t))]}function Hh(o,...i){for(let e=0;e<i.length;e++)Hw(o,i[e]);return o}function Hw(o,i){const e=Ow(i);for(let t=0;t<e.length;t++){const n=e[t];Vh(o[n],i[n])||(o[n]=i[n])}}function Gl(o,i){const e={},t=Object.keys(o);for(let n=0;n<t.length;n++){const s=t[n],r=o[s];e[s]=i(r,s,o)}return e}function Ww(o,i){switch(i=i??Si,typeof i){case"string":case"symbol":case"number":case"object":return Gl(o,Sw(i));case"function":return Gl(o,i)}}function gt(o){var e;if(typeof o!="object"||o==null)return!1;if(Object.getPrototypeOf(o)===null)return!0;if(Object.prototype.toString.call(o)!=="[object Object]"){const t=o[Symbol.toStringTag];return t==null||!((e=Object.getOwnPropertyDescriptor(o,Symbol.toStringTag))!=null&&e.writable)?!1:o.toString()===`[object ${t}]`}let i=o;for(;Object.getPrototypeOf(i)!==null;)i=Object.getPrototypeOf(i);return Object.getPrototypeOf(o)===i}function qw(o,...i){const e=i.slice(0,-1),t=i[i.length-1];let n=o;for(let s=0;s<e.length;s++){const r=e[s];n=Mo(n,r,t,new Map)}return n}function Mo(o,i,e,t){if(_a(o)&&(o=Object(o)),i==null||typeof i!="object")return o;if(t.has(i))return La(t.get(i));if(t.set(i,o),Array.isArray(i)){i=i.slice();for(let s=0;s<i.length;s++)i[s]=i[s]??void 0}const n=[...Object.keys(i),...Go(i)];for(let s=0;s<n.length;s++){const r=n[s];let a=i[r],l=o[r];if(ql(a)&&(a={...a}),ql(l)&&(l={...l}),typeof Buffer<"u"&&Buffer.isBuffer(a)&&(a=qe(a)),Array.isArray(a))if(typeof l=="object"&&l!=null){const d=[],h=Reflect.ownKeys(l);for(let m=0;m<h.length;m++){const g=h[m];d[g]=l[g]}l=d}else l=[];const c=e(l,a,r,o,i,t);c!=null?o[r]=c:Array.isArray(a)||Ir(l)&&Ir(a)?o[r]=Mo(l,a,e,t):l==null&&gt(a)?o[r]=Mo({},a,e,t):l==null&&Uh(a)?o[r]=qe(a):(l===void 0||a!==void 0)&&(o[r]=a)}return o}function Aa(o,...i){return qw(o,...i,jo)}function jw(o,i){if(o==null)return!0;switch(typeof i){case"symbol":case"number":case"object":{if(Array.isArray(i))return $l(o,i);if(typeof i=="number"?i=Dh(i):typeof i=="object"&&(Object.is(i==null?void 0:i.valueOf(),-0)?i="-0":i=String(i)),(o==null?void 0:o[i])===void 0)return!0;try{return delete o[i],!0}catch{return!1}}case"string":{if((o==null?void 0:o[i])===void 0&&Nh(i))return $l(o,Sa(i));try{return delete o[i],!0}catch{return!1}}}}function $l(o,i){const e=jt(o,i.slice(0,-1),o),t=i[i.length-1];if((e==null?void 0:e[t])===void 0)return!0;try{return delete e[t],!0}catch{return!1}}function Gt(o){return Ir(o)&&o.nodeType===1&&!gt(o)}function Kl(o,i){if(!Number.isInteger(o)||o<0)throw new Error("n must be a non-negative integer.");let e=0;return(...t)=>{if(++e>=o)return i(...t)}}function Pr(o,i,e=jo){return typeof e!="function"&&(e=jo),zh(o,i,(...t)=>{const n=e(...t);if(n!==void 0)return!!n;if(o instanceof Map&&i instanceof Map||o instanceof Set&&i instanceof Set)return Pr(Array.from(o),Array.from(i),Kl(2,e))})}function Gw(o){return o.substring(0,1).toUpperCase()+o.substring(1)}function $w(o){return Gw(Fh(o))}/**
60
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
61
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
62
+ *//**
63
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
64
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
65
+ */let Rr;try{Rr={window,document}}catch{/* istanbul ignore next -- @preserve */Rr={window:{},document:{}}}var T=Rr;function Kw(){try{return navigator.userAgent.toLowerCase()}catch{return""}}const Yt=Kw(),I={isMac:Wh(Yt),isWindows:Zw(Yt),isGecko:Jw(Yt),isSafari:Yw(Yt),isiOS:Xw(Yt),isAndroid:Qw(Yt),isBlink:eb(Yt),get isMediaForcedColors(){return tb()}};function Wh(o){return o.indexOf("macintosh")>-1}function Zw(o){return o.indexOf("windows")>-1}function Jw(o){return!!o.match(/gecko\/\d+/)}function Yw(o){return o.indexOf(" applewebkit/")>-1&&o.indexOf("chrome")===-1}function Xw(o){return!!o.match(/iphone|ipad/i)||Wh(o)&&navigator.maxTouchPoints>0}function Qw(o){return o.indexOf("android")>-1}function eb(o){return o.indexOf("chrome/")>-1&&o.indexOf("edge/")<0}function tb(){return T.window.matchMedia?T.window.matchMedia("(forced-colors: active)").matches:!1}/**
66
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
67
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
68
+ */function qh(o,i,e,t){e=e||function(l,c){return l===c};const n=Array.isArray(o)?o:Array.prototype.slice.call(o),s=Array.isArray(i)?i:Array.prototype.slice.call(i),r=ib(n,s,e);return t?ob(r,s.length):nb(s,r)}function ib(o,i,e){const t=Zl(o,i,e);if(t===-1)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=Jl(o,t),s=Jl(i,t),r=Zl(n,s,e),a=o.length-r,l=i.length-r;return{firstIndex:t,lastIndexOld:a,lastIndexNew:l}}function Zl(o,i,e){for(let t=0;t<Math.max(o.length,i.length);t++)if(o[t]===void 0||i[t]===void 0||!e(o[t],i[t]))return t;return-1}function Jl(o,i){return o.slice(i).reverse()}function nb(o,i){const e=[],{firstIndex:t,lastIndexOld:n,lastIndexNew:s}=i;return s-t>0&&e.push({index:t,type:"insert",values:o.slice(t,s)}),n-t>0&&e.push({index:t+(s-t),type:"delete",howMany:n-t}),e}function ob(o,i){const{firstIndex:e,lastIndexOld:t,lastIndexNew:n}=o;if(e===-1)return Array(i).fill("equal");let s=[];return e>0&&(s=s.concat(Array(e).fill("equal"))),n-e>0&&(s=s.concat(Array(n-e).fill("insert"))),t-e>0&&(s=s.concat(Array(t-e).fill("delete"))),n<i&&(s=s.concat(Array(i-n).fill("equal"))),s}function Fi(o,i,e){e=e||function(p,b){return p===b};const t=o.length,n=i.length;if(t>200||n>200||t+n>300)return Fi.fastDiff(o,i,e,!0);let s,r;if(n<t){const p=o;o=i,i=p,s="delete",r="insert"}else s="insert",r="delete";const a=o.length,l=i.length,c=l-a,d={},h={};function m(p){const b=(h[p-1]!==void 0?h[p-1]:-1)+1,k=h[p+1]!==void 0?h[p+1]:-1,_=b>k?-1:1;d[p+_]&&(d[p]=d[p+_].slice(0)),d[p]||(d[p]=[]),d[p].push(b>k?s:r);let M=Math.max(b,k),O=M-p;for(;O<a&&M<l&&e(o[O],i[M]);)O++,M++,d[p].push("equal");return M}let g=0,f;do{for(f=-g;f<c;f++)h[f]=m(f);for(f=c+g;f>c;f--)h[f]=m(f);h[c]=m(c),g++}while(h[c]!==l);return d[c].slice(1)}Fi.fastDiff=qh;/**
69
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
70
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
71
+ */function Yl(){return function o(){o.called=!0}}class xt{constructor(i,e){u(this,"source");u(this,"name");u(this,"path");u(this,"stop");u(this,"off");u(this,"return");this.source=i,this.name=e,this.path=[],this.stop=Yl(),this.off=Yl()}}/**
72
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
73
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
74
+ */const Te=new Array(256).fill("").map((o,i)=>("0"+i.toString(16)).slice(-2));function Me(){const[o,i,e,t]=crypto.getRandomValues(new Uint32Array(4));return"e"+Te[o>>0&255]+Te[o>>8&255]+Te[o>>16&255]+Te[o>>24&255]+Te[i>>0&255]+Te[i>>8&255]+Te[i>>16&255]+Te[i>>24&255]+Te[e>>0&255]+Te[e>>8&255]+Te[e>>16&255]+Te[e>>24&255]+Te[t>>0&255]+Te[t>>8&255]+Te[t>>16&255]+Te[t>>24&255]}/**
75
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
76
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
77
+ */const Ft={get(o="normal"){return typeof o!="number"?this[o]||this.normal:o},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};function sb(o,i){const e=Ft.get(i.priority);let t=0,n=o.length;for(;t<n;){const s=t+n>>1;Ft.get(o[s].priority)<e?n=s:t=s+1}o.splice(t,0,i)}/**
78
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
79
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
80
+ */const rb="https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html";class w extends Error{constructor(e,t,n){super(lb(e,n));u(this,"context");u(this,"data");this.name="CKEditorError",this.context=t,this.data=n}is(e){return e==="CKEditorError"}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const n=new w(e.message,t);throw n.stack=e.stack,n}}function F(o,i){console.warn(...Gh(o,i))}function ab(o,i){console.error(...Gh(o,i))}function jh(o){return`
81
+ Read more: ${rb}#error-${o}`}function lb(o,i){const e=new WeakSet,n=i?` ${JSON.stringify(i,(r,a)=>{if(typeof a=="object"&&a!==null){if(e.has(a))return`[object ${a.constructor.name}]`;e.add(a)}return a})}`:"",s=jh(o);return o+n+s}function Gh(o,i){const e=jh(o);return i?[o,i,e]:[o,e]}const cb="45.2.2",db=new Date(2025,8,3);/* istanbul ignore next -- @preserve */if(globalThis.CKEDITOR_VERSION)throw new w("ckeditor-duplicated-modules",null);globalThis.CKEDITOR_VERSION=cb;const Ai=Symbol("listeningTo"),Mr=Symbol("emitterId"),vt=Symbol("delegations"),$h=G(Object);function G(o){if(!o)return $h;class i extends o{on(t,n,s){this.listenTo(this,t,n,s)}once(t,n,s){let r=!1;const a=(l,...c)=>{r||(r=!0,l.off(),n.call(this,l,...c))};this.listenTo(this,t,a,s)}off(t,n){this.stopListening(this,t,n)}listenTo(t,n,s,r={}){let a,l;this[Ai]||(this[Ai]={});const c=this[Ai];qs(t)||Kh(t);const d=qs(t);(a=c[d])||(a=c[d]={emitter:t,callbacks:{}}),(l=a.callbacks[n])||(l=a.callbacks[n]=[]),l.push(s),fb(this,t,n,s,r)}stopListening(t,n,s){const r=this[Ai];let a=t&&qs(t);const l=r&&a?r[a]:void 0,c=l&&n?l.callbacks[n]:void 0;if(!(!r||t&&!l||n&&!c))if(s)js(this,t,n,s),c.indexOf(s)!==-1&&(c.length===1?delete l.callbacks[n]:js(this,t,n,s));else if(c){for(;s=c.pop();)js(this,t,n,s);delete l.callbacks[n]}else if(l){for(n in l.callbacks)this.stopListening(t,n);delete r[a]}else{for(a in r)this.stopListening(r[a].emitter);delete this[Ai]}}fire(t,...n){try{const s=t instanceof xt?t:new xt(this,t),r=s.name;let a=gb(this,r);if(s.path.push(this),a){a=a.slice();for(let c=0;c<a.length;c++){const d=a[c].callback;if(d.call(this,s,...n),s.off.called&&(delete s.off.called,this._removeEventListener(r,d)),s.stop.called)break}}const l=this[vt];if(l){const c=l.get(r),d=l.get("*");c&&Xl(c,s,n),d&&Xl(d,s,n)}return s.return}catch(s){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(s,this)}}delegate(...t){return{to:(n,s)=>{this[vt]||(this[vt]=new Map),t.forEach(r=>{const a=this[vt].get(r);a?a.set(n,s):this[vt].set(r,new Map([[n,s]]))})}}}stopDelegating(t,n){if(this[vt])if(!t)this[vt].clear();else if(!n)this[vt].delete(t);else{const s=this[vt].get(t);s&&s.delete(n)}}_addEventListener(t,n,s){mb(this,t);const r=Br(this,t),a=Ft.get(s.priority),l={callback:n,priority:a};for(const c of r)sb(c,l)}_removeEventListener(t,n){const s=Br(this,t);for(const r of s)for(let a=0;a<r.length;a++)r[a].callback==n&&(r.splice(a,1),a--)}}return i}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach(o=>{G[o]=$h.prototype[o]});function ub(o,i){const e=o[Ai];return e&&e[i]?e[i].emitter:null}function Kh(o,i){o[Mr]||(o[Mr]=i||Me())}function qs(o){return o[Mr]}function Zh(o){return o._events||Object.defineProperty(o,"_events",{value:{}}),o._events}function hb(){return{callbacks:[],childEvents:[]}}function mb(o,i){const e=Zh(o);if(e[i])return;let t=i,n=null;const s=[];for(;t!==""&&!e[t];)e[t]=hb(),s.push(e[t]),n&&e[t].childEvents.push(n),n=t,t=t.substr(0,t.lastIndexOf(":"));if(t!==""){for(const r of s)r.callbacks=e[t].callbacks.slice();e[t].childEvents.push(n)}}function Br(o,i){const e=Zh(o)[i];if(!e)return[];let t=[e.callbacks];for(let n=0;n<e.childEvents.length;n++){const s=Br(o,e.childEvents[n]);t=t.concat(s)}return t}function gb(o,i){if(!o._events)return null;let e=i;do{const t=o._events[e];if(t&&t.callbacks&&t.callbacks.length)return t.callbacks;const n=e.lastIndexOf(":");e=n>-1?e.substring(0,n):""}while(e);return null}function Xl(o,i,e){for(let[t,n]of o){n?typeof n=="function"&&(n=n(i.name)):n=i.name;const s=new xt(i.source,n);s.path=[...i.path],t.fire(s,...e)}}function fb(o,i,e,t,n){i._addEventListener?i._addEventListener(e,t,n):o._addEventListener.call(i,e,t,n)}function js(o,i,e,t){i._removeEventListener?i._removeEventListener(e,t):o._removeEventListener.call(i,e,t)}const vn=Symbol("observableProperties"),Pn=Symbol("boundObservables"),kn=Symbol("boundProperties"),Xt=Symbol("decoratedMethods"),Ql=Symbol("decoratedOriginal"),Jh=j(G());function j(o){var e,t,n,s,r;if(!o)return Jh;class i extends(r=o,s=vn,n=Xt,t=kn,e=Pn,r){constructor(){super(...arguments);u(this,s);u(this,n);u(this,t);u(this,e)}set(c,d){if(Qe(c)){Object.keys(c).forEach(m=>{this.set(m,c[m])},this);return}Gs(this);const h=this[vn];if(c in this&&!h.has(c))throw new w("observable-set-cannot-override",this);Object.defineProperty(this,c,{enumerable:!0,configurable:!0,get(){return h.get(c)},set(m){const g=h.get(c);let f=this.fire(`set:${c}`,c,m,g);f===void 0&&(f=m),(g!==f||!h.has(c))&&(h.set(c,f),this.fire(`change:${c}`,c,f,g))}}),this[c]=d}bind(...c){if(!c.length||!ec(c))throw new w("observable-bind-wrong-properties",this);if(new Set(c).size!==c.length)throw new w("observable-bind-duplicate-properties",this);Gs(this);const d=this[kn];c.forEach(m=>{if(d.has(m))throw new w("observable-bind-rebind",this)});const h=new Map;return c.forEach(m=>{const g={property:m,to:[]};d.set(m,g),h.set(m,g)}),{to:pb,toMany:wb,_observable:this,_bindProperties:c,_to:[],_bindings:h}}unbind(...c){if(!this[vn])return;const d=this[kn],h=this[Pn];if(c.length){if(!ec(c))throw new w("observable-unbind-wrong-properties",this);c.forEach(m=>{const g=d.get(m);g&&(g.to.forEach(([f,p])=>{const b=h.get(f),k=b[p];k.delete(g),k.size||delete b[p],Object.keys(b).length||(h.delete(f),this.stopListening(f,"change"))}),d.delete(m))})}else h.forEach((m,g)=>{this.stopListening(g,"change")}),h.clear(),d.clear()}decorate(c){Gs(this);const d=this[c];if(!d)throw new w("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:c});this.on(c,(h,m)=>{h.return=d.apply(this,m)}),this[c]=function(...h){return this.fire(c,h)},this[c][Ql]=d,this[Xt]||(this[Xt]=[]),this[Xt].push(c)}stopListening(c,d,h){if(!c&&this[Xt]){for(const m of this[Xt])this[m]=this[m][Ql];delete this[Xt]}super.stopListening(c,d,h)}}return i}["set","bind","unbind","decorate","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach(o=>{j[o]=Jh.prototype[o]});function Gs(o){o[vn]||(Object.defineProperty(o,vn,{value:new Map}),Object.defineProperty(o,Pn,{value:new Map}),Object.defineProperty(o,kn,{value:new Map}))}function pb(...o){const i=vb(...o),e=Array.from(this._bindings.keys()),t=e.length;if(!i.callback&&i.to.length>1)throw new w("observable-bind-to-no-callback",this);if(t>1&&i.callback)throw new w("observable-bind-to-extra-callback",this);i.to.forEach(n=>{if(n.properties.length&&n.properties.length!==t)throw new w("observable-bind-to-properties-length",this);n.properties.length||(n.properties=this._bindProperties)}),this._to=i.to,i.callback&&(this._bindings.get(e[0]).callback=i.callback),_b(this._observable,this._to),yb(this),this._bindProperties.forEach(n=>{Yh(this._observable,n)})}function wb(o,i,e){if(this._bindings.size>1)throw new w("observable-bind-to-many-not-one-binding",this);this.to(...bb(o,i),e)}function bb(o,i){const e=o.map(t=>[t,i]);return Array.prototype.concat.apply([],e)}function ec(o){return o.every(i=>typeof i=="string")}function vb(...o){if(!o.length)throw new w("observable-bind-to-parse-error",null);const i={to:[]};let e;return typeof o[o.length-1]=="function"&&(i.callback=o.pop()),o.forEach(t=>{if(typeof t=="string")e.properties.push(t);else if(typeof t=="object")e={observable:t,properties:[]},i.to.push(e);else throw new w("observable-bind-to-parse-error",null)}),i}function kb(o,i,e,t){const n=o[Pn],s=n.get(e),r=s||{};r[t]||(r[t]=new Set),r[t].add(i),s||n.set(e,r)}function yb(o){let i;o._bindings.forEach((e,t)=>{o._to.forEach(n=>{i=n.properties[e.callback?0:o._bindProperties.indexOf(t)],e.to.push([n.observable,i]),kb(o._observable,e,n.observable,i)})})}function Yh(o,i){const t=o[kn].get(i);let n;t.callback?n=t.callback.apply(o,t.to.map(s=>s[0][s[1]])):(n=t.to[0],n=n[0][n[1]]),Object.prototype.hasOwnProperty.call(o,i)?o[i]=n:o.set(i,n)}function _b(o,i){i.forEach(e=>{const t=o[Pn];let n;t.get(e.observable)||o.listenTo(e.observable,"change",(s,r)=>{n=t.get(e.observable)[r],n&&n.forEach(a=>{Yh(o,a.property)})})})}/**
82
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
83
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
84
+ */class Xh{constructor(){u(this,"_replacedElements");this._replacedElements=[]}replace(i,e){this._replacedElements.push({element:i,newElement:e}),i.style.display="none",e&&i.parentNode.insertBefore(e,i.nextSibling)}restore(){this._replacedElements.forEach(({element:i,newElement:e})=>{i.style.display="",e&&e.remove()}),this._replacedElements=[]}}/**
85
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
86
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
87
+ */function Vr(o){let i=0;for(const e of o)i++;return i}/**
88
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
89
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
90
+ */function Ee(o,i){const e=Math.min(o.length,i.length);for(let t=0;t<e;t++)if(o[t]!=i[t])return t;return o.length==i.length?"same":o.length<i.length?"prefix":"extension"}/**
91
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
92
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
93
+ */function je(o){return!!(o&&o[Symbol.iterator])}function Oe(o,i,e={},t=[]){const n=e&&e.xmlns,s=n?o.createElementNS(n,i):o.createElement(i);for(const r in e)s.setAttribute(r,e[r]);(jl(t)||!je(t))&&(t=[t]);for(let r of t)jl(r)&&(r=o.createTextNode(r)),s.appendChild(r);return s}class Qh{constructor(i,e){u(this,"_config");this._config=Object.create(null),e&&this.define(tc(e)),i&&this._setObjectToTarget(this._config,i)}set(i,e){this._setToTarget(this._config,i,e)}define(i,e){this._setToTarget(this._config,i,e,!0)}get(i){return this._getFromSource(this._config,i)}*names(){for(const i of Object.keys(this._config))yield i}_setToTarget(i,e,t,n=!1){if(gt(e)){this._setObjectToTarget(i,e,n);return}const s=e.split(".");e=s.pop();for(const r of s)gt(i[r])||(i[r]=Object.create(null)),i=i[r];if(gt(t)){gt(i[e])||(i[e]=Object.create(null)),i=i[e],this._setObjectToTarget(i,t,n);return}n&&typeof i[e]<"u"||(i[e]=t)}_getFromSource(i,e){const t=e.split(".");e=t.pop();for(const n of t){if(!gt(i[n])){i=null;break}i=i[n]}return i?tc(i[e]):void 0}_setObjectToTarget(i,e,t){Object.keys(e).forEach(n=>{this._setToTarget(i,n,e[n],t)})}}function tc(o){return Ss(o,Cb)}function Cb(o){return Gt(o)||typeof o=="function"?o:void 0}/**
94
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
95
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
96
+ */function $t(o){if(o){if(o.defaultView)return o instanceof o.defaultView.Document;if(o.ownerDocument&&o.ownerDocument.defaultView)return o instanceof o.ownerDocument.defaultView.Node}return!1}/**
97
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
98
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
99
+ */function Xo(o){const i=Object.prototype.toString.apply(o);return i=="[object Window]"||i=="[object global]"}const em=Se(G());function Se(o){if(!o)return em;class i extends o{listenTo(t,n,s,r={}){if($t(t)||Xo(t)||t instanceof T.window.EventTarget){const a={capture:!!r.useCapture,passive:!!r.usePassive},l=this._getProxyEmitter(t,a)||new Lb(t,a);this.listenTo(l,n,s,r)}else super.listenTo(t,n,s,r)}stopListening(t,n,s){if($t(t)||Xo(t)||t instanceof T.window.EventTarget){const r=this._getAllProxyEmitters(t);for(const a of r)this.stopListening(a,n,s)}else super.stopListening(t,n,s)}_getProxyEmitter(t,n){return ub(this,tm(t,n))}_getAllProxyEmitters(t){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map(n=>this._getProxyEmitter(t,n)).filter(n=>!!n)}}return i}["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach(o=>{Se[o]=em.prototype[o]});class Lb extends G(){constructor(e,t){super();u(this,"_domNode");u(this,"_options");u(this,"_domListeners");Kh(this,tm(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;this._domListeners[e]&&(!(t=this._events[e])||!t.callbacks.length)&&this._domListeners[e].removeListener()}_addEventListener(e,t,n){this.attach(e),G().prototype._addEventListener.call(this,e,t,n)}_removeEventListener(e,t){G().prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=n=>{this.fire(e,n)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function Tb(o){return o["data-ck-expando"]||(o["data-ck-expando"]=Me())}function tm(o,i){let e=Tb(o);for(const t of Object.keys(i).sort())i[t]&&(e+="-"+t);return e}/**
100
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
101
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
102
+ */function Eb(o){const i=[];let e=o;for(;e&&e.nodeType!=Node.DOCUMENT_NODE;)i.unshift(e),e=e.parentNode;return i}/**
103
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
104
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
105
+ */function xb(o){return o instanceof HTMLTextAreaElement?o.value:o.innerHTML}/**
106
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
107
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
108
+ */function im(o){const i=o.ownerDocument.defaultView.getComputedStyle(o);return{top:parseInt(i.borderTopWidth,10),right:parseInt(i.borderRightWidth,10),bottom:parseInt(i.borderBottomWidth,10),left:parseInt(i.borderLeftWidth,10)}}/**
109
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
110
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
111
+ */function nm(o){if(!o.target)return null;const i=o.target.ownerDocument,e=o.clientX,t=o.clientY;let n=null;return i.caretRangeFromPoint&&i.caretRangeFromPoint(e,t)?n=i.caretRangeFromPoint(e,t):o.rangeParent&&(n=i.createRange(),n.setStart(o.rangeParent,o.rangeOffset),n.collapse(!0)),n}/**
112
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
113
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
114
+ */function ne(o){return Object.prototype.toString.call(o)=="[object Text]"}/**
115
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
116
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
117
+ */function As(o){return Object.prototype.toString.apply(o)=="[object Range]"}function om(o){return!o||!o.parentNode||o.offsetParent===T.document.body?null:o.offsetParent}const sm=["top","right","bottom","left","width","height"];class R{constructor(i){u(this,"top");u(this,"right");u(this,"bottom");u(this,"left");u(this,"width");u(this,"height");u(this,"_source");const e=As(i);if(Object.defineProperty(this,"_source",{value:i._source||i,writable:!0,enumerable:!1}),zr(i)||e)if(e){const t=R.getDomRangeRects(i);co(this,R.getBoundingRect(t))}else co(this,i.getBoundingClientRect());else if(Xo(i)){const{innerWidth:t,innerHeight:n}=i;co(this,{top:0,right:t,bottom:n,left:0,width:t,height:n})}else co(this,i)}clone(){return new R(this)}moveTo(i,e){return this.top=e,this.right=i+this.width,this.bottom=e+this.height,this.left=i,this}moveBy(i,e){return this.top+=e,this.right+=i,this.left+=i,this.bottom+=e,this}getIntersection(i){const e={top:Math.max(this.top,i.top),right:Math.min(this.right,i.right),bottom:Math.min(this.bottom,i.bottom),left:Math.max(this.left,i.left),width:0,height:0};if(e.width=e.right-e.left,e.height=e.bottom-e.top,e.width<0||e.height<0)return null;{const t=new R(e);return t._source=this._source,t}}getIntersectionArea(i){const e=this.getIntersection(i);return e?e.getArea():0}getArea(){return this.width*this.height}getVisible(){const i=this._source;let e=this.clone();if(ic(i))return e;let t=i,n=i.parentNode||i.commonAncestorContainer,s;for(;n&&!ic(n);){const r=Sb(n)==="visible";t instanceof HTMLElement&&nc(t)==="absolute"&&(s=t);const a=nc(n);if(r||s&&(a==="relative"&&r||a!=="relative")){t=n,n=n.parentNode;continue}const l=new R(n),c=e.getIntersection(l);if(c)c.getArea()<e.getArea()&&(e=c);else return null;t=n,n=n.parentNode}return e}isEqual(i){for(const e of sm)if(this[e]!==i[e])return!1;return!0}contains(i){const e=this.getIntersection(i);return!!(e&&e.isEqual(i))}toAbsoluteRect(){const{scrollX:i,scrollY:e}=T.window,t=this.clone().moveBy(i,e);if(zr(t._source)){const n=om(t._source);n&&Ab(t,n)}return t}excludeScrollbarsAndBorders(){const i=this._source;let e,t,n;if(Xo(i))e=i.innerWidth-i.document.documentElement.clientWidth,t=i.innerHeight-i.document.documentElement.clientHeight,n=i.getComputedStyle(i.document.documentElement).direction;else{const s=im(i);e=i.offsetWidth-i.clientWidth-s.left-s.right,t=i.offsetHeight-i.clientHeight-s.top-s.bottom,n=i.ownerDocument.defaultView.getComputedStyle(i).direction,this.left+=s.left,this.top+=s.top,this.right-=s.right,this.bottom-=s.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=e,n==="ltr"?this.right-=e:this.left+=e,this.height-=t,this.bottom-=t,this}static getDomRangeRects(i){const e=[],t=Array.from(i.getClientRects());if(t.length)for(const n of t)e.push(new R(n));else{let n=i.startContainer;ne(n)&&(n=n.parentNode);const s=new R(n.getBoundingClientRect());s.right=s.left,s.width=0,e.push(s)}return e}static getBoundingRect(i){const e={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};let t=0;for(const n of i)t++,e.left=Math.min(e.left,n.left),e.top=Math.min(e.top,n.top),e.right=Math.max(e.right,n.right),e.bottom=Math.max(e.bottom,n.bottom);return t==0?null:(e.width=e.right-e.left,e.height=e.bottom-e.top,new R(e))}}function co(o,i){for(const e of sm)o[e]=i[e]}function ic(o){return zr(o)?o===o.ownerDocument.body:!1}function zr(o){return o!==null&&typeof o=="object"&&o.nodeType===1&&typeof o.getBoundingClientRect=="function"}function nc(o){return o instanceof HTMLElement?o.ownerDocument.defaultView.getComputedStyle(o).position:"static"}function Sb(o){return o instanceof HTMLElement?o.ownerDocument.defaultView.getComputedStyle(o).overflow:"visible"}function Ab(o,i){const e=new R(i),t=im(i);let n=0,s=0;n-=e.left,s-=e.top,n+=i.scrollLeft,s+=i.scrollTop,n-=t.left,s-=t.top,o.moveBy(n,s)}const ie=class ie{constructor(i,e){u(this,"_element");u(this,"_callback");ie._observerInstance||ie._createObserver(),this._element=i,this._callback=e,ie._addElementCallback(i,e),ie._observerInstance.observe(i)}get element(){return this._element}destroy(){ie._deleteElementCallback(this._element,this._callback)}static _addElementCallback(i,e){ie._elementCallbacks||(ie._elementCallbacks=new Map);let t=ie._elementCallbacks.get(i);t||(t=new Set,ie._elementCallbacks.set(i,t)),t.add(e)}static _deleteElementCallback(i,e){const t=ie._getElementCallbacks(i);t&&(t.delete(e),t.size||(ie._elementCallbacks.delete(i),ie._observerInstance.unobserve(i))),ie._elementCallbacks&&!ie._elementCallbacks.size&&(ie._observerInstance=null,ie._elementCallbacks=null)}static _getElementCallbacks(i){return ie._elementCallbacks?ie._elementCallbacks.get(i):null}static _createObserver(){ie._observerInstance=new T.window.ResizeObserver(i=>{for(const e of i){const t=ie._getElementCallbacks(e.target);if(t)for(const n of t)n(e)}})}};u(ie,"_observerInstance",null),u(ie,"_elementCallbacks",null);let Rn=ie;/**
118
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
119
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
120
+ */function oc(o,i){o instanceof HTMLTextAreaElement&&(o.value=i),o.innerHTML=i}/**
121
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
122
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
123
+ */function Ki(o){return i=>i+o}/**
124
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
125
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
126
+ */function zi(o){let i=0;for(;o.previousSibling;)o=o.previousSibling,i++;return i}/**
127
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
128
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
129
+ */function rm(o,i,e){o.insertBefore(e,o.childNodes[i]||null)}/**
130
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
131
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
132
+ */function yn(o){return o&&o.nodeType===Node.COMMENT_NODE}function Ib(o){try{T.document.createAttribute(o)}catch{return!1}return!0}function St(o){return o?ne(o)?St(o.parentElement):o.getClientRects?!!o.getClientRects().length:!1:!1}function Ia({element:o,target:i,positions:e,limiter:t,fitInViewport:n,viewportOffsetConfig:s}){Jo(i)&&(i=i()),Jo(t)&&(t=t());const r=om(o),a=Pb(s),l=new R(o),c=sc(i,a);let d;if(!c||!a.getIntersection(c))return null;const h={targetRect:c,elementRect:l,positionedElementAncestor:r,viewportRect:a};if(!t&&!n)d=new am(e[0],h);else{if(t){const m=sc(t,a);m&&(h.limiterRect=m)}d=Rb(e,h)}return d}function sc(o,i){const e=new R(o).getVisible();return e?e.getIntersection(i):null}function Pb(o){o=Object.assign({top:0,bottom:0,left:0,right:0},o);const i=new R(T.window);return i.top+=o.top,i.height-=o.top,i.bottom-=o.bottom,i.height-=o.bottom,i}function Rb(o,i){const{elementRect:e}=i,t=e.getArea(),n=o.map(a=>new am(a,i)).filter(a=>!!a.name);let s=0,r=null;for(const a of n){const{limiterIntersectionArea:l,viewportIntersectionArea:c}=a;if(l===t)return a;const d=c**2+l**2;d>s&&(s=d,r=a)}return r}class am{constructor(i,e){u(this,"name");u(this,"config");u(this,"_positioningFunctionCoordinates");u(this,"_options");u(this,"_cachedRect");u(this,"_cachedAbsoluteRect");const t=i(e.targetRect,e.elementRect,e.viewportRect,e.limiterRect);if(!t)return;const{left:n,top:s,name:r,config:a}=t;this.name=r,this.config=a,this._positioningFunctionCoordinates={left:n,top:s},this._options=e}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const i=this._options.limiterRect;return i?i.getIntersectionArea(this._rect):0}get viewportIntersectionArea(){return this._options.viewportRect.getIntersectionArea(this._rect)}get _rect(){return this._cachedRect?this._cachedRect:(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCoordinates.left,this._positioningFunctionCoordinates.top),this._cachedRect)}get _absoluteRect(){return this._cachedAbsoluteRect?this._cachedAbsoluteRect:(this._cachedAbsoluteRect=this._rect.toAbsoluteRect(),this._cachedAbsoluteRect)}}/**
133
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
134
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
135
+ */function rc(o){const i=o.parentNode;i&&i.removeChild(o)}function Bo(){const o=T.window.visualViewport;if(!o||!(I.isiOS||I.isSafari))return{left:0,top:0};const i=Math.max(Math.round(o.offsetLeft),0),e=Math.max(Math.round(o.offsetTop),0);return{left:i,top:e}}function Mb({target:o,viewportOffset:i=0,ancestorOffset:e=0,alignToTop:t,forceScroll:n}){const s=Pa(o);let r=s,a=null;for(i=zb(i);r;){let l;r==s?l=ac(o):l=ac(a),Vb({parent:l,getRect:()=>$s(o,r),alignToTop:t,ancestorOffset:e,forceScroll:n});let c=$s(o,r);const d=$s(l,r);if(c.height>d.height){const h=c.getIntersection(d);h&&(c=h)}if(Bb({window:r,rect:c,viewportOffset:i,alignToTop:t,forceScroll:n}),r.parent!=r){if(a=r.frameElement,r=r.parent,!a)return}else r=null}}function Bb({window:o,rect:i,alignToTop:e,forceScroll:t,viewportOffset:n}){const s=i.clone().moveBy(0,n.bottom),r=i.clone().moveBy(0,-n.top),a=new R(o).excludeScrollbarsAndBorders(),l=[r,s],c=e&&t,d=l.every(p=>a.contains(p));let{scrollX:h,scrollY:m}=o;const g=h,f=m;c?m-=a.top-i.top+n.top:d||(cm(r,a)?m-=a.top-i.top+n.top:lm(s,a)&&(e?m+=i.top-a.top-n.top:m+=i.bottom-a.bottom+n.bottom)),d||(dm(i,a)?h-=a.left-i.left+n.left:um(i,a)&&(h+=i.right-a.right+n.right)),(h!=g||m!==f)&&o.scrollTo(h,m)}function Vb({parent:o,getRect:i,alignToTop:e,forceScroll:t,ancestorOffset:n=0,limiterElement:s}){const r=Pa(o),a=e&&t;let l,c,d;const h=s||r.document.body;for(;o!=h;)c=i(),l=new R(o).excludeScrollbarsAndBorders(),d=l.contains(c),a?o.scrollTop-=l.top-c.top+n:d||(cm(c,l)?o.scrollTop-=l.top-c.top+n:lm(c,l)&&(e?o.scrollTop+=c.top-l.top-n:o.scrollTop+=c.bottom-l.bottom+n)),d||(dm(c,l)?o.scrollLeft-=l.left-c.left+n:um(c,l)&&(o.scrollLeft+=c.right-l.right+n)),o=o.parentNode}function lm(o,i){return o.bottom>i.bottom}function cm(o,i){return o.top<i.top}function dm(o,i){return o.left<i.left}function um(o,i){return o.right>i.right}function Pa(o){return As(o)?o.startContainer.ownerDocument.defaultView:o.ownerDocument.defaultView}function ac(o){if(As(o)){let i=o.commonAncestorContainer;return ne(i)&&(i=i.parentNode),i}else return o.parentNode}function $s(o,i){const e=Pa(o),t=new R(o);if(e===i)return t;{let n=e;for(;n!=i;){const s=n.frameElement,r=new R(s).excludeScrollbarsAndBorders();t.moveBy(r.left,r.top),n=n.parent}}return t}function zb(o){return typeof o=="number"?{top:o,bottom:o,left:o,right:o}:o}const Nb={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},Db={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},lc={37:"←",38:"↑",39:"→",40:"↓",9:"⇥",33:"Page Up",34:"Page Down"},z=Wb(),Ob=Object.fromEntries(Object.entries(z).map(([o,i])=>{let e;return i in lc?e=lc[i]:e=o.charAt(0).toUpperCase()+o.slice(1),[i,e]}));function Wi(o){let i;if(typeof o=="string"){if(i=z[o.toLowerCase()],!i)throw new w("keyboard-unknown-key",null,{key:o})}else i=o.keyCode+(o.altKey?z.alt:0)+(o.ctrlKey?z.ctrl:0)+(o.shiftKey?z.shift:0)+(o.metaKey?z.cmd:0);return i}function Ra(o){return typeof o=="string"&&(o=qb(o)),o.map(i=>typeof i=="string"?Ub(i):i).reduce((i,e)=>e+i,0)}function Qo(o,i){let e=Ra(o);const t=I.isMac||I.isiOS;return Object.entries(t?Nb:Db).reduce((r,[a,l])=>((e&z[a])!=0&&(e&=~z[a],r+=l),r),"")+(e?Ob[e]:"")}function Fb(o){return o==z.arrowright||o==z.arrowleft||o==z.arrowup||o==z.arrowdown}function Ma(o,i){const e=i==="ltr";switch(o){case z.arrowleft:return e?"left":"right";case z.arrowright:return e?"right":"left";case z.arrowup:return"up";case z.arrowdown:return"down"}}function Ub(o){if(o.endsWith("!"))return Wi(o.slice(0,-1));const i=Wi(o);return(I.isMac||I.isiOS)&&i==z.ctrl?z.cmd:i}function Hb(o,i){const e=Ma(o,i);return e==="down"||e==="right"}function Wb(){const o={pageup:33,pagedown:34,end:35,home:36,arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let i=65;i<=90;i++){const e=String.fromCharCode(i);o[e.toLowerCase()]=i}for(let i=48;i<=57;i++)o[i-48]=i;for(let i=112;i<=123;i++)o["f"+(i-111)]=i;return Object.assign(o,{"'":222,",":108,"-":109,".":110,"/":111,";":186,"=":187,"[":219,"\\":220,"]":221,"`":223}),o}function qb(o){return o.split("+").map(i=>i.trim())}/**
136
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
137
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
138
+ */const jb=["ar","ara","dv","div","fa","per","fas","he","heb","ku","kur","ug","uig","ur","urd"];function cc(o){return jb.includes(o)?"rtl":"ltr"}/**
139
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
140
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
141
+ */function Y(o){return Array.isArray(o)?o:[o]}/* istanbul ignore else -- @preserve */T.window.CKEDITOR_TRANSLATIONS||(T.window.CKEDITOR_TRANSLATIONS={});function Gb(o,i,e=1,t){if(typeof e!="number")throw new w("translation-service-quantity-not-a-number",null,{quantity:e});const n=t||T.window.CKEDITOR_TRANSLATIONS,s=Zb(n);s===1&&(o=Object.keys(n)[0]);const r=i.id||i.string;if(s===0||!Kb(o,r,n))return e!==1?i.plural:i.string;const a=n[o].dictionary,l=n[o].getPluralForm||(h=>h===1?0:1),c=a[r];if(typeof c=="string")return c;const d=Number(l(e));return c[d]}function $b(o){return Array.isArray(o)?o.reduce((i,e)=>Aa(i,e)):o}function Kb(o,i,e){return!!e[o]&&!!e[o].dictionary[i]}function Zb(o){return Object.keys(o).length}class Jb{constructor({uiLanguage:i="en",contentLanguage:e,translations:t}={}){u(this,"uiLanguage");u(this,"uiLanguageDirection");u(this,"contentLanguage");u(this,"contentLanguageDirection");u(this,"t");u(this,"translations");this.uiLanguage=i,this.contentLanguage=e||this.uiLanguage,this.uiLanguageDirection=cc(this.uiLanguage),this.contentLanguageDirection=cc(this.contentLanguage),this.translations=$b(t),this.t=(n,s)=>this._t(n,s)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(i,e=[]){e=Y(e),typeof i=="string"&&(i={string:i});const n=!!i.plural?e[0]:1,s=Gb(this.uiLanguage,i,n,this.translations);return Yb(s,e)}}function Yb(o,i){return o.replace(/%(\d+)/g,(e,t)=>t<i.length?i[t]:e)}class Be extends G(){constructor(e={},t={}){super();u(this,"_items");u(this,"_itemMap");u(this,"_idProperty");u(this,"_bindToCollection");u(this,"_bindToExternalToInternalMap");u(this,"_bindToInternalToExternalMap");u(this,"_skippedIndexesFromExternal");const n=je(e);if(n||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],n)for(const s of e)this._items.push(s),this._itemMap.set(this._getItemIdBeforeAdding(s),s)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(t===void 0)t=this._items.length;else if(t>this._items.length||t<0)throw new w("collection-add-item-invalid-index",this);let n=0;for(const s of e){const r=this._getItemIdBeforeAdding(s),a=t+n;this._items.splice(a,0,s),this._itemMap.set(r,s),this.fire("add",s,a),n++}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if(typeof e=="string")t=this._itemMap.get(e);else if(typeof e=="number")t=this._items[e];else throw new w("collection-get-invalid-arg",this);return t||null}has(e){if(typeof e=="string")return this._itemMap.has(e);{const t=this._idProperty,n=e[t];return n&&this._itemMap.has(n)}}getIndex(e){let t;return typeof e=="string"?t=this._itemMap.get(e):t=e,t?this._items.indexOf(t):-1}remove(e){const[t,n]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:n}),t}map(e,t){return this._items.map(e,t)}forEach(e,t){this._items.forEach(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new w("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:t=>{this._setUpBindToBinding(n=>new t(n))},using:t=>{typeof t=="function"?this._setUpBindToBinding(t):this._setUpBindToBinding(n=>n[t])}}}_setUpBindToBinding(e){const t=this._bindToCollection,n=(s,r,a)=>{const l=t._bindToCollection==this,c=t._bindToInternalToExternalMap.get(r);if(l&&c)this._bindToExternalToInternalMap.set(r,c),this._bindToInternalToExternalMap.set(c,r);else{const d=e(r);if(!d){this._skippedIndexesFromExternal.push(a);return}let h=a;for(const m of this._skippedIndexesFromExternal)a>m&&h--;for(const m of t._skippedIndexesFromExternal)h>=m&&h++;this._bindToExternalToInternalMap.set(r,d),this._bindToInternalToExternalMap.set(d,r),this.add(d,h);for(let m=0;m<t._skippedIndexesFromExternal.length;m++)h<=t._skippedIndexesFromExternal[m]&&t._skippedIndexesFromExternal[m]++}};for(const s of t)n(null,s,t.getIndex(s));this.listenTo(t,"add",n),this.listenTo(t,"remove",(s,r,a)=>{const l=this._bindToExternalToInternalMap.get(r);l&&this.remove(l),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce((c,d)=>(a<d&&c.push(d-1),a>d&&c.push(d),c),[])})}_getItemIdBeforeAdding(e){const t=this._idProperty;let n;if(t in e){if(n=e[t],typeof n!="string")throw new w("collection-add-invalid-id",this);if(this.get(n))throw new w("collection-add-item-already-exists",this)}else e[t]=n=Me();return n}_remove(e){let t,n,s,r=!1;const a=this._idProperty;if(typeof e=="string"?(n=e,s=this._itemMap.get(n),r=!s,s&&(t=this._items.indexOf(s))):typeof e=="number"?(t=e,s=this._items[t],r=!s,s&&(n=s[a])):(s=e,n=s[a],t=this._items.indexOf(s),r=t==-1||!this._itemMap.get(n)),r)throw new w("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(n);const l=this._bindToInternalToExternalMap.get(s);return this._bindToInternalToExternalMap.delete(s),this._bindToExternalToInternalMap.delete(l),this.fire("remove",s,t),[s,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}/**
142
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
143
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
144
+ */function ue(o){const i=o.next();return i.done?null:i.value}class ee extends Se(j()){constructor(){super();u(this,"_elements",new Set);u(this,"_externalViews",new Set);u(this,"_blurTimeout",null);this.set("isFocused",!1),this.set("focusedElement",null)}get elements(){return Array.from(this._elements.values())}get externalViews(){return Array.from(this._externalViews.values())}add(e){if(uc(e))this._addElement(e);else if(dc(e))this._addView(e);else{if(!e.element)throw new w("focustracker-add-view-missing-element",{focusTracker:this,view:e});this._addElement(e.element)}}remove(e){uc(e)?this._removeElement(e):dc(e)?this._removeView(e):this._removeElement(e.element)}_addElement(e){if(this._elements.has(e))throw new w("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",()=>{const t=this.externalViews.find(n=>Xb(e,n));t?this._focus(t.element):this._focus(e)},{useCapture:!0}),this.listenTo(e,"blur",()=>{this._blur()},{useCapture:!0}),this._elements.add(e)}_removeElement(e){this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e)),e===this.focusedElement&&this._blur()}_addView(e){e.element&&this._addElement(e.element),this.listenTo(e.focusTracker,"change:focusedElement",()=>{e.focusTracker.focusedElement?e.element&&this._focus(e.element):this._blur()}),this._externalViews.add(e)}_removeView(e){e.element&&this._removeElement(e.element),this.stopListening(e.focusTracker),this._externalViews.delete(e)}destroy(){this.stopListening(),this._elements.clear(),this._externalViews.clear(),this.isFocused=!1,this.focusedElement=null}_focus(e){this._clearBlurTimeout(),this.focusedElement=e,this.isFocused=!0}_blur(){this.elements.find(n=>n.contains(document.activeElement))||this.externalViews.find(n=>n.focusTracker.isFocused&&!n.focusTracker._blurTimeout)||(this._clearBlurTimeout(),this._blurTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0))}_clearBlurTimeout(){clearTimeout(this._blurTimeout),this._blurTimeout=null}}function dc(o){return"focusTracker"in o&&o.focusTracker instanceof ee}function uc(o){return Gt(o)}function Xb(o,i){return hc(o,i)?!0:!!i.focusTracker.externalViews.find(e=>hc(o,e))}function hc(o,i){return!!i.element&&i.element.contains(document.activeElement)&&o.contains(i.element)}class re{constructor(){u(this,"_listener");this._listener=new(Se())}listenTo(i){this._listener.listenTo(i,"keydown",(e,t)=>{this._listener.fire("_keydown:"+Wi(t),t)})}set(i,e,t={}){const n=Ra(i),s=t.priority;this._listener.listenTo(this._listener,"_keydown:"+n,(r,a)=>{t.filter&&!t.filter(a)||(e(a,()=>{a.preventDefault(),a.stopPropagation(),r.stop()}),r.return=!0)},{priority:s})}press(i){return!!this._listener.fire("_keydown:"+Wi(i),i)}stopListening(i){this._listener.stopListening(i)}destroy(){this.stopListening()}}/**
145
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
146
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
147
+ */function Qb(o){const i=new Map;for(const e in o)i.set(e,o[e]);return i}function At(o){return je(o)?new Map(o):Qb(o)}/**
148
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
149
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
150
+ */function mc(o,i,e){const t=o.length,n=i.length;for(let s=t-1;s>=e;s--)o[s+n]=o[s];for(let s=0;s<n;s++)o[e+s]=i[s]}/**
151
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
152
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
153
+ */function Ba(o,i){let e;function t(...n){t.cancel(),e=setTimeout(()=>o(...n),i)}return t.cancel=()=>{clearTimeout(e)},t}/**
154
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
155
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
156
+ */function Va(o){try{if(!o.startsWith("ey"))return null;const i=atob(o.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(i)}catch{return null}}/**
157
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
158
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
159
+ */function ev(){const o=[];for(let i=0;i<256;i++){let e=i;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;o[i]=e}return o}function tv(o){const i=Array.isArray(o)?o:[o],e=ev();let t=-1;const n=i.map(s=>Array.isArray(s)?s.join(""):String(s)).join("");for(let s=0;s<n.length;s++){const r=n.charCodeAt(s);t=t>>>8^e[(t^r)&255]}return t=(t^-1)>>>0,t.toString(16).padStart(8,"0")}/**
160
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
161
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
162
+ */function iv(o){const i=[{name:"address",isVoid:!1},{name:"article",isVoid:!1},{name:"aside",isVoid:!1},{name:"blockquote",isVoid:!1},{name:"details",isVoid:!1},{name:"dialog",isVoid:!1},{name:"dd",isVoid:!1},{name:"div",isVoid:!1},{name:"dl",isVoid:!1},{name:"dt",isVoid:!1},{name:"fieldset",isVoid:!1},{name:"figcaption",isVoid:!1},{name:"figure",isVoid:!1},{name:"footer",isVoid:!1},{name:"form",isVoid:!1},{name:"h1",isVoid:!1},{name:"h2",isVoid:!1},{name:"h3",isVoid:!1},{name:"h4",isVoid:!1},{name:"h5",isVoid:!1},{name:"h6",isVoid:!1},{name:"header",isVoid:!1},{name:"hgroup",isVoid:!1},{name:"hr",isVoid:!0},{name:"li",isVoid:!1},{name:"main",isVoid:!1},{name:"nav",isVoid:!1},{name:"ol",isVoid:!1},{name:"p",isVoid:!1},{name:"section",isVoid:!1},{name:"table",isVoid:!1},{name:"tbody",isVoid:!1},{name:"td",isVoid:!1},{name:"th",isVoid:!1},{name:"thead",isVoid:!1},{name:"tr",isVoid:!1},{name:"ul",isVoid:!1}],e=i.map(r=>r.name).join("|"),t=o.replace(new RegExp(`</?(${e})( .*?)?>`,"g"),`
163
+ $&
164
+ `).replace(/<br[^>]*>/g,`$&
165
+ `).split(`
166
+ `);let n=0,s=!1;return t.map(r=>(s=sv(r,s),!r.length&&!s?"":nv(r,i)?uo(r,n++):ov(r,i)?uo(r,--n):s==="middle"||s==="last"?uo(r,0):uo(r,n))).join("").trimEnd()}function nv(o,i){return i.some(e=>!(e.isVoid||!new RegExp(`<${e.name}( .*?)?>`).test(o)))}function ov(o,i){return i.some(e=>new RegExp(`</${e.name}>`).test(o))}function uo(o,i,e=" "){return`${e.repeat(Math.max(0,i))}${o}
167
+ `}function sv(o,i){const e=/<pre( .*?)?>/.test(o),t=/<\/pre>/.test(o);return e&&t?!1:e?"first":t?"last":i==="first"||i==="middle"?"middle":!1}/**
168
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
169
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
170
+ */function rv(o){return!!o&&o.length==1&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(o)}function av(o){return!!o&&o.length==1&&/[\ud800-\udbff]/.test(o)}function lv(o){return!!o&&o.length==1&&/[\udc00-\udfff]/.test(o)}function za(o,i){return av(o.charAt(i-1))&&lv(o.charAt(i))}function Na(o,i){return rv(o.charAt(i))}const cv=dv();function hm(o,i){const e=String(o).matchAll(cv);return Array.from(e).some(t=>t.index<i&&i<t.index+t[0].length)}function dv(){const o=[new RegExp("\\p{Emoji}[\\u{E0020}-\\u{E007E}]+\\u{E007F}","u"),new RegExp("\\p{Emoji}\\u{FE0F}?\\u{20E3}","u"),new RegExp("\\p{Emoji}\\u{FE0F}","u"),new RegExp("(?=\\p{General_Category=Other_Symbol})\\p{Emoji}\\p{Emoji_Modifier}*","u")],i=new RegExp("\\p{Regional_Indicator}{2}","u").source,e="(?:"+o.map(n=>n.source).join("|")+")",t=`${i}|${e}(?:‍${e})*`;return new RegExp(t,"ug")}/**
171
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
172
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
173
+ */const tn=new WeakMap;let gc=!1;function Da({view:o,element:i,text:e,isDirectHost:t=!0,keepOnFocus:n=!1}){const s=o.document;tn.has(s)||(tn.set(s,new Map),s.registerPostFixer(a=>Ks(tn.get(s),a)),s.on("change:isComposing",()=>{o.change(a=>Ks(tn.get(s),a))},{priority:"high"})),i.is("editableElement")&&i.on("change:placeholder",(a,l,c)=>r(c)),i.placeholder?r(i.placeholder):e&&r(e),e&&pv();function r(a){const l={text:a,isDirectHost:t,keepOnFocus:n,hostElement:t?i:null};tn.get(s).set(i,l),o.change(c=>Ks([[i,l]],c))}}function uv(o,i){return i.hasClass("ck-placeholder")?!1:(o.addClass("ck-placeholder",i),!0)}function hv(o,i){return i.hasClass("ck-placeholder")?(o.removeClass("ck-placeholder",i),!0):!1}function mv(o,i){if(!o.isAttached()||gv(o))return!1;const e=o.document,n=e.selection.anchor;return e.isComposing&&n&&n.parent===o?!1:i||!e.isFocused?!0:!!n&&n.parent!==o}function gv(o){for(const i of o.getChildren())if(!i.is("uiElement"))return!0;return!1}function Ks(o,i){const e=[];let t=!1;for(const[n,s]of o)s.isDirectHost&&(e.push(n),fc(i,n,s)&&(t=!0));for(const[n,s]of o){if(s.isDirectHost)continue;const r=fv(n);r&&(e.includes(r)||(s.hostElement=r,fc(i,n,s)&&(t=!0)))}return t}function fc(o,i,e){const{text:t,isDirectHost:n,hostElement:s}=e;let r=!1;return s.getAttribute("data-placeholder")!==t&&(o.setAttribute("data-placeholder",t,s),r=!0),(n||i.childCount==1)&&mv(s,e.keepOnFocus)?uv(o,s)&&(r=!0):hv(o,s)&&(r=!0),r}function fv(o){if(o.childCount){const i=o.getChild(0);if(i.is("element")&&!i.is("uiElement")&&!i.is("attributeElement"))return i}return null}function pv(){gc||F("enableplaceholder-deprecated-text-option"),gc=!0}/**
174
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
175
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
176
+ */let ci=class{is(){throw new Error("is() method is abstract")}},di=class extends G(ci){constructor(e){super();u(this,"document");u(this,"parent");this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if((e=this.parent.getChildIndex(this))==-1)throw new w("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return e!==null&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return e!==null&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={}){const t=[];let n=e.includeSelf?this:this.parent;for(;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}getCommonAncestor(e,t={}){const n=this.getAncestors(t),s=e.getAncestors(t);let r=0;for(;n[r]==s[r]&&n[r];)r++;return r===0?null:n[r-1]}isBefore(e){if(this==e||this.root!==e.root)return!1;const t=this.getPath(),n=e.getPath(),s=Ee(t,n);switch(s){case"prefix":return!0;case"extension":return!1;default:return t[s]<n[s]}}isAfter(e){return this==e||this.root!==e.root?!1:!this.isBefore(e)}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t,n){this.fire(`change:${e}`,t,n),this.parent&&this.parent._fireChange(e,t,n)}toJSON(){const e=La(this);return delete e.parent,e}};di.prototype.is=function(o){return o==="node"||o==="view:node"};let _e=class Nr extends di{constructor(e,t){super(e);u(this,"_textData");this._textData=t}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof Nr?this===e||this.data===e.data:!1}_clone(){return new Nr(this.document,this.data)}};_e.prototype.is=function(o){return o==="$text"||o==="view:$text"||o==="text"||o==="view:text"||o==="node"||o==="view:node"};let Ct=class extends ci{constructor(e,t,n){super();u(this,"textNode");u(this,"data");u(this,"offsetInText");if(this.textNode=e,t<0||t>e.data.length)throw new w("view-textproxy-wrong-offsetintext",this);if(n<0||t+n>e.data.length)throw new w("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+n),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}getAncestors(e={}){const t=[];let n=e.includeSelf?this.textNode:this.parent;for(;n!==null;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}};Ct.prototype.is=function(o){return o==="$textProxy"||o==="view:$textProxy"||o==="textProxy"||o==="view:textProxy"};class es{constructor(){u(this,"_consumables",new Map)}add(i,e){let t;if(i.is("$text")||i.is("documentFragment")){this._consumables.set(i,!0);return}this._consumables.has(i)?t=this._consumables.get(i):(t=new wv(i),this._consumables.set(i,t)),t.add(e?fn(e):i._getConsumables())}test(i,e){const t=this._consumables.get(i);return t===void 0?null:i.is("$text")||i.is("documentFragment")?t:t.test(fn(e))}consume(i,e){if(i.is("$text")||i.is("documentFragment"))return this.test(i,e)?(this._consumables.set(i,!1),!0):!1;const t=this._consumables.get(i);return t===void 0?!1:t.consume(fn(e))}revert(i,e){const t=this._consumables.get(i);t!==void 0&&(i.is("$text")||i.is("documentFragment")?this._consumables.set(i,!0):t.revert(fn(e)))}static createFrom(i,e){if(e||(e=new es),i.is("$text"))e.add(i);else if(i.is("element")||i.is("documentFragment")){e.add(i);for(const t of i.getChildren())es.createFrom(t,e)}return e}}class wv{constructor(i){u(this,"element");u(this,"_canConsumeName",null);u(this,"_attributes",new Map);this.element=i}add(i){i.name&&(this._canConsumeName=!0);for(const[e,t]of i.attributes)if(t){let n=this._attributes.get(e);(!n||typeof n=="boolean")&&(n=new Map,this._attributes.set(e,n)),n.set(t,!0)}else{if(e=="style"||e=="class")throw new w("viewconsumable-invalid-attribute",this);this._attributes.set(e,!0)}}test(i){if(i.name&&!this._canConsumeName)return this._canConsumeName;for(const[e,t]of i.attributes){const n=this._attributes.get(e);if(n===void 0)return null;if(n===!1)return!1;if(n!==!0){if(t){const s=n.get(t);if(s===void 0)return null;if(!s)return!1}else for(const s of n.values())if(!s)return!1}}return!0}consume(i){if(!this.test(i))return!1;i.name&&(this._canConsumeName=!1);for(const[e,t]of i.attributes){const n=this._attributes.get(e);if(typeof n=="boolean")for(const[s]of this.element._getConsumables(e,t).attributes)this._attributes.set(s,!1);else if(t)for(const[,s]of this.element._getConsumables(e,t).attributes)n.set(s,!1);else for(const s of n.keys())n.set(s,!1)}return!0}revert(i){i.name&&(this._canConsumeName=!0);for(const[e,t]of i.attributes){const n=this._attributes.get(e);if(n===!1){this._attributes.set(e,!0);continue}if(!(n===void 0||n===!0))if(t)n.get(t)===!1&&n.set(t,!0);else for(const s of n.keys())n.set(s,!0)}}}function fn(o){const i=[];return"attributes"in o&&o.attributes&&Zs(i,o.attributes),"classes"in o&&o.classes&&Zs(i,o.classes,"class"),"styles"in o&&o.styles&&Zs(i,o.styles,"style"),{name:o.name||!1,attributes:i}}function Zs(o,i,e){if(typeof i=="string"){o.push(e?[e,i]:[i]);return}for(const t of i)Array.isArray(t)?o.push(t):o.push(e?[e,t]:[t])}class Mn{constructor(...i){u(this,"_patterns",[]);this.add(...i)}add(...i){for(let e of i)(typeof e=="string"||e instanceof RegExp)&&(e={name:e}),this._patterns.push(e)}match(...i){for(const e of i)for(const t of this._patterns){const n=this._isElementMatching(e,t);if(n)return{element:e,pattern:t,match:n}}return null}matchAll(...i){const e=[];for(const t of i)for(const n of this._patterns){const s=this._isElementMatching(t,n);s&&e.push({element:t,pattern:n,match:s})}return e.length>0?e:null}getElementName(){if(this._patterns.length!==1)return null;const i=this._patterns[0],e=i.name;return typeof i!="function"&&e&&!(e instanceof RegExp)?e:null}_isElementMatching(i,e){if(typeof e=="function"){const s=e(i);return!s||typeof s!="object"?s:fn(s)}const t={};if(e.name&&(t.name=bv(e.name,i.name),!t.name))return null;const n=[];return e.attributes&&!vv(e.attributes,i,n)||e.classes&&!kv(e.classes,i,n)||e.styles&&!yv(e.styles,i,n)?null:(n.length&&(t.attributes=n),t)}}function ts(o,i){return o===!0||o===i||o instanceof RegExp&&!!String(i).match(o)}function bv(o,i){return o instanceof RegExp?!!i.match(o):o===i}function Oa(o,i){if(Array.isArray(o))return o.map(t=>typeof t!="object"||t instanceof RegExp?i?[i,t,!0]:[t,!0]:((t.key===void 0||t.value===void 0)&&F("matcher-pattern-missing-key-or-value",t),i?[i,t.key,t.value]:[t.key,t.value]));if(typeof o!="object"||o instanceof RegExp)return[i?[i,o,!0]:[o,!0]];const e=[];for(const t in o)Object.prototype.hasOwnProperty.call(o,t)&&e.push(i?[i,t,o[t]]:[t,o[t]]);return e}function vv(o,i,e){let t;return typeof o=="object"&&!(o instanceof RegExp)&&!Array.isArray(o)?(o.style!==void 0&&F("matcher-pattern-deprecated-attributes-style-key",o),o.class!==void 0&&F("matcher-pattern-deprecated-attributes-class-key",o)):t=["class","style"],i._collectAttributesMatch(Oa(o),e,t)}function kv(o,i,e){return i._collectAttributesMatch(Oa(o,"class"),e)}function yv(o,i,e){return i._collectAttributesMatch(Oa(o,"style"),e)}class _n{constructor(i){u(this,"_styles");u(this,"_cachedStyleNames",null);u(this,"_cachedExpandedStyleNames",null);u(this,"_styleProcessor");this._styles={},this._styleProcessor=i}get isEmpty(){return!Object.entries(this._styles).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(i){this.clear();const e=Cv(i);for(const[t,n]of e)this._styleProcessor.toNormalizedForm(t,n,this._styles);return this}has(i){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(i,this._styles).find(([n])=>n===i);return Array.isArray(t)}set(i,e){if(this._cachedStyleNames=null,this._cachedExpandedStyleNames=null,Qe(i))for(const[t,n]of Object.entries(i))this._styleProcessor.toNormalizedForm(t,n,this._styles);else this._styleProcessor.toNormalizedForm(i,e,this._styles)}remove(i){for(const e of Y(i)){this._cachedStyleNames=null,this._cachedExpandedStyleNames=null;const t=Dr(e);jw(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}}getNormalized(i){return this._styleProcessor.getNormalized(i,this._styles)}toString(){return this.isEmpty?"":this.getStylesEntries().map(i=>i.join(":")).sort().join(";")+";"}getAsString(i){if(this.isEmpty)return;if(this._styles[i]&&!Qe(this._styles[i]))return this._styles[i];const t=this._styleProcessor.getReducedForm(i,this._styles).find(([n])=>n===i);if(Array.isArray(t))return t[1]}getStyleNames(i=!1){return this.isEmpty?[]:i?(this._cachedExpandedStyleNames||(this._cachedExpandedStyleNames=this._styleProcessor.getStyleNames(this._styles)),this._cachedExpandedStyleNames):(this._cachedStyleNames||(this._cachedStyleNames=this.getStylesEntries().map(([e])=>e)),this._cachedStyleNames)}keys(){return this.getStyleNames()}clear(){this._styles={},this._cachedStyleNames=null,this._cachedExpandedStyleNames=null}isSimilar(i){if(this.size!==i.size)return!1;for(const e of this.getStyleNames())if(!i.has(e)||i.getAsString(e)!==this.getAsString(e))return!1;return!0}getStylesEntries(){const i=[],e=Object.keys(this._styles);for(const t of e)i.push(...this._styleProcessor.getReducedForm(t,this._styles));return i}_clone(){const i=new this.constructor(this._styleProcessor);return i.set(this.getNormalized()),i}_getTokensMatch(i,e){const t=[];for(const n of this.getStyleNames(!0))if(ts(i,n)){if(e===!0){t.push(n);continue}const s=this.getAsString(n);ts(e,s)&&t.push(n)}return t.length?t:void 0}_getConsumables(i){const e=[];if(i){e.push(i);for(const t of this._styleProcessor.getRelatedStyles(i))e.push(t)}else for(const t of this.getStyleNames()){for(const n of this._styleProcessor.getRelatedStyles(t))e.push(n);e.push(t)}return e}_canMergeFrom(i){for(const e of i.getStyleNames())if(this.has(e)&&this.getAsString(e)!==i.getAsString(e))return!1;return!0}_mergeFrom(i){for(const e of i.getStyleNames())this.has(e)||this.set(e,i.getAsString(e))}_isMatching(i){for(const e of i.getStyleNames())if(!this.has(e)||this.getAsString(e)!==i.getAsString(e))return!1;return!0}_cleanEmptyObjectsOnPath(i){const e=i.split(".");if(!(e.length>1))return;const n=e.splice(0,e.length-1).join("."),s=jt(this._styles,n);if(!s)return;!Object.keys(s).length&&this.remove(n)}}class _v{constructor(){u(this,"_normalizers");u(this,"_extractors");u(this,"_reducers");u(this,"_consumables");this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(i,e,t){if(Qe(e)){Js(t,Dr(i),e);return}if(this._normalizers.has(i)){const n=this._normalizers.get(i),{path:s,value:r}=n(e);Js(t,s,r)}else Js(t,i,e)}getNormalized(i,e){if(!i)return Aa({},e);if(e[i]!==void 0)return e[i];if(this._extractors.has(i)){const t=this._extractors.get(i);if(typeof t=="string")return jt(e,t);const n=t(i,e);if(n)return n}return jt(e,Dr(i))}getReducedForm(i,e){const t=this.getNormalized(i,e);return t===void 0?[]:this._reducers.has(i)?this._reducers.get(i)(t):[[i,t]]}getStyleNames(i){const e=new Set;for(const t of this._consumables.keys()){const n=this.getNormalized(t,i);n&&(typeof n!="object"||Object.keys(n).length)&&e.add(t)}for(const t of Object.keys(i))e.add(t);return Array.from(e)}getRelatedStyles(i){return this._consumables.get(i)||[]}setNormalizer(i,e){this._normalizers.set(i,e)}setExtractor(i,e){this._extractors.set(i,e)}setReducer(i,e){this._reducers.set(i,e)}setStyleRelation(i,e){this._mapStyleNames(i,e);for(const t of e)this._mapStyleNames(t,[i])}_mapStyleNames(i,e){this._consumables.has(i)||this._consumables.set(i,[]),this._consumables.get(i).push(...e)}}function Cv(o){let i=null,e=0,t=0,n=null;const s=new Map;if(o==="")return s;o.charAt(o.length-1)!=";"&&(o=o+";");for(let r=0;r<o.length;r++){const a=o.charAt(r);if(i===null)switch(a){case":":n||(n=o.substr(e,r-e),t=r+1);break;case'"':case"'":i=a;break;case";":{const l=o.substr(t,r-t);n&&s.set(n.trim(),l.trim()),n=null,e=r+1;break}}else a===i&&(i=null)}return s}function Dr(o){return o.replace("-",".")}function Js(o,i,e){let t=e;Qe(e)&&(t=Aa({},jt(o,i),e)),Oh(o,i,t)}class Ys{constructor(){u(this,"_set",new Set)}get isEmpty(){return this._set.size==0}get size(){return this._set.size}has(i){return this._set.has(i)}keys(){return Array.from(this._set.keys())}setTo(i){this.clear();for(const e of i.split(/\s+/))e&&this._set.add(e);return this}set(i){for(const e of Y(i))e&&this._set.add(e)}remove(i){for(const e of Y(i))this._set.delete(e)}clear(){this._set.clear()}toString(){return Array.from(this._set).join(" ")}isSimilar(i){if(this.size!==i.size)return!1;for(const e of this.keys())if(!i.has(e))return!1;return!0}_clone(){const i=new this.constructor;return i._set=new Set(this._set),i}_getTokensMatch(i){const e=[];if(i===!0){for(const t of this._set.keys())e.push(t);return e}if(typeof i=="string"){for(const t of i.split(/\s+/))if(this._set.has(t))e.push(t);else return;return e}for(const t of this._set.keys())t.match(i)&&e.push(t);return e.length?e:void 0}_getConsumables(i){return i?[i]:this.keys()}_canMergeFrom(){return!0}_mergeFrom(i){for(const e of i._set.keys())this._set.has(e)||this._set.add(e)}_isMatching(i){for(const e of i._set.keys())if(!this._set.has(e))return!1;return!0}}let It=class mm extends di{constructor(e,t,n,s){super(e);u(this,"name");u(this,"_unsafeAttributesToRender",[]);u(this,"_attrs");u(this,"_children");u(this,"_customProperties",new Map);this.name=t,this._attrs=this._parseAttributes(n),this._children=[],s&&this._insertChild(0,s)}get _classes(){return this._attrs.get("class")}get _styles(){return this._attrs.get("style")}get childCount(){return this._children.length}get isEmpty(){return this._children.length===0}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes&&(yield"class"),this._styles&&(yield"style");for(const e of this._attrs.keys())e!="class"&&e!="style"&&(yield e)}*getAttributes(){for(const[e,t]of this._attrs.entries())yield[e,String(t)]}getAttribute(e){return this._attrs.has(e)?String(this._attrs.get(e)):void 0}hasAttribute(e,t){return this._attrs.has(e)?t!==void 0?yi(this.name,e)||nn(this.name,e)?this._attrs.get(e).has(t):this._attrs.get(e)===t:!0:!1}isSimilar(e){if(!(e instanceof mm))return!1;if(this===e)return!0;if(this.name!=e.name||this._attrs.size!==e._attrs.size)return!1;for(const[t,n]of this._attrs){const s=e._attrs.get(t);if(s===void 0)return!1;if(typeof n=="string"||typeof s=="string"){if(s!==n)return!1}else if(!n.isSimilar(s))return!1}return!0}hasClass(...e){for(const t of e)if(!this._classes||!this._classes.has(t))return!1;return!0}getClassNames(){const e=this._classes?this._classes.keys():[],t=e[Symbol.iterator]();return Object.assign(e,{next:t.next.bind(t)})}getStyle(e){return this._styles&&this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles&&this._styles.getNormalized(e)}getStyleNames(e){return this._styles?this._styles.getStyleNames(e):[]}hasStyle(...e){for(const t of e)if(!this._styles||!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new Mn(...e);let n=this.parent;for(;n&&!n.is("documentFragment");){if(t.match(n))return n;n=n.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=this._classes?this._classes.keys().sort().join(","):"",t=this._styles&&String(this._styles),n=Array.from(this._attrs).filter(([s])=>s!="style"&&s!="class").map(s=>`${s[0]}="${s[1]}"`).sort().join(" ");return this.name+(e==""?"":` class="${e}"`)+(t?` style="${t}"`:"")+(n==""?"":` ${n}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_clone(e=!1){const t=[];if(e)for(const s of this.getChildren())t.push(s._clone(e));const n=new this.constructor(this.document,this.name,this._attrs,t);return n._customProperties=new Map(this._customProperties),n.getFillerOffset=this.getFillerOffset,n._unsafeAttributesToRender=this._unsafeAttributesToRender,n}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this,{index:e});let n=0;const s=Lv(this.document,t);for(const r of s)r.parent!==null&&r._remove(),r.parent=this,r.document=this.document,this._children.splice(e,0,r),e++,n++;return n}_removeChildren(e,t=1){this._fireChange("children",this,{index:e});for(let n=e;n<e+t;n++)this._children[n].parent=null;return this._children.splice(e,t)}_setAttribute(e,t,n=!0){if(this._fireChange("attributes",this),yi(this.name,e)||nn(this.name,e)){let s=this._attrs.get(e);s||(s=yi(this.name,e)?new _n(this.document.stylesProcessor):new Ys,this._attrs.set(e,s)),n?s.setTo(String(t)):yi(this.name,e)?Array.isArray(t)?s.set(t[0],t[1]):s.set(t):s.set(typeof t=="string"?t.split(/\s+/):t)}else this._attrs.set(e,String(t))}_removeAttribute(e,t){if(this._fireChange("attributes",this),t!==void 0&&(yi(this.name,e)||nn(this.name,e))){const n=this._attrs.get(e);return n?(nn(this.name,e)&&typeof t=="string"&&(t=t.split(/\s+/)),n.remove(t),n.isEmpty?this._attrs.delete(e):!1):!1}return this._attrs.delete(e)}_addClass(e){this._setAttribute("class",e,!1)}_removeClass(e){this._removeAttribute("class",e)}_setStyle(e,t){typeof e!="string"?this._setAttribute("style",e,!1):this._setAttribute("style",[e,t],!1)}_removeStyle(e){this._removeAttribute("style",e)}_collectAttributesMatch(e,t,n){for(const[s,r,a]of e){let l=!1,c=!1;for(const[d,h]of this._attrs)if(!(n&&n.includes(d)||!ts(s,d)))if(l=!0,typeof h=="string"){if(ts(r,h))t.push([d]),c=!0;else if(!(s instanceof RegExp))return!1}else{const m=h._getTokensMatch(r,a||!0);if(m){c=!0;for(const g of m)t.push([d,g])}else if(!(s instanceof RegExp))return!1}if(!l||!c)return!1}return!0}_getConsumables(e,t){const n=[];if(e){const s=this._attrs.get(e);if(s!==void 0)if(typeof s=="string")n.push([e]);else for(const r of s._getConsumables(t))n.push([e,r])}else for(const[s,r]of this._attrs)if(typeof r=="string")n.push([s]);else for(const a of r._getConsumables())n.push([s,a]);return{name:!e,attributes:n}}_canMergeAttributesFrom(e){if(this.name!=e.name)return!1;for(const[t,n]of e._attrs){const s=this._attrs.get(t);if(s!==void 0){if(typeof s=="string"||typeof n=="string"){if(s!==n)return!1}else if(!s._canMergeFrom(n))return!1}}return!0}_mergeAttributesFrom(e){this._fireChange("attributes",this);for(const[t,n]of e._attrs){const s=this._attrs.get(t);s===void 0||typeof s=="string"||typeof n=="string"?this._setAttribute(t,n):s._mergeFrom(n)}}_canSubtractAttributesOf(e){if(this.name!=e.name)return!1;for(const[t,n]of e._attrs){const s=this._attrs.get(t);if(s===void 0)return!1;if(typeof s=="string"||typeof n=="string"){if(s!==n)return!1}else if(!s._isMatching(n))return!1}return!0}_subtractAttributesOf(e){this._fireChange("attributes",this);for(const[t,n]of e._attrs){const s=this._attrs.get(t);typeof s=="string"||typeof n=="string"?this._attrs.delete(t):(s.remove(n.keys()),s.isEmpty&&this._attrs.delete(t))}}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}_parseAttributes(e){const t=At(e);for(const[n,s]of t)if(s===null)t.delete(n);else if(yi(this.name,n)){const r=s instanceof _n?s._clone():new _n(this.document.stylesProcessor).setTo(String(s));t.set(n,r)}else if(nn(this.name,n)){const r=s instanceof Ys?s._clone():new Ys().setTo(String(s));t.set(n,r)}else typeof s!="string"&&t.set(n,String(s));return t}};It.prototype.is=function(o,i){return i?i===this.name&&(o==="element"||o==="view:element"):o==="element"||o==="view:element"||o==="node"||o==="view:node"};function Lv(o,i){if(typeof i=="string")return[new _e(o,i)];je(i)||(i=[i]);const e=[];for(const t of i)typeof t=="string"?e.push(new _e(o,t)):t instanceof Ct?e.push(new _e(o,t.data)):e.push(t);return e}function nn(o,i){return i=="class"||o=="a"&&i=="rel"}function yi(o,i){return i=="style"}class Bn extends It{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Tv}}Bn.prototype.is=function(o,i){return i?i===this.name&&(o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"):o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};function Tv(){const o=[...this.getChildren()],i=o[this.childCount-1];if(i&&i.is("element","br"))return this.childCount;for(const e of o)if(!e.is("uiElement"))return null;return this.childCount}class Is extends j(Bn){constructor(i,e,t,n){super(i,e,t,n),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("placeholder",void 0),this.bind("isReadOnly").to(i),this.bind("isFocused").to(i,"isFocused",s=>s&&i.selection.editableElement==this),this.listenTo(i.selection,"change",()=>{this.isFocused=i.isFocused&&i.selection.editableElement==this})}destroy(){this.stopListening()}}Is.prototype.is=function(o,i){return i?i===this.name&&(o==="editableElement"||o==="view:editableElement"||o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"):o==="editableElement"||o==="view:editableElement"||o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};const pc=Symbol("rootName");class gm extends Is{constructor(i,e){super(i,e),this.rootName="main"}get rootName(){return this.getCustomProperty(pc)}set rootName(i){this._setCustomProperty(pc,i)}set _name(i){this.name=i}}gm.prototype.is=function(o,i){return i?i===this.name&&(o==="rootElement"||o==="view:rootElement"||o==="editableElement"||o==="view:editableElement"||o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"):o==="rootElement"||o==="view:rootElement"||o==="editableElement"||o==="view:editableElement"||o==="containerElement"||o==="view:containerElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};let ii=class{constructor(i={}){u(this,"direction");u(this,"boundaries");u(this,"singleCharacters");u(this,"shallow");u(this,"ignoreElementEnd");u(this,"_position");u(this,"_boundaryStartParent");u(this,"_boundaryEndParent");if(!i.boundaries&&!i.startPosition)throw new w("view-tree-walker-no-start-position",null);if(i.direction&&i.direction!="forward"&&i.direction!="backward")throw new w("view-tree-walker-unknown-direction",i.startPosition,{direction:i.direction});this.boundaries=i.boundaries||null,i.startPosition?this._position=L._createAt(i.startPosition):this._position=L._createAt(i.boundaries[i.direction=="backward"?"end":"start"]),this.direction=i.direction||"forward",this.singleCharacters=!!i.singleCharacters,this.shallow=!!i.shallow,this.ignoreElementEnd=!!i.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}get position(){return this._position}skip(i){let e,t;do t=this.position,e=this.next();while(!e.done&&i(e.value));e.done||(this._position=t)}jumpTo(i){this._boundaryStartParent&&i.isBefore(this.boundaries.start)?i=this.boundaries.start:this._boundaryEndParent&&i.isAfter(this.boundaries.end)&&(i=this.boundaries.end),this._position=i.clone()}next(){return this.direction=="forward"?this._next():this._previous()}_next(){let i=this.position.clone();const e=this.position,t=i.parent;if(t.parent===null&&i.offset===t.childCount)return{done:!0,value:void 0};if(t===this._boundaryEndParent&&i.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let n;if(t&&t.is("view:$text")){if(i.isAtEnd)return this._position=L._createAfter(t),this._next();n=t.data[i.offset]}else n=t.getChild(i.offset);if(typeof n=="string"){let s;this.singleCharacters?s=1:s=(t===this._boundaryEndParent?this.boundaries.end.offset:t.data.length)-i.offset;const r=new Ct(t,i.offset,s);return i.offset+=s,this._position=i,this._formatReturnValue("text",r,e,i,s)}if(n&&n.is("view:element")){if(!this.shallow)i=new L(n,0);else{if(this.boundaries&&this.boundaries.end.isBefore(i))return{done:!0,value:void 0};i.offset++}return this._position=i,this._formatReturnValue("elementStart",n,e,i,1)}if(n&&n.is("view:$text")){if(this.singleCharacters)return i=new L(n,0),this._position=i,this._next();let s=n.data.length,r;return n==this._boundaryEndParent?(s=this.boundaries.end.offset,r=new Ct(n,0,s),i=L._createAfter(r)):(r=new Ct(n,0,n.data.length),i.offset++),this._position=i,this._formatReturnValue("text",r,e,i,s)}return i=L._createAfter(t),this._position=i,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",t,e,i)}_previous(){let i=this.position.clone();const e=this.position,t=i.parent;if(t.parent===null&&i.offset===0)return{done:!0,value:void 0};if(t==this._boundaryStartParent&&i.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let n;if(t.is("view:$text")){if(i.isAtStart)return this._position=L._createBefore(t),this._previous();n=t.data[i.offset-1]}else n=t.getChild(i.offset-1);if(typeof n=="string"){let s;if(this.singleCharacters)s=1;else{const a=t===this._boundaryStartParent?this.boundaries.start.offset:0;s=i.offset-a}i.offset-=s;const r=new Ct(t,i.offset,s);return this._position=i,this._formatReturnValue("text",r,e,i,s)}if(n&&n.is("view:element"))return this.shallow?(i.offset--,this._position=i,this._formatReturnValue("elementStart",n,e,i,1)):(i=new L(n,n.childCount),this._position=i,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",n,e,i));if(n&&n.is("view:$text")){if(this.singleCharacters)return i=new L(n,n.data.length),this._position=i,this._previous();let s=n.data.length,r;if(n==this._boundaryStartParent){const a=this.boundaries.start.offset;r=new Ct(n,a,n.data.length-a),s=r.data.length,i=L._createBefore(r)}else r=new Ct(n,0,n.data.length),i.offset--;return this._position=i,this._formatReturnValue("text",r,e,i,s)}return i=L._createBefore(t),this._position=i,this._formatReturnValue("elementStart",t,e,i,1)}_formatReturnValue(i,e,t,n,s){return e.is("view:$textProxy")&&(e.offsetInText+e.data.length==e.textNode.data.length&&(this.direction=="forward"&&!(this.boundaries&&this.boundaries.end.isEqual(this.position))?(n=L._createAfter(e.textNode),this._position=n):t=L._createAfter(e.textNode)),e.offsetInText===0&&(this.direction=="backward"&&!(this.boundaries&&this.boundaries.start.isEqual(this.position))?(n=L._createBefore(e.textNode),this._position=n):t=L._createBefore(e.textNode))),{done:!1,value:{type:i,item:e,previousPosition:t,nextPosition:n,length:s}}}},L=class yt extends ci{constructor(e,t){super();u(this,"parent");u(this,"offset");this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return this.offset===0}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof Is);)if(e.parent)e=e.parent;else return null;return e}getShiftedBy(e){const t=yt._createAt(this),n=t.offset+e;return t.offset=n<0?0:n,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const n=new ii(t);return n.skip(e),n.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),n=e.getAncestors();let s=0;for(;t[s]==n[s]&&t[s];)s++;return s===0?null:t[s-1]}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return this.compareWith(e)=="before"}isAfter(e){return this.compareWith(e)=="after"}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],n=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),n.push(e.offset);const s=Ee(t,n);switch(s){case"prefix":return"before";case"extension":return"after";default:return t[s]<n[s]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new ii(e)}clone(){return new yt(this.parent,this.offset)}static _createAt(e,t){if(e instanceof yt)return new this(e.parent,e.offset);{const n=e;if(t=="end")t=n.is("$text")?n.data.length:n.childCount;else{if(t=="before")return this._createBefore(n);if(t=="after")return this._createAfter(n);if(t!==0&&!t)throw new w("view-createpositionat-offset-required",n)}return new yt(n,t)}}static _createAfter(e){if(e.is("$textProxy"))return new yt(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new w("view-position-after-root",e,{root:e});return new yt(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new yt(e.textNode,e.offsetInText);if(!e.parent)throw new w("view-position-before-root",e,{root:e});return new yt(e.parent,e.index)}};L.prototype.is=function(o){return o==="position"||o==="view:position"};let V=class zt extends ci{constructor(e,t=null){super();u(this,"start");u(this,"end");this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new ii({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(ho,{direction:"backward"}),t=this.end.getLastMatchingPosition(ho);return e.parent.is("$text")&&e.isAtStart&&(e=L._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=L._createAfter(t.parent)),new zt(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(ho);if(e.isAfter(this.end)||e.isEqual(this.end))return new zt(e,e);let t=this.end.getLastMatchingPosition(ho,{direction:"backward"});const n=e.nodeAfter,s=t.nodeBefore;return n&&n.is("$text")&&(e=new L(n,0)),s&&s.is("$text")&&(t=new L(s,s.data.length)),new zt(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const n=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),s=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&s}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new zt(this.start,e.start)),this.containsPosition(e.end)&&t.push(new zt(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,n=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(n=e.end),new zt(t,n)}return null}getWalker(e={}){return e.boundaries=this,new ii(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new zt(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new ii(e);for(const n of t)yield n.item}*getPositions(e={}){e.boundaries=this;const t=new ii(e);yield t.position;for(const n of t)yield n.nextPosition}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,n,s){return new this(new L(e,t),new L(n,s))}static _createFromPositionAndShift(e,t){const n=e,s=e.getShiftedBy(t);return t>0?new this(n,s):new this(s,n)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(L._createBefore(e),t)}};V.prototype.is=function(o){return o==="range"||o==="view:range"};function ho(o){return!!(o.item.is("attributeElement")||o.item.is("uiElement"))}let Tt=class fm extends G(ci){constructor(...e){super();u(this,"_ranges");u(this,"_lastRangeBackward");u(this,"_isFake");u(this,"_fakeSelectionLabel");this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return this.rangeCount===1&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)(!e||t.start.isBefore(e.start))&&(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)(!e||t.end.isAfter(e.end))&&(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake||this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel||this.rangeCount!=e.rangeCount)return!1;if(this.rangeCount===0)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let n=!1;for(const s of e._ranges)if(t.isEqual(s)){n=!0;break}if(!n)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=Vr(this.getRanges()),n=Vr(e.getRanges());if(t!=n)return!1;if(t==0)return!0;for(let s of this.getRanges()){s=s.getTrimmed();let r=!1;for(let a of e.getRanges())if(a=a.getTrimmed(),s.start.isEqual(a.start)&&s.end.isEqual(a.end)){r=!0;break}if(!r)return!1}return!0}getSelectedElement(){return this.rangeCount!==1?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,n,s]=e;if(typeof n=="object"&&(s=n,n=void 0),t===null)this._setRanges([]),this._setFakeOptions(s);else if(t instanceof fm||t instanceof Fa)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof V)this._setRanges([t],s&&s.backward),this._setFakeOptions(s);else if(t instanceof L)this._setRanges([new V(t)]),this._setFakeOptions(s);else if(t instanceof di){const r=!!s&&!!s.backward;let a;if(n===void 0)throw new w("view-selection-setto-required-second-parameter",this);n=="in"?a=V._createIn(t):n=="on"?a=V._createOn(t):a=new V(L._createAt(t,n)),this._setRanges([a],r),this._setFakeOptions(s)}else if(je(t))this._setRanges(t,s&&s.backward),this._setFakeOptions(s);else throw new w("view-selection-setto-not-selectable",this);this.fire("change")}setFocus(e,t){if(this.anchor===null)throw new w("view-selection-setfocus-no-ranges",this);const n=L._createAt(e,t);if(n.compareWith(this.focus)=="same")return;const s=this.anchor;this._ranges.pop(),n.compareWith(s)=="before"?this._addRange(new V(n,s),!0):this._addRange(new V(s,n)),this.fire("change")}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const n of e)this._addRange(n);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof V))throw new w("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new w("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new V(e.start,e.end))}};Tt.prototype.is=function(o){return o==="selection"||o==="view:selection"};let Fa=class extends G(ci){constructor(...e){super();u(this,"_selection");this._selection=new Tt,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}};Fa.prototype.is=function(o){return o==="selection"||o=="documentSelection"||o=="view:selection"||o=="view:documentSelection"};class ui extends xt{constructor(e,t,n){super(e,t);u(this,"startRange");u(this,"_eventPhase");u(this,"_currentTarget");this.startRange=n,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}const Xs=Symbol("bubbling contexts");function Or(o){class i extends o{fire(t,...n){try{const s=t instanceof xt?t:new xt(this,t),r=Qs(this);if(!r.size)return;if(on(s,"capturing",this),_i(r,"$capture",s,...n))return s.return;const a=s.startRange||this.selection.getFirstRange(),l=a?a.getContainedElement():null,c=l?!!pm(r,l):!1;let d=l||Ev(a);if(on(s,"atTarget",d),!c){if(_i(r,"$text",s,...n))return s.return;on(s,"bubbling",d)}for(;d;){if(d.is("rootElement")){if(_i(r,"$root",s,...n))return s.return}else if(d.is("element")&&_i(r,d.name,s,...n))return s.return;if(_i(r,d,s,...n))return s.return;d=d.parent,on(s,"bubbling",d)}return on(s,"bubbling",this),_i(r,"$document",s,...n),s.return}catch(s){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(s,this)}}_addEventListener(t,n,s){const r=Y(s.context||"$document"),a=Qs(this);for(const l of r){let c=a.get(l);c||(c=new(G()),a.set(l,c)),this.listenTo(c,t,n,s)}}_removeEventListener(t,n){const s=Qs(this);for(const r of s.values())this.stopListening(r,t,n)}}return i}{const o=Or(Object);["fire","_addEventListener","_removeEventListener"].forEach(i=>{Or[i]=o.prototype[i]})}function on(o,i,e){o instanceof ui&&(o._eventPhase=i,o._currentTarget=e)}function _i(o,i,e,...t){const n=typeof i=="string"?o.get(i):pm(o,i);return n?(n.fire(e,...t),e.stop.called):!1}function pm(o,i){for(const[e,t]of o)if(typeof e=="function"&&e(i))return t;return null}function Qs(o){return o[Xs]||(o[Xs]=new Map),o[Xs]}function Ev(o){if(!o)return null;const i=o.start.parent,e=o.end.parent,t=i.getPath(),n=e.getPath();return t.length>n.length?i:e}let wm=class extends Or(j()){constructor(e){super();u(this,"selection");u(this,"roots");u(this,"stylesProcessor");u(this,"_postFixers",new Set);this.selection=new Fa,this.roots=new Be({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1)}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.forEach(e=>e.destroy()),this.stopListening()}_callPostFixers(e){let t=!1;do for(const n of this._postFixers)if(t=n(e),t)break;while(t)}};const wc=10;class oi extends It{constructor(e,t,n,s){super(e,t,n,s);u(this,"_priority",wc);u(this,"_id",null);u(this,"_clonesGroup",null);this.getFillerOffset=xv}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(this.id===null)throw new w("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return this.id!==null||e.id!==null?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}_canMergeAttributesFrom(e){return this.id!==null||e.id!==null||this.priority!==e.priority?!1:super._canMergeAttributesFrom(e)}_canSubtractAttributesOf(e){return this.id!==null||e.id!==null||this.priority!==e.priority?!1:super._canSubtractAttributesOf(e)}}u(oi,"DEFAULT_PRIORITY",wc);oi.prototype.is=function(o,i){return i?i===this.name&&(o==="attributeElement"||o==="view:attributeElement"||o==="element"||o==="view:element"):o==="attributeElement"||o==="view:attributeElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};function xv(){if(er(this))return null;let o=this.parent;for(;o&&o.is("attributeElement");){if(er(o)>1)return null;o=o.parent}return!o||er(o)>1?null:this.childCount}function er(o){return Array.from(o.getChildren()).filter(i=>!i.is("uiElement")).length}class Ua extends It{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Sv}_insertChild(i,e){if(e&&(e instanceof di||Array.from(e).length>0))throw new w("view-emptyelement-cannot-add",[this,e]);return 0}}Ua.prototype.is=function(o,i){return i?i===this.name&&(o==="emptyElement"||o==="view:emptyElement"||o==="element"||o==="view:element"):o==="emptyElement"||o==="view:emptyElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};function Sv(){return null}class Ps extends It{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Iv}_insertChild(i,e){if(e&&(e instanceof di||Array.from(e).length>0))throw new w("view-uielement-cannot-add",[this,e]);return 0}render(i,e){return this.toDomElement(i)}toDomElement(i){const e=i.createElement(this.name);for(const t of this.getAttributeKeys())e.setAttribute(t,this.getAttribute(t));return e}}Ps.prototype.is=function(o,i){return i?i===this.name&&(o==="uiElement"||o==="view:uiElement"||o==="element"||o==="view:element"):o==="uiElement"||o==="view:uiElement"||o==="element"||o==="view:element"||o==="node"||o==="view:node"};function Av(o){o.document.on("arrowKey",(i,e)=>Pv(i,e,o.domConverter),{priority:"low"})}function Iv(){return null}function Pv(o,i,e){if(i.keyCode==z.arrowright){const t=i.domTarget.ownerDocument.defaultView.getSelection(),n=t.rangeCount==1&&t.getRangeAt(0).collapsed;if(n||i.shiftKey){const s=t.focusNode,r=t.focusOffset,a=e.domPositionToView(s,r);if(a===null)return;let l=!1;const c=a.getLastMatchingPosition(d=>(d.item.is("uiElement")&&(l=!0),!!(d.item.is("uiElement")||d.item.is("attributeElement"))));if(l){const d=e.viewPositionToDom(c);n?t.collapse(d.parent,d.offset):t.extend(d.parent,d.offset)}}}}class Ha extends It{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Rv}_insertChild(i,e){if(e&&(e instanceof di||Array.from(e).length>0))throw new w("view-rawelement-cannot-add",[this,e]);return 0}render(i,e){}}Ha.prototype.is=function(o,i){return i?i===this.name&&(o==="rawElement"||o==="view:rawElement"||o==="element"||o==="view:element"):o==="rawElement"||o==="view:rawElement"||o===this.name||o==="view:"+this.name||o==="element"||o==="view:element"||o==="node"||o==="view:node"};function Rv(){return null}let si=class extends G(ci){constructor(e,t){super();u(this,"document");u(this,"_children",[]);u(this,"_customProperties",new Map);this.document=e,t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return this.childCount===0}get root(){return this}get parent(){return null}get name(){}get getFillerOffset(){}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this,{index:e});let n=0;const s=Mv(this.document,t);for(const r of s)r.parent!==null&&r._remove(),r.parent=this,this._children.splice(e,0,r),e++,n++;return n}_removeChildren(e,t=1){this._fireChange("children",this,{index:e});for(let n=e;n<e+t;n++)this._children[n].parent=null;return this._children.splice(e,t)}_fireChange(e,t,n){this.fire(`change:${e}`,t,n)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}};si.prototype.is=function(o){return o==="documentFragment"||o==="view:documentFragment"};function Mv(o,i){return typeof i=="string"?[new _e(o,i)]:(je(i)||(i=[i]),Array.from(i).map(e=>typeof e=="string"?new _e(o,e):e instanceof Ct?new _e(o,e.data):e))}class bm{constructor(i){u(this,"document");u(this,"_cloneGroups",new Map);u(this,"_slotFactory",null);this.document=i}setSelection(...i){this.document.selection._setTo(...i)}setSelectionFocus(i,e){this.document.selection._setFocus(i,e)}createDocumentFragment(i){return new si(this.document,i)}createText(i){return new _e(this.document,i)}createAttributeElement(i,e,t={}){const n=new oi(this.document,i,e);return typeof t.priority=="number"&&(n._priority=t.priority),t.id&&(n._id=t.id),t.renderUnsafeAttributes&&n._unsafeAttributesToRender.push(...t.renderUnsafeAttributes),n}createContainerElement(i,e,t={},n={}){let s=null;gt(t)?n=t:s=t;const r=new Bn(this.document,i,e,s);return n.renderUnsafeAttributes&&r._unsafeAttributesToRender.push(...n.renderUnsafeAttributes),r}createEditableElement(i,e,t={}){const n=new Is(this.document,i,e);return t.renderUnsafeAttributes&&n._unsafeAttributesToRender.push(...t.renderUnsafeAttributes),n}createEmptyElement(i,e,t={}){const n=new Ua(this.document,i,e);return t.renderUnsafeAttributes&&n._unsafeAttributesToRender.push(...t.renderUnsafeAttributes),n}createUIElement(i,e,t){const n=new Ps(this.document,i,e);return t&&(n.render=t),n}createRawElement(i,e,t,n={}){const s=new Ha(this.document,i,e);return t&&(s.render=t),n.renderUnsafeAttributes&&s._unsafeAttributesToRender.push(...n.renderUnsafeAttributes),s}setAttribute(i,e,t,n){n!==void 0?n._setAttribute(i,e,t):t._setAttribute(i,e)}removeAttribute(i,e,t){t!==void 0?t._removeAttribute(i,e):e._removeAttribute(i)}addClass(i,e){e._addClass(i)}removeClass(i,e){e._removeClass(i)}setStyle(i,e,t){gt(i)&&t===void 0?e._setStyle(i):t._setStyle(i,e)}removeStyle(i,e){e._removeStyle(i)}setCustomProperty(i,e,t){t._setCustomProperty(i,e)}removeCustomProperty(i,e){return e._removeCustomProperty(i)}breakAttributes(i){return i instanceof L?this._breakAttributes(i):this._breakAttributesRange(i)}breakContainer(i){const e=i.parent;if(!e.is("containerElement"))throw new w("view-writer-break-non-container-element",this.document);if(!e.parent)throw new w("view-writer-break-root",this.document);if(i.isAtStart)return L._createBefore(e);if(!i.isAtEnd){const t=e._clone(!1);this.insert(L._createAfter(e),t);const n=new V(i,L._createAt(e,"end")),s=new L(t,0);this.move(n,s)}return L._createAfter(e)}mergeAttributes(i){const e=i.offset,t=i.parent;if(t.is("$text"))return i;if(t.is("attributeElement")&&t.childCount===0){const r=t.parent,a=t.index;return t._remove(),this._removeFromClonedElementsGroup(t),this.mergeAttributes(new L(r,a))}const n=t.getChild(e-1),s=t.getChild(e);if(!n||!s)return i;if(n.is("$text")&&s.is("$text"))return vc(n,s);if(n.is("attributeElement")&&s.is("attributeElement")&&n.isSimilar(s)){const r=n.childCount;return n._appendChild(s.getChildren()),s._remove(),this._removeFromClonedElementsGroup(s),this.mergeAttributes(new L(n,r))}return i}mergeContainers(i){const e=i.nodeBefore,t=i.nodeAfter;if(!e||!t||!e.is("containerElement")||!t.is("containerElement"))throw new w("view-writer-merge-containers-invalid-position",this.document);const n=e.getChild(e.childCount-1),s=n instanceof _e?L._createAt(n,"end"):L._createAt(e,"end");return this.move(V._createIn(t),L._createAt(e,"end")),this.remove(V._createOn(t)),s}insert(i,e){e=je(e)?[...e]:[e],vm(e,this.document);const t=e.reduce((r,a)=>{const l=r[r.length-1],c=!a.is("uiElement");return!l||l.breakAttributes!=c?r.push({breakAttributes:c,nodes:[a]}):l.nodes.push(a),r},[]);let n=null,s=i;for(const{nodes:r,breakAttributes:a}of t){const l=this._insertNodes(s,r,a);n||(n=l.start),s=l.end}return n?new V(n,s):new V(i)}remove(i){const e=i instanceof V?i:V._createOn(i);if(sn(e,this.document),e.isCollapsed)return new si(this.document);const{start:t,end:n}=this._breakAttributesRange(e,!0),s=t.parent,r=n.offset-t.offset,a=s._removeChildren(t.offset,r);for(const c of a)this._removeFromClonedElementsGroup(c);const l=this.mergeAttributes(t);return e.start=l,e.end=l.clone(),new si(this.document,a)}clear(i,e){sn(i,this.document);const t=i.getWalker({direction:"backward",ignoreElementEnd:!0});for(const n of t){const s=n.item;let r;if(s.is("element")&&e.isSimilar(s))r=V._createOn(s);else if(!n.nextPosition.isAfter(i.start)&&s.is("$textProxy")){const a=s.getAncestors().find(l=>l.is("element")&&e.isSimilar(l));a&&(r=V._createIn(a))}r&&(r.end.isAfter(i.end)&&(r.end=i.end),r.start.isBefore(i.start)&&(r.start=i.start),this.remove(r))}}move(i,e){let t;if(e.isAfter(i.end)){e=this._breakAttributes(e,!0);const n=e.parent,s=n.childCount;i=this._breakAttributesRange(i,!0),t=this.remove(i),e.offset+=n.childCount-s}else t=this.remove(i);return this.insert(e,t)}wrap(i,e){if(!(e instanceof oi))throw new w("view-writer-wrap-invalid-attribute",this.document);if(sn(i,this.document),i.isCollapsed){let t=i.start;t.parent.is("element")&&!Bv(t.parent)&&(t=t.getLastMatchingPosition(s=>s.item.is("uiElement"))),t=this._wrapPosition(t,e);const n=this.document.selection;return n.isCollapsed&&n.getFirstPosition().isEqual(i.start)&&this.setSelection(t),new V(t)}else return this._wrapRange(i,e)}unwrap(i,e){if(!(e instanceof oi))throw new w("view-writer-unwrap-invalid-attribute",this.document);if(sn(i,this.document),i.isCollapsed)return i;const{start:t,end:n}=this._breakAttributesRange(i,!0),s=t.parent,r=this._unwrapChildren(s,t.offset,n.offset,e),a=this.mergeAttributes(r.start);a.isEqual(r.start)||r.end.offset--;const l=this.mergeAttributes(r.end);return new V(a,l)}rename(i,e){const t=new Bn(this.document,i,e.getAttributes());return this.insert(L._createAfter(e),t),this.move(V._createIn(e),L._createAt(t,0)),this.remove(V._createOn(e)),t}clearClonedElementsGroup(i){this._cloneGroups.delete(i)}createPositionAt(i,e){return L._createAt(i,e)}createPositionAfter(i){return L._createAfter(i)}createPositionBefore(i){return L._createBefore(i)}createRange(i,e){return new V(i,e)}createRangeOn(i){return V._createOn(i)}createRangeIn(i){return V._createIn(i)}createSelection(...i){return new Tt(...i)}createSlot(i="children"){if(!this._slotFactory)throw new w("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,i)}_registerSlotFactory(i){this._slotFactory=i}_clearSlotFactory(){this._slotFactory=null}_insertNodes(i,e,t){let n;if(t?n=Fr(i):n=i.parent.is("$text")?i.parent.parent:i.parent,!n)throw new w("view-writer-invalid-position-container",this.document);let s;t?s=this._breakAttributes(i,!0):s=i.parent.is("$text")?tr(i):i;const r=n._insertChild(s.offset,e);for(const d of e)this._addToClonedElementsGroup(d);const a=s.getShiftedBy(r),l=this.mergeAttributes(s);l.isEqual(s)||a.offset--;const c=this.mergeAttributes(a);return new V(l,c)}_wrapChildren(i,e,t,n){let s=e;const r=[];for(;s<t;){const l=i.getChild(s),c=l.is("$text"),d=l.is("attributeElement");if(d&&l._canMergeAttributesFrom(n))l._mergeAttributesFrom(n),r.push(new L(i,s));else if(c||!d||Vv(n,l)){const h=n._clone();l._remove(),h._appendChild(l),i._insertChild(s,h),this._addToClonedElementsGroup(h),r.push(new L(i,s))}else this._wrapChildren(l,0,l.childCount,n);s++}let a=0;for(const l of r){if(l.offset-=a,l.offset==e)continue;this.mergeAttributes(l).isEqual(l)||(a++,t--)}return V._createFromParentsAndOffsets(i,e,i,t)}_unwrapChildren(i,e,t,n){let s=e;const r=[];for(;s<t;){const l=i.getChild(s);if(!l.is("attributeElement")){s++;continue}if(l.isSimilar(n)){const c=l.getChildren(),d=l.childCount;l._remove(),i._insertChild(s,c),this._removeFromClonedElementsGroup(l),r.push(new L(i,s),new L(i,s+d)),s+=d,t+=d-1;continue}if(l._canSubtractAttributesOf(n)){l._subtractAttributesOf(n),r.push(new L(i,s),new L(i,s+1)),s++;continue}this._unwrapChildren(l,0,l.childCount,n),s++}let a=0;for(const l of r){if(l.offset-=a,l.offset==e||l.offset==t)continue;this.mergeAttributes(l).isEqual(l)||(a++,t--)}return V._createFromParentsAndOffsets(i,e,i,t)}_wrapRange(i,e){const{start:t,end:n}=this._breakAttributesRange(i,!0),s=t.parent,r=this._wrapChildren(s,t.offset,n.offset,e),a=this.mergeAttributes(r.start);a.isEqual(r.start)||r.end.offset--;const l=this.mergeAttributes(r.end);return new V(a,l)}_wrapPosition(i,e){if(e.isSimilar(i.parent))return bc(i.clone());i.parent.is("$text")&&(i=tr(i));const t=this.createAttributeElement("_wrapPosition-fake-element");t._priority=Number.POSITIVE_INFINITY,t.isSimilar=()=>!1,i.parent._insertChild(i.offset,t);const n=new V(i,i.getShiftedBy(1));this.wrap(n,e);const s=new L(t.parent,t.index);t._remove();const r=s.nodeBefore,a=s.nodeAfter;return r&&r.is("view:$text")&&a&&a.is("view:$text")?vc(r,a):bc(s)}_breakAttributesRange(i,e=!1){const t=i.start,n=i.end;if(sn(i,this.document),i.isCollapsed){const l=this._breakAttributes(i.start,e);return new V(l,l)}const s=this._breakAttributes(n,e),r=s.parent.childCount,a=this._breakAttributes(t,e);return s.offset+=s.parent.childCount-r,new V(a,s)}_breakAttributes(i,e=!1){const t=i.offset,n=i.parent;if(i.parent.is("emptyElement"))throw new w("view-writer-cannot-break-empty-element",this.document);if(i.parent.is("uiElement"))throw new w("view-writer-cannot-break-ui-element",this.document);if(i.parent.is("rawElement"))throw new w("view-writer-cannot-break-raw-element",this.document);if(!e&&n.is("$text")&&Ur(n.parent)||Ur(n))return i.clone();if(n.is("$text"))return this._breakAttributes(tr(i),e);const s=n.childCount;if(t==s){const r=new L(n.parent,n.index+1);return this._breakAttributes(r,e)}else if(t===0){const r=new L(n.parent,n.index);return this._breakAttributes(r,e)}else{const r=n.index+1,a=n._clone();n.parent._insertChild(r,a),this._addToClonedElementsGroup(a);const l=n.childCount-t,c=n._removeChildren(t,l);a._appendChild(c);const d=new L(n.parent,r);return this._breakAttributes(d,e)}}_addToClonedElementsGroup(i){if(!i.root.is("rootElement"))return;if(i.is("element"))for(const n of i.getChildren())this._addToClonedElementsGroup(n);const e=i.id;if(!e)return;let t=this._cloneGroups.get(e);t||(t=new Set,this._cloneGroups.set(e,t)),t.add(i),i._clonesGroup=t}_removeFromClonedElementsGroup(i){if(i.is("element"))for(const n of i.getChildren())this._removeFromClonedElementsGroup(n);const e=i.id;if(!e)return;const t=this._cloneGroups.get(e);t&&t.delete(i)}}function Bv(o){return Array.from(o.getChildren()).some(i=>!i.is("uiElement"))}function Fr(o){let i=o.parent;for(;!Ur(i);){if(!i)return;i=i.parent}return i}function Vv(o,i){return o.priority<i.priority?!0:o.priority>i.priority?!1:o.getIdentity()<i.getIdentity()}function bc(o){const i=o.nodeBefore;if(i&&i.is("$text"))return new L(i,i.data.length);const e=o.nodeAfter;return e&&e.is("$text")?new L(e,0):o}function tr(o){if(o.offset==o.parent.data.length)return new L(o.parent.parent,o.parent.index+1);if(o.offset===0)return new L(o.parent.parent,o.parent.index);const i=o.parent.data.slice(o.offset);return o.parent._data=o.parent.data.slice(0,o.offset),o.parent.parent._insertChild(o.parent.index+1,new _e(o.root.document,i)),new L(o.parent.parent,o.parent.index+1)}function vc(o,i){const e=o.data.length;return o._data+=i.data,i._remove(),new L(o,e)}const zv=[_e,oi,Bn,Ua,Ha,Ps];function vm(o,i){for(const e of o){if(!zv.some(t=>e instanceof t))throw new w("view-writer-insert-invalid-node-type",i);e.is("$text")||vm(e.getChildren(),i)}}function Ur(o){return o&&(o.is("containerElement")||o.is("documentFragment"))}function sn(o,i){const e=Fr(o.start),t=Fr(o.end);if(!e||!t||e!==t)throw new w("view-writer-invalid-range-container",i)}const km=o=>o.createTextNode(" "),ym=o=>{const i=o.createElement("span");return i.dataset.ckeFiller="true",i.innerText=" ",i},_m=o=>{const i=o.createElement("br");return i.dataset.ckeFiller="true",i},Ue=7,Vn="⁠".repeat(Ue);function Pe(o){return typeof o=="string"?o.substr(0,Ue)===Vn:ne(o)&&o.data.substr(0,Ue)===Vn}function Ni(o){return o.data.length==Ue&&Pe(o)}function kc(o){const i=typeof o=="string"?o:o.data;return Pe(o)?i.slice(Ue):i}function Nv(o){o.document.on("arrowKey",Dv,{priority:"low"})}function Dv(o,i){if(i.keyCode==z.arrowleft){const e=i.domTarget.ownerDocument.defaultView.getSelection();if(e.rangeCount==1&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,n=e.getRangeAt(0).startOffset;Pe(t)&&n<=Ue&&e.collapse(t,0)}}}class Ov extends j(){constructor(e,t){super();u(this,"domDocuments",new Set);u(this,"domConverter");u(this,"markedAttributes",new Set);u(this,"markedChildren",new Set);u(this,"markedTexts",new Set);u(this,"selection");u(this,"_inlineFiller",null);u(this,"_fakeSelectionContainer",null);this.domConverter=e,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),I.isBlink&&!I.isAndroid&&this.on("change:isSelecting",()=>{this.isSelecting||this.render()})}markToSync(e,t){if(e==="text")this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if(e==="attributes")this.markedAttributes.add(t);else if(e==="children")this.markedChildren.add(t);else throw new w("view-renderer-unknown-type",this)}}render(){if(this.isComposing&&!I.isAndroid)return;let e=null;const t=I.isBlink&&!I.isAndroid?!this.isSelecting:!0;for(const n of this.markedChildren)this._updateChildrenMappings(n);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller),e&&e.parent.is("$text")&&(e=L._createBefore(e.parent)));for(const n of this.markedAttributes)this._updateAttrs(n);for(const n of this.markedChildren)this._updateChildren(n,{inlineFillerPosition:e});for(const n of this.markedTexts)!this.markedChildren.has(n.parent)&&this.domConverter.mapViewToDom(n.parent)&&this._updateText(n,{inlineFillerPosition:e});if(t)if(e){const n=this.domConverter.viewPositionToDom(e),s=n.parent.ownerDocument;Pe(n.parent)?this._inlineFiller=n.parent:this._inlineFiller=yc(s,n.parent,n.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.domConverter._clearTemporaryCustomProperties(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const n=Array.from(t.childNodes),s=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),r=this._diffNodeLists(n,s),a=this._findUpdateActions(r,n,s,Uv);if(a.indexOf("update")!==-1){const l={equal:0,insert:0,delete:0};for(const c of a)if(c==="update"){const d=l.equal+l.insert,h=l.equal+l.delete,m=e.getChild(d);m&&!m.is("uiElement")&&!m.is("rawElement")&&this._updateElementMappings(m,n[h]),rc(s[d]),l.equal++}else l[c]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?L._createBefore(e.parent):e}_isSelectionInInlineFiller(){if(this.selection.rangeCount!=1||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&ne(t.parent)&&Pe(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!Pe(e))throw new w("view-renderer-filler-was-lost",this);Ni(e)?e.remove():e.data=e.data.substr(Ue),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(this.selection.rangeCount!=1||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,n=e.offset;if(!this.domConverter.mapViewToDom(t.root)||!t.is("element")||!Fv(t))return!1;const s=e.nodeBefore,r=e.nodeAfter;return!(s instanceof _e||r instanceof _e||n===t.getFillerOffset()&&(!s||!s.is("element","br"))||I.isAndroid&&(s||r))}_updateText(e,t){const n=this.domConverter.findCorrespondingDomText(e);let r=this.domConverter.viewToDom(e).data;const a=t.inlineFillerPosition;a&&a.parent==e.parent&&a.offset==e.index&&(r=Vn+r),this._updateTextNode(n,r)}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(t){for(const n of Array.from(t.attributes)){const s=n.name;e.hasAttribute(s)||this.domConverter.removeDomElementAttribute(t,s)}for(const n of e.getAttributeKeys())this.domConverter.setDomElementAttribute(t,n,e.getAttribute(n),e)}}_updateChildren(e,t){const n=this.domConverter.mapViewToDom(e);if(!n)return;if(I.isAndroid){let m=null;for(const g of Array.from(n.childNodes)){if(m&&ne(m)&&ne(g)){n.normalize();break}m=g}}const s=t.inlineFillerPosition,r=n.childNodes,a=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));s&&s.parent===e&&yc(n.ownerDocument,a,s.offset);const l=this._diffNodeLists(r,a),c=this._findUpdateActions(l,r,a,Hv);let d=0;const h=new Set;for(const m of c)m==="delete"?(h.add(r[d]),rc(r[d])):(m==="equal"||m==="update")&&d++;d=0;for(const m of c)m==="insert"?(rm(n,d,a[d]),d++):m==="update"?(this._updateTextNode(r[d],a[d].data),d++):m==="equal"&&(this._markDescendantTextToSync(this.domConverter.domToView(a[d])),d++);for(const m of h)m.parentNode||this.domConverter.unbindDomElement(m)}_diffNodeLists(e,t){return e=jv(e,this._fakeSelectionContainer),Fi(e,t,Wv.bind(null,this.domConverter))}_findUpdateActions(e,t,n,s){if(e.indexOf("insert")===-1||e.indexOf("delete")===-1)return e;let r=[],a=[],l=[];const c={equal:0,insert:0,delete:0};for(const d of e)d==="insert"?l.push(n[c.equal+c.insert]):d==="delete"?a.push(t[c.equal+c.delete]):(r=r.concat(Fi(a,l,s).map(h=>h==="equal"?"update":h)),r.push("equal"),a=[],l=[]),c[d]++;return r.concat(Fi(a,l,s).map(d=>d==="equal"?"update":d))}_updateTextNode(e,t){const n=e.data;n!=t&&(I.isAndroid&&this.isComposing&&n.replace(/\u00A0/g," ")==t.replace(/\u00A0/g," ")||this._updateTextNodeInternal(e,t))}_updateTextNodeInternal(e,t){const n=qh(e.data,t);for(const s of n)s.type==="insert"?e.insertData(s.index,s.values.join("")):e.deleteData(s.index,s.howMany)}_markDescendantTextToSync(e){if(e){if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}}_updateSelection(){if(I.isBlink&&!I.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(this.selection.rangeCount===0){this._removeDomSelection(),this._removeFakeSelection();return}const e=this.domConverter.mapViewToDom(this.selection.editableElement);if(!this.isFocused||!e){!this.selection.isFake&&this._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected&&this._removeFakeSelection();return}this.selection.isFake?this._updateFakeSelection(e):this._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected?(this._removeFakeSelection(),this._updateDomSelection(e)):this.isComposing&&I.isAndroid||this._updateDomSelection(e)}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=Gv(t));const n=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(n,this.selection),!this._fakeSelectionNeedsUpdate(e))return;(!n.parentElement||n.parentElement!=e)&&e.appendChild(n),n.textContent=this.selection.fakeSelectionLabel||" ";const s=t.getSelection(),r=t.createRange();s.removeAllRanges(),r.selectNodeContents(n),s.addRange(r)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const n=this.domConverter.viewPositionToDom(this.selection.anchor),s=this.domConverter.viewPositionToDom(this.selection.focus);t.setBaseAndExtent(n.parent,n.offset,s.parent,s.offset),I.isGecko&&qv(s,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return!(t&&this.selection.isEqual(t)||!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,n=e.ownerDocument.getSelection();return!t||t.parentElement!==e||n.anchorNode!==t&&!t.contains(n.anchorNode)?!0:t.textContent!==this.selection.fakeSelectionLabel}_removeDomSelection(){for(const e of this.domDocuments){const t=e.getSelection();if(t.rangeCount){const n=e.activeElement,s=this.domConverter.mapDomToView(n);n&&s&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function Fv(o){if(o.getAttribute("contenteditable")=="false")return!1;const i=o.findAncestor(e=>e.hasAttribute("contenteditable"));return!i||i.getAttribute("contenteditable")=="true"}function yc(o,i,e){const t=i instanceof Array?i:i.childNodes,n=t[e];if(ne(n))return n.data=Vn+n.data,n;{const s=o.createTextNode(Vn);return Array.isArray(i)?t.splice(e,0,s):rm(i,e,s),s}}function Uv(o,i){return $t(o)&&$t(i)&&!ne(o)&&!ne(i)&&!yn(o)&&!yn(i)&&o.tagName.toLowerCase()===i.tagName.toLowerCase()}function Hv(o,i){return $t(o)&&$t(i)&&ne(o)&&ne(i)}function Wv(o,i,e){return i===e?!0:ne(i)&&ne(e)?i.data===e.data:!!(o.isBlockFiller(i)&&o.isBlockFiller(e))}function qv(o,i){let e=o.parent,t=o.offset;if(ne(e)&&Ni(e)&&(t=zi(e)+1,e=e.parentNode),e.nodeType!=Node.ELEMENT_NODE||t!=e.childNodes.length-1)return;const n=e.childNodes[t];n&&n.tagName=="BR"&&i.addRange(i.getRangeAt(0))}function jv(o,i){const e=Array.from(o);return e.length==0||!i||e[e.length-1]==i&&e.pop(),e}function Gv(o){const i=o.createElement("div");return i.className="ck-fake-selection-container",Object.assign(i.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),i.textContent=" ",i}const $v=_m(T.document),Kv=km(T.document),Zv=ym(T.document),mo="data-ck-unsafe-attribute-",_c="data-ck-unsafe-element";class Cm{constructor(i,{blockFillerMode:e,renderingMode:t="editing"}={}){u(this,"document");u(this,"renderingMode");u(this,"blockFillerMode");u(this,"preElements");u(this,"blockElements");u(this,"inlineObjectElements");u(this,"unsafeElements");u(this,"_domDocument");u(this,"_domToViewMapping",new WeakMap);u(this,"_viewToDomMapping",new WeakMap);u(this,"_fakeSelectionMapping",new WeakMap);u(this,"_rawContentElementMatcher",new Mn);u(this,"_inlineObjectElementMatcher",new Mn);u(this,"_elementsWithTemporaryCustomProperties",new Set);this.document=i,this.renderingMode=t,this.blockFillerMode=e||(t==="editing"?"br":"nbsp"),this.preElements=["pre","textarea"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument=this.renderingMode==="editing"?T.document:T.document.implementation.createHTMLDocument("")}get domDocument(){return this._domDocument}bindFakeSelection(i,e){this._fakeSelectionMapping.set(i,new Tt(e))}fakeSelectionToView(i){return this._fakeSelectionMapping.get(i)}bindElements(i,e){this._domToViewMapping.set(i,e),this._viewToDomMapping.set(e,i)}unbindDomElement(i){const e=this._domToViewMapping.get(i);if(e){this._domToViewMapping.delete(i),this._viewToDomMapping.delete(e);for(const t of i.children)this.unbindDomElement(t)}}bindDocumentFragments(i,e){this._domToViewMapping.set(i,e),this._viewToDomMapping.set(e,i)}shouldRenderAttribute(i,e,t){return this.renderingMode==="data"?!0:(i=i.toLowerCase(),i.startsWith("on")||i==="srcdoc"&&e.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i)?!1:t==="img"&&(i==="src"||i==="srcset")||t==="source"&&i==="srcset"?!0:!e.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))}setContentOf(i,e){if(this.renderingMode==="data"){i.innerHTML=e;return}const t=new DOMParser().parseFromString(e,"text/html"),n=t.createDocumentFragment(),s=t.body.childNodes;for(;s.length>0;)n.appendChild(s[0]);const r=t.createTreeWalker(n,NodeFilter.SHOW_ELEMENT),a=[];let l;for(;l=r.nextNode();)a.push(l);for(const c of a){for(const h of c.getAttributeNames())this.setDomElementAttribute(c,h,c.getAttribute(h));const d=c.tagName.toLowerCase();this._shouldRenameElement(d)&&(Ec(d),c.replaceWith(this._createReplacementDomElement(d,c)))}for(;i.firstChild;)i.firstChild.remove();i.append(n)}viewToDom(i,e={}){if(i.is("$text")){const t=this._processDataFromViewText(i);return this._domDocument.createTextNode(t)}else{const t=i;if(this.mapViewToDom(t))if(t.getCustomProperty("editingPipeline:doNotReuseOnce"))this._elementsWithTemporaryCustomProperties.add(t);else return this.mapViewToDom(t);let n;if(t.is("documentFragment"))n=this._domDocument.createDocumentFragment(),e.bind&&this.bindDocumentFragments(n,t);else{if(t.is("uiElement"))return t.name==="$comment"?n=this._domDocument.createComment(t.getCustomProperty("$rawContent")):n=t.render(this._domDocument,this),e.bind&&this.bindElements(n,t),n;this._shouldRenameElement(t.name)?(Ec(t.name),n=this._createReplacementDomElement(t.name)):t.hasAttribute("xmlns")?n=this._domDocument.createElementNS(t.getAttribute("xmlns"),t.name):n=this._domDocument.createElement(t.name),t.is("rawElement")&&t.render(n,this),e.bind&&this.bindElements(n,t);for(const s of t.getAttributeKeys())this.setDomElementAttribute(n,s,t.getAttribute(s),t)}if(e.withChildren!==!1)for(const s of this.viewChildrenToDom(t,e))n instanceof HTMLTemplateElement?n.content.appendChild(s):n.appendChild(s);return n}}setDomElementAttribute(i,e,t,n){const s=this.shouldRenderAttribute(e,t,i.tagName.toLowerCase())||n&&n.shouldRenderUnsafeAttribute(e);if(s||F("domconverter-unsafe-attribute-detected",{domElement:i,key:e,value:t}),!Ib(e)){F("domconverter-invalid-attribute-detected",{domElement:i,key:e,value:t});return}i.hasAttribute(e)&&!s?i.removeAttribute(e):i.hasAttribute(mo+e)&&s&&i.removeAttribute(mo+e),i.setAttribute(s?e:mo+e,t)}removeDomElementAttribute(i,e){e!=_c&&(i.removeAttribute(e),i.removeAttribute(mo+e))}*viewChildrenToDom(i,e={}){const t=i.getFillerOffset&&i.getFillerOffset();let n=0;for(const s of i.getChildren()){t===n&&(yield this._getBlockFiller());const r=s.is("element")&&!!s.getCustomProperty("dataPipeline:transparentRendering")&&!ue(s.getAttributes());if(r&&this.renderingMode=="data")if(s.is("rawElement")){const a=this._domDocument.createElement(s.name);s.render(a,this),yield*[...a.childNodes]}else yield*this.viewChildrenToDom(s,e);else r&&F("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:s}),yield this.viewToDom(s,e);n++}t===n&&(yield this._getBlockFiller())}viewRangeToDom(i){const e=this.viewPositionToDom(i.start),t=this.viewPositionToDom(i.end),n=this._domDocument.createRange();return n.setStart(e.parent,e.offset),n.setEnd(t.parent,t.offset),n}viewPositionToDom(i){const e=i.parent;if(e.is("$text")){const t=this.findCorrespondingDomText(e);if(!t)return null;let n=i.offset;return Pe(t)&&(n+=Ue),t.data&&n>t.data.length&&(n=t.data.length),{parent:t,offset:n}}else{let t,n,s;if(i.offset===0){if(t=this.mapViewToDom(e),!t)return null;s=t.childNodes[0]}else{const a=i.nodeBefore;if(n=a.is("$text")?this.findCorrespondingDomText(a):this.mapViewToDom(a),!n)return null;t=n.parentNode,s=n.nextSibling}if(ne(s)&&Pe(s))return{parent:s,offset:Ue};const r=n?zi(n)+1:0;return{parent:t,offset:r}}}domToView(i,e={}){const t=[],n=this._domToView(i,e,t),s=n.next().value;return!s||(n.next(),this._processDomInlineNodes(null,t,e),this.blockFillerMode=="br"&&Lc(s))||s.is("$text")&&s.data.length==0?null:s}*domChildrenToView(i,e={},t=[]){let n=[];i instanceof HTMLTemplateElement?n=[...i.content.childNodes]:n=[...i.childNodes];for(let s=0;s<n.length;s++){const r=n[s],a=this._domToView(r,e,t),l=a.next().value;l!==null&&(this._isBlockViewElement(l)&&this._processDomInlineNodes(i,t,e),this.blockFillerMode=="br"&&Lc(l)||(yield l),a.next())}this._processDomInlineNodes(i,t,e)}domSelectionToView(i){if(ek(i))return new Tt([]);if(i.rangeCount===1){let n=i.getRangeAt(0).startContainer;ne(n)&&(n=n.parentNode);const s=this.fakeSelectionToView(n);if(s)return s}const e=this.isDomSelectionBackward(i),t=[];for(let n=0;n<i.rangeCount;n++){const s=i.getRangeAt(n),r=this.domRangeToView(s);r&&t.push(r)}return new Tt(t,{backward:e})}domRangeToView(i){const e=this.domPositionToView(i.startContainer,i.startOffset),t=this.domPositionToView(i.endContainer,i.endOffset);return e&&t?new V(e,t):null}domPositionToView(i,e=0){if(this.isBlockFiller(i))return this.domPositionToView(i.parentNode,zi(i));const t=this.mapDomToView(i);if(t&&(t.is("uiElement")||t.is("rawElement")))return L._createBefore(t);if(ne(i)){if(Ni(i))return this.domPositionToView(i.parentNode,zi(i));const n=this.findCorrespondingViewText(i);let s=e;return n?(Pe(i)&&(s-=Ue,s=s<0?0:s),new L(n,s)):null}else{if(e===0){const n=this.mapDomToView(i);if(n)return new L(n,0)}else{const n=i.childNodes[e-1];if(ne(n)&&Ni(n)||n&&this.isBlockFiller(n))return this.domPositionToView(n.parentNode,zi(n));const s=ne(n)?this.findCorrespondingViewText(n):this.mapDomToView(n);if(s&&s.parent)return new L(s.parent,s.index+1)}return null}}mapDomToView(i){return this.getHostViewElement(i)||this._domToViewMapping.get(i)}findCorrespondingViewText(i){if(Ni(i))return null;const e=this.getHostViewElement(i);if(e)return e;const t=i.previousSibling;if(t){if(!this.isElement(t))return null;const n=this.mapDomToView(t);if(n){const s=n.nextSibling;return s instanceof _e?s:null}}else{const n=this.mapDomToView(i.parentNode);if(n){const s=n.getChild(0);return s instanceof _e?s:null}}return null}mapViewToDom(i){return this._viewToDomMapping.get(i)}findCorrespondingDomText(i){const e=i.previousSibling;return e&&this.mapViewToDom(e)?this.mapViewToDom(e).nextSibling:!e&&i.parent&&this.mapViewToDom(i.parent)?this.mapViewToDom(i.parent).childNodes[0]:null}focus(i){const e=this.mapViewToDom(i);if(!e||e.ownerDocument.activeElement===e)return;const{scrollX:t,scrollY:n}=T.window,s=[];Cc(e,r=>{const{scrollLeft:a,scrollTop:l}=r;s.push([a,l])}),e.focus(),Cc(e,r=>{const[a,l]=s.shift();r.scrollLeft=a,r.scrollTop=l}),T.window.scrollTo(t,n)}_clearDomSelection(){const i=this.mapViewToDom(this.document.selection.editableElement);if(!i)return;const e=i.ownerDocument.defaultView.getSelection(),t=this.domSelectionToView(e);t&&t.rangeCount>0&&e.removeAllRanges()}isElement(i){return i&&i.nodeType==Node.ELEMENT_NODE}isDocumentFragment(i){return i&&i.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(i){return this.blockFillerMode=="br"?i.isEqualNode($v):Tc(i,this.blockElements)?!0:i.isEqualNode(Zv)||Yv(i,this.blockElements)}isDomSelectionBackward(i){if(i.isCollapsed)return!1;const e=this._domDocument.createRange();try{e.setStart(i.anchorNode,i.anchorOffset),e.setEnd(i.focusNode,i.focusOffset)}catch{return!1}const t=e.collapsed;return e.detach(),t}getHostViewElement(i){const e=Eb(i);for(e.pop();e.length;){const t=e.pop(),n=this._domToViewMapping.get(t);if(n&&(n.is("uiElement")||n.is("rawElement")))return n}return null}isDomSelectionCorrect(i){return this._isDomSelectionPositionCorrect(i.anchorNode,i.anchorOffset)&&this._isDomSelectionPositionCorrect(i.focusNode,i.focusOffset)}registerRawContentMatcher(i){this._rawContentElementMatcher.add(i)}registerInlineObjectMatcher(i){this._inlineObjectElementMatcher.add(i)}_clearTemporaryCustomProperties(){for(const i of this._elementsWithTemporaryCustomProperties)i._removeCustomProperty("editingPipeline:doNotReuseOnce");this._elementsWithTemporaryCustomProperties.clear()}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return km(this._domDocument);case"markedNbsp":return ym(this._domDocument);case"br":return _m(this._domDocument)}}_isDomSelectionPositionCorrect(i,e){if(ne(i)&&Pe(i)&&e<Ue||this.isElement(i)&&Pe(i.childNodes[e]))return!1;const t=this.mapDomToView(i);return!(t&&(t.is("uiElement")||t.is("rawElement")))}*_domToView(i,e,t){if(this.blockFillerMode!="br"&&Tc(i,this.blockElements))return null;const n=this.getHostViewElement(i);if(n)return n;if(yn(i)&&e.skipComments)return null;if(ne(i)){if(Ni(i))return null;{const s=i.data;if(s==="")return null;const r=new _e(this.document,s);return t.push(r),r}}else{let s=this.mapDomToView(i);if(s)return this._isInlineObjectElement(s)&&t.push(s),s;if(this.isDocumentFragment(i))s=new si(this.document),e.bind&&this.bindDocumentFragments(i,s);else{s=this._createViewElement(i,e),e.bind&&this.bindElements(i,s);const a=i.attributes;if(a)for(let l=a.length,c=0;c<l;c++)s._setAttribute(a[c].name,a[c].value);if(this._isViewElementWithRawContent(s,e))return s._setCustomProperty("$rawContent",i.innerHTML),this._isBlockViewElement(s)||t.push(s),s;if(yn(i))return s._setCustomProperty("$rawContent",i.data),s}yield s;const r=[];if(e.withChildren!==!1)for(const a of this.domChildrenToView(i,e,r))s._appendChild(a);if(this._isInlineObjectElement(s))t.push(s),this._processDomInlineNodes(null,r,e);else for(const a of r)t.push(a)}}_processDomInlineNodes(i,e,t){if(!e.length||i&&!this.isDocumentFragment(i)&&!this._isBlockDomElement(i))return;let n=!1;for(let s=0;s<e.length;s++){const r=e[s];if(!r.is("$text")){n=!1;continue}let a,l=!1;if(this._isPreFormatted(r))a=kc(r.data);else{a=r.data.replace(/[ \n\t\r]{1,}/g," "),l=/[^\S\u00A0]/.test(a.charAt(a.length-1));const c=s>0?e[s-1]:null,d=s+1<e.length?e[s+1]:null,h=!c||c.is("element")&&c.name=="br"||n,m=d?!1:!Pe(r.data);t.withChildren!==!1&&(h&&(a=a.replace(/^ /,"")),m&&(a=a.replace(/ $/,""))),a=kc(a),this.blockFillerMode!="br"&&r.parent&&(Qv(r.parent,a)?(a="",r.parent.parent&&(r.parent.parent._setCustomProperty("$hasBlockFiller",!0),r.parent._remove())):Xv(r.parent,a,this.blockElements)&&(a="",r.parent._setCustomProperty("$hasBlockFiller",!0))),a=a.replace(/ \u00A0/g," ");const g=d&&d.is("element")&&d.name!="br",f=d&&d.is("$text")&&d.data.charAt(0)==" ";(/[ \u00A0]\u00A0$/.test(a)||!d||g||f)&&(a=a.replace(/\u00A0$/," ")),(h||c&&c.is("element")&&c.name!="br")&&(a=a.replace(/^\u00A0/," "))}a.length==0&&r.parent?(r._remove(),e.splice(s,1),s--):(r._data=a,n=l)}e.length=0}_processDataFromViewText(i){let e=i.data;if(this._isPreFormatted(i))return e;if(e.charAt(0)==" "){const t=this._getTouchingInlineViewNode(i,!1);(t&&t.is("$textProxy")&&this._nodeEndsWithSpace(t)||!t)&&(e=" "+e.substr(1))}if(e.charAt(e.length-1)==" "){const t=this._getTouchingInlineViewNode(i,!0),n=t&&t.is("$textProxy")&&t.data.charAt(0)==" ";(e.charAt(e.length-2)==" "||!t||n)&&(e=e.substr(0,e.length-1)+" ")}return e.replace(/ {2}/g,"  ")}_nodeEndsWithSpace(i){if(this._isPreFormatted(i))return!1;const e=this._processDataFromViewText(i);return e.charAt(e.length-1)==" "}_isPreFormatted(i){if(Jv(i,this.preElements))return!0;for(const e of i.getAncestors({parentFirst:!0}))if(!(!e.is("element")||!e.hasStyle("white-space")||e.getStyle("white-space")==="inherit"))return["pre","pre-wrap","break-spaces"].includes(e.getStyle("white-space"));return!1}_getTouchingInlineViewNode(i,e){const t=new ii({startPosition:e?L._createAfter(i):L._createBefore(i),direction:e?"forward":"backward"});for(const{item:n}of t){if(n.is("$textProxy"))return n;if(n.is("element")&&n.getCustomProperty("dataPipeline:transparentRendering"))continue;if(n.is("element","br"))return null;if(this._isInlineObjectElement(n))return n;if(n.is("containerElement"))return null}return null}_isBlockDomElement(i){return this.isElement(i)&&this.blockElements.includes(i.tagName.toLowerCase())}_isBlockViewElement(i){return i.is("element")&&this.blockElements.includes(i.name)}_isInlineObjectElement(i){return i.is("element")?i.name=="br"||this.inlineObjectElements.includes(i.name)||!!this._inlineObjectElementMatcher.match(i):!1}_createViewElement(i,e){if(yn(i))return new Ps(this.document,"$comment");const t=e.keepOriginalCase?i.tagName:i.tagName.toLowerCase();return new It(this.document,t)}_isViewElementWithRawContent(i,e){return e.withChildren!==!1&&i.is("element")&&!!this._rawContentElementMatcher.match(i)}_shouldRenameElement(i){const e=i.toLowerCase();return this.renderingMode==="editing"&&this.unsafeElements.includes(e)}_createReplacementDomElement(i,e){const t=this._domDocument.createElement("span");if(t.setAttribute(_c,i),e){for(;e.firstChild;)t.appendChild(e.firstChild);for(const n of e.getAttributeNames())t.setAttribute(n,e.getAttribute(n))}return t}}function Jv(o,i){return o.getAncestors().some(e=>e.is("element")&&i.includes(e.name))}function Cc(o,i){let e=o;for(;e;)i(e),e=e.parentElement}function Yv(o,i){return o.isEqualNode(Kv)&&Lm(o,i)&&o.parentNode.childNodes.length===1}function Lm(o,i){const e=o.parentNode;return!!e&&!!e.tagName&&i.includes(e.tagName.toLowerCase())}function Xv(o,i,e){return i==" "&&o&&o.is("element")&&o.childCount==1&&e.includes(o.name)}function Qv(o,i){return i==" "&&o&&o.is("element","span")&&o.childCount==1&&o.hasAttribute("data-cke-filler")}function Lc(o){return o.is("element","br")&&o.hasAttribute("data-cke-filler")}function Tc(o,i){return o.tagName==="BR"&&Lm(o,i)&&o.parentNode.childNodes.length===1}function Ec(o){o==="script"&&F("domconverter-unsafe-script-element-detected"),o==="style"&&F("domconverter-unsafe-style-element-detected")}function ek(o){if(!I.isGecko||!o.rangeCount)return!1;const i=o.getRangeAt(0).startContainer;try{Object.prototype.toString.call(i)}catch{return!0}return!1}class bt extends Se(){constructor(e){super();u(this,"view");u(this,"document");u(this,"_isEnabled",!1);this.view=e,this.document=e.document}get isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&e.nodeType===3&&(e=e.parentNode),!e||e.nodeType!==1?!1:e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}class ri{constructor(i,e,t){u(this,"view");u(this,"document");u(this,"domEvent");u(this,"domTarget");this.view=i,this.document=i.document,this.domEvent=e,this.domTarget=e.target,Hh(this,t)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}class Rt extends bt{constructor(){super(...arguments);u(this,"useCapture",!1);u(this,"usePassive",!1)}observe(e){(typeof this.domEventType=="string"?[this.domEventType]:this.domEventType).forEach(n=>{this.listenTo(e,n,(s,r)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(r.target)&&this.onDomEvent(r)},{useCapture:this.useCapture,usePassive:this.usePassive})})}stopObserving(e){this.stopListening(e)}fire(e,t,n){this.isEnabled&&this.document.fire(e,new ri(this.view,t,n))}}class tk extends Rt{constructor(){super(...arguments);u(this,"domEventType",["keydown","keyup"])}onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return Wi(this)}};this.fire(e.type,e,t)}}class ik extends bt{constructor(e){super(e);u(this,"_fireSelectionChangeDoneDebounced");this._fireSelectionChangeDoneDebounced=at(t=>{this.document.fire("selectionChangeDone",t)},200)}observe(){const e=this.document;e.on("arrowKey",(t,n)=>{e.selection.isFake&&this.isEnabled&&n.preventDefault()},{context:"$capture"}),e.on("arrowKey",(t,n)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(n.keyCode)},{priority:"lowest"})}stopObserving(){}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,n=new Tt(t.getRanges(),{backward:t.isBackward,fake:!1});(e==z.arrowleft||e==z.arrowup)&&n.setTo(n.getFirstPosition()),(e==z.arrowright||e==z.arrowdown)&&n.setTo(n.getLastPosition());const s={oldSelection:t,newSelection:n,domSelection:null};this.document.fire("selectionChange",s),this._fireSelectionChangeDoneDebounced(s)}}let Tm=class extends bt{constructor(e){super(e);u(this,"domConverter");u(this,"_config");u(this,"_domElements");u(this,"_mutationObserver");this._config={childList:!0,characterData:!0,subtree:!0},this.domConverter=e.domConverter,this._domElements=new Set,this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.add(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}stopObserving(e){if(this._domElements.delete(e),this.isEnabled){this._mutationObserver.disconnect();for(const t of this._domElements)this._mutationObserver.observe(t,this._config)}}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(e.length===0)return;const t=this.domConverter,n=new Set,s=new Set;for(const a of e){const l=t.mapDomToView(a.target);l&&(l.is("uiElement")||l.is("rawElement")||a.type==="childList"&&!this._isBogusBrMutation(a)&&s.add(l))}for(const a of e){const l=t.mapDomToView(a.target);if(!(l&&(l.is("uiElement")||l.is("rawElement")))&&a.type==="characterData"){const c=t.findCorrespondingViewText(a.target);c&&!s.has(c.parent)?n.add(c):!c&&Pe(a.target)&&s.add(t.mapDomToView(a.target.parentNode))}}const r=[];for(const a of n)r.push({type:"text",node:a});for(const a of s){const l=t.mapViewToDom(a),c=Array.from(a.getChildren()),d=Array.from(t.domChildrenToView(l,{withChildren:!1}));Pr(c,d,nk)||r.push({type:"children",node:a})}r.length&&this.document.fire("mutations",{mutations:r})}_isBogusBrMutation(e){let t=null;return e.nextSibling===null&&e.removedNodes.length===0&&e.addedNodes.length==1&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}};function nk(o,i){if(!Array.isArray(o))return o===i?!0:o.is("$text")&&i.is("$text")?o.data===i.data:!1}class is extends Rt{constructor(e){super(e);u(this,"_renderTimeoutId",null);u(this,"_isFocusChanging",!1);u(this,"domEventType",["focus","blur"]);this.useCapture=!0;const t=this.document;t.on("focus",()=>this._handleFocus()),t.on("blur",(n,s)=>this._handleBlur(s)),t.on("beforeinput",()=>{t.isFocused||this._handleFocus()},{priority:"highest"})}flush(){this._isFocusChanging&&(this._isFocusChanging=!1,this.document.isFocused=!0)}onDomEvent(e){this.fire(e.type,e)}destroy(){this._clearTimeout(),super.destroy()}_handleFocus(){this._clearTimeout(),this._isFocusChanging=!0,this._renderTimeoutId=setTimeout(()=>{this._renderTimeoutId=null,this.flush(),this.view.change(()=>{})},50)}_handleBlur(e){const t=this.document.selection.editableElement;(t===null||t===e.target)&&(this.document.isFocused=!1,this._isFocusChanging=!1,this.view.change(()=>{}))}_clearTimeout(){this._renderTimeoutId&&(clearTimeout(this._renderTimeoutId),this._renderTimeoutId=null)}}class ok extends bt{constructor(e){super(e);u(this,"mutationObserver");u(this,"focusObserver");u(this,"selection");u(this,"domConverter");u(this,"_documents",new WeakSet);u(this,"_fireSelectionChangeDoneDebounced");u(this,"_clearInfiniteLoopInterval");u(this,"_documentIsSelectingInactivityTimeoutDebounced");u(this,"_loopbackCounter",0);u(this,"_pendingSelectionChange",new Set);this.mutationObserver=e.getObserver(Tm),this.focusObserver=e.getObserver(is),this.selection=this.document.selection,this.domConverter=e.domConverter,this._fireSelectionChangeDoneDebounced=at(t=>{this.document.fire("selectionChangeDone",t)},200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._documentIsSelectingInactivityTimeoutDebounced=at(()=>this.document.isSelecting=!1,5e3),this.view.document.on("change:isFocused",(t,n,s)=>{if(s&&this._pendingSelectionChange.size){for(const r of Array.from(this._pendingSelectionChange))this._handleSelectionChange(r);this._pendingSelectionChange.clear()}})}observe(e){const t=e.ownerDocument,n=()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()},s=()=>{this.document.isSelecting&&(this._handleSelectionChange(t),this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel())};this.listenTo(e,"selectstart",n,{priority:"highest"}),this.listenTo(e,"keydown",s,{priority:"highest",useCapture:!0}),this.listenTo(e,"keyup",s,{priority:"highest",useCapture:!0}),!this._documents.has(t)&&(this.listenTo(t,"mouseup",s,{priority:"highest",useCapture:!0}),this.listenTo(t,"selectionchange",()=>{this.document.isComposing&&!I.isAndroid||(this._handleSelectionChange(t),this._documentIsSelectingInactivityTimeoutDebounced())}),this.listenTo(this.view.document,"compositionstart",()=>{this._handleSelectionChange(t)},{priority:"lowest"}),this._documents.add(t))}stopObserving(e){this.stopListening(e)}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_reportInfiniteLoop(){}_handleSelectionChange(e){if(!this.isEnabled)return;const t=e.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(t.anchorNode))return;this.mutationObserver.flush();const n=this.domConverter.domSelectionToView(t);if(n.rangeCount==0){this.view.hasDomSelection=!1;return}if(this.view.hasDomSelection=!0,this.focusObserver.flush(),!this.view.document.isFocused&&!this.view.document.isReadOnly){this._pendingSelectionChange.add(e);return}if(this._pendingSelectionChange.delete(e),!(this.selection.isEqual(n)&&this.domConverter.isDomSelectionCorrect(t))){if(++this._loopbackCounter>60){this._reportInfiniteLoop();return}if(this.selection.isSimilar(n))this.view.forceRender();else{const s={oldSelection:this.selection,newSelection:n,domSelection:t};this.document.fire("selectionChange",s),this._fireSelectionChangeDoneDebounced(s)}}}_clearInfiniteLoop(){this._loopbackCounter=0}}class sk extends Rt{constructor(e){super(e);u(this,"domEventType",["compositionstart","compositionupdate","compositionend"]);const t=this.document;t.on("compositionstart",()=>{t.isComposing=!0}),t.on("compositionend",()=>{t.isComposing=!1})}onDomEvent(e){this.fire(e.type,e,{data:e.data})}}/**
177
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
178
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
179
+ */class Em{constructor(i,e={}){u(this,"_files");u(this,"_native");this._files=e.cacheFiles?xc(i):null,this._native=i}get files(){return this._files||(this._files=xc(this._native)),this._files}get types(){return this._native.types}getData(i){return this._native.getData(i)}setData(i,e){this._native.setData(i,e)}set effectAllowed(i){this._native.effectAllowed=i}get effectAllowed(){return this._native.effectAllowed}set dropEffect(i){this._native.dropEffect=i}get dropEffect(){return this._native.dropEffect}setDragImage(i,e,t){this._native.setDragImage(i,e,t)}get isCanceled(){return this._native.dropEffect=="none"||!!this._native.mozUserCancelled}}function xc(o){const i=Array.from(o.files||[]),e=Array.from(o.items||[]);return i.length?i:e.filter(t=>t.kind==="file").map(t=>t.getAsFile())}class rk extends Rt{constructor(){super(...arguments);u(this,"domEventType","beforeinput")}onDomEvent(e){const t=e.getTargetRanges(),n=this.view,s=n.document;let r=null,a=null,l=[];if(e.dataTransfer&&(r=new Em(e.dataTransfer)),e.data!==null?a=e.data:r&&(a=r.getData("text/plain")),s.selection.isFake)l=Array.from(s.selection.getRanges()),e.preventDefault();else if(t.length)l=t.map(c=>{let d=n.domConverter.domPositionToView(c.startContainer,c.startOffset);const h=n.domConverter.domPositionToView(c.endContainer,c.endOffset);if(d&&Pe(c.startContainer)&&c.startOffset<Ue){e.preventDefault();let m=Ue-c.startOffset;d=d.getLastMatchingPosition(g=>!!(g.item.is("attributeElement")||g.item.is("uiElement")||g.item.is("$textProxy")&&m--),{direction:"backward",singleCharacters:!0})}if(ak(c.endContainer,c.endOffset)&&e.preventDefault(),d)return n.createRange(d,h);if(h)return n.createRange(h)}).filter(c=>!!c);else if(I.isAndroid){const c=e.target.ownerDocument.defaultView.getSelection();l=Array.from(n.domConverter.domSelectionToView(c).getRanges())}if(I.isAndroid&&e.inputType=="insertCompositionText"&&a&&a.endsWith(`
180
+ `)){this.fire(e.type,e,{inputType:"insertParagraph",targetRanges:[n.createRange(l[0].end)]});return}if(["insertText","insertReplacementText"].includes(e.inputType)&&a&&a.includes(`
181
+ `)){const c=a.split(/\n{1,2}/g);let d=l;e.preventDefault();for(let h=0;h<c.length;h++){const m=c[h];m!=""&&(this.fire(e.type,e,{data:m,dataTransfer:r,targetRanges:d,inputType:e.inputType,isComposing:e.isComposing}),d=[s.selection.getFirstRange()]),h+1<c.length&&(this.fire(e.type,e,{inputType:"insertParagraph",targetRanges:d}),d=[s.selection.getFirstRange()])}return}this.fire(e.type,e,{data:a,dataTransfer:r,targetRanges:l,inputType:e.inputType,isComposing:e.isComposing})}}function ak(o,i){for(;o.parentNode;){if(ne(o)){if(i!=o.data.length)return!1}else if(i!=o.childNodes.length)return!1;if(i=zi(o)+1,o=o.parentNode,i<o.childNodes.length&&Pe(o.childNodes[i]))return!0}return!1}class lk extends bt{constructor(i){super(i),this.document.on("keydown",(e,t)=>{if(this.isEnabled&&Fb(t.keyCode)){const n=new ui(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(n,t),n.stop.called&&e.stop()}})}observe(){}stopObserving(){}}class ck extends bt{constructor(i){super(i);const e=this.document;e.on("keydown",(t,n)=>{if(!this.isEnabled||n.keyCode!=z.tab||n.ctrlKey)return;const s=new ui(e,"tab",e.selection.getFirstRange());e.fire(s,n),s.stop.called&&t.stop()})}observe(){}stopObserving(){}}let dk=class extends j(){constructor(e){super();u(this,"document");u(this,"domConverter");u(this,"domRoots",new Map);u(this,"_renderer");u(this,"_initialDomRootAttributes",new WeakMap);u(this,"_observers",new Map);u(this,"_writer");u(this,"_ongoingChange",!1);u(this,"_postFixersInProgress",!1);u(this,"_renderingDisabled",!1);u(this,"_hasChangedSinceTheLastRendering",!1);this.document=new wm(e),this.domConverter=new Cm(this.document),this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Ov(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting","isComposing").to(this.document,"isFocused","isSelecting","isComposing"),this._writer=new bm(this.document),this.addObserver(Tm),this.addObserver(is),this.addObserver(ok),this.addObserver(tk),this.addObserver(ik),this.addObserver(sk),this.addObserver(lk),this.addObserver(rk),this.addObserver(ck),Nv(this),Av(this),this.on("render",()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1}),this.listenTo(this.document.selection,"change",()=>{this._hasChangedSinceTheLastRendering=!0}),this.listenTo(this.document,"change:isFocused",()=>{this._hasChangedSinceTheLastRendering=!0}),I.isiOS&&this.listenTo(this.document,"blur",(t,n)=>{this.domConverter.mapDomToView(n.domEvent.relatedTarget)||this.domConverter._clearDomSelection()}),this.listenTo(this.document,"mutations",(t,{mutations:n})=>{n.forEach(s=>this._renderer.markToSync(s.type,s.node))},{priority:"low"}),this.listenTo(this.document,"mutations",()=>{this.forceRender()},{priority:"lowest"})}attachDomRoot(e,t="main"){const n=this.document.getRoot(t);n._name=e.tagName.toLowerCase();const s={};for(const{name:a,value:l}of Array.from(e.attributes))s[a]=l,a==="class"?this._writer.addClass(l.split(" "),n):n.hasAttribute(a)||this._writer.setAttribute(a,l,n);this._initialDomRootAttributes.set(e,s);const r=()=>{this._writer.setAttribute("contenteditable",(!n.isReadOnly).toString(),n),n.isReadOnly?this._writer.addClass("ck-read-only",n):this._writer.removeClass("ck-read-only",n)};r(),this.domRoots.set(t,e),this.domConverter.bindElements(e,n),this._renderer.markToSync("children",n),this._renderer.markToSync("attributes",n),this._renderer.domDocuments.add(e.ownerDocument),n.on("change:children",(a,l)=>this._renderer.markToSync("children",l)),n.on("change:attributes",(a,l)=>this._renderer.markToSync("attributes",l)),n.on("change:text",(a,l)=>this._renderer.markToSync("text",l)),n.on("change:isReadOnly",()=>this.change(r)),n.on("change",()=>{this._hasChangedSinceTheLastRendering=!0});for(const a of this._observers.values())a.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach(({name:s})=>t.removeAttribute(s));const n=this._initialDomRootAttributes.get(t);for(const s in n)t.setAttribute(s,n[s]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t);for(const s of this._observers.values())s.stopObserving(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[n,s]of this.domRoots)t.observe(s,n);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection({alignToTop:e,forceScroll:t,viewportOffset:n=20,ancestorOffset:s=20}={}){const r=this.document.selection.getFirstRange();if(!r)return;const a=qe({alignToTop:e,forceScroll:t,viewportOffset:n,ancestorOffset:s});typeof n=="number"&&(n={top:n,bottom:n,left:n,right:n});const l={target:this.domConverter.viewRangeToDom(r),viewportOffset:n,ancestorOffset:s,alignToTop:e,forceScroll:t};this.fire("scrollToTheSelection",l,a),Mb(l)}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new w("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(t){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.getObserver(is).flush(),this.change(()=>{})}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return L._createAt(e,t)}createPositionAfter(e){return L._createAfter(e)}createPositionBefore(e){return L._createBefore(e)}createRange(e,t){return new V(e,t)}createRangeOn(e){return V._createOn(e)}createRangeIn(e){return V._createIn(e)}createSelection(...e){return new Tt(...e)}_disableRendering(e){this._renderingDisabled=e,e==!1&&this.change(()=>{})}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}};/**
182
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
183
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
184
+ */class Zt{is(){throw new Error("is() method is abstract")}}class rt extends Zt{constructor(e,t,n){super();u(this,"textNode");u(this,"data");u(this,"offsetInText");if(this.textNode=e,t<0||t>e.offsetSize)throw new w("model-textproxy-wrong-offsetintext",this);if(n<0||t+n>e.offsetSize)throw new w("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+n),this.offsetInText=t}get startOffset(){return this.textNode.startOffset!==null?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return this.startOffset!==null?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){const t=[];let n=e.includeSelf?this:this.parent;for(;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}rt.prototype.is=function(o){return o==="$textProxy"||o==="model:$textProxy"||o==="textProxy"||o==="model:textProxy"};class Lt{constructor(i){u(this,"direction");u(this,"boundaries");u(this,"singleCharacters");u(this,"shallow");u(this,"ignoreElementEnd");u(this,"_position");u(this,"_boundaryStartParent");u(this,"_boundaryEndParent");u(this,"_visitedParent");if(!i||!i.boundaries&&!i.startPosition)throw new w("model-tree-walker-no-start-position",null);const e=i.direction||"forward";if(e!="forward"&&e!="backward")throw new w("model-tree-walker-unknown-direction",i,{direction:e});this.direction=e,this.boundaries=i.boundaries||null,i.startPosition?this._position=i.startPosition.clone():this._position=C._createAt(this.boundaries[this.direction=="backward"?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!i.singleCharacters,this.shallow=!!i.shallow,this.ignoreElementEnd=!!i.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}get position(){return this._position}skip(i){let e,t,n,s;do n=this.position,s=this._visitedParent,{done:e,value:t}=this.next();while(!e&&i(t));e||(this._position=n,this._visitedParent=s)}jumpTo(i){this._boundaryStartParent&&i.isBefore(this.boundaries.start)?i=this.boundaries.start:this._boundaryEndParent&&i.isAfter(this.boundaries.end)&&(i=this.boundaries.end),this._position=i.clone(),this._visitedParent=i.parent}next(){return this.direction=="forward"?this._next():this._previous()}_next(){const i=this.position,e=this.position.clone(),t=this._visitedParent;if(t.parent===null&&e.offset===t.maxOffset)return{done:!0,value:void 0};if(t===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const n=Cn(e,t),s=n||xm(e,t,n);if(s&&s.is("model:element")){if(!this.shallow)e.path.push(0),this._visitedParent=s;else{if(this.boundaries&&this.boundaries.end.isBefore(e))return{done:!0,value:void 0};e.offset++}return this._position=e,Qt("elementStart",s,i,e,1)}if(s&&s.is("model:$text")){let r;if(this.singleCharacters)r=1;else{let c=s.endOffset;this._boundaryEndParent==t&&this.boundaries.end.offset<c&&(c=this.boundaries.end.offset),r=c-e.offset}const a=e.offset-s.startOffset,l=new rt(s,a,r);return e.offset+=r,this._position=e,Qt("text",l,i,e,r)}return e.path.pop(),e.offset++,this._position=e,this._visitedParent=t.parent,this.ignoreElementEnd?this._next():Qt("elementEnd",t,i,e)}_previous(){const i=this.position,e=this.position.clone(),t=this._visitedParent;if(t.parent===null&&e.offset===0)return{done:!0,value:void 0};if(t==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};const n=e.parent,s=Cn(e,n),r=s||Sm(e,n,s);if(r&&r.is("model:element"))return e.offset--,this.shallow?(this._position=e,Qt("elementStart",r,i,e,1)):(e.path.push(r.maxOffset),this._position=e,this._visitedParent=r,this.ignoreElementEnd?this._previous():Qt("elementEnd",r,i,e));if(r&&r.is("model:$text")){let a;if(this.singleCharacters)a=1;else{let d=r.startOffset;this._boundaryStartParent==t&&this.boundaries.start.offset>d&&(d=this.boundaries.start.offset),a=e.offset-d}const l=e.offset-r.startOffset,c=new rt(r,l-a,a);return e.offset-=a,this._position=e,Qt("text",c,i,e,a)}return e.path.pop(),this._position=e,this._visitedParent=t.parent,Qt("elementStart",t,i,e,1)}}function Qt(o,i,e,t,n){return{done:!1,value:{type:o,item:i,previousPosition:e,nextPosition:t,length:n}}}let C=class ht extends Zt{constructor(e,t,n="toNone"){super();u(this,"root");u(this,"path");u(this,"stickiness");if(!e.is("element")&&!e.is("documentFragment"))throw new w("model-position-root-invalid",e);if(!Array.isArray(t)||t.length===0)throw new w("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=n}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChildAtOffset(this.path[t]),!e)throw new w("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new w("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return Cn(this,this.parent)}get nodeAfter(){const e=this.parent;return xm(this,e,Cn(this,e))}get nodeBefore(){const e=this.parent;return Sm(this,e,Cn(this,e))}get isAtStart(){return this.offset===0}get isAtEnd(){return this.offset==this.parent.maxOffset}isValid(){if(this.offset<0)return!1;let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChildAtOffset(this.path[t]),!e)return!1;return this.offset<=e.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=Ee(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const n=new Lt(t);return n.skip(e),n.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=Ee(this.path,e.path),n=typeof t=="string"?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,n)}getCommonAncestor(e){const t=this.getAncestors(),n=e.getAncestors();let s=0;for(;t[s]==n[s]&&t[s];)s++;return s===0?null:t[s-1]}getShiftedBy(e){const t=this.clone(),n=t.offset+e;return t.offset=n<0?0:n,t}isAfter(e){return this.compareWith(e)=="after"}isBefore(e){return this.compareWith(e)=="before"}isEqual(e){return this.compareWith(e)=="same"}isTouching(e){if(this.root!==e.root)return!1;const t=Math.min(this.path.length,e.path.length);for(let n=0;n<t;n++){const s=this.path[n]-e.path[n];if(s<-1||s>1)return!1;if(s===1)return Sc(e,this,n);if(s===-1)return Sc(this,e,n)}return this.path.length===e.path.length?!0:this.path.length>e.path.length?Hr(this.path,t):Hr(e.path,t)}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),n=e.getParentPath();return Ee(t,n)=="same"}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=ht._createAt(this);break}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&this.stickiness=="toNext"?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange,n=t.containsPosition(this)||t.start.isEqual(this);let s;return n?(s=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(s=s._getTransformedByDeletion(e.deletionPosition,1))):this.isEqual(e.deletionPosition)?s=ht._createAt(e.deletionPosition):s=this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),s}_getTransformedByDeletion(e,t){const n=ht._createAt(this);if(this.root!=e.root)return n;if(Ee(e.getParentPath(),this.getParentPath())=="same"){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;n.offset-=t}}else if(Ee(e.getParentPath(),this.getParentPath())=="prefix"){const s=e.path.length-1;if(e.offset<=this.path[s]){if(e.offset+t>this.path[s])return null;n.path[s]-=t}}return n}_getTransformedByInsertion(e,t){const n=ht._createAt(this);if(this.root!=e.root)return n;if(Ee(e.getParentPath(),this.getParentPath())=="same")(e.offset<this.offset||e.offset==this.offset&&this.stickiness!="toPrevious")&&(n.offset+=t);else if(Ee(e.getParentPath(),this.getParentPath())=="prefix"){const s=e.path.length-1;e.offset<=this.path[s]&&(n.path[s]+=t)}return n}_getTransformedByMove(e,t,n){if(t=t._getTransformedByDeletion(e,n),e.isEqual(t))return ht._createAt(this);const s=this._getTransformedByDeletion(e,n);return s===null||e.isEqual(this)&&this.stickiness=="toNext"||e.getShiftedBy(n).isEqual(this)&&this.stickiness=="toPrevious"?this._getCombined(e,t):s._getTransformedByInsertion(t,n)}_getCombined(e,t){const n=e.path.length-1,s=ht._createAt(t);return s.stickiness=this.stickiness,s.offset=s.offset+this.path[n]-e.offset,s.path=[...s.path,...this.path.slice(n+1)],s}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,n="toNone"){if(e.is("model:position"))return new ht(e.root,e.path,e.stickiness);{const s=e;if(t=="end")t=s.maxOffset;else{if(t=="before")return this._createBefore(s,n);if(t=="after")return this._createAfter(s,n);if(t!==0&&!t)throw new w("model-createpositionat-offset-required",[this,e])}if(!s.is("element")&&!s.is("documentFragment"))throw new w("model-position-parent-incorrect",[this,e]);const r=s.getPath();return r.push(t),new this(s.root,r,n)}}static _createAfter(e,t){if(!e.parent)throw new w("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new w("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if(e.root==="$graveyard"){const n=new ht(t.graveyard,e.path);return n.stickiness=e.stickiness,n}if(!t.getRoot(e.root))throw new w("model-position-fromjson-no-root",t,{rootName:e.root});return new ht(t.getRoot(e.root),e.path,e.stickiness)}};C.prototype.is=function(o){return o==="position"||o==="model:position"};function Cn(o,i){const e=i.getChildAtOffset(o.offset);return e&&e.is("$text")&&e.startOffset<o.offset?e:null}function xm(o,i,e){return e!==null?null:i.getChildAtOffset(o.offset)}function Sm(o,i,e){return e!==null?null:i.getChild(i.offsetToIndex(o.offset)-1)}function Sc(o,i,e){return!(e+1===o.path.length||!Hr(i.path,e+1)||!uk(o,e+1))}function Hr(o,i){for(;i<o.length;){if(o[i]!==0)return!1;i++}return!0}function uk(o,i){let e=o.parent,t=o.path.length-1,n=0;for(;t>=i;){if(o.path[t]+n!==e.maxOffset)return!1;n=1,t--,e=e.parent}return!0}class v extends Zt{constructor(e,t){super();u(this,"start");u(this,"end");this.start=C._createAt(e),this.end=t?C._createAt(t):C._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new Lt({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return Ee(e,t)=="same"}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const n=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),s=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&s}containsItem(e){const t=C._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new v(this.start,e.start)),this.containsPosition(e.end)&&t.push(new v(e.end,this.end))):t.push(new v(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,n=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(n=e.end),new v(t,n)}return null}getJoined(e,t=!1){let n=this.isIntersecting(e);if(n||(this.start.isBefore(e.start)?n=t?this.end.isTouching(e.start):this.end.isEqual(e.start):n=t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!n)return null;let s=this.start,r=this.end;return e.start.isBefore(s)&&(s=e.start),e.end.isAfter(r)&&(r=e.end),new v(s,r)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,n=C._createAt(this.start);let s=n.parent;for(;n.path.length>t+1;){const r=s.maxOffset-n.offset;r!==0&&e.push(new v(n,n.getShiftedBy(r))),n.path=n.path.slice(0,-1),n.offset++,s=s.parent}for(;n.path.length<=this.end.path.length;){const r=this.end.path[n.path.length-1],a=r-n.offset;a!==0&&e.push(new v(n,n.getShiftedBy(a))),n.offset=r,n.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new Lt(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new Lt(e);for(const n of t)yield n.item}*getPositions(e={}){e.boundaries=this;const t=new Lt(e);yield t.position;for(const n of t)yield n.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new v(this.start,this.end)]}getTransformedByOperations(e){const t=[new v(this.start,this.end)];for(const n of e)for(let s=0;s<t.length;s++){const r=t[s].getTransformedByOperation(n);t.splice(s,1,...r),s+=r.length-1}for(let n=0;n<t.length;n++){const s=t[n];for(let r=n+1;r<t.length;r++){const a=t[r];(s.containsRange(a)||a.containsRange(s)||s.isEqual(a))&&t.splice(r,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const n=e.sourcePosition,s=e.howMany,r=e.targetPosition;return this._getTransformedByMove(n,r,s,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let n=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(n=this.end.getShiftedBy(1)),t.root!=n.root&&(n=this.end.getShiftedBy(-1)),new v(t,n)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new v(this.start);let t=this.start._getTransformedByMergeOperation(e),n=this.end._getTransformedByMergeOperation(e);return t.root!=n.root&&(n=this.end.getShiftedBy(-1)),t.isAfter(n)?(e.sourcePosition.isBefore(e.targetPosition)?(t=C._createAt(n),t.offset=0):(e.deletionPosition.isEqual(t)||(n=e.deletionPosition),t=e.targetPosition),new v(t,n)):new v(t,n)}_getTransformedByInsertion(e,t,n=!1){if(n&&this.containsPosition(e))return[new v(this.start,e),new v(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const s=new v(this.start,this.end);return s.start=s.start._getTransformedByInsertion(e,t),s.end=s.end._getTransformedByInsertion(e,t),[s]}}_getTransformedByMove(e,t,n,s=!1){if(this.isCollapsed){const m=this.start._getTransformedByMove(e,t,n);return[new v(m)]}const r=v._createFromPositionAndShift(e,n),a=t._getTransformedByDeletion(e,n);if(this.containsPosition(t)&&!s&&(r.containsPosition(this.start)||r.containsPosition(this.end))){const m=this.start._getTransformedByMove(e,t,n),g=this.end._getTransformedByMove(e,t,n);return[new v(m,g)]}let l;const c=this.getDifference(r);let d=null;const h=this.getIntersection(r);if(c.length==1?d=new v(c[0].start._getTransformedByDeletion(e,n),c[0].end._getTransformedByDeletion(e,n)):c.length==2&&(d=new v(this.start,this.end._getTransformedByDeletion(e,n))),d?l=d._getTransformedByInsertion(a,n,h!==null||s):l=[],h){const m=new v(h.start._getCombined(r.start,a),h.end._getCombined(r.start,a));l.length==2?l.splice(1,0,m):l.push(m)}return l}_getTransformedByDeletion(e,t){let n=this.start._getTransformedByDeletion(e,t),s=this.end._getTransformedByDeletion(e,t);return n==null&&s==null?null:(n==null&&(n=e),s==null&&(s=e),new v(n,s))}static _createFromPositionAndShift(e,t){const n=e,s=e.getShiftedBy(t);return t>0?new this(n,s):new this(s,n)}static _createIn(e){return new this(C._createAt(e,0),C._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(C._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(e.length===0)throw new w("range-create-from-ranges-empty-array",null);if(e.length==1)return e[0].clone();const t=e[0];e.sort((r,a)=>r.start.isAfter(a.start)?1:-1);const n=e.indexOf(t),s=new this(t.start,t.end);for(let r=n-1;r>=0&&e[r].end.isEqual(s.start);r--)s.start=C._createAt(e[r].start);for(let r=n+1;r<e.length&&e[r].start.isEqual(s.end);r++)s.end=C._createAt(e[r].end);return s}static fromJSON(e,t){return new this(C.fromJSON(e.start,t),C.fromJSON(e.end,t))}}v.prototype.is=function(o){return o==="range"||o==="model:range"};class Am extends G(){constructor(){super();u(this,"_modelToViewMapping",new WeakMap);u(this,"_viewToModelMapping",new WeakMap);u(this,"_viewToModelLengthCallbacks",new Map);u(this,"_markerNameToElements",new Map);u(this,"_elementToMarkerNames",new Map);u(this,"_deferredBindingRemovals",new Map);u(this,"_unboundMarkerNames",new Set);u(this,"_cache",new hk);this.on("modelToViewPosition",(e,t)=>{if(t.viewPosition)return;const n=this._modelToViewMapping.get(t.modelPosition.parent);if(!n)throw new w("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});t.viewPosition=this.findPositionIn(n,t.modelPosition.offset)},{priority:"low"}),this.on("viewToModelPosition",(e,t)=>{if(t.modelPosition)return;const n=this.findMappedViewAncestor(t.viewPosition),s=this._viewToModelMapping.get(n),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,n);t.modelPosition=C._createAt(s,r)},{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const n=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const s of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(s);t.defer?this._deferredBindingRemovals.set(e,e.root):(this._viewToModelMapping.delete(e)&&this._cache.stopTracking(e),this._modelToViewMapping.get(n)==e&&this._modelToViewMapping.delete(n))}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)&&this._cache.stopTracking(t)}bindElementToMarker(e,t){const n=this._markerNameToElements.get(t)||new Set;n.add(e);const s=this._elementToMarkerNames.get(e)||new Set;s.add(t),this._markerNameToElements.set(t,n),this._elementToMarkerNames.set(e,s)}unbindElementFromMarkerName(e,t){const n=this._markerNameToElements.get(t);n&&(n.delete(e),n.size==0&&this._markerNameToElements.delete(t));const s=this._elementToMarkerNames.get(e);s&&(s.delete(t),s.size==0&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new v(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new V(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={}){const n={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",n),n.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const n=new Set;for(const s of t)if(s.is("attributeElement"))for(const r of s.getElementsWithSameId())n.add(r);else n.add(s);return n}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,n){if(n!=e){const r=this._toModelOffset(e.parent,e.index,n),a=this._toModelOffset(e,t,e);return r+a}if(e.is("$text"))return t;let s=0;for(let r=0;r<t;r++)s+=this.getModelLength(e.getChild(r));return s}getModelLength(e){const t=[e];let n=0;for(;t.length>0;){const s=t.pop(),r=s.name&&this._viewToModelLengthCallbacks.size>0&&this._viewToModelLengthCallbacks.get(s.name);if(r)n+=r(s);else if(this._viewToModelMapping.has(s))n+=1;else if(s.is("$text"))n+=s.data.length;else{if(s.is("uiElement"))continue;for(const a of s.getChildren())t.push(a)}}return n}findPositionIn(e,t){if(t===0)return this._moveViewPositionToTextNode(new L(e,0));if(this._viewToModelLengthCallbacks.size==0&&this._viewToModelMapping.has(e)){const s=this._cache.getClosest(e,t);return this._findPositionStartingFrom(s.viewPosition,s.modelOffset,t,e,!0)}else return this._findPositionStartingFrom(new L(e,0),0,t,e,!1)}_findPositionStartingFrom(e,t,n,s,r){let a=e.parent,l=e.offset;if(a.is("$text"))return new L(a,n-t);let c,d=t,h=0;for(;d<n;){if(c=a.getChild(l),!c){if(a==s)throw new w("mapping-model-offset-not-found",this,{modelOffset:n,viewContainer:s});l=a.parent.getChildIndex(a)+1,a=a.parent,r&&this._cache.save(a,l,s,d);continue}r?h=this._getModelLengthAndCache(c,s,d):h=this.getModelLength(c),d+=h,l++}let m=new L(a,l);if(r)for(;m.isAtEnd&&m.parent!==s&&m.parent.parent;){const g=m.parent.parent,f=g.getChildIndex(m.parent)+1;this._cache.save(g,f,s,d),m=new L(g,f)}return d==n?this._moveViewPositionToTextNode(m):this._findPositionStartingFrom(new L(c,0),d-h,n,s,r)}_getModelLengthAndCache(e,t,n){let s=0;if(this._viewToModelMapping.has(e))s=1;else if(e.is("$text"))s=e.data.length;else if(!e.is("uiElement"))for(const r of e.getChildren())s+=this._getModelLengthAndCache(r,t,n+s);return this._cache.save(e.parent,e.index+1,t,n+s),s}_moveViewPositionToTextNode(e){const t=e.nodeBefore,n=e.nodeAfter;return t&&t.is("view:$text")?new L(t,t.data.length):n&&n.is("view:$text")?new L(n,0):e}}class hk extends G(){constructor(){super(...arguments);u(this,"_cachedMapping",new WeakMap);u(this,"_nodeToCacheListIndex",new WeakMap);u(this,"_invalidateOnChildrenChangeCallback",(e,t,n)=>{this._clearCacheInsideParent(t,n.index)});u(this,"_invalidateOnTextChangeCallback",(e,t)=>{this._clearCacheAfter(t)})}save(e,t,n,s){const r=this._cachedMapping.get(n),a=r.cacheMap.get(s);if(a){const h=e.getChild(t-1),m=a.viewPosition.nodeBefore?this._nodeToCacheListIndex.get(a.viewPosition.nodeBefore):0;this._nodeToCacheListIndex.set(h,m);return}const c={viewPosition:new L(e,t),modelOffset:s};r.maxModelOffset=s>r.maxModelOffset?s:r.maxModelOffset,r.cacheMap.set(s,c);let d=r.cacheList.length-1;for(;d>=0&&r.cacheList[d].modelOffset>s;)d--;if(r.cacheList.splice(d+1,0,c),t>0){const h=e.getChild(t-1);this._nodeToCacheListIndex.set(h,d+1)}}getClosest(e,t){const n=this._cachedMapping.get(e);let s;if(n)if(t>n.maxModelOffset)s=n.cacheList[n.cacheList.length-1];else{const r=n.cacheMap.get(t);r?s=r:s=this._findInCacheList(n.cacheList,t)}else s=this.startTracking(e);return{modelOffset:s.modelOffset,viewPosition:s.viewPosition.clone()}}startTracking(e){const n={viewPosition:new L(e,0),modelOffset:0},s={maxModelOffset:0,cacheList:[n],cacheMap:new Map([[0,n]])};return this._cachedMapping.set(e,s),e.on("change:children",this._invalidateOnChildrenChangeCallback),e.on("change:text",this._invalidateOnTextChangeCallback),n}stopTracking(e){e.off("change:children",this._invalidateOnChildrenChangeCallback),e.off("change:text",this._invalidateOnTextChangeCallback),this._cachedMapping.delete(e)}_clearCacheInsideParent(e,t){if(t==0)this._cachedMapping.has(e)?this._clearCacheAll(e):this._clearCacheInsideParent(e.parent,e.index);else{const n=e.getChild(t-1);this._clearCacheAfter(n)}}_clearCacheAll(e){const t=this._cachedMapping.get(e);t.maxModelOffset>0&&(t.maxModelOffset=0,t.cacheList.length=1,t.cacheMap.clear(),t.cacheMap.set(0,t.cacheList[0]))}_clearCacheAfter(e){const t=this._nodeToCacheListIndex.get(e);if(t===void 0){const s=e.parent;this._cachedMapping.has(s)||this._clearCacheInsideParent(s.parent,s.index);return}let n=e.parent;for(;!this._cachedMapping.has(n);)n=n.parent;this._clearCacheFromCacheIndex(n,t)}_clearCacheFromCacheIndex(e,t){t===0&&(t=1);const n=this._cachedMapping.get(e),s=n.cacheList[t-1];if(!s)return;n.maxModelOffset=s.modelOffset;const r=n.cacheList.splice(t);for(const a of r){n.cacheMap.delete(a.modelOffset);const l=a.viewPosition.nodeBefore;this._nodeToCacheListIndex.delete(l)}}_findInCacheList(e,t){let n=0,s=e.length-1,r=s-n>>1,a=e[r];for(;n<s;)a.modelOffset<t?n=r+1:s=r-1,r=n+(s-n>>1),a=e[r];return a.modelOffset<=t?a:e[r-1]}}class mk{constructor(){u(this,"_consumable",new Map);u(this,"_textProxyRegistry",new Map)}add(i,e){e=go(e),i instanceof rt&&(i=this._getSymbolForTextProxy(i)),this._consumable.has(i)||this._consumable.set(i,new Map),this._consumable.get(i).set(e,!0)}consume(i,e){return e=go(e),i instanceof rt&&(i=this._getSymbolForTextProxy(i)),this.test(i,e)?(this._consumable.get(i).set(e,!1),!0):!1}test(i,e){e=go(e),i instanceof rt&&(i=this._getSymbolForTextProxy(i));const t=this._consumable.get(i);if(t===void 0)return null;const n=t.get(e);return n===void 0?null:n}revert(i,e){e=go(e),i instanceof rt&&(i=this._getSymbolForTextProxy(i));const t=this.test(i,e);return t===!1?(this._consumable.get(i).set(e,!0),!0):t===!0?!1:null}verifyAllConsumed(i){const e=[];for(const[t,n]of this._consumable)for(const[s,r]of n){const a=s.split(":")[0];r&&i==a&&e.push({event:s,item:t.name||t.description})}if(e.length)throw new w("conversion-model-consumable-not-consumed",null,{items:e})}_getSymbolForTextProxy(i){let e=null;const t=this._textProxyRegistry.get(i.startOffset);if(t){const n=t.get(i.endOffset);n&&(e=n.get(i.parent))}return e||(e=this._addSymbolForTextProxy(i)),e}_addSymbolForTextProxy(i){const e=i.startOffset,t=i.endOffset,n=i.parent,s=Symbol("$textProxy:"+i.data);let r,a;return r=this._textProxyRegistry.get(e),r||(r=new Map,this._textProxyRegistry.set(e,r)),a=r.get(t),a||(a=new Map,r.set(t,a)),a.set(n,s),s}}function go(o){const i=o.split(":");return i[0]=="insert"?i[0]:i[0]=="addMarker"||i[0]=="removeMarker"?o:i.length>1?i[0]+":"+i[1]:i[0]}class Im extends G(){constructor(e){super();u(this,"_conversionApi");u(this,"_firedEventsMap");this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,n){const s=this._createConversionApi(n,e.getRefreshedItems());for(const a of e.getMarkersToRemove())this._convertMarkerRemove(a.name,a.range,s);const r=this._reduceChanges(e.getChanges());for(const a of r)a.type==="insert"?this._convertInsert(v._createFromPositionAndShift(a.position,a.length),s):a.type==="reinsert"?this._convertReinsert(v._createFromPositionAndShift(a.position,a.length),s):a.type==="remove"?this._convertRemove(a.position,a.length,a.name,s):this._convertAttribute(a.range,a.attributeKey,a.attributeOldValue,a.attributeNewValue,s);s.mapper.flushDeferredBindings();for(const a of s.mapper.flushUnboundMarkerNames()){const l=t.get(a).getRange();this._convertMarkerRemove(a,l,s),this._convertMarkerAdd(a,l,s)}for(const a of e.getMarkersToAdd())this._convertMarkerAdd(a.name,a.range,s);s.consumable.verifyAllConsumed("insert")}convert(e,t,n,s={}){const r=this._createConversionApi(n,void 0,s);this._convertInsert(e,r);for(const[a,l]of t)this._convertMarkerAdd(a,l,r);r.consumable.verifyAllConsumed("insert")}convertSelection(e,t,n){const s=this._createConversionApi(n);this.fire("cleanSelection",{selection:e},s);const r=e.getFirstPosition().root;if(!s.mapper.toViewElement(r))return;const a=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this._addConsumablesForSelection(s.consumable,e,a),this.fire("selection",{selection:e},s),!!e.isCollapsed){for(const l of a)if(s.consumable.test(e,"addMarker:"+l.name)){const c=l.getRange();if(!gk(e.getFirstPosition(),l,s.mapper))continue;const d={item:e,markerName:l.name,markerRange:c};this.fire(`addMarker:${l.name}`,d,s)}for(const l of e.getAttributeKeys())if(s.consumable.test(e,"attribute:"+l)){const c={item:e,range:e.getFirstRange(),attributeKey:l,attributeOldValue:null,attributeNewValue:e.getAttribute(l)};this.fire(`attribute:${l}:$text`,c,s)}}}_convertInsert(e,t,n={}){n.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,e);for(const s of e.getWalker({shallow:!0}))this._testAndFire("insert",Ac(s),t)}_convertRemove(e,t,n,s){this.fire(`remove:${n}`,{position:e,length:t},s)}_convertAttribute(e,t,n,s,r){this._addConsumablesForRange(r.consumable,e,`attribute:${t}`);for(const a of e){const l={item:a.item,range:v._createFromPositionAndShift(a.previousPosition,a.length),attributeKey:t,attributeOldValue:n,attributeNewValue:s};this._testAndFire(`attribute:${t}`,l,r)}}_convertReinsert(e,t){const n=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,n);for(const s of n.map(Ac))this._testAndFire("insert",{...s,reconversion:!0},t)}_convertMarkerAdd(e,t,n){if(t.root.rootName=="$graveyard")return;const s=`addMarker:${e}`;if(n.consumable.add(t,s),this.fire(s,{markerName:e,markerRange:t},n),!!n.consumable.consume(t,s)){this._addConsumablesForRange(n.consumable,t,s);for(const r of t.getItems()){if(!n.consumable.test(r,s))continue;const a={item:r,range:v._createOn(r),markerName:e,markerRange:t};this.fire(s,a,n)}}}_convertMarkerRemove(e,t,n){t.root.rootName!="$graveyard"&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},n)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const n of t){const s=n.item;if(e.test(s,"insert")===null){e.add(s,"insert");for(const r of s.getAttributeKeys())e.add(s,"attribute:"+r)}}return e}_addConsumablesForRange(e,t,n){for(const s of t.getItems())e.add(s,n);return e}_addConsumablesForSelection(e,t,n){e.add(t,"selection");for(const s of n)e.add(t,"addMarker:"+s.name);for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s);return e}_testAndFire(e,t,n){const s=fk(e,t),r=t.item.is("$textProxy")?n.consumable._getSymbolForTextProxy(t.item):t.item,a=this._firedEventsMap.get(n),l=a.get(r);if(!l)a.set(r,new Set([s]));else if(!l.has(s))l.add(s);else return;this.fire(s,t,n)}_testAndFireAddAttributes(e,t){const n={item:e,range:v._createOn(e)};for(const s of n.item.getAttributeKeys())n.attributeKey=s,n.attributeOldValue=null,n.attributeNewValue=n.item.getAttribute(s),this._testAndFire(`attribute:${s}`,n,t)}_createConversionApi(e,t=new Set,n={}){const s={...this._conversionApi,consumable:new mk,writer:e,options:n,convertItem:r=>this._convertInsert(v._createOn(r),s),convertChildren:r=>this._convertInsert(v._createIn(r),s,{doNotAddConsumables:!0}),convertAttributes:r=>this._testAndFireAddAttributes(r,s),canReuseView:r=>!t.has(s.mapper.toModelElement(r))};return this._firedEventsMap.set(s,new Map),s}}function gk(o,i,e){const t=i.getRange(),n=Array.from(o.getAncestors());return n.shift(),n.reverse(),!n.some(r=>{if(t.containsItem(r))return!!e.toViewElement(r).getCustomProperty("addHighlight")})}function fk(o,i){const e=i.item.is("element")?i.item.name:"$text";return`${o}:${e}`}function Ac(o){return{item:o.item,range:v._createFromPositionAndShift(o.previousPosition,o.length)}}let hi=class extends Zt{constructor(e){super();u(this,"parent",null);u(this,"_attrs");u(this,"_index",null);u(this,"_startOffset",null);this._attrs=At(e)}get document(){return null}get index(){return this._index}get startOffset(){return this._startOffset}get offsetSize(){return 1}get endOffset(){return this.startOffset===null?null:this.startOffset+this.offsetSize}get nextSibling(){const e=this.index;return e!==null&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return e!==null&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.parent===null?!1:this.root.isAttached()}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){const t=[];let n=e.includeSelf?this:this.parent;for(;n;)t[e.parentFirst?"push":"unshift"](n),n=n.parent;return t}getCommonAncestor(e,t={}){const n=this.getAncestors(t),s=e.getAncestors(t);let r=0;for(;n[r]==s[r]&&n[r];)r++;return r===0?null:n[r-1]}isBefore(e){if(this==e||this.root!==e.root)return!1;const t=this.getPath(),n=e.getPath(),s=Ee(t,n);switch(s){case"prefix":return!0;case"extension":return!1;default:return t[s]<n[s]}}isAfter(e){return this==e||this.root!==e.root?!1:!this.isBefore(e)}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce((t,n)=>(t[n[0]]=n[1],t),{})),e}_clone(e){return new this.constructor(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=At(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}};hi.prototype.is=function(o){return o==="node"||o==="model:node"};class Fe extends G(Zt){constructor(...e){super();u(this,"_lastRangeBackward",!1);u(this,"_attrs",new Map);u(this,"_ranges",[]);e.length&&this.setTo(...e)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return this._ranges.length===1?this._ranges[0].isCollapsed:!1}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(this.rangeCount===0)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let n=!1;for(const s of e._ranges)if(t.isEqual(s)){n=!0;break}if(!n)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new v(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)(!e||t.start.isBefore(e.start))&&(e=t);return e?new v(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)(!e||t.end.isAfter(e.end))&&(e=t);return e?new v(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(...e){let[t,n,s]=e;if(typeof n=="object"&&(s=n,n=void 0),t===null)this._setRanges([]);else if(t instanceof Fe)this._setRanges(t.getRanges(),t.isBackward);else if(t&&typeof t.getRanges=="function")this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof v)this._setRanges([t],!!s&&!!s.backward);else if(t instanceof C)this._setRanges([new v(t)]);else if(t instanceof hi){const r=!!s&&!!s.backward;let a;if(n=="in")a=v._createIn(t);else if(n=="on")a=v._createOn(t);else if(n!==void 0)a=new v(C._createAt(t,n));else throw new w("model-selection-setto-required-second-parameter",[this,t]);this._setRanges([a],r)}else if(je(t))this._setRanges(t,s&&!!s.backward);else throw new w("model-selection-setto-not-selectable",[this,t])}_setRanges(e,t=!1){const n=Array.from(e),s=n.some(r=>{if(!(r instanceof v))throw new w("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every(a=>!a.isEqual(r))});n.length===this._ranges.length&&!s||(this._replaceAllRanges(n),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(this.anchor===null)throw new w("model-selection-setfocus-no-ranges",[this,e]);const n=C._createAt(e,t);if(n.compareWith(this.focus)=="same")return;const s=this.anchor;this._ranges.length&&this._popRange(),n.compareWith(s)=="before"?(this._pushRange(new v(n,s)),this._lastRangeBackward=!0):(this._pushRange(new v(s,n)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return this.rangeCount!==1?null:this.getFirstRange().getContainedElement()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const n=Ic(t.start,e);wk(n,t)&&(yield n);const s=t.getWalker();for(const a of s){const l=a.item;a.type=="elementEnd"&&pk(l,e,t)?yield l:a.type=="elementStart"&&l.is("model:element")&&l.root.document.model.schema.isBlock(l)&&s.jumpTo(C._createAt(l,"end"))}const r=Ic(t.end,e);bk(r,t)&&(yield r)}}containsEntireContent(e=this.anchor.root){const t=C._createAt(e,0),n=C._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new v(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new w("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_replaceAllRanges(e){this._removeAllRanges();for(const t of e)this._pushRange(t)}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}Fe.prototype.is=function(o){return o==="selection"||o==="model:selection"};function Pm(o,i){return i.has(o)?!1:(i.add(o),o.root.document.model.schema.isBlock(o)&&!!o.parent)}function pk(o,i,e){return Pm(o,i)&&Wa(o,e)}function Ic(o,i){const t=o.parent.root.document.model.schema,n=o.parent.getAncestors({parentFirst:!0,includeSelf:!0});let s=!1;const r=n.find(a=>s?!1:(s=t.isLimit(a),!s&&Pm(a,i)));return n.forEach(a=>i.add(a)),r}function Wa(o,i){const e=vk(o);return e?!i.containsRange(v._createOn(e),!0):!0}function wk(o,i){return o?i.isCollapsed||o.isEmpty?!0:i.start.isTouching(C._createAt(o,o.maxOffset))?!1:Wa(o,i):!1}function bk(o,i){return o?i.isCollapsed||o.isEmpty?!0:i.end.isTouching(C._createAt(o,0))?!1:Wa(o,i):!1}function vk(o){const i=o.root.document.model.schema;let e=o.parent;for(;e;){if(i.isBlock(e))return e;e=e.parent}}class Je extends G(v){constructor(i,e){super(i,e),kk.call(this)}detach(){this.stopListening()}toRange(){return new v(this.start,this.end)}static fromRange(i){return new Je(i.start,i.end)}}Je.prototype.is=function(o){return o==="liveRange"||o==="model:liveRange"||o=="range"||o==="model:range"};function kk(){this.listenTo(this.root.document.model,"applyOperation",(o,i)=>{const e=i[0];e.isDocumentOperation&&yk.call(this,e)},{priority:"low"})}function yk(o){const i=this.getTransformedByOperation(o),e=v._createFromRanges(i),t=!e.isEqual(this),n=_k(this,o);let s=null;if(t){e.root.rootName=="$graveyard"&&(o.type=="remove"?s=o.sourcePosition:s=o.deletionPosition);const r=this.toRange();this.start=e.start,this.end=e.end,this.fire("change:range",r,{deletionPosition:s})}else n&&this.fire("change:content",this.toRange(),{deletionPosition:s})}function _k(o,i){switch(i.type){case"insert":return o.containsPosition(i.position);case"move":case"remove":case"reinsert":case"merge":return o.containsPosition(i.sourcePosition)||o.start.isEqual(i.sourcePosition)||o.containsPosition(i.targetPosition);case"split":return o.containsPosition(i.splitPosition)||o.containsPosition(i.insertionPosition)}return!1}class J extends hi{constructor(e,t){super(t);u(this,"_data");this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new J(this.data,this.getAttributes())}static fromJSON(e){return new J(e.data,e.attributes)}}J.prototype.is=function(o){return o==="$text"||o==="model:$text"||o==="text"||o==="model:text"||o==="node"||o==="model:node"};const zn="selection:";class lt extends G(Zt){constructor(e){super();u(this,"_selection");this._selection=new Ck(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection.updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection.getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return zn+e}static _isStoreAttributeKey(e){return e.startsWith(zn)}}lt.prototype.is=function(o){return o==="selection"||o=="model:selection"||o=="documentSelection"||o=="model:documentSelection"};class Ck extends Fe{constructor(e){super();u(this,"markers",new Be({idProperty:"name"}));u(this,"_model");u(this,"_document");u(this,"_attributePriority",new Map);u(this,"_selectionRestorePosition",null);u(this,"_hasChangedRange",!1);u(this,"_overriddenGravityRegister",new Set);u(this,"_observedMarkers",new Set);this._model=e.model,this._document=e,this.listenTo(this._model,"applyOperation",(t,n)=>{const s=n[0];!s.isDocumentOperation||s.type=="marker"||s.type=="rename"||s.type=="noop"||(this._ranges.length==0&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))},{priority:"lowest"}),this.on("change:range",()=>{this._validateSelectionRanges(this.getRanges())}),this.listenTo(this._model.markers,"update",(t,n,s,r)=>{this._updateMarker(n,r)}),this.listenTo(this._document,"change",(t,n)=>{Lk(this._model,n)})}get isCollapsed(){return this._ranges.length===0?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(...e){super.setTo(...e),this._updateAttributes(!0),this.updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this.updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const n=[e];this.fire("change:attribute",{attributeKeys:n,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=Me();return this._overriddenGravityRegister.add(e),this._overriddenGravityRegister.size===1&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new w("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this.updateMarkers()}_replaceAllRanges(e){this._validateSelectionRanges(e),super._replaceAllRanges(e)}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_validateSelectionRanges(e){for(const t of e)if(!this._document._validateSelectionRange(t))throw new w("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=Je.fromRange(e);return t.on("change:range",(n,s,r)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=r.deletionPosition;const a=this._ranges.indexOf(t);this._ranges.splice(a,1),t.detach()}}),t}updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const s of this._model.markers){const r=s.name.split(":",1)[0];if(!this._observedMarkers.has(r))continue;const a=s.getRange();for(const l of this.getRanges())a.containsRange(l,!l.isCollapsed)&&e.push(s)}const n=Array.from(this.markers);for(const s of e)this.markers.has(s)||(this.markers.add(s),t=!0);for(const s of Array.from(this.markers))e.includes(s)||(this.markers.remove(s),t=!0);t&&this.fire("change:marker",{oldMarkers:n,directChange:!1})}_updateMarker(e,t){const n=e.name.split(":",1)[0];if(!this._observedMarkers.has(n))return;let s=!1;const r=Array.from(this.markers),a=this.markers.has(e);if(!t)a&&(this.markers.remove(e),s=!0);else{let l=!1;for(const c of this.getRanges())if(t.containsRange(c,!c.isCollapsed)){l=!0;break}l&&!a?(this.markers.add(e),s=!0):!l&&a&&(this.markers.remove(e),s=!0)}s&&this.fire("change:marker",{oldMarkers:r,directChange:!1})}_updateAttributes(e){const t=At(this._getSurroundingAttributes()),n=At(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[r,a]of this._attributePriority)a=="low"&&(this._attrs.delete(r),this._attributePriority.delete(r));this._setAttributesTo(t);const s=[];for(const[r,a]of this.getAttributes())(!n.has(r)||n.get(r)!==a)&&s.push(r);for(const[r]of n)this.hasAttribute(r)||s.push(r);s.length>0&&this.fire("change:attribute",{attributeKeys:s,directChange:!1})}_setAttribute(e,t,n=!0){const s=n?"normal":"low";return s=="low"&&this._attributePriority.get(e)=="normal"||super.getAttribute(e)===t?!1:(this._attrs.set(e,t),this._attributePriority.set(e,s),!0)}_removeAttribute(e,t=!0){const n=t?"normal":"low";return n=="low"&&this._attributePriority.get(e)=="normal"||(this._attributePriority.set(e,n),!super.hasAttribute(e))?!1:(this._attrs.delete(e),!0)}_setAttributesTo(e){const t=new Set;for(const[n,s]of this.getAttributes())e.get(n)!==s&&this._removeAttribute(n,!1);for(const[n,s]of e)this._setAttribute(n,s,!1)&&t.add(n);return t}*getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())t.startsWith(zn)&&(yield[t.substr(zn.length),e.getAttribute(t)])}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;if(e.root.rootName=="$graveyard")return null;let n=null;if(this.isCollapsed){const s=e.textNode?e.textNode:e.nodeBefore,r=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(n=rn(s,t)),n||(n=rn(r,t)),!this.isGravityOverridden&&!n){let a=s;for(;a&&!n;)a=a.previousSibling,n=rn(a,t)}if(!n){let a=r;for(;a&&!n;)a=a.nextSibling,n=rn(a,t)}n||(n=this.getStoredAttributes())}else{const s=this.getFirstRange();for(const r of s){if(r.item.is("element")&&t.isObject(r.item)){n=rn(r.item,t);break}if(r.type=="text"){n=r.item.getAttributes();break}}}return n}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function rn(o,i){if(!o)return null;if(o instanceof rt||o instanceof J)return o.getAttributes();if(!i.isInline(o))return null;if(!i.isObject(o))return[];const e=[];for(const[t,n]of o.getAttributes())i.checkAttribute("$text",t)&&i.getAttributeProperties(t).copyFromObject!==!1&&e.push([t,n]);return e}function Lk(o,i){const e=o.document.differ;for(const t of e.getChanges()){if(t.type!="insert")continue;const n=t.position.parent;t.length===n.maxOffset&&o.enqueueChange(i,r=>{const a=Array.from(n.getAttributeKeys()).filter(l=>l.startsWith(zn));for(const l of a)r.removeAttribute(l,n)})}}class Ln{constructor(i){u(this,"_nodes",[]);u(this,"_offsetToNode",[]);i&&this._insertNodes(0,i)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._offsetToNode.length}getNode(i){return this._nodes[i]||null}getNodeAtOffset(i){return this._offsetToNode[i]||null}getNodeIndex(i){return i.index}getNodeStartOffset(i){return i.startOffset}indexToOffset(i){if(i==this._nodes.length)return this.maxOffset;const e=this._nodes[i];if(!e)throw new w("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(e)}offsetToIndex(i){if(i==this._offsetToNode.length)return this._nodes.length;const e=this._offsetToNode[i];if(!e)throw new w("model-nodelist-offset-out-of-bounds",this,{offset:i,nodeList:this});return this.getNodeIndex(e)}_insertNodes(i,e){const t=[];for(const s of e){if(!(s instanceof hi))throw new w("model-nodelist-insertnodes-not-node",this);t.push(s)}let n=this.indexToOffset(i);mc(this._nodes,t,i),mc(this._offsetToNode,Tk(t),n);for(let s=i;s<this._nodes.length;s++)this._nodes[s]._index=s,this._nodes[s]._startOffset=n,n+=this._nodes[s].offsetSize}_removeNodes(i,e=1){if(e==0)return[];let t=this.indexToOffset(i);const n=this._nodes.splice(i,e),s=n[n.length-1],r=s.startOffset+s.offsetSize-t;this._offsetToNode.splice(t,r);for(const a of n)a._index=null,a._startOffset=null;for(let a=i;a<this._nodes.length;a++)this._nodes[a]._index=a,this._nodes[a]._startOffset=t,t+=this._nodes[a].offsetSize;return n}_removeNodesArray(i){if(i.length==0)return;for(const t of i)t._index=null,t._startOffset=null;this._nodes=this._nodes.filter(t=>t.index!==null),this._offsetToNode=this._offsetToNode.filter(t=>t.index!==null);let e=0;for(let t=0;t<this._nodes.length;t++)this._nodes[t]._index=t,this._nodes[t]._startOffset=e,e+=this._nodes[t].offsetSize}toJSON(){return this._nodes.map(i=>i.toJSON())}}function Tk(o){const i=[];let e=0;for(const t of o)for(let n=0;n<t.offsetSize;n++)i[e++]=t;return i}class $ extends hi{constructor(e,t,n){super(t);u(this,"name");u(this,"_children",new Ln);this.name=e,n&&this._insertChild(0,n)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return this.childCount===0}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const n of e)t=t.getChildAtOffset(n);return t}findAncestor(e,t={}){let n=t.includeSelf?this:this.parent;for(;n;){if(n.name===e)return n;n=n.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?xk(this._children):void 0;return new $(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const n=Ek(t);for(const s of n)s.parent!==null&&s._remove(),s.parent=this;this._children._insertNodes(e,n)}_removeChildren(e,t=1){const n=this._children._removeNodes(e,t);for(const s of n)s.parent=null;return n}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}static fromJSON(e){let t;if(e.children){t=[];for(const n of e.children)n.name?t.push($.fromJSON(n)):t.push(J.fromJSON(n))}return new $(e.name,e.attributes,t)}}$.prototype.is=function(o,i){return i?i===this.name&&(o==="element"||o==="model:element"):o==="element"||o==="model:element"||o==="node"||o==="model:node"};function Ek(o){if(typeof o=="string")return[new J(o)];je(o)||(o=[o]);const i=[];for(const e of o)typeof e=="string"?i.push(new J(e)):e instanceof rt?i.push(new J(e.data,e.getAttributes())):i.push(e);return i}function xk(o){const i=[];for(const e of o)i.push(e._clone(!0));return i}/**
185
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
186
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
187
+ */class Rm{constructor(i){u(this,"_dispatchers");this._dispatchers=i}add(i){for(const e of this._dispatchers)i(e);return this}}class Sk extends Rm{elementToElement(i){return this.add(Gk(i))}elementToStructure(i){return this.add($k(i))}attributeToElement(i){return this.add(Kk(i))}attributeToAttribute(i){return this.add(Zk(i))}markerToElement(i){return this.add(Jk(i))}markerToHighlight(i){return this.add(Xk(i))}markerToData(i){return this.add(Yk(i))}}function Mm(){return(o,i,e)=>{if(!e.consumable.consume(i.item,o.name))return;const t=e.writer,n=e.mapper.toViewPosition(i.range.start),s=t.createText(i.item.data);t.insert(n,s)}}function Bm(){return(o,i,e)=>{e.convertAttributes(i.item),!i.reconversion&&i.item.is("element")&&!i.item.isEmpty&&e.convertChildren(i.item)}}function Ak(){return(o,i,e)=>{const t=e.mapper.toViewPosition(i.position),n=i.position.getShiftedBy(i.length),s=e.mapper.toViewPosition(n,{isPhantom:!0}),r=e.writer.createRange(t,s),a=e.writer.remove(r.getTrimmed());for(const l of e.writer.createRangeIn(a).getItems())e.mapper.unbindViewElement(l,{defer:!0})}}function Vm(o,i){const e=o.createAttributeElement("span",i.attributes);return i.classes&&e._addClass(i.classes),typeof i.priority=="number"&&(e._priority=i.priority),e._id=i.id,e}function Ik(){return(o,i,e)=>{const t=i.selection;if(t.isCollapsed||!e.consumable.consume(t,"selection"))return;const n=[];for(const s of t.getRanges())n.push(e.mapper.toViewRange(s));e.writer.setSelection(n,{backward:t.isBackward})}}function Pk(){return(o,i,e)=>{const t=i.selection;if(!t.isCollapsed||!e.consumable.consume(t,"selection"))return;const n=e.writer,s=t.getFirstPosition(),r=e.mapper.toViewPosition(s),a=n.breakAttributes(r);n.setSelection(a)}}function Rk(){return(o,i,e)=>{const t=e.writer,n=t.document.selection;for(const s of n.getRanges())s.isCollapsed&&s.end.parent.isAttached()&&e.writer.mergeAttributes(s.start);t.setSelection(null)}}function Mk(o){return(i,e,t)=>{if(!t.consumable.test(e.item,i.name))return;const n=o(e.attributeOldValue,t,e),s=o(e.attributeNewValue,t,e);if(!n&&!s)return;t.consumable.consume(e.item,i.name);const r=t.writer,a=r.document.selection;if(e.item instanceof Fe||e.item instanceof lt)r.wrap(a.getFirstRange(),s);else{let l=t.mapper.toViewRange(e.range);e.attributeOldValue!==null&&n&&(l=r.unwrap(l,n)),e.attributeNewValue!==null&&s&&r.wrap(l,s)}}}function Bk(o,i=sy){return(e,t,n)=>{if(!i(t.item,n.consumable,{preflight:!0}))return;const s=o(t.item,n,t);if(!s)return;i(t.item,n.consumable);const r=n.mapper.toViewPosition(t.range.start);n.mapper.bindElements(t.item,s),n.writer.insert(r,s),n.convertAttributes(t.item),Fm(s,t.item.getChildren(),n,{reconversion:t.reconversion})}}function Vk(o,i){return(e,t,n)=>{if(!i(t.item,n.consumable,{preflight:!0}))return;const s=new Map;n.writer._registerSlotFactory(ty(t.item,s,n));const r=o(t.item,n,t);if(n.writer._clearSlotFactory(),!r)return;iy(t.item,s,n),i(t.item,n.consumable);const a=n.mapper.toViewPosition(t.range.start);n.mapper.bindElements(t.item,r),n.writer.insert(a,r),n.convertAttributes(t.item),ny(r,s,n,{reconversion:t.reconversion})}}function zk(o){return(i,e,t)=>{e.isOpening=!0;const n=o(e,t);e.isOpening=!1;const s=o(e,t);if(!n||!s)return;const r=e.markerRange;if(r.isCollapsed&&!t.consumable.consume(r,i.name))return;for(const c of r)if(!t.consumable.consume(c.item,i.name))return;const a=t.mapper,l=t.writer;l.insert(a.toViewPosition(r.start),n),t.mapper.bindElementToMarker(n,e.markerName),r.isCollapsed||(l.insert(a.toViewPosition(r.end),s),t.mapper.bindElementToMarker(s,e.markerName)),i.stop()}}function Nk(){return(o,i,e)=>{const t=e.mapper.markerNameToElements(i.markerName);if(t){for(const n of t)e.mapper.unbindElementFromMarkerName(n,i.markerName),e.writer.clear(e.writer.createRangeOn(n),n);e.writer.clearClonedElementsGroup(i.markerName),o.stop()}}}function Dk(o){return(i,e,t)=>{const n=o(e.markerName,t);if(!n)return;const s=e.markerRange;t.consumable.consume(s,i.name)&&(Pc(s,!1,t,e,n),Pc(s,!0,t,e,n),i.stop())}}function Pc(o,i,e,t,n){const s=i?o.start:o.end,r=s.nodeAfter&&s.nodeAfter.is("element")?s.nodeAfter:null,a=s.nodeBefore&&s.nodeBefore.is("element")?s.nodeBefore:null;if(r||a){let c,d;i&&r||!i&&!a?(c=r,d=!0):(c=a,d=!1);const h=e.mapper.toViewElement(c);if(h){Ok(h,i,d,e,t,n);return}}const l=e.mapper.toViewPosition(s);Fk(l,i,e,t,n)}function Ok(o,i,e,t,n,s){const r=`data-${s.group}-${i?"start":"end"}-${e?"before":"after"}`,a=o.hasAttribute(r)?o.getAttribute(r).split(","):[];a.unshift(s.name),t.writer.setAttribute(r,a.join(","),o),t.mapper.bindElementToMarker(o,n.markerName)}function Fk(o,i,e,t,n){const s=`${n.group}-${i?"start":"end"}`,r=n.name?{name:n.name}:null,a=e.writer.createUIElement(s,r);e.writer.insert(o,a),e.mapper.bindElementToMarker(a,t.markerName)}function Uk(o){return(i,e,t)=>{const n=o(e.markerName,t);if(!n)return;const s=t.mapper.markerNameToElements(e.markerName);if(!s)return;for(const a of s)t.mapper.unbindElementFromMarkerName(a,e.markerName),a.is("containerElement")?(r(`data-${n.group}-start-before`,a),r(`data-${n.group}-start-after`,a),r(`data-${n.group}-end-before`,a),r(`data-${n.group}-end-after`,a)):t.writer.clear(t.writer.createRangeOn(a),a);t.writer.clearClonedElementsGroup(e.markerName),i.stop();function r(a,l){if(l.hasAttribute(a)){const c=new Set(l.getAttribute(a).split(","));c.delete(n.name),c.size==0?t.writer.removeAttribute(a,l):t.writer.setAttribute(a,Array.from(c).join(","),l)}}}}function Hk(o){return(i,e,t)=>{if(!t.consumable.test(e.item,i.name))return;const n=o(e.attributeOldValue,t,e),s=o(e.attributeNewValue,t,e);if(!n&&!s)return;t.consumable.consume(e.item,i.name);const r=t.mapper.toViewElement(e.item),a=t.writer;if(!r)throw new w("conversion-attribute-to-attribute-on-text",t.dispatcher,e);if(e.attributeOldValue!==null&&n){let l=n.value;n.key=="style"&&(typeof n.value=="string"?l=new _n(a.document.stylesProcessor).setTo(n.value).getStylesEntries().map(([c])=>c):l=Object.keys(n.value)),a.removeAttribute(n.key,l,r)}if(e.attributeNewValue!==null&&s){let l=s.value;s.key=="style"&&typeof s.value=="string"&&(l=Object.fromEntries(new _n(a.document.stylesProcessor).setTo(s.value).getStylesEntries())),a.setAttribute(s.key,l,!1,r)}}}function Wk(o){return(i,e,t)=>{if(!e.item||!(e.item instanceof Fe||e.item instanceof lt)&&!e.item.is("$textProxy"))return;const n=qa(o,e,t);if(!n||!t.consumable.consume(e.item,i.name))return;const s=t.writer,r=Vm(s,n),a=s.document.selection;if(e.item instanceof Fe||e.item instanceof lt)s.wrap(a.getFirstRange(),r);else{const l=t.mapper.toViewRange(e.range),c=s.wrap(l,r);for(const d of c.getItems())if(d.is("attributeElement")&&d.isSimilar(r)){t.mapper.bindElementToMarker(d,e.markerName);break}}}}function qk(o){return(i,e,t)=>{if(!e.item||!(e.item instanceof $))return;const n=qa(o,e,t);if(!n||!t.consumable.test(e.item,i.name))return;const s=t.mapper.toViewElement(e.item);if(s&&s.getCustomProperty("addHighlight")){t.consumable.consume(e.item,i.name);for(const a of v._createIn(e.item))t.consumable.consume(a.item,i.name);s.getCustomProperty("addHighlight")(s,n,t.writer),t.mapper.bindElementToMarker(s,e.markerName)}}}function jk(o){return(i,e,t)=>{if(e.markerRange.isCollapsed)return;const n=qa(o,e,t);if(!n)return;const s=Vm(t.writer,n),r=t.mapper.markerNameToElements(e.markerName);if(r){for(const a of r)t.mapper.unbindElementFromMarkerName(a,e.markerName),a.is("attributeElement")?t.writer.unwrap(t.writer.createRangeOn(a),s):a.getCustomProperty("removeHighlight")(a,n.id,t.writer);t.writer.clearClonedElementsGroup(e.markerName),i.stop()}}}function Gk(o){const i=zm(o.model),e=Nn(o.view,"container");return i.attributes.length&&(i.children=!0),t=>{t.on(`insert:${i.name}`,Bk(e,Om(i)),{priority:o.converterPriority||"normal"}),(i.children||i.attributes.length)&&t.on("reduceChanges",Dm(i),{priority:"low"})}}function $k(o){const i=zm(o.model),e=Nn(o.view,"container");return i.children=!0,t=>{if(t._conversionApi.schema.checkChild(i.name,"$text"))throw new w("conversion-element-to-structure-disallowed-text",t,{elementName:i.name});t.on(`insert:${i.name}`,Vk(e,Om(i)),{priority:o.converterPriority||"normal"}),t.on("reduceChanges",Dm(i),{priority:"low"})}}function Kk(o){o=qe(o);let i=o.model;typeof i=="string"&&(i={key:i});let e=`attribute:${i.key}`;if(i.name&&(e+=":"+i.name),i.values)for(const n of i.values)o.view[n]=Nn(o.view[n],"attribute");else o.view=Nn(o.view,"attribute");const t=Nm(o);return n=>{n.on(e,Mk(t),{priority:o.converterPriority||"normal"})}}function Zk(o){o=qe(o);let i=o.model;typeof i=="string"&&(i={key:i});let e=`attribute:${i.key}`;if(i.name&&(e+=":"+i.name),i.values)for(const n of i.values)o.view[n]=Rc(o.view[n]);else o.view=Rc(o.view);const t=Nm(o);return n=>{n.on(e,Hk(t),{priority:o.converterPriority||"normal"})}}function Jk(o){const i=Nn(o.view,"ui");return e=>{e.on(`addMarker:${o.model}`,zk(i),{priority:o.converterPriority||"normal"}),e.on(`removeMarker:${o.model}`,Nk(),{priority:o.converterPriority||"normal"})}}function Yk(o){o=qe(o);const i=o.model;let e=o.view;return e||(e=t=>({group:i,name:t.substr(o.model.length+1)})),t=>{t.on(`addMarker:${i}`,Dk(e),{priority:o.converterPriority||"normal"}),t.on(`removeMarker:${i}`,Uk(e),{priority:o.converterPriority||"normal"})}}function Xk(o){return i=>{i.on(`addMarker:${o.model}`,Wk(o.view),{priority:o.converterPriority||"normal"}),i.on(`addMarker:${o.model}`,qk(o.view),{priority:o.converterPriority||"normal"}),i.on(`removeMarker:${o.model}`,jk(o.view),{priority:o.converterPriority||"normal"})}}function zm(o){return typeof o=="string"&&(o={name:o}),{name:o.name,attributes:o.attributes?Y(o.attributes):[],children:!!o.children}}function Nn(o,i){return typeof o=="function"?o:(e,t)=>Qk(o,t,i)}function Qk(o,i,e){typeof o=="string"&&(o={name:o});let t;const n=i.writer,s=Object.assign({},o.attributes);if(e=="container")t=n.createContainerElement(o.name,s);else if(e=="attribute"){const r={priority:o.priority||oi.DEFAULT_PRIORITY};t=n.createAttributeElement(o.name,s,r)}else t=n.createUIElement(o.name,s);if(o.styles){const r=Object.keys(o.styles);for(const a of r)n.setStyle(a,o.styles[a],t)}if(o.classes){const r=o.classes;if(typeof r=="string")n.addClass(r,t);else for(const a of r)n.addClass(a,t)}return t}function Nm(o){return o.model.values?(i,e,t)=>{const n=o.view[i];return n?n(i,e,t):null}:o.view}function Rc(o){return typeof o=="string"?i=>({key:o,value:i}):typeof o=="object"?o.value?()=>o:i=>({key:o.key,value:i}):o}function qa(o,i,e){const t=typeof o=="function"?o(i,e):o;return t?(t.priority||(t.priority=10),t.id||(t.id=i.markerName),t):null}function ey(o){return(i,e)=>{if(!i.is("element",o.name))return!1;if(e.type=="attribute"){if(o.attributes.includes(e.attributeKey))return!0}else{/* istanbul ignore else: This is always true because otherwise it would not register a reducer callback. -- @preserve */if(o.children)return!0}return!1}}function Dm(o){const i=ey(o);return(e,t)=>{const n=[];t.reconvertedElements||(t.reconvertedElements=new Set);for(const s of t.changes){const r=s.type=="attribute"?s.range.start.nodeAfter:s.position.parent;if(!r||!i(r,s)){n.push(s);continue}if(!t.reconvertedElements.has(r)){t.reconvertedElements.add(r);const a=C._createBefore(r);let l=n.length;for(let c=n.length-1;c>=0;c--){const d=n[c],m=(d.type=="attribute"?d.range.start:d.position).compareWith(a);if(m=="before"||d.type=="remove"&&m=="same")break;l=c}n.splice(l,0,{type:"remove",name:r.name,position:a,length:1},{type:"reinsert",name:r.name,position:a,length:1})}}t.changes=n}}function Om(o){return(i,e,t={})=>{const n=["insert"];for(const s of o.attributes)i.hasAttribute(s)&&n.push(`attribute:${s}`);return n.every(s=>e.test(i,s))?(t.preflight||n.forEach(s=>e.consume(i,s)),!0):!1}}function ty(o,i,e){return(t,n)=>{const s=t.createContainerElement("$slot");let r=null;if(n==="children")r=Array.from(o.getChildren());else if(typeof n=="function")r=Array.from(o.getChildren()).filter(a=>n(a));else throw new w("conversion-slot-mode-unknown",e.dispatcher,{modeOrFilter:n});return i.set(s,r),s}}function iy(o,i,e){const t=Array.from(i.values()).flat(),n=new Set(t);if(n.size!=t.length)throw new w("conversion-slot-filter-overlap",e.dispatcher,{element:o});if(n.size!=o.childCount)throw new w("conversion-slot-filter-incomplete",e.dispatcher,{element:o})}function ny(o,i,e,t){e.mapper.on("modelToViewPosition",r,{priority:"highest"});let n=null,s=null;for([n,s]of i)Fm(o,s,e,t),e.writer.move(e.writer.createRangeIn(n),e.writer.createPositionBefore(n)),e.writer.remove(n);e.mapper.off("modelToViewPosition",r);function r(a,l){const c=l.modelPosition.nodeAfter,d=s.indexOf(c);d<0||(l.viewPosition=l.mapper.findPositionIn(n,d))}}function Fm(o,i,e,t){for(const n of i)oy(o.root,n,e,t)||e.convertItem(n)}function oy(o,i,e,t){const{writer:n,mapper:s}=e;if(!t.reconversion)return!1;const r=s.toViewElement(i);return!r||r.root==o||!e.canReuseView(r)?!1:(n.move(n.createRangeOn(r),s.toViewPosition(C._createBefore(i))),!0)}function sy(o,i,{preflight:e}={}){return e?i.test(o,"insert"):i.consume(o,"insert")}/**
188
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
189
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
190
+ */function Um(o){const{schema:i,document:e}=o.model;for(const t of e.getRoots())if(t.isEmpty&&!i.checkChild(t,"$text")&&i.checkChild(t,"paragraph"))return o.insertElement("paragraph",t),!0;return!1}function Hm(o,i,e){const t=e.createContext(o);return!(!e.checkChild(t,"paragraph")||!e.checkChild(t.push("paragraph"),i))}function Wm(o,i){const e=i.createElement("paragraph");return i.insert(e,o),i.createPositionAt(e,0)}class ry extends Rm{elementToElement(i){return this.add(qm(i))}elementToAttribute(i){return this.add(cy(i))}attributeToAttribute(i){return this.add(dy(i))}elementToMarker(i){return this.add(uy(i))}dataToMarker(i){return this.add(hy(i))}}function Mc(){return(o,i,e)=>{if(!i.modelRange&&e.consumable.consume(i.viewItem,{name:!0})){const{modelRange:t,modelCursor:n}=e.convertChildren(i.viewItem,i.modelCursor);i.modelRange=t,i.modelCursor=n}}}function ay(){return(o,i,{schema:e,consumable:t,writer:n})=>{let s=i.modelCursor;if(!t.test(i.viewItem))return;if(!e.checkChild(s,"$text")){if(!Hm(s,"$text",e)||i.viewItem.data.trim().length==0)return;s=Wm(s,n)}t.consume(i.viewItem);const r=n.createText(i.viewItem.data);n.insert(r,s),i.modelRange=n.createRange(s,s.getShiftedBy(r.offsetSize)),i.modelCursor=i.modelRange.end}}function ly(o,i){return(e,t)=>{const n=t.newSelection,s=[];for(const a of n.getRanges())s.push(i.toModelRange(a));const r=o.createSelection(s,{backward:n.isBackward});r.isEqual(o.document.selection)||o.change(a=>{a.setSelection(r)})}}function qm(o){o=qe(o);const i=Wr(o),e=ja(o.view),t=e?`element:${e}`:"element";return n=>{n.on(t,i,{priority:o.converterPriority||"normal"})}}function cy(o){o=qe(o),jm(o);const i=Gm(o,!1),e=ja(o.view),t=e?`element:${e}`:"element";return n=>{n.on(t,i,{priority:o.converterPriority||"low"})}}function dy(o){o=qe(o);let i=null;(typeof o.view=="string"||o.view.key)&&(i=fy(o)),jm(o,i);const e=Gm(o,!0);return t=>{t.on("element",e,{priority:o.converterPriority||"low"})}}function uy(o){const i=by(o.model);return qm({...o,model:i})}function hy(o){o=qe(o),o.model||(o.model=n=>n?o.view+":"+n:o.view);const i={view:o.view,model:o.model},e=Wr(Bc(i,"start")),t=Wr(Bc(i,"end"));return n=>{n.on(`element:${o.view}-start`,e,{priority:o.converterPriority||"normal"}),n.on(`element:${o.view}-end`,t,{priority:o.converterPriority||"normal"});const s=Ft.low,r=Ft.highest,a=Ft.get(o.converterPriority)/r;n.on("element",my(i),{priority:s+a})}}function my(o){return(i,e,t)=>{const n=`data-${o.view}`;if(!t.consumable.test(e.viewItem,{attributes:n+"-end-after"})&&!t.consumable.test(e.viewItem,{attributes:n+"-start-after"})&&!t.consumable.test(e.viewItem,{attributes:n+"-end-before"})&&!t.consumable.test(e.viewItem,{attributes:n+"-start-before"}))return;e.modelRange||Object.assign(e,t.convertChildren(e.viewItem,e.modelCursor)),t.consumable.consume(e.viewItem,{attributes:n+"-end-after"})&&s(e.modelRange.end,e.viewItem.getAttribute(n+"-end-after").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-start-after"})&&s(e.modelRange.end,e.viewItem.getAttribute(n+"-start-after").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-end-before"})&&s(e.modelRange.start,e.viewItem.getAttribute(n+"-end-before").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-start-before"})&&s(e.modelRange.start,e.viewItem.getAttribute(n+"-start-before").split(","));function s(r,a){for(const l of a){const c=o.model(l,t),d=t.writer.createElement("$marker",{"data-name":c});t.writer.insert(d,r),e.modelCursor.isEqual(r)?e.modelCursor=e.modelCursor.getShiftedBy(1):e.modelCursor=e.modelCursor._getTransformedByInsertion(r,1),e.modelRange=e.modelRange._getTransformedByInsertion(r,1)[0]}}}}function ja(o){return typeof o=="string"?o:typeof o=="object"&&typeof o.name=="string"?o.name:null}function Wr(o){const i=new Mn(o.view);return(e,t,n)=>{const s=i.match(t.viewItem);if(!s)return;const r=s.match;if(r.name=!0,!n.consumable.test(t.viewItem,r))return;const a=gy(o.model,t.viewItem,n);a&&n.safeInsert(a,t.modelCursor)&&(n.consumable.consume(t.viewItem,r),n.convertChildren(t.viewItem,a),n.updateConversionResult(a,t))}}function gy(o,i,e){return o instanceof Function?o(i,e):e.writer.createElement(o)}function fy(o){typeof o.view=="string"&&(o.view={key:o.view});const i=o.view.key,e=typeof o.view.value>"u"?/[\s\S]*/:o.view.value;let t;return i=="class"||i=="style"?t={[i=="class"?"classes":"styles"]:e}:t={attributes:{[i]:e}},o.view.name&&(t.name=o.view.name),o.view=t,i}function jm(o,i=null){const e=i===null?!0:s=>s.getAttribute(i),t=typeof o.model!="object"?o.model:o.model.key,n=typeof o.model!="object"||typeof o.model.value>"u"?e:o.model.value;o.model={key:t,value:n}}function Gm(o,i){const e=new Mn(o.view);return(t,n,s)=>{if(!n.modelRange&&i)return;const r=e.match(n.viewItem);if(!r||(py(o.view,n.viewItem)?r.match.name=!0:delete r.match.name,!s.consumable.test(n.viewItem,r.match)))return;const a=o.model.key,l=typeof o.model.value=="function"?o.model.value(n.viewItem,s,n):o.model.value;if(l===null)return;n.modelRange||Object.assign(n,s.convertChildren(n.viewItem,n.modelCursor)),wy(n.modelRange,{key:a,value:l},i,s)&&(s.consumable.test(n.viewItem,{name:!0})&&(r.match.name=!0),s.consumable.consume(n.viewItem,r.match))}}function py(o,i){const e=typeof o=="function"?o(i):o;return typeof e=="object"&&!ja(e)?!1:!e.classes&&!e.attributes&&!e.styles}function wy(o,i,e,t){let n=!1;for(const s of Array.from(o.getItems({shallow:e})))t.schema.checkAttribute(s,i.key)&&(n=!0,!s.hasAttribute(i.key)&&t.writer.setAttribute(i.key,i.value,s));return n}function by(o){return(i,e)=>{const t=typeof o=="string"?o:o(i,e);return e.writer.createElement("$marker",{"data-name":t})}}function Bc(o,i){const e=(t,n)=>{const s=t.getAttribute("name"),r=o.model(s,n);return n.writer.createElement("$marker",{"data-name":r})};return{view:`${o.view}-${i}`,model:e}}class vy extends j(){constructor(e,t){super();u(this,"model");u(this,"view");u(this,"mapper");u(this,"downcastDispatcher");this.model=e,this.view=new dk(t),this.mapper=new Am,this.downcastDispatcher=new Im({mapper:this.mapper,schema:e.schema});const n=this.model.document,s=n.selection,r=this.model.markers;this.listenTo(this.model,"_beforeChanges",()=>{this.view._disableRendering(!0)},{priority:"highest"}),this.listenTo(this.model,"_afterChanges",()=>{this.view._disableRendering(!1)},{priority:"lowest"}),this.listenTo(n,"change",()=>{this.view.change(a=>{this.downcastDispatcher.convertChanges(n.differ,r,a),this.downcastDispatcher.convertSelection(s,r,a)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",ly(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",Mm(),{priority:"lowest"}),this.downcastDispatcher.on("insert",Bm(),{priority:"lowest"}),this.downcastDispatcher.on("remove",Ak(),{priority:"low"}),this.downcastDispatcher.on("cleanSelection",Rk()),this.downcastDispatcher.on("selection",Ik(),{priority:"low"}),this.downcastDispatcher.on("selection",Pk(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(a=>{if(a.rootName=="$graveyard")return null;const l=new gm(this.view.document,a.name);return l.rootName=a.rootName,this.mapper.bindElements(a,l),l})}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t=typeof e=="string"?e:e.name,n=this.model.markers.get(t);if(!n)throw new w("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change(()=>{this.model.markers._refresh(n)})}reconvertItem(e){this.model.change(()=>{this.model.document.differ._refreshItem(e)})}}class ky extends j(){constructor(){super();u(this,"_sourceDefinitions",{});u(this,"_attributeProperties",Object.create(null));u(this,"_customChildChecks",new Map);u(this,"_customAttributeChecks",new Map);u(this,"_genericCheckSymbol",Symbol("$generic"));u(this,"_compiledDefinitions");this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",(e,t)=>{t[0]=new Ut(t[0])},{priority:"highest"}),this.on("checkChild",(e,t)=>{t[0]=new Ut(t[0]),t[1]=this.getDefinition(t[1])},{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new w("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new w("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return typeof e=="string"?t=e:"is"in e&&(e.is("$text")||e.is("$textProxy"))?t="$text":t=e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!!(t&&t.isBlock)}isLimit(e){const t=this.getDefinition(e);return t?!!(t.isLimit||t.isObject):!1}isObject(e){const t=this.getDefinition(e);return t?!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent):!1}isInline(e){const t=this.getDefinition(e);return!!(t&&t.isInline)}isSelectable(e){const t=this.getDefinition(e);return t?!!(t.isSelectable||t.isObject):!1}isContent(e){const t=this.getDefinition(e);return t?!!(t.isContent||t.isObject):!1}checkChild(e,t){return t?this._checkContextMatch(e,t):!1}checkAttribute(e,t){const n=this.getDefinition(e.last);if(!n)return!1;const s=this._evaluateAttributeChecks(e,t);return s!==void 0?s:n.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof C){const n=e.nodeBefore,s=e.nodeAfter;if(!(n instanceof $))throw new w("schema-check-merge-no-element-before",this);if(!(s instanceof $))throw new w("schema-check-merge-no-element-after",this);return this.checkMerge(n,s)}if(this.isLimit(e)||this.isLimit(t))return!1;for(const n of t.getChildren())if(!this.checkChild(e,n))return!1;return!0}addChildCheck(e,t){const n=t!==void 0?t:this._genericCheckSymbol,s=this._customChildChecks.get(n)||[];s.push(e),this._customChildChecks.set(n,s)}addAttributeCheck(e,t){const n=t!==void 0?t:this._genericCheckSymbol,s=this._customAttributeChecks.get(n)||[];s.push(e),this._customAttributeChecks.set(n,s)}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||Object.create(null)}getLimitElement(e){let t;for(e instanceof C?t=e.parent:t=(e instanceof v?[e]:Array.from(e.getRanges())).reduce((s,r)=>{const a=r.getCommonAncestor();return s?s.getCommonAncestor(a,{includeSelf:!0}):a},null);!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const s=[...e.getFirstPosition().getAncestors(),new J("",e.getAttributes())];return this.checkAttribute(s,t)}else{const n=e.getRanges();for(const s of n)for(const r of s)if(this.checkAttribute(r.item,t))return!0}return!1}*getValidRanges(e,t){e=zy(e);for(const n of e)yield*this._getValidRangesForRange(n,t)}getNearestSelectionRange(e,t="both"){if(e.root.rootName=="$graveyard")return null;if(this.checkChild(e,"$text"))return new v(e);let n,s;const r=e.getAncestors().reverse().find(a=>this.isLimit(a))||e.root;(t=="both"||t=="backward")&&(n=new Lt({boundaries:v._createIn(r),startPosition:e,direction:"backward"})),(t=="both"||t=="forward")&&(s=new Lt({boundaries:v._createIn(r),startPosition:e}));for(const a of Vy(n,s)){const l=a.walker==n?"elementEnd":"elementStart",c=a.value;if(c.type==l&&this.isObject(c.item))return v._createOn(c.item);if(this.checkChild(c.nextPosition,"$text"))return new v(c.nextPosition)}return null}findAllowedParent(e,t){let n=e.parent;for(;n;){if(this.checkChild(n,t))return n;if(this.isLimit(n))return null;n=n.parent}return null}setAllowedAttributes(e,t,n){const s=n.model;for(const[r,a]of Object.entries(t))s.schema.checkAttribute(e,r)&&n.setAttribute(r,a,e)}removeDisallowedAttributes(e,t){for(const n of e)if(n.is("$text"))Vc(this,n,t);else{const r=v._createIn(n).getPositions();for(const a of r){const l=a.nodeBefore||a.parent;Vc(this,l,t)}}}getAttributesWithProperty(e,t,n){const s={};for(const[r,a]of e.getAttributes()){const l=this.getAttributeProperties(r);l[t]!==void 0&&(n===void 0||n===l[t])&&(s[r]=a)}return s}createContext(e){return new Ut(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,n=Object.keys(t);for(const r of n)e[r]=yy(t[r],r);const s=Object.values(e);for(const r of s)_y(e,r),Cy(e,r),Ly(e,r),Ty(e,r);for(const r of s)Ey(e,r);for(const r of s)xy(e,r);for(const r of s)Sy(e,r);for(const r of s)Iy(e,r);for(const r of s)Py(e,r);this._compiledDefinitions=Ay(e)}_checkContextMatch(e,t){const n=e.last;let s=this._evaluateChildChecks(e,t);if(s=s!==void 0?s:t.allowIn.includes(n.name),!s)return!1;const r=this.getDefinition(n),a=e.trimLast();return r?a.length==0?!0:this._checkContextMatch(a,r):!1}_evaluateChildChecks(e,t){const n=this._customChildChecks.get(this._genericCheckSymbol)||[],s=this._customChildChecks.get(t.name)||[];for(const r of[...n,...s]){const a=r(e,t);if(a!==void 0)return a}}_evaluateAttributeChecks(e,t){const n=this._customAttributeChecks.get(this._genericCheckSymbol)||[],s=this._customAttributeChecks.get(t)||[];for(const r of[...n,...s]){const a=r(e,t);if(a!==void 0)return a}}*_getValidRangesForRange(e,t){let n=e.start,s=e.start;for(const r of e.getItems({shallow:!0}))r.is("element")&&(yield*this._getValidRangesForRange(v._createIn(r),t)),this.checkAttribute(r,t)||(n.isEqual(s)||(yield new v(n,s)),n=C._createAfter(r)),s=C._createAfter(r);n.isEqual(s)||(yield new v(n,s))}findOptimalInsertionRange(e,t){const n=e.getSelectedElement();if(n&&this.isObject(n)&&!this.isInline(n))return t=="before"||t=="after"?new v(C._createAt(n,t)):v._createOn(n);const s=ue(e.getSelectedBlocks());if(!s)return new v(e.focus);if(s.isEmpty)return new v(C._createAt(s,0));const r=C._createAfter(s);return e.focus.isTouching(r)?new v(r):new v(C._createBefore(s))}}class Ut{constructor(i){u(this,"_items");if(i instanceof Ut)return i;let e;typeof i=="string"?e=[i]:Array.isArray(i)?e=i:e=i.getAncestors({includeSelf:!0}),this._items=e.map(By)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(i){const e=new Ut([i]);return e._items=[...this._items,...e._items],e}trimLast(){const i=new Ut([]);return i._items=this._items.slice(0,-1),i}getItem(i){return this._items[i]}*getNames(){yield*this._items.map(i=>i.name)}endsWith(i){return Array.from(this.getNames()).join(" ").endsWith(i)}startsWith(i){return Array.from(this.getNames()).join(" ").startsWith(i)}}function yy(o,i){const e={name:i,allowIn:new Set,allowChildren:new Set,disallowIn:new Set,disallowChildren:new Set,allowContentOf:new Set,allowWhere:new Set,allowAttributes:new Set,disallowAttributes:new Set,allowAttributesOf:new Set,inheritTypesFrom:new Set};return Ry(o,e),dt(o,e,"allowIn"),dt(o,e,"allowChildren"),dt(o,e,"disallowIn"),dt(o,e,"disallowChildren"),dt(o,e,"allowContentOf"),dt(o,e,"allowWhere"),dt(o,e,"allowAttributes"),dt(o,e,"disallowAttributes"),dt(o,e,"allowAttributesOf"),dt(o,e,"inheritTypesFrom"),My(o,e),e}function _y(o,i){for(const e of i.allowIn){const t=o[e];t?t.allowChildren.add(i.name):i.allowIn.delete(e)}}function Cy(o,i){for(const e of i.allowChildren){const t=o[e];t?t.allowIn.add(i.name):i.allowChildren.delete(e)}}function Ly(o,i){for(const e of i.disallowIn){const t=o[e];t?t.disallowChildren.add(i.name):i.disallowIn.delete(e)}}function Ty(o,i){for(const e of i.disallowChildren){const t=o[e];t?t.disallowIn.add(i.name):i.disallowChildren.delete(e)}}function Ey(o,i){for(const e of i.disallowChildren)i.allowChildren.delete(e);for(const e of i.disallowIn)i.allowIn.delete(e);for(const e of i.disallowAttributes)i.allowAttributes.delete(e)}function xy(o,i){for(const e of i.allowContentOf){const t=o[e];t&&(t.disallowChildren.forEach(n=>{i.allowChildren.has(n)||(i.disallowChildren.add(n),o[n].disallowIn.add(i.name))}),t.allowChildren.forEach(n=>{i.disallowChildren.has(n)||(i.allowChildren.add(n),o[n].allowIn.add(i.name))}))}}function Sy(o,i){for(const e of i.allowWhere){const t=o[e];t&&(t.disallowIn.forEach(n=>{i.allowIn.has(n)||(i.disallowIn.add(n),o[n].disallowChildren.add(i.name))}),t.allowIn.forEach(n=>{i.disallowIn.has(n)||(i.allowIn.add(n),o[n].allowChildren.add(i.name))}))}}function Ay(o){const i={};for(const e of Object.values(o))i[e.name]={name:e.name,isBlock:!!e.isBlock,isContent:!!e.isContent,isInline:!!e.isInline,isLimit:!!e.isLimit,isObject:!!e.isObject,isSelectable:!!e.isSelectable,allowIn:Array.from(e.allowIn).filter(t=>!!o[t]),allowChildren:Array.from(e.allowChildren).filter(t=>!!o[t]),allowAttributes:Array.from(e.allowAttributes)};return i}function Iy(o,i){for(const e of i.allowAttributesOf){const t=o[e];if(!t)return;t.allowAttributes.forEach(n=>{i.disallowAttributes.has(n)||i.allowAttributes.add(n)})}}function Py(o,i){for(const e of i.inheritTypesFrom){const t=o[e];if(t){const n=Object.keys(t).filter(s=>s.startsWith("is"));for(const s of n)s in i||(i[s]=t[s])}}}function Ry(o,i){for(const e of o){const t=Object.keys(e).filter(n=>n.startsWith("is"));for(const n of t)i[n]=!!e[n]}}function dt(o,i,e){for(const t of o){let n=t[e];typeof n=="string"&&(n=[n]),Array.isArray(n)&&n.forEach(s=>i[e].add(s))}}function My(o,i){for(const e of o){const t=e.inheritAllFrom;t&&(i.allowContentOf.add(t),i.allowWhere.add(t),i.allowAttributesOf.add(t),i.inheritTypesFrom.add(t))}}function By(o){return typeof o=="string"||o.is("documentFragment")?{name:typeof o=="string"?o:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:o.is("element")?o.name:"$text",*getAttributeKeys(){yield*o.getAttributeKeys()},getAttribute(i){return o.getAttribute(i)}}}function*Vy(o,i){let e=!1;for(;!e;){if(e=!0,o){const t=o.next();t.done||(e=!1,yield{walker:o,value:t.value})}if(i){const t=i.next();t.done||(e=!1,yield{walker:i,value:t.value})}}}function*zy(o){for(const i of o)yield*i.getMinimalFlatRanges()}function Vc(o,i,e){for(const t of i.getAttributeKeys())o.checkAttribute(i,t)||e.removeAttribute(t,i)}class Ny extends G(){constructor(e){super();u(this,"conversionApi");u(this,"_splitParts",new Map);u(this,"_cursorParents",new Map);u(this,"_modelCursor",null);u(this,"_emptyElementsToKeep",new Set);this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(t,n)=>this._convertItem(t,n),convertChildren:(t,n)=>this._convertChildren(t,n),safeInsert:(t,n)=>this._safeInsert(t,n),updateConversionResult:(t,n)=>this._updateConversionResult(t,n),splitToAllowedParent:(t,n)=>this._splitToAllowedParent(t,n),getSplitParts:t=>this._getSplitParts(t),keepEmptyElement:t=>this._keepEmptyElement(t)}}convert(e,t,n=["$root"]){this.fire("viewCleanup",e),this._modelCursor=Oy(n,t),this.conversionApi.writer=t,this.conversionApi.consumable=es.createFrom(e),this.conversionApi.store={};const{modelRange:s}=this._convertItem(e,this._modelCursor),r=t.createDocumentFragment();if(s){this._removeEmptyElements();const a=this._modelCursor.parent,l=a._removeChildren(0,a.childCount);r._insertChild(0,l),r.markers=Dy(r,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,r}_convertItem(e,t){const n={viewItem:e,modelCursor:t,modelRange:null};if(e.is("element")?this.fire(`element:${e.name}`,n,this.conversionApi):e.is("$text")?this.fire("text",n,this.conversionApi):this.fire("documentFragment",n,this.conversionApi),n.modelRange&&!(n.modelRange instanceof v))throw new w("view-conversion-dispatcher-incorrect-result",this);return{modelRange:n.modelRange,modelCursor:n.modelCursor}}_convertChildren(e,t){let n=t.is("position")?t:C._createAt(t,0);const s=new v(n);for(const r of Array.from(e.getChildren())){const a=this._convertItem(r,n);a.modelRange instanceof v&&(s.end=a.modelRange.end,n=a.modelCursor)}return{modelRange:s,modelCursor:n}}_safeInsert(e,t){const n=this._splitToAllowedParent(e,t);return n?(this.conversionApi.writer.insert(e,n.position),!0):!1}_updateConversionResult(e,t){const n=this._getSplitParts(e),s=this.conversionApi.writer;t.modelRange||(t.modelRange=s.createRange(s.createPositionBefore(e),s.createPositionAfter(n[n.length-1])));const r=this._cursorParents.get(e);r?t.modelCursor=s.createPositionAt(r,0):t.modelCursor=t.modelRange.end}_splitToAllowedParent(e,t){const{schema:n,writer:s}=this.conversionApi;let r=n.findAllowedParent(t,e);if(r){if(r===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(r)&&(r=null)}if(!r)return Hm(t,e,n)?{position:Wm(t,s)}:null;const a=this.conversionApi.writer.split(t,r),l=[];for(const d of a.range.getWalker())if(d.type=="elementEnd")l.push(d.item);else{const h=l.pop(),m=d.item;this._registerSplitPair(h,m)}const c=a.range.end.parent;return this._cursorParents.set(e,c),{position:a.position,cursorParent:c}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const n=this._splitParts.get(e);this._splitParts.set(t,n),n.push(t)}_getSplitParts(e){let t;return this._splitParts.has(e)?t=this._splitParts.get(e):t=[e],t}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){const e=new Map;for(const t of this._splitParts.keys())if(t.isEmpty&&!this._emptyElementsToKeep.has(t)){const n=e.get(t.parent)||[];n.push(t),this._splitParts.delete(t),e.set(t.parent,n)}for(const[t,n]of e)t._removeChildrenArray(n);e.size&&this._removeEmptyElements()}}function Dy(o,i){const e=new Set,t=new Map,n=v._createIn(o).getItems();for(const s of n)s.is("element","$marker")&&e.add(s);for(const s of e){const r=s.getAttribute("data-name"),a=i.createPositionBefore(s);t.has(r)?t.get(r).end=a.clone():t.set(r,new v(a.clone())),i.remove(s)}return t}function Oy(o,i){let e;for(const t of new Ut(o)){const n={};for(const r of t.getAttributeKeys())n[r]=t.getAttribute(r);const s=i.createElement(t.name,n);e&&i.insert(s,e),e=C._createAt(s,0)}return e}class Fy{getHtml(i){const t=T.document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(i),t.innerHTML}}class Uy{constructor(i){u(this,"domParser");u(this,"domConverter");u(this,"htmlWriter");u(this,"skipComments",!0);this.domParser=new DOMParser,this.domConverter=new Cm(i,{renderingMode:"data"}),this.htmlWriter=new Fy}toData(i){const e=this.domConverter.viewToDom(i);return this.htmlWriter.getHtml(e)}toView(i){const e=this._toDom(i);return this.domConverter.domToView(e,{skipComments:this.skipComments})}registerRawContentMatcher(i){this.domConverter.registerRawContentMatcher(i)}useFillerType(i){this.domConverter.blockFillerMode=i=="marked"?"markedNbsp":"nbsp"}_toDom(i){/<(?:html|body|head|meta)(?:\s[^>]*)?>/i.test(i.trim().slice(0,1e4))||(i=`<body>${i}</body>`);const e=this.domParser.parseFromString(i,"text/html"),t=e.createDocumentFragment(),n=e.body.childNodes;for(;n.length>0;)t.appendChild(n[0]);return t}}class Hy extends G(){constructor(e,t){super();u(this,"model");u(this,"mapper");u(this,"downcastDispatcher");u(this,"upcastDispatcher");u(this,"viewDocument");u(this,"stylesProcessor");u(this,"htmlProcessor");u(this,"processor");u(this,"_viewWriter");this.model=e,this.mapper=new Am,this.downcastDispatcher=new Im({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",Mm(),{priority:"lowest"}),this.downcastDispatcher.on("insert",Bm(),{priority:"lowest"}),this.upcastDispatcher=new Ny({schema:e.schema}),this.viewDocument=new wm(t),this.stylesProcessor=t,this.htmlProcessor=new Uy(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new bm(this.viewDocument),this.upcastDispatcher.on("text",ay(),{priority:"lowest"}),this.upcastDispatcher.on("element",Mc(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",Mc(),{priority:"lowest"}),j().prototype.decorate.call(this,"init"),j().prototype.decorate.call(this,"set"),j().prototype.decorate.call(this,"get"),j().prototype.decorate.call(this,"toView"),j().prototype.decorate.call(this,"toModel"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"}),this.on("ready",()=>{this.model.enqueueChange({isUndoable:!1},Um)},{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:n="empty"}=e;if(!this._checkIfRootsExists([t]))throw new w("datacontroller-get-non-existent-root",this);const s=this.model.document.getRoot(t);return s.isAttached()||F("datacontroller-get-detached-root",this),n==="empty"&&!this.model.hasContent(s,{ignoreWhitespaces:!0})?"":this.stringify(s,e)}stringify(e,t={}){const n=this.toView(e,t);return this.processor.toData(n)}toView(e,t={}){const n=this.viewDocument,s=this._viewWriter;this.mapper.clearBindings();const r=v._createIn(e),a=new si(n);this.mapper.bindElements(e,a);const l=e.is("documentFragment")?e.markers:Wy(e);return this.downcastDispatcher.convert(r,l,s,t),a}init(e){if(this.model.document.version)throw new w("datacontroller-init-document-not-empty",this);let t={};if(typeof e=="string"?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new w("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},n=>{for(const s of Object.keys(t)){const r=this.model.document.getRoot(s);n.insert(this.parse(t[s],r),r,0)}}),Promise.resolve()}set(e,t={}){let n={};if(typeof e=="string"?n.main=e:n=e,!this._checkIfRootsExists(Object.keys(n)))throw new w("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},s=>{s.setSelection(null),s.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const r of Object.keys(n)){const a=this.model.document.getRoot(r);s.remove(s.createRangeIn(a)),s.insert(this.parse(n[r],a),a,0)}})}parse(e,t="$root"){const n=this.processor.toView(e);return this.toModel(n,t)}toModel(e,t="$root"){return this.model.change(n=>this.upcastDispatcher.convert(e,n,t))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRoot(t))return!1;return!0}}function Wy(o){const i=[],e=o.root.document;if(!e)return new Map;const t=v._createIn(o);for(const n of e.model.markers){const s=n.getRange(),r=s.isCollapsed,a=s.start.isEqual(t.start)||s.end.isEqual(t.end);if(r&&a)i.push([n.name,s]);else{const l=t.getIntersection(s);l&&i.push([n.name,l])}}return i.sort(([n,s],[r,a])=>{if(s.end.compareWith(a.start)!=="after")return 1;if(s.start.compareWith(a.end)!=="before")return-1;switch(s.start.compareWith(a.start)){case"before":return 1;case"after":return-1;default:switch(s.end.compareWith(a.end)){case"before":return 1;case"after":return-1;default:return r.localeCompare(n)}}}),new Map(i)}class qy{constructor(i,e){u(this,"_helpers",new Map);u(this,"_downcast");u(this,"_upcast");this._downcast=Y(i),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Y(e),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(i,e){const t=this._downcast.includes(e);if(!this._upcast.includes(e)&&!t)throw new w("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:i,dispatchers:[e],isDowncast:t})}for(i){if(!this._helpers.has(i))throw new w("conversion-for-unknown-group",this);return this._helpers.get(i)}elementToElement(i){this.for("downcast").elementToElement(i);for(const{model:e,view:t}of ir(i))this.for("upcast").elementToElement({model:e,view:t,converterPriority:i.converterPriority})}attributeToElement(i){this.for("downcast").attributeToElement(i);for(const{model:e,view:t}of ir(i))this.for("upcast").elementToAttribute({view:t,model:e,converterPriority:i.converterPriority})}attributeToAttribute(i){this.for("downcast").attributeToAttribute(i);for(const{model:e,view:t}of ir(i))this.for("upcast").attributeToAttribute({view:t,model:e})}_createConversionHelpers({name:i,dispatchers:e,isDowncast:t}){if(this._helpers.has(i))throw new w("conversion-group-exists",this);const n=t?new Sk(e):new ry(e);this._helpers.set(i,n)}}function*ir(o){if(o.model.values)for(const i of o.model.values){const e={key:o.model.key,value:i},t=o.view[i],n=o.upcastAlso?o.upcastAlso[i]:void 0;yield*zc(e,t,n)}else yield*zc(o.model,o.view,o.upcastAlso)}function*zc(o,i,e){if(yield{model:o,view:i},e)for(const t of Y(e))yield{model:o,view:t}}/**
191
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
192
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
193
+ */class Ge{constructor(i){u(this,"baseVersion");u(this,"isDocumentOperation");u(this,"batch");this.baseVersion=i,this.isDocumentOperation=this.baseVersion!==null,this.batch=null}_validate(){}toJSON(){const i=Object.assign({},this);return i.__className=this.constructor.className,delete i.batch,delete i.isDocumentOperation,i}static get className(){return"Operation"}static fromJSON(i,e){return new this(i.baseVersion)}}function Ga(o,i){const e=Km(i),t=e.reduce((r,a)=>r+a.offsetSize,0),n=o.parent;Fn(o);const s=o.index;return n._insertChild(s,e),On(n,s+e.length),On(n,s),new v(o,o.getShiftedBy(t))}function $m(o){if(!o.isFlat)throw new w("operation-utils-remove-range-not-flat",this);const i=o.start.parent;Fn(o.start),Fn(o.end);const e=i._removeChildren(o.start.index,o.end.index-o.start.index);return On(i,o.start.index),e}function Dn(o,i){if(!o.isFlat)throw new w("operation-utils-move-range-not-flat",this);const e=$m(o);return i=i._getTransformedByDeletion(o.start,o.end.offset-o.start.offset),Ga(i,e)}function jy(o,i,e){Fn(o.start),Fn(o.end);for(const t of o.getItems({shallow:!0})){const n=t.is("$textProxy")?t.textNode:t;e!==null?n._setAttribute(i,e):n._removeAttribute(i),On(n.parent,n.index)}On(o.end.parent,o.end.index)}function Km(o){const i=[];function e(t){if(typeof t=="string")i.push(new J(t));else if(t instanceof rt)i.push(new J(t.data,t.getAttributes()));else if(t instanceof hi)i.push(t);else if(je(t))for(const n of t)e(n)}e(o);for(let t=1;t<i.length;t++){const n=i[t],s=i[t-1];n instanceof J&&s instanceof J&&Zm(n,s)&&(i.splice(t-1,2,new J(s.data+n.data,s.getAttributes())),t--)}return i}function On(o,i){const e=o.getChild(i-1),t=o.getChild(i);if(e&&t&&e.is("$text")&&t.is("$text")&&Zm(e,t)){const n=new J(e.data+t.data,e.getAttributes());o._removeChildren(i-1,2),o._insertChild(i-1,n)}}function Fn(o){const i=o.textNode,e=o.parent;if(i){const t=o.offset-i.startOffset,n=i.index;e._removeChildren(n,1);const s=new J(i.data.substr(0,t),i.getAttributes()),r=new J(i.data.substr(t),i.getAttributes());e._insertChild(n,[s,r])}}function Zm(o,i){const e=o.getAttributes(),t=i.getAttributes();for(const n of e){if(n[1]!==i.getAttribute(n[0]))return!1;t.next()}return t.next().done}class W extends Ge{constructor(e,t,n,s){super(s);u(this,"sourcePosition");u(this,"howMany");u(this,"targetPosition");this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=n.clone(),this.targetPosition.stickiness="toNone"}get type(){return this.targetPosition.root.rootName=="$graveyard"?"remove":this.sourcePosition.root.rootName=="$graveyard"?"reinsert":"move"}get affectedSelectable(){return[v._createFromPositionAndShift(this.sourcePosition,this.howMany),v._createFromPositionAndShift(this.targetPosition,0)]}clone(){return new W(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new W(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,n=this.sourcePosition.offset,s=this.targetPosition.offset;if(n+this.howMany>e.maxOffset)throw new w("move-operation-nodes-do-not-exist",this);if(e===t&&n<s&&s<n+this.howMany)throw new w("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&Ee(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())=="prefix"){const r=this.sourcePosition.path.length-1;if(this.targetPosition.path[r]>=n&&this.targetPosition.path[r]<n+this.howMany)throw new w("move-operation-node-into-itself",this)}}_execute(){Dn(v._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const n=C.fromJSON(e.sourcePosition,t),s=C.fromJSON(e.targetPosition,t);return new this(n,e.howMany,s,e.baseVersion)}}class be extends Ge{constructor(e,t,n){super(n);u(this,"position");u(this,"nodes");u(this,"shouldReceiveAttributes");this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new Ln(Km(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}get affectedSelectable(){return this.position.clone()}clone(){const e=new Ln([...this.nodes].map(n=>n._clone(!0))),t=new be(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new C(e,[0]);return new W(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new w("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new Ln([...e].map(t=>t._clone(!0))),Ga(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const n=[];for(const r of e.nodes)r.name?n.push($.fromJSON(r)):n.push(J.fromJSON(r));const s=new be(C.fromJSON(e.position,t),n,e.baseVersion);return s.shouldReceiveAttributes=e.shouldReceiveAttributes,s}}class K extends Ge{constructor(e,t,n,s,r){super(r);u(this,"splitPosition");u(this,"howMany");u(this,"insertionPosition");u(this,"graveyardPosition");this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=n,this.graveyardPosition=s?s.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new C(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new v(this.splitPosition,e)}get affectedSelectable(){const e=[v._createFromPositionAndShift(this.splitPosition,0),v._createFromPositionAndShift(this.insertionPosition,0)];return this.graveyardPosition&&e.push(v._createFromPositionAndShift(this.graveyardPosition,0)),e}clone(){return new K(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new C(e,[0]);return new ce(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new w("split-operation-position-invalid",this);if(e.parent){if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new w("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new w("split-operation-graveyard-position-invalid",this)}else throw new w("split-operation-split-in-root",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)Dn(v._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const n=e._clone();Ga(this.insertionPosition,n)}const t=new v(C._createAt(e,this.splitPosition.offset),C._createAt(e,e.maxOffset));Dn(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new C(e.root,t,"toPrevious")}static fromJSON(e,t){const n=C.fromJSON(e.splitPosition,t),s=C.fromJSON(e.insertionPosition,t),r=e.graveyardPosition?C.fromJSON(e.graveyardPosition,t):null;return new this(n,e.howMany,s,r,e.baseVersion)}}class ce extends Ge{constructor(e,t,n,s,r){super(r);u(this,"sourcePosition");u(this,"howMany");u(this,"targetPosition");u(this,"graveyardPosition");this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=n.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=s.clone()}get type(){return"merge"}get deletionPosition(){return new C(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new v(this.sourcePosition,e)}get affectedSelectable(){const e=this.sourcePosition.parent;return[v._createOn(e),v._createFromPositionAndShift(this.targetPosition,0),v._createFromPositionAndShift(this.graveyardPosition,0)]}clone(){return new ce(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),n=new C(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new K(e,this.howMany,n,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(e.parent)if(t.parent){if(this.howMany!=e.maxOffset)throw new w("merge-operation-how-many-invalid",this)}else throw new w("merge-operation-target-position-invalid",this);else throw new w("merge-operation-source-position-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=v._createIn(e);Dn(t,this.targetPosition),Dn(v._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const n=C.fromJSON(e.sourcePosition,t),s=C.fromJSON(e.targetPosition,t),r=C.fromJSON(e.graveyardPosition,t);return new this(n,e.howMany,s,r,e.baseVersion)}}class Re extends Ge{constructor(e,t,n,s,r,a){super(a);u(this,"name");u(this,"oldRange");u(this,"newRange");u(this,"affectsData");u(this,"_markers");this.name=e,this.oldRange=t?t.clone():null,this.newRange=n?n.clone():null,this.affectsData=r,this._markers=s}get type(){return"marker"}get affectedSelectable(){const e=[];return this.oldRange&&e.push(this.oldRange.clone()),this.newRange&&(this.oldRange?e.push(...this.newRange.getDifference(this.oldRange)):e.push(this.newRange.clone())),e}clone(){return new Re(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new Re(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){this.newRange?this._markers._set(this.name,this.newRange,!0,this.affectsData):this._markers._remove(this.name)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new Re(e.name,e.oldRange?v.fromJSON(e.oldRange,t):null,e.newRange?v.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}class de extends Ge{constructor(e,t,n,s,r){super(r);u(this,"range");u(this,"key");u(this,"oldValue");u(this,"newValue");this.range=e.clone(),this.key=t,this.oldValue=n===void 0?null:n,this.newValue=s===void 0?null:s}get type(){return this.oldValue===null?"addAttribute":this.newValue===null?"removeAttribute":"changeAttribute"}get affectedSelectable(){return this.range.clone()}clone(){return new de(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new de(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new w("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(this.oldValue!==null&&!Zo(e.getAttribute(this.key),this.oldValue))throw new w("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(this.oldValue===null&&this.newValue!==null&&e.hasAttribute(this.key))throw new w("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){Zo(this.oldValue,this.newValue)||jy(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new de(v.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}class me extends Ge{get type(){return"noop"}get affectedSelectable(){return null}clone(){return new me(this.baseVersion)}getReversed(){return new me(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}class Ne extends Ge{constructor(e,t,n,s){super(s);u(this,"position");u(this,"oldName");u(this,"newName");this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=n}get type(){return"rename"}get affectedSelectable(){return this.position.nodeAfter}clone(){return new Ne(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new Ne(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(e instanceof $){if(e.name!==this.oldName)throw new w("rename-operation-wrong-name",this)}else throw new w("rename-operation-wrong-position",this)}_execute(){const e=this.position.nodeAfter;e.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new Ne(C.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}class Et extends Ge{constructor(e,t,n,s,r){super(r);u(this,"root");u(this,"key");u(this,"oldValue");u(this,"newValue");this.root=e,this.key=t,this.oldValue=n===void 0?null:n,this.newValue=s===void 0?null:s}get type(){return this.oldValue===null?"addRootAttribute":this.newValue===null?"removeRootAttribute":"changeRootAttribute"}get affectedSelectable(){return this.root}clone(){return new Et(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new Et(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new w("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(this.oldValue!==null&&this.root.getAttribute(this.key)!==this.oldValue)throw new w("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(this.oldValue===null&&this.newValue!==null&&this.root.hasAttribute(this.key))throw new w("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){this.newValue!==null?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new w("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new Et(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}class ft extends Ge{constructor(e,t,n,s,r){super(r);u(this,"rootName");u(this,"elementName");u(this,"isAdd");u(this,"_document");if(this.rootName=e,this.elementName=t,this.isAdd=n,this._document=s,!this._document.getRoot(this.rootName)){const a=this._document.createRoot(this.elementName,this.rootName);a._isAttached=!1}}get type(){return this.isAdd?"addRoot":"detachRoot"}get affectedSelectable(){return this._document.getRoot(this.rootName)}clone(){return new ft(this.rootName,this.elementName,this.isAdd,this._document,this.baseVersion)}getReversed(){return new ft(this.rootName,this.elementName,!this.isAdd,this._document,this.baseVersion+1)}_execute(){this._document.getRoot(this.rootName)._isAttached=this.isAdd}toJSON(){const e=super.toJSON();return delete e._document,e}static get className(){return"RootOperation"}static fromJSON(e,t){return new ft(e.rootName,e.elementName,e.isAdd,t,e.baseVersion)}}const it={};it[de.className]=de;it[be.className]=be;it[Re.className]=Re;it[W.className]=W;it[me.className]=me;it[Ge.className]=Ge;it[Ne.className]=Ne;it[Et.className]=Et;it[ft.className]=ft;it[K.className]=K;it[ce.className]=ce;class Gy{static fromJSON(i,e){return it[i.__className].fromJSON(i,e)}}const qr=new Map;function U(o,i,e){let t=qr.get(o);t||(t=new Map,qr.set(o,t)),t.set(i,e)}function $y(o,i){const e=qr.get(o);return e&&e.has(i)?e.get(i):Ky}function Ky(o){return[o]}function Nc(o,i,e={}){const t=$y(o.constructor,i.constructor);try{return o=o.clone(),t(o,i,e)}catch(n){throw n}}function Zy(o,i,e){o=o.slice(),i=i.slice();const t=new Jy(e.document,e.useRelations,e.forceWeakRemove);t.setOriginalOperations(o),t.setOriginalOperations(i);const n=t.originalOperations;if(o.length==0||i.length==0)return{operationsA:o,operationsB:i,originalOperations:n};const s=new WeakMap;for(const l of o)s.set(l,0);const r={nextBaseVersionA:o[o.length-1].baseVersion+1,nextBaseVersionB:i[i.length-1].baseVersion+1,originalOperationsACount:o.length,originalOperationsBCount:i.length};let a=0;for(;a<o.length;){const l=o[a],c=s.get(l);if(c==i.length){a++;continue}const d=i[c],h=Nc(l,d,t.getContext(l,d,!0)),m=Nc(d,l,t.getContext(d,l,!1));t.updateRelation(l,d),t.setOriginalOperations(h,l),t.setOriginalOperations(m,d);for(const g of h)s.set(g,c+m.length);o.splice(a,1,...h),i.splice(c,1,...m)}return Oc(o),Oc(i),Dc(o,r.nextBaseVersionB),Dc(i,r.nextBaseVersionA),{operationsA:o,operationsB:i,originalOperations:n}}class Jy{constructor(i,e,t=!1){u(this,"originalOperations");u(this,"_history");u(this,"_useRelations");u(this,"_forceWeakRemove");u(this,"_relations");this.originalOperations=new Map,this._history=i.history,this._useRelations=e,this._forceWeakRemove=!!t,this._relations=new Map}setOriginalOperations(i,e=null){const t=e?this.originalOperations.get(e):null;for(const n of i)this.originalOperations.set(n,t||n)}updateRelation(i,e){if(i instanceof W)e instanceof ce?i.targetPosition.isEqual(e.sourcePosition)||e.movedRange.containsPosition(i.targetPosition)?this._setRelation(i,e,"insertAtSource"):i.targetPosition.isEqual(e.deletionPosition)?this._setRelation(i,e,"insertBetween"):i.targetPosition.isAfter(e.sourcePosition)&&this._setRelation(i,e,"moveTargetAfter"):e instanceof W&&(i.targetPosition.isEqual(e.sourcePosition)||i.targetPosition.isBefore(e.sourcePosition)?this._setRelation(i,e,"insertBefore"):this._setRelation(i,e,"insertAfter"));else if(i instanceof K){if(e instanceof ce)i.splitPosition.isBefore(e.sourcePosition)&&this._setRelation(i,e,"splitBefore");else if(e instanceof W)if(i.splitPosition.isEqual(e.sourcePosition)||i.splitPosition.isBefore(e.sourcePosition))this._setRelation(i,e,"splitBefore");else{const t=v._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.splitPosition.hasSameParentAs(e.sourcePosition)&&t.containsPosition(i.splitPosition)){const n=t.end.offset-i.splitPosition.offset,s=i.splitPosition.offset-t.start.offset;this._setRelation(i,e,{howMany:n,offset:s})}}}else if(i instanceof ce)e instanceof ce?(i.targetPosition.isEqual(e.sourcePosition)||this._setRelation(i,e,"mergeTargetNotMoved"),i.sourcePosition.isEqual(e.targetPosition)&&this._setRelation(i,e,"mergeSourceNotMoved"),i.sourcePosition.isEqual(e.sourcePosition)&&this._setRelation(i,e,"mergeSameElement")):e instanceof K?i.sourcePosition.isEqual(e.splitPosition)&&this._setRelation(i,e,"splitAtSource"):e instanceof W&&e.howMany>0&&(i.sourcePosition.isEqual(e.sourcePosition.getShiftedBy(e.howMany))&&this._setRelation(i,e,"mergeSourceAffected"),i.targetPosition.isEqual(e.sourcePosition)&&this._setRelation(i,e,"mergeTargetWasBefore"));else if(i instanceof Re){const t=i.newRange;if(!t)return;if(e instanceof ce){const n=t.start.isEqual(e.targetPosition),s=t.start.isEqual(e.deletionPosition),r=t.end.isEqual(e.deletionPosition),a=t.end.isEqual(e.sourcePosition);(n||s||r||a)&&this._setRelation(i,e,{wasInLeftElement:n,wasStartBeforeMergedElement:s,wasEndBeforeMergedElement:r,wasInRightElement:a})}}}getContext(i,e,t){return{aIsStrong:t,aWasUndone:this._wasUndone(i),bWasUndone:this._wasUndone(e),abRelation:this._useRelations?this._getRelation(i,e):null,baRelation:this._useRelations?this._getRelation(e,i):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(i){const e=this.originalOperations.get(i);return e.wasUndone||this._history.isUndoneOperation(e)}_getRelation(i,e){const t=this.originalOperations.get(e),n=this._history.getUndoneOperation(t);if(!n)return null;const s=this.originalOperations.get(i),r=this._relations.get(s);return r&&r.get(n)||null}_setRelation(i,e,t){const n=this.originalOperations.get(i),s=this.originalOperations.get(e);let r=this._relations.get(n);r||(r=new Map,this._relations.set(n,r)),r.set(s,t)}}function Dc(o,i){for(const e of o)e.baseVersion=i++}function Oc(o){const i=new Map;for(let e=0;e<o.length;e++){const t=o[e];t instanceof Re&&(t.baseVersion!==-1?i.set(t.name,{op:t,ranges:t.newRange?[t.newRange]:[]}):(t.newRange&&i.get(t.name).ranges.push(t.newRange),o.splice(e,1),e--))}for(const{op:e,ranges:t}of i.values())t.length?e.newRange=v._createFromRanges(t):e.newRange=null}U(de,de,(o,i,e)=>{if(o.key===i.key&&o.range.start.hasSameParentAs(i.range.start)){const t=o.range.getDifference(i.range).map(s=>new de(s,o.key,o.oldValue,o.newValue,0)),n=o.range.getIntersection(i.range);return n&&e.aIsStrong&&t.push(new de(n,i.key,i.newValue,o.newValue,0)),t.length==0?[new me(0)]:t}else return[o]});U(de,be,(o,i)=>{if(o.range.start.hasSameParentAs(i.position)&&o.range.containsPosition(i.position)){const t=o.range._getTransformedByInsertion(i.position,i.howMany,!i.shouldReceiveAttributes).map(n=>new de(n,o.key,o.oldValue,o.newValue,o.baseVersion));if(i.shouldReceiveAttributes){const n=Jm(i,o.key,o.oldValue);n&&t.unshift(n)}return t}return o.range=o.range._getTransformedByInsertion(i.position,i.howMany,!1)[0],[o]});function Jm(o,i,e){const n=o.nodes.getNode(0).getAttribute(i);if(n==e)return null;const s=new v(o.position,o.position.getShiftedBy(o.howMany));return new de(s,i,n,e,0)}U(de,ce,(o,i)=>{const e=[];o.range.start.hasSameParentAs(i.deletionPosition)&&(o.range.containsPosition(i.deletionPosition)||o.range.start.isEqual(i.deletionPosition))&&e.push(v._createFromPositionAndShift(i.graveyardPosition,1));const t=o.range._getTransformedByMergeOperation(i);return t.isCollapsed||e.push(t),e.map(n=>new de(n,o.key,o.oldValue,o.newValue,o.baseVersion))});U(de,W,(o,i)=>Yy(o.range,i).map(t=>new de(t,o.key,o.oldValue,o.newValue,o.baseVersion)));function Yy(o,i){const e=v._createFromPositionAndShift(i.sourcePosition,i.howMany);let t=null,n=[];e.containsRange(o,!0)?t=o:o.start.hasSameParentAs(e.start)?(n=o.getDifference(e),t=o.getIntersection(e)):n=[o];const s=[];for(let r of n){r=r._getTransformedByDeletion(i.sourcePosition,i.howMany);const a=i.getMovedRangeStart(),l=r.start.hasSameParentAs(a),c=r._getTransformedByInsertion(a,i.howMany,l);s.push(...c)}return t&&s.push(t._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany,!1)[0]),s}U(de,K,(o,i)=>{if(o.range.end.isEqual(i.insertionPosition))return i.graveyardPosition||o.range.end.offset++,[o];if(o.range.start.hasSameParentAs(i.splitPosition)&&o.range.containsPosition(i.splitPosition)){const e=o.clone();return e.range=new v(i.moveTargetPosition.clone(),o.range.end._getCombined(i.splitPosition,i.moveTargetPosition)),o.range.end=i.splitPosition.clone(),o.range.end.stickiness="toPrevious",[o,e]}return o.range=o.range._getTransformedBySplitOperation(i),[o]});U(be,de,(o,i)=>{const e=[o];if(o.shouldReceiveAttributes&&o.position.hasSameParentAs(i.range.start)&&i.range.containsPosition(o.position)){const t=Jm(o,i.key,i.newValue);t&&e.push(t)}return e});U(be,be,(o,i,e)=>o.position.isEqual(i.position)&&e.aIsStrong?[o]:(o.position=o.position._getTransformedByInsertOperation(i),[o]));U(be,W,(o,i)=>(o.position=o.position._getTransformedByMoveOperation(i),[o]));U(be,K,(o,i)=>(o.position=o.position._getTransformedBySplitOperation(i),[o]));U(be,ce,(o,i)=>(o.position=o.position._getTransformedByMergeOperation(i),[o]));U(Re,be,(o,i)=>(o.oldRange&&(o.oldRange=o.oldRange._getTransformedByInsertOperation(i)[0]),o.newRange&&(o.newRange=o.newRange._getTransformedByInsertOperation(i)[0]),[o]));U(Re,Re,(o,i,e)=>{if(o.name==i.name)if(e.aIsStrong)o.oldRange=i.newRange?i.newRange.clone():null;else return[new me(0)];return[o]});U(Re,ce,(o,i)=>(o.oldRange&&(o.oldRange=o.oldRange._getTransformedByMergeOperation(i)),o.newRange&&(o.newRange=o.newRange._getTransformedByMergeOperation(i)),[o]));U(Re,W,(o,i)=>{const e=[o];if(o.oldRange&&(o.oldRange=v._createFromRanges(o.oldRange._getTransformedByMoveOperation(i))),o.newRange){const t=o.newRange._getTransformedByMoveOperation(i);o.newRange=t[0];for(let n=1;n<t.length;n++){const s=o.clone();s.oldRange=null,s.newRange=t[n],s.baseVersion=-1,e.push(s)}}return e});U(Re,K,(o,i,e)=>{if(o.oldRange&&(o.oldRange=o.oldRange._getTransformedBySplitOperation(i)),o.newRange){if(e.abRelation){const t=o.newRange._getTransformedBySplitOperation(i);return o.newRange.start.isEqual(i.splitPosition)?e.abRelation.wasStartBeforeMergedElement?o.newRange.start=C._createAt(i.insertionPosition):e.abRelation.wasInLeftElement?o.newRange.start=C._createAt(o.newRange.start):o.newRange.start=C._createAt(i.moveTargetPosition):o.newRange.start=t.start,o.newRange.end.isEqual(i.splitPosition)?o.newRange.end.isEqual(i.splitPosition)&&e.abRelation.wasEndBeforeMergedElement?o.newRange.end=C._createAt(i.insertionPosition):e.abRelation.wasInRightElement?o.newRange.end=C._createAt(i.moveTargetPosition):o.newRange.end=C._createAt(o.newRange.end):o.newRange.end=t.end,[o]}o.newRange=o.newRange._getTransformedBySplitOperation(i)}return[o]});U(ce,be,(o,i)=>(o.sourcePosition.hasSameParentAs(i.position)&&(o.howMany+=i.howMany),o.sourcePosition=o.sourcePosition._getTransformedByInsertOperation(i),o.targetPosition=o.targetPosition._getTransformedByInsertOperation(i),[o]));U(ce,ce,(o,i,e)=>{if(o.sourcePosition.isEqual(i.sourcePosition)&&o.targetPosition.isEqual(i.targetPosition))if(e.bWasUndone){const t=i.graveyardPosition.path.slice();return t.push(0),o.sourcePosition=new C(i.graveyardPosition.root,t),o.howMany=0,[o]}else return[new me(0)];if(o.sourcePosition.isEqual(i.sourcePosition)&&!o.targetPosition.isEqual(i.targetPosition)&&!e.bWasUndone&&e.abRelation!="splitAtSource"){const t=o.targetPosition.root.rootName=="$graveyard",n=i.targetPosition.root.rootName=="$graveyard";if(n&&!t||!(t&&!n)&&e.aIsStrong){const l=i.targetPosition._getTransformedByMergeOperation(i),c=o.targetPosition._getTransformedByMergeOperation(i);return[new W(l,o.howMany,c,0)]}else return[new me(0)]}return o.sourcePosition.hasSameParentAs(i.targetPosition)&&(o.howMany+=i.howMany),o.sourcePosition=o.sourcePosition._getTransformedByMergeOperation(i),o.targetPosition=o.targetPosition._getTransformedByMergeOperation(i),(!o.graveyardPosition.isEqual(i.graveyardPosition)||!e.aIsStrong)&&(o.graveyardPosition=o.graveyardPosition._getTransformedByMergeOperation(i)),[o]});U(ce,W,(o,i,e)=>{const t=v._createFromPositionAndShift(i.sourcePosition,i.howMany);return i.type=="remove"&&!e.bWasUndone&&o.deletionPosition.hasSameParentAs(i.sourcePosition)&&t.containsPosition(o.sourcePosition)?[new me(0)]:(i.sourcePosition.getShiftedBy(i.howMany).isEqual(o.sourcePosition)?o.sourcePosition.stickiness="toNone":i.targetPosition.isEqual(o.sourcePosition)&&e.abRelation=="mergeSourceAffected"?o.sourcePosition.stickiness="toNext":i.sourcePosition.isEqual(o.targetPosition)?(o.targetPosition.stickiness="toNone",o.howMany-=i.howMany):i.targetPosition.isEqual(o.targetPosition)&&e.abRelation=="mergeTargetWasBefore"?(o.targetPosition.stickiness="toPrevious",o.howMany+=i.howMany):(o.sourcePosition.hasSameParentAs(i.targetPosition)&&(o.howMany+=i.howMany),o.sourcePosition.hasSameParentAs(i.sourcePosition)&&(o.howMany-=i.howMany)),o.sourcePosition=o.sourcePosition._getTransformedByMoveOperation(i),o.targetPosition=o.targetPosition._getTransformedByMoveOperation(i),o.sourcePosition.stickiness="toPrevious",o.targetPosition.stickiness="toNext",o.graveyardPosition.isEqual(i.targetPosition)||(o.graveyardPosition=o.graveyardPosition._getTransformedByMoveOperation(i)),[o])});U(ce,K,(o,i,e)=>{if(i.graveyardPosition&&(o.graveyardPosition=o.graveyardPosition._getTransformedByDeletion(i.graveyardPosition,1),o.deletionPosition.isEqual(i.graveyardPosition)&&(o.howMany=i.howMany)),o.targetPosition.isEqual(i.splitPosition)&&(i.graveyardPosition&&o.deletionPosition.isEqual(i.graveyardPosition)||e.abRelation=="mergeTargetNotMoved"))return o.sourcePosition=o.sourcePosition._getTransformedBySplitOperation(i),[o];if(o.sourcePosition.isEqual(i.splitPosition)){if(e.abRelation=="mergeSourceNotMoved")return o.howMany=0,o.targetPosition=o.targetPosition._getTransformedBySplitOperation(i),[o];if(e.abRelation=="mergeSameElement"||o.sourcePosition.offset>0)return o.sourcePosition=i.moveTargetPosition.clone(),o.targetPosition=o.targetPosition._getTransformedBySplitOperation(i),[o]}return o.sourcePosition.hasSameParentAs(i.splitPosition)&&(o.howMany=i.splitPosition.offset),o.sourcePosition=o.sourcePosition._getTransformedBySplitOperation(i),o.targetPosition=o.targetPosition._getTransformedBySplitOperation(i),[o]});U(W,be,(o,i)=>{const t=v._createFromPositionAndShift(o.sourcePosition,o.howMany)._getTransformedByInsertOperation(i,!1)[0];return o.sourcePosition=t.start,o.howMany=t.end.offset-t.start.offset,o.targetPosition.isEqual(i.position)||(o.targetPosition=o.targetPosition._getTransformedByInsertOperation(i)),[o]});U(W,W,(o,i,e)=>{const t=v._createFromPositionAndShift(o.sourcePosition,o.howMany),n=v._createFromPositionAndShift(i.sourcePosition,i.howMany);let s=e.aIsStrong,r=!e.aIsStrong;e.abRelation=="insertBefore"||e.baRelation=="insertAfter"?r=!0:(e.abRelation=="insertAfter"||e.baRelation=="insertBefore")&&(r=!1);let a;if(o.targetPosition.isEqual(i.targetPosition)&&r?a=o.targetPosition._getTransformedByDeletion(i.sourcePosition,i.howMany):a=o.targetPosition._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),Fc(o,i)&&Fc(i,o))return[i.getReversed()];if(t.containsPosition(i.targetPosition)&&t.containsRange(n,!0))return t.start=t.start._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),t.end=t.end._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),Di([t],a);if(n.containsPosition(o.targetPosition)&&n.containsRange(t,!0))return t.start=t.start._getCombined(i.sourcePosition,i.getMovedRangeStart()),t.end=t.end._getCombined(i.sourcePosition,i.getMovedRangeStart()),Di([t],a);const d=Ee(o.sourcePosition.getParentPath(),i.sourcePosition.getParentPath());if(d=="prefix"||d=="extension")return t.start=t.start._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),t.end=t.end._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),Di([t],a);o.type=="remove"&&i.type!="remove"&&!e.aWasUndone&&!e.forceWeakRemove?s=!0:o.type!="remove"&&i.type=="remove"&&!e.bWasUndone&&!e.forceWeakRemove&&(s=!1);const h=[],m=t.getDifference(n);for(const f of m){f.start=f.start._getTransformedByDeletion(i.sourcePosition,i.howMany),f.end=f.end._getTransformedByDeletion(i.sourcePosition,i.howMany);const p=Ee(f.start.getParentPath(),i.getMovedRangeStart().getParentPath())=="same",b=f._getTransformedByInsertion(i.getMovedRangeStart(),i.howMany,p);h.push(...b)}const g=t.getIntersection(n);return g!==null&&s&&(g.start=g.start._getCombined(i.sourcePosition,i.getMovedRangeStart()),g.end=g.end._getCombined(i.sourcePosition,i.getMovedRangeStart()),h.length===0?h.push(g):h.length==1?n.start.isBefore(t.start)||n.start.isEqual(t.start)?h.unshift(g):h.push(g):h.splice(1,0,g)),h.length===0?[new me(o.baseVersion)]:Di(h,a)});U(W,K,(o,i,e)=>{let t=o.targetPosition.clone();(!o.targetPosition.isEqual(i.insertionPosition)||!i.graveyardPosition||e.abRelation=="moveTargetAfter")&&(t=o.targetPosition._getTransformedBySplitOperation(i));const n=v._createFromPositionAndShift(o.sourcePosition,o.howMany);if(n.end.isEqual(i.insertionPosition))return i.graveyardPosition||o.howMany++,o.targetPosition=t,[o];if(n.start.hasSameParentAs(i.splitPosition)&&n.containsPosition(i.splitPosition)){let a=new v(i.splitPosition,n.end);a=a._getTransformedBySplitOperation(i);const l=[new v(n.start,i.splitPosition),a];return Di(l,t)}o.targetPosition.isEqual(i.splitPosition)&&e.abRelation=="insertAtSource"&&(t=i.moveTargetPosition),o.targetPosition.isEqual(i.insertionPosition)&&e.abRelation=="insertBetween"&&(t=o.targetPosition);const r=[n._getTransformedBySplitOperation(i)];if(i.graveyardPosition){const a=n.start.isEqual(i.graveyardPosition)||n.containsPosition(i.graveyardPosition);o.howMany>1&&a&&!e.aWasUndone&&r.push(v._createFromPositionAndShift(i.insertionPosition,1))}return Di(r,t)});U(W,ce,(o,i,e)=>{const t=v._createFromPositionAndShift(o.sourcePosition,o.howMany);if(i.deletionPosition.hasSameParentAs(o.sourcePosition)&&t.containsPosition(i.sourcePosition)){if(o.type=="remove"&&!e.forceWeakRemove){if(!e.aWasUndone){const r=[];let a=i.graveyardPosition.clone(),l=i.targetPosition._getTransformedByMergeOperation(i);const c=o.targetPosition.getTransformedByOperation(i);o.howMany>1&&(r.push(new W(o.sourcePosition,o.howMany-1,c,0)),a=a._getTransformedByMove(o.sourcePosition,c,o.howMany-1),l=l._getTransformedByMove(o.sourcePosition,c,o.howMany-1));const d=i.deletionPosition._getCombined(o.sourcePosition,c),h=new W(a,1,d,0),m=h.getMovedRangeStart().path.slice();m.push(0);const g=new C(h.targetPosition.root,m);l=l._getTransformedByMove(a,d,1);const f=new W(l,i.howMany,g,0);return r.push(h),r.push(f),r}}else if(o.howMany==1)return e.bWasUndone?(o.sourcePosition=i.graveyardPosition.clone(),o.targetPosition=o.targetPosition._getTransformedByMergeOperation(i),[o]):[new me(0)]}const s=v._createFromPositionAndShift(o.sourcePosition,o.howMany)._getTransformedByMergeOperation(i);return o.sourcePosition=s.start,o.howMany=s.end.offset-s.start.offset,o.targetPosition=o.targetPosition._getTransformedByMergeOperation(i),[o]});U(Ne,be,(o,i)=>(o.position=o.position._getTransformedByInsertOperation(i),[o]));U(Ne,ce,(o,i)=>o.position.isEqual(i.deletionPosition)?(o.position=i.graveyardPosition.clone(),o.position.stickiness="toNext",[o]):(o.position=o.position._getTransformedByMergeOperation(i),[o]));U(Ne,W,(o,i)=>(o.position=o.position._getTransformedByMoveOperation(i),[o]));U(Ne,Ne,(o,i,e)=>{if(o.position.isEqual(i.position))if(e.aIsStrong)o.oldName=i.newName;else return[new me(0)];return[o]});U(Ne,K,(o,i)=>{const e=o.position.path,t=i.splitPosition.getParentPath();if(Ee(e,t)=="same"&&!i.graveyardPosition){const n=new Ne(o.position.getShiftedBy(1),o.oldName,o.newName,0);return[o,n]}return o.position=o.position._getTransformedBySplitOperation(i),[o]});U(Et,Et,(o,i,e)=>{if(o.root===i.root&&o.key===i.key){if(!e.aIsStrong||o.newValue===i.newValue)return[new me(0)];o.oldValue=i.newValue}return[o]});U(ft,ft,(o,i)=>o.rootName===i.rootName&&o.isAdd===i.isAdd?[new me(0)]:[o]);U(K,be,(o,i)=>(o.splitPosition.hasSameParentAs(i.position)&&o.splitPosition.offset<i.position.offset&&(o.howMany+=i.howMany),o.splitPosition=o.splitPosition._getTransformedByInsertOperation(i),o.insertionPosition=o.insertionPosition._getTransformedByInsertOperation(i),[o]));U(K,ce,(o,i,e)=>{if(!o.graveyardPosition&&!e.bWasUndone&&o.splitPosition.hasSameParentAs(i.sourcePosition)){const t=i.graveyardPosition.path.slice();t.push(0);const n=new C(i.graveyardPosition.root,t),s=K.getInsertionPosition(new C(i.graveyardPosition.root,t)),r=new K(n,0,s,null,0);return o.splitPosition=o.splitPosition._getTransformedByMergeOperation(i),o.insertionPosition=K.getInsertionPosition(o.splitPosition),o.graveyardPosition=r.insertionPosition.clone(),o.graveyardPosition.stickiness="toNext",[r,o]}return o.splitPosition.hasSameParentAs(i.deletionPosition)&&!o.splitPosition.isAfter(i.deletionPosition)&&o.howMany--,o.splitPosition.hasSameParentAs(i.targetPosition)&&(o.howMany+=i.howMany),o.splitPosition=o.splitPosition._getTransformedByMergeOperation(i),o.insertionPosition=K.getInsertionPosition(o.splitPosition),o.graveyardPosition&&(o.graveyardPosition=o.graveyardPosition._getTransformedByMergeOperation(i)),[o]});U(K,W,(o,i,e)=>{const t=v._createFromPositionAndShift(i.sourcePosition,i.howMany);if(o.graveyardPosition){const s=t.start.isEqual(o.graveyardPosition)||t.containsPosition(o.graveyardPosition);if(!e.bWasUndone&&s){const r=o.splitPosition._getTransformedByMoveOperation(i),a=o.graveyardPosition._getTransformedByMoveOperation(i),l=a.path.slice();l.push(0);const c=new C(a.root,l);return[new W(r,o.howMany,c,0)]}o.graveyardPosition=o.graveyardPosition._getTransformedByMoveOperation(i)}const n=o.splitPosition.isEqual(i.targetPosition);if(n&&(e.baRelation=="insertAtSource"||e.abRelation=="splitBefore"))return o.howMany+=i.howMany,o.splitPosition=o.splitPosition._getTransformedByDeletion(i.sourcePosition,i.howMany),o.insertionPosition=K.getInsertionPosition(o.splitPosition),[o];if(n&&e.abRelation&&e.abRelation.howMany){const{howMany:s,offset:r}=e.abRelation;return o.howMany+=s,o.splitPosition=o.splitPosition.getShiftedBy(r),[o]}if(o.splitPosition.hasSameParentAs(i.sourcePosition)&&t.containsPosition(o.splitPosition)){const s=i.howMany-(o.splitPosition.offset-i.sourcePosition.offset);return o.howMany-=s,o.splitPosition.hasSameParentAs(i.targetPosition)&&o.splitPosition.offset<i.targetPosition.offset&&(o.howMany+=i.howMany),o.splitPosition=i.sourcePosition.clone(),o.insertionPosition=K.getInsertionPosition(o.splitPosition),[o]}return i.sourcePosition.isEqual(i.targetPosition)||(o.splitPosition.hasSameParentAs(i.sourcePosition)&&o.splitPosition.offset<=i.sourcePosition.offset&&(o.howMany-=i.howMany),o.splitPosition.hasSameParentAs(i.targetPosition)&&o.splitPosition.offset<i.targetPosition.offset&&(o.howMany+=i.howMany)),o.splitPosition.stickiness="toNone",o.splitPosition=o.splitPosition._getTransformedByMoveOperation(i),o.splitPosition.stickiness="toNext",o.graveyardPosition?o.insertionPosition=o.insertionPosition._getTransformedByMoveOperation(i):o.insertionPosition=K.getInsertionPosition(o.splitPosition),[o]});U(K,K,(o,i,e)=>{if(o.splitPosition.isEqual(i.splitPosition)){if(!o.graveyardPosition&&!i.graveyardPosition)return[new me(0)];if(o.graveyardPosition&&i.graveyardPosition&&o.graveyardPosition.isEqual(i.graveyardPosition))return[new me(0)];if(e.abRelation=="splitBefore")return o.howMany=0,o.graveyardPosition=o.graveyardPosition._getTransformedBySplitOperation(i),[o]}if(o.graveyardPosition&&i.graveyardPosition&&o.graveyardPosition.isEqual(i.graveyardPosition)){const t=o.splitPosition.root.rootName=="$graveyard",n=i.splitPosition.root.rootName=="$graveyard";if(n&&!t||!(t&&!n)&&e.aIsStrong){const l=[];return i.howMany&&l.push(new W(i.moveTargetPosition,i.howMany,i.splitPosition,0)),o.howMany&&l.push(new W(o.splitPosition,o.howMany,o.moveTargetPosition,0)),l}else return[new me(0)]}if(o.graveyardPosition&&(o.graveyardPosition=o.graveyardPosition._getTransformedBySplitOperation(i)),o.splitPosition.isEqual(i.insertionPosition)&&e.abRelation=="splitBefore")return o.howMany++,[o];if(i.splitPosition.isEqual(o.insertionPosition)&&e.baRelation=="splitBefore"){const t=i.insertionPosition.path.slice();t.push(0);const n=new C(i.insertionPosition.root,t),s=new W(o.insertionPosition,1,n,0);return[o,s]}return o.splitPosition.hasSameParentAs(i.splitPosition)&&o.splitPosition.offset<i.splitPosition.offset&&(o.howMany-=i.howMany),o.splitPosition=o.splitPosition._getTransformedBySplitOperation(i),o.insertionPosition=K.getInsertionPosition(o.splitPosition),[o]});function Fc(o,i){return o.targetPosition._getTransformedByDeletion(i.sourcePosition,i.howMany)===null}function Di(o,i){const e=[];for(let t=0;t<o.length;t++){const n=o[t],s=new W(n.start,n.end.offset-n.start.offset,i,0);e.push(s);for(let r=t+1;r<o.length;r++)o[r]=o[r]._getTransformedByMove(s.sourcePosition,s.targetPosition,s.howMany)[0];i=i._getTransformedByMove(s.sourcePosition,s.targetPosition,s.howMany)}return e}class pe extends G(C){constructor(i,e,t="toNone"){if(super(i,e,t),!this.root.is("rootElement"))throw new w("model-liveposition-root-not-rootelement",i);Xy.call(this)}detach(){this.stopListening()}toPosition(){return new C(this.root,this.path.slice(),this.stickiness)}static fromPosition(i,e){return new this(i.root,i.path.slice(),e||i.stickiness)}}pe.prototype.is=function(o){return o==="livePosition"||o==="model:livePosition"||o=="position"||o==="model:position"};function Xy(){this.listenTo(this.root.document.model,"applyOperation",(o,i)=>{const e=i[0];e.isDocumentOperation&&Qy.call(this,e)},{priority:"low"})}function Qy(o){const i=this.getTransformedByOperation(o);if(!this.isEqual(i)){const e=this.toPosition();this.path=i.path,this.root=i.root,this.fire("change",e)}}class Ci{constructor(i={}){u(this,"operations");u(this,"isUndoable");u(this,"isLocal");u(this,"isUndo");u(this,"isTyping");typeof i=="string"&&(i=i==="transparent"?{isUndoable:!1}:{},F("batch-constructor-deprecated-string-type"));const{isUndoable:e=!0,isLocal:t=!0,isUndo:n=!1,isTyping:s=!1}=i;this.operations=[],this.isUndoable=e,this.isLocal=t,this.isUndo=n,this.isTyping=s}get type(){return F("batch-type-deprecated"),"default"}get baseVersion(){for(const i of this.operations)if(i.baseVersion!==null)return i.baseVersion;return null}addOperation(i){return i.isDocumentOperation&&(i.batch=this,this.operations.push(i)),i}}const In=class In{constructor(i){u(this,"_markerCollection");u(this,"_changesInElement",new Map);u(this,"_elementsSnapshots",new Map);u(this,"_elementChildrenSnapshots",new Map);u(this,"_elementState",new Map);u(this,"_changedMarkers",new Map);u(this,"_changedRoots",new Map);u(this,"_changeCount",0);u(this,"_cachedChanges",null);u(this,"_cachedChangesWithGraveyard",null);u(this,"_refreshedItems",new Set);this._markerCollection=i}get isEmpty(){return this._changesInElement.size==0&&this._changedMarkers.size==0&&this._changedRoots.size==0}bufferOperation(i){const e=i;switch(e.type){case"insert":{if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break}case"addAttribute":case"removeAttribute":case"changeAttribute":{for(const t of e.range.getItems({shallow:!0}))this._isInInsertedElement(t.parent)||this._markAttribute(t);break}case"remove":case"move":case"reinsert":{if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;const t=this._isInInsertedElement(e.sourcePosition.parent),n=this._isInInsertedElement(e.targetPosition.parent);t||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),n||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);const s=v._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const r of s.getItems({shallow:!0}))this._setElementState(r,"move");break}case"rename":{if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);const t=v._createFromPositionAndShift(e.position,1);for(const n of this._markerCollection.getMarkersIntersectingRange(t)){const s=n.getData();this.bufferMarkerChange(n.name,s,s)}this._setElementState(e.position.nodeAfter,"rename");break}case"split":{const t=e.splitPosition.parent;if(!this._isInInsertedElement(t)){this._markRemove(t,e.splitPosition.offset,e.howMany);const n=v._createFromPositionAndShift(e.splitPosition,e.howMany);for(const s of n.getItems({shallow:!0}))this._setElementState(s,"move")}this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&(this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1),this._setElementState(e.graveyardPosition.nodeAfter,"move"));break}case"merge":{const t=e.sourcePosition.parent;this._isInInsertedElement(t.parent)||this._markRemove(t.parent,t.startOffset,1);const n=e.graveyardPosition.parent;this._markInsert(n,e.graveyardPosition.offset,1),this._setElementState(t,"move");const s=e.targetPosition.parent;if(!this._isInInsertedElement(s)){this._markInsert(s,e.targetPosition.offset,t.maxOffset);const r=v._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const a of r.getItems({shallow:!0}))this._setElementState(a,"move")}break}case"detachRoot":case"addRoot":{const t=e.affectedSelectable;if(!t._isLoaded||t.isAttached()==e.isAdd)return;this._bufferRootStateChange(e.rootName,e.isAdd);break}case"addRootAttribute":case"removeRootAttribute":case"changeRootAttribute":{if(!e.root._isLoaded)return;const t=e.root.rootName;this._bufferRootAttributeChange(t,e.key,e.oldValue,e.newValue);break}}this._cachedChanges=null}bufferMarkerChange(i,e,t){e.range&&e.range.root.is("rootElement")&&!e.range.root._isLoaded&&(e.range=null),t.range&&t.range.root.is("rootElement")&&!t.range.root._isLoaded&&(t.range=null);let n=this._changedMarkers.get(i);n?n.newMarkerData=t:(n={newMarkerData:t,oldMarkerData:e},this._changedMarkers.set(i,n)),n.oldMarkerData.range==null&&t.range==null&&this._changedMarkers.delete(i)}getMarkersToRemove(){const i=[];for(const[e,t]of this._changedMarkers)t.oldMarkerData.range!=null&&i.push({name:e,range:t.oldMarkerData.range});return i}getMarkersToAdd(){const i=[];for(const[e,t]of this._changedMarkers)t.newMarkerData.range!=null&&i.push({name:e,range:t.newMarkerData.range});return i}getChangedMarkers(){return Array.from(this._changedMarkers).map(([i,e])=>({name:i,data:{oldRange:e.oldMarkerData.range,newRange:e.newMarkerData.range}}))}hasDataChanges(){if(this.getChanges().length||this._changedRoots.size>0)return!0;for(const{newMarkerData:i,oldMarkerData:e}of this._changedMarkers.values()){if(i.affectsData!==e.affectsData)return!0;if(i.affectsData){const t=i.range&&!e.range,n=!i.range&&e.range,s=i.range&&e.range&&!i.range.isEqual(e.range);if(t||n||s)return!0}}return!1}getChanges(i={}){if(this._cachedChanges)return i.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let e=[];for(const t of this._changesInElement.keys()){const n=this._changesInElement.get(t).sort((d,h)=>d.offset===h.offset?d.type!=h.type?d.type=="remove"?-1:1:0:d.offset<h.offset?-1:1),s=this._elementChildrenSnapshots.get(t),r=Hc(t.getChildren()),a=e_(s.length,n);let l=0,c=0;for(const d of a)if(d==="i"){const h=this._getDiffActionForNode(r[l].node,"insert"),m=this._elementsSnapshots.get(r[l].node),g=this._getInsertDiff(t,l,h,r[l],m);e.push(g),l++}else if(d==="r"){const h=this._getDiffActionForNode(s[c].node,"remove"),m=this._getRemoveDiff(t,l,h,s[c]);e.push(m),c++}else if(d==="a"){const h=s[c].attributes,m=r[l].attributes;let g;if(r[l].name=="$text")g=new v(C._createAt(t,l),C._createAt(t,l+1));else{const p=t.offsetToIndex(l);g=new v(C._createAt(t,l),C._createAt(t.getChild(p),0))}const f=this._getAttributesDiff(g,h,m);e.push(...f),l++,c++}else l++,c++}e.sort((t,n)=>t.position.root!=n.position.root?t.position.root.rootName<n.position.root.rootName?-1:1:t.position.isEqual(n.position)?t.changeCount-n.changeCount:t.position.isBefore(n.position)?-1:1);for(let t=1,n=0;t<e.length;t++){const s=e[n],r=e[t],a=s.type=="remove"&&r.type=="remove"&&s.name=="$text"&&r.name=="$text"&&s.position.isEqual(r.position),l=s.type=="insert"&&r.type=="insert"&&s.name=="$text"&&r.name=="$text"&&s.position.parent==r.position.parent&&s.position.offset+s.length==r.position.offset,c=s.type=="attribute"&&r.type=="attribute"&&s.position.parent==r.position.parent&&s.range.isFlat&&r.range.isFlat&&s.position.offset+s.length==r.position.offset&&s.attributeKey==r.attributeKey&&s.attributeOldValue==r.attributeOldValue&&s.attributeNewValue==r.attributeNewValue;a||l||c?(s.length++,c&&(s.range.end=s.range.end.getShiftedBy(1)),e[t]=null):n=t}e=e.filter(t=>t);for(const t of e)delete t.changeCount,t.type=="attribute"&&(delete t.position,delete t.length);return this._changeCount=0,this._cachedChangesWithGraveyard=e,this._cachedChanges=e.filter(t_),i.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getChangedRoots(){return Array.from(this._changedRoots.values()).map(i=>{const e={...i};return e.state!==void 0&&delete e.attributes,e})}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementChildrenSnapshots.clear(),this._elementsSnapshots.clear(),this._elementState.clear(),this._changedMarkers.clear(),this._changedRoots.clear(),this._refreshedItems.clear(),this._cachedChanges=null}_refreshItem(i){if(this._isInInsertedElement(i.parent))return;this._markRemove(i.parent,i.startOffset,i.offsetSize),this._markInsert(i.parent,i.startOffset,i.offsetSize),this._refreshedItems.add(i),this._setElementState(i,"refresh");const e=v._createOn(i);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const n=t.getData();this.bufferMarkerChange(t.name,n,n)}this._cachedChanges=null}_bufferRootLoad(i){if(i.isAttached()){this._bufferRootStateChange(i.rootName,!0),this._markInsert(i,0,i.maxOffset);for(const e of i.getAttributeKeys())this._bufferRootAttributeChange(i.rootName,e,null,i.getAttribute(e));for(const e of this._markerCollection)if(e.getRange().root==i){const t=e.getData();this.bufferMarkerChange(e.name,{...t,range:null},t)}}}_bufferRootStateChange(i,e){if(!this._changedRoots.has(i)){this._changedRoots.set(i,{name:i,state:e?"attached":"detached"});return}const t=this._changedRoots.get(i);t.state!==void 0?(delete t.state,t.attributes===void 0&&this._changedRoots.delete(i)):t.state=e?"attached":"detached"}_bufferRootAttributeChange(i,e,t,n){const s=this._changedRoots.get(i)||{name:i},r=s.attributes||{};if(r[e]){const a=r[e];n===a.oldValue?delete r[e]:a.newValue=n}else r[e]={oldValue:t,newValue:n};Object.entries(r).length===0?(delete s.attributes,s.state===void 0&&this._changedRoots.delete(i)):(s.attributes=r,this._changedRoots.set(i,s))}_markInsert(i,e,t){if(i.root.is("rootElement")&&!i.root._isLoaded)return;const n={type:"insert",offset:e,howMany:t,count:this._changeCount++};this._markChange(i,n)}_markRemove(i,e,t){if(i.root.is("rootElement")&&!i.root._isLoaded)return;const n={type:"remove",offset:e,howMany:t,count:this._changeCount++};this._markChange(i,n),this._removeAllNestedChanges(i,e,t)}_markAttribute(i){if(i.root.is("rootElement")&&!i.root._isLoaded)return;const e={type:"attribute",offset:i.startOffset,howMany:i.offsetSize,count:this._changeCount++};this._markChange(i.parent,e)}_markChange(i,e){this._makeSnapshots(i);const t=this._getChangesForElement(i);this._handleChange(e,t),t.push(e);for(let n=0;n<t.length;n++)t[n].howMany<1&&(t.splice(n,1),n--)}_setElementState(i,e){if(!i.is("element"))return;const t=In._statesPriority.indexOf(this._elementState.get(i));In._statesPriority.indexOf(e)>t&&this._elementState.set(i,e)}_getDiffActionForNode(i,e){if(!i.is("element")||!this._elementsSnapshots.has(i))return e;const t=this._elementState.get(i);return!t||t=="move"?e:t}_getChangesForElement(i){let e;return this._changesInElement.has(i)?e=this._changesInElement.get(i):(e=[],this._changesInElement.set(i,e)),e}_makeSnapshots(i){if(this._elementChildrenSnapshots.has(i))return;const e=Hc(i.getChildren());this._elementChildrenSnapshots.set(i,e);for(const t of e)this._elementsSnapshots.set(t.node,t)}_handleChange(i,e){i.nodesToHandle=i.howMany;for(const t of e){const n=i.offset+i.howMany,s=t.offset+t.howMany;if(i.type=="insert"&&(t.type=="insert"&&(i.offset<=t.offset?t.offset+=i.howMany:i.offset<s&&(t.howMany+=i.nodesToHandle,i.nodesToHandle=0)),t.type=="remove"&&i.offset<t.offset&&(t.offset+=i.howMany),t.type=="attribute")){if(i.offset<=t.offset)t.offset+=i.howMany;else if(i.offset<s){const r=t.howMany;t.howMany=i.offset-t.offset,e.unshift({type:"attribute",offset:n,howMany:r-t.howMany,count:this._changeCount++})}}if(i.type=="remove"){if(t.type=="insert"){if(n<=t.offset)t.offset-=i.howMany;else if(n<=s)if(i.offset<t.offset){const r=n-t.offset;t.offset=i.offset,t.howMany-=r,i.nodesToHandle-=r}else t.howMany-=i.nodesToHandle,i.nodesToHandle=0;else if(i.offset<=t.offset)i.nodesToHandle-=t.howMany,t.howMany=0;else if(i.offset<s){const r=s-i.offset;t.howMany-=r,i.nodesToHandle-=r}}if(t.type=="remove"&&(n<=t.offset?t.offset-=i.howMany:i.offset<t.offset&&(i.nodesToHandle+=t.howMany,t.howMany=0)),t.type=="attribute"){if(n<=t.offset)t.offset-=i.howMany;else if(i.offset<t.offset){const r=n-t.offset;t.offset=i.offset,t.howMany-=r}else if(i.offset<s)if(n<=s){const r=t.howMany;t.howMany=i.offset-t.offset;const a=r-t.howMany-i.nodesToHandle;e.unshift({type:"attribute",offset:i.offset,howMany:a,count:this._changeCount++})}else t.howMany-=s-i.offset}}if(i.type=="attribute"){if(t.type=="insert")if(i.offset<t.offset&&n>t.offset){if(n>s){const r={type:"attribute",offset:s,howMany:n-s,count:this._changeCount++};this._handleChange(r,e),e.push(r)}i.nodesToHandle=t.offset-i.offset,i.howMany=i.nodesToHandle}else i.offset>=t.offset&&i.offset<s&&(n>s?(i.nodesToHandle=n-s,i.offset=s):i.nodesToHandle=0);if(t.type=="remove"&&i.offset<t.offset&&n>t.offset){const r={type:"attribute",offset:t.offset,howMany:n-t.offset,count:this._changeCount++};this._handleChange(r,e),e.push(r),i.nodesToHandle=t.offset-i.offset,i.howMany=i.nodesToHandle}t.type=="attribute"&&(i.offset>=t.offset&&n<=s?(i.nodesToHandle=0,i.howMany=0,i.offset=0):i.offset<=t.offset&&n>=s&&(t.howMany=0))}}i.howMany=i.nodesToHandle,delete i.nodesToHandle}_getInsertDiff(i,e,t,n,s){const r={type:"insert",position:C._createAt(i,e),name:n.name,attributes:new Map(n.attributes),length:1,changeCount:this._changeCount++,action:t};return t!="insert"&&s&&(r.before={name:s.name,attributes:new Map(s.attributes)}),r}_getRemoveDiff(i,e,t,n){return{type:"remove",action:t,position:C._createAt(i,e),name:n.name,attributes:new Map(n.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(i,e,t){const n=[];t=new Map(t);for(const[s,r]of e){const a=t.has(s)?t.get(s):null;a!==r&&n.push({type:"attribute",position:i.start,range:i.clone(),length:1,attributeKey:s,attributeOldValue:r,attributeNewValue:a,changeCount:this._changeCount++}),t.delete(s)}for(const[s,r]of t)n.push({type:"attribute",position:i.start,range:i.clone(),length:1,attributeKey:s,attributeOldValue:null,attributeNewValue:r,changeCount:this._changeCount++});return n}_isInInsertedElement(i){const e=i.parent;if(!e)return!1;const t=this._changesInElement.get(e),n=i.startOffset;if(t){for(const s of t)if(s.type=="insert"&&n>=s.offset&&n<s.offset+s.howMany)return!0}return this._isInInsertedElement(e)}_removeAllNestedChanges(i,e,t){const n=new v(C._createAt(i,e),C._createAt(i,e+t));for(const s of n.getItems({shallow:!0}))s.is("element")&&(this._changesInElement.delete(s),this._removeAllNestedChanges(s,0,s.maxOffset))}};u(In,"_statesPriority",[void 0,"refresh","rename","move"]);let jr=In;function Uc(o){return{node:o,name:o.is("$text")?"$text":o.name,attributes:new Map(o.getAttributes())}}function Hc(o){const i=[];for(const e of o)if(e.is("$text"))for(let t=0;t<e.data.length;++t)i.push(Uc(e));else i.push(Uc(e));return i}function e_(o,i){const e=[];let t=0,n=0;for(const s of i){if(s.offset>t){for(let r=0;r<s.offset-t;r++)e.push("e");n+=s.offset-t}if(s.type=="insert"){for(let r=0;r<s.howMany;r++)e.push("i");t=s.offset+s.howMany}else if(s.type=="remove"){for(let r=0;r<s.howMany;r++)e.push("r");t=s.offset,n+=s.howMany}else{if(s.howMany>1500)for(let r=0;r<s.howMany;r++)e.push("a");else e.push(..."a".repeat(s.howMany).split(""));t=s.offset+s.howMany,n+=s.howMany}}if(n<o)for(let s=0;s<o-n-t;s++)e.push("e");return e}function t_(o){const i="position"in o&&o.position.root.rootName=="$graveyard",e="range"in o&&o.range.root.rootName=="$graveyard";return!i&&!e}class i_{constructor(){u(this,"_operations",[]);u(this,"_undoPairs",new Map);u(this,"_undoneOperations",new Set);u(this,"_baseVersionToOperationIndex",new Map);u(this,"_version",0);u(this,"_gaps",new Map)}get version(){return this._version}set version(i){this._operations.length&&i>this._version+1&&this._gaps.set(this._version,i),this._version=i}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(i){if(i.baseVersion!==this.version)throw new w("model-document-history-addoperation-incorrect-version",this,{operation:i,historyVersion:this.version});this._operations.push(i),this._version++,this._baseVersionToOperationIndex.set(i.baseVersion,this._operations.length-1)}getOperations(i,e=this.version){if(!this._operations.length)return[];const t=this._operations[0];i===void 0&&(i=t.baseVersion);let n=e-1;for(const[a,l]of this._gaps)i>a&&i<l&&(i=l),n>a&&n<l&&(n=a-1);if(n<t.baseVersion||i>this.lastOperation.baseVersion)return[];let s=this._baseVersionToOperationIndex.get(i);s===void 0&&(s=0);let r=this._baseVersionToOperationIndex.get(n);return r===void 0&&(r=this._operations.length-1),this._operations.slice(s,r+1)}getOperation(i){const e=this._baseVersionToOperationIndex.get(i);if(e!==void 0)return this._operations[e]}setOperationAsUndone(i,e){this._undoPairs.set(e,i),this._undoneOperations.add(i)}isUndoingOperation(i){return this._undoPairs.has(i)}isUndoneOperation(i){return this._undoneOperations.has(i)}getUndoneOperation(i){return this._undoPairs.get(i)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}class ns extends ${constructor(e,t,n="main"){super(t);u(this,"rootName");u(this,"_document");u(this,"_isAttached",!0);u(this,"_isLoaded",!0);this._document=e,this.rootName=n}get document(){return this._document}isAttached(){return this._isAttached}toJSON(){return this.rootName}}ns.prototype.is=function(o,i){return i?i===this.name&&(o==="rootElement"||o==="model:rootElement"||o==="element"||o==="model:element"):o==="rootElement"||o==="model:rootElement"||o==="element"||o==="model:element"||o==="node"||o==="model:node"};const Wc="$graveyard";class n_ extends G(){constructor(e){super();u(this,"model");u(this,"history");u(this,"selection");u(this,"roots");u(this,"differ");u(this,"isReadOnly");u(this,"_postFixers");u(this,"_hasSelectionChangedFromTheLastChangeBlock");this.model=e,this.history=new i_,this.selection=new lt(this),this.roots=new Be({idProperty:"rootName"}),this.differ=new jr(e.markers),this.isReadOnly=!1,this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",Wc),this.listenTo(e,"applyOperation",(t,n)=>{const s=n[0];s.isDocumentOperation&&this.differ.bufferOperation(s)},{priority:"high"}),this.listenTo(e,"applyOperation",(t,n)=>{const s=n[0];s.isDocumentOperation&&this.history.addOperation(s)},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(e.markers,"update",(t,n,s,r,a)=>{const l={...n.getData(),range:r};this.differ.bufferMarkerChange(n.name,a,l),s===null&&n.on("change",(c,d)=>{const h=n.getData();this.differ.bufferMarkerChange(n.name,{...h,range:d},h)})}),this.registerPostFixer(t=>{let n=!1;for(const s of this.roots)!s.isAttached()&&!s.isEmpty&&(t.remove(t.createRangeIn(s)),n=!0);for(const s of this.model.markers)s.getRange().root.isAttached()||(t.removeMarker(s),n=!0);return n})}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(Wc)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new w("model-document-createroot-name-exists",this,{name:t});const n=new ns(this,e,t);return this.roots.add(n),n}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(e=!1){return this.getRoots(e).map(t=>t.rootName)}getRoots(e=!1){return this.roots.filter(t=>t!=this.graveyard&&(e||t.isAttached())&&t._isLoaded)}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=La(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){const e=this.getRoots();return e.length?e[0]:this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,n=t.schema,s=t.createPositionFromPath(e,[0]);return n.getNearestSelectionRange(s)||t.createRange(s)}_validateSelectionRange(e){return e.start.isValid()&&e.end.isValid()&&qc(e.start)&&qc(e.end)}_callPostFixers(e){let t=!1;do for(const n of this._postFixers)if(this.selection.refresh(),t=n(e),t)break;while(t)}}function qc(o){const i=o.textNode;if(i){const e=i.data,t=o.offset-i.startOffset;return!za(e,t)&&!Na(e,t)}return!0}class o_ extends G(){constructor(){super(...arguments);u(this,"_markers",new Map)}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof Ii?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,n=!1,s=!1){const r=e instanceof Ii?e.name:e;if(r.includes(","))throw new w("markercollection-incorrect-marker-name",this);const a=this._markers.get(r);if(a){const d=a.getData(),h=a.getRange();let m=!1;return h.isEqual(t)||(a._attachLiveRange(Je.fromRange(t)),m=!0),n!=a.managedUsingOperations&&(a._managedUsingOperations=n,m=!0),typeof s=="boolean"&&s!=a.affectsData&&(a._affectsData=s,m=!0),m&&this.fire(`update:${r}`,a,h,t,d),a}const l=Je.fromRange(t),c=new Ii(r,l,n,s);return this._markers.set(r,c),this.fire(`update:${r}`,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof Ii?e.name:e,n=this._markers.get(t);return n?(this._markers.delete(t),this.fire(`update:${t}`,n,n.getRange(),null,n.getData()),this._destroyMarker(n),!0):!1}_refresh(e){const t=e instanceof Ii?e.name:e,n=this._markers.get(t);if(!n)throw new w("markercollection-refresh-marker-not-exists",this);const s=n.getRange();this.fire(`update:${t}`,n,s,s,n.getData())}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)t.getRange().getIntersection(e)!==null&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}class Ii extends G(Zt){constructor(e,t,n,s){super();u(this,"name");u(this,"_managedUsingOperations");u(this,"_affectsData");u(this,"_liveRange");this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=n,this._affectsData=s}get managedUsingOperations(){if(!this._liveRange)throw new w("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new w("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new w("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new w("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new w("marker-destroyed",this);return this._liveRange.toRange()}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}Ii.prototype.is=function(o){return o==="marker"||o==="model:marker"};class s_ extends Ge{constructor(e,t){super(null);u(this,"sourcePosition");u(this,"howMany");this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}get affectedSelectable(){return null}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new w("detach-operation-on-document-node",this)}_execute(){$m(v._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}class mt extends Zt{constructor(e){super();u(this,"markers",new Map);u(this,"_children",new Ln);e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return this.childCount===0}get nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}isAttached(){return!1}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const n of e)t=t.getChildAtOffset(n);return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const n of e)n.name?t.push($.fromJSON(n)):t.push(J.fromJSON(n));return new mt(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const n=r_(t);for(const s of n)s.parent!==null&&s._remove(),s.parent=this;this._children._insertNodes(e,n)}_removeChildren(e,t=1){const n=this._children._removeNodes(e,t);for(const s of n)s.parent=null;return n}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}}mt.prototype.is=function(o){return o==="documentFragment"||o==="model:documentFragment"};function r_(o){return typeof o=="string"?[new J(o)]:(je(o)||(o=[o]),Array.from(o).map(i=>typeof i=="string"?new J(i):i instanceof rt?new J(i.data,i.getAttributes()):i))}class a_{constructor(i,e){u(this,"model");u(this,"batch");this.model=i,this.batch=e}createText(i,e){return new J(i,e)}createElement(i,e){return new $(i,e)}createDocumentFragment(){return new mt}cloneElement(i,e=!0){return i._clone(e)}insert(i,e,t=0){if(this._assertWriterUsedCorrectly(),i instanceof J&&i.data=="")return;const n=C._createAt(e,t);if(i.parent)if($c(i.root,n.root)){this.move(v._createOn(i),n);return}else{if(i.root.document)throw new w("model-writer-insert-forbidden-move",this);this.remove(i)}const s=n.root.document?n.root.document.version:null,r=i instanceof mt?i._removeChildren(0,i.childCount):i,a=new be(n,r,s);if(i instanceof J&&(a.shouldReceiveAttributes=!0),this.batch.addOperation(a),this.model.applyOperation(a),i instanceof mt)for(const[l,c]of i.markers){const d=C._createAt(c.root,0),m={range:new v(c.start._getCombined(d,n),c.end._getCombined(d,n)),usingOperation:!0,affectsData:!0};this.model.markers.has(l)?this.updateMarker(l,m):this.addMarker(l,m)}}insertText(i,e,t,n){e instanceof mt||e instanceof $||e instanceof C?this.insert(this.createText(i),e,t):this.insert(this.createText(i,e),t,n)}insertElement(i,e,t,n){e instanceof mt||e instanceof $||e instanceof C?this.insert(this.createElement(i),e,t):this.insert(this.createElement(i,e),t,n)}append(i,e){this.insert(i,e,"end")}appendText(i,e,t){e instanceof mt||e instanceof $?this.insert(this.createText(i),e,"end"):this.insert(this.createText(i,e),t,"end")}appendElement(i,e,t){e instanceof mt||e instanceof $?this.insert(this.createElement(i),e,"end"):this.insert(this.createElement(i,e),t,"end")}setAttribute(i,e,t){if(this._assertWriterUsedCorrectly(),t instanceof v){const n=t.getMinimalFlatRanges();for(const s of n)jc(this,i,e,s)}else Gc(this,i,e,t)}setAttributes(i,e){for(const[t,n]of At(i))this.setAttribute(t,n,e)}removeAttribute(i,e){if(this._assertWriterUsedCorrectly(),e instanceof v){const t=e.getMinimalFlatRanges();for(const n of t)jc(this,i,null,n)}else Gc(this,i,null,e)}clearAttributes(i){this._assertWriterUsedCorrectly();const e=t=>{for(const n of t.getAttributeKeys())this.removeAttribute(n,t)};if(!(i instanceof v))e(i);else for(const t of i.getItems())e(t)}move(i,e,t){if(this._assertWriterUsedCorrectly(),!(i instanceof v))throw new w("writer-move-invalid-range",this);if(!i.isFlat)throw new w("writer-move-range-not-flat",this);const n=C._createAt(e,t);if(n.isEqual(i.start))return;if(this._addOperationForAffectedMarkers("move",i),!$c(i.root,n.root))throw new w("writer-move-different-document",this);const s=i.root.document?i.root.document.version:null,r=new W(i.start,i.end.offset-i.start.offset,n,s);this.batch.addOperation(r),this.model.applyOperation(r)}remove(i){this._assertWriterUsedCorrectly();const t=(i instanceof v?i:v._createOn(i)).getMinimalFlatRanges().reverse();for(const n of t)this._addOperationForAffectedMarkers("move",n),l_(n.start,n.end.offset-n.start.offset,this.batch,this.model)}merge(i){this._assertWriterUsedCorrectly();const e=i.nodeBefore,t=i.nodeAfter;if(this._addOperationForAffectedMarkers("merge",i),!(e instanceof $))throw new w("writer-merge-no-element-before",this);if(!(t instanceof $))throw new w("writer-merge-no-element-after",this);i.root.document?this._merge(i):this._mergeDetached(i)}createPositionFromPath(i,e,t){return this.model.createPositionFromPath(i,e,t)}createPositionAt(i,e){return this.model.createPositionAt(i,e)}createPositionAfter(i){return this.model.createPositionAfter(i)}createPositionBefore(i){return this.model.createPositionBefore(i)}createRange(i,e){return this.model.createRange(i,e)}createRangeIn(i){return this.model.createRangeIn(i)}createRangeOn(i){return this.model.createRangeOn(i)}createSelection(...i){return this.model.createSelection(...i)}_mergeDetached(i){const e=i.nodeBefore,t=i.nodeAfter;this.move(v._createIn(t),C._createAt(e,"end")),this.remove(t)}_merge(i){const e=C._createAt(i.nodeBefore,"end"),t=C._createAt(i.nodeAfter,0),n=i.root.document.graveyard,s=new C(n,[0]),r=i.root.document.version,a=new ce(t,i.nodeAfter.maxOffset,e,s,r);this.batch.addOperation(a),this.model.applyOperation(a)}rename(i,e){if(this._assertWriterUsedCorrectly(),!(i instanceof $))throw new w("writer-rename-not-element-instance",this);const t=i.root.document?i.root.document.version:null,n=new Ne(C._createBefore(i),i.name,e,t);this.batch.addOperation(n),this.model.applyOperation(n)}split(i,e){this._assertWriterUsedCorrectly();let t=i.parent;if(!t.parent)throw new w("writer-split-element-no-parent",this);if(e||(e=t.parent),!i.parent.getAncestors({includeSelf:!0}).includes(e))throw new w("writer-split-invalid-limit-element",this);let n,s;do{const r=t.root.document?t.root.document.version:null,a=t.maxOffset-i.offset,l=K.getInsertionPosition(i),c=new K(i,a,l,null,r);this.batch.addOperation(c),this.model.applyOperation(c),!n&&!s&&(n=t,s=i.parent.nextSibling),i=this.createPositionAfter(i.parent),t=i.parent}while(t!==e);return{position:i,range:new v(C._createAt(n,"end"),C._createAt(s,0))}}wrap(i,e){if(this._assertWriterUsedCorrectly(),!i.isFlat)throw new w("writer-wrap-range-not-flat",this);const t=e instanceof $?e:new $(e);if(t.childCount>0)throw new w("writer-wrap-element-not-empty",this);if(t.parent!==null)throw new w("writer-wrap-element-attached",this);this.insert(t,i.start);const n=new v(i.start.getShiftedBy(1),i.end.getShiftedBy(1));this.move(n,C._createAt(t,0))}unwrap(i){if(this._assertWriterUsedCorrectly(),i.parent===null)throw new w("writer-unwrap-element-no-parent",this);this.move(v._createIn(i),this.createPositionAfter(i)),this.remove(i)}addMarker(i,e){if(this._assertWriterUsedCorrectly(),!e||typeof e.usingOperation!="boolean")throw new w("writer-addmarker-no-usingoperation",this);const t=e.usingOperation,n=e.range,s=e.affectsData===void 0?!1:e.affectsData;if(this.model.markers.has(i))throw new w("writer-addmarker-marker-exists",this);if(!n)throw new w("writer-addmarker-no-range",this);return t?(an(this,i,null,n,s),this.model.markers.get(i)):this.model.markers._set(i,n,t,s)}updateMarker(i,e){this._assertWriterUsedCorrectly();const t=typeof i=="string"?i:i.name,n=this.model.markers.get(t);if(!n)throw new w("writer-updatemarker-marker-not-exists",this);if(!e){F("writer-updatemarker-reconvert-using-editingcontroller",{markerName:t}),this.model.markers._refresh(n);return}const s=typeof e.usingOperation=="boolean",r=typeof e.affectsData=="boolean",a=r?e.affectsData:n.affectsData;if(!s&&!e.range&&!r)throw new w("writer-updatemarker-wrong-options",this);const l=n.getRange(),c=e.range?e.range:l;if(s&&e.usingOperation!==n.managedUsingOperations){e.usingOperation?an(this,t,null,c,a):(an(this,t,l,null,a),this.model.markers._set(t,c,void 0,a));return}n.managedUsingOperations?an(this,t,l,c,a):this.model.markers._set(t,c,void 0,a)}removeMarker(i){this._assertWriterUsedCorrectly();const e=typeof i=="string"?i:i.name;if(!this.model.markers.has(e))throw new w("writer-removemarker-no-marker",this);const t=this.model.markers.get(e);if(!t.managedUsingOperations){this.model.markers._remove(e);return}const n=t.getRange();an(this,e,n,null,t.affectsData)}addRoot(i,e="$root"){this._assertWriterUsedCorrectly();const t=this.model.document.getRoot(i);if(t&&t.isAttached())throw new w("writer-addroot-root-exists",this);const n=this.model.document,s=new ft(i,e,!0,n,n.version);return this.batch.addOperation(s),this.model.applyOperation(s),this.model.document.getRoot(i)}detachRoot(i){this._assertWriterUsedCorrectly();const e=typeof i=="string"?this.model.document.getRoot(i):i;if(!e||!e.isAttached())throw new w("writer-detachroot-no-root",this);for(const s of this.model.markers)s.getRange().root===e&&this.removeMarker(s);for(const s of e.getAttributeKeys())this.removeAttribute(s,e);this.remove(this.createRangeIn(e));const t=this.model.document,n=new ft(e.rootName,e.name,!1,t,t.version);this.batch.addOperation(n),this.model.applyOperation(n)}setSelection(...i){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...i)}setSelectionFocus(i,e){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(i,e)}setSelectionAttribute(i,e){if(this._assertWriterUsedCorrectly(),typeof i=="string")this._setSelectionAttribute(i,e);else for(const[t,n]of At(i))this._setSelectionAttribute(t,n)}removeSelectionAttribute(i){if(this._assertWriterUsedCorrectly(),typeof i=="string")this._removeSelectionAttribute(i);else for(const e of i)this._removeSelectionAttribute(e)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(i){this.model.document.selection._restoreGravity(i)}_setSelectionAttribute(i,e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const n=lt._getStoreAttributeKey(i);this.setAttribute(n,e,t.anchor.parent)}t._setAttribute(i,e)}_removeSelectionAttribute(i){const e=this.model.document.selection;if(e.isCollapsed&&e.anchor.parent.isEmpty){const t=lt._getStoreAttributeKey(i);this.removeAttribute(t,e.anchor.parent)}e._removeAttribute(i)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new w("writer-incorrect-use",this)}_addOperationForAffectedMarkers(i,e){for(const t of this.model.markers){if(!t.managedUsingOperations)continue;const n=t.getRange();let s=!1;if(i==="move"){const r=e;s=r.containsPosition(n.start)||r.start.isEqual(n.start)||r.containsPosition(n.end)||r.end.isEqual(n.end)}else{const r=e,a=r.nodeBefore,l=r.nodeAfter,c=n.start.parent==a&&n.start.isAtEnd,d=n.end.parent==l&&n.end.offset==0,h=n.end.nodeAfter==l,m=n.start.nodeAfter==l;s=c||d||h||m}s&&this.updateMarker(t.name,{range:n})}}}function jc(o,i,e,t){const n=o.model,s=n.document;let r=t.start,a,l,c;for(const h of t.getWalker({shallow:!0}))c=h.item.getAttribute(i),a&&l!=c&&(l!=e&&d(),r=a),a=h.nextPosition,l=c;a instanceof C&&a!=r&&l!=e&&d();function d(){const h=new v(r,a),m=h.root.document?s.version:null,g=new de(h,i,l,e,m);o.batch.addOperation(g),n.applyOperation(g)}}function Gc(o,i,e,t){const n=o.model,s=n.document,r=t.getAttribute(i);let a,l;if(r!=e){if(t.root===t){const d=t.document?s.version:null;l=new Et(t,i,r,e,d)}else{a=new v(C._createBefore(t),o.createPositionAfter(t));const d=a.root.document?s.version:null;l=new de(a,i,r,e,d)}o.batch.addOperation(l),n.applyOperation(l)}}function an(o,i,e,t,n){const s=o.model,r=s.document,a=new Re(i,e,t,s.markers,!!n,r.version);o.batch.addOperation(a),s.applyOperation(a)}function l_(o,i,e,t){let n;if(o.root.document){const s=t.document,r=new C(s.graveyard,[0]);n=new W(o,i,r,s.version)}else n=new s_(o,i);e.addOperation(n),t.applyOperation(n)}function $c(o,i){return o===i||o instanceof ns&&i instanceof ns}function c_(o){o.document.registerPostFixer(i=>d_(i,o))}function d_(o,i){const e=i.document.selection,t=i.schema,n=[];let s=!1;for(const r of e.getRanges()){const a=$a(r,t);a&&!a.isEqual(r)?(n.push(a),s=!0):n.push(r)}return s&&o.setSelection(g_(n),{backward:e.isBackward}),!1}function $a(o,i){return o.isCollapsed?u_(o,i):h_(o,i)}function u_(o,i){const e=o.start,t=i.getNearestSelectionRange(e);if(!t){const s=e.getAncestors().reverse().find(r=>i.isObject(r));return s?v._createOn(s):null}if(!t.isCollapsed)return t;const n=t.start;return e.isEqual(n)?null:new v(n)}function h_(o,i){const{start:e,end:t}=o,n=i.checkChild(e,"$text"),s=i.checkChild(t,"$text"),r=i.getLimitElement(e),a=i.getLimitElement(t);if(r===a){if(n&&s)return null;if(m_(e,t,i)){const h=e.nodeAfter&&i.isSelectable(e.nodeAfter)?null:i.getNearestSelectionRange(e,"forward"),g=t.nodeBefore&&i.isSelectable(t.nodeBefore)?null:i.getNearestSelectionRange(t,"backward"),f=h?h.start:e,p=g?g.end:t;return new v(f,p)}}const l=r&&!r.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const d=e.nodeAfter&&t.nodeBefore&&e.nodeAfter.parent===t.nodeBefore.parent,h=l&&(!d||!Zc(e.nodeAfter,i)),m=c&&(!d||!Zc(t.nodeBefore,i));let g=e,f=t;return h&&(g=C._createBefore(Kc(r,i))),m&&(f=C._createAfter(Kc(a,i))),new v(g,f)}return null}function Kc(o,i){let e=o,t=e;for(;i.isLimit(t)&&t.parent;)e=t,t=t.parent;return e}function m_(o,i,e){const t=o.nodeAfter&&!e.isLimit(o.nodeAfter)||e.checkChild(o,"$text"),n=i.nodeBefore&&!e.isLimit(i.nodeBefore)||e.checkChild(i,"$text");return t||n}function g_(o){const i=[...o],e=new Set;let t=1;for(;t<i.length;){const s=i[t],r=i.slice(0,t);for(const[a,l]of r.entries())if(!e.has(a)){if(s.isEqual(l))e.add(a);else if(s.isIntersecting(l)){e.add(a),e.add(t);const c=s.getJoined(l);i.push(c)}}t++}return i.filter((s,r)=>!e.has(r))}function Zc(o,i){return o&&i.isSelectable(o)}function f_(o,i,e={}){if(i.isCollapsed)return;const t=i.getFirstRange();if(t.root.rootName=="$graveyard")return;const n=o.schema;o.change(s=>{if(!e.doNotResetEntireContent&&L_(n,i)){C_(s,i);return}const r={};if(!e.doNotAutoparagraph){const c=i.getSelectedElement();c&&Object.assign(r,n.getAttributesWithProperty(c,"copyOnReplace",!0))}let a,l;e.doNotFixSelection?(a=pe.fromPosition(t.start,"toPrevious"),l=pe.fromPosition(t.end,"toNext")):[a,l]=p_(t),a.isTouching(l)||s.remove(s.createRange(a,l)),e.leaveUnmerged||(b_(s,a,l),n.removeDisallowedAttributes(a.parent.getChildren(),s)),eg(s,i,a),!e.doNotAutoparagraph&&y_(n,a)&&Qm(s,a,i,r),a.detach(),l.detach()})}function p_(o){const i=o.root.document.model,e=o.start;let t=o.end;if(i.hasContent(o,{ignoreMarkers:!0})){const n=w_(t);if(n&&t.isTouching(i.createPositionAt(n,0))){const s=i.createSelection(o);i.modifySelection(s,{direction:"backward"});const r=s.getLastPosition(),a=i.createRange(r,t);i.hasContent(a,{ignoreMarkers:!0})||(t=r)}}return[pe.fromPosition(e,"toPrevious"),pe.fromPosition(t,"toNext")]}function w_(o){const i=o.parent,e=i.root.document.model.schema,t=i.getAncestors({parentFirst:!0,includeSelf:!0});for(const n of t){if(e.isLimit(n))return null;if(e.isBlock(n))return n}}function b_(o,i,e){const t=o.model;if(!Ka(o.model.schema,i,e))return;const[n,s]=k_(i,e);!n||!s||(!t.hasContent(n,{ignoreMarkers:!0})&&t.hasContent(s,{ignoreMarkers:!0})?Xm(o,i,e,n.parent):Ym(o,i,e,n.parent))}function Ym(o,i,e,t){const n=i.parent,s=e.parent;if(!(n==t||s==t)){for(i=o.createPositionAfter(n),e=o.createPositionBefore(s),e.isEqual(i)||o.insert(s,i),o.merge(i);e.parent.isEmpty;){const r=e.parent;e=o.createPositionBefore(r),o.remove(r)}Ka(o.model.schema,i,e)&&Ym(o,i,e,t)}}function Xm(o,i,e,t){const n=i.parent,s=e.parent;if(!(n==t||s==t)){for(i=o.createPositionAfter(n),e=o.createPositionBefore(s),e.isEqual(i)||o.insert(n,e);i.parent.isEmpty;){const r=i.parent;i=o.createPositionBefore(r),o.remove(r)}e=o.createPositionBefore(s),v_(o,e),Ka(o.model.schema,i,e)&&Xm(o,i,e,t)}}function v_(o,i){const e=i.nodeBefore,t=i.nodeAfter;e.name!=t.name&&o.rename(e,t.name),o.clearAttributes(e),o.setAttributes(Object.fromEntries(t.getAttributes()),e),o.merge(i)}function Ka(o,i,e){const t=i.parent,n=e.parent;return t==n||o.isLimit(t)||o.isLimit(n)?!1:__(i,e,o)}function k_(o,i){const e=o.getAncestors(),t=i.getAncestors();let n=0;for(;e[n]&&e[n]==t[n];)n++;return[e[n],t[n]]}function y_(o,i){const e=o.checkChild(i,"$text"),t=o.checkChild(i,"paragraph");return!e&&t}function __(o,i,e){const t=new v(o,i);for(const n of t.getWalker())if(e.isLimit(n.item))return!1;return!0}function Qm(o,i,e,t={}){const n=o.createElement("paragraph");o.model.schema.setAllowedAttributes(n,t,o),o.insert(n,i),eg(o,e,o.createPositionAt(n,0))}function C_(o,i){const e=o.model.schema.getLimitElement(i);o.remove(o.createRangeIn(e)),Qm(o,o.createPositionAt(e,0),i)}function L_(o,i){const e=o.getLimitElement(i);if(!i.containsEntireContent(e))return!1;const t=i.getFirstRange();return t.start.parent==t.end.parent?!1:o.checkChild(e,"paragraph")}function eg(o,i,e){i instanceof lt?o.setSelection(e):i.setTo(e)}/**
194
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
195
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
196
+ */function T_(o,i){return o.change(e=>{const t=e.createDocumentFragment(),n=i.getFirstRange();if(!n||n.isCollapsed)return t;const s=n.start.root,r=n.start.getCommonPath(n.end),a=s.getNodeByPath(r);let l;n.start.parent==n.end.parent?l=n:l=e.createRange(e.createPositionAt(a,n.start.path[r.length]),e.createPositionAt(a,n.end.path[r.length]+1));const c=l.end.offset-l.start.offset;for(const d of l.getItems({shallow:!0}))d.is("$textProxy")?e.appendText(d.data,d.getAttributes(),t):e.append(e.cloneElement(d,!0),t);if(l!=n){const d=n._getTransformedByMove(l.start,e.createPositionAt(t,0),c)[0],h=e.createRange(e.createPositionAt(t,0),d.start),m=e.createRange(d.end,e.createPositionAt(t,"end"));Jc(m,e),Jc(h,e)}return t})}function Jc(o,i){const e=[];Array.from(o.getItems({direction:"backward"})).map(t=>i.createRangeOn(t)).filter(t=>(t.start.isAfter(o.start)||t.start.isEqual(o.start))&&(t.end.isBefore(o.end)||t.end.isEqual(o.end))).forEach(t=>{e.push(t.start.parent),i.remove(t)}),e.forEach(t=>{let n=t;for(;n.parent&&n.isEmpty;){const s=i.createRangeOn(n);n=n.parent,i.remove(s)}})}function E_(o,i,e){return o.change(t=>{const n=e||o.document.selection;n.isCollapsed||o.deleteContent(n,{doNotAutoparagraph:!0});const s=new x_(o,t,n.anchor),r=[];let a;if(i.is("documentFragment")){if(i.markers.size){const d=[];for(const[h,m]of i.markers){const{start:g,end:f}=m,p=g.isEqual(f);d.push({position:g,name:h,isCollapsed:p},{position:f,name:h,isCollapsed:p})}d.sort(({position:h},{position:m})=>h.isBefore(m)?1:-1);for(const{position:h,name:m,isCollapsed:g}of d){let f=null,p=null;const b=h.parent===i&&h.isAtStart,k=h.parent===i&&h.isAtEnd;!b&&!k?(f=t.createElement("$marker"),t.insert(f,h)):g&&(p=b?"start":"end"),r.push({name:m,element:f,collapsed:p})}}a=i.getChildren()}else a=[i];s.handleNodes(a);let l=s.getSelectionRange();if(i.is("documentFragment")&&r.length){const d=l?Je.fromRange(l):null,h={};for(let m=r.length-1;m>=0;m--){const{name:g,element:f,collapsed:p}=r[m],b=!h[g];if(b&&(h[g]=[]),f){const k=t.createPositionAt(f,"before");h[g].push(k),t.remove(f)}else{const k=s.getAffectedRange();if(!k){p&&h[g].push(s.position);continue}p?h[g].push(k[p]):h[g].push(b?k.start:k.end)}}for(const[m,[g,f]]of Object.entries(h))g&&f&&g.root===f.root&&g.root.document&&!t.model.markers.has(m)&&t.addMarker(m,{usingOperation:!0,affectsData:!0,range:new v(g,f)});d&&(l=d.toRange(),d.detach())}/* istanbul ignore else -- @preserve */l&&(n instanceof lt?t.setSelection(l):n.setTo(l));const c=s.getAffectedRange()||o.createRange(n.anchor);return s.destroy(),c})}class x_{constructor(i,e,t){u(this,"model");u(this,"writer");u(this,"position");u(this,"canMergeWith");u(this,"schema");u(this,"_documentFragment");u(this,"_documentFragmentPosition");u(this,"_firstNode",null);u(this,"_lastNode",null);u(this,"_lastAutoParagraph",null);u(this,"_filterAttributesOf",[]);u(this,"_affectedStart",null);u(this,"_affectedEnd",null);u(this,"_nodeToSelect",null);this.model=i,this.writer=e,this.position=t,this.canMergeWith=new Set([this.position.parent]),this.schema=i.schema,this._documentFragment=e.createDocumentFragment(),this._documentFragmentPosition=e.createPositionAt(this._documentFragment,0)}handleNodes(i){for(const e of Array.from(i))this._handleNode(e);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(i){const e=this.writer.createPositionAfter(this._lastNode),t=this.writer.createPositionAfter(i);if(t.isAfter(e)){this._lastNode=i;/* istanbul ignore if -- @preserve */if(this.position.parent!=i||!this.position.isAtEnd)throw new w("insertcontent-invalid-insertion-position",this);this.position=t,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?v._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new v(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(i){if(!this._checkAndSplitToAllowedPosition(i)){this.schema.isObject(i)||this._handleDisallowedNode(i);return}this._appendToFragment(i),this._firstNode||(this._firstNode=i),this._lastNode=i}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const i=pe.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=i.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=i.toPosition(),i.detach()}_handleDisallowedNode(i){i.is("element")&&this.handleNodes(i.getChildren())}_appendToFragment(i){/* istanbul ignore if -- @preserve */if(!this.schema.checkChild(this.position,i))throw new w("insertcontent-wrong-position",this,{node:i,position:this.position});this.writer.insert(i,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(i.offsetSize),this.schema.isObject(i)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=i:this._nodeToSelect=null,this._filterAttributesOf.push(i)}_setAffectedBoundaries(i){this._affectedStart||(this._affectedStart=pe.fromPosition(i,"toPrevious")),(!this._affectedEnd||this._affectedEnd.isBefore(i))&&(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=pe.fromPosition(i,"toNext"))}_mergeOnLeft(){const i=this._firstNode;if(!(i instanceof $)||!this._canMergeLeft(i))return;const e=pe._createBefore(i);e.stickiness="toNext";const t=pe.fromPosition(this.position,"toNext");this._affectedStart.isEqual(e)&&(this._affectedStart.detach(),this._affectedStart=pe._createAt(e.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=e.nodeBefore,this._lastNode=e.nodeBefore),this.writer.merge(e),e.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=pe._createAt(e.nodeBefore,"end","toNext")),this.position=t.toPosition(),t.detach(),this._filterAttributesOf.push(this.position.parent),e.detach()}_mergeOnRight(){const i=this._lastNode;if(!(i instanceof $)||!this._canMergeRight(i))return;const e=pe._createAfter(i);e.stickiness="toNext";/* istanbul ignore if -- @preserve */if(!this.position.isEqual(e))throw new w("insertcontent-invalid-insertion-position",this);this.position=C._createAt(e.nodeBefore,"end");const t=pe.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(e)&&(this._affectedEnd.detach(),this._affectedEnd=pe._createAt(e.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=e.nodeBefore,this._lastNode=e.nodeBefore),this.writer.merge(e),e.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=pe._createAt(e.nodeBefore,0,"toPrevious")),this.position=t.toPosition(),t.detach(),this._filterAttributesOf.push(this.position.parent),e.detach()}_canMergeLeft(i){const e=i.previousSibling;return e instanceof $&&this.canMergeWith.has(e)&&this.model.schema.checkMerge(e,i)}_canMergeRight(i){const e=i.nextSibling;return e instanceof $&&this.canMergeWith.has(e)&&this.model.schema.checkMerge(i,e)}_insertAutoParagraph(){this._insertPartialFragment();const i=this.writer.createElement("paragraph");this.writer.insert(i,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=i,this.position=this.writer.createPositionAt(i,0)}_checkAndSplitToAllowedPosition(i){const e=this._getAllowedIn(this.position.parent,i);if(!e)return!1;for(e!=this.position.parent&&this._insertPartialFragment();e!=this.position.parent;)if(this.position.isAtStart){const t=this.position.parent;this.position=this.writer.createPositionBefore(t),t.isEmpty&&t.parent===e&&this.writer.remove(t)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const t=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=t,this.canMergeWith.add(this.position.nodeAfter)}return this.schema.checkChild(this.position.parent,i)||this._insertAutoParagraph(),!0}_getAllowedIn(i,e){return this.schema.checkChild(i,e)||this.schema.checkChild(i,"paragraph")&&this.schema.checkChild("paragraph",e)?i:this.schema.isLimit(i)?null:this._getAllowedIn(i.parent,e)}}function S_(o,i,e,t={}){if(!o.schema.isObject(i))throw new w("insertobject-element-not-an-object",o,{object:i});const n=e||o.document.selection;let s=n;t.findOptimalPosition&&o.schema.isBlock(i)&&(s=o.createSelection(o.schema.findOptimalInsertionRange(n,t.findOptimalPosition)));const r=ue(n.getSelectedBlocks()),a={};return r&&Object.assign(a,o.schema.getAttributesWithProperty(r,"copyOnReplace",!0)),o.change(l=>{s.isCollapsed||o.deleteContent(s,{doNotAutoparagraph:!0});let c=i;const d=s.anchor.parent;!o.schema.checkChild(d,i)&&o.schema.checkChild(d,"paragraph")&&o.schema.checkChild("paragraph",i)&&(c=l.createElement("paragraph"),l.insert(i,c)),o.schema.setAllowedAttributes(c,a,l);const h=o.insertContent(c,s);return h.isCollapsed||t.setSelection&&A_(l,i,t.setSelection,a),h})}function A_(o,i,e,t){const n=o.model;if(e=="on"){o.setSelection(i,"on");return}if(e!="after")throw new w("insertobject-invalid-place-parameter-value",n);let s=i.nextSibling;if(n.schema.isInline(i)){o.setSelection(i,"after");return}!(s&&n.schema.checkChild(s,"$text"))&&n.schema.checkChild(i.parent,"paragraph")&&(s=o.createElement("paragraph"),n.schema.setAllowedAttributes(s,t,o),n.insertContent(s,o.createPositionAfter(i))),s&&o.setSelection(s,0)}const I_=' ,.?!:;"-()';function P_(o,i,e={}){const t=o.schema,n=e.direction!="backward",s=e.unit?e.unit:"character",r=!!e.treatEmojiAsSingleUnit,a=i.focus,l=new Lt({boundaries:V_(a,n),singleCharacters:!0,direction:n?"forward":"backward"}),c={walker:l,schema:t,isForward:n,unit:s,treatEmojiAsSingleUnit:r};let d;for(;d=l.next();){if(d.done)return;const h=R_(c,d.value);if(h){i instanceof lt?o.change(m=>{m.setSelectionFocus(h)}):i.setFocus(h);return}}}function R_(o,i){const{isForward:e,walker:t,unit:n,schema:s,treatEmojiAsSingleUnit:r}=o,{type:a,item:l,nextPosition:c}=i;if(a=="text")return o.unit==="word"?B_(t,e):M_(t,n,r);if(a==(e?"elementStart":"elementEnd")){if(s.isSelectable(l))return C._createAt(l,e?"after":"before");if(s.checkChild(c,"$text"))return c}else{if(s.isLimit(l)){t.skip(()=>!0);return}if(s.checkChild(c,"$text"))return c}}function M_(o,i,e){const t=o.position.textNode;if(t){const n=t.data;let s=o.position.offset-t.startOffset;for(;za(n,s)||i=="character"&&Na(n,s)||e&&hm(n,s);)o.next(),s=o.position.offset-t.startOffset}return o.position}function B_(o,i){let e=o.position.textNode;for(e||(e=i?o.position.nodeAfter:o.position.nodeBefore);e&&e.is("$text");){const t=o.position.offset-e.startOffset;if(N_(e,t,i))e=i?o.position.nodeAfter:o.position.nodeBefore;else{if(z_(e.data,t,i))break;o.next()}}return o.position}function V_(o,i){const e=o.root,t=C._createAt(e,i?"end":0);return i?new v(o,t):new v(t,o)}function z_(o,i,e){const t=i+(e?0:-1);return I_.includes(o.charAt(t))}function N_(o,i,e){return i===(e?o.offsetSize:0)}let D_=class extends j(){constructor(){super();u(this,"markers");u(this,"document");u(this,"schema");u(this,"_pendingChanges");u(this,"_currentWriter");this.markers=new o_,this.document=new n_(this),this.schema=new ky,this._pendingChanges=[],this._currentWriter=null,["deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach(e=>this.decorate(e)),this.on("applyOperation",(e,t)=>{t[0]._validate()},{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck(()=>!0,"$marker"),c_(this),this.document.registerPostFixer(Um),this.on("insertContent",(e,[t,n])=>{e.return=E_(this,t,n)}),this.on("insertObject",(e,[t,n,s])=>{e.return=S_(this,t,n,s)}),this.on("canEditAt",e=>{const t=!this.document.isReadOnly;e.return=t,t||e.stop()})}change(e){try{return this._pendingChanges.length===0?(this._pendingChanges.push({batch:new Ci,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(t){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(t,this)}}enqueueChange(e,t){try{e?typeof e=="function"?(t=e,e=new Ci):e instanceof Ci||(e=new Ci(e)):e=new Ci,this._pendingChanges.push({batch:e,callback:t}),this._pendingChanges.length==1&&this._runPendingChanges()}catch(n){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(n,this)}}applyOperation(e){e._execute()}insertContent(e,t,n,...s){const r=nr(t,n);return this.fire("insertContent",[e,r,n,...s])}insertObject(e,t,n,s,...r){const a=nr(t,n);return this.fire("insertObject",[e,a,s,s,...r])}deleteContent(e,t){f_(this,e,t)}modifySelection(e,t){P_(this,e,t)}getSelectedContent(e){return T_(this,e)}hasContent(e,t={}){const n=e instanceof v?e:v._createIn(e);if(n.isCollapsed)return!1;const{ignoreWhitespaces:s=!1,ignoreMarkers:r=!1}=t;if(!r){for(const a of this.markers.getMarkersIntersectingRange(n))if(a.affectsData)return!0}for(const a of n.getItems())if(this.schema.isContent(a))if(a.is("$textProxy"))if(s){if(a.data.search(/\S/)!==-1)return!0}else return!0;else return!0;return!1}canEditAt(e){const t=nr(e);return this.fire("canEditAt",[t])}createPositionFromPath(e,t,n){return new C(e,t,n)}createPositionAt(e,t){return C._createAt(e,t)}createPositionAfter(e){return C._createAfter(e)}createPositionBefore(e){return C._createBefore(e)}createRange(e,t){return new v(e,t)}createRangeIn(e){return v._createIn(e)}createRangeOn(e){return v._createOn(e)}createSelection(...e){return new Fe(...e)}createBatch(e){return new Ci(e)}createOperationFromJSON(e){return Gy.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new a_(this,t);const n=this._pendingChanges[0].callback(this._currentWriter);e.push(n),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}};function nr(o,i){if(o)return o instanceof Fe||o instanceof lt?o:o instanceof hi?i||i===0?new Fe(o,i):o.is("rootElement")?new Fe(o,"in"):new Fe(o,"on"):new Fe(o)}class O_ extends Rt{constructor(){super(...arguments);u(this,"domEventType","click")}onDomEvent(e){this.fire(e.type,e)}}class Rs extends Rt{constructor(){super(...arguments);u(this,"domEventType",["mousedown","mouseup","mouseover","mouseout"])}onDomEvent(e){this.fire(e.type,e)}}class F_ extends Rt{constructor(){super(...arguments);u(this,"domEventType",["touchstart","touchend","touchmove"])}onDomEvent(e){this.fire(e.type,e)}}class Za{constructor(i){u(this,"document");this.document=i}createDocumentFragment(i){return new si(this.document,i)}createElement(i,e,t){return new It(this.document,i,e,t)}createText(i){return new _e(this.document,i)}clone(i,e=!1){return i._clone(e)}appendChild(i,e){return e._appendChild(i)}insertChild(i,e,t){return t._insertChild(i,e)}removeChildren(i,e,t){return t._removeChildren(i,e)}remove(i){const e=i.parent;return e?this.removeChildren(e.getChildIndex(i),1,e):[]}replace(i,e){const t=i.parent;if(t){const n=t.getChildIndex(i);return this.removeChildren(n,1,t),this.insertChild(n,e,t),!0}return!1}unwrapElement(i){const e=i.parent;if(e){const t=e.getChildIndex(i);this.remove(i),this.insertChild(t,i.getChildren(),e)}}rename(i,e){const t=new It(this.document,i,e.getAttributes(),e.getChildren());return this.replace(e,t)?t:null}setAttribute(i,e,t){t._setAttribute(i,e)}removeAttribute(i,e){e._removeAttribute(i)}addClass(i,e){e._addClass(i)}removeClass(i,e){e._removeClass(i)}setStyle(i,e,t){gt(i)&&t===void 0?e._setStyle(i):t._setStyle(i,e)}removeStyle(i,e){e._removeStyle(i)}setCustomProperty(i,e,t){t._setCustomProperty(i,e)}removeCustomProperty(i,e){return e._removeCustomProperty(i)}createPositionAt(i,e){return L._createAt(i,e)}createPositionAfter(i){return L._createAfter(i)}createPositionBefore(i){return L._createBefore(i)}createRange(i,e){return new V(i,e)}createRangeOn(i){return V._createOn(i)}createRangeIn(i){return V._createIn(i)}createSelection(...i){return new Tt(...i)}}/**
197
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
198
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
199
+ */const U_=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,H_=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,W_=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,q_=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,j_=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,G_=/\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi,$_=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function tg(o){return o.startsWith("#")?U_.test(o):o.startsWith("rgb")?H_.test(o)||W_.test(o):o.startsWith("hsl")?q_.test(o)||j_.test(o):$_.has(o.toLowerCase())}const K_=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function Z_(o){return K_.includes(o)}const J_=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function Ja(o){return J_.test(o)}const Y_=/^[+-]?[0-9]*([.][0-9]+)?%$/;function X_(o){return Y_.test(o)}const Q_=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function e0(o){return Q_.includes(o)}const t0=["center","top","bottom","left","right"];function i0(o){return t0.includes(o)}const n0=["fixed","scroll","local"];function o0(o){return n0.includes(o)}const s0=/^url\(/;function r0(o){return s0.test(o)}function Tn(o=""){if(o==="")return{top:void 0,right:void 0,bottom:void 0,left:void 0};const i=Ya(o),e=i[0],t=i[2]||e,n=i[1]||e,s=i[3]||n;return{top:e,bottom:t,right:n,left:s}}function Vo(o){return i=>{const{top:e,right:t,bottom:n,left:s}=i,r=[];return[e,t,s,n].every(a=>!!a)?r.push([o,a0(i)]):(e&&r.push([o+"-top",e]),t&&r.push([o+"-right",t]),n&&r.push([o+"-bottom",n]),s&&r.push([o+"-left",s])),r}}function a0({top:o,right:i,bottom:e,left:t}){const n=[];return t!==i?n.push(o,i,e,t):e!==o?n.push(o,i,e):i!==o?n.push(o,i):n.push(o),n.join(" ")}function l0(o){return i=>({path:o,value:Tn(i)})}function Ya(o){const i=o.trim().slice(0,1500).matchAll(G_);return Array.from(i).map(e=>e[0])}function ig(o){o.setNormalizer("background",c0()),o.setNormalizer("background-color",d0()),o.setReducer("background",u0()),o.setStyleRelation("background",["background-color"])}function c0(){return o=>{const i={},e=Ya(o);for(const t of e)e0(t)?(i.repeat=i.repeat||[],i.repeat.push(t)):i0(t)?(i.position=i.position||[],i.position.push(t)):o0(t)?i.attachment=t:tg(t)?i.color=t:r0(t)&&(i.image=t);return{path:"background",value:i}}}function d0(){return o=>({path:"background.color",value:o})}function u0(){return o=>{const i=[];return i.push(["background-color",o.color]),i}}function ng(o){o.setNormalizer("border",h0()),o.setNormalizer("border-top",fo("top")),o.setNormalizer("border-right",fo("right")),o.setNormalizer("border-bottom",fo("bottom")),o.setNormalizer("border-left",fo("left")),o.setNormalizer("border-color",or("color")),o.setNormalizer("border-width",or("width")),o.setNormalizer("border-style",or("style")),o.setNormalizer("border-top-color",$e("color","top")),o.setNormalizer("border-top-style",$e("style","top")),o.setNormalizer("border-top-width",$e("width","top")),o.setNormalizer("border-right-color",$e("color","right")),o.setNormalizer("border-right-style",$e("style","right")),o.setNormalizer("border-right-width",$e("width","right")),o.setNormalizer("border-bottom-color",$e("color","bottom")),o.setNormalizer("border-bottom-style",$e("style","bottom")),o.setNormalizer("border-bottom-width",$e("width","bottom")),o.setNormalizer("border-left-color",$e("color","left")),o.setNormalizer("border-left-style",$e("style","left")),o.setNormalizer("border-left-width",$e("width","left")),o.setExtractor("border-top",po("top")),o.setExtractor("border-right",po("right")),o.setExtractor("border-bottom",po("bottom")),o.setExtractor("border-left",po("left")),o.setExtractor("border-top-color","border.color.top"),o.setExtractor("border-right-color","border.color.right"),o.setExtractor("border-bottom-color","border.color.bottom"),o.setExtractor("border-left-color","border.color.left"),o.setExtractor("border-top-width","border.width.top"),o.setExtractor("border-right-width","border.width.right"),o.setExtractor("border-bottom-width","border.width.bottom"),o.setExtractor("border-left-width","border.width.left"),o.setExtractor("border-top-style","border.style.top"),o.setExtractor("border-right-style","border.style.right"),o.setExtractor("border-bottom-style","border.style.bottom"),o.setExtractor("border-left-style","border.style.left"),o.setReducer("border-color",Vo("border-color")),o.setReducer("border-style",Vo("border-style")),o.setReducer("border-width",Vo("border-width")),o.setReducer("border-top",wo("top")),o.setReducer("border-right",wo("right")),o.setReducer("border-bottom",wo("bottom")),o.setReducer("border-left",wo("left")),o.setReducer("border",g0()),o.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),o.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),o.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),o.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),o.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),o.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),o.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),o.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function h0(){return o=>{const{color:i,style:e,width:t}=og(o);return{path:"border",value:{color:Tn(i),style:Tn(e),width:Tn(t)}}}}function fo(o){return i=>{const{color:e,style:t,width:n}=og(i),s={};return e!==void 0&&(s.color={[o]:e}),t!==void 0&&(s.style={[o]:t}),n!==void 0&&(s.width={[o]:n}),{path:"border",value:s}}}function or(o){return i=>({path:"border",value:m0(i,o)})}function m0(o,i){return{[i]:Tn(o)}}function $e(o,i){return e=>({path:"border",value:{[o]:{[i]:e}}})}function po(o){return(i,e)=>{if(e.border)return pn(e.border,o)}}function pn(o,i){const e={};return o.width&&o.width[i]&&(e.width=o.width[i]),o.style&&o.style[i]&&(e.style=o.style[i]),o.color&&o.color[i]&&(e.color=o.color[i]),e}function og(o){const i={},e=Ya(o);for(const t of e)Ja(t)||/thin|medium|thick/.test(t)?i.width=t:Z_(t)?i.style=t:i.color=t;return i}function g0(){return i=>{const e=pn(i,"top"),t=pn(i,"right"),n=pn(i,"bottom"),s=pn(i,"left"),r=[e,t,n,s],a={width:o(r,"width"),style:o(r,"style"),color:o(r,"color")},l=Pi(a,"all");return l.length?l:[...Object.entries(a).reduce((d,[h,m])=>(m&&(d.push([`border-${h}`,m]),r.forEach(g=>delete g[h])),d),[]),...Pi(e,"top"),...Pi(t,"right"),...Pi(n,"bottom"),...Pi(s,"left")]};function o(i,e){return i.map(t=>t[e]).reduce((t,n)=>t==n?t:null)}}function wo(o){return i=>Pi(i,o)}function Pi(o,i){const e=[];if(o&&o.width&&e.push("width"),o&&o.style&&e.push("style"),o&&o.color&&e.push("color"),e.length==3){const t=e.map(n=>o[n]).join(" ");return[i=="all"?["border",t]:[`border-${i}`,t]]}return i=="all"?[]:e.map(t=>[`border-${i}-${t}`,o[t]])}function f0(o){o.setNormalizer("padding",l0("padding")),o.setNormalizer("padding-top",i=>({path:"padding.top",value:i})),o.setNormalizer("padding-right",i=>({path:"padding.right",value:i})),o.setNormalizer("padding-bottom",i=>({path:"padding.bottom",value:i})),o.setNormalizer("padding-left",i=>({path:"padding.left",value:i})),o.setReducer("padding",Vo("padding")),o.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}/**
200
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
201
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
202
+ *//**
203
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
204
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
205
+ */class sg{constructor(i){u(this,"crashes",[]);u(this,"state","initializing");u(this,"_crashNumberLimit");u(this,"_now",Date.now);u(this,"_minimumNonErrorTimePeriod");u(this,"_boundErrorHandler");u(this,"_listeners");if(this.crashes=[],this._crashNumberLimit=typeof i.crashNumberLimit=="number"?i.crashNumberLimit:3,this._minimumNonErrorTimePeriod=typeof i.minimumNonErrorTimePeriod=="number"?i.minimumNonErrorTimePeriod:5e3,this._boundErrorHandler=e=>{const t="error"in e?e.error:e.reason;t instanceof Error&&this._handleError(t,e)},this._listeners={},!this._restart)throw new Error("The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.")}destroy(){this._stopErrorHandling(),this._listeners={}}on(i,e){this._listeners[i]||(this._listeners[i]=[]),this._listeners[i].push(e)}off(i,e){this._listeners[i]=this._listeners[i].filter(t=>t!==e)}_fire(i,...e){const t=this._listeners[i]||[];for(const n of t)n.apply(this,[null,...e])}_startErrorHandling(){window.addEventListener("error",this._boundErrorHandler),window.addEventListener("unhandledrejection",this._boundErrorHandler)}_stopErrorHandling(){window.removeEventListener("error",this._boundErrorHandler),window.removeEventListener("unhandledrejection",this._boundErrorHandler)}_handleError(i,e){if(this._shouldReactToError(i)){this.crashes.push({message:i.message,stack:i.stack,filename:e instanceof ErrorEvent?e.filename:void 0,lineno:e instanceof ErrorEvent?e.lineno:void 0,colno:e instanceof ErrorEvent?e.colno:void 0,date:this._now()});const t=this._shouldRestart();this.state="crashed",this._fire("stateChange"),this._fire("error",{error:i,causesRestart:t}),t?this._restart():(this.state="crashedPermanently",this._fire("stateChange"))}}_shouldReactToError(i){return i.is&&i.is("CKEditorError")&&i.context!==void 0&&i.context!==null&&this.state==="ready"&&this._isErrorComingFromThisItem(i)}_shouldRestart(){if(this.crashes.length<=this._crashNumberLimit)return!0;const i=this.crashes[this.crashes.length-1].date,e=this.crashes[this.crashes.length-1-this._crashNumberLimit].date;return(i-e)/this._crashNumberLimit>this._minimumNonErrorTimePeriod}}/**
206
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
207
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
208
+ */function Gr(o,i=new Set){const e=[o],t=new Set;let n=0;for(;e.length>n;){const s=e[n++];if(!(t.has(s)||!p0(s)||i.has(s)))if(t.add(s),Symbol.iterator in s)try{for(const r of s)e.push(r)}catch{}else for(const r in s)r!=="defaultValue"&&e.push(s[r])}return t}function p0(o){const i=Object.prototype.toString.call(o),e=typeof o;return!(e==="number"||e==="boolean"||e==="string"||e==="symbol"||e==="function"||i==="[object Date]"||i==="[object RegExp]"||i==="[object Module]"||o===void 0||o===null||o._watchdogExcluded||o instanceof EventTarget||o instanceof Event)}function rg(o,i,e=new Set){if(o===i&&w0(o))return!0;const t=Gr(o,e),n=Gr(i,e);for(const s of t)if(n.has(s))return!0;return!1}function w0(o){return typeof o=="object"&&o!==null}class ag extends sg{constructor(e,t={}){super(t);u(this,"_editor",null);u(this,"_lifecyclePromise",null);u(this,"_throttledSave");u(this,"_data");u(this,"_lastDocumentVersion");u(this,"_elementOrData");u(this,"_initUsingData",!0);u(this,"_editables",{});u(this,"_config");u(this,"_excludedProps");this._throttledSave=Hi(this._save.bind(this),typeof t.saveInterval=="number"?t.saveInterval:5e3),e&&(this._creator=(n,s)=>e.create(n,s)),this._destructor=n=>n.destroy()}get editor(){return this._editor}get _item(){return this._editor}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}_restart(){return Promise.resolve().then(()=>(this.state="initializing",this._fire("stateChange"),this._destroy())).catch(e=>{console.error("An error happened during the editor destroying.",e)}).then(()=>{const e={},t=[],n=this._config.rootsAttributes||{},s={};for(const[a,l]of Object.entries(this._data.roots))l.isLoaded?(e[a]="",s[a]=n[a]||{}):t.push(a);const r={...this._config,extraPlugins:this._config.extraPlugins||[],lazyRoots:t,rootsAttributes:s,_watchdogInitialData:this._data};return delete r.initialData,r.extraPlugins.push(b0),this._initUsingData?this.create(e,r,r.context):Gt(this._elementOrData)?this.create(this._elementOrData,r,r.context):this.create(this._editables,r,r.context)}).then(()=>{this._fire("restart")})}create(e=this._elementOrData,t=this._config,n){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then(()=>(super._startErrorHandling(),this._elementOrData=e,this._initUsingData=typeof e=="string"||Object.keys(e).length>0&&typeof Object.values(e)[0]=="string",this._config=this._cloneEditorConfiguration(t)||{},this._config.context=n,this._creator(e,this._config))).then(s=>{this._editor=s,s.model.document.on("change:data",this._throttledSave),this._lastDocumentVersion=s.model.document.version,this._data=this._getData(),this._initUsingData||(this._editables=this._getEditables()),this.state="ready",this._fire("stateChange")}).finally(()=>{this._lifecyclePromise=null}),this._lifecyclePromise}destroy(){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then(()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy())).finally(()=>{this._lifecyclePromise=null}),this._lifecyclePromise}_destroy(){return Promise.resolve().then(()=>{this._stopErrorHandling(),this._throttledSave.cancel();const e=this._editor;return this._editor=null,e.model.document.off("change:data",this._throttledSave),this._destructor(e)})}_save(){const e=this._editor.model.document.version;try{this._data=this._getData(),this._initUsingData||(this._editables=this._getEditables()),this._lastDocumentVersion=e}catch(t){console.error(t,"An error happened during restoring editor data. Editor will be restored from the previously saved data.")}}_setExcludedProperties(e){this._excludedProps=e}_getData(){const e=this._editor,t=e.model.document.roots.filter(l=>l.isAttached()&&l.rootName!="$graveyard"),{plugins:n}=e,s=n.has("CommentsRepository")&&n.get("CommentsRepository"),r=n.has("TrackChanges")&&n.get("TrackChanges"),a={roots:{},markers:{},commentThreads:JSON.stringify([]),suggestions:JSON.stringify([])};t.forEach(l=>{a.roots[l.rootName]={content:JSON.stringify(Array.from(l.getChildren())),attributes:JSON.stringify(Array.from(l.getAttributes())),isLoaded:l._isLoaded}});for(const l of e.model.markers)l._affectsData&&(a.markers[l.name]={rangeJSON:l.getRange().toJSON(),usingOperation:l._managedUsingOperations,affectsData:l._affectsData});return s&&(a.commentThreads=JSON.stringify(s.getCommentThreads({toJSON:!0,skipNotAttached:!0}))),r&&(a.suggestions=JSON.stringify(r.getSuggestions({toJSON:!0,skipNotAttached:!0}))),a}_getEditables(){const e={};for(const t of this.editor.model.document.getRootNames()){const n=this.editor.ui.getEditableElement(t);n&&(e[t]=n)}return e}_isErrorComingFromThisItem(e){return rg(this._editor,e.context,this._excludedProps)}_cloneEditorConfiguration(e){return Ss(e,(t,n)=>{if(Gt(t)||n==="context")return t})}}class b0{constructor(i){u(this,"editor");u(this,"_data");this.editor=i,this._data=i.config.get("_watchdogInitialData")}init(){this.editor.data.on("init",i=>{i.stop(),this.editor.model.enqueueChange({isUndoable:!1},e=>{this._restoreCollaborationData(),this._restoreEditorData(e)}),this.editor.data.fire("ready")},{priority:999})}_createNode(i,e){if("name"in e){const t=i.createElement(e.name,e.attributes);if(e.children)for(const n of e.children)t._appendChild(this._createNode(i,n));return t}else return i.createText(e.data,e.attributes)}_restoreEditorData(i){const e=this.editor;Object.entries(this._data.roots).forEach(([t,{content:n,attributes:s}])=>{const r=JSON.parse(n),a=JSON.parse(s),l=e.model.document.getRoot(t);for(const[c,d]of a)i.setAttribute(c,d,l);for(const c of r){const d=this._createNode(i,c);i.insert(d,l,"end")}}),Object.entries(this._data.markers).forEach(([t,n])=>{const{document:s}=e.model,{rangeJSON:{start:r,end:a},...l}=n,c=s.getRoot(r.root),d=i.createPositionFromPath(c,r.path,r.stickiness),h=i.createPositionFromPath(c,a.path,a.stickiness),m=i.createRange(d,h);i.addMarker(t,{range:m,...l})})}_restoreCollaborationData(){const i=JSON.parse(this._data.commentThreads),e=JSON.parse(this._data.suggestions);i.forEach(t=>{const n=this.editor.config.get("collaboration.channelId"),s=this.editor.plugins.get("CommentsRepository");s.hasCommentThread(t.threadId)&&s.getCommentThread(t.threadId).remove(),s.addCommentThread({channelId:n,...t})}),e.forEach(t=>{const n=this.editor.plugins.get("TrackChangesEditing");if(n.hasSuggestion(t.id)){const s=n.getSuggestion(t.id);s.attributes=t.attributes}else n.addSuggestionData(t)})}}const En=Symbol("MainQueueId");class v0 extends sg{constructor(e,t={}){super(t);u(this,"_watchdogs",new Map);u(this,"_watchdogConfig");u(this,"_context",null);u(this,"_contextProps",new Set);u(this,"_actionQueues",new k0);u(this,"_contextConfig");u(this,"_item");this._watchdogConfig=t,this._creator=n=>e.create(n),this._destructor=n=>n.destroy(),this._actionQueues.onEmpty(()=>{this.state==="initializing"&&(this.state="ready",this._fire("stateChange"))})}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}get context(){return this._context}create(e={}){return this._actionQueues.enqueue(En,()=>(this._contextConfig=e,this._create()))}getItem(e){return this._getWatchdog(e)._item}getItemState(e){return this._getWatchdog(e).state}add(e){const t=Yc(e);return Promise.all(t.map(n=>this._actionQueues.enqueue(n.id,()=>{if(this.state==="destroyed")throw new Error("Cannot add items to destroyed watchdog.");if(!this._context)throw new Error("Context was not created yet. You should call the `ContextWatchdog#create()` method first.");let s;if(this._watchdogs.has(n.id))throw new Error(`Item with the given id is already added: '${n.id}'.`);if(n.type==="editor")return s=new ag(null,this._watchdogConfig),s.setCreator(n.creator),s._setExcludedProperties(this._contextProps),n.destructor&&s.setDestructor(n.destructor),this._watchdogs.set(n.id,s),s.on("error",(r,{error:a,causesRestart:l})=>{this._fire("itemError",{itemId:n.id,error:a}),l&&this._actionQueues.enqueue(n.id,()=>new Promise(c=>{const d=()=>{s.off("restart",d),this._fire("itemRestart",{itemId:n.id}),c()};s.on("restart",d)}))}),s.create(n.sourceElementOrData,n.config,this._context);throw new Error(`Not supported item type: '${n.type}'.`)})))}remove(e){const t=Yc(e);return Promise.all(t.map(n=>this._actionQueues.enqueue(n,()=>{const s=this._getWatchdog(n);return this._watchdogs.delete(n),s.destroy()})))}destroy(){return this._actionQueues.enqueue(En,()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy()))}_restart(){return this._actionQueues.enqueue(En,()=>(this.state="initializing",this._fire("stateChange"),this._destroy().catch(e=>{console.error("An error happened during destroying the context or items.",e)}).then(()=>this._create()).then(()=>this._fire("restart"))))}_create(){return Promise.resolve().then(()=>(this._startErrorHandling(),this._creator(this._contextConfig))).then(e=>(this._context=e,this._contextProps=Gr(this._context),Promise.all(Array.from(this._watchdogs.values()).map(t=>(t._setExcludedProperties(this._contextProps),t.create(void 0,void 0,this._context))))))}_destroy(){return Promise.resolve().then(()=>{this._stopErrorHandling();const e=this._context;return this._context=null,this._contextProps=new Set,Promise.all(Array.from(this._watchdogs.values()).map(t=>t.destroy())).then(()=>this._destructor(e))})}_getWatchdog(e){const t=this._watchdogs.get(e);if(!t)throw new Error(`Item with the given id was not registered: ${e}.`);return t}_isErrorComingFromThisItem(e){for(const t of this._watchdogs.values())if(t._isErrorComingFromThisItem(e))return!1;return rg(this._context,e.context)}}class k0{constructor(){u(this,"_onEmptyCallbacks",[]);u(this,"_queues",new Map);u(this,"_activeActions",0)}onEmpty(i){this._onEmptyCallbacks.push(i)}enqueue(i,e){const t=i===En;this._activeActions++,this._queues.get(i)||this._queues.set(i,Promise.resolve());const s=(t?Promise.all(this._queues.values()):Promise.all([this._queues.get(En),this._queues.get(i)])).then(e),r=s.catch(()=>{});return this._queues.set(i,r),s.finally(()=>{this._activeActions--,this._queues.get(i)===r&&this._activeActions===0&&this._onEmptyCallbacks.forEach(a=>a())})}}function Yc(o){return Array.isArray(o)?o:[o]}/**
209
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
210
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
211
+ */class y extends j(){constructor(e){super();u(this,"editor");u(this,"_disableStack",new Set);this.editor=e,this.set("isEnabled",!0)}forceDisabled(e){this._disableStack.add(e),this._disableStack.size==1&&(this.on("set:isEnabled",Xc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",Xc),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function Xc(o){o.return=!1,o.stop()}class B extends j(){constructor(e){super();u(this,"editor");u(this,"_isEnabledBasedOnSelection");u(this,"_affectsData");u(this,"_disableStack");this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._affectsData=!0,this._isEnabledBasedOnSelection=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.listenTo(e,"change:isReadOnly",()=>{this.refresh()}),this.on("set:isEnabled",t=>{if(!this.affectsData)return;const n=e.model.document.selection,r=!(n.getFirstPosition().root.rootName=="$graveyard")&&e.model.canEditAt(n);(e.isReadOnly||this._isEnabledBasedOnSelection&&!r)&&(t.return=!1,t.stop())},{priority:"highest"}),this.on("execute",t=>{this.isEnabled||t.stop()},{priority:"high"})}get affectsData(){return this._affectsData}set affectsData(e){this._affectsData=e}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),this._disableStack.size==1&&(this.on("set:isEnabled",Qc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",Qc),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function Qc(o){o.return=!1,o.stop()}class lg extends G(){constructor(e,t=[],n=[]){super();u(this,"_context");u(this,"_plugins",new Map);u(this,"_availablePlugins");u(this,"_contextPlugins");this._context=e,this._availablePlugins=new Map;for(const s of t)s.pluginName&&this._availablePlugins.set(s.pluginName,s);this._contextPlugins=new Map;for(const[s,r]of n)this._contextPlugins.set(s,r),this._contextPlugins.set(r,s),s.pluginName&&this._availablePlugins.set(s.pluginName,s)}*[Symbol.iterator](){for(const e of this._plugins)typeof e[0]=="function"&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let n=e;throw typeof e=="function"&&(n=e.pluginName||e.name),new w("plugincollection-plugin-not-loaded",this._context,{plugin:n})}return t}has(e){return this._plugins.has(e)}init(e,t=[],n=[]){const s=this,r=this._context;f(e),b(e);const a=e.filter(x=>!m(x,t)),l=[...p(a)];te(l,n);const c=O(l);return oe(c,"init").then(()=>oe(c,"afterInit")).then(()=>c);function d(x){return typeof x=="function"}function h(x){return d(x)&&!!x.isContextPlugin}function m(x,N){return N.some(S=>S===x||g(x)===S||g(S)===x)}function g(x){return d(x)?x.pluginName||x.name:x}function f(x,N=new Set){x.forEach(S=>{d(S)&&(N.has(S)||(N.add(S),S.pluginName&&!s._availablePlugins.has(S.pluginName)&&s._availablePlugins.set(S.pluginName,S),S.requires&&f(S.requires,N)))})}function p(x,N=new Set){return x.map(S=>d(S)?S:s._availablePlugins.get(S)).reduce((S,P)=>N.has(P)?S:(N.add(P),P.requires&&(b(P.requires,P),p(P.requires,N).forEach(Z=>S.add(Z))),S.add(P)),new Set)}function b(x,N=null){x.map(S=>d(S)?S:s._availablePlugins.get(S)||S).forEach(S=>{k(S,N),_(S,N),M(S,N)})}function k(x,N){if(!d(x))throw N?new w("plugincollection-soft-required",r,{missingPlugin:x,requiredBy:g(N)}):new w("plugincollection-plugin-not-found",r,{plugin:x})}function _(x,N){if(h(N)&&!h(x))throw new w("plugincollection-context-required",r,{plugin:g(x),requiredBy:g(N)})}function M(x,N){if(N&&m(x,t))throw new w("plugincollection-required",r,{plugin:g(x),requiredBy:g(N)})}function O(x){return x.map(N=>{let S=s._contextPlugins.get(N);return S=S||new N(r),s._add(N,S),S})}function oe(x,N){return x.reduce((S,P)=>!P[N]||s._contextPlugins.has(P)?S:S.then(P[N].bind(P)),Promise.resolve())}function te(x,N){for(const S of N){if(typeof S!="function")throw new w("plugincollection-replace-plugin-invalid-type",null,{pluginItem:S});const P=S.pluginName;if(!P)throw new w("plugincollection-replace-plugin-missing-name",null,{pluginItem:S});if(S.requires&&S.requires.length)throw new w("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:P});const Z=s._availablePlugins.get(P);if(!Z)throw new w("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:P});const ge=x.indexOf(Z);if(ge===-1){if(s._contextPlugins.has(Z))return;throw new w("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:P})}if(Z.requires&&Z.requires.length)throw new w("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:P});x.splice(ge,1,S),s._availablePlugins.set(P,S)}}}destroy(){const e=[];for(const[,t]of this)typeof t.destroy=="function"&&!this._contextPlugins.has(t)&&e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const n=e.pluginName;if(n){if(this._plugins.has(n))throw new w("plugincollection-plugin-name-conflict",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:e});this._plugins.set(n,t)}}}class os{constructor(i){u(this,"config");u(this,"plugins");u(this,"locale");u(this,"t");u(this,"editors");u(this,"_contextOwner",null);const{translations:e,...t}=i||{};this.config=new Qh(t,this.constructor.defaultConfig);const n=this.constructor.builtinPlugins;this.config.define("plugins",n),this.plugins=new lg(this,n);const s=this.config.get("language")||{};this.locale=new Jb({uiLanguage:typeof s=="string"?s:s.ui,contentLanguage:this.config.get("language.content"),translations:e}),this.t=this.locale.t,this.editors=new Be}initPlugins(){const i=this.config.get("plugins")||[],e=this.config.get("substitutePlugins")||[];for(const t of i.concat(e)){if(typeof t!="function")throw new w("context-initplugins-constructor-only",null,{Plugin:t});if(t.isContextPlugin!==!0)throw new w("context-initplugins-invalid-plugin",null,{Plugin:t})}return this.plugins.init(i,[],e)}destroy(){return Promise.all(Array.from(this.editors,i=>i.destroy())).then(()=>this.plugins.destroy())}_addEditor(i,e){if(this._contextOwner)throw new w("context-addeditor-private-context");this.editors.add(i),e&&(this._contextOwner=i)}_removeEditor(i){return this.editors.has(i)&&this.editors.remove(i),this._contextOwner===i?this.destroy():Promise.resolve()}_getEditorConfig(){const i={};for(const e of this.config.names())["plugins","removePlugins","extraPlugins"].includes(e)||(i[e]=this.config.get(e));return i}static create(i){return new Promise(e=>{const t=new this(i);e(t.initPlugins().then(()=>t))})}}u(os,"defaultConfig"),u(os,"builtinPlugins");class cg extends j(){constructor(e){super();u(this,"context");this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}class y0{constructor(){u(this,"_commands");this._commands=new Map}add(i,e){this._commands.set(i,e)}get(i){return this._commands.get(i)}execute(i,...e){const t=this.get(i);if(!t)throw new w("commandcollection-command-not-found",this,{commandName:i});return t.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const i of this.commands())i.destroy()}}class _0 extends re{constructor(e){super();u(this,"editor");this.editor=e}set(e,t,n={}){if(typeof t=="string"){const s=t;t=(r,a)=>{this.editor.execute(s),a()}}super.set(e,t,n)}}const sr="contentEditing",ed="common";class C0{constructor(i){u(this,"keystrokeInfos",new Map);u(this,"_editor");this._editor=i;const e=i.config.get("menuBar.isVisible"),t=i.locale.t;this.addKeystrokeInfoCategory({id:sr,label:t("Content editing keystrokes"),description:t("These keyboard shortcuts allow for quick access to content editing features.")});const n=[{label:t("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:t("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:t("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:t("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:t("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:t("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];e&&n.push({label:t("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:t("User interface and content navigation keystrokes"),description:t("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:n}]})}addKeystrokeInfoCategory({id:i,label:e,description:t,groups:n}){this.keystrokeInfos.set(i,{id:i,label:e,description:t,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:i,id:ed}),n&&n.forEach(s=>{this.addKeystrokeInfoGroup({categoryId:i,...s})})}addKeystrokeInfoGroup({categoryId:i=sr,id:e,label:t,keystrokes:n}){const s=this.keystrokeInfos.get(i);if(!s)throw new w("accessibility-unknown-keystroke-info-category",this._editor,{groupId:e,categoryId:i});s.groups.set(e,{id:e,label:t,keystrokes:n||[]})}addKeystrokeInfos({categoryId:i=sr,groupId:e=ed,keystrokes:t}){if(!this.keystrokeInfos.has(i))throw new w("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:i,keystrokes:t});const n=this.keystrokeInfos.get(i);if(!n.groups.has(e))throw new w("accessibility-unknown-keystroke-info-group",this._editor,{groupId:e,categoryId:i,keystrokes:t});n.groups.get(e).keystrokes.push(...t)}}function L0(o){return{sessionId:A0(),pageSessionId:I0(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:T0(o),plugins:E0(o.plugins),distribution:x0(),env:S0(),integration:Object.create(null),menuBar:{isVisible:!!o.config.get("menuBar.isVisible")},language:{ui:o.locale.uiLanguage,content:o.locale.contentLanguage},toolbar:{main:rr(o.config.get("toolbar")),block:rr(o.config.get("blockToolbar")),balloon:rr(o.config.get("balloonToolbar"))}}}function T0(o){return Object.getPrototypeOf(o).constructor.editorName}function E0(o){return Array.from(o).filter(([i])=>!!i.pluginName).map(([i])=>{const{pluginName:e,isContextPlugin:t,isOfficialPlugin:n,isPremiumPlugin:s}=i;return{isContext:!!t,isOfficial:!!n,isPremium:!!s,name:e}})}function rr(o){if(!o)return;const i=Array.isArray(o)?{items:o}:o,e=s(i.items||[]);return{isMultiline:e.includes("-"),shouldNotGroupWhenFull:!!i.shouldNotGroupWhenFull,items:n(e)};function n(r){return r.filter(a=>a!=="|"&&a!=="-")}function s(r){return r.flatMap(a=>typeof a=="string"?[a]:s(a.items))}}function x0(){return{channel:window[Symbol.for("cke distribution")]||"sh"}}function S0(){let o="unknown",i="unknown";return I.isMac?o="mac":I.isWindows?o="windows":I.isiOS?o="ios":I.isAndroid&&(o="android"),I.isGecko?i="gecko":I.isBlink?i="blink":I.isSafari&&(i="safari"),{os:o,browser:i}}function A0(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",Me()),localStorage.getItem("__ckeditor-session-id")}function I0(){return T.window.CKEDITOR_PAGE_SESSION_ID=T.window.CKEDITOR_PAGE_SESSION_ID||Me(),T.window.CKEDITOR_PAGE_SESSION_ID}class Ri extends j(){constructor(e={}){super();u(this,"accessibility");u(this,"commands");u(this,"config");u(this,"conversion");u(this,"data");u(this,"editing");u(this,"locale");u(this,"model");u(this,"plugins");u(this,"keystrokes");u(this,"t");u(this,"_context");u(this,"_readOnlyLocks");if("sanitizeHtml"in e)throw new w("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:n,...s}=t.defaultConfig||{},{translations:r=n,...a}=e,l=e.language||s.language;this._context=e.context||new os({language:l,translations:r}),this._context._addEditor(this,!e.context);const c=Array.from(t.builtinPlugins||[]);this.config=new Qh(a,s),this.config.define("plugins",c),this.config.define(this._context._getEditorConfig()),h(this.config),this.plugins=new lg(this,c,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new y0,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.model=new D_,this.on("change:isReadOnly",()=>{this.model.document.isReadOnly=this.isReadOnly});const d=new _v;this.data=new Hy(this.model,d),this.editing=new vy(this.model,d),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new qy([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new _0(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new C0(this),m(this);function h(g){let f=g.get("licenseKey");if(!f&&window.CKEDITOR_GLOBAL_LICENSE_KEY&&(f=window.CKEDITOR_GLOBAL_LICENSE_KEY,g.set("licenseKey",f)),!f)throw new w("license-key-missing")}function m(g){const f=g.config.get("licenseKey"),p=window[Symbol.for("cke distribution")]||"sh";function b(P){g.enableReadOnlyMode(Symbol("invalidLicense")),g._showLicenseError(P)}function k(P){const Z=P.split(".");return Z.length!=3?null:Z[1]}function _(P){return["exp","jti","vc"].every(ge=>ge in P)}function M(P){return Object.getOwnPropertyNames(P).sort().filter(se=>se!="vc"&&P[se]!=null).map(se=>P[se])}function O(P){const{hostname:Z}=new URL(window.location.href);if(P.includes(Z))return!0;const ge=Z.split(".");return P.filter(se=>se.includes("*")).map(se=>se.split(".")).filter(se=>se.length<=ge.length).map(se=>Array(ge.length-se.length).fill(se[0]==="*"?"*":"").concat(se)).some(se=>ge.every((lo,en)=>se[en]===lo||se[en]==="*"))}function oe(P){const Z=P[0].toUpperCase()+P.slice(1),ge=P==="evaluation"?"an":"a";console.info(`%cCKEditor 5 ${Z} License`,"color: #ffffff; background: #743CCD; font-size: 14px; padding: 4px 8px; border-radius: 4px;"),console.warn(`⚠️ You are using ${ge} ${P} license of CKEditor 5${P==="trial"?" which is for evaluation purposes only":""}. For production usage, please obtain a production license at https://portal.ckeditor.com/`)}if(f=="GPL"){p=="cloud"&&b("distributionChannel");return}const te=k(f);if(!te){b("invalid");return}const x=Va(te);if(!x){b("invalid");return}if(!_(x)){b("invalid");return}if(x.distributionChannel&&!Y(x.distributionChannel).includes(p)){b("distributionChannel");return}if(tv(M(x))!=x.vc.toLowerCase()){b("invalid");return}if(new Date(x.exp*1e3)<db){b("expired");return}const S=x.licensedHosts;if(S&&S.length>0&&!O(S)){b("domainLimit");return}if(["evaluation","trial"].includes(x.licenseType)&&x.exp*1e3<Date.now()){b("expired");return}if(["development","evaluation","trial"].includes(x.licenseType)){const{licenseType:P}=x;window.CKEDITOR_WARNING_SUPPRESSIONS=window.CKEDITOR_WARNING_SUPPRESSIONS||{},window.CKEDITOR_WARNING_SUPPRESSIONS[P]||(oe(P),window.CKEDITOR_WARNING_SUPPRESSIONS[P]=!0)}if(["evaluation","trial"].includes(x.licenseType)){const P=x.licenseType,Z=setTimeout(()=>{b(`${P}Limit`)},6e5);g.on("destroy",()=>{clearTimeout(Z)})}x.usageEndpoint&&g.once("ready",()=>{const P={requestId:Me(),requestTime:Math.round(Date.now()/1e3),license:f,editor:P0(g)};g._sendUsageRequest(x.usageEndpoint,P).then(Z=>{const{status:ge,message:se}=Z;se&&console.warn(se),ge!="ok"&&b("usageLimit")},()=>{ab("license-key-validation-endpoint-not-reachable",{url:x.usageEndpoint})})},{priority:"high"})}}static get editorName(){return"Editor"}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new w("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new w("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),this._readOnlyLocks.size===1&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new w("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),this._readOnlyLocks.size===0&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}setData(e){this.data.set(e)}getData(e){return this.data.get(e)}initPlugins(){const e=this.config,t=e.get("plugins"),n=e.get("removePlugins")||[],s=e.get("extraPlugins")||[],r=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(s),n,r)}destroy(){let e=Promise.resolve();return this.state=="initializing"&&(e=new Promise(t=>this.once("ready",t))),e.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(e,...t){try{return this.commands.execute(e,...t)}catch(n){/* istanbul ignore next -- @preserve */w.rethrowUnexpectedError(n,this)}}focus(){this.editing.view.focus()}static create(...e){throw new Error("This is an abstract method.")}_showLicenseError(e,t){setTimeout(()=>{if(e=="invalid")throw new w("invalid-license-key");if(e=="expired")throw new w("license-key-expired");if(e=="domainLimit")throw new w("license-key-domain-limit");if(e=="featureNotAllowed")throw new w("license-key-plugin-not-allowed",null,{pluginName:t});if(e=="evaluationLimit")throw new w("license-key-evaluation-limit");if(e=="trialLimit")throw new w("license-key-trial-limit");if(e=="developmentLimit")throw new w("license-key-development-limit");if(e=="usageLimit")throw new w("license-key-usage-limit");if(e=="distributionChannel")throw new w("license-key-invalid-distribution-channel")},0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const n=new Headers({"Content-Type":"application/json"}),s=await fetch(new URL(e),{method:"POST",headers:n,body:JSON.stringify(t)});if(!s.ok)throw new Error(`HTTP Response: ${s.status}`);return s.json()}}u(Ri,"defaultConfig"),u(Ri,"builtinPlugins"),u(Ri,"Context",os),u(Ri,"EditorWatchdog",ag),u(Ri,"ContextWatchdog",v0);function P0(o){const i=L0(o);function e(t,n){if(jt(i,t)!==void 0)throw new w("editor-usage-data-path-already-set",{path:t});Oh(i,t,n)}return o.fire("collectUsageData",{setUsageData:e}),i}function R0(o){if(!Jo(o.updateSourceElement))throw new w("attachtoform-missing-elementapi-interface",o);const i=o.sourceElement;if(M0(i)&&i.form){let e;const t=i.form,n=()=>o.updateSourceElement();Jo(t.submit)&&(e=t.submit,t.submit=()=>{n(),e.apply(t)}),t.addEventListener("submit",n),o.on("destroy",()=>{t.removeEventListener("submit",n),e&&(t.submit=e)})}}function M0(o){return!!o&&o.tagName.toLowerCase()==="textarea"}function $r(o){class i extends o{constructor(){super(...arguments);u(this,"sourceElement")}updateSourceElement(n){if(!this.sourceElement)throw new w("editor-missing-sourceelement",this);const s=this.config.get("updateSourceElementOnDestroy"),r=this.sourceElement instanceof HTMLTextAreaElement;if(!s&&!r){oc(this.sourceElement,"");return}const a=typeof n=="string"?n:this.data.get();oc(this.sourceElement,a)}}return i}$r.updateSourceElement=$r(Object).prototype.updateSourceElement;class qi extends cg{constructor(){super(...arguments);u(this,"_actions")}static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new Be({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if(typeof e!="string")throw new w("pendingactions-add-invalid-message",this);const t=new(j());return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}/**
212
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
213
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
214
+ */class B0 extends j(){constructor(){super();u(this,"total");u(this,"_reader");u(this,"_data");const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise((n,s)=>{t.onload=()=>{const r=t.result;this._data=r,n(r)},t.onerror=()=>{s("error")},t.onabort=()=>{s("aborted")},this._reader.readAsDataURL(e)})}abort(){this._reader.abort()}}class Ot extends y{constructor(){super(...arguments);u(this,"loaders",new Be);u(this,"_loadersMap",new Map);u(this,"_pendingAction",null)}static get pluginName(){return"FileRepository"}static get isOfficialPlugin(){return!0}static get requires(){return[qi]}init(){this.loaders.on("change",()=>this._updatePendingAction()),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(e,t)=>t?e/t*100:0)}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return F("filerepository-no-upload-adapter"),null;const t=new td(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then(n=>{this._loadersMap.set(n,t)}).catch(()=>{}),t.on("change:uploaded",()=>{let n=0;for(const s of this.loaders)n+=s.uploaded;this.uploaded=n}),t.on("change:uploadTotal",()=>{let n=0;for(const s of this.loaders)s.uploadTotal&&(n+=s.uploadTotal);this.uploadTotal=n}),t}destroyLoader(e){const t=e instanceof td?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach((n,s)=>{n===t&&this._loadersMap.delete(s)})}_updatePendingAction(){const e=this.editor.plugins.get(qi);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,n=s=>`${t("Upload in progress")} ${parseInt(s)}%.`;this._pendingAction=e.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else e.remove(this._pendingAction),this._pendingAction=null}}class td extends j(){constructor(e,t){super();u(this,"id");u(this,"_filePromiseWrapper");u(this,"_adapter");u(this,"_reader");this.id=Me(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new B0,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",(n,s)=>s?n/s*100:0),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then(e=>this._filePromiseWrapper?e:null):Promise.resolve(null)}get data(){return this._reader.data}read(){if(this.status!="idle")throw new w("filerepository-read-wrong-status",this);return this.status="reading",this.file.then(e=>this._reader.read(e)).then(e=>{if(this.status!=="reading")throw this.status;return this.status="idle",e}).catch(e=>{throw e==="aborted"?(this.status="aborted","aborted"):(this.status="error",this._reader.error?this._reader.error:e)})}upload(){if(this.status!="idle")throw new w("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then(()=>this._adapter.upload()).then(e=>(this.uploadResponse=e,this.status="idle",e)).catch(e=>{throw this.status==="aborted"?"aborted":(this.status="error",e)})}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?e=="reading"?this._reader.abort():e=="uploading"&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch(()=>{}),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise((n,s)=>{t.rejecter=s,t.isFulfilled=!1,e.then(r=>{t.isFulfilled=!0,n(r)}).catch(r=>{t.isFulfilled=!0,s(r)})}),t}}class V0 extends y{static get requires(){return[Ot]}static get pluginName(){return"SimpleUploadAdapter"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.config.get("simpleUpload");if(i){if(!i.uploadUrl){F("simple-upload-adapter-missing-uploadurl");return}this.editor.plugins.get(Ot).createUploadAdapter=e=>new z0(e,i)}}}class z0{constructor(i,e){u(this,"loader");u(this,"options");u(this,"xhr");this.loader=i,this.options=e}upload(){return this.loader.file.then(i=>new Promise((e,t)=>{this._initRequest(),this._initListeners(e,t,i),this._sendRequest(i)}))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const i=this.xhr=new XMLHttpRequest;i.open("POST",this.options.uploadUrl,!0),i.responseType="json"}_initListeners(i,e,t){const n=this.xhr,s=this.loader,r=`Couldn't upload file: ${t.name}.`;n.addEventListener("error",()=>e(r)),n.addEventListener("abort",()=>e()),n.addEventListener("load",()=>{const a=n.response;if(!a||a.error)return e(a&&a.error&&a.error.message?a.error.message:r);const l=a.url?{default:a.url}:a.urls;i({...a,urls:l})});/* istanbul ignore else -- @preserve */n.upload&&n.upload.addEventListener("progress",a=>{a.lengthComputable&&(s.uploadTotal=a.total,s.uploaded=a.loaded)})}_sendRequest(i){let e=this.options.headers||{};typeof e=="function"&&(e=e(i));const t=this.options.withCredentials||!1;for(const s of Object.keys(e))this.xhr.setRequestHeader(s,e[s]);this.xhr.withCredentials=t;const n=new FormData;n.append("upload",i),this.xhr.send(n)}}/**
215
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
216
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
217
+ */var id='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 6.628a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"/><path d="M8.5 9.125a.3.3 0 0 0-.253-.296L5.11 8.327a.75.75 0 1 1 .388-1.449l4.04.716c.267.072.624.08.893.009l4.066-.724a.75.75 0 1 1 .388 1.45l-3.132.5a.3.3 0 0 0-.253.296v1.357a.3.3 0 0 0 .018.102l1.615 4.438a.75.75 0 0 1-1.41.513l-1.35-3.71a.3.3 0 0 0-.281-.197h-.209a.3.3 0 0 0-.282.198l-1.35 3.711a.75.75 0 0 1-1.41-.513l1.64-4.509a.3.3 0 0 0 .019-.103V9.125Z"/><path clip-rule="evenodd" d="M10 18.5a8.5 8.5 0 1 1 0-17 8.5 8.5 0 0 1 0 17Zm0 1.5c5.523 0 10-4.477 10-10S15.523 0 10 0 0 4.477 0 10s4.477 10 10 10Z"/></svg>',N0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',dg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',ug='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',Xa='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',D0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',hg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',O0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',mg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z"/></svg>',Qa='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>',Ms='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',gg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',Bs='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',F0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.209 18.717A8.5 8.5 0 1 1 18.686 9.6h-.008l.002.12a3 3 0 0 1-2.866 2.997h-.268l-.046-.002v.002h-4.791a2 2 0 1 0 0 4 1 1 0 1 1-.128 1.992 8.665 8.665 0 0 1-.372.008Zm-3.918-7.01a1.25 1.25 0 1 0-2.415-.648 1.25 1.25 0 0 0 2.415.647ZM5.723 8.18a1.25 1.25 0 1 0 .647-2.414 1.25 1.25 0 0 0-.647 2.414ZM9.76 6.155a1.25 1.25 0 1 0 .647-2.415 1.25 1.25 0 0 0-.647 2.415Zm4.028 1.759a1.25 1.25 0 1 0 .647-2.415 1.25 1.25 0 0 0-.647 2.415Z"/></svg>',U0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',H0='<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',W0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5 3.25a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/><path d="M12 3.25a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/><path d="M5 10a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/><path d="M12 10a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/><path d="M5 16.75a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/><path d="M12 16.75a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0"/></svg>',Vs='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>',q0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',j0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 9h16v2H2z"/></svg>',G0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.66 9.118a.693.693 0 0 1 .956.032l3.65 3.411 2.422-2.238a.695.695 0 0 1 .945 0L17.5 13.6V2.5h-15v11.1l4.16-4.482ZM17.8 1c.652 0 1.2.47 1.2 1.1v14.362c0 .64-.532 1.038-1.184 1.038H2.184C1.532 17.5 1 17.103 1 16.462V2.1C1 1.47 1.537 1 2.2 1h15.6Zm-5.655 6a2.128 2.128 0 0 1 .157-2.364A2.133 2.133 0 1 1 12.145 7Z"/></svg>',$0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M1.201 1C.538 1 0 1.47 0 2.1v14.363c0 .64.534 1.037 1.186 1.037h9.494a2.97 2.97 0 0 1-.414-.287 2.998 2.998 0 0 1-1.055-2.03 3.003 3.003 0 0 1 .693-2.185l.383-.455-.02.018-3.65-3.41a.695.695 0 0 0-.957-.034L1.5 13.6V2.5h15v5.535a2.97 2.97 0 0 1 1.412.932l.088.105V2.1c0-.63-.547-1.1-1.2-1.1H1.202Zm11.713 2.803a2.146 2.146 0 0 0-2.049 1.992 2.14 2.14 0 0 0 1.28 2.096 2.13 2.13 0 0 0 2.644-3.11 2.134 2.134 0 0 0-1.875-.978Z"/><path d="M15.522 19.1a.79.79 0 0 0 .79-.79v-5.373l2.059 2.455a.79.79 0 1 0 1.211-1.015l-3.352-3.995a.79.79 0 0 0-.995-.179.784.784 0 0 0-.299.221l-3.35 3.99a.79.79 0 1 0 1.21 1.017l1.936-2.306v5.185c0 .436.353.79.79.79Z"/><path d="M15.522 19.1a.79.79 0 0 0 .79-.79v-5.373l2.059 2.455a.79.79 0 1 0 1.211-1.015l-3.352-3.995a.79.79 0 0 0-.995-.179.784.784 0 0 0-.299.221l-3.35 3.99a.79.79 0 1 0 1.21 1.017l1.936-2.306v5.185c0 .436.353.79.79.79Z"/></svg>',K0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M1.201 1C.538 1 0 1.47 0 2.1v14.363c0 .64.534 1.037 1.186 1.037h7.029a5.401 5.401 0 0 1 .615-4.338l.762-1.232-2.975-2.78a.696.696 0 0 0-.957-.033L1.5 13.6V2.5h15v6.023c.449.131.887.32 1.307.573l.058.033c.046.028.09.057.135.086V2.1c0-.63-.547-1.1-1.2-1.1H1.202Zm11.713 2.803a2.15 2.15 0 0 0-1.611.834 2.118 2.118 0 0 0-.438 1.158 2.14 2.14 0 0 0 1.277 2.096 2.132 2.132 0 0 0 2.645-3.11 2.13 2.13 0 0 0-1.873-.978Z"/><path d="M16.63 10.294a3.003 3.003 0 0 0-4.142.887l-.117.177a.647.647 0 0 0-.096.492.664.664 0 0 0 .278.418.7.7 0 0 0 .944-.234 1.741 1.741 0 0 1 2.478-.463 1.869 1.869 0 0 1 .476 2.55.637.637 0 0 0-.071.5.646.646 0 0 0 .309.396.627.627 0 0 0 .869-.19l.027-.041a3.226 3.226 0 0 0-.956-4.492Zm-6.061 3.78-.044.066a3.228 3.228 0 0 0 .82 4.403 3.005 3.005 0 0 0 4.275-.798l.13-.197a.626.626 0 0 0 .092-.475.638.638 0 0 0-.268-.402.713.713 0 0 0-.99.26l-.018.029a1.741 1.741 0 0 1-2.477.461 1.87 1.87 0 0 1-.475-2.55l.029-.047a.647.647 0 0 0 .086-.485.66.66 0 0 0-.275-.408l-.04-.027a.609.609 0 0 0-.845.17Z"/><path d="M15.312 13.925c.24-.36.154-.838-.19-1.067-.346-.23-.82-.124-1.059.236l-1.268 1.907c-.239.36-.153.838.192 1.067.345.23.818.123 1.057-.236l1.268-1.907Z"/></svg>',Z0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M19 4.5 14 0H3v12.673l.868-1.041c.185-.222.4-.402.632-.54V1.5h8v5h5v7.626a2.24 2.24 0 0 1 1.5.822V4.5ZM14 5V2l3.3 3H14Zm-3.692 12.5c.062.105.133.206.213.303L11.52 19H8v-.876a2.243 2.243 0 0 0 1.82-.624h.488Zm7.518-.657a.75.75 0 0 0-1.152-.96L15.5 17.29V12H14v5.29l-1.174-1.408a.75.75 0 0 0-1.152.96l2.346 2.816a.95.95 0 0 0 1.46 0l2.346-2.815Zm-15.056-.38a.75.75 0 0 1-.096-1.056l2.346-2.815a.95.95 0 0 1 1.46 0l2.346 2.815a.75.75 0 1 1-1.152.96L6.5 14.96V20H5v-5.04l-1.174 1.408a.75.75 0 0 1-1.056.096Z"/></svg>',J0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z"/></svg>',Y0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>',X0='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>',Q0='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>',e1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>',t1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>',i1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>',n1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>',o1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>',s1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>',r1='<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>',fg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>',el='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',ss='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',a1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',tl='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',rs='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',pg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',wg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',bg='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',l1='<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="https://vecta.io/nano" viewBox="0 0 20 20"><path d="M.95 1.43a.95.95 0 0 0-.95.95v3.1a.95.95 0 0 0 .95.95h.75v6.3H.95a.95.95 0 0 0-.95.95v3.1a.95.95 0 0 0 .95.95h3.1a.95.95 0 0 0 .95-.95v-.65h1.932l1.539-1.5H5v-.95a.95.95 0 0 0-.95-.95H3.2v-6.3h.85A.95.95 0 0 0 5 5.48v-.55h10v.55a.95.95 0 0 0 .95.95h3.1a.95.95 0 0 0 .95-.95v-3.1a.95.95 0 0 0-.95-.95h-3.1a.95.95 0 0 0-.95.95v1.05H5V2.38a.95.95 0 0 0-.95-.95H.95zm.55 3.5v-2h2v2h-2zm0 9.3v2h2v-2h-2zm15-11.3v2h2v-2h-2z"/><path d="M8.139 20.004v-2.388l7.045-7.048 2.391 2.391-7.046 7.046h-2.39zm11.421-9.101a.64.64 0 0 1-.138.206l-1.165 1.168-2.391-2.391 1.167-1.163a.63.63 0 0 1 .206-.138.635.635 0 0 1 .243-.049.63.63 0 0 1 .449.187l1.491 1.488c.059.059.108.129.138.206s.049.16.049.243a.6.6 0 0 1-.049.243z"/></svg>',c1='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',d1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 16.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1ZM1 15v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 13v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 11v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 9v1H0V9h1Zm19 0v1h-1V9h1ZM1 7v1H0V7h1Zm19 0v1h-1V7h1ZM1 5v1H0V5h1Zm19 0v1h-1V5h1Zm0-2v1h-1V3h1ZM1 3v1H0V3h1Zm13.5-1.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm-8 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm8 0v1h-1v-1h1Zm-10 0v1h-1v-1h1Z"/><path d="M13 5.5H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2ZM13 7a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-8A.5.5 0 0 1 2 7h11Z"/></svg>',u1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 16.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1ZM1 15v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 13v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 11v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 9v1H0V9h1Zm19 0v1h-1V9h1ZM1 7v1H0V7h1Zm19 0v1h-1V7h1ZM1 5v1H0V5h1Zm19 0v1h-1V5h1Zm0-2v1h-1V3h1ZM1 3v1H0V3h1Zm13.5-1.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm-8 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm8 0v1h-1v-1h1Zm-10 0v1h-1v-1h1Z"/><path d="M10 7.5H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2ZM10 9a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6A.5.5 0 0 1 2 9h8Z"/></svg>',h1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 16.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1ZM1 15v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 13v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 11v1H0v-1h1Zm19 0v1h-1v-1h1ZM1 9v1H0V9h1Zm19 0v1h-1V9h1ZM1 7v1H0V7h1Zm19 0v1h-1V7h1ZM1 5v1H0V5h1Zm19 0v1h-1V5h1Zm0-2v1h-1V3h1ZM1 3v1H0V3h1Zm13.5-1.5v1h-1v-1h1Zm2 0v1h-1v-1h1Zm2 0v1h-1v-1h1Zm-8 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm-2 0v1h-1v-1h1Zm8 0v1h-1v-1h1Zm-10 0v1h-1v-1h1Z"/><path d="M7 9.5H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2ZM7 11a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4A.5.5 0 0 1 2 11h5Z"/></svg>',m1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',g1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',f1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>',p1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2a1 1 0 0 0-1 1v6H3a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6V3a1 1 0 0 0-1-1Z"/></svg>',Zi='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>',w1=`<svg xmlns="http://www.w3.org/2000/svg" width="53" height="10" viewBox="0 0 53 10"><path fill="#1C2331" d="M31.724 1.492a15.139 15.139 0 0 0 .045 1.16 2.434 2.434 0 0 0-.687-.34 3.68 3.68 0 0 0-1.103-.166 2.332 2.332 0 0 0-1.14.255 1.549 1.549 0 0 0-.686.87c-.15.41-.225.98-.225 1.712 0 .939.148 1.659.444 2.161.297.503.792.754 1.487.754.452.015.9-.094 1.294-.316.296-.174.557-.4.771-.669l.14.852h1.282V.007h-1.623v1.485ZM31 6.496a1.77 1.77 0 0 1-.494.061.964.964 0 0 1-.521-.127.758.758 0 0 1-.296-.466 3.984 3.984 0 0 1-.093-.992 4.208 4.208 0 0 1 .098-1.052.753.753 0 0 1 .307-.477 1.08 1.08 0 0 1 .55-.122c.233-.004.466.026.69.089l.483.144v2.553c-.11.076-.213.143-.307.2a1.73 1.73 0 0 1-.417.189ZM35.68 0l-.702.004c-.322.002-.482.168-.48.497l.004.581c.002.33.164.493.486.49l.702-.004c.322-.002.481-.167.48-.496L36.165.49c-.002-.33-.164-.493-.486-.491ZM36.145 2.313l-1.612.01.034 5.482 1.613-.01-.035-5.482ZM39.623.79 37.989.8 38 2.306l-.946.056.006 1.009.949-.006.024 2.983c.003.476.143.844.419 1.106.275.26.658.39 1.148.387.132 0 .293-.01.483-.03.19-.02.38-.046.57-.08.163-.028.324-.068.482-.119l-.183-1.095-.702.004a.664.664 0 0 1-.456-.123.553.553 0 0 1-.14-.422l-.016-2.621 1.513-.01-.006-1.064-1.514.01-.01-1.503ZM46.226 2.388c-.41-.184-.956-.274-1.636-.27-.673.004-1.215.101-1.627.29-.402.179-.72.505-.888.91-.18.419-.268.979-.264 1.68.004.688.1 1.24.285 1.655.172.404.495.724.9.894.414.18.957.268 1.63.264.68-.004 1.224-.099 1.632-.284.4-.176.714-.501.878-.905.176-.418.263-.971.258-1.658-.004-.702-.097-1.261-.28-1.677a1.696 1.696 0 0 0-.888-.9Zm-.613 3.607a.77.77 0 0 1-.337.501 1.649 1.649 0 0 1-1.317.009.776.776 0 0 1-.343-.497 4.066 4.066 0 0 1-.105-1.02 4.136 4.136 0 0 1 .092-1.03.786.786 0 0 1 .337-.507 1.59 1.59 0 0 1 1.316-.008.79.79 0 0 1 .344.502c.078.337.113.683.105 1.03.012.343-.019.685-.092 1.02ZM52.114 2.07a2.67 2.67 0 0 0-1.128.278c-.39.191-.752.437-1.072.73l-.157-.846-1.273.008.036 5.572 1.623-.01-.024-3.78c.35-.124.646-.22.887-.286.26-.075.53-.114.8-.118l.45-.003.144-1.546-.286.001ZM22.083 7.426l-1.576-2.532a2.137 2.137 0 0 0-.172-.253 1.95 1.95 0 0 0-.304-.29.138.138 0 0 1 .042-.04 1.7 1.7 0 0 0 .328-.374l1.75-2.71c.01-.015.025-.028.024-.048-.01-.01-.021-.007-.031-.007L20.49 1.17a.078.078 0 0 0-.075.045l-.868 1.384c-.23.366-.46.732-.688 1.099a.108.108 0 0 1-.112.06c-.098-.005-.196-.001-.294-.002-.018 0-.038.006-.055-.007.002-.02.002-.039.005-.058a4.6 4.6 0 0 0 .046-.701V1.203c0-.02-.009-.032-.03-.03h-.033L16.93 1.17c-.084 0-.073-.01-.073.076v6.491c-.001.018.006.028.025.027h1.494c.083 0 .072.007.072-.071v-2.19c0-.055-.003-.11-.004-.166a3.366 3.366 0 0 0-.05-.417h.06c.104 0 .209.002.313-.002a.082.082 0 0 1 .084.05c.535.913 1.07 1.824 1.607 2.736a.104.104 0 0 0 .103.062c.554-.003 1.107-.002 1.66-.002l.069-.003-.019-.032-.188-.304ZM27.112 6.555c-.005-.08-.004-.08-.082-.08h-2.414c-.053 0-.106-.003-.159-.011a.279.279 0 0 1-.246-.209.558.558 0 0 1-.022-.15c0-.382 0-.762-.002-1.143 0-.032.007-.049.042-.044h2.504c.029.003.037-.012.034-.038V3.814c0-.089.013-.078-.076-.078h-2.44c-.07 0-.062.003-.062-.06v-.837c0-.047.004-.093.013-.14a.283.283 0 0 1 .241-.246.717.717 0 0 1 .146-.011h2.484c.024.002.035-.009.036-.033l.003-.038.03-.496c.01-.183.024-.365.034-.548.005-.085.003-.087-.082-.094-.218-.018-.437-.038-.655-.05a17.845 17.845 0 0 0-.657-.026 72.994 72.994 0 0 0-1.756-.016 1.7 1.7 0 0 0-.471.064 1.286 1.286 0 0 0-.817.655c-.099.196-.149.413-.145.633v3.875c0 .072.003.144.011.216a1.27 1.27 0 0 0 .711 1.029c.228.113.48.167.734.158.757-.005 1.515.002 2.272-.042.274-.016.548-.034.82-.053.03-.002.043-.008.04-.041-.008-.104-.012-.208-.019-.312a69.964 69.964 0 0 1-.05-.768ZM16.14 7.415l-.127-1.075c-.004-.03-.014-.04-.044-.037a13.125 13.125 0 0 1-.998.073c-.336.01-.672.02-1.008.016-.116-.001-.233-.014-.347-.039a.746.746 0 0 1-.45-.262c-.075-.1-.132-.211-.167-.33a3.324 3.324 0 0 1-.126-.773 9.113 9.113 0 0 1-.015-.749c0-.285.022-.57.065-.852.023-.158.066-.312.127-.46a.728.728 0 0 1 .518-.443 1.64 1.64 0 0 1 .397-.048c.628-.001 1.255.003 1.882.05.022.001.033-.006.036-.026l.003-.031.06-.55c.019-.177.036-.355.057-.532.004-.034-.005-.046-.04-.056a5.595 5.595 0 0 0-1.213-.21 10.783 10.783 0 0 0-.708-.02c-.24-.003-.48.01-.719.041a3.477 3.477 0 0 0-.625.14 1.912 1.912 0 0 0-.807.497c-.185.2-.33.433-.424.688a4.311 4.311 0 0 0-.24 1.096c-.031.286-.045.572-.042.86-.006.43.024.86.091 1.286.04.25.104.497.193.734.098.279.26.53.473.734.214.205.473.358.756.446.344.11.702.17 1.063.177a8.505 8.505 0 0 0 1.578-.083 6.11 6.11 0 0 0 .766-.18c.03-.008.047-.023.037-.057a.157.157 0 0 1-.003-.025Z"/><path fill="#AFE229" d="M6.016 6.69a1.592 1.592 0 0 0-.614.21c-.23.132-.422.32-.56.546-.044.072-.287.539-.287.539l-.836 1.528.009.006c.038.025.08.046.123.063.127.046.26.07.395.073.505.023 1.011-.007 1.517-.003.29.009.58.002.869-.022a.886.886 0 0 0 .395-.116.962.962 0 0 0 .312-.286c.056-.083.114-.163.164-.249.24-.408.48-.816.718-1.226.075-.128.148-.257.222-.386l.112-.192a1.07 1.07 0 0 0 .153-.518l-1.304.023s-1.258-.005-1.388.01Z"/><path fill="#771BFF" d="m2.848 9.044.76-1.39.184-.352c-.124-.067-.245-.14-.367-.21-.346-.204-.706-.384-1.045-.6a.984.984 0 0 1-.244-.207c-.108-.134-.136-.294-.144-.46-.021-.409-.002-.818-.009-1.227-.003-.195 0-.39.003-.585.004-.322.153-.553.427-.713l.833-.488c.22-.13.44-.257.662-.385.05-.029.105-.052.158-.077.272-.128.519-.047.76.085l.044.028c.123.06.242.125.358.196.318.178.635.357.952.537.095.056.187.117.275.184.194.144.254.35.266.578.016.284.007.569.006.853-.001.28.004.558 0 .838.592-.003 1.259 0 1.259 0l.723-.013c-.003-.292-.007-.584-.007-.876 0-.524.015-1.048-.016-1.571-.024-.42-.135-.8-.492-1.067a5.02 5.02 0 0 0-.506-.339A400.52 400.52 0 0 0 5.94.787C5.722.664 5.513.524 5.282.423 5.255.406 5.228.388 5.2.373 4.758.126 4.305-.026 3.807.21c-.097.046-.197.087-.29.14A699.896 699.896 0 0 0 .783 1.948c-.501.294-.773.717-.778 1.31-.004.36-.009.718-.001 1.077.016.754-.017 1.508.024 2.261.016.304.07.6.269.848.127.15.279.28.448.382.622.4 1.283.734 1.92 1.11l.183.109Z"/></svg>
218
+ `,b1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',nd='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>',v1='<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',k1='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',y1=`<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.734 6.375H1.75a.75.75 0 0 1 0-1.5h1.984a2.626 2.626 0 0 1 5.032 0h9.48a.75.75 0 0 1 0 1.5h-9.48a2.626 2.626 0 0 1-5.032 0Zm1.141-.75a1.375 1.375 0 1 1 2.75 0 1.375 1.375 0 0 1-2.75 0ZM16.263 14.625h1.983a.75.75 0 0 1 0 1.5h-1.983a2.626 2.626 0 0 1-5.033 0H1.75a.75.75 0 0 1 0-1.5h9.48a2.626 2.626 0 0 1 5.033 0Zm-1.142.75a1.375 1.375 0 1 1-2.75 0 1.375 1.375 0 0 1 2.75 0Z"/></svg>
219
+ `,_1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m6.395 9.196 2.545-.007V6.498a.598.598 0 0 1 .598-.598h.299a.598.598 0 0 1 .598.598v6.877a.598.598 0 0 1-.598.598h-.299a.598.598 0 0 1-.598-.598v-2.691l-2.545.007v2.691a.598.598 0 0 1-.598.598h-.299a.598.598 0 0 1-.598-.598V6.505a.598.598 0 0 1 .598-.598h.299a.598.598 0 0 1 .598.598v2.691Z"/><path d="M15.094 13.417V6.462a.562.562 0 0 0-.562-.562h-.782a1 1 0 0 0-.39.08l-1.017.43a.562.562 0 0 0-.343.517v.197c0 .4.406.67.775.519l.819-.337v6.111c0 .31.251.562.561.562h.377c.31 0 .562-.251.562-.562Z"/><path d="M0 15.417v1.5h1.5v-1.5H0Z"/><path d="M18.5 15.417v1.5H20v-1.5h-1.5Z"/><path d="M18.5 12.333v1.5H20v-1.5h-1.5Z"/><path d="M18.5 9.25v1.5H20v-1.5h-1.5Z"/><path d="M18.5 6.167v1.5H20v-1.5h-1.5Z"/><path d="M0 18.5v.5a1 1 0 0 0 1 1h.5v-1.5H0Z"/><path d="M3.083 18.5V20h1.5v-1.5h-1.5Z"/><path d="M6.167 18.5V20h1.5v-1.5h-1.5Z"/><path d="M9.25 18.5V20h1.5v-1.5h-1.5Z"/><path d="M12.333 18.5V20h1.5v-1.5h-1.5Z"/><path d="M15.417 18.5V20h1.5v-1.5h-1.5Z"/><path d="M18.5 18.5V20h.5a1 1 0 0 0 1-1v-.5h-1.5Z"/><path clip-rule="evenodd" d="M0 1a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v3.583h-1.5V1.5h-17v12.333H0V1Z"/></svg>',C1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z"/><path d="M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z"/></svg>',L1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',T1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',E1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',x1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',S1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',od='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 5.5v3h4v-3H3Zm0 4v3h4v-3H3Zm0 4v3h4v-3H3Zm5 3h4v-3H8v3Zm5 0h4v-3h-4v3Zm4-4v-3h-4v3h4Zm0-4v-3h-4v3h4Zm1.5 8A1.5 1.5 0 0 1 17 18H3a1.5 1.5 0 0 1-1.5-1.5V3c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13.5Zm-6.5-4v-3H8v3h4Zm0-4v-3H8v3h4Z"/></svg>',A1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3.035 1C2.446 1 2 1.54 2 2.098V10.5h1.5v-8h13v8H18V2.098C18 1.539 17.48 1 16.9 1H3.035Zm10.453 2.61a1.885 1.885 0 0 0-1.442.736 1.89 1.89 0 0 0 1.011 2.976 1.903 1.903 0 0 0 2.253-1.114 1.887 1.887 0 0 0-1.822-2.598ZM7.463 8.163a.611.611 0 0 0-.432.154L5.071 10.5h5.119L7.88 8.348a.628.628 0 0 0-.417-.185Zm6.236 1.059a.62.62 0 0 0-.42.164L12.07 10.5h2.969l-.92-1.113a.618.618 0 0 0-.42-.165ZM.91 11.5a.91.91 0 0 0-.91.912v6.877c0 .505.405.91.91.91h18.178a.91.91 0 0 0 .912-.91v-6.877a.908.908 0 0 0-.912-.912H.91ZM3.668 13h1.947l2.135 5.7H5.898l-.28-.946H3.601l-.278.945H1.516L3.668 13Zm4.947 0h1.801v4.3h2.7v1.4h-4.5V13h-.001Zm4.5 0h5.4v1.4h-1.798v4.3h-1.701v-4.3h-1.9V13h-.001Zm-8.517 1.457-.614 2.059h1.262l-.648-2.059Z"/></svg>',I1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.816 11.5 7.038 4.785 4.261 11.5h5.555Zm.62 1.5H3.641l-1.666 4.028H.312l5.789-14h1.875l5.789 14h-1.663L10.436 13Z"/><path d="m12.09 17-.534-1.292.848-1.971.545 1.319L12.113 17h-.023Zm1.142-5.187.545 1.319L15.5 9.13l1.858 4.316h-3.45l.398.965h3.467L18.887 17H20l-3.873-9h-1.254l-1.641 3.813Z"/></svg>',il='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>',P1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 18v-1.5h14V18zm2.2-8V3.6c0-.4.4-.6.8-.6.3 0 .7.2.7.6v6.2c0 2 1.3 2.8 3.2 2.8 1.9 0 3.4-.9 3.4-2.9V3.6c0-.3.4-.5.8-.5.3 0 .7.2.7.5V10c0 2.7-2.2 4-4.9 4-2.6 0-4.7-1.2-4.7-4z"/></svg>',sd='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',R1='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',ar,rd;function vg(){return rd||(rd=1,ar={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),ar}var M1=vg();const ad=ch(M1);var ld={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function cd(o){var i,e=[],t=1,n;if(typeof o=="string")if(ad[o])e=ad[o].slice(),n="rgb";else if(o==="transparent")t=0,n="rgb",e=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(o)){var s=o.slice(1),r=s.length,a=r<=4;t=1,a?(e=[parseInt(s[0]+s[0],16),parseInt(s[1]+s[1],16),parseInt(s[2]+s[2],16)],r===4&&(t=parseInt(s[3]+s[3],16)/255)):(e=[parseInt(s[0]+s[1],16),parseInt(s[2]+s[3],16),parseInt(s[4]+s[5],16)],r===8&&(t=parseInt(s[6]+s[7],16)/255)),e[0]||(e[0]=0),e[1]||(e[1]=0),e[2]||(e[2]=0),n="rgb"}else if(i=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(o)){var l=i[1],c=l==="rgb",s=l.replace(/a$/,"");n=s;var r=s==="cmyk"?4:s==="gray"?1:3;e=i[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(m,g){if(/%$/.test(m))return g===r?parseFloat(m)/100:s==="rgb"?parseFloat(m)*255/100:parseFloat(m);if(s[g]==="h"){if(/deg$/.test(m))return parseFloat(m);if(ld[m]!==void 0)return ld[m]}return parseFloat(m)}),l===s&&e.push(1),t=c||e[r]===void 0?1:e[r],e=e.slice(0,r)}else o.length>10&&/[0-9](?:\s|\/)/.test(o)&&(e=o.match(/([0-9]+)/g).map(function(d){return parseFloat(d)}),n=o.match(/([a-z])/ig).join("").toLowerCase());else isNaN(o)?Array.isArray(o)||o.length?(e=[o[0],o[1],o[2]],n="rgb",t=o.length===4?o[3]:1):o instanceof Object&&(o.r!=null||o.red!=null||o.R!=null?(n="rgb",e=[o.r||o.red||o.R||0,o.g||o.green||o.G||0,o.b||o.blue||o.B||0]):(n="hsl",e=[o.h||o.hue||o.H||0,o.s||o.saturation||o.S||0,o.l||o.lightness||o.L||o.b||o.brightness]),t=o.a||o.alpha||o.opacity||1,o.opacity!=null&&(t/=100)):(n="rgb",e=[o>>>16,(o&65280)>>>8,o&255]);return{space:n,values:e,alpha:t}}var lr,dd;function kg(){if(dd)return lr;dd=1;const o=vg(),i={};for(const n of Object.keys(o))i[o[n]]=n;const e={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};lr=e;for(const n of Object.keys(e)){if(!("channels"in e[n]))throw new Error("missing channels property: "+n);if(!("labels"in e[n]))throw new Error("missing channel labels property: "+n);if(e[n].labels.length!==e[n].channels)throw new Error("channel and label counts mismatch: "+n);const{channels:s,labels:r}=e[n];delete e[n].channels,delete e[n].labels,Object.defineProperty(e[n],"channels",{value:s}),Object.defineProperty(e[n],"labels",{value:r})}e.rgb.hsl=function(n){const s=n[0]/255,r=n[1]/255,a=n[2]/255,l=Math.min(s,r,a),c=Math.max(s,r,a),d=c-l;let h,m;c===l?h=0:s===c?h=(r-a)/d:r===c?h=2+(a-s)/d:a===c&&(h=4+(s-r)/d),h=Math.min(h*60,360),h<0&&(h+=360);const g=(l+c)/2;return c===l?m=0:g<=.5?m=d/(c+l):m=d/(2-c-l),[h,m*100,g*100]},e.rgb.hsv=function(n){let s,r,a,l,c;const d=n[0]/255,h=n[1]/255,m=n[2]/255,g=Math.max(d,h,m),f=g-Math.min(d,h,m),p=function(b){return(g-b)/6/f+1/2};return f===0?(l=0,c=0):(c=f/g,s=p(d),r=p(h),a=p(m),d===g?l=a-r:h===g?l=1/3+s-a:m===g&&(l=2/3+r-s),l<0?l+=1:l>1&&(l-=1)),[l*360,c*100,g*100]},e.rgb.hwb=function(n){const s=n[0],r=n[1];let a=n[2];const l=e.rgb.hsl(n)[0],c=1/255*Math.min(s,Math.min(r,a));return a=1-1/255*Math.max(s,Math.max(r,a)),[l,c*100,a*100]},e.rgb.cmyk=function(n){const s=n[0]/255,r=n[1]/255,a=n[2]/255,l=Math.min(1-s,1-r,1-a),c=(1-s-l)/(1-l)||0,d=(1-r-l)/(1-l)||0,h=(1-a-l)/(1-l)||0;return[c*100,d*100,h*100,l*100]};function t(n,s){return(n[0]-s[0])**2+(n[1]-s[1])**2+(n[2]-s[2])**2}return e.rgb.keyword=function(n){const s=i[n];if(s)return s;let r=1/0,a;for(const l of Object.keys(o)){const c=o[l],d=t(n,c);d<r&&(r=d,a=l)}return a},e.keyword.rgb=function(n){return o[n]},e.rgb.xyz=function(n){let s=n[0]/255,r=n[1]/255,a=n[2]/255;s=s>.04045?((s+.055)/1.055)**2.4:s/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;const l=s*.4124+r*.3576+a*.1805,c=s*.2126+r*.7152+a*.0722,d=s*.0193+r*.1192+a*.9505;return[l*100,c*100,d*100]},e.rgb.lab=function(n){const s=e.rgb.xyz(n);let r=s[0],a=s[1],l=s[2];r/=95.047,a/=100,l/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,l=l>.008856?l**(1/3):7.787*l+16/116;const c=116*a-16,d=500*(r-a),h=200*(a-l);return[c,d,h]},e.hsl.rgb=function(n){const s=n[0]/360,r=n[1]/100,a=n[2]/100;let l,c,d;if(r===0)return d=a*255,[d,d,d];a<.5?l=a*(1+r):l=a+r-a*r;const h=2*a-l,m=[0,0,0];for(let g=0;g<3;g++)c=s+1/3*-(g-1),c<0&&c++,c>1&&c--,6*c<1?d=h+(l-h)*6*c:2*c<1?d=l:3*c<2?d=h+(l-h)*(2/3-c)*6:d=h,m[g]=d*255;return m},e.hsl.hsv=function(n){const s=n[0];let r=n[1]/100,a=n[2]/100,l=r;const c=Math.max(a,.01);a*=2,r*=a<=1?a:2-a,l*=c<=1?c:2-c;const d=(a+r)/2,h=a===0?2*l/(c+l):2*r/(a+r);return[s,h*100,d*100]},e.hsv.rgb=function(n){const s=n[0]/60,r=n[1]/100;let a=n[2]/100;const l=Math.floor(s)%6,c=s-Math.floor(s),d=255*a*(1-r),h=255*a*(1-r*c),m=255*a*(1-r*(1-c));switch(a*=255,l){case 0:return[a,m,d];case 1:return[h,a,d];case 2:return[d,a,m];case 3:return[d,h,a];case 4:return[m,d,a];case 5:return[a,d,h]}},e.hsv.hsl=function(n){const s=n[0],r=n[1]/100,a=n[2]/100,l=Math.max(a,.01);let c,d;d=(2-r)*a;const h=(2-r)*l;return c=r*l,c/=h<=1?h:2-h,c=c||0,d/=2,[s,c*100,d*100]},e.hwb.rgb=function(n){const s=n[0]/360;let r=n[1]/100,a=n[2]/100;const l=r+a;let c;l>1&&(r/=l,a/=l);const d=Math.floor(6*s),h=1-a;c=6*s-d,(d&1)!==0&&(c=1-c);const m=r+c*(h-r);let g,f,p;switch(d){default:case 6:case 0:g=h,f=m,p=r;break;case 1:g=m,f=h,p=r;break;case 2:g=r,f=h,p=m;break;case 3:g=r,f=m,p=h;break;case 4:g=m,f=r,p=h;break;case 5:g=h,f=r,p=m;break}return[g*255,f*255,p*255]},e.cmyk.rgb=function(n){const s=n[0]/100,r=n[1]/100,a=n[2]/100,l=n[3]/100,c=1-Math.min(1,s*(1-l)+l),d=1-Math.min(1,r*(1-l)+l),h=1-Math.min(1,a*(1-l)+l);return[c*255,d*255,h*255]},e.xyz.rgb=function(n){const s=n[0]/100,r=n[1]/100,a=n[2]/100;let l,c,d;return l=s*3.2406+r*-1.5372+a*-.4986,c=s*-.9689+r*1.8758+a*.0415,d=s*.0557+r*-.204+a*1.057,l=l>.0031308?1.055*l**(1/2.4)-.055:l*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,d=d>.0031308?1.055*d**(1/2.4)-.055:d*12.92,l=Math.min(Math.max(0,l),1),c=Math.min(Math.max(0,c),1),d=Math.min(Math.max(0,d),1),[l*255,c*255,d*255]},e.xyz.lab=function(n){let s=n[0],r=n[1],a=n[2];s/=95.047,r/=100,a/=108.883,s=s>.008856?s**(1/3):7.787*s+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;const l=116*r-16,c=500*(s-r),d=200*(r-a);return[l,c,d]},e.lab.xyz=function(n){const s=n[0],r=n[1],a=n[2];let l,c,d;c=(s+16)/116,l=r/500+c,d=c-a/200;const h=c**3,m=l**3,g=d**3;return c=h>.008856?h:(c-16/116)/7.787,l=m>.008856?m:(l-16/116)/7.787,d=g>.008856?g:(d-16/116)/7.787,l*=95.047,c*=100,d*=108.883,[l,c,d]},e.lab.lch=function(n){const s=n[0],r=n[1],a=n[2];let l;l=Math.atan2(a,r)*360/2/Math.PI,l<0&&(l+=360);const d=Math.sqrt(r*r+a*a);return[s,d,l]},e.lch.lab=function(n){const s=n[0],r=n[1],l=n[2]/360*2*Math.PI,c=r*Math.cos(l),d=r*Math.sin(l);return[s,c,d]},e.rgb.ansi16=function(n,s=null){const[r,a,l]=n;let c=s===null?e.rgb.hsv(n)[2]:s;if(c=Math.round(c/50),c===0)return 30;let d=30+(Math.round(l/255)<<2|Math.round(a/255)<<1|Math.round(r/255));return c===2&&(d+=60),d},e.hsv.ansi16=function(n){return e.rgb.ansi16(e.hsv.rgb(n),n[2])},e.rgb.ansi256=function(n){const s=n[0],r=n[1],a=n[2];return s===r&&r===a?s<8?16:s>248?231:Math.round((s-8)/247*24)+232:16+36*Math.round(s/255*5)+6*Math.round(r/255*5)+Math.round(a/255*5)},e.ansi16.rgb=function(n){let s=n%10;if(s===0||s===7)return n>50&&(s+=3.5),s=s/10.5*255,[s,s,s];const r=(~~(n>50)+1)*.5,a=(s&1)*r*255,l=(s>>1&1)*r*255,c=(s>>2&1)*r*255;return[a,l,c]},e.ansi256.rgb=function(n){if(n>=232){const c=(n-232)*10+8;return[c,c,c]}n-=16;let s;const r=Math.floor(n/36)/5*255,a=Math.floor((s=n%36)/6)/5*255,l=s%6/5*255;return[r,a,l]},e.rgb.hex=function(n){const r=(((Math.round(n[0])&255)<<16)+((Math.round(n[1])&255)<<8)+(Math.round(n[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r},e.hex.rgb=function(n){const s=n.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!s)return[0,0,0];let r=s[0];s[0].length===3&&(r=r.split("").map(h=>h+h).join(""));const a=parseInt(r,16),l=a>>16&255,c=a>>8&255,d=a&255;return[l,c,d]},e.rgb.hcg=function(n){const s=n[0]/255,r=n[1]/255,a=n[2]/255,l=Math.max(Math.max(s,r),a),c=Math.min(Math.min(s,r),a),d=l-c;let h,m;return d<1?h=c/(1-d):h=0,d<=0?m=0:l===s?m=(r-a)/d%6:l===r?m=2+(a-s)/d:m=4+(s-r)/d,m/=6,m%=1,[m*360,d*100,h*100]},e.hsl.hcg=function(n){const s=n[1]/100,r=n[2]/100,a=r<.5?2*s*r:2*s*(1-r);let l=0;return a<1&&(l=(r-.5*a)/(1-a)),[n[0],a*100,l*100]},e.hsv.hcg=function(n){const s=n[1]/100,r=n[2]/100,a=s*r;let l=0;return a<1&&(l=(r-a)/(1-a)),[n[0],a*100,l*100]},e.hcg.rgb=function(n){const s=n[0]/360,r=n[1]/100,a=n[2]/100;if(r===0)return[a*255,a*255,a*255];const l=[0,0,0],c=s%1*6,d=c%1,h=1-d;let m=0;switch(Math.floor(c)){case 0:l[0]=1,l[1]=d,l[2]=0;break;case 1:l[0]=h,l[1]=1,l[2]=0;break;case 2:l[0]=0,l[1]=1,l[2]=d;break;case 3:l[0]=0,l[1]=h,l[2]=1;break;case 4:l[0]=d,l[1]=0,l[2]=1;break;default:l[0]=1,l[1]=0,l[2]=h}return m=(1-r)*a,[(r*l[0]+m)*255,(r*l[1]+m)*255,(r*l[2]+m)*255]},e.hcg.hsv=function(n){const s=n[1]/100,r=n[2]/100,a=s+r*(1-s);let l=0;return a>0&&(l=s/a),[n[0],l*100,a*100]},e.hcg.hsl=function(n){const s=n[1]/100,a=n[2]/100*(1-s)+.5*s;let l=0;return a>0&&a<.5?l=s/(2*a):a>=.5&&a<1&&(l=s/(2*(1-a))),[n[0],l*100,a*100]},e.hcg.hwb=function(n){const s=n[1]/100,r=n[2]/100,a=s+r*(1-s);return[n[0],(a-s)*100,(1-a)*100]},e.hwb.hcg=function(n){const s=n[1]/100,a=1-n[2]/100,l=a-s;let c=0;return l<1&&(c=(a-l)/(1-l)),[n[0],l*100,c*100]},e.apple.rgb=function(n){return[n[0]/65535*255,n[1]/65535*255,n[2]/65535*255]},e.rgb.apple=function(n){return[n[0]/255*65535,n[1]/255*65535,n[2]/255*65535]},e.gray.rgb=function(n){return[n[0]/100*255,n[0]/100*255,n[0]/100*255]},e.gray.hsl=function(n){return[0,0,n[0]]},e.gray.hsv=e.gray.hsl,e.gray.hwb=function(n){return[0,100,n[0]]},e.gray.cmyk=function(n){return[0,0,0,n[0]]},e.gray.lab=function(n){return[n[0],0,0]},e.gray.hex=function(n){const s=Math.round(n[0]/100*255)&255,a=((s<<16)+(s<<8)+s).toString(16).toUpperCase();return"000000".substring(a.length)+a},e.rgb.gray=function(n){return[(n[0]+n[1]+n[2])/3/255*100]},lr}var cr,ud;function B1(){if(ud)return cr;ud=1;const o=kg();function i(){const s={},r=Object.keys(o);for(let a=r.length,l=0;l<a;l++)s[r[l]]={distance:-1,parent:null};return s}function e(s){const r=i(),a=[s];for(r[s].distance=0;a.length;){const l=a.pop(),c=Object.keys(o[l]);for(let d=c.length,h=0;h<d;h++){const m=c[h],g=r[m];g.distance===-1&&(g.distance=r[l].distance+1,g.parent=l,a.unshift(m))}}return r}function t(s,r){return function(a){return r(s(a))}}function n(s,r){const a=[r[s].parent,s];let l=o[r[s].parent][s],c=r[s].parent;for(;r[c].parent;)a.unshift(r[c].parent),l=t(o[r[c].parent][c],l),c=r[c].parent;return l.conversion=a,l}return cr=function(s){const r=e(s),a={},l=Object.keys(r);for(let c=l.length,d=0;d<c;d++){const h=l[d];r[h].parent!==null&&(a[h]=n(h,r))}return a},cr}var dr,hd;function V1(){if(hd)return dr;hd=1;const o=kg(),i=B1(),e={},t=Object.keys(o);function n(r){const a=function(...l){const c=l[0];return c==null?c:(c.length>1&&(l=c),r(l))};return"conversion"in r&&(a.conversion=r.conversion),a}function s(r){const a=function(...l){const c=l[0];if(c==null)return c;c.length>1&&(l=c);const d=r(l);if(typeof d=="object")for(let h=d.length,m=0;m<h;m++)d[m]=Math.round(d[m]);return d};return"conversion"in r&&(a.conversion=r.conversion),a}return t.forEach(r=>{e[r]={},Object.defineProperty(e[r],"channels",{value:o[r].channels}),Object.defineProperty(e[r],"labels",{value:o[r].labels});const a=i(r);Object.keys(a).forEach(c=>{const d=a[c];e[r][c]=s(d),e[r][c].raw=n(d)})}),dr=e,dr}var yg=V1();const z1=ch(yg),_g=Zp({__proto__:null,default:z1},[yg]),Un=(o,i=0,e=1)=>o>e?e:o<i?i:o,ye=(o,i=0,e=Math.pow(10,i))=>Math.round(e*o)/e,N1=o=>H1(Kr(o)),Kr=o=>(o[0]==="#"&&(o=o.substring(1)),o.length<6?{r:parseInt(o[0]+o[0],16),g:parseInt(o[1]+o[1],16),b:parseInt(o[2]+o[2],16),a:o.length===4?ye(parseInt(o[3]+o[3],16)/255,2):1}:{r:parseInt(o.substring(0,2),16),g:parseInt(o.substring(2,4),16),b:parseInt(o.substring(4,6),16),a:o.length===8?ye(parseInt(o.substring(6,8),16)/255,2):1}),D1=o=>U1(F1(o)),O1=({h:o,s:i,v:e,a:t})=>{const n=(200-i)*e/100;return{h:ye(o),s:ye(n>0&&n<200?i*e/100/(n<=100?n:200-n)*100:0),l:ye(n/2),a:ye(t,2)}},Zr=o=>{const{h:i,s:e,l:t}=O1(o);return`hsl(${i}, ${e}%, ${t}%)`},F1=({h:o,s:i,v:e,a:t})=>{o=o/360*6,i=i/100,e=e/100;const n=Math.floor(o),s=e*(1-i),r=e*(1-(o-n)*i),a=e*(1-(1-o+n)*i),l=n%6;return{r:ye([e,r,s,s,a,e][l]*255),g:ye([a,e,e,r,s,s][l]*255),b:ye([s,s,a,e,e,r][l]*255),a:ye(t,2)}},bo=o=>{const i=o.toString(16);return i.length<2?"0"+i:i},U1=({r:o,g:i,b:e,a:t})=>{const n=t<1?bo(ye(t*255)):"";return"#"+bo(o)+bo(i)+bo(e)+n},H1=({r:o,g:i,b:e,a:t})=>{const n=Math.max(o,i,e),s=n-Math.min(o,i,e),r=s?n===o?(i-e)/s:n===i?2+(e-o)/s:4+(o-i)/s:0;return{h:ye(60*(r<0?r+6:r)),s:ye(n?s/n*100:0),v:ye(n/255*100),a:t}},Cg=(o,i)=>{if(o===i)return!0;for(const e in o)if(o[e]!==i[e])return!1;return!0},W1=(o,i)=>o.toLowerCase()===i.toLowerCase()?!0:Cg(Kr(o),Kr(i)),md={},Lg=o=>{let i=md[o];return i||(i=document.createElement("template"),i.innerHTML=o,md[o]=i),i},nl=(o,i,e)=>{o.dispatchEvent(new CustomEvent(i,{bubbles:!0,detail:e}))};let Ui=!1;const Jr=o=>"touches"in o,q1=o=>Ui&&!Jr(o)?!1:(Ui||(Ui=Jr(o)),!0),gd=(o,i)=>{const e=Jr(i)?i.touches[0]:i,t=o.el.getBoundingClientRect();nl(o.el,"move",o.getMove({x:Un((e.pageX-(t.left+window.pageXOffset))/t.width),y:Un((e.pageY-(t.top+window.pageYOffset))/t.height)}))},j1=(o,i)=>{const e=i.keyCode;e>40||o.xy&&e<37||e<33||(i.preventDefault(),nl(o.el,"move",o.getMove({x:e===39?.01:e===37?-.01:e===34?.05:e===33?-.05:e===35?1:e===36?-1:0,y:e===40?.01:e===38?-.01:0},!0)))};class Tg{constructor(i,e,t,n){const s=Lg(`<div role="slider" tabindex="0" part="${e}" ${t}><div part="${e}-pointer"></div></div>`);i.appendChild(s.content.cloneNode(!0));const r=i.querySelector(`[part=${e}]`);r.addEventListener("mousedown",this),r.addEventListener("touchstart",this),r.addEventListener("keydown",this),this.el=r,this.xy=n,this.nodes=[r.firstChild,r]}set dragging(i){const e=i?document.addEventListener:document.removeEventListener;e(Ui?"touchmove":"mousemove",this),e(Ui?"touchend":"mouseup",this)}handleEvent(i){switch(i.type){case"mousedown":case"touchstart":if(i.preventDefault(),!q1(i)||!Ui&&i.button!=0)return;this.el.focus(),gd(this,i),this.dragging=!0;break;case"mousemove":case"touchmove":i.preventDefault(),gd(this,i);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":j1(this,i);break}}style(i){i.forEach((e,t)=>{for(const n in e)this.nodes[t].style.setProperty(n,e[n])})}}class G1 extends Tg{constructor(i){super(i,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:i}){this.h=i,this.style([{left:`${i/360*100}%`,color:Zr({h:i,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${ye(i)}`)}getMove(i,e){return{h:e?Un(this.h+i.x*360,0,360):360*i.x}}}class $1 extends Tg{constructor(i){super(i,"saturation",'aria-label="Color"',!0)}update(i){this.hsva=i,this.style([{top:`${100-i.v}%`,left:`${i.s}%`,color:Zr(i)},{"background-color":Zr({h:i.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${ye(i.s)}%, Brightness ${ye(i.v)}%`)}getMove(i,e){return{s:e?Un(this.hsva.s+i.x*100,0,100):i.x*100,v:e?Un(this.hsva.v-i.y*100,0,100):Math.round(100-i.y*100)}}}const K1=':host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:"";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}',Z1="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}",J1="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}",vo=Symbol("same"),ur=Symbol("color"),fd=Symbol("hsva"),hr=Symbol("update"),pd=Symbol("parts"),wd=Symbol("css"),bd=Symbol("sliders");class Y1 extends HTMLElement{static get observedAttributes(){return["color"]}get[wd](){return[K1,Z1,J1]}get[bd](){return[$1,G1]}get color(){return this[ur]}set color(i){if(!this[vo](i)){const e=this.colorModel.toHsva(i);this[hr](e),this[ur]=i}}constructor(){super();const i=Lg(`<style>${this[wd].join("")}</style>`),e=this.attachShadow({mode:"open"});e.appendChild(i.content.cloneNode(!0)),e.addEventListener("move",this),this[pd]=this[bd].map(t=>new t(e))}connectedCallback(){if(this.hasOwnProperty("color")){const i=this.color;delete this.color,this.color=i}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(i,e,t){const n=this.colorModel.fromAttr(t);this[vo](n)||(this.color=n)}handleEvent(i){const e=this[fd],t={...e,...i.detail};this[hr](t);let n;!Cg(t,e)&&!this[vo](n=this.colorModel.fromHsva(t))&&(this[ur]=n,nl(this,"color-changed",{value:n}))}[vo](i){return this.color&&this.colorModel.equal(i,this.color)}[hr](i){this[fd]=i,this[pd].forEach(e=>e.update(i))}}const X1={defaultColor:"#000",toHsva:N1,fromHsva:({h:o,s:i,v:e})=>D1({h:o,s:i,v:e,a:1}),equal:W1,fromAttr:o=>o};class Q1 extends Y1{get colorModel(){return X1}}/**
220
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
221
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
222
+ */class ve extends Be{constructor(e=[]){super(e,{idProperty:"viewUid"});u(this,"_parentElement");this.on("add",(t,n,s)=>{this._renderViewIntoCollectionParent(n,s)}),this.on("remove",(t,n)=>{n.element&&this._parentElement&&n.element.remove()}),this._parentElement=null}destroy(){this.map(e=>e.destroy())}setParent(e){this._parentElement=e;for(const t of this)this._renderViewIntoCollectionParent(t)}delegate(...e){if(!e.length||!eC(e))throw new w("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const n of this)for(const s of e)n.delegate(s).to(t);this.on("add",(n,s)=>{for(const r of e)s.delegate(r).to(t)}),this.on("remove",(n,s)=>{for(const r of e)s.stopDelegating(r,t)})}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}remove(e){return super.remove(e)}}function eC(o){return o.every(i=>typeof i=="string")}const tC="http://www.w3.org/1999/xhtml";class He extends G(){constructor(e){super();u(this,"ns");u(this,"tag");u(this,"text");u(this,"attributes");u(this,"children");u(this,"eventListeners");u(this,"_isRendered");u(this,"_revertData");Object.assign(this,kd(vd(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData=Cd(),this._renderNode({node:e,intoFragment:!1,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new w("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){function*e(t){if(t.children)for(const n of t.children)as(n)?yield n:ol(n)&&(yield*e(n))}yield*e(this)}static bind(e,t){return{to(n,s){return new iC({eventNameOrFunction:n,attribute:n,observable:e,emitter:t,callback:s})},if(n,s,r){return new Eg({observable:e,emitter:t,attribute:n,valueIfTrue:s,callback:r})}}}static extend(e,t){if(e._isRendered)throw new w("template-extend-render",[this,e]);Ig(e,kd(vd(t)))}_renderNode(e){let t;if(e.node?t=this.tag&&this.text:t=this.tag?this.text:!this.text,t)throw new w("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||tC,this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),zo(this.text)?this._bindToObservable({schema:this.text,updater:oC(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){if(!this.attributes)return;const t=e.node,n=e.revertData;for(const s in this.attributes){const r=t.getAttribute(s),a=this.attributes[s];n&&(n.attributes[s]=r);const l=_d(a)?a[0].ns:null;if(zo(a)){const c=_d(a)?a[0].value:a;n&&Ld(s)&&c.unshift(r),this._bindToObservable({schema:c,updater:sC(t,s,l),data:e})}else if(s=="style"&&typeof a[0]!="string")this._renderStyleAttribute(a[0],e);else{n&&r&&Ld(s)&&a.unshift(r);const c=a.map(d=>d&&(d.value||d)).reduce((d,h)=>d.concat(h),[]).reduce(Ag,"");ji(c)||t.setAttributeNS(l,s,c)}}}_renderStyleAttribute(e,t){const n=t.node;for(const s in e){const r=e[s];zo(r)?this._bindToObservable({schema:[r],updater:rC(n,s),data:t}):n.style[s]=r}}_renderElementChildren(e){const t=e.node,n=e.intoFragment?document.createDocumentFragment():t,s=e.isApplying;let r=0;for(const a of this.children)if(sl(a)){if(!s){a.setParent(t);for(const l of a)n.appendChild(l.element)}}else if(as(a))s||(a.isRendered||a.render(),n.appendChild(a.element));else if($t(a))n.appendChild(a);else if(s){const l=e.revertData,c=Cd();l.children.push(c),a._renderNode({intoFragment:!1,node:n.childNodes[r++],isApplying:!0,revertData:c})}else n.appendChild(a.render());e.intoFragment&&t.appendChild(n)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const n=this.eventListeners[t].map(s=>{const[r,a]=t.split("@");return s.activateDomEventListener(r,a,e)});e.revertData&&e.revertData.bindings.push(n)}}_bindToObservable({schema:e,updater:t,data:n}){const s=n.revertData;xg(e,t,n);const r=e.filter(a=>!ji(a)).filter(a=>a.observable).map(a=>a.activateAttributeListener(e,t,n));s&&s.bindings.push(r)}_revertTemplateFromNode(e,t){for(const s of t.bindings)for(const r of s)r();if(t.text){e.textContent=t.text;return}const n=e;for(const s in t.attributes){const r=t.attributes[s];r===null?n.removeAttribute(s):n.setAttribute(s,r)}for(let s=0;s<t.children.length;++s)this._revertTemplateFromNode(n.childNodes[s],t.children[s])}}class Zn{constructor(i){u(this,"attribute");u(this,"observable");u(this,"emitter");u(this,"callback");this.attribute=i.attribute,this.observable=i.observable,this.emitter=i.emitter,this.callback=i.callback}getValue(i){const e=this.observable[this.attribute];return this.callback?this.callback(e,i):e}activateAttributeListener(i,e,t){const n=()=>xg(i,e,t);return this.emitter.listenTo(this.observable,`change:${this.attribute}`,n),()=>{this.emitter.stopListening(this.observable,`change:${this.attribute}`,n)}}}class iC extends Zn{constructor(e){super(e);u(this,"eventNameOrFunction");this.eventNameOrFunction=e.eventNameOrFunction}activateDomEventListener(e,t,n){const s=(r,a)=>{(!t||a.target.matches(t))&&(typeof this.eventNameOrFunction=="function"?this.eventNameOrFunction(a):this.observable.fire(this.eventNameOrFunction,a))};return this.emitter.listenTo(n.node,e,s),()=>{this.emitter.stopListening(n.node,e,s)}}}class Eg extends Zn{constructor(e){super(e);u(this,"valueIfTrue");this.valueIfTrue=e.valueIfTrue}getValue(e){const t=super.getValue(e);return ji(t)?!1:this.valueIfTrue||!0}}function zo(o){return o?(o.value&&(o=o.value),Array.isArray(o)?o.some(zo):o instanceof Zn):!1}function nC(o,i){return o.map(e=>e instanceof Zn?e.getValue(i):e)}function xg(o,i,{node:e}){const t=nC(o,e);let n;o.length==1&&o[0]instanceof Eg?n=t[0]:n=t.reduce(Ag,""),ji(n)?i.remove():i.set(n)}function oC(o){return{set(i){o.textContent=i},remove(){o.textContent=""}}}function sC(o,i,e){return{set(t){o.setAttributeNS(e,i,t)},remove(){o.removeAttributeNS(e,i)}}}function rC(o,i){return{set(e){o.style[i]=e},remove(){o.style[i]=null}}}function vd(o){return Ss(o,e=>{if(e&&(e instanceof Zn||ol(e)||as(e)||sl(e)))return e})}function kd(o){if(typeof o=="string"?o=cC(o):o.text&&dC(o),o.on&&(o.eventListeners=lC(o.on),delete o.on),!o.text){o.attributes&&aC(o.attributes);const i=[];if(o.children)if(sl(o.children))i.push(o.children);else for(const e of o.children)ol(e)||as(e)||$t(e)?i.push(e):i.push(new He(e));o.children=i}return o}function aC(o){for(const i in o)o[i].value&&(o[i].value=Y(o[i].value)),Sg(o,i)}function lC(o){for(const i in o)Sg(o,i);return o}function cC(o){return{text:[o]}}function dC(o){o.text=Y(o.text)}function Sg(o,i){o[i]=Y(o[i])}function Ag(o,i){return ji(i)?o:ji(o)?i:`${o} ${i}`}function yd(o,i){for(const e in i)o[e]?o[e].push(...i[e]):o[e]=i[e]}function Ig(o,i){if(i.attributes&&(o.attributes||(o.attributes={}),yd(o.attributes,i.attributes)),i.eventListeners&&(o.eventListeners||(o.eventListeners={}),yd(o.eventListeners,i.eventListeners)),i.text&&o.text.push(...i.text),i.children&&i.children.length){if(o.children.length!=i.children.length)throw new w("ui-template-extend-children-mismatch",o);let e=0;for(const t of i.children)Ig(o.children[e++],t)}}function ji(o){return!o&&o!==0}function as(o){return o instanceof E}function ol(o){return o instanceof He}function sl(o){return o instanceof ve}function _d(o){return Qe(o[0])&&o[0].ns}function Cd(){return{children:[],bindings:[],attributes:{}}}function Ld(o){return o=="class"||o=="style"}class E extends Se(j()){constructor(e){super();u(this,"element");u(this,"isRendered");u(this,"locale");u(this,"t");u(this,"template");u(this,"_viewCollections");u(this,"_unboundChildren");u(this,"_bindTemplate");this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new Be,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",(t,n)=>{n.locale=e,n.t=e&&e.t}),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=He.bind(this,this)}createCollection(e){const t=new ve(e);return this._viewCollections.add(t),t}registerChild(e){je(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){je(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new He(e)}extendTemplate(e){He.extend(this.template,e)}render(){if(this.isRendered)throw new w("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map(e=>e.destroy()),this.template&&this.template._revertData&&this.template.revert(this.element)}}/**
223
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
224
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
225
+ */function mi({emitter:o,activator:i,callback:e,contextElements:t,listenerOptions:n}){o.listenTo(document,"mousedown",(s,r)=>{if(!i())return;const a=typeof r.composedPath=="function"?r.composedPath():[],l=typeof t=="function"?t():t;for(const c of l)if(c.contains(r.target)||a.includes(c))return;e()},n)}/**
226
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
227
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
228
+ */function ls(o){class i extends o{disableCssTransitions(){this._isCssTransitionsDisabled=!0}enableCssTransitions(){this._isCssTransitionsDisabled=!1}constructor(...t){super(...t),this.set("_isCssTransitionsDisabled",!1),this.initializeCssTransitionDisablerMixin()}initializeCssTransitionDisablerMixin(){this.extendTemplate({attributes:{class:[this.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}}return i}/**
229
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
230
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
231
+ */function gi({view:o}){o.listenTo(o.element,"submit",(i,e)=>{e.preventDefault(),o.fire("submit")},{useCapture:!0})}/**
232
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
233
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
234
+ */function rl({keystrokeHandler:o,focusTracker:i,gridItems:e,numberOfColumns:t,uiLanguageDirection:n}){const s=typeof t=="number"?()=>t:t;o.set("arrowright",r((c,d)=>n==="rtl"?l(c,d.length):a(c,d.length))),o.set("arrowleft",r((c,d)=>n==="rtl"?a(c,d.length):l(c,d.length))),o.set("arrowup",r((c,d)=>{let h=c-s();return h<0&&(h=c+s()*Math.floor(d.length/s()),h>d.length-1&&(h-=s())),h})),o.set("arrowdown",r((c,d)=>{let h=c+s();return h>d.length-1&&(h=c%s()),h}));function r(c){return d=>{const h=e.find(f=>f.element===i.focusedElement),m=e.getIndex(h),g=c(m,e);e.get(g).focus(),d.stopPropagation(),d.preventDefault()}}function a(c,d){return c===d-1?0:c+1}function l(c,d){return c===0?d-1:c-1}}const Ls=class Ls extends E{constructor(){super();const i=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.set("isColorInherited",!0),this.set("isVisible",!0),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon",i.if("isVisible","ck-hidden",e=>!e),"ck-reset_all-excluded",i.if("isColorInherited","ck-icon_inherit-color")],viewBox:i.to("viewBox"),"aria-hidden":!0}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",()=>{this._updateXMLContent(),this._colorFillPaths()}),this.on("change:fillColor",()=>{this._colorFillPaths()})}_updateXMLContent(){if(this.content){const e=new DOMParser().parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg");if(!e)throw new w("ui-iconview-invalid-svg",this);const t=e.getAttribute("viewBox");t&&(this.viewBox=t);for(const{name:n,value:s}of Array.from(e.attributes))Ls.presentationalAttributeNames.includes(n)&&this.element.setAttribute(n,s);for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach(i=>{i.style.fill=this.fillColor})}};u(Ls,"presentationalAttributeNames",["alignment-baseline","baseline-shift","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-rendering","cursor","direction","display","dominant-baseline","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","image-rendering","letter-spacing","lighting-color","marker-end","marker-mid","marker-start","mask","opacity","overflow","paint-order","pointer-events","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-overflow","text-rendering","transform","unicode-bidi","vector-effect","visibility","white-space","word-spacing","writing-mode"]);let wt=Ls;class Pg extends E{constructor(){super(),this.set({style:void 0,text:void 0,id:void 0});const i=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:i.to("style"),id:i.to("id")},children:[{text:i.to("text")}]})}}class A extends E{constructor(e,t=new Pg){super(e);u(this,"children");u(this,"labelView");u(this,"iconView");u(this,"keystrokeView");u(this,"_focusDelayed",null);const n=this.bindTemplate,s=Me();this.set("_ariaPressed",!1),this.set("_ariaChecked",!1),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",`ck-editor__aria-label_${s}`),this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke",void 0),this.set("label",void 0),this.set("role",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._setupLabelView(t),this.iconView=new wt,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.iconView.bind("content").to(this,"icon"),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const r={tag:"button",attributes:{class:["ck","ck-button",n.to("class"),n.if("isEnabled","ck-disabled",a=>!a),n.if("isVisible","ck-hidden",a=>!a),n.to("isOn",a=>a?"ck-on":"ck-off"),n.if("withText","ck-button_with-text"),n.if("withKeystroke","ck-button_with-keystroke")],role:n.to("role"),type:n.to("type",a=>a||"button"),tabindex:n.to("tabindex"),"aria-checked":n.to("_ariaChecked"),"aria-pressed":n.to("_ariaPressed"),"aria-label":n.to("ariaLabel"),"aria-labelledby":n.to("ariaLabelledBy"),"aria-disabled":n.if("isEnabled",!0,a=>!a),"data-cke-tooltip-text":n.to("_tooltipString"),"data-cke-tooltip-position":n.to("tooltipPosition")},children:this.children,on:{click:n.to(a=>{this.isEnabled?this.fire("execute"):a.preventDefault()})}};this.bind("_ariaPressed").to(this,"isOn",this,"isToggleable",this,"role",(a,l,c)=>!l||Td(c)?!1:String(!!a)),this.bind("_ariaChecked").to(this,"isOn",this,"isToggleable",this,"role",(a,l,c)=>!l||!Td(c)?!1:String(!!a)),I.isSafari&&(this._focusDelayed||(this._focusDelayed=Ba(()=>this.focus(),0)),r.on.mousedown=n.to(()=>{this._focusDelayed()}),r.on.mouseup=n.to(()=>{this._focusDelayed.cancel()})),this.setTemplate(r)}render(){super.render(),this.icon&&this.children.add(this.iconView),this.on("change:icon",(e,t,n,s)=>{n&&!s?this.children.add(this.iconView,0):!n&&s&&this.children.remove(this.iconView)}),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}destroy(){this._focusDelayed&&this._focusDelayed.cancel(),super.destroy()}_setupLabelView(e){return e.bind("text","style","id").to(this,"label","labelStyle","ariaLabelledBy"),e}_createKeystrokeView(){const e=new E;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",t=>Qo(t))}]}),e}_getTooltipString(e,t,n){return e?typeof e=="string"?e:(n&&(n=Qo(n)),e instanceof Function?e(t,n):`${t}${n?` (${n})`:""}`):""}}function Td(o){switch(o){case"radio":case"checkbox":case"option":case"switch":case"menuitemcheckbox":case"menuitemradio":return!0;default:return!1}}class Jt extends E{constructor(e,t={}){super(e);u(this,"children");u(this,"iconView");const n=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",n.to("class")]},children:this.children}),t.icon&&(this.iconView=new wt,this.iconView.content=t.icon,this.children.add(this.iconView));const s=new E(e);s.setTemplate({tag:"h2",attributes:{class:["ck","ck-form__header__label"],role:"presentation"},children:[{text:n.to("label")}]}),this.children.add(s)}}class Ae extends G(){constructor(e){super();u(this,"focusables");u(this,"focusTracker");u(this,"keystrokeHandler");u(this,"actions");if(this.focusables=e.focusables,this.focusTracker=e.focusTracker,this.keystrokeHandler=e.keystrokeHandler,this.actions=e.actions,e.actions&&e.keystrokeHandler)for(const t in e.actions){let n=e.actions[t];typeof n=="string"&&(n=[n]);for(const s of n)e.keystrokeHandler.set(s,(r,a)=>{this[t](),a()},e.keystrokeHandlerOptions)}this.on("forwardCycle",()=>this.focusFirst(),{priority:"low"}),this.on("backwardCycle",()=>this.focusLast(),{priority:"low"})}get first(){return this.focusables.find(mr)||null}get last(){return this.focusables.filter(mr).slice(-1)[0]||null}get next(){return this._getDomFocusableItem(1)}get previous(){return this._getDomFocusableItem(-1)}get current(){let e=null;return this.focusTracker.focusedElement===null?null:(this.focusables.find((t,n)=>{const s=t.element===this.focusTracker.focusedElement;return s&&(e=n),s}),e)}focusFirst(){this._focus(this.first,1)}focusLast(){this._focus(this.last,-1)}focusNext(){const e=this.next;if(e&&this.focusables.getIndex(e)===this.current){this.fire("forwardCycle");return}e===this.first?this.fire("forwardCycle"):this._focus(e,1)}focusPrevious(){const e=this.previous;if(e&&this.focusables.getIndex(e)===this.current){this.fire("backwardCycle");return}e===this.last?this.fire("backwardCycle"):this._focus(e,-1)}chain(e){const t=()=>this.current===null?null:this.focusables.get(this.current);this.listenTo(e,"forwardCycle",n=>{const s=t();this.focusNext(),s!==t()&&n.stop()},{priority:"low"}),this.listenTo(e,"backwardCycle",n=>{const s=t();this.focusPrevious(),s!==t()&&n.stop()},{priority:"low"})}unchain(e){this.stopListening(e)}_focus(e,t){e&&this.focusTracker.focusedElement!==e.element&&e.focus(t)}_getDomFocusableItem(e){const t=this.focusables.length;if(!t)return null;const n=this.current;if(n===null)return this[e===1?"first":"last"];let s=this.focusables.get(n),r=(n+t+e)%t;do{const a=this.focusables.get(r);if(mr(a)){s=a;break}r=(r+t+e)%t}while(r!==n);return s}}function mr(o){return Jn(o)&&St(o.element)}function Jn(o){return"focus"in o&&typeof o.focus=="function"}function uC(o){return Jn(o)&&"focusCycler"in o&&o.focusCycler instanceof Ae}function hC(o){class i extends o{constructor(...n){super(...n);u(this,"_onDragBound",this._onDrag.bind(this));u(this,"_onDragEndBound",this._onDragEnd.bind(this));u(this,"_lastDraggingCoordinates",{x:0,y:0});this.on("render",()=>{this._attachListeners()}),this.set("isDragging",!1)}_attachListeners(){this.listenTo(this.element,"mousedown",this._onDragStart.bind(this)),this.listenTo(this.element,"touchstart",this._onDragStart.bind(this))}_attachDragListeners(){this.listenTo(T.document,"mouseup",this._onDragEndBound),this.listenTo(T.document,"touchend",this._onDragEndBound),this.listenTo(T.document,"mousemove",this._onDragBound),this.listenTo(T.document,"touchmove",this._onDragBound)}_detachDragListeners(){this.stopListening(T.document,"mouseup",this._onDragEndBound),this.stopListening(T.document,"touchend",this._onDragEndBound),this.stopListening(T.document,"mousemove",this._onDragBound),this.stopListening(T.document,"touchmove",this._onDragBound)}_onDragStart(n,s){if(!this._isHandleElementPressed(s))return;this._attachDragListeners();let r=0,a=0;s instanceof MouseEvent?(r=s.clientX,a=s.clientY):(r=s.touches[0].clientX,a=s.touches[0].clientY),this._lastDraggingCoordinates={x:r,y:a},this.isDragging=!0}_onDrag(n,s){if(!this.isDragging){this._detachDragListeners();return}let r=0,a=0;s instanceof MouseEvent?(r=s.clientX,a=s.clientY):(r=s.touches[0].clientX,a=s.touches[0].clientY),s.preventDefault(),this.fire("drag",{deltaX:Math.round(r-this._lastDraggingCoordinates.x),deltaY:Math.round(a-this._lastDraggingCoordinates.y)}),this._lastDraggingCoordinates={x:r,y:a}}_onDragEnd(){this._detachDragListeners(),this.isDragging=!1}_isHandleElementPressed(n){return this.dragHandleElement?this.dragHandleElement===n.target||n.target instanceof HTMLElement&&this.dragHandleElement.contains(n.target):!1}}return i}class mC extends E{constructor(e){super(e);u(this,"children");u(this,"keystrokes");u(this,"focusCycler");u(this,"_focusTracker");u(this,"_focusables");this.children=this.createCollection(),this.keystrokes=new re,this._focusTracker=new ee,this._focusables=new ve,this.focusCycler=new Ae({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__actions"]},children:this.children})}render(){super.render(),this.keystrokes.listenTo(this.element)}setButtons(e){for(const t of e){const n=new A(this.locale);let s;n.on("execute",()=>t.onExecute()),t.onCreate&&t.onCreate(n);for(s in t)s!="onExecute"&&s!="onCreate"&&n.set(s,t[s]);this.children.add(n)}this._updateFocusCyclableItems()}focus(e){e===-1?this.focusCycler.focusLast():this.focusCycler.focusFirst()}_updateFocusCyclableItems(){Array.from(this.children).forEach(e=>{this._focusables.add(e),this._focusTracker.add(e.element)})}}class gC extends E{constructor(e){super(e);u(this,"children");this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__content"]},children:this.children})}reset(){for(;this.children.length;)this.children.remove(0)}}const nt={SCREEN_CENTER:"screen-center",EDITOR_CENTER:"editor-center",EDITOR_TOP_SIDE:"editor-top-side",EDITOR_TOP_CENTER:"editor-top-center",EDITOR_BOTTOM_CENTER:"editor-bottom-center",EDITOR_ABOVE_CENTER:"editor-above-center",EDITOR_BELOW_CENTER:"editor-below-center"},Ed=Ki("px"),Ts=class Ts extends hC(E){constructor(e,{getCurrentDomRoot:t,getViewportOffset:n,keystrokeHandlerOptions:s}){super(e);u(this,"parts");u(this,"headerView");u(this,"closeButtonView");u(this,"actionsView");u(this,"contentView");u(this,"keystrokes");u(this,"focusTracker");u(this,"wasMoved",!1);u(this,"_getCurrentDomRoot");u(this,"_getViewportOffset");u(this,"_focusables");u(this,"_focusCycler");const r=this.bindTemplate,a=e.t;this.set("className",""),this.set("ariaLabel",a("Editor dialog")),this.set("isModal",!1),this.set("position",nt.SCREEN_CENTER),this.set("_isVisible",!1),this.set("_isTransparent",!1),this.set("_top",0),this.set("_left",0),this._getCurrentDomRoot=t,this._getViewportOffset=n,this.decorate("moveTo"),this.parts=this.createCollection(),this.keystrokes=new re,this.focusTracker=new ee,this._focusables=new ve,this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"},keystrokeHandlerOptions:s}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog-overlay",r.if("isModal","ck-dialog-overlay__transparent",l=>!l),r.if("_isVisible","ck-hidden",l=>!l)],tabindex:"-1"},children:[{tag:"div",attributes:{tabindex:"-1",class:["ck","ck-dialog",r.if("isModal","ck-dialog_modal"),r.to("className")],role:"dialog","aria-label":r.to("ariaLabel"),style:{top:r.to("_top",l=>Ed(l)),left:r.to("_left",l=>Ed(l)),visibility:r.if("_isTransparent","hidden")}},children:this.parts}]})}render(){super.render(),this.keystrokes.set("Esc",(e,t)=>{e.defaultPrevented||(this.fire("close",{source:"escKeyPress"}),t())}),this.on("drag",(e,{deltaX:t,deltaY:n})=>{this.wasMoved=!0,this.moveBy(t,n)}),this.listenTo(T.window,"resize",()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()}),this.listenTo(T.document,"scroll",()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()}),this.on("change:_isVisible",(e,t,n)=>{n&&(this._isTransparent=!0,setTimeout(()=>{this.updatePosition(),this._isTransparent=!1,this.focus()},10))}),this.keystrokes.listenTo(this.element)}get dragHandleElement(){return this.headerView&&!this.isModal?this.headerView.element:null}setupParts({icon:e,title:t,hasCloseButton:n=!0,content:s,actionButtons:r}){t&&(this.headerView=new Jt(this.locale,{icon:e}),n&&(this.closeButtonView=this._createCloseButton(),this.headerView.children.add(this.closeButtonView)),this.headerView.label=t,this.ariaLabel=t,this.parts.add(this.headerView,0)),s&&(s instanceof E&&(s=[s]),this.contentView=new gC(this.locale),this.contentView.children.addMany(s),this.parts.add(this.contentView)),r&&(this.actionsView=new mC(this.locale),this.actionsView.setButtons(r),this.parts.add(this.actionsView)),this._updateFocusCyclableItems()}focus(){this._focusCycler.focusFirst()}moveTo(e,t){const n=this._getViewportRect(),s=this._getDialogRect();e+s.width>n.right&&(e=n.right-s.width),e<n.left&&(e=n.left),t<n.top&&(t=n.top),this._moveTo(e,t)}_moveTo(e,t){this._left=e,this._top=t}moveBy(e,t){this.moveTo(this._left+e,this._top+t)}_moveOffScreen(){this._moveTo(-9999,-9999)}updatePosition(){if(!this.element||!this.element.parentNode)return;const e=this._getViewportRect();let t=this.position,n;this._getCurrentDomRoot()?n=this._getVisibleDomRootRect(e):t=nt.SCREEN_CENTER;const s=Ts.defaultOffset,r=this._getDialogRect();switch(t){case nt.EDITOR_TOP_SIDE:{if(n){const a=this.locale.contentLanguageDirection==="ltr"?n.right-r.width-s:n.left+s;this.moveTo(a,n.top+s)}else this._moveOffScreen();break}case nt.EDITOR_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-r.width/2),Math.round(n.top+n.height/2-r.height/2)):this._moveOffScreen();break}case nt.SCREEN_CENTER:{this.moveTo(Math.round((e.width-r.width)/2),Math.round((e.height-r.height)/2));break}case nt.EDITOR_TOP_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-r.width/2),n.top+s):this._moveOffScreen();break}case nt.EDITOR_BOTTOM_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-r.width/2),n.bottom-r.height-s):this._moveOffScreen();break}case nt.EDITOR_ABOVE_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-r.width/2),n.top-r.height-s):this._moveOffScreen();break}case nt.EDITOR_BELOW_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-r.width/2),n.bottom+s):this._moveOffScreen();break}}}_getVisibleDomRootRect(e){let t=new R(this._getCurrentDomRoot()).getVisible();if(t){if(t=e.getIntersection(t),!t)return null}else return null;return t}_getDialogRect(){return new R(this.element.firstElementChild)}_getViewportRect(){const e=new R(T.window);if(this.isModal)return e;const t={top:0,bottom:0,left:0,right:0,...this._getViewportOffset()};return e.top+=t.top,e.height-=t.top,e.bottom-=t.bottom,e.height-=t.bottom,e.left+=t.left,e.right-=t.right,e.width-=t.left+t.right,e}_updateFocusCyclableItems(){const e=[];if(this.contentView)for(const t of this.contentView.children)Jn(t)&&e.push(t);this.actionsView&&e.push(this.actionsView),this.closeButtonView&&e.push(this.closeButtonView),e.forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element),uC(t)&&this._focusCycler.chain(t.focusCycler)})}_createCloseButton(){const e=new A(this.locale),t=this.locale.t;return e.set({label:t("Close"),tooltip:!0,icon:Ms}),e.on("execute",()=>this.fire("close",{source:"closeButton"})),e}};u(Ts,"defaultOffset",15);let Hn=Ts;const ot=class ot extends y{constructor(e){super(e);u(this,"view");u(this,"_onHide");const t=e.t;this._initShowHideListeners(),this._initFocusToggler(),this._initMultiRootIntegration(),this.set({id:null,isOpen:!1}),e.accessibility.addKeystrokeInfos({categoryId:"navigation",keystrokes:[{label:t("Move focus in and out of an active dialog window"),keystroke:"Ctrl+F6",mayRequireFn:!0}]})}static get pluginName(){return"Dialog"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),ot._visibleDialogPlugin===this&&this._unlockBodyScroll()}_initShowHideListeners(){this.on("show",(e,t)=>{this._show(t)}),this.on("show",(e,t)=>{t.onShow&&t.onShow(this)},{priority:"low"}),this.on("hide",()=>{ot._visibleDialogPlugin&&ot._visibleDialogPlugin._hide()}),this.on("hide",()=>{this._onHide&&(this._onHide(this),this._onHide=void 0)},{priority:"low"})}_initFocusToggler(){const e=this.editor;e.keystrokes.set("Ctrl+F6",(t,n)=>{!this.isOpen||this.view.isModal||(this.view.focusTracker.isFocused?e.editing.view.focus():this.view.focus(),n())})}_initMultiRootIntegration(){const e=this.editor.model;e.document.on("change:data",()=>{if(!this.view)return;const t=e.document.differ.getChangedRoots();for(const n of t)n.state&&this.view.updatePosition()})}show(e){this.hide(),this.fire(`show:${e.id}`,e)}_show({id:e,icon:t,title:n,hasCloseButton:s=!0,content:r,actionButtons:a,className:l,isModal:c,position:d,onHide:h,keystrokeHandlerOptions:m}){const g=this.editor;this.view=new Hn(g.locale,{getCurrentDomRoot:()=>g.editing.view.getDomRoot(g.model.document.selection.anchor.root.rootName),getViewportOffset:()=>g.ui.viewportOffset,keystrokeHandlerOptions:m});const f=this.view;f.on("close",()=>{this.hide()}),g.ui.view.body.add(f),g.keystrokes.listenTo(f.element),d||(d=c?nt.SCREEN_CENTER:nt.EDITOR_CENTER),c&&this._lockBodyScroll(),f.set({position:d,_isVisible:!0,className:l,isModal:c}),f.setupParts({icon:t,title:n,hasCloseButton:s,content:r,actionButtons:a}),this.id=e,h&&(this._onHide=h),this.isOpen=!0,ot._visibleDialogPlugin=this}hide(){ot._visibleDialogPlugin&&ot._visibleDialogPlugin.fire(`hide:${ot._visibleDialogPlugin.id}`)}_hide(){if(!this.view)return;const e=this.editor,t=this.view;t.isModal&&this._unlockBodyScroll(),t.contentView&&t.contentView.reset(),e.ui.view.body.remove(t),e.ui.focusTracker.remove(t.element),e.keystrokes.stopListening(t.element),t.destroy(),e.editing.view.focus(),this.id=null,this.isOpen=!1,ot._visibleDialogPlugin=null}_lockBodyScroll(){document.documentElement.classList.add("ck-dialog-scroll-locked")}_unlockBodyScroll(){document.documentElement.classList.remove("ck-dialog-scroll-locked")}};u(ot,"_visibleDialogPlugin");let cs=ot;class Ji extends A{constructor(e,t=new Pg){super(e,t);u(this,"_checkIconHolderView",new fC);this.set({hasCheckSpace:!1,_hasCheck:this.isToggleable});const n=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-list-item-button",n.if("isToggleable","ck-list-item-button_toggleable")]}}),this.bind("_hasCheck").to(this,"hasCheckSpace",this,"isToggleable",(s,r)=>s||r)}render(){super.render(),this._hasCheck&&this.children.add(this._checkIconHolderView,0),this._watchCheckIconHolderMount()}_watchCheckIconHolderMount(){this._checkIconHolderView.bind("isOn").to(this,"isOn",e=>this.isToggleable&&e),this.on("change:_hasCheck",(e,t,n)=>{const{children:s,_checkIconHolderView:r}=this;n?s.add(r,0):s.remove(r)})}}class fC extends E{constructor(){super();u(this,"children");u(this,"_checkIconView",this._createCheckIconView());const e=this.bindTemplate;this.children=this.createCollection(),this.set("isOn",!1),this.setTemplate({tag:"span",children:this.children,attributes:{class:["ck","ck-list-item-button__check-holder",e.to("isOn",t=>t?"ck-on":"ck-off")]}})}render(){super.render(),this.isOn&&this.children.add(this._checkIconView,0),this._watchCheckIconMount()}_watchCheckIconMount(){this.on("change:isOn",(e,t,n)=>{const{children:s,_checkIconView:r}=this;n&&!s.has(r)?s.add(r):!n&&s.has(r)&&s.remove(r)})}_createCheckIconView(){const e=new wt;return e.content=Bs,e.extendTemplate({attributes:{class:"ck-list-item-button__check-icon"}}),e}}class Ce extends Ji{constructor(i){super(i),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}class Ye extends E{constructor(e){super(e);u(this,"id");this.set("text",void 0),this.set("for",void 0),this.id=`ck-editor__label_${Me()}`;const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class pC extends E{constructor(i,e){super(i);const t=i.t,n=new Ye;n.text=t("Help Contents. To close this dialog press ESC."),this.setTemplate({tag:"div",attributes:{class:["ck","ck-accessibility-help-dialog__content"],"aria-labelledby":n.id,role:"document",tabindex:-1},children:[Oe(document,"p",{},t("Below, you can find a list of keyboard shortcuts that can be used in the editor.")),...this._createCategories(Array.from(e.values())),n]})}focus(){this.element.focus()}_createCategories(i){return i.map(e=>{const t=[Oe(document,"h3",{},e.label),...Array.from(e.groups.values()).map(n=>this._createGroup(n)).flat()];return e.description&&t.splice(1,0,Oe(document,"p",{},e.description)),Oe(document,"section",{},t)})}_createGroup(i){const e=i.keystrokes.sort((n,s)=>n.label.localeCompare(s.label)).map(n=>this._createGroupRow(n)).flat(),t=[Oe(document,"dl",{},e)];return i.label&&t.unshift(Oe(document,"h4",{},i.label)),t}_createGroupRow(i){const e=this.locale.t,t=Oe(document,"dt"),n=Oe(document,"dd"),s=bC(i.keystroke),r=[];for(const a of s)r.push(a.map(wC).join(""));return t.innerHTML=i.label,n.innerHTML=r.join(", ")+(i.mayRequireFn&&I.isMac?` ${e("(may require <kbd>Fn</kbd>)")}`:""),[t,n]}}function wC(o){return Qo(o).split("+").map(i=>`<kbd>${i}</kbd>`).join("+")}function bC(o){return typeof o=="string"?[[o]]:typeof o[0]=="string"?[o]:o}class vC extends y{constructor(){super(...arguments);u(this,"contentView",null)}static get requires(){return[cs]}static get pluginName(){return"AccessibilityHelp"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("accessibilityHelp",()=>{const n=this._createButton(A);return n.set({tooltip:!0,withText:!1,label:t("Accessibility help")}),n}),e.ui.componentFactory.add("menuBar:accessibilityHelp",()=>{const n=this._createButton(Ce);return n.label=t("Accessibility"),n}),e.keystrokes.set("Alt+0",(n,s)=>{this._toggleDialog(),s()}),this._setupRootLabels()}_createButton(e){const t=this.editor,n=t.plugins.get("Dialog"),s=t.locale,r=new e(s);return r.set({keystroke:"Alt+0",icon:id,isToggleable:!0}),r.on("execute",()=>this._toggleDialog()),r.bind("isOn").to(n,"id",a=>a==="accessibilityHelp"),r}_setupRootLabels(){const e=this.editor,t=e.editing.view,n=e.t;e.ui.on("ready",()=>{t.change(r=>{for(const a of t.document.roots)s(r,a)}),e.on("addRoot",(r,a)=>{const l=e.editing.view.document.getRoot(a.rootName);t.change(c=>s(c,l))},{priority:"low"})});function s(r,a){const c=[a.getAttribute("aria-label"),n("Press %0 for help.",[Qo("Alt+0")])].filter(d=>d).join(". ");r.setAttribute("aria-label",c,a)}}_toggleDialog(){const e=this.editor,t=e.plugins.get("Dialog"),n=e.locale.t;this.contentView||(this.contentView=new pC(e.locale,e.accessibility.keystrokeInfos)),t.id==="accessibilityHelp"?t.hide():t.show({id:"accessibilityHelp",className:"ck-accessibility-help-dialog",title:n("Accessibility help"),icon:id,hasCloseButton:!0,content:this.contentView})}}const Ze=class Ze extends ve{constructor(e,t=[]){super(t);u(this,"locale");u(this,"_bodyCollectionContainer");this.locale=e}get bodyCollectionContainer(){return this._bodyCollectionContainer}attachToDom(){this._bodyCollectionContainer=new He({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection,role:"application"},children:this}).render(),(!Ze._bodyWrapper||!Ze._bodyWrapper.isConnected)&&(Ze._bodyWrapper=Oe(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(Ze._bodyWrapper)),Ze._bodyWrapper.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove(),Ze._bodyWrapper&&!Ze._bodyWrapper.childElementCount&&(Ze._bodyWrapper.remove(),delete Ze._bodyWrapper)}};u(Ze,"_bodyWrapper");let Yr=Ze;class Yn extends A{constructor(e){super(e);u(this,"toggleSwitchView");this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new E;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}class xd extends Rg(A){}class kC extends Rg(Ji){}function Rg(o){class i extends o{constructor(...n){super(...n);u(this,"buttonView");u(this,"_fileInputView");this.buttonView=this,this._fileInputView=new yC(this.locale),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.on("execute",()=>{this._fileInputView.open()}),this.extendTemplate({attributes:{class:"ck-file-dialog-button"}})}render(){super.render(),this.children.add(this._fileInputView)}}return i}class yC extends E{constructor(i){super(i),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to(()=>{var t,n;(n=(t=this.element)==null?void 0:t.files)!=null&&n.length&&this.fire("done",this.element.files),this.element.value=""})}})}open(){this.element.click()}}class Mg extends E{constructor(e,t){super(e);u(this,"buttonView");u(this,"children");const n=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid",void 0),t&&this.children.addMany(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",n.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:n.if("isCollapsed","hidden"),"aria-labelledby":n.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}focus(){this.buttonView.focus()}_createButtonView(){const e=new A(this.locale),t=e.bindTemplate;return e.set({withText:!0,icon:Vs}),e.extendTemplate({attributes:{"aria-expanded":t.to("isOn",n=>String(n))}}),e.bind("label").to(this),e.bind("isOn").to(this,"isCollapsed",n=>!n),e.on("execute",()=>{this.isCollapsed=!this.isCollapsed}),e}}/**
235
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
236
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
237
+ */function ds(o,i){const e=o.t,t={Black:e("Black"),"Dim grey":e("Dim grey"),Grey:e("Grey"),"Light grey":e("Light grey"),White:e("White"),Red:e("Red"),Orange:e("Orange"),Yellow:e("Yellow"),"Light green":e("Light green"),Green:e("Green"),Aquamarine:e("Aquamarine"),Turquoise:e("Turquoise"),"Light blue":e("Light blue"),Blue:e("Blue"),Purple:e("Purple")};return i.map(n=>{const s=t[n.label];return s&&s!=n.label&&(n.label=s),n})}function us(o){return o.map(_C).filter(i=>!!i)}function _C(o){return typeof o=="string"?{model:o,label:o,hasBorder:!1,view:{name:"span",styles:{color:o}}}:{model:o.color,label:o.label||o.color,hasBorder:o.hasBorder===void 0?!1:o.hasBorder,view:{name:"span",styles:{color:`${o.color}`}}}}class Bg extends A{constructor(i){super(i);const e=this.bindTemplate;this.set("color",void 0),this.set("hasBorder",!1),this.icon=U0,this.extendTemplate({attributes:{style:{backgroundColor:e.to("color",t=>I.isMediaForcedColors?null:t)},class:["ck","ck-color-grid__tile",e.if("hasBorder","ck-color-selector__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}class Sd extends E{constructor(e,t){super(e);u(this,"columns");u(this,"items");u(this,"focusTracker");u(this,"keystrokes");const n=t&&t.colorDefinitions?t.colorDefinitions:[];this.columns=(t==null?void 0:t.columns)||5;const s={gridTemplateColumns:`repeat( ${this.columns}, 1fr)`};this.set("selectedColor",void 0),this.items=this.createCollection(),this.focusTracker=new ee,this.keystrokes=new re,this.items.on("add",(r,a)=>{a.isOn=a.color===this.selectedColor}),n.forEach(r=>{const a=new Bg;a.set({color:r.color,label:r.label,tooltip:!0,hasBorder:r.options.hasBorder}),a.on("execute",()=>{this.fire("execute",{value:r.color,hasBorder:r.options.hasBorder,label:r.label})}),this.items.add(a)}),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:s}}),this.on("change:selectedColor",(r,a,l)=>{for(const c of this.items)c.isOn=c.color===l})}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){var e;super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",(t,n)=>{this.focusTracker.add(n.element)}),this.items.on("remove",(t,n)=>{this.focusTracker.remove(n.element)}),this.keystrokes.listenTo(this.element),rl({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns,uiLanguageDirection:(e=this.locale)==null?void 0:e.uiLanguageDirection})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}/**
238
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
239
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
240
+ */function Vg(o,i){if(!o)return"";const e=zg(o);if(!e)return"";if(e.space===i)return o;if(!EC(e))return"";const n=_g[e.space][i];if(!n)return"";const s=n(e.space==="hex"?e.hexValue:e.values);return TC(s,i)}function CC(o){if(!o)return"";const i=zg(o);return i?i.space==="hex"?i.hexValue:Vg(o,"hex"):"#000"}function LC(o,i){customElements.get(o)===void 0&&customElements.define(o,i)}function TC(o,i){switch(i){case"hex":return`#${o}`;case"rgb":return`rgb(${o[0]}, ${o[1]}, ${o[2]})`;case"hsl":return`hsl(${o[0]}, ${o[1]}%, ${o[2]}%)`;case"hwb":return`hwb(${o[0]}, ${o[1]}, ${o[2]})`;case"lab":return`lab(${o[0]}% ${o[1]} ${o[2]})`;case"lch":return`lch(${o[0]}% ${o[1]} ${o[2]})`;default:return""}}function zg(o){if(o.startsWith("#")){const e=cd(o);return{space:"hex",values:e.values,hexValue:o,alpha:e.alpha}}const i=cd(o);return i.space?i:null}function EC(o){return Object.keys(_g).includes(o.space)}class he extends E{constructor(e,t){super(e);u(this,"fieldView");u(this,"labelView");u(this,"statusView");u(this,"fieldWrapperChildren");const n=`ck-labeled-field-view-${Me()}`,s=`ck-labeled-field-view-status-${Me()}`;this.fieldView=t(this,n,s),this.set("label",void 0),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class",void 0),this.set("placeholder",void 0),this.labelView=this._createLabelView(n),this.statusView=this._createStatusView(s),this.fieldWrapperChildren=this.createCollection([this.fieldView,this.labelView]),this.bind("_statusText").to(this,"errorText",this,"infoText",(a,l)=>a||l);const r=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",r.to("class"),r.if("isEnabled","ck-disabled",a=>!a),r.if("isEmpty","ck-labeled-field-view_empty"),r.if("isFocused","ck-labeled-field-view_focused"),r.if("placeholder","ck-labeled-field-view_placeholder"),r.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:this.fieldWrapperChildren},this.statusView]})}_createLabelView(e){const t=new Ye(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new E(this.locale),n=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",n.if("errorText","ck-labeled-field-view__status_error"),n.if("_statusText","ck-hidden",s=>!s)],id:e,role:n.if("errorText","alert")},children:[{text:n.to("_statusText")}]}),t}focus(e){this.fieldView.focus(e)}}class xC extends E{constructor(e){super(e);u(this,"focusTracker");this.set("value",void 0),this.set("id",void 0),this.set("placeholder",void 0),this.set("tabIndex",void 0),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById",void 0),this.set("ariaLabel",void 0),this.focusTracker=new ee,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),tabindex:t.to("tabIndex"),readonly:t.to("isReadOnly"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById"),"aria-label":t.to("ariaLabel")},on:{input:t.to((...n)=>{this.fire("input",...n),this._updateIsEmpty()}),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",(e,t,n)=>{this._setDomElementValue(n),this._updateIsEmpty()})}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}reset(){this.value=this.element.value="",this._updateIsEmpty()}_updateIsEmpty(){this.isEmpty=SC(this.element)}_setDomElementValue(e){this.element.value=!e&&e!==0?"":e}}function SC(o){return!o.value}class Ng extends xC{constructor(i){super(i),this.set("inputMode","text");const e=this.bindTemplate;this.extendTemplate({attributes:{inputmode:e.to("inputMode")}})}}class Dg extends Ng{constructor(i){super(i),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class AC extends Ng{constructor(i,{min:e,max:t,step:n}={}){super(i);const s=this.bindTemplate;this.set("min",e),this.set("max",t),this.set("step",n),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:s.to("min"),max:s.to("max"),step:s.to("step")}})}}class IC extends E{constructor(e){super(e);u(this,"children");const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",n=>`ck-dropdown__panel_${n}`),t.if("isVisible","ck-dropdown__panel-visible")],tabindex:"-1"},children:this.children,on:{selectstart:t.to(n=>{n.target.tagName.toLocaleLowerCase()!=="input"&&n.preventDefault()})}})}focus(){if(this.children.length){const e=this.children.first;typeof e.focus=="function"?e.focus():F("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this})}}focusLast(){if(this.children.length){const e=this.children.last;typeof e.focusLast=="function"?e.focusLast():e.focus()}}}const Oi=class Oi extends E{constructor(e,t,n){super(e);u(this,"buttonView");u(this,"panelView");u(this,"focusTracker");u(this,"keystrokes");u(this,"listView");u(this,"toolbarView");u(this,"menuView");const s=this.bindTemplate;this.buttonView=t,this.panelView=n,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class",void 0),this.set("id",void 0),this.set("panelPosition","auto"),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new re,this.focusTracker=new ee,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",s.to("class"),s.if("isEnabled","ck-disabled",r=>!r)],id:s.to("id"),"aria-describedby":s.to("ariaDescribedById")},children:[t,n]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":s.to("isOpen")}})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.listenTo(this.buttonView,"open",()=>{this.isOpen=!this.isOpen}),this.on("change:isOpen",(t,n,s)=>{if(s)if(this.panelPosition==="auto"){const r=Oi._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=r?r.name:this._defaultPanelPositionName}else this.panelView.position=this.panelPosition}),this.keystrokes.listenTo(this.element);const e=(t,n)=>{this.isOpen&&(this.isOpen=!1,n())};this.keystrokes.set("arrowdown",(t,n)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,n())}),this.keystrokes.set("arrowright",(t,n)=>{this.isOpen&&n()}),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:n,southWest:s,northEast:r,northWest:a,southMiddleEast:l,southMiddleWest:c,northMiddleEast:d,northMiddleWest:h}=Oi.defaultPanelPositions;return this.locale.uiLanguageDirection!=="rtl"?[n,s,l,c,e,r,a,d,h,t]:[s,n,c,l,e,a,r,h,d,t]}get _defaultPanelPositionName(){return this.locale.uiLanguageDirection==="rtl"?"sw":"se"}};u(Oi,"defaultPanelPositions",{south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)*3/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)*3/4,name:"nmw"})}),u(Oi,"_getOptimalPosition",Ia);let Xr=Oi;class Og extends A{constructor(e){super(e);u(this,"arrowView");this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",t=>String(t))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new wt;return e.content=Vs,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}class ct extends E{constructor(e){super(e);u(this,"children");const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",n=>!n)],role:"presentation"},children:this.children})}focus(){this.children.first&&this.children.first.focus()}}class al extends E{constructor(i){super(i),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}class No extends E{constructor(e,t=new Ye){super(e);u(this,"labelView");u(this,"items");u(this,"children");const n=this.bindTemplate,s=new Yi(e);this.set({label:"",isVisible:!0}),this.labelView=t,this.labelView.bind("text").to(this,"label"),this.children=this.createCollection(),this.children.addMany([this.labelView,s]),s.set({role:"group",ariaLabelledBy:t.id}),s.focusTracker.destroy(),s.keystrokes.destroy(),this.items=s.items,this.setTemplate({tag:"li",attributes:{role:"presentation",class:["ck","ck-list__group",n.if("isVisible","ck-hidden",r=>!r)]},children:this.children})}focus(){if(this.items){const e=this.items.find(t=>!(t instanceof al));e&&e.focus()}}}class Yi extends E{constructor(e){super(e);u(this,"focusables");u(this,"items");u(this,"focusTracker");u(this,"keystrokes");u(this,"_focusCycler");u(this,"_listItemGroupToChangeListeners",new WeakMap);const t=this.bindTemplate;this.focusables=new ve,this.items=this.createCollection(),this.focusTracker=new ee,this.keystrokes=new re,this._focusCycler=new Ae({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",void 0),this.set("role",void 0),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"],role:t.to("role"),"aria-label":t.to("ariaLabel"),"aria-labelledby":t.to("ariaLabelledBy")},children:this.items})}render(){super.render();for(const e of this.items)e instanceof No?this._registerFocusableItemsGroup(e):e instanceof ct&&this._registerFocusableListItem(e);this.items.on("change",(e,t)=>{for(const n of t.removed)n instanceof No?this._deregisterFocusableItemsGroup(n):n instanceof ct&&this._deregisterFocusableListItem(n);for(const n of Array.from(t.added).reverse())n instanceof No?this._registerFocusableItemsGroup(n,t.index):this._registerFocusableListItem(n,t.index)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusFirst(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}_registerFocusableListItem(e,t){this.focusTracker.add(e.element),this.focusables.add(e,t)}_deregisterFocusableListItem(e){this.focusTracker.remove(e.element),this.focusables.remove(e)}_getOnGroupItemsChangeCallback(e){return(t,n)=>{for(const s of n.removed)this._deregisterFocusableListItem(s);for(const s of Array.from(n.added).reverse())this._registerFocusableListItem(s,this.items.getIndex(e)+n.index)}}_registerFocusableItemsGroup(e,t){Array.from(e.items).forEach((s,r)=>{const a=typeof t<"u"?t+r:void 0;this._registerFocusableListItem(s,a)});const n=this._getOnGroupItemsChangeCallback(e);this._listItemGroupToChangeListeners.set(e,n),e.items.on("change",n)}_deregisterFocusableItemsGroup(e){for(const t of e.items)this._deregisterFocusableListItem(t);e.items.off("change",this._listItemGroupToChangeListeners.get(e)),this._listItemGroupToChangeListeners.delete(e)}}const Ad=Ki("px"),PC={top:-99999,left:-99999,name:"arrowless",config:{withArrow:!1}},De=class De extends E{constructor(e){super(e);u(this,"content");u(this,"_pinWhenIsVisibleCallback");u(this,"_resizeObserver");const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class",void 0),this._pinWhenIsVisibleCallback=null,this._resizeObserver=null,this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",n=>`ck-balloon-panel_${n}`),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",Ad),left:t.to("left",Ad)}},children:this.content})}destroy(){this.hide(),super.destroy()}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){const t=Do(e.target);if(t&&!St(t))return!1;this.show();const n=De.defaultPositions,s=Object.assign({},{element:this.element,positions:[n.southArrowNorth,n.southArrowNorthMiddleWest,n.southArrowNorthMiddleEast,n.southArrowNorthWest,n.southArrowNorthEast,n.northArrowSouth,n.northArrowSouthMiddleWest,n.northArrowSouthMiddleEast,n.northArrowSouthWest,n.northArrowSouthEast,n.viewportStickyNorth],limiter:T.document.body,fitInViewport:!0},e),r=De._getOptimalPosition(s)||PC,a=parseInt(r.left),l=parseInt(r.top),c=r.name,d=r.config||{},{withArrow:h=!0}=d;return this.top=l,this.left=a,this.position=c,this.withArrow=h,!0}pin(e){this.unpin(),this._startPinning(e)&&(this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback))}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){if(!this.attachTo(e))return!1;let t=Do(e.target);const n=e.limiter?Do(e.limiter):T.document.body;if(this.listenTo(T.document,"scroll",(s,r)=>{const a=r.target,l=t&&a.contains(t),c=n&&a.contains(n);(l||c||!t||!n)&&this.attachTo(e)},{useCapture:!0}),this.listenTo(T.window,"resize",()=>{this.attachTo(e)}),!this._resizeObserver&&(t&&ne(t)&&(t=t.parentElement),t)){const s=()=>{St(t)||this.unpin()};this._resizeObserver=new Rn(t,s)}return!0}_stopPinning(){this.stopListening(T.document,"scroll"),this.stopListening(T.window,"resize"),this._resizeObserver&&(this._resizeObserver.destroy(),this._resizeObserver=null)}static generatePositions(e={}){const{sideOffset:t=De.arrowSideOffset,heightOffset:n=De.arrowHeightOffset,stickyVerticalOffset:s=De.stickyVerticalOffset,config:r}=e;return{northWestArrowSouthWest:(c,d)=>({top:a(c,d),left:c.left-t,name:"arrow_sw",...r&&{config:r}}),northWestArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.left-d.width*.25-t,name:"arrow_smw",...r&&{config:r}}),northWestArrowSouth:(c,d)=>({top:a(c,d),left:c.left-d.width/2,name:"arrow_s",...r&&{config:r}}),northWestArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.left-d.width*.75+t,name:"arrow_sme",...r&&{config:r}}),northWestArrowSouthEast:(c,d)=>({top:a(c,d),left:c.left-d.width+t,name:"arrow_se",...r&&{config:r}}),northArrowSouthWest:(c,d)=>({top:a(c,d),left:c.left+c.width/2-t,name:"arrow_sw",...r&&{config:r}}),northArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width*.25-t,name:"arrow_smw",...r&&{config:r}}),northArrowSouth:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width/2,name:"arrow_s",...r&&{config:r}}),northArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width*.75+t,name:"arrow_sme",...r&&{config:r}}),northArrowSouthEast:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width+t,name:"arrow_se",...r&&{config:r}}),northEastArrowSouthWest:(c,d)=>({top:a(c,d),left:c.right-t,name:"arrow_sw",...r&&{config:r}}),northEastArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.right-d.width*.25-t,name:"arrow_smw",...r&&{config:r}}),northEastArrowSouth:(c,d)=>({top:a(c,d),left:c.right-d.width/2,name:"arrow_s",...r&&{config:r}}),northEastArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.right-d.width*.75+t,name:"arrow_sme",...r&&{config:r}}),northEastArrowSouthEast:(c,d)=>({top:a(c,d),left:c.right-d.width+t,name:"arrow_se",...r&&{config:r}}),southWestArrowNorthWest:c=>({top:l(c),left:c.left-t,name:"arrow_nw",...r&&{config:r}}),southWestArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.left-d.width*.25-t,name:"arrow_nmw",...r&&{config:r}}),southWestArrowNorth:(c,d)=>({top:l(c),left:c.left-d.width/2,name:"arrow_n",...r&&{config:r}}),southWestArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.left-d.width*.75+t,name:"arrow_nme",...r&&{config:r}}),southWestArrowNorthEast:(c,d)=>({top:l(c),left:c.left-d.width+t,name:"arrow_ne",...r&&{config:r}}),southArrowNorthWest:c=>({top:l(c),left:c.left+c.width/2-t,name:"arrow_nw",...r&&{config:r}}),southArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width*.25-t,name:"arrow_nmw",...r&&{config:r}}),southArrowNorth:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width/2,name:"arrow_n",...r&&{config:r}}),southArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width*.75+t,name:"arrow_nme",...r&&{config:r}}),southArrowNorthEast:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width+t,name:"arrow_ne",...r&&{config:r}}),southEastArrowNorthWest:c=>({top:l(c),left:c.right-t,name:"arrow_nw",...r&&{config:r}}),southEastArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.right-d.width*.25-t,name:"arrow_nmw",...r&&{config:r}}),southEastArrowNorth:(c,d)=>({top:l(c),left:c.right-d.width/2,name:"arrow_n",...r&&{config:r}}),southEastArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.right-d.width*.75+t,name:"arrow_nme",...r&&{config:r}}),southEastArrowNorthEast:(c,d)=>({top:l(c),left:c.right-d.width+t,name:"arrow_ne",...r&&{config:r}}),westArrowEast:(c,d)=>({top:c.top+c.height/2-d.height/2,left:c.left-d.width-n,name:"arrow_e",...r&&{config:r}}),eastArrowWest:(c,d)=>({top:c.top+c.height/2-d.height/2,left:c.right+n,name:"arrow_w",...r&&{config:r}}),viewportStickyNorth:(c,d,h)=>{const m=new R(T.document.body).getIntersection(h.getVisible());if(!m)return null;const g=m.getVisible();return!c.getIntersection(g)||!(g.top-c.top-s<d.height&&g.bottom-c.bottom<d.height)?null:{top:g.top+s,left:c.left+c.width/2-d.width/2,name:"arrowless",config:{withArrow:!1,...r}}}};function a(c,d){return c.top-d.height-n}function l(c){return c.bottom+n}}};u(De,"arrowSideOffset",25),u(De,"arrowHeightOffset",10),u(De,"stickyVerticalOffset",20),u(De,"_getOptimalPosition",Ia),u(De,"defaultPositions",De.generatePositions());let Ie=De;function Do(o){return Gt(o)?o:As(o)?o.commonAncestorContainer:typeof o=="function"?Do(o()):null}class Fg extends E{constructor(i){super(i),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class RC extends E{constructor(i){super(i),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}/**
241
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
242
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
243
+ */function MC(o){return o.bindTemplate.to(i=>{i.target===o.element&&i.preventDefault()})}/**
244
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
245
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
246
+ */function Ug(o){if(Array.isArray(o))return{items:o,removeItems:[]};const i={items:[],removeItems:[]};return o?{...i,...o}:i}const BC={alignLeft:Xa,bold:mg,importExport:Z0,paragraph:m1,plus:p1,text:I1,threeVerticalDots:il,pilcrow:f1,dragIndicator:W0};class ai extends E{constructor(e,t){super(e);u(this,"options");u(this,"items");u(this,"focusTracker");u(this,"keystrokes");u(this,"itemsView");u(this,"children");u(this,"focusables");u(this,"_focusCycler");u(this,"_behavior");const n=this.bindTemplate,s=this.t;this.options=t||{},this.set("ariaLabel",s("Editor toolbar")),this.set("maxWidth","auto"),this.set("role","toolbar"),this.set("isGrouping",!!this.options.shouldGroupWhenFull),this.items=this.createCollection(),this.focusTracker=new ee,this.keystrokes=new re,this.set("class",void 0),this.set("isCompact",!1),this.set("isVertical",!1),this.itemsView=new VC(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const r=e.uiLanguageDirection==="rtl";this._focusCycler=new Ae({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[r?"arrowright":"arrowleft","arrowup"],focusNext:[r?"arrowleft":"arrowright","arrowdown"]}});const a=["ck","ck-toolbar",n.to("class"),n.if("isCompact","ck-toolbar_compact"),n.if("isGrouping","ck-toolbar_grouping"),n.if("isVertical","ck-toolbar_vertical")];this.options.shouldGroupWhenFull&&this.options.isFloating&&a.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:a,role:n.to("role"),"aria-label":n.to("ariaLabel"),style:{maxWidth:n.to("maxWidth")},tabindex:-1},children:this.children,on:{mousedown:MC(this)}}),this._behavior=this.options.shouldGroupWhenFull?new Pd(this):new Id(this)}render(){super.render(),this.focusTracker.add(this.element);for(const e of this.items)this.focusTracker.add(e);this.items.on("add",(e,t)=>{this.focusTracker.add(t)}),this.items.on("remove",(e,t)=>{this.focusTracker.remove(t)}),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t,n){this.items.addMany(this._buildItemsFromConfig(e,t,n))}switchBehavior(e){this._behavior.type!==e&&(this._behavior.destroy(),this.itemsView.children.clear(),this.focusables.clear(),e==="dynamic"?(this._behavior=new Pd(this),this._behavior.render(this),this._behavior.refreshItems()):(this._behavior=new Id(this),this._behavior.render(this)))}_buildItemsFromConfig(e,t,n){const s=Ug(e),r=n||s.removeItems;return this._cleanItemsConfiguration(s.items,t,r).map(l=>Qe(l)?this._createNestedToolbarDropdown(l,t,r):l==="|"?new Fg:l==="-"?new RC:t.create(l)).filter(l=>!!l)}_cleanItemsConfiguration(e,t,n){const s=e.filter((r,a,l)=>r==="|"?!0:n.indexOf(r)!==-1?!1:r==="-"?this.options.shouldGroupWhenFull?(F("toolbarview-line-break-ignored-when-grouping-items",l),!1):!0:!Qe(r)&&!t.has(r)?(F("toolbarview-item-unavailable",{item:r}),!1):!0);return this._cleanSeparatorsAndLineBreaks(s)}_cleanSeparatorsAndLineBreaks(e){const t=a=>a!=="-"&&a!=="|",n=e.length,s=e.findIndex(t);if(s===-1)return[];const r=n-e.slice().reverse().findIndex(t);return e.slice(s,r).filter((a,l,c)=>t(a)?!0:!(l>0&&c[l-1]===a))}_createNestedToolbarDropdown(e,t,n){let{label:s,icon:r,items:a,tooltip:l=!0,withText:c=!1}=e;if(a=this._cleanItemsConfiguration(a,t,n),!a.length)return null;const d=this.locale,h=We(d);return s||F("toolbarview-nested-toolbar-dropdown-missing-label",e),h.class="ck-toolbar__nested-toolbar-dropdown",h.buttonView.set({label:s,tooltip:l,withText:!!c}),r!==!1?h.buttonView.icon=BC[r]||r||il:h.buttonView.withText=!0,zs(h,()=>h.toolbarView._buildItemsFromConfig(a,t,n)),h}}class VC extends E{constructor(e){super(e);u(this,"children");this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class Id{constructor(i){u(this,"type","static");i.isGrouping=!1,i.itemsView.children.bindTo(i.items).using(e=>e),i.focusables.bindTo(i.items).using(e=>Jn(e)?e:null)}render(){}destroy(){}}class Pd{constructor(i){u(this,"type","dynamic");u(this,"view");u(this,"viewChildren");u(this,"viewFocusables");u(this,"viewItemsView");u(this,"viewFocusTracker");u(this,"viewLocale");u(this,"ungroupedItems");u(this,"groupedItems");u(this,"groupedItemsDropdown");u(this,"resizeObserver",null);u(this,"cachedPadding",null);u(this,"shouldUpdateGroupingOnNextResize",!1);u(this,"viewElement");this.view=i,this.viewChildren=i.children,this.viewFocusables=i.focusables,this.viewItemsView=i.itemsView,this.viewFocusTracker=i.focusTracker,this.viewLocale=i.locale,this.view.isGrouping=!0,this.ungroupedItems=i.createCollection(),this.groupedItems=i.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),i.itemsView.children.bindTo(this.ungroupedItems).using(e=>e),this.ungroupedItems.on("change",this._updateFocusCyclableItems.bind(this)),i.children.on("change",this._updateFocusCyclableItems.bind(this)),i.items.on("change",(e,t)=>{const n=t.index,s=Array.from(t.added);for(const r of t.removed)n>=this.ungroupedItems.length?this.groupedItems.remove(r):this.ungroupedItems.remove(r);for(let r=n;r<n+s.length;r++){const a=s[r-n];r>this.ungroupedItems.length?this.groupedItems.add(a,r-this.ungroupedItems.length):this.ungroupedItems.add(a,r)}this._updateGrouping()})}render(i){this.viewElement=i.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(i)}destroy(){this.groupedItemsDropdown.destroy(),this.viewChildren.length>1&&(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last)),this.resizeObserver.destroy()}refreshItems(){const i=this.view;if(i.items.length){for(let e=0;e<i.items.length;e++){const t=[...i.items][e];this.ungroupedItems.add(t,e)}this._updateGrouping()}}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!St(this.viewElement)){this.shouldUpdateGroupingOnNextResize=!0;return}const i=this.groupedItems.length;let e;for(;this._areItemsOverflowing;)this._groupLastItem(),e=!0;if(!e&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==i&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const i=this.viewElement,e=this.viewLocale.uiLanguageDirection,t=new R(i.lastChild),n=new R(i);if(!this.cachedPadding){const s=T.window.getComputedStyle(i),r=e==="ltr"?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(s[r])}return e==="ltr"?t.right>n.right-this.cachedPadding:t.left<n.left+this.cachedPadding}_enableGroupingOnResize(){let i;this.resizeObserver=new Rn(this.viewElement,e=>{(!i||i!==e.contentRect.width||this.shouldUpdateGroupingOnNextResize)&&(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),i=e.contentRect.width)}),this._updateGrouping()}_enableGroupingOnMaxWidthChange(i){i.on("change:maxWidth",()=>{this._updateGrouping()})}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new Fg),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const i=this.viewLocale,e=i.t,t=We(i);return t.class="ck-toolbar__grouped-dropdown",t.panelPosition=i.uiLanguageDirection==="ltr"?"sw":"se",zs(t,this.groupedItems),t.buttonView.set({label:e("Show more items"),tooltip:!0,tooltipPosition:i.uiLanguageDirection==="rtl"?"se":"sw",icon:il}),t}_updateFocusCyclableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(i=>{Jn(i)&&this.viewFocusables.add(i)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}class Xn extends E{constructor(e,t){super(e);u(this,"children");u(this,"actionView");u(this,"arrowView");u(this,"keystrokes");u(this,"focusTracker");const n=this.bindTemplate;this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke",void 0),this.set("withKeystroke",!1),this.set("label",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(t),this.arrowView=this._createArrowView(),this.keystrokes=new re,this.focusTracker=new ee,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",n.to("class"),n.if("isVisible","ck-hidden",s=>!s),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",(e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())}),this.keystrokes.set("arrowleft",(e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(e){const t=e||new A;return e||t.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),t.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),t.delegate("execute").to(this),t}_createArrowView(){const e=new A,t=e.bindTemplate;return e.icon=Vs,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",n=>String(n))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}function We(o,i=Og){const e=typeof i=="function"?new i(o):i,t=new IC(o),n=new Xr(o,e,t);return e.bind("isEnabled").to(n),e instanceof Xn?e.arrowView.bind("isOn").to(n,"isOpen"):e.bind("isOn").to(n,"isOpen"),zC(n),n}function zs(o,i,e={}){o.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),o.isOpen?Rd(o,i,e):o.once("change:isOpen",()=>Rd(o,i,e),{priority:"highest"}),e.enableActiveItemFocusOnDropdownOpen&&ll(o,()=>o.toolbarView.items.find(t=>t.isOn))}function Rd(o,i,e){const t=o.locale,n=t.t,s=o.toolbarView=new ai(t),r=typeof i=="function"?i():i;s.ariaLabel=e.ariaLabel||n("Dropdown toolbar"),e.maxWidth&&(s.maxWidth=e.maxWidth),e.class&&(s.class=e.class),e.isCompact&&(s.isCompact=e.isCompact),e.isVertical&&(s.isVertical=!0),r instanceof ve?s.items.bindTo(r).using(a=>a):s.items.addMany(r),o.panelView.children.add(s),o.focusTracker.add(s),s.items.delegate("execute").to(o)}function Qn(o,i,e={}){o.isOpen?Md(o,i,e):o.once("change:isOpen",()=>Md(o,i,e),{priority:"highest"}),ll(o,()=>o.listView.items.find(t=>t instanceof ct?t.children.first.isOn:!1))}function Md(o,i,e){const t=o.locale,n=o.listView=new Yi(t),s=typeof i=="function"?i():i;n.ariaLabel=e.ariaLabel,n.role=e.role,Wg(o,n.items,s,t),o.panelView.children.add(n),n.items.delegate("execute").to(o)}function ll(o,i){o.on("change:isOpen",()=>{if(!o.isOpen)return;const e=i();e&&(typeof e.focus=="function"?e.focus():F("ui-dropdown-focus-child-on-open-child-missing-focus",{view:e}))},{priority:Ft.low-10})}function zC(o){NC(o),DC(o),OC(o),FC(o),UC(o),HC(o)}function NC(o){mi({emitter:o,activator:()=>o.isRendered&&o.isOpen,callback:()=>{o.isOpen=!1},contextElements:()=>[o.element,...Hg(o.focusTracker).filter(i=>!o.element.contains(i))]})}function Hg(o){return[...o.elements,...o.externalViews.flatMap(i=>Hg(i.focusTracker))]}function DC(o){o.on("execute",i=>{i.source instanceof Yn||(o.isOpen=!1)})}function OC(o){o.focusTracker.on("change:isFocused",(i,e,t)=>{t||!o.isOpen||(o.isOpen=!1)})}function FC(o){o.keystrokes.set("arrowdown",(i,e)=>{o.isOpen&&(o.panelView.focus(),e())}),o.keystrokes.set("arrowup",(i,e)=>{o.isOpen&&(o.panelView.focusLast(),e())})}function UC(o){o.on("change:isOpen",(i,e,t)=>{if(t)return;o.focusTracker.elements.some(s=>s.contains(T.document.activeElement))&&o.buttonView.focus()})}function HC(o){o.on("change:isOpen",(i,e,t)=>{t&&o.panelView.focus()},{priority:"low"})}function Wg(o,i,e,t){WC(i),i.bindTo(e).using(n=>{if(n.type==="separator")return new al(t);if(n.type==="group"){const s=new No(t);return s.set({label:n.label}),Wg(o,s.items,n.items,t),s.items.delegate("execute").to(o),s}else if(n.type==="button"||n.type==="switchbutton"){const s=n.model.role==="menuitemcheckbox"||n.model.role==="menuitemradio",r=new ct(t);let a;return n.type==="button"?(a=new Ji(t),a.set({isToggleable:s})):a=new Yn(t),a.bind(...Object.keys(n.model)).to(n.model),a.delegate("execute").to(r),r.children.add(a),r}return null})}function WC(o){let i=0;const e=s=>!(s instanceof ct)||!(s.children.first instanceof Ji)?null:s.children.first,t=s=>{const r=e(s);return!r||!r.isToggleable?null:r},n=s=>{for(const r of o){const a=e(r);a&&(a.hasCheckSpace=s)}};o.on("change",(s,r)=>{const a=i>0;for(const c of r.removed)t(c)&&i--;for(const c of r.added){const d=e(c);d&&(d.isToggleable&&i++,d.hasCheckSpace=i>0)}const l=i>0;a!==l&&n(l)})}const Xe=(o,i,e)=>{const t=new Dg(o.locale);return t.set({id:i,ariaDescribedById:e}),t.bind("isReadOnly").to(o,"isEnabled",n=>!n),t.bind("hasError").to(o,"errorText",n=>!!n),t.on("input",()=>{o.errorText=null}),o.bind("isEmpty","isFocused","placeholder").to(t),t},qg=(o,i,e)=>{const t=new AC(o.locale);return t.set({id:i,ariaDescribedById:e,inputMode:"numeric"}),t.bind("isReadOnly").to(o,"isEnabled",n=>!n),t.bind("hasError").to(o,"errorText",n=>!!n),t.on("input",()=>{o.errorText=null}),o.bind("isEmpty","isFocused","placeholder").to(t),t},jg=(o,i,e)=>{const t=We(o.locale);return t.set({id:i,ariaDescribedById:e}),t.bind("isEnabled").to(o),t},qC=150;class jC extends E{constructor(e,t={}){super(e);u(this,"hexInputRow");u(this,"_debounceColorPickerEvent");u(this,"_config");this.set({color:"",_hexColor:""}),this.hexInputRow=this._createInputRow();const n=this.createCollection();t.hideInput||n.add(this.hexInputRow),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker"],tabindex:-1},children:n}),this._config=t,this._debounceColorPickerEvent=at(s=>{this.set("color",s),this.fire("colorSelected",{color:this.color})},qC,{leading:!0}),this.on("set:color",(s,r,a)=>{s.return=Vg(a,this._config.format||"hsl")}),this.on("change:color",()=>{this._hexColor=gr(this.color)}),this.on("change:_hexColor",()=>{document.activeElement!==this.picker&&this.picker.setAttribute("color",this._hexColor),gr(this.color)!=gr(this._hexColor)&&(this.color=this._hexColor)})}render(){if(super.render(),LC("hex-color-picker",Q1),this.picker=T.document.createElement("hex-color-picker"),this.picker.setAttribute("class","hex-color-picker"),this.picker.setAttribute("tabindex","-1"),this._createSlidersView(),this.element){this.hexInputRow.element?this.element.insertBefore(this.picker,this.hexInputRow.element):this.element.appendChild(this.picker);const e=document.createElement("style");e.textContent='[role="slider"]:focus [part$="pointer"] {border: 1px solid #fff;outline: 1px solid var(--ck-color-focus-border);box-shadow: 0 0 0 2px #fff;}',this.picker.shadowRoot.appendChild(e)}this.picker.addEventListener("color-changed",e=>{const t=e.detail.value;this._debounceColorPickerEvent(t)})}focus(){/* istanbul ignore next -- @preserve */!this._config.hideInput&&(I.isGecko||I.isiOS||I.isSafari||I.isBlink)&&this.hexInputRow.children.get(1).focus(),this.slidersView.first.focus()}_createSlidersView(){const n=[...this.picker.shadowRoot.children].filter(s=>s.getAttribute("role")==="slider").map(s=>new GC(s));this.slidersView=this.createCollection(),n.forEach(s=>{this.slidersView.add(s)})}_createInputRow(){const e=this._createColorInput();return new KC(this.locale,e)}_createColorInput(){const e=new he(this.locale,Xe),{t}=this.locale;return e.set({label:t("HEX"),class:"color-picker-hex-input"}),e.fieldView.bind("value").to(this,"_hexColor",n=>e.isFocused?e.fieldView.value:n.startsWith("#")?n.substring(1):n),e.fieldView.on("input",()=>{const n=e.fieldView.element.value;if(n){const s=Gg(n);s&&this._debounceColorPickerEvent(s)}}),e}isValid(){const{t:e}=this.locale;return this._config.hideInput?!0:(this.resetValidationStatus(),this.hexInputRow.getParsedColor()?!0:(this.hexInputRow.inputView.errorText=e('Please enter a valid color (e.g. "ff0000").'),!1))}resetValidationStatus(){this.hexInputRow.inputView.errorText=null}}function gr(o){let i=CC(o);return i||(i="#000"),i.length===4&&(i="#"+[i[1],i[1],i[2],i[2],i[3],i[3]].join("")),i.toLowerCase()}class GC extends E{constructor(i){super(),this.element=i}focus(){this.element.focus()}}class $C extends E{constructor(i){super(i),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__hash-view"]},children:"#"})}}class KC extends E{constructor(e,t){super(e);u(this,"children");u(this,"inputView");this.inputView=t,this.children=this.createCollection([new $C,this.inputView]),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__row"]},children:this.children})}getParsedColor(){return Gg(this.inputView.fieldView.element.value)}}function Gg(o){if(!o)return null;const i=o.trim().replace(/^#/,"");return![3,4,6,8].includes(i.length)||!/^(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})$/.test(i)?null:`#${i}`}class ZC extends j(Be){constructor(i){super(i),this.set("isEmpty",!0),this.on("change",()=>{this.set("isEmpty",this.length===0)})}add(i,e){return this.find(t=>t.color===i.color)?this:super.add(i,e)}hasColor(i){return!!this.find(e=>e.color===i)}}class JC extends E{constructor(e,{colors:t,columns:n,removeButtonLabel:s,documentColorsLabel:r,documentColorsCount:a,colorPickerLabel:l,focusTracker:c,focusables:d}){super(e);u(this,"items");u(this,"colorDefinitions");u(this,"focusTracker");u(this,"columns");u(this,"documentColors");u(this,"documentColorsCount");u(this,"staticColorsGrid");u(this,"documentColorsGrid");u(this,"colorPickerButtonView");u(this,"removeColorButtonView");u(this,"_focusables");u(this,"_documentColorsLabel");u(this,"_removeButtonLabel");u(this,"_colorPickerLabel");const h=this.bindTemplate;this.set("isVisible",!0),this.focusTracker=c,this.items=this.createCollection(),this.colorDefinitions=t,this.columns=n,this.documentColors=new ZC,this.documentColorsCount=a,this._focusables=d,this._removeButtonLabel=s,this._colorPickerLabel=l,this._documentColorsLabel=r,this.setTemplate({tag:"div",attributes:{class:["ck-color-grids-fragment",h.if("isVisible","ck-hidden",m=>!m)]},children:this.items}),this.removeColorButtonView=this._createRemoveColorButton(),this.items.add(this.removeColorButtonView)}updateDocumentColors(e,t){const n=e.document,s=this.documentColorsCount;this.documentColors.clear();for(const r of n.getRoots()){const a=e.createRangeIn(r);for(const l of a.getItems())if(l.is("$textProxy")&&l.hasAttribute(t)&&(this._addColorToDocumentColors(l.getAttribute(t)),this.documentColors.length>=s))return}}updateSelectedColors(){const e=this.documentColorsGrid,t=this.staticColorsGrid,n=this.selectedColor;t.selectedColor=n,e&&(e.selectedColor=n)}render(){if(super.render(),this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.documentColorsCount){const e=He.bind(this.documentColors,this.documentColors),t=new E(this.locale);t.setTemplate({tag:"span",attributes:{class:["ck","ck-color-grid__label",e.if("isEmpty","ck-hidden")]},children:[{text:this._documentColorsLabel}]}),this.items.add(t),this.documentColorsGrid=this._createDocumentColorsGrid(),this.items.add(this.documentColorsGrid)}this._createColorPickerButton(),this._addColorSelectorElementsToFocusTracker()}focus(){this.removeColorButtonView.focus()}destroy(){super.destroy()}addColorPickerButton(){this.colorPickerButtonView&&(this.items.add(this.colorPickerButtonView),this.focusTracker.add(this.colorPickerButtonView.element),this._focusables.add(this.colorPickerButtonView))}_addColorSelectorElementsToFocusTracker(){this.focusTracker.add(this.removeColorButtonView.element),this._focusables.add(this.removeColorButtonView),this.staticColorsGrid&&(this.focusTracker.add(this.staticColorsGrid.element),this._focusables.add(this.staticColorsGrid)),this.documentColorsGrid&&(this.focusTracker.add(this.documentColorsGrid.element),this._focusables.add(this.documentColorsGrid))}_createColorPickerButton(){this.colorPickerButtonView=new A,this.colorPickerButtonView.set({label:this._colorPickerLabel,withText:!0,icon:F0,class:"ck-color-selector__color-picker"}),this.colorPickerButtonView.on("execute",()=>{this.fire("colorPicker:show")})}_createRemoveColorButton(){const e=new A;return e.set({withText:!0,icon:q0,label:this._removeButtonLabel}),e.class="ck-color-selector__remove-color",e.on("execute",()=>{this.fire("execute",{value:null,source:"removeColorButton"})}),e.render(),e}_createStaticColorsGrid(){const e=new Sd(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return e.on("execute",(t,n)=>{this.fire("execute",{value:n.value,source:"staticColorsGrid"})}),e}_createDocumentColorsGrid(){const e=He.bind(this.documentColors,this.documentColors),t=new Sd(this.locale,{columns:this.columns});return t.extendTemplate({attributes:{class:e.if("isEmpty","ck-hidden")}}),t.items.bindTo(this.documentColors).using(n=>{var r;const s=new Bg;return s.set({color:n.color,hasBorder:(r=n.options)==null?void 0:r.hasBorder}),n.label&&s.set({label:n.label,tooltip:!0}),s.on("execute",()=>{this.fire("execute",{value:n.color,source:"documentColorsGrid"})}),s}),this.documentColors.on("change:isEmpty",(n,s,r)=>{r&&(t.selectedColor=null)}),t}_addColorToDocumentColors(e){const t=this.colorDefinitions.find(n=>n.color===e);t?this.documentColors.add(Object.assign({},t)):this.documentColors.add({color:e,label:e,options:{hasBorder:!1}})}}class YC extends E{constructor(e,{focusTracker:t,focusables:n,keystrokes:s,colorPickerViewConfig:r}){super(e);u(this,"items");u(this,"colorPickerView");u(this,"saveButtonView");u(this,"cancelButtonView");u(this,"actionBarView");u(this,"focusTracker");u(this,"keystrokes");u(this,"_focusables");u(this,"_colorPickerViewConfig");this.items=this.createCollection(),this.focusTracker=t,this.keystrokes=s,this.set("isVisible",!1),this.set("selectedColor",void 0),this._focusables=n,this._colorPickerViewConfig=r;const a=this.bindTemplate,{saveButtonView:l,cancelButtonView:c}=this._createActionButtons();this.saveButtonView=l,this.cancelButtonView=c,this.actionBarView=this._createActionBarView({saveButtonView:l,cancelButtonView:c}),this.setTemplate({tag:"div",attributes:{class:["ck-color-picker-fragment",a.if("isVisible","ck-hidden",d=>!d)]},children:this.items})}render(){super.render();const e=new jC(this.locale,{...this._colorPickerViewConfig});this.colorPickerView=e,this.colorPickerView.render(),this.selectedColor&&(e.color=this.selectedColor),this.listenTo(this,"change:selectedColor",(t,n,s)=>{e.color=s}),this.items.add(this.colorPickerView),this.items.add(this.actionBarView),this._addColorPickersElementsToFocusTracker(),this._stopPropagationOnArrowsKeys(),this._executeOnEnterPress(),this._executeUponColorChange()}destroy(){super.destroy()}focus(){this.colorPickerView.focus()}resetValidationStatus(){this.colorPickerView.resetValidationStatus()}_executeOnEnterPress(){this.keystrokes.set("enter",e=>{this.isVisible&&this.focusTracker.focusedElement!==this.cancelButtonView.element&&this.colorPickerView.isValid()&&(this.fire("execute",{value:this.selectedColor}),e.stopPropagation(),e.preventDefault())})}_stopPropagationOnArrowsKeys(){const e=t=>t.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}_addColorPickersElementsToFocusTracker(){for(const t of this.colorPickerView.slidersView)this.focusTracker.add(t.element),this._focusables.add(t);const e=this.colorPickerView.hexInputRow.children.get(1);e.element&&(this.focusTracker.add(e.element),this._focusables.add(e)),this.focusTracker.add(this.saveButtonView.element),this._focusables.add(this.saveButtonView),this.focusTracker.add(this.cancelButtonView.element),this._focusables.add(this.cancelButtonView)}_createActionBarView({saveButtonView:e,cancelButtonView:t}){const n=new E,s=this.createCollection();return s.add(e),s.add(t),n.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector_action-bar"]},children:s}),n}_createActionButtons(){const e=this.locale,t=e.t,n=new A(e),s=new A(e);return n.set({icon:Bs,class:"ck-button-save",type:"button",withText:!1,label:t("Accept")}),s.set({icon:Ms,class:"ck-button-cancel",type:"button",withText:!1,label:t("Cancel")}),n.on("execute",()=>{this.colorPickerView.isValid()&&this.fire("execute",{source:"colorPickerSaveButton",value:this.selectedColor})}),s.on("execute",()=>{this.fire("colorPicker:cancel")}),{saveButtonView:n,cancelButtonView:s}}_executeUponColorChange(){this.colorPickerView.on("colorSelected",(e,t)=>{this.fire("execute",{value:t.color,source:"colorPicker"}),this.set("selectedColor",t.color)})}}class XC extends E{constructor(e,{colors:t,columns:n,removeButtonLabel:s,documentColorsLabel:r,documentColorsCount:a,colorPickerLabel:l,colorPickerViewConfig:c}){super(e);u(this,"focusTracker");u(this,"keystrokes");u(this,"items");u(this,"colorGridsFragmentView");u(this,"colorPickerFragmentView");u(this,"_focusCycler");u(this,"_focusables");u(this,"_colorPickerViewConfig");this.items=this.createCollection(),this.focusTracker=new ee,this.keystrokes=new re,this._focusables=new ve,this._colorPickerViewConfig=c,this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.colorGridsFragmentView=new JC(e,{colors:t,columns:n,removeButtonLabel:s,documentColorsLabel:r,documentColorsCount:a,colorPickerLabel:l,focusTracker:this.focusTracker,focusables:this._focusables}),this.colorPickerFragmentView=new YC(e,{focusables:this._focusables,focusTracker:this.focusTracker,keystrokes:this.keystrokes,colorPickerViewConfig:c}),this.set("_isColorGridsFragmentVisible",!0),this.set("_isColorPickerFragmentVisible",!1),this.set("selectedColor",void 0),this.colorGridsFragmentView.bind("isVisible").to(this,"_isColorGridsFragmentVisible"),this.colorPickerFragmentView.bind("isVisible").to(this,"_isColorPickerFragmentVisible"),this.on("change:selectedColor",(d,h,m)=>{this.colorGridsFragmentView.set("selectedColor",m),this.colorPickerFragmentView.set("selectedColor",m)}),this.colorGridsFragmentView.on("change:selectedColor",(d,h,m)=>{this.set("selectedColor",m)}),this.colorPickerFragmentView.on("change:selectedColor",(d,h,m)=>{this.set("selectedColor",m)}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector"]},children:this.items})}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}appendUI(){this._appendColorGridsFragment(),this._colorPickerViewConfig&&this._appendColorPickerFragment()}showColorPickerFragment(){!this.colorPickerFragmentView.colorPickerView||this._isColorPickerFragmentVisible||(this._isColorPickerFragmentVisible=!0,this.colorPickerFragmentView.focus(),this.colorPickerFragmentView.resetValidationStatus(),this._isColorGridsFragmentVisible=!1)}showColorGridsFragment(){this._isColorGridsFragmentVisible||(this._isColorGridsFragmentVisible=!0,this.colorGridsFragmentView.focus(),this._isColorPickerFragmentVisible=!1)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}updateDocumentColors(e,t){this.colorGridsFragmentView.updateDocumentColors(e,t)}updateSelectedColors(){this.colorGridsFragmentView.updateSelectedColors()}_appendColorGridsFragment(){this.items.length||(this.items.add(this.colorGridsFragmentView),this.colorGridsFragmentView.delegate("execute").to(this),this.colorGridsFragmentView.delegate("colorPicker:show").to(this))}_appendColorPickerFragment(){this.items.length!==2&&(this.items.add(this.colorPickerFragmentView),this.colorGridsFragmentView.colorPickerButtonView&&this.colorGridsFragmentView.colorPickerButtonView.on("execute",()=>{this.showColorPickerFragment()}),this.colorGridsFragmentView.addColorPickerButton(),this.colorPickerFragmentView.delegate("execute").to(this),this.colorPickerFragmentView.delegate("colorPicker:cancel").to(this))}}class QC{constructor(i){u(this,"editor");u(this,"_components",new Map);this.editor=i}*names(){for(const i of this._components.values())yield i.originalName}add(i,e){this._components.set(fr(i),{callback:e,originalName:i})}create(i){if(!this.has(i))throw new w("componentfactory-item-missing",this,{name:i});return this._components.get(fr(i)).callback(this.editor.locale)}has(i){return this._components.has(fr(i))}}function fr(o){return String(o).toLowerCase()}const Bd="ck-tooltip",fe=class fe extends Se(){constructor(e){super();u(this,"tooltipTextView");u(this,"balloonPanelView");u(this,"_currentElementWithTooltip",null);u(this,"_currentTooltipPosition",null);u(this,"_mutationObserver",null);u(this,"_pinTooltipDebounced");u(this,"_unpinTooltipDebounced");u(this,"_watchdogExcluded");if(fe._editors.add(e),fe._instance)return fe._instance;fe._instance=this,this.tooltipTextView=new E(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new Ie(e.locale),this.balloonPanelView.class=Bd,this.balloonPanelView.content.add(this.tooltipTextView),this._mutationObserver=eL(()=>{this._updateTooltipPosition()}),this._pinTooltipDebounced=at(this._pinTooltip,600),this._unpinTooltipDebounced=at(this._unpinTooltip,400),this.listenTo(T.document,"keydown",this._onKeyDown.bind(this),{useCapture:!0}),this.listenTo(T.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(T.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(T.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(T.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(T.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){const t=e.ui.view&&e.ui.view.body;fe._editors.delete(e),this.stopListening(e.ui),t&&t.has(this.balloonPanelView)&&t.remove(this.balloonPanelView),fe._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),fe._instance=null)}static getPositioningFunctions(e){const t=fe.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}_onKeyDown(e,t){t.key==="Escape"&&this._currentElementWithTooltip&&(this._unpinTooltip(),t.stopPropagation())}_onEnterOrFocus(e,{target:t}){const n=pr(t);if(!n){e.name==="focus"&&this._unpinTooltip();return}if(n===this._currentElementWithTooltip){this._unpinTooltipDebounced.cancel();return}this._unpinTooltip(),e.name==="focus"&&!n.matches(":hover")||n.matches("[data-cke-tooltip-instant]")?this._pinTooltip(n,wr(n)):this._pinTooltipDebounced(n,wr(n))}_onLeaveOrBlur(e,{target:t,relatedTarget:n}){if(e.name==="mouseleave"){if(!Gt(t))return;const s=this.balloonPanelView.element,r=s&&(s===n||s.contains(n)),a=!r&&t===s;if(r){this._unpinTooltipDebounced.cancel();return}if(!a&&this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const l=pr(t),c=pr(n);(a||l&&l!==c)&&(this._pinTooltipDebounced.cancel(),this._currentElementWithTooltip&&this._currentElementWithTooltip.matches("[data-cke-tooltip-instant]")||l&&l.matches("[data-cke-tooltip-instant]")?this._unpinTooltip():this._unpinTooltipDebounced())}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._pinTooltipDebounced.cancel(),this._unpinTooltipDebounced()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:n,cssClass:s}){this._unpinTooltip();const r=ue(fe._editors.values()).ui.view.body;r.has(this.balloonPanelView)||r.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.class=[Bd,s].filter(a=>a).join(" "),this.balloonPanelView.pin({target:e,positions:fe.getPositioningFunctions(n)}),this._mutationObserver.attach(e);for(const a of fe._editors)this.listenTo(a.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=n}_unpinTooltip(){this._unpinTooltipDebounced.cancel(),this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of fe._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this.tooltipTextView.text="",this._mutationObserver.detach()}_updateTooltipPosition(){if(!this._currentElementWithTooltip)return;const e=wr(this._currentElementWithTooltip);if(!St(this._currentElementWithTooltip)||!e.text){this._unpinTooltip();return}this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:fe.getPositioningFunctions(e.position)})}};u(fe,"defaultBalloonPositions",Ie.generatePositions({heightOffset:5,sideOffset:13})),u(fe,"_editors",new Set),u(fe,"_instance",null);let Qr=fe;function pr(o){return Gt(o)?o.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}function wr(o){return{text:o.dataset.ckeTooltipText,position:o.dataset.ckeTooltipPosition||"s",cssClass:o.dataset.ckeTooltipClass||""}}function eL(o){const i=new MutationObserver(()=>{o()});return{attach(e){i.observe(e,{attributes:!0,attributeFilter:["data-cke-tooltip-text","data-cke-tooltip-position"]})},detach(){i.disconnect()}}}const tL=50,iL=350;class $g extends Se(){constructor(e,t={}){super();u(this,"editor");u(this,"_balloonView",null);u(this,"_showBalloonThrottled",Hi(()=>this._showBalloon(),50,{leading:!0}));u(this,"_lastFocusedEditableElement",null);u(this,"_balloonClass");this.editor=e,this._balloonClass=t.balloonClass,e.on("ready",()=>this._handleEditorReady())}destroy(){const e=this._balloonView;e&&(e.unpin(),this._balloonView=null),this._showBalloonThrottled.cancel(),this.stopListening()}_handleEditorReady(){const e=this.editor;this._isEnabled()&&e.ui.view&&(e.ui.focusTracker.on("change:isFocused",(t,n,s)=>{this._updateLastFocusedEditableElement(),s?this._showBalloon():this._hideBalloon()}),e.ui.focusTracker.on("change:focusedElement",(t,n,s)=>{this._updateLastFocusedEditableElement(),s&&this._showBalloon()}),e.ui.on("update",()=>{this._showBalloonThrottled()}))}_getNormalizedConfig(){return{side:this.editor.locale.contentLanguageDirection==="ltr"?"right":"left",position:"border",verticalOffset:0,horizontalOffset:5}}_showBalloon(){const e=this._getBalloonAttachOptions();e&&(this._balloonView||(this._balloonView=this._createBalloonView()),this._balloonView.pin(e))}_hideBalloon(){this._balloonView&&this._balloonView.unpin()}_createBalloonView(){const e=this.editor,t=new Ie,n=this._createBadgeContent();return t.content.add(n),this._balloonClass&&(t.class=this._balloonClass),e.ui.view.body.add(t),t}_getBalloonAttachOptions(){if(!this._lastFocusedEditableElement)return null;const e=this._getNormalizedConfig(),t=e.side==="right"?nL(this._lastFocusedEditableElement,e):oL(this._lastFocusedEditableElement,e);return{target:this._lastFocusedEditableElement,positions:[t]}}_updateLastFocusedEditableElement(){const e=this.editor,t=e.ui.focusTracker.isFocused,n=e.ui.focusTracker.focusedElement;if(!t||!n){this._lastFocusedEditableElement=null;return}const s=Array.from(e.ui.getEditableElementsNames()).map(r=>e.ui.getEditableElement(r));s.includes(n)?this._lastFocusedEditableElement=n:this._lastFocusedEditableElement=s[0]}}function nL(o,i){return Kg(o,i,(e,t)=>e.left+e.width-t.width-i.horizontalOffset)}function oL(o,i){return Kg(o,i,e=>e.left+i.horizontalOffset)}function Kg(o,i,e){return(t,n)=>{const s=new R(o);if(s.width<iL||s.height<tL)return null;let r;i.position==="inside"?r=s.bottom-n.height:r=s.bottom-n.height/2,r-=i.verticalOffset;const a=e(s,n),c=t.clone().moveTo(a,r).getIntersection(n.clone().moveTo(a,r)).getVisible();return!c||c.getArea()<n.getArea()?null:{top:r,left:a,name:`position_${i.position}-side_${i.side}`,config:{withArrow:!1}}}}const sL="Powered by";class rL extends $g{constructor(i){super(i,{balloonClass:"ck-powered-by-balloon"})}_isEnabled(){const i=this.editor;if(i.config.get("ui.poweredBy.forceVisible"))return!0;const t=i.config.get("licenseKey");if(t=="GPL")return!0;const n=Va(t.split(".")[1]);return n?!n.whiteLabel:!0}_createBadgeContent(){return new aL(this.editor.locale,this._getNormalizedConfig().label)}_getNormalizedConfig(){const i=super._getNormalizedConfig(),e=this.editor.config.get("ui.poweredBy")||{},t=e.position||i.position,n=t==="inside"?5:i.verticalOffset;return{position:t,side:e.side||i.side,label:e.label===void 0?sL:e.label,verticalOffset:e.verticalOffset!==void 0?e.verticalOffset:n,horizontalOffset:e.horizontalOffset!==void 0?e.horizontalOffset:i.horizontalOffset,forceVisible:!!e.forceVisible}}}class aL extends E{constructor(i,e){super(i);const t=new wt,n=this.bindTemplate;t.set({content:w1,isColorInherited:!1}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-powered-by"],"aria-hidden":!0},children:[{tag:"a",attributes:{href:"https://ckeditor.com/powered-by-ckeditor/?utm_source=ckeditor&utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo",target:"_blank",tabindex:"-1"},children:[...e?[{tag:"span",attributes:{class:["ck","ck-powered-by__label"]},children:[e]}]:[],t],on:{dragstart:n.to(s=>s.preventDefault())}}]})}}class lL extends $g{constructor(e){super(e,{balloonClass:"ck-evaluation-badge-balloon"});u(this,"licenseTypeMessage",{evaluation:"For evaluation purposes only",trial:"For evaluation purposes only",development:"For development purposes only"})}_isEnabled(){const t=this.editor.config.get("licenseKey"),n=Vd(t);return!!(n&&this.licenseTypeMessage[n])}_createBadgeContent(){const e=this.editor.config.get("licenseKey"),t=Vd(e);return new cL(this.editor.locale,this.licenseTypeMessage[t])}_getNormalizedConfig(){const e=super._getNormalizedConfig(),t=this.editor.config.get("ui.poweredBy")||{},n=t.position||e.position,s=t.side||e.side;return{position:n,side:s==="left"?"right":"left",verticalOffset:e.verticalOffset,horizontalOffset:e.horizontalOffset}}}class cL extends E{constructor(i,e){super(i),this.setTemplate({tag:"div",attributes:{class:["ck","ck-evaluation-badge"],"aria-hidden":!0},children:[{tag:"span",attributes:{class:["ck","ck-evaluation-badge__label"]},children:[e]}]})}}function Vd(o){if(o=="GPL")return"GPL";const i=Va(o.split(".")[1]);return i?i.licenseType||"production":null}const zd={POLITE:"polite",ASSERTIVE:"assertive"};class dL{constructor(i){u(this,"editor");u(this,"view");this.editor=i,i.once("ready",()=>{for(const e of Object.values(zd))this.announce("",e)})}announce(i,e=zd.POLITE){const t=this.editor;if(!t.ui.view)return;this.view||(this.view=new uL(t.locale),t.ui.view.body.add(this.view));const{politeness:n,isUnsafeHTML:s}=typeof e=="string"?{politeness:e}:e;let r=this.view.regionViews.find(a=>a.politeness===n);r||(r=new hL(t,n),this.view.regionViews.add(r)),r.announce({announcement:i,isUnsafeHTML:s})}}class uL extends E{constructor(e){super(e);u(this,"regionViews");this.regionViews=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-aria-live-announcer"]},children:this.regionViews})}}class hL extends E{constructor(e,t){super(e.locale);u(this,"politeness");u(this,"_domConverter");u(this,"_pruneAnnouncementsInterval");this.setTemplate({tag:"div",attributes:{"aria-live":t,"aria-relevant":"additions"},children:[{tag:"ul",attributes:{class:["ck","ck-aria-live-region-list"]}}]}),e.on("destroy",()=>{this._pruneAnnouncementsInterval!==null&&(clearInterval(this._pruneAnnouncementsInterval),this._pruneAnnouncementsInterval=null)}),this.politeness=t,this._domConverter=e.data.htmlProcessor.domConverter,this._pruneAnnouncementsInterval=setInterval(()=>{this.element&&this._listElement.firstChild&&this._listElement.firstChild.remove()},5e3)}announce({announcement:e,isUnsafeHTML:t}){if(!e.trim().length)return;const n=document.createElement("li");t?this._domConverter.setContentOf(n,e):n.innerText=e,this._listElement.appendChild(n)}get _listElement(){return this.element.querySelector("ul")}}class eo extends ct{constructor(i,e){super(i);const t=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item"]},on:{mouseenter:t.to("mouseenter")}}),this.delegate("mouseenter").to(e)}}const ko=5,Li={toggleMenusAndFocusItemsOnHover(o){o.on("menu:mouseenter",i=>{if(!(!o.isFocusBorderEnabled&&!o.isOpen)){if(o.isOpen)for(const e of o.menus){const t=i.path[0],n=t instanceof eo&&t.children.first===e;e.isOpen=(i.path.includes(e)||n)&&e.isEnabled}i.source.focus()}})},focusCycleMenusOnArrows(o){const i=o.locale.uiLanguageDirection==="rtl";o.on("menu:arrowright",t=>{e(t.source,i?-1:1)}),o.on("menu:arrowleft",t=>{e(t.source,i?1:-1)});function e(t,n){const s=o.children.getIndex(t),r=t.isOpen,a=o.children.length,l=o.children.get((s+a+n)%a);t.isOpen=!1,r&&(l.isOpen=!0),l.buttonView.focus()}},closeMenusWhenTheBarCloses(o){o.on("change:isOpen",()=>{o.isOpen||o.menus.forEach(i=>{i.isOpen=!1})})},closeMenuWhenAnotherOnTheSameLevelOpens(o){o.on("menu:change:isOpen",(i,e,t)=>{t&&o.menus.filter(n=>i.source.parentMenuView===n.parentMenuView&&i.source!==n&&n.isOpen).forEach(n=>{n.isOpen=!1})})},closeOnClickOutside(o){mi({emitter:o,activator:()=>o.isOpen,callback:()=>o.close(),contextElements:()=>o.children.map(i=>i.element)})},enableFocusHighlightOnInteraction(o){let i=!1;o.on("change:isOpen",(e,t,n)=>{n||(i||(o.isFocusBorderEnabled=!1),i=!1)}),o.listenTo(o.element,"keydown",()=>{i=!0},{useCapture:!0}),o.listenTo(o.element,"keyup",()=>{i=!1},{useCapture:!0}),o.listenTo(o.element,"focus",()=>{i&&(o.isFocusBorderEnabled=!0)},{useCapture:!0})}},Bt={openAndFocusPanelOnArrowDownKey(o){o.keystrokes.set("arrowdown",(i,e)=>{o.isEnabled&&o.focusTracker.focusedElement===o.buttonView.element&&(o.isOpen||(o.isOpen=!0),o.panelView.focus(),e())})},openOnArrowRightKey(o){const i=o.locale.uiLanguageDirection==="rtl"?"arrowleft":"arrowright";o.keystrokes.set(i,(e,t)=>{o.focusTracker.focusedElement!==o.buttonView.element||!o.isEnabled||(o.isOpen||(o.isOpen=!0),o.panelView.focus(),t())})},openOnButtonClick(o){o.buttonView.on("execute",()=>{o.isOpen=!0})},toggleOnButtonClick(o){o.buttonView.on("execute",()=>{o.isOpen=!o.isOpen})},openAndFocusOnEnterKeyPress(o){o.keystrokes.set("enter",(i,e)=>{o.focusTracker.focusedElement===o.buttonView.element&&(o.isOpen=!0,o.panelView.focus(),e())})},closeOnArrowLeftKey(o){const i=o.locale.uiLanguageDirection==="rtl"?"arrowright":"arrowleft";o.keystrokes.set(i,(e,t)=>{o.isOpen&&(o.isOpen=!1,o.focus(),t())})},closeOnEscKey(o){o.keystrokes.set("esc",(i,e)=>{o.isOpen&&(o.isOpen=!1,o.focus(),e())})},closeOnParentClose(o){o.parentMenuView.on("change:isOpen",(i,e,t)=>{!t&&i.source===o.parentMenuView&&(o.isOpen=!1)})}},mL={southEast:o=>({top:o.bottom,left:o.left,name:"se"}),southWest:(o,i)=>({top:o.bottom,left:o.left-i.width+o.width,name:"sw"}),northEast:(o,i)=>({top:o.top-i.height,left:o.left,name:"ne"}),northWest:(o,i)=>({top:o.top-i.height,left:o.left-i.width+o.width,name:"nw"}),eastSouth:o=>({top:o.top,left:o.right-ko,name:"es"}),eastNorth:(o,i)=>({top:o.top-i.height,left:o.right-ko,name:"en"}),westSouth:(o,i)=>({top:o.top,left:o.left-i.width+ko,name:"ws"}),westNorth:(o,i)=>({top:o.top-i.height,left:o.left-i.width+ko,name:"wn"})},gL=[{menuId:"file",label:"File",groups:[{groupId:"export",items:["menuBar:exportPdf","menuBar:exportWord"]},{groupId:"import",items:["menuBar:importWord"]},{groupId:"revisionHistory",items:["menuBar:revisionHistory"]}]},{menuId:"edit",label:"Edit",groups:[{groupId:"undo",items:["menuBar:undo","menuBar:redo"]},{groupId:"selectAll",items:["menuBar:selectAll"]},{groupId:"findAndReplace",items:["menuBar:findAndReplace"]}]},{menuId:"view",label:"View",groups:[{groupId:"sourceEditingEnhanced",items:["menuBar:sourceEditingEnhanced"]},{groupId:"sourceEditing",items:["menuBar:sourceEditing"]},{groupId:"showBlocks",items:["menuBar:showBlocks"]},{groupId:"previewMergeFields",items:["menuBar:previewMergeFields"]},{groupId:"fullscreen",items:["menuBar:fullscreen"]},{groupId:"restrictedEditing",items:["menuBar:restrictedEditing"]}]},{menuId:"insert",label:"Insert",groups:[{groupId:"insertMainWidgets",items:["menuBar:insertImage","menuBar:ckbox","menuBar:ckfinder","menuBar:insertTable","menuBar:insertTableLayout"]},{groupId:"insertInline",items:["menuBar:link","menuBar:bookmark","menuBar:comment","menuBar:insertMergeField","menuBar:emoji"]},{groupId:"insertMinorWidgets",items:["menuBar:mediaEmbed","menuBar:insertTemplate","menuBar:specialCharacters","menuBar:blockQuote","menuBar:codeBlock","menuBar:htmlEmbed"]},{groupId:"insertStructureWidgets",items:["menuBar:horizontalLine","menuBar:pageBreak","menuBar:tableOfContents"]},{groupId:"restrictedEditingException",items:["menuBar:restrictedEditingException"]}]},{menuId:"format",label:"Format",groups:[{groupId:"textAndFont",items:[{menuId:"text",label:"Text",groups:[{groupId:"basicStyles",items:["menuBar:bold","menuBar:italic","menuBar:underline","menuBar:strikethrough","menuBar:superscript","menuBar:subscript","menuBar:code"]},{groupId:"textPartLanguage",items:["menuBar:textPartLanguage"]}]},{menuId:"font",label:"Font",groups:[{groupId:"fontProperties",items:["menuBar:fontSize","menuBar:fontFamily"]},{groupId:"fontColors",items:["menuBar:fontColor","menuBar:fontBackgroundColor"]},{groupId:"highlight",items:["menuBar:highlight"]}]},"menuBar:heading"]},{groupId:"list",items:["menuBar:bulletedList","menuBar:numberedList","menuBar:multiLevelList","menuBar:todoList"]},{groupId:"indent",items:["menuBar:alignment","menuBar:indent","menuBar:outdent"]},{groupId:"caseChange",items:["menuBar:caseChange"]},{groupId:"removeFormat",items:["menuBar:removeFormat"]}]},{menuId:"tools",label:"Tools",groups:[{groupId:"aiTools",items:["menuBar:aiAssistant","menuBar:aiCommands"]},{groupId:"tools",items:["menuBar:trackChanges","menuBar:commentsArchive"]}]},{menuId:"help",label:"Help",groups:[{groupId:"help",items:["menuBar:accessibilityHelp"]}]}];function fL(o){let i;return!("items"in o)||!o.items?i={items:qe(gL),addItems:[],removeItems:[],isVisible:!0,isUsingDefaultConfig:!0,...o}:i={items:o.items,removeItems:[],addItems:[],isVisible:!0,isUsingDefaultConfig:!1,...o},i}function pL({normalizedConfig:o,locale:i,componentFactory:e,extraItems:t}){const n=qe(o);return Nd(o,n,t),wL(o,n),Nd(o,n,n.addItems),bL(o,n,e),Zg(o,n),vL(n,i),n}function wL(o,i){const e=i.removeItems,t=[];i.items=i.items.filter(({menuId:n})=>e.includes(n)?(t.push(n),!1):!0),Xi(i.items,n=>{n.groups=n.groups.filter(({groupId:s})=>e.includes(s)?(t.push(s),!1):!0);for(const s of n.groups)s.items=s.items.filter(r=>{const a=Jg(r);return e.includes(a)?(t.push(a),!1):!0})});for(const n of e)t.includes(n)||F("menu-bar-item-could-not-be-removed",{menuBarConfig:o,itemName:n})}function Nd(o,i,e){const t=[];if(e.length!=0){for(const n of e){const s=_L(n.position),r=CL(n.position);if(kL(n))if(!r)s==="start"?(i.items.unshift(n.menu),t.push(n)):s==="end"&&(i.items.push(n.menu),t.push(n));else{const a=i.items.findIndex(l=>l.menuId===r);a!=-1?s==="before"?(i.items.splice(a,0,n.menu),t.push(n)):s==="after"&&(i.items.splice(a+1,0,n.menu),t.push(n)):Dd(i,n.menu,r,s)&&t.push(n)}else yL(n)?Xi(i.items,a=>{if(a.menuId===r)s==="start"?(a.groups.unshift(n.group),t.push(n)):s==="end"&&(a.groups.push(n.group),t.push(n));else{const l=a.groups.findIndex(c=>c.groupId===r);l!==-1&&(s==="before"?(a.groups.splice(l,0,n.group),t.push(n)):s==="after"&&(a.groups.splice(l+1,0,n.group),t.push(n)))}}):Dd(i,n.item,r,s)&&t.push(n)}for(const n of e)t.includes(n)||F("menu-bar-item-could-not-be-added",{menuBarConfig:o,addedItemConfig:n})}}function Dd(o,i,e,t){let n=!1;return Xi(o.items,s=>{for(const{groupId:r,items:a}of s.groups){if(n)return;if(r===e)t==="start"?(a.unshift(i),n=!0):t==="end"&&(a.push(i),n=!0);else{const l=a.findIndex(c=>Jg(c)===e);l!==-1&&(t==="before"?(a.splice(l,0,i),n=!0):t==="after"&&(a.splice(l+1,0,i),n=!0))}}}),n}function bL(o,i,e){Xi(i.items,t=>{for(const n of t.groups)n.items=n.items.filter(s=>{const r=typeof s=="string"&&!e.has(s);return r&&!i.isUsingDefaultConfig&&F("menu-bar-item-unavailable",{menuBarConfig:o,parentMenuConfig:qe(t),componentName:s}),!r})})}function Zg(o,i){const e=i.isUsingDefaultConfig;let t=!1;if(i.items=i.items.filter(n=>n.groups.length?!0:(br(o,n,e),!1)),!i.items.length){br(o,o,e);return}Xi(i.items,n=>{n.groups=n.groups.filter(s=>s.items.length?!0:(t=!0,!1));for(const s of n.groups)s.items=s.items.filter(r=>Yg(r)&&!r.groups.length?(br(o,r,e),t=!0,!1):!0)}),t&&Zg(o,i)}function br(o,i,e){e||F("menu-bar-menu-empty",{menuBarConfig:o,emptyMenuConfig:i})}function vL(o,i){const e=i.t,t={File:e({string:"File",id:"MENU_BAR_MENU_FILE"}),Edit:e({string:"Edit",id:"MENU_BAR_MENU_EDIT"}),View:e({string:"View",id:"MENU_BAR_MENU_VIEW"}),Insert:e({string:"Insert",id:"MENU_BAR_MENU_INSERT"}),Format:e({string:"Format",id:"MENU_BAR_MENU_FORMAT"}),Tools:e({string:"Tools",id:"MENU_BAR_MENU_TOOLS"}),Help:e({string:"Help",id:"MENU_BAR_MENU_HELP"}),Text:e({string:"Text",id:"MENU_BAR_MENU_TEXT"}),Font:e({string:"Font",id:"MENU_BAR_MENU_FONT"})};Xi(o.items,n=>{n.label in t&&(n.label=t[n.label])})}function Xi(o,i){if(Array.isArray(o))for(const t of o)e(t);function e(t){i(t);for(const n of t.groups)for(const s of n.items)Yg(s)&&e(s)}}function kL(o){return typeof o=="object"&&"menu"in o}function yL(o){return typeof o=="object"&&"group"in o}function _L(o){return o.startsWith("start")?"start":o.startsWith("end")?"end":o.startsWith("after")?"after":"before"}function CL(o){const i=o.match(/^[^:]+:(.+)/);return i?i[1]:null}function Jg(o){return typeof o=="string"?o:o.menuId}function Yg(o){return typeof o=="object"&&"menuId"in o}class LL extends j(){constructor(e){super();u(this,"editor");u(this,"componentFactory");u(this,"focusTracker");u(this,"tooltipManager");u(this,"poweredBy");u(this,"evaluationBadge");u(this,"ariaLiveAnnouncer");u(this,"isReady",!1);u(this,"_editableElementsMap",new Map);u(this,"_focusableToolbarDefinitions",[]);u(this,"_extraMenuBarElements",[]);u(this,"_lastFocusedForeignElement",null);u(this,"_domEmitter");const t=e.editing.view;this.editor=e,this.componentFactory=new QC(e),this.focusTracker=new ee,this.tooltipManager=new Qr(e),this.poweredBy=new rL(e),this.evaluationBadge=new lL(e),this.ariaLiveAnnouncer=new dL(e),this._initViewportOffset(this._readViewportOffsetFromConfig()),this.once("ready",()=>{this._bindBodyCollectionWithFocusTracker(),this.isReady=!0}),this.listenTo(t.document,"layoutChanged",this.update.bind(this)),this.listenTo(t,"scrollToTheSelection",this._handleScrollToTheSelection.bind(this)),this._initFocusTracking(),this._initVisualViewportSupport()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor),this.poweredBy.destroy(),this.evaluationBadge.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null,this.editor.keystrokes.stopListening(e);this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this._domEmitter&&this._domEmitter.stopListening()}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const n=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?n():this.once("ready",n)}removeEditableElement(e){const t=this._editableElementsMap.get(e);t&&(this._editableElementsMap.delete(e),this.editor.keystrokes.stopListening(t),this.focusTracker.remove(t),t.ckeditorInstance=null)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)):e.once("render",()=>{this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)}),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}extendMenuBar(e){this._extraMenuBarElements.push(e)}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}initMenuBar(e){const t=e.element;this.focusTracker.add(t),this.editor.keystrokes.listenTo(t);const n=fL(this.editor.config.get("menuBar")||{});e.fillFromConfig(n,this.componentFactory,this._extraMenuBarElements),this.editor.keystrokes.set("Esc",(s,r)=>{t.contains(this.editor.ui.focusTracker.focusedElement)&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):this.editor.editing.view.focus(),r())}),this.editor.keystrokes.set("Alt+F9",(s,r)=>{t.contains(this.editor.ui.focusTracker.focusedElement)||(this._saveLastFocusedForeignElement(),e.isFocusBorderEnabled=!0,e.focus(),r())})}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const n=e.config.get("toolbar.viewportTopOffset");return n?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:n}):{top:0}}_initFocusTracking(){const e=this.editor;let t;e.keystrokes.set("Alt+F10",(n,s)=>{this._saveLastFocusedForeignElement();const r=this._getCurrentFocusedToolbarDefinition();(!r||!t)&&(t=this._getFocusableCandidateToolbarDefinitions());for(let a=0;a<t.length;a++){const l=t.shift();if(t.push(l),l!==r&&this._focusFocusableCandidateToolbar(l)){r&&r.options.afterBlur&&r.options.afterBlur();break}}s()}),e.keystrokes.set("Esc",(n,s)=>{const r=this._getCurrentFocusedToolbarDefinition();r&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):e.editing.view.focus(),r.options.afterBlur&&r.options.afterBlur(),s())})}_saveLastFocusedForeignElement(){const e=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(e)&&!Array.from(this.editor.editing.view.domRoots.values()).includes(e)&&(this._lastFocusedForeignElement=e)}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:n,options:s}=t;(St(n.element)||s.beforeFocus)&&e.push(t)}return e.sort((t,n)=>Od(t)-Od(n)),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:n}}=e;return n&&n(),St(t.element)?(t.focus(),!0):!1}_handleScrollToTheSelection(e,t){const n={top:0,bottom:0,left:0,right:0,...this.viewportOffset};t.viewportOffset.top+=n.top,t.viewportOffset.bottom+=n.bottom,t.viewportOffset.left+=n.left,t.viewportOffset.right+=n.right}_bindBodyCollectionWithFocusTracker(){const e=this.view.body;for(const t of e)this.focusTracker.add(t.element);e.on("add",(t,n)=>{this.focusTracker.add(n.element)}),e.on("remove",(t,n)=>{this.focusTracker.remove(n.element)})}_initViewportOffset(e){this.on("set:viewportOffset",(t,n,s)=>{const r=this._getVisualViewportTopOffset(s);s.visualTop!==r&&(t.return={...s,visualTop:r})}),this.set("viewportOffset",e)}_initVisualViewportSupport(){if(!T.window.visualViewport)return;const e=()=>{const t=this._getVisualViewportTopOffset(this.viewportOffset);this.viewportOffset.visualTop!==t&&(this.viewportOffset={...this.viewportOffset,visualTop:t})};this._domEmitter=new(Se()),this._domEmitter.listenTo(T.window.visualViewport,"scroll",e),this._domEmitter.listenTo(T.window.visualViewport,"resize",e)}_getVisualViewportTopOffset(e){const t=Bo().top,n=e.top||0;return t>n?0:n-t}}function Od(o){const{toolbarView:i,options:e}=o;let t=10;return St(i.element)&&t--,e.isContextual&&(t-=2),t}class TL extends E{constructor(e){super(e);u(this,"body");u(this,"menuBarView");u(this,"toolbar");this.body=new Yr(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class EL extends TL{constructor(e){super(e);u(this,"top");u(this,"main");u(this,"_voiceLabelView");this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new Ye;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class xL extends E{constructor(e,t,n){super(e);u(this,"name",null);u(this,"_editingView");u(this,"_editableElement");u(this,"_hasExternalElement");this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.set("isFocused",!1),this._editableElement=n,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",()=>this._updateIsFocusedClasses()),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}get hasExternalElement(){return this._hasExternalElement}_updateIsFocusedClasses(){const e=this._editingView;e.isRenderingInProgress?n(this):t(this);function t(s){e.change(r=>{const a=e.document.getRoot(s.name);r.addClass(s.isFocused?"ck-focused":"ck-blurred",a),r.removeClass(s.isFocused?"ck-blurred":"ck-focused",a)})}function n(s){e.once("change:isRenderingInProgress",(r,a,l)=>{l?n(s):t(s)})}}}class SL extends xL{constructor(e,t,n,s={}){super(e,t,n);u(this,"_options");this._options=s,this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const e=this._editingView;e.change(t=>{const n=e.document.getRoot(this.name);t.setAttribute("aria-label",this.getEditableAriaLabel(),n)})}getEditableAriaLabel(){const e=this.locale.t,t=this._options.label,n=this._editableElement,s=this.name;if(typeof t=="string")return t;if(typeof t=="object")return t[s];if(typeof t=="function")return t(this);if(n){const r=n.getAttribute("aria-label");if(r)return r}return e("Rich Text Editor. Editing area: %0",s)}}class ke extends E{constructor(e,t={}){super(e);u(this,"children");const n=this.bindTemplate;this.set("class",["ck","ck-form__row",...Y(t.class||[])]),this.children=this.createCollection(),t.children&&t.children.forEach(s=>this.children.add(s)),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:n.to("class",s=>s.join(" ")),role:n.to("_role"),"aria-labelledby":n.to("_ariaLabelledBy")},children:this.children})}}class Fd extends cg{static get pluginName(){return"Notification"}static get isOfficialPlugin(){return!0}init(){this.on("show:warning",(i,e)=>{window.alert(e.message)},{priority:"lowest"})}showSuccess(i,e={}){this._showNotification({message:i,type:"success",namespace:e.namespace,title:e.title})}showInfo(i,e={}){this._showNotification({message:i,type:"info",namespace:e.namespace,title:e.title})}showWarning(i,e={}){this._showNotification({message:i,type:"warning",namespace:e.namespace,title:e.title})}_showNotification(i){const e=i.namespace?`show:${i.type}:${i.namespace}`:`show:${i.type}`;this.fire(e,{message:i.message,type:i.type,title:i.title||""})}}class Wn extends j(){constructor(i,e){super(),e&&Hh(this,e),i&&this.set(i)}}const yo=Ki("px");class Pt extends y{constructor(e){super(e);u(this,"positionLimiter");u(this,"visibleStack");u(this,"_viewToStack",new Map);u(this,"_idToStack",new Map);u(this,"_view",null);u(this,"_rotatorView",null);u(this,"_fakePanelsView",null);this.positionLimiter=()=>{const t=this.editor.editing.view,s=t.document.selection.editableElement;return s?t.domConverter.mapViewToDom(s.root):null},this.decorate("getPositionOptions"),this.set("visibleView",null),this.set("_numberOfStacks",0),this.set("_singleViewMode",!1)}static get pluginName(){return"ContextualBalloon"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._view&&this._view.destroy(),this._rotatorView&&this._rotatorView.destroy(),this._fakePanelsView&&this._fakePanelsView.destroy()}get view(){return this._view||this._createPanelView(),this._view}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this._view||this._createPanelView(),this.hasView(e.view))throw new w("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t)){this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,(!this._visibleStack||e.singleViewMode)&&this.showStack(t);return}const n=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),n.set(e.view,e),this._viewToStack.set(e.view,n),n===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new w("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(t.size===1?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),t.size===1?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition()}getPositionOptions(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:{...this.editor.ui.viewportOffset,top:this.editor.ui.viewportOffset.visualTop}})),e}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new w("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}_createPanelView(){this._view=new Ie(this.editor.locale),this.editor.ui.view.body.add(this._view),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find(n=>n[1]===e)[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new AL(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(n,s)=>!s&&n>1),e.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(n,s)=>{if(s<2)return"";const r=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[r,s])}),e.buttonNextView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()}),e.buttonPrevView.on("execute",()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()}),e}_createFakePanelsView(){const e=new IL(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",(t,n)=>!n&&t>=2?Math.min(t-1,2):0),e.listenTo(this.view,"change:top",()=>e.updatePosition()),e.listenTo(this.view,"change:left",()=>e.updatePosition()),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:n=!0,singleViewMode:s=!1}){this.view.class=t,this.view.withArrow=n,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition(),s&&(this._singleViewMode=!0)}}class AL extends E{constructor(e){super(e);u(this,"focusTracker");u(this,"buttonPrevView");u(this,"buttonNextView");u(this,"content");const t=e.t,n=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new ee,this.buttonPrevView=this._createButtonView(t("Previous"),Zi),this.buttonNextView=this._createButtonView(t("Next"),fg),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",n.to("isNavigationVisible",s=>s?"":"ck-hidden")]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:n.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const n=new A(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n}}class IL extends E{constructor(e,t){super(e);u(this,"content");u(this,"_balloonPanelView");const n=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",n.to("numberOfPanels",s=>s?"":"ck-hidden")],style:{top:n.to("top",yo),left:n.to("left",yo),width:n.to("width",yo),height:n.to("height",yo)}},children:this.content}),this.on("change:numberOfPanels",(s,r,a,l)=>{a>l?this._addPanels(a-l):this._removePanels(l-a),this.updatePosition()})}_addPanels(e){for(;e--;){const t=new E;t.setTemplate({tag:"div"}),this.content.add(t),this.registerChild(t)}}_removePanels(e){for(;e--;){const t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:n,height:s}=new R(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:n,height:s})}}}const Ti=Ki("px");class PL extends E{constructor(e){super(e);u(this,"content");u(this,"contentPanelElement");u(this,"_contentPanelPlaceholder");const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheBottomOfLimiter",!1),this.set("_stickyTopOffset",null),this.set("_stickyBottomOffset",null),this.content=this.createCollection(),this._contentPanelPlaceholder=new He({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",n=>n?"block":"none"),height:t.to("isSticky",n=>n?Ti(this._contentPanelRect.height):null)}}}).render(),this.contentPanelElement=new He({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheBottomOfLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",n=>n?Ti(this._contentPanelPlaceholder.getBoundingClientRect().width):null),top:t.to("_stickyTopOffset",n=>n&&Ti(n)),bottom:t.to("_stickyBottomOffset",n=>n&&Ti(n)),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this.contentPanelElement]})}render(){super.render(),this.checkIfShouldBeSticky(),this.listenTo(T.document,"scroll",()=>{this.checkIfShouldBeSticky()},{useCapture:!0}),this.listenTo(this,"change:isActive",()=>{this.checkIfShouldBeSticky()}),T.window.visualViewport&&(this.listenTo(T.window.visualViewport,"scroll",()=>{this.checkIfShouldBeSticky()}),this.listenTo(T.window.visualViewport,"resize",()=>{this.checkIfShouldBeSticky()}))}checkIfShouldBeSticky(){if(!this.limiterElement||!this.isActive){this._unstick();return}const e=new R(this.limiterElement);let t=e.getVisible();if(t){const r=new R(T.window);r.top+=this.viewportTopOffset,r.height-=this.viewportTopOffset,t=t.getIntersection(r)}const{left:n,top:s}=Bo();if(e.moveBy(n,s),t&&t.moveBy(n,s),t&&e.top<t.top)if(this._contentPanelRect.height+this.limiterBottomOffset>t.height){const r=Math.max(e.bottom-t.bottom,0)+this.limiterBottomOffset;this._contentPanelRect.height+r+1<e.height?this._stickToBottomOfLimiter(r):this._unstick()}else this._contentPanelRect.height+this.limiterBottomOffset<e.height?this._stickToTopOfAncestors(t.top):this._unstick();else this._unstick()}_stickToTopOfAncestors(e){this.isSticky=!0,this._isStickyToTheBottomOfLimiter=!1,this._stickyTopOffset=e,this._stickyBottomOffset=null,this._marginLeft=Ti(-T.window.scrollX+Bo().left)}_stickToBottomOfLimiter(e){this.isSticky=!0,this._isStickyToTheBottomOfLimiter=!0,this._stickyTopOffset=null,this._stickyBottomOffset=e,this._marginLeft=Ti(-T.window.scrollX+Bo().left)}_unstick(){this.isSticky=!1,this._isStickyToTheBottomOfLimiter=!1,this._stickyTopOffset=null,this._stickyBottomOffset=null,this._marginLeft=null}get _contentPanelRect(){return new R(this.contentPanelElement)}}class RL extends Ji{constructor(e){super(e);u(this,"arrowView");const t=this.bindTemplate;this.set({withText:!0,role:"menuitem"}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__button"],"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",n=>String(n)),"data-cke-tooltip-disabled":t.to("isOn")},on:{mouseenter:t.to("mouseenter")}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new wt;return e.content=Vs,e.extendTemplate({attributes:{class:"ck-menu-bar__menu__button__arrow"}}),e}}class ML extends E{constructor(e){super(e);u(this,"children");const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-menu-bar__menu__panel",t.to("position",n=>`ck-menu-bar__menu__panel_position_${n}`),t.if("isVisible","ck-hidden",n=>!n)],tabindex:"-1"},children:this.children,on:{selectstart:t.to(n=>{n.target.tagName.toLocaleLowerCase()!=="input"&&n.preventDefault()})}})}focus(e=1){this.children.length&&(e===1?this.children.first.focus():this.children.last.focus())}}const Es=class Es extends E{constructor(e){super(e);u(this,"buttonView");u(this,"panelView");u(this,"focusTracker");u(this,"keystrokes");const t=this.bindTemplate;this.buttonView=new RL(e),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.panelView=new ML(e),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new re,this.focusTracker=new ee,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("panelPosition","w"),this.set("class",void 0),this.set("parentMenuView",null),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar__menu",t.to("class"),t.if("isEnabled","ck-disabled",n=>!n),t.if("parentMenuView","ck-menu-bar__menu_top-level",n=>!n)]},children:[this.buttonView,this.panelView]})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.keystrokes.listenTo(this.element),Bt.closeOnEscKey(this),this._repositionPanelOnOpen()}_attachBehaviors(){this.parentMenuView?(Bt.openOnButtonClick(this),Bt.openOnArrowRightKey(this),Bt.closeOnArrowLeftKey(this),Bt.openAndFocusOnEnterKeyPress(this),Bt.closeOnParentClose(this)):(this._propagateArrowKeystrokeEvents(),Bt.openAndFocusPanelOnArrowDownKey(this),Bt.toggleOnButtonClick(this))}_propagateArrowKeystrokeEvents(){this.keystrokes.set("arrowright",(e,t)=>{this.fire("arrowright"),t()}),this.keystrokes.set("arrowleft",(e,t)=>{this.fire("arrowleft"),t()})}_repositionPanelOnOpen(){this.on("change:isOpen",(e,t,n)=>{if(!n)return;const s=Es._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=s?s.name:this._defaultMenuPositionName})}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:e,southWest:t,northEast:n,northWest:s,westSouth:r,eastSouth:a,westNorth:l,eastNorth:c}=mL;return this.locale.uiLanguageDirection==="ltr"?this.parentMenuView?[a,c,r,l]:[e,t,n,s]:this.parentMenuView?[r,l,a,c]:[t,e,s,n]}get _defaultMenuPositionName(){return this.locale.uiLanguageDirection==="ltr"?this.parentMenuView?"es":"se":this.parentMenuView?"ws":"sw"}};u(Es,"_getOptimalPosition",Ia);let pt=Es;class qn extends Yi{constructor(i){super(i),this.role="menu",this.items.on("change",this._setItemsCheckSpace.bind(this))}_setItemsCheckSpace(){const i=Array.from(this.items).some(e=>{const t=Ud(e);return t&&t.isToggleable});this.items.forEach(e=>{const t=Ud(e);t&&(t.hasCheckSpace=i)})}}function Ud(o){return o instanceof ct?o.children.map(i=>BL(i)?i.buttonView:i).find(i=>i instanceof Ji):null}function BL(o){return typeof o=="object"&&"buttonView"in o&&o.buttonView instanceof A}class Xg extends kC{constructor(i){super(i),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}const Hd=["mouseenter","arrowleft","arrowright","change:isOpen"];class VL extends E{constructor(e){super(e);u(this,"children");u(this,"menus",[]);const t=e.t,n=this.bindTemplate;this.set({isOpen:!1,isFocusBorderEnabled:!1}),this._setupIsOpenUpdater(),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar",n.if("isFocusBorderEnabled","ck-menu-bar_focus-border-enabled")],"aria-label":t("Editor menu bar"),role:"menubar"},children:this.children})}fillFromConfig(e,t,n=[]){const s=this.locale,a=pL({normalizedConfig:e,locale:s,componentFactory:t,extraItems:n}).items.map(l=>this._createMenu({componentFactory:t,menuDefinition:l}));this.children.addMany(a)}render(){super.render(),Li.toggleMenusAndFocusItemsOnHover(this),Li.closeMenusWhenTheBarCloses(this),Li.closeMenuWhenAnotherOnTheSameLevelOpens(this),Li.focusCycleMenusOnArrows(this),Li.closeOnClickOutside(this),Li.enableFocusHighlightOnInteraction(this)}focus(){this.children.first&&this.children.first.focus()}close(){for(const e of this.children)e.isOpen=!1}disable(){for(const e of this.children)e.isEnabled=!1}enable(){for(const e of this.children)e.isEnabled=!0}registerMenu(e,t=null){t?(e.delegate(...Hd).to(t),e.parentMenuView=t):e.delegate(...Hd).to(this,n=>"menu:"+n),e._attachBehaviors(),this.menus.push(e)}_createMenu({componentFactory:e,menuDefinition:t,parentMenuView:n}){const s=this.locale,r=new pt(s);return this.registerMenu(r,n),r.buttonView.set({label:t.label}),r.once("change:isOpen",()=>{const a=new qn(s);a.ariaLabel=t.label,r.panelView.children.add(a),a.items.addMany(this._createMenuItems({menuDefinition:t,parentMenuView:r,componentFactory:e}))}),r}_createMenuItems({menuDefinition:e,parentMenuView:t,componentFactory:n}){const s=this.locale,r=[];for(const a of e.groups){for(const l of a.items){const c=new eo(s,t);if(Qe(l))c.children.add(this._createMenu({componentFactory:n,menuDefinition:l,parentMenuView:t}));else{const d=this._createMenuItemContentFromFactory({componentName:l,componentFactory:n,parentMenuView:t});if(!d)continue;c.children.add(d)}r.push(c)}a!==e.groups[e.groups.length-1]&&r.push(new al(s))}return r}_createMenuItemContentFromFactory({componentName:e,parentMenuView:t,componentFactory:n}){const s=n.create(e);return s instanceof pt||s instanceof Ce||s instanceof Xg?(this._registerMenuTree(s,t),s.on("execute",()=>{this.close()}),s):(F("menu-bar-component-unsupported",{componentName:e,componentView:s}),null)}_registerMenuTree(e,t){if(!(e instanceof pt)){e.delegate("mouseenter").to(t);return}this.registerMenu(e,t);const n=e.panelView.children.filter(r=>r instanceof qn)[0];if(!n){e.delegate("mouseenter").to(t);return}const s=n.items.filter(r=>r instanceof ct);for(const r of s)this._registerMenuTree(r.children.get(0),e)}_setupIsOpenUpdater(){let e;this.on("menu:change:isOpen",(t,n,s)=>{clearTimeout(e),s?this.isOpen=!0:e=setTimeout(()=>{this.isOpen=Array.from(this.children).some(r=>r.isOpen)},0)})}}/**
247
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
248
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
249
+ */const cl=["left","right","center","justify"];function Qg(o){return cl.includes(o)}function ef(o,i){return i.contentLanguageDirection=="rtl"?o==="right":o==="left"}function tf(o){const i=o.map(t=>{let n;return typeof t=="string"?n={name:t}:n=t,n}).filter(t=>{const n=cl.includes(t.name);return n||F("alignment-config-name-not-recognized",{option:t}),n}),e=i.filter(t=>!!t.className).length;if(e&&e<i.length)throw new w("alignment-config-classnames-are-missing",{configuredOptions:o});return i.forEach((t,n,s)=>{const r=s.slice(n+1);if(r.some(l=>l.name==t.name))throw new w("alignment-config-name-already-defined",{option:t,configuredOptions:o});if(t.className&&r.some(c=>c.className==t.className))throw new w("alignment-config-classname-already-defined",{option:t,configuredOptions:o})}),i}const dl="alignment";class zL extends B{refresh(){const e=this.editor.locale,t=ue(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=!!t&&this._canBeAligned(t),this.isEnabled&&t.hasAttribute("alignment")?this.value=t.getAttribute("alignment"):this.value=e.contentLanguageDirection==="rtl"?"right":"left"}execute(i={}){const e=this.editor,t=e.locale,n=e.model,s=n.document,r=i.value;n.change(a=>{const l=Array.from(s.selection.getSelectedBlocks()).filter(h=>this._canBeAligned(h)),c=l[0].getAttribute("alignment");ef(r,t)||c===r||!r?NL(l,a):DL(l,a,r)})}_canBeAligned(i){return this.editor.model.schema.checkAttribute(i,dl)}}function NL(o,i){for(const e of o)i.removeAttribute(dl,e)}function DL(o,i,e){for(const t of o)i.setAttribute(dl,e,t)}class OL extends y{static get pluginName(){return"AlignmentEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("alignment",{options:cl.map(e=>({name:e}))})}init(){const i=this.editor,e=i.locale,t=i.model.schema,s=tf(i.config.get("alignment.options")).filter(c=>Qg(c.name)&&!ef(c.name,e)),r=s.some(c=>!!c.className);t.extend("$block",{allowAttributes:"alignment"}),i.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),r?i.conversion.attributeToAttribute(WL(s)):i.conversion.for("downcast").attributeToAttribute(FL(s));const a=UL(s);for(const c of a)i.conversion.for("upcast").attributeToAttribute(c);const l=HL(s);for(const c of l)i.conversion.for("upcast").attributeToAttribute(c);i.commands.add("alignment",new zL(i))}}function FL(o){const i={};for(const{name:t}of o)i[t]={key:"style",value:{"text-align":t}};return{model:{key:"alignment",values:o.map(t=>t.name)},view:i}}function UL(o){const i=[];for(const{name:e}of o)i.push({view:{key:"style",value:{"text-align":e}},model:{key:"alignment",value:e}});return i}function HL(o){const i=[];for(const{name:e}of o)i.push({view:{key:"align",value:e},model:{key:"alignment",value:e}});return i}function WL(o){const i={};for(const t of o)i[t.name]={key:"class",value:t.className};return{model:{key:"alignment",values:o.map(t=>t.name)},view:i}}const ln=new Map([["left",Xa],["right",hg],["center",dg],["justify",ug]]);class qL extends y{get localizedOptionTitles(){const i=this.editor.t;return{left:i("Align left"),right:i("Align right"),center:i("Align center"),justify:i("Justify")}}static get pluginName(){return"AlignmentUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=tf(i.config.get("alignment.options"));e.map(t=>t.name).filter(Qg).forEach(t=>this._addButton(t)),this._addToolbarDropdown(e),this._addMenuBarMenu(e)}_addButton(i){this.editor.ui.componentFactory.add(`alignment:${i}`,t=>this._createButton(t,i))}_createButton(i,e,t={}){const n=this.editor,s=n.commands.get("alignment"),r=new A(i);return r.set({label:this.localizedOptionTitles[e],icon:ln.get(e),tooltip:!0,isToggleable:!0,...t}),r.bind("isEnabled").to(s),r.bind("isOn").to(s,"value",a=>a===e),this.listenTo(r,"execute",()=>{n.execute("alignment",{value:e}),n.editing.view.focus()}),r}_addToolbarDropdown(i){const e=this.editor;e.ui.componentFactory.add("alignment",n=>{const s=We(n),r=n.uiLanguageDirection==="rtl"?"w":"e",a=n.t;zs(s,()=>i.map(d=>this._createButton(n,d.name,{tooltipPosition:r})),{enableActiveItemFocusOnDropdownOpen:!0,isVertical:!0,ariaLabel:a("Text alignment toolbar")}),s.buttonView.set({label:a("Text alignment"),tooltip:!0}),s.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const l=n.contentLanguageDirection==="rtl"?ln.get("right"):ln.get("left"),c=e.commands.get("alignment");return s.buttonView.bind("icon").to(c,"value",d=>ln.get(d)||l),s.bind("isEnabled").to(c,"isEnabled"),this.listenTo(s,"execute",()=>{e.editing.view.focus()}),s})}_addMenuBarMenu(i){const e=this.editor;e.ui.componentFactory.add("menuBar:alignment",t=>{const n=e.commands.get("alignment"),s=t.t,r=new pt(t),a=new qn(t);r.bind("isEnabled").to(n),a.set({ariaLabel:s("Text alignment"),role:"menu"}),r.buttonView.set({label:s("Text alignment")});for(const l of i){const c=new eo(t,r),d=new Ce(t);d.delegate("execute").to(r),d.set({label:this.localizedOptionTitles[l.name],icon:ln.get(l.name),role:"menuitemcheckbox",isToggleable:!0}),d.on("execute",()=>{e.execute("alignment",{value:l.name}),e.editing.view.focus()}),d.bind("isOn").to(n,"value",h=>h===l.name),d.bind("isEnabled").to(n,"isEnabled"),c.children.add(d),a.items.add(c)}return r.panelView.children.add(a),r})}}class jL extends y{static get requires(){return[OL,qL]}static get pluginName(){return"Alignment"}static get isOfficialPlugin(){return!0}}/**
250
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
251
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
252
+ *//**
253
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
254
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
255
+ */class nf{constructor(i,e=20){u(this,"model");u(this,"limit");u(this,"_isLocked");u(this,"_size");u(this,"_batch",null);u(this,"_changeCallback");u(this,"_selectionChangeCallback");this.model=i,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,n)=>{n.isLocal&&n.isUndoable&&n!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}get size(){return this._size}input(i){this._size+=i,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}lock(){this._isLocked=!0}unlock(){this._isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(i=!1){(!this.isLocked||i)&&(this._batch=null,this._size=0)}}class GL extends B{constructor(e,t){super(e);u(this,"_buffer");this._buffer=new nf(e.model,t),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,n=t.document,s=e.text||"",r=s.length;let a=n.selection;if(e.selection?a=e.selection:e.range&&(a=t.createSelection(e.range)),!t.canEditAt(a))return;const l=e.resultRange;t.enqueueChange(this._buffer.batch,c=>{this._buffer.lock();const d=Array.from(n.selection.getAttributes());t.deleteContent(a),s&&t.insertContent(c.createText(s,d),a),l?c.setSelection(l):a.is("documentSelection")||c.setSelection(a),this._buffer.unlock(),this._buffer.input(r)})}}const of=["insertText","insertReplacementText"],$L=[...of,"insertCompositionText"];class KL extends bt{constructor(e){super(e);u(this,"focusObserver");this.focusObserver=e.getObserver(is);const t=I.isAndroid?$L:of,n=e.document;n.on("beforeinput",(s,r)=>{if(!this.isEnabled)return;const{data:a,targetRanges:l,inputType:c,domEvent:d,isComposing:h}=r;if(!t.includes(c))return;this.focusObserver.flush();const m=new xt(n,"insertText");n.fire(m,new ri(e,d,{text:a,selection:e.createSelection(l),isComposing:h})),m.stop.called&&s.stop()}),I.isAndroid||n.on("compositionend",(s,{data:r,domEvent:a})=>{this.isEnabled&&r&&n.fire("insertText",new ri(e,a,{text:r,isComposing:!0}))},{priority:"low"})}observe(){}stopObserving(){}}class sf extends y{constructor(){super(...arguments);u(this,"_typingQueue")}static get pluginName(){return"Input"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,n=e.editing.view,s=e.editing.mapper,r=t.document.selection;this._typingQueue=new ZL(e),n.addObserver(KL);const a=new GL(e,e.config.get("typing.undoStep")||20);e.commands.add("insertText",a),e.commands.add("input",a),this.listenTo(n.document,"beforeinput",()=>{this._typingQueue.flush("next beforeinput")},{priority:"high"}),this.listenTo(n.document,"insertText",(l,c)=>{const{text:d,selection:h}=c;if(n.document.selection.isFake&&h&&n.document.selection.isSimilar(h)&&c.preventDefault(),h&&Array.from(h.getRanges()).some(p=>!p.isCollapsed)&&c.preventDefault(),!a.isEnabled){c.preventDefault();return}let m;h?m=Array.from(h.getRanges()).map(p=>s.toModelRange(p)).map(p=>$a(p,t.schema)||p):m=Array.from(r.getRanges());let g=d;if(I.isAndroid){const p=Array.from(m[0].getItems()).reduce((b,k)=>b+(k.is("$textProxy")?k.data:""),"");if(p&&(p.length<=g.length?g.startsWith(p)&&(g=g.substring(p.length),m[0].start=m[0].start.getShiftedBy(p.length)):p.startsWith(g)&&(m[0].start=m[0].start.getShiftedBy(g.length),g="")),g.length==0&&m[0].isCollapsed)return}const f={text:g,selection:t.createSelection(m)};this._typingQueue.push(f,!!c.isComposing),c.domEvent.defaultPrevented&&this._typingQueue.flush("beforeinput default prevented")}),I.isAndroid?this.listenTo(n.document,"keydown",(l,c)=>{r.isCollapsed||c.keyCode!=229||!n.document.isComposing||Wd(t,a)}):this.listenTo(n.document,"compositionstart",()=>{r.isCollapsed||Wd(t,a)},{priority:"high"}),this.listenTo(n.document,"mutations",(l,{mutations:c})=>{if(this._typingQueue.hasAffectedElements())for(const{node:d}of c){const h=YL(d,s),m=s.toModelElement(h);if(this._typingQueue.isElementAffected(m)){this._typingQueue.flush("mutations");return}}}),this.listenTo(n.document,"compositionend",()=>{this._typingQueue.flush("before composition end")},{priority:"high"}),this.listenTo(n.document,"compositionend",()=>{this._typingQueue.flush("after composition end");const l=[];if(this._typingQueue.hasAffectedElements())for(const c of this._typingQueue.flushAffectedElements()){const d=s.toViewElement(c);d&&l.push({type:"children",node:d})}(l.length||!I.isAndroid)&&n.document.fire("mutations",{mutations:l})},{priority:"lowest"})}destroy(){super.destroy(),this._typingQueue.destroy()}}class ZL{constructor(i){u(this,"editor");u(this,"flushDebounced",at(()=>this.flush("timeout"),50));u(this,"_queue",[]);u(this,"_isComposing",!1);u(this,"_affectedElements",new Set);this.editor=i}destroy(){for(this.flushDebounced.cancel(),this._affectedElements.clear();this._queue.length;)this.shift()}get length(){return this._queue.length}push(i,e){const t={text:i.text};if(i.selection){t.selectionRanges=[];for(const n of i.selection.getRanges())t.selectionRanges.push(Je.fromRange(n)),this._affectedElements.add(n.start.parent)}this._queue.push(t),this._isComposing||(this._isComposing=e),this.flushDebounced()}shift(){const i=this._queue.shift(),e={text:i.text};if(i.selectionRanges){const t=i.selectionRanges.map(n=>JL(n)).filter(n=>!!n);t.length&&(e.selection=this.editor.model.createSelection(t))}return e}flush(i){const e=this.editor,t=e.model,n=e.editing.view;if(this.flushDebounced.cancel(),!this._queue.length)return;const r=e.commands.get("insertText").buffer;t.enqueueChange(r.batch,()=>{for(r.lock();this._queue.length;){const a=this.shift();e.execute("insertText",a)}r.unlock(),this._isComposing||this._affectedElements.clear(),this._isComposing=!1}),n.scrollToTheSelection()}isElementAffected(i){return this._affectedElements.has(i)}hasAffectedElements(){return this._affectedElements.size>0}flushAffectedElements(){const i=Array.from(this._affectedElements);return this._affectedElements.clear(),i}}function Wd(o,i){if(!i.isEnabled)return;const e=i.buffer;e.lock(),o.enqueueChange(e.batch,()=>{o.deleteContent(o.document.selection)}),e.unlock()}function JL(o){const i=o.toRange();return o.detach(),i.root.rootName=="$graveyard"?null:i}function YL(o,i){let e=o.is("$text")?o.parent:o;for(;!i.toModelElement(e);)e=e.parent;return e}class qd extends B{constructor(e,t){super(e);u(this,"direction");u(this,"_buffer");this.direction=t,this._buffer=new nf(e.model,e.config.get("typing.undoStep")),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,n=t.document;t.enqueueChange(this._buffer.batch,s=>{this._buffer.lock();const r=s.createSelection(e.selection||n.selection);if(!t.canEditAt(r))return;const a=e.sequence||1,l=r.isCollapsed;if(r.isCollapsed&&t.modifySelection(r,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(a)){this._replaceEntireContentWithParagraph(s);return}if(this._shouldReplaceFirstBlockWithParagraph(r,a)){this.editor.execute("paragraph",{selection:r});return}if(r.isCollapsed)return;let c=0;r.getFirstRange().getMinimalFlatRanges().forEach(d=>{c+=Vr(d.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(r,{doNotResetEntireContent:l,direction:this.direction}),this._buffer.input(c),s.setSelection(r),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,s=t.document.selection,r=t.schema.getLimitElement(s);if(!(s.isCollapsed&&s.containsEntireContent(r))||!t.schema.checkChild(r,"paragraph"))return!1;const l=r.getChild(0);return!(l&&l.is("element","paragraph"))}_replaceEntireContentWithParagraph(e){const t=this.editor.model,s=t.document.selection,r=t.schema.getLimitElement(s),a=e.createElement("paragraph");e.remove(e.createRangeIn(r)),e.insert(a,r),e.setSelection(a,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const n=this.editor.model;if(t>1||this.direction!="backward"||!e.isCollapsed)return!1;const s=e.getFirstPosition(),r=n.schema.getLimitElement(s),a=r.getChild(0);return!(s.parent!=a||!e.containsEntireContent(a)||!n.schema.checkChild(r,"paragraph")||a.name=="paragraph")}}const XL="character",jd="word",QL="codePoint",Dt="selection",Mi="backward",wn="forward",rf={deleteContent:{unit:Dt,direction:Mi},deleteContentBackward:{unit:QL,direction:Mi},deleteWordBackward:{unit:jd,direction:Mi},deleteHardLineBackward:{unit:Dt,direction:Mi},deleteSoftLineBackward:{unit:Dt,direction:Mi},deleteContentForward:{unit:XL,direction:wn},deleteWordForward:{unit:jd,direction:wn},deleteHardLineForward:{unit:Dt,direction:wn},deleteSoftLineForward:{unit:Dt,direction:wn}};class eT extends bt{constructor(i){super(i);const e=i.document;let t=0;e.on("keydown",()=>{t++}),e.on("keyup",()=>{t=0}),e.on("beforeinput",(n,s)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:a,inputType:l}=s,c=rf[l];if(!c)return;const d={direction:c.direction,unit:c.unit,sequence:t};d.unit==Dt&&(d.selectionToRemove=i.createSelection(r[0])),l==="deleteContentBackward"&&(I.isAndroid&&(d.sequence=1),iT(r)&&(d.unit=Dt,d.selectionToRemove=i.createSelection(r)));const h=new ui(e,"delete",r[0]);e.fire(h,new ri(i,a,d)),h.stop.called&&n.stop()}),I.isBlink&&tT(this)}observe(){}stopObserving(){}}function tT(o){const i=o.view,e=i.document;let t=null,n=!1;e.on("keydown",(a,{keyCode:l})=>{t=l,n=!1}),e.on("keyup",(a,{keyCode:l,domEvent:c})=>{const d=e.selection,h=o.isEnabled&&l==t&&s(l)&&!d.isCollapsed&&!n;if(t=null,h){const m=d.getFirstRange(),g=new ui(e,"delete",m),f={unit:Dt,direction:r(l),selectionToRemove:d};e.fire(g,new ri(i,c,f))}}),e.on("beforeinput",(a,{inputType:l})=>{const c=rf[l];s(t)&&c&&c.direction==r(t)&&(n=!0)},{priority:"high"}),e.on("beforeinput",(a,{inputType:l,data:c})=>{t==z.delete&&l=="insertText"&&c==""&&a.stop()},{priority:"high"});function s(a){return a==z.backspace||a==z.delete}function r(a){return a==z.backspace?Mi:wn}}function iT(o){if(o.length!=1||o[0].isCollapsed)return!1;const i=o[0].getWalker({direction:"backward",singleCharacters:!0,ignoreElementEnd:!0});let e=0;for(const{nextPosition:t,item:n}of i){if(t.parent.is("$text")){const s=t.parent.data,r=t.offset;if(za(s,r)||Na(s,r)||hm(s,r))continue;e++}else(n.is("containerElement")||n.is("emptyElement"))&&e++;if(e>1)return!0}return!1}class Qi extends y{constructor(){super(...arguments);u(this,"_undoOnBackspace")}static get pluginName(){return"Delete"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,n=t.document,s=e.model.document;t.addObserver(eT),this._undoOnBackspace=!1;const r=new qd(e,"forward");e.commands.add("deleteForward",r),e.commands.add("forwardDelete",r),e.commands.add("delete",new qd(e,"backward")),this.listenTo(n,"delete",(a,l)=>{n.isComposing||l.preventDefault();const{direction:c,sequence:d,selectionToRemove:h,unit:m}=l,g=c==="forward"?"deleteForward":"delete",f={sequence:d};if(m=="selection"){const p=Array.from(h.getRanges()).map(b=>e.editing.mapper.toModelRange(b)).map(b=>$a(b,e.model.schema)||b);f.selection=e.model.createSelection(p)}else f.unit=m;e.execute(g,f),t.scrollToTheSelection()},{priority:"low"}),this.listenTo(n,"keydown",(a,l)=>{if(n.isComposing||l.keyCode!=z.backspace||!s.selection.isCollapsed)return;const c=e.model.schema.getLimitElement(s.selection),d=e.model.createPositionAt(c,0);if(d.isTouching(s.selection.getFirstPosition())){l.preventDefault();const h=e.model.schema.getNearestSelectionRange(d,"forward");if(!h)return;const m=t.createSelection(e.editing.mapper.toViewRange(h)),g=m.getFirstRange(),f=new ui(document,"delete",g),p={unit:"selection",direction:"backward",selectionToRemove:m};n.fire(f,new ri(t,l.domEvent,p))}}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",(a,l)=>{this._undoOnBackspace&&l.direction=="backward"&&l.sequence==1&&l.unit=="codePoint"&&(this._undoOnBackspace=!1,e.execute("undo"),l.preventDefault(),a.stop())},{context:"$capture"}),this.listenTo(s,"change",()=>{this._undoOnBackspace=!1}))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class nT extends y{static get requires(){return[sf,Qi]}static get pluginName(){return"Typing"}static get isOfficialPlugin(){return!0}}/**
256
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
257
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
258
+ */function af(o,i){let e=o.start;return{text:Array.from(o.getWalker({ignoreElementEnd:!1})).reduce((n,{item:s})=>s.is("$text")||s.is("$textProxy")?n+s.data:(e=i.createPositionAfter(s),""),""),range:i.createRange(e,o.end)}}class oT extends j(){constructor(e,t){super();u(this,"model");u(this,"testCallback");u(this,"_hasMatch");this.model=e,this.testCallback=t,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))}),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",(n,{directChange:s})=>{if(s){if(!t.selection.isCollapsed){this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1);return}this._evaluateTextBeforeSelection("selection")}}),this.listenTo(t,"change:data",(n,s)=>{s.isUndo||!s.isLocal||this._evaluateTextBeforeSelection("data",{batch:s})})}_evaluateTextBeforeSelection(e,t={}){const n=this.model,r=n.document.selection,a=n.createRange(n.createPositionAt(r.focus.parent,0),r.focus),{text:l,range:c}=af(a,n),d=this.testCallback(l);if(!d&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!d,d){const h=Object.assign(t,{text:l,range:c});typeof d=="object"&&Object.assign(h,d),this.fire(`matched:${e}`,h)}}}class Gd extends y{constructor(e){super(e);u(this,"attributes");u(this,"_overrideUid");u(this,"_isNextGravityRestorationSkipped",!1);this.attributes=new Set,this._overrideUid=null}static get pluginName(){return"TwoStepCaretMovement"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,n=e.editing.view,s=e.locale,r=t.document.selection;this.listenTo(n.document,"arrowKey",(a,l)=>{if(!r.isCollapsed||l.shiftKey||l.altKey||l.ctrlKey)return;const c=l.keyCode==z.arrowright,d=l.keyCode==z.arrowleft;if(!c&&!d)return;const h=s.contentLanguageDirection;let m=!1;h==="ltr"&&c||h==="rtl"&&d?m=this._handleForwardMovement(l):m=this._handleBackwardMovement(l),m===!0&&a.stop()},{context:"$text",priority:"highest"}),this.listenTo(r,"change:range",(a,l)=>{if(this._isNextGravityRestorationSkipped){this._isNextGravityRestorationSkipped=!1;return}this._isGravityOverridden&&(!l.directChange&&Ke(r.getFirstPosition(),this.attributes)||this._restoreGravity())}),this._enableClickingAfterNode(),this._enableInsertContentSelectionAttributesFixer(),this._handleDeleteContentAfterNode()}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,n=this.editor.model,s=n.document.selection,r=s.getFirstPosition();return this._isGravityOverridden||r.isAtStart&&kt(s,t)?!1:Ke(r,t)?(e&&dn(e),kt(s,t)&&Ke(r,t,!0)?cn(n,t):this._overrideGravity(),!0):!1}_handleBackwardMovement(e){const t=this.attributes,n=this.editor.model,s=n.document.selection,r=s.getFirstPosition();return this._isGravityOverridden?(e&&dn(e),this._restoreGravity(),Ke(r,t,!0)?cn(n,t):_o(n,t,r),!0):r.isAtStart?kt(s,t)?(e&&dn(e),_o(n,t,r),!0):!1:!kt(s,t)&&Ke(r,t,!0)?(e&&dn(e),_o(n,t,r),!0):$d(r,t)?r.isAtEnd&&!kt(s,t)&&Ke(r,t)?(e&&dn(e),_o(n,t,r),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):!1}_enableClickingAfterNode(){const e=this.editor,t=e.model,n=t.document.selection,s=e.editing.view.document;e.editing.view.addObserver(Rs),e.editing.view.addObserver(F_);let r=!1,a=!1;this.listenTo(s,"touchstart",()=>{a=!1,r=!0}),this.listenTo(s,"mousedown",()=>{a=!0}),this.listenTo(s,"selectionChange",()=>{const l=this.attributes;if(!a&&!r||(a=!1,r=!1,!n.isCollapsed)||!kt(n,l))return;const c=n.getFirstPosition();Ke(c,l)&&(c.isAtStart||Ke(c,l,!0)?cn(t,l):this._isGravityOverridden||this._overrideGravity())})}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,n=t.document.selection,s=this.attributes;this.listenTo(t,"insertContent",()=>{const r=n.getFirstPosition();kt(n,s)&&Ke(r,s)&&cn(t,s)},{priority:"low"})}_handleDeleteContentAfterNode(){const e=this.editor,t=e.model,n=t.document.selection,s=e.editing.view;let r=!1,a=!1;this.listenTo(s.document,"delete",(l,c)=>{r=c.direction==="backward"},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{if(!r)return;const l=n.getFirstPosition();a=kt(n,this.attributes)&&!$d(l,this.attributes)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{r&&(r=!1,!a&&e.model.enqueueChange(()=>{const l=n.getFirstPosition();kt(n,this.attributes)&&Ke(l,this.attributes)&&(l.isAtStart||Ke(l,this.attributes,!0)?cn(t,this.attributes):this._isGravityOverridden||this._overrideGravity())}))},{priority:"low"})}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change(e=>e.overrideSelectionGravity())}_restoreGravity(){this.editor.model.change(e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null})}}function kt(o,i){for(const e of i)if(o.hasAttribute(e))return!0;return!1}function _o(o,i,e){const t=e.nodeBefore;o.change(n=>{if(t){const s=[],r=o.schema.isObject(t)&&o.schema.isInline(t);for(const[a,l]of t.getAttributes())o.schema.checkAttribute("$text",a)&&(!r||o.schema.getAttributeProperties(a).copyFromObject!==!1)&&s.push([a,l]);n.setSelectionAttribute(s)}else n.removeSelectionAttribute(i)})}function cn(o,i){o.change(e=>{e.removeSelectionAttribute(i)})}function dn(o){o.preventDefault()}function $d(o,i){const e=o.getShiftedBy(-1);return Ke(e,i)}function Ke(o,i,e=!1){const{nodeBefore:t,nodeAfter:n}=o;for(const s of i){const r=t?t.getAttribute(s):void 0,a=n?n.getAttribute(s):void 0;if(!(e&&(r===void 0||a===void 0))&&a!==r)return!0}return!1}/**
259
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
260
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
261
+ */function Ns(o,i,e,t){return t.createRange(Kd(o,i,e,!0,t),Kd(o,i,e,!1,t))}function Kd(o,i,e,t,n){let s=o.textNode||(t?o.nodeBefore:o.nodeAfter),r=null;for(;s&&s.getAttribute(i)==e;)r=s,s=t?s.previousSibling:s.nextSibling;return r?n.createPositionAt(r,t?"before":"after"):o}function sT(o,i,e,t){const n=o.editing.view,s=new Set;n.document.registerPostFixer(r=>{const a=o.model.document.selection;let l=!1;if(a.hasAttribute(i)){const c=Ns(a.getFirstPosition(),i,a.getAttribute(i),o.model),d=o.editing.mapper.toViewRange(c);for(const h of d.getItems())h.is("element",e)&&!h.hasClass(t)&&(r.addClass(t,h),s.add(h),l=!0)}return l}),o.conversion.for("editingDowncast").add(r=>{r.on("insert",a,{priority:"highest"}),r.on("remove",a,{priority:"highest"}),r.on("attribute",a,{priority:"highest"}),r.on("selection",a,{priority:"highest"});function a(){n.change(l=>{for(const c of s.values())l.removeClass(t,c),s.delete(c)})}})}/**
262
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
263
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
264
+ */class rT extends y{constructor(e){super(e);u(this,"adapter");u(this,"_debouncedSave");u(this,"_lastDocumentVersion");u(this,"_savePromise");u(this,"_domEmitter");u(this,"_config");u(this,"_pendingActions");u(this,"_makeImmediateSave");u(this,"_action",null);const t=e.config.get("autosave")||{},n=t.waitingTime||1e3;this.set("state","synchronized"),this._debouncedSave=at(this._save.bind(this),n),this._lastDocumentVersion=e.model.document.version,this._savePromise=null,this._domEmitter=new(Se()),this._config=t,this._pendingActions=e.plugins.get(qi),this._makeImmediateSave=!1}static get pluginName(){return"Autosave"}static get isOfficialPlugin(){return!0}static get requires(){return[qi]}init(){const e=this.editor,t=e.model.document;this.listenTo(e,"ready",()=>{this.listenTo(t,"change:data",(n,s)=>{this._saveCallbacks.length&&s.isLocal&&(this.state==="synchronized"&&(this.state="waiting",this._setPendingAction()),this.state==="waiting"&&this._debouncedSave())})}),this.listenTo(e,"destroy",()=>this._flush(),{priority:"highest"});/* istanbul ignore next -- @preserve */this._domEmitter.listenTo(window,"beforeunload",(n,s)=>{this._pendingActions.hasAny&&(s.returnValue=this._pendingActions.first.message)})}destroy(){this._domEmitter.stopListening(),super.destroy()}save(){return this._debouncedSave.cancel(),this._save()}_flush(){this._debouncedSave.flush()}_save(){return this._savePromise?(this._makeImmediateSave=this.editor.model.document.version>this._lastDocumentVersion,this._savePromise):(this._setPendingAction(),this.state="saving",this._lastDocumentVersion=this.editor.model.document.version,this._savePromise=Promise.resolve().then(()=>Promise.all(this._saveCallbacks.map(e=>e(this.editor)))).finally(()=>{this._savePromise=null}).then(()=>{if(this._makeImmediateSave)return this._makeImmediateSave=!1,this._save();this.editor.model.document.version>this._lastDocumentVersion?(this.state="waiting",this._debouncedSave()):(this.state="synchronized",this._pendingActions.remove(this._action),this._action=null)}).catch(e=>{throw this.state="error",this.state="saving",this._debouncedSave(),e}),this._savePromise)}_setPendingAction(){const e=this.editor.t;this._action||(this._action=this._pendingActions.add(e("Saving changes")))}get _saveCallbacks(){const e=[];return this.adapter&&this.adapter.save&&e.push(this.adapter.save),this._config.save&&e.push(this._config.save),e}}/**
265
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
266
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
267
+ */class ul extends B{constructor(e,t){super(e);u(this,"attributeKey");this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,s=t.document.selection,r=e.forceValue===void 0?!this.value:e.forceValue;t.change(a=>{if(s.isCollapsed)r?a.setSelectionAttribute(this.attributeKey,!0):a.removeSelectionAttribute(this.attributeKey);else{const l=t.schema.getValidRanges(s.getRanges(),this.attributeKey);for(const c of l)r?a.setAttribute(this.attributeKey,r,c):a.removeAttribute(this.attributeKey,c)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,n=e.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const s of n.getRanges())for(const r of s.getItems())if(t.checkAttribute(r,this.attributeKey))return r.hasAttribute(this.attributeKey);return!1}}const Ei="bold";class aT extends y{static get pluginName(){return"BoldEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=this.editor.t;i.model.schema.extend("$text",{allowAttributes:Ei}),i.model.schema.setAttributeProperties(Ei,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:Ei,view:"strong",upcastAlso:["b",t=>{const n=t.getStyle("font-weight");return n&&(n=="bold"||Number(n)>=600)?{name:!0,styles:["font-weight"]}:null}]}),i.commands.add(Ei,new ul(i,Ei)),i.keystrokes.set("CTRL+B",Ei),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Bold text"),keystroke:"CTRL+B"}]})}}function hl({editor:o,commandName:i,plugin:e,icon:t,label:n,keystroke:s}){return r=>{const a=o.commands.get(i),l=new r(o.locale);return l.set({label:n,icon:t,keystroke:s,isToggleable:!0}),l.bind("isEnabled").to(a,"isEnabled"),l.bind("isOn").to(a,"value"),l instanceof Ce?l.set({role:"menuitemcheckbox"}):l.set({tooltip:!0}),e.listenTo(l,"execute",()=>{o.execute(i),o.editing.view.focus()}),l}}const vr="bold";class lT extends y{static get pluginName(){return"BoldUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=hl({editor:i,commandName:vr,plugin:this,icon:mg,label:e("Bold"),keystroke:"CTRL+B"});i.ui.componentFactory.add(vr,()=>t(A)),i.ui.componentFactory.add("menuBar:"+vr,()=>t(Ce))}}class cT extends y{static get requires(){return[aT,lT]}static get pluginName(){return"Bold"}static get isOfficialPlugin(){return!0}}const xi="italic";class dT extends y{static get pluginName(){return"ItalicEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=this.editor.t;i.model.schema.extend("$text",{allowAttributes:xi}),i.model.schema.setAttributeProperties(xi,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:xi,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),i.commands.add(xi,new ul(i,xi)),i.keystrokes.set("CTRL+I",xi),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Italic text"),keystroke:"CTRL+I"}]})}}const kr="italic";class uT extends y{static get pluginName(){return"ItalicUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=hl({editor:i,commandName:kr,plugin:this,icon:J0,keystroke:"CTRL+I",label:e("Italic")});i.ui.componentFactory.add(kr,()=>t(A)),i.ui.componentFactory.add("menuBar:"+kr,()=>t(Ce))}}class hT extends y{static get requires(){return[dT,uT]}static get pluginName(){return"Italic"}static get isOfficialPlugin(){return!0}}const un="underline";class mT extends y{static get pluginName(){return"UnderlineEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=this.editor.t;i.model.schema.extend("$text",{allowAttributes:un}),i.model.schema.setAttributeProperties(un,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:un,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),i.commands.add(un,new ul(i,un)),i.keystrokes.set("CTRL+U","underline"),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Underline text"),keystroke:"CTRL+U"}]})}}const yr="underline";class gT extends y{static get pluginName(){return"UnderlineUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=hl({editor:i,commandName:yr,plugin:this,icon:P1,label:e("Underline"),keystroke:"CTRL+U"});i.ui.componentFactory.add(yr,()=>t(A)),i.ui.componentFactory.add("menuBar:"+yr,()=>t(Ce))}}class fT extends y{static get requires(){return[mT,gT]}static get pluginName(){return"Underline"}static get isOfficialPlugin(){return!0}}/**
268
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
269
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
270
+ *//**
271
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
272
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
273
+ */function*lf(o,i){for(const e of i)e&&o.getAttributeProperties(e[0]).copyOnEnter&&(yield e)}class pT extends B{execute(){this.editor.model.change(i=>{this.enterBlock(i),this.fire("afterExecute",{writer:i})})}enterBlock(i){const e=this.editor.model,t=e.document.selection,n=e.schema,s=t.isCollapsed,r=t.getFirstRange(),a=r.start.parent,l=r.end.parent;if(n.isLimit(a)||n.isLimit(l))return!s&&a==l&&e.deleteContent(t),!1;if(s){const c=lf(i.model.schema,t.getAttributes());return Zd(i,r.start),i.setSelectionAttribute(c),!0}else{const c=!(r.start.isAtStart&&r.end.isAtEnd),d=a==l;if(e.deleteContent(t,{leaveUnmerged:c}),c){if(d)return Zd(i,t.focus),!0;i.setSelection(l,0)}}return!1}}function Zd(o,i){o.split(i),o.setSelection(i.parent.nextSibling,0)}const wT={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class cf extends bt{constructor(i){super(i);const e=this.document;let t=!1;e.on("keydown",(n,s)=>{t=s.shiftKey}),e.on("beforeinput",(n,s)=>{if(!this.isEnabled)return;let r=s.inputType;I.isSafari&&t&&r=="insertParagraph"&&(r="insertLineBreak");const a=s.domEvent,l=wT[r];if(!l)return;const c=new ui(e,"enter",s.targetRanges[0]);e.fire(c,new ri(i,a,{isSoft:l.isSoft})),c.stop.called&&n.stop()})}observe(){}stopObserving(){}}class Ds extends y{static get pluginName(){return"Enter"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.editing.view,t=e.document,n=this.editor.t;e.addObserver(cf),i.commands.add("enter",new pT(i)),this.listenTo(t,"enter",(s,r)=>{t.isComposing||r.preventDefault(),!r.isSoft&&(i.execute("enter"),e.scrollToTheSelection())},{priority:"low"}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:n("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class bT extends B{execute(){const i=this.editor.model,e=i.document;i.change(t=>{kT(i,t,e.selection),this.fire("afterExecute",{writer:t})})}refresh(){const i=this.editor.model,e=i.document;this.isEnabled=vT(i.schema,e.selection)}}function vT(o,i){if(i.rangeCount>1)return!1;const e=i.anchor;if(!e||!o.checkChild(e,"softBreak"))return!1;const t=i.getFirstRange(),n=t.start.parent,s=t.end.parent;return!((ea(n,o)||ea(s,o))&&n!==s)}function kT(o,i,e){const t=e.isCollapsed,n=e.getFirstRange(),s=n.start.parent,r=n.end.parent,a=s==r;if(t){const l=lf(o.schema,e.getAttributes());Jd(o,i,n.end),i.removeSelectionAttribute(e.getAttributeKeys()),i.setSelectionAttribute(l)}else{const l=!(n.start.isAtStart&&n.end.isAtEnd);o.deleteContent(e,{leaveUnmerged:l}),a?Jd(o,i,e.focus):l&&i.setSelection(r,0)}}function Jd(o,i,e){const t=i.createElement("softBreak");o.insertContent(t,e),i.setSelection(t,"after")}function ea(o,i){return o.is("rootElement")?!1:i.isLimit(o)||ea(o.parent,i)}class yT extends y{static get pluginName(){return"ShiftEnter"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.model.schema,t=i.conversion,n=i.editing.view,s=n.document,r=this.editor.t;e.register("softBreak",{allowWhere:"$text",isInline:!0}),t.for("upcast").elementToElement({model:"softBreak",view:"br"}),t.for("downcast").elementToElement({model:"softBreak",view:(a,{writer:l})=>l.createEmptyElement("br")}),n.addObserver(cf),i.commands.add("shiftEnter",new bT(i)),this.listenTo(s,"enter",(a,l)=>{s.isComposing||l.preventDefault(),l.isSoft&&(i.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:r("Insert a soft break (a <code>&lt;br&gt;</code> element)"),keystroke:"Shift+Enter"}]})}}/**
274
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
275
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
276
+ */class _T extends B{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(i={}){const e=this.editor.model,t=e.schema,n=e.document.selection,s=Array.from(n.getSelectedBlocks()),r=i.forceValue===void 0?!this.value:i.forceValue;e.change(a=>{if(!r)this._removeQuote(a,s.filter(Co));else{const l=s.filter(c=>Co(c)||Xd(t,c));this._applyQuote(a,l)}})}_getValue(){const i=this.editor.model.document.selection,e=ue(i.getSelectedBlocks());return!!(e&&Co(e))}_checkEnabled(){if(this.value)return!0;const i=this.editor.model.document.selection,e=this.editor.model.schema,t=ue(i.getSelectedBlocks());return t?Xd(e,t):!1}_removeQuote(i,e){Yd(i,e).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd){i.unwrap(t.start.parent);return}if(t.start.isAtStart){const s=i.createPositionBefore(t.start.parent);i.move(t,s);return}t.end.isAtEnd||i.split(t.end);const n=i.createPositionAfter(t.end.parent);i.move(t,n)})}_applyQuote(i,e){const t=[];Yd(i,e).reverse().forEach(n=>{let s=Co(n.start);s||(s=i.createElement("blockQuote"),i.wrap(n,s)),t.push(s)}),t.reverse().reduce((n,s)=>n.nextSibling==s?(i.merge(i.createPositionAfter(n)),n):s)}}function Co(o){return o.parent.name=="blockQuote"?o.parent:null}function Yd(o,i){let e,t=0;const n=[];for(;t<i.length;){const s=i[t],r=i[t+1];e||(e=o.createPositionBefore(s)),(!r||s.nextSibling!=r)&&(n.push(o.createRange(e,o.createPositionAfter(s))),e=null),t++}return n}function Xd(o,i){const e=o.checkChild(i.parent,"blockQuote"),t=o.checkChild(["$root","blockQuote"],i);return e&&t}class CT extends y{static get pluginName(){return"BlockQuoteEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Ds,Qi]}init(){const i=this.editor,e=i.model.schema;i.commands.add("blockQuote",new _T(i)),e.register("blockQuote",{inheritAllFrom:"$container"}),i.conversion.elementToElement({model:"blockQuote",view:"blockquote"}),i.model.document.registerPostFixer(r=>{const a=i.model.document.differ.getChanges();for(const l of a)if(l.type=="insert"){const c=l.position.nodeAfter;if(!c)continue;if(c.is("element","blockQuote")&&c.isEmpty)return r.remove(c),!0;if(c.is("element","blockQuote")&&!e.checkChild(l.position,c))return r.unwrap(c),!0;if(c.is("element")){const d=r.createRangeIn(c);for(const h of d.getItems())if(h.is("element","blockQuote")&&!e.checkChild(r.createPositionBefore(h),h))return r.unwrap(h),!0}}else if(l.type=="remove"){const c=l.position.parent;if(c.is("element","blockQuote")&&c.isEmpty)return r.remove(c),!0}return!1});const t=this.editor.editing.view.document,n=i.model.document.selection,s=i.commands.get("blockQuote");this.listenTo(t,"enter",(r,a)=>{if(!n.isCollapsed||!s.value)return;n.getLastPosition().parent.isEmpty&&(i.execute("blockQuote"),i.editing.view.scrollToTheSelection(),a.preventDefault(),r.stop())},{context:"blockquote"}),this.listenTo(t,"delete",(r,a)=>{if(a.direction!="backward"||!n.isCollapsed||!s.value)return;const l=n.getLastPosition().parent;l.isEmpty&&!l.previousSibling&&(i.execute("blockQuote"),i.editing.view.scrollToTheSelection(),a.preventDefault(),r.stop())},{context:"blockquote"})}}class LT extends y{static get pluginName(){return"BlockQuoteUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("blockQuote",()=>{const e=this._createButton(A);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:blockQuote",()=>{const e=this._createButton(Ce);return e.set({role:"menuitemcheckbox"}),e})}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("blockQuote"),s=new i(e.locale),r=t.t;return s.set({label:r("Block quote"),icon:b1,isToggleable:!0}),s.bind("isEnabled").to(n,"isEnabled"),s.bind("isOn").to(n,"value"),this.listenTo(s,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),s}}class TT extends y{static get requires(){return[CT,LT]}static get pluginName(){return"BlockQuote"}static get isOfficialPlugin(){return!0}}/**
277
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
278
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
279
+ */class ET extends G(){constructor(){super(...arguments);u(this,"_stack",[])}add(e,t){const n=this._stack,s=n[0];this._insertDescriptor(e);const r=n[0];s!==r&&!_r(s,r)&&this.fire("change:top",{oldDescriptor:s,newDescriptor:r,writer:t})}remove(e,t){const n=this._stack,s=n[0];this._removeDescriptor(e);const r=n[0];s!==r&&!_r(s,r)&&this.fire("change:top",{oldDescriptor:s,newDescriptor:r,writer:t})}_insertDescriptor(e){const t=this._stack,n=t.findIndex(r=>r.id===e.id);if(_r(e,t[n]))return;n>-1&&t.splice(n,1);let s=0;for(;t[s]&&xT(t[s],e);)s++;t.splice(s,0,e)}_removeDescriptor(e){const t=this._stack,n=t.findIndex(s=>s.id===e);n>-1&&t.splice(n,1)}}function _r(o,i){return o&&i&&o.priority==i.priority&&hs(o.classes)==hs(i.classes)}function xT(o,i){return o.priority>i.priority?!0:o.priority<i.priority?!1:hs(o.classes)>hs(i.classes)}function hs(o){return Array.isArray(o)?o.sort().join(","):o}const ST="ck-widget",Qd="ck-widget_selected";function le(o){return o.is("element")?!!o.getCustomProperty("widget"):!1}function ml(o,i,e={}){if(!o.is("containerElement"))throw new w("widget-to-widget-wrong-element-type",null,{element:o});return i.setAttribute("contenteditable","false",o),i.addClass(ST,o),i.setCustomProperty("widget",!0,o),o.getFillerOffset=MT,i.setCustomProperty("widgetLabel",[],o),e.label&&PT(o,e.label),e.hasSelectionHandle&&BT(o,i),df(o,i),o}function AT(o,i,e){if(i.classes&&e.addClass(Y(i.classes),o),i.attributes)for(const t in i.attributes)e.setAttribute(t,i.attributes[t],o)}function IT(o,i,e){if(i.classes&&e.removeClass(Y(i.classes),o),i.attributes)for(const t in i.attributes)e.removeAttribute(t,o)}function df(o,i,e=AT,t=IT){const n=new ET;n.on("change:top",(a,l)=>{l.oldDescriptor&&t(o,l.oldDescriptor,l.writer),l.newDescriptor&&e(o,l.newDescriptor,l.writer)});const s=(a,l,c)=>n.add(l,c),r=(a,l,c)=>n.remove(l,c);i.setCustomProperty("addHighlight",s,o),i.setCustomProperty("removeHighlight",r,o)}function PT(o,i){o.getCustomProperty("widgetLabel").push(i)}function RT(o){return o.getCustomProperty("widgetLabel").reduce((e,t)=>typeof t=="function"?e?e+". "+t():t():e?e+". "+t:t,"")}function gl(o,i,e={}){return i.addClass(["ck-editor__editable","ck-editor__nested-editable"],o),e.withAriaRole!==!1&&i.setAttribute("role","textbox",o),i.setAttribute("tabindex","-1",o),e.label&&i.setAttribute("aria-label",e.label,o),i.setAttribute("contenteditable",o.isReadOnly?"false":"true",o),o.on("change:isReadOnly",(t,n,s)=>{i.setAttribute("contenteditable",s?"false":"true",o)}),o.on("change:isFocused",(t,n,s)=>{s?i.addClass("ck-editor__nested-editable_focused",o):i.removeClass("ck-editor__nested-editable_focused",o)}),df(o,i),o}function uf(o,i){const e=o.getSelectedElement();if(e){const t=Nt(o);if(t)return i.createRange(i.createPositionAt(e,t))}return i.schema.findOptimalInsertionRange(o)}function MT(){return null}function BT(o,i){const e=i.createUIElement("div",{class:"ck ck-widget__selection-handle"},function(t){const n=this.toDomElement(t),s=new wt;return s.set("content",H0),s.render(),n.appendChild(s.element),n});i.insert(i.createPositionAt(o,0),e),i.addClass(["ck-widget_with-selection-handle"],o)}function fl(o){const i=a=>{const{width:l,paddingLeft:c,paddingRight:d}=a.ownerDocument.defaultView.getComputedStyle(a);return parseFloat(l)-(parseFloat(c)||0)-(parseFloat(d)||0)},e=o.parentElement;if(!e)return 0;let t=i(e);const n=5;let s=0,r=e;for(;isNaN(t);){if(r=r.parentElement,++s>n)return 0;t=i(r)}return t}function VT(o,i=new R(o)){const e=fl(o);return e?i.width/e*100:0}const _t="widget-type-around";function ei(o,i,e){return!!o&&le(o)&&!e.isInline(i)}function zT(o){return o.closest(".ck-widget__type-around__button")}function NT(o){return o.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function DT(o,i){const e=o.closest(".ck-widget");return i.mapDomToView(e)}function Nt(o){return o.getAttribute(_t)}const hf=["before","after"],OT=new DOMParser().parseFromString(v1,"image/svg+xml").firstChild,eu="ck-widget__type-around_disabled";class FT extends y{constructor(){super(...arguments);u(this,"_currentFakeCaretModelElement",null)}static get pluginName(){return"WidgetTypeAround"}static get isOfficialPlugin(){return!0}static get requires(){return[Ds,Qi]}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(n,s,r)=>{t.change(a=>{for(const l of t.document.roots)r?a.removeClass(eu,l):a.addClass(eu,l)}),r||e.model.change(a=>{a.removeSelectionAttribute(_t)})}),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const n=this.editor,s=n.editing.view,r=n.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(e,t),attributes:r}),s.focus(),s.scrollToTheSelection()}_listenToIfEnabled(e,t,n,s){this.listenTo(e,t,(...r)=>{this.isEnabled&&n(...r)},s)}_insertParagraphAccordingToFakeCaretPosition(){const n=this.editor.model.document.selection,s=Nt(n);if(!s)return!1;const r=n.getSelectedElement();return this._insertParagraph(r,s),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,n=e.locale.t,s={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(r,a,l)=>{const c=l.mapper.toViewElement(a.item);c&&ei(c,a.item,t)&&(UT(l.writer,s,c),c.getCustomProperty("widgetLabel").push(()=>this.isEnabled?n("Press Enter to type after or press Shift + Enter to type before the widget"):""))},{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,n=t.document.selection,s=t.schema,r=e.editing.view;this._listenToIfEnabled(r.document,"arrowKey",(l,c)=>{this._handleArrowKeyPress(l,c)},{context:[le,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",(l,c)=>{c.directChange&&e.model.change(d=>{d.removeSelectionAttribute(_t)})}),this._listenToIfEnabled(t.document,"change:data",()=>{const l=n.getSelectedElement();if(l){const c=e.editing.mapper.toViewElement(l);if(ei(c,l,s))return}e.model.change(c=>{c.removeSelectionAttribute(_t)})}),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",(l,c,d)=>{const h=d.writer;if(this._currentFakeCaretModelElement){const p=d.mapper.toViewElement(this._currentFakeCaretModelElement);p&&(h.removeClass(hf.map(a),p),this._currentFakeCaretModelElement=null)}const m=c.selection.getSelectedElement();if(!m)return;const g=d.mapper.toViewElement(m);if(!ei(g,m,s))return;const f=Nt(c.selection);f&&(h.addClass(a(f),g),this._currentFakeCaretModelElement=m)}),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",(l,c,d)=>{d||e.model.change(h=>{h.removeSelectionAttribute(_t)})});function a(l){return`ck-widget_type-around_show-fake-caret_${l}`}}_handleArrowKeyPress(e,t){const n=this.editor,s=n.model,r=s.document.selection,a=s.schema,l=n.editing.view,c=t.keyCode,d=Hb(c,n.locale.contentLanguageDirection),h=l.document.selection.getSelectedElement(),m=n.editing.mapper.toModelElement(h);let g;ei(h,m,a)?g=this._handleArrowKeyPressOnSelectedWidget(d):r.isCollapsed?g=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(g=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),g&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const n=this.editor.model,s=n.document.selection,r=Nt(s);return n.change(a=>{if(r){if(!(r===(e?"after":"before")))return a.removeSelectionAttribute(_t),!0}else return a.setSelectionAttribute(_t,e?"after":"before"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,n=t.model,s=n.schema,r=t.plugins.get("Widget"),a=r._getObjectElementNextToSelection(e),l=t.editing.mapper.toViewElement(a);return ei(l,a,s)?(n.change(c=>{r._setSelectionOverElement(a),c.setSelectionAttribute(_t,e?"before":"after")}),!0):!1}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,n=t.model,s=n.schema,r=t.editing.mapper,a=n.document.selection,l=e?a.getLastPosition().nodeBefore:a.getFirstPosition().nodeAfter,c=r.toViewElement(l);return ei(c,l,s)?(n.change(d=>{d.setSelection(l,"on"),d.setSelectionAttribute(_t,e?"after":"before")}),!0):!1}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(n,s)=>{const r=zT(s.domTarget);if(!r)return;const a=NT(r),l=DT(r,t.domConverter),c=e.editing.mapper.toModelElement(l);this._insertParagraph(c,a),s.preventDefault(),n.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,n=e.editing.view;this._listenToIfEnabled(n.document,"enter",(s,r)=>{if(s.eventPhase!="atTarget")return;const a=t.getSelectedElement(),l=e.editing.mapper.toViewElement(a),c=e.model.schema;let d;this._insertParagraphAccordingToFakeCaretPosition()?d=!0:ei(l,a,c)&&(this._insertParagraph(a,r.isSoft?"before":"after"),d=!0),d&&(r.preventDefault(),s.stop())},{context:le})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",(n,s)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(s.selection=t.selection)},{priority:"high"}),I.isAndroid?this._listenToIfEnabled(t,"keydown",(n,s)=>{s.keyCode==229&&this._insertParagraphAccordingToFakeCaretPosition()}):this._listenToIfEnabled(t,"compositionstart",()=>{this._insertParagraphAccordingToFakeCaretPosition()},{priority:"highest"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,n=e.model,s=n.schema;this._listenToIfEnabled(t.document,"delete",(r,a)=>{if(r.eventPhase!="atTarget")return;const l=Nt(n.document.selection);if(!l)return;const c=a.direction,d=n.document.selection.getSelectedElement(),h=l==="before",m=c=="forward";if(h===m)e.execute("delete",{selection:n.createSelection(d,"on")});else{const f=s.getNearestSelectionRange(n.createPositionAt(d,l),c);if(f)if(!f.isCollapsed)n.change(p=>{p.setSelection(f),e.execute(m?"deleteForward":"delete")});else{const p=n.createSelection(f.start);if(n.modifySelection(p,{direction:c}),!p.focus.isEqual(f.start))n.change(b=>{b.setSelection(f),e.execute(m?"deleteForward":"delete")});else{const b=qT(s,f.start.parent);n.deleteContent(n.createSelection(b,"on"),{doNotAutoparagraph:!0})}}}a.preventDefault(),r.stop()},{context:le})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,n=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(s,[r,a])=>{if(a&&!a.is("documentSelection"))return;const l=Nt(n);if(l)return s.stop(),t.change(c=>{const d=n.getSelectedElement(),h=t.createPositionAt(d,l),m=c.createSelection(h),g=t.insertContent(r,m);return c.setSelection(m),g})},{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,n=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",(s,r)=>{const[,a,l={}]=r;if(a&&!a.is("documentSelection"))return;const c=Nt(n);c&&(l.findOptimalPosition=c,r[3]=l)},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,n=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(s,[r])=>{if(r&&!r.is("documentSelection"))return;Nt(n)&&s.stop()},{priority:"high"})}}function UT(o,i,e){const t=o.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},function(n){const s=this.toDomElement(n);return HT(s,i),WT(s),s});o.insert(o.createPositionAt(e,"end"),t)}function HT(o,i){for(const e of hf){const t=new He({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${e}`],title:i[e],"aria-hidden":"true"},children:[o.ownerDocument.importNode(OT,!0)]});o.appendChild(t.render())}}function WT(o){const i=new He({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});o.appendChild(i.render())}function qT(o,i){let e=i;for(const t of i.getAncestors({parentFirst:!0})){if(t.childCount>1||o.isLimit(t))break;e=t}return e}function jT(o){const i=o.model;return(e,t)=>{const n=t.keyCode==z.arrowup,s=t.keyCode==z.arrowdown,r=t.shiftKey,a=i.document.selection;if(!n&&!s)return;const l=s;if(r&&KT(a,l))return;const c=GT(o,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(r)return}(c.isCollapsed||$T(o,c,l))&&(i.change(d=>{const h=l?c.end:c.start;if(r){const m=i.createSelection(a.anchor);m.setFocus(h),d.setSelection(m)}else d.setSelection(h)}),e.stop(),t.preventDefault(),t.stopPropagation())}}}function GT(o,i,e){const t=o.model;if(e){const n=i.isCollapsed?i.focus:i.getLastPosition(),s=tu(t,n,"forward");if(!s)return null;const r=t.createRange(n,s),a=iu(t.schema,r,"backward");return a?t.createRange(n,a):null}else{const n=i.isCollapsed?i.focus:i.getFirstPosition(),s=tu(t,n,"backward");if(!s)return null;const r=t.createRange(s,n),a=iu(t.schema,r,"forward");return a?t.createRange(a,n):null}}function tu(o,i,e){const t=o.schema,n=o.createRangeIn(i.root),s=e=="forward"?"elementStart":"elementEnd";for(const{previousPosition:r,item:a,type:l}of n.getWalker({startPosition:i,direction:e})){if(t.isLimit(a)&&!t.isInline(a))return r;if(l==s&&t.isBlock(a))return null}return null}function iu(o,i,e){const t=e=="backward"?i.end:i.start;if(o.checkChild(t,"$text"))return t;for(const{nextPosition:n}of i.getWalker({direction:e}))if(o.checkChild(n,"$text"))return n;return null}function $T(o,i,e){const t=o.model,n=o.view.domConverter;if(e){const c=t.createSelection(i.start);t.modifySelection(c),!c.focus.isAtEnd&&!i.start.isEqual(c.focus)&&(i=t.createRange(c.focus,i.end))}const s=o.mapper.toViewRange(i),r=n.viewRangeToDom(s),a=R.getDomRangeRects(r);let l;for(const c of a){if(l===void 0){l=Math.round(c.bottom);continue}if(Math.round(c.top)>=l)return!1;l=Math.max(l,Math.round(c.bottom))}return!0}function KT(o,i){return!o.isCollapsed&&o.isBackward==i}class to extends y{constructor(){super(...arguments);u(this,"_previouslySelected",new Set)}static get pluginName(){return"Widget"}static get isOfficialPlugin(){return!0}static get requires(){return[FT,Qi]}init(){const e=this.editor,t=e.editing.view,n=t.document,s=e.t;this.editor.editing.downcastDispatcher.on("selection",(r,a,l)=>{const c=l.writer,d=a.selection;if(d.isCollapsed)return;const h=d.getSelectedElement();if(!h)return;const m=e.editing.mapper.toViewElement(h);le(m)&&l.consumable.consume(d,"selection")&&c.setSelection(c.createRangeOn(m),{fake:!0,label:RT(m)})}),this.editor.editing.downcastDispatcher.on("selection",(r,a,l)=>{this._clearPreviouslySelectedWidgets(l.writer);const c=l.writer,d=c.document.selection;let h=null;for(const m of d.getRanges())for(const g of m){const f=g.item;le(f)&&!YT(f,h)&&(c.addClass(Qd,f),this._previouslySelected.add(f),h=f)}},{priority:"low"}),t.addObserver(Rs),this.listenTo(n,"mousedown",(...r)=>this._onMousedown(...r)),this.listenTo(n,"arrowKey",(...r)=>{this._handleSelectionChangeOnArrowKeyPress(...r)},{context:[le,"$text"]}),this.listenTo(n,"arrowKey",(...r)=>{this._preventDefaultOnArrowKeyPress(...r)},{context:"$root"}),this.listenTo(n,"arrowKey",jT(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",(r,a)=>{this._handleDelete(a.direction=="forward")&&(a.preventDefault(),r.stop())},{context:"$root"}),this.listenTo(n,"tab",(r,a)=>{r.eventPhase=="atTarget"&&(a.shiftKey||this._selectFirstNestedEditable()&&(a.preventDefault(),r.stop()))},{context:le,priority:"low"}),this.listenTo(n,"tab",(r,a)=>{a.shiftKey&&this._selectAncestorWidget()&&(a.preventDefault(),r.stop())},{priority:"low"}),this.listenTo(n,"keydown",(r,a)=>{a.keystroke==z.esc&&this._selectAncestorWidget()&&(a.preventDefault(),r.stop())},{priority:"low"}),e.accessibility.addKeystrokeInfoGroup({id:"widget",label:s("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:s("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:s("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:s("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:s("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:s("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(e,t){const n=this.editor,s=n.editing.view,r=s.document;let a=t.target;if(!a)return;if(t.domEvent.detail>=3){this._selectBlockContent(a)&&t.preventDefault();return}if(!le(a)){const c=ZT(a);if(!c)return;if(le(c))a=c;else{const d=JT(s,t);if(d&&le(d))a=d;else return}}I.isAndroid&&t.preventDefault(),r.isFocused||s.focus();const l=n.editing.mapper.toModelElement(a);this._setSelectionOverElement(l)}_selectBlockContent(e){const t=this.editor,n=t.model,s=t.editing.mapper,r=n.schema,a=s.findMappedViewAncestor(this.editor.editing.view.createPositionAt(e,0)),l=XT(s.toModelElement(a),n.schema);return l?(n.change(c=>{const d=r.isLimit(l)?null:QT(c.createPositionAfter(l),r),h=c.createPositionAt(l,0),m=d?c.createPositionAt(d,0):c.createPositionAt(l,"end");c.setSelection(c.createRange(h,m))}),!0):!1}_handleSelectionChangeOnArrowKeyPress(e,t){const n=t.keyCode,s=this.editor.model,r=s.schema,a=s.document.selection,l=a.getSelectedElement(),c=Ma(n,this.editor.locale.contentLanguageDirection),d=c=="down"||c=="right",h=c=="up"||c=="down";if(l&&r.isObject(l)){const g=d?a.getLastPosition():a.getFirstPosition(),f=r.getNearestSelectionRange(g,d?"forward":"backward");f&&(s.change(p=>{p.setSelection(f)}),t.preventDefault(),e.stop());return}if(!a.isCollapsed&&!t.shiftKey){const g=a.getFirstPosition(),f=a.getLastPosition(),p=g.nodeAfter,b=f.nodeBefore;(p&&r.isObject(p)||b&&r.isObject(b))&&(s.change(k=>{k.setSelection(d?f:g)}),t.preventDefault(),e.stop());return}if(!a.isCollapsed)return;const m=this._getObjectElementNextToSelection(d);if(m&&r.isObject(m)){if(r.isInline(m)&&h)return;this._setSelectionOverElement(m),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const n=this.editor.model,s=n.schema,r=n.document.selection.getSelectedElement();r&&s.isObject(r)&&(t.preventDefault(),e.stop())}_handleDelete(e){const n=this.editor.model.document.selection;if(!this.editor.model.canEditAt(n)||!n.isCollapsed)return;const s=this._getObjectElementNextToSelection(e);if(s)return this.editor.model.change(r=>{let a=n.anchor.parent;for(;a.isEmpty;){const l=a;a=l.parent,r.remove(l)}this._setSelectionOverElement(s)}),!0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,n=t.schema,s=t.document.selection,r=t.createSelection(s);if(t.modifySelection(r,{direction:e?"forward":"backward"}),r.isEqual(s))return null;const a=e?r.focus.nodeBefore:r.focus.nodeAfter;return a&&n.isObject(a)?a:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(Qd,t);this._previouslySelected.clear()}_selectFirstNestedEditable(){const e=this.editor,n=this.editor.editing.view.document;for(const s of n.selection.getFirstRange().getItems())if(s.is("editableElement")){const r=e.editing.mapper.toModelElement(s);/* istanbul ignore next -- @preserve */if(!r)continue;const a=e.model.createPositionAt(r,0),l=e.model.schema.getNearestSelectionRange(a,"forward");return e.model.change(c=>{c.setSelection(l)}),!0}return!1}_selectAncestorWidget(){const e=this.editor,t=e.editing.mapper,s=e.editing.view.document.selection.getFirstPosition().parent,a=(s.is("$text")?s.parent:s).findAncestor(le);if(!a)return!1;const l=t.toModelElement(a);/* istanbul ignore next -- @preserve */return l?(e.model.change(c=>{c.setSelection(l,"on")}),!0):!1}}function ZT(o){let i=o;for(;i;){if(i.is("editableElement")||le(i))return i;i=i.parent}return null}function JT(o,i){const e=nm(i.domEvent);let t=null;if(e?t=o.domConverter.domRangeToView(e):t=o.createRange(o.createPositionAt(i.target,0)),!t)return null;const n=t.start;if(!n.parent)return null;let s=n.parent;return n.parent.is("editableElement")&&(n.isAtEnd&&n.nodeBefore?s=n.nodeBefore:n.isAtStart&&n.nodeAfter&&(s=n.nodeAfter)),s.is("$text")?s.parent:s}function YT(o,i){return i?Array.from(o.getAncestors()).includes(i):!1}function XT(o,i){for(const e of o.getAncestors({includeSelf:!0,parentFirst:!0})){if(i.checkChild(e,"$text"))return e;if(i.isLimit(e)&&!i.isObject(e))break}return null}function QT(o,i){const e=new Lt({startPosition:o});for(const{item:t}of e){if(i.isLimit(t)||!t.is("element"))return null;if(i.checkChild(t,"$text"))return t}return null}class ms extends y{constructor(){super(...arguments);u(this,"_toolbarDefinitions",new Map);u(this,"_balloon")}static get requires(){return[Pt]}static get pluginName(){return"WidgetToolbarRepository"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",n=>{eE(e.editing.view.document.selection)&&n.stop()},{priority:"high"})}this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui,"update",()=>{this._updateToolbarsVisibility()}),this.listenTo(e.ui.focusTracker,"change:isFocused",()=>{this._updateToolbarsVisibility()},{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:n,getRelatedElement:s,balloonClassName:r="ck-toolbar-container",positions:a}){if(!n.length){F("widget-toolbar-no-items",{toolbarId:e});return}const l=this.editor,c=l.t,d=new ai(l.locale);if(d.ariaLabel=t||c("Widget toolbar"),this._toolbarDefinitions.has(e))throw new w("widget-toolbar-duplicated",this,{toolbarId:e});const h={view:d,getRelatedElement:s,balloonClassName:r,itemsConfig:n,positions:a,initialized:!1};l.ui.addToolbar(d,{isContextual:!0,beforeFocus:()=>{const m=s(l.editing.view.document.selection);m&&this._showToolbar(h,m)},afterBlur:()=>{this._hideToolbar(h)}}),this._toolbarDefinitions.set(e,h)}_updateToolbarsVisibility(){let e=0,t=null,n=null;for(const s of this._toolbarDefinitions.values()){const r=s.getRelatedElement(this.editor.editing.view.document.selection);if(!this.isEnabled||!r)this._isToolbarInBalloon(s)&&this._hideToolbar(s);else if(!this.editor.ui.focusTracker.isFocused)this._isToolbarVisible(s)&&this._hideToolbar(s);else{const a=r.getAncestors().length;a>e&&(e=a,t=r,n=s)}}n&&this._showToolbar(n,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?nu(this.editor,t,e.positions):this._isToolbarInBalloon(e)||(e.initialized||(e.initialized=!0,e.view.fillFromConfig(e.itemsConfig,this.editor.ui.componentFactory)),this._balloon.add({view:e.view,position:mf(this.editor,t,e.positions),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",()=>{for(const n of this._toolbarDefinitions.values())if(this._isToolbarVisible(n)){const s=n.getRelatedElement(this.editor.editing.view.document.selection);nu(this.editor,s,e.positions)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function nu(o,i,e){const t=o.plugins.get("ContextualBalloon"),n=mf(o,i,e);t.updatePosition(n)}function mf(o,i,e){const t=o.editing.view,n=Ie.defaultPositions;return{target:t.domConverter.mapViewToDom(i),positions:e||[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}function eE(o){const i=o.getSelectedElement();return!!(i&&le(i))}class tE extends j(){constructor(e){super();u(this,"_referenceCoordinates");u(this,"_options");u(this,"_originalWidth");u(this,"_originalHeight");u(this,"_originalWidthPercents");u(this,"_aspectRatio");this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(e,t,n){const s=new R(t);this.activeHandlePosition=oE(e),this._referenceCoordinates=iE(t,sE(this.activeHandlePosition)),this._originalWidth=s.width,this._originalHeight=s.height,this._aspectRatio=s.width/s.height;const r=n.style.width;r&&r.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(r):this._originalWidthPercents=VT(n,s)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function iE(o,i){const e=new R(o),t=i.split("-"),n={x:t[1]=="right"?e.right:e.left,y:t[0]=="bottom"?e.bottom:e.top};return n.x+=o.ownerDocument.defaultView.scrollX,n.y+=o.ownerDocument.defaultView.scrollY,n}function nE(o){return`ck-widget__resizer__handle-${o}`}function oE(o){const i=["top-left","top-right","bottom-right","bottom-left"];for(const e of i)if(o.classList.contains(nE(e)))return e}function sE(o){const i=o.split("-"),e={top:"bottom",bottom:"top",left:"right",right:"left"};return`${e[i[0]]}-${e[i[1]]}`}class rE extends E{constructor(){super();const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",i.to("_viewPosition",e=>e?`ck-orientation-${e}`:"")],style:{display:i.if("_isVisible","none",e=>!e)}},children:[{text:i.to("_label")}]})}_bindToState(i,e){this.bind("_isVisible").to(e,"proposedWidth",e,"proposedHeight",(t,n)=>t!==null&&n!==null),this.bind("_label").to(e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",e,"proposedWidthPercents",(t,n,s)=>i.unit==="px"?`${t}×${n}`:`${s}%`),this.bind("_viewPosition").to(e,"activeHandlePosition",e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",(t,n,s)=>n<50||s<50?"above-center":t)}_dismiss(){this.unbind(),this._isVisible=!1}}class ou extends j(){constructor(e){super();u(this,"_state");u(this,"_sizeView");u(this,"_options");u(this,"_viewResizerWrapper",null);u(this,"_initialViewWidth");this._options=e,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",(t,n)=>t&&n),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",t=>{!this.state.proposedWidth&&!this.state.proposedWidthPercents&&(this._cleanup(),t.stop())},{priority:"high"})}get state(){return this._state}show(){this._options.editor.editing.view.change(t=>{t.removeClass("ck-hidden",this._viewResizerWrapper)})}hide(){this._options.editor.editing.view.change(t=>{t.addClass("ck-hidden",this._viewResizerWrapper)})}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change(s=>{const r=s.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},function(a){const l=this.toDomElement(a);return e._appendHandles(l),e._appendSizeUI(l),l});s.insert(s.createPositionAt(t,"end"),r),s.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=r,this.isVisible||this.hide()}),this.on("change:isVisible",()=>{this.isVisible?(this.show(),this.redraw()):this.hide()})}begin(e){this._state=new tE(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change(d=>{const h=this._options.unit||"%",m=(h==="%"?t.widthPercents:t.width)+h;d.setStyle("width",m,this._options.viewElement)});const s=this._getHandleHost(),r=new R(s),a=Math.round(r.width),l=Math.round(r.height),c=new R(s);t.width=Math.round(c.width),t.height=Math.round(c.height),this.redraw(r),this.state.update({...t,handleHostWidth:a,handleHostHeight:l})}commit(){const e=this._options.unit||"%",t=(e==="%"?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change(()=>{this._cleanup(),this._options.onCommit(t)})}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!cE(t))return;const n=t.parentElement,s=this._getHandleHost(),r=this._viewResizerWrapper,a=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let l;if(n.isSameNode(s)){const c=e||new R(s);l=[c.width+"px",c.height+"px",void 0,void 0]}else l=[s.offsetWidth+"px",s.offsetHeight+"px",s.offsetLeft+"px",s.offsetTop+"px"];Ee(a,l)!=="same"&&this._options.editor.editing.view.change(c=>{c.setStyle({width:l[0],height:l[1],left:l[2],top:l[3]},r)})}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss(),this._options.editor.editing.view.change(t=>{t.setStyle("width",this._initialViewWidth,this._options.viewElement)})}_proposeNewSize(e){const t=this.state,n=lE(e),s=this._options.isCentered?this._options.isCentered(this):!0,r={x:t._referenceCoordinates.x-(n.x+t.originalWidth),y:n.y-t.originalHeight-t._referenceCoordinates.y};s&&t.activeHandlePosition.endsWith("-right")&&(r.x=n.x-(t._referenceCoordinates.x+t.originalWidth)),s&&(r.x*=2);let a=Math.abs(t.originalWidth+r.x),l=Math.abs(t.originalHeight+r.y);return(a/t.aspectRatio>l?"width":"height")=="width"?l=a/t.aspectRatio:a=l*t.aspectRatio,{width:Math.round(a),height:Math.round(l),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const n of t)e.appendChild(new He({tag:"div",attributes:{class:`ck-widget__resizer__handle ${aE(n)}`}}).render())}_appendSizeUI(e){this._sizeView=new rE,this._sizeView.render(),e.appendChild(this._sizeView.element)}}function aE(o){return`ck-widget__resizer__handle-${o}`}function lE(o){return{x:o.pageX,y:o.pageY}}function cE(o){return o&&o.ownerDocument&&o.ownerDocument.contains(o)}class Cr extends y{constructor(){super(...arguments);u(this,"_resizers",new Map);u(this,"_observer");u(this,"_redrawSelectedResizerThrottled")}static get pluginName(){return"WidgetResize"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.editing,t=T.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),e.view.addObserver(Rs),this._observer=new(Se()),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this)),this._redrawSelectedResizerThrottled=Hi(()=>this.redrawSelectedResizer(),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),this.editor.model.document.on("change",()=>{for(const[s,r]of this._resizers)s.isAttached()||(this._resizers.delete(s),r.destroy())},{priority:"lowest"}),this._observer.listenTo(T.window,"resize",this._redrawSelectedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",()=>{const s=n.getSelectedElement(),r=this.getResizerByViewElement(s)||null;r?this.select(r):this.deselect()})}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawSelectedResizerThrottled.cancel()}select(e){this.deselect(),this.selectedResizer=e,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(e){const t=new ou(e),n=this.editor.plugins;if(t.attach(),n.has("WidgetToolbarRepository")){const a=n.get("WidgetToolbarRepository");t.on("begin",()=>{a.forceDisabled("resize")},{priority:"lowest"}),t.on("cancel",()=>{a.clearForceDisabled("resize")},{priority:"highest"}),t.on("commit",()=>{a.clearForceDisabled("resize")},{priority:"highest"})}this._resizers.set(e.viewElement,t);const r=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(r)==t&&this.select(t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const n=t.domTarget;ou.isResizeHandle(n)&&(this._activeResizer=this._getResizerByHandle(n)||null,this._activeResizer&&(this._activeResizer.begin(n),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}/**
280
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
281
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
282
+ */class jn extends Rt{constructor(e){super(e);u(this,"domEventType",["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"]);const t=this.document;this.listenTo(t,"paste",n("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",n("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",n("dragging"),{priority:"low"});function n(s){return(r,a)=>{a.preventDefault();const l=a.dropRange?[a.dropRange]:null,c=new xt(t,s);t.fire(c,{dataTransfer:a.dataTransfer,method:r.name,targetRanges:l,target:a.target,domEvent:a.domEvent}),c.stop.called&&a.stopPropagation()}}}onDomEvent(e){const t="clipboardData"in e?e.clipboardData:e.dataTransfer,n=e.type=="drop"||e.type=="paste",s={dataTransfer:new Em(t,{cacheFiles:n})};if(e.type=="drop"||e.type=="dragover"){const r=nm(e);s.dropRange=r&&this.view.domConverter.domRangeToView(r)}this.fire(e.type,e,s)}}/**
283
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
284
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
285
+ */function dE(o){return o=o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").replace(/^\s/,"&nbsp;").replace(/\s$/,"&nbsp;").replace(/\s\s/g," &nbsp;"),(o.includes("</p><p>")||o.includes("<br>"))&&(o=`<p>${o}</p>`),o}/**
286
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
287
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
288
+ */function uE(o){return o.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,(i,e)=>e.length==1?" ":e).replace(/<!--[\s\S]*?-->/g,"")}/**
289
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
290
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
291
+ */const su=["figcaption","li"],ru=["ol","ul"];function gf(o,i){if(i.is("$text")||i.is("$textProxy"))return i.data;if(i.is("element","img")&&i.hasAttribute("alt"))return i.getAttribute("alt");if(i.is("element","br"))return`
292
+ `;let e="",t=null;for(const n of i.getChildren())e+=hE(n,t)+gf(o,n),t=n;if(i.is("rawElement")){const s=document.implementation.createHTMLDocument("").createElement("div");i.render(s,o),e+=ff(s)}return e}function ff(o){let i="";if(o.nodeType===Node.TEXT_NODE)return o.textContent;if(o.tagName==="BR")return`
293
+ `;for(const e of o.childNodes)i+=ff(e);return i}function hE(o,i){return i?o.is("element","li")&&!o.isEmpty&&o.getChild(0).is("containerElement")||ru.includes(o.name)&&ru.includes(i.name)?`
294
+
295
+ `:!o.is("containerElement")&&!i.is("containerElement")?"":su.includes(o.name)||su.includes(i.name)?`
296
+ `:o.is("element")&&o.getCustomProperty("dataPipeline:transparentRendering")||i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering")?"":`
297
+
298
+ `:""}class xn extends y{constructor(){super(...arguments);u(this,"_markersToCopy",new Map)}static get pluginName(){return"ClipboardMarkersUtils"}static get isOfficialPlugin(){return!0}_registerMarkerToCopy(e,t){this._markersToCopy.set(e,t)}_copySelectedFragmentWithMarkers(e,t,n=s=>s.model.getSelectedContent(s.model.document.selection)){return this.editor.model.change(s=>{const r=s.model.document.selection;s.setSelection(t);const a=this._insertFakeMarkersIntoSelection(s,s.model.document.selection,e),l=n(s),c=this._removeFakeMarkersInsideElement(s,l);for(const[d,h]of Object.entries(a)){c[d]||(c[d]=s.createRangeIn(l));for(const m of h)s.remove(m)}l.markers.clear();for(const[d,h]of Object.entries(c))l.markers.set(d,h);return s.setSelection(r),l})}_pasteMarkersIntoTransformedElement(e,t){const n=this._getPasteMarkersFromRangeMap(e);return this.editor.model.change(s=>{const r=this._insertFakeMarkersElements(s,n),a=t(s),l=this._removeFakeMarkersInsideElement(s,a);for(const c of Object.values(r).flat())s.remove(c);for(const[c,d]of Object.entries(l))s.model.markers.has(c)||s.addMarker(c,{usingOperation:!0,affectsData:!0,range:d});return a})}_pasteFragmentWithMarkers(e){const t=this._getPasteMarkersFromRangeMap(e.markers);e.markers.clear();for(const n of t)e.markers.set(n.name,n.range);return this.editor.model.insertContent(e)}_forceMarkersCopy(e,t,n={allowedActions:"all",copyPartiallySelected:!0,duplicateOnPaste:!0}){const s=this._markersToCopy.get(e);this._markersToCopy.set(e,n),t(),s?this._markersToCopy.set(e,s):this._markersToCopy.delete(e)}_isMarkerCopyable(e,t){const n=this._getMarkerClipboardConfig(e);if(!n)return!1;if(!t)return!0;const{allowedActions:s}=n;return s==="all"||s.includes(t)}_hasMarkerConfiguration(e){return!!this._getMarkerClipboardConfig(e)}_getMarkerClipboardConfig(e){const[t]=e.split(":");return this._markersToCopy.get(t)||null}_insertFakeMarkersIntoSelection(e,t,n){const s=this._getCopyableMarkersFromSelection(e,t,n);return this._insertFakeMarkersElements(e,s)}_getCopyableMarkersFromSelection(e,t,n){const s=Array.from(t.getRanges()),r=new Set(s.flatMap(l=>Array.from(e.model.markers.getMarkersIntersectingRange(l)))),a=l=>{if(!this._isMarkerCopyable(l.name,n))return!1;const{copyPartiallySelected:d}=this._getMarkerClipboardConfig(l.name);if(!d){const h=l.getRange();return s.some(m=>m.containsRange(h,!0))}return!0};return Array.from(r).filter(a).map(l=>({name:n==="dragstart"?this._getUniqueMarkerName(l.name):l.name,range:l.getRange()}))}_getPasteMarkersFromRangeMap(e,t=null){const{model:n}=this.editor;return(e instanceof Map?Array.from(e.entries()):Object.entries(e)).flatMap(([r,a])=>{if(!this._hasMarkerConfiguration(r))return[{name:r,range:a}];if(this._isMarkerCopyable(r,t)){const l=this._getMarkerClipboardConfig(r),c=n.markers.has(r)&&n.markers.get(r).getRange().root.rootName==="$graveyard";return(l.duplicateOnPaste||c)&&(r=this._getUniqueMarkerName(r)),[{name:r,range:a}]}return[]})}_insertFakeMarkersElements(e,t){const n={},s=t.flatMap(r=>{const{start:a,end:l}=r.range;return[{position:a,marker:r,type:"start"},{position:l,marker:r,type:"end"}]}).sort(({position:r},{position:a})=>r.isBefore(a)?1:-1);for(const{position:r,marker:a,type:l}of s){const c=e.createElement("$marker",{"data-name":a.name,"data-type":l});n[a.name]||(n[a.name]=[]),n[a.name].push(c),e.insert(c,r)}return n}_removeFakeMarkersInsideElement(e,t){const s=this._getAllFakeMarkersFromElement(e,t).reduce((r,a)=>{const l=a.markerElement&&e.createPositionBefore(a.markerElement);let c=r[a.name],d=!1;return c!=null&&c.start&&(c!=null&&c.end)&&(this._getMarkerClipboardConfig(a.name).duplicateOnPaste?r[this._getUniqueMarkerName(a.name)]=r[a.name]:d=!0,c=null),d||(r[a.name]={...c,[a.type]:l}),a.markerElement&&e.remove(a.markerElement),r},{});return Ww(s,r=>new v(r.start||e.createPositionFromPath(t,[0]),r.end||e.createPositionAt(t,"end")))}_getAllFakeMarkersFromElement(e,t){const n=Array.from(e.createRangeIn(t)).flatMap(({item:a})=>{if(!a.is("element","$marker"))return[];const l=a.getAttribute("data-name"),c=a.getAttribute("data-type");return[{markerElement:a,name:l,type:c}]}),s=[],r=[];for(const a of n)a.type==="end"&&(n.some(c=>c.name===a.name&&c.type==="start")||s.push({markerElement:null,name:a.name,type:"start"})),a.type==="start"&&(n.some(c=>c.name===a.name&&c.type==="end")||r.unshift({markerElement:null,name:a.name,type:"end"}));return[...s,...n,...r]}_getUniqueMarkerName(e){const t=e.split(":"),n=Me().substring(1,6);return t.length===3?`${t.slice(0,2).join(":")}:${n}`:`${t.join(":")}:${n}`}}class et extends y{static get pluginName(){return"ClipboardPipeline"}static get isOfficialPlugin(){return!0}static get requires(){return[xn]}init(){this.editor.editing.view.addObserver(jn),this._setupPasteDrop(),this._setupCopyCut()}_fireOutputTransformationEvent(i,e,t){const n=this.editor.plugins.get("ClipboardMarkersUtils");this.editor.model.enqueueChange({isUndoable:t==="cut"},()=>{const s=n._copySelectedFragmentWithMarkers(t,e);this.fire("outputTransformation",{dataTransfer:i,content:s,method:t})})}_setupPasteDrop(){const i=this.editor,e=i.model,t=i.editing.view,n=t.document,s=this.editor.plugins.get("ClipboardMarkersUtils");this.listenTo(n,"clipboardInput",(r,a)=>{a.method=="paste"&&!i.model.canEditAt(i.model.document.selection)&&r.stop()},{priority:"highest"}),this.listenTo(n,"clipboardInput",(r,a)=>{const l=a.dataTransfer;let c;if(a.content)c=a.content;else{let m="";l.getData("text/html")?m=uE(l.getData("text/html")):l.getData("text/plain")&&(m=dE(l.getData("text/plain"))),c=this.editor.data.htmlProcessor.toView(m)}const d=new xt(this,"inputTransformation"),h=l.getData("application/ckeditor5-editor-id")||null;this.fire(d,{content:c,dataTransfer:l,sourceEditorId:h,targetRanges:a.targetRanges,method:a.method}),d.stop.called&&r.stop(),t.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(r,a)=>{if(a.content.isEmpty)return;const c=this.editor.data.toModel(a.content,"$clipboardHolder");c.childCount!=0&&(r.stop(),e.change(()=>{this.fire("contentInsertion",{content:c,method:a.method,sourceEditorId:a.sourceEditorId,dataTransfer:a.dataTransfer,targetRanges:a.targetRanges})}))},{priority:"low"}),this.listenTo(this,"contentInsertion",(r,a)=>{a.resultRange=s._pasteFragmentWithMarkers(a.content)},{priority:"low"})}_setupCopyCut(){const i=this.editor,e=i.model.document,n=i.editing.view.document,s=(r,a)=>{const l=a.dataTransfer;a.preventDefault(),this._fireOutputTransformationEvent(l,e.selection,r.name)};this.listenTo(n,"copy",s,{priority:"low"}),this.listenTo(n,"cut",(r,a)=>{i.model.canEditAt(i.model.document.selection)?s(r,a):a.preventDefault()},{priority:"low"}),this.listenTo(this,"outputTransformation",(r,a)=>{const l=i.data.toView(a.content,{isClipboardPipeline:!0});n.fire("clipboardOutput",{dataTransfer:a.dataTransfer,content:l,method:a.method})},{priority:"low"}),this.listenTo(n,"clipboardOutput",(r,a)=>{a.content.isEmpty||(a.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(a.content)),a.dataTransfer.setData("text/plain",gf(i.data.htmlProcessor.domConverter,a.content)),a.dataTransfer.setData("application/ckeditor5-editor-id",this.editor.id)),a.method=="cut"&&i.model.deleteContent(e.selection)},{priority:"low"})}}const Lr=Ki("px");class mE extends E{constructor(){super();const i=this.bindTemplate;this.set({isVisible:!1,left:null,top:null,width:null}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-clipboard-drop-target-line",i.if("isVisible","ck-hidden",e=>!e)],style:{left:i.to("left",e=>Lr(e)),top:i.to("top",e=>Lr(e)),width:i.to("width",e=>Lr(e))}}})}}class Lo extends y{constructor(){super(...arguments);u(this,"removeDropMarkerDelayed",Ba(()=>this.removeDropMarker(),40));u(this,"_updateDropMarkerThrottled",Hi(e=>this._updateDropMarker(e),40));u(this,"_reconvertMarkerThrottled",Hi(()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")},0));u(this,"_dropTargetLineView",new mE);u(this,"_domEmitter",new(Se()));u(this,"_scrollables",new Map)}static get pluginName(){return"DragDropTarget"}static get isOfficialPlugin(){return!0}init(){this._setupDropMarker()}destroy(){this._domEmitter.stopListening();for(const{resizeObserver:e}of this._scrollables.values())e.destroy();return this._updateDropMarkerThrottled.cancel(),this.removeDropMarkerDelayed.cancel(),this._reconvertMarkerThrottled.cancel(),super.destroy()}updateDropMarker(e,t,n,s,r,a){this.removeDropMarkerDelayed.cancel();const l=au(this.editor,e,t,n,s,r,a);/* istanbul ignore next -- @preserve */if(l){if(a&&a.containsRange(l))return this.removeDropMarker();this._updateDropMarkerThrottled(l)}}getFinalDropRange(e,t,n,s,r,a){const l=au(this.editor,e,t,n,s,r,a);return this.removeDropMarker(),l}removeDropMarker(){const e=this.editor.model;this.removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),this._dropTargetLineView.isVisible=!1,e.markers.has("drop-target")&&e.change(t=>{t.removeMarker("drop-target")})}_setupDropMarker(){const e=this.editor;e.ui.view.body.add(this._dropTargetLineView),e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:n})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return this._dropTargetLineView.isVisible=!1,this._createDropTargetPosition(n);t.markerRange.isCollapsed?this._updateDropTargetLine(t.markerRange):this._dropTargetLineView.isVisible=!1}})}_updateDropMarker(e){const t=this.editor,n=t.model.markers;t.model.change(s=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(e)||s.updateMarker("drop-target",{range:e}):s.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})})}_createDropTargetPosition(e){return e.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},function(t){const n=this.toDomElement(t);return n.append("⁠",t.createElement("span"),"⁠"),n})}_updateDropTargetLine(e){const t=this.editor.editing,n=e.start.nodeBefore,s=e.start.nodeAfter,r=e.start.parent,a=n?t.mapper.toViewElement(n):null,l=a?t.view.domConverter.mapViewToDom(a):null,c=s?t.mapper.toViewElement(s):null,d=c?t.view.domConverter.mapViewToDom(c):null,h=t.mapper.toViewElement(r);if(!h)return;const m=t.view.domConverter.mapViewToDom(h),g=this._getScrollableRect(h),{scrollX:f,scrollY:p}=T.window,b=l?new R(l):null,k=d?new R(d):null,_=new R(m).excludeScrollbarsAndBorders(),M=b?b.bottom:_.top,O=k?k.top:_.bottom,oe=T.window.getComputedStyle(m),te=M<=O?(M+O)/2:O;if(g.top<te&&te<g.bottom){const x=_.left+parseFloat(oe.paddingLeft),N=_.right-parseFloat(oe.paddingRight),S=Math.max(x+f,g.left),P=Math.min(N+f,g.right);this._dropTargetLineView.set({isVisible:!0,left:S,top:te+p,width:P-S})}else this._dropTargetLineView.isVisible=!1}_getScrollableRect(e){const t=e.root.rootName;let n;if(this._scrollables.has(t))n=this._scrollables.get(t).domElement;else{const s=this.editor.editing.view.domConverter.mapViewToDom(e);n=fE(s),this._domEmitter.listenTo(n,"scroll",this._reconvertMarkerThrottled,{usePassive:!0});const r=new Rn(n,this._reconvertMarkerThrottled);this._scrollables.set(t,{domElement:n,resizeObserver:r})}return new R(n).excludeScrollbarsAndBorders()}}function au(o,i,e,t,n,s,r){const a=o.model,l=o.editing.mapper;let d=lu(o,i);for(;d;){if(!s){if(a.schema.checkChild(d,"$text")){if(e){const h=e[0].start,m=l.toModelPosition(h);if(!r||Array.from(r.getItems({shallow:!0})).every(f=>a.schema.checkChild(m,f))){if(a.schema.checkChild(m,"$text"))return a.createRange(m);if(h)return To(o,lu(o,h.parent),t,n)}}}else if(a.schema.isInline(d))return To(o,d,t,n)}if(a.schema.isBlock(d))return To(o,d,t,n);if(a.schema.checkChild(d,"$block")){const h=Array.from(d.getChildren()).filter(f=>f.is("element")&&!gE(o,f));let m=0,g=h.length;if(g==0)return a.createRange(a.createPositionAt(d,"end"));for(;m<g-1;){const f=Math.floor((m+g)/2);pf(o,h[f],t,n)=="before"?g=f:m=f}return To(o,h[m],t,n)}d=d.parent}return null}function gE(o,i){const e=o.editing.mapper,t=o.editing.view.domConverter,n=e.toViewElement(i);if(!n)return!0;const s=t.mapViewToDom(n);return T.window.getComputedStyle(s).float!="none"}function To(o,i,e,t){const n=o.model;return n.createRange(n.createPositionAt(i,pf(o,i,e,t)))}function pf(o,i,e,t){const n=o.editing.mapper,s=o.editing.view.domConverter,r=n.toViewElement(i),a=s.mapViewToDom(r),l=new R(a);return o.model.schema.isInline(i)?e<(l.left+l.right)/2?"before":"after":t<(l.top+l.bottom)/2?"before":"after"}function lu(o,i){const e=o.editing.mapper,t=o.editing.view,n=e.toModelElement(i);if(n)return n;const s=t.createPositionBefore(i),r=e.findMappedViewAncestor(s);return e.toModelElement(r)}function fE(o){let i=o;do{i=i.parentElement;const e=T.window.getComputedStyle(i).overflowY;if(e=="auto"||e=="scroll")break}while(i.tagName!="BODY");return i}class pE extends y{constructor(){super(...arguments);u(this,"_isBlockDragging",!1);u(this,"_domEmitter",new(Se()))}static get pluginName(){return"DragDropBlockToolbar"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;if(this.listenTo(e,"change:isReadOnly",(t,n,s)=>{s?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")}),I.isAndroid&&this.forceDisabled("noAndroidSupport"),e.plugins.has("BlockToolbar")){const n=e.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(n,"dragstart",(s,r)=>this._handleBlockDragStart(r)),this._domEmitter.listenTo(T.document,"dragover",(s,r)=>this._handleBlockDragging(r)),this._domEmitter.listenTo(T.document,"drop",(s,r)=>this._handleBlockDragging(r)),this._domEmitter.listenTo(T.document,"dragend",()=>this._handleBlockDragEnd(),{useCapture:!0}),this.isEnabled&&n.setAttribute("draggable","true"),this.on("change:isEnabled",(s,r,a)=>{n.setAttribute("draggable",a?"true":"false")})}}destroy(){return this._domEmitter.stopListening(),super.destroy()}_handleBlockDragStart(e){if(!this.isEnabled)return;const t=this.editor.model,n=t.document.selection,s=this.editor.editing.view,r=Array.from(n.getSelectedBlocks()),a=t.createRange(t.createPositionBefore(r[0]),t.createPositionAfter(r[r.length-1]));t.change(l=>l.setSelection(a)),this._isBlockDragging=!0,s.focus(),s.getObserver(jn).onDomEvent(e)}_handleBlockDragging(e){if(!this.isEnabled||!this._isBlockDragging)return;const t=e.clientX+(this.editor.locale.contentLanguageDirection=="ltr"?100:-100),n=e.clientY,s=document.elementFromPoint(t,n),r=this.editor.editing.view;!s||!s.closest(".ck-editor__editable")||r.getObserver(jn).onDomEvent({...e,type:e.type,dataTransfer:e.dataTransfer,target:s,clientX:t,clientY:n,preventDefault:()=>e.preventDefault(),stopPropagation:()=>e.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}class wE extends y{constructor(){super(...arguments);u(this,"_draggedRange");u(this,"_draggingUid");u(this,"_draggableElement");u(this,"_clearDraggableAttributesDelayed",Ba(()=>this._clearDraggableAttributes(),40));u(this,"_blockMode",!1);u(this,"_domEmitter",new(Se()));u(this,"_previewContainer")}static get pluginName(){return"DragDrop"}static get isOfficialPlugin(){return!0}static get requires(){return[et,to,Lo,pE]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,t.addObserver(jn),t.addObserver(Rs),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(n,s,r)=>{r?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(n,s,r)=>{r||this._finalizeDragging(!1)}),I.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._previewContainer&&this._previewContainer.remove(),this._domEmitter.stopListening(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,n=e.editing.view,s=n.document,r=e.plugins.get(Lo);this.listenTo(s,"dragstart",(a,l)=>{var p;if((p=l.target)!=null&&p.is("editableElement")){l.preventDefault();return}if(this._prepareDraggedRange(l.target),!this._draggedRange){l.preventDefault();return}this._draggingUid=Me(),l.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",l.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange());this.editor.plugins.get("ClipboardPipeline")._fireOutputTransformationEvent(l.dataTransfer,c,"dragstart");const{dataTransfer:h,domTarget:m,domEvent:g}=l,{clientX:f}=g;this._updatePreview({dataTransfer:h,domTarget:m,clientX:f}),l.stopPropagation(),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")},{priority:"low"}),this.listenTo(s,"dragend",(a,l)=>{this._finalizeDragging(!l.dataTransfer.isCanceled&&l.dataTransfer.dropEffect=="move")},{priority:"low"}),this._domEmitter.listenTo(T.document,"dragend",()=>{this._blockMode=!1},{useCapture:!0}),this.listenTo(s,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(s,"dragleave",()=>{r.removeDropMarkerDelayed()}),this.listenTo(s,"dragging",(a,l)=>{if(!this.isEnabled){l.dataTransfer.dropEffect="none";return}const{clientX:c,clientY:d}=l.domEvent;r.updateDropMarker(l.target,l.targetRanges,c,d,this._blockMode,this._draggedRange),this._draggedRange||(l.dataTransfer.dropEffect="copy"),I.isGecko||(l.dataTransfer.effectAllowed=="copy"?l.dataTransfer.dropEffect="copy":["all","copyMove"].includes(l.dataTransfer.effectAllowed)&&(l.dataTransfer.dropEffect="move")),a.stop()},{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,n=e.editing.view.document,s=e.plugins.get(Lo);this.listenTo(n,"clipboardInput",(r,a)=>{if(a.method!="drop")return;const{clientX:l,clientY:c}=a.domEvent,d=s.getFinalDropRange(a.target,a.targetRanges,l,c,this._blockMode,this._draggedRange);if(!d){this._finalizeDragging(!1),r.stop();return}if(this._draggedRange&&this._draggingUid!=a.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid=""),cu(a.dataTransfer)=="move"&&this._draggedRange&&this._draggedRange.containsRange(d,!0)){this._finalizeDragging(!1),r.stop();return}a.targetRanges=[e.editing.mapper.toViewRange(d)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(et);e.on("contentInsertion",(t,n)=>{if(!this.isEnabled||n.method!=="drop")return;const s=n.targetRanges.map(r=>this.editor.editing.mapper.toModelRange(r));this.editor.model.change(r=>r.setSelection(s))},{priority:"high"}),e.on("contentInsertion",(t,n)=>{if(!this.isEnabled||n.method!=="drop")return;const s=cu(n.dataTransfer)=="move",r=!n.resultRange||!n.resultRange.isCollapsed;this._finalizeDragging(r&&s)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,n=t.document;this.listenTo(n,"mousedown",(s,r)=>{if(I.isAndroid||!r)return;this._clearDraggableAttributesDelayed.cancel();let a=du(r.target);if(I.isBlink&&!e.isReadOnly&&!a&&!n.selection.isCollapsed){const l=n.selection.getSelectedElement();(!l||!le(l))&&(a=n.selection.editableElement)}a&&(t.change(l=>{l.setAttribute("draggable","true",a)}),this._draggableElement=e.editing.mapper.toModelElement(a))}),this.listenTo(n,"mouseup",()=>{I.isAndroid||this._clearDraggableAttributesDelayed()})}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change(t=>{this._draggableElement&&this._draggableElement.root.rootName!="$graveyard"&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null})}_finalizeDragging(e){const t=this.editor,n=t.model;t.plugins.get(Lo).removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._previewContainer&&(this._previewContainer.remove(),this._previewContainer=void 0),this._draggedRange&&(e&&this.isEnabled&&n.change(r=>{const a=n.createSelection(this._draggedRange);n.deleteContent(a,{doNotAutoparagraph:!0});const l=a.getFirstPosition().parent;l.isEmpty&&!n.schema.checkChild(l,"$text")&&n.schema.checkChild(l,"paragraph")&&r.insertElement("paragraph",l,0)}),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(e){const t=this.editor,n=t.model,s=n.document.selection,r=e?du(e):null;if(r){const d=t.editing.mapper.toModelElement(r);this._draggedRange=Je.fromRange(n.createRangeOn(d)),this._blockMode=n.schema.isBlock(d),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop");return}if(s.isCollapsed&&!s.getFirstPosition().parent.isEmpty)return;const a=Array.from(s.getSelectedBlocks()),l=s.getFirstRange();if(a.length==0){this._draggedRange=Je.fromRange(l);return}const c=wf(n,a);if(a.length>1)this._draggedRange=Je.fromRange(c),this._blockMode=!0;else if(a.length==1){const d=l.start.isTouching(c.start)&&l.end.isTouching(c.end);this._draggedRange=Je.fromRange(d?c:l),this._blockMode=d}n.change(d=>d.setSelection(this._draggedRange.toRange()))}_updatePreview({dataTransfer:e,domTarget:t,clientX:n}){const s=this.editor.editing.view,r=s.document.selection.editableElement,a=s.domConverter.mapViewToDom(r),l=T.window.getComputedStyle(a);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=Oe(T.document,"div",{style:"position: fixed; left: -999999px;"}),T.document.body.appendChild(this._previewContainer));const c=new R(a);if(a.contains(t))return;const d=parseFloat(l.paddingLeft),h=Oe(T.document,"div");h.className="ck ck-content",h.style.width=l.width,h.style.paddingLeft=`${c.left-n+d}px`,I.isiOS&&(h.style.backgroundColor="white"),s.domConverter.setContentOf(h,e.getData("text/html")),e.setDragImage(h,0,0),this._previewContainer.appendChild(h)}}function cu(o){return I.isGecko?o.dropEffect:["all","copyMove"].includes(o.effectAllowed)?"move":"copy"}function du(o){if(o.is("editableElement"))return null;if(o.hasClass("ck-widget__selection-handle"))return o.findAncestor(le);if(le(o))return o;const i=o.findAncestor(e=>le(e)||e.is("editableElement"));return le(i)?i:null}function wf(o,i){const e=i[0],t=i[i.length-1],n=e.getCommonAncestor(t),s=o.createPositionBefore(e),r=o.createPositionAfter(t);if(n&&n.is("element")&&!o.schema.isLimit(n)){const a=o.createRangeOn(n),l=s.isTouching(a.start),c=r.isTouching(a.end);if(l&&c)return wf(o,[n])}return o.createRange(s,r)}class bE extends y{static get pluginName(){return"PastePlainText"}static get isOfficialPlugin(){return!0}static get requires(){return[et]}init(){const i=this.editor,e=i.model,t=i.editing.view,n=e.document.selection;t.addObserver(jn),i.plugins.get(et).on("contentInsertion",(s,r)=>{vE(r.content,e)&&e.change(a=>{const l=Array.from(n.getAttributes()).filter(([d])=>e.schema.getAttributeProperties(d).isFormatting);n.isCollapsed||e.deleteContent(n,{doNotAutoparagraph:!0}),l.push(...n.getAttributes());const c=a.createRangeIn(r.content);for(const d of c.getItems())for(const h of l)e.schema.checkAttribute(d,h[0])&&a.setAttribute(h[0],h[1],d)})})}}function vE(o,i){let e=i.createRangeIn(o);if(o.childCount==1){const t=o.getChild(0);t.is("element")&&i.schema.isBlock(t)&&!i.schema.isObject(t)&&!i.schema.isLimit(t)&&(e=i.createRangeIn(t))}for(const t of e.getItems())if(!i.schema.isInline(t)||Array.from(t.getAttributeKeys()).find(s=>i.schema.getAttributeProperties(s).isFormatting))return!1;return!0}class kE extends y{static get pluginName(){return"Clipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[xn,et,wE,bE]}init(){const i=this.editor,e=this.editor.t;i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Copy selected content"),keystroke:"CTRL+C"},{label:e("Paste content"),keystroke:"CTRL+V"},{label:e("Paste content as plain text"),keystroke:"CTRL+SHIFT+V"}]})}}/**
299
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
300
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
301
+ */class yE extends LL{constructor(e,t){super(e);u(this,"view");u(this,"_toolbarConfig");u(this,"_elementReplacer");this.view=t,this._toolbarConfig=Ug(e.config.get("toolbar")),this._elementReplacer=new Xh,this.listenTo(e.editing.view,"scrollToTheSelection",this._handleScrollToTheSelectionWithStickyPanel.bind(this))}get element(){return this.view.element}init(e){const t=this.editor,n=this.view,s=t.editing.view,r=n.editable,a=s.document.getRoot();r.name=a.rootName,n.render();const l=r.element;this.setEditableElement(r.name,l),n.editable.bind("isFocused").to(this.focusTracker),s.attachDomRoot(l),e&&this._elementReplacer.replace(e,this.element),this._initPlaceholder(),this._initToolbar(),n.menuBarView&&this.initMenuBar(n.menuBarView),this._initDialogPluginIntegration(),this._initContextualBalloonIntegration(),this.fire("ready")}destroy(){super.destroy();const e=this.view,t=this.editor.editing.view;this._elementReplacer.restore(),t.getDomRoot(e.editable.name)&&t.detachDomRoot(e.editable.name),e.destroy()}_initToolbar(){const e=this.view;e.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),e.stickyPanel.limiterElement=e.element,e.stickyPanel.bind("viewportTopOffset").to(this,"viewportOffset",({visualTop:t})=>t||0),e.toolbar.fillFromConfig(this._toolbarConfig,this.componentFactory),this.addToolbar(e.toolbar)}_initPlaceholder(){const e=this.editor,t=e.editing.view,n=t.document.getRoot(),s=e.sourceElement;let r;const a=e.config.get("placeholder");a&&(r=typeof a=="string"?a:a[this.view.editable.name]),!r&&s&&s.tagName.toLowerCase()==="textarea"&&(r=s.getAttribute("placeholder")),r&&(n.placeholder=r),Da({view:t,element:n,isDirectHost:!1,keepOnFocus:!0})}_initContextualBalloonIntegration(){if(!this.editor.plugins.has("ContextualBalloon"))return;const{stickyPanel:e}=this.view,t=this.editor.plugins.get("ContextualBalloon");t.on("getPositionOptions",s=>{const r=s.return;if(!r||!e.isSticky||!e.element)return;const a=new R(e.element).height,l=typeof r.target=="function"?r.target():r.target,c=typeof r.limiter=="function"?r.limiter():r.limiter;if(l&&c&&new R(l).height>=new R(c).height-a)return;const d={...r.viewportOffsetConfig},h=(d.top||0)+a;s.return={...r,viewportOffsetConfig:{...d,top:h}}},{priority:"low"});const n=()=>{t.visibleView&&t.updatePosition()};this.listenTo(e,"change:isSticky",n),this.listenTo(this.editor.ui,"change:viewportOffset",n)}_handleScrollToTheSelectionWithStickyPanel(e,t,n){const s=this.view.stickyPanel;if(s.isSticky){const r=new R(s.element).height;t.viewportOffset.top+=r}else{const r=()=>{this.editor.editing.view.scrollToTheSelection(n)};this.listenTo(s,"change:isSticky",r),setTimeout(()=>{this.stopListening(s,"change:isSticky",r)},20)}}_initDialogPluginIntegration(){if(!this.editor.plugins.has("Dialog"))return;const e=this.view.stickyPanel,t=this.editor.plugins.get("Dialog");t.on("show",()=>{const n=t.view;n.on("moveTo",(s,r)=>{if(!e.isSticky||n.wasMoved||n.isModal)return;const a=new R(e.contentPanelElement);r[1]<a.bottom+Hn.defaultOffset&&(r[1]=a.bottom+Hn.defaultOffset)},{priority:"high"})},{priority:"low"})}}class _E extends EL{constructor(e,t,n={}){super(e);u(this,"stickyPanel");u(this,"toolbar");u(this,"editable");this.stickyPanel=new PL(e),this.toolbar=new ai(e,{shouldGroupWhenFull:n.shouldToolbarGroupWhenFull}),n.useMenuBar&&(this.menuBarView=new VL(e)),this.editable=new SL(e,t,void 0,{label:n.label})}render(){super.render(),this.menuBarView?this.stickyPanel.content.addMany([this.menuBarView,this.toolbar]):this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class CE extends $r(Ri){constructor(e,t={}){if(!Oo(e)&&t.initialData!==void 0)throw new w("editor-create-initial-data",null);super(t);u(this,"ui");this.config.define("menuBar.isVisible",!1),this.config.get("initialData")===void 0&&this.config.set("initialData",LE(e)),Oo(e)&&(this.sourceElement=e),this.model.document.createRoot();const n=!this.config.get("toolbar.shouldNotGroupWhenFull"),s=this.config.get("menuBar"),r=new _E(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:n,useMenuBar:s.isVisible,label:this.config.get("label")});this.ui=new yE(this,r),R0(this)}static get editorName(){return"ClassicEditor"}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(e,t={}){return new Promise(n=>{const s=new this(e,t);n(s.initPlugins().then(()=>s.ui.init(Oo(e)?e:null)).then(()=>s.data.init(s.config.get("initialData"))).then(()=>s.fire("ready")).then(()=>s))})}}function LE(o){return Oo(o)?xb(o):o}function Oo(o){return Gt(o)}/**
302
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
303
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
304
+ */class TE extends B{constructor(i){super(i),this.affectsData=!1}execute(){const i=this.editor.model,e=i.document.selection;let t=i.schema.getLimitElement(e);if(e.containsEntireContent(t)||!uu(i.schema,t))do if(t=t.parent,!t)return;while(!uu(i.schema,t));i.change(n=>{n.setSelection(t,"in")})}}function uu(o,i){return o.isLimit(i)&&(o.checkChild(i,"$text")||o.checkChild(i,"paragraph"))}const EE=Ra("Ctrl+A");class xE extends y{static get pluginName(){return"SelectAllEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.t,n=i.editing.view.document;i.commands.add("selectAll",new TE(i)),this.listenTo(n,"keydown",(s,r)=>{Wi(r)===EE&&(i.execute("selectAll"),r.preventDefault())}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Select all"),keystroke:"CTRL+A"}]})}}class SE extends y{static get pluginName(){return"SelectAllUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("selectAll",()=>{const e=this._createButton(A);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:selectAll",()=>this._createButton(Ce))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("selectAll"),s=new i(e.locale),r=t.t;return s.set({label:r("Select all"),icon:k1,keystroke:"Ctrl+A"}),s.bind("isEnabled").to(n,"isEnabled"),this.listenTo(s,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),s}}class AE extends y{static get requires(){return[xE,SE]}static get pluginName(){return"SelectAll"}static get isOfficialPlugin(){return!0}}/**
305
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
306
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
307
+ */class bf extends B{constructor(e){super(e);u(this,"_stack",[]);u(this,"_createdBatches",new WeakSet);this.refresh(),this._isEnabledBasedOnSelection=!1,this.listenTo(e.data,"set",(t,n)=>{n[1]={...n[1]};const s=n[1];s.batchType||(s.batchType={isUndoable:!1})},{priority:"high"}),this.listenTo(e.data,"set",(t,n)=>{n[1].batchType.isUndoable||this.clearStack()})}refresh(){this.isEnabled=this._stack.length>0}get createdBatches(){return this._createdBatches}addBatch(e){const t=this.editor.model.document.selection,n={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,n){const s=this.editor.model,r=s.document,a=[],l=e.map(d=>d.getTransformedByOperations(n)),c=l.flat();for(const d of l){const h=d.filter(m=>m.root!=r.graveyard).filter(m=>!PE(m,c));h.length&&(IE(h),a.push(h[0]))}a.length&&s.change(d=>{d.setSelection(a,{backward:t})})}_undo(e,t){const n=this.editor.model,s=n.document;this._createdBatches.add(t);const r=e.operations.slice().filter(a=>a.isDocumentOperation);r.reverse();for(const a of r){const l=a.baseVersion+1,c=Array.from(s.history.getOperations(l)),h=Zy([a.getReversed()],c,{useRelations:!0,document:this.editor.model.document,forceWeakRemove:!0}).operationsA;for(let m of h){const g=m.affectedSelectable;g&&!n.canEditAt(g)&&(m=new me(m.baseVersion)),t.addOperation(m),n.applyOperation(m),s.history.setOperationAsUndone(a,m)}}}}function IE(o){o.sort((i,e)=>i.start.isBefore(e.start)?-1:1);for(let i=1;i<o.length;i++){const t=o[i-1].getJoined(o[i],!0);t&&(i--,o.splice(i,2,t))}}function PE(o,i){return i.some(e=>e!==o&&e.containsRange(o,!0))}class RE extends bf{execute(i=null){const e=i?this._stack.findIndex(s=>s.batch==i):this._stack.length-1,t=this._stack.splice(e,1)[0],n=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(n,()=>{this._undo(t.batch,n);const s=this.editor.model.document.history.getOperations(t.batch.baseVersion);this._restoreSelection(t.selection.ranges,t.selection.isBackward,s)}),this.fire("revert",t.batch,n),this.refresh()}}class ME extends bf{execute(){const i=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,()=>{const n=i.batch.operations[i.batch.operations.length-1].baseVersion+1,s=this.editor.model.document.history.getOperations(n);this._restoreSelection(i.selection.ranges,i.selection.isBackward,s),this._undo(i.batch,e)}),this.refresh()}}class BE extends y{constructor(){super(...arguments);u(this,"_undoCommand");u(this,"_redoCommand");u(this,"_batchRegistry",new WeakSet)}static get pluginName(){return"UndoEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t;this._undoCommand=new RE(e),this._redoCommand=new ME(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(n,s)=>{const r=s[0];if(!r.isDocumentOperation)return;const a=r.batch,l=this._redoCommand.createdBatches.has(a),c=this._undoCommand.createdBatches.has(a);this._batchRegistry.has(a)||(this._batchRegistry.add(a),a.isUndoable&&(l?this._undoCommand.addBatch(a):c||(this._undoCommand.addBatch(a),this._redoCommand.clearStack())))},{priority:"highest"}),this.listenTo(this._undoCommand,"revert",(n,s,r)=>{this._redoCommand.addBatch(r)}),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Undo"),keystroke:"CTRL+Z"},{label:t("Redo"),keystroke:[["CTRL+Y"],["CTRL+SHIFT+Z"]]}]})}}class VE extends y{static get pluginName(){return"UndoUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale,t=i.t,n=e.uiLanguageDirection=="ltr"?sd:nd,s=e.uiLanguageDirection=="ltr"?nd:sd;this._addButtonsToFactory("undo",t("Undo"),"CTRL+Z",n),this._addButtonsToFactory("redo",t("Redo"),"CTRL+Y",s)}_addButtonsToFactory(i,e,t,n){const s=this.editor;s.ui.componentFactory.add(i,()=>{const r=this._createButton(A,i,e,t,n);return r.set({tooltip:!0}),r}),s.ui.componentFactory.add("menuBar:"+i,()=>this._createButton(Ce,i,e,t,n))}_createButton(i,e,t,n,s){const r=this.editor,a=r.locale,l=r.commands.get(e),c=new i(a);return c.set({label:t,icon:s,keystroke:n}),c.bind("isEnabled").to(l,"isEnabled"),this.listenTo(c,"execute",()=>{r.execute(e),r.editing.view.focus()}),c}}class zE extends y{static get requires(){return[BE,VE]}static get pluginName(){return"Undo"}static get isOfficialPlugin(){return!0}}/**
308
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
309
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
310
+ */class NE extends y{static get requires(){return[vC,kE,Ds,AE,yT,nT,zE]}static get pluginName(){return"Essentials"}static get isOfficialPlugin(){return!0}}/**
311
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
312
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
313
+ */class DE extends B{constructor(i){super(i),this._isEnabledBasedOnSelection=!1}refresh(){const i=this.editor.model,e=i.document,t=ue(e.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&hu(t,i.schema)}execute(i={}){const e=this.editor.model,t=e.document,n=i.selection||t.selection;e.canEditAt(n)&&e.change(s=>{const r=n.getSelectedBlocks();for(const a of r)!a.is("element","paragraph")&&hu(a,e.schema)&&s.rename(a,"paragraph")})}}function hu(o,i){return i.checkChild(o.parent,"paragraph")&&!i.isObject(o)}class OE extends B{constructor(i){super(i),this._isEnabledBasedOnSelection=!1}execute(i){const e=this.editor.model,t=i.attributes;let n=i.position;return e.canEditAt(n)?e.change(s=>{if(n=this._findPositionToInsertParagraph(n,s),!n)return null;const r=s.createElement("paragraph");return t&&e.schema.setAllowedAttributes(r,t,s),e.insertContent(r,n),s.setSelection(r,"in"),s.createPositionAt(r,0)}):null}_findPositionToInsertParagraph(i,e){const t=this.editor.model;if(t.schema.checkChild(i,"paragraph"))return i;const n=t.schema.findAllowedParent(i,"paragraph");if(!n)return null;const s=i.parent,r=t.schema.checkChild(s,"$text");return s.isEmpty||r&&i.isAtEnd?t.createPositionAfter(s):!s.isEmpty&&r&&i.isAtStart?t.createPositionBefore(s):e.split(i,n).position}}const xs=class xs extends y{static get pluginName(){return"Paragraph"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.model;i.commands.add("paragraph",new DE(i)),i.commands.add("insertParagraph",new OE(i)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),i.conversion.elementToElement({model:"paragraph",view:"p"}),i.conversion.for("upcast").elementToElement({model:(t,{writer:n})=>!xs.paragraphLikeElements.has(t.name)||t.isEmpty?null:n.createElement("paragraph"),view:/.+/,converterPriority:"low"})}};u(xs,"paragraphLikeElements",new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]));let gs=xs;/**
314
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
315
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
316
+ */class FE extends B{constructor(e,t){super(e);u(this,"modelElements");this.modelElements=t}refresh(){const e=ue(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some(t=>mu(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,n=t.document,s=e.value;t.change(r=>{const a=Array.from(n.selection.getSelectedBlocks()).filter(l=>mu(l,s,t.schema));for(const l of a)l.is("element",s)||r.rename(l,s)})}}function mu(o,i,e){return e.checkChild(o.parent,i)&&!e.isObject(o)}const gu="paragraph";class UE extends y{static get pluginName(){return"HeadingEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[gs]}init(){const i=this.editor,e=i.config.get("heading.options"),t=[];for(const n of e)n.model!=="paragraph"&&(i.model.schema.register(n.model,{inheritAllFrom:"$block"}),i.conversion.elementToElement(n),t.push(n.model));this._addDefaultH1Conversion(i),i.commands.add("heading",new FE(i,t))}afterInit(){const i=this.editor,e=i.commands.get("enter"),t=i.config.get("heading.options");e&&this.listenTo(e,"afterExecute",(n,s)=>{const r=i.model.document.selection.getFirstPosition().parent;t.some(l=>r.is("element",l.model))&&!r.is("element",gu)&&r.childCount===0&&s.writer.rename(r,gu)})}_addDefaultH1Conversion(i){i.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:Ft.low+1})}}/**
317
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
318
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
319
+ */function HE(o){const i=o.t,e={Paragraph:i("Paragraph"),"Heading 1":i("Heading 1"),"Heading 2":i("Heading 2"),"Heading 3":i("Heading 3"),"Heading 4":i("Heading 4"),"Heading 5":i("Heading 5"),"Heading 6":i("Heading 6")};return o.config.get("heading.options").map(t=>{const n=e[t.title];return n&&n!=t.title&&(t.title=n),t})}class WE extends y{static get pluginName(){return"HeadingUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.t,t=HE(i),n=e("Choose heading"),s=e("Heading");i.ui.componentFactory.add("heading",r=>{const a={},l=new Be,c=i.commands.get("heading"),d=i.commands.get("paragraph"),h=[c];for(const g of t){const f={type:"button",model:new Wn({label:g.title,class:g.class,role:"menuitemradio",withText:!0})};g.model==="paragraph"?(f.model.bind("isOn").to(d,"value"),f.model.set("commandName","paragraph"),h.push(d)):(f.model.bind("isOn").to(c,"value",p=>p===g.model),f.model.set({commandName:"heading",commandValue:g.model})),l.add(f),a[g.model]=g.title}const m=We(r);return Qn(m,l,{ariaLabel:s,role:"menu"}),m.buttonView.set({ariaLabel:s,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:s}),m.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),m.bind("isEnabled").toMany(h,"isEnabled",(...g)=>g.some(f=>f)),m.buttonView.bind("label").to(c,"value",d,"value",(g,f)=>{const p=f?"paragraph":g;return typeof p=="boolean"||!a[p]?n:a[p]}),m.buttonView.bind("ariaLabel").to(c,"value",d,"value",(g,f)=>{const p=f?"paragraph":g;return typeof p=="boolean"||!a[p]?s:`${a[p]}, ${s}`}),this.listenTo(m,"execute",g=>{const{commandName:f,commandValue:p}=g.source;i.execute(f,p?{value:p}:void 0),i.editing.view.focus()}),m}),i.ui.componentFactory.add("menuBar:heading",r=>{const a=new pt(r),l=i.commands.get("heading"),c=i.commands.get("paragraph"),d=[l],h=new qn(r);a.set({class:"ck-heading-dropdown"}),h.set({ariaLabel:e("Heading"),role:"menu"}),a.buttonView.set({label:e("Heading")}),a.panelView.children.add(h);for(const m of t){const g=new eo(r,a),f=new Ce(r);g.children.add(f),h.items.add(g),f.set({isToggleable:!0,label:m.title,role:"menuitemradio",class:m.class}),f.delegate("execute").to(a),f.on("execute",()=>{const p=m.model==="paragraph"?"paragraph":"heading";i.execute(p,{value:m.model}),i.editing.view.focus()}),m.model==="paragraph"?(f.bind("isOn").to(c,"value"),d.push(c)):f.bind("isOn").to(l,"value",p=>p===m.model)}return a.bind("isEnabled").toMany(d,"isEnabled",(...m)=>m.some(g=>g)),a})}}class qE extends y{static get requires(){return[UE,WE]}static get pluginName(){return"Heading"}static get isOfficialPlugin(){return!0}}/**
320
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
321
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
322
+ */class jE extends B{refresh(){const i=this.editor.model,e=i.schema,t=i.document.selection;this.isEnabled=GE(t,e,i)}execute(){const i=this.editor.model;i.change(e=>{const t=e.createElement("horizontalLine");i.insertObject(t,null,null,{setSelection:"after"})})}}function GE(o,i,e){const t=$E(o,e);return i.checkChild(t,"horizontalLine")}function $E(o,i){const t=uf(o,i).start.parent;return t.isEmpty&&!t.is("element","$root")?t.parent:t}class KE extends y{static get pluginName(){return"HorizontalLineEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.model.schema,t=i.t,n=i.conversion;e.register("horizontalLine",{inheritAllFrom:"$blockObject"}),n.for("dataDowncast").elementToElement({model:"horizontalLine",view:(s,{writer:r})=>r.createEmptyElement("hr")}),n.for("editingDowncast").elementToStructure({model:"horizontalLine",view:(s,{writer:r})=>{const a=t("Horizontal line"),l=r.createContainerElement("div",null,r.createEmptyElement("hr"));return r.addClass("ck-horizontal-line",l),r.setCustomProperty("hr",!0,l),ZE(l,r,a)}}),n.for("upcast").elementToElement({view:"hr",model:"horizontalLine"}),i.commands.add("horizontalLine",new jE(i))}}function ZE(o,i,e){return i.setCustomProperty("horizontalLine",!0,o),ml(o,i,{label:e})}class JE extends y{static get pluginName(){return"HorizontalLineUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("horizontalLine",()=>{const e=this._createButton(A);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:horizontalLine",()=>this._createButton(Ce))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("horizontalLine"),s=new i(e.locale),r=t.t;return s.set({label:r("Horizontal line"),icon:j0}),s.bind("isEnabled").to(n,"isEnabled"),this.listenTo(s,"execute",()=>{e.execute("horizontalLine"),e.editing.view.focus()}),s}}class YE extends y{static get requires(){return[KE,JE,to]}static get pluginName(){return"HorizontalLine"}static get isOfficialPlugin(){return!0}}/**
323
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
324
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
325
+ */function XE(o){return o.createContainerElement("span",{class:"image-inline"},o.createEmptyElement("img"))}function fu(o){return o.createContainerElement("figure",{class:"image"},[o.createEmptyElement("img"),o.createSlot("children")])}function vf(o,i){const e=o.plugins.get("ImageUtils"),t=o.plugins.has("ImageInlineEditing")&&o.plugins.has("ImageBlockEditing");return s=>e.isInlineImageView(s)?t&&(s.getStyle("display")=="block"||s.findAncestor(e.isBlockImageView)?"imageBlock":"imageInline")!==i?null:n(s):null;function n(s){const r={name:!0};return s.hasAttribute("src")&&(r.attributes=["src"]),r}}function pl(o,i){const e=ue(i.getSelectedBlocks());return!e||o.isObject(e)||e.isEmpty&&e.name!="listItem"?"imageBlock":"imageInline"}function fs(o){return o&&o.endsWith("px")?parseInt(o):null}function ps(o){const i=fs(o.getStyle("width")),e=fs(o.getStyle("height"));return!!(i&&e)}const QE=/^(image|image-inline)$/;class xe extends y{constructor(){super(...arguments);u(this,"_domEmitter",new(Se()))}static get pluginName(){return"ImageUtils"}static get isOfficialPlugin(){return!0}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,n=null,s={}){const r=this.editor,a=r.model,l=a.document.selection,c=kf(r,t||l,n);e={...Object.fromEntries(l.getAttributes()),...e};for(const d in e)a.schema.checkAttribute(c,d)||delete e[d];return a.change(d=>{const{setImageSizes:h=!0}=s,m=d.createElement(c,e);return a.insertObject(m,t,null,{setSelection:"on",findOptimalPosition:!t&&c!="imageInline"?"auto":void 0}),m.parent?(h&&this.setImageNaturalSizeAttributes(m),m):null})}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change(n=>{const s=new T.window.Image;this._domEmitter.listenTo(s,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(n.batch,r=>{r.setAttribute("width",s.naturalWidth,e),r.setAttribute("height",s.naturalHeight,e)}),this._domEmitter.stopListening(s,"load")}),s.src=t}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const n=e.getSelectedElement();if(n&&this.isImageWidget(n))return n;let s=t.parent;for(;s;){if(s.is("element")&&this.isImageWidget(s))return s;s=s.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:QE})}isImageAllowed(){const t=this.editor.model.document.selection;return ex(this.editor,t)&&tx(t)}toImageWidget(e,t,n){return t.setCustomProperty("image",!0,e),ml(e,t,{label:()=>{const a=this.findViewImgElement(e).getAttribute("alt");return a?`${a} ${n}`:n}})}isImageWidget(e){return!!e.getCustomProperty("image")&&le(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:n}of t.createRangeIn(e))if(this.isInlineImageView(n))return n}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function ex(o,i){if(kf(o,i,null)=="imageBlock"){const t=ix(i,o.model);if(o.model.schema.checkChild(t,"imageBlock"))return!0}else if(o.model.schema.checkChild(i.focus,"imageInline"))return!0;return!1}function tx(o){return[...o.focus.getAncestors()].every(i=>!i.is("element","imageBlock"))}function ix(o,i){const t=uf(o,i).start.parent;return t.isEmpty&&!t.is("element","$root")?t.parent:t}function kf(o,i,e){const t=o.model.schema,n=o.config.get("image.insert.type");return o.plugins.has("ImageBlockEditing")?o.plugins.has("ImageInlineEditing")?e||(n==="inline"?"imageInline":n!=="auto"?"imageBlock":i.is("selection")?pl(t,i):t.checkChild(i,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class nx extends B{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(i){const e=this.editor,t=e.plugins.get("ImageUtils"),n=e.model,s=t.getClosestSelectedImageElement(n.document.selection);n.change(r=>{r.setAttribute("alt",i.newValue,s)})}}class ox extends y{static get requires(){return[xe]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new nx(this.editor))}}class sx extends E{constructor(e){super(e);u(this,"focusTracker");u(this,"keystrokes");u(this,"labeledInput");u(this,"backButtonView");u(this,"saveButtonView");u(this,"children");u(this,"_focusables");u(this,"_focusCycler");this.focusTracker=new ee,this.keystrokes=new re,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new ke(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new ve,this.keystrokes.set("Esc",(t,n)=>{this.fire("cancel"),n()}),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),gi({view:this}),[this.backButtonView,this.labeledInput,this.saveButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createBackButton(){const e=this.locale.t,t=new A(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Zi,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new A(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new Jt(this.locale,{label:e("Text Alternative")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new he(this.locale,Xe);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function rx(o){const i=o.plugins.get("ContextualBalloon");if(o.plugins.get("ImageUtils").getClosestSelectedImageWidget(o.editing.view.document.selection)){const t=wl(o);i.updatePosition(t)}}function wl(o){const i=o.editing.view,e=Ie.defaultPositions,t=o.plugins.get("ImageUtils");return{target:i.domConverter.mapViewToDom(t.getClosestSelectedImageWidget(i.document.selection)),positions:[e.northArrowSouth,e.northArrowSouthWest,e.northArrowSouthEast,e.southArrowNorth,e.southArrowNorthWest,e.southArrowNorthEast,e.viewportStickyNorth]}}class ax extends y{constructor(){super(...arguments);u(this,"_balloon");u(this,"_form")}static get requires(){return[Pt]}static get pluginName(){return"ImageTextAlternativeUI"}static get isOfficialPlugin(){return!0}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",n=>{const s=e.commands.get("imageTextAlternative"),r=new A(n);return r.set({label:t("Change image text alternative"),icon:A1,tooltip:!0}),r.bind("isEnabled").to(s,"isEnabled"),r.bind("isOn").to(s,"value",a=>!!a),this.listenTo(r,"execute",()=>{this._showForm()}),r})}_createForm(){const e=this.editor,n=e.editing.view.document,s=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(ls(sx))(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this.listenTo(e.ui,"update",()=>{s.getClosestSelectedImageWidget(n.selection)?this._isVisible&&rx(e):this._hideForm(!0)}),mi({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const e=this.editor,t=e.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:wl(e)}),n.fieldView.value=n.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}class bl extends y{static get requires(){return[ox,ax]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function lx(o){const i=(e,t,n)=>{if(!n.consumable.test(t.viewItem,{name:!0,classes:"image"}))return;const s=o.findViewImgElement(t.viewItem);if(!s||!n.consumable.test(s,{name:!0}))return;n.consumable.consume(t.viewItem,{name:!0,classes:"image"});const r=n.convertItem(s,t.modelCursor),a=ue(r.modelRange.getItems());if(!a){n.consumable.revert(t.viewItem,{name:!0,classes:"image"});return}n.convertChildren(t.viewItem,a),n.updateConversionResult(a,t)};return e=>{e.on("element:figure",i)}}function yf(o,i){const e=(t,n,s)=>{if(!s.consumable.consume(n.item,t.name))return;const r=s.writer,a=s.mapper.toViewElement(n.item),l=o.findViewImgElement(a);n.attributeNewValue===null?(r.removeAttribute("srcset",l),r.removeAttribute("sizes",l)):n.attributeNewValue&&(r.setAttribute("srcset",n.attributeNewValue,l),r.setAttribute("sizes","100vw",l))};return t=>{t.on(`attribute:srcset:${i}`,e)}}function ws(o,i,e){const t=(n,s,r)=>{if(!r.consumable.consume(s.item,n.name))return;const a=r.writer,l=r.mapper.toViewElement(s.item),c=o.findViewImgElement(l);a.setAttribute(s.attributeKey,s.attributeNewValue||"",c)};return n=>{n.on(`attribute:${e}:${i}`,t)}}class vl extends bt{observe(i){this.listenTo(i,"load",(e,t)=>{const n=t.target;this.checkShouldIgnoreEventFromTarget(n)||n.tagName=="IMG"&&this._fireEvents(t)},{useCapture:!0})}stopObserving(i){this.stopListening(i)}_fireEvents(i){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",i))}}class cx extends B{constructor(i){super(i);const e=i.config.get("image.insert.type");i.plugins.has("ImageBlockEditing")||e==="block"&&F("image-block-plugin-required"),i.plugins.has("ImageInlineEditing")||e==="inline"&&F("image-inline-plugin-required")}refresh(){const i=this.editor.plugins.get("ImageUtils");this.isEnabled=i.isImageAllowed()}execute(i){const e=Y(i.source),t=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),s=Object.fromEntries(t.getAttributes());e.forEach((r,a)=>{const l=t.getSelectedElement();if(typeof r=="string"&&(r={src:r}),a&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);n.insertImage({...r,...s},c,i.imageType)}else i.breakBlock?n.insertImage({...r,...s},t.getFirstPosition(),i.imageType):n.insertImage({...r,...s},null,i.imageType)})}}class dx extends B{constructor(i){super(i),this.decorate("cleanupImage")}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=e.isImage(t),this.value=this.isEnabled?t.getAttribute("src"):null}execute(i){const e=this.editor.model.document.selection.getSelectedElement(),t=this.editor.plugins.get("ImageUtils");this.editor.model.change(n=>{n.setAttribute("src",i.source,e),this.cleanupImage(n,e),t.setImageNaturalSizeAttributes(e)})}cleanupImage(i,e){i.removeAttribute("srcset",e),i.removeAttribute("sizes",e),i.removeAttribute("sources",e),i.removeAttribute("width",e),i.removeAttribute("height",e),i.removeAttribute("alt",e)}}class _f extends y{static get requires(){return[xe]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.conversion;i.editing.view.addObserver(vl),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const t=new cx(i),n=new dx(i);i.commands.add("insertImage",t),i.commands.add("replaceImageSource",n),i.commands.add("imageInsert",t)}}class Cf extends y{static get requires(){return[xe]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(i){const e=this.editor,t=e.plugins.get("ImageUtils"),n=i==="imageBlock"?"figure":"img";e.conversion.for("upcast").attributeToAttribute({view:{name:n,styles:{width:/.+/}},model:{key:"width",value:r=>ps(r)?fs(r.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:r=>ps(r)?fs(r.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),e.conversion.for("editingDowncast").add(r=>{s(r,"width","width",!0,!0),s(r,"height","height",!0,!0)}),e.conversion.for("dataDowncast").add(r=>{s(r,"width","width",!1),s(r,"height","height",!1)}),e.conversion.for("upcast").add(r=>{r.on("element:img",(a,l,c)=>{const d=l.viewItem.getAttribute("width"),h=l.viewItem.getAttribute("height");d&&h&&c.consumable.consume(l.viewItem,{styles:["aspect-ratio"]})})});function s(r,a,l,c,d=!1){r.on(`attribute:${a}:${i}`,(h,m,g)=>{if(!g.consumable.consume(m.item,h.name))return;const f=g.writer,p=g.mapper.toViewElement(m.item),b=t.findViewImgElement(p);m.attributeNewValue!==null?f.setAttribute(l,m.attributeNewValue,b):f.removeAttribute(l,b);const k=m.item.getAttribute("width"),_=m.item.getAttribute("height"),M=k&&_;if(M&&d&&f.setAttribute("loading","lazy",b),m.item.hasAttribute("sources"))return;const O=m.item.hasAttribute("resizedWidth");i==="imageInline"&&!O&&!c||M&&f.setStyle("aspect-ratio",`${k}/${_}`,b)})}}}class Lf extends B{constructor(e,t){super(e);u(this,"_modelElementName");this._modelElementName=t}refresh(){const t=this.editor.plugins.get("ImageUtils"),n=t.getClosestSelectedImageElement(this.editor.model.document.selection);this._modelElementName==="imageBlock"?this.isEnabled=t.isInlineImage(n):this.isEnabled=t.isBlockImage(n)}execute(e={}){const t=this.editor,n=this.editor.model,s=t.plugins.get("ImageUtils"),r=s.getClosestSelectedImageElement(n.document.selection),a=Object.fromEntries(r.getAttributes());return!a.src&&!a.uploadId?null:n.change(l=>{const{setImageSizes:c=!0}=e,d=Array.from(n.markers).filter(g=>g.getRange().containsItem(r)),h=s.insertImage(a,n.createSelection(r,"on"),this._modelElementName,{setImageSizes:c});if(!h)return null;const m=l.createRangeOn(h);for(const g of d){const f=g.getRange(),p=f.root.rootName!="$graveyard"?f.getJoined(m,!0):m;l.updateMarker(g,{range:p})}return{oldElement:r,newElement:h}})}}class Tf extends y{static get requires(){return[xe]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const i=this.editor.model.schema;i.isRegistered("imageBlock")&&i.extend("imageBlock",{allowAttributes:["placeholder"]}),i.isRegistered("imageInline")&&i.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const i=this.editor,e=i.conversion,t=i.plugins.get("ImageUtils");e.for("editingDowncast").add(n=>{n.on("attribute:placeholder",(s,r,a)=>{if(!a.consumable.test(r.item,s.name)||!r.item.is("element","imageBlock")&&!r.item.is("element","imageInline"))return;a.consumable.consume(r.item,s.name);const l=a.writer,c=a.mapper.toViewElement(r.item),d=t.findViewImgElement(c);r.attributeNewValue?(l.addClass("image_placeholder",d),l.setStyle("background-image",`url(${r.attributeNewValue})`,d),l.setCustomProperty("editingPipeline:doNotReuseOnce",!0,d)):(l.removeClass("image_placeholder",d),l.removeStyle("background-image",d))})})}_setupLoadListener(){const i=this.editor,e=i.model,t=i.editing,n=t.view,s=i.plugins.get("ImageUtils");n.addObserver(vl),this.listenTo(n.document,"imageLoaded",(r,a)=>{const l=n.domConverter.mapDomToView(a.target);if(!l)return;const c=s.getImageWidgetFromImageView(l);if(!c)return;const d=t.mapper.toModelElement(c);!d||!d.hasAttribute("placeholder")||e.enqueueChange({isUndoable:!1},h=>{h.removeAttribute("placeholder",d)})})}}class Ef extends y{static get requires(){return[_f,Cf,xe,Tf,et]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),i.plugins.has("ImageInlineEditing")&&(i.commands.add("imageTypeBlock",new Lf(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const i=this.editor,e=i.t,t=i.conversion,n=i.plugins.get("ImageUtils");t.for("dataDowncast").elementToStructure({model:"imageBlock",view:(s,{writer:r})=>fu(r)}),t.for("editingDowncast").elementToStructure({model:"imageBlock",view:(s,{writer:r})=>n.toImageWidget(fu(r),r,e("image widget"))}),t.for("downcast").add(ws(n,"imageBlock","src")).add(ws(n,"imageBlock","alt")).add(yf(n,"imageBlock")),t.for("upcast").elementToElement({view:vf(i,"imageBlock"),model:(s,{writer:r})=>r.createElement("imageBlock",s.hasAttribute("src")?{src:s.getAttribute("src")}:void 0)}).add(lx(n))}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),s=i.plugins.get("ClipboardPipeline");this.listenTo(s,"inputTransformation",(r,a)=>{const l=Array.from(a.content.getChildren());let c;if(!l.every(n.isInlineImageView))return;a.targetRanges?c=i.editing.mapper.toModelRange(a.targetRanges[0]):c=e.document.selection.getFirstRange();const d=e.createSelection(c);if(pl(e.schema,d)==="imageBlock"){const h=new Za(t.document),m=l.map(g=>h.createElement("figure",{class:"image"},g));a.content=h.createDocumentFragment(m)}}),this.listenTo(s,"contentInsertion",(r,a)=>{a.method==="paste"&&e.change(l=>{const c=l.createRangeIn(a.content);for(const d of c.getItems())d.is("element","imageBlock")&&n.setImageNaturalSizeAttributes(d)})})}}class ux extends E{constructor(e,t=[]){super(e);u(this,"focusTracker");u(this,"keystrokes");u(this,"_focusables");u(this,"_focusCycler");u(this,"children");this.focusTracker=new ee,this.keystrokes=new re,this._focusables=new ve,this.children=this.createCollection(),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const n of t)this.children.add(n),this._focusables.add(n),n instanceof Mg&&this._focusables.addMany(n.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),gi({view:this});for(const t of this._focusables)this.focusTracker.add(t.element);this.keystrokes.listenTo(this.element);const e=t=>t.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class io extends y{constructor(e){super(e);u(this,"dropdownView");u(this,"_integrations",new Map);e.config.define("image.insert.integrations",["upload","assetManager","url"])}static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[xe]}init(){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",()=>{this.isImageSelected=n.isImage(t.getSelectedElement())});const s=a=>this._createToolbarComponent(a),r=a=>this._createMenuBarComponent(a);e.ui.componentFactory.add("insertImage",s),e.ui.componentFactory.add("imageInsert",s),e.ui.componentFactory.add("menuBar:insertImage",r)}registerIntegration({name:e,observable:t,buttonViewCreator:n,formViewCreator:s,menuBarButtonViewCreator:r,requiresForm:a=!1,override:l=!1}){this._integrations.has(e)&&!l&&F("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:n,menuBarButtonViewCreator:r,formViewCreator:s,requiresForm:a})}_createToolbarComponent(e){const t=this.editor,n=e.t,s=this._prepareIntegrations();if(!s.length)return null;let r;const a=s[0];if(s.length==1){if(!a.requiresForm)return a.buttonViewCreator(!0);r=a.buttonViewCreator(!0)}else{const d=a.buttonViewCreator(!1);r=new Xn(e,d),r.tooltip=!0,r.bind("label").to(this,"isImageSelected",h=>n(h?"Replace image":"Insert image"))}const l=this.dropdownView=We(e,r),c=s.map(({observable:d})=>typeof d=="function"?d():d);return l.bind("isEnabled").toMany(c,"isEnabled",(...d)=>d.some(h=>h)),l.once("change:isOpen",()=>{const d=s.flatMap(({formViewCreator:m})=>m(s.length==1)),h=new ux(t.locale,d);l.panelView.children.add(h)}),l}_createMenuBarComponent(e){const t=e.t,n=this._prepareIntegrations();if(!n.length)return null;const s=n.flatMap(({menuBarButtonViewCreator:l})=>l(n.length==1)),r=new pt(e),a=new qn(e);r.panelView.children.add(a),r.buttonView.set({icon:G0,label:t("Image")});for(const l of s){const c=new eo(e,r);c.children.add(l),a.items.add(c),l.delegate("execute").to(r)}return r}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),n=[];if(!t.length)return F("image-insert-integrations-not-specified"),n;for(const s of t){if(!this._integrations.has(s)){["upload","assetManager","url"].includes(s)||F("image-insert-unknown-integration",{item:s});continue}n.push(this._integrations.get(s))}return n.length||F("image-insert-integrations-not-registered"),n}}class hx extends y{static get requires(){return[Ef,to,bl,io]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class mx extends y{static get requires(){return[_f,Cf,xe,Tf,et]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),i.plugins.has("ImageBlockEditing")&&(i.commands.add("imageTypeInline",new Lf(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const i=this.editor,e=i.t,t=i.conversion,n=i.plugins.get("ImageUtils");t.for("dataDowncast").elementToElement({model:"imageInline",view:(s,{writer:r})=>r.createEmptyElement("img")}),t.for("editingDowncast").elementToStructure({model:"imageInline",view:(s,{writer:r})=>n.toImageWidget(XE(r),r,e("image widget"))}),t.for("downcast").add(ws(n,"imageInline","src")).add(ws(n,"imageInline","alt")).add(yf(n,"imageInline")),t.for("upcast").elementToElement({view:vf(i,"imageInline"),model:(s,{writer:r})=>r.createElement("imageInline",s.hasAttribute("src")?{src:s.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),s=i.plugins.get("ClipboardPipeline");this.listenTo(s,"inputTransformation",(r,a)=>{const l=Array.from(a.content.getChildren());let c;if(!l.every(n.isBlockImageView))return;a.targetRanges?c=i.editing.mapper.toModelRange(a.targetRanges[0]):c=e.document.selection.getFirstRange();const d=e.createSelection(c);if(pl(e.schema,d)==="imageInline"){const h=new Za(t.document),m=l.map(g=>g.childCount===1?(Array.from(g.getAttributes()).forEach(f=>h.setAttribute(...f,n.findViewImgElement(g))),g.getChild(0)):g);a.content=h.createDocumentFragment(m)}}),this.listenTo(s,"contentInsertion",(r,a)=>{a.method==="paste"&&e.change(l=>{const c=l.createRangeIn(a.content);for(const d of c.getItems())d.is("element","imageInline")&&n.setImageNaturalSizeAttributes(d)})})}}class gx extends y{static get requires(){return[mx,to,bl,io]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class xf extends y{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[xe]}getCaptionFromImageModelElement(i){for(const e of i.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(i){const e=this.editor.plugins.get("ImageUtils"),t=i.getFirstPosition().findAncestor("caption");return t&&e.isBlockImage(t.parent)?t:null}matchImageCaptionViewElement(i){const e=this.editor.plugins.get("ImageUtils");return i.name=="figcaption"&&e.isBlockImageView(i.parent)?{name:!0}:null}}class fx extends B{refresh(){const i=this.editor,e=i.plugins.get("ImageCaptionUtils"),t=i.plugins.get("ImageUtils");if(!i.plugins.has(Ef)){this.isEnabled=!1,this.value=!1;return}const n=i.model.document.selection,s=n.getSelectedElement();if(!s){const r=e.getCaptionFromModelSelection(n);this.isEnabled=!!r,this.value=!!r;return}this.isEnabled=t.isImage(s),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(s):this.value=!1}execute(i={}){const{focusCaptionOnShow:e}=i;this.editor.model.change(t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)})}_showImageCaption(i,e){const n=this.editor.model.document.selection,s=this.editor.plugins.get("ImageCaptionEditing"),r=this.editor.plugins.get("ImageUtils");let a=n.getSelectedElement();const l=s._getSavedCaption(a);r.isInlineImage(a)&&(this.editor.execute("imageTypeBlock"),a=n.getSelectedElement());const c=l||i.createElement("caption");i.append(c,a),e&&i.setSelection(c,"in")}_hideImageCaption(i){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("ImageCaptionEditing"),s=e.plugins.get("ImageCaptionUtils");let r=t.getSelectedElement(),a;r?a=s.getCaptionFromImageModelElement(r):(a=s.getCaptionFromModelSelection(t),r=a.parent),n._saveCaption(r,a),i.setSelection(r,"on"),i.remove(a)}}class px extends y{constructor(e){super(e);u(this,"_savedCaptionsMap");this._savedCaptionsMap=new WeakMap}static get requires(){return[xe,xf]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new fx(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,n=e.plugins.get("ImageUtils"),s=e.plugins.get("ImageCaptionUtils"),r=e.t;e.conversion.for("upcast").elementToElement({view:a=>s.matchImageCaptionViewElement(a),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(a,{writer:l})=>n.isBlockImage(a.parent)?l.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(a,{writer:l})=>{if(!n.isBlockImage(a.parent))return null;const c=l.createEditableElement("figcaption");l.setCustomProperty("imageCaption",!0,c),c.placeholder=r("Enter image caption"),Da({view:t,element:c,keepOnFocus:!0});const d=a.parent.getAttribute("alt"),h=d?r("Caption for image: %0",[d]):r("Caption for the image");return gl(c,l,{label:h})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),s=e.commands.get("imageTypeInline"),r=e.commands.get("imageTypeBlock"),a=l=>{if(!l.return)return;const{oldElement:c,newElement:d}=l.return;/* istanbul ignore if: paranoid check -- @preserve */if(!c)return;if(t.isBlockImage(c)){const m=n.getCaptionFromImageModelElement(c);if(m){this._saveCaption(d,m);return}}const h=this._getSavedCaption(c);h&&this._saveCaption(d,h)};s&&this.listenTo(s,"execute",a,{priority:"low"}),r&&this.listenTo(r,"execute",a,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?$.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,n=e.plugins.get("ImageUtils"),s=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",()=>{const r=t.document.differ.getChanges();for(const a of r){if(a.attributeKey!=="alt")continue;const l=a.range.start.nodeAfter;if(n.isBlockImage(l)){const c=s.getCaptionFromImageModelElement(l);if(!c)return;e.editing.reconvertItem(c)}}})}}class wx extends y{static get requires(){return[xf]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.editing.view,t=i.plugins.get("ImageCaptionUtils"),n=i.t;i.ui.componentFactory.add("toggleImageCaption",s=>{const r=i.commands.get("toggleImageCaption"),a=new A(s);return a.set({icon:gg,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",l=>n(l?"Toggle caption off":"Toggle caption on")),this.listenTo(a,"execute",()=>{i.execute("toggleImageCaption",{focusCaptionOnShow:!0});const l=t.getCaptionFromModelSelection(i.model.document.selection);if(l){const c=i.editing.mapper.toViewElement(l);e.scrollToTheSelection(),e.change(d=>{d.addClass("image__caption_highlighted",c)})}i.editing.view.focus()}),a})}}class bx extends y{static get requires(){return[px,wx]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}}function Sf(o){const i=o.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${i.join("|")})$`)}function vx(o){return new Promise((i,e)=>{const t=o.getAttribute("src");fetch(t).then(n=>n.blob()).then(n=>{const s=Af(n,t),a=`image.${s.replace("image/","")}`,l=new File([n],a,{type:s});i(l)}).catch(n=>n&&n.name==="TypeError"?yx(t).then(i).catch(e):e(n))})}function kx(o,i){return!o.isInlineImageView(i)||!i.getAttribute("src")?!1:!!i.getAttribute("src").match(/^data:image\/\w+;base64,/g)||!!i.getAttribute("src").match(/^blob:/g)}function Af(o,i){return o.type?o.type:i.match(/data:(image\/\w+);base64/)?i.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}function yx(o){return _x(o).then(i=>{const e=Af(i,o),n=`image.${e.replace("image/","")}`;return new File([i],n,{type:e})})}function _x(o){return new Promise((i,e)=>{const t=T.document.createElement("img");t.addEventListener("load",()=>{const n=T.document.createElement("canvas");n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0),n.toBlob(r=>r?i(r):e())}),t.addEventListener("error",()=>e()),t.src=o})}class Cx extends y{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("uploadImage",()=>this._createToolbarButton()),i.ui.componentFactory.add("imageUpload",()=>this._createToolbarButton()),i.ui.componentFactory.add("menuBar:uploadImage",()=>this._createMenuBarButton("standalone")),i.plugins.has("ImageInsertUI")&&i.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>i.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("uploadImage"),s=e.config.get("image.upload.types"),r=Sf(s),a=new i(e.locale),l=t.t;return a.set({acceptedType:s.map(c=>`image/${c}`).join(","),allowMultipleFiles:!0,label:l("Upload from computer"),icon:$0}),a.bind("isEnabled").to(n),a.on("done",(c,d)=>{const h=Array.from(d).filter(m=>r.test(m.type));h.length&&(e.execute("uploadImage",{file:h}),e.editing.view.focus())}),a}_createToolbarButton(){const i=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),t=this.editor.commands.get("uploadImage"),n=this._createButton(xd);return n.tooltip=!0,n.bind("label").to(e,"isImageSelected",t,"isAccessAllowed",(s,r)=>i(r?s?"Replace image from computer":"Upload image from computer":"You have no image upload permissions.")),n}_createDropdownButton(){const i=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),t=this._createButton(xd);return t.withText=!0,t.bind("label").to(e,"isImageSelected",n=>i(n?"Replace from computer":"Upload from computer")),t.on("execute",()=>{e.dropdownView.isOpen=!1}),t}_createMenuBarButton(i){const e=this.editor.locale.t,t=this._createButton(Xg);switch(t.withText=!0,i){case"standalone":t.label=e("Image from computer");break;case"insertOnly":t.label=e("Image");break;case"insertNested":t.label=e("From computer");break}return t}}class Lx extends y{constructor(e){super(e);u(this,"placeholder");u(this,"uploadStatusChange",(e,t,n)=>{const s=this.editor,r=t.item,a=r.getAttribute("uploadId");if(!n.consumable.consume(t.item,e.name))return;const l=s.plugins.get("ImageUtils"),c=s.plugins.get(Ot),d=a?t.attributeNewValue:null,h=this.placeholder,m=s.editing.mapper.toViewElement(r),g=n.writer;if(d=="reading"){pu(m,g),wu(l,h,m,g);return}if(d=="uploading"){const f=c.loaders.get(a);pu(m,g),f?(bu(m,g),Ex(m,g,f,s.editing.view),Px(l,m,g,f)):wu(l,h,m,g);return}d=="complete"&&c.loaders.get(a)&&Sx(m,g,s.editing.view),xx(m,g),bu(m,g),Tx(m,g)});this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}}function pu(o,i){o.hasClass("ck-appear")||i.addClass("ck-appear",o)}function Tx(o,i){i.removeClass("ck-appear",o)}function wu(o,i,e,t){e.hasClass("ck-image-upload-placeholder")||t.addClass("ck-image-upload-placeholder",e);const n=o.findViewImgElement(e);n.getAttribute("src")!==i&&t.setAttribute("src",i,n),If(e,"placeholder")||t.insert(t.createPositionAfter(n),Ix(t))}function bu(o,i){o.hasClass("ck-image-upload-placeholder")&&i.removeClass("ck-image-upload-placeholder",o),Pf(o,i,"placeholder")}function Ex(o,i,e,t){const n=Ax(i);i.insert(i.createPositionAt(o,"end"),n),e.on("change:uploadedPercent",(s,r,a)=>{t.change(l=>{l.setStyle("width",a+"%",n)})})}function xx(o,i){Pf(o,i,"progressBar")}function Sx(o,i,e){const t=i.createUIElement("div",{class:"ck-image-upload-complete-icon"});i.insert(i.createPositionAt(o,"end"),t),setTimeout(()=>{e.change(n=>n.remove(n.createRangeOn(t)))},3e3)}function Ax(o){const i=o.createUIElement("div",{class:"ck-progress-bar"});return o.setCustomProperty("progressBar",!0,i),i}function Ix(o){const i=o.createUIElement("div",{class:"ck-upload-placeholder-loader"});return o.setCustomProperty("placeholder",!0,i),i}function If(o,i){for(const e of o.getChildren())if(e.getCustomProperty(i))return e}function Pf(o,i,e){const t=If(o,e);t&&i.remove(i.createRangeOn(t))}function Px(o,i,e,t){if(t.data){const n=o.findViewImgElement(i);e.setAttribute("src",t.data,n)}}class Rx extends B{constructor(i){super(i),this.set("isAccessAllowed",!0)}refresh(){const i=this.editor,e=i.plugins.get("ImageUtils"),t=i.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(t)}execute(i){const e=Y(i.file),t=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),s=Object.fromEntries(t.getAttributes());e.forEach((r,a)=>{const l=t.getSelectedElement();if(a&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);this._uploadImage(r,s,c)}else this._uploadImage(r,s)})}_uploadImage(i,e,t){const n=this.editor,r=n.plugins.get(Ot).createLoader(i),a=n.plugins.get("ImageUtils");r&&a.insertImage({...e,uploadId:r.id},t)}}class Mx extends y{constructor(e){super(e);u(this,"_uploadImageElements");u(this,"_uploadedImages",new Map);e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}static get requires(){return[Ot,Fd,et,xe]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.document,n=e.conversion,s=e.plugins.get(Ot),r=e.plugins.get("ImageUtils"),a=e.plugins.get("ClipboardPipeline"),l=Sf(e.config.get("image.upload.types")),c=new Rx(e);e.commands.add("uploadImage",c),e.commands.add("imageUpload",c),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add(d=>d.on("element:img",(h,m,g)=>{if(!g.consumable.test(m.viewItem,{attributes:["data-ck-upload-id"]}))return;const f=m.viewItem.getAttribute("data-ck-upload-id");if(!f)return;const[p]=Array.from(m.modelRange.getItems({shallow:!0})),b=s.loaders.get(f);p&&(g.writer.setAttribute("uploadId",f,p),g.consumable.consume(m.viewItem,{attributes:["data-ck-upload-id"]}),b&&b.data&&g.writer.setAttribute("uploadStatus",b.status,p))},{priority:"low"})),this.listenTo(e.editing.view.document,"clipboardInput",(d,h)=>{if(Bx(h.dataTransfer))return;const m=Array.from(h.dataTransfer.files).filter(f=>f?l.test(f.type):!1);if(!m.length)return;if(d.stop(),e.model.change(f=>{h.targetRanges&&f.setSelection(h.targetRanges.map(p=>e.editing.mapper.toModelRange(p))),e.execute("uploadImage",{file:m})}),!e.commands.get("uploadImage").isAccessAllowed){const f=e.plugins.get("Notification"),p=e.locale.t;f.showWarning(p("You have no image upload permissions."),{namespace:"image"})}}),this.listenTo(a,"inputTransformation",(d,h)=>{const m=Array.from(e.editing.view.createRangeIn(h.content)).map(f=>f.item).filter(f=>kx(r,f)&&!f.getAttribute("uploadProcessed")).map(f=>({promise:vx(f),imageElement:f}));if(!m.length)return;const g=new Za(e.editing.view.document);for(const f of m){g.setAttribute("uploadProcessed",!0,f.imageElement);const p=s.createLoader(f.promise);p&&(g.setAttribute("src","",f.imageElement),g.setAttribute("uploadId",p.id,f.imageElement))}}),e.editing.view.document.on("dragover",(d,h)=>{h.preventDefault()}),t.on("change",()=>{const d=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),h=new Set;for(const m of d)if(m.type=="insert"&&m.name!="$text"){const g=m.position.nodeAfter,f=m.position.root.rootName=="$graveyard";for(const p of Vx(e,g)){const b=p.getAttribute("uploadId");if(!b)continue;const k=s.loaders.get(b);if(!k){!f&&this._uploadedImages.has(b)&&e.model.enqueueChange({isUndoable:!1},_=>{_.setAttribute("uploadStatus","complete",p),this.fire("uploadComplete",{data:this._uploadedImages.get(b),imageElement:p})});continue}f?h.has(b)||Array.from(this._uploadImageElements.get(b)).every(M=>M.root.rootName=="$graveyard")&&k.abort():(h.add(b),this._uploadImageElements.has(b)?this._uploadImageElements.get(b).add(p):this._uploadImageElements.set(b,new Set([p])),k.status=="idle"&&this._readAndUpload(k))}}}),this.on("uploadComplete",(d,{imageElement:h,data:m})=>{const g=m.urls?m.urls:m;this.editor.model.change(f=>{f.setAttribute("src",g.default,h),this._parseAndSetSrcsetAttributeOnImage(g,h,f),r.setImageNaturalSizeAttributes(h)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageBlock")),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageInline"))}_readAndUpload(e){const t=this.editor,n=t.model,s=t.locale.t,r=t.plugins.get(Ot),a=t.plugins.get(Fd),l=t.plugins.get("ImageUtils"),c=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},h=>{const m=c.get(e.id);for(const g of m)h.setAttribute("uploadStatus","reading",g)}),e.read().then(()=>{const h=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Uploading image"));for(const m of c.get(e.id)){/* istanbul ignore next -- @preserve */if(I.isSafari){const g=t.editing.mapper.toViewElement(m),f=l.findViewImgElement(g);t.editing.view.once("render",()=>{if(!f.parent)return;const p=t.editing.view.domConverter.mapViewToDom(f.parent);if(!p)return;const b=p.style.display;p.style.display="none",p._ckHack=p.offsetHeight,p.style.display=b})}n.enqueueChange({isUndoable:!1},g=>{g.setAttribute("uploadStatus","uploading",m)})}return h}).then(h=>{n.enqueueChange({isUndoable:!1},m=>{for(const g of c.get(e.id))m.setAttribute("uploadStatus","complete",g),this.fire("uploadComplete",{data:h,imageElement:g});t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Image upload complete")),this._uploadedImages.set(e.id,h)}),d()}).catch(h=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Error during image upload")),e.status!=="error"&&e.status!=="aborted")throw h;e.status=="error"&&h&&a.showWarning(h,{title:s("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},m=>{for(const g of c.get(e.id))g.root.rootName!=="$graveyard"&&m.remove(g)}),d()});function d(){n.enqueueChange({isUndoable:!1},h=>{for(const m of c.get(e.id))h.removeAttribute("uploadId",m),h.removeAttribute("uploadStatus",m);c.delete(e.id)}),r.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,n){let s=0;const r=Object.keys(e).filter(a=>{const l=parseInt(a,10);if(!isNaN(l))return s=Math.max(s,l),!0}).map(a=>`${e[a]} ${a}w`).join(", ");if(r!=""){const a={srcset:r};!t.hasAttribute("width")&&!t.hasAttribute("height")&&(a.width=s),n.setAttributes(a,t)}}_registerConverters(e){const{conversion:t,plugins:n}=this.editor,s=n.get(Ot),r=n.get(xe);t.for("dataDowncast").add(a=>{a.on(`attribute:uploadId:${e}`,(l,c,d)=>{if(!d.consumable.test(c.item,l.name))return;const h=s.loaders.get(c.attributeNewValue);if(!h||!h.data)return null;const m=d.mapper.toViewElement(c.item),g=r.findViewImgElement(m);g&&(d.consumable.consume(c.item,l.name),d.writer.setAttribute("data-ck-upload-id",h.id,g))})})}}function Bx(o){return Array.from(o.types).includes("text/html")&&o.getData("text/html")!==""}function Vx(o,i){const e=o.plugins.get("ImageUtils");return Array.from(o.model.createRangeOn(i)).filter(t=>e.isImage(t.item)).map(t=>t.item)}class Rf extends y{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[Mx,Cx,Lx]}}class zx extends E{constructor(e){super(e);u(this,"urlInputView");u(this,"keystrokes");this.set("imageURLInputValue",""),this.set("isImageSelected",!1),this.set("isEnabled",!0),this.keystrokes=new re,this.urlInputView=this._createUrlInputView(),this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-url"],tabindex:"-1"},children:[this.urlInputView,{tag:"div",attributes:{class:["ck","ck-image-insert-url__action-row"]}}]})}render(){super.render(),gi({view:this}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}_createUrlInputView(){const e=this.locale,t=e.t,n=new he(e,Xe);return n.bind("label").to(this,"isImageSelected",s=>t(s?"Update image URL":"Insert image via URL")),n.bind("isEnabled").to(this),n.fieldView.inputMode="url",n.fieldView.placeholder="https://example.com/image.png",n.fieldView.bind("value").to(this,"imageURLInputValue",s=>s||""),n.fieldView.on("input",()=>{this.imageURLInputValue=n.fieldView.element.value.trim()}),n}focus(){this.urlInputView.focus()}}class Nx extends y{constructor(){super(...arguments);u(this,"_imageInsertUI");u(this,"_formView")}static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[io,cs]}init(){this.editor.ui.componentFactory.add("insertImageViaUrl",()=>this._createToolbarButton()),this.editor.ui.componentFactory.add("menuBar:insertImageViaUrl",()=>this._createMenuBarButton("standalone"))}afterInit(){this._imageInsertUI=this.editor.plugins.get("ImageInsertUI"),this._imageInsertUI.registerIntegration({name:"url",observable:()=>this.editor.commands.get("insertImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createInsertUrlButton(e){const t=new e(this.editor.locale);return t.icon=K0,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(A);return t.tooltip=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",n=>e(n?"Update image URL":"Insert image via URL")),t}_createDropdownButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(A);return t.withText=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",n=>e(n?"Update image URL":"Insert via URL")),t}_createMenuBarButton(e){const t=this.editor.locale.t,n=this._createInsertUrlButton(Ce);switch(n.withText=!0,e){case"standalone":n.label=t("Image via URL");break;case"insertOnly":n.label=t("Image");break;case"insertNested":n.label=t("Via URL");break}return n}_createInsertUrlView(){const e=this.editor,t=e.locale,n=e.commands.get("replaceImageSource"),s=e.commands.get("insertImage"),r=new zx(t);return r.bind("isImageSelected").to(this._imageInsertUI),r.bind("isEnabled").toMany([s,n],"isEnabled",(...a)=>a.some(l=>l)),r}_showModal(){const e=this.editor,n=e.locale.t,s=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));const r=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=r.value||"",s.show({id:"insertImageViaUrl",title:n("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:n("Cancel"),withText:!0,onExecute:()=>s.hide()},{label:this._imageInsertUI.isImageSelected?n("Save"):n("Insert"),class:"ck-button-action",withText:!0,onExecute:()=>this._handleSave()}]})}_handleSave(){this.editor.commands.get("replaceImageSource").isEnabled?this.editor.execute("replaceImageSource",{source:this._formView.imageURLInputValue}):this.editor.execute("insertImage",{source:this._formView.imageURLInputValue}),this.editor.plugins.get("Dialog").hide()}}class Mf extends y{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[Nx,io]}}class Dx extends y{static get pluginName(){return"ImageInsert"}static get isOfficialPlugin(){return!0}static get requires(){return[Rf,Mf,io]}}class Ox extends B{refresh(){const i=this.editor,t=i.plugins.get("ImageUtils").getClosestSelectedImageElement(i.model.document.selection);this.isEnabled=!!t,!t||!t.hasAttribute("resizedWidth")?this.value=null:this.value={width:t.getAttribute("resizedWidth"),height:null}}execute(i){const e=this.editor,t=e.model,n=e.plugins.get("ImageUtils"),s=n.getClosestSelectedImageElement(t.document.selection);this.value={width:i.width,height:null},s&&t.change(r=>{r.setAttribute("resizedWidth",i.width,s),r.removeAttribute("resizedHeight",s),n.setImageNaturalSizeAttributes(s)})}}class Bf extends y{static get requires(){return[xe]}static get pluginName(){return"ImageResizeEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const i=this.editor,e=new Ox(i);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),i.commands.add("resizeImage",e),i.commands.add("imageResize",e)}afterInit(){this._registerSchema()}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]})}_registerConverters(i){const e=this.editor,t=e.plugins.get("ImageUtils");e.conversion.for("downcast").add(n=>n.on(`attribute:resizedWidth:${i}`,(s,r,a)=>{if(!a.consumable.consume(r.item,s.name))return;const l=a.writer,c=a.mapper.toViewElement(r.item);r.attributeNewValue!==null?(l.setStyle("width",r.attributeNewValue,c),l.addClass("image_resized",c)):(l.removeStyle("width",c),l.removeClass("image_resized",c))})),e.conversion.for("dataDowncast").attributeToAttribute({model:{name:i,key:"resizedHeight"},view:n=>({key:"style",value:{height:n}})}),e.conversion.for("editingDowncast").add(n=>n.on(`attribute:resizedHeight:${i}`,(s,r,a)=>{if(!a.consumable.consume(r.item,s.name))return;const l=a.writer,c=a.mapper.toViewElement(r.item),d=i==="imageInline"?t.findViewImgElement(c):c;r.attributeNewValue!==null?l.setStyle("height",r.attributeNewValue,d):l.removeStyle("height",d)})),e.conversion.for("upcast").attributeToAttribute({view:{name:i==="imageBlock"?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:n=>ps(n)?null:n.getStyle("width")}}),e.conversion.for("upcast").attributeToAttribute({view:{name:i==="imageBlock"?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:n=>ps(n)?null:n.getStyle("height")}}),e.conversion.for("upcast").add(n=>{n.on(`element:${i==="imageBlock"?"figure":"img"}`,(s,r,a)=>{a.consumable.consume(r.viewItem,{classes:["image_resized"]})})})}}const Tr={small:h1,medium:u1,large:d1,custom:l1,original:c1};class Fx extends y{constructor(e){super(e);u(this,"_resizeUnit");this._resizeUnit=e.config.get("image.resizeUnit")}static get requires(){return[Bf]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),n=e.commands.get("resizeImage");this.bind("isEnabled").to(n);for(const s of t)this._registerImageResizeButton(s);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:n,value:s,icon:r}=e;t.ui.componentFactory.add(n,a=>{const l=new A(a),c=t.commands.get("resizeImage"),d=this._getOptionLabelValue(e,!0);if(!Tr[r])throw new w("imageresizebuttons-missing-icon",t,e);if(l.set({label:d,icon:Tr[r],tooltip:d,isToggleable:!0}),l.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&hn(e)){const h=t.plugins.get("ImageCustomResizeUI");this.listenTo(l,"execute",()=>{h._showForm(this._resizeUnit)})}else{const h=s?s+this._resizeUnit:null;l.bind("isOn").to(c,"value",c,"isEnabled",ta(h)),this.listenTo(l,"execute",()=>{t.execute("resizeImage",{width:h})})}return l})}_registerImageResizeDropdown(e){const t=this.editor,n=t.t,s=e.find(a=>!a.value),r=a=>{const l=t.commands.get("resizeImage"),c=We(a,Og),d=c.buttonView,h=n("Resize image");return d.set({tooltip:h,commandValue:s.value,icon:Tr.medium,isToggleable:!0,label:this._getOptionLabelValue(s),withText:!0,class:"ck-resize-image-button",ariaLabel:h,ariaLabelledBy:void 0}),d.bind("label").to(l,"value",m=>m&&m.width?m.width:this._getOptionLabelValue(s)),c.bind("isEnabled").to(this),Qn(c,()=>this._getResizeDropdownListItemDefinitions(e,l),{ariaLabel:n("Image resize list"),role:"menu"}),this.listenTo(c,"execute",m=>{"onClick"in m.source?m.source.onClick():(t.execute(m.source.commandName,{width:m.source.commandValue}),t.editing.view.focus())}),c};t.ui.componentFactory.add("resizeImage",r),t.ui.componentFactory.add("imageResize",r)}_getOptionLabelValue(e,t=!1){const n=this.editor.t;return e.label?e.label:t?hn(e)?n("Custom image size"):e.value?n("Resize image to %0",e.value+this._resizeUnit):n("Resize image to the original size"):hn(e)?n("Custom"):e.value?e.value+this._resizeUnit:n("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:n}=this,s=new Be,r=e.map(a=>hn(a)?{...a,valueWithUnits:"custom"}:a.value?{...a,valueWithUnits:`${a.value}${this._resizeUnit}`}:{...a,valueWithUnits:null});for(const a of r){let l=null;if(n.plugins.has("ImageCustomResizeUI")&&hn(a)){const c=n.plugins.get("ImageCustomResizeUI");l={type:"button",model:new Wn({label:this._getOptionLabelValue(a),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{c._showForm(this._resizeUnit)}})};const d=Object.values(r).map(h=>h.valueWithUnits);l.model.bind("isOn").to(t,"value",t,"isEnabled",Ux(d))}else l={type:"button",model:new Wn({commandName:"resizeImage",commandValue:a.valueWithUnits,label:this._getOptionLabelValue(a),role:"menuitemradio",withText:!0,icon:null})},l.model.bind("isOn").to(t,"value",t,"isEnabled",ta(a.valueWithUnits));l.model.bind("isEnabled").to(t,"isEnabled"),s.add(l)}return s}}function hn(o){return o.value==="custom"}function ta(o){return(i,e)=>{const t=i;return t===void 0||!e?!1:o===null&&t===o?!0:t!==null&&t.width===o}}function Ux(o){return(i,e)=>!o.some(t=>ta(t)(i,e))}const Hx="figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img",Er="image_resized";class Wx extends y{static get requires(){return[Cr,xe]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(i),this._setupResizerCreator()}_setupResizerCreator(){const i=this.editor,e=i.editing.view,t=i.plugins.get("ImageUtils");e.addObserver(vl),this.listenTo(e.document,"imageLoaded",(n,s)=>{if(!s.target.matches(Hx))return;const r=i.editing.view.domConverter,a=r.domToView(s.target),l=t.getImageWidgetFromImageView(a);let c=this.editor.plugins.get(Cr).getResizerByViewElement(l);if(c){c.redraw();return}const d=i.editing.mapper,h=d.toModelElement(l);c=i.plugins.get(Cr).attachTo({unit:i.config.get("image.resizeUnit"),modelElement:h,viewElement:l,editor:i,getHandleHost(m){return m.querySelector("img")},getResizeHost(){return r.mapViewToDom(d.toViewElement(h))},isCentered(){return h.getAttribute("imageStyle")=="alignCenter"},onCommit(m){e.change(g=>{g.removeClass(Er,l)}),i.execute("resizeImage",{width:m})}}),c.on("updateSize",()=>{l.hasClass(Er)||e.change(g=>{g.addClass(Er,l)});const m=h.name==="imageInline"?a:l;m.getStyle("height")&&e.change(g=>{g.removeStyle("height",m)})}),c.bind("isEnabled").to(this)})}}/**
326
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
327
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
328
+ */function Vf(o){if(!o)return null;const[,i,e]=o.trim().match(/([.,\d]+)(%|px)$/)||[],t=Number.parseFloat(i);return Number.isNaN(t)?null:{value:t,unit:e}}function zf(o,i,e){return e==="px"?{value:i.value,unit:"px"}:{value:i.value/o*100,unit:"%"}}/**
329
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
330
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
331
+ */function Nf(o){const{editing:i}=o,t=o.plugins.get("ImageUtils").getClosestSelectedImageElement(o.model.document.selection);if(!t)return null;const n=i.mapper.toViewElement(t),s=i.view.domConverter.mapViewToDom(n);return{model:t,view:n,dom:s}}function qx(o,i){const e=Nf(o);if(!e)return null;const t=Vf(e.model.getAttribute("resizedWidth")||null);if(!t)return null;if(t.unit===i)return t;const n=fl(e.dom),s={value:new R(e.dom).width};return zf(n,s,i)}class jx extends E{constructor(e,t,n){super(e);u(this,"focusTracker");u(this,"keystrokes");u(this,"unit");u(this,"backButtonView");u(this,"saveButtonView");u(this,"labeledInput");u(this,"children");u(this,"_focusables");u(this,"_focusCycler");u(this,"_validators");this.focusTracker=new ee,this.keystrokes=new re,this.unit=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new ke(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new ve,this._validators=n,this.keystrokes.set("Esc",(s,r)=>{this.fire("cancel"),r()}),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-image-custom-resize-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),gi({view:this}),[this.backButtonView,this.labeledInput,this.saveButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createBackButton(){const e=this.locale.t,t=new A(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Zi,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new A(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new Jt(this.locale,{label:e("Image Resize")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new he(this.locale,qg);return t.label=e("Resize image (in %0)",this.unit),t.class="ck-labeled-field-view_full-width",t.fieldView.set({step:.1}),t}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.labeledInput.errorText=t,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:e}=this.labeledInput.fieldView;return e?e.value:null}get parsedSize(){const{rawSize:e}=this;if(e===null)return null;const t=Number.parseFloat(e);return Number.isNaN(t)?null:t}get sizeWithUnits(){const{parsedSize:e,unit:t}=this;return e===null?null:`${e}${t}`}}function Gx(o,i){const e=Nf(o);if(!e)return null;const t=fl(e.dom),n=Vf(window.getComputedStyle(e.dom).minWidth)||{value:1},s=Math.max(.1,zf(t,n,i).value);return{unit:i,lower:s,upper:i==="px"?t:100}}class $x extends y{constructor(){super(...arguments);u(this,"_balloon");u(this,"_form")}static get requires(){return[Pt]}static get pluginName(){return"ImageCustomResizeUI"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(e){const t=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(ls(jx))(t.locale,e,Kx(t)),this._form.render(),this.listenTo(this._form,"submit",()=>{this._form.isValid()&&(t.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))}),this.listenTo(this._form.labeledInput,"change:errorText",()=>{t.ui.update()}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),mi({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(e){if(this._isVisible)return;this._form||this._createForm(e);const t=this.editor,n=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:wl(t)});const s=qx(t,e),r=s?s.value.toFixed(1):"",a=Gx(t,e);n.fieldView.value=n.fieldView.element.value=r,a&&Object.assign(n.fieldView,{min:a.lower.toFixed(1),max:Math.ceil(a.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}function Kx(o){const i=o.t;return[e=>{if(e.rawSize.trim()==="")return i("The value must not be empty.");if(e.parsedSize===null)return i("The value should be a plain number.")}]}class Zx extends y{static get requires(){return[Bf,Wx,$x,Fx]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}}class Jx extends B{constructor(e,t){super(e);u(this,"_defaultStyles");u(this,"_styles");this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(n=>{if(n.isDefault)for(const s of n.modelElements)this._defaultStyles[s]=n.name;return[n.name,n]}))}refresh(){const n=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!n,this.isEnabled?n.hasAttribute("imageStyle")?this.value=n.getAttribute("imageStyle"):this.value=this._defaultStyles[n.name]:this.value=!1}execute(e={}){const t=this.editor,n=t.model,s=t.plugins.get("ImageUtils");n.change(r=>{const a=e.value,{setImageSizes:l=!0}=e;let c=s.getClosestSelectedImageElement(n.document.selection);a&&this.shouldConvertImageType(a,c)&&(this.editor.execute(s.isBlockImage(c)?"imageTypeInline":"imageTypeBlock",{setImageSizes:l}),c=s.getClosestSelectedImageElement(n.document.selection)),!a||this._styles.get(a).isDefault?r.removeAttribute("imageStyle",c):r.setAttribute("imageStyle",a,c),l&&s.setImageNaturalSizeAttributes(c)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const Fo={get inline(){return{name:"inline",title:"In line",icon:pg,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:tl,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:wg,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:ss,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:rs,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:bg,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:ss,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:rs,modelElements:["imageBlock"],className:"image-style-side"}}},Df={full:a1,left:wg,right:bg,center:ss,inlineLeft:tl,inlineRight:rs,inline:pg},Of=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Yx(o){return(o.configuredStyles.options||[]).map(t=>eS(t)).filter(t=>tS(t,o))}function Xx(o,i){return o&&i?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:o?{options:["block","side"]}:i?{options:["inline","alignLeft","alignRight"]}:{}}function Qx(o){return o.has("ImageBlockEditing")&&o.has("ImageInlineEditing")?[...Of]:[]}function eS(o){return typeof o=="string"?Fo[o]?o={...Fo[o]}:o={name:o}:o=iS(Fo[o.name],o),typeof o.icon=="string"&&(o.icon=Df[o.icon]||o.icon),o}function tS(o,{isBlockPluginLoaded:i,isInlinePluginLoaded:e}){const{modelElements:t,name:n}=o;if(!t||!t.length||!n)return Ff({style:o}),!1;{const s=[i?"imageBlock":null,e?"imageInline":null];if(!t.some(r=>s.includes(r)))return F("image-style-missing-dependency",{style:o,missingPlugins:t.map(r=>r==="imageBlock"?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}function iS(o,i){const e={...i};for(const t in o)Object.prototype.hasOwnProperty.call(i,t)||(e[t]=o[t]);return e}function Ff(o){F("image-style-configuration-definition-invalid",o)}var ia={normalizeStyles:Yx,getDefaultStylesConfiguration:Xx,getDefaultDropdownDefinitions:Qx,warnInvalidStyle:Ff,DEFAULT_OPTIONS:Fo,DEFAULT_ICONS:Df,DEFAULT_DROPDOWN_DEFINITIONS:Of};function nS(o){return(i,e,t)=>{if(!t.consumable.consume(e.item,i.name))return;const n=vu(e.attributeNewValue,o),s=vu(e.attributeOldValue,o),r=t.mapper.toViewElement(e.item),a=t.writer;s&&a.removeClass(s.className,r),n&&a.addClass(n.className,r)}}function oS(o){const i={imageInline:o.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:o.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,t,n)=>{if(!t.modelRange)return;const s=t.viewItem,r=ue(t.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const a of i[r.name])n.consumable.consume(s,{classes:a.className})&&n.writer.setAttribute("imageStyle",a.name,r)}}function vu(o,i){for(const e of i)if(e.name===o)return e}class Uf extends y{constructor(){super(...arguments);u(this,"normalizedStyles")}static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[xe]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=ia,n=this.editor,s=n.plugins.has("ImageBlockEditing"),r=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",t(s,r)),this.normalizedStyles=e({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:s,isInlinePluginLoaded:r}),this._setupConversion(s,r),this._setupPostFixer(),n.commands.add("imageStyle",new Jx(n,this.normalizedStyles))}_setupConversion(e,t){const n=this.editor,s=n.model.schema,r=nS(this.normalizedStyles),a=oS(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",r),n.data.downcastDispatcher.on("attribute:imageStyle",r),e&&(s.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",a,{priority:"low"})),t&&(s.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",a,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,n=e.plugins.get(xe),s=new Map(this.normalizedStyles.map(r=>[r.name,r]));t.registerPostFixer(r=>{let a=!1;for(const l of t.differ.getChanges())if(l.type=="insert"||l.type=="attribute"&&l.attributeKey=="imageStyle"){let c=l.type=="insert"?l.position.nodeAfter:l.range.start.nodeAfter;if(c&&c.is("element","paragraph")&&c.childCount>0&&(c=c.getChild(0)),!n.isImage(c))continue;const d=c.getAttribute("imageStyle");if(!d)continue;const h=s.get(d);(!h||!h.modelElements.includes(c.name))&&(r.removeAttribute("imageStyle",c),a=!0)}return a})}}class sS extends y{static get requires(){return[Uf]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}get localizedDefaultStylesTitles(){const i=this.editor.t;return{"Wrap text":i("Wrap text"),"Break text":i("Break text"),"In line":i("In line"),"Full size image":i("Full size image"),"Side image":i("Side image"),"Left aligned image":i("Left aligned image"),"Centered image":i("Centered image"),"Right aligned image":i("Right aligned image")}}init(){const i=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],t=i.get("ImageStyleEditing"),n=ku(t.normalizedStyles,this.localizedDefaultStylesTitles);for(const r of n)this._createButton(r);const s=ku([...e.filter(Qe),...ia.getDefaultDropdownDefinitions(i)],this.localizedDefaultStylesTitles);for(const r of s)this._createDropdown(r,n)}_createDropdown(i,e){const t=this.editor.ui.componentFactory;t.add(i.name,n=>{let s;const{defaultItem:r,items:a,title:l}=i,c=a.filter(g=>e.find(({name:f})=>yu(f)===g)).map(g=>{const f=t.create(g);return g===r&&(s=f),f});a.length!==c.length&&ia.warnInvalidStyle({dropdown:i});const d=We(n,Xn),h=d.buttonView,m=h.arrowView;return zs(d,c,{enableActiveItemFocusOnDropdownOpen:!0}),h.set({label:_u(l,s.label),class:null,tooltip:!0}),m.unbind("label"),m.set({label:l}),h.bind("icon").toMany(c,"isOn",(...g)=>{const f=g.findIndex(Si);return f<0?s.icon:c[f].icon}),h.bind("label").toMany(c,"isOn",(...g)=>{const f=g.findIndex(Si);return _u(l,f<0?s.label:c[f].label)}),h.bind("isOn").toMany(c,"isOn",(...g)=>g.some(Si)),h.bind("class").toMany(c,"isOn",(...g)=>g.some(Si)?"ck-splitbutton_flatten":void 0),h.on("execute",()=>{c.some(({isOn:g})=>g)?d.isOpen=!d.isOpen:s.fire("execute")}),d.bind("isEnabled").toMany(c,"isEnabled",(...g)=>g.some(Si)),this.listenTo(d,"execute",()=>{this.editor.editing.view.focus()}),d})}_createButton(i){const e=i.name;this.editor.ui.componentFactory.add(yu(e),t=>{const n=this.editor.commands.get("imageStyle"),s=new A(t);return s.set({label:i.title,icon:i.icon,tooltip:!0,isToggleable:!0}),s.bind("isEnabled").to(n,"isEnabled"),s.bind("isOn").to(n,"value",r=>r===e),s.on("execute",this._executeCommand.bind(this,e)),s})}_executeCommand(i){this.editor.execute("imageStyle",{value:i}),this.editor.editing.view.focus()}}function ku(o,i){for(const e of o)i[e.title]&&(e.title=i[e.title]);return o}function yu(o){return`imageStyle:${o}`}function _u(o,i){return(o?o+": ":"")+i}class rS extends y{static get requires(){return[Uf,sS]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}}class aS extends y{static get requires(){return[ms,xe]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const i=this.editor,e=i.t,t=i.plugins.get(ms),n=i.plugins.get("ImageUtils");t.register("image",{ariaLabel:e("Image toolbar"),items:lS(i.config.get("image.toolbar")||[]),getRelatedElement:s=>n.getClosestSelectedImageWidget(s)})}}function lS(o){return o.map(i=>Qe(i)?i.name:i)}/**
332
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
333
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
334
+ */class cS{constructor(){u(this,"_definitions",new Set)}get length(){return this._definitions.size}add(i){Array.isArray(i)?i.forEach(e=>this._definitions.add(e)):this._definitions.add(i)}getDispatcher(){return i=>{i.on("attribute:linkHref",(e,t,n)=>{if(!n.consumable.test(t.item,"attribute:linkHref")||!(t.item.is("selection")||n.schema.isInline(t.item)))return;const s=n.writer,r=s.document.selection;for(const a of this._definitions){const l=s.createAttributeElement("a",a.attributes,{priority:5});a.classes&&s.addClass(a.classes,l);for(const c in a.styles)s.setStyle(c,a.styles[c],l);s.setCustomProperty("link",!0,l),a.callback(t.attributeNewValue)?t.item.is("selection")?s.wrap(r.getFirstRange(),l):s.wrap(n.mapper.toViewRange(t.range),l):s.unwrap(n.mapper.toViewRange(t.range),l)}},{priority:"high"})}}getDispatcherForLinkedImage(){return i=>{i.on("attribute:linkHref:imageBlock",(e,t,{writer:n,mapper:s})=>{const r=s.toViewElement(t.item),a=Array.from(r.getChildren()).find(l=>l.is("element","a"));if(a)for(const l of this._definitions){const c=At(l.attributes);if(l.callback(t.attributeNewValue)){for(const[d,h]of c)d==="class"?n.addClass(h,a):n.setAttribute(d,h,a);l.classes&&n.addClass(l.classes,a);for(const d in l.styles)n.setStyle(d,l.styles[d],a)}else{for(const[d,h]of c)d==="class"?n.removeClass(h,a):n.removeAttribute(d,a);l.classes&&n.removeClass(l.classes,a);for(const d in l.styles)n.removeStyle(d,a)}}})}}}const dS=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,uS="^(?:(?:<protocols>):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))",hS=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,mS=/^((\w+:(\/{2,})?)|(\W))/i,gS=["https?","ftps?","mailto"],Eo="Ctrl+K";function fS(o){return o.is("attributeElement")&&!!o.getCustomProperty("link")}function Cu(o,{writer:i}){const e=i.createAttributeElement("a",{href:o},{priority:5});return i.setCustomProperty("link",!0,e),e}function Hf(o,i=gS){const e=String(o),t=i.join("|"),n=new RegExp(`${uS.replace("<protocols>",t)}`,"i");return pS(e,n)?e:"#"}function pS(o,i){return!!o.replace(dS,"").match(i)}function wS(o,i){const e={"Open in a new tab":o("Open in a new tab"),Downloadable:o("Downloadable")};return i.forEach(t=>("label"in t&&e[t.label]&&(t.label=e[t.label]),t)),i}function bS(o){const i=[];if(o)for(const[e,t]of Object.entries(o)){const n=Object.assign({},t,{id:`link${$w(e)}`});i.push(n)}return i}function na(o,i){return o?i.checkAttribute(o.name,"linkHref"):!1}function vS(o){return hS.test(o)}function kl(o,i){const e=vS(o)?"mailto:":i,t=!!e&&!Wf(o);return o&&t?e+o:o}function Wf(o){return mS.test(o)}function kS(o){window.open(o,"_blank","noopener")}function oa(o){let i="";for(const e of o.getItems()){if(!e.is("$text")&&!e.is("$textProxy"))return;i+=e.data}return i}class yS extends B{constructor(){super(...arguments);u(this,"manualDecorators",new Be);u(this,"automaticDecorators",new cS)}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,n=t.getSelectedElement()||ue(t.getSelectedBlocks());na(n,e.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(n,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const s of this.manualDecorators)s.value=this._getDecoratorStateFromModel(s.id)}execute(e,t={},n){const s=this.editor.model,r=s.document.selection,a=[],l=[];for(const c in t)t[c]?a.push(c):l.push(c);s.change(c=>{const d=g=>{c.setAttribute("linkHref",e,g),a.forEach(f=>c.setAttribute(f,!0,g)),l.forEach(f=>c.removeAttribute(f,g))},h=(g,f)=>{const p=oa(g);if(!p)return g;let b=n;if(b||(b=f&&f==p?e:p),b!=p){const k=_S(p,b);let _=0;for(const{offset:M,actual:O,expected:oe}of k){const te=M+_,x=c.createRange(g.start.getShiftedBy(te),g.start.getShiftedBy(te+O.length)),S=CS(x,g).getAttributes(),P=Array.from(S).filter(([ge])=>s.schema.getAttributeProperties(ge).isFormatting),Z=c.createText(oe,P);d(Z),s.insertContent(Z,x),_+=oe.length}return c.createRange(g.start,g.start.getShiftedBy(b.length))}},m=g=>{const{plugins:f}=this.editor;if(c.setSelection(g.end),f.has("TwoStepCaretMovement"))f.get("TwoStepCaretMovement")._handleForwardMovement();else for(const p of["linkHref",...a,...l])c.removeSelectionAttribute(p)};if(r.isCollapsed){const g=r.getFirstPosition();if(r.hasAttribute("linkHref")){const f=r.getAttribute("linkHref"),p=Ns(g,"linkHref",f,s),b=h(p,f);d(b||p),b&&m(b)}else if(e!==""){const f=At(r.getAttributes());f.set("linkHref",e),a.forEach(b=>{f.set(b,!0)});const p=s.insertContent(c.createText(n||e,f),g);m(p)}}else{const g=Array.from(r.getRanges()),f=s.schema.getValidRanges(g,"linkHref"),p=[];for(const _ of r.getSelectedBlocks())s.schema.checkAttribute(_,"linkHref")&&p.push(c.createRangeOn(_));const b=p.slice();for(const _ of f)this._isRangeToUpdate(_,p)&&b.push(_);const k=g.map(_=>({start:pe.fromPosition(_.start,"toPrevious"),end:pe.fromPosition(_.end,"toNext")}));for(let _ of b){const M=(_.start.textNode||_.start.nodeAfter).getAttribute("linkHref");_=h(_,M)||_,d(_)}c.setSelection(k.map(_=>{const M=_.start.toPosition(),O=_.end.toPosition();return _.start.detach(),_.end.detach(),s.createRange(M,O)}))}})}_getDecoratorStateFromModel(e){const t=this.editor.model,n=t.document.selection,s=n.getSelectedElement();return na(s,t.schema)?s.getAttribute(e):n.getAttribute(e)}_isRangeToUpdate(e,t){for(const n of t)if(n.containsRange(e))return!1;return!0}}function _S(o,i){const e=Fi(o,i),t={equal:0,insert:0,delete:0},n=[];let s="",r="";for(const a of[...e,null])a=="insert"?r+=i[t.equal+t.insert]:a=="delete"?s+=o[t.equal+t.delete]:(s.length||r.length)&&(n.push({offset:t.equal,actual:s,expected:r}),s="",r=""),a&&t[a]++;return n}function CS(o,i){if(!o.isCollapsed)return ue(o.getItems());const e=o.start;return e.textNode?e.textNode:!e.nodeBefore||e.isEqual(i.start)?e.nodeAfter:e.nodeBefore}class LS extends B{refresh(){const i=this.editor.model,e=i.document.selection,t=e.getSelectedElement();na(t,i.schema)?this.isEnabled=i.schema.checkAttribute(t,"linkHref"):this.isEnabled=i.schema.checkAttributeInSelection(e,"linkHref")}execute(){const i=this.editor,e=this.editor.model,t=e.document.selection,n=i.commands.get("link");e.change(s=>{const r=t.isCollapsed?[Ns(t.getFirstPosition(),"linkHref",t.getAttribute("linkHref"),e)]:e.schema.getValidRanges(t.getRanges(),"linkHref");for(const a of r)if(s.removeAttribute("linkHref",a),n)for(const l of n.manualDecorators)s.removeAttribute(l.id,a)})}}class TS extends j(){constructor({id:e,label:t,attributes:n,classes:s,styles:r,defaultValue:a}){super();u(this,"id");u(this,"defaultValue");u(this,"label");u(this,"attributes");u(this,"classes");u(this,"styles");this.id=e,this.set("value",void 0),this.defaultValue=a,this.label=t,this.attributes=n,this.classes=s,this.styles=r}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const ES="ck-link_selected",Lu="automatic",xS="manual",SS=/^(https?:)?\/\//;class bs extends y{constructor(e){super(e);u(this,"_linkOpeners",[]);e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1,toolbar:["linkPreview","|","editLink","linkProperties","unlink"]})}static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Gd,sf,et]}init(){const e=this.editor,t=this.editor.config.get("link.allowedProtocols");e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Cu}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(r,a)=>Cu(Hf(r,t),a)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:r=>r.getAttribute("href")}}),e.commands.add("link",new yS(e)),e.commands.add("unlink",new LS(e));const n=wS(e.t,bS(e.config.get("link.decorators")));this._enableAutomaticDecorators(n.filter(r=>r.mode===Lu)),this._enableManualDecorators(n.filter(r=>r.mode===xS)),e.plugins.get(Gd).registerAttribute("linkHref"),sT(e,"linkHref","a",ES),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,s=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&s.add({id:"linkIsExternal",mode:Lu,callback:r=>!!r&&SS.test(r),attributes:{target:"_blank",rel:"noopener noreferrer"}}),s.add(e),s.length&&t.conversion.for("downcast").add(s.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,s=t.commands.get("link").manualDecorators;e.forEach(r=>{t.model.schema.extend("$text",{allowAttributes:r.id});const a=new TS(r);s.add(a),t.conversion.for("downcast").attributeToElement({model:a.id,view:(l,{writer:c,schema:d},{item:h})=>{if((h.is("selection")||d.isInline(h))&&l){const m=c.createAttributeElement("a",a.attributes,{priority:5});a.classes&&c.addClass(a.classes,m);for(const g in a.styles)c.setStyle(g,a.styles[g],m);return c.setCustomProperty("link",!0,m),m}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...a._createPattern()},model:{key:a.id}})})}_enableLinkOpen(){const e=this.editor,n=e.editing.view.document,s=r=>{this._linkOpeners.some(a=>a(r))||kS(r)};this.listenTo(n,"click",(r,a)=>{if(!(I.isMac?a.domEvent.metaKey:a.domEvent.ctrlKey))return;let c=a.domTarget;if(c.tagName.toLowerCase()!="a"&&(c=c.closest("a")),!c)return;const d=c.getAttribute("href");d&&(r.stop(),a.preventDefault(),s(d))},{context:"$capture"}),this.listenTo(n,"keydown",(r,a)=>{const c=e.commands.get("link").value;c&&a.keyCode===z.enter&&a.altKey&&(r.stop(),s(c))})}_enableSelectionAttributesFixer(){const t=this.editor.model,n=t.document.selection;this.listenTo(n,"change:attribute",(s,{attributeKeys:r})=>{!r.includes("linkHref")||n.hasAttribute("linkHref")||t.change(a=>{AS(a,IS(t.schema))})})}_enableClipboardIntegration(){const e=this.editor,t=e.model,n=this.editor.config.get("link.defaultProtocol");n&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",(s,r)=>{t.change(a=>{const l=a.createRangeIn(r.content);for(const c of l.getItems())if(c.hasAttribute("linkHref")){const d=kl(c.getAttribute("linkHref"),n);a.setAttribute("linkHref",d,c)}})})}}function AS(o,i){o.removeSelectionAttribute("linkHref");for(const e of i)o.removeSelectionAttribute(e)}function IS(o){return o.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}class PS extends A{constructor(i){super(i);const e=this.bindTemplate;this.set({href:void 0,withText:!0}),this.extendTemplate({attributes:{class:["ck-link-toolbar__preview"],href:e.to("href"),target:"_blank",rel:"noopener noreferrer"},on:{click:e.to(t=>{if(this.href){const n=()=>t.preventDefault();this.fire("navigate",this.href,n)}})}}),this.template.tag="a"}}class RS extends E{constructor(e,t){super(e);u(this,"focusTracker",new ee);u(this,"keystrokes",new re);u(this,"backButtonView");u(this,"saveButtonView");u(this,"displayedTextInputView");u(this,"urlInputView");u(this,"children");u(this,"providersListChildren");u(this,"_validators");u(this,"_focusables",new ve);u(this,"_focusCycler");this._validators=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.displayedTextInputView=this._createDisplayedTextInput(),this.urlInputView=this._createUrlInput(),this.providersListChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView()]),this._createFormChildren(),this.listenTo(this.providersListChildren,"add",()=>{this.stopListening(this.providersListChildren,"add"),this.children.add(this._createProvidersListView())}),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-link-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),gi({view:this}),[this.urlInputView,this.saveButtonView,...this.providersListChildren,this.backButtonView,this.displayedTextInputView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createBackButton(){const e=this.locale.t,t=new A(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Zi,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new A(this.locale);return t.set({label:e("Insert"),tooltip:!1,withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new Jt(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new Yi(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using(t=>{const n=new ct(this.locale);return n.children.add(t),n}),e}_createDisplayedTextInput(){const e=this.locale.t,t=new he(this.locale,Xe);return t.label=e("Displayed text"),t.class="ck-labeled-field-view_full-width",t}_createUrlInput(){const e=this.locale.t,t=new he(this.locale,Xe);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new ke(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new ke(this.locale,{children:[this.urlInputView,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding","ck-form__row_large-bottom-padding"]}))}get url(){const{element:e}=this.urlInputView.fieldView;return e?e.value.trim():null}}class MS extends E{constructor(e){super(e);u(this,"focusTracker",new ee);u(this,"keystrokes",new re);u(this,"backButtonView");u(this,"listView");u(this,"listChildren");u(this,"emptyListInformation");u(this,"children");u(this,"_focusables",new ve);u(this,"_focusCycler");this.listChildren=this.createCollection(),this.backButtonView=this._createBackButton(),this.listView=this._createListView(),this.emptyListInformation=this._createEmptyLinksListItemView(),this.children=this.createCollection([this._createHeaderView(),this.emptyListInformation]),this.set("title",""),this.set("emptyListPlaceholder",""),this.set("hasItems",!1),this.listenTo(this.listChildren,"change",()=>{this.hasItems=this.listChildren.length>0}),this.on("change:hasItems",(t,n,s)=>{s?(this.children.remove(this.emptyListInformation),this.children.add(this.listView)):(this.children.remove(this.listView),this.children.add(this.emptyListInformation))}),this.keystrokes.set("Esc",(t,n)=>{this.fire("cancel"),n()}),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-providers"],tabindex:"-1"},children:this.children})}render(){super.render(),[this.listView,this.backButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createListView(){const e=new Yi(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const n=new ct(this.locale);return n.children.add(t),n}),e}_createBackButton(){const e=this.locale.t,t=new A(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Zi,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new Jt(this.locale);return e.bind("label").to(this,"title"),e.children.add(this.backButtonView,0),e}_createEmptyLinksListItemView(){const e=new E(this.locale);return e.setTemplate({tag:"p",attributes:{class:["ck","ck-link__empty-list-info"]},children:[{text:this.bindTemplate.to("emptyListPlaceholder")}]}),e}}class BS extends E{constructor(e){super(e);u(this,"focusTracker",new ee);u(this,"keystrokes",new re);u(this,"backButtonView");u(this,"children");u(this,"listChildren");u(this,"_focusables",new ve);u(this,"_focusCycler");this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-properties"],tabindex:"-1"},children:this.children}),this.keystrokes.set("Esc",(t,n)=>{this.fire("back"),n()})}render(){super.render(),[...this.listChildren,this.backButtonView].forEach(t=>{this._focusables.add(t),this.focusTracker.add(t.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBackButton(){const e=this.locale.t,t=new A(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Zi,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new Jt(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new Yi(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const n=new ct(this.locale);return n.children.add(t),n}),e}}class VS extends A{constructor(e){super(e);u(this,"arrowView");this.set({withText:!0}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-link__button"]}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new wt;return e.content=fg,e}}const ut="link-ui";class zS extends y{constructor(){super(...arguments);u(this,"toolbarView",null);u(this,"formView",null);u(this,"linkProviderItemsView",null);u(this,"propertiesView",null);u(this,"_balloon");u(this,"_linksProviders",new Be)}static get requires(){return[Pt,bs]}static get pluginName(){return"LinkUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;this.set("selectedLinkableText",void 0),e.editing.view.addObserver(O_),this._balloon=e.plugins.get(Pt),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:ut,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:ut,view:(n,{writer:s})=>{if(!n.markerRange.isCollapsed)return null;const r=s.createUIElement("span");return s.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],r),r}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:Eo},{label:t("Move out of a link"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}destroy(){super.destroy(),this.propertiesView&&this.propertiesView.destroy(),this.formView&&this.formView.destroy(),this.toolbarView&&this.toolbarView.destroy(),this.linkProviderItemsView&&this.linkProviderItemsView.destroy()}registerLinksListProvider(e){const t=this._linksProviders.filter(n=>(n.order||0)<=(e.order||0)).length;this._linksProviders.add(e,t)}_createViews(){const e=this.editor.commands.get("link");this.toolbarView=this._createToolbarView(),this.formView=this._createFormView(),e.manualDecorators.length&&(this.propertiesView=this._createPropertiesView()),this._enableUserBalloonInteractions()}_createToolbarView(){const e=this.editor,t=new ai(e.locale),n=e.commands.get("link");t.class="ck-link-toolbar";let s=e.config.get("link.toolbar");return n.manualDecorators.length||(s=s.filter(r=>r!=="linkProperties")),t.fillFromConfig(s,e.ui.componentFactory),t.keystrokes.set("Esc",(r,a)=>{this._hideUI(),a()}),t.keystrokes.set(Eo,(r,a)=>{this._addFormView(),a()}),e.ui.addToolbar(t,{isContextual:!0,beforeFocus:()=>{this._getSelectedLinkElement()&&!this._isToolbarVisible&&this._showUI(!0)},afterBlur:()=>{this._hideUI(!1)}}),t}_createFormView(){const e=this.editor,t=e.locale.t,n=e.commands.get("link"),s=e.config.get("link.defaultProtocol"),r=new(ls(RS))(e.locale,NS(e));return r.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",a=>a!==void 0),r.urlInputView.bind("isEnabled").to(n,"isEnabled"),r.saveButtonView.bind("isEnabled").to(n,"isEnabled"),r.saveButtonView.bind("label").to(n,"value",a=>t(a?"Update":"Insert")),this.listenTo(r,"submit",()=>{if(r.isValid()){const a=r.urlInputView.fieldView.element.value,l=kl(a,s),c=r.displayedTextInputView.fieldView.element.value;e.execute("link",l,this._getDecoratorSwitchesState(),c!==this.selectedLinkableText?c:void 0),this._closeFormView()}}),this.listenTo(r.urlInputView,"change:errorText",()=>{e.ui.update()}),this.listenTo(r,"cancel",()=>{this._closeFormView()}),r.keystrokes.set("Esc",(a,l)=>{this._closeFormView(),l()}),r.providersListChildren.bindTo(this._linksProviders).using(a=>this._createLinksListProviderButton(a)),r}_createLinkProviderListView(e){return e.getListItems().map(({href:t,label:n,icon:s})=>{const r=new A;return r.set({label:n,icon:s,tooltip:!1,withText:!0}),r.on("execute",()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=t,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),r})}_createLinkProviderItemsView(e){const t=this.editor,n=t.locale.t,s=new MS(t.locale),{emptyListPlaceholder:r,label:a}=e;return s.emptyListPlaceholder=r||n("No links available"),s.title=a,this.listenTo(s,"cancel",()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),s}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),n=new(ls(BS))(e.locale);return this.listenTo(n,"back",()=>{e.editing.view.focus(),this._removePropertiesView()}),n.listChildren.bindTo(t.manualDecorators).using(s=>{const r=new Yn(e.locale);return r.set({label:s.label,withText:!0}),r.bind("isOn").toMany([s,t],"value",(a,l)=>l===void 0&&a===void 0?!!s.defaultValue:!!a),r.on("execute",()=>{s.set("value",!r.isOn),e.execute("link",t.value,this._getDecoratorSwitchesState())}),r}),n}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce((t,n)=>{const s=e.value===void 0&&n.value===void 0?n.defaultValue:n.value;return{...t,[n.id]:!!s}},{})}_registerEditingOpeners(){this.editor.plugins.get(bs)._registerLinkOpener(t=>{const n=this._getLinkProviderLinkByHref(t);if(!n)return!1;const{item:s,provider:r}=n;return r.navigate?r.navigate(s):!1})}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",()=>{const t=this._createButton(A);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:link",()=>{const t=this._createButton(Ce);return t.set({role:"menuitemcheckbox"}),t}),e.ui.componentFactory.add("linkPreview",t=>{const n=new PS(t),s=e.config.get("link.allowedProtocols"),r=e.commands.get("link"),a=t.t;n.bind("isEnabled").to(r,"value",c=>!!c),n.bind("href").to(r,"value",c=>c&&Hf(c,s));const l=c=>{if(!c){n.label=void 0,n.icon=void 0,n.tooltip=a("Open link in new tab");return}const d=this._getLinkProviderLinkByHref(c);if(d){const{label:h,tooltip:m,icon:g}=d.item;n.label=h,n.tooltip=m||!1,n.icon=g}else n.label=c,n.icon=void 0,n.tooltip=a("Open link in new tab")};return l(r.value),this.listenTo(r,"change:value",(c,d,h)=>{l(h)}),this.listenTo(n,"navigate",(c,d,h)=>{const m=this._getLinkProviderLinkByHref(d);if(!m)return;const{provider:g,item:f}=m,{navigate:p}=g;p&&p(f)&&(c.stop(),h())}),n}),e.ui.componentFactory.add("unlink",t=>{const n=e.commands.get("unlink"),s=new A(t),r=t.t;return s.set({label:r("Unlink"),icon:R1,tooltip:!0}),s.bind("isEnabled").to(n),this.listenTo(s,"execute",()=>{e.execute("unlink"),this._hideUI()}),s}),e.ui.componentFactory.add("editLink",t=>{const n=e.commands.get("link"),s=new A(t),r=t.t;return s.set({label:r("Edit link"),icon:g1,tooltip:!0}),s.bind("isEnabled").to(n),this.listenTo(s,"execute",()=>{this._addFormView()}),s}),e.ui.componentFactory.add("linkProperties",t=>{const n=e.commands.get("link"),s=new A(t),r=t.t;return s.set({label:r("Link properties"),icon:y1,tooltip:!0}),s.bind("isEnabled").to(n,"isEnabled",n,"value",n,"manualDecorators",(a,l,c)=>a&&!!l&&c.length>0),this.listenTo(s,"execute",()=>{this._addPropertiesView()}),s})}_createLinksListProviderButton(e){const t=this.editor.locale,n=new VS(t);return n.set({label:e.label}),this.listenTo(n,"execute",()=>{this._showLinksProviderView(e)}),n}_createButton(e){const t=this.editor,n=t.locale,s=t.commands.get("link"),r=new e(t.locale),a=n.t;return r.set({label:a("Link"),icon:Y0,keystroke:Eo,isToggleable:!0}),r.bind("isEnabled").to(s,"isEnabled"),r.bind("isOn").to(s,"value",l=>!!l),this.listenTo(r,"execute",()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()}),r}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),e.keystrokes.set(Eo,(n,s)=>{s(),e.commands.get("link").isEnabled&&(e.editing.view.scrollToTheSelection(),this._showUI(!0))})}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",(e,t)=>{this._isToolbarVisible&&!this.toolbarView.focusTracker.isFocused&&(this.toolbarView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),mi({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:()=>[this._balloon.view.element],callback:()=>{this._hideUI(!1)}})}_addToolbarView(){this.toolbarView||this._createViews(),!this._isToolbarInPanel&&this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"})}_addFormView(){if(this.formView||this._createViews(),this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this.formView.resetFormStatus(),this.formView.backButtonView.isVisible=e.isEnabled&&!!e.value,this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this.selectedLinkableText=this._getSelectedLinkableText(),this.formView.displayedTextInputView.fieldView.value=this.selectedLinkableText||"",this.formView.urlInputView.fieldView.value=e.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_addPropertiesView(){this.propertiesView||this._createViews(),!this._arePropertiesInPanel&&(this.propertiesView.disableCssTransitions(),this._balloon.add({view:this.propertiesView,position:this._getBalloonPositionData()}),this.propertiesView.enableCssTransitions(),this.propertiesView.focus())}_showLinksProviderView(e){this.linkProviderItemsView&&this._removeLinksProviderView(),this.linkProviderItemsView=this._createLinkProviderItemsView(e),this._addLinkProviderItemsView(e)}_addLinkProviderItemsView(e){this.linkProviderItemsView.listChildren.clear(),this.linkProviderItemsView.listChildren.addMany(this._createLinkProviderListView(e)),this._balloon.add({view:this.linkProviderItemsView,position:this._getBalloonPositionData()}),this.linkProviderItemsView.focus()}_closeFormView(){const e=this.editor.commands.get("link");this.selectedLinkableText=void 0,e.value!==void 0?this._removeFormView():this._hideUI()}_removePropertiesView(){this._arePropertiesInPanel&&this._balloon.remove(this.propertiesView)}_removeLinksProviderView(){this._isLinksListInPanel&&this._balloon.remove(this.linkProviderItemsView)}_removeFormView(e=!0){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this.formView.displayedTextInputView.fieldView.reset(),this.formView.urlInputView.fieldView.reset(),this._balloon.remove(this.formView),e&&this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._isToolbarVisible?this._addFormView():this._addToolbarView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addToolbarView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(e=!0){const t=this.editor;this._isUIInPanel&&(this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e&&t.editing.view.focus(),this._removeLinksProviderView(),this._removePropertiesView(),this._removeFormView(e),this._isToolbarInPanel&&this._balloon.remove(this.toolbarView),this._hideFakeVisualSelection())}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let n=this._getSelectedLinkElement(),s=a();const r=()=>{const l=this._getSelectedLinkElement(),c=a();n&&!l||!n&&c!==s?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=l,s=c};function a(){return t.selection.focus.getAncestors().reverse().find(l=>l.is("element"))}this.listenTo(e.ui,"update",r),this.listenTo(this._balloon,"change:visibleView",r)}get _arePropertiesInPanel(){return!!this.propertiesView&&this._balloon.hasView(this.propertiesView)}get _isLinksListInPanel(){return!!this.linkProviderItemsView&&this._balloon.hasView(this.linkProviderItemsView)}get _isFormInPanel(){return!!this.formView&&this._balloon.hasView(this.formView)}get _isToolbarInPanel(){return!!this.toolbarView&&this._balloon.hasView(this.toolbarView)}get _isPropertiesVisible(){return!!this.propertiesView&&this._balloon.visibleView===this.propertiesView}get _isFormVisible(){return!!this.formView&&this._balloon.visibleView==this.formView}get _isToolbarVisible(){return!!this.toolbarView&&this._balloon.visibleView===this.toolbarView}get _isUIInPanel(){return this._arePropertiesInPanel||this._isLinksListInPanel||this._isFormInPanel||this._isToolbarInPanel}get _isUIVisible(){return this._isPropertiesVisible||this._isLinksListInPanel||this._isFormVisible||this._isToolbarVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;if(this.editor.model.markers.has(ut)){const s=this.editor.editing.mapper.markerNameToElements(ut);if(s){const r=Array.from(s),a=e.createRange(e.createPositionBefore(r[0]),e.createPositionAfter(r[r.length-1]));return{target:e.domConverter.viewRangeToDom(a)}}}return{target:()=>{const s=this._getSelectedLinkElement();return s?e.domConverter.mapViewToDom(s):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,n=t.getSelectedElement();if(t.isCollapsed||n&&le(n))return xr(t.getFirstPosition());{const s=t.getFirstRange().getTrimmed(),r=xr(s.start),a=xr(s.end);return!r||r!=a?null:e.createRangeIn(r).getTrimmed().isEqual(s)?r:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,n=this._getSelectedLinkElement();if(!n)return oa(e.document.selection.getFirstRange());const s=t.view.createRangeOn(n),r=t.mapper.toModelRange(s);return oa(r)}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const n=t.getItem?t.getItem(e):t.getListItems().find(s=>s.href===e);if(n)return{provider:t,item:n}}return null}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const n=e.document.selection.getFirstRange();if(e.markers.has(ut))t.updateMarker(ut,{range:n});else if(n.start.isAtEnd){const s=n.start.getLastMatchingPosition(({item:r})=>!e.schema.isContent(r),{boundaries:n});t.addMarker(ut,{usingOperation:!1,affectsData:!1,range:t.createRange(s,n.end)})}else t.addMarker(ut,{usingOperation:!1,affectsData:!1,range:n})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(ut)&&e.change(t=>{t.removeMarker(ut)})}}function xr(o){return o.getAncestors().find(i=>fS(i))||null}function NS(o){const i=o.t,e=o.config.get("link.allowCreatingEmptyLinks");return[t=>{if(!e&&!t.url.length)return i("Link URL must not be empty.")}]}const DS=4,qf=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63}))|localhost)(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i"),OS=2;class FS extends y{static get requires(){return[Qi,bs]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling(),this._enablePasteLinking()}_expandLinkRange(i,e){return e.textNode&&e.textNode.hasAttribute("linkHref")?Ns(e,"linkHref",e.textNode.getAttribute("linkHref"),i):null}_selectEntireLinks(i,e){const n=this.editor.model,s=n.document.selection,r=s.getFirstPosition(),a=s.getLastPosition();let l=e.getJoined(this._expandLinkRange(n,r)||e);l&&(l=l.getJoined(this._expandLinkRange(n,a)||e)),l&&(l.start.isBefore(r)||l.end.isAfter(a))&&i.setSelection(l)}_enablePasteLinking(){const i=this.editor,e=i.model,t=e.document.selection,n=i.plugins.get("ClipboardPipeline"),s=i.commands.get("link");n.on("inputTransformation",(r,a)=>{if(!this.isEnabled||!s.isEnabled||t.isCollapsed||a.method!=="paste"||t.rangeCount>1)return;const l=t.getFirstRange(),c=a.dataTransfer.getData("text/plain");if(!c)return;const d=c.match(qf);d&&d[2]===c&&(e.change(h=>{this._selectEntireLinks(h,l),s.execute(c)}),r.stop())},{priority:"high"})}_enableTypingHandling(){const i=this.editor,e=new oT(i.model,t=>{let n=t;if(!US(n))return;n=n.slice(0,-1),"!.:,;?".includes(n[n.length-1])&&(n=n.slice(0,-1));const s=Tu(n);if(s)return{url:s,removedTrailingCharacters:t.length-n.length}});e.on("matched:data",(t,n)=>{const{batch:s,range:r,url:a,removedTrailingCharacters:l}=n;if(!s.isTyping)return;const c=r.end.getShiftedBy(-l),d=c.getShiftedBy(-a.length),h=i.model.createRange(d,c);this._applyAutoLink(a,h)}),e.bind("isEnabled").to(this)}_enableEnterHandling(){const i=this.editor,e=i.model,t=i.commands.get("enter");t&&t.on("execute",()=>{var r;const n=e.document.selection.getFirstPosition();let s;(r=n.parent.previousSibling)!=null&&r.is("element")?s=e.createRangeIn(n.parent.previousSibling):s=e.createRange(e.createPositionAt(n.parent,0),n),this._checkAndApplyAutoLinkOnRange(s)})}_enableShiftEnterHandling(){const i=this.editor,e=i.model,t=i.commands.get("shiftEnter");t&&t.on("execute",()=>{const n=e.document.selection.getFirstPosition(),s=e.createRange(e.createPositionAt(n.parent,0),n.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(s)})}_checkAndApplyAutoLinkOnRange(i){const e=this.editor.model,{text:t,range:n}=af(i,e),s=Tu(t);if(s){const r=e.createRange(n.end.getShiftedBy(-s.length),n.end);this._applyAutoLink(s,r)}}_applyAutoLink(i,e){const t=this.editor.model,n=this.editor.config.get("link.defaultProtocol"),s=kl(i,n);!this.isEnabled||!HS(e,t)||!Wf(s)||WS(e)||this._persistAutoLink(s,e)}_persistAutoLink(i,e){const t=this.editor.model,n=this.editor.plugins.get("Delete");t.enqueueChange(s=>{s.setAttribute("linkHref",i,e),t.enqueueChange(()=>{n.requestUndoOnBackspace()})})}}function US(o){return o.length>DS&&o[o.length-1]===" "&&o[o.length-2]!==" "}function Tu(o){const i=qf.exec(o);return i?i[OS]:null}function HS(o,i){return i.schema.checkAttributeInSelection(i.createSelection(o),"linkHref")}function WS(o){const i=o.start.nodeAfter;return!!i&&i.hasAttribute("linkHref")}class qS extends y{static get requires(){return[bs,zS,FS]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}}/**
335
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
336
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
337
+ */class tt{constructor(i,e){u(this,"_startElement");u(this,"_referenceIndent");u(this,"_isForward");u(this,"_includeSelf");u(this,"_sameAttributes");u(this,"_sameIndent");u(this,"_lowerIndent");u(this,"_higherIndent");this._startElement=i,this._referenceIndent=i.getAttribute("listIndent"),this._isForward=e.direction=="forward",this._includeSelf=!!e.includeSelf,this._sameAttributes=Y(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(i,e){const n=new this(i,e)[Symbol.iterator]();return ue(n)}*[Symbol.iterator](){const i=[];for(const{node:e}of new no(this._getStartNode(),this._isForward?"forward":"backward")){const t=e.getAttribute("listIndent");if(t<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=t}else if(t>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){i.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){i.length&&(yield*i,i.length=0);break}continue}if(this._sameAttributes.some(n=>e.getAttribute(n)!==this._startElement.getAttribute(n)))break}i.length&&(yield*i,i.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class no{constructor(i,e="forward"){u(this,"_node");u(this,"_isForward");u(this,"_previousNodesByIndent",[]);u(this,"_previous",null);u(this,"_previousNodeIndent",null);this._node=i,this._isForward=e==="forward"}[Symbol.iterator](){return this}next(){if(!Q(this._node))return{done:!0,value:void 0};const i=this._node.getAttribute("listIndent");let e=null;if(this._previous){const n=this._previousNodeIndent;i>n?this._previousNodesByIndent[n]=this._previous:i<n?(e=this._previousNodesByIndent[i]||null,this._previousNodesByIndent.length=i):e=this._previous}const t={node:this._node,previous:this._previous,previousNodeInList:e};return this._previous=this._node,this._previousNodeIndent=i,this._node=this._isForward?this._node.nextSibling:this._node.previousSibling,{value:t,done:!1}}}class jS{constructor(i){u(this,"_listHead");this._listHead=i}[Symbol.iterator](){return new no(this._listHead)}}class Gi{static next(){return Me()}}function Q(o){return!!o&&o.is("element")&&o.hasAttribute("listItemId")}function yl(o,i={}){return[...Kt(o,{...i,direction:"backward"}),...Kt(o,{...i,direction:"forward"})]}function Kt(o,i={}){const e=i.direction=="forward",t=Array.from(new tt(o,{...i,includeSelf:e,sameIndent:!0,sameAttributes:"listItemId"}));return e?t:t.reverse()}function GS(o){return Array.from(new tt(o,{direction:"forward",higherIndent:!0}))}function jf(o,i){const e=new tt(o,{sameIndent:!0,sameAttributes:"listType",...i}),t=new tt(o,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward",...i});return[...Array.from(e).reverse(),...t]}function li(o){return!tt.first(o,{sameIndent:!0,sameAttributes:"listItemId"})}function Eu(o){return!tt.first(o,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function oo(o,i={}){o=Y(o);const e=i.withNested!==!1,t=new Set;for(const n of o)for(const s of yl(n,{higherIndent:e}))t.add(s);return fi(t)}function Os(o){o=Y(o);const i=new Set;for(const e of o)for(const t of jf(e))i.add(t);return fi(i)}function _l(o,i){const e=Kt(o,{direction:"forward"}),t=Gi.next();for(const n of e)i.setAttribute("listItemId",t,n);return e}function sa(o,i,e){const t={};for(const[s,r]of i.getAttributes())s.startsWith("list")&&(t[s]=r);const n=Kt(o,{direction:"forward"});for(const s of n)e.setAttributes(t,s);return n}function ra(o,i,{expand:e,indentBy:t=1}={}){o=Y(o);const n=e?oo(o):o;for(const s of n){const r=s.getAttribute("listIndent")+t;r<0?Fs(s,i):i.setAttribute("listIndent",r,s)}return n}function $S(o,i){o=Y(o);const e=oo(o),t=new Set,n=Math.min(...e.map(r=>r.getAttribute("listIndent"))),s=new Map;for(const r of e)s.set(r,tt.first(r,{lowerIndent:!0}));for(const r of e){if(t.has(r))continue;t.add(r);const a=r.getAttribute("listIndent")-1;if(a<0){Fs(r,i);continue}if(r.getAttribute("listIndent")==n){const l=ZS(r,s.get(r),i);for(const c of l)t.add(c);if(l.length)continue}i.setAttribute("listIndent",a,r)}return fi(t)}function Fs(o,i){o=Y(o);for(const e of o)e.is("element","listItem")&&i.rename(e,"paragraph");for(const e of o)for(const t of e.getAttributeKeys())t.startsWith("list")&&i.removeAttribute(t,e);return o}function Gn(o){if(!o.length)return!1;const i=o[0].getAttribute("listItemId");return i?!o.some(e=>e.getAttribute("listItemId")!=i):!1}function KS(o,i){const e=[];let t=Number.POSITIVE_INFINITY;for(const{node:n}of new no(o.nextSibling)){const s=n.getAttribute("listIndent");if(s==0)break;s<t&&(t=s);const r=s-t;i.setAttribute("listIndent",r,n),e.push(n)}return e}function fi(o){return Array.from(o).filter(i=>i.root.rootName!=="$graveyard").sort((i,e)=>i.index-e.index)}function $n(o){const i=o.document.selection.getSelectedElement();return i&&o.schema.isObject(i)&&o.schema.isBlock(i)?i:null}function Sr(o,i){return i.checkChild(o.parent,"listItem")&&i.checkChild(o,"$text")&&!i.isObject(o)}function vs(o){return o=="numbered"||o=="customNumbered"}function ZS(o,i,e){return Kt(i,{direction:"forward"}).pop().index>o.index?sa(o,i,e):[]}class xu extends B{constructor(e,t){super(e);u(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=Su(e.document.selection);e.change(n=>{const s=[];Gn(t)&&!li(t[0])?(this._direction=="forward"&&s.push(...ra(t,n)),s.push(..._l(t[0],n))):this._direction=="forward"?s.push(...ra(t,n,{expand:!0})):s.push(...$S(t,n));for(const r of s){if(!r.hasAttribute("listType"))continue;const a=tt.first(r,{sameIndent:!0});a&&n.setAttribute("listType",a.getAttribute("listType"),r)}this._fireAfterExecute(s)})}_fireAfterExecute(e){this.fire("afterExecute",fi(new Set(e)))}_checkEnabled(){let e=Su(this.editor.model.document.selection),t=e[0];if(!t)return!1;if(this._direction=="backward"||Gn(e)&&!li(e[0]))return!0;e=oo(e),t=e[0];const n=tt.first(t,{sameIndent:!0});return n?n.getAttribute("listType")==t.getAttribute("listType"):!1}}function Su(o){const i=Array.from(o.getSelectedBlocks()),e=i.findIndex(t=>!Q(t));return e!=-1&&(i.length=e),i}class xo extends B{constructor(e,t,n={}){super(e);u(this,"type");u(this,"_listWalkerOptions");this.type=t,this._listWalkerOptions=n.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,n=t.document,s=$n(t),r=Array.from(n.selection.getSelectedBlocks()).filter(l=>t.schema.checkAttribute(l,"listType")||Sr(l,t.schema)),a=e.forceValue!==void 0?!e.forceValue:this.value;t.change(l=>{if(a){const c=r[r.length-1],d=Kt(c,{direction:"forward"}),h=[];d.length>1&&h.push(..._l(d[1],l)),h.push(...Fs(r,l)),h.push(...KS(c,l)),this._fireAfterExecute(h)}else if((s||n.selection.isCollapsed)&&Q(r[0])){const c=jf(s||r[0],this._listWalkerOptions);for(const d of c)l.setAttributes({...e.additionalAttributes,listType:this.type},d);this._fireAfterExecute(c)}else{const c=[];for(const d of r)if(!d.hasAttribute("listType"))!d.is("element","listItem")&&Sr(d,t.schema)&&l.rename(d,"listItem"),l.setAttributes({...e.additionalAttributes,listIndent:0,listItemId:Gi.next(),listType:this.type},d),c.push(d);else for(const h of oo(d,{withNested:!1}))h.getAttribute("listType")!=this.type&&(l.setAttributes({...e.additionalAttributes,listType:this.type},h),c.push(h));this._fireAfterExecute(c)}})}_fireAfterExecute(e){this.fire("afterExecute",fi(new Set(e)))}_getValue(){const e=this.editor.model.document.selection,t=Array.from(e.getSelectedBlocks());if(!t.length)return!1;for(const n of t)if(n.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const e=this.editor.model,t=e.schema,n=e.document.selection,s=Array.from(n.getSelectedBlocks());if(!s.length)return!1;if(this.value)return!0;for(const r of s)if(t.checkAttribute(r,"listType")||Sr(r,t))return!0;return!1}}class Au extends B{constructor(e,t){super(e);u(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:e=!1}={}){const t=this.editor.model,n=t.document.selection,s=[];t.change(r=>{const{firstElement:a,lastElement:l}=this._getMergeSubjectElements(n,e),c=a.getAttribute("listIndent")||0,d=l.getAttribute("listIndent"),h=l.getAttribute("listItemId");if(c!=d){const m=GS(l);s.push(...ra([l,...m],r,{indentBy:c-d,expand:c<d}))}if(e){let m=n;n.isCollapsed&&(m=r.createSelection(r.createRange(r.createPositionAt(a,"end"),r.createPositionAt(l,0)))),t.deleteContent(m,{doNotResetEntireContent:n.isCollapsed});const g=m.getLastPosition().parent,f=g.nextSibling;s.push(g),f&&f!==l&&f.getAttribute("listItemId")==h&&s.push(...sa(f,g,r))}else s.push(...sa(l,a,r));this._fireAfterExecute(s)})}_fireAfterExecute(e){this.fire("afterExecute",fi(new Set(e)))}_checkEnabled(){const e=this.editor.model,t=e.document.selection,n=$n(e);if(t.isCollapsed||n){const s=n||t.getFirstPosition().parent;if(!Q(s))return!1;const r=this._direction=="backward"?s.previousSibling:s.nextSibling;if(!r||Gn([s,r]))return!1}else{const s=t.getLastPosition(),r=t.getFirstPosition();if(s.parent===r.parent||!Q(s.parent))return!1}return!0}_getMergeSubjectElements(e,t){const n=this.editor.model,s=$n(n);let r,a;if(e.isCollapsed||s){const l=s||e.getFirstPosition().parent,c=li(l);this._direction=="backward"?(a=l,c&&!t?r=tt.first(l,{sameIndent:!0,lowerIndent:!0}):r=l.previousSibling):(r=l,a=l.nextSibling)}else r=e.getFirstPosition().parent,a=e.getLastPosition().parent;return{firstElement:r,lastElement:a}}}class Iu extends B{constructor(e,t){super(e);u(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change(t=>{const n=_l(this._getStartBlock(),t);this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",fi(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&Q(t)&&!li(t)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return this._direction=="before"?t:t.nextSibling}}class JS extends y{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(i){return Os(i)}isFirstBlockOfListItem(i){return li(i)}isListItemBlock(i){return Q(i)}expandListBlocksToCompleteItems(i,e={}){return oo(i,e)}isNumberedListType(i){return vs(i)}}/**
338
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
339
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
340
+ */function YS(o){return o.is("element","ol")||o.is("element","ul")}function aa(o){return o.is("element","li")}function XS(o){let i=0,e=o.parent;for(;e;){if(aa(e))i++;else{const t=e.previousSibling;t&&aa(t)&&i++}e=e.parent}return i}function QS(o,i,e,t=$f(e,i)){return o.createAttributeElement(Gf(e),null,{priority:2*i/100-100,id:t})}function eA(o,i,e){return o.createAttributeElement("li",null,{priority:(2*i+1)/100-100,id:e})}function Gf(o){return o=="numbered"||o=="customNumbered"?"ol":"ul"}function $f(o,i){return`list-${o}-${i}`}function st(o,i,e){const t=o.nodeBefore;if(Q(t)){let n=t;for(const{node:s}of new no(n,"backward"))if(n=s,e.has(n)||(e.add(n),i.has(t)))return;i.add(n)}else{const n=o.nodeAfter;Q(n)&&i.add(n)}}function tA(o,i){let e=0,t=-1,n=null,s=!1;for(const{node:r}of o){const a=r.getAttribute("listIndent");if(a>e){let l;n===null?(n=a-e,l=e):(n>a&&(n=a),l=a-n),l>t+1&&(l=t+1),i.setAttribute("listIndent",l,r),s=!0,t=l}else n=null,e=a+1,t=a}return s}function iA(o,i,e){const t=new Set;let n=!1;for(const{node:s}of o){if(t.has(s))continue;let r=s.getAttribute("listType"),a=s.getAttribute("listItemId");if(i.has(a)&&(a=Gi.next()),i.add(a),s.is("element","listItem")){s.getAttribute("listItemId")!=a&&(e.setAttribute("listItemId",a,s),n=!0);continue}for(const l of Kt(s,{direction:"forward"}))t.add(l),l.getAttribute("listType")!=r&&(a=Gi.next(),r=l.getAttribute("listType")),l.getAttribute("listItemId")!=a&&(e.setAttribute("listItemId",a,l),n=!0)}return n}function nA(){return(o,i,e)=>{const{writer:t,schema:n}=e;if(!i.modelRange)return;const s=Array.from(i.modelRange.getItems({shallow:!0})).filter(h=>n.checkAttribute(h,"listItemId"));if(!s.length)return;const r=Gi.next(),a=XS(i.viewItem);let l=i.viewItem.parent&&i.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=s[0].getAttribute("listType");c&&(l=c);const d={listItemId:r,listIndent:a,listType:l};for(const h of s)h.hasAttribute("listItemId")||t.setAttributes(d,h);s.length>1&&s[1].getAttribute("listItemId")!=d.listItemId&&e.keepEmptyElement(s[0])}}function oA(o,i,e,t){return()=>{const a=o.document.differ.getChanges(),l=[],c=new Set,d=new Set,h=new Set;for(const m of a)if(m.type=="insert"&&m.name!="$text")st(m.position,c,h),m.attributes.has("listItemId")?d.add(m.position.nodeAfter):st(m.position.getShiftedBy(m.length),c,h);else if(m.type=="remove"&&m.attributes.has("listItemId"))st(m.position,c,h);else if(m.type=="attribute"){const g=m.range.start.nodeAfter;e.includes(m.attributeKey)?(st(m.range.start,c,h),m.attributeNewValue===null?(st(m.range.start.getShiftedBy(1),c,h),s(g)&&l.push(g)):d.add(g)):Q(g)&&s(g)&&l.push(g)}for(const m of c.values())l.push(...n(m,d));for(const m of new Set(l))i.reconvertItem(m)};function n(a,l){const c=[],d=new Set,h=[];for(const{node:m,previous:g}of new no(a)){if(d.has(m))continue;const f=m.getAttribute("listIndent");g&&f<g.getAttribute("listIndent")&&(h.length=f+1),h[f]=Object.fromEntries(Array.from(m.getAttributes()).filter(([b])=>e.includes(b)));const p=Kt(m,{direction:"forward"});for(const b of p)d.add(b),(s(b,p)||r(b,h,l))&&c.push(b)}return c}function s(a,l){const c=i.mapper.toViewElement(a);if(!c)return!1;if(t.fire("checkElement",{modelElement:a,viewElement:c}))return!0;if(!a.is("element","paragraph")&&!a.is("element","listItem"))return!1;const h=Zf(a,e,l);return h&&c.is("element","p")?!0:!!(!h&&c.is("element","span"))}function r(a,l,c){if(c.has(a))return!1;const d=i.mapper.toViewElement(a);let h=l.length-1;for(let m=d.parent;!m.is("editableElement");m=m.parent){const g=aa(m),f=YS(m);if(!f&&!g)continue;const p=`checkAttributes:${g?"item":"list"}`;if(t.fire(p,{viewElement:m,modelAttributes:l[h]}))break;if(f&&(h--,h<0))return!1}return!0}}function Pu(o,i,e,{dataPipeline:t}={}){const n=uA(o);return(s,r,a)=>{const{writer:l,mapper:c,consumable:d}=a,h=r.item;if(!o.includes(r.attributeKey)||!n(h,d))return;const m=rA(h,c,e);Kf(m,l,c),cA(m,l);const g=lA(h,m,i,l,{dataPipeline:t});dA(h,g,i,l)}}function sA(o){return(i,e,t)=>{const{writer:n,mapper:s}=t,r=i.name.split(":")[1];if(!o.checkAttribute(r,"listItemId"))return;const a=s.toViewPosition(e.position),l=e.position.getShiftedBy(e.length),c=s.toViewPosition(l,{isPhantom:!0}),h=n.createRange(a,c).getTrimmed().end.nodeBefore;/* istanbul ignore next -- @preserve */h&&Kf(h,n,s)}}function Ru(o,{dataPipeline:i}={}){return(e,{writer:t})=>{if(!Zf(e,o))return null;if(!i)return t.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const n=t.createContainerElement("p");return t.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function rA(o,i,e){const t=e.createRangeOn(o);return i.toViewRange(t).getTrimmed().end.nodeBefore}function aA(o,i){return(e,t)=>{if(t.modelPosition.offset>0)return;const n=t.modelPosition.parent;if(!Q(n)||!o.some(c=>c.scope=="itemMarker"&&c.canInjectMarkerIntoElement&&c.canInjectMarkerIntoElement(n)))return;const s=t.mapper.toViewElement(n),r=i.createRangeIn(s),a=r.getWalker();let l=r.start;for(const{item:c}of a){if(c.is("element")&&t.mapper.toModelElement(c)||c.is("$textProxy"))break;c.is("element")&&c.getCustomProperty("listItemMarker")&&(l=i.createPositionAfter(c),a.skip(({previousPosition:d})=>!d.isEqual(l)))}t.viewPosition=l}}function Kf(o,i,e){for(;o.parent.is("attributeElement")&&o.parent.getCustomProperty("listItemWrapper");)i.unwrap(i.createRangeOn(o),o.parent);const t=[];n(i.createPositionBefore(o).getWalker({direction:"backward"})),n(i.createRangeIn(o).getWalker());for(const s of t)i.remove(s);function n(s){for(const{item:r}of s){if(r.is("element")&&e.toModelElement(r))break;r.is("element")&&r.getCustomProperty("listItemMarker")&&t.push(r)}}}function lA(o,i,e,t,{dataPipeline:n}){let s=t.createRangeOn(i);if(!li(o))return s;for(const r of e){if(r.scope!="itemMarker")continue;const a=r.createElement(t,o,{dataPipeline:n});if(!a||(t.setCustomProperty("listItemMarker",!0,a),r.canInjectMarkerIntoElement&&r.canInjectMarkerIntoElement(o)?t.insert(t.createPositionAt(i,0),a):(t.insert(s.start,a),s=t.createRange(t.createPositionBefore(a),t.createPositionAfter(i))),!r.createWrapperElement||!r.canWrapElement))continue;const l=r.createWrapperElement(t,o,{dataPipeline:n});t.setCustomProperty("listItemWrapper",!0,l),r.canWrapElement(o)?s=t.wrap(s,l):(s=t.wrap(t.createRangeOn(a),l),s=t.createRange(s.start,t.createPositionAfter(i)))}return s}function cA(o,i){let e=o.parent;for(;e.is("attributeElement")&&["ul","ol","li"].includes(e.name);){const t=e.parent;i.unwrap(i.createRangeOn(o),e),e=t}}function dA(o,i,e,t){if(!o.hasAttribute("listIndent"))return;const n=o.getAttribute("listIndent");let s=o;for(let r=n;r>=0;r--){const a=eA(t,r,s.getAttribute("listItemId")),l=QS(t,r,s.getAttribute("listType"));for(const c of e)(c.scope=="list"||c.scope=="item")&&s.hasAttribute(c.attributeName)&&c.setAttributeOnDowncast(t,s.getAttribute(c.attributeName),c.scope=="list"?l:a);if(i=t.wrap(i,a),i=t.wrap(i,l),r==0||(s=tt.first(s,{lowerIndent:!0}),!s))break}}function uA(o){return(i,e)=>{const t=[];for(const n of o)i.hasAttribute(n)&&t.push(`attribute:${n}`);return t.every(n=>e.test(i,n)!==!1)?(t.forEach(n=>e.consume(i,n)),!0):!1}}function Zf(o,i,e=yl(o)){if(!Q(o))return!1;for(const t of o.getAttributeKeys())if(!(t.startsWith("selection:")||t=="htmlEmptyBlock")&&!i.includes(t))return!1;return e.length<2}const Uo=["listType","listIndent","listItemId"];class la extends y{constructor(e){super(e);u(this,"_downcastStrategies",[]);e.config.define("list.multiBlock",!0)}static get pluginName(){return"ListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Ds,Qi,JS,et]}init(){const e=this.editor,t=e.model,n=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new w("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:Uo}),n?(t.schema.extend("$container",{allowAttributesOf:"$listItem"}),t.schema.extend("$block",{allowAttributesOf:"$listItem"}),t.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):t.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const s of Uo)t.schema.setAttributeProperties(s,{copyOnReplace:!0});e.commands.add("numberedList",new xo(e,"numbered")),e.commands.add("bulletedList",new xo(e,"bulleted")),e.commands.add("customNumberedList",new xo(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new xo(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new xu(e,"forward")),e.commands.add("outdentList",new xu(e,"backward")),e.commands.add("splitListItemBefore",new Iu(e,"before")),e.commands.add("splitListItemAfter",new Iu(e,"after")),n&&(e.commands.add("mergeListItemBackward",new Au(e,"backward")),e.commands.add("mergeListItemForward",new Au(e,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const t=this.editor.commands,n=t.get("indent"),s=t.get("outdent");n&&n.registerChildCommand(t.get("indentList"),{priority:"high"}),s&&s.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...Uo,...this._downcastStrategies.map(e=>e.attributeName)]}_setupDeleteIntegration(){const e=this.editor,t=e.commands.get("mergeListItemBackward"),n=e.commands.get("mergeListItemForward");this.listenTo(e.editing.view.document,"delete",(s,r)=>{const a=e.model.document.selection;$n(e.model)||e.model.change(()=>{const l=a.getFirstPosition();if(a.isCollapsed&&r.direction=="backward"){if(!l.isAtStart)return;const c=l.parent;if(!Q(c))return;if(!tt.first(c,{sameAttributes:"listType",sameIndent:!0})&&c.getAttribute("listIndent")===0)Eu(c)||e.execute("splitListItemAfter"),e.execute("outdentList");else{if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:Mu(e.model,"backward")})}r.preventDefault(),s.stop()}else{if(a.isCollapsed&&!a.getLastPosition().isAtEnd||!n||!n.isEnabled)return;n.execute({shouldMergeOnBlocksContentLevel:Mu(e.model,"forward")}),r.preventDefault(),s.stop()}})},{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,n=e.commands,s=n.get("enter");this.listenTo(e.editing.view.document,"enter",(r,a)=>{const l=t.document,c=l.selection.getFirstPosition().parent;if(l.selection.isCollapsed&&Q(c)&&c.isEmpty&&!a.isSoft){const d=li(c),h=Eu(c);d&&h?(e.execute("outdentList"),a.preventDefault(),r.stop()):d&&!h?(e.execute("splitListItemAfter"),a.preventDefault(),r.stop()):h&&(e.execute("splitListItemBefore"),a.preventDefault(),r.stop())}},{context:"li"}),this.listenTo(s,"afterExecute",()=>{const r=n.get("splitListItemBefore");if(r.refresh(),!r.isEnabled)return;const l=e.model.document.selection.getLastPosition().parent;yl(l).length===2&&r.execute()})}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",(t,n)=>{const s=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(s).isEnabled&&(e.execute(s),n.stopPropagation(),n.preventDefault(),t.stop())},{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,n=this.getListAttributeNames(),s=e.config.get("list.multiBlock"),r=s?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(l,{writer:c})=>c.createElement(r,{listType:""})}).elementToElement({view:"p",model:(l,{writer:c})=>l.parent&&l.parent.is("element","li")?c.createElement(r,{listType:""}):null,converterPriority:"high"}).add(l=>{l.on("element:li",nA())}),s||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:r,view:Ru(n),converterPriority:"high"}).add(l=>{l.on("attribute",Pu(n,this._downcastStrategies,t)),l.on("remove",sA(t.schema))}),e.conversion.for("dataDowncast").elementToElement({model:r,view:Ru(n,{dataPipeline:!0}),converterPriority:"high"}).add(l=>{l.on("attribute",Pu(n,this._downcastStrategies,t,{dataPipeline:!0}))});const a=aA(this._downcastStrategies,e.editing.view);e.editing.mapper.on("modelToViewPosition",a),e.data.mapper.on("modelToViewPosition",a),this.listenTo(t.document,"change:data",oA(t,e.editing,n,this),{priority:"high"}),this.on("checkAttributes:item",(l,{viewElement:c,modelAttributes:d})=>{c.id!=d.listItemId&&(l.return=!0,l.stop())}),this.on("checkAttributes:list",(l,{viewElement:c,modelAttributes:d})=>{(c.name!=Gf(d.listType)||c.id!=$f(d.listType,d.listIndent))&&(l.return=!0,l.stop())})}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer(n=>hA(e,n,t,this)),this.on("postFixer",(n,{listNodes:s,writer:r})=>{n.return=tA(s,r)||n.return},{priority:"high"}),this.on("postFixer",(n,{listNodes:s,writer:r,seenIds:a})=>{n.return=iA(s,a,r)||n.return},{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",mA(e),{priority:"high"}),this.listenTo(t,"outputTransformation",(n,s)=>{e.change(r=>{const a=Array.from(s.content.getChildren()),l=a[a.length-1];if(a.length>1&&l.is("element")&&l.isEmpty&&a.slice(0,-1).every(Q)&&r.remove(l),s.method=="copy"||s.method=="cut"){const c=Array.from(s.content.getChildren());Gn(c)&&Fs(c,r)}})})}_setupAccessibilityIntegration(){const e=this.editor,t=e.t;e.accessibility.addKeystrokeInfoGroup({id:"list",label:t("Keystrokes that can be used in a list"),keystrokes:[{label:t("Increase list item indent"),keystroke:"Tab"},{label:t("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function hA(o,i,e,t){const n=o.document.differ.getChanges(),s=new Set,r=new Set,a=t.editor.config.get("list.multiBlock");let l=!1;for(const d of n){if(d.type=="insert"&&d.name!="$text"){const h=d.position.nodeAfter;if(!o.schema.checkAttribute(h,"listItemId"))for(const m of Array.from(h.getAttributeKeys()))e.includes(m)&&(i.removeAttribute(m,h),l=!0);st(d.position,r,s),d.attributes.has("listItemId")||st(d.position.getShiftedBy(d.length),r,s);for(const{item:m,previousPosition:g}of o.createRangeIn(h))Q(m)&&st(g,r,s)}else d.type=="remove"?st(d.position,r,s):d.type=="attribute"&&e.includes(d.attributeKey)&&(st(d.range.start,r,s),d.attributeNewValue===null&&st(d.range.start.getShiftedBy(1),r,s));if(!a&&d.type=="attribute"&&Uo.includes(d.attributeKey)){const h=d.range.start.nodeAfter;d.attributeNewValue===null&&h&&h.is("element","listItem")?(i.rename(h,"paragraph"),l=!0):d.attributeOldValue===null&&h&&h.is("element")&&h.name!="listItem"&&(i.rename(h,"listItem"),l=!0)}}const c=new Set;for(const d of r.values())l=t.fire("postFixer",{listNodes:new jS(d),listHead:d,writer:i,seenIds:c})||l;return l}function mA(o){return(i,[e,t])=>{const n=e.is("documentFragment")?Array.from(e.getChildren()):[e];if(!n.length)return;const r=(t?o.createSelection(t):o.document.selection).getFirstPosition();let a;if(Q(r.parent))a=r.parent;else if(Q(r.nodeBefore)&&Q(r.nodeAfter))a=r.nodeBefore;else return;o.change(l=>{const c=a.getAttribute("listType"),d=a.getAttribute("listIndent"),h=n[0].getAttribute("listIndent")||0,m=Math.max(d-h,0);for(const g of n){const f=Q(g);a.is("element","listItem")&&g.is("element","paragraph")&&l.rename(g,"listItem"),l.setAttributes({listIndent:(f?g.getAttribute("listIndent"):0)+m,listItemId:f?g.getAttribute("listItemId"):Gi.next(),listType:c},g)}})}}function Mu(o,i){const e=o.document.selection;if(!e.isCollapsed)return!$n(o);if(i==="forward")return!0;const n=e.getFirstPosition().parent,s=n.previousSibling;return o.schema.isObject(s)?!1:s.isEmpty?!0:Gn([n,s])}function Bu(o,i,e,t){o.ui.componentFactory.add(i,()=>{const n=Vu(A,o,i,e,t);return n.set({tooltip:!0,isToggleable:!0}),n}),o.ui.componentFactory.add(`menuBar:${i}`,()=>{const n=Vu(Ce,o,i,e,t);return n.set({role:"menuitemcheckbox",isToggleable:!0}),n})}function Vu(o,i,e,t,n){const s=i.commands.get(e),r=new o(i.locale);return r.set({label:t,icon:n}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.on("execute",()=>{i.execute(e),i.editing.view.focus()}),r}class gA extends y{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||Bu(this.editor,"numberedList",i("Numbered List"),el),this.editor.ui.componentFactory.has("bulletedList")||Bu(this.editor,"bulletedList",i("Bulleted List"),Qa)}}class fA extends y{static get requires(){return[la,gA]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}}class pA extends B{refresh(){const i=this._getValue();this.value=i,this.isEnabled=i!=null}execute({startIndex:i=1}={}){const e=this.editor.model,t=e.document;let n=Array.from(t.selection.getSelectedBlocks()).filter(s=>Q(s)&&vs(s.getAttribute("listType")));n=Os(n),e.change(s=>{for(const r of n)s.setAttribute("listStart",i>=0?i:1,r)})}_getValue(){const e=this.editor.model.document,t=ue(e.selection.getSelectedBlocks());return t&&Q(t)&&vs(t.getAttribute("listType"))?t.getAttribute("listStart"):null}}/**
341
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
342
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
343
+ */const Jf={},Yf={},Xf={},Qf=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:o,typeAttribute:i,listType:e}of Qf)Jf[o]=e,Yf[o]=i,i&&(Xf[i]=o);function ep(){return Qf.map(o=>o.listStyle)}function Cl(o){return Jf[o]||null}function tp(o){return Xf[o]||null}function ca(o){return Yf[o]||null}function wA(o){switch(o){case"lower-alpha":return"lower-latin";case"upper-alpha":return"upper-latin";default:return o}}class bA extends B{constructor(e,t,n){super(e);u(this,"defaultType");u(this,"_supportedTypes");this.defaultType=t,this._supportedTypes=n}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,n=t.document;t.change(s=>{this._tryToConvertItemsToList(e);let r=Array.from(n.selection.getSelectedBlocks()).filter(a=>a.hasAttribute("listType"));if(r.length){r=Os(r);for(const a of r)s.setAttribute("listStyle",e.type||this.defaultType,a)}})}isStyleTypeSupported(e){return this._supportedTypes?this._supportedTypes.includes(e):!0}_getValue(){const e=ue(this.editor.model.document.selection.getSelectedBlocks());return Q(e)?e.getAttribute("listStyle"):null}_checkEnabled(){const e=this.editor,t=e.commands.get("numberedList"),n=e.commands.get("bulletedList");return t.isEnabled||n.isEnabled}_tryToConvertItemsToList(e){if(!e.type)return;const t=Cl(e.type);if(!t)return;const n=this.editor,s=`${t}List`;n.commands.get(s).value||n.execute(s)}}class vA extends B{refresh(){const i=this._getValue();this.value=i,this.isEnabled=i!=null}execute(i={}){const e=this.editor.model,t=e.document;let n=Array.from(t.selection.getSelectedBlocks()).filter(s=>Q(s)&&s.getAttribute("listType")=="numbered");n=Os(n),e.change(s=>{for(const r of n)s.setAttribute("listReversed",!!i.reversed,r)})}_getValue(){const e=this.editor.model.document,t=ue(e.selection.getSelectedBlocks());return Q(t)&&t.getAttribute("listType")=="numbered"?t.getAttribute("listReversed"):null}}/**
344
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
345
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
346
+ */function zu(o){return(i,e,t)=>{const{writer:n,schema:s,consumable:r}=t;if(r.test(e.viewItem,o.viewConsumables)===!1)return;e.modelRange||Object.assign(e,t.convertChildren(e.viewItem,e.modelCursor));let a=!1;for(const l of e.modelRange.getItems({shallow:!0}))s.checkAttribute(l,o.attributeName)&&o.appliesToListItem(l)&&(l.hasAttribute(o.attributeName)||(n.setAttribute(o.attributeName,o.getAttributeOnUpcast(e.viewItem),l),a=!0));a&&r.consume(e.viewItem,o.viewConsumables)}}class kA extends y{static get pluginName(){return"ListPropertiesUtils"}static get isOfficialPlugin(){return!0}getAllSupportedStyleTypes(){return ep()}getListTypeFromListStyleType(i){return Cl(i)}getListStyleTypeFromTypeAttribute(i){return tp(i)}getTypeAttributeFromListStyleType(i){return ca(i)}}function ip(o){const{startIndex:i,reversed:e,styles:t}=o;return{styles:yA(t),startIndex:i||!1,reversed:e||!1}}function yA(o){const i={listTypes:["bulleted","numbered"],useAttribute:!1};return o===!0||(o?Array.isArray(o)||typeof o=="string"?i.listTypes=Y(o):(i.listTypes=o.listTypes?Y(o.listTypes):i.listTypes,i.useAttribute=!!o.useAttribute,o.listStyleTypes&&(i.listStyleTypes=o.listStyleTypes)):i.listTypes=[]),i}const mn="default";class _A extends y{static get requires(){return[la,kA]}static get pluginName(){return"ListPropertiesEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("list.properties",{styles:!0,startIndex:!1,reversed:!1})}init(){const i=this.editor,e=i.model,t=i.plugins.get(la),n=i.config.get("list.properties"),s=CA(n);for(const r of s)r.addCommand(i),e.schema.extend("$listItem",{allowAttributes:r.attributeName}),t.registerDowncastStrategy({scope:"list",attributeName:r.attributeName,setAttributeOnDowncast(a,l,c){r.setAttributeOnDowncast(a,l,c)}});i.conversion.for("upcast").add(r=>{for(const a of s)r.on("element:ol",zu(a)),r.on("element:ul",zu(a))}),t.on("checkAttributes:list",(r,{viewElement:a,modelAttributes:l})=>{for(const c of s)c.getAttributeOnUpcast(a)!=l[c.attributeName]&&(r.return=!0,r.stop())}),this.listenTo(i.commands.get("indentList"),"afterExecute",(r,a)=>{e.change(l=>{for(const c of a)for(const d of s)d.appliesToListItem(c)&&l.setAttribute(d.attributeName,d.defaultValue,c)})}),t.on("postFixer",(r,{listNodes:a,writer:l})=>{for(const{node:c}of a)for(const d of s)d.hasValidAttribute(c)||(d.appliesToListItem(c)?l.setAttribute(d.attributeName,d.defaultValue,c):l.removeAttribute(d.attributeName,c),r.return=!0)}),t.on("postFixer",(r,{listNodes:a,writer:l})=>{for(const{node:c,previousNodeInList:d}of a)if(d&&d.getAttribute("listType")==c.getAttribute("listType"))for(const h of s){const{attributeName:m}=h;if(!h.appliesToListItem(c))continue;const g=d.getAttribute(m);c.getAttribute(m)!=g&&(l.setAttribute(m,g,c),r.return=!0)}})}}function CA(o){const i=[],e=ip(o);if(o.styles){const t=e.styles.useAttribute;i.push({attributeName:"listStyle",defaultValue:mn,viewConsumables:{styles:"list-style-type"},addCommand(n){let s=ep();t&&(s=s.filter(r=>!!ca(r))),n.commands.add("listStyle",new bA(n,mn,s))},appliesToListItem(n){return n.getAttribute("listType")=="numbered"||n.getAttribute("listType")=="bulleted"},hasValidAttribute(n){if(!this.appliesToListItem(n))return!n.hasAttribute("listStyle");if(!n.hasAttribute("listStyle"))return!1;const s=n.getAttribute("listStyle");return s==mn?!0:Cl(s)==n.getAttribute("listType")},setAttributeOnDowncast(n,s,r){if(s&&s!==mn)if(t){const a=ca(s);if(a){n.setAttribute("type",a,r);return}}else{n.setStyle("list-style-type",s,r);return}n.removeStyle("list-style-type",r),n.removeAttribute("type",r)},getAttributeOnUpcast(n){const s=n.getStyle("list-style-type");if(s)return wA(s);const r=n.getAttribute("type");return r?tp(r):mn}})}return o.reversed&&i.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new vA(t))},appliesToListItem(t){return t.getAttribute("listType")=="numbered"},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,n,s){n?t.setAttribute("reversed","reversed",s):t.removeAttribute("reversed",s)},getAttributeOnUpcast(t){return t.hasAttribute("reversed")}}),o.startIndex&&i.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new pA(t))},appliesToListItem(t){return vs(t.getAttribute("listType"))},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,n,s){n==0||n>1?t.setAttribute("start",n,s):t.removeAttribute("start",s)},getAttributeOnUpcast(t){const n=t.getAttribute("start");return n>=0?n:1}}),i}class np extends E{constructor(e,{enabledProperties:t,styleButtonViews:n,styleGridAriaLabel:s}){super(e);u(this,"children");u(this,"stylesView",null);u(this,"additionalPropertiesCollapsibleView",null);u(this,"startIndexFieldView",null);u(this,"reversedSwitchButtonView",null);u(this,"focusTracker",new ee);u(this,"keystrokes",new re);u(this,"focusables",new ve);u(this,"focusCycler");const r=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new Ae({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),n&&n.length?(this.stylesView=this._createStylesView(n,s),this.children.add(this.stylesView)):r.push("ck-list-properties_without-styles"),(t.startIndex||t.reversed)&&(this._addNumberedListPropertyViews(t),r.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:r},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const e of this.stylesView.children)this.stylesView.focusTracker.add(e.element);rl({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>T.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element);const e=t=>t.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(e,t){const n=new E(this.locale);return n.children=n.createCollection(),n.children.addMany(e),n.setTemplate({tag:"div",attributes:{"aria-label":t,class:["ck","ck-list-styles-list"]},children:n.children}),n.children.delegate("execute").to(this),n.focus=function(){for(const s of this.children)if(s instanceof A&&s.isOn){s.focus();return}this.children.first.focus()},n.focusTracker=new ee,n.keystrokes=new re,n.render(),n.keystrokes.listenTo(n.element),n}_addNumberedListPropertyViews(e){const t=this.locale.t,n=[];e.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),n.push(this.startIndexFieldView)),e.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),n.push(this.reversedSwitchButtonView)),this.stylesView?(this.additionalPropertiesCollapsibleView=new Mg(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:t("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",(...s)=>s.some(r=>r)),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",(s,r,a)=>{a||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)}),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(n)}_createStartIndexField(){const e=this.locale.t,t=new he(this.locale,qg);return t.set({label:e("Start at"),class:"ck-numbered-list-properties__start-index"}),t.fieldView.set({min:0,step:1,value:1,inputMode:"numeric"}),t.fieldView.on("input",()=>{const n=t.fieldView.element,s=n.valueAsNumber;if(Number.isNaN(s)){t.errorText=e("Invalid start index value.");return}n.checkValidity()?this.fire("listStart",{startIndex:s}):t.errorText=e("Start index must be greater than 0.")}),t}_createReversedSwitchButton(){const e=this.locale.t,t=new Yn(this.locale);return t.set({withText:!0,label:e("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),t.delegate("execute").to(this,"listReversed"),t}}class LA extends y{static get pluginName(){return"ListPropertiesUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=i.config.get("list.properties"),n=ip(t),s=n.styles.listTypes;if(s.includes("bulleted")){const r=[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:t1},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:X0},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:o1}],a=e("Bulleted List"),l=e("Bulleted list styles toolbar"),c="bulletedList";i.ui.componentFactory.add(c,Nu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,buttonIcon:Qa,styleGridAriaLabel:l,styleDefinitions:r})),i.ui.componentFactory.add(`menuBar:${c}`,Du({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,styleGridAriaLabel:l,styleDefinitions:r}))}if(s.includes("numbered")||t.startIndex||t.reversed){const r=[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:e1},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:Q0},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:n1},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:r1},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:i1},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:s1}],a=e("Numbered List"),l=e("Numbered list styles toolbar"),c="numberedList";i.ui.componentFactory.add(c,Nu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,buttonIcon:el,styleGridAriaLabel:l,styleDefinitions:r})),s.includes("numbered")&&i.ui.componentFactory.add(`menuBar:${c}`,Du({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,styleGridAriaLabel:l,styleDefinitions:r}))}}}function Nu({editor:o,normalizedConfig:i,parentCommandName:e,buttonLabel:t,buttonIcon:n,styleGridAriaLabel:s,styleDefinitions:r}){const a=o.commands.get(e);return l=>{const c=We(l,Xn),d=c.buttonView;return c.bind("isEnabled").to(a),c.class="ck-list-styles-dropdown",d.on("execute",()=>{o.execute(e),o.editing.view.focus()}),d.set({label:t,icon:n,tooltip:!0,isToggleable:!0}),d.bind("isOn").to(a,"value",h=>!!h),c.once("change:isOpen",()=>{const h=TA({editor:o,normalizedConfig:i,dropdownView:c,parentCommandName:e,styleGridAriaLabel:s,styleDefinitions:r});c.panelView.children.add(h)}),c.on("execute",()=>{o.editing.view.focus()}),c}}function op({editor:o,listStyleCommand:i,parentCommandName:e}){const t=o.locale,n=o.commands.get(e);return({label:s,type:r,icon:a,tooltip:l})=>{const c=new A(t);return c.set({label:s,icon:a,tooltip:l}),c.bind("isOn").to(i,"value",d=>d===r),c.on("execute",()=>{n.value?i.value===r?o.execute(e):i.value!==r&&o.execute("listStyle",{type:r}):o.model.change(()=>{o.execute("listStyle",{type:r})})}),c}}function TA({editor:o,normalizedConfig:i,dropdownView:e,parentCommandName:t,styleDefinitions:n,styleGridAriaLabel:s}){const r=o.locale,a={...i,...t!="numberedList"?{startIndex:!1,reversed:!1}:null},l=t.replace("List","");let c=null;if(i.styles.listTypes.includes(l)){const h=o.commands.get("listStyle"),m=op({editor:o,parentCommandName:t,listStyleCommand:h}),g=i.styles.listStyleTypes;let f=n;if(g){const b=g[l];b&&(f=n.filter(k=>b.includes(k.type)))}const p=sp(h);c=f.filter(p).map(m)}const d=new np(r,{styleGridAriaLabel:s,enabledProperties:a,styleButtonViews:c});if(i.styles.listTypes.includes(l)&&ll(e,()=>d.stylesView.children.find(h=>h.isOn)),a.startIndex){const h=o.commands.get("listStart");d.startIndexFieldView.bind("isEnabled").to(h),d.startIndexFieldView.fieldView.bind("value").to(h),d.on("listStart",(m,g)=>o.execute("listStart",g))}if(a.reversed){const h=o.commands.get("listReversed");d.reversedSwitchButtonView.bind("isEnabled").to(h),d.reversedSwitchButtonView.bind("isOn").to(h,"value",m=>!!m),d.on("listReversed",()=>{const m=h.value;o.execute("listReversed",{reversed:!m})})}return d.delegate("execute").to(e),d}function Du({editor:o,normalizedConfig:i,parentCommandName:e,buttonLabel:t,styleGridAriaLabel:n,styleDefinitions:s}){return r=>{const a=new pt(r),l=o.commands.get(e),c=o.commands.get("listStyle"),d=sp(c),h=op({editor:o,parentCommandName:e,listStyleCommand:c}),m=i.styles.listStyleTypes;let g=s;if(m){const b=l.type,k=m[b];k&&(g=s.filter(_=>k.includes(_.type)))}const f=g.filter(d).map(h),p=new np(r,{styleGridAriaLabel:n,enabledProperties:{...i,startIndex:!1,reversed:!1},styleButtonViews:f});return p.delegate("execute").to(a),a.buttonView.set({label:t,icon:e==="bulletedList"?Qa:el}),a.panelView.children.add(p),a.bind("isEnabled").to(l,"isEnabled"),a.on("execute",()=>{o.editing.view.focus()}),a}}function sp(o){return typeof o.isStyleTypeSupported=="function"?i=>o.isStyleTypeSupported(i.type):()=>!0}class EA extends y{static get requires(){return[_A,LA]}static get pluginName(){return"ListProperties"}static get isOfficialPlugin(){return!0}}/**
347
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
348
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
349
+ */z.arrowup,z.arrowdown,z.esc;z.enter,z.tab;/**
350
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
351
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
352
+ */class xA extends B{constructor(i){super(i),this.affectsData=!1,this.value=!1}execute(){const i="ck-show-blocks",e=this.editor.editing.view;e.change(t=>{for(const n of e.document.roots)n.hasClass(i)?(t.removeClass(i,n),this.value=!1):(t.addClass(i,n),this.value=!0)})}}class SA extends y{static get pluginName(){return"ShowBlocksEditing"}static get isOfficialPlugin(){return!0}init(){const{editor:i}=this;i.commands.add("showBlocks",new xA(i))}}class AA extends y{static get pluginName(){return"ShowBlocksUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("showBlocks",()=>{const e=this._createButton(A);return e.set({tooltip:!0,icon:_1}),e}),i.ui.componentFactory.add("menuBar:showBlocks",()=>this._createButton(Ce))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("showBlocks"),s=new i(t),r=t.t;return s.set({label:r("Show blocks"),isToggleable:!0,role:"menuitemcheckbox"}),s.bind("isEnabled").to(n),s.bind("isOn").to(n,"value",n,"isEnabled",(a,l)=>a&&l),this.listenTo(s,"execute",()=>{e.execute("showBlocks"),e.editing.view.focus()}),s}}class IA extends y{static get pluginName(){return"ShowBlocks"}static get isOfficialPlugin(){return!0}static get requires(){return[SA,AA]}}/**
353
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
354
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
355
+ */const So="SourceEditingMode";class PA extends y{constructor(e){super(e);u(this,"_elementReplacer");u(this,"_replacedRoots");u(this,"_dataFromRoots");this.set("isSourceEditingMode",!1),this._elementReplacer=new Xh,this._replacedRoots=new Map,this._dataFromRoots=new Map,e.config.define("sourceEditing.allowCollaborationFeatures",!1)}static get pluginName(){return"SourceEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[qi]}init(){this._checkCompatibility();const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("sourceEditing",()=>{const n=this._createButton(A);return n.set({label:t("Source"),icon:C1,tooltip:!0,class:"ck-source-editing-button"}),n}),e.ui.componentFactory.add("menuBar:sourceEditing",()=>{const n=this._createButton(Ce);return n.set({label:t("Show source"),role:"menuitemcheckbox"}),n}),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",(n,s,r)=>{r?(this._hideVisibleDialog(),this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())}),this.on("change:isEnabled",(n,s,r)=>this._handleReadOnlyMode(!r)),this.listenTo(e,"change:isReadOnly",(n,s,r)=>this._handleReadOnlyMode(r))),e.data.on("get",()=>{this.isSourceEditingMode&&this.updateEditorData()},{priority:"high"})}updateEditorData(){const e=this.editor,t={};for(const[n,s]of this._replacedRoots){const r=this._dataFromRoots.get(n),a=s.dataset.value;r!==a&&(t[n]=a,this._dataFromRoots.set(n,a))}Object.keys(t).length&&e.data.set(t,{batchType:{isUndoable:!0},suppressErrorInCollaboration:!0})}_checkCompatibility(){const e=this.editor,t=e.config.get("sourceEditing.allowCollaborationFeatures");if(!t&&e.plugins.has("RealTimeCollaborativeEditing"))throw new w("source-editing-incompatible-with-real-time-collaboration",null);!t&&["CommentsEditing","TrackChangesEditing","RevisionHistory"].some(s=>e.plugins.has(s))&&console.warn("You initialized the editor with the source editing feature and at least one of the collaboration features. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the collaboration features."),e.plugins.has("RestrictedEditingModeEditing")&&console.warn("You initialized the editor with the source editing feature and restricted editing feature. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the restricted editing feature.")}_showSourceEditing(){const e=this.editor,t=e.editing.view,n=e.model;n.change(s=>{s.setSelection(null),s.removeSelectionAttribute(n.document.selection.getAttributeKeys())});for(const[s,r]of t.domRoots){const a=RA(e.data.get({rootName:s})),l=Oe(r.ownerDocument,"textarea",{rows:"1","aria-label":"Source code editing area"}),c=Oe(r.ownerDocument,"div",{class:"ck-source-editing-area","data-value":a},[l]);l.value=a,l.setSelectionRange(0,0),l.addEventListener("input",()=>{c.dataset.value=l.value,e.ui.update()}),t.change(d=>{const h=t.document.getRoot(s);d.addClass("ck-hidden",h)}),e.ui.setEditableElement("sourceEditing:"+s,l),this._replacedRoots.set(s,c),this._elementReplacer.replace(r,c),this._dataFromRoots.set(s,a)}this._hideDocumentOutline(),this._refreshAnnotationsVisibility(),this._focusSourceEditing()}_hideSourceEditing(){const t=this.editor.editing.view;this.updateEditorData(),t.change(n=>{for(const[s]of this._replacedRoots)n.removeClass("ck-hidden",t.document.getRoot(s))}),this._elementReplacer.restore(),this._replacedRoots.clear(),this._dataFromRoots.clear(),this._showDocumentOutline(),this._refreshAnnotationsVisibility(),t.focus()}_hideDocumentOutline(){this.editor.plugins.has("DocumentOutlineUI")&&(this.editor.plugins.get("DocumentOutlineUI").view.element.style.display="none")}_showDocumentOutline(){this.editor.plugins.has("DocumentOutlineUI")&&(this.editor.plugins.get("DocumentOutlineUI").view.element.style.display="")}_refreshAnnotationsVisibility(){this.editor.plugins.has("Annotations")&&this.editor.plugins.get("Annotations").refreshVisibility()}_focusSourceEditing(){const e=this.editor,[t]=this._replacedRoots.values(),n=t.querySelector("textarea");e.editing.view.document.isFocused=!1,n.focus()}_disableCommands(){const e=this.editor;for(const t of e.commands.commands())t.forceDisabled(So);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").forceDisabled(So)}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled(So);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").clearForceDisabled(So)}_handleReadOnlyMode(e){if(this.isSourceEditingMode)for(const[,t]of this._replacedRoots)t.querySelector("textarea").readOnly=e}_isAllowedToHandleSourceEditingMode(){const t=this.editor.ui.view.editable;return t&&!t.hasExternalElement}_hideVisibleDialog(){if(this.editor.plugins.has("Dialog")){const e=this.editor.plugins.get("Dialog");e.isOpen&&e.hide()}}_createButton(e){const t=this.editor,n=new e(t.locale);return n.set({withText:!0,isToggleable:!0}),n.bind("isOn").to(this,"isSourceEditingMode"),n.bind("isEnabled").to(this,"isEnabled",t,"isReadOnly",t.plugins.get(qi),"hasAny",(s,r,a)=>!(!s||r||a)),this.listenTo(n,"execute",()=>{this.isSourceEditingMode=!this.isSourceEditingMode}),n}}function RA(o){return MA(o)?iv(o):o}function MA(o){return o.startsWith("<")}/**
356
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
357
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
358
+ */function Ll(o,i){const{modelAttribute:e,styleName:t,viewElement:n,defaultValue:s,reduceBoxSides:r=!1,shouldUpcast:a=()=>!0}=i;o.for("upcast").attributeToAttribute({view:{name:n,styles:{[t]:/[\s\S]+/}},model:{key:e,value:(l,c,d)=>{if(!a(l))return;const h=Ht(s,"",d),m=l.getNormalizedStyle(t),g=r?Wo(m):m;if(h!==g)return g}}})}function da(o,i,e,t){o.for("upcast").add(n=>n.on("element:"+i,(s,r,a)=>{if(!r.modelRange)return;const l=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter(p=>r.viewItem.hasStyle(p));if(!l.length)return;const c={styles:l};if(!a.consumable.test(r.viewItem,c))return;const d=[...r.modelRange.getItems({shallow:!0})].pop(),h=d.findAncestor("table",{includeSelf:!0});let m=t;h&&h.getAttribute("tableType")=="layout"&&(m={style:"none",color:"",width:""}),a.consumable.consume(r.viewItem,c);const g={style:r.viewItem.getNormalizedStyle("border-style"),color:r.viewItem.getNormalizedStyle("border-color"),width:r.viewItem.getNormalizedStyle("border-width")},f={style:Wo(g.style),color:Wo(g.color),width:Wo(g.width)};f.style!==m.style&&a.writer.setAttribute(e.style,f.style,d),f.color!==m.color&&a.writer.setAttribute(e.color,f.color,d),f.width!==m.width&&a.writer.setAttribute(e.width,f.width,d)}))}function Sn(o,i){const{modelElement:e,modelAttribute:t,styleName:n}=i;o.for("downcast").attributeToAttribute({model:{name:e,key:t},view:s=>({key:"style",value:{[n]:s}})})}function Ho(o,i){const{modelAttribute:e,styleName:t}=i;o.for("downcast").add(n=>n.on(`attribute:${e}:table`,(s,r,a)=>{const{item:l,attributeNewValue:c}=r,{mapper:d,writer:h}=a;if(!a.consumable.consume(r.item,s.name))return;const m=[...d.toViewElement(l).getChildren()].find(g=>g.is("element","table"));c?h.setStyle(t,c,m):h.removeStyle(t,m)}))}function Ht(o,i,e){const t=e.modelRange&&ue(e.modelRange.getItems({shallow:!0})),n=t&&t.is("element")&&t.findAncestor("table",{includeSelf:!0});return n&&n.getAttribute("tableType")==="layout"?i:o}function Wo(o){if(!o)return;const i=["top","right","bottom","left"];if(!i.every(s=>o[s]))return o;const t=o.top;return i.every(s=>o[s]===t)?t:o}function ae(o,i,e,t,n=1){i!=null&&n!==void 0&&n!==null&&i>n?t.setAttribute(o,i,e):t.removeAttribute(o,e)}function pi(o,i,e={}){const t=o.createElement("tableCell",e);return o.insertElement("paragraph",t),o.insert(t,i),t}function ua(o,i){const e=i.parent.parent,t=parseInt(e.getAttribute("headingColumns")||"0"),{column:n}=o.getCellLocation(i);return!!t&&n<t}function qo(o,i,e){const{modelAttribute:t}=e;o.extend("tableCell",{allowAttributes:[t]}),Ll(i,{viewElement:/^(td|th)$/,...e}),Sn(i,{modelElement:"tableCell",...e})}function Wt(o){const i=o.getSelectedElement();return i&&i.is("element","table")?i:o.getFirstPosition().findAncestor("table")}function BA(){return o=>{o.on("element:figure",(i,e,t)=>{if(!t.consumable.test(e.viewItem,{name:!0,classes:"table"}))return;const n=NA(e.viewItem);if(!n||!t.consumable.test(n,{name:!0}))return;t.consumable.consume(e.viewItem,{name:!0,classes:"table"});const s=t.convertItem(n,e.modelCursor),r=ue(s.modelRange.getItems());if(!r){t.consumable.revert(e.viewItem,{name:!0,classes:"table"});return}t.convertChildren(e.viewItem,t.writer.createPositionAt(r,"end")),t.updateConversionResult(r,e)})}}function VA(){return o=>{o.on("element:table",(i,e,t)=>{const n=e.viewItem;if(!t.consumable.test(n,{name:!0}))return;const{rows:s,headingRows:r,headingColumns:a}=DA(n),l={};a&&(l.headingColumns=a),r&&(l.headingRows=r);const c=t.writer.createElement("table",l);if(t.safeInsert(c,e.modelCursor)){if(t.consumable.consume(n,{name:!0}),s.forEach(d=>t.convertItem(d,t.writer.createPositionAt(c,"end"))),t.convertChildren(n,t.writer.createPositionAt(c,"end")),c.isEmpty){const d=t.writer.createElement("tableRow");t.writer.insert(d,t.writer.createPositionAt(c,"end")),pi(t.writer,t.writer.createPositionAt(d,"end"))}t.updateConversionResult(c,e)}})}}function zA(){return o=>{o.on("element:tr",(i,e)=>{e.viewItem.isEmpty&&e.modelCursor.index==0&&i.stop()},{priority:"high"})}}function Ou(o){return i=>{i.on(`element:${o}`,(e,t,{writer:n})=>{if(!t.modelRange)return;const s=t.modelRange.start.nodeAfter,r=n.createPositionAt(s,0);if(t.viewItem.isEmpty){n.insertElement("paragraph",r);return}const a=Array.from(s.getChildren());if(a.every(l=>l.is("element","$marker"))){const l=n.createElement("paragraph");n.insert(l,n.createPositionAt(s,0));for(const c of a)n.move(n.createRangeOn(c),n.createPositionAt(l,"end"))}},{priority:"low"})}}function NA(o){for(const i of o.getChildren())if(i.is("element","table"))return i}function DA(o){let i=0,e;const t=[],n=[];let s;for(const r of Array.from(o.getChildren())){if(r.name!=="tbody"&&r.name!=="thead"&&r.name!=="tfoot")continue;r.name==="thead"&&!s&&(s=r);const a=Array.from(r.getChildren()).filter(c=>c.is("element","tr"));let l=null;for(const c of a){const d=Array.from(c.getChildren()).filter(h=>h.is("element","td")||h.is("element","th"));if(s&&r===s||r.name==="tbody"&&d.length>0&&(l===null||d.length===l)&&d.every(h=>h.is("element","th")))i++,t.push(c);else{n.push(c);const h=OA(c);(!e||h<e)&&(e=h)}l=Math.max(l||0,d.length)}}return{headingRows:i,headingColumns:e||0,rows:[...t,...n]}}function OA(o){let i=0,e=0;const t=Array.from(o.getChildren()).filter(n=>n.name==="th"||n.name==="td");for(;e<t.length&&t[e].name==="th";){const n=t[e],s=parseInt(n.getAttribute("colspan")||"1");i=i+s,e++}return i}/**
359
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
360
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
361
+ */class q{constructor(i,e={}){u(this,"_table");u(this,"_startRow");u(this,"_endRow");u(this,"_startColumn");u(this,"_endColumn");u(this,"_includeAllSlots");u(this,"_skipRows");u(this,"_row");u(this,"_rowIndex");u(this,"_column");u(this,"_cellIndex");u(this,"_spannedCells");u(this,"_nextCellAtColumn");u(this,"_jumpedToStartRow",!1);this._table=i,this._startRow=e.row!==void 0?e.row:e.startRow||0,this._endRow=e.row!==void 0?e.row:e.endRow,this._startColumn=e.column!==void 0?e.column:e.startColumn||0,this._endColumn=e.column!==void 0?e.column:e.endColumn,this._includeAllSlots=!!e.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){this._canJumpToStartRow()&&this._jumpToNonSpannedRowClosestToStartRow();const i=this._table.getChild(this._rowIndex);if(!i||this._isOverEndRow())return{done:!0,value:void 0};if(!i.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let e=null;const t=this._getSpanned();if(t)this._includeAllSlots&&!this._shouldSkipSlot()&&(e=this._formatOutValue(t.cell,t.row,t.column));else{const n=i.getChild(this._cellIndex);if(!n)return this._advanceToNextRow();const s=parseInt(n.getAttribute("colspan")||"1"),r=parseInt(n.getAttribute("rowspan")||"1");(s>1||r>1)&&this._recordSpans(n,r,s),this._shouldSkipSlot()||(e=this._formatOutValue(n)),this._nextCellAtColumn=this._column+s}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,e||this.next()}skipRow(i){this._skipRows.add(i)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return this._endRow!==void 0&&this._row>this._endRow}_isOverEndColumn(){return this._endColumn!==void 0&&this._column>this._endColumn}_formatOutValue(i,e=this._row,t=this._column){return{done:!1,value:new FA(this,i,e,t)}}_shouldSkipSlot(){const i=this._skipRows.has(this._row),e=this._row<this._startRow,t=this._column<this._startColumn,n=this._endColumn!==void 0&&this._column>this._endColumn;return i||e||t||n}_getSpanned(){const i=this._spannedCells.get(this._row);return i&&i.get(this._column)||null}_recordSpans(i,e,t){const n={cell:i,row:this._row,column:this._column};for(let s=this._row;s<this._row+e;s++)for(let r=this._column;r<this._column+t;r++)(s!=this._row||r!=this._column)&&this._markSpannedCell(s,r,n)}_markSpannedCell(i,e,t){this._spannedCells.has(i)||this._spannedCells.set(i,new Map),this._spannedCells.get(i).set(e,t)}_canJumpToStartRow(){return!!this._startRow&&this._startRow>0&&!this._jumpedToStartRow}_jumpToNonSpannedRowClosestToStartRow(){const i=this._getRowLength(0);for(let e=this._startRow;!this._jumpedToStartRow;e--)i===this._getRowLength(e)&&(this._row=e,this._rowIndex=e,this._jumpedToStartRow=!0)}_getRowLength(i){return[...this._table.getChild(i).getChildren()].reduce((t,n)=>t+parseInt(n.getAttribute("colspan")||"1"),0)}}class FA{constructor(i,e,t,n){u(this,"cell");u(this,"row");u(this,"column");u(this,"cellAnchorRow");u(this,"cellAnchorColumn");u(this,"_cellIndex");u(this,"_rowIndex");u(this,"_table");this.cell=e,this.row=i._row,this.column=i._column,this.cellAnchorRow=t,this.cellAnchorColumn=n,this._cellIndex=i._cellIndex,this._rowIndex=i._rowIndex,this._table=i._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||"1")}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||"1")}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function Fu(o,i){return(e,{writer:t})=>{const n=e.getAttribute("headingRows")||0,s=t.createContainerElement("table",null,[]),r=t.createContainerElement("figure",{class:"table"},s);n>0&&t.insert(t.createPositionAt(s,"end"),t.createContainerElement("thead",null,t.createSlot(a=>a.is("element","tableRow")&&a.index<n))),n<o.getRows(e)&&t.insert(t.createPositionAt(s,"end"),t.createContainerElement("tbody",null,t.createSlot(a=>a.is("element","tableRow")&&a.index>=n)));for(const{positionOffset:a,filter:l}of i.additionalSlots)t.insert(t.createPositionAt(s,a),t.createSlot(l));return t.insert(t.createPositionAt(s,"after"),t.createSlot(a=>a.is("element","tableRow")?!1:!i.additionalSlots.some(({filter:l})=>l(a)))),i.asWidget?HA(r,t):r}}function UA(){return(o,{writer:i})=>o.isEmpty?i.createEmptyElement("tr"):i.createContainerElement("tr")}function Uu(o={}){return(i,{writer:e})=>{const t=i.parent,n=t.parent,s=n.getChildIndex(t),r=new q(n,{row:s}),a=n.getAttribute("headingRows")||0,l=n.getAttribute("headingColumns")||0;let c=null;for(const d of r)if(d.cell==i){const m=d.row<a||d.column<l?"th":"td";c=o.asWidget?gl(e.createEditableElement(m),e,{withAriaRole:!1}):e.createContainerElement(m);break}return c}}function Hu(o={}){return(i,{writer:e})=>{if(!i.parent.is("element","tableCell")||!rp(i))return null;if(o.asWidget)return e.createContainerElement("span",{class:"ck-table-bogus-paragraph"});{const t=e.createContainerElement("p");return e.setCustomProperty("dataPipeline:transparentRendering",!0,t),t}}}function rp(o){return o.parent.childCount==1&&!WA(o)}function HA(o,i){return i.setCustomProperty("table",!0,o),ml(o,i,{hasSelectionHandle:!0})}function WA(o){for(const i of o.getAttributeKeys())if(!(i.startsWith("selection:")||i=="htmlEmptyBlock"))return!0;return!1}class qA extends B{refresh(){const i=this.editor.model,e=i.document.selection,t=i.schema;this.isEnabled=jA(e,t)}execute(i={}){const e=this.editor,t=e.model,n=e.plugins.get("TableUtils"),s=e.config.get("table.defaultHeadings.rows"),r=e.config.get("table.defaultHeadings.columns");i.headingRows===void 0&&s&&(i.headingRows=s),i.headingColumns===void 0&&r&&(i.headingColumns=r),t.change(a=>{const l=n.createTable(a,i);t.insertObject(l,null,null,{findOptimalPosition:"auto"}),a.setSelection(a.createPositionAt(l.getNodeByPath([0,0,0]),0))})}}function jA(o,i){const e=o.getFirstPosition().parent,t=e===e.root?e:e.parent;return i.checkChild(t,"table")}class Wu extends B{constructor(e,t={}){super(e);u(this,"order");this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,n=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=n}execute(){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("TableUtils"),s=this.order==="above",r=n.getSelectionAffectedTableCells(t),a=n.getRowIndexes(r),l=s?a.first:a.last,c=r[0].findAncestor("table");n.insertRows(c,{at:s?l:l+1,copyStructureFromAbove:!s})}}class qu extends B{constructor(e,t={}){super(e);u(this,"order");this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,n=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=n}execute(){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("TableUtils"),s=this.order==="left",r=n.getSelectionAffectedTableCells(t),a=n.getColumnIndexes(r),l=s?a.first:a.last,c=r[0].findAncestor("table");n.insertColumns(c,{columns:1,at:s?l:l+1})}}class ju extends B{constructor(e,t={}){super(e);u(this,"direction");this.direction=t.direction||"horizontally"}refresh(){const t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=t.length===1}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];this.direction==="horizontally"?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function ap(o,i,e){const{startRow:t,startColumn:n,endRow:s,endColumn:r}=i,a=e.createElement("table"),l=o.getAttribute("tableType");l&&e.setAttribute("tableType",l,a);const c=s-t+1;for(let h=0;h<c;h++)e.insertElement("tableRow",a,"end");const d=[...new q(o,{startRow:t,endRow:s,startColumn:n,endColumn:r,includeAllSlots:!0})];for(const{row:h,column:m,cell:g,isAnchor:f,cellAnchorRow:p,cellAnchorColumn:b}of d){const k=h-t,_=a.getChild(k);if(!f)(p<t||b<n)&&pi(e,e.createPositionAt(_,"end"));else{const M=e.cloneElement(g);e.append(M,_),hp(M,h,m,s,r,e)}}return GA(a,o,t,n,e),a}function lp(o,i,e=0){const t=[],n=new q(o,{startRow:e,endRow:i-1});for(const s of n){const{row:r,cellHeight:a}=s,l=r+a-1;r<i&&i<=l&&t.push(s)}return t}function cp(o,i,e){const t=o.parent,n=t.parent,s=t.index,r=parseInt(o.getAttribute("rowspan")),a=i-s,l={},c=r-a;c>1&&(l.rowspan=c);const d=parseInt(o.getAttribute("colspan")||"1");d>1&&(l.colspan=d);const h=s,m=h+a,g=[...new q(n,{startRow:h,endRow:m,includeAllSlots:!0})];let f=null,p;for(const b of g){const{row:k,column:_,cell:M}=b;M===o&&p===void 0&&(p=_),p!==void 0&&p===_&&k===m&&(f=pi(e,b.getPositionBefore(),l))}return ae("rowspan",a,o,e),f}function dp(o,i){const e=[],t=new q(o);for(const n of t){const{column:s,cellWidth:r}=n,a=s+r-1;s<i&&i<=a&&e.push(n)}return e}function up(o,i,e,t){const n=parseInt(o.getAttribute("colspan")),s=e-i,r={},a=n-s;a>1&&(r.colspan=a);const l=parseInt(o.getAttribute("rowspan")||"1");l>1&&(r.rowspan=l);const c=pi(t,t.createPositionAfter(o),r);return ae("colspan",s,o,t),c}function hp(o,i,e,t,n,s){const r=parseInt(o.getAttribute("colspan")||"1"),a=parseInt(o.getAttribute("rowspan")||"1");if(e+r-1>n){const d=n-e+1;ae("colspan",d,o,s,1)}if(i+a-1>t){const d=t-i+1;ae("rowspan",d,o,s,1)}}function GA(o,i,e,t,n){const s=parseInt(i.getAttribute("headingRows")||"0");if(s>0){const a=s-e;ae("headingRows",a,o,n,0)}const r=parseInt(i.getAttribute("headingColumns")||"0");if(r>0){const a=r-t;ae("headingColumns",a,o,n,0)}}function ha(o,i){const e=i.getColumns(o),t=new Array(e).fill(0);for(const{column:s}of new q(o))t[s]++;const n=t.reduce((s,r,a)=>r?s:[...s,a],[]);if(n.length>0){const s=n[n.length-1];return i.removeColumns(o,{at:s}),!0}return!1}function ma(o,i){const e=[],t=i.getRows(o);for(let n=0;n<t;n++)o.getChild(n).isEmpty&&e.push(n);if(e.length>0){const n=e[e.length-1];return i.removeRows(o,{at:n}),!0}return!1}function Tl(o,i){ha(o,i)||ma(o,i)}function mp(o,i){const e=Array.from(new q(o,{startColumn:i.firstColumn,endColumn:i.lastColumn,row:i.lastRow}));if(e.every(({cellHeight:s})=>s===1))return i.lastRow;const n=e[0].cellHeight-1;return i.lastRow+n}function gp(o,i){const e=Array.from(new q(o,{startRow:i.firstRow,endRow:i.lastRow,column:i.lastColumn}));if(e.every(({cellWidth:s})=>s===1))return i.lastColumn;const n=e[0].cellWidth-1;return i.lastColumn+n}class Ao extends B{constructor(e,t){super(e);u(this,"direction");u(this,"isHorizontal");this.direction=t.direction,this.isHorizontal=this.direction=="right"||this.direction=="left"}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=e.document,s=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],r=this.value,a=this.direction;e.change(l=>{const c=a=="right"||a=="down",d=c?s:r,h=c?r:s,m=h.parent;ZA(h,d,l);const g=this.isHorizontal?"colspan":"rowspan",f=parseInt(s.getAttribute(g)||"1"),p=parseInt(r.getAttribute(g)||"1");l.setAttribute(g,f+p,d),l.setSelection(l.createRangeIn(d));const b=this.editor.plugins.get("TableUtils"),k=m.findAncestor("table");Tl(k,b)})}_getMergeableCell(){const t=this.editor.model.document,n=this.editor.plugins.get("TableUtils"),s=n.getTableCellsContainingSelection(t.selection)[0];if(!s)return;const r=this.isHorizontal?$A(s,this.direction,n):KA(s,this.direction,n);if(!r)return;const a=this.isHorizontal?"rowspan":"colspan",l=parseInt(s.getAttribute(a)||"1");if(parseInt(r.getAttribute(a)||"1")===l)return r}}function $A(o,i,e){const n=o.parent.parent,s=i=="right"?o.nextSibling:o.previousSibling,r=(n.getAttribute("headingColumns")||0)>0;if(!s)return;const a=i=="right"?o:s,l=i=="right"?s:o,{column:c}=e.getCellLocation(a),{column:d}=e.getCellLocation(l),h=parseInt(a.getAttribute("colspan")||"1"),m=ua(e,a),g=ua(e,l);return r&&m!=g?void 0:c+h===d?s:void 0}function KA(o,i,e){const t=o.parent,n=t.parent,s=n.getChildIndex(t);if(i=="down"&&s===e.getRows(n)-1||i=="up"&&s===0)return null;const r=parseInt(o.getAttribute("rowspan")||"1"),a=n.getAttribute("headingRows")||0,l=i=="down"&&s+r===a,c=i=="up"&&s===a;if(a&&(l||c))return null;const d=parseInt(o.getAttribute("rowspan")||"1"),h=i=="down"?s+d:s,m=[...new q(n,{endRow:h})],f=m.find(b=>b.cell===o).column,p=m.find(({row:b,cellHeight:k,column:_})=>_!==f?!1:i=="down"?b===h:h===b+k);return p&&p.cell?p.cell:null}function ZA(o,i,e){Gu(o)||(Gu(i)&&e.remove(e.createRangeIn(i)),e.move(e.createRangeIn(o),e.createPositionAt(i,"end"))),e.remove(o)}function Gu(o){const i=o.getChild(0);return o.childCount==1&&i.is("element","paragraph")&&i.isEmpty}class JA extends B{refresh(){const i=this.editor.plugins.get("TableUtils"),e=i.getSelectionAffectedTableCells(this.editor.model.document.selection),t=e[0];if(t){const n=t.findAncestor("table"),r=i.getRows(n)-1,a=i.getRowIndexes(e),l=a.first===0&&a.last===r;this.isEnabled=!l}else this.isEnabled=!1}execute(){const i=this.editor.model,e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(i.document.selection),n=e.getRowIndexes(t),s=t[0],r=s.findAncestor("table"),a=e.getCellLocation(s).column;i.change(l=>{const c=n.last-n.first+1;e.removeRows(r,{at:n.first,rows:c});const d=YA(r,n.first,a,e.getRows(r));l.setSelection(l.createPositionAt(d,0))})}}function YA(o,i,e,t){const n=o.getChild(Math.min(i,t-1));let s=n.getChild(0),r=0;for(const a of n.getChildren()){if(r>e)return s;s=a,r+=parseInt(a.getAttribute("colspan")||"1")}return s}class XA extends B{refresh(){const i=this.editor.plugins.get("TableUtils"),e=i.getSelectionAffectedTableCells(this.editor.model.document.selection),t=e[0];if(t){const n=t.findAncestor("table"),s=i.getColumns(n),{first:r,last:a}=i.getColumnIndexes(e);this.isEnabled=a-r<s-1}else this.isEnabled=!1}execute(){const i=this.editor.plugins.get("TableUtils"),[e,t]=eI(this.editor.model.document.selection,i),n=e.parent.parent,s=[...new q(n)],r={first:s.find(l=>l.cell===e).column,last:s.find(l=>l.cell===t).column},a=QA(s,e,t,r);this.editor.model.change(l=>{const c=r.last-r.first+1;i.removeColumns(n,{at:r.first,columns:c}),l.setSelection(l.createPositionAt(a,0))})}}function QA(o,i,e,t){return parseInt(e.getAttribute("colspan")||"1")>1?e:i.previousSibling||e.nextSibling?e.nextSibling||i.previousSibling:t.first?o.reverse().find(({column:s})=>s<t.first).cell:o.reverse().find(({column:s})=>s>t.last).cell}function eI(o,i){const e=i.getSelectionAffectedTableCells(o),t=e[0],n=e.pop(),s=[t,n];return t.isBefore(n)?s:s.reverse()}class tI extends B{refresh(){const i=this.editor.plugins.get("TableUtils"),e=this.editor.model,t=i.getSelectionAffectedTableCells(e.document.selection);if(t.length===0){this.isEnabled=!1,this.value=!1;return}const n=t[0].findAncestor("table");this.isEnabled=e.schema.checkAttribute(n,"headingRows"),this.value=t.every(s=>this._isInHeading(s,s.parent.parent))}execute(i={}){if(i.forceValue===this.value)return;const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,n=e.getSelectionAffectedTableCells(t.document.selection),s=n[0].findAncestor("table"),{first:r,last:a}=e.getRowIndexes(n),l=this.value?r:a+1,c=s.getAttribute("headingRows")||0;t.change(d=>{if(l){const h=l>c?c:0,m=lp(s,l,h);for(const{cell:g}of m)cp(g,l,d)}ae("headingRows",l,s,d,0)})}_isInHeading(i,e){const t=parseInt(e.getAttribute("headingRows")||"0");return!!t&&i.parent.index<t}}class iI extends B{refresh(){const i=this.editor.plugins.get("TableUtils"),e=this.editor.model,t=i.getSelectionAffectedTableCells(e.document.selection);if(t.length===0){this.isEnabled=!1,this.value=!1;return}const n=t[0].findAncestor("table");this.isEnabled=e.schema.checkAttribute(n,"headingColumns"),this.value=t.every(s=>ua(i,s))}execute(i={}){if(i.forceValue===this.value)return;const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,n=e.getSelectionAffectedTableCells(t.document.selection),s=n[0].findAncestor("table"),{first:r,last:a}=e.getColumnIndexes(n),l=this.value?r:a+1;t.change(c=>{if(l){const d=dp(s,l);for(const{cell:h,column:m}of d)up(h,m,l,c)}ae("headingColumns",l,s,c,0)})}}/**
362
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
363
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
364
+ */const nI=5,ga=40,oI=2,sI=3;function rI(o){const i=new Set;for(const e of o.document.differ.getChanges()){let t=null;switch(e.type){case"insert":t=["table","tableRow","tableCell"].includes(e.name)?e.position:null;break;case"remove":t=["tableRow","tableCell"].includes(e.name)?e.position:null;break;case"attribute":e.range.start.nodeAfter&&(t=["table","tableRow","tableCell"].includes(e.range.start.nodeAfter.name)?e.range.start:null);break}if(!t)continue;const n=t.nodeAfter&&t.nodeAfter.is("element","table")?t.nodeAfter:t.findAncestor("table");for(const s of o.createRangeOn(n).getItems())s.is("element","table")&&so(s)&&i.add(s)}return i}function aI(o,i){return ga*100/fp(o,i)}function fp(o,i){const e=$u(o,"tbody",i)||$u(o,"thead",i),t=i.editing.view.domConverter.mapViewToDom(e);return fa(t)}function $u(o,i,e){return[...[...e.editing.mapper.toViewElement(o).getChildren()].find(s=>s.is("element","table")).getChildren()].find(s=>s.is("element",i))}function fa(o){const i=T.window.getComputedStyle(o);return i.boxSizing==="border-box"?parseFloat(i.width)-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderLeftWidth)-parseFloat(i.borderRightWidth):parseFloat(i.width)}function lI(o,i){const e=i.getCellLocation(o).column,t=o.getAttribute("colspan")||1;return{leftEdge:e,rightEdge:e+t-1}}function ze(o){const i=Math.pow(10,oI),e=typeof o=="number"?o:parseFloat(o);return Math.round(e*i)/i}function cI(o,i,e){return o<=i?ze(i):o>=e?ze(e):ze(o)}function dI(o,i){return Array(o).fill(i)}function Kn(o){return o.map(i=>typeof i=="number"?i:parseFloat(i)).filter(i=>!Number.isNaN(i)).reduce((i,e)=>i+e,0)}function El(o){const i=o.map(n=>n==="auto"?n:parseFloat(n.replace("%","")));let e=uI(i);const t=Kn(e);return t!==100&&(e=e.map(n=>ze(n*100/t)).map((n,s,r)=>{if(!(s===r.length-1))return n;const l=Kn(r);return ze(n+100-l)})),e.map(n=>n+"%")}function uI(o){const i=o.filter(n=>n==="auto").length;if(i===0)return o.map(n=>ze(n));const e=Kn(o),t=Math.max((100-e)/i,nI);return o.map(n=>n==="auto"?t:n).map(n=>ze(n))}function hI(o){const i=T.window.getComputedStyle(o);return i.boxSizing==="border-box"?parseInt(i.width):parseFloat(i.width)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderWidth)}function pp(o,i,e,t){for(let n=0;n<Math.max(e.length,o.length);n++){const s=o[n],r=e[n];r?s?t.setAttribute("columnWidth",r,s):t.appendElement("tableColumn",{columnWidth:r},i):t.remove(s)}}function so(o){if(o.is("element","tableColumnGroup"))return o;const i=o.getChildren();return Array.from(i).find(e=>e.is("element","tableColumnGroup"))}function ro(o){const i=so(o);return i?Array.from(i.getChildren()):[]}function mI(o){return ro(o).map(i=>i.getAttribute("columnWidth"))}function gI(o,i){return ro(o).reduce((t,n)=>{const s=n.getAttribute("columnWidth"),r=n.getAttribute("colSpan");if(!r)return t.push(s),t;for(let a=0;a<r;a++)t.push(s);return i.removeAttribute("colSpan",n),t},[])}class we extends y{static get pluginName(){return"TableUtils"}static get isOfficialPlugin(){return!0}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(i){const e=i.parent,t=e.parent,n=t.getChildIndex(e),s=new q(t,{row:n});for(const{cell:r,row:a,column:l}of s)if(r===i)return{row:a,column:l};/* istanbul ignore next -- @preserve */}createTable(i,e){const t=i.createElement("table"),n=e.rows||2,s=e.columns||2;return Ar(i,t,0,n,s),e.headingRows&&ae("headingRows",Math.min(e.headingRows,n),t,i,0),e.headingColumns&&ae("headingColumns",Math.min(e.headingColumns,s),t,i,0),t}insertRows(i,e={}){const t=this.editor.model,n=e.at||0,s=e.rows||1,r=e.copyStructureFromAbove!==void 0,a=e.copyStructureFromAbove?n-1:n,l=this.getRows(i),c=this.getColumns(i);if(n>l)throw new w("tableutils-insertrows-insert-out-of-range",this,{options:e});t.change(d=>{const h=i.getAttribute("headingRows")||0;if(h>n&&ae("headingRows",h+s,i,d,0),!r&&(n===0||n===l)){Ar(d,i,n,s,c);return}const m=r?Math.max(n,a):n,g=new q(i,{endRow:m}),f=new Array(c).fill(1);for(const{row:p,column:b,cellHeight:k,cellWidth:_,cell:M}of g){const O=p+k-1,oe=p<n&&n<=O,te=p<=a&&a<=O;oe?(d.setAttribute("rowspan",k+s,M),f[b]=-_):r&&te&&(f[b]=_)}for(let p=0;p<s;p++){const b=d.createElement("tableRow");d.insert(b,i,n);for(let k=0;k<f.length;k++){const _=f[k],M=d.createPositionAt(b,"end");_>0&&pi(d,M,_>1?{colspan:_}:void 0),k+=Math.abs(_)-1}}})}insertColumns(i,e={}){const t=this.editor.model,n=e.at||0,s=e.columns||1;t.change(r=>{const a=i.getAttribute("headingColumns");n<a&&r.setAttribute("headingColumns",a+s,i);const l=this.getColumns(i);if(n===0||l===n){for(const d of i.getChildren())d.is("element","tableRow")&&Bi(s,r,r.createPositionAt(d,n?"end":0));return}const c=new q(i,{column:n,includeAllSlots:!0});for(const d of c){const{row:h,cell:m,cellAnchorColumn:g,cellAnchorRow:f,cellWidth:p,cellHeight:b}=d;if(g<n){r.setAttribute("colspan",p+s,m);const k=f+b-1;for(let _=h;_<=k;_++)c.skipRow(_)}else Bi(s,r,d.getPositionBefore())}})}removeRows(i,e){const t=this.editor.model,n=e.rows||1,s=this.getRows(i),r=e.at,a=r+n-1;if(a>s-1)throw new w("tableutils-removerows-row-index-out-of-range",this,{table:i,options:e});t.change(l=>{const c={first:r,last:a},{cellsToMove:d,cellsToTrim:h}=wI(i,c);if(d.size){const m=a+1;bI(i,m,d,l)}for(let m=a;m>=r;m--)l.remove(i.getChild(m));for(const{rowspan:m,cell:g}of h)ae("rowspan",m,g,l);pI(i,c,l),ha(i,this)||ma(i,this)})}removeColumns(i,e){const t=this.editor.model,n=e.at,s=e.columns||1,r=e.at+s-1;t.change(a=>{fI(i,{first:n,last:r},a);const l=ro(i);for(let c=r;c>=n;c--){for(const{cell:d,column:h,cellWidth:m}of[...new q(i)])h<=c&&m>1&&h+m>c?ae("colspan",m-1,d,a):h===c&&a.remove(d);if(l[c]){const d=c===0?l[1]:l[c-1],h=parseFloat(l[c].getAttribute("columnWidth")),m=parseFloat(d.getAttribute("columnWidth"));a.remove(l[c]),a.setAttribute("columnWidth",h+m+"%",d)}}ma(i,this)||ha(i,this)})}splitCellVertically(i,e=2){const t=this.editor.model,s=i.parent.parent,r=parseInt(i.getAttribute("rowspan")||"1"),a=parseInt(i.getAttribute("colspan")||"1");t.change(l=>{if(a>1){const{newCellsSpan:c,updatedSpan:d}=Ku(a,e);ae("colspan",d,i,l);const h={};c>1&&(h.colspan=c),r>1&&(h.rowspan=r);const m=a>e?e-1:a-1;Bi(m,l,l.createPositionAfter(i),h)}if(a<e){const c=e-a,d=[...new q(s)],{column:h}=d.find(({cell:p})=>p===i),m=d.filter(({cell:p,cellWidth:b,column:k})=>{const _=p!==i&&k===h,M=k<h&&k+b>h;return _||M});for(const{cell:p,cellWidth:b}of m)l.setAttribute("colspan",b+c,p);const g={};r>1&&(g.rowspan=r),Bi(c,l,l.createPositionAfter(i),g);const f=s.getAttribute("headingColumns")||0;f>h&&ae("headingColumns",f+c,s,l)}})}splitCellHorizontally(i,e=2){const t=this.editor.model,n=i.parent,s=n.parent,r=s.getChildIndex(n),a=parseInt(i.getAttribute("rowspan")||"1"),l=parseInt(i.getAttribute("colspan")||"1");t.change(c=>{if(a>1){const d=[...new q(s,{startRow:r,endRow:r+a-1,includeAllSlots:!0})],{newCellsSpan:h,updatedSpan:m}=Ku(a,e);ae("rowspan",m,i,c);const{column:g}=d.find(({cell:b})=>b===i),f={};h>1&&(f.rowspan=h),l>1&&(f.colspan=l);let p=0;for(const b of d){const{column:k,row:_}=b,M=_>=r+m,O=k===g;p>=h&&O&&(p=0),M&&O&&(p||Bi(1,c,b.getPositionBefore(),f),p++)}}if(a<e){const d=e-a,h=[...new q(s,{startRow:0,endRow:r})];for(const{cell:f,cellHeight:p,row:b}of h)if(f!==i&&b+p>r){const k=p+d;c.setAttribute("rowspan",k,f)}const m={};l>1&&(m.colspan=l),Ar(c,s,r+1,d,1,m);const g=s.getAttribute("headingRows")||0;g>r&&ae("headingRows",g+d,s,c)}})}getColumns(i){return[...i.getChild(0).getChildren()].filter(t=>t.is("element","tableCell")).reduce((t,n)=>{const s=parseInt(n.getAttribute("colspan")||"1");return t+s},0)}getRows(i){return Array.from(i.getChildren()).reduce((e,t)=>t.is("element","tableRow")?e+1:e,0)}createTableWalker(i,e={}){return new q(i,e)}getSelectedTableCells(i){const e=[];for(const t of this.sortRanges(i.getRanges())){const n=t.getContainedElement();n&&n.is("element","tableCell")&&e.push(n)}return e}getTableCellsContainingSelection(i){const e=[];for(const t of i.getRanges()){const n=t.start.findAncestor("tableCell");n&&e.push(n)}return e}getSelectionAffectedTableCells(i){const e=this.getSelectedTableCells(i);return e.length?e:this.getTableCellsContainingSelection(i)}getRowIndexes(i){const e=i.map(t=>t.parent.index);return this._getFirstLastIndexesObject(e)}getColumnIndexes(i){const e=i[0].findAncestor("table"),n=[...new q(e)].filter(s=>i.includes(s.cell)).map(s=>s.column);return this._getFirstLastIndexesObject(n)}isSelectionRectangular(i){if(i.length<2||!this._areCellInTheSameTableSection(i))return!1;const e=new Set,t=new Set;let n=0;for(const r of i){const{row:a,column:l}=this.getCellLocation(r),c=parseInt(r.getAttribute("rowspan"))||1,d=parseInt(r.getAttribute("colspan"))||1;e.add(a),t.add(l),c>1&&e.add(a+c-1),d>1&&t.add(l+d-1),n+=c*d}return kI(e,t)==n}sortRanges(i){return Array.from(i).sort(vI)}_getFirstLastIndexesObject(i){const e=i.sort((s,r)=>s-r),t=e[0],n=e[e.length-1];return{first:t,last:n}}_areCellInTheSameTableSection(i){const e=i[0].findAncestor("table"),t=this.getRowIndexes(i),n=parseInt(e.getAttribute("headingRows"))||0;if(!this._areIndexesInSameSection(t,n))return!1;const s=this.getColumnIndexes(i),r=parseInt(e.getAttribute("headingColumns"))||0;return this._areIndexesInSameSection(s,r)}_areIndexesInSameSection({first:i,last:e},t){const n=i<t,s=e<t;return n===s}}function Ar(o,i,e,t,n,s={}){for(let r=0;r<t;r++){const a=o.createElement("tableRow");o.insert(a,i,e),Bi(n,o,o.createPositionAt(a,"end"),s)}}function Bi(o,i,e,t={}){for(let n=0;n<o;n++)pi(i,e,t)}function Ku(o,i){if(o<i)return{newCellsSpan:1,updatedSpan:1};const e=Math.floor(o/i),t=o-e*i+e;return{newCellsSpan:e,updatedSpan:t}}function fI(o,i,e){const t=o.getAttribute("headingColumns")||0;if(t&&i.first<t){const n=Math.min(t-1,i.last)-i.first+1;e.setAttribute("headingColumns",t-n,o)}}function pI(o,{first:i,last:e},t){const n=o.getAttribute("headingRows")||0;if(i<n){const s=e<n?n-(e-i+1):i;ae("headingRows",s,o,t,0)}}function wI(o,{first:i,last:e}){const t=new Map,n=[];for(const{row:s,column:r,cellHeight:a,cell:l}of new q(o,{endRow:e})){const c=s+a-1;if(s>=i&&s<=e&&c>e){const m=e-s+1,g=a-m;t.set(r,{cell:l,rowspan:g})}if(s<i&&c>=i){let m;c>=e?m=e-i+1:m=c-i+1,n.push({cell:l,rowspan:a-m})}}return{cellsToMove:t,cellsToTrim:n}}function bI(o,i,e,t){const s=[...new q(o,{includeAllSlots:!0,row:i})],r=o.getChild(i);let a;for(const{column:l,cell:c,isAnchor:d}of s)if(e.has(l)){const{cell:h,rowspan:m}=e.get(l),g=a?t.createPositionAfter(a):t.createPositionAt(r,0);t.move(t.createRangeOn(h),g),ae("rowspan",m,h,t),a=h}else d&&(a=c)}function vI(o,i){const e=o.start,t=i.start;return e.isBefore(t)?-1:1}function kI(o,i){const e=Array.from(o.values()),t=Array.from(i.values()),n=Math.max(...e),s=Math.min(...e),r=Math.max(...t),a=Math.min(...t);return(n-s+1)*(r-a+1)}class yI extends B{refresh(){const i=this.editor.plugins.get(we),e=i.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=i.isSelectionRectangular(e)}execute(){const i=this.editor.model,e=this.editor.plugins.get(we);i.change(t=>{const n=e.getSelectedTableCells(i.document.selection),s=n.shift(),{mergeWidth:r,mergeHeight:a}=CI(s,n,e);ae("colspan",r,s,t),ae("rowspan",a,s,t);for(const c of n)_I(c,s,t);const l=s.findAncestor("table");Tl(l,e),t.setSelection(s,"in")})}}function _I(o,i,e){Zu(o)||(Zu(i)&&e.remove(e.createRangeIn(i)),e.move(e.createRangeIn(o),e.createPositionAt(i,"end"))),e.remove(o)}function Zu(o){const i=o.getChild(0);return o.childCount==1&&i.is("element","paragraph")&&i.isEmpty}function CI(o,i,e){let t=0,n=0;for(const c of i){const{row:d,column:h}=e.getCellLocation(c);t=Ju(c,h,t,"colspan"),n=Ju(c,d,n,"rowspan")}const{row:s,column:r}=e.getCellLocation(o),a=t-r,l=n-s;return{mergeWidth:a,mergeHeight:l}}function Ju(o,i,e,t){const n=parseInt(o.getAttribute(t)||"1");return Math.max(e,i+n)}class LI extends B{constructor(i){super(i),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const i=this.editor.model,e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(i.document.selection),n=e.getRowIndexes(t),s=t[0].findAncestor("table"),r=[];for(let a=n.first;a<=n.last;a++)for(const l of s.getChild(a).getChildren())r.push(i.createRangeOn(l));i.change(a=>{a.setSelection(r)})}}class TI extends B{constructor(i){super(i),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const i=this.editor.plugins.get("TableUtils"),e=this.editor.model,t=i.getSelectionAffectedTableCells(e.document.selection),n=t[0],s=t.pop(),r=n.findAncestor("table"),a=i.getCellLocation(n),l=i.getCellLocation(s),c=Math.min(a.column,l.column),d=Math.max(a.column,l.column),h=[];for(const m of new q(r,{startColumn:c,endColumn:d}))h.push(e.createRangeOn(m.cell));e.change(m=>{m.setSelection(h)})}}function EI(o){o.document.registerPostFixer(i=>xI(i,o))}function xI(o,i){const e=i.document.differ.getChanges();let t=!1;const n=new Set;for(const s of e){let r=null;s.type=="insert"&&s.name=="table"&&(r=s.position.nodeAfter),(s.type=="insert"||s.type=="remove")&&(s.name=="tableRow"||s.name=="tableCell")&&(r=s.position.findAncestor("table")),RI(s)&&(r=s.range.start.findAncestor("table")),r&&!n.has(r)&&(t=SI(r,o)||t,t=AI(r,o)||t,n.add(r))}return t}function SI(o,i){let e=!1;const t=II(o);if(t.length){e=!0;for(const n of t)ae("rowspan",n.rowspan,n.cell,i,1)}return e}function AI(o,i){let e=!1;const t=PI(o),n=[];for(const[l,c]of t.entries())!c&&o.getChild(l).is("element","tableRow")&&n.push(l);if(n.length){e=!0;for(const l of n.reverse())i.remove(o.getChild(l)),t.splice(l,1)}const s=t.filter((l,c)=>o.getChild(c).is("element","tableRow")),r=s[0];if(!s.every(l=>l===r)){const l=s.reduce((c,d)=>d>c?d:c,0);for(const[c,d]of s.entries()){const h=l-d;if(h){for(let m=0;m<h;m++)pi(i,i.createPositionAt(o.getChild(c),"end"));e=!0}}}return e}function II(o){const i=parseInt(o.getAttribute("headingRows")||"0"),e=Array.from(o.getChildren()).reduce((n,s)=>s.is("element","tableRow")?n+1:n,0),t=[];for(const{row:n,cell:s,cellHeight:r}of new q(o)){if(r<2)continue;const l=n<i?i:e;if(n+r>l){const c=l-n;t.push({cell:s,rowspan:c})}}return t}function PI(o){const i=new Array(o.childCount).fill(0);for(const{rowIndex:e}of new q(o,{includeAllSlots:!0}))i[e]++;return i}function RI(o){if(o.type!=="attribute")return!1;const i=o.attributeKey;return i==="headingRows"||i==="colspan"||i==="rowspan"}/**
365
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
366
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
367
+ */function MI(o){o.document.registerPostFixer(i=>BI(i,o))}function BI(o,i){const e=i.document.differ.getChanges();let t=!1;for(const n of e)n.type=="insert"&&n.name=="table"&&(t=VI(n.position.nodeAfter,o)||t),n.type=="insert"&&n.name=="tableRow"&&(t=wp(n.position.nodeAfter,o)||t),n.type=="insert"&&n.name=="tableCell"&&(t=pa(n.position.nodeAfter,o)||t),(n.type=="remove"||n.type=="insert")&&zI(n)&&(t=pa(n.position.parent,o)||t);return t}function VI(o,i){let e=!1;for(const t of o.getChildren())t.is("element","tableRow")&&(e=wp(t,i)||e);return e}function wp(o,i){let e=!1;for(const t of o.getChildren())e=pa(t,i)||e;return e}function pa(o,i){if(o.childCount==0)return i.insertElement("paragraph",o),!0;const e=Array.from(o.getChildren()).filter(t=>t.is("$text"));for(const t of e)i.wrap(i.createRangeOn(t),"paragraph");return!!e.length}function zI(o){return o.position.parent.is("element","tableCell")?o.type=="insert"&&o.name=="$text"||o.type=="remove":!1}function NI(o,i){const e=o.document.differ;for(const t of e.getChanges()){let n,s=!1;if(t.type=="attribute"){const c=t.range.start.nodeAfter;if(!c||!c.is("element","table")||t.attributeKey!="headingRows"&&t.attributeKey!="headingColumns")continue;n=c,s=t.attributeKey=="headingRows"}else(t.name=="tableRow"||t.name=="tableCell")&&(n=t.position.findAncestor("table"),s=t.name=="tableRow");if(!n)continue;const r=n.getAttribute("headingRows")||0,a=n.getAttribute("headingColumns")||0,l=new q(n);for(const c of l){const h=c.row<r||c.column<a?"th":"td",m=i.mapper.toViewElement(c.cell);m&&m.is("element")&&m.name!=h&&i.reconvertItem(s?c.cell.parent:c.cell)}}}function DI(o,i){const e=o.document.differ,t=new Set;for(const n of e.getChanges()){const s=n.type=="attribute"?n.range.start.parent:n.position.parent;s.is("element","tableCell")&&t.add(s)}for(const n of t.values()){const s=Array.from(n.getChildren()).filter(r=>OI(r,i.mapper));for(const r of s)i.reconvertItem(r)}}function OI(o,i){if(!o.is("element","paragraph"))return!1;const e=i.toViewElement(o);return e?rp(o)!==e.is("element","span"):!1}class ao extends y{constructor(e){super(e);u(this,"_additionalSlots");this._additionalSlots=[]}static get pluginName(){return"TableEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[we]}init(){const e=this.editor,t=e.model,n=t.schema,s=e.conversion,r=e.plugins.get(we);n.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),n.register("tableRow",{allowIn:"table",isLimit:!0}),n.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),s.for("upcast").add(BA()),s.for("upcast").add(VA()),s.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:Fu(r,{asWidget:!0,additionalSlots:this._additionalSlots})}),s.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:Fu(r,{additionalSlots:this._additionalSlots})}),s.for("upcast").elementToElement({model:"tableRow",view:"tr"}),s.for("upcast").add(zA()),s.for("downcast").elementToElement({model:"tableRow",view:UA()}),s.for("upcast").elementToElement({model:"tableCell",view:"td"}),s.for("upcast").elementToElement({model:"tableCell",view:"th"}),s.for("upcast").add(Ou("td")),s.for("upcast").add(Ou("th")),s.for("editingDowncast").elementToElement({model:"tableCell",view:Uu({asWidget:!0})}),s.for("dataDowncast").elementToElement({model:"tableCell",view:Uu()}),s.for("editingDowncast").elementToElement({model:"paragraph",view:Hu({asWidget:!0}),converterPriority:"high"}),s.for("dataDowncast").elementToElement({model:"paragraph",view:Hu(),converterPriority:"high"}),s.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),s.for("upcast").attributeToAttribute({model:{key:"colspan",value:Yu("colspan")},view:"colspan"}),s.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),s.for("upcast").attributeToAttribute({model:{key:"rowspan",value:Yu("rowspan")},view:"rowspan"}),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new qA(e)),e.commands.add("insertTableRowAbove",new Wu(e,{order:"above"})),e.commands.add("insertTableRowBelow",new Wu(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new qu(e,{order:"left"})),e.commands.add("insertTableColumnRight",new qu(e,{order:"right"})),e.commands.add("removeTableRow",new JA(e)),e.commands.add("removeTableColumn",new XA(e)),e.commands.add("splitTableCellVertically",new ju(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new ju(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new yI(e)),e.commands.add("mergeTableCellRight",new Ao(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new Ao(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new Ao(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new Ao(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new iI(e)),e.commands.add("setTableRowHeader",new tI(e)),e.commands.add("selectTableRow",new LI(e)),e.commands.add("selectTableColumn",new TI(e)),EI(t),MI(t),this.listenTo(t.document,"change:data",()=>{NI(t,e.editing),DI(t,e.editing)})}registerAdditionalSlot(e){this._additionalSlots.push(e)}}function Yu(o){return i=>{const e=parseInt(i.getAttribute(o));return Number.isNaN(e)||e<=0?null:e}}class Xu extends E{constructor(e){super(e);u(this,"items");u(this,"keystrokes");u(this,"focusTracker");const t=this.bindTemplate;this.items=this._createGridCollection(),this.keystrokes=new re,this.focusTracker=new ee,this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",(n,s)=>`${s} × ${n}`),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{class:["ck","ck-insert-table-dropdown__label"],"aria-hidden":!0},children:[{text:t.to("label")}]}],on:{mousedown:t.to(n=>{n.preventDefault()}),click:t.to(()=>{this.fire("execute")})}}),this.on("boxover",(n,s)=>{const{row:r,column:a}=s.target.dataset;this.items.get((parseInt(r,10)-1)*10+(parseInt(a,10)-1)).focus()}),this.focusTracker.on("change:focusedElement",(n,s,r)=>{if(!r)return;const{row:a,column:l}=r.dataset;this.set({rows:parseInt(a),columns:parseInt(l)})}),this.on("change:columns",()=>this._highlightGridBoxes()),this.on("change:rows",()=>this._highlightGridBoxes())}render(){super.render(),rl({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}reset(){this.set({rows:1,columns:1})}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map((n,s)=>{const r=Math.floor(s/10),a=s%10,l=r<e&&a<t;n.set("isOn",l)})}_createGridButton(e,t,n,s){const r=new A(e);return r.set({label:s,class:"ck-insert-table-dropdown-grid-box"}),r.extendTemplate({attributes:{"data-row":t,"data-column":n}}),r}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const n=Math.floor(t/10),s=t%10,r=`${n+1} × ${s+1}`;e.push(this._createGridButton(this.locale,n+1,s+1,r))}return this.createCollection(e)}}class FI extends y{static get pluginName(){return"TableUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=this.editor.t,n=i.locale.contentLanguageDirection==="ltr";i.ui.componentFactory.add("insertTable",s=>{const r=i.commands.get("insertTable"),a=We(s);a.bind("isEnabled").to(r),a.buttonView.set({icon:od,label:e("Insert table"),tooltip:!0});let l;return a.on("change:isOpen",()=>{l||(l=new Xu(s),a.panelView.children.add(l),l.delegate("execute").to(a),a.on("execute",()=>{i.execute("insertTable",{rows:l.rows,columns:l.columns}),i.editing.view.focus()}))}),a}),i.ui.componentFactory.add("menuBar:insertTable",s=>{const r=i.commands.get("insertTable"),a=new pt(s),l=new Xu(s);return l.delegate("execute").to(a),a.on("change:isOpen",(c,d,h)=>{h||l.reset()}),l.on("execute",()=>{i.execute("insertTable",{rows:l.rows,columns:l.columns}),i.editing.view.focus()}),a.buttonView.set({label:e("Table"),icon:od}),a.panelView.children.add(l),a.bind("isEnabled").to(r),a}),i.ui.componentFactory.add("tableColumn",s=>{const r=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:e("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:n?"insertTableColumnLeft":"insertTableColumnRight",label:e("Insert column left")}},{type:"button",model:{commandName:n?"insertTableColumnRight":"insertTableColumnLeft",label:e("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:e("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:e("Select column")}}];return this._prepareDropdown(e("Column"),T1,r,s)}),i.ui.componentFactory.add("tableRow",s=>{const r=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:e("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:e("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:e("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:e("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:e("Select row")}}];return this._prepareDropdown(e("Row"),S1,r,s)}),i.ui.componentFactory.add("mergeTableCells",s=>{const r=[{type:"button",model:{commandName:"mergeTableCellUp",label:e("Merge cell up")}},{type:"button",model:{commandName:n?"mergeTableCellRight":"mergeTableCellLeft",label:e("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:e("Merge cell down")}},{type:"button",model:{commandName:n?"mergeTableCellLeft":"mergeTableCellRight",label:e("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:e("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:e("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(e("Merge cells"),E1,r,s)})}_prepareDropdown(i,e,t,n){const s=this.editor,r=We(n),a=this._fillDropdownWithListOptions(r,t);return r.buttonView.set({label:i,icon:e,tooltip:!0}),r.bind("isEnabled").toMany(a,"isEnabled",(...l)=>l.some(c=>c)),this.listenTo(r,"execute",l=>{s.execute(l.source.commandName),l.source instanceof Yn||s.editing.view.focus()}),r}_prepareMergeSplitButtonDropdown(i,e,t,n){const s=this.editor,r=We(n,Xn),a="mergeTableCells",l=s.commands.get(a),c=this._fillDropdownWithListOptions(r,t);return r.buttonView.set({label:i,icon:e,tooltip:!0,isEnabled:!0}),r.bind("isEnabled").toMany([l,...c],"isEnabled",(...d)=>d.some(h=>h)),this.listenTo(r.buttonView,"execute",()=>{s.execute(a),s.editing.view.focus()}),this.listenTo(r,"execute",d=>{s.execute(d.source.commandName),s.editing.view.focus()}),r}_fillDropdownWithListOptions(i,e){const t=this.editor,n=[],s=new Be;for(const r of e)UI(r,t,n,s);return Qn(i,s),n}}function UI(o,i,e,t){if(o.type==="button"||o.type==="switchbutton"){const n=o.model=new Wn(o.model),{commandName:s,bindIsOn:r}=o.model,a=i.commands.get(s);e.push(a),n.set({commandName:s}),n.bind("isEnabled").to(a),r&&n.bind("isOn").to(a,"value"),n.set({withText:!0})}t.add(o)}class qt extends y{static get pluginName(){return"TableSelection"}static get isOfficialPlugin(){return!0}static get requires(){return[we,we]}init(){const i=this.editor,e=i.model,t=i.editing.view;this.listenTo(e,"deleteContent",(n,s)=>this._handleDeleteContent(n,s),{priority:"high"}),this.listenTo(t.document,"insertText",(n,s)=>this._handleInsertTextEvent(n,s),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const i=this.editor.plugins.get(we),e=this.editor.model.document.selection,t=i.getSelectedTableCells(e);return t.length==0?null:t}getSelectionAsFragment(){const i=this.editor.plugins.get(we),e=this.getSelectedTableCells();return e?this.editor.model.change(t=>{const n=t.createDocumentFragment(),{first:s,last:r}=i.getColumnIndexes(e),{first:a,last:l}=i.getRowIndexes(e),c=e[0].findAncestor("table");let d=l,h=r;if(i.isSelectionRectangular(e)){const f={firstColumn:s,lastColumn:r,firstRow:a,lastRow:l};d=mp(c,f),h=gp(c,f)}const g=ap(c,{startRow:a,startColumn:s,endRow:d,endColumn:h},t);return t.insert(g,n,0),n}):null}setCellSelection(i,e){const t=this._getCellsToSelect(i,e);this.editor.model.change(n=>{n.setSelection(t.cells.map(s=>n.createRangeOn(s)),{backward:t.backward})})}getFocusCell(){const t=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return t&&t.is("element","tableCell")?t:null}getAnchorCell(){const i=this.editor.model.document.selection,t=ue(i.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const i=this.editor,e=new Set;i.conversion.for("editingDowncast").add(n=>n.on("selection",(s,r,a)=>{const l=a.writer;t(l);const c=this.getSelectedTableCells();if(!c)return;for(const h of c){const m=a.mapper.toViewElement(h);l.addClass("ck-editor__editable_selected",m),e.add(m)}const d=a.mapper.toViewElement(c[c.length-1]);l.setSelection(d,0)},{priority:"lowest"}));function t(n){for(const s of e)n.removeClass("ck-editor__editable_selected",s);e.clear()}}_enablePluginDisabling(){const i=this.editor;this.on("change:isEnabled",()=>{if(!this.isEnabled){const e=this.getSelectedTableCells();if(!e)return;i.model.change(t=>{const n=t.createPositionAt(e[0],0),s=i.model.schema.getNearestSelectionRange(n);t.setSelection(s)})}})}_handleDeleteContent(i,e){const t=this.editor.plugins.get(we),n=e[0],s=e[1],r=this.editor.model,a=!s||s.direction=="backward",l=t.getSelectedTableCells(n);l.length&&(i.stop(),r.change(c=>{const d=l[a?l.length-1:0];r.change(m=>{for(const g of l)r.deleteContent(m.createSelection(g,"in"))});const h=r.schema.getNearestSelectionRange(c.createPositionAt(d,0));n.is("documentSelection")?c.setSelection(h):n.setTo(h)}))}_handleInsertTextEvent(i,e){const t=this.editor,n=this.getSelectedTableCells();if(!n)return;const s=t.editing.view,r=t.editing.mapper,a=n.map(l=>s.createRangeOn(r.toViewElement(l)));e.selection=s.createSelection(a),e.preventDefault()}_getCellsToSelect(i,e){const t=this.editor.plugins.get("TableUtils"),n=t.getCellLocation(i),s=t.getCellLocation(e),r=Math.min(n.row,s.row),a=Math.max(n.row,s.row),l=Math.min(n.column,s.column),c=parseInt(e.getAttribute("colspan")||"1")-1,d=Math.max(n.column,s.column+c),h=new Array(a-r+1).fill(null).map(()=>[]),m={startRow:r,endRow:a,startColumn:l,endColumn:d};for(const{row:p,cell:b}of new q(i.findAncestor("table"),m))h[p-r].push(b);const g=s.row<n.row,f=s.column<n.column;return g&&h.reverse(),f&&h.forEach(p=>p.reverse()),{cells:h.flat(),backward:g||f}}}class HI extends y{static get pluginName(){return"TableClipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[xn,et,qt,we]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"copy",(t,n)=>this._onCopyCut(t,n)),this.listenTo(e,"cut",(t,n)=>this._onCopyCut(t,n)),this._listenToContentInsertion(),this.decorate("_replaceTableSlotCell")}_listenToContentInsertion(){const{editor:i}=this,e=i.plugins.get(et),t=i.plugins.get(qt);let n=!1;e.on("contentInsertion",(s,r)=>{n=r.method==="paste"}),this.listenTo(i.model,"insertContent",(s,[r,a])=>{(n||t.getSelectedTableCells()!==null)&&this._onInsertContent(s,r,a)},{priority:"high"}),e.on("contentInsertion",()=>{n=!1},{priority:"lowest"})}_onCopyCut(i,e){const t=this.editor.editing.view,n=this.editor.plugins.get(qt),s=this.editor.plugins.get(xn);n.getSelectedTableCells()&&(i.name=="cut"&&!this.editor.model.canEditAt(this.editor.model.document.selection)||(e.preventDefault(),i.stop(),this.editor.model.enqueueChange({isUndoable:i.name==="cut"},()=>{const r=s._copySelectedFragmentWithMarkers(i.name,this.editor.model.document.selection,()=>n.getSelectionAsFragment());t.document.fire("clipboardOutput",{dataTransfer:e.dataTransfer,content:this.editor.data.toView(r),method:i.name})})))}_onInsertContent(i,e,t){if(t&&!t.is("documentSelection"))return;const n=this.editor.model,s=this.editor.plugins.get(we),r=this.editor.plugins.get(xn),a=this.getTableIfOnlyTableInContent(e,n);if(!a)return;const l=s.getSelectionAffectedTableCells(n.document.selection);if(!l.length){Tl(a,s);return}i.stop(),e.is("documentFragment")?r._pasteMarkersIntoTransformedElement(e.markers,c=>this._replaceSelectedCells(a,l,c)):this.editor.model.change(c=>{this._replaceSelectedCells(a,l,c)})}_replaceSelectedCells(i,e,t){const n=this.editor.plugins.get(we),s={width:n.getColumns(i),height:n.getRows(i)},r=WI(e,s,t,n),a=r.lastRow-r.firstRow+1,l=r.lastColumn-r.firstColumn+1,c={startRow:0,startColumn:0,endRow:Math.min(a,s.height)-1,endColumn:Math.min(l,s.width)-1};i=ap(i,c,t);const d=e[0].findAncestor("table"),h=this._replaceSelectedCellsWithPasted(i,s,d,r,t);if(this.editor.plugins.get("TableSelection").isEnabled){const m=n.sortRanges(h.map(g=>t.createRangeOn(g)));t.setSelection(m)}else t.setSelection(h[0],0);return d}_replaceSelectedCellsWithPasted(i,e,t,n,s){const{width:r,height:a}=e,l=jI(i,r,a),c=[...new q(t,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],d=[];let h;for(const b of c){const{row:k,column:_}=b;_===n.firstColumn&&(h=b.getPositionBefore());const M=k-n.firstRow,O=_-n.firstColumn,oe=l[M%a][O%r],te=oe?s.cloneElement(oe):null,x=this._replaceTableSlotCell(b,te,h,s);x&&(hp(x,k,_,n.lastRow,n.lastColumn,s),d.push(x),h=s.createPositionAfter(x))}const m=parseInt(t.getAttribute("headingRows")||"0"),g=parseInt(t.getAttribute("headingColumns")||"0"),f=n.firstRow<m&&m<=n.lastRow,p=n.firstColumn<g&&g<=n.lastColumn;if(f){const b={first:n.firstColumn,last:n.lastColumn},k=wa(t,m,b,s,n.firstRow);d.push(...k)}if(p){const b={first:n.firstRow,last:n.lastRow},k=ba(t,g,b,s);d.push(...k)}return d}_replaceTableSlotCell(i,e,t,n){const{cell:s,isAnchor:r}=i;return r&&n.remove(s),e?(n.insert(e,t),e):null}getTableIfOnlyTableInContent(i,e){if(!i.is("documentFragment")&&!i.is("element"))return null;if(i.is("element","table"))return i;if(i.childCount==1&&i.getChild(0).is("element","table"))return i.getChild(0);const t=e.createRangeIn(i);for(const n of t.getItems())if(n.is("element","table")){const s=e.createRange(t.start,e.createPositionBefore(n));if(e.hasContent(s,{ignoreWhitespaces:!0}))return null;const r=e.createRange(e.createPositionAfter(n),t.end);return e.hasContent(r,{ignoreWhitespaces:!0})?null:n}return null}}function WI(o,i,e,t){const n=o[0].findAncestor("table"),s=t.getColumnIndexes(o),r=t.getRowIndexes(o),a={firstColumn:s.first,lastColumn:s.last,firstRow:r.first,lastRow:r.last},l=o.length===1;return l&&(a.lastRow+=i.height-1,a.lastColumn+=i.width-1,qI(n,a.lastRow+1,a.lastColumn+1,t)),l||!t.isSelectionRectangular(o)?GI(n,a,e):(a.lastRow=mp(n,a),a.lastColumn=gp(n,a)),a}function qI(o,i,e,t){const n=t.getColumns(o),s=t.getRows(o);e>n&&t.insertColumns(o,{at:n,columns:e-n}),i>s&&t.insertRows(o,{at:s,rows:i-s})}function jI(o,i,e){const t=new Array(e).fill(null).map(()=>new Array(i).fill(null));for(const{column:n,row:s,cell:r}of new q(o))t[s][n]=r;return t}function GI(o,i,e){const{firstRow:t,lastRow:n,firstColumn:s,lastColumn:r}=i,a={first:t,last:n},l={first:s,last:r};ba(o,s,a,e),ba(o,r+1,a,e),wa(o,t,l,e),wa(o,n+1,l,e,t)}function wa(o,i,e,t,n=0){return i<1?void 0:lp(o,i,n).filter(({column:a,cellWidth:l})=>bp(a,l,e)).map(({cell:a})=>cp(a,i,t))}function ba(o,i,e,t){return i<1?void 0:dp(o,i).filter(({row:r,cellHeight:a})=>bp(r,a,e)).map(({cell:r,column:a})=>up(r,a,i,t))}function bp(o,i,e){const t=o+i-1,{first:n,last:s}=e,r=o>=n&&o<=s,a=o<n&&t>=n;return r||a}class $I extends y{static get pluginName(){return"TableKeyboard"}static get isOfficialPlugin(){return!0}static get requires(){return[qt,we]}init(){const i=this.editor,t=i.editing.view.document,n=i.t;this.listenTo(t,"arrowKey",(...s)=>this._onArrowKey(...s),{context:"table"}),this.listenTo(t,"tab",(...s)=>this._handleTabOnSelectedTable(...s),{context:"figure"}),this.listenTo(t,"tab",(...s)=>this._handleTab(...s),{context:["th","td"]}),i.accessibility.addKeystrokeInfoGroup({id:"table",label:n("Keystrokes that can be used in a table cell"),keystrokes:[{label:n("Move the selection to the next cell"),keystroke:"Tab"},{label:n("Move the selection to the previous cell"),keystroke:"Shift+Tab"},{label:n("Insert a new table row (when in the last cell of a table)"),keystroke:"Tab"},{label:n("Navigate through the table"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]}]})}_handleTabOnSelectedTable(i,e){const t=this.editor,s=t.model.document.selection.getSelectedElement();!s||!s.is("element","table")||(e.preventDefault(),e.stopPropagation(),i.stop(),t.model.change(r=>{r.setSelection(r.createRangeIn(s.getChild(0).getChild(0)))}))}_handleTab(i,e){const t=this.editor,n=this.editor.plugins.get(we),s=this.editor.plugins.get("TableSelection"),r=t.model.document.selection,a=!e.shiftKey;let l=n.getTableCellsContainingSelection(r)[0];if(l||(l=s.getFocusCell()),!l)return;e.preventDefault(),e.stopPropagation(),i.stop();const c=l.parent,d=c.parent,h=d.getChildIndex(c),m=c.getChildIndex(l),g=m===0;if(!a&&g&&h===0){t.model.change(k=>{k.setSelection(k.createRangeOn(d))});return}const f=m===c.childCount-1,p=h===n.getRows(d)-1;if(a&&p&&f&&(t.execute("insertTableRowBelow"),h===n.getRows(d)-1)){t.model.change(k=>{k.setSelection(k.createRangeOn(d))});return}let b;if(a&&f)b=d.getChild(h+1).getChild(0);else if(!a&&g){const k=d.getChild(h-1);b=k.getChild(k.childCount-1)}else b=c.getChild(m+(a?1:-1));t.model.change(k=>{k.setSelection(k.createRangeIn(b))})}_onArrowKey(i,e){const t=this.editor,n=e.keyCode,s=Ma(n,t.locale.contentLanguageDirection);this._handleArrowKeys(s,e.shiftKey)&&(e.preventDefault(),e.stopPropagation(),i.stop())}_handleArrowKeys(i,e){const t=this.editor.plugins.get(we),n=this.editor.plugins.get("TableSelection"),s=this.editor.model,r=s.document.selection,a=["right","down"].includes(i),l=t.getSelectedTableCells(r);if(l.length){let d;return e?d=n.getFocusCell():d=a?l[l.length-1]:l[0],this._navigateFromCellInDirection(d,i,e),!0}const c=r.focus.findAncestor("tableCell");/* istanbul ignore if: paranoid check -- @preserve */if(!c)return!1;if(!r.isCollapsed)if(e){if(r.isBackward==a&&!r.containsEntireContent(c))return!1}else{const d=r.getSelectedElement();if(!d||!s.schema.isObject(d))return!1}return this._isSelectionAtCellEdge(r,c,a)?(this._navigateFromCellInDirection(c,i,e),!0):!1}_isSelectionAtCellEdge(i,e,t){const n=this.editor.model,s=this.editor.model.schema,r=t?i.getLastPosition():i.getFirstPosition();if(!s.getLimitElement(r).is("element","tableCell"))return n.createPositionAt(e,t?"end":0).isTouching(r);const a=n.createSelection(r);return n.modifySelection(a,{direction:t?"forward":"backward"}),r.isEqual(a.focus)}_navigateFromCellInDirection(i,e,t=!1){const n=this.editor.model,s=i.findAncestor("table"),r=[...new q(s,{includeAllSlots:!0})],{row:a,column:l}=r[r.length-1],c=r.find(({cell:_})=>_==i);let{row:d,column:h}=c;switch(e){case"left":h--;break;case"up":d--;break;case"right":h+=c.cellWidth;break;case"down":d+=c.cellHeight;break}const m=d<0||d>a,g=h<0&&d<=0,f=h>l&&d>=a;if(m||g||f){n.change(_=>{_.setSelection(_.createRangeOn(s))});return}h<0?(h=t?0:l,d--):h>l&&(h=t?l:0,d++);const p=r.find(_=>_.row==d&&_.column==h).cell,b=["right","down"].includes(e),k=this.editor.plugins.get("TableSelection");if(t&&k.isEnabled){const _=k.getAnchorCell()||i;k.setCellSelection(_,p)}else{const _=n.createPositionAt(p,b?0:"end");n.change(M=>{M.setSelection(_)})}}}class vp extends Rt{constructor(){super(...arguments);u(this,"domEventType",["mousemove","mouseleave"])}onDomEvent(e){this.fire(e.type,e)}}class KI extends y{static get pluginName(){return"TableMouse"}static get isOfficialPlugin(){return!0}static get requires(){return[qt,we]}init(){this.editor.editing.view.addObserver(vp),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const i=this.editor,e=i.plugins.get(we);let t=!1;const n=i.plugins.get(qt);this.listenTo(i.editing.view.document,"mousedown",(s,r)=>{const a=i.model.document.selection;if(!this.isEnabled||!n.isEnabled||!r.domEvent.shiftKey)return;const l=n.getAnchorCell()||e.getTableCellsContainingSelection(a)[0];if(!l)return;const c=this._getModelTableCellFromDomEvent(r);c&&Qu(l,c)&&(t=!0,n.setCellSelection(l,c),r.preventDefault())}),this.listenTo(i.editing.view.document,"mouseup",()=>{t=!1}),this.listenTo(i.editing.view.document,"selectionChange",s=>{t&&s.stop()},{priority:"highest"})}_enableMouseDragSelection(){const i=this.editor;let e,t,n=!1,s=!1;const r=i.plugins.get(qt);this.listenTo(i.editing.view.document,"mousedown",(a,l)=>{!this.isEnabled||!r.isEnabled||l.domEvent.shiftKey||l.domEvent.ctrlKey||l.domEvent.altKey||(e=this._getModelTableCellFromDomEvent(l))}),this.listenTo(i.editing.view.document,"mousemove",(a,l)=>{if(!l.domEvent.buttons||!e)return;const c=this._getModelTableCellFromDomEvent(l);c&&Qu(e,c)&&(t=c,!n&&t!=e&&(n=!0)),n&&(s=!0,r.setCellSelection(e,t),l.preventDefault())}),this.listenTo(i.editing.view.document,"mouseup",()=>{n=!1,s=!1,e=null,t=null}),this.listenTo(i.editing.view.document,"selectionChange",a=>{s&&a.stop()},{priority:"highest"})}_getModelTableCellFromDomEvent(i){const e=i.target,t=this.editor.editing.view.createPositionAt(e,0);return this.editor.editing.mapper.toModelPosition(t).parent.findAncestor("tableCell",{includeSelf:!0})}}function Qu(o,i){return o.parent.parent==i.parent.parent}class ZI extends y{static get requires(){return[ao,FI,qt,KI,$I,HI,to]}static get pluginName(){return"Table"}static get isOfficialPlugin(){return!0}}function ks(o){const i=kp(o);return i||Us(o)}function kp(o){const i=o.getSelectedElement();return i&&yp(i)?i:null}function Us(o){const i=o.getFirstPosition();if(!i)return null;let e=i.parent;for(;e;){if(e.is("element")&&yp(e))return e;e=e.parent}return null}function yp(o){return!!o.getCustomProperty("table")&&le(o)}class JI extends y{static get requires(){return[ms]}static get pluginName(){return"TableToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const i=this.editor,e=i.t,t=i.plugins.get(ms),n=i.config.get("table.contentToolbar"),s=i.config.get("table.tableToolbar");n&&t.register("tableContent",{ariaLabel:e("Table toolbar"),items:n,getRelatedElement:Us}),s&&t.register("table",{ariaLabel:e("Table toolbar"),items:s,getRelatedElement:kp})}}class YI extends E{constructor(e,t){super(e);u(this,"options");u(this,"focusTracker");u(this,"focusCycler");u(this,"_focusables");u(this,"dropdownView");u(this,"inputView");u(this,"keystrokes");u(this,"_stillTyping");this.set("value",""),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.options=t,this.focusTracker=new ee,this._focusables=new ve,this.dropdownView=this._createDropdownView(),this.inputView=this._createInputTextView(),this.keystrokes=new re,this._stillTyping=!1,this.focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color"]},children:[this.dropdownView,this.inputView]}),this.on("change:value",(n,s,r)=>this._setInputValue(r))}render(){super.render(),[this.inputView,this.dropdownView.buttonView].forEach(e=>{this.focusTracker.add(e.element),this._focusables.add(e)}),this.keystrokes.listenTo(this.element)}focus(e){e===-1?this.focusCycler.focusLast():this.focusCycler.focusFirst()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createDropdownView(){const e=this.locale,t=e.t,n=this.bindTemplate,s=this._createColorSelector(e),r=We(e),a=new E;return a.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:n.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",n.if("value","ck-hidden",l=>l!="")]}}]}),r.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),r.buttonView.children.add(a),r.buttonView.label=t("Color picker"),r.buttonView.tooltip=!0,r.panelPosition=e.uiLanguageDirection==="rtl"?"se":"sw",r.panelView.children.add(s),r.bind("isEnabled").to(this,"isReadOnly",l=>!l),r.on("change:isOpen",(l,c,d)=>{d&&(s.updateSelectedColors(),s.showColorGridsFragment())}),r}_createInputTextView(){const e=this.locale,t=new Dg(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",()=>{const n=t.element.value,s=this.options.colorDefinitions.find(r=>n===r.label);this._stillTyping=!0,this.value=s&&s.color||n}),t.on("blur",()=>{this._stillTyping=!1,this._setInputValue(t.element.value)}),t.delegate("input").to(this),t}_createColorSelector(e){const t=e.t,n=this.options.defaultColorValue||"",s=t(n?"Restore default":"Remove color"),r=new XC(e,{colors:this.options.colorDefinitions,columns:this.options.columns,removeButtonLabel:s,colorPickerLabel:t("Color picker"),colorPickerViewConfig:this.options.colorPickerConfig===!1?!1:{...this.options.colorPickerConfig,hideInput:!0}});r.appendUI(),r.on("execute",(l,c)=>{if(c.source==="colorPickerSaveButton"){this.dropdownView.isOpen=!1;return}this.value=c.value||n,this.fire("input"),c.source!=="colorPicker"&&(this.dropdownView.isOpen=!1)});let a=this.value;return r.on("colorPicker:cancel",()=>{this.value=a,this.fire("input"),this.dropdownView.isOpen=!1}),r.colorGridsFragmentView.colorPickerButtonView.on("execute",()=>{a=this.value}),r.bind("selectedColor").to(this,"value"),r}_setInputValue(e){if(!this._stillTyping){const t=eh(e),n=this.options.colorDefinitions.find(s=>t===eh(s.color));n?this.inputView.value=n.label:this.inputView.value=e||""}}}function eh(o){return o.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const xl=o=>o==="";function Sl(o){return{none:o("None"),solid:o("Solid"),dotted:o("Dotted"),dashed:o("Dashed"),double:o("Double"),groove:o("Groove"),ridge:o("Ridge"),inset:o("Inset"),outset:o("Outset")}}function _p(o){return o('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Cp(o){return o('The value is invalid. Try "10px" or "2em" or simply "2".')}function ys(o){return o=o.trim().toLowerCase(),xl(o)||tg(o)}function An(o){return o=o.trim(),xl(o)||Ep(o)||Ja(o)||X_(o)}function Lp(o){return o=o.trim(),xl(o)||Ep(o)||Ja(o)}function Tp(o,i){const e=new Be,t=Sl(o.t);for(const n in t){const s={type:"button",model:new Wn({_borderStyleValue:n,label:t[n],role:"menuitemradio",withText:!0})};n==="none"?s.model.bind("isOn").to(o,"borderStyle",r=>i==="none"?!r:r===n):s.model.bind("isOn").to(o,"borderStyle",r=>r===n),e.add(s)}return e}function va(o){const{view:i,icons:e,toolbar:t,labels:n,propertyName:s,nameToValue:r,defaultValue:a}=o;for(const l in n){const c=new A(i.locale);c.set({role:"radio",isToggleable:!0,label:n[l],icon:e[l],tooltip:n[l]});const d=r?r(l):l;c.bind("isOn").to(i,s,h=>{let m=h;return h===""&&a&&(m=a),d===m}),c.on("execute",()=>{!a&&d&&i[s]===d?i[s]=void 0:i[s]=d}),t.items.add(c)}}const _s=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function Cs(o){return(i,e,t)=>{const n=new YI(i.locale,{colorDefinitions:XI(o.colorConfig),columns:o.columns,defaultColorValue:o.defaultColorValue,colorPickerConfig:o.colorPickerConfig});return n.inputView.set({id:e,ariaDescribedById:t}),n.bind("isReadOnly").to(i,"isEnabled",s=>!s),n.bind("hasError").to(i,"errorText",s=>!!s),n.on("input",()=>{i.errorText=null}),i.bind("isEmpty","isFocused").to(n),n}}function Ep(o){const i=parseFloat(o);return!Number.isNaN(i)&&o===String(i)}function XI(o){return o.map(i=>({color:i.model,label:i.label,options:{hasBorder:i.hasBorder}}))}class QI extends E{constructor(e,t){super(e);u(this,"options");u(this,"focusTracker");u(this,"keystrokes");u(this,"children");u(this,"borderStyleDropdown");u(this,"borderWidthInput");u(this,"borderColorInput");u(this,"backgroundInput");u(this,"paddingInput");u(this,"widthInput");u(this,"heightInput");u(this,"horizontalAlignmentToolbar");u(this,"verticalAlignmentToolbar");u(this,"saveButtonView");u(this,"cancelButtonView");u(this,"_focusables");u(this,"_focusCycler");this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:n,borderWidthInput:s,borderColorInput:r,borderRowLabel:a}=this._createBorderFields(),{backgroundRowLabel:l,backgroundInput:c}=this._createBackgroundFields(),{widthInput:d,operatorLabel:h,heightInput:m,dimensionsLabel:g}=this._createDimensionFields(),{horizontalAlignmentToolbar:f,verticalAlignmentToolbar:p,alignmentLabel:b}=this._createAlignmentFields();this.focusTracker=new ee,this.keystrokes=new re,this.children=this.createCollection(),this.borderStyleDropdown=n,this.borderWidthInput=s,this.borderColorInput=r,this.backgroundInput=c,this.paddingInput=this._createPaddingField(),this.widthInput=d,this.heightInput=m,this.horizontalAlignmentToolbar=f,this.verticalAlignmentToolbar=p;const{saveButtonView:k,cancelButtonView:_}=this._createActionButtons();this.saveButtonView=k,this.cancelButtonView=_,this._focusables=new ve,this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new Jt(e,{label:this.t("Cell properties")})),this.children.add(new ke(e,{labelView:a,children:[a,n,r,s],class:"ck-table-form__border-row"})),this.children.add(new ke(e,{labelView:l,children:[l,c],class:"ck-table-form__background-row"})),this.children.add(new ke(e,{children:[new ke(e,{labelView:g,children:[g,d,h,m],class:"ck-table-form__dimensions-row"}),new ke(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new ke(e,{labelView:b,children:[b,f,p],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new ke(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),gi({view:this}),[this.borderColorInput,this.backgroundInput].forEach(e=>{this._focusCycler.chain(e.fieldView.focusCycler)}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},n=Cs({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),s=this.locale,r=this.t,a=r("Style"),l=new Ye(s);l.text=r("Border");const c=Sl(r),d=new he(s,jg);d.set({label:a,class:"ck-table-form__border-style"}),d.fieldView.buttonView.set({ariaLabel:a,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:a}),d.fieldView.buttonView.bind("label").to(this,"borderStyle",g=>c[g||"none"]),d.fieldView.on("execute",g=>{this.borderStyle=g.source._borderStyleValue}),d.bind("isEmpty").to(this,"borderStyle",g=>!g),Qn(d.fieldView,Tp(this,t.style),{role:"menu",ariaLabel:a});const h=new he(s,Xe);h.set({label:r("Width"),class:"ck-table-form__border-width"}),h.fieldView.bind("value").to(this,"borderWidth"),h.bind("isEnabled").to(this,"borderStyle",Io),h.fieldView.on("input",()=>{this.borderWidth=h.fieldView.element.value});const m=new he(s,n);return m.set({label:r("Color"),class:"ck-table-form__border-color"}),m.fieldView.bind("value").to(this,"borderColor"),m.bind("isEnabled").to(this,"borderStyle",Io),m.fieldView.on("input",()=>{this.borderColor=m.fieldView.value}),this.on("change:borderStyle",(g,f,p,b)=>{Io(p)||(this.borderColor="",this.borderWidth=""),Io(b)||(this.borderColor=t.color,this.borderWidth=t.width)}),{borderRowLabel:l,borderStyleDropdown:d,borderColorInput:m,borderWidthInput:h}}_createBackgroundFields(){const e=this.locale,t=this.t,n=new Ye(e);n.text=t("Background");const s=Cs({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),r=new he(e,s);return r.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),r.fieldView.bind("value").to(this,"backgroundColor"),r.fieldView.on("input",()=>{this.backgroundColor=r.fieldView.value}),{backgroundRowLabel:n,backgroundInput:r}}_createDimensionFields(){const e=this.locale,t=this.t,n=new Ye(e);n.text=t("Dimensions");const s=new he(e,Xe);s.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),s.fieldView.bind("value").to(this,"width"),s.fieldView.on("input",()=>{this.width=s.fieldView.element.value});const r=new E(e);r.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const a=new he(e,Xe);return a.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),a.fieldView.bind("value").to(this,"height"),a.fieldView.on("input",()=>{this.height=a.fieldView.element.value}),{dimensionsLabel:n,widthInput:s,operatorLabel:r,heightInput:a}}_createPaddingField(){const e=this.locale,t=this.t,n=new he(e,Xe);return n.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),n.fieldView.bind("value").to(this,"padding"),n.fieldView.on("input",()=>{this.padding=n.fieldView.element.value}),n}_createAlignmentFields(){const e=this.locale,t=this.t,n=new Ye(e),s={left:Xa,center:dg,right:hg,justify:ug,top:O0,middle:D0,bottom:N0};n.text=t("Table cell text alignment");const r=new ai(e),a=e.contentLanguageDirection==="rtl";r.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Horizontal text alignment toolbar")}),va({view:this,icons:s,toolbar:r,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:c=>{if(a){if(c==="left")return"right";if(c==="right")return"left"}return c},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const l=new ai(e);return l.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Vertical text alignment toolbar")}),va({view:this,icons:s,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:r,verticalAlignmentToolbar:l,alignmentLabel:n}}_createActionButtons(){const e=this.locale,t=this.t,n=new A(e),s=new A(e),r=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:t("Save"),icon:Bs,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(r,"errorText",(...a)=>a.every(l=>!l)),s.set({label:t("Cancel"),icon:Ms,class:"ck-button-cancel",withText:!0}),s.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:s}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,n=t("Align cell text to the left"),s=t("Align cell text to the center"),r=t("Align cell text to the right"),a=t("Justify cell text");return e.uiLanguageDirection==="rtl"?{right:r,center:s,left:n,justify:a}:{left:n,center:s,right:r,justify:a}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function Io(o){return o!=="none"}const ka=[Ie.defaultPositions.northArrowSouth,Ie.defaultPositions.northArrowSouthWest,Ie.defaultPositions.northArrowSouthEast,Ie.defaultPositions.southArrowNorth,Ie.defaultPositions.southArrowNorthWest,Ie.defaultPositions.southArrowNorthEast,Ie.defaultPositions.viewportStickyNorth];function xp(o,i){const e=o.plugins.get("ContextualBalloon"),t=o.editing.view.document.selection;let n;i==="cell"?Us(t)&&(n=Ap(o)):ks(t)&&(n=Sp(o)),n&&e.updatePosition(n)}function Sp(o){const i=o.model.document.selection,e=Wt(i),t=o.editing.mapper.toViewElement(e);return{target:o.editing.view.domConverter.mapViewToDom(t),positions:ka}}function Ap(o){const i=o.editing.mapper,e=o.editing.view.domConverter,t=o.model.document.selection;if(t.rangeCount>1)return{target:()=>eP(t.getRanges(),o),positions:ka};const n=Ip(t.getFirstPosition()),s=i.toViewElement(n);return{target:e.mapViewToDom(s),positions:ka}}function Ip(o){return o.nodeAfter&&o.nodeAfter.is("element","tableCell")?o.nodeAfter:o.findAncestor("tableCell")}function eP(o,i){const e=i.editing.mapper,t=i.editing.view.domConverter,n=Array.from(o).map(s=>{const r=Ip(s.start),a=e.toViewElement(r);return new R(t.mapViewToDom(a))});return R.getBoundingRect(n)}function wi(o){if(!o||!Qe(o))return o;const{top:i,right:e,bottom:t,left:n}=o;if(i==e&&e==t&&t==n)return i}function bi(o,i){const e=parseFloat(o);return Number.isNaN(e)||String(e)!==String(o)?o:`${e}${i}`}function Hs(o,i={}){const e={borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",...o};return i.includeAlignmentProperty&&!e.alignment&&(e.alignment="center"),i.includePaddingProperty&&!e.padding&&(e.padding=""),i.includeVerticalAlignmentProperty&&!e.verticalAlignment&&(e.verticalAlignment="middle"),i.includeHorizontalAlignmentProperty&&!e.horizontalAlignment&&(e.horizontalAlignment=i.isRightToLeftContent?"right":"left"),e}function Pp(o,i){return Hs({borderStyle:"double",borderColor:"hsl(0, 0%, 70%)",borderWidth:"1px",...o},i)}function Al(o,i){return Hs({borderStyle:"solid",borderColor:"hsl(0, 0%, 75%)",borderWidth:"1px",...o},i)}const tP=500,th={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",height:"tableCellHeight",width:"tableCellWidth",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class iP extends y{constructor(e){super(e);u(this,"_defaultContentTableCellProperties");u(this,"_defaultLayoutTableCellProperties");u(this,"_balloon");u(this,"view");u(this,"_viewWithContentTableDefaults");u(this,"_viewWithLayoutTableDefaults");u(this,"_undoStepBatch");u(this,"_isReady");e.config.define("table.tableCellProperties",{borderColors:_s,backgroundColors:_s})}static get requires(){return[Pt]}static get pluginName(){return"TableCellPropertiesUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t;this._defaultContentTableCellProperties=Al(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:e.locale.contentLanguageDirection==="rtl"}),this._defaultLayoutTableCellProperties=Hs(void 0,{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,isRightToLeftContent:e.locale.contentLanguageDirection==="rtl"}),this._balloon=e.plugins.get(Pt),this.view=null,this._isReady=!1,e.ui.componentFactory.add("tableCellProperties",n=>{const s=new A(n);s.set({label:t("Cell properties"),icon:L1,tooltip:!0}),this.listenTo(s,"execute",()=>this._showView());const r=Object.values(th).map(a=>e.commands.get(a));return s.bind("isEnabled").toMany(r,"isEnabled",(...a)=>a.some(l=>l)),s})}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,n=t.config.get("table.tableCellProperties"),s=us(n.borderColors),r=ds(t.locale,s),a=us(n.backgroundColors),l=ds(t.locale,a),c=n.colorPicker!==!1,d=new QI(t.locale,{borderColors:r,backgroundColors:l,defaultTableCellProperties:e,colorPickerConfig:c?n.colorPicker||{}:!1}),h=t.t;d.render(),this.listenTo(d,"submit",()=>{this._hideView()}),this.listenTo(d,"cancel",()=>{this._undoStepBatch.operations.length&&t.execute("undo",this._undoStepBatch),this._hideView()}),d.keystrokes.set("Esc",(f,p)=>{this._hideView(),p()}),mi({emitter:d,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const m=_p(h),g=Cp(h);return d.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle")),d.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:d.borderColorInput,commandName:"tableCellBorderColor",errorText:m,validator:ys})),d.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:d.borderWidthInput,commandName:"tableCellBorderWidth",errorText:g,validator:Lp})),d.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:d.paddingInput,commandName:"tableCellPadding",errorText:g,validator:An})),d.on("change:width",this._getValidatedPropertyChangeCallback({viewField:d.widthInput,commandName:"tableCellWidth",errorText:g,validator:An})),d.on("change:height",this._getValidatedPropertyChangeCallback({viewField:d.heightInput,commandName:"tableCellHeight",errorText:g,validator:An})),d.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:d.backgroundInput,commandName:"tableCellBackgroundColor",errorText:m,validator:ys})),d.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment")),d.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment")),d}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(th).map(([n,s])=>{const r=n,a=this.view===this._viewWithContentTableDefaults?this._defaultContentTableCellProperties[r]||"":this._defaultLayoutTableCellProperties[r]||"";return[n,e.get(s).value||a]}).forEach(([n,s])=>{(n==="borderColor"||n==="borderWidth")&&t.value==="none"||this.view.set(n,s)}),this._isReady=!0}_showView(){const e=this.editor,t=ks(e.editing.view.document.selection),n=t&&e.editing.mapper.toModelElement(t),s=!n||n.getAttribute("tableType")!=="layout";s&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableCellProperties):!s&&!this._viewWithLayoutTableDefaults&&(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableCellProperties)),this.view=s?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",()=>{this._updateView()}),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Ap(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor,t=e.editing.view.document;Us(t.selection)?this._isViewVisible&&xp(e,"cell"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,n,s)=>{this._isReady&&this.editor.execute(e,{value:s,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:n,validator:s,errorText:r}=e,a=at(()=>{n.errorText=r},tP);return(l,c,d)=>{a.cancel(),this._isReady&&(s(d)?(this.editor.execute(t,{value:d,batch:this._undoStepBatch}),n.errorText=null):a())}}}class Mt extends B{constructor(e,t,n){super(e);u(this,"attributeName");u(this,"_defaultValue");u(this,"_defaultContentTableValue");u(this,"_defaultLayoutTableValue");switch(this.attributeName=t,this._defaultContentTableValue=n,t){case"tableCellBorderStyle":this._defaultLayoutTableValue="none";break;case"tableCellHorizontalAlignment":this._defaultLayoutTableValue="left";break;case"tableCellVerticalAlignment":this._defaultLayoutTableValue="middle";break;default:this._defaultLayoutTableValue=void 0}}refresh(){const t=this.editor.model.document.selection,s=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(t),r=Wt(t);this._defaultValue=!r||r.getAttribute("tableType")!=="layout"?this._defaultContentTableValue:this._defaultLayoutTableValue,this.isEnabled=!!s.length,this.value=this._getSingleValue(s)}execute(e={}){const{value:t,batch:n}=e,s=this.editor.model,a=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(s.document.selection),l=this._getValueToSet(t);s.enqueueChange(n,c=>{l?a.forEach(d=>c.setAttribute(this.attributeName,l,d)):a.forEach(d=>c.removeAttribute(this.attributeName,d))})}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);if(t!==this._defaultValue)return t}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every(s=>this._getAttribute(s)===t)?t:void 0}}class nP extends Mt{constructor(i,e){super(i,"tableCellWidth",e)}_getValueToSet(i){if(i=bi(i,"px"),i!==this._defaultValue)return i}}class Rp extends y{static get pluginName(){return"TableCellWidthEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[ao]}init(){const i=this.editor,e=Al(i.config.get("table.tableCellProperties.defaultProperties"));qo(i.model.schema,i.conversion,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:e.width}),i.commands.add("tableCellWidth",new nP(i,e.width))}}class oP extends Mt{constructor(i,e){super(i,"tableCellPadding",e)}_getAttribute(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=bi(i,"px");if(e!==this._defaultValue)return e}}class sP extends Mt{constructor(i,e){super(i,"tableCellHeight",e)}_getValueToSet(i){const e=bi(i,"px");if(e!==this._defaultValue)return e}}class rP extends Mt{constructor(i,e){super(i,"tableCellBackgroundColor",e)}}class aP extends Mt{constructor(i,e){super(i,"tableCellVerticalAlignment",e)}}class lP extends Mt{constructor(i,e){super(i,"tableCellHorizontalAlignment",e)}}class cP extends Mt{constructor(i,e){super(i,"tableCellBorderStyle",e)}_getAttribute(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class dP extends Mt{constructor(i,e){super(i,"tableCellBorderColor",e)}_getAttribute(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class uP extends Mt{constructor(i,e){super(i,"tableCellBorderWidth",e)}_getAttribute(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=bi(i,"px");if(e!==this._defaultValue)return e}}const ih=/^(top|middle|bottom)$/,nh=/^(left|center|right|justify)$/;class hP extends y{static get pluginName(){return"TableCellPropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[ao,Rp]}init(){const i=this.editor,e=i.model.schema,t=i.conversion;i.config.define("table.tableCellProperties.defaultProperties",{});const n=Al(i.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:i.locale.contentLanguageDirection==="rtl"});i.data.addStyleProcessorRules(ng),mP(e,t,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),i.commands.add("tableCellBorderStyle",new cP(i,n.borderStyle)),i.commands.add("tableCellBorderColor",new dP(i,n.borderColor)),i.commands.add("tableCellBorderWidth",new uP(i,n.borderWidth)),qo(e,t,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),i.commands.add("tableCellHeight",new sP(i,n.height)),i.data.addStyleProcessorRules(f0),qo(e,t,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),i.commands.add("tableCellPadding",new oP(i,n.padding)),i.data.addStyleProcessorRules(ig),qo(e,t,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),i.commands.add("tableCellBackgroundColor",new rP(i,n.backgroundColor)),gP(e,t,n.horizontalAlignment),i.commands.add("tableCellHorizontalAlignment",new lP(i,n.horizontalAlignment)),fP(e,t,n.verticalAlignment),i.commands.add("tableCellVerticalAlignment",new aP(i,n.verticalAlignment))}}function mP(o,i,e){const t={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};o.extend("tableCell",{allowAttributes:Object.values(t)}),da(i,"td",t,e),da(i,"th",t,e),Sn(i,{modelElement:"tableCell",modelAttribute:t.style,styleName:"border-style"}),Sn(i,{modelElement:"tableCell",modelAttribute:t.color,styleName:"border-color"}),Sn(i,{modelElement:"tableCell",modelAttribute:t.width,styleName:"border-width"})}function gP(o,i,e){o.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),i.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:t=>({key:"style",value:{"text-align":t}})}),i.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":nh}},model:{key:"tableCellHorizontalAlignment",value:(t,n,s)=>{const r=Ht(e,"left",s),a=t.getStyle("text-align");return a===r?null:a}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:nh}},model:{key:"tableCellHorizontalAlignment",value:(t,n,s)=>{const r=Ht(e,"left",s),a=t.getAttribute("align");return a===r?null:a}}})}function fP(o,i,e){o.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),i.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:t=>({key:"style",value:{"vertical-align":t}})}),i.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":ih}},model:{key:"tableCellVerticalAlignment",value:(t,n,s)=>{const r=Ht(e,"middle",s),a=t.getStyle("vertical-align");return a===r?null:a}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:ih}},model:{key:"tableCellVerticalAlignment",value:(t,n,s)=>{const r=Ht(e,"middle",s),a=t.getAttribute("valign");return a===r?null:a}}})}class pP extends y{static get pluginName(){return"TableCellProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[hP,iP]}}class wP extends B{refresh(){this.isEnabled=!0}execute(i={}){const{model:e,plugins:t}=this.editor;let{table:n=e.document.selection.getSelectedElement(),columnWidths:s,tableWidth:r}=i;s&&(s=Array.isArray(s)?s:s.split(",")),e.change(a=>{r?a.setAttribute("tableWidth",r,n):a.removeAttribute("tableWidth",n);const l=t.get("TableColumnResizeEditing").getColumnGroupElement(n);if(!s&&!l)return;if(!s)return a.remove(l);const c=El(s);if(l)Array.from(l.getChildren()).forEach((d,h)=>a.setAttribute("columnWidth",c[h],d));else{const d=a.createElement("tableColumnGroup");c.forEach(h=>a.appendElement("tableColumn",{columnWidth:h},d)),a.append(d,n)}})}}function bP(o){return i=>i.on("element:colgroup",(e,t,n)=>{const s=t.modelCursor.findAncestor("table"),r=so(s);if(!r)return;const a=ro(r),l=o.getColumns(s);let c=gI(r,n.writer);c=Array.from({length:l},(d,h)=>c[h]||"auto"),(c.length!=a.length||c.includes("auto"))&&pp(a,r,El(c),n.writer)},{priority:"low"})}function vP(){return o=>o.on("insert:table",(i,e,t)=>{const n=t.writer,s=e.item,r=t.mapper.toViewElement(s),a=r.is("element","table")?r:Array.from(r.getChildren()).find(c=>c.is("element","table"));so(s)?n.addClass("ck-table-resized",a):n.removeClass("ck-table-resized",a)},{priority:"low"})}const oh=Ki("px");class kP extends y{constructor(e){super(e);u(this,"_isResizingActive");u(this,"_resizingData");u(this,"_domEmitter");u(this,"_tableUtilsPlugin");u(this,"_initialMouseEventData",null);this._isResizingActive=!1,this.set("_isResizingAllowed",!0),this._resizingData=null,this._domEmitter=new(Se()),this._tableUtilsPlugin=e.plugins.get("TableUtils"),this.on("change:_isResizingAllowed",(t,n,s)=>{const r=s?"removeClass":"addClass";e.editing.view.change(a=>{for(const l of e.editing.view.document.roots)a[r]("ck-column-resize_disabled",e.editing.view.document.getRoot(l.rootName))})})}static get requires(){return[ao,we]}static get pluginName(){return"TableColumnResizeEditing"}static get isOfficialPlugin(){return!0}init(){this._extendSchema(),this._registerPostFixer(),this._registerConverters(),this._registerResizingListeners(),this._registerResizerInserter();const e=this.editor,t=e.plugins.get("TableColumnResize");e.plugins.get("TableEditing").registerAdditionalSlot({filter:r=>r.is("element","tableColumnGroup"),positionOffset:0});const s=new wP(e);e.commands.add("resizeTableWidth",s),e.commands.add("resizeColumnWidths",s),this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",s,"isEnabled",(r,a,l)=>!r&&a&&l)}destroy(){this._domEmitter.stopListening(),super.destroy()}getColumnGroupElement(e){return so(e)}getTableColumnElements(e){return ro(e)}getTableColumnsWidths(e){return mI(e)}_extendSchema(){this.editor.model.schema.extend("table",{allowAttributes:["tableWidth"]}),this.editor.model.schema.register("tableColumnGroup",{allowIn:"table",isLimit:!0}),this.editor.model.schema.register("tableColumn",{allowIn:"tableColumnGroup",allowAttributes:["columnWidth","colSpan"],isLimit:!0})}_registerPostFixer(){const t=this.editor.model;t.document.registerPostFixer(r=>{let a=!1;for(const l of rI(t)){const c=this.getColumnGroupElement(l),d=this.getTableColumnElements(c),h=this.getTableColumnsWidths(c);let m=El(h);m=n(m,l,this),!Zo(h,m)&&(pp(d,c,m,r),a=!0)}return a});function n(r,a,l){const c=l._tableUtilsPlugin.getColumns(a);if(c-r.length===0)return r;const h=r.map(g=>Number(g.replace("%",""))),m=s(l.editor.model.document.differ,a);for(const g of m){const f=c-h.length;if(f===0)continue;const p=f>0,b=l._tableUtilsPlugin.getCellLocation(g).column;if(p){const k=aI(a,l.editor),_=dI(f,k);h.splice(b,0,..._)}else{const k=h.splice(b,Math.abs(f));h[b]+=Kn(k)}}return h.map(g=>g+"%")}function s(r,a){const l=new Set;for(const c of r.getChanges())if(c.type=="insert"&&c.position.nodeAfter&&c.position.nodeAfter.name=="tableCell"&&c.position.nodeAfter.getAncestors().includes(a))l.add(c.position.nodeAfter);else if(c.type=="remove"){const d=c.position.nodeBefore||c.position.nodeAfter;d.name=="tableCell"&&d.getAncestors().includes(a)&&l.add(d)}return l}}_registerConverters(){const t=this.editor.conversion;t.for("upcast").attributeToAttribute({view:{name:/^(figure|table)$/,styles:{width:/[\s\S]+/}},model:{name:"table",key:"tableWidth",value:n=>{if(!n.parent.is("element","figure"))return n.getStyle("width")}}}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableWidth"},view:n=>({name:"figure",key:"style",value:{width:n}})}),t.elementToElement({model:"tableColumnGroup",view:"colgroup"}),t.elementToElement({model:"tableColumn",view:"col"}),t.for("downcast").add(vP()),t.for("upcast").add(bP(this._tableUtilsPlugin)),t.for("upcast").attributeToAttribute({view:{name:"col",styles:{width:/.*/}},model:{key:"columnWidth",value:n=>{const s=n.getStyle("width");return!s||!s.endsWith("%")&&!s.endsWith("pt")?"auto":s}}}),t.for("upcast").attributeToAttribute({view:{name:"col",key:"span"},model:"colSpan"}),t.for("downcast").attributeToAttribute({model:{name:"tableColumn",key:"columnWidth"},view:n=>({key:"style",value:{width:n}})})}_registerResizingListeners(){const e=this.editor.editing.view;e.addObserver(vp),e.document.on("mouseover",this._onMouseOverHandler.bind(this),{priority:"high"}),e.document.on("mousedown",this._onMouseDownHandler.bind(this),{priority:"high"}),e.document.on("mouseout",this._onMouseOutHandler.bind(this),{priority:"high"}),this._domEmitter.listenTo(T.window.document,"mousemove",Hi(this._onMouseMoveHandler.bind(this),50)),this._domEmitter.listenTo(T.window.document,"mouseup",this._onMouseUpHandler.bind(this))}_recalculateResizerElement(e){const t=this.editor,n=t.editing.view.domConverter,s=n.mapViewToDom(e.findAncestor("table")),r=n.mapViewToDom(e.findAncestor(h=>["td","th"].includes(h.name))),a=new R(s),l=new R(r),c=oh(Number((a.top-l.top).toFixed(4))),d=oh(Number((l.bottom-a.bottom).toFixed(4)));t.editing.view.change(h=>{h.setStyle("top",c,e),h.setStyle("bottom",d,e)})}_resetResizerStyles(e){this.editor.editing.view.change(t=>{t.removeStyle("top",e),t.removeStyle("bottom",e)})}_onMouseOverHandler(e,t){const n=t.target;n.hasClass("ck-table-column-resizer")&&this._isResizingAllowed&&this._recalculateResizerElement(n)}_onMouseOutHandler(e,t){const n=t.target;n.hasClass("ck-table-column-resizer")&&this._isResizingAllowed&&(this._isResizingActive||this._resetResizerStyles(n))}_onMouseDownHandler(e,t){const n=t.target;if(!n.hasClass("ck-table-column-resizer")||!this._isResizingAllowed)return;const s=this.editor,r=s.editing.mapper.toModelElement(n.findAncestor("figure"));s.model.canEditAt(r)&&(t.preventDefault(),e.stop(),this._initialMouseEventData=t)}_startResizingAfterThreshold(){const e=this._initialMouseEventData,{target:t}=e,n=this.editor.editing.mapper.toModelElement(t.findAncestor("figure")),s=t.findAncestor("table"),r=a(n,this._tableUtilsPlugin,this.editor);Array.from(s.getChildren()).find(d=>d.is("element","colgroup"))||this.editor.editing.view.change(d=>{l(d,r,s)}),this._isResizingActive=!0,this._resizingData=this._getResizingData(e,r),this.editor.editing.view.change(d=>c(d,s,this._resizingData));function a(d,h,m){const g=Array(h.getColumns(d)),f=new q(d);for(const p of f){const b=m.editing.mapper.toViewElement(p.cell),k=m.editing.view.domConverter.mapViewToDom(b),_=hI(k);(!g[p.column]||_<g[p.column])&&(g[p.column]=ze(_))}return g}function l(d,h,m){const g=d.createContainerElement("colgroup");for(let f=0;f<h.length;f++){const p=d.createEmptyElement("col"),b=`${ze(h[f]/Kn(h)*100)}%`;d.setStyle("width",b,p),d.insert(d.createPositionAt(g,"end"),p)}d.insert(d.createPositionAt(m,0),g)}function c(d,h,m){const g=m.widths.viewFigureWidth/m.widths.viewFigureParentWidth;d.addClass("ck-table-resized",h),d.addClass("ck-table-column-resizer__active",m.elements.viewResizer),d.setStyle("width",`${ze(g*100)}%`,h.findAncestor("figure"))}}_onMouseMoveHandler(e,t){if(this._initialMouseEventData){const O=this._initialMouseEventData.domEvent;if(Math.abs(t.clientX-O.clientX)>=sI)this._startResizingAfterThreshold(),this._initialMouseEventData=null;else return}if(!this._isResizingActive)return;if(!this._isResizingAllowed){this._onMouseUpHandler();return}const{columnPosition:n,flags:{isRightEdge:s,isTableCentered:r,isLtrContent:a},elements:{viewFigure:l,viewLeftColumn:c,viewRightColumn:d,viewResizer:h},widths:{viewFigureParentWidth:m,tableWidth:g,leftColumnWidth:f,rightColumnWidth:p}}=this._resizingData,b=-f+ga,k=s?m-g:p-ga,_=(a?1:-1)*(s&&r?2:1),M=cI((t.clientX-n)*_,Math.min(b,0),Math.max(k,0));M!==0&&(this.editor.editing.view.change(O=>{const oe=ze((f+M)*100/g);if(O.setStyle("width",`${oe}%`,c),s){const te=ze((g+M)*100/m);O.setStyle("width",`${te}%`,l)}else{const te=ze((p-M)*100/g);O.setStyle("width",`${te}%`,d)}}),this._recalculateResizerElement(h))}_onMouseUpHandler(){if(this._initialMouseEventData=null,!this._isResizingActive)return;const{viewResizer:e,modelTable:t,viewFigure:n,viewColgroup:s}=this._resizingData.elements,r=this.editor,a=r.editing.view,l=this.getColumnGroupElement(t),c=Array.from(s.getChildren()).filter(k=>k.is("view:element")),d=l?this.getTableColumnsWidths(l):null,h=c.map(k=>k.getStyle("width")),m=!Zo(d,h),g=t.getAttribute("tableWidth"),f=n.getStyle("width"),p=g!==f;(m||p)&&(this._isResizingAllowed?r.execute("resizeTableWidth",{table:t,tableWidth:`${ze(f)}%`,columnWidths:h}):a.change(k=>{if(d)for(const _ of c)k.setStyle("width",d.shift(),_);else k.remove(s);p&&(g?k.setStyle("width",g,n):k.removeStyle("width",n)),!d&&!g&&k.removeClass("ck-table-resized",[...n.getChildren()].find(_=>_.name==="table"))})),a.change(k=>{k.removeClass("ck-table-column-resizer__active",e)}),a.domConverter.mapViewToDom(e).matches(":hover")||this._resetResizerStyles(e),this._isResizingActive=!1,this._resizingData=null}_getResizingData(e,t){const n=this.editor,s=e.domEvent.clientX,r=e.target,a=r.findAncestor("td")||r.findAncestor("th"),l=n.editing.mapper.toModelElement(a),c=l.findAncestor("table"),d=lI(l,this._tableUtilsPlugin).rightEdge,h=this._tableUtilsPlugin.getColumns(c)-1,m=d===h,g=!c.hasAttribute("tableAlignment"),f=n.locale.contentLanguageDirection!=="rtl",p=a.findAncestor("table"),b=p.findAncestor("figure"),k=[...p.getChildren()].find(S=>S.is("element","colgroup")),_=k.getChild(d),M=m?void 0:k.getChild(d+1),O=fa(n.editing.view.domConverter.mapViewToDom(b.parent)),oe=fa(n.editing.view.domConverter.mapViewToDom(b)),te=fp(c,n),x=t[d],N=m?void 0:t[d+1];return{columnPosition:s,flags:{isRightEdge:m,isTableCentered:g,isLtrContent:f},elements:{viewResizer:r,modelTable:c,viewFigure:b,viewColgroup:k,viewLeftColumn:_,viewRightColumn:M},widths:{viewFigureParentWidth:O,viewFigureWidth:oe,tableWidth:te,leftColumnWidth:x,rightColumnWidth:N}}}_registerResizerInserter(){this.editor.conversion.for("editingDowncast").add(e=>{e.on("insert:tableCell",(t,n,s)=>{const r=n.item,a=s.mapper.toViewElement(r),l=s.writer;l.insert(l.createPositionAt(a,"end"),l.createUIElement("div",{class:"ck-table-column-resizer"}))},{priority:"lowest"})})}}class yP extends y{static get requires(){return[kP,Rp]}static get pluginName(){return"TableColumnResize"}static get isOfficialPlugin(){return!0}}class vi extends B{constructor(e,t,n){super(e);u(this,"attributeName");u(this,"_defaultValue");u(this,"_defaultContentTableValue");u(this,"_defaultLayoutTableValue");this.attributeName=t,this._defaultContentTableValue=n,this._defaultLayoutTableValue=t==="tableBorderStyle"?"none":void 0}refresh(){const t=this.editor.model.document.selection,n=Wt(t);this._defaultValue=!n||n.getAttribute("tableType")!=="layout"?this._defaultContentTableValue:this._defaultLayoutTableValue,this.isEnabled=!!n,this.value=this._getValue(n)}execute(e={}){const t=this.editor.model,n=t.document.selection,{value:s,batch:r}=e,a=Wt(n),l=this._getValueToSet(s);t.enqueueChange(r,c=>{l?c.setAttribute(this.attributeName,l,a):c.removeAttribute(this.attributeName,a)})}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);if(t!==this._defaultValue)return t}_getValueToSet(e){if(e!==this._defaultValue)return e}}class _P extends vi{constructor(i,e){super(i,"tableBackgroundColor",e)}}class CP extends vi{constructor(i,e){super(i,"tableBorderColor",e)}_getValue(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class LP extends vi{constructor(i,e){super(i,"tableBorderStyle",e)}_getValue(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class TP extends vi{constructor(i,e){super(i,"tableBorderWidth",e)}_getValue(i){if(!i)return;const e=wi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=bi(i,"px");if(e!==this._defaultValue)return e}}class EP extends vi{constructor(i,e){super(i,"tableWidth",e)}_getValueToSet(i){if(i=bi(i,"px"),i!==this._defaultValue)return i}}class xP extends vi{constructor(i,e){super(i,"tableHeight",e)}_getValueToSet(i){if(i=bi(i,"px"),i!==this._defaultValue)return i}}class SP extends vi{constructor(i,e){super(i,"tableAlignment",e)}}const AP=/^(left|center|right)$/,IP=/^(left|none|right)$/;class PP extends y{static get pluginName(){return"TablePropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[ao]}init(){const i=this.editor,e=i.model.schema,t=i.conversion;i.config.define("table.tableProperties.defaultProperties",{});const n=Pp(i.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});i.data.addStyleProcessorRules(ng),RP(e,t,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),i.commands.add("tableBorderColor",new CP(i,n.borderColor)),i.commands.add("tableBorderStyle",new LP(i,n.borderStyle)),i.commands.add("tableBorderWidth",new TP(i,n.borderWidth)),MP(e,t,n.alignment),i.commands.add("tableAlignment",new SP(i,n.alignment)),sh(e,t,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),i.commands.add("tableWidth",new EP(i,n.width)),sh(e,t,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),i.commands.add("tableHeight",new xP(i,n.height)),i.data.addStyleProcessorRules(ig),BP(e,t,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),i.commands.add("tableBackgroundColor",new _P(i,n.backgroundColor))}}function RP(o,i,e){const t={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};o.extend("table",{allowAttributes:Object.values(t)}),da(i,"table",t,e),Ho(i,{modelAttribute:t.color,styleName:"border-color"}),Ho(i,{modelAttribute:t.style,styleName:"border-style"}),Ho(i,{modelAttribute:t.width,styleName:"border-width"})}function MP(o,i,e){o.extend("table",{allowAttributes:["tableAlignment"]}),i.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment",values:["left","center","right"]},view:{left:{key:"style",value:{float:"left"}},right:{key:"style",value:{float:"right"}},center:(t,n,s)=>({key:"style",value:s.item.getAttribute("tableType")!=="layout"?{float:"none"}:{"margin-left":"auto","margin-right":"auto"}})},converterPriority:"high"}),i.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:IP}},model:{key:"tableAlignment",value:(t,n,s)=>{const r=Ht(e,"",s);let a=t.getStyle("float");return a==="none"&&(a="center"),a===r?null:a}}}).attributeToAttribute({view:{name:/^(table|figure)$/,styles:{"margin-left":"auto","margin-right":"auto"}},model:{key:"tableAlignment",value:(t,n,s)=>{const r=Ht(e,"",s),a="center";return a===r?null:a}}}).attributeToAttribute({view:{attributes:{align:AP}},model:{name:"table",key:"tableAlignment",value:(t,n,s)=>{const r=Ht(e,"",s),a=t.getAttribute("align");return a===r?null:a}}})}function BP(o,i,e){const{modelAttribute:t}=e;o.extend("table",{allowAttributes:[t]}),Ll(i,{viewElement:"table",...e}),Ho(i,e)}function sh(o,i,e){const{modelAttribute:t}=e;o.extend("table",{allowAttributes:[t]}),Ll(i,{viewElement:/^(table|figure)$/,shouldUpcast:n=>!(n.name=="table"&&n.parent.name=="figure"),...e}),Sn(i,{modelElement:"table",...e})}class VP extends E{constructor(e,t){super(e);u(this,"options");u(this,"focusTracker");u(this,"keystrokes");u(this,"children");u(this,"borderStyleDropdown");u(this,"borderWidthInput");u(this,"borderColorInput");u(this,"backgroundInput");u(this,"widthInput");u(this,"heightInput");u(this,"alignmentToolbar");u(this,"saveButtonView");u(this,"cancelButtonView");u(this,"_focusables");u(this,"_focusCycler");this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:n,borderWidthInput:s,borderColorInput:r,borderRowLabel:a}=this._createBorderFields(),{backgroundRowLabel:l,backgroundInput:c}=this._createBackgroundFields(),{widthInput:d,operatorLabel:h,heightInput:m,dimensionsLabel:g}=this._createDimensionFields(),{alignmentToolbar:f,alignmentLabel:p}=this._createAlignmentFields();this.focusTracker=new ee,this.keystrokes=new re,this.children=this.createCollection(),this.borderStyleDropdown=n,this.borderWidthInput=s,this.borderColorInput=r,this.backgroundInput=c,this.widthInput=d,this.heightInput=m,this.alignmentToolbar=f;const{saveButtonView:b,cancelButtonView:k}=this._createActionButtons();this.saveButtonView=b,this.cancelButtonView=k,this._focusables=new ve,this._focusCycler=new Ae({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new Jt(e,{label:this.t("Table properties")})),this.children.add(new ke(e,{labelView:a,children:[a,n,r,s],class:"ck-table-form__border-row"})),this.children.add(new ke(e,{labelView:l,children:[l,c],class:"ck-table-form__background-row"})),this.children.add(new ke(e,{children:[new ke(e,{labelView:g,children:[g,d,h,m],class:"ck-table-form__dimensions-row"}),new ke(e,{labelView:p,children:[p,f],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new ke(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),gi({view:this}),[this.borderColorInput,this.backgroundInput].forEach(e=>{this._focusCycler.chain(e.fieldView.focusCycler)}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach(e=>{this._focusables.add(e),this.focusTracker.add(e.element)}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},n=Cs({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),s=this.locale,r=this.t,a=r("Style"),l=new Ye(s);l.text=r("Border");const c=Sl(r),d=new he(s,jg);d.set({label:a,class:"ck-table-form__border-style"}),d.fieldView.buttonView.set({ariaLabel:a,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:a}),d.fieldView.buttonView.bind("label").to(this,"borderStyle",g=>c[g||"none"]),d.fieldView.on("execute",g=>{this.borderStyle=g.source._borderStyleValue}),d.bind("isEmpty").to(this,"borderStyle",g=>!g),Qn(d.fieldView,Tp(this,t.style),{role:"menu",ariaLabel:a});const h=new he(s,Xe);h.set({label:r("Width"),class:"ck-table-form__border-width"}),h.fieldView.bind("value").to(this,"borderWidth"),h.bind("isEnabled").to(this,"borderStyle",Po),h.fieldView.on("input",()=>{this.borderWidth=h.fieldView.element.value});const m=new he(s,n);return m.set({label:r("Color"),class:"ck-table-form__border-color"}),m.fieldView.bind("value").to(this,"borderColor"),m.bind("isEnabled").to(this,"borderStyle",Po),m.fieldView.on("input",()=>{this.borderColor=m.fieldView.value}),this.on("change:borderStyle",(g,f,p,b)=>{Po(p)||(this.borderColor="",this.borderWidth=""),Po(b)||(this.borderColor=t.color,this.borderWidth=t.width)}),{borderRowLabel:l,borderStyleDropdown:d,borderColorInput:m,borderWidthInput:h}}_createBackgroundFields(){const e=this.locale,t=this.t,n=new Ye(e);n.text=t("Background");const s=Cs({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),r=new he(e,s);return r.set({label:t("Color"),class:"ck-table-properties-form__background"}),r.fieldView.bind("value").to(this,"backgroundColor"),r.fieldView.on("input",()=>{this.backgroundColor=r.fieldView.value}),{backgroundRowLabel:n,backgroundInput:r}}_createDimensionFields(){const e=this.locale,t=this.t,n=new Ye(e);n.text=t("Dimensions");const s=new he(e,Xe);s.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),s.fieldView.bind("value").to(this,"width"),s.fieldView.on("input",()=>{this.width=s.fieldView.element.value});const r=new E(e);r.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const a=new he(e,Xe);return a.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),a.fieldView.bind("value").to(this,"height"),a.fieldView.on("input",()=>{this.height=a.fieldView.element.value}),{dimensionsLabel:n,widthInput:s,operatorLabel:r,heightInput:a}}_createAlignmentFields(){const e=this.locale,t=this.t,n=new Ye(e);n.text=t("Alignment");const s=new ai(e);return s.set({role:"radiogroup",isCompact:!0,ariaLabel:t("Table alignment toolbar")}),va({view:this,icons:{left:tl,center:ss,right:rs},toolbar:s,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:n,alignmentToolbar:s}}_createActionButtons(){const e=this.locale,t=this.t,n=new A(e),s=new A(e),r=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:t("Save"),icon:Bs,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(r,"errorText",(...a)=>a.every(l=>!l)),s.set({label:t("Cancel"),icon:Ms,class:"ck-button-cancel",withText:!0}),s.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:s}}get _alignmentLabels(){const e=this.locale,t=this.t,n=t("Align table to the left"),s=t("Center table"),r=t("Align table to the right");return e.uiLanguageDirection==="rtl"?{right:r,center:s,left:n}:{left:n,center:s,right:r}}}function Po(o){return o!=="none"}const zP=500,rh={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class NP extends y{constructor(e){super(e);u(this,"_defaultContentTableProperties");u(this,"_defaultLayoutTableProperties");u(this,"_balloon");u(this,"view",null);u(this,"_viewWithContentTableDefaults",null);u(this,"_viewWithLayoutTableDefaults",null);u(this,"_undoStepBatch");u(this,"_isReady");e.config.define("table.tableProperties",{borderColors:_s,backgroundColors:_s})}static get requires(){return[Pt]}static get pluginName(){return"TablePropertiesUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;this._defaultContentTableProperties=Pp(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._defaultLayoutTableProperties=Hs(),this._balloon=e.plugins.get(Pt),e.ui.componentFactory.add("tableProperties",()=>this._createTablePropertiesButton())}_createTablePropertiesButton(){const e=this.editor,t=e.t,n=new A(e.locale);n.set({label:t("Table properties"),icon:x1,tooltip:!0}),this.listenTo(n,"execute",()=>this._showView());const s=Object.values(rh).map(r=>e.commands.get(r));return n.bind("isEnabled").toMany(s,"isEnabled",(...r)=>r.some(a=>a)),n}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,n=t.config.get("table.tableProperties"),s=us(n.borderColors),r=ds(t.locale,s),a=us(n.backgroundColors),l=ds(t.locale,a),c=n.colorPicker!==!1,d=new VP(t.locale,{borderColors:r,backgroundColors:l,defaultTableProperties:e,colorPickerConfig:c?n.colorPicker||{}:!1}),h=t.t;d.render(),this.listenTo(d,"submit",()=>{this._hideView()}),this.listenTo(d,"cancel",()=>{this._undoStepBatch.operations.length&&t.execute("undo",this._undoStepBatch),this._hideView()}),d.keystrokes.set("Esc",(f,p)=>{this._hideView(),p()}),mi({emitter:d,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const m=_p(h),g=Cp(h);return d.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle")),d.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:d.borderColorInput,commandName:"tableBorderColor",errorText:m,validator:ys})),d.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:d.borderWidthInput,commandName:"tableBorderWidth",errorText:g,validator:Lp})),d.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:d.backgroundInput,commandName:"tableBackgroundColor",errorText:m,validator:ys})),d.on("change:width",this._getValidatedPropertyChangeCallback({viewField:d.widthInput,commandName:"tableWidth",errorText:g,validator:An})),d.on("change:height",this._getValidatedPropertyChangeCallback({viewField:d.heightInput,commandName:"tableHeight",errorText:g,validator:An})),d.on("change:alignment",this._getPropertyChangeCallback("tableAlignment")),d}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(rh).map(([n,s])=>{const r=n,a=this.view===this._viewWithContentTableDefaults?this._defaultContentTableProperties[r]||"":this._defaultLayoutTableProperties[r]||"";return[r,e.get(s).value||a]}).forEach(([n,s])=>{(n==="borderColor"||n==="borderWidth")&&t.value==="none"||this.view.set(n,s)}),this._isReady=!0}_showView(){const e=this.editor,t=ks(e.editing.view.document.selection),n=t&&e.editing.mapper.toModelElement(t),s=!n||n.getAttribute("tableType")!=="layout";s&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableProperties):!s&&!this._viewWithLayoutTableDefaults&&(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableProperties)),this.view=s?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",()=>{this._updateView()}),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Sp(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor,t=e.editing.view.document;ks(t.selection)?this._isViewVisible&&xp(e,"table"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,n,s)=>{this._isReady&&this.editor.execute(e,{value:s,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:n,validator:s,errorText:r}=e,a=at(()=>{n.errorText=r},zP);return(l,c,d)=>{a.cancel(),this._isReady&&(s(d)?(this.editor.execute(t,{value:d,batch:this._undoStepBatch}),n.errorText=null):a())}}}class DP extends y{static get pluginName(){return"TableProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[PP,NP]}}/**
368
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
369
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
370
+ */function OP(o){o.document.registerPostFixer(i=>FP(i,o))}function FP(o,i){const e=i.document.differ.getChanges();let t=!1;for(const n of e){if(n.type!="insert")continue;const s=n.position.parent;if(s.is("element","table")||n.name=="table"){const r=n.name=="table"?n.position.nodeAfter:s,a=Array.from(r.getChildren()).filter(c=>c.is("element","caption")),l=a.shift();if(!l)continue;for(const c of a)o.move(o.createRangeIn(c),l,"end"),o.remove(c);l.nextSibling&&(o.move(o.createRangeOn(l),r,"end"),t=!0),t=!!a.length||t}}return t}function ah(o){return!!o&&o.is("element","table")}function ya(o){for(const i of o.getChildren())if(i.is("element","caption"))return i;return null}function UP(o){const i=Wt(o);return i?ya(i):null}function HP(o){const i=o.parent;return o.name=="figcaption"&&i&&i.is("element","figure")&&i.hasClass("table")?{name:!0}:o.name=="caption"&&i&&i.is("element","table")?{name:!0}:null}class WP extends B{refresh(){const i=this.editor,e=Wt(i.model.document.selection);this.isEnabled=!!e&&i.model.schema.checkChild(e,"caption"),this.isEnabled?this.value=!!ya(e):this.value=!1}execute({focusCaptionOnShow:i=!1}={}){this.editor.model.change(e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,i)})}_showTableCaption(i,e){const t=this.editor.model,n=Wt(t.document.selection),a=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(n)||i.createElement("caption");t.insertContent(a,n,"end"),e&&i.setSelection(a,"in")}_hideTableCaption(i){const e=this.editor.model,t=Wt(e.document.selection),n=this.editor.plugins.get("TableCaptionEditing"),s=ya(t);n._saveCaption(t,s),e.deleteContent(i.createSelection(s,"on"))}}class qP extends y{constructor(e){super(e);u(this,"_savedCaptionsMap");this._savedCaptionsMap=new WeakMap}static get pluginName(){return"TableCaptionEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,n=e.editing.view,s=e.t;t.isRegistered("caption")?t.extend("caption",{allowIn:"table"}):t.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new WP(this.editor)),e.conversion.for("upcast").elementToElement({view:HP,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(r,{writer:a})=>ah(r.parent)?a.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(r,{writer:a})=>{if(!ah(r.parent))return null;const l=a.createEditableElement("figcaption");return a.setCustomProperty("tableCaption",!0,l),l.placeholder=s("Enter table caption"),Da({view:n,element:l,keepOnFocus:!0}),gl(l,a)}}),OP(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?$.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class jP extends y{static get pluginName(){return"TableCaptionUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.editing.view,t=i.t;i.ui.componentFactory.add("toggleTableCaption",n=>{const s=i.commands.get("toggleTableCaption"),r=new A(n);return r.set({icon:gg,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",a=>t(a?"Toggle caption off":"Toggle caption on")),this.listenTo(r,"execute",()=>{if(i.execute("toggleTableCaption",{focusCaptionOnShow:!0}),s.value){const a=UP(i.model.document.selection),l=i.editing.mapper.toViewElement(a);if(!l)return;e.scrollToTheSelection(),e.change(c=>{c.addClass("table__caption_highlighted",l)})}i.editing.view.focus()}),r})}}class GP extends y{static get pluginName(){return"TableCaption"}static get isOfficialPlugin(){return!0}static get requires(){return[qP,jP]}}/**
371
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
372
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
373
+ */const $P={pl:{dictionary:{"Words: %0":"Słowa: %0","Characters: %0":"Znaki: %0","Widget toolbar":"Pasek widgetów","Insert paragraph before block":"Wstaw akapit przed blokiem","Insert paragraph after block":"Wstaw akapit po bloku","Press Enter to type after or press Shift + Enter to type before the widget":"Naciśnij Enter, aby pisać po widżecie, lub Shift + Enter, aby pisać przed widżetem","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Klawisze, których można używać po wybraniu widżetu (na przykład: obraz, tabela itd.)","Insert a new paragraph directly after a widget":"Wstawia nowy akapit bezpośrednio po widżecie","Insert a new paragraph directly before a widget":"Wstawia nowy akapit bezpośrednio przed widżetem","Move the caret to allow typing directly before a widget":"Przenosi kursor, aby umożliwić pisanie bezpośrednio przed widżetem","Move the caret to allow typing directly after a widget":"Przenosi kursor, aby umożliwić pisanie bezpośrednio za widżetem","Move focus from an editable area back to the parent widget":"Przenieś skupienie z edytowalnego obszaru z powrotem do widżetu nadrzędnego","Upload in progress":"Trwa przesyłanie",Undo:"Cofnij",Redo:"Ponów","Rich Text Editor":"Edytor tekstu sformatowanego","Edit block":"Edytuj blok","Click to edit block":"Kliknij, aby edytować blok","Drag to move":"Przeciągnij, aby przenieść",Next:"Następny",Previous:"Poprzedni","Editor toolbar":"Pasek narzędzi edytora","Dropdown toolbar":"Rozwijany pasek narzędzi","Dropdown menu":"Menu rozwijane",Black:"Czarny","Dim grey":"Ciemnoszary",Grey:"Szary","Light grey":"Jasnoszary",White:"Biały",Red:"Czerwony",Orange:"Pomarańczowy",Yellow:"Żółty","Light green":"Jasnozielony",Green:"Zielony",Aquamarine:"Akwamaryna",Turquoise:"Turkusowy","Light blue":"Jasnoniebieski",Blue:"Niebieski",Purple:"Purpurowy","Editor block content toolbar":"Pasek zadań treści blokowej edytora","Editor contextual toolbar":"Kontekstowy pasek zadań edytora",HEX:"SZESNASTKOWY","No results found":"Nie znaleziono wyników","No searchable items":"Brak elementów do wyszukania","Editor dialog":"Okno edytora",Close:"Zamknij","Help Contents. To close this dialog press ESC.":"Zawartość pomocy. Aby zamknąć to okno dialogowe, naciśnij klawisz ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Poniżej znajdziesz listę skrótów klawiszowych, których można używać w edytorze.","(may require <kbd>Fn</kbd>)":"(może wymagać użycia klawisza <kbd>Fn</kbd>)",Accessibility:"Dostępność","Accessibility help":"Pomoc dotycząca dostępności","Press %0 for help.":"Naciśnij %0, aby uzyskać pomoc.","Move focus in and out of an active dialog window":"Przenosi fokus do i z aktywnego okna dialogowego",MENU_BAR_MENU_FILE:"Plik",MENU_BAR_MENU_EDIT:"Zmiana",MENU_BAR_MENU_VIEW:"Zobacz",MENU_BAR_MENU_INSERT:"Wstaw",MENU_BAR_MENU_FORMAT:"Format",MENU_BAR_MENU_TOOLS:"Narzędzia",MENU_BAR_MENU_HELP:"Pomoc",MENU_BAR_MENU_TEXT:"Tekst",MENU_BAR_MENU_FONT:"Czcionka","Editor menu bar":"Pasek menu edytora",'Please enter a valid color (e.g. "ff0000").':"Wprowadź prawidłowy kolor (np. „ff0000”).","Insert table":"Wstaw tabelę","Header column":"Kolumna nagłówka","Insert column left":"Wstaw kolumnę z lewej","Insert column right":"Wstaw kolumnę z prawej","Delete column":"Usuń kolumnę","Select column":"Zaznacz kolumnę",Column:"Kolumna","Header row":"Wiersz nagłówka","Insert row below":"Wstaw wiersz poniżej","Insert row above":"Wstaw wiersz ponad","Delete row":"Usuń wiersz","Select row":"Zaznacz wiersz",Row:"Wiersz","Merge cell up":"Scal komórkę w górę","Merge cell right":"Scal komórkę w prawo","Merge cell down":"Scal komórkę w dół","Merge cell left":"Scal komórkę w lewo","Split cell vertically":"Podziel komórkę pionowo","Split cell horizontally":"Podziel komórkę poziomo","Merge cells":"Scal komórki","Table toolbar":"Pasek narzędzi tabel","Table properties":"Właściwości tabeli","Cell properties":"Właściwości komórki",Border:"Obramowanie",Style:"Styl",Width:"Szerokość",Height:"Wysokość",Color:"Kolor",Background:"Tło",Padding:"Dopełnienie",Dimensions:"Wymiary","Table cell text alignment":"Wyrównanie tekstu komórki tabeli",Alignment:"Wyrównanie","Horizontal text alignment toolbar":"Pasek narzędzi wyrównania tekstu w poziomie","Vertical text alignment toolbar":"Pasek narzędzi wyrównania tekstu w pionie","Table alignment toolbar":"Pasek narzędzi wyrównania tabeli",None:"Brak",Solid:"Ciągłe",Dotted:"Kropkowane",Dashed:"Kreskowane",Double:"Podwójne",Groove:"Wklęsłe",Ridge:"Wypukłe",Inset:"Zapadnięte",Outset:"Wysunięte","Align cell text to the left":"Wyrównaj tekst w komórce do lewej","Align cell text to the center":"Wyrównaj tekst w komórce do środka","Align cell text to the right":"Wyrównaj tekst w komórce do prawej","Justify cell text":"Wyjustuj tekst komórki","Align cell text to the top":"Wyrównaj tekst w komórce do góry","Align cell text to the middle":"Wyrównaj tekst w komórce do środka","Align cell text to the bottom":"Wyrównaj tekst w komórce do dołu","Align table to the left":"Wyrównaj tabelę do lewej","Center table":"Wyrównaj tabelę do środka","Align table to the right":"Wyrównaj tabelę do prawej",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Kolor jest niepoprawny. Spróbuj wpisać "#FF0000", "rgb(255,0,0)" lub "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Wartość jest niepoprawna. Spróbuj wpisać "10px", "2em" lub po prostu "2".',"Enter table caption":"Wprowadź podpis tabeli","Keystrokes that can be used in a table cell":"Klawisze, których można używać w komórce tabeli","Move the selection to the next cell":"Przenosi zaznaczenie do następnej komórki","Move the selection to the previous cell":"Przenosi zaznaczenie do poprzedniej komórki","Insert a new table row (when in the last cell of a table)":"Wstawia nowy wiersz tabeli (w przypadku ostatniej komórki tabeli)","Navigate through the table":"Umożliwia poruszanie się po tabeli",Table:"Tabela","Insert table layout":"Wstaw layout tabeli","Table layout":"Layout tabeli","Layout table":"Tabela layoutu","Content table":"Tabela zawartości","Choose table type":"Wybierz typ tabeli","Table type":"Typ tabeli","Table type options":"Opcje typu tabeli",Styles:"Style","Multiple styles":"Wiele stylów","Block styles":"Style tekstu blokowego","Text styles":"Style tekstu","Special characters":"Znaki specjalne",Category:"Kategorie",All:"Wszystko",Arrows:"Strzałki",Currency:"Waluta",Latin:"Łaciński",Mathematical:"Matematyczne",Text:"Tekst","leftwards simple arrow":"prosta strzałka w lewo","rightwards simple arrow":"prosta strzałka w prawo","upwards simple arrow":"prosta strzałka w górę","downwards simple arrow":"prosta strzałka w dół","leftwards double arrow":"podwójna strzałka w lewo","rightwards double arrow":"podwójna strzałka w prawo","upwards double arrow":"podwójna strzałka w górę","downwards double arrow":"podwójna strzałka w dół","leftwards dashed arrow":"przerywana strzałka w lewo","rightwards dashed arrow":"przerywana strzałka w prawo","upwards dashed arrow":"przerywana strzałka w górę","downwards dashed arrow":"przerywana strzałka w dół","leftwards arrow to bar":"strzałka w lewo do belki","rightwards arrow to bar":"strzałka w prawo do belki","upwards arrow to bar":"strzałka w górę do belki","downwards arrow to bar":"strzałka w dół do belki","up down arrow with base":"strzałka w górę i w dół z podstawą","back with leftwards arrow above":"do tyłu ze strzałką w lewo powyżej","end with leftwards arrow above":"koniec ze strzałką w lewo powyżej","on with exclamation mark with left right arrow above":"na z wykrzyknikiem i strzałką w lewo i prawo powyżej","soon with rightwards arrow above":"wkrótce ze strzałką w prawo powyżej","top with upwards arrow above":"do góry ze strzałką w górę powyżej","Dollar sign":"Znak dolara","Euro sign":"Znak euro","Yen sign":"Znak jena","Pound sign":"Znak funta","Cent sign":"Znak centa","Euro-currency sign":"Znak euro","Colon sign":"Znak colona","Cruzeiro sign":"Znak cruzeiro","French franc sign":"Znak franka francuskiego","Lira sign":"Znak liry","Currency sign":"Znak waluty","Bitcoin sign":"Znak bitcoina","Mill sign":"Symbol mila","Naira sign":"Znak nairy","Peseta sign":"Znak pesety","Rupee sign":"Znak rupii","Won sign":"Znak wona","New sheqel sign":"Znak nowego szekla","Dong sign":"Znak donga","Kip sign":"Znak kipa","Tugrik sign":"Znak tugrika","Drachma sign":"Znak drachmy","German penny sign":"Znak feniga","Peso sign":"Znak peso","Guarani sign":"Znak guarani","Austral sign":"Znak australa","Hryvnia sign":"Znak hrywny","Cedi sign":"Znak cedi","Livre tournois sign":"Symbol liwra turońskiego","Spesmilo sign":"Symbol spesmilo","Tenge sign":"Znak tenge","Indian rupee sign":"Znak rupii indyjskiej","Turkish lira sign":"Znak liry tureckiej","Nordic mark sign":"Znak marki nordyckiej","Manat sign":"Znak manata","Ruble sign":"Znak rubla","Latin capital letter a with macron":"Łacińska wielka litera a z makronem","Latin small letter a with macron":"Łacińska mała litera a z makronem","Latin capital letter a with breve":"Łacińska wielka litera a z łuczkiem","Latin small letter a with breve":"Łacińska mała litera a z łuczkiem","Latin capital letter a with ogonek":"Łacińska wielka litera a z ogonkiem","Latin small letter a with ogonek":"Łacińska mała litera a z ogonkiem","Latin capital letter c with acute":"Łacińska wielka litera c z kreską","Latin small letter c with acute":"Łacińska mała litera c z kreską","Latin capital letter c with circumflex":"Łacińska wielka litera c z daszkiem","Latin small letter c with circumflex":"Łacińska mała litera c z daszkiem","Latin capital letter c with dot above":"Łacińska wielka litera c z kropką powyżej","Latin small letter c with dot above":"Łacińska mała litera c z kropką powyżej","Latin capital letter c with caron":"Łacińska wielka litera c z ptaszkiem","Latin small letter c with caron":"Łacińska mała litera c z ptaszkiem","Latin capital letter d with caron":"Łacińska wielka litera d z ptaszkiem","Latin small letter d with caron":"Łacińska mała litera d z ptaszkiem","Latin capital letter d with stroke":"Łacińska wielka litera d z przekreśleniem","Latin small letter d with stroke":"Łacińska mała litera d z przekreśleniem","Latin capital letter e with macron":"Łacińska wielka litera e z makronem","Latin small letter e with macron":"Łacińska mała litera e z makronem","Latin capital letter e with breve":"Łacińska wielka litera e z łuczkiem","Latin small letter e with breve":"Łacińska mała litera e z łuczkiem","Latin capital letter e with dot above":"Łacińska wielka litera e z kropką powyżej","Latin small letter e with dot above":"Łacińska mała litera e z kropką powyżej","Latin capital letter e with ogonek":"Łacińska wielka litera e z ogonkiem","Latin small letter e with ogonek":"Łacińska mała litera e z ogonkiem","Latin capital letter e with caron":"Łacińska wielka litera e z ptaszkiem","Latin small letter e with caron":"Łacińska mała litera e z ptaszkiem","Latin capital letter g with circumflex":"Łacińska wielka litera g z daszkiem","Latin small letter g with circumflex":"Łacińska mała litera g z daszkiem","Latin capital letter g with breve":"Łacińska wielka litera g z łuczkiem","Latin small letter g with breve":"Łacińska mała litera g z łuczkiem","Latin capital letter g with dot above":"Łacińska wielka litera g z kropką powyżej","Latin small letter g with dot above":"Łacińska mała litera g z kropką powyżej","Latin capital letter g with cedilla":"Łacińska wielka litera g z haczykiem","Latin small letter g with cedilla":"Łacińska mała litera g z haczykiem","Latin capital letter h with circumflex":"Łacińska wielka litera h z daszkiem","Latin small letter h with circumflex":"Łacińska mała litera h z daszkiem","Latin capital letter h with stroke":"Łacińska wielka litera h z przekreśleniem","Latin small letter h with stroke":"Łacińska mała litera h z przekreśleniem","Latin capital letter i with tilde":" Łacińska wielka litera i z tyldą","Latin small letter i with tilde":"Łacińska mała litera i z tyldą","Latin capital letter i with macron":"Łacińska wielka litera i z makronem","Latin small letter i with macron":"Łacińska mała litera i z makronem","Latin capital letter i with breve":"Łacińska wielka litera i z łuczkiem","Latin small letter i with breve":"Łacińska mała litera i z łuczkiem","Latin capital letter i with ogonek":"Łacińska wielka litera i z ogonkiem","Latin small letter i with ogonek":"Łacińska mała litera i z ogonkiem","Latin capital letter i with dot above":"Łacińska wielka litera i z kropką powyżej","Latin small letter dotless i":"Łacińska mała litera i bez kropki","Latin capital ligature ij":"Łacińska wielka ligatura ij","Latin small ligature ij":"Łacińska mała ligatura ij","Latin capital letter j with circumflex":"Łacińska wielka litera j z daszkiem","Latin small letter j with circumflex":"Łacińska mała litera j z daszkiem","Latin capital letter k with cedilla":"Łacińska wielka litera k z haczykiem","Latin small letter k with cedilla":"Łacińska mała litera k z haczykiem","Latin small letter kra":"Łacińska mała litera kra","Latin capital letter l with acute":"Łacińska wielka litera l z kreską","Latin small letter l with acute":"Łacińska mała litera l z kreską","Latin capital letter l with cedilla":"Łacińska wielka litera l z haczykiem","Latin small letter l with cedilla":"Łacińska mała litera l z haczykiem","Latin capital letter l with caron":"Łacińska wielka litera l z ptaszkiem","Latin small letter l with caron":"Łacińska mała litera l z ptaszkiem","Latin capital letter l with middle dot":"Łacińska wielka litera l z kropką pośrodku","Latin small letter l with middle dot":"Łacińska mała litera l z kropką pośrodku","Latin capital letter l with stroke":"Łacińska wielka litera l z przekreśleniem","Latin small letter l with stroke":"Łacińska mała litera l z przekreśleniem","Latin capital letter n with acute":"Łacińska wielka litera n z kreską","Latin small letter n with acute":"Łacińska mała litera n z kreską","Latin capital letter n with cedilla":"Łacińska wielka litera n z haczykiem","Latin small letter n with cedilla":"Łacińska mała litera n z haczykiem","Latin capital letter n with caron":"Łacińska wielka litera n z ptaszkiem","Latin small letter n with caron":"Łacińska mała litera n z ptaszkiem","Latin small letter n preceded by apostrophe":"Łacińska mała litera n poprzedzona apostrofem","Latin capital letter eng":"Łacińska wielka litera eng","Latin small letter eng":"Łacińska mała litera eng","Latin capital letter o with macron":"Łacińska wielka litera o z makronem","Latin small letter o with macron":"Łacińska mała litera o z makronem","Latin capital letter o with breve":"Łacińska wielka litera o z łuczkiem","Latin small letter o with breve":"Łacińska mała litera o z łuczkiem","Latin capital letter o with double acute":"Łacińska wielka litera o z dwiema kreskami","Latin small letter o with double acute":"Łacińska mała litera o z dwiema kreskami","Latin capital ligature oe":"Łacińska wielka ligatura oe","Latin small ligature oe":"Łacińska mała ligatura oe","Latin capital letter r with acute":"Łacińska wielka litera r z kreską","Latin small letter r with acute":"Łacińska mała litera r z kreską","Latin capital letter r with cedilla":"Łacińska wielka litera r z haczykiem","Latin small letter r with cedilla":"Łacińska mała litera r z haczykiem","Latin capital letter r with caron":"Łacińska wielka litera r z ptaszkiem","Latin small letter r with caron":"Łacińska mała litera r z ptaszkiem","Latin capital letter s with acute":"Łacińska wielka litera s z kreską","Latin small letter s with acute":"Łacińska mała litera s z kreską","Latin capital letter s with circumflex":"Łacińska wielka litera s z daszkiem","Latin small letter s with circumflex":"Łacińska mała litera s z daszkiem","Latin capital letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin small letter s with cedilla":"Łacińska wielka litera s z haczykiem","Latin capital letter s with caron":"Łacińska wielka litera s z ptaszkiem","Latin small letter s with caron":"Łacińska mała litera s z ptaszkiem","Latin capital letter t with cedilla":"Łacińska wielka litera t z haczykiem","Latin small letter t with cedilla":"Łacińska mała litera t z haczykiem","Latin capital letter t with caron":"Łacińska wielka litera t z ptaszkiem","Latin small letter t with caron":"Łacińska mała litera t z ptaszkiem","Latin capital letter t with stroke":"Łacińska wielka litera t z przekreśleniem","Latin small letter t with stroke":"Łacińska mała litera t z przekreśleniem","Latin capital letter u with tilde":"Łacińska wielka litera u z tyldą","Latin small letter u with tilde":"Łacińska mała litera u z tyldą","Latin capital letter u with macron":"Łacińska wielka litera u z makronem","Latin small letter u with macron":"Łacińska mała litera u z makronem","Latin capital letter u with breve":"Łacińska wielka litera u z łuczkiem","Latin small letter u with breve":"Łacińska mała litera u z łuczkiem","Latin capital letter u with ring above":"Łacińska wielka litera u z kółkiem powyżej","Latin small letter u with ring above":"Łacińska mała litera u z kółkiem powyżej","Latin capital letter u with double acute":"Łacińska wielka litera u z dwiema kreskami","Latin small letter u with double acute":"Łacińska mała litera u z dwiema kreskami","Latin capital letter u with ogonek":"Łacińska wielka litera u z ogonkiem","Latin small letter u with ogonek":"Łacińska mała litera u z ogonkiem","Latin capital letter w with circumflex":"Łacińska wielka litera w z daszkiem","Latin small letter w with circumflex":"Łacińska mała litera w z daszkiem","Latin capital letter y with circumflex":"Łacińska wielka litera y z daszkiem","Latin small letter y with circumflex":"Łacińska mała litera y z daszkiem","Latin capital letter y with diaeresis":"Łacińska wielka litera y z dwiema kropkami","Latin capital letter z with acute":"Łacińska wielka litera z z kreską","Latin small letter z with acute":"Łacińska mała litera z z kreską","Latin capital letter z with dot above":"Łacińska wielka litera z z kropką powyżej","Latin small letter z with dot above":"Łacińska mała litera z z kropką powyżej","Latin capital letter z with caron":"Łacińska wielka litera z z ptaszkiem","Latin small letter z with caron":"Łacińska mała litera z z ptaszkiem","Latin small letter long s":"Łacińska litera długie s","Less-than sign":"Znak mniejszości","Greater-than sign":"Znak większości","Less-than or equal to":"Znak mniejsze niż lub równe","Greater-than or equal to":"Znak większe niż lub równe","En dash":"Półpauza","Em dash":"Pauza",Macron:"Makron",Overline:"Nadkreślenie","Degree sign":"Znak stopnia","Minus sign":"Znak minus","Plus-minus sign":"Znak plus-minus","Division sign":"Znak dzielenia","Fraction slash":"Kreska ułamkowa","Multiplication sign":"Znak mnożenia","Latin small letter f with hook":"Łacińska mała litera f z zawijasem",Integral:"Całka","N-ary summation":"Suma n-argumentowa",Infinity:"Nieskończoność","Square root":"Pierwiastek kwadratowy","Tilde operator":"Operator tylda","Approximately equal to":"W przybliżeniu równe","Almost equal to":"Prawie równe","Not equal to":"Różne","Identical to":"Identyczne","Element of":"Należy do","Not an element of":"Nie należy do","Contains as member":"Zawiera element","N-ary product":"Iloczyn n-argumentowy","Logical and":"Koniunkcja logiczna","Logical or":"Alternatywa logiczna","Not sign":"Znak negacji",Intersection:"Część wspólna",Union:"Suma zbiorów","Partial differential":"Pochodna cząstkowa","For all":"Kwantyfikator ogólny","There exists":"Kwantyfikator szczegółowy","Empty set":"Zbiór pusty",Nabla:"Operator nabla","Asterisk operator":"Operator asterysk","Proportional to":"Proporcjonalność",Angle:"Kąt","Vulgar fraction one quarter":"Ułamek zwykły jedna czwarta","Vulgar fraction one half":"Ułamek zwykły jedna druga","Vulgar fraction three quarters":"Ułamek zwykły trzy czwarte","Single left-pointing angle quotation mark":"Pojedynczy lewy cudzysłów kątowy","Single right-pointing angle quotation mark":"Pojedynczy prawy cudzysłów kątowy","Left-pointing double angle quotation mark":"Podwójny lewy cudzysłów kątowy","Right-pointing double angle quotation mark":"Podwójny prawy cudzysłów kątowy","Left single quotation mark":"Pojedynczy lewy cudzysłów","Right single quotation mark":"Pojedynczy prawy cudzysłów","Left double quotation mark":"Podwójny lewy cudzysłów","Right double quotation mark":"Podwójny prawy cudzysłów","Single low-9 quotation mark":"Pojedynczy dolny cudzysłów","Double low-9 quotation mark":"Podwójny dolny cudzysłów","Inverted exclamation mark":"Odwrócony wykrzyknik","Inverted question mark":"Odwrócony pytajnik","Two dot leader":"Dwie kropki wiodące","Horizontal ellipsis":"Wielokropek poziomy","Double dagger":"Podwójny sztylet","Per mille sign":"Znak promila","Per ten thousand sign":"Punkt bazowy","Double exclamation mark":"Podwójny wykrzyknik","Question exclamation mark":"Pytajnik z wykrzyknikiem","Exclamation question mark":"Wykrzyknik z pytajnikiem","Double question mark":"Podwójny pytajnik","Copyright sign":"Znak praw autorskich","Registered sign":"Zastrzeżony znak towarowy","Trade mark sign":"Symbol znaku towarowego","Section sign":"Znak sekcji","Paragraph sign":"Znak akapitu","Reversed paragraph sign":"Odwrócony znak akapitu","Show source":"Pokaż źródło","Show blocks":"Wyświetl bloki","Select all":"Zaznacz wszystko","Disable editing":"Zablokuj edycję","Enable editing":"Odblokuj edycję","Previous editable region":"Poprzednie pole do edycji","Next editable region":"Następne pole do edycji","Navigate editable regions":"Przejdź między polami do edycji","Remove Format":"Usuń formatowanie","Page break":"Podział strony","media widget":"widget osadzenia mediów","Media URL":"Adres URL","Paste the media URL in the input.":"Wklej adres URL mediów do pola.","Tip: Paste the URL into the content to embed faster.":"Wskazówka: Wklej URL do treści edytora, by łatwiej osadzić media.","The URL must not be empty.":"Adres URL nie może być pusty.","This media URL is not supported.":"Ten rodzaj adresu URL nie jest obsługiwany.","Insert media":"Wstaw media",Media:"Nośniki","Media toolbar":"Pasek narzędzi mediów","Open media in new tab":"Otwórz media w nowej zakładce","Media embed":"Osadzanie multimediów","Numbered List":"Lista numerowana","Bulleted List":"Lista wypunktowana","To-do List":"Lista rzeczy do zrobienia","Bulleted list styles toolbar":"Pasek z narzędziami: style listy z punktorami","Numbered list styles toolbar":"Pasek z narzędziami: style listy numerowanej","Toggle the disc list style":"Włącz/wyłącz listę w stylu „dysk”","Toggle the circle list style":"Włącz/wyłącz listę w stylu „kółko”","Toggle the square list style":"Włącz/wyłącz listę w stylu „kwadrat”","Toggle the decimal list style":"Włącz/wyłącz listę w stylu „dziesiętne”","Toggle the decimal with leading zero list style":"Włącz/wyłącz listę w stylu „dziesiętne z zerem wiodącym”","Toggle the lower–roman list style":"Włącz/wyłącz listę w stylu „małe cyfry rzymskie”","Toggle the upper–roman list style":"Włącz/wyłącz listę w stylu „wielkie cyfry rzymskie”","Toggle the lower–latin list style":"Włącz/wyłącz listę w stylu „alfabet łaciński – małe litery”","Toggle the upper–latin list style":"Włącz/wyłącz listę w stylu „alfabet łaciński – wielkie litery”",Disc:"Dysk",Circle:"Kółko",Square:"Kwadrat",Decimal:"Dziesiętne","Decimal with leading zero":"Dziesiętne z zerem wiodącym","Lower–roman":"Małe cyfry rzymskie","Upper-roman":"Wielkie cyfry rzymskie","Lower-latin":"Alfabet łaciński – małe litery","Upper-latin":"Alfabet łaciński – wielkie litery","List properties":"Właściwości listy","Start at":"Zacznij od","Invalid start index value.":"Nieprawidłowa wartość indeksu początkowego.","Start index must be greater than 0.":"Wartość początkowa musi być większa niż 0.","Reversed order":"Odwrócona kolejność","Keystrokes that can be used in a list":"Klawisze, których można używać w odniesieniu do listy","Increase list item indent":"Zwiększa wcięcie elementu listy","Decrease list item indent":"Zmniejsza wcięcie elementu listy","Entering a to-do list":"Wchodzenie na listę zadań do wykonania","Leaving a to-do list":"Opuszczenie listy zadań do wykonania",Unlink:"Usuń odnośnik",Link:"Wstaw odnośnik","Link URL":"Adres URL","Link URL must not be empty.":"Adres URL linku nie może być pusty","Link image":"Wstaw odnośnik do obrazka","Edit link":"Edytuj odnośnik","Open link in new tab":"Otwórz odnośnik w nowej zakładce","Open in a new tab":"Otwórz w nowej zakładce",Downloadable:"Do pobrania","Create link":"Tworzy link","Move out of a link":"Umożliwia wyjście z linku","Link properties":"Właściwości linku","Displayed text":"Wyświetlany tekst","No links available":"Brak dostępnych linków",Language:"Język","Choose language":"Wybierz język","Remove language":"Usuń język","Increase indent":"Zwiększ wcięcie","Decrease indent":"Zmniejsz wcięcie","image widget":"Obraz","Wrap text":"Zawijaj tekst","Break text":"Rozbijaj tekst","In line":"W linii","Side image":"Obraz dosunięty do brzegu, oblewany tekstem","Full size image":"Obraz w pełnym rozmiarze","Left aligned image":"Obraz wyrównany do lewej","Centered image":"Obraz wyrównany do środka","Right aligned image":"Obraz wyrównany do prawej","Change image text alternative":"Zmień tekst zastępczy obrazka","Text alternative":"Tekst zastępczy obrazka","Enter image caption":"Wstaw tytuł obrazka","Insert image":"Wstaw obraz","Replace image":"Zastąp obraz","Upload from computer":"Prześlij z komputera","Replace from computer":"Zastąp z komputera","Upload image from computer":"Prześlij obraz z komputera","Image from computer":"Obraz z komputera","From computer":"Z komputera","Replace image from computer":"Zastąp obraz z komputera","Upload failed":"Przesyłanie obrazu nie powiodło się","You have no image upload permissions.":"Nie masz uprawnień do przesyłania obrazów.","Image toolbar":"Pasek narzędzi obrazka","Resize image":"Zmień rozmiar obrazka","Resize image to %0":"Zmień rozmiar do %0","Resize image to the original size":"Przywróć oryginalny rozmiar obrazu","Resize image (in %0)":"Zmień rozmiar obrazu (w %0)",Original:"Oryginalny","Custom image size":"Niestandardowy rozmiar obrazu",Custom:"Niestandardowy","Image resize list":"Lista: zmiana wielkości obrazu","Insert image via URL":"Wstaw obraz z adresu URL","Insert via URL":"Wstaw przez URL","Image via URL":"Obraz przez URL","Via URL":"Przez URL","Update image URL":"Uaktualnij obraz z adresu URL","Caption for the image":"Nagłówek do obrazu","Caption for image: %0":"Nagłówek do obrazu: %0","The value must not be empty.":"Wartość nie może być pusta.","The value should be a plain number.":"Wartość powinna zawierać tylko liczbę.","Uploading image":"Trwa przesyłanie obrazu","Image upload complete":"Przesyłanie obrazu zakończone","Error during image upload":"Błąd podczas przesyłania obrazu",Image:"Obraz","Image Resize":"Zmiana rozmiaru obrazu","Text Alternative":"Alternatywny tekst","HTML object":"Obiekt HTML","Insert HTML":"Wstaw kod HTML","HTML snippet":"Kod HTML","Paste raw HTML here...":"Wstaw tutaj czysty kod HTML...","Edit source":"Edytuj źródło","Save changes":"Zapisz zmiany","No preview available":"Podgląd nie jest dostępny","Empty snippet content":"Brak kodu","Horizontal line":"Linia pozioma","Yellow marker":"Żółty marker","Green marker":"Zielony marker","Pink marker":"Różowy marker","Blue marker":"Niebieski marker","Red pen":"Czerwony długopis","Green pen":"Zielony długopis","Remove highlight":"Usuń podświetlenie",Highlight:"Podświetlenie","Text highlight toolbar":"Pasek narzędzi podświetleń",Heading:"Nagłówek","Choose heading":"Wybierz nagłówek","Heading 1":"Nagłówek 1","Heading 2":"Nagłówek 2","Heading 3":"Nagłówek 3","Heading 4":"Nagłówek 4","Heading 5":"Nagłówek 5","Heading 6":"Nagłówek 6","Type your title":"Podaj tytuł","Type or paste your content here.":"Wpisz lub wklej tutaj treść dokumentu.","Enter fullscreen mode":"Włącz tryb pełnoekranowy","Leave fullscreen mode":"Wyłącz tryb pełnoekranowy","Fullscreen mode":"Tryb pełnoekranowy","Toggle fullscreen mode":"Przełącz tryb pełnoekranowy","Document outline":"Zarys dokumentu","Connected users":"Połączeni użytkownicy","Font Size":"Rozmiar czcionki",Tiny:"Bardzo mały",Small:"Mały",Big:"Duży",Huge:"Bardzo duży","Font Family":"Czcionka",Default:"Domyślny","Font Color":"Kolor czcionki","Font Background Color":"Kolor tła czcionki","Document colors":"Kolory dokumentu","Find and replace":"Znajdź i zamień","Find in text…":"Znajdź…",Find:"Znajdź","Previous result":"Poprzedni","Next result":"Następny",Replace:"Zamień","Replace all":"Zamień wszystko","Match case":"Uwzględnij wielkość liter","Whole words only":"Znajdź tylko całe wyrazy","Replace with…":"Zamień na…","Text to find must not be empty.":"Szukany tekst nie może być pusty.","Tip: Find some text first in order to replace it.":"Podpowiedź: Znajdź jakiś tekst, aby go zamienić.","Advanced options":"Opcje zaawansowane","Find in the document":"Otwiera interfejs Znajdź w dokumencie","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Wstawia miękki enter (element <code>&lt;br&gt;</code>","Insert a hard break (a new paragraph)":"Wstawia twardą spację (nowy akapit)",Emoji:"Emoji","Show all emoji...":"Pokaż wszystkie emoji...","Find an emoji (min. 2 characters)":"Znajdź emoji (min. 2 znaki)",'No emojis were found matching "%0".':"Nie znaleziono emoji odpowiadających „%0”.","Keep on typing to see the emoji.":"Wpisuj dalej, aby zobaczyć emoji.","The query must contain at least two characters.":"Zapytanie musi zawierać co najmniej dwa znaki.","Smileys & Expressions":"Emotikony i wyrażenia","Gestures & People":"Gesty i ludzie","Animals & Nature":"Zwierzęta i natura","Food & Drinks":"Jedzenie i napoje","Travel & Places":"Podróże i miejsca",Activities:"Aktywności",Objects:"Obiekty",Symbols:"Symbole",Flags:"Flagi","Select skin tone":"Wybierz odcień skóry","Default skin tone":"Domyślny odcień skóry","Light skin tone":"Jasny odcień skóry","Medium Light skin tone":"Średnio jasny odcień skóry","Medium skin tone":"Średni odcień skóry","Medium Dark skin tone":"Średnio ciemny odcień skóry","Dark skin tone":"Ciemny odcień skóry","Emoji picker":"Selektor emotikonów",Cancel:"Anuluj",Clear:"Wyczyść","Remove color":"Usuń kolor","Restore default":"Przywróć domyślne",Save:"Zapisz","Show more items":"Pokaż więcej","%0 of %1":"%0 z %1","Cannot upload file:":"Nie można przesłać pliku:","Rich Text Editor. Editing area: %0":"Edytor tekstu. Obszar edycji: %0","Insert with file manager":"Wstaw za pomocą menedżera plików","Replace with file manager":"Zastąp za pomocą menedżera plików","Insert image with file manager":"Wstaw obraz za pomocą menedżera plików","Replace image with file manager":"Zastąp obraz za pomocą menedżera plików",File:"Plik","With file manager":"Przez menedżer plików","Toggle caption off":"Ukryj podpis tabeli","Toggle caption on":"Pokaż podpis tabeli","Content editing keystrokes":"Klawisze edycji zawartości","These keyboard shortcuts allow for quick access to content editing features.":"Te skróty klawiszowe umożliwiają szybki dostęp do funkcji edycji zawartości.","User interface and content navigation keystrokes":"Klawisze umożliwiające poruszanie się po interfejsie użytkownika i zawartości","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Aby łatwiej poruszać się po interfejsie użytkownika CKEditor 5, użyj następujących skrótów klawiszowych.","Close contextual balloons, dropdowns, and dialogs":"Zamyka podpowiedzi kontekstowe, menu rozwijane i okna dialogowe","Open the accessibility help dialog":"Otwiera okno pomocy dotyczącej dostępności","Move focus between form fields (inputs, buttons, etc.)":"Przenosi fokus pomiędzy polami formularza (polami wprowadzania, przyciskami itd.)","Move focus to the menu bar, navigate between menu bars":"Zmień ukierunkowanie na pasek menu, nawiguj między paskami menu","Move focus to the toolbar, navigate between toolbars":"Przenosi fokus na pasek narzędzi, umożliwia poruszanie się pomiędzy paskami narzędzi","Navigate through the toolbar or menu bar":"Nawiguj za pomocą paska narzędzi lub paska menu","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Uruchom aktualnie aktywny przycisk. Uruchomienie przycisków wchodzących w interakcję z zawartością edytora przywraca ukierunkowanie na zawartość.",Accept:"Zaakceptuj",Paragraph:"Akapit","Color picker":"Wybór koloru","Please try a different phrase or check the spelling.":"Spróbuj wyszukać inną frazą lub sprawdź poprawność ortograficzną wyszukiwania.",Source:"Źródło",Insert:"Wstaw",Update:"Zaktualizuj",Back:"Wróć","Insert code block":"Wstaw blok kodu","Plain text":"Zwykły tekst","Leaving %0 code snippet":"Opuszczenie fragmentu kodu %0","Entering %0 code snippet":"Wchodzenie we fragment kodu %0","Entering code snippet":"Wchodzenie we fragment kodu","Leaving code snippet":"Opuszczanie fragmentu kodu","Code block":"Blok kodu","Copy selected content":"Kopiuje zaznaczoną zawartość","Paste content":"Wkleja zawartość","Paste content as plain text":"Wkleja zawartość jako zwykły tekst","Insert image or file":"Wstaw obrazek lub plik","Could not obtain resized image URL.":"Nie można pobrać adresu URL obrazka po przeskalowaniu.","Selecting resized image failed":"Wybranie obrazka po przeskalowaniu nie powiodło się.","Could not insert image at the current position.":"Nie można wstawić obrazka w bieżącej lokalizacji.","Inserting image failed":"Wstawienie obrazka nie powiodło się.",Bookmark:"Zakładka","Edit bookmark":"Edytuj zakładkę","Remove bookmark":"Usuń zakładkę","Bookmark name":"Nazwa zakładki","Enter the bookmark name without spaces.":"Wprowadź nazwę zakładki bez spacji.","Bookmark must not be empty.":"Nazwa zakładki nie może być pusta.","Bookmark name cannot contain space characters.":"Nazwa zakładki nie może zawierać spacji.","Bookmark name already exists.":"Zakładka o takiej nazwie już istnieje.","bookmark widget":"widżet zakładek","Bookmark toolbar":"Pasek narzędzi zakładek",Bookmarks:"Zakładki","No bookmarks available.":"Brak dostępnych zakładek.","Scroll to bookmark":"Przewiń do zakładki","Open file manager":"Otwórz menedżer plików","Cannot determine a category for the uploaded file.":"Nie można ustalić kategorii przesłanego pliku.","Cannot access default workspace.":"Nie można uzyskać dostępu do domyślnego obszaru roboczego.","You have no image editing permissions.":"Nie masz uprawnień do edytowania obrazów.","Edit image":"Edytuj obraz","Processing the edited image.":"Trwa przetwarzanie edytowanego obrazu.","Server failed to process the image.":"Serwer nie mógł przetworzyć obrazu.","Failed to determine category of edited image.":"Nie udało się określić kategorii edytowanego obrazu.","Block quote":"Cytat blokowy",Bold:"Pogrubienie",Italic:"Kursywa",Underline:"Podkreślenie",Code:"Kod",Strikethrough:"Przekreślenie",Subscript:"Indeks dolny",Superscript:"Indeks górny","Italic text":"Zmienia tekst na kursywę","Move out of an inline code style":"Przenosi zaznaczenie poza styl kodu inline","Bold text":"Pogrubia tekst","Underline text":"Podkreśla tekst","Strikethrough text":"Przekreśla tekst","Saving changes":"Zapisywanie zmian","Revert autoformatting action":"Cofa automatyczne formatowanie","Align left":"Wyrównaj do lewej","Align right":"Wyrównaj do prawej","Align center":"Wyrównaj do środka",Justify:"Wyrównaj obustronnie","Text alignment":"Wyrównanie tekstu","Text alignment toolbar":"Pasek narzędzi wyrównania tekstu"},getPluralForm(o){return o==1?0:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?1:2}}};/**
374
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
375
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
376
+ */const KP={ar:{dictionary:{"Words: %0":"الكلمات: %0","Characters: %0":"الأحرف: %0","Widget toolbar":"شريط أدوات الواجهة","Insert paragraph before block":"إدراج فقرة قبل الكتلة","Insert paragraph after block":"إدراج فقرة بعد الكتلة","Press Enter to type after or press Shift + Enter to type before the widget":"اضغط على Enter للكتابة بعد ذلك أو اضغط على Shift + Enter للكتابة قبل الأداة","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"ضغطة المفاتيح التي يمكن استخدامها عند اختيار الأداة (على سبيل المثال: الصورة والجدول وما إلى ذلك)","Insert a new paragraph directly after a widget":"قم بإدراج فقرة جديدة مباشرةً بعد الأداة","Insert a new paragraph directly before a widget":"قم بإدراج فقرة جديدة مباشرةً قبل الأداة","Move the caret to allow typing directly before a widget":"حرّكْ علامة الإقحام للسماح بالكتابة مباشرةً قبل الأداة","Move the caret to allow typing directly after a widget":"حرّكْ علامة الإقحام للسماح بالكتابة مباشرةً بعد الأداة","Move focus from an editable area back to the parent widget":"انقل التركيز من منطقة قابلة للتحرير لتعيده إلى الأداة الأصلية","Upload in progress":"جاري الرفع",Undo:"تراجع",Redo:"إعادة","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").',"Insert table":"إدراج جدول","Header column":"عمود عنوان","Insert column left":"أدخل العمود إلى اليسار","Insert column right":"أدخل العمود إلى اليمين","Delete column":"حذف العمود","Select column":"حدد العمود",Column:"عمود","Header row":"صف عنوان","Insert row below":"ادراج صف بعد","Insert row above":"ادراج صف قبل","Delete row":"حذف الصف","Select row":"حدد صفًا",Row:"صف","Merge cell up":"دمج الخلايا للأعلى","Merge cell right":"دمج الخلايا لليمين","Merge cell down":"دمج الخلايا للأسفل","Merge cell left":"دمج الخلايا لليسار","Split cell vertically":"فصل الخلايا بشكل عمودي","Split cell horizontally":"فصل الخلايا بشكل افقي","Merge cells":"دمج الخلايا","Table toolbar":"شريط أدوات الجدول","Table properties":"خصائص الجدول","Cell properties":"خصائص الخلية",Border:"الحدود",Style:"أسلوب",Width:"العرض",Height:"الارتفاع",Color:"اللون",Background:"الخلفية",Padding:"الحاشية",Dimensions:"الابعاد","Table cell text alignment":"محاذاة نص خلية الجدول",Alignment:"المحاذاة","Horizontal text alignment toolbar":"شريط أدوات محاذاة النص الأفقي","Vertical text alignment toolbar":"شريط أدوات محاذاة النص العمودي","Table alignment toolbar":"شريط أدوات محاذاة الجدول",None:"لا شيء",Solid:"صلب",Dotted:"منقط",Dashed:"متقطع",Double:"مزدوج",Groove:"إطار محفور",Ridge:"إطار ناتئ",Inset:"منخفض",Outset:"بارز","Align cell text to the left":"قم بمحاذاة نص الخلية إلى اليسار","Align cell text to the center":"قم بمحاذاة نص الخلية إلى المركز","Align cell text to the right":"قم بمحاذاة نص الخلية إلى اليمين","Justify cell text":"ضبط نص الخلية","Align cell text to the top":"قم بمحاذاة نص الخلية إلى الأعلى","Align cell text to the middle":"قم بمحاذاة نص الخلية إلى المنتصف","Align cell text to the bottom":"قم بمحاذاة نص الخلية للاسفل","Align table to the left":"قم بمحاذاة الجدول إلى اليسار","Center table":"قم بمحاذاة الجدول إلى المنتصف","Align table to the right":"قم بمحاذاة الجدول إلى اليمين",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'هذا اللون غير صالح. جرِّب "#FF0000" أو "rgb(255,0,0)" أو "أحمر".','The value is invalid. Try "10px" or "2em" or simply "2".':'هذه القيمة غير صالحة. جرِّب "10px" أو "2em" أو "2" وحسب.',"Enter table caption":"أدخل التسمية التوضيحية للجدول","Keystrokes that can be used in a table cell":"ضغطة المفاتيح التي يمكن استخدامها في خلية الجدول","Move the selection to the next cell":"انقلْ التحديد إلى الخلية التالية","Move the selection to the previous cell":"انقلْ التحديد إلى الخلية السابقة","Insert a new table row (when in the last cell of a table)":"قمْ بإدراج صف جدول جديد (في آخر خلية من الجدول)","Navigate through the table":"تنقّلْ عبر الجدول",Table:"جدول","Insert table layout":"إدراج تخطيط الجدول","Table layout":"تخطيط الجدول","Layout table":"جدول التخطيط","Content table":"جدول المحتويات","Choose table type":"اختر نوع الجدول","Table type":"نوع الجدول","Table type options":"خيارات نوع الجدول",Styles:"الأنماط","Multiple styles":"أنماط متعددة","Block styles":"أنماط الكتل","Text styles":"أنماط النصوص","Special characters":"أحرف خاصة",Category:"الفئة",All:"الكل",Arrows:"أسهم",Currency:"عملة",Latin:"لاتيني",Mathematical:"رياضي",Text:"نص","leftwards simple arrow":"سهم بسيط يشير إلى اليسار","rightwards simple arrow":"سهم بسيط يشير إلى اليمين","upwards simple arrow":"سهم بسيط يشير إلى الأعلى","downwards simple arrow":"سهم بسيط يشير إلى الأسفل","leftwards double arrow":"سهم مزدوج متجه يساراً","rightwards double arrow":"سهم مزدوج متجه يميناً","upwards double arrow":"سهم مزدوج متجه لأعلى","downwards double arrow":"سهم مزدوج متجه لأسفل","leftwards dashed arrow":"سهم متقطع متجه يساراً","rightwards dashed arrow":"سهم متقطع متجه يميناً","upwards dashed arrow":"سهم متقطع متجه لأعلى","downwards dashed arrow":"سهم متقطع متجه لأسفل","leftwards arrow to bar":"سهم يشير إلى خط جهة اليسار","rightwards arrow to bar":"سهم يشير إلى خط جهة اليمين","upwards arrow to bar":"سهم لأعلى يشير إلى خط","downwards arrow to bar":"سهم لأسفل يشير إلى خط","up down arrow with base":"سهم بالاتجاهين أعلى وأسفل، له قاعدة","back with leftwards arrow above":'"عودة" أعلاها سهم يتجه يساراً',"end with leftwards arrow above":'"النهاية" أعلاها سهم يتجه يساراً',"on with exclamation mark with left right arrow above":'"يعمل" وعلامة تعجب، أعلاهما سهم باتجاهين يميناً ويساراً',"soon with rightwards arrow above":'"قريباً" أعلاها سهم يتجه يميناً',"top with upwards arrow above":'"إلى القمة" أعلاها سهم لأعلى',"Dollar sign":"رمز الدولار","Euro sign":"رمز اليورو","Yen sign":"رمز الين","Pound sign":"رمز الجنيه","Cent sign":"رمز السنت","Euro-currency sign":"رمز عملة اليورو","Colon sign":"رمز الكولون","Cruzeiro sign":"رمز الكروزيرو","French franc sign":"رمز الفرانك الفرنسي","Lira sign":"رمز الليرة","Currency sign":"رمز العملة","Bitcoin sign":"رمز البيتكوين","Mill sign":"رمز المليم","Naira sign":"رمز النيرة","Peseta sign":"رمز البيزيتا","Rupee sign":"رمز الروبية","Won sign":"رمز الوون","New sheqel sign":"رمز الشيكل الجديد","Dong sign":"رمز الدونغ","Kip sign":"رمز الكيب","Tugrik sign":"رمز التوغروغ","Drachma sign":"رمز الدراخما","German penny sign":"رمز البنس الألماني","Peso sign":"رمز البيزو","Guarani sign":"رمز الغواراني","Austral sign":"رمز الأسترال","Hryvnia sign":"رمز الهريفنا","Cedi sign":"رمز السيدي","Livre tournois sign":"رمز الليفر تورنوز","Spesmilo sign":"رمز السبسميلو","Tenge sign":"رمز التينغ","Indian rupee sign":"رمز الروبية الهندية","Turkish lira sign":"رمز الليرة التركية","Nordic mark sign":"رمز المارك الاسكندنافي","Manat sign":"رمز المانات","Ruble sign":"رمز الروبيل","Latin capital letter a with macron":"حرف a لاتيني كبير مع علامة تشكيل ماكرون","Latin small letter a with macron":"حرف a لاتيني صغير مع علامة تشكيل ماكرون","Latin capital letter a with breve":"حرف a لاتيني كبير مع علامة تشكيل بريف","Latin small letter a with breve":"حرف a لاتيني صغير مع علامة تشكيل بريف","Latin capital letter a with ogonek":"حرف a لاتيني كبير مع علامة تشكيل خطاف","Latin small letter a with ogonek":"حرف a لاتيني صغير مع علامة تشكيل خطاف","Latin capital letter c with acute":"حرف c لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter c with acute":"حرف c لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin capital letter c with circumflex":"حرف c لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter c with circumflex":"حرف c لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter c with dot above":"حرف c لاتيني كبير مع نقطة أعلاه","Latin small letter c with dot above":"حرف c لاتيني صغير مع نقطة أعلاه","Latin capital letter c with caron":"حرف c لاتيني كبير مع علامة تشكيل كارون","Latin small letter c with caron":"حرف c لاتيني صغير مع علامة تشكيل كارون","Latin capital letter d with caron":"حرف d لاتيني كبير مع علامة تشكيل كارون","Latin small letter d with caron":"حرف d لاتيني صغير مع علامة تشكيل كارون","Latin capital letter d with stroke":"حرف d لاتيني كبير مع علامة شطب","Latin small letter d with stroke":"حرف d لاتيني صغير مع علامة شطب","Latin capital letter e with macron":"حرف e لاتيني كبير مع علامة تشكيل ماكرون","Latin small letter e with macron":"حرف e لاتيني صغير مع علامة تشكيل ماكرون","Latin capital letter e with breve":"حرف e لاتيني كبير مع علامة تشكيل بريف","Latin small letter e with breve":"حرف e لاتيني صغير مع علامة تشكيل بريف","Latin capital letter e with dot above":"حرف e لاتيني كبير مع نقطة أعلاه","Latin small letter e with dot above":"حرف e لاتيني صغير مع نقطة أعلاه","Latin capital letter e with ogonek":"حرف e لاتيني كبير مع علامة تشكيل خطاف","Latin small letter e with ogonek":"حرف e لاتيني صغير مع علامة تشكيل خطاف","Latin capital letter e with caron":"حرف e لاتيني كبير مع علامة تشكيل كارون","Latin small letter e with caron":"حرف e لاتيني صغير مع علامة تشكيل كارون","Latin capital letter g with circumflex":"حرف g لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter g with circumflex":"حرف g لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter g with breve":"حرف g لاتيني كبير مع علامة تشكيل بريف","Latin small letter g with breve":"حرف g لاتيني صغير مع علامة تشكيل بريف","Latin capital letter g with dot above":"حرف g لاتيني كبير مع نقطة أعلاه","Latin small letter g with dot above":"حرف g لاتيني صغير مع نقطة أعلاه","Latin capital letter g with cedilla":"حرف g لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter g with cedilla":"حرف g لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter h with circumflex":"حرف h لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter h with circumflex":"حرف h لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter h with stroke":"حرف h لاتيني كبير مع علامة شطب","Latin small letter h with stroke":"حرف h لاتيني صغير مع علامة شطب","Latin capital letter i with tilde":"حرف i لاتيني كبير مع علامة المد","Latin small letter i with tilde":"حرف i لاتيني صغير مع علامة المد","Latin capital letter i with macron":"حرف i لاتيني كبير مع علامة تشكيل ماكرون","Latin small letter i with macron":"حرف i لاتيني صغير مع علامة تشكيل ماكرون","Latin capital letter i with breve":"حرف i لاتيني كبير مع علامة تشكيل بريف","Latin small letter i with breve":"حرف i لاتيني صغير مع علامة تشكيل بريف","Latin capital letter i with ogonek":"حرف i لاتيني كبير مع علامة تشكيل خطاف","Latin small letter i with ogonek":"حرف i لاتيني صغير مع علامة تشكيل خطاف","Latin capital letter i with dot above":"حرف i لاتيني كبير مع نقطة أعلاه","Latin small letter dotless i":"حرف i لاتيني صغير بدون نقطة","Latin capital ligature ij":"حرف ij لاتيني مُركَّب كبير","Latin small ligature ij":"حرف ij لاتيني مُركَّب صغير","Latin capital letter j with circumflex":"حرف j لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter j with circumflex":"حرف j لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter k with cedilla":"حرف k لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter k with cedilla":"حرف k لاتيني صغير مع علامة تشكيل السيديلة","Latin small letter kra":"حرف kra لاتيني صغير","Latin capital letter l with acute":"حرف l لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter l with acute":"حرف l لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin capital letter l with cedilla":"حرف l لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter l with cedilla":"حرف l لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter l with caron":"حرف l لاتيني كبير مع علامة تشكيل كارون","Latin small letter l with caron":"حرف l لاتيني صغير مع علامة تشكيل كارون","Latin capital letter l with middle dot":"حرف l لاتيني كبير مع نقطة عند الوسط","Latin small letter l with middle dot":"حرف l لاتيني صغير مع نقطة عند الوسط","Latin capital letter l with stroke":"حرف l لاتيني كبير مع علامة شطب","Latin small letter l with stroke":"حرف l لاتيني صغير مع علامة شطب","Latin capital letter n with acute":"حرف n لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter n with acute":"حرف n لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin capital letter n with cedilla":"حرف n لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter n with cedilla":"حرف n لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter n with caron":"حرف n لاتيني كبير مع علامة تشكيل كارون","Latin small letter n with caron":"حرف n لاتيني صغير مع علامة تشكيل كارون","Latin small letter n preceded by apostrophe":"حرف n لاتيني صغير مسبوقة بعلامة فاصلة عليا","Latin capital letter eng":"حرف eng لاتيني كبير","Latin small letter eng":"حرف eng لاتيني صغير","Latin capital letter o with macron":"حرف o لاتيني كبير مع علامة تشكيل ماكرون","Latin small letter o with macron":"حرف o لاتيني صغير مع علامة تشكيل ماكرون","Latin capital letter o with breve":"حرف o لاتيني كبير مع علامة تشكيل بريف","Latin small letter o with breve":"حرف o لاتيني صغير مع علامة تشكيل بريف","Latin capital letter o with double acute":"حرف o لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter o with double acute":"حرف o لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital ligature oe":"حرف oe لاتيني مُركَّب كبير","Latin small ligature oe":"حرف oe لاتيني مُركَّب صغير","Latin capital letter r with acute":"حرف r لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter r with acute":`حرف r لاتيني صغير مع علامة تشكيل النبرة الحادة
377
+ `,"Latin capital letter r with cedilla":"حرف r لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter r with cedilla":"حرف r لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter r with caron":"حرف r لاتيني كبير مع علامة تشكيل كارون","Latin small letter r with caron":"حرف r لاتيني صغير مع علامة تشكيل كارون","Latin capital letter s with acute":"حرف s لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter s with acute":"حرف s لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin capital letter s with circumflex":"حرف s لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter s with circumflex":"حرف s لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter s with cedilla":"حرف s لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter s with cedilla":"حرف s لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter s with caron":"حرف s لاتيني كبير مع علامة تشكيل كارون","Latin small letter s with caron":"حرف s لاتيني صغير مع علامة تشكيل كارون","Latin capital letter t with cedilla":"حرف t لاتيني كبير مع علامة تشكيل السيديلة","Latin small letter t with cedilla":"حرف t لاتيني صغير مع علامة تشكيل السيديلة","Latin capital letter t with caron":"حرف t لاتيني كبير مع علامة تشكيل كارون","Latin small letter t with caron":"حرف t لاتيني صغير مع علامة تشكيل كارون","Latin capital letter t with stroke":"حرف t لاتيني كبير مع علامة شطب","Latin small letter t with stroke":"حرف t لاتيني صغير مع علامة شطب","Latin capital letter u with tilde":"حرف u لاتيني كبير مع علامة المد","Latin small letter u with tilde":"حرف u لاتيني صغير مع علامة المد","Latin capital letter u with macron":"حرف u لاتيني كبير مع علامة تشكيل ماكرون","Latin small letter u with macron":"حرف u لاتيني صغير مع علامة تشكيل ماكرون","Latin capital letter u with breve":"حرف u لاتيني كبير مع علامة تشكيل بريف","Latin small letter u with breve":"حرف u لاتيني صغير مع علامة تشكيل بريف","Latin capital letter u with ring above":"حرف u لاتيني كبير مع حلقة أعلاه","Latin small letter u with ring above":"حرف u لاتيني صغير مع حلقة أعلاه","Latin capital letter u with double acute":"حرف u لاتيني كبير مع علامة تشكيل النبرة الحادة المزدوجة","Latin small letter u with double acute":"حرف u لاتيني صغير مع علامة تشكيل النبرة الحادة المزدوجة","Latin capital letter u with ogonek":"حرف u لاتيني كبير مع علامة تشكيل خطاف","Latin small letter u with ogonek":"حرف u لاتيني صغير مع علامة تشكيل خطاف","Latin capital letter w with circumflex":"حرف w لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter w with circumflex":"حرف w لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter y with circumflex":"حرف y لاتيني كبير مع علامة تشكيل ثنية محيطة","Latin small letter y with circumflex":"حرف y لاتيني صغير مع علامة تشكيل ثنية محيطة","Latin capital letter y with diaeresis":"حرف y لاتيني كبير مع نقطتين أعلاه","Latin capital letter z with acute":"حرف z لاتيني كبير مع علامة تشكيل النبرة الحادة","Latin small letter z with acute":"حرف z لاتيني صغير مع علامة تشكيل النبرة الحادة","Latin capital letter z with dot above":"حرف z لاتيني كبير مع نقطة أعلاه","Latin small letter z with dot above":"حرف z لاتيني صغير مع نقطة أعلاه","Latin capital letter z with caron":"حرف z لاتيني كبير مع علامة تشكيل كارون","Latin small letter z with caron":"حرف z لاتيني صغير مع علامة تشكيل كارون","Latin small letter long s":'حرف "s طويل" لاتيني صغير',"Less-than sign":"علامة أقل من","Greater-than sign":"علامة أكبر من","Less-than or equal to":"أقل من أو يساوي","Greater-than or equal to":"أكبر من أو يساوي","En dash":"شرطة قصيرة","Em dash":"شرطة طويلة",Macron:"علامة التشكيل ماكرون",Overline:"خط أعلى الحرف","Degree sign":"علامة الدرجة","Minus sign":"علامة الطرح","Plus-minus sign":"علامة الطرح والجمع","Division sign":"علامة القسمة","Fraction slash":"شرطة الكسر","Multiplication sign":"علامة الضرب","Latin small letter f with hook":"حرف f لاتيني صغير مع علامة الخطاف",Integral:"علامة التكامل","N-ary summation":"جمع مصفوفة N",Infinity:"علامة ما لا نهاية","Square root":"الجذر التربيعي","Tilde operator":"علامة دلتا","Approximately equal to":"يساوي تقريباً","Almost equal to":"يساوي على الأرجح","Not equal to":"لا يساوي","Identical to":"مطابق لـ","Element of":"ينتمي إلى","Not an element of":"لا ينتمي إلى","Contains as member":"يحتوي كعضو","N-ary product":"حاصل مصفوفة N","Logical and":"and المنطقية","Logical or":"or المنطقية","Not sign":"علامة Not المنطقية",Intersection:"تقاطع",Union:"اتحاد","Partial differential":"التفاضلية الجزئية","For all":"علامة للكل","There exists":"علامة يوجد بها","Empty set":"مجموعة فارغة",Nabla:"رمز نبلة","Asterisk operator":"علامة الضرب (النجمة)","Proportional to":"يتناسب مع",Angle:"علامة الزاوية","Vulgar fraction one quarter":"الكسر الاعتيادي ربع","Vulgar fraction one half":"الكسر الاعتيادي نصف","Vulgar fraction three quarters":"الكسر الاعتيادي ثلاثة أرباع","Single left-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليسار","Single right-pointing angle quotation mark":"علامة تنصيص أحادية، رمز الزاوية، تشير جهة اليمين","Left-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليسار","Right-pointing double angle quotation mark":"علامة تنصيص مزدوجة، رمز الزاوية، تشير جهة اليمين","Left single quotation mark":"علامة تنصيص أحادية، تشير جهة اليسار","Right single quotation mark":"علامة تنصيص أحادية، تشير جهة اليمين","Left double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليسار","Right double quotation mark":"علامة تنصيص مزدوجة، تشير جهة اليمين","Single low-9 quotation mark":"علامة تنصيص 9 منخفضة، أحادية","Double low-9 quotation mark":"علامة تنصيص 9 منخفضة، مزدوجة","Inverted exclamation mark":"علامة تعجّب مقلوبة","Inverted question mark":"علامة استفهام مقلوبة","Two dot leader":"سابقة من نقطتان","Horizontal ellipsis":"علامة القطع الأفقي","Double dagger":"رمز الخنجر المزدوج","Per mille sign":'علامة "لكل ميل"',"Per ten thousand sign":'علامة "لكل 10 آلاف"',"Double exclamation mark":"علامة تعجّب مزدوجة","Question exclamation mark":"علامة استفهام مزدوجة","Exclamation question mark":"علامة استفهام مع علامة تعجب","Double question mark":"علامة استفهام مزدوجة","Copyright sign":'علامة "حق التأليف والنشر"',"Registered sign":'علامة "مسجل"',"Trade mark sign":"رمز العلامة التجارية","Section sign":"علامة القطاع","Paragraph sign":"علامة الفقرة","Reversed paragraph sign":"علامة الفقرة مقلوبة","Show source":"إظهار المصدر","Show blocks":"عرض الكتل","Select all":"تحديد الكل","Disable editing":"تعطيل التحرير","Enable editing":"تمكين التحرير","Previous editable region":"منطقة التحرير السابقة","Next editable region":"منطقة التحرير التالية","Navigate editable regions":"التنقل في مناطق التحرير","Remove Format":"إزالة التنسيق","Page break":"فاصل صفحات","media widget":"أداة الوسائط","Media URL":"عنوان URL الوسائط","Paste the media URL in the input.":"ألصق عنوان URL الوسائط في موضع الإدخال.","Tip: Paste the URL into the content to embed faster.":"نصيحة: ألصق عنوان URL داخل المحتوى؛ لتسريع عملية التضمين.","The URL must not be empty.":"لا يمكن ترك بيان عنوان URL فارغاً.","This media URL is not supported.":"عنوان URL الوسائط هذا غير مدعوم.","Insert media":"أدخل الوسائط",Media:"وسائط","Media toolbar":"شريط أدوات الوسائط","Open media in new tab":"فتح الوسائط في علامة تبويب جديدة","Media embed":"تضمين الوسائط","Numbered List":"قائمة رقمية","Bulleted List":"قائمة نقطية","To-do List":"قائمة المهام","Bulleted list styles toolbar":"شريط أدوات أنماط قوائم التعداد النقطي","Numbered list styles toolbar":"شريط أدوات أنماط القوائم المرقمة","Toggle the disc list style":"تبديل نمط قائمة الأقراص","Toggle the circle list style":"تبديل نمط قائمة الدوائر","Toggle the square list style":"تبديل نمط قائمة المربعات","Toggle the decimal list style":"تبديل نمط قائمة الأرقام العشرية","Toggle the decimal with leading zero list style":"تبديل الأرقام العشرية بنمط قائمة الأصفار البادئة","Toggle the lower–roman list style":"تبديل نمط قائمة الأرقام الرومانية الصغيرة","Toggle the upper–roman list style":"تبديل نمط قائمة الأرقام الرومانية الكبيرة","Toggle the lower–latin list style":"تبديل نمط قائمة الأحرف اللاتينية الصغيرة","Toggle the upper–latin list style":"تبديل نمط قائمة الأحرف اللاتينية الكبيرة",Disc:"قرص",Circle:"دائرة",Square:"مربع",Decimal:"رقم عشري","Decimal with leading zero":"رقم عشري مع البدء بصفر ","Lower–roman":"رقم روماني صغير","Upper-roman":"رقم روماني كبير","Lower-latin":"حرف لاتيني صغير","Upper-latin":"حرف لاتيني كبير","List properties":"خصائص القائمة","Start at":"البدء من","Invalid start index value.":"قيمة فهرس البداية غير صالحة.","Start index must be greater than 0.":"يجب أن تكون قيمة البداية في الفهرس أكبر من 0.","Reversed order":"عكس اتجاه الترتيب","Keystrokes that can be used in a list":"ضغطة المفاتيح التي يمكن استخدامها في القائمة","Increase list item indent":"زيادة المسافة البادئة لعنصر القائمة","Decrease list item indent":"تقليل المسافة البادئة لعنصر القائمة","Entering a to-do list":"إدخال قائمة مهام","Leaving a to-do list":"ترك قائمة المهام",Unlink:"إلغاء الرابط",Link:"رابط","Link URL":"رابط عنوان","Link URL must not be empty.":"يجب ألا يكون عنوان الرابط فارغاً.","Link image":"ربط الصورة","Edit link":"تحرير الرابط","Open link in new tab":"فتح الرابط في تبويب جديد","Open in a new tab":"فتح في تبويب جديد",Downloadable:"يمكن تنزيله","Create link":"قمْ بإنشاء رابط","Move out of a link":"ابتعدْ عن الرابط","Link properties":"خصائص الرابط","Displayed text":"النص المعروض","No links available":"لا توجد روابط متاحة",Language:"اللغة","Choose language":"اختيار اللغة","Remove language":"إزالة اللغة","Increase indent":"زيادة المسافة البادئة","Decrease indent":"تقليص المسافة البادئة","image widget":"عنصر الصورة","Wrap text":"التفاف النص","Break text":"اعتراض النص","In line":"سطري مع النص","Side image":"صورة جانبية","Full size image":"صورة بحجم كامل","Left aligned image":"صورة بمحاذاة لليسار","Centered image":"صورة بالوسط","Right aligned image":"صورة بمحاذاة لليمين","Change image text alternative":"غير النص البديل للصورة","Text alternative":"النص البديل","Enter image caption":"ادخل عنوان الصورة","Insert image":"ادراج صورة","Replace image":"استبدال الصورة","Upload from computer":"رفع الملف من الحاسوب","Replace from computer":"استبدال من الحاسوب","Upload image from computer":"تحميل الصورة من الحاسوب","Image from computer":"صورة من جهاز الكمبيوتر","From computer":"من الكمبيوتر","Replace image from computer":"استبدال الصورة من الحاسوب","Upload failed":"فشل الرفع","You have no image upload permissions.":"ليس لديك أذونات تحميل الصور.","Image toolbar":"شريط أدوات الصور","Resize image":"تغيير حجم الصورة","Resize image to %0":"تغيير حجم الصورة إلى %0","Resize image to the original size":"تغيير حجم الصورة إلى الحجم الأصلي","Resize image (in %0)":"تغيير حجم الصورة (في %0 )",Original:"الحجم الأصلي","Custom image size":"حجم مخصص للصورة",Custom:"مخصص","Image resize list":"قائمة تغيير حجم الصورة","Insert image via URL":"إدراج صورة عبر عنوان URL","Insert via URL":"إدراج عبر URL","Image via URL":"صورة عبر URL","Via URL":"عبر URL","Update image URL":"عنوان URL الخاص بتحديث الصورة","Caption for the image":"التسمية التوضيحية للصورة","Caption for image: %0":"التسمية التوضيحية للصورة: %0","The value must not be empty.":"يجب ألا تكون القيمة فارغة.","The value should be a plain number.":"يجب أن تكون القيمة رقماً عادياً.","Uploading image":"جارٍ تحميل الصورة","Image upload complete":"اكتمل تحميل الصورة","Error during image upload":"حدث خطأ أثناء رفع الصورة",Image:"صورة","Image Resize":"تغيير حجم الصورة","Text Alternative":"النص البديل","HTML object":"عنصر HTML","Insert HTML":"إدراج HTML","HTML snippet":"قصاصة برمجية بلغة HTML","Paste raw HTML here...":"ألصق رمز HTML الأولي هنا...","Edit source":"تحرير المصدر","Save changes":"حفظ التغييرات","No preview available":"المعاينة غير متاحة","Empty snippet content":"محتوى القصاصة فارغ","Horizontal line":"خط أفقي","Yellow marker":"تحديد اصفر","Green marker":"تحديد اخضر","Pink marker":"تحديد وردي","Blue marker":"تحديد ازرق","Red pen":"تحديد احمر","Green pen":"قلم اخضر","Remove highlight":"إزالة التحديد",Highlight:"تحديد","Text highlight toolbar":"شريط أدوات تمييز النص",Heading:"عنوان","Choose heading":"اختر عنوان","Heading 1":"عنوان 1","Heading 2":"عنوان 2","Heading 3":"عنوان 3","Heading 4":"عنوان 4","Heading 5":"عنوان 5","Heading 6":"عنوان 6","Type your title":"أدخل العنوان","Type or paste your content here.":"أكتب المحتوى أو ألصقه هنا.","Enter fullscreen mode":"الدخول في وضع ملء الشاشة","Leave fullscreen mode":"مغادرة وضع ملء الشاشة","Fullscreen mode":"وضع ملء الشاشة","Toggle fullscreen mode":"تبديل وضع ملء الشاشة","Document outline":"مخطط المستند","Connected users":"المستخدمون المتصلون","Font Size":"حجم الخط",Tiny:"ضئيل",Small:"صغير",Big:"كبير",Huge:"ضخم","Font Family":"نوع الخط",Default:"افتراضي","Font Color":"لون الخط","Font Background Color":"لون خلفية الخط","Document colors":"ألوان المستند","Find and replace":"البحث والاستبدال","Find in text…":"البحث في النص...",Find:"البحث","Previous result":"النتيجة السابقة","Next result":"النتيجة التالية",Replace:"استبدال","Replace all":"استبدال الكل","Match case":"مطابقة حالة الأحرف","Whole words only":"الكلمات بأكملها فقط","Replace with…":"استبدال بـ...","Text to find must not be empty.":"لا يمكن لبيان النص المطلوب البحث عنه أن يكون فارغاً.","Tip: Find some text first in order to replace it.":"نصيحة: في البداية، ابحث عن جزء من النص؛ لتتمكن من استبداله. ","Advanced options":"الخيارات المتقدمة","Find in the document":"ابحثْ في الوثيقة","Insert a soft break (a <code>&lt;br&gt;</code> element)":"قمْ بإدراج فاصل بسيط (عنصر <code>&lt;br&gt;</code>)","Insert a hard break (a new paragraph)":"قمْ بإدراج فاصل ثابت (فقرة جديدة)",Emoji:"الرموز التعبيرية","Show all emoji...":"إظهار جميع الرموز التعبيرية...","Find an emoji (min. 2 characters)":"ابحث عن رمز تعبيري (حد أدنى حرفين)",'No emojis were found matching "%0".':'لم نعثر على أي رموز تعبيرية مطابقة لـ "%0".',"Keep on typing to see the emoji.":"استمر في الكتابة لرؤية الرمز التعبيري.","The query must contain at least two characters.":"يجب أن يحتوي الاستعلام على حرفين على الأقل.","Smileys & Expressions":"الابتسامات والتعبيرات","Gestures & People":"الإيماءات والأشخاص","Animals & Nature":"الحيوانات والطبيعة","Food & Drinks":"الأطعمة والمشروبات","Travel & Places":"السفر والأماكن",Activities:"الأنشطة",Objects:"الأشياء",Symbols:"الرموز",Flags:"الأعلام","Select skin tone":"حدد لون البشرة","Default skin tone":"لون البشرة الافتراضي","Light skin tone":"لون البشرة الفاتح","Medium Light skin tone":"لون بشرة فاتح متوسط","Medium skin tone":"لون البشرة متوسط","Medium Dark skin tone":"لون البشرة ​​داكن متوسط","Dark skin tone":"لون بشرة داكن","Emoji picker":"أداة اختيار الرموز التعبيرية",Cancel:"إلغاء",Clear:"مسح","Remove color":"إزالة اللون","Restore default":"استعادة الافتراضي",Save:"حفظ","Show more items":"عرض المزيد من العناصر","%0 of %1":"%0 من %1","Cannot upload file:":"لا يمكن رفع الملف:","Rich Text Editor. Editing area: %0":"محرر النصوص المنسّقة. منطقة التحرير: %0","Insert with file manager":"إدخال مع مدير الملفات","Replace with file manager":"استبدال بمدير الملفات","Insert image with file manager":"إدراج صورة مع مدير الملفات","Replace image with file manager":"استبدال الصورة بمدير الملفات",File:"ملف","With file manager":"باستخدام مدير الملفات","Toggle caption off":"إخفاء التسمية التوضيحية","Toggle caption on":"عرض التسمية التوضيحية","Content editing keystrokes":"ضغطة المفاتيح لتحرير المحتوى","These keyboard shortcuts allow for quick access to content editing features.":"تسمح اختصارات لوحة المفاتيح هذه بالوصول سريعاً إلى ميزات تحرير المحتوى.","User interface and content navigation keystrokes":"واجهة المستخدم وضغطة المفاتيح للتنقل في المحتوى","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"استخدمْ ضغطة المفاتيح التالية للتنقل بشكل أكثر كفاءة في واجهة مستخدم CKEditor 5.","Close contextual balloons, dropdowns, and dialogs":"أغلقْ البالونات السياقية والقوائم المنسدلة ومربعات الحوار","Open the accessibility help dialog":"افتحْ مربع الحوار بشأن تعليمات إمكانية الوصول","Move focus between form fields (inputs, buttons, etc.)":"انقلْ التركيز بين حقول النموذج (المدخلات والأزرار وما إلى ذلك)","Move focus to the menu bar, navigate between menu bars":"انقلْ التركيز إلى شريط القائمة، وتَنقّلْ بين أشرطة القوائم","Move focus to the toolbar, navigate between toolbars":"انقلْ التركيز إلى شريط الأدوات، وتنقّلْ بين أشرطة الأدوات","Navigate through the toolbar or menu bar":"تنقّلْ عبر شريط الأدوات أو شريط القوائم","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"قم بتنفيذ الزر المركَّز حالياً، حيث أن تنفيذ الأزرار المتفاعلة مع محتوى المحرِّر يؤدي إلى إعادة التركيز إلى المحتوى.",Accept:"قبول",Paragraph:"فقرة","Color picker":"أداة انتقاء الألوان","Please try a different phrase or check the spelling.":"يُرجى محاولة البحث باستخدام عبارة أخرى أو تدقيق عبارة البحث إملائياً.",Source:"المصدر",Insert:"إدراج",Update:"تحديث",Back:"الرجوع","Insert code block":"إدراج كتلة تعليمات برمجية","Plain text":"نص عادي","Leaving %0 code snippet":"ترك مقتطف الكود %0","Entering %0 code snippet":"إدخال مقتطف الكود %0","Entering code snippet":"إدخال مقتطف الكود","Leaving code snippet":"ترك مقتطف الكود","Code block":"كتلة تعليمات برمجية","Copy selected content":"انسخْ المحتوى المحدد","Paste content":"الصقْ المحتوى","Paste content as plain text":"الصقْ المحتوى كنص عادي","Insert image or file":"إدراج صورة أو ملف","Could not obtain resized image URL.":"تعذر الحصول على عنوان URL الخاص بالصورة التي غُيّرَ حجمُها","Selecting resized image failed":"فشلت عملية تحديد الصورة التي غُيّرَ حجمها","Could not insert image at the current position.":"تعذر إدراج الصورة في الموضع الحالي.","Inserting image failed":"فشلت عملية إدراج الصورة",Bookmark:"إشارة مرجعية","Edit bookmark":"تحرير الإشارة المرجعية","Remove bookmark":"إزالة الإشارة المرجعية","Bookmark name":"اسم الإشارة المرجعية","Enter the bookmark name without spaces.":"أدخل اسم الإشارة المرجعية بدون مسافات.","Bookmark must not be empty.":"لا يجب أن تكون الإشارة المرجعية فارغة.","Bookmark name cannot contain space characters.":"لا يمكن أن يحتوي اسم الإشارة المرجعية على مسافة.","Bookmark name already exists.":"اسم الإشارة المرجعية موجود بالفعل.","bookmark widget":"أداة الإشارة المرجعية","Bookmark toolbar":"شريط أدوات الإشارة المرجعية",Bookmarks:"الإشارات المرجعية","No bookmarks available.":"لا توجد إشارات مرجعية متاحة.","Scroll to bookmark":"مرر إلى الإشارة المرجعية","Open file manager":"فتح مدير الملفات","Cannot determine a category for the uploaded file.":"تعذر تحديد فئة الملف الذي تم رفعه","Cannot access default workspace.":"لا يمكن الوصول إلى مساحة العمل الافتراضية.","You have no image editing permissions.":"ليس لديك أذونات تحرير الصور.","Edit image":"تحرير الصورة","Processing the edited image.":"معالجة الصورة المعدلة.","Server failed to process the image.":"فشل الخادم في معالجة الصورة.","Failed to determine category of edited image.":"فشلت عملية تحديد فئة الصورة التي تم تحريرها.","Block quote":"اقتباس",Bold:"عريض",Italic:"مائل",Underline:"تحته خط",Code:"شفرة برمجية",Strikethrough:"يتوسطه خط",Subscript:"حرف منخفض",Superscript:"حرف مرتفع","Italic text":"نص مائل","Move out of an inline code style":"ابتعدْ عن نمط التعليمات البرمجية المضمّنة","Bold text":"نص غامق","Underline text":"تسطير النص","Strikethrough text":"توسيط الخط في النص","Saving changes":"جاري حفظ التعديلات","Revert autoformatting action":"العودة إلى إجراء التنسيق التلقائي","Align left":"محاذاة لليسار","Align right":"محاذاة لليمين","Align center":"محاذاة في المنتصف",Justify:"ضبط","Text alignment":"محاذاة النص","Text alignment toolbar":"شريط أدوات محاذاة النص"},getPluralForm(o){return o==0?0:o==1?1:o==2?2:o%100>=3&&o%100<=10?3:o%100>=11?4:5}}};/**
378
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
379
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
380
+ */const ZP={zh:{dictionary:{"Words: %0":"字數: %0","Characters: %0":"字元數: %0","Widget toolbar":"小工具","Insert paragraph before block":"在這個區塊前面插入一個段落","Insert paragraph after block":"在這個區塊後面插入一個段落","Press Enter to type after or press Shift + Enter to type before the widget":"按下 Enter 在小工具後輸入,或按下 Shift + Enter 在小工具前輸入","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"小工具選取時可使用的按鍵(例如:圖片、表格等)","Insert a new paragraph directly after a widget":"在小工具後直接插入新段落","Insert a new paragraph directly before a widget":"在小工具前直接插入新段落","Move the caret to allow typing directly before a widget":"移動插入符號,以便在小工具前直接輸入","Move the caret to allow typing directly after a widget":"移動插入符號,以便在小工具後直接輸入","Move focus from an editable area back to the parent widget":"將焦點從可編輯區域移回上層小工具","Upload in progress":"正在上傳",Undo:"取消",Redo:"重做","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」)。","Insert table":"插入表格","Header column":"標題欄","Insert column left":"插入左方欄","Insert column right":"插入右方欄","Delete column":"刪除欄","Select column":"選擇欄",Column:"欄","Header row":"標題列","Insert row below":"插入下方列","Insert row above":"插入上方列","Delete row":"刪除列","Select row":"選擇列",Row:"列","Merge cell up":"合併上方儲存格","Merge cell right":"合併右方儲存格","Merge cell down":"合併下方儲存格","Merge cell left":"合併左方儲存格","Split cell vertically":"垂直分割儲存格","Split cell horizontally":"水平分割儲存格","Merge cells":"合併儲存格","Table toolbar":"表格工具","Table properties":"表格屬性","Cell properties":"儲存格屬性",Border:"邊框",Style:"樣式",Width:"寬度",Height:"高度",Color:"文字顏色",Background:"背景顏色",Padding:"儲存格留白",Dimensions:"尺寸","Table cell text alignment":"儲存格文字對齊",Alignment:"對齊","Horizontal text alignment toolbar":"水平對齊","Vertical text alignment toolbar":"垂直對齊","Table alignment toolbar":"表格對齊",None:"無",Solid:"實線",Dotted:"點線",Dashed:"虛線",Double:"雙線",Groove:"內凹線",Ridge:"凸起線",Inset:"內邊線",Outset:"外框線","Align cell text to the left":"靠左對齊","Align cell text to the center":"置中對齊","Align cell text to the right":"靠右對齊","Justify cell text":"分散對齊","Align cell text to the top":"向上對齊","Align cell text to the middle":"置中對齊","Align cell text to the bottom":"向下對齊","Align table to the left":"靠左對齊","Center table":"置中對齊","Align table to the right":"靠右對齊",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'顏色代碼錯誤。試試看 "#FF0000" 或 "rgb(255, 0, 0)" 或 "red"。','The value is invalid. Try "10px" or "2em" or simply "2".':'尺寸代碼錯誤。試試看 "10px" 或 "2em" 或簡單寫 "2"。',"Enter table caption":"輸入表標題","Keystrokes that can be used in a table cell":"可在表格單元格中使用的按鍵","Move the selection to the next cell":"將選取範圍移動到下一個單元格","Move the selection to the previous cell":"將選取範圍移動到上一個單元格","Insert a new table row (when in the last cell of a table)":"插入新的表格橫排(當位於表格的最後一個單元格時)","Navigate through the table":"在表格中移動",Table:"表格","Insert table layout":"插入表格版面配置","Table layout":"表格版面配置","Layout table":"版面配置表格","Content table":"內容表格","Choose table type":"選擇表格類型","Table type":"表格類型","Table type options":"表格類型選項",Styles:"樣式","Multiple styles":"多重樣式","Block styles":"區塊樣式","Text styles":"文字樣式","Special characters":"特殊字元",Category:"類別",All:"所有",Arrows:"箭頭",Currency:"貨幣",Latin:"拉丁字母",Mathematical:"數學",Text:"文字","leftwards simple arrow":"向左簡單箭號","rightwards simple arrow":"向右簡單箭號","upwards simple arrow":"向上簡單箭號","downwards simple arrow":"向下簡單箭號","leftwards double arrow":"向左雙箭頭","rightwards double arrow":"向右雙箭頭","upwards double arrow":"向上雙箭頭","downwards double arrow":"向下雙箭頭","leftwards dashed arrow":"向左虛線箭頭","rightwards dashed arrow":"向右虛線箭頭","upwards dashed arrow":"向上虛線箭頭","downwards dashed arrow":"向下虛線箭頭","leftwards arrow to bar":"向左停止箭頭","rightwards arrow to bar":"向右停止箭頭","upwards arrow to bar":"向上停止箭頭","downwards arrow to bar":"向下停止箭頭","up down arrow with base":"有底線的上下箭號","back with leftwards arrow above":"Back 上方有向左箭號","end with leftwards arrow above":"End 上方有向左箭號","on with exclamation mark with left right arrow above":"帶驚嘆號的 On 上方有左右雙向箭號","soon with rightwards arrow above":"Soon 上方有向右箭號","top with upwards arrow above":"Top 上方有向上箭號","Dollar sign":"貨幣符號","Euro sign":"歐元符號","Yen sign":"日圓符號","Pound sign":"英鎊符號","Cent sign":"美分符號","Euro-currency sign":"歐元貨幣符號","Colon sign":"冒號","Cruzeiro sign":"克魯薩多符號","French franc sign":"法國法郎符號","Lira sign":"里拉符號","Currency sign":"貨幣符號","Bitcoin sign":"比特幣符號","Mill sign":"密爾符號","Naira sign":"奈及利亞奈拉符號","Peseta sign":"比塞塔符號","Rupee sign":"印度盧比符號","Won sign":"圜符號","New sheqel sign":"新謝克爾符號","Dong sign":"盾符號","Kip sign":"基普符號","Tugrik sign":"圖格里克符號","Drachma sign":"得拉克馬符號","German penny sign":"德國便士符號","Peso sign":"披索符號","Guarani sign":"瓜拉尼符號","Austral sign":"奧斯特拉爾符號","Hryvnia sign":"赫伐尼亞符號","Cedi sign":"塞地符號","Livre tournois sign":"里弗爾法鎊符號","Spesmilo sign":"Spesmilo 貨幣符號","Tenge sign":"勘察加幣符號","Indian rupee sign":"印度盧比符號","Turkish lira sign":"土耳其里拉符號","Nordic mark sign":"日耳曼馬克符號","Manat sign":"馬納特符號","Ruble sign":"盧布符號","Latin capital letter a with macron":"拉丁大寫字母 A 帶長音符號","Latin small letter a with macron":"拉丁小寫字母 a 帶長音符號","Latin capital letter a with breve":"拉丁大寫字母 A 帶短音符號","Latin small letter a with breve":"拉丁小寫字母 a 帶短音符號","Latin capital letter a with ogonek":"拉丁大寫字母 A 帶 Ogonek","Latin small letter a with ogonek":"拉丁小寫字母 a 帶 Ogonek","Latin capital letter c with acute":"拉丁大寫字母 C 帶尖音符號","Latin small letter c with acute":"拉丁小寫字母 c 帶尖音符號","Latin capital letter c with circumflex":"拉丁大寫字母 C 帶抑揚符號","Latin small letter c with circumflex":"拉丁小寫字母 c 帶抑揚符號","Latin capital letter c with dot above":"上有一點的拉丁大寫字母 C","Latin small letter c with dot above":"上有一點的拉丁小寫字母 c","Latin capital letter c with caron":"拉丁大寫字母 C 帶上勾符號","Latin small letter c with caron":"拉丁小寫字母 c 帶上勾符號","Latin capital letter d with caron":"拉丁大寫字母 D 帶上勾符號","Latin small letter d with caron":"拉丁小寫字母 d 帶上勾符號","Latin capital letter d with stroke":"拉丁大寫字母 D 帶粗線符號","Latin small letter d with stroke":"拉丁小寫字母 d 帶粗線符號","Latin capital letter e with macron":"拉丁大寫字母 E 帶長音符號","Latin small letter e with macron":"拉丁小寫字母 e 帶長音符號","Latin capital letter e with breve":"拉丁大寫字母 E 帶短音符號","Latin small letter e with breve":"拉丁小寫字母 e 帶短音符號","Latin capital letter e with dot above":"上有一點的拉丁大寫字母 E","Latin small letter e with dot above":"上有一點的拉丁小寫字母 e","Latin capital letter e with ogonek":"拉丁大寫字母 E 帶 Ogonek","Latin small letter e with ogonek":"拉丁小寫字母 e 帶 Ogonek","Latin capital letter e with caron":"拉丁大寫字母 E 帶上勾符號","Latin small letter e with caron":"拉丁小寫字母 e 帶上勾符號","Latin capital letter g with circumflex":"拉丁大寫字母 G 帶抑揚符號","Latin small letter g with circumflex":"拉丁小寫字母 g 帶抑揚符號","Latin capital letter g with breve":"拉丁大寫字母 G 帶短音符號","Latin small letter g with breve":"拉丁小寫字母 g 帶短音符號","Latin capital letter g with dot above":"上有一點的拉丁大寫字母 G","Latin small letter g with dot above":"上有一點的拉丁小寫字母 g","Latin capital letter g with cedilla":"拉丁大寫字母 G 帶下尾符號","Latin small letter g with cedilla":"拉丁小寫字母 g 帶下尾符號","Latin capital letter h with circumflex":"拉丁大寫字母 H 帶抑揚符號","Latin small letter h with circumflex":"拉丁小寫字母 h 帶抑揚符號","Latin capital letter h with stroke":"拉丁大寫字母 H 帶粗線符號","Latin small letter h with stroke":"拉丁小寫字母 h 帶粗線符號","Latin capital letter i with tilde":"拉丁大寫字母 I 帶波狀符號","Latin small letter i with tilde":"拉丁小寫字母 i 帶波狀符號","Latin capital letter i with macron":"拉丁大寫字母 I 帶長音符號","Latin small letter i with macron":"拉丁小寫字母 i 帶長音符號","Latin capital letter i with breve":"拉丁大寫字母 I 帶短音符號","Latin small letter i with breve":"拉丁小寫字母 i 帶短音符號","Latin capital letter i with ogonek":"拉丁大寫字母 I 帶 Ogonek","Latin small letter i with ogonek":"拉丁小寫字母 i 帶 Ogonek","Latin capital letter i with dot above":"上有一點的拉丁大寫字母 I","Latin small letter dotless i":"拉丁小寫字母無點 I","Latin capital ligature ij":"拉丁大寫連字 IJ","Latin small ligature ij":"拉丁小寫連字 ij","Latin capital letter j with circumflex":"拉丁大寫字母 J 帶抑揚符號","Latin small letter j with circumflex":"拉丁小寫字母 j 帶抑揚符號","Latin capital letter k with cedilla":"拉丁大寫字母 K 帶下尾符號","Latin small letter k with cedilla":"拉丁小寫字母 k 帶下尾符號","Latin small letter kra":"拉丁小寫字母 kra","Latin capital letter l with acute":"拉丁大寫字母 L 帶尖音符號","Latin small letter l with acute":"拉丁小寫字母 l 帶尖音符號","Latin capital letter l with cedilla":"拉丁大寫字母 L 帶下尾符號","Latin small letter l with cedilla":"拉丁小寫字母 l 帶下尾符號","Latin capital letter l with caron":"拉丁大寫字母 L 帶上勾符號","Latin small letter l with caron":"拉丁小寫字母 l 帶上勾符號","Latin capital letter l with middle dot":"中間一點的拉丁大寫字母 L","Latin small letter l with middle dot":"中間一點的拉丁小寫字母 l","Latin capital letter l with stroke":"拉丁大寫字母 L 帶粗線符號","Latin small letter l with stroke":"拉丁小寫字母 l 帶粗線符號","Latin capital letter n with acute":"拉丁大寫字母 N 帶尖音符號","Latin small letter n with acute":"拉丁小寫字母 n 帶尖音符號","Latin capital letter n with cedilla":"拉丁大寫字母 N 帶下尾符號","Latin small letter n with cedilla":"拉丁小寫字母 n 帶下尾符號","Latin capital letter n with caron":"拉丁大寫字母 N 帶上勾符號","Latin small letter n with caron":"拉丁小寫字母 n 帶上勾符號","Latin small letter n preceded by apostrophe":"前有撇號的拉丁小寫字母 n","Latin capital letter eng":"拉丁大寫字母 Eng","Latin small letter eng":"拉丁小寫字母 Eng","Latin capital letter o with macron":"拉丁大寫字母 O 帶長音符號","Latin small letter o with macron":"拉丁小寫字母 o 帶長音符號","Latin capital letter o with breve":"拉丁大寫字母 O 帶短音符號","Latin small letter o with breve":"拉丁小寫字母 o 帶短音符號","Latin capital letter o with double acute":"拉丁大寫字母 O 帶雙尖音符號","Latin small letter o with double acute":"拉丁小寫字母 o 帶雙尖音符號","Latin capital ligature oe":"拉丁大寫連字 OE","Latin small ligature oe":"拉丁小寫連字 oe","Latin capital letter r with acute":"拉丁大寫字母 R 帶尖音符號","Latin small letter r with acute":"拉丁小寫字母 r 帶尖音符號","Latin capital letter r with cedilla":"拉丁大寫字母 R 帶下尾符號","Latin small letter r with cedilla":"拉丁小寫字母 r 帶下尾符號","Latin capital letter r with caron":"拉丁大寫字母 R 帶上勾符號","Latin small letter r with caron":"拉丁小寫字母 r 帶上勾符號","Latin capital letter s with acute":"拉丁大寫字母 S 帶尖音符號","Latin small letter s with acute":"拉丁小寫字母 s 帶尖音符號","Latin capital letter s with circumflex":"拉丁大寫字母 S 帶抑揚符號","Latin small letter s with circumflex":"拉丁小寫字母 s 帶抑揚符號","Latin capital letter s with cedilla":"拉丁大寫字母 S 帶下尾符號","Latin small letter s with cedilla":"拉丁小寫字母 s 帶下尾符號","Latin capital letter s with caron":"拉丁大寫字母 S 帶上勾符號","Latin small letter s with caron":"拉丁小寫字母 s 帶上勾符號","Latin capital letter t with cedilla":"拉丁大寫字母 T 帶下尾符號","Latin small letter t with cedilla":"拉丁小寫字母 t 帶下尾符號","Latin capital letter t with caron":"拉丁大寫字母 T 帶上勾符號","Latin small letter t with caron":"拉丁小寫字母 t 帶上勾符號","Latin capital letter t with stroke":"拉丁大寫字母 T 帶粗線符號","Latin small letter t with stroke":"拉丁小寫字母 t 帶粗線符號","Latin capital letter u with tilde":"拉丁大寫字母 U 帶波狀符號","Latin small letter u with tilde":"拉丁小寫字母 u 帶波狀符號","Latin capital letter u with macron":"拉丁大寫字母 U 帶長音符號","Latin small letter u with macron":"拉丁小寫字母 u 帶長音符號","Latin capital letter u with breve":"拉丁大寫字母 U 帶短音符號","Latin small letter u with breve":"拉丁小寫字母 u 帶短音符號","Latin capital letter u with ring above":"拉丁大寫字母 U 帶上圓圈","Latin small letter u with ring above":"拉丁小寫字母 u 帶上圓圈","Latin capital letter u with double acute":"拉丁大寫字母 U 帶雙尖音符號","Latin small letter u with double acute":"拉丁小寫字母 u 帶雙尖音符號","Latin capital letter u with ogonek":"拉丁大寫字母 U 帶 Ogonek","Latin small letter u with ogonek":"拉丁小寫字母 u 帶 Ogonek","Latin capital letter w with circumflex":"拉丁大寫字母 W 帶抑揚符號","Latin small letter w with circumflex":"拉丁小寫字母 w 帶抑揚符號","Latin capital letter y with circumflex":"拉丁大寫字母 Y 帶抑揚符號","Latin small letter y with circumflex":"拉丁小寫字母 y 帶抑揚符號","Latin capital letter y with diaeresis":"拉丁大寫字母 Y 帶分音符號","Latin capital letter z with acute":"拉丁大寫字母 Z 帶尖音符號","Latin small letter z with acute":"拉丁小寫字母 z 帶尖音符號","Latin capital letter z with dot above":"上有一點的拉丁大寫字母 Z","Latin small letter z with dot above":"上有一點的拉丁小寫字母 z","Latin capital letter z with caron":"拉丁大寫字母 Z 帶上勾符號","Latin small letter z with caron":"拉丁小寫字母 z 帶上勾符號","Latin small letter long s":"拉丁小寫字母長 s","Less-than sign":"小於符號","Greater-than sign":"大於符號","Less-than or equal to":"小於或等於","Greater-than or equal to":"大於或等於","En dash":"短破折號","Em dash":"長破折號",Macron:"長音符號",Overline:"頂線","Degree sign":"度符號","Minus sign":"減號","Plus-minus sign":"加減符號","Division sign":"除號","Fraction slash":"分數斜線","Multiplication sign":"乘號","Latin small letter f with hook":"帶鉤的拉丁小寫字母 f",Integral:"積分","N-ary summation":"N 元總合",Infinity:"無限","Square root":"平方根","Tilde operator":"波狀符號運算子","Approximately equal to":"約等於","Almost equal to":"幾乎等於","Not equal to":"不等於","Identical to":"恆等於","Element of":"屬於","Not an element of":"不屬於","Contains as member":"包含","N-ary product":"N 元乘積","Logical and":"邏輯 And","Logical or":"邏輯 Or","Not sign":"Not 符號",Intersection:"交集",Union:"聯集","Partial differential":"偏微分","For all":"對於所有","There exists":"存在","Empty set":"空集合",Nabla:"倒三角算子","Asterisk operator":"星號運算子","Proportional to":"正比於",Angle:"角度","Vulgar fraction one quarter":"普通分數四分之一","Vulgar fraction one half":"普通分數二分之一","Vulgar fraction three quarters":"普通分數四分之三","Single left-pointing angle quotation mark":"單左尖角括號","Single right-pointing angle quotation mark":"單右尖角括號","Left-pointing double angle quotation mark":"左尖雙角括號","Right-pointing double angle quotation mark":"右尖雙角括號","Left single quotation mark":"左單引號","Right single quotation mark":"右單引號","Left double quotation mark":"左雙引號","Right double quotation mark":"右雙引號","Single low-9 quotation mark":"單下 9 形引號","Double low-9 quotation mark":"雙下 9 形引號","Inverted exclamation mark":"倒驚嘆號","Inverted question mark":"倒問號","Two dot leader":"兩點前置字元","Horizontal ellipsis":"水平省略符號","Double dagger":"雙劍註釋符號","Per mille sign":"千分號","Per ten thousand sign":"萬分號","Double exclamation mark":"雙驚嘆號","Question exclamation mark":"疑問驚嘆號","Exclamation question mark":"驚嘆疑問號","Double question mark":"雙問號","Copyright sign":"版權符號","Registered sign":"註冊商標符號","Trade mark sign":"商標符號","Section sign":"章節符號","Paragraph sign":"段落符號","Reversed paragraph sign":"反段落符號","Show source":"顯示來源","Show blocks":"顯示區塊","Select all":"選取全部","Disable editing":"停用編輯","Enable editing":"啟用編輯","Previous editable region":"上一個可編輯區域","Next editable region":"下一個可編輯區域","Navigate editable regions":"編輯區域導航","Remove Format":"移除格式","Page break":"換頁","media widget":"影音小工具","Media URL":"影音網址","Paste the media URL in the input.":"在輸入框貼上影音網址。","Tip: Paste the URL into the content to embed faster.":"提示:在內容貼上網址更快崁入。","The URL must not be empty.":"網址不能空白。","This media URL is not supported.":"不支援此影音網址。","Insert media":"插入影音",Media:"媒體","Media toolbar":"影音工具","Open media in new tab":"在新分頁打開媒體","Media embed":"媒體嵌入","Numbered List":"有序清單","Bulleted List":"符號清單","To-do List":"代辦清單","Bulleted list styles toolbar":"無序清單工具列","Numbered list styles toolbar":"有序清單工具列","Toggle the disc list style":"切換為實心圓點標示","Toggle the circle list style":"切換為空心圓點標示","Toggle the square list style":"切換為方形標示","Toggle the decimal list style":"切換為數字標示","Toggle the decimal with leading zero list style":"切換為0開頭的數字標示","Toggle the lower–roman list style":"切換為小寫羅馬數字標示","Toggle the upper–roman list style":"切換為大寫羅馬數字標示","Toggle the lower–latin list style":"切換為小寫拉丁文字標示","Toggle the upper–latin list style":"切換為大寫拉丁文字標示",Disc:"實心圓點",Circle:"空心圓點",Square:"方形",Decimal:"數字","Decimal with leading zero":"0開頭的數字","Lower–roman":"小寫羅馬數字","Upper-roman":"大寫羅馬數字","Lower-latin":"小寫拉丁字母","Upper-latin":"大寫拉丁字母","List properties":"清單屬性","Start at":"起始於","Invalid start index value.":"無效的起始索引值。","Start index must be greater than 0.":"起始索引須大於 0。","Reversed order":"反轉順序","Keystrokes that can be used in a list":"可在列表中使用的按鍵","Increase list item indent":"增加列表項目縮排","Decrease list item indent":"減少列表項目縮排","Entering a to-do list":"進入待辦事項清單","Leaving a to-do list":"離開待辦事項清單",Unlink:"移除連結",Link:"連結","Link URL":"連結˙ URL","Link URL must not be empty.":"連結 URL 不得為空白。","Link image":"圖片連結","Edit link":"編輯連結","Open link in new tab":"在新視窗開啟連結","Open in a new tab":"在新視窗開啟",Downloadable:"可下載","Create link":"建立連結","Move out of a link":"移出連結","Link properties":"連結屬性","Displayed text":"顯示的文字","No links available":"無可用連結",Language:"語言","Choose language":"選擇語言","Remove language":"移除語言","Increase indent":"增加縮排","Decrease indent":"減少縮排","image widget":"圖片小工具","Wrap text":"文繞圖","Break text":"上及下","In line":"行中","Side image":"側邊圖片","Full size image":"完整尺寸圖片","Left aligned image":"向左對齊圖片","Centered image":"置中圖片","Right aligned image":"向右對齊圖片","Change image text alternative":"修改圖片的替代文字","Text alternative":"替代文字","Enter image caption":"輸入圖片說明","Insert image":"插入圖片","Replace image":"替換圖片","Upload from computer":"從電腦上傳","Replace from computer":"從電腦替換","Upload image from computer":"從電腦上傳圖片","Image from computer":"來自電腦的圖片","From computer":"從電腦","Replace image from computer":"從電腦替換圖片","Upload failed":"上傳失敗","You have no image upload permissions.":"您沒有圖片上傳權限。","Image toolbar":"圖片工具","Resize image":"縮放圖片","Resize image to %0":"縮放圖片到 %0","Resize image to the original size":"縮放圖片到原始尺寸","Resize image (in %0)":"調整圖片大小(單位為 %0)",Original:"原始圖片","Custom image size":"自訂圖片大小",Custom:"自訂","Image resize list":"圖片縮放清單","Insert image via URL":"使用連結插入圖片","Insert via URL":"透過網址插入","Image via URL":"透過網址插入圖片","Via URL":"透過網址","Update image URL":"更新圖片連結","Caption for the image":"影像的標題","Caption for image: %0":"影像標題:%0","The value must not be empty.":"數值不得為空白。","The value should be a plain number.":"數值應為純數字。","Uploading image":"正在上傳圖片","Image upload complete":"圖片上傳完成","Error during image upload":"圖片上傳期間發生錯誤",Image:"圖片","Image Resize":"圖片調整大小","Text Alternative":"文字替代","HTML object":"HTML 物件","Insert HTML":"輸入HTML","HTML snippet":"HTML標籤","Paste raw HTML here...":"在此貼上純HTML","Edit source":"編輯HTML","Save changes":"儲存變更","No preview available":"無法顯示預覽","Empty snippet content":"HTML標籤中無內容","Horizontal line":"水平線","Yellow marker":"黃色標記","Green marker":"綠色標記","Pink marker":"粉色標記","Blue marker":"藍色標記","Red pen":"紅色筆","Green pen":"綠色筆","Remove highlight":"清除高亮",Highlight:"高亮","Text highlight toolbar":"高亮",Heading:"標題","Choose heading":"選取標題","Heading 1":"標題 1","Heading 2":"標題 2","Heading 3":"標題 3","Heading 4":"標題 4","Heading 5":"標題 5","Heading 6":"標題 6","Type your title":"輸入你的標題","Type or paste your content here.":"在此輸入或貼上你的內容。","Enter fullscreen mode":"進入全螢幕模式","Leave fullscreen mode":"退出全螢幕模式","Fullscreen mode":"全螢幕模式","Toggle fullscreen mode":"切換全螢幕模式","Document outline":"文件大綱","Connected users":"已連線使用者","Font Size":"字體大小",Tiny:"特小",Small:"小",Big:"大",Huge:"特大","Font Family":"字型",Default:"預設","Font Color":"字體顏色","Font Background Color":"前景顏色","Document colors":"文件顏色","Find and replace":"尋找和取代","Find in text…":"在文本中尋找",Find:"尋找","Previous result":"前一個結果","Next result":"後一個結果",Replace:"取代","Replace all":"全部取代","Match case":"大小寫需相符","Whole words only":"僅全字拼寫","Replace with…":"以…替代","Text to find must not be empty.":"不能查找空字串","Tip: Find some text first in order to replace it.":"提示:先查找字串再取代","Advanced options":"進階選項","Find in the document":"在文件中尋找","Insert a soft break (a <code>&lt;br&gt;</code> element)":"插入非強制斷行(<code>&lt;br&gt;</code> 元件)","Insert a hard break (a new paragraph)":"插入強制斷行(新段落)",Emoji:"表情符號","Show all emoji...":"顯示所有表情符號…","Find an emoji (min. 2 characters)":"尋找表情符號(最少 2 個字元)",'No emojis were found matching "%0".':"找不到與「%0」相符的表情符號。","Keep on typing to see the emoji.":"繼續輸入以查看表情符號。","The query must contain at least two characters.":"查詢條件至少須包含兩個字元。","Smileys & Expressions":"笑臉與表情","Gestures & People":"手勢與人物","Animals & Nature":"動物與自然","Food & Drinks":"飲食","Travel & Places":"旅遊與景點",Activities:"活動",Objects:"物件",Symbols:"符號",Flags:"旗幟","Select skin tone":"選取膚色","Default skin tone":"預設膚色","Light skin tone":"淺調膚色","Medium Light skin tone":"中淺調膚色","Medium skin tone":"中調膚色","Medium Dark skin tone":"中深調膚色","Dark skin tone":"深調膚色","Emoji picker":"表情符號選擇器",Cancel:"取消",Clear:"清除","Remove color":"移除顏色","Restore default":"重設至預設值",Save:"儲存","Show more items":"顯示更多","%0 of %1":"%0/%1","Cannot upload file:":"無法上傳檔案:","Rich Text Editor. Editing area: %0":"RTF 編輯器。編輯區:%0","Insert with file manager":"使用檔案管理員插入","Replace with file manager":"使用檔案管理員替換","Insert image with file manager":"使用檔案管理員插入圖片","Replace image with file manager":"使用檔案管理員替換圖片",File:"檔案","With file manager":"使用檔案管理員","Toggle caption off":"關閉表標題","Toggle caption on":"開啟表標題","Content editing keystrokes":"內容編輯按鍵","These keyboard shortcuts allow for quick access to content editing features.":"運用這些鍵盤快捷鍵可快速使用內容編輯功能。","User interface and content navigation keystrokes":"使用者介面和內容瀏覽按鍵","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"使用以下按鍵可更有效率地在 CKEditor 5 使用者介面中移動。","Close contextual balloons, dropdowns, and dialogs":"關閉選單提示、下拉式選單和對話框","Open the accessibility help dialog":"開啟無障礙協助對話框","Move focus between form fields (inputs, buttons, etc.)":"在表單欄位(輸入、按鈕等)之間移動焦點","Move focus to the menu bar, navigate between menu bars":"將焦點移至選單列,瀏覽不同的選單列","Move focus to the toolbar, navigate between toolbars":"將焦點移動至工具列,在工具列間移動","Navigate through the toolbar or menu bar":"瀏覽工具列或選單列","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"執行目前所聚焦的按鈕。執行與編輯器內容互動的按鈕後,系統會將焦點移回內容。",Accept:"接受",Paragraph:"段落","Color picker":"顏色選擇","Please try a different phrase or check the spelling.":"請嘗試其他詞彙或確認拼寫是否正確。",Source:"原始碼",Insert:"插入",Update:"更新",Back:"返回","Insert code block":"插入程式碼區塊","Plain text":"純文字","Leaving %0 code snippet":"離開 %0 程式碼片段","Entering %0 code snippet":"進入 %0 程式碼片段","Entering code snippet":"進入程式碼片段","Leaving code snippet":"離開程式碼片段","Code block":"程式碼區塊","Copy selected content":"複製所選內容","Paste content":"貼上內容","Paste content as plain text":"將內容貼上為純文字","Insert image or file":"插入圖片或檔案","Could not obtain resized image URL.":"無法取得重設大小的圖片URL","Selecting resized image failed":"選擇重設大小的圖片失敗","Could not insert image at the current position.":"無法在這位置插入圖片","Inserting image failed":"插入圖片失敗",Bookmark:"書籤","Edit bookmark":"編輯書籤","Remove bookmark":"移除書籤","Bookmark name":"書籤名稱","Enter the bookmark name without spaces.":"輸入書籤名稱,請勿包含空格。","Bookmark must not be empty.":"書籤名稱不得為空。","Bookmark name cannot contain space characters.":"書籤名稱不可包含空格字元。","Bookmark name already exists.":"書籤名稱已存在。","bookmark widget":"書籤小工具","Bookmark toolbar":"書籤工具列",Bookmarks:"書籤","No bookmarks available.":"無可用書籤。","Scroll to bookmark":"捲動至書籤","Open file manager":"開啟檔案管理程式","Cannot determine a category for the uploaded file.":"無法確定上傳檔案的分類。","Cannot access default workspace.":"無法存取預設工作區。","You have no image editing permissions.":"您沒有圖片編輯權限。","Edit image":"編輯圖片","Processing the edited image.":"正在處理已編輯的圖片。","Server failed to process the image.":"伺服器無法處理該圖片。","Failed to determine category of edited image.":"無法判斷已編輯圖片的類別。","Block quote":"段落引用",Bold:"粗體",Italic:"斜體",Underline:"底線",Code:"代碼",Strikethrough:"刪除線",Subscript:"下標",Superscript:"上標","Italic text":"斜體文字","Move out of an inline code style":"移出行內程式碼樣式","Bold text":"粗體文字","Underline text":"底線文字","Strikethrough text":"刪除線文字","Saving changes":"正在儲存變更","Revert autoformatting action":"復原自動格式化操作","Align left":"靠左對齊","Align right":"靠右對齊","Align center":"置中對齊",Justify:"左右對齊","Text alignment":"文字對齊","Text alignment toolbar":"文字對齊"},getPluralForm(o){return 0}}};/**
381
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
382
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
383
+ */const JP={de:{dictionary:{"Words: %0":"Wörter: %0 ","Characters: %0":"Zeichen: %0 ","Widget toolbar":"Widget Werkzeugleiste","Insert paragraph before block":"Absatz vor Block einfügen","Insert paragraph after block":"Absatz nach Block einfügen","Press Enter to type after or press Shift + Enter to type before the widget":"Drücken Sie die Eingabetaste, um nach dem Widget zu tippen oder Shift + Eingabetaste, um vor dem Widget zu tippen.","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Tastatureingaben, die verwendet werden können, wenn ein Widget ausgewählt wurde (zum Beispiel: Bilder, Tabellen etc.)","Insert a new paragraph directly after a widget":"Einen neuen Abschnitt direkt nach einem Widget einfügen","Insert a new paragraph directly before a widget":"Einen neuen Abschnitt direkt vor einem Widget einfügen","Move the caret to allow typing directly before a widget":"Verschieben Sie den Textcursor, um die Eingabe direkt nach dem Widget zu erlauben","Move the caret to allow typing directly after a widget":"Verschieben Sie den Textcursor, um die direkte Eingabe nach dem Widget zu erlauben","Move focus from an editable area back to the parent widget":"Bewegen Sie den Fokus von einem bearbeitbaren Bereich zurück zum übergeordneten Widget","Upload in progress":"Upload läuft",Undo:"Rückgängig",Redo:"Wiederherstellen","Rich Text Editor":"Rich Text Editor","Edit block":"Absatz bearbeiten","Click to edit block":"Zum Bearbeiten des Blocks klicken","Drag to move":"Zum Verschieben ziehen",Next:"Nächste",Previous:"vorherige","Editor toolbar":"Editor Werkzeugleiste","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Dropdown menu":"Dropdown-Menü",Black:"Schwarz","Dim grey":"Dunkelgrau",Grey:"Grau","Light grey":"Hellgrau",White:"Weiß",Red:"Rot",Orange:"Orange",Yellow:"Gelb","Light green":"Hellgrün",Green:"Grün",Aquamarine:"Aquamarinblau",Turquoise:"Türkis","Light blue":"Hellblau",Blue:"Blau",Purple:"Violett","Editor block content toolbar":"Editor Blockinhalt-Toolbar","Editor contextual toolbar":"Editor kontextuelle Toolbar",HEX:"HEX","No results found":"Keine Ergebnisse gefunden","No searchable items":"Keine durchsuchbaren Elemente","Editor dialog":"Editor-Dialog",Close:"Schließen","Help Contents. To close this dialog press ESC.":"Hilfe zum Inhalt. Drücken Sie die Esc-Taste, um dieses Dialogfenster zu schließen.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Unten finden Sie eine Liste mit Tastenkombinationen, die im Editor benutzt werden können.","(may require <kbd>Fn</kbd>)":"(erfordert gegebenenfalls <kbd>Fn</kbd>)",Accessibility:"Bedienungshilfen","Accessibility help":"Hilfe zur Eingabe","Press %0 for help.":"Drücken Sie %0 für Hilfe.","Move focus in and out of an active dialog window":"Fokus auf ein aktives Dialogfenster richten oder aufheben",MENU_BAR_MENU_FILE:"Datei",MENU_BAR_MENU_EDIT:"Bearbeiten",MENU_BAR_MENU_VIEW:"Anzeigen",MENU_BAR_MENU_INSERT:"Einfügen",MENU_BAR_MENU_FORMAT:"Format",MENU_BAR_MENU_TOOLS:"Werkzeuge",MENU_BAR_MENU_HELP:"Hilfe",MENU_BAR_MENU_TEXT:"Text",MENU_BAR_MENU_FONT:"Schriftart","Editor menu bar":"Menüleiste des Editors",'Please enter a valid color (e.g. "ff0000").':"Bitte geben Sie eine gültige Farbe ein (z. B. „ff0000“).","Insert table":"Tabelle einfügen","Header column":"Kopfspalte","Insert column left":"Spalte links einfügen","Insert column right":"Spalte rechts einfügen","Delete column":"Spalte löschen","Select column":"Spalte auswählen",Column:"Spalte","Header row":"Kopfzeile","Insert row below":"Zeile unten einfügen","Insert row above":"Zeile oben einfügen","Delete row":"Zeile löschen","Select row":"Zeile auswählen",Row:"Zeile","Merge cell up":"Zelle verbinden","Merge cell right":"Zelle rechts verbinden","Merge cell down":"Zelle unten verbinden","Merge cell left":"Zelle links verbinden","Split cell vertically":"Zelle vertikal teilen","Split cell horizontally":"Zelle horizontal teilen","Merge cells":"Zellen verbinden","Table toolbar":"Tabelle Werkzeugleiste","Table properties":"Tabelleneigenschaften","Cell properties":"Zelleneigenschaften",Border:"Rahmen",Style:"Rahmenart",Width:"Breite",Height:"Höhe",Color:"Farbe",Background:"Hintergrund",Padding:"Innenabstand",Dimensions:"Größe","Table cell text alignment":"Ausrichtung des Zellentextes",Alignment:"Ausrichtung","Horizontal text alignment toolbar":"Werkzeugleiste für die horizontale Zellentext-Ausrichtung","Vertical text alignment toolbar":"Werkzeugleiste für die vertikale Zellentext-Ausrichtung","Table alignment toolbar":"Werkzeugleiste für die Tabellen-Ausrichtung",None:"Kein Rahmen",Solid:"Durchgezogen",Dotted:"Gepunktet",Dashed:"Gestrichelt",Double:"Doppelt",Groove:"Eingeritzt",Ridge:"Hervorgehoben",Inset:"Eingelassen",Outset:"Geprägt","Align cell text to the left":"Zellentext linksbündig ausrichten","Align cell text to the center":"Zellentext zentriert ausrichten","Align cell text to the right":"Zellentext rechtsbündig ausrichten","Justify cell text":"Zellentext als Blocksatz ausrichten","Align cell text to the top":"Zellentext oben ausrichten","Align cell text to the middle":"Zellentext mittig ausrichten","Align cell text to the bottom":"Zellentext unten ausrichten","Align table to the left":"Tabelle links ausrichten","Center table":"Tabelle zentrieren","Align table to the right":"Tabelle rechts ausrichten",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"Die Farbe ist ungültig. Probieren Sie „#FF0000“ oder „rgb(255,0,0)“ oder „red“.",'The value is invalid. Try "10px" or "2em" or simply "2".':"Der Wert ist ungültig. Probieren Sie „10px“ oder „2em“ oder „2“.","Enter table caption":"Tabellenüberschrift eingeben","Keystrokes that can be used in a table cell":"Tastatureingaben, die in einer Tabelle benutz werden können.","Move the selection to the next cell":"Auswahl in die nächste Zelle verschieben","Move the selection to the previous cell":"Auswahl in die vorherige Zelle verschieben","Insert a new table row (when in the last cell of a table)":"Eine neue Tabellenspalte einfügen (wenn in der letzten Tabellenzelle)","Navigate through the table":"Tabellennavigation",Table:"Tabelle","Insert table layout":"Tabellenlayout einfügen","Table layout":"Tabellenlayout","Layout table":"Layouttabelle","Content table":"Inhaltstabelle","Choose table type":"Tabellentyp auswählen","Table type":"Tabellentyp","Table type options":"Tabellentyp-Optionen",Styles:"Stile","Multiple styles":"Mehrere Stile","Block styles":"Block-Stile","Text styles":"Text-Stile","Special characters":"Sonderzeichen",Category:"Kategorie",All:"Alle",Arrows:"Pfeile",Currency:"Währung",Latin:"Lateinisch",Mathematical:"Mathematisch",Text:"Text","leftwards simple arrow":"einfacher Linkspfeil","rightwards simple arrow":"einfacher Rechtspfeil","upwards simple arrow":"einfacher Aufwärtspfeil","downwards simple arrow":"einfacher Abwärtspfeil","leftwards double arrow":"Doppelpfeil nach links","rightwards double arrow":"Doppelpfeil nach rechts","upwards double arrow":"Doppelpfeil nach oben","downwards double arrow":"Doppelpfeil nach unten","leftwards dashed arrow":"Gestrichelter Pfeil nach links","rightwards dashed arrow":"Gestrichelter Pfeil nach rechts","upwards dashed arrow":"Gestrichelter Pfeil nach oben","downwards dashed arrow":"Gestrichelter Pfeil nach unten","leftwards arrow to bar":"Pfeil nach links zum Querstrich","rightwards arrow to bar":"Pfeil nach rechts zum Querstrich","upwards arrow to bar":"Pfeil nach oben zum Querstrich","downwards arrow to bar":"Pfeil nach unten zum Querstrich","up down arrow with base":"Unterstrichener Pfeil nach oben und unten","back with leftwards arrow above":"„Back“ darüber Pfeil nach links","end with leftwards arrow above":"„End“ darüber Pfeil nach links","on with exclamation mark with left right arrow above":"„On“ mit Ausrufezeichen darüber Pfeil nach links und rechts","soon with rightwards arrow above":"„Soon“ darüber Pfeil nach rechts","top with upwards arrow above":"„Top“ darüber Pfeil nach oben","Dollar sign":"Dollar-Zeichen","Euro sign":"Euro-Zeichen","Yen sign":"Yen-Zeichen","Pound sign":"Pfund-Zeichen","Cent sign":"Cent-Zeichen","Euro-currency sign":"Euro-Währungszeichen","Colon sign":"Colón-Zeichen","Cruzeiro sign":"Cruzeiro-Zeichen","French franc sign":"Französischer Franc-Zeichen","Lira sign":"Lira-Zeichen","Currency sign":"Währungssymbol","Bitcoin sign":"Bitcoin-Zeichen","Mill sign":"Mill-Zeichen","Naira sign":"Naira-Zeichen","Peseta sign":"Peseta-Zeichen","Rupee sign":"Rupie-Zeichen","Won sign":"Won-Zeichen","New sheqel sign":"Schekel-Zeichen","Dong sign":"Đồng-Zeichen","Kip sign":"Kip-Zeichen","Tugrik sign":"Tugrik-Zeichen","Drachma sign":"Drachme-Zeichen","German penny sign":"Pfennig-Zeichen","Peso sign":"Philippinischer Peso-Zeichen","Guarani sign":"Guaraní-Zeichen","Austral sign":"Austral-Zeichen","Hryvnia sign":"Hrywnja-Zeichen","Cedi sign":"Cedi-Zeichen","Livre tournois sign":"Livre tournois-Zeichen","Spesmilo sign":"Spesmilo-Zeichen","Tenge sign":"Tenge-Zeichen","Indian rupee sign":"Indische Rupie-Zeichen","Turkish lira sign":"Türkische Lira-Zeichen","Nordic mark sign":"Nordische Mark-Zeichen","Manat sign":"Manat-Zeichen","Ruble sign":"Rubel-Zeichen","Latin capital letter a with macron":"Lateinischer Großbuchstabe a mit Makron","Latin small letter a with macron":"Lateinischer Kleinbuchstabe a mit Makron","Latin capital letter a with breve":"Lateinischer Großbuchstabe a mit Breve","Latin small letter a with breve":"Lateinischer Kleinbuchstabe a mit Breve","Latin capital letter a with ogonek":"Lateinischer Großbuchstabe a mit Ogonek","Latin small letter a with ogonek":"Lateinischer Kleinbuchstabe a mit Ogonek","Latin capital letter c with acute":"Lateinischer Großbuchstabe c mit Akut","Latin small letter c with acute":"Lateinischer Kleinbuchstabe c mit Akut","Latin capital letter c with circumflex":"Lateinischer Großbuchstabe c mit Zirkumflex","Latin small letter c with circumflex":"Lateinischer Kleinbuchstabe c mit Zirkumflex","Latin capital letter c with dot above":"Lateinischer Großbuchstabe c mit Punkt darüber","Latin small letter c with dot above":"Lateinischer Kleinbuchstabe c mit Punkt darüber","Latin capital letter c with caron":"Lateinischer Großbuchstabe c mit Hatschek","Latin small letter c with caron":"Lateinischer Kleinbuchstabe c mit Hatschek","Latin capital letter d with caron":"Lateinischer Großbuchstabe d mit Hatschek","Latin small letter d with caron":"Lateinischer Kleinbuchstabe d mit Hatschek","Latin capital letter d with stroke":"Lateinischer Großbuchstabe d mit Querstrich","Latin small letter d with stroke":"Lateinischer Kleinbuchstabe d mit Querstrich","Latin capital letter e with macron":"Lateinischer Großbuchstabe e mit Makron","Latin small letter e with macron":"Lateinischer Kleinbuchstabe e mit Makron","Latin capital letter e with breve":"Lateinischer Großbuchstabe e mit Breve","Latin small letter e with breve":"Lateinischer Kleinbuchstabe e mit Breve","Latin capital letter e with dot above":"Lateinischer Großbuchstabe e mit Punkt darüber","Latin small letter e with dot above":"Lateinischer Kleinbuchstabe e mit Punkt darüber","Latin capital letter e with ogonek":"Lateinischer Großbuchstabe e mit Ogonek","Latin small letter e with ogonek":"Lateinischer Kleinbuchstabe e mit Ogonek","Latin capital letter e with caron":"Lateinischer Großbuchstabe e mit Hatschek","Latin small letter e with caron":"Lateinischer Kleinbuchstabe e mit Hatschek","Latin capital letter g with circumflex":"Lateinischer Großbuchstabe g mit Zirkumflex","Latin small letter g with circumflex":"Lateinischer Kleinbuchstabe g mit Zirkumflex","Latin capital letter g with breve":"Lateinischer Großbuchstabe g mit Breve","Latin small letter g with breve":"Lateinischer Kleinbuchstabe g mit Breve","Latin capital letter g with dot above":"Lateinischer Großbuchstabe g mit Punkt darüber","Latin small letter g with dot above":"Lateinischer Kleinbuchstabe g mit Punkt darüber","Latin capital letter g with cedilla":"Lateinischer Großbuchstabe g mit Cedille","Latin small letter g with cedilla":"Lateinischer Kleinbuchstabe g mit Cedille","Latin capital letter h with circumflex":"Lateinischer Großbuchstabe h mit Zirkumflex","Latin small letter h with circumflex":"Lateinischer Kleinbuchstabe h mit Zirkumflex","Latin capital letter h with stroke":"Lateinischer Großbuchstabe h mit Querstrich","Latin small letter h with stroke":"Lateinischer Kleinbuchstabe h mit Querstrich","Latin capital letter i with tilde":"Lateinischer Großbuchstabe i mit Tilde","Latin small letter i with tilde":"Lateinischer Kleinbuchstabe i mit Tilde","Latin capital letter i with macron":"Lateinischer Großbuchstabe i mit Makron","Latin small letter i with macron":"Lateinischer Kleinbuchstabe i mit Makron","Latin capital letter i with breve":"Lateinischer Großbuchstabe i mit Breve","Latin small letter i with breve":"Lateinischer Kleinbuchstabe i mit Breve","Latin capital letter i with ogonek":"Lateinischer Großbuchstabe i mit Ogonek","Latin small letter i with ogonek":"Lateinischer Kleinbuchstabe i mit Ogonek","Latin capital letter i with dot above":"Lateinischer Großbuchstabe i mit Punkt darüber","Latin small letter dotless i":"Lateinischer Kleinbuchstabe i ohne Punkt","Latin capital ligature ij":"Große lateinische Ligatur ij","Latin small ligature ij":"Kleine lateinische Ligatur ij","Latin capital letter j with circumflex":"Lateinischer Großbuchstabe j mit Zirkumflex","Latin small letter j with circumflex":"Lateinischer Kleinbuchstabe j mit Zirkumflex","Latin capital letter k with cedilla":"Lateinischer Großbuchstabe k mit Cedille","Latin small letter k with cedilla":"Lateinischer Kleinbuchstabe k mit Cedille","Latin small letter kra":"Lateinischer Kleinbuchstabe Kra","Latin capital letter l with acute":"Lateinischer Großbuchstabe l mit Akut","Latin small letter l with acute":"Lateinischer Kleinbuchstabe l mit Akut","Latin capital letter l with cedilla":"Lateinischer Großbuchstabe l mit Cedille","Latin small letter l with cedilla":"Lateinischer Kleinbuchstabe l mit Cedille","Latin capital letter l with caron":"Lateinischer Großbuchstabe l mit Hatschek","Latin small letter l with caron":"Lateinischer Kleinbuchstabe l mit Hatschek","Latin capital letter l with middle dot":"Lateinischer Großbuchstabe l mit Mittelpunkt","Latin small letter l with middle dot":"Lateinischer Kleinbuchstabe l mit Mittelpunkt","Latin capital letter l with stroke":"Lateinischer Großbuchstabe l mit Querstrich","Latin small letter l with stroke":"Lateinischer Kleinbuchstabe l mit Querstrich","Latin capital letter n with acute":"Lateinischer Großbuchstabe n mit Akut","Latin small letter n with acute":"Lateinischer Kleinbuchstabe n mit Akut","Latin capital letter n with cedilla":"Lateinischer Großbuchstabe n mit Cedille","Latin small letter n with cedilla":"Lateinischer Kleinbuchstabe n mit Cedille","Latin capital letter n with caron":"Lateinischer Großbuchstabe n mit Hatschek","Latin small letter n with caron":"Lateinischer Kleinbuchstabe n mit Hatschek","Latin small letter n preceded by apostrophe":"Lateinischer Kleinbuchstabe n mit vorangestelltem Apostroph","Latin capital letter eng":"Lateinischer Großbuchstabe Eng","Latin small letter eng":"Lateinischer Kleinbuchstabe Eng","Latin capital letter o with macron":"Lateinischer Großbuchstabe o mit Makron","Latin small letter o with macron":"Lateinischer Kleinbuchstabe o mit Makron","Latin capital letter o with breve":"Lateinischer Großbuchstabe o mit Breve","Latin small letter o with breve":"Lateinischer Kleinbuchstabe o mit Breve","Latin capital letter o with double acute":"Lateinischer Großbuchstabe o mit doppeltem Akut","Latin small letter o with double acute":"Lateinischer Kleinbuchstabe o mit doppeltem Akut","Latin capital ligature oe":"Große lateinische Ligatur oe","Latin small ligature oe":"Kleine lateinische Ligatur oe","Latin capital letter r with acute":"Lateinischer Großbuchstabe r mit Akut","Latin small letter r with acute":"Lateinischer Kleinbuchstabe r mit Akut","Latin capital letter r with cedilla":"Lateinischer Großbuchstabe r mit Cedille","Latin small letter r with cedilla":"Lateinischer Kleinbuchstabe r mit Cedille","Latin capital letter r with caron":"Lateinischer Großbuchstabe r mit Hatschek","Latin small letter r with caron":"Lateinischer Kleinbuchstabe r mit Hatschek","Latin capital letter s with acute":"Lateinischer Großbuchstabe s mit Akut","Latin small letter s with acute":"Lateinischer Kleinbuchstabe s mit Akut","Latin capital letter s with circumflex":"Lateinischer Großbuchstabe s mit Zirkumflex","Latin small letter s with circumflex":"Lateinischer Kleinbuchstabe s mit Zirkumflex","Latin capital letter s with cedilla":"Lateinischer Großbuchstabe s mit Cedille","Latin small letter s with cedilla":"Lateinischer Kleinbuchstabe s mit Cedille","Latin capital letter s with caron":"Lateinischer Großbuchstabe s mit Hatschek","Latin small letter s with caron":"Lateinischer Kleinbuchstabe s mit Hatschek","Latin capital letter t with cedilla":"Lateinischer Großbuchstabe t mit Cedille","Latin small letter t with cedilla":"Lateinischer Kleinbuchstabe t mit Cedille","Latin capital letter t with caron":"Lateinischer Großbuchstabe t mit Hatschek","Latin small letter t with caron":"Lateinischer Kleinbuchstabe t mit Hatschek","Latin capital letter t with stroke":"Lateinischer Großbuchstabe t mit Querstrich","Latin small letter t with stroke":"Lateinischer Kleinbuchstabe t mit Querstrich","Latin capital letter u with tilde":"Lateinischer Großbuchstabe u mit Tilde","Latin small letter u with tilde":"Lateinischer Kleinbuchstabe u mit Tilde","Latin capital letter u with macron":"Lateinischer Großbuchstabe u mit Makron","Latin small letter u with macron":"Lateinischer Kleinbuchstabe u mit Makron","Latin capital letter u with breve":"Lateinischer Großbuchstabe u mit Breve","Latin small letter u with breve":"Lateinischer Kleinbuchstabe u mit Breve","Latin capital letter u with ring above":"Lateinischer Großbuchstabe u mit Kroužek darüber","Latin small letter u with ring above":"Lateinischer Kleinbuchstabe u mit Kroužek darüber","Latin capital letter u with double acute":"Lateinischer Großbuchstabe u mit doppeltem Akut","Latin small letter u with double acute":"Lateinischer Kleinbuchstabe u mit doppeltem Akut","Latin capital letter u with ogonek":"Lateinischer Großbuchstabe u mit Ogonek","Latin small letter u with ogonek":"Lateinischer Kleinbuchstabe u mit Ogonek","Latin capital letter w with circumflex":"Lateinischer Großbuchstabe w mit Zirkumflex","Latin small letter w with circumflex":"Lateinischer Kleinbuchstabe w mit Zirkumflex","Latin capital letter y with circumflex":"Lateinischer Großbuchstabe y mit Zirkumflex","Latin small letter y with circumflex":"Lateinischer Kleinbuchstabe y mit Zirkumflex","Latin capital letter y with diaeresis":"Lateinischer Großbuchstabe y mit Trema","Latin capital letter z with acute":"Lateinischer Großbuchstabe z mit Akut","Latin small letter z with acute":"Lateinischer Kleinbuchstabe z mit Akut","Latin capital letter z with dot above":"Lateinischer Großbuchstabe z mit Punkt darüber","Latin small letter z with dot above":"Lateinischer Kleinbuchstabe z mit Punkt darüber","Latin capital letter z with caron":"Lateinischer Großbuchstabe z mit Hatschek","Latin small letter z with caron":"Lateinischer Kleinbuchstabe z mit Hatschek","Latin small letter long s":"Lateinischer Kleinbuchstabe langes s","Less-than sign":"Kleiner-als-Zeichen","Greater-than sign":"Größer-als-Zeichen","Less-than or equal to":"Kleiner als oder gleich","Greater-than or equal to":"Größer als oder gleich","En dash":"Halbgeviertstrich","Em dash":"Geviertstrich",Macron:"Makron",Overline:"Überstrich","Degree sign":"Grad-Zeichen","Minus sign":"Minus-Zeichen","Plus-minus sign":"Plus-Minus-Zeichen","Division sign":"Geteilt-Zeichen","Fraction slash":"Schrägstrich","Multiplication sign":"Mal-Zeichen","Latin small letter f with hook":"Lateinischer Kleinbuchstabe f mit Haken",Integral:"Integral-Zeichen","N-ary summation":"Summen-Zeichen",Infinity:"Unendlich-Zeichen","Square root":"Wurzel-Zeichen","Tilde operator":"Tilde-Operator","Approximately equal to":"Ungefähr gleich","Almost equal to":"Gerundet","Not equal to":"Ungleich","Identical to":"Identisch mit","Element of":"Element von","Not an element of":"Kein Element von","Contains as member":"Enthält als Element","N-ary product":"Produkt-Zeichen","Logical and":"Logisches und","Logical or":"Logisches oder","Not sign":"Negations-Zeichen",Intersection:"Schnitt",Union:"Vereinigung","Partial differential":"Partielle Ableitung","For all":"Allquantor","There exists":"Existenzquantor","Empty set":"Leere Menge",Nabla:"Nabla","Asterisk operator":"Hodge-Stern-Operator","Proportional to":"Proportional zu",Angle:"Winkel-Zeichen","Vulgar fraction one quarter":"Gemeiner Bruch ein Viertel","Vulgar fraction one half":"Gemeiner Bruch ein Halb","Vulgar fraction three quarters":"Gemeiner Bruch drei Viertel","Single left-pointing angle quotation mark":"Einfache Guillemets nach links","Single right-pointing angle quotation mark":"Einfache Guillemets nach rechts","Left-pointing double angle quotation mark":"Doppelte Guillemets nach links","Right-pointing double angle quotation mark":"Doppelte Guillemets nach rechts","Left single quotation mark":"Einfache Anführungszeichen links","Right single quotation mark":"Einfache Anführungszeichen rechts","Left double quotation mark":"Doppelte Anführungszeichen links","Right double quotation mark":"Doppelte Anführungszeichen rechts","Single low-9 quotation mark":"Einfache Anführungszeichen links unten","Double low-9 quotation mark":"Doppelte Anführungszeichen links unten","Inverted exclamation mark":"Umgekehrtes Ausrufezeichen","Inverted question mark":"Umgekehrtes Fragezeichen","Two dot leader":"Doppel-Punktlinie","Horizontal ellipsis":"Auslassungspunkte","Double dagger":"Zweibalkenkreuz","Per mille sign":"Promille-Zeichen","Per ten thousand sign":"Pro-Zehntausend-Zeichen","Double exclamation mark":"Doppeltes Ausrufezeichen","Question exclamation mark":"Frage-Ruf-Zeichen","Exclamation question mark":"Ruf-Frage-Zeichen","Double question mark":"Doppeltes Fragezeichen","Copyright sign":"Copyright-Zeichen","Registered sign":"Registered-Trade-Mark-Zeichen","Trade mark sign":"Unregistered-Trade-Mark-Zeichen","Section sign":"Paragraphen-Zeichen","Paragraph sign":"Absatz-Zeichen","Reversed paragraph sign":"Umgedrehtes Absatz-Zeichen","Show source":"Quelle anzeigen","Show blocks":"Blöcke anzeigen","Select all":"Alles auswählen","Disable editing":"Bearbeitung deaktivieren","Enable editing":"Bearbeitung zulassen","Previous editable region":"Vorheriger bearbeitbarer Bereich","Next editable region":"Nächster bearbeitbarer Bereich","Navigate editable regions":"Durch bearbeitbare Bereiche navigieren","Remove Format":"Formatierung entfernen","Page break":"Seitenumbruch","media widget":"Medien-Widget","Media URL":"Medien-URL","Paste the media URL in the input.":"Medien-URL in das Eingabefeld einfügen.","Tip: Paste the URL into the content to embed faster.":"Tipp: Zum schnelleren Einbetten können Sie die Medien-URL in den Inhalt einfügen.","The URL must not be empty.":"Die URL darf nicht leer sein.","This media URL is not supported.":"Diese Medien-URL wird nicht unterstützt.","Insert media":"Medium einfügen",Media:"Medien","Media toolbar":"Medien Werkzeugleiste","Open media in new tab":"Medien in neuem Tab öffnen","Media embed":"Medieneinbettung","Numbered List":"Nummerierte Liste","Bulleted List":"Aufzählungsliste","To-do List":"Aufgabenliste","Bulleted list styles toolbar":"Darstellung der ungeordneten Liste","Numbered list styles toolbar":"Darstellung der geordneten Liste","Toggle the disc list style":"Gefüllten Kreis einstellen","Toggle the circle list style":"Leeren Kreis einstellen","Toggle the square list style":"Quadrat einstellen","Toggle the decimal list style":"Dezimalzahlen einstellen","Toggle the decimal with leading zero list style":"Dezimalzahlen mit vorangestellten Nullen einstellen","Toggle the lower–roman list style":"Kleingeschriebene römische Zahlen einstellen","Toggle the upper–roman list style":"Großgeschriebene römische Zahlen einstellen","Toggle the lower–latin list style":"Kleingeschriebene lateinische Buchstaben einstellen","Toggle the upper–latin list style":"Großgeschriebene lateinische Buchstaben einstellen",Disc:"Gefüllter Kreis",Circle:"Leerer Kreis",Square:"Quadrat",Decimal:"Dezimalzahlen","Decimal with leading zero":"Dezimalzahlen mit vorangestellten Nullen","Lower–roman":"Kleingeschriebene römische Zahlen","Upper-roman":"Großgeschriebene römische Zahlen","Lower-latin":"Kleingeschriebene lateinische Buchstaben","Upper-latin":"Großgeschriebene lateinische Buchstaben","List properties":"Listeneigenschaften","Start at":"Beginnen mit","Invalid start index value.":"Ungültiger Anfangsindexwert.","Start index must be greater than 0.":"Der Startwert muss größer als 0 sein.","Reversed order":"Umgekehrte Reihenfolge","Keystrokes that can be used in a list":"Tastatureingaben, die in einer Liste verwendet werden können.","Increase list item indent":"Listeneinzug vergrößern","Decrease list item indent":"Listeneinzug verkleinern","Entering a to-do list":"Eingabe einer Aufgabenliste","Leaving a to-do list":"Verlassen einer Aufgabenliste",Unlink:"Link entfernen",Link:"Link","Link URL":"Linkadresse","Link URL must not be empty.":"Die Link-URL darf nicht leer sein.","Link image":"Bild verlinken","Edit link":"Link bearbeiten","Open link in new tab":"Link im neuen Tab öffnen","Open in a new tab":"In neuem Tab öffnen",Downloadable:"Herunterladbar","Create link":"Link erstellen","Move out of a link":"Linkauswahl aufheben","Link properties":"Linkeigenschaften","Displayed text":"Angezeigter Text","No links available":"Keine Links verfügbar",Language:"Sprache","Choose language":"Sprache auswählen","Remove language":"Sprache entfernen","Increase indent":"Einzug vergrößern","Decrease indent":"Einzug verkleinern","image widget":"Bild-Steuerelement","Wrap text":"Text umfließt Bild","Break text":"Bild teilt Text","In line":"Text in Zeile","Side image":"Seitenbild","Full size image":"Bild in voller Größe","Left aligned image":"Linksbündiges Bild","Centered image":"Zentriertes Bild","Right aligned image":"Rechtsbündiges Bild","Change image text alternative":"Alternativtext ändern","Text alternative":"Alternativtext","Enter image caption":"Bildunterschrift eingeben","Insert image":"Bild einfügen","Replace image":"Bild ersetzen","Upload from computer":"Vom Computer hochladen","Replace from computer":"Vom Computer ersetzen","Upload image from computer":"Bild vom Computer hochladen","Image from computer":"Bild vom Computer","From computer":"Vom Computer","Replace image from computer":"Bild vom Computer ersetzen","Upload failed":"Hochladen fehlgeschlagen","You have no image upload permissions.":"Sie haben keine Berechtigung zum Hochladen von Bildern.","Image toolbar":"Bild Werkzeugleiste","Resize image":"Bildgröße ändern","Resize image to %0":"Bildgröße ändern in %0","Resize image to the original size":"Bild in Originalgröße ändern","Resize image (in %0)":"Bildgröße ändern (in %0)",Original:"Original","Custom image size":"Benutzerdefinierte Bildgröße",Custom:"Benutzerdefiniert","Image resize list":"Bildgrößen-Liste","Insert image via URL":"Bild von URL einfügen","Insert via URL":"Per URL einfügen","Image via URL":"Bild per URL","Via URL":"Per URL","Update image URL":"Bild-URL aktualisieren","Caption for the image":"Bildunterschrift","Caption for image: %0":"Bildunterschrift: %0","The value must not be empty.":"Der Wert darf nicht leer sein.","The value should be a plain number.":"Der Wert sollte eine einfache Zahl sein.","Uploading image":"Bild hochladen","Image upload complete":"Bild erfolgreich hochgeladen","Error during image upload":"Fehler beim Hochladen des Bildes",Image:"Bild","Image Resize":"Bildgrößenänderung","Text Alternative":"Textalternative","HTML object":"HTML-Objekt","Insert HTML":"HTML einfügen","HTML snippet":"HTML-Snippet","Paste raw HTML here...":"Rohes HTML hier einfügen …","Edit source":"Quelle bearbeiten","Save changes":"Änderungen speichern","No preview available":"Keine Vorschau verfügbar","Empty snippet content":"Leerer Snippet-Inhalt","Horizontal line":"Horizontale Linie","Yellow marker":"Gelber Marker","Green marker":"Grüner Marker","Pink marker":"Pinker Marker","Blue marker":"Blauer Marker","Red pen":"Rote Schriftfarbe","Green pen":"Grüne Schriftfarbe","Remove highlight":"Texthervorhebung entfernen",Highlight:"Texthervorhebung","Text highlight toolbar":"Text hervorheben Werkzeugleiste",Heading:"Überschrift","Choose heading":"Überschrift auswählen","Heading 1":"Überschrift 1","Heading 2":"Überschrift 2","Heading 3":"Überschrift 3","Heading 4":"Überschrift 4","Heading 5":"Überschrift 5","Heading 6":"Überschrift 6","Type your title":"Titel eingeben","Type or paste your content here.":"Hier Inhalt einfügen.","Enter fullscreen mode":"Vollbildmodus aktivieren","Leave fullscreen mode":"Vollbildmodus deaktivieren","Fullscreen mode":"Vollbildmodus","Toggle fullscreen mode":"Vollbildmodus umschalten","Document outline":"Dokumentgliederung","Connected users":"Verbundene Nutzer","Font Size":"Schriftgröße",Tiny:"Sehr klein",Small:"Klein",Big:"Groß",Huge:"Sehr groß","Font Family":"Schriftart",Default:"Standard","Font Color":"Schriftfarbe","Font Background Color":"Hintergrundfarbe","Document colors":"Dokumentfarben","Find and replace":"Suchen und ersetzen","Find in text…":"In Text suchen…",Find:"Suchen","Previous result":"Vorheriges Ergebnis","Next result":"Nächstes Ergebnis",Replace:"Ersetzen","Replace all":"Alle ersetzen","Match case":"Groß-/Kleinschreibung beachten","Whole words only":"Nur ganze Wörter","Replace with…":"Ersetzen durch…","Text to find must not be empty.":"Der Suchtext darf nicht leer sein.","Tip: Find some text first in order to replace it.":"Tipp: Zuerst nach Text suchen um diesen zu ersetzen.","Advanced options":"Erweiterte Optionen","Find in the document":"Dokument durchsuchen","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Einen weichen Zeilenumbruch einfügen (ein <code>&lt;br&gt;</code>-Element)","Insert a hard break (a new paragraph)":"Zeilenumbruch einfügen (einen neuen Abschnitt)",Emoji:"Emojis","Show all emoji...":"Alle Emojis anzeigen ...","Find an emoji (min. 2 characters)":"Emoji finden (min. 2 Zeichen)",'No emojis were found matching "%0".':"Es wurden keine Emojis gefunden, die zu „%0“ passen.","Keep on typing to see the emoji.":"Weiteren Text eingeben, damit Emojis angezeigt werden.","The query must contain at least two characters.":"Die Anfrage muss aus mindestens zwei Zeichen bestehen.","Smileys & Expressions":"Smileys und Emotionen","Gestures & People":"Gesten und Personen","Animals & Nature":"Tiere und Natur","Food & Drinks":"Speisen und Getränke","Travel & Places":"Reisen und Orte",Activities:"Aktivitäten",Objects:"Objekte",Symbols:"Symbole",Flags:"Flaggen","Select skin tone":"Hautfarbe wählen","Default skin tone":"Standardhautfarbe","Light skin tone":"Helle Hautfarbe","Medium Light skin tone":"Mittelhelle Hautfarbe","Medium skin tone":"Mittlere Hautfarbe","Medium Dark skin tone":"Mitteldunkle Hautfarbe","Dark skin tone":"Dunkle Hautfarbe","Emoji picker":"Emoji-Auswahl",Cancel:"Abbrechen",Clear:"Löschen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen",Save:"Speichern","Show more items":"Mehr anzeigen","%0 of %1":"%0 von %1","Cannot upload file:":"Die Datei kann nicht hochgeladen werden:","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bearbeitungsbereich: %0","Insert with file manager":"Mit Dateimanager einfügen","Replace with file manager":"Mittels Dateimanager ersetzen","Insert image with file manager":"Bild mit dem Dateimanager einfügen","Replace image with file manager":"Bild mittels Dateimanager ersetzen",File:"Datei","With file manager":"Mit dem Dateimanager","Toggle caption off":"Tabellenüberschrift deaktivieren","Toggle caption on":"Tabellenüberschrift aktivieren","Content editing keystrokes":"Tastatureingaben zur Inhaltsverarbeitung","These keyboard shortcuts allow for quick access to content editing features.":"Diese Tastenkombinationen ermöglichen einen schnellen Zugang zu den Inhaltsverarbeitungsfunktionen.","User interface and content navigation keystrokes":"Benutzeroberfläche und Inhaltsnavigationstasten","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Verwenden Sie die folgenden Tastatureingaben für eine effizientere Navigation auf der CKEditor-5-Benutzeroberfläche.","Close contextual balloons, dropdowns, and dialogs":"Kontextsprechblasen, Dropdown-Menü und Dialoge schließen","Open the accessibility help dialog":"Den Dialog zur Eingabehilfe öffnen","Move focus between form fields (inputs, buttons, etc.)":"Fokus zwischen Formularfeldern verschieben (Eingaben, Tastenfelder etc.)","Move focus to the menu bar, navigate between menu bars":"Fokus auf die Menüleiste richten, zwischen Menüleisten navigieren","Move focus to the toolbar, navigate between toolbars":"Fokus auf die Symbolleiste verschieben, zwischen den Symbolleisten navigieren","Navigate through the toolbar or menu bar":"Durch die Werkzeugleiste oder Menüleiste navigieren","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Ausführen der aktuell fokussierten Schaltfläche. Das Ausführen von Schaltflächen, die mit dem Inhalt des Editors interagieren, richtet den Fokus zurück auf den Inhalt.",Accept:"Akzeptieren",Paragraph:"Absatz","Color picker":"Farbwähler","Please try a different phrase or check the spelling.":"Bitte versuchen Sie einen anderen Ausdruck oder überprüfen Sie die Schreibweise.",Source:"Quelle",Insert:"Einfügen",Update:"Aktualisieren",Back:"Zurück","Insert code block":"Code-Block einfügen","Plain text":"Nur Text","Leaving %0 code snippet":"%0 Code-Ausschnitt verlassen","Entering %0 code snippet":"%0 Code-Ausschnitt eingeben","Entering code snippet":"Code-Ausschnit eingeben","Leaving code snippet":"Code-Ausschnit verlassen","Code block":"Codeblock","Copy selected content":"Markierten Inhalt kopieren","Paste content":"Inhalt einfügen","Paste content as plain text":"Inhalt als Klartext einfügen","Insert image or file":"Bild oder Datei einfügen","Could not obtain resized image URL.":"Die URL des angepassten Bildes konnte nicht abgerufen werden.","Selecting resized image failed":"Das angepasste Bild konnte nicht ausgewählt werden.","Could not insert image at the current position.":"Das Bild konnte an der aktuellen Position nicht eingefügt werden.","Inserting image failed":"Einfügen des Bildes fehlgeschlagen",Bookmark:"Lesezeichen","Edit bookmark":"Lesezeichen bearbeiten","Remove bookmark":"Lesezeichen entfernen","Bookmark name":"Name des Lesezeichens","Enter the bookmark name without spaces.":"Geben Sie den Namen des Lesezeichens ohne Leerzeichen ein.","Bookmark must not be empty.":"Das Lesezeichen darf nicht leer sein.","Bookmark name cannot contain space characters.":"Der Name des Lesezeichens darf keine Leerzeichen enthalten.","Bookmark name already exists.":"Der Lesezeichenname existiert bereits.","bookmark widget":"Lesezeichen-Widget","Bookmark toolbar":"Lesezeichen-Werkzeugleiste",Bookmarks:"Lesezeichen","No bookmarks available.":"Keine Lesezeichen verfügbar.","Scroll to bookmark":"Zu Lesezeichen scrollen","Open file manager":"Dateimanager öffnen","Cannot determine a category for the uploaded file.":"Die Kategorie für die hochgeladene Datei konnte nicht bestimmt werden.","Cannot access default workspace.":"Zugriff auf Standardarbeitsbereich nicht möglich.","You have no image editing permissions.":"Sie haben keine Berechtigung zum Bearbeiten von Bildern.","Edit image":"Bild bearbeiten","Processing the edited image.":"Das bearbeitete Bild wird verarbeitet.","Server failed to process the image.":"Der Server konnte das Bild nicht verarbeiten.","Failed to determine category of edited image.":"Es konnte für das bearbeitete Bild keine Kategorie ermittelt werden.","Block quote":"Blockzitat",Bold:"Fett",Italic:"Kursiv",Underline:"Unterstrichen",Code:"Code",Strikethrough:"Durchgestrichen",Subscript:"Tiefgestellt",Superscript:"Hochgestellt","Italic text":"Kursivschrift","Move out of an inline code style":"Inline Code Style verlassen","Bold text":"Fettschrift","Underline text":"Text hervorheben","Strikethrough text":"Durchgestrichener Text","Saving changes":"Änderungen werden gespeichert","Revert autoformatting action":"Automatischen Formatierungsvorgang rückgängig machen","Align left":"Linksbündig","Align right":"Rechtsbündig","Align center":"Zentriert",Justify:"Blocksatz","Text alignment":"Textausrichtung","Text alignment toolbar":"Text-Ausrichtung Toolbar"},getPluralForm(o){return o!=1}}};/**
384
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
385
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
386
+ */const YP={es:{dictionary:{"Words: %0":"Palabras: %0","Characters: %0":"Caracteres: %0","Widget toolbar":"Barra de herramientas del widget","Insert paragraph before block":"Insertar párrafo antes del bloque","Insert paragraph after block":"Insertar párrafo después del bloque","Press Enter to type after or press Shift + Enter to type before the widget":"Pulse Intro para escribir después o pulse Mayús + Intro para escribir antes del «widget».","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Teclas que se pueden utilizar cuando se selecciona un módulo interactivo (por ejemplo: imagen, tabla, etc.)","Insert a new paragraph directly after a widget":"Inserta un nuevo párrafo directamente después de un módulo interactivo","Insert a new paragraph directly before a widget":"Inserta un nuevo párrafo directamente antes de un módulo interactivo","Move the caret to allow typing directly before a widget":"Mueve el cursor para permitir escribir directamente antes de un módulo interactivo","Move the caret to allow typing directly after a widget":"Mueve el cursor para permitir escribir directamente después de un módulo interactivo","Move focus from an editable area back to the parent widget":"Cambiar el foco de un área editable al widget principal","Upload in progress":"Subida en progreso",Undo:"Deshacer",Redo:"Rehacer","Rich Text Editor":"Editor de Texto Enriquecido","Edit block":"Cuadro de edición","Click to edit block":"Haz clic para editar el bloque","Drag to move":"Arrastra para mover",Next:"Siguiente",Previous:"Anterior","Editor toolbar":"Barra de herramientas de edición","Dropdown toolbar":"Barra de herramientas desplegable","Dropdown menu":"Menú desplegable",Black:"Negro","Dim grey":"Gris oscuro",Grey:"Gris","Light grey":"Gris claro",White:"Blanco",Red:"Rojo",Orange:"Naranja",Yellow:"Amarillo","Light green":"Verde claro",Green:"Verde",Aquamarine:"Aguamarina",Turquoise:"Turquesa","Light blue":"Azul claro",Blue:"Azul",Purple:"Morado","Editor block content toolbar":"Barra de herramientas de contenido del bloque del editor","Editor contextual toolbar":"Barra de herramientas contextual del editor",HEX:"HEX","No results found":"No se han encontrado resultados","No searchable items":"No hay elementos que buscar","Editor dialog":"Diálogo del editor",Close:"Cerrar","Help Contents. To close this dialog press ESC.":"Contenidos de ayuda. Presione ESC para cerrar este cuadro de diálogo.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"A continuación, encontrará una lista de atajos de teclado que se pueden utilizar en el editor.","(may require <kbd>Fn</kbd>)":"(puede requerir <kbd>Fn</kbd>)",Accessibility:"Accesibilidad","Accessibility help":"Ayuda de accesibilidad","Press %0 for help.":"Presione %0 para obtener ayuda.","Move focus in and out of an active dialog window":"Mueve el foco dentro y fuera de una ventana de diálogo activa",MENU_BAR_MENU_FILE:"Archivo",MENU_BAR_MENU_EDIT:"Editar",MENU_BAR_MENU_VIEW:"Ver",MENU_BAR_MENU_INSERT:"Insertar",MENU_BAR_MENU_FORMAT:"Formato",MENU_BAR_MENU_TOOLS:"Herramientas",MENU_BAR_MENU_HELP:"Ayuda",MENU_BAR_MENU_TEXT:"Texto",MENU_BAR_MENU_FONT:"Fuente","Editor menu bar":"Barra de menú del editor",'Please enter a valid color (e.g. "ff0000").':'Introduzca un color válido (p. ej., "ff0000").',"Insert table":"Insertar tabla","Header column":"Columna de encabezado","Insert column left":"Insertar columna izquierda","Insert column right":"Insertar columna derecha","Delete column":"Eliminar columna","Select column":"Seleccionar columna",Column:"Columna","Header row":"Fila de encabezado","Insert row below":"Insertar fila debajo","Insert row above":"Insertar fila encima","Delete row":"Eliminar fila","Select row":"Seleccionar fila",Row:"Fila","Merge cell up":"Combinar celda superior","Merge cell right":"Combinar celda derecha","Merge cell down":"Combinar celda inferior","Merge cell left":"Combinar celda izquierda","Split cell vertically":"Dividir celdas verticalmente","Split cell horizontally":"Dividir celdas horizontalmente","Merge cells":"Combinar celdas","Table toolbar":"Barra de herramientas de tabla","Table properties":"Propiedades de tabla","Cell properties":"Propiedades de celda",Border:"Borde",Style:"Estilo",Width:"Ancho",Height:"Altura",Color:"Color",Background:"Fondo",Padding:"Márgenes",Dimensions:"Dimensiones","Table cell text alignment":"Alineación texto de celda",Alignment:"Alineación","Horizontal text alignment toolbar":"Alineación horizontal de texto","Vertical text alignment toolbar":"Alineación vertical de texto","Table alignment toolbar":"Alineación de tabla",None:"Ninguno",Solid:"Sólido",Dotted:"Línea de puntos",Dashed:"Línea discontinua",Double:"Doble línea",Groove:"Bisel",Ridge:"Marco",Inset:"Incrustación",Outset:"Relieve","Align cell text to the left":"Alinear texto de celda a la izquierda","Align cell text to the center":"Centrar texto de celda","Align cell text to the right":"Alinear texto de celda a la derecha","Justify cell text":"Justificar texto de celda","Align cell text to the top":"Alinear texto de celda hacia arriba","Align cell text to the middle":"Alinear texto de celda al medio","Align cell text to the bottom":"Alinear texto de celda hacia abajo","Align table to the left":"Alinear tabla a la izquierda","Center table":"Centrar tabla","Align table to the right":"Alinear tabla a la derecha",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'El color es inválido. Intente con "#FF0000", "rgb(255,0,0)" o "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'El valor es inválido. Intente con "10px", "2em" o simplemente "2".',"Enter table caption":"Ingresar título de tabla","Keystrokes that can be used in a table cell":"Teclas que se pueden utilizar en una celda de tabla","Move the selection to the next cell":"Mueve la selección a la siguiente celda","Move the selection to the previous cell":"Mueve la selección a la celda anterior","Insert a new table row (when in the last cell of a table)":"Inserta una nueva fila de la tabla (cuando esté en la última celda de una tabla)","Navigate through the table":"Navega por la tabla",Table:"Tabla","Insert table layout":"Insertar diseño de tabla","Table layout":"Diseño de tabla","Layout table":"Tabla de diseño","Content table":"Tabla de contenido","Choose table type":"Elegir tipo de tabla","Table type":"Tipo de tabla","Table type options":"Opciones del tipo de tabla",Styles:"Estilos","Multiple styles":"Múltiples estilos","Block styles":"Estilos de bloque","Text styles":"Estilos de texto","Special characters":"Caracteres especiales",Category:"Categoría",All:"Todos",Arrows:"Flechas",Currency:"Monedas",Latin:"Latín",Mathematical:"Matemáticas",Text:"Texto","leftwards simple arrow":"flecha simple hacia la izquierda","rightwards simple arrow":"flecha simple hacia la derecha","upwards simple arrow":"flecha simple hacia arriba","downwards simple arrow":"flecha simple hacia abajo","leftwards double arrow":"flecha doble hacia la izquierda","rightwards double arrow":"flecha doble hacia la derecha","upwards double arrow":"flecha doble hacia arriba","downwards double arrow":"flecha doble hacia abajo","leftwards dashed arrow":"flecha punteada hacia la izquierda","rightwards dashed arrow":"flecha punteada hacia la derecha","upwards dashed arrow":"flecha punteada hacia arriba","downwards dashed arrow":"flecha punteada hacia abajo","leftwards arrow to bar":"flecha hacia la izquierda hasta una barra","rightwards arrow to bar":"flecha hacia la derecha hasta una barra","upwards arrow to bar":"flecha hacia arriba hasta una barra","downwards arrow to bar":"flecha hacia abajo hasta una barra","up down arrow with base":"flecha hacia arriba y abajo con una base","back with leftwards arrow above":"«back» con una flecha hacia la izquierda arriba","end with leftwards arrow above":"«end» con una flecha hacia la izquierda arriba","on with exclamation mark with left right arrow above":"«on» seguido de un signo de exclamación y con una flecha hacia la izquierda y derecha arriba","soon with rightwards arrow above":"«soon» con una flecha hacia la derecha arriba","top with upwards arrow above":"«top» con una flecha hacia arriba arriba","Dollar sign":"Signo del dólar","Euro sign":"Signo del euro","Yen sign":"Signo del yen","Pound sign":"Signo de la libra","Cent sign":"Signo del centavo","Euro-currency sign":"Signo de la moneda euro","Colon sign":"Signo del colón","Cruzeiro sign":"Signo del cruceiro","French franc sign":"Signo del franco francés","Lira sign":"Signo de la lira","Currency sign":"Signo monetario","Bitcoin sign":"Signo del bitcóin","Mill sign":"Signo de milésima","Naira sign":"Signo de naira","Peseta sign":"Signo de la peseta","Rupee sign":"Signo de la rupia","Won sign":"Signo del won","New sheqel sign":"Signo del nuevo séquel","Dong sign":"Signo de dong","Kip sign":"Signo de kip","Tugrik sign":"Signo de tugrik","Drachma sign":"Signo de dracma","German penny sign":"Signo de centavo alemán","Peso sign":"Signo del peso","Guarani sign":"Signo del guaraní","Austral sign":"Signo de austral","Hryvnia sign":"Signo de grivna","Cedi sign":"Signo de cedi","Livre tournois sign":"Signo de libra tornesa","Spesmilo sign":"Signo de spesmilo","Tenge sign":"Signo de tenge","Indian rupee sign":"Signo de rupia india","Turkish lira sign":"Signo de lira turca","Nordic mark sign":"Signo de marco nórdico","Manat sign":"Signo de manat","Ruble sign":"Signo del rublo","Latin capital letter a with macron":"Letra latina mayúscula «A» con macrón","Latin small letter a with macron":"Letra latina minúscula «a» con macrón","Latin capital letter a with breve":"Letra latina mayúscula «A» con acento breve","Latin small letter a with breve":"Letra latina minúscula «a» con acento breve","Latin capital letter a with ogonek":"Letra latina mayúscula «A» con ogonek","Latin small letter a with ogonek":"Letra latina minúscula «a» con ogonek","Latin capital letter c with acute":"Letra latina mayúscula «C» con acento agudo","Latin small letter c with acute":"Letra latina minúscula «c» con acento agudo","Latin capital letter c with circumflex":"Letra latina mayúscula «C» con acento circunflejo","Latin small letter c with circumflex":"Letra latina minúscula «c» con acento circunflejo","Latin capital letter c with dot above":"Letra latina mayúscula «C» con punto superior","Latin small letter c with dot above":"Letra latina minúscula «c» con punto superior","Latin capital letter c with caron":"Letra latina mayúscula «C» con acento anticircunflejo","Latin small letter c with caron":"Letra latina minúscula «c» con acento anticircunflejo","Latin capital letter d with caron":"Letra latina mayúscula «D» con acento anticircunflejo","Latin small letter d with caron":"Letra latina minúscula «d» con acento anticircunflejo","Latin capital letter d with stroke":"Letra latina mayúscula «D» con barra horizontal","Latin small letter d with stroke":"Letra latina minúscula «d» con barra horizontal","Latin capital letter e with macron":"Letra latina mayúscula «E» con macrón","Latin small letter e with macron":"Letra latina minúscula «e» con macrón","Latin capital letter e with breve":"Letra latina mayúscula «e» con acento breve","Latin small letter e with breve":"Letra latina minúscula «e» con acento breve","Latin capital letter e with dot above":"Letra latina mayúscula «E» con punto superior","Latin small letter e with dot above":"Letra latina minúscula «e» con punto superior","Latin capital letter e with ogonek":"Letra latina mayúscula «E» con ogonek","Latin small letter e with ogonek":"Letra latina minúscula «e» con ogonek","Latin capital letter e with caron":"Letra latina mayúscula «E» con acento anticircunflejo","Latin small letter e with caron":"Letra latina minúscula «e» con acento anticircunflejo","Latin capital letter g with circumflex":"Letra latina mayúscula «G» con acento circunflejo","Latin small letter g with circumflex":"Letra latina minúscula «g» con acento circunflejo","Latin capital letter g with breve":"Letra latina mayúscula «G» con acento breve","Latin small letter g with breve":"Letra latina minúscula «g» con acento breve","Latin capital letter g with dot above":"Letra latina mayúscula «G» con punto superior","Latin small letter g with dot above":"Letra latina minúscula «g» con punto superior","Latin capital letter g with cedilla":"Letra latina mayúscula «G» con cedilla","Latin small letter g with cedilla":"Letra latina minúscula «g» con cedilla","Latin capital letter h with circumflex":"Letra latina mayúscula «H» con acento circunflejo","Latin small letter h with circumflex":"Letra latina minúscula «h» con acento circunflejo","Latin capital letter h with stroke":"Letra latina mayúscula «H» con barra horizontal","Latin small letter h with stroke":"Letra latina minúscula «h» con barra horizontal","Latin capital letter i with tilde":"Letra latina mayúscula «I» con tilde","Latin small letter i with tilde":"Letra latina minúscula «i» con tilde","Latin capital letter i with macron":"Letra latina mayúscula «I» con macrón","Latin small letter i with macron":"Letra latina minúscula «i» con macrón","Latin capital letter i with breve":"Letra latina mayúscula «I» con acento breve","Latin small letter i with breve":"Letra latina minúscula «i» con acento breve","Latin capital letter i with ogonek":"Letra latina mayúscula «I» con ogonek","Latin small letter i with ogonek":"Letra latina minúscula «i» con ogonek","Latin capital letter i with dot above":"Letra latina mayúscula «I» con punto superior","Latin small letter dotless i":"Letra latina minúscula «i» sin punto","Latin capital ligature ij":"Ligadura latina mayúscula «IJ»","Latin small ligature ij":"Ligadura latina minúscula «ij»","Latin capital letter j with circumflex":"Letra latina mayúscula «J» con acento circunflejo","Latin small letter j with circumflex":"Letra latina minúscula «j» con acento circunflejo","Latin capital letter k with cedilla":"Letra latina mayúscula «K» con cedilla","Latin small letter k with cedilla":"Letra latina minúscula «k» con cedilla","Latin small letter kra":"Letra latina minúscula «kra»","Latin capital letter l with acute":"Letra latina mayúscula «L» con acento agudo","Latin small letter l with acute":"Letra latina minúscula «l» con acento agudo","Latin capital letter l with cedilla":"Letra latina mayúscula «I» con cedilla","Latin small letter l with cedilla":"Letra latina minúscula «l» con cedilla","Latin capital letter l with caron":"Letra latina mayúscula «I» con acento anticircunflejo","Latin small letter l with caron":"Letra latina minúscula «i» con acento anticircunflejo","Latin capital letter l with middle dot":"Letra latina mayúscula «L» con punto medio","Latin small letter l with middle dot":"Letra latina minúscula «l» con punto medio","Latin capital letter l with stroke":"Letra latina mayúscula «L» con barra diagonal","Latin small letter l with stroke":"Letra latina minúscula «l» con barra diagonal","Latin capital letter n with acute":"Letra latina mayúscula «N» con acento agudo","Latin small letter n with acute":"Letra latina minúscula «n» con acento agudo","Latin capital letter n with cedilla":"Letra latina mayúscula «N» con cedilla","Latin small letter n with cedilla":"Letra latina minúscula «n» con cedilla","Latin capital letter n with caron":"Letra latina mayúscula «n» con acento anticircunflejo","Latin small letter n with caron":"Letra latina minúscula «n» con acento anticircunflejo","Latin small letter n preceded by apostrophe":"Letra latina minúscula «n» precedida de apóstrofo","Latin capital letter eng":"Letra latina mayúscula «Eng»","Latin small letter eng":"Letra latina minúscula «eng»","Latin capital letter o with macron":"Letra latina mayúscula «O» con macrón","Latin small letter o with macron":"Letra latina minúscula «o» con macrón","Latin capital letter o with breve":"Letra latina mayúscula «O» con acento breve","Latin small letter o with breve":"Letra latina minúscula «o» con acento breve","Latin capital letter o with double acute":"Letra latina mayúscula «O» con doble acento agudo","Latin small letter o with double acute":"Letra latina minúscula «o» con doble acento agudo","Latin capital ligature oe":"Ligadura latina mayúscula «OE»","Latin small ligature oe":"Ligadura latina minúscula «oe»","Latin capital letter r with acute":"Letra latina mayúscula «R» con acento agudo","Latin small letter r with acute":"Letra latina minúscula «r» con acento agudo","Latin capital letter r with cedilla":"Letra latina mayúscula «R» con cedilla","Latin small letter r with cedilla":"Letra latina minúscula «r» con cedilla","Latin capital letter r with caron":"Letra latina mayúscula «R» con acento anticircunflejo","Latin small letter r with caron":"Letra latina minúscula «r» con acento anticircunflejo","Latin capital letter s with acute":"Letra latina mayúscula «S» con acento agudo","Latin small letter s with acute":"Letra latina minúscula «s» con acento agudo","Latin capital letter s with circumflex":"Letra latina mayúscula «S» con acento circunflejo","Latin small letter s with circumflex":"Letra latina minúscula «s» con acento circunflejo","Latin capital letter s with cedilla":"Letra latina mayúscula «S» con cedilla","Latin small letter s with cedilla":"Letra latina minúscula «s» con cedilla","Latin capital letter s with caron":"Letra latina mayúscula «S» con acento anticircunflejo","Latin small letter s with caron":"Letra latina minúscula «s» con acento anticircunflejo","Latin capital letter t with cedilla":"Letra latina mayúscula «T» con cedilla","Latin small letter t with cedilla":"Letra latina minúscula «t» con cedilla","Latin capital letter t with caron":"Letra latina mayúscula «T» con acento anticircunflejo","Latin small letter t with caron":"Letra latina minúscula «t» con acento anticircunflejo","Latin capital letter t with stroke":"Letra latina mayúscula «T» con barra horizontal","Latin small letter t with stroke":"Letra latina minúscula «t» con barra horizontal","Latin capital letter u with tilde":"Letra latina mayúscula «U» con tilde","Latin small letter u with tilde":"Letra latina minúscula «u» con tilde","Latin capital letter u with macron":"Letra latina mayúscula «U» con macrón","Latin small letter u with macron":"Letra latina minúscula «u» con macrón","Latin capital letter u with breve":"Letra latina mayúscula «U» con acento breve","Latin small letter u with breve":"Letra latina minúscula «u» con acento breve","Latin capital letter u with ring above":"Letra latina mayúscula «U» con anillo superior","Latin small letter u with ring above":"Letra latina minúscula «u» con anillo superior","Latin capital letter u with double acute":"Letra latina mayúscula «U» con doble acento agudo","Latin small letter u with double acute":"Letra latina minúscula «u» con doble acento agudo","Latin capital letter u with ogonek":"Letra latina mayúscula «U» con ogonek","Latin small letter u with ogonek":"Letra latina minúscula «u» con ogonek","Latin capital letter w with circumflex":"Letra latina mayúscula «W» con acento circunflejo","Latin small letter w with circumflex":"Letra latina minúscula «w» con acento circunflejo","Latin capital letter y with circumflex":"Letra latina mayúscula «Y» con acento circunflejo","Latin small letter y with circumflex":"Letra latina minúscula «y» con acento circunflejo","Latin capital letter y with diaeresis":"Letra latina mayúscula «Y» con diéresis","Latin capital letter z with acute":"Letra latina mayúscula «Z» con acento agudo","Latin small letter z with acute":"Letra latina minúscula «z» con acento agudo","Latin capital letter z with dot above":"Letra latina mayúscula «Z» con punto superior","Latin small letter z with dot above":"Letra latina minúscula «z» con punto superior","Latin capital letter z with caron":"Letra latina mayúscula «Z» con acento anticircunflejo","Latin small letter z with caron":"Letra latina minúscula «z» con acento anticircunflejo","Latin small letter long s":"Letra latina minúscula «s» larga","Less-than sign":"Signo de menor que","Greater-than sign":"Signo de mayor que","Less-than or equal to":"Menor que o igual a","Greater-than or equal to":"Mayor que o igual a","En dash":"Semirraya","Em dash":"Raya",Macron:"Macrón",Overline:"Línea alta","Degree sign":"Signo de grado","Minus sign":"Signo de resta","Plus-minus sign":"Signo más-menos","Division sign":"Signo de división","Fraction slash":"Barra fraccionaria","Multiplication sign":"Signo de multiplicación","Latin small letter f with hook":"Letra latina minúscula «f» con gancho",Integral:"Integral","N-ary summation":"Sumatoria",Infinity:"Infinito","Square root":"Raíz cuadrada","Tilde operator":"Operador de tilde","Approximately equal to":"Aproximadamente igual a","Almost equal to":"Casi igual a","Not equal to":"No igual a","Identical to":"Idéntico a","Element of":"Elemento de","Not an element of":"No es un elemento de","Contains as member":"Contiene como miembro","N-ary product":"Productorio","Logical and":"Y lógico","Logical or":"O lógico","Not sign":"Signo de negación",Intersection:"Intersección",Union:"Unión","Partial differential":"Diferencial parcial","For all":"Para todo","There exists":"Existe","Empty set":"Conjunto vacío",Nabla:"Nabla","Asterisk operator":"Operador asterisco","Proportional to":"Proporcional a",Angle:"Ángulo","Vulgar fraction one quarter":"Fracción ordinaria de un cuarto","Vulgar fraction one half":"Fracción ordinaria de un medio","Vulgar fraction three quarters":"Fracción ordinaria de tres cuartos","Single left-pointing angle quotation mark":"Comilla tipográfica simple angular de apertura","Single right-pointing angle quotation mark":"Comilla tipográfica simple angular de cierre","Left-pointing double angle quotation mark":"Comilla tipográfica doble angular de apertura","Right-pointing double angle quotation mark":"Comilla tipográfica dobe angular de cierre","Left single quotation mark":"Comilla tipográfica de apertura","Right single quotation mark":"Comilla tipográfica de cierre","Left double quotation mark":"Comilla tipográfica doble de apertura","Right double quotation mark":"Comilla tipográfica de cierre","Single low-9 quotation mark":"Comilla tipográfica en forma de 9 simple y baja","Double low-9 quotation mark":"Comilla tipográfica en forma de 9 doble y baja","Inverted exclamation mark":"Signo de exclamación de apertura","Inverted question mark":"Signo de interrogación de apertura","Two dot leader":"Punto de inicio doble","Horizontal ellipsis":"Puntos suspensivos horizontales","Double dagger":"Cruz doble","Per mille sign":"Signo de por mil","Per ten thousand sign":"Signo de por diez mil","Double exclamation mark":"Signo de exclamación doble","Question exclamation mark":"Signo de exclamación interrogativa","Exclamation question mark":"Signo de interrogación exclamativa","Double question mark":"Signo de interrogación doble","Copyright sign":"Signo de derechos de autor","Registered sign":"Signo de marca registrada","Trade mark sign":"Signo de marca comercial","Section sign":"Signo de sección","Paragraph sign":"Signo de párrafo","Reversed paragraph sign":"Signo de antígrafo invertido","Show source":"Mostrar fuente","Show blocks":"Mostrar bloques","Select all":"Seleccionar todo","Disable editing":"Inhabilitar edición","Enable editing":"Habilitar edición","Previous editable region":"Anterior zona editable","Next editable region":"Siguiente zona editable","Navigate editable regions":"Navegar por las zonas editables","Remove Format":"Quitar Formato","Page break":"Salto de página","media widget":"Widget de contenido multimedia","Media URL":"URL del contenido multimedia","Paste the media URL in the input.":"Pega la URL del contenido multimedia","Tip: Paste the URL into the content to embed faster.":"Tip: pega la URL dentro del contenido para embeber más rápido","The URL must not be empty.":"La URL no debe estar vacía","This media URL is not supported.":"La URL de este contenido multimedia no está soportada","Insert media":"Insertar contenido multimedia",Media:"Multimedia","Media toolbar":"Barra de herramientas de contenido multimedia","Open media in new tab":"Abrir medio en una pestaña nueva","Media embed":"Inserción de medios","Numbered List":"Lista numerada","Bulleted List":"Lista con viñetas","To-do List":"Lista de tareas","Bulleted list styles toolbar":"Estilos de lista con viñetas","Numbered list styles toolbar":"Estilos de lista numerada","Toggle the disc list style":"Cambiar estilo de viñeta a disco","Toggle the circle list style":"Cambiar estilo de viñeta a círculo","Toggle the square list style":"Cambiar estilo de viñeta a cuadrado","Toggle the decimal list style":"Cambiar estilo de lista a decimal","Toggle the decimal with leading zero list style":"Cambiar estilo de lista decimal empezando con cero","Toggle the lower–roman list style":"Cambiar estilo de lista a números romanos en minúsculas","Toggle the upper–roman list style":"Cambiar estilo de lista a números roanos en mayúsculas","Toggle the lower–latin list style":"Cambiar estilo de lista a números latinos en minúsculas","Toggle the upper–latin list style":"Cambiar estilo de lista a números latinos en mayúsculas",Disc:"Disco",Circle:"Círculo",Square:"Cuadrado",Decimal:"Decimal","Decimal with leading zero":"Decimal con cero","Lower–roman":"Romanos minúsculas","Upper-roman":"Romanos mayúscula","Lower-latin":"Latinos minúsculas","Upper-latin":"Latinos minúsculas","List properties":"Propiedades de la lista","Start at":"Empezar en","Invalid start index value.":"Valor de índice de inicio no válido.","Start index must be greater than 0.":"El número de inicio debe ser mayor que 0.","Reversed order":"Orden inverso","Keystrokes that can be used in a list":"Teclas que se pueden utilizar en una lista","Increase list item indent":"Aumenta la sangría de los elementos de la lista","Decrease list item indent":"Reduce la sangría de los elementos de la lista","Entering a to-do list":"Ingresando lista de tareas pendientes","Leaving a to-do list":"Abandonando lista de tareas pendientes",Unlink:"Quitar enlace",Link:"Enlace","Link URL":"URL del enlace","Link URL must not be empty.":"La URL del enlace no puede estar vacía.","Link image":"URL de la imagen","Edit link":"Editar enlace","Open link in new tab":"Abrir enlace en una pestaña nueva","Open in a new tab":"Abrir en una pestaña nueva ",Downloadable:"Descargable","Create link":"Crea un enlace","Move out of a link":"Sale de un enlace","Link properties":"Propiedades del enlace","Displayed text":"Texto mostrado","No links available":"No hay enlaces disponibles",Language:"Idioma","Choose language":"Elija el idioma","Remove language":"Quitar idioma","Increase indent":"Aumentar sangría","Decrease indent":"Disminuir sangría","image widget":"Widget de imagen","Wrap text":"Mantener texto unido","Break text":"Permitir quebrar texto","In line":"En línea","Side image":"Imagen lateral","Full size image":"Imagen a tamaño completo","Left aligned image":"Imagen alineada a la izquierda","Centered image":"Imagen centrada","Right aligned image":"Imagen alineada a la derecha","Change image text alternative":"Cambiar el texto alternativo de la imagen","Text alternative":"Texto alternativo","Enter image caption":"Introducir título de la imagen","Insert image":"Insertar imagen","Replace image":"Reemplazar imagen","Upload from computer":"Subir desde el ordenador","Replace from computer":"Reemplazar desde el ordenador","Upload image from computer":"Subir imagen desde el ordenador","Image from computer":"Imagen del ordenador","From computer":"Desde el ordenador","Replace image from computer":"Reemplazar imagen del ordenador","Upload failed":"Fallo en la subida","You have no image upload permissions.":"No tienes permiso para subir imágenes.","Image toolbar":"Barra de herramientas de imagen","Resize image":"Redimensionar imagen","Resize image to %0":"Redimensionar imagen al %0","Resize image to the original size":"Redimensionar imagen al tamaño original","Resize image (in %0)":"Cambiar tamaño de la imagen (en un %0)",Original:"Original","Custom image size":"Personalizar tamaño de imagen",Custom:"Personalizar","Image resize list":"Listado para redimensionar imagen","Insert image via URL":"Insertar imagen vía URL","Insert via URL":"Insertar mediante URL","Image via URL":"Imagen mediante URL","Via URL":"Mediante URL","Update image URL":"Actualizar imagen vía URL","Caption for the image":"Descripción de la imagen","Caption for image: %0":"Título de la imagen: %0","The value must not be empty.":"El valor no puede estar vacío.","The value should be a plain number.":"El valor debe ser un número simple.","Uploading image":"Cargando imagen","Image upload complete":"Carga de imagen completa","Error during image upload":"Error durante la carga de la imagen",Image:"Imagen","Image Resize":"Cambiar tamaño de la imagen","Text Alternative":"Texto alternativo","HTML object":"Objeto HTML","Insert HTML":"Insertar HTML","HTML snippet":"Fragmento HTML","Paste raw HTML here...":"Pegue el código HTML aquí…","Edit source":"Editar fuente","Save changes":"Guardar cambios","No preview available":"No hay ninguna previsualización","Empty snippet content":"Fragmento vacío","Horizontal line":"Línea horizontal","Yellow marker":"Marcador amarillo","Green marker":"Marcador verde","Pink marker":"Marcador rosa","Blue marker":"Marcador azul","Red pen":"Texto rojo","Green pen":"Texto verde","Remove highlight":"Quitar resaltado",Highlight:"Resaltar","Text highlight toolbar":"Barra de herramientas de resaltado de texto",Heading:"Encabezado","Choose heading":"Elegir Encabezado","Heading 1":"Encabezado 1","Heading 2":"Encabezado 2","Heading 3":"Encabezado 3","Heading 4":"Encabezado 4","Heading 5":"Encabezado 5","Heading 6":"Encabezado 6","Type your title":"Introduce tu título","Type or paste your content here.":"Introduce o pega tu contenido aquí","Enter fullscreen mode":"Entrar al modo de pantalla completa","Leave fullscreen mode":"Salir del modo de pantalla completa","Fullscreen mode":"Modo de pantalla completa","Toggle fullscreen mode":"Alternar modo de pantalla completa","Document outline":"Boceto del documento","Connected users":"Usuarios conectados","Font Size":"Tamaño de fuente",Tiny:"Minúsculo",Small:"Pequeño",Big:"Grande",Huge:"Enorme","Font Family":"Fuente",Default:"Por defecto","Font Color":"Color de Fuente","Font Background Color":"Color de Fondo","Document colors":"Colores del documento","Find and replace":"Buscar y reemplazar","Find in text…":"Buscar en el texto...",Find:"Buscar","Previous result":"Resultado anterior","Next result":"Siguiente resultado",Replace:"Reemplazar","Replace all":"Reemplazar todo","Match case":"Respetar mayúsculas y minúsculas","Whole words only":"Solo palabras completas","Replace with…":"Reemplazar con...","Text to find must not be empty.":"El texto a buscar no debe estar vacío.","Tip: Find some text first in order to replace it.":"Consejo: Primero busque algún texto para reemplazar.","Advanced options":"Opciones avanzadas","Find in the document":"Busca en el documento","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Inserta un salto de línea (un elemento <code>&lt;br&gt;</code>)","Insert a hard break (a new paragraph)":"Inserta un salto de párrafo (un nuevo párrafo)",Emoji:"Emoji","Show all emoji...":"Mostrar todos los emojis...","Find an emoji (min. 2 characters)":"Busca un emoji (2 caracteres como mínimo)",'No emojis were found matching "%0".':"No se han encontrado emojis que coincidan con «%0».","Keep on typing to see the emoji.":"Sigue escribiendo para ver el emoji.","The query must contain at least two characters.":"La solicitud debe contener al menos dos caracteres.","Smileys & Expressions":"Emoticonos y expresiones","Gestures & People":"Gestos y personas","Animals & Nature":"Animales y naturaleza","Food & Drinks":"Comidas y bebidas","Travel & Places":"Viajes y lugares",Activities:"Actividades",Objects:"Objetos",Symbols:"Símbolos",Flags:"Banderas","Select skin tone":"Seleccionar tono de piel","Default skin tone":"Tono de piel predeterminado","Light skin tone":"Tono de piel claro","Medium Light skin tone":"Tono de piel medio claro","Medium skin tone":"Tono de piel medio","Medium Dark skin tone":"Tono de piel medio oscuro","Dark skin tone":"Tono de piel oscuro","Emoji picker":"Selector de emojis",Cancel:"Cancelar",Clear:"Borrar","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados",Save:"Guardar","Show more items":"Mostrar más elementos","%0 of %1":"%0 de %1","Cannot upload file:":"No se pudo cargar el archivo:","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0","Insert with file manager":"Insertar con administrador de archivos","Replace with file manager":"Reemplazar con administrador de archivos","Insert image with file manager":"Insertar imagen con administrador de archivos","Replace image with file manager":"Reemplazar imagen con administrador de archivos",File:"Archivo","With file manager":"Con el administrador de archivos","Toggle caption off":"Desactivar título","Toggle caption on":"Activar título","Content editing keystrokes":"Teclas de edición de contenido","These keyboard shortcuts allow for quick access to content editing features.":"Estos atajos de teclado permiten acceder rápidamente a las funciones de edición de contenido.","User interface and content navigation keystrokes":"Teclas de navegación de contenido e interfaz de usuario","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Utilice las siguientes combinaciones de teclas para una navegación más eficiente en la interfaz de usuario de CKEditor 5.","Close contextual balloons, dropdowns, and dialogs":"Cierra globos contextuales, menús desplegables y cuadros de diálogo","Open the accessibility help dialog":"Abre el cuadro de diálogo de ayuda de accesibilidad","Move focus between form fields (inputs, buttons, etc.)":"Mueve el foco entre campos de formulario (entradas, botones, etc.)","Move focus to the menu bar, navigate between menu bars":"Mover el foco a la barra de menú, navegar entre las barras de menú","Move focus to the toolbar, navigate between toolbars":"Mueve el foco a la barra de herramientas y navega entre barras de herramientas","Navigate through the toolbar or menu bar":"Navegar por la barra de herramientas o la barra de menú","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Ejecutar el botón actualmente enfocado. Al ejecutar botones que interactúan con el contenido del editor, el foco vuelve al contenido.",Accept:"Aceptar",Paragraph:"Párrafo","Color picker":"Selector de color","Please try a different phrase or check the spelling.":"Intente con una frase diferente o revise la ortografía.",Source:"Fuente",Insert:"Insertar",Update:"Actualizar",Back:"Volver","Insert code block":"Insertar bloque de código","Plain text":"Texto plano","Leaving %0 code snippet":"Abandonando fragmento de código %0","Entering %0 code snippet":"Ingresando fragmento de código %0","Entering code snippet":"Ingresando fragmento de código","Leaving code snippet":"Abandonando fragmento de código","Code block":"Bloque de código","Copy selected content":"Copia el contenido seleccionado","Paste content":"Pega el contenido","Paste content as plain text":"Pega el contenido como texto sin formato","Insert image or file":"Insertar imagen o archivo","Could not obtain resized image URL.":"No se pudo obtener el URL de la imagen redimensionada.","Selecting resized image failed":"No se pudo seleccionar la imagen redimensionada","Could not insert image at the current position.":"No se pudo insertar la imagen en la posición actual.","Inserting image failed":"Error al insertar la imagen",Bookmark:"Marcador","Edit bookmark":"Editar marcador","Remove bookmark":"Eliminar marcador","Bookmark name":"Nombre del marcador","Enter the bookmark name without spaces.":"Introduzca el nombre del marcador sin espacios.","Bookmark must not be empty.":"El marcador no debe estar vacío.","Bookmark name cannot contain space characters.":"El nombre del marcador no puede contener espacios.","Bookmark name already exists.":"Ya existe el nombre del marcador.","bookmark widget":"Módulo interactivo del marcador","Bookmark toolbar":"Barra de marcadores",Bookmarks:"Marcadores","No bookmarks available.":"No hay marcadores disponibles.","Scroll to bookmark":"Desplazarse hasta el marcador","Open file manager":"Abrir gestor de archivos","Cannot determine a category for the uploaded file.":"No se puede determinar una categoría para el archivo subido.","Cannot access default workspace.":"No se puede acceder al espacio de trabajo predeterminado.","You have no image editing permissions.":"No tienes permiso para editar imágenes.","Edit image":"Editar imagen","Processing the edited image.":"Procesando la imagen editada.","Server failed to process the image.":"El servidor no pudo procesar la imagen.","Failed to determine category of edited image.":"No se pudo determinar la categoría de la imagen editada.","Block quote":"Bloque de cita",Bold:"Negrita",Italic:"Cursiva",Underline:"Subrayado",Code:"Código",Strikethrough:"Tachado",Subscript:"Subíndice",Superscript:"Superíndice","Italic text":"Texto en cursiva","Move out of an inline code style":"Sale de un estilo de código en línea","Bold text":"Texto en negrita","Underline text":"Subraya el texto","Strikethrough text":"Tacha el texto","Saving changes":"Guardando cambios","Revert autoformatting action":"Revierte la acción de formato automático","Align left":"Alinear a la izquierda","Align right":"Alinear a la derecha","Align center":"Centrar",Justify:"Justificar","Text alignment":"Alineación del texto","Text alignment toolbar":"Barra de herramientas de alineación del texto"},getPluralForm(o){return o!=1}}};/**
387
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
388
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
389
+ */const XP={fr:{dictionary:{"Words: %0":"Mots : %0","Characters: %0":"Caractères : %0","Widget toolbar":"Barre d'outils du widget","Insert paragraph before block":"Insérer du texte avant ce bloc","Insert paragraph after block":"Insérer du texte après ce bloc","Press Enter to type after or press Shift + Enter to type before the widget":"Appuyez sur la touche Entrée pour taper après ou sur Maj + Entrée pour taper avant le widget.","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Frappes de touches pouvant être utilisées lorsqu'un widget est sélectionné (par exemple : image, tableau, etc.)","Insert a new paragraph directly after a widget":"Insérer un nouveau paragraphe directement après un widget","Insert a new paragraph directly before a widget":"Insérer un nouveau paragraphe directement avant un widget","Move the caret to allow typing directly before a widget":"Déplacez le curseur pour permettre la saisie directement avant un widget","Move the caret to allow typing directly after a widget":"Déplacez le curseur pour permettre de taper directement après un widget","Move focus from an editable area back to the parent widget":"Déplacer le focus d'une zone modifiable vers le widget parent","Upload in progress":"Téléchargement en cours",Undo:"Annuler",Redo:"Restaurer","Rich Text Editor":"Éditeur de texte enrichi","Edit block":"Modifier le bloc","Click to edit block":"Cliquer pour modifier le bloc","Drag to move":"Faire glisser pour déplacer",Next:"Suivant",Previous:"Précedent","Editor toolbar":"Barre d'outils de l'éditeur","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Dropdown menu":"Menu déroulant",Black:"Noir","Dim grey":"Gris pâle",Grey:"Gris","Light grey":"Gris clair",White:"Blanc",Red:"Rouge",Orange:"Orange",Yellow:"Jaune","Light green":"Vert clair",Green:"Vert",Aquamarine:"Bleu vert",Turquoise:"Turquoise","Light blue":"Bleu clair",Blue:"Bleu",Purple:"Violet","Editor block content toolbar":"Barre d'outils du contenu du bloc éditeur","Editor contextual toolbar":"Barre d'outils contextuelle de l'éditeur",HEX:"HEX","No results found":"Aucun résultat trouvé","No searchable items":"Aucun élément consultable","Editor dialog":"Boîte de dialogue de l'éditeur",Close:"Fermer","Help Contents. To close this dialog press ESC.":"Contenu de l'aide. Pour fermer cette boîte de dialogue, appuyez sur ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Ci-dessous, vous trouverez une liste de raccourcis clavier pouvant être utilisés dans l’éditeur.","(may require <kbd>Fn</kbd>)":"(peut nécessiter <kbd> Fn </kbd> )",Accessibility:"Accessibilité","Accessibility help":"Aide à l'accessibilité","Press %0 for help.":"Appuyez sur %0 pour obtenir de l'aide.","Move focus in and out of an active dialog window":"Déplacer le focus vers et hors d'une fenêtre de dialogue active",MENU_BAR_MENU_FILE:"Fichier",MENU_BAR_MENU_EDIT:"Éditer",MENU_BAR_MENU_VIEW:"Afficher",MENU_BAR_MENU_INSERT:"Insérer",MENU_BAR_MENU_FORMAT:"Format",MENU_BAR_MENU_TOOLS:"Outils",MENU_BAR_MENU_HELP:"Aide",MENU_BAR_MENU_TEXT:"Texte",MENU_BAR_MENU_FONT:"Police de caractère","Editor menu bar":"Barre de menu de l'éditeur",'Please enter a valid color (e.g. "ff0000").':"Veuillez saisir une couleur valide (par exemple « ff0000 »).","Insert table":"Insérer un tableau","Header column":"Colonne d'entête","Insert column left":"Insérer une colonne à gauche","Insert column right":"Insérer une colonne à droite","Delete column":"Supprimer la colonne","Select column":"Sélectionner la colonne",Column:"Colonne","Header row":"Ligne d'entête","Insert row below":"Insérer une ligne en-dessous","Insert row above":"Insérer une ligne au-dessus","Delete row":"Supprimer la ligne","Select row":"Sélectionner la ligne",Row:"Ligne","Merge cell up":"Fusionner la cellule au-dessus","Merge cell right":"Fusionner la cellule à droite","Merge cell down":"Fusionner la cellule en-dessous","Merge cell left":"Fusionner la cellule à gauche","Split cell vertically":"Scinder la cellule verticalement","Split cell horizontally":"Scinder la cellule horizontalement","Merge cells":"Fusionner les cellules","Table toolbar":"Barre d'outils des tableaux","Table properties":"Propriétés du tableau","Cell properties":"Propriétés de la cellule",Border:"Bordure",Style:"Style",Width:"Largeur",Height:"Hauteur",Color:"Couleur",Background:"Fond",Padding:"Remplissage pour aérer le texte",Dimensions:"Dimensions","Table cell text alignment":"Alignement du texte de la cellule",Alignment:"Alignement","Horizontal text alignment toolbar":"Barre d'outils pour modifier l'alignement horizontal du texte","Vertical text alignment toolbar":"Barre d'outils pour modifier l'alignement vertical du texte","Table alignment toolbar":"Barre d'outils pour modifier l'alignement du tableau",None:"Aucun",Solid:"Continu",Dotted:"Pointillés",Dashed:"Tirets",Double:"Double",Groove:"Rainuré",Ridge:"Relief",Inset:"Relief intérieur",Outset:"Relief extérieur","Align cell text to the left":"Aligner la cellule à gauche","Align cell text to the center":"Aligner la cellule au centre","Align cell text to the right":"Aligner la cellule à droite","Justify cell text":"Justifier le contenu de la cellule","Align cell text to the top":"Aligner le texte en haut","Align cell text to the middle":"Aligner le texte au milieu","Align cell text to the bottom":"Aligner le texte en bas","Align table to the left":"Aligner le tableau à gauche","Center table":"Centrer le tableau ","Align table to the right":"Aligner le tableau à droite",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'La couleur est invalide. Essayez "#FF0000" ou "rgb(255,0,0)" ou "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'La valeur est invalide. Essayez "10px" ou "2em" ou simplement "2".',"Enter table caption":"Saisir la légende du tableau","Keystrokes that can be used in a table cell":"Frappes de touches pouvant être utilisées dans une cellule de tableau","Move the selection to the next cell":"Déplacer la sélection vers la cellule suivante","Move the selection to the previous cell":"Déplacer la sélection vers la cellule précédente","Insert a new table row (when in the last cell of a table)":"Insérer une nouvelle ligne de tableau (dans la dernière cellule d'un tableau)","Navigate through the table":"Naviguer dans le tableau",Table:"Tableau","Insert table layout":"Insérer une mise en page de tableau","Table layout":"Mise en page de tableau","Layout table":"Tableau de mise en page","Content table":"Tableau de contenu","Choose table type":"Choisir le type de tableau","Table type":"Type de tableau","Table type options":"Options de type de tableau",Styles:"Styles","Multiple styles":"Styles multiples","Block styles":"Styles de bloc","Text styles":"Styles de texte","Special characters":"Caractères spéciaux",Category:"Catégorie",All:"Tous",Arrows:"Flèches",Currency:"Devise",Latin:"Latin",Mathematical:"Mathématique",Text:"Texte","leftwards simple arrow":"flèche simple vers la gauche","rightwards simple arrow":"flèche simple vers la droite","upwards simple arrow":"flèche simple vers le haut","downwards simple arrow":"flèche simple vers le bas","leftwards double arrow":"Double flèche vers la gauche","rightwards double arrow":"Double flèche vers la droite","upwards double arrow":"Double flèche vers le haut","downwards double arrow":"Double flèche vers le bas","leftwards dashed arrow":"Flèche en pointillés vers la gauche","rightwards dashed arrow":"Flèche en pointillés vers la droite","upwards dashed arrow":"Flèche en pointillés vers le haut","downwards dashed arrow":"Flèche en pointillés vers le bas","leftwards arrow to bar":"Flèche vers la gauche avec barre de fin","rightwards arrow to bar":"Flèche vers la droite avec barre de fin","upwards arrow to bar":"Flèche vers le haut avec barre de fin","downwards arrow to bar":"Flèche vers le bas avec barre de fin","up down arrow with base":"Flèche haut et bas avec barre de fin","back with leftwards arrow above":"Précédent avec flèche vers la gauche","end with leftwards arrow above":"Fin avec flèche vers la gauche","on with exclamation mark with left right arrow above":"Allumé avec flèches vers la gauche et la droite","soon with rightwards arrow above":"Bientôt avec flèche vers la droite","top with upwards arrow above":"Haut avec flèche vers le haut","Dollar sign":"Dollar","Euro sign":"Euro","Yen sign":"Yen","Pound sign":"Livre sterling","Cent sign":"Centime","Euro-currency sign":"Symbole monétaire de l'euro","Colon sign":"Deux points","Cruzeiro sign":"Cruzeiro","French franc sign":"Franc français","Lira sign":"Lire","Currency sign":"Symbole monétaire","Bitcoin sign":"Bitcoin","Mill sign":"Moulin","Naira sign":"Naira","Peseta sign":"Peseta","Rupee sign":"Roupie","Won sign":"Won","New sheqel sign":"Shekel","Dong sign":"Dong","Kip sign":"Kip","Tugrik sign":"Tugrik","Drachma sign":"Drachme","German penny sign":"Pfennig","Peso sign":"Peso","Guarani sign":"Guarani","Austral sign":"Austral","Hryvnia sign":"Hryvnia","Cedi sign":"Cédi","Livre tournois sign":"Livre tournois","Spesmilo sign":"Spesmilo","Tenge sign":"Tenge","Indian rupee sign":"Roupie indienne","Turkish lira sign":"Lire turque","Nordic mark sign":"Mark nordique","Manat sign":"Manat","Ruble sign":"Rouble","Latin capital letter a with macron":"A barre majuscule","Latin small letter a with macron":"A barre minuscule","Latin capital letter a with breve":"A bref majuscule","Latin small letter a with breve":"A bref minuscule","Latin capital letter a with ogonek":"A ogonek majuscule","Latin small letter a with ogonek":"A ogonek minuscule","Latin capital letter c with acute":"C accent aigu majuscule","Latin small letter c with acute":"C accent aigu minuscule","Latin capital letter c with circumflex":"C circonflexe majuscule","Latin small letter c with circumflex":"C circonflexe minuscule","Latin capital letter c with dot above":"C point suscrit majuscule","Latin small letter c with dot above":"C point suscrit minuscule","Latin capital letter c with caron":"C caron majuscule","Latin small letter c with caron":"C caron minuscule","Latin capital letter d with caron":"D caron majuscule","Latin small letter d with caron":"C caron minuscule","Latin capital letter d with stroke":"D barré majuscule","Latin small letter d with stroke":"D barré minuscule","Latin capital letter e with macron":"E macron majuscule","Latin small letter e with macron":"E macron minuscule","Latin capital letter e with breve":"E bref majuscule","Latin small letter e with breve":"E bref minuscule","Latin capital letter e with dot above":"E point suscrit majuscule","Latin small letter e with dot above":"E point suscrit minuscule","Latin capital letter e with ogonek":"E ogonek majuscule","Latin small letter e with ogonek":"E ogonek minuscule","Latin capital letter e with caron":"E caron majuscule","Latin small letter e with caron":"E caron minuscule","Latin capital letter g with circumflex":"G accent circonflexe majuscule","Latin small letter g with circumflex":"G accent circonflexe minuscule","Latin capital letter g with breve":"G bref majuscule","Latin small letter g with breve":"G bref minuscule","Latin capital letter g with dot above":"G point suscrit majuscule","Latin small letter g with dot above":"G point suscrit minuscule","Latin capital letter g with cedilla":"G cédille majuscule","Latin small letter g with cedilla":"G cédille minuscule","Latin capital letter h with circumflex":"H accent circonflexe majuscule","Latin small letter h with circumflex":"H accent circonflexe minuscule","Latin capital letter h with stroke":"H barré majuscule","Latin small letter h with stroke":"H barré minuscule","Latin capital letter i with tilde":"I tilde majuscule","Latin small letter i with tilde":"I tilde minuscule","Latin capital letter i with macron":"I macron majuscule","Latin small letter i with macron":"I macron minuscule","Latin capital letter i with breve":"I bref majuscule","Latin small letter i with breve":"I bref minuscule","Latin capital letter i with ogonek":"I ogonek majuscule","Latin small letter i with ogonek":"I ogonek minuscule","Latin capital letter i with dot above":"I point suscrit majuscule","Latin small letter dotless i":"I sans point minuscule","Latin capital ligature ij":"Digramme soudé IJ majuscule","Latin small ligature ij":"Digramme soudé IJ minuscule","Latin capital letter j with circumflex":"J accent circonflexe majuscule","Latin small letter j with circumflex":"J accent circonflexe minuscule","Latin capital letter k with cedilla":"K cédille majuscule","Latin small letter k with cedilla":"K cédille minuscule","Latin small letter kra":"Kra minuscule","Latin capital letter l with acute":"L accent aigu majuscule","Latin small letter l with acute":"L accent aigu minuscule","Latin capital letter l with cedilla":"L cédille majuscule","Latin small letter l with cedilla":"L cédille minuscule","Latin capital letter l with caron":"L caron majuscule","Latin small letter l with caron":"L caron minuscule","Latin capital letter l with middle dot":"L point médian majuscule","Latin small letter l with middle dot":"L point médian minuscule","Latin capital letter l with stroke":"L barré majuscule","Latin small letter l with stroke":"L barré minuscule","Latin capital letter n with acute":"N accent aigu majuscule","Latin small letter n with acute":"N accent aigu minuscule","Latin capital letter n with cedilla":"N cédille majuscule","Latin small letter n with cedilla":"N cédille minuscule","Latin capital letter n with caron":"N caron majuscule","Latin small letter n with caron":"N caron minuscule","Latin small letter n preceded by apostrophe":"Apostrophe N minuscule","Latin capital letter eng":"Eng majuscule","Latin small letter eng":"Eng minuscule","Latin capital letter o with macron":"O macron majuscule","Latin small letter o with macron":"O macron minuscule","Latin capital letter o with breve":"O bref majuscule","Latin small letter o with breve":"O bref minuscule","Latin capital letter o with double acute":"O double accent aigu majuscule","Latin small letter o with double acute":"O double accent aigu minuscule","Latin capital ligature oe":"O-E entrelacé majuscule","Latin small ligature oe":"O-E entrelacé minuscule","Latin capital letter r with acute":"R accent aigu majuscule","Latin small letter r with acute":"R accent aigu minuscule","Latin capital letter r with cedilla":"R cédille majuscule","Latin small letter r with cedilla":"R cédille minuscule","Latin capital letter r with caron":"R caron majuscule","Latin small letter r with caron":"R caron minuscule","Latin capital letter s with acute":"S accent aigu majuscule","Latin small letter s with acute":"S accent aigu minuscule","Latin capital letter s with circumflex":"S circonflexe majuscule","Latin small letter s with circumflex":"S circonflexe minuscule","Latin capital letter s with cedilla":"S cédille majuscule","Latin small letter s with cedilla":"S cédille minuscule","Latin capital letter s with caron":"S caron majuscule","Latin small letter s with caron":"S caron minuscule","Latin capital letter t with cedilla":"T cédille majuscule","Latin small letter t with cedilla":"T cédille minuscule","Latin capital letter t with caron":"T caron majuscule","Latin small letter t with caron":"T caron minuscule","Latin capital letter t with stroke":"T barré majuscule","Latin small letter t with stroke":"T barré minuscule","Latin capital letter u with tilde":"U tilde majuscule","Latin small letter u with tilde":"U tilde minuscule","Latin capital letter u with macron":"U macron majuscule","Latin small letter u with macron":"U macron minuscule","Latin capital letter u with breve":"U bref majuscule","Latin small letter u with breve":"U bref minuscule","Latin capital letter u with ring above":"U rond en chef majuscule","Latin small letter u with ring above":"U rond en chef minuscule","Latin capital letter u with double acute":"U double accent aigu majuscule","Latin small letter u with double acute":"U double accent aigu minuscule","Latin capital letter u with ogonek":"U ogonek majuscule","Latin small letter u with ogonek":"U ogonek minuscule","Latin capital letter w with circumflex":"W circonflexe majuscule","Latin small letter w with circumflex":"W circonflexe minuscule","Latin capital letter y with circumflex":"Y circonflexe majuscule","Latin small letter y with circumflex":"Y circonflexe minuscule","Latin capital letter y with diaeresis":"Y tréma majuscule","Latin capital letter z with acute":"Z accent circonflexe majuscule","Latin small letter z with acute":"Z accent circonflexe minuscule","Latin capital letter z with dot above":"Z point suscrit majuscule","Latin small letter z with dot above":"Z point suscrit minuscule","Latin capital letter z with caron":"Z caron majuscule","Latin small letter z with caron":"Z caron minuscule","Latin small letter long s":"S long minuscule","Less-than sign":"Signe inférieur","Greater-than sign":"Signe supérieur","Less-than or equal to":"Signe inférieur ou égal","Greater-than or equal to":"Signe supérieur ou égal","En dash":"Tiret","Em dash":"Tiret long",Macron:"Macron",Overline:"Macron long","Degree sign":"Degré","Minus sign":"Moins","Plus-minus sign":"Plus ou moins","Division sign":"Division","Fraction slash":"Fraction","Multiplication sign":"Multiplication","Latin small letter f with hook":"Fonction",Integral:"Intégrale","N-ary summation":"Somme",Infinity:"Infini","Square root":"Racine carrée","Tilde operator":"Tilde","Approximately equal to":"Environ égal à","Almost equal to":"Presque égal à","Not equal to":"Différent de","Identical to":"Identique à","Element of":"Appartient à","Not an element of":"N'appartient pas à","Contains as member":"Contient","N-ary product":"Produit","Logical and":"Et logique","Logical or":"Ou logique","Not sign":"Négation logique",Intersection:"Intersection",Union:"Union","Partial differential":"Partiellement différent","For all":"Pour tout","There exists":"Existe","Empty set":"Élément vide",Nabla:"Nabla","Asterisk operator":"Astérisque","Proportional to":"Proportionnel à",Angle:"Angle","Vulgar fraction one quarter":"Un quart","Vulgar fraction one half":"Un demi","Vulgar fraction three quarters":"Trois quarts","Single left-pointing angle quotation mark":"Guillemet simple vers la gauche","Single right-pointing angle quotation mark":"Guillemet simple vers la droite","Left-pointing double angle quotation mark":"Guillemet double vers la gauche","Right-pointing double angle quotation mark":"Guillemet double vers la droite","Left single quotation mark":"Guillemet-apostrophe culbuté","Right single quotation mark":"Guillemet-apostrophe","Left double quotation mark":"Guillemet-apostrophe double culbuté","Right double quotation mark":"Guillemet-apostrophe double","Single low-9 quotation mark":"Guillemet-virgule inférieur","Double low-9 quotation mark":"Guillemet-virgule double inférieur","Inverted exclamation mark":"Point d'exclamation inversé","Inverted question mark":"Point d'interrogation inversé","Two dot leader":"Deux points","Horizontal ellipsis":"Trois points","Double dagger":"Croix de Lorraine","Per mille sign":"Pour mille","Per ten thousand sign":"Pour dix milles","Double exclamation mark":"Double point d'exclamation","Question exclamation mark":"Point d'interrogation et exclamation","Exclamation question mark":"Point exclamation et question","Double question mark":"Double point d'interrogation","Copyright sign":"Copyright","Registered sign":"Registered","Trade mark sign":"Marque déposée","Section sign":"Paragraphe","Paragraph sign":"Fin de paragraphe","Reversed paragraph sign":"Fin de paragraphe inversé","Show source":"Afficher la source","Show blocks":"Afficher les blocs","Select all":"Sélectionner tout","Disable editing":"Désactiver l'édition","Enable editing":"Activer l'édition","Previous editable region":"Région éditable précédente","Next editable region":"Région éditable suivante","Navigate editable regions":"Naviguer vers","Remove Format":"Enlever le format","Page break":"Séparation de page","media widget":"Widget média","Media URL":"URL de média","Paste the media URL in the input.":"Coller l'URL du média","Tip: Paste the URL into the content to embed faster.":"Astuce : Copier l'URL du média dans le contenu pour l'insérer plus rapidement","The URL must not be empty.":"L'URL ne doit pas être vide.","This media URL is not supported.":"Cette URL de média n'est pas supportée.","Insert media":"Insérer un média",Media:"Média","Media toolbar":"Barre d'outils des médias","Open media in new tab":"Ouvrir le média dans un nouvel onglet","Media embed":"Intégration de médias","Numbered List":"Liste numérotée","Bulleted List":"Liste à puces","To-do List":"Liste de tâches","Bulleted list styles toolbar":"Barre d'outils des styles de liste à puce","Numbered list styles toolbar":"Barre d'outils des styles de liste numérotée","Toggle the disc list style":'Activer / désactiver le style de liste "disque"',"Toggle the circle list style":'Activer / désactiver le style de liste "cercle"',"Toggle the square list style":'Activer / désactiver le style de liste "carré"',"Toggle the decimal list style":'Activer / désactiver le style de liste "chiffres"',"Toggle the decimal with leading zero list style":'Activer / désactiver le style de liste "chiffres de mêmes longueurs"',"Toggle the lower–roman list style":'Activer / désactiver le style de liste "chiffres romains en minuscules"',"Toggle the upper–roman list style":'Activer / désactiver le style de liste "chiffres romains en majuscules"',"Toggle the lower–latin list style":'Activer / désactiver le style de liste "lettres minuscules"',"Toggle the upper–latin list style":'Activer / désactiver le style de liste "lettres majuscules"',Disc:"Disque",Circle:"Cercle",Square:"Carré",Decimal:"Chiffres","Decimal with leading zero":"Chiffres avec des zéros supplémentaire","Lower–roman":"Chiffres romains en minuscules","Upper-roman":"Chiffres romains en majuscules","Lower-latin":"Lettres minuscules","Upper-latin":"Lettres majuscules","List properties":"Liste des propriétés","Start at":"Commencer à","Invalid start index value.":"Valeur d'index de départ invalide.","Start index must be greater than 0.":"L'indice de départ doit être supérieur à 0.","Reversed order":"Ordre inversé","Keystrokes that can be used in a list":"Frappes de touches pouvant être utilisées dans une liste","Increase list item indent":"Augmenter le retrait des éléments de liste","Decrease list item indent":"Diminuer le retrait des éléments de liste","Entering a to-do list":"Saisie d'une liste de tâches","Leaving a to-do list":"Laisser une liste de tâches",Unlink:"Supprimer le lien",Link:"Lien","Link URL":"URL du lien","Link URL must not be empty.":"L'URL du lien ne doit pas être vide.","Link image":"Lien d'image","Edit link":"Modifier le lien","Open link in new tab":"Ouvrir le lien dans un nouvel onglet","Open in a new tab":"Ouvrir dans un nouvel onglet",Downloadable:"Fichier téléchargeable","Create link":"Créer un lien","Move out of a link":"Sortir d'un lien","Link properties":"Propriétés du lien","Displayed text":"Texte affiché","No links available":"Aucun lien disponible",Language:"Langue","Choose language":"Choisir la langue","Remove language":"Supprimer la langue","Increase indent":"Augmenter le retrait","Decrease indent":"Diminuer le retrait","image widget":"Objet image","Wrap text":"Retour à la ligne","Break text":"Saut de ligne","In line":"Aligné","Side image":"Image latérale","Full size image":"Image taille réelle","Left aligned image":"Image alignée à gauche","Centered image":"Image centrée","Right aligned image":"Image alignée à droite","Change image text alternative":"Changer le texte alternatif à l’image","Text alternative":"Texte alternatif","Enter image caption":"Saisir la légende de l’image","Insert image":"Insérer une image","Replace image":"Remplacer l'image","Upload from computer":"Télécharger depuis l'ordinateur","Replace from computer":"Remplacer depuis l'ordinateur","Upload image from computer":"Télécharger une image depuis l'ordinateur","Image from computer":"Image provenant d'un ordinateur","From computer":"Depuis l'ordinateur","Replace image from computer":"Remplacer l'image depuis l'ordinateur","Upload failed":"Échec de l'envoi","You have no image upload permissions.":"Vous n'êtes pas autorisé à télécharger des images.","Image toolbar":"Barre d'outils des images","Resize image":"Redimensionner l'image","Resize image to %0":"Redimensionner à %0","Resize image to the original size":"Appliquer les dimensions d'origine","Resize image (in %0)":"Redimensionner l'image (en %0)",Original:"Taille originale","Custom image size":"Taille d'image personnalisée",Custom:"Personnalisé","Image resize list":"Liste des tailles d'images","Insert image via URL":"Insérer une image à partir d'une URL","Insert via URL":"Insérer par URL","Image via URL":"Image par URL","Via URL":"Par URL","Update image URL":"Modifier l'URL de l'image","Caption for the image":"Légende de l'image","Caption for image: %0":"Légende de l'image : %0","The value must not be empty.":"La valeur ne doit pas être vide.","The value should be a plain number.":"La valeur doit être un nombre simple.","Uploading image":"Téléchargement de l'image","Image upload complete":"Téléchargement de l'image terminé","Error during image upload":"Une erreur s'est produite lors du téléchargement de l'image.",Image:"Image","Image Resize":"Redimensionnement de l'image","Text Alternative":"Alternative textuelle","HTML object":"Objet HTML","Insert HTML":"Insérer du code HTML","HTML snippet":"Code HTML","Paste raw HTML here...":"Collez le code HTML brut ici...","Edit source":"Modifier la source","Save changes":"Enregistrer les changements","No preview available":"Aucun aperçu disponible","Empty snippet content":"Aucun contenu pour ce fragment de code","Horizontal line":"Ligne horizontale","Yellow marker":"Marqueur jaune","Green marker":"Marqueur vert","Pink marker":"Marqueur rose","Blue marker":"Marqueur bleu","Red pen":"Crayon rouge","Green pen":"Crayon vert","Remove highlight":"Enlever le surlignage",Highlight:"Surlignage","Text highlight toolbar":"Barre d'outils du surlignage",Heading:"En-tête","Choose heading":"Choisir l'en-tête","Heading 1":"Titre 1","Heading 2":"Titre 2","Heading 3":"Titre 3","Heading 4":"Titre 4","Heading 5":"Titre 5","Heading 6":"Titre 6","Type your title":"Rentrer votre titre","Type or paste your content here.":"Noter ou coller votre contenu ici","Enter fullscreen mode":"Accéder au mode plein écran","Leave fullscreen mode":"Quitter le mode plein écran","Fullscreen mode":"Mode plein écran","Toggle fullscreen mode":"Activer/désactiver le mode plein écran","Document outline":"Plan du document","Connected users":"Utilisateurs connectés","Font Size":"Taille de police",Tiny:"Minuscule",Small:"Petit",Big:"Grand",Huge:"Enorme","Font Family":"Police",Default:"Par défaut","Font Color":"Couleur de police","Font Background Color":"Couleur d'arrière-plan","Document colors":"Couleurs du document","Find and replace":"Rechercher et remplacer","Find in text…":"Rechercher dans le texte...",Find:"Rechercher","Previous result":"Résultat précédent","Next result":"Résultat suivant",Replace:"Remplacer","Replace all":"Remplacer tout","Match case":"Sensible à la casse","Whole words only":"Mots entiers uniquement","Replace with…":"Remplacer par ...","Text to find must not be empty.":"L'expression à rechercher ne doit pas être vide","Tip: Find some text first in order to replace it.":"Astuce : rechercher une expression afin de la remplacer","Advanced options":"Options avancées","Find in the document":"Rechercher dans le document","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Insérer un saut progressif (un élément <code> <br> </code> )","Insert a hard break (a new paragraph)":"Insérer une pause (un nouveau paragraphe)",Emoji:"Émoji","Show all emoji...":"Afficher tous les émojis...","Find an emoji (min. 2 characters)":"Trouver un émoji (min. deux caractères)",'No emojis were found matching "%0".':"Aucun émoji correspondant à « %0 » n'a été trouvé.","Keep on typing to see the emoji.":"Continuez à taper pour voir l'émoji.","The query must contain at least two characters.":"La requête doit contenir au moins deux caractères.","Smileys & Expressions":"Smileys et expressions","Gestures & People":"Gestes et personnes","Animals & Nature":"Animaux et nature","Food & Drinks":"Nourriture et boissons","Travel & Places":"Voyages et lieux",Activities:"Activités",Objects:"Objets",Symbols:"Symboles",Flags:"Drapeaux","Select skin tone":"Sélectionner la teinte de peau","Default skin tone":"Teinte de peau par défaut","Light skin tone":"Teint clair","Medium Light skin tone":"Teint moyennement clair","Medium skin tone":"Teint moyen","Medium Dark skin tone":"Teint moyennement foncé","Dark skin tone":"Teint foncé","Emoji picker":"Sélecteur d'émojis",Cancel:"Annuler",Clear:"Effacer","Remove color":"Enlever la couleur","Restore default":"Restaurer par défaut",Save:"Enregistrer","Show more items":"Montrer plus d'éléments","%0 of %1":"%0 sur %1","Cannot upload file:":"Envoi du fichier échoué :","Rich Text Editor. Editing area: %0":"Éditeur de texte enrichi. Zone d'édition : %0","Insert with file manager":"Insérer avec le gestionnaire de fichiers","Replace with file manager":"Remplacer avec le gestionnaire de fichiers","Insert image with file manager":"Insérer une image avec le gestionnaire de fichiers","Replace image with file manager":"Remplacer l'image avec le gestionnaire de fichiers",File:"Fichier","With file manager":"Avec le gestionnaire de fichiers","Toggle caption off":"Désactiver la légende","Toggle caption on":"Activer la légende","Content editing keystrokes":"Touches d'édition de contenu","These keyboard shortcuts allow for quick access to content editing features.":"Ces raccourcis clavier permettent un accès rapide aux fonctionnalités d'édition de contenu.","User interface and content navigation keystrokes":"Interface utilisateur et frappes de navigation dans le contenu","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Utilisez les touches suivantes pour une navigation plus efficace dans l'interface utilisateur de CKEditor 5.","Close contextual balloons, dropdowns, and dialogs":"Fermer les bulles contextuelles, les listes déroulantes et les boîtes de dialogue","Open the accessibility help dialog":"Ouvrir la boîte de dialogue d'aide sur l'accessibilité","Move focus between form fields (inputs, buttons, etc.)":"Déplacer le focus entre les champs du formulaire (saisies, boutons, etc.)","Move focus to the menu bar, navigate between menu bars":"Déplacer le focus sur la barre du menu, naviguer entre les barres de menu","Move focus to the toolbar, navigate between toolbars":"Déplacez le focus sur la barre d'outils, naviguez entre les barres d'outils","Navigate through the toolbar or menu bar":"Naviguer sur la barre d'outils ou la barre de menu","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Exécuter le bouton sur lequel se trouve le focus. L'exécution de boutons qui interagissent avec le contenu de l'éditeur ramène le focus sur le contenu.",Accept:"Accepter",Paragraph:"Paragraphe","Color picker":"Pipette à couleurs","Please try a different phrase or check the spelling.":"Veuillez essayer une autre phrase ou vérifier l'orthographe.",Source:"Source",Insert:"Insérer",Update:"Mettre à jour",Back:"Retour","Insert code block":"Insérer un bloc de code","Plain text":"Texte brut","Leaving %0 code snippet":"Laisser un extrait de code %0","Entering %0 code snippet":"Saisie d'un extrait de code %0","Entering code snippet":"Saisie d'un extrait de code","Leaving code snippet":"Laisser un extrait de code","Code block":"Bloc de code","Copy selected content":"Copier le contenu sélectionné","Paste content":"Coller le contenu","Paste content as plain text":"Coller le contenu sous forme de texte brut","Insert image or file":"Insérer une image ou un fichier","Could not obtain resized image URL.":"Impossible d'obtenir l'image redimensionnée","Selecting resized image failed":"La sélection de l'image redimensionnée a échoué.","Could not insert image at the current position.":"Impossible d'insérer l'image à la position courante.","Inserting image failed":"L'insertion d'image a échoué.",Bookmark:"Favori","Edit bookmark":"Modifier le favori","Remove bookmark":"Supprimer le favori","Bookmark name":"Nom du favori","Enter the bookmark name without spaces.":"Saisir un nom de favori sans espaces.","Bookmark must not be empty.":"Le favori ne doit pas être vide.","Bookmark name cannot contain space characters.":"Le nom d'un favori ne peut pas contenir d'espaces.","Bookmark name already exists.":"Le nom du favori existe déjà.","bookmark widget":"widget pour favori","Bookmark toolbar":"Barre d'outils des signets",Bookmarks:"Signets","No bookmarks available.":"Aucun signet disponible.","Scroll to bookmark":"Faire défiler jusqu'au signet","Open file manager":"Ouvrir le gestionnaire de fichiers","Cannot determine a category for the uploaded file.":"Impossible de déterminer une catégorie pour le fichier téléchargé.","Cannot access default workspace.":"Impossible d'accéder à l'espace de travail par défaut.","You have no image editing permissions.":"Vous n'êtes pas autorisé à traiter des images.","Edit image":"Modifier l'image","Processing the edited image.":"Traitement de l'image modifiée.","Server failed to process the image.":"Le serveur n'a pas réussi à traiter l'image.","Failed to determine category of edited image.":"Échec de la détermination de la catégorie de l'image modifiée.","Block quote":"Citation",Bold:"Gras",Italic:"Italique",Underline:"Souligné",Code:"Code",Strikethrough:"Barré",Subscript:"Indice",Superscript:"Exposant","Italic text":"Texte en italique","Move out of an inline code style":"Sortir d'un style de code en ligne","Bold text":"Texte en gras","Underline text":"Souligner le texte","Strikethrough text":"Texte barré","Saving changes":"Enregistrement des modifications","Revert autoformatting action":"Annuler l'action de formatage automatique","Align left":"Aligner à gauche","Align right":"Aligner à droite","Align center":"Centrer",Justify:"Justifier","Text alignment":"Alignement du texte","Text alignment toolbar":"Barre d'outils d'alignement du texte"},getPluralForm(o){return o<=-2||o>=2}}};/**
390
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
391
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
392
+ */const QP={hi:{dictionary:{"Words: %0":"Words: %0","Characters: %0":"Characters: %0","Widget toolbar":"Widget toolbar","Insert paragraph before block":"Insert paragraph before block","Insert paragraph after block":"Insert paragraph after block","Press Enter to type after or press Shift + Enter to type before the widget":"विजेट के बाद टाइप करने के लिए एंटर दबाएं या पहले टाइप करने के लिए शिफ्ट+एंटर दबाएं","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"वे कीस्ट्रोक्स जिनका इस्तेमाल किसी विजेट के सेलेक्ट किए जाने पर किया जा सकता है (जैसे: इमेज, टेबल, आदि)","Insert a new paragraph directly after a widget":"किसी विजेट के ठीक आगे एक नया पैराग्राफ़ इंसर्ट करें","Insert a new paragraph directly before a widget":"किसी विजेट के ठीक पीछे एक नया पैराग्राफ़ इंसर्ट करें","Move the caret to allow typing directly before a widget":"किसी विजेट के ठीक पीछे टाइप करने के लिए कैरेट को मूव करें","Move the caret to allow typing directly after a widget":"किसी विजेट के ठीक आगे टाइप करने के लिए कैरेट को मूव करें","Move focus from an editable area back to the parent widget":"एक एडिटेबल एरिया से पेरेंट विजेट पर फ़ोकस वापिस लाएँ","Upload in progress":"Upload in progress",Undo:"Undo",Redo:"Redo","Rich Text Editor":"Rich Text Editor","Edit block":"Edit block","Click to edit block":"ब्लॉक एडिट करने के लिए क्लिक करें","Drag to move":"मूव करने के लिए ड्रैग करें",Next:"Next",Previous:"Previous","Editor toolbar":"Editor toolbar","Dropdown toolbar":"Dropdown toolbar","Dropdown menu":"ड्रापडाउन मेन्यू",Black:"Black","Dim grey":"Dim grey",Grey:"Grey","Light grey":"Light grey",White:"White",Red:"Red",Orange:"Orange",Yellow:"Yellow","Light green":"Light green",Green:"Green",Aquamarine:"Aquamarine",Turquoise:"Turquoise","Light blue":"Light blue",Blue:"Blue",Purple:"Purple","Editor block content toolbar":"एडीटर ब्लॉक कंटेंट टूलबार","Editor contextual toolbar":"एडीटर कॉन्टेक्स्टूअल टूलबार",HEX:"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:"Edit",MENU_BAR_MENU_VIEW:"दृश्य",MENU_BAR_MENU_INSERT:"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").',"Insert table":"Insert table","Header column":"Header column","Insert column left":"Insert column left","Insert column right":"Insert column right","Delete column":"Delete column","Select column":"Select column",Column:"Column","Header row":"Header row","Insert row below":"Insert row below","Insert row above":"Insert row above","Delete row":"Delete row","Select row":"Select row",Row:"Row","Merge cell up":"Merge cell up","Merge cell right":"Merge cell right","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Split cell vertically":"Split cell vertically","Split cell horizontally":"Split cell horizontally","Merge cells":"Merge cells","Table toolbar":"Table toolbar","Table properties":"Table properties","Cell properties":"Cell properties",Border:"Border",Style:"Style",Width:"Width",Height:"Height",Color:"Color",Background:"Background",Padding:"Padding",Dimensions:"Dimensions","Table cell text alignment":"Table cell text alignment",Alignment:"Alignment","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Vertical text alignment toolbar":"Vertical text alignment toolbar","Table alignment toolbar":"Table alignment toolbar",None:"None",Solid:"Solid",Dotted:"Dotted",Dashed:"Dashed",Double:"Double",Groove:"Groove",Ridge:"Ridge",Inset:"Inset",Outset:"Outset","Align cell text to the left":"Align cell text to the left","Align cell text to the center":"Align cell text to the center","Align cell text to the right":"Align cell text to the right","Justify cell text":"Justify cell text","Align cell text to the top":"Align cell text to the top","Align cell text to the middle":"Align cell text to the middle","Align cell text to the bottom":"Align cell text to the bottom","Align table to the left":"Align table to the left","Center table":"Center table","Align table to the right":"Align table to the right",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"Enter table caption":"टेबल कैप्शन एंटर करें","Keystrokes that can be used in a table cell":"वे कीस्ट्रोक्स जिनका इस्तेमाल एक टेबल सेल में किया जा सकता है","Move the selection to the next cell":"सेलेक्शन को अगले सेल में मूव करें","Move the selection to the previous cell":"सेलेक्शन को पिछले सेल में मूव करें","Insert a new table row (when in the last cell of a table)":"एक नई टेबल रो इंसर्ट करें (जब आप किसी टेबल के आख़िरी सेल में हों)","Navigate through the table":"टेबल में नैविगेट करें",Table:"टेबल","Insert table layout":"टेबल लेआउट सम्मिलित करें","Table layout":"टेबल लेआउट","Layout table":"लेआउट टेबल","Content table":"कंटेंट टेबल","Choose table type":"टेबल प्रकार चुनें","Table type":"टेबल प्रकार","Table type options":"टेबल प्रकार के विकल्प",Styles:"स्टाइल्स","Multiple styles":"कई स्टाइल्स","Block styles":"ब्लॉक स्टाइल्स","Text styles":"टेक्स्ट स्टाइल्स","Special characters":"Special characters",Category:"केटेगरी",All:"सभी",Arrows:"एरोज",Currency:"करेंसी",Latin:"लैटिन",Mathematical:"मैथमैटिकल",Text:"टेक्स्ट","leftwards simple arrow":"सिम्पल ऐरो बाएं तरफ","rightwards simple arrow":"सिम्पल ऐरो दाएं तरफ","upwards simple arrow":"सिम्पल ऐरो ऊपर की तरफ","downwards simple arrow":"सिम्पल ऐरो नीचे की तरफ","leftwards double arrow":"leftwards double arrow","rightwards double arrow":"rightwards double arrow","upwards double arrow":"upwards double arrow","downwards double arrow":"downwards double arrow","leftwards dashed arrow":"leftwards dashed arrow","rightwards dashed arrow":"rightwards dashed arrow","upwards dashed arrow":"upwards dashed arrow","downwards dashed arrow":"downwards dashed arrow","leftwards arrow to bar":"leftwards arrow to bar","rightwards arrow to bar":"rightwards arrow to bar","upwards arrow to bar":"upwards arrow to bar","downwards arrow to bar":"downwards arrow to bar","up down arrow with base":"up down arrow with base","back with leftwards arrow above":"back with leftwards arrow above","end with leftwards arrow above":"end with leftwards arrow above","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above","soon with rightwards arrow above":"soon with rightwards arrow above","top with upwards arrow above":"top with upwards arrow above","Dollar sign":"Dollar sign","Euro sign":"Euro sign","Yen sign":"Yen sign","Pound sign":"Pound sign","Cent sign":"Cent sign","Euro-currency sign":"Euro-currency sign","Colon sign":"Colon sign","Cruzeiro sign":"Cruzeiro sign","French franc sign":"French franc sign","Lira sign":"Lira sign","Currency sign":"Currency sign","Bitcoin sign":"Bitcoin sign","Mill sign":"Mill sign","Naira sign":"Naira sign","Peseta sign":"Peseta sign","Rupee sign":"Rupee sign","Won sign":"Won sign","New sheqel sign":"New sheqel sign","Dong sign":"Dong sign","Kip sign":"Kip sign","Tugrik sign":"Tugrik sign","Drachma sign":"Drachma sign","German penny sign":"German penny sign","Peso sign":"Peso sign","Guarani sign":"Guarani sign","Austral sign":"Austral sign","Hryvnia sign":"Hryvnia sign","Cedi sign":"Cedi sign","Livre tournois sign":"Livre tournois sign","Spesmilo sign":"Spesmilo sign","Tenge sign":"Tenge sign","Indian rupee sign":"Indian rupee sign","Turkish lira sign":"Turkish lira sign","Nordic mark sign":"Nordic mark sign","Manat sign":"Manat sign","Ruble sign":"Ruble sign","Latin capital letter a with macron":"Latin capital letter a with macron","Latin small letter a with macron":"Latin small letter a with macron","Latin capital letter a with breve":"Latin capital letter a with breve","Latin small letter a with breve":"Latin small letter a with breve","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin small letter c with acute":"Latin small letter c with acute","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin small letter c with dot above":"Latin small letter c with dot above","Latin capital letter c with caron":"Latin capital letter c with caron","Latin small letter c with caron":"Latin small letter c with caron","Latin capital letter d with caron":"Latin capital letter d with caron","Latin small letter d with caron":"Latin small letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin small letter d with stroke":"Latin small letter d with stroke","Latin capital letter e with macron":"Latin capital letter e with macron","Latin small letter e with macron":"Latin small letter e with macron","Latin capital letter e with breve":"Latin capital letter e with breve","Latin small letter e with breve":"Latin small letter e with breve","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin small letter e with dot above":"Latin small letter e with dot above","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin capital letter e with caron":"Latin capital letter e with caron","Latin small letter e with caron":"Latin small letter e with caron","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin capital letter g with breve":"Latin capital letter g with breve","Latin small letter g with breve":"Latin small letter g with breve","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin small letter g with dot above":"Latin small letter g with dot above","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin small letter h with stroke":"Latin small letter h with stroke","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin small letter i with tilde":"Latin small letter i with tilde","Latin capital letter i with macron":"Latin capital letter i with macron","Latin small letter i with macron":"Latin small letter i with macron","Latin capital letter i with breve":"Latin capital letter i with breve","Latin small letter i with breve":"Latin small letter i with breve","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin small letter dotless i":"Latin small letter dotless i","Latin capital ligature ij":"Latin capital ligature ij","Latin small ligature ij":"Latin small ligature ij","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin capital letter l with acute":"Latin capital letter l with acute","Latin small letter l with acute":"Latin small letter l with acute","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin capital letter l with caron":"Latin capital letter l with caron","Latin small letter l with caron":"Latin small letter l with caron","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin small letter l with stroke":"Latin small letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin small letter n with acute":"Latin small letter n with acute","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin capital letter n with caron":"Latin capital letter n with caron","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin capital letter eng":"Latin capital letter eng","Latin small letter eng":"Latin small letter eng","Latin capital letter o with macron":"Latin capital letter o with macron","Latin small letter o with macron":"Latin small letter o with macron","Latin capital letter o with breve":"Latin capital letter o with breve","Latin small letter o with breve":"Latin small letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin small letter o with double acute":"Latin small letter o with double acute","Latin capital ligature oe":"Latin capital ligature oe","Latin small ligature oe":"Latin small ligature oe","Latin capital letter r with acute":"Latin capital letter r with acute","Latin small letter r with acute":"Latin small letter r with acute","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin capital letter r with caron":"Latin capital letter r with caron","Latin small letter r with caron":"Latin small letter r with caron","Latin capital letter s with acute":"Latin capital letter s with acute","Latin small letter s with acute":"Latin small letter s with acute","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin capital letter s with caron":"Latin capital letter s with caron","Latin small letter s with caron":"Latin small letter s with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin capital letter t with caron":"Latin capital letter t with caron","Latin small letter t with caron":"Latin small letter t with caron","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin small letter t with stroke":"Latin small letter t with stroke","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin small letter u with tilde":"Latin small letter u with tilde","Latin capital letter u with macron":"Latin capital letter u with macron","Latin small letter u with macron":"Latin small letter u with macron","Latin capital letter u with breve":"Latin capital letter u with breve","Latin small letter u with breve":"Latin small letter u with breve","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin small letter u with ring above":"Latin small letter u with ring above","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin small letter u with double acute":"Latin small letter u with double acute","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin small letter z with acute":"Latin small letter z with acute","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin small letter z with dot above":"Latin small letter z with dot above","Latin capital letter z with caron":"Latin capital letter z with caron","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter long s":"Latin small letter long s","Less-than sign":"Less-than sign","Greater-than sign":"Greater-than sign","Less-than or equal to":"Less-than or equal to","Greater-than or equal to":"Greater-than or equal to","En dash":"En dash","Em dash":"Em dash",Macron:"Macron",Overline:"Overline","Degree sign":"Degree sign","Minus sign":"Minus sign","Plus-minus sign":"Plus-minus sign","Division sign":"Division sign","Fraction slash":"Fraction slash","Multiplication sign":"Multiplication sign","Latin small letter f with hook":"Latin small letter f with hook",Integral:"Integral","N-ary summation":"N-ary summation",Infinity:"Infinity","Square root":"Square root","Tilde operator":"Tilde operator","Approximately equal to":"Approximately equal to","Almost equal to":"Almost equal to","Not equal to":"Not equal to","Identical to":"Identical to","Element of":"Element of","Not an element of":"Not an element of","Contains as member":"Contains as member","N-ary product":"N-ary product","Logical and":"Logical and","Logical or":"Logical or","Not sign":"Not sign",Intersection:"Intersection",Union:"Union","Partial differential":"Partial differential","For all":"For all","There exists":"There exists","Empty set":"Empty set",Nabla:"Nabla","Asterisk operator":"Asterisk operator","Proportional to":"Proportional to",Angle:"Angle","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction three quarters":"Vulgar fraction three quarters","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","Left single quotation mark":"Left single quotation mark","Right single quotation mark":"Right single quotation mark","Left double quotation mark":"Left double quotation mark","Right double quotation mark":"Right double quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Two dot leader":"Two dot leader","Horizontal ellipsis":"Horizontal ellipsis","Double dagger":"Double dagger","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Double exclamation mark":"Double exclamation mark","Question exclamation mark":"Question exclamation mark","Exclamation question mark":"Exclamation question mark","Double question mark":"Double question mark","Copyright sign":"Copyright sign","Registered sign":"Registered sign","Trade mark sign":"Trade mark sign","Section sign":"Section sign","Paragraph sign":"Paragraph sign","Reversed paragraph sign":"Reversed paragraph sign","Show source":"सोर्स दिखाएं","Show blocks":"ब्लॉक दिखाएं","Select all":"Select all","Disable editing":"Disable editing","Enable editing":"Enable editing","Previous editable region":"Previous editable region","Next editable region":"Next editable region","Navigate editable regions":"Navigate editable regions","Remove Format":"Remove Format","Page break":"Page break","media widget":"media widget","Media URL":"Media URL","Paste the media URL in the input.":"Paste the media URL in the input.","Tip: Paste the URL into the content to embed faster.":"Tip: Paste the URL into the content to embed faster.","The URL must not be empty.":"The URL must not be empty.","This media URL is not supported.":"This media URL is not supported.","Insert media":"Insert media",Media:"मीडिया","Media toolbar":"Media toolbar","Open media in new tab":"नए टैब में मीडिया खोलें","Media embed":"मीडिया एंबेड","Numbered List":"Numbered List","Bulleted List":"Bulleted List","To-do List":"To-do List","Bulleted list styles toolbar":"Bulleted list styles toolbar","Numbered list styles toolbar":"Numbered list styles toolbar","Toggle the disc list style":"Toggle the disc list style","Toggle the circle list style":"Toggle the circle list style","Toggle the square list style":"Toggle the square list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the upper–roman list style":"Toggle the upper–roman list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the upper–latin list style":"Toggle the upper–latin list style",Disc:"Disc",Circle:"Circle",Square:"Square",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero","Lower–roman":"Lower–roman","Upper-roman":"Upper-roman","Lower-latin":"Lower-latin","Upper-latin":"Upper-latin","List properties":"प्रॉपर्टीज़ को लिस्ट करें","Start at":"शुरू करे इस पर","Invalid start index value.":"इनवैलिड स्टार्ट इंडेक्स वैल्यू.","Start index must be greater than 0.":"स्टार्ट इंडेक्स 0 से अधिक होना चाहिए.","Reversed order":"रिवर्स किया गया क्रम","Keystrokes that can be used in a list":"वे कीस्ट्रोक्स जिनका इस्तेमाल किसी लिस्ट में किया जा सकता है","Increase list item indent":"लिस्ट आइटम इंडेंट को बढ़ाएँ","Decrease list item indent":"लिस्ट आइटम इंडेंट को घटाएँ","Entering a to-do list":"एक कार्य सूची में प्रवेश कर रहे हैं","Leaving a to-do list":"एक कार्य सूची छोड़ी जा रही है",Unlink:"Unlink",Link:"Link","Link URL":"Link URL","Link URL must not be empty.":"लिंक का URL रिक्त नहीं होना चाहिए.","Link image":"Link image","Edit link":"Edit link","Open link in new tab":"Open link in new tab","Open in a new tab":"Open in a new tab",Downloadable:"Downloadable","Create link":"लिंक बनाएँ","Move out of a link":"लिंक के बाहर जाएँ","Link properties":"गुण लिंक करें","Displayed text":"प्रदर्शित टेक्स्ट","No links available":"कोई लिंक उपलब्ध नहीं है",Language:"भाषा","Choose language":"भाषा चुनें","Remove language":"भाषा हटाएं","Increase indent":"Increase indent","Decrease indent":"Decrease indent","image widget":"image widget","Wrap text":"टेक्स्ट रैप करें","Break text":"टेक्स्ट तोड़ें","In line":"इन - लाइन","Side image":"Side image","Full size image":"Full size image","Left aligned image":"Left aligned image","Centered image":"Centered image","Right aligned image":"Right aligned image","Change image text alternative":"Change image text alternative","Text alternative":"Text alternative","Enter image caption":"Enter image caption","Insert image":"Insert image","Replace image":"इमेज बदलें","Upload from computer":"कंप्यूटर से अपलोड करे","Replace from computer":"कंप्यूटर से बदलें","Upload image from computer":"कंप्यूटर से इमेज अपलोड करें","Image from computer":"कंप्यूटर से इमेज","From computer":"कंप्यूटर से","Replace image from computer":"कंप्यूटर से इमेज बदलें","Upload failed":"Upload failed","You have no image upload permissions.":"आपके पास तस्वीर को अपलोड करने की अनुमति नहीं है.","Image toolbar":"Image toolbar","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Resize image (in %0)":"(%0 में) तस्वीर का साइज़ बदलें",Original:"Original","Custom image size":"तस्वीर का कस्टम साइज़",Custom:"कस्टम","Image resize list":"Image resize list","Insert image via URL":"Insert image via URL","Insert via URL":"URL के माध्यम से इंसर्ट करें","Image via URL":"URL के माध्यम से इमेज","Via URL":"URL के माध्यम से","Update image URL":"Update image URL","Caption for the image":"छवि के लिए कैप्शन","Caption for image: %0":"छवि के लिए कैप्शन: %0","The value must not be empty.":"वैल्यू रिक्त नहीं होना चाहिए.","The value should be a plain number.":"वैल्यू एक प्लेन नंबर होना चाहिए.","Uploading image":"तस्वीर अपलोड की जा रही है","Image upload complete":"तस्वीर का अपलोड पूरा हुआ","Error during image upload":"तस्वीर अपलोड के दौरान त्रुटि",Image:"इमेज","Image Resize":"तस्वीर का आकर बदलें","Text Alternative":"टेक्स्ट का विकल्प","HTML object":"एचटीएमएल वस्तु","Insert HTML":"एचटीएमएल इन्सर्ट करें","HTML snippet":"एचटीएमएल स्निपेट","Paste raw HTML here...":"रॉ एचटीएमएल यहां पेस्ट करें...","Edit source":"सोर्स एडिट करें","Save changes":"चेंजेज़ को सेव करें","No preview available":"कोई प्रीव्यू उपलब्ध नहीं","Empty snippet content":"खाली स्निपेट कंटेंट","Horizontal line":"Horizontal line","Yellow marker":"Yellow marker","Green marker":"Green marker","Pink marker":"Pink marker","Blue marker":"Blue marker","Red pen":"Red pen","Green pen":"Green pen","Remove highlight":"Remove highlight",Highlight:"Highlight","Text highlight toolbar":"Text highlight toolbar",Heading:"Heading","Choose heading":"Choose heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6","Type your title":"Type your title","Type or paste your content here.":"Type or paste your content here.","Enter fullscreen mode":"फ़ुलस्क्रीन मोड में प्रवेश करें","Leave fullscreen mode":"फ़ुलस्क्रीन मोड छोड़ें","Fullscreen mode":"फ़ुलस्क्रीन मोड","Toggle fullscreen mode":"फ़ुलस्क्रीन मोड स्विच करें","Document outline":"डॉक्युमेंट की पूरी तस्वीर","Connected users":"जुड़े हुए यूज़र","Font Size":"Font Size",Tiny:"Tiny",Small:"Small",Big:"Big",Huge:"Huge","Font Family":"Font Family",Default:"Default","Font Color":"Font Color","Font Background Color":"Font Background Color","Document colors":"Document colors","Find and replace":"ढूँढें और बदलें","Find in text…":"टेक्स्ट में ढूंढें…",Find:"ढूँढें","Previous result":"पिछला रेज़ल्ट","Next result":"अगला रेज़ल्ट",Replace:"बदलें","Replace all":"सब बदल दें","Match case":"केस मैच करें","Whole words only":"केवल पूरे शब्द","Replace with…":"...के साथ बदलें","Text to find must not be empty.":"खोजने के लिए टेक्स्ट खाली नहीं होना चाहिए.","Tip: Find some text first in order to replace it.":"टिप:उसे बदलने के लिए पहले कुछ वह टेक्स्ट खोजें.","Advanced options":"एडवांस्ड विकल्प","Find in the document":"डॉक्युमेंट में खोजें","Insert a soft break (a <code>&lt;br&gt;</code> element)":"एक सॉफ़्ट ब्रेक इंसर्ट करें (एक <code>&lt;br&gt;</code> एलिमेंट)","Insert a hard break (a new paragraph)":"एक हार्ड ब्रेक इंसर्ट करें (एक नया पैराग्राफ़)",Emoji:"इमोजी","Show all emoji...":"सभी इमोजी दिखाएँ...","Find an emoji (min. 2 characters)":"एक इमोजी ढूंढें (कम से कम 2 अक्षर)",'No emojis were found matching "%0".':'"%0" से मेल खाता कोई इमोजी नहीं मिला.',"Keep on typing to see the emoji.":"इमोजी देखने के लिए टाइप करते रहें.","The query must contain at least two characters.":"क्वेरी में कम से कम दो अक्षर होने चाहिए.","Smileys & Expressions":"स्माइलीज़ और एक्सप्रेशंस","Gestures & People":"इशारे और लोग","Animals & Nature":"पशु और प्रकृति","Food & Drinks":"फ़ूड और ड्रिंक्स","Travel & Places":"ट्रैवल और स्थान",Activities:"गतिविधियाँ",Objects:"वस्तुओं",Symbols:"सिंबल",Flags:"झंडे","Select skin tone":"स्किन टोन चुनें","Default skin tone":"डिफ़ॉल्ट स्किन टोन","Light skin tone":"हल्की स्किन टोन","Medium Light skin tone":"मध्यम हल्की स्किन टोन","Medium skin tone":"मध्यम स्किन टोन","Medium Dark skin tone":"मध्यम गहरे स्किन टोन","Dark skin tone":"गहरे रंग का स्किन टोन","Emoji picker":"इमोजी पिकर",Cancel:"Cancel",Clear:"साफ़ करें","Remove color":"Remove color","Restore default":"डिफ़ॉल्ट रिस्टोर कर दें",Save:"Save","Show more items":"Show more items","%0 of %1":"%0 of %1","Cannot upload file:":"Cannot upload file:","Rich Text Editor. Editing area: %0":"रिच टेक्स्ट एडिटर। संपादन क्षेत्र: %0","Insert with file manager":"फ़ाइल मैनेजर से इन्सर्ट करें","Replace with file manager":"फ़ाइल मैनेजर से बदलें","Insert image with file manager":"फ़ाइल मैनेजर से इमेज इन्सर्ट करें","Replace image with file manager":"इमेज को फ़ाइल मैनेजर से बदलें",File:"फाइल","With file manager":"फ़ाइल मैनेजर के साथ","Toggle caption off":"कैप्शन को टॉगल बंद करें","Toggle caption on":"कैप्शन का टॉगल ऑन करें","Content editing keystrokes":"कॉन्टेंट एडिटिंग कीस्ट्रोक्स","These keyboard shortcuts allow for quick access to content editing features.":"ये कीबोर्ड शॉर्टकट्स कॉन्टेंट एडिटिंग फ़ीचर्स तक पहुँचना आसान बनाते हैं.","User interface and content navigation keystrokes":"यूज़र इंटरफ़ेस और कॉन्टेंट नैविगेशन कीस्ट्रोक्स","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"CKEditor 5 यूज़र इंटरफ़ेस में और बेहतरीन नैविगेशन के लिए इन कीस्ट्रोक्स का इस्तेमाल करें.","Close contextual balloons, dropdowns, and dialogs":"कॉन्टेक्सचुअल बलून्स, ड्रॉपडाउन्स और डायलॉग्स को बंद करें","Open the accessibility help dialog":"एक्सेसिबिलिटी हेल्प डायलॉग को खोलें","Move focus between form fields (inputs, buttons, etc.)":"फ़ॉर्म फ़ील्ड्स (इनपुट्स, बटन्स, आदि) के बीच फ़ोकस को मूव करें","Move focus to the menu bar, navigate between menu bars":"फ़ोकस को मेनू बार पर ले जाएँ, मेनू बार के बीच नेविगेट करें","Move focus to the toolbar, navigate between toolbars":"फ़ोकस को टूलबार पर ले जाएँ, टूलबार्स के बीच नैविगेट करें","Navigate through the toolbar or menu bar":"टूलबार या मेनू बार के माध्यम से नेविगेट करें","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"वर्तमान में फोकस्ड बटन दबाएँ. एडिटर के कंटेंट के साथ इंटरैक्ट करने वाले बटनों को दबाने से फोकस वापस कंटेंट पर आ जाता है.",Accept:"स्वीकार करें",Paragraph:"Paragraph","Color picker":"Color picker","Please try a different phrase or check the spelling.":"कृपया किन्हीं और शब्दों का इस्तेमाल करें या स्पेलिंग चेक करें.",Source:"सोर्स",Insert:"इंसर्ट",Update:"अपडेट",Back:"वापस जाएँ","Insert code block":"Insert code block","Plain text":"Plain text","Leaving %0 code snippet":"%0 कोड स्निपेट से बहार निकला जा रहा है","Entering %0 code snippet":"%0 कोड स्निपेट में प्रवेश किया जा रहा है","Entering code snippet":"कोड स्निपेट में प्रवेश किया जा रहा है","Leaving code snippet":"कोड स्निपेट में प्रवेश किया जा रहा है","Code block":"कोड ब्लॉक","Copy selected content":"सेलेक्ट किए गए कॉन्टेंट को कॉपी करें","Paste content":"कॉन्टेंट पेस्ट करें","Paste content as plain text":"कॉन्टेंट को प्लेन टेक्स्ट के रूप में पेस्ट करें","Insert image or file":"Insert image or file","Could not obtain resized image URL.":"Could not obtain resized image URL.","Selecting resized image failed":"Selecting resized image failed","Could not insert image at the current position.":"Could not insert image at the current position.","Inserting image failed":"Inserting image failed",Bookmark:"बुकमार्क","Edit bookmark":"बुकमार्क एडिट करें","Remove bookmark":"बुकमार्क हटाएं","Bookmark name":"बुकमार्क का नाम","Enter the bookmark name without spaces.":"बिना स्पेस के बुकमार्क का नाम लिखें.","Bookmark must not be empty.":"बुकमार्क खाली नहीं होना चाहिए.","Bookmark name cannot contain space characters.":"बुकमार्क नाम में स्पेस नहीं हो सकते.","Bookmark name already exists.":"बुकमार्क नाम पहले से मौजूद है.","bookmark widget":"बुकमार्क विजिट","Bookmark toolbar":"बुकमार्क टूलबार",Bookmarks:"बुकमार्क","No bookmarks available.":"कोई बुकमार्क उपलब्ध नहीं है.","Scroll to bookmark":"बुकमार्क करने के लिए स्क्रॉल करें","Open file manager":"फाइल मैनेजर खोलें","Cannot determine a category for the uploaded file.":"अपलोड की गई फ़ाइल के लिए एक केटेगरी डिटर्माइन नहीं कर पा रहें.","Cannot access default workspace.":"डिफ़ॉल्ट वर्कस्पेस को ऐक्सेस नहीं किया जा सकता.","You have no image editing permissions.":"आपके पास तस्वीर को एडिट करने की अनुमति नहीं है.","Edit image":"इमेज एडिट करें","Processing the edited image.":"एडिट किए गए इमेज को प्रोसेस किया जा रहा है","Server failed to process the image.":"सर्वर इमेज प्रोसेस करने में विफल रहा.","Failed to determine category of edited image.":"एडिट किए गए इमेज की श्रेणी निर्धारित करने में विफल.","Block quote":"Block quote",Bold:"Bold",Italic:"Italic",Underline:"Underline",Code:"Code",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript","Italic text":"इटैलिक टेक्स्ट","Move out of an inline code style":"इनलाइन कोड स्टाइल के बाहर जाएँ","Bold text":"टेक्स्ट को बोल्ड करें","Underline text":"टेक्स्ट को अंडरलाइन करें","Strikethrough text":"टेक्स्ट को स्ट्राइकथ्रू करें","Saving changes":"Saving changes","Revert autoformatting action":"ऑटोफ़ॉर्मैटिंग एक्शन को रिवर्ट करें","Align left":"Align left","Align right":"Align right","Align center":"Align center",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"},getPluralForm(o){return o!=1}}};/**
393
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
394
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
395
+ */const e2={ko:{dictionary:{"Words: %0":"단어 수: %0","Characters: %0":"문자 수: %0","Widget toolbar":"위젯 툴바","Insert paragraph before block":"블록 앞에 단락 삽입","Insert paragraph after block":"블록 뒤에 단락 삽입","Press Enter to type after or press Shift + Enter to type before the widget":"엔터를 눌러서 위젯 뒤에 입력하거나 시프트 + 엔터를 눌러서 위젯 앞에 입력하세요","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"위젯이 선택되었을 때 사용할 수 있는 키 입력(예: 이미지, 표 등)","Insert a new paragraph directly after a widget":"위젯 바로 뒤에 새 단락 삽입","Insert a new paragraph directly before a widget":"위젯 바로 앞에 새 단락 삽입","Move the caret to allow typing directly before a widget":"위젯 바로 앞에 입력할 수 있도록 삽입 기호 이동","Move the caret to allow typing directly after a widget":"위젯 바로 뒤에 입력할 수 있도록 삽입 기호 이동","Move focus from an editable area back to the parent widget":"포커스를 편집 가능 영역에서 부모위젯으로 옮기기","Upload in progress":"업로드 진행 중",Undo:"실행 취소",Redo:"다시 실행","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:"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").',"Insert table":"테이블 삽입","Header column":"헤더 열","Insert column left":"왼쪽에 열 삽입","Insert column right":"오른쪽에 열 삽입","Delete column":"열 삭제","Select column":"열 선택",Column:"열","Header row":"헤더 행","Insert row below":"아래에 행 삽입","Insert row above":"위에 행 삽입","Delete row":"행 삭제","Select row":"행 선택",Row:"행","Merge cell up":"위 셀과 병합","Merge cell right":"오른쪽 셀과 병합","Merge cell down":"아래 셀과 병합","Merge cell left":"왼쪽 셀과 병합","Split cell vertically":"세로로 셀 분할","Split cell horizontally":"가로로 셀 분할","Merge cells":"셀 병합","Table toolbar":"표 도구 모음","Table properties":"표 속성","Cell properties":"셀 속성",Border:"테두리",Style:"스타일",Width:"가로",Height:"세로",Color:"색",Background:"배경색",Padding:"여백",Dimensions:"크기","Table cell text alignment":"표 셀 텍스트 정렬",Alignment:"정렬","Horizontal text alignment toolbar":"가로 텍스트 정렬 도구 모음","Vertical text alignment toolbar":"세로 텍스트 정렬 도구 모음","Table alignment toolbar":"표 정렬 도구 모음",None:"선 없음",Solid:"실선",Dotted:"점선",Dashed:"파선",Double:"이중선",Groove:"음각선",Ridge:"양각선",Inset:"측면 음각선",Outset:"측면 양각선","Align cell text to the left":"셀 텍스트를 왼쪽으로 정렬","Align cell text to the center":"셀 텍스트를 가로 가운데로 정렬","Align cell text to the right":"셀 텍스트를 오른쪽으로 정렬","Justify cell text":"셀 텍스트를 양쪽으로 정렬","Align cell text to the top":"셀 텍스트를 위로 정렬","Align cell text to the middle":"셀 텍스트를 세로 가운데로 정렬","Align cell text to the bottom":"셀 텍스트를 아래로 정렬","Align table to the left":"테이블을 왼쪽으로 정렬","Center table":"테이블을 가운데로 정렬","Align table to the right":"테이블을 오른쪽으로 정렬",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'유효하지 않은 색입니다. "#FF0000"이나 "rgb(255,0,0)", 또는 "red"를 입력해 보세요.','The value is invalid. Try "10px" or "2em" or simply "2".':'유효하지 않은 값입니다. "10px"나 "2em" 또는 그냥 "2"를 입력해 보세요.',"Enter table caption":"테이블 캡션 입력","Keystrokes that can be used in a table cell":"표 셀에서 사용할 수 있는 키 입력","Move the selection to the next cell":"선택 항목을 다음 셀로 이동","Move the selection to the previous cell":"선택 항목을 이전 셀로 이동","Insert a new table row (when in the last cell of a table)":"새 표 행 삽입(표의 마지막 셀에 있을 때)","Navigate through the table":"표 탐색",Table:"표","Insert table layout":"표 레이아웃 삽입","Table layout":"표 레이아웃","Layout table":"레이아웃 표","Content table":"콘텐츠 표","Choose table type":"표 유형 선택","Table type":"표 유형","Table type options":"표 유형 옵션",Styles:"스타일","Multiple styles":"다중 스타일","Block styles":"블록 스타일","Text styles":"텍스트 스타일","Special characters":"특수 문자",Category:"카테고리",All:"전체",Arrows:"화살표",Currency:"통화",Latin:"라틴",Mathematical:"수식",Text:"텍스트","leftwards simple arrow":"왼쪽 단순 화살표","rightwards simple arrow":"오른쪽 단순 화살표","upwards simple arrow":"위쪽 단순 화살표","downwards simple arrow":"아래쪽 단순 화살표","leftwards double arrow":"왼쪽 겹화살표","rightwards double arrow":"오른쪽 겹화살표","upwards double arrow":"위쪽 겹화살표","downwards double arrow":"아래쪽 겹화살표","leftwards dashed arrow":"왼쪽 대시 화살표","rightwards dashed arrow":"오른쪽 대시 화살표","upwards dashed arrow":"위쪽 대시 화살표","downwards dashed arrow":"아래쪽 대시 화살표","leftwards arrow to bar":"왼쪽 바를 향한 화살표","rightwards arrow to bar":"오른쪽 바를 향한 화살표","upwards arrow to bar":"위쪽 바를 향한 화살표","downwards arrow to bar":"아래쪽 바를 향한 화살표","up down arrow with base":"받침이 있는 위아래 화살표","back with leftwards arrow above":"BACK 위 왼쪽 화살표","end with leftwards arrow above":"END 위 왼쪽 화살표","on with exclamation mark with left right arrow above":"ON! 위 왼쪽 오른쪽 화살표","soon with rightwards arrow above":"SOON 위 오른쪽 화살표","top with upwards arrow above":"TOP 위 위쪽 화살표","Dollar sign":"달러 기호","Euro sign":"유로 기호","Yen sign":"엔 기호","Pound sign":"파운드 기호","Cent sign":"센트 기호","Euro-currency sign":"유로화 기호","Colon sign":"콜론 기호","Cruzeiro sign":"크루제이루 기호","French franc sign":"프랑스 프랑 기호","Lira sign":"리라 기호","Currency sign":"통화 기호","Bitcoin sign":"비트코인 기호","Mill sign":"밀 기호","Naira sign":"나이라 기호","Peseta sign":"페세타 기호","Rupee sign":"루피 기호","Won sign":"원 기호","New sheqel sign":"뉴 세켈 기호","Dong sign":"동 기호","Kip sign":"킵 기호","Tugrik sign":"투그리크 기호","Drachma sign":"드라크마 기호","German penny sign":"독일 페니 기호","Peso sign":"페소 기호","Guarani sign":"과라니 기호","Austral sign":"오스트랄 기호","Hryvnia sign":"흐리브냐 기호","Cedi sign":"세디 기호","Livre tournois sign":"리브르 트르누아 기호","Spesmilo sign":"스페스밀로 기호","Tenge sign":"텡게 기호","Indian rupee sign":"인도 루피 기호","Turkish lira sign":"터키 리라 기호","Nordic mark sign":"노르딕 마크 기호","Manat sign":"마나트 기호","Ruble sign":"루블 기호","Latin capital letter a with macron":"장음 부호가 있는 라틴어 대문자 A","Latin small letter a with macron":"장음 부호가 있는 라틴어 소문자 a","Latin capital letter a with breve":"반달점 부호가 있는 라틴어 대문자 A","Latin small letter a with breve":"반달점 부호가 있는 라틴어 소문자 a","Latin capital letter a with ogonek":"꼬리 부호가 있는 라틴어 대문자 A","Latin small letter a with ogonek":"꼬리 부호가 있는 라틴어 소문자 a","Latin capital letter c with acute":"양음 부호가 있는 라틴어 대문자 C","Latin small letter c with acute":"양음 부호가 있는 라틴어 소문자 c","Latin capital letter c with circumflex":"곡절 부호가 있는 라틴어 대문자 C","Latin small letter c with circumflex":"곡절 부호가 있는 라틴어 소문자 c","Latin capital letter c with dot above":"위에 점 부호가 있는 라틴어 대문자 C","Latin small letter c with dot above":"위에 점 부호가 있는 라틴어 소문자 c","Latin capital letter c with caron":"반대 곡절 부호가 있는 라틴어 대문자 C","Latin small letter c with caron":"반대 곡절 부호가 있는 라틴어 소문자 c","Latin capital letter d with caron":"반대 곡절 부호가 있는 라틴어 대문자 D","Latin small letter d with caron":"반대 곡절 부호가 있는 라틴어 소문자 d","Latin capital letter d with stroke":"획 부호가 있는 라틴어 대문자 D","Latin small letter d with stroke":"획 부호가 있는 라틴어 소문자 d","Latin capital letter e with macron":"장음 부호가 있는 라틴어 대문자 E","Latin small letter e with macron":"장음 부호가 있는 라틴어 소문자 e","Latin capital letter e with breve":"반달점 부호가 있는 라틴어 대문자 E","Latin small letter e with breve":"반달점 부호가 있는 라틴어 소문자 e","Latin capital letter e with dot above":"위에 점 부호가 있는 라틴어 대문자 E","Latin small letter e with dot above":"위에 점 부호가 있는 라틴어 소문자 e","Latin capital letter e with ogonek":"꼬리 부호가 있는 라틴어 대문자 E","Latin small letter e with ogonek":"꼬리 부호가 있는 라틴어 소문자 e","Latin capital letter e with caron":"반대 곡절 부호가 있는 라틴어 대문자 E","Latin small letter e with caron":"반대 곡절 부호가 있는 라틴어 소문자 e","Latin capital letter g with circumflex":"곡절 부호가 있는 라틴어 대문자 G","Latin small letter g with circumflex":"곡절 부호가 있는 라틴어 소문자 g","Latin capital letter g with breve":"반달점 부호가 있는 라틴어 대문자 G","Latin small letter g with breve":"반달점 부호가 있는 라틴어 소문자 g","Latin capital letter g with dot above":"위에 점 부호가 있는 라틴어 대문자 G","Latin small letter g with dot above":"위에 점 부호가 있는 라틴어 소문자 g","Latin capital letter g with cedilla":"갈고리 부호가 있는 라틴어 대문자 G","Latin small letter g with cedilla":"갈고리 부호가 있는 라틴어 소문자 g","Latin capital letter h with circumflex":"곡절 부호가 있는 라틴어 대문자 H","Latin small letter h with circumflex":"곡절 부호가 있는 라틴어 소문자 h","Latin capital letter h with stroke":"획 부호가 있는 라틴어 대문자 H","Latin small letter h with stroke":"획 부호가 있는 라틴어 소문자 h","Latin capital letter i with tilde":"물결 부호가 있는 라틴어 대문자 I","Latin small letter i with tilde":"물결 부호가 있는 라틴어 소문자 i","Latin capital letter i with macron":"장음 부호가 있는 라틴어 대문자 I","Latin small letter i with macron":"장음 부호가 있는 라틴어 소문자 i","Latin capital letter i with breve":"반달점 부호가 있는 라틴어 대문자 I","Latin small letter i with breve":"반달점 부호가 있는 라틴어 소문자 i","Latin capital letter i with ogonek":"꼬리 부호가 있는 라틴어 대문자 I","Latin small letter i with ogonek":"꼬리 부호가 있는 라틴어 소문자 i","Latin capital letter i with dot above":"위에 점 부호가 있는 라틴어 대문자 I","Latin small letter dotless i":"라틴어 소문자 점 없는 i","Latin capital ligature ij":"라틴어 대문자 합자 IJ","Latin small ligature ij":"라틴어 소문자 합자 ij","Latin capital letter j with circumflex":"곡절 부호가 있는 라틴어 대문자 J","Latin small letter j with circumflex":"곡절 부호가 있는 라틴어 소문자 j","Latin capital letter k with cedilla":"갈고리 부호가 있는 라틴어 대문자 K","Latin small letter k with cedilla":"갈고리 부호가 있는 라틴어 소문자 k","Latin small letter kra":"라틴어 소문자 크라","Latin capital letter l with acute":"양음 부호가 있는 라틴어 대문자 I","Latin small letter l with acute":"양음 부호가 있는 라틴어 소문자 i","Latin capital letter l with cedilla":"갈고리 부호가 있는 라틴어 대문자 I","Latin small letter l with cedilla":"갈고리 부호가 있는 라틴어 소문자 i","Latin capital letter l with caron":"반대 곡절 부호가 있는 라틴어 대문자 I","Latin small letter l with caron":"반대 곡절 부호가 있는 라틴어 소문자 i","Latin capital letter l with middle dot":"중간에 점 부호가 있는 라틴어 대문자 I","Latin small letter l with middle dot":"중간에 점 부호가 있는 라틴어 소문자 i","Latin capital letter l with stroke":"획 부호가 있는 라틴어 대문자 I","Latin small letter l with stroke":"획 부호가 있는 라틴어 소문자 i","Latin capital letter n with acute":"양음 부호가 있는 라틴어 대문자 N","Latin small letter n with acute":"양음 부호가 있는 라틴어 소문자 n","Latin capital letter n with cedilla":"갈고리 부호가 있는 라틴어 대문자 N","Latin small letter n with cedilla":"갈고리 부호가 있는 라틴어 소문자 n","Latin capital letter n with caron":"반대 곡절 부호가 있는 라틴어 대문자 N","Latin small letter n with caron":"반대 곡절 부호가 있는 라틴어 소문자 n","Latin small letter n preceded by apostrophe":"아포스트로피 다음에 있는 라틴어 소문자 n","Latin capital letter eng":"라틴어 대문자 엥","Latin small letter eng":"라틴어 소문자 엥","Latin capital letter o with macron":"장음 부호가 있는 라틴어 대문자 O","Latin small letter o with macron":"장음 부호가 있는 라틴어 소문자 o","Latin capital letter o with breve":"반달점 부호가 있는 라틴어 대문자 O","Latin small letter o with breve":"반달점 부호가 있는 라틴어 소문자 o","Latin capital letter o with double acute":"이중 양음 부호가 있는 라틴어 대문자 O","Latin small letter o with double acute":"이중 양음 부호가 있는 라틴어 소문자 o","Latin capital ligature oe":"라틴어 대문자 합자 OE","Latin small ligature oe":"라틴어 소문자 합자 oe","Latin capital letter r with acute":"양음 부호가 있는 라틴어 대문자 R","Latin small letter r with acute":"양음 부호가 있는 라틴어 소문자 r","Latin capital letter r with cedilla":"갈고리 부호가 있는 라틴어 대문자 R","Latin small letter r with cedilla":"갈고리 부호가 있는 라틴어 소문자 r","Latin capital letter r with caron":"반대 곡절 부호가 있는 라틴어 대문자 R","Latin small letter r with caron":"반대 곡절 부호가 있는 라틴어 소문자 r","Latin capital letter s with acute":"양음 부호가 있는 라틴어 대문자 S","Latin small letter s with acute":"양음 부호가 있는 라틴어 소문자 s","Latin capital letter s with circumflex":"곡절 부호가 있는 라틴어 대문자 S","Latin small letter s with circumflex":"곡절 부호가 있는 라틴어 소문자 s","Latin capital letter s with cedilla":"갈고리 부호가 있는 라틴어 대문자 S","Latin small letter s with cedilla":"갈고리 부호가 있는 라틴어 소문자 s","Latin capital letter s with caron":"반대 곡절 부호가 있는 라틴어 대문자 S","Latin small letter s with caron":"반대 곡절 부호가 있는 라틴어 소문자 s","Latin capital letter t with cedilla":"갈고리 부호가 있는 라틴어 대문자 T","Latin small letter t with cedilla":"갈고리 부호가 있는 라틴어 소문자 t","Latin capital letter t with caron":"반대 곡절 부호가 있는 라틴어 대문자 T","Latin small letter t with caron":"반대 곡절 부호가 있는 라틴어 소문자 t","Latin capital letter t with stroke":"획 부호가 있는 라틴어 대문자 T","Latin small letter t with stroke":"획 부호가 있는 라틴어 소문자 t","Latin capital letter u with tilde":"물결 부호가 있는 라틴어 대문자 U","Latin small letter u with tilde":"물결 부호가 있는 라틴어 소문자 u","Latin capital letter u with macron":"장음 부호가 있는 라틴어 대문자 U","Latin small letter u with macron":"장음 부호가 있는 라틴어 소문자 u","Latin capital letter u with breve":"반달점 부호가 있는 라틴어 대문자 U","Latin small letter u with breve":"반달점 부호가 있는 라틴어 소문자 u","Latin capital letter u with ring above":"위에 고리가 있는 라틴어 대문자 U","Latin small letter u with ring above":"위에 고리가 있는 라틴어 소문자 u","Latin capital letter u with double acute":"이중 양음 부호가 있는 라틴어 대문자 U","Latin small letter u with double acute":"이중 양음 부호가 있는 라틴어 소문자 u","Latin capital letter u with ogonek":"꼬리 부호가 있는 라틴어 대문자 U","Latin small letter u with ogonek":"꼬리 부호가 있는 라틴어 소문자 u","Latin capital letter w with circumflex":"곡절 부호가 있는 라틴어 대문자 W","Latin small letter w with circumflex":"곡절 부호가 있는 라틴어 소문자 w","Latin capital letter y with circumflex":"곡절 부호가 있는 라틴어 대문자 Y","Latin small letter y with circumflex":"곡절 부호가 있는 라틴어 소문자 y","Latin capital letter y with diaeresis":"분음 부호가 있는 라틴어 대문자 Y","Latin capital letter z with acute":"양음 부호가 있는 라틴어 대문자 Z","Latin small letter z with acute":"양음 부호가 있는 라틴어 소문자 z","Latin capital letter z with dot above":"위에 점 부호가 있는 라틴어 대문자 Z","Latin small letter z with dot above":"위에 점 부호가 있는 라틴어 소문자 z","Latin capital letter z with caron":"반대 곡절 부호가 있는 라틴어 대문자 Z","Latin small letter z with caron":"반대 곡절 부호가 있는 라틴어 소문자 z","Latin small letter long s":"라틴어 소문자 긴 s","Less-than sign":"더 작음 기호","Greater-than sign":"더 큼 기호","Less-than or equal to":"더 작거나 같음","Greater-than or equal to":"더 크거나 같음","En dash":"엔 대시","Em dash":"엠 대시",Macron:"장음 부호",Overline:"윗줄","Degree sign":"도 기호","Minus sign":"빼기 기호","Plus-minus sign":"더하기 빼기 기호","Division sign":"나누기 기호","Fraction slash":"분수 슬래시","Multiplication sign":"곱하기 기호","Latin small letter f with hook":"밑이 구부러진 라틴어 소문자 f",Integral:"적분","N-ary summation":"누계합",Infinity:"무한대","Square root":"제곱근","Tilde operator":"물결표 연산자","Approximately equal to":"대략 같음","Almost equal to":"거의 같음","Not equal to":"같지 않음","Identical to":"합동","Element of":"원소","Not an element of":"원소가 아님","Contains as member":"원소로 포함","N-ary product":"중복순열","Logical and":"논리곱","Logical or":"논리합","Not sign":"부정 기호",Intersection:"교집합",Union:"합집합","Partial differential":"편미분","For all":"전칭","There exists":"존재","Empty set":"공집합",Nabla:"나블라","Asterisk operator":"별표 연산자","Proportional to":"비례",Angle:"각","Vulgar fraction one quarter":"4분의 1","Vulgar fraction one half":"2분의 1","Vulgar fraction three quarters":"4분의 3","Single left-pointing angle quotation mark":"왼쪽 홑화살괄호","Single right-pointing angle quotation mark":"오른쪽 홑화살괄호","Left-pointing double angle quotation mark":"왼쪽 겹화살괄호","Right-pointing double angle quotation mark":"오른쪽 겹화살괄호","Left single quotation mark":"왼쪽 작은따옴표","Right single quotation mark":"오른쪽 작은따옴표","Left double quotation mark":"왼쪽 큰따옴표","Right double quotation mark":"오른쪽 큰따옴표","Single low-9 quotation mark":"낮은 홑따옴표","Double low-9 quotation mark":"낮은 겹따옴표","Inverted exclamation mark":"역느낌표","Inverted question mark":"역물음표","Two dot leader":"두 점 줄임표","Horizontal ellipsis":"세 점 줄임표","Double dagger":"겹칼표","Per mille sign":"퍼 마일 기호","Per ten thousand sign":"만분율 기호","Double exclamation mark":"겹느낌표","Question exclamation mark":"물음표 느낌표","Exclamation question mark":"느낌표 물음표","Double question mark":"겹물음표","Copyright sign":"저작권 기호","Registered sign":"등록 상표 기호","Trade mark sign":"상표 기호","Section sign":"구역 기호","Paragraph sign":"단락 기호","Reversed paragraph sign":"반전된 단락 기호","Show source":"소스 표시","Show blocks":"블록 표시","Select all":"전체 선택","Disable editing":"편집 비활성화","Enable editing":"편집 활성화","Previous editable region":"이전 편집 가능한 구역","Next editable region":"다음 편집 가능한 구역","Navigate editable regions":"편집 가능한 구역 탐색","Remove Format":"서식 지우기","Page break":"페이지 나누기","media widget":"미디어 위젯","Media URL":"미디어 URL","Paste the media URL in the input.":"미디어 URL을 입력해주세요.","Tip: Paste the URL into the content to embed faster.":"팁: URL을 붙여넣으면 더 빨리 삽입할 수 있습니다.","The URL must not be empty.":"URL이 비어있을 수 없습니다.","This media URL is not supported.":"이 미디어 URL은 지원되지 않습니다.","Insert media":"미디어 삽입",Media:"미디어","Media toolbar":"미디어 툴바","Open media in new tab":"새 탭에서 미디어 열기","Media embed":"미디어 ㅅ","Numbered List":"번호 목록","Bulleted List":"불릿 목록","To-do List":"확인 목록","Bulleted list styles toolbar":"글머리 기호 목록 스타일 도구 모음","Numbered list styles toolbar":"번호 목록 스타일 도구 모음","Toggle the disc list style":"흰 원형 목록 스타일 전환","Toggle the circle list style":"검은 원형 목록 스타일 전환","Toggle the square list style":"검은 사각형 목록 스타일 전환","Toggle the decimal list style":"십진수 목록 스타일 전환","Toggle the decimal with leading zero list style":"앞에 0이 붙는 십진수 목록 스타일 전환","Toggle the lower–roman list style":"소문자 로마자 목록 스타일 전환","Toggle the upper–roman list style":"대문자 로마자 목록 스타일 전환","Toggle the lower–latin list style":"소문자 알파벳 목록 스타일 전환","Toggle the upper–latin list style":"대문자 알파벳 목록 스타일 전환",Disc:"검은 원형",Circle:"흰 원형",Square:"검은 사각형",Decimal:"십진수","Decimal with leading zero":"앞에 0이 붙는 십진수","Lower–roman":"소문자 로마자","Upper-roman":"대문자 로마자","Lower-latin":"소문자 알파벳","Upper-latin":"대문자 알파벳","List properties":"목록 속성","Start at":"시작 번호","Invalid start index value.":"잘못된 시작 인덱스 값입니다.","Start index must be greater than 0.":"시작 번호는 0보다 커야 합니다.","Reversed order":"역순","Keystrokes that can be used in a list":"목록에서 사용할 수 있는 키 입력","Increase list item indent":"목록 항목 들여쓰기 늘리기","Decrease list item indent":"목록 항목 들여쓰기 줄이기","Entering a to-do list":"할 일 목록 입력하는 중","Leaving a to-do list":"할 일 목록 남기는 중",Unlink:"링크 삭제",Link:"링크","Link URL":"링크 주소","Link URL must not be empty.":"링크 URL은 비워둘 수 없습니다.","Link image":"사진 링크","Edit link":"링크 편집","Open link in new tab":"새 탭에서 링크 열기","Open in a new tab":"새 탭에서 열기",Downloadable:"다운로드 가능","Create link":"링크 생성","Move out of a link":"링크 밖으로 이동","Link properties":"링크 속성","Displayed text":"표시 텍스트","No links available":"사용 가능한 링크 없음",Language:"언어","Choose language":"언어 선택","Remove language":"언어 제거","Increase indent":"들여쓰기 늘리기","Decrease indent":"들여쓰기 줄이기","image widget":"사진 위젯","Wrap text":"텍스트 줄 바꿈","Break text":"텍스트 분리","In line":"줄 안에","Side image":"본문 옆에 배치","Full size image":"꽉 찬 크기","Left aligned image":"왼쪽 정렬","Centered image":"가운데 정렬","Right aligned image":"오른쪽 정렬","Change image text alternative":"대체 문구 변경","Text alternative":"대체 문구","Enter image caption":"사진 설명을 입력하세요","Insert image":"사진 삽입","Replace image":"이미지 교체","Upload from computer":"컴퓨터에서 업로드","Replace from computer":"컴퓨터에서 교체","Upload image from computer":"컴퓨터에서 이미지 업로드","Image from computer":"컴퓨터에서 이미지 가져오기","From computer":"컴퓨터에서","Replace image from computer":"컴퓨터에서 이미지 교체","Upload failed":"업로드 실패","You have no image upload permissions.":"이미지를 업로드할 수 있는 권한이 없습니다.","Image toolbar":"사진 툴바","Resize image":"사진 크기 조절","Resize image to %0":"사진의 크기를 %0으로 조절","Resize image to the original size":"사진을 원래 크기로 돌려놓기","Resize image (in %0)":"이미지 크기 조정하기(%0 이내)",Original:"원본","Custom image size":"사용자 지정 이미지 크기",Custom:"사용자 지정","Image resize list":"사진 크기 목록","Insert image via URL":"URL로 이미지 삽입","Insert via URL":"URL 버튼으로 이미지 삽입","Image via URL":"URL 메뉴를 통한 이미지 삽입","Via URL":"이미지 메뉴에서 URL을 통한 이미지 삽입","Update image URL":"이미지 URL 업데이트","Caption for the image":"이미지용 캡션","Caption for image: %0":"이미지용 캡션: %0","The value must not be empty.":"값은 비워둘 수 없습니다.","The value should be a plain number.":"일반 숫자로 된 값을 입력해야 합니다.","Uploading image":"이미지 업로드 중","Image upload complete":"이미지 업로드 완료","Error during image upload":"이미지 업로드 중에 오류 발생",Image:"이미지 삽입 기능으로 삽입된 위젯","Image Resize":"이미지 크기 조절","Text Alternative":"대체 텍스트","HTML object":"HTML 오브젝트","Insert HTML":"HTML 삽입","HTML snippet":"HTML 코드 조각","Paste raw HTML here...":"원시 HTML을 여기에 붙여넣으세요...","Edit source":"소스 편집","Save changes":"변경사항 저장","No preview available":"미리보기를 이용할 수 없습니다","Empty snippet content":"빈 코드 조각 내용","Horizontal line":"수평선","Yellow marker":"노란색 마커","Green marker":"초록색 마커","Pink marker":"분홍색 마커","Blue marker":"파란색 마커","Red pen":"빨간색 펜","Green pen":"초록색 펜","Remove highlight":"강조 제거",Highlight:"강조","Text highlight toolbar":"글자 강조 툴바",Heading:"제목","Choose heading":"제목 선택","Heading 1":"제목 1","Heading 2":"제목 2","Heading 3":"제목 3","Heading 4":"제목 4","Heading 5":"제목 5","Heading 6":"제목 6","Type your title":"제목을 입력해주세요","Type or paste your content here.":"여기에 내용을 입력하거나 붙여넣으세요.","Enter fullscreen mode":"전체 화면으로 보기","Leave fullscreen mode":"전체 화면 나가기","Fullscreen mode":"전체 화면 모드","Toggle fullscreen mode":"전체 화면 모드 전환","Document outline":"문서 외곽선","Connected users":"참여 사용자","Font Size":"글자 크기",Tiny:"매우 작은",Small:"작은",Big:"큰",Huge:"매우 큰","Font Family":"글꼴 집합",Default:"기본","Font Color":"글자 색깔","Font Background Color":"글자 배경 색깔","Document colors":"문서 색깔들","Find and replace":"찾기 및 바꾸기","Find in text…":"텍스트에서 찾기...",Find:"찾기","Previous result":"이전 결과","Next result":"다음 결과",Replace:"바꾸기","Replace all":"모두 바꾸기","Match case":"대/소문자 구분","Whole words only":"전체 단어만","Replace with…":"바꿀 내용...","Text to find must not be empty.":"찾을 텍스트를 입력해야 합니다.","Tip: Find some text first in order to replace it.":"팁: 바꾸려는 텍스트를 먼저 찾으세요.","Advanced options":"고급 옵션","Find in the document":"문서에서 찾기","Insert a soft break (a <code>&lt;br&gt;</code> element)":"줄 바꿈 삽입(<code>&lt;br&gt;</code> 요소)","Insert a hard break (a new paragraph)":"단락 바꿈 삽입(새 단락)",Emoji:"이모지","Show all emoji...":"모든 이모지 표시...","Find an emoji (min. 2 characters)":"이모지 찾기(최소 2자)",'No emojis were found matching "%0".':'"%0"에 대한 이모지를 찾을 수 없습니다.',"Keep on typing to see the emoji.":"이모지를 보려면 계속 입력하세요.","The query must contain at least two characters.":"쿼리에는 2자 이상이 포함되어야 합니다.","Smileys & Expressions":"스마일 및 표정","Gestures & People":"제스처 및 사람","Animals & Nature":"동물 및 자연","Food & Drinks":"음식 및 음료","Travel & Places":"여행 및 장소",Activities:"활동",Objects:"사물",Symbols:"기호",Flags:"깃발","Select skin tone":"피부색 선택","Default skin tone":"기본 피부색","Light skin tone":"밝은 피부색","Medium Light skin tone":"약간 밝은 피부색","Medium skin tone":"중간 피부색","Medium Dark skin tone":"약간 어두운 피부색","Dark skin tone":"어두운 피부색","Emoji picker":"이모지 선택",Cancel:"취소",Clear:"지우기","Remove color":"색깔 제거","Restore default":"기본값 복원",Save:"저장","Show more items":"더보기","%0 of %1":"%0 / %1","Cannot upload file:":"파일 업로드할 수 없음: ","Rich Text Editor. Editing area: %0":"리치 텍스트 편집기. 편집 영역: %0","Insert with file manager":"파일 관리자를 사용하여 삽입","Replace with file manager":"파일 관리자를 사용하여 교체","Insert image with file manager":"파일 관리자를 사용하여 이미지 삽입","Replace image with file manager":"파일 관리자를 사용하여 이미지 교체",File:"파일","With file manager":"파일 관리 버튼으로 이미지 삽입","Toggle caption off":"캡션 지우기","Toggle caption on":"캡션 넣기","Content editing keystrokes":"콘텐츠 편집 키 입력","These keyboard shortcuts allow for quick access to content editing features.":"이러한 키보드 단축키를 사용하면 콘텐츠 편집 기능을 빠르게 사용할 수 있습니다.","User interface and content navigation keystrokes":"사용자 인터페이스 및 콘텐츠 탐색 키 입력","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"다음 키 입력을 사용하여 CKEditor 5 사용자 인터페이스를 더 효율적으로 탐색하세요.","Close contextual balloons, dropdowns, and dialogs":"상황별 풍선, 드롭다운, 대화 상자 닫기","Open the accessibility help dialog":"접근성 도움말 대화 상자 열기","Move focus between form fields (inputs, buttons, etc.)":"양식 필드(입력, 버튼 등) 간에 포커스 이동","Move focus to the menu bar, navigate between menu bars":"메뉴 표시줄로 포커스 이동, 메뉴 표시줄 탐색","Move focus to the toolbar, navigate between toolbars":"도구 모음으로 포커스 이동, 도구 모음 간 탐색","Navigate through the toolbar or menu bar":"도구 모음 또는 메뉴 표시줄 탐색","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"현재 포커스가 맞춰진 버튼을 실행합니다. 편집기 콘텐츠와 상호 작용하는 버튼을 실행하면 포커스가 다시 콘텐츠로 이동합니다.",Accept:"수락",Paragraph:"문단","Color picker":"색상 선택기","Please try a different phrase or check the spelling.":"다른 문구를 사용해 보시거나 철자를 확인해 주세요.",Source:"소스",Insert:"삽입",Update:"업데이트",Back:"뒤로","Insert code block":"코드 블럭 삽입","Plain text":"평문","Leaving %0 code snippet":"%0 코드 스니펫 남기는 중","Entering %0 code snippet":"%0 코드 스니펫 입력하는 중","Entering code snippet":"코드 스니펫 입력하는 중","Leaving code snippet":"코드 스니펫 남기는 중","Code block":"코드 블록","Copy selected content":"선택된 콘텐츠 복사","Paste content":"콘텐츠 붙여넣기","Paste content as plain text":"콘텐츠를 일반 텍스트로 붙여넣기","Insert image or file":"사진이나 파일을 삽입","Could not obtain resized image URL.":"크기가 조절된 사진의 URL을 가져오지 못했습니다.","Selecting resized image failed":"크기가 조절된 이미지 선택 실패","Could not insert image at the current position.":"현재 위치에 사진을 삽입할 수 없습니다.","Inserting image failed":"사진 삽입 실패",Bookmark:"책갈피","Edit bookmark":"책갈피 편집","Remove bookmark":"책갈피 제거","Bookmark name":"책갈피 이름","Enter the bookmark name without spaces.":"공백 없이 책갈피 이름을 입력하세요.","Bookmark must not be empty.":"책갈피 이름은 비워 둘 수 없습니다.","Bookmark name cannot contain space characters.":"책갈피 이름에는 공백이 포함될 수 없습니다.","Bookmark name already exists.":"책갈피 이름이 이미 존재합니다.","bookmark widget":"책갈피 위젯","Bookmark toolbar":"북마크 도구 모음",Bookmarks:"북마크","No bookmarks available.":"사용 가능한 북마크가 없습니다.","Scroll to bookmark":"북마크로 이동","Open file manager":"파일 관리자 열기","Cannot determine a category for the uploaded file.":"업로드된 파일의 카테고리를 확인할 수 없습니다.","Cannot access default workspace.":"기본 작업 공간에 액세스할 수 없습니다.","You have no image editing permissions.":"이미지를 편집할 수 있는 권한이 없습니다.","Edit image":"이미지 편집","Processing the edited image.":"편집한 이미지를 처리 중입니다.","Server failed to process the image.":"서버가 이미지를 처리하지 못했습니다.","Failed to determine category of edited image.":"편집한 이미지의 카테고리를 결정하지 못했습니다.","Block quote":"인용 단락",Bold:"굵게",Italic:"기울임꼴",Underline:"밑줄",Code:"코드",Strikethrough:"취소선",Subscript:"아래 첨자",Superscript:"위 첨자","Italic text":"기울인 텍스트","Move out of an inline code style":"인라인 코드 스타일 밖으로 이동","Bold text":"굵은 텍스트","Underline text":"텍스트 밑줄","Strikethrough text":"텍스트 취소선","Saving changes":"변경된 내용을 저장하고 있습니다","Revert autoformatting action":"자동 서식 작업 되돌리기","Align left":"왼쪽 정렬","Align right":"오른쪽 정렬","Align center":"가운데 정렬",Justify:"양쪽 정렬","Text alignment":"텍스트 정렬","Text alignment toolbar":"텍스트 정렬 툴바"},getPluralForm(o){return 0}}};/**
396
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
397
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
398
+ */const t2={pt:{dictionary:{"Words: %0":"Palavras: %0","Characters: %0":"Caracteres: %0","Widget toolbar":"Barra de ferramentas do widget","Insert paragraph before block":"Inserir parágrafo antes do bloco","Insert paragraph after block":"Inserir parágrafo após o bloco","Press Enter to type after or press Shift + Enter to type before the widget":"Prima Enter para escrever depois ou Shift + Enter para escrever antes do widget","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Batimentos de teclas que podem ser utilizados quando um widget é selecionado (por exemplo: imagem, tabela, etc.)","Insert a new paragraph directly after a widget":"Inserir um novo parágrafo diretamente após um widget","Insert a new paragraph directly before a widget":"Inserir um novo parágrafo diretamente antes de um widget","Move the caret to allow typing directly before a widget":"Mover o ponto de inserção para permitir escrever diretamente antes de um widget","Move the caret to allow typing directly after a widget":"Mover o ponto de inserção para permitir escrever diretamente após um widget","Move focus from an editable area back to the parent widget":"Deslocar o foco de uma área editável de volta para o widget principal","Upload in progress":"Carregamento em progresso",Undo:"Desfazer",Redo:"Refazer","Rich Text Editor":"Editor de texto avançado","Edit block":"Editar bloco","Click to edit block":"Clique para editar o bloco","Drag to move":"Arraste para mover",Next:"Seguinte",Previous:"Anterior","Editor toolbar":"Barra de ferramentas do editor","Dropdown toolbar":"Barra de ferramentas do menu pendente","Dropdown menu":"Menu suspenso",Black:"Preto","Dim grey":"Cinzento-escuro",Grey:"Cinzento","Light grey":"Cinzento-claro",White:"Branco",Red:"Vermelho",Orange:"Laranja",Yellow:"Amarelo","Light green":"Verde-claro",Green:"Verde",Aquamarine:"Verde-azulado",Turquoise:"Turquesa","Light blue":"Azul-claro",Blue:"Azul",Purple:"Roxo","Editor block content toolbar":"Barra de ferramentas de edição do conteúdo de blocos","Editor contextual toolbar":"Barra de ferramentas contextual de edição",HEX:"HEX","No results found":"Nenhum resultado encontrado","No searchable items":"Nenhum item pesquisável","Editor dialog":"Diálogo do editor",Close:"Fechar","Help Contents. To close this dialog press ESC.":"Conteúdos de ajuda. Para fechar esta caixa de diálogo, prima ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Abaixo, encontra-se uma lista de atalhos de teclado que podem ser utilizados no editor.","(may require <kbd>Fn</kbd>)":"(pode exigir <kbd>Fn</kbd>)",Accessibility:"Acessibilidade","Accessibility help":"Ajuda de acessibilidade","Press %0 for help.":"Para obter ajuda, pressione %0.","Move focus in and out of an active dialog window":"Mover o foco para dentro e para fora de uma janela de diálogo ativa",MENU_BAR_MENU_FILE:"Ficheiro",MENU_BAR_MENU_EDIT:"Editar",MENU_BAR_MENU_VIEW:"Visualizar",MENU_BAR_MENU_INSERT:"Inserir",MENU_BAR_MENU_FORMAT:"Formatação",MENU_BAR_MENU_TOOLS:"Ferramentas",MENU_BAR_MENU_HELP:"Ajuda",MENU_BAR_MENU_TEXT:"Texto",MENU_BAR_MENU_FONT:"Tipo de letra","Editor menu bar":"Barra de menu do editor",'Please enter a valid color (e.g. "ff0000").':'Introduza uma cor válida (por ex. "ff0000").',"Insert table":"Inserir tabela","Header column":"Coluna de cabeçalho","Insert column left":"Inserir coluna à esquerda","Insert column right":"Inserir coluna à direita","Delete column":"Eliminar coluna","Select column":"Selecionar coluna",Column:"Coluna","Header row":"Linha de cabeçalho","Insert row below":"Inserir linha abaixo","Insert row above":"Inserir linha acima","Delete row":"Eliminar linha","Select row":"Selecionar linha",Row:"Linha","Merge cell up":"Unir célula acima","Merge cell right":"Unir célula à direita","Merge cell down":"Unir célula abaixo","Merge cell left":"Unir célula à esquerda","Split cell vertically":"Dividir célula verticalmente","Split cell horizontally":"Dividir célula horizontalmente","Merge cells":"Fundir células","Table toolbar":"Barra de ferramentas da tabela","Table properties":"Propriedades da tabela","Cell properties":"Propriedades da célula",Border:"Borda",Style:"Estilo",Width:"Largura",Height:"Altura",Color:"Cor",Background:"Fundo",Padding:"Espaçamento",Dimensions:"Dimensões","Table cell text alignment":"Alinhamento de texto das células da tabela",Alignment:"Alinhamento","Horizontal text alignment toolbar":"Barra de ferramentas do alinhamento horizontal de texto","Vertical text alignment toolbar":"Barra de ferramentas do alinhamento vertical de texto","Table alignment toolbar":"Barra de ferramentas do alinhamento da tabela",None:"Nenhum",Solid:"Sólido",Dotted:"Pontilhado",Dashed:"Tracejado",Double:"Duplo",Groove:"Sulcos",Ridge:"Rebordo",Inset:"Interior",Outset:"Exterior","Align cell text to the left":"Alinhar texto da célula à esquerda","Align cell text to the center":"Alinhar texto da célula ao centro","Align cell text to the right":"Alinhar texto da célula à direita","Justify cell text":"Justificar texto da célula","Align cell text to the top":"Alinhar texto da célula no topo","Align cell text to the middle":"Alinhar texto da célula ao meio","Align cell text to the bottom":"Alinhar texto da célula no fundo","Align table to the left":"Alinhar tabela à esquerda","Center table":"Centrar tabela","Align table to the right":"Alinhar tabela à direita",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'A cor é inválida. Tente "#FF0000" ou "rgb(255,0,0)" ou "vermelho".','The value is invalid. Try "10px" or "2em" or simply "2".':'O valor é inválido. Tente "10px" ou "2em" ou simplesmente "2".',"Enter table caption":"Introduzir legenda da tabela","Keystrokes that can be used in a table cell":"Batimentos de teclas que podem ser utilizados numa célula de tabela","Move the selection to the next cell":"Mover a seleção para a célula seguinte","Move the selection to the previous cell":"Mover a seleção para a célula anterior","Insert a new table row (when in the last cell of a table)":"Inserir uma nova linha de tabela (quando o utilizador estiver na última célula de uma tabela)","Navigate through the table":"Navegar pela tabela",Table:"Tabela","Insert table layout":"Inserir esquema da tabela","Table layout":"Esquema da tabela","Layout table":"Tabela de esquemas","Content table":"Tabela de conteúdo","Choose table type":"Escolher tipo de tabela","Table type":"Tipo de tabela","Table type options":"Opções tipo de tabela",Styles:"Estilos","Multiple styles":"Vários estilos","Block styles":"Estilos de blocos","Text styles":"Estilos de texto","Special characters":"Carateres especiais",Category:"Categoria",All:"Todos",Arrows:"Setas",Currency:"Moeda",Latin:"Latinos",Mathematical:"Matemáticos",Text:"Texto","leftwards simple arrow":"seta simples para a esquerda","rightwards simple arrow":"seta simples para a direita","upwards simple arrow":"seta simples para cima","downwards simple arrow":"seta simples para baixo","leftwards double arrow":"seta dupla para a esquerda","rightwards double arrow":"seta dupla para a direita","upwards double arrow":"seta dupla para cima","downwards double arrow":"seta dupla para baixo","leftwards dashed arrow":"seta tracejada para a esquerda","rightwards dashed arrow":"seta tracejada para a direita","upwards dashed arrow":"seta tracejada para cima","downwards dashed arrow":"seta tracejada para baixo","leftwards arrow to bar":"seta para a esquerda contra uma barra","rightwards arrow to bar":"seta para a direita contra uma barra","upwards arrow to bar":"seta para cima contra uma barra","downwards arrow to bar":"seta para baixo contra uma barra","up down arrow with base":"seta bidirecional vertical com base","back with leftwards arrow above":'"back" com seta para a esquerda em cima',"end with leftwards arrow above":'"end" com seta para a esquerda em cima',"on with exclamation mark with left right arrow above":'"on" com sinal de exclamação com seta para a direita e para a esquerda em cima',"soon with rightwards arrow above":'"soon" com seta para a direita em cima',"top with upwards arrow above":'"Top" com seta para cima em cima',"Dollar sign":"Sinal de Dólar","Euro sign":"Sinal de Euro","Yen sign":"Sinal de iene","Pound sign":"Sinal de libra","Cent sign":"Sinal de cêntimo","Euro-currency sign":"Sinal monetário do euro","Colon sign":"Sinal de colombo","Cruzeiro sign":"Sinal de cruzeiro","French franc sign":"Sinal de franco francês","Lira sign":"Sinal de lira","Currency sign":"Sinal monetário","Bitcoin sign":"Sinal de bitcoin","Mill sign":"Sinal de mill","Naira sign":"Sinal de naira","Peseta sign":"Sinal de peseta","Rupee sign":"Sinal de rupia","Won sign":"Sinal de won","New sheqel sign":"Sinal de novo sheqel","Dong sign":"Sinal de dong","Kip sign":"Sinal de kip","Tugrik sign":"Sinal de tugrique","Drachma sign":"Sinal de dracma","German penny sign":"Sinal de fénigue alemão","Peso sign":"Sinal de peso","Guarani sign":"Sinal de guarani","Austral sign":"Sinal de austral","Hryvnia sign":"Sinal de grívnia","Cedi sign":"Sinal de cedi","Livre tournois sign":"Sinal de libra de tours","Spesmilo sign":"Sinal de spesmilo","Tenge sign":"Sinal de tengue","Indian rupee sign":"Sinal de rupia indiana","Turkish lira sign":"Sinal de lira turca","Nordic mark sign":"Sinal de marca nórdica","Manat sign":"Sinal de manat","Ruble sign":"Sinal de rublo","Latin capital letter a with macron":"Latim - letra maiúscula a com mácron","Latin small letter a with macron":"Latim - letra minúscula a com mácron","Latin capital letter a with breve":"Latim - letra maiúscula a com breve","Latin small letter a with breve":"Latim - letra minúscula a com breve","Latin capital letter a with ogonek":"Latim - letra maiúscula a com ogonek","Latin small letter a with ogonek":"Latim - letra minúscula a com ogonek","Latin capital letter c with acute":"Latim - letra maiúscula c com acento agudo","Latin small letter c with acute":"Latim - letra minúscula c com acento agudo","Latin capital letter c with circumflex":"Latim - letra maiúscula c com acento circunflexo","Latin small letter c with circumflex":"Latim - letra minúscula c com acento circunflexo","Latin capital letter c with dot above":"Latim - letra maiúscula c com um ponto por cima","Latin small letter c with dot above":"Latim - letra minúscula c com um ponto por cima","Latin capital letter c with caron":"Latim - letra maiúscula c com cáron","Latin small letter c with caron":"Latim - letra minúscula c com cáron","Latin capital letter d with caron":"Latim - letra maiúscula d com cáron","Latin small letter d with caron":"Latim - letra minúscula d com cáron","Latin capital letter d with stroke":"Latim - letra maiúscula d cortada por um traço","Latin small letter d with stroke":"Latim - letra minúscula d cortada por um traço","Latin capital letter e with macron":"Latim - letra maiúscula e com mácron","Latin small letter e with macron":"Latim - letra minúscula e com mácron","Latin capital letter e with breve":"Latim - letra maiúscula e com breve","Latin small letter e with breve":"Latim - letra minúscula e com breve","Latin capital letter e with dot above":"Latim - letra maiúscula e com um ponto por cima","Latin small letter e with dot above":"Latim - letra minúscula e com um ponto por cima","Latin capital letter e with ogonek":"Latim - letra maiúscula e com ogonek","Latin small letter e with ogonek":"Latim - letra minúscula e com ogonek","Latin capital letter e with caron":"Latim - letra maiúscula e com cáron","Latin small letter e with caron":"Latim - letra minúscula e com cáron","Latin capital letter g with circumflex":"Latim - letra maiúscula g com acento circunflexo","Latin small letter g with circumflex":"Latim - letra minúscula g com acento circunflexo","Latin capital letter g with breve":"Latim - letra maiúscula g com breve","Latin small letter g with breve":"Latim - letra minúscula g com breve","Latin capital letter g with dot above":"Latim - letra maiúscula g com um ponto por cima","Latin small letter g with dot above":"Latim - letra minúscula g com um ponto por cima","Latin capital letter g with cedilla":"Latim - letra maiúscula g com cedilha","Latin small letter g with cedilla":"Latim - letra minúscula g com cedilha","Latin capital letter h with circumflex":"Latim - letra maiúscula h com acento circunflexo","Latin small letter h with circumflex":"Latim - letra minúscula h com acento circunflexo","Latin capital letter h with stroke":"Latim - letra maiúscula h cortada por um traço","Latin small letter h with stroke":"Latim - letra minúscula h cortada por um traço","Latin capital letter i with tilde":"Latim - letra maiúscula i com til","Latin small letter i with tilde":"Latim - letra minúscula i com til","Latin capital letter i with macron":"Latim - letra maiúscula i com mácron","Latin small letter i with macron":"Latim - letra minúscula i com mácron","Latin capital letter i with breve":"Latim - letra maiúscula i com breve","Latin small letter i with breve":"Latim - letra minúscula i com breve","Latin capital letter i with ogonek":"Latim - letra maiúscula i com ogonek","Latin small letter i with ogonek":"Latim - letra minúscula i com ogonek","Latin capital letter i with dot above":"Latim - letra maiúscula i com um ponto por cima","Latin small letter dotless i":"Latim - letra minúscula i, sem ponto","Latin capital ligature ij":"Latim - digrama das letras maiúsculas ligadas ij","Latin small ligature ij":"Latim - digrama das letras minúsculas ligadas ij","Latin capital letter j with circumflex":"Latim - letra maiúscula j com acento circunflexo","Latin small letter j with circumflex":"Latim - letra minúscula j com acento circunflexo","Latin capital letter k with cedilla":"Latim - letra maiúscula k com cedilha","Latin small letter k with cedilla":"Latim - letra minúscula k com cedilha","Latin small letter kra":"Latim - letra minúscula kra (pequeno k)","Latin capital letter l with acute":"Latim - letra maiúscula l com acento agudo","Latin small letter l with acute":"Latim - letra minúscula l com acento agudo","Latin capital letter l with cedilla":"Latim - letra maiúscula l com cedilha","Latin small letter l with cedilla":"Latim - letra minúscula l com cedilha","Latin capital letter l with caron":"Latim - letra maiúscula l com cáron","Latin small letter l with caron":"Latim - letra minúscula l com cáron","Latin capital letter l with middle dot":"Latim - letra maiúscula l com ponto central","Latin small letter l with middle dot":"Latim - letra minúscula l com ponto central","Latin capital letter l with stroke":"Latim - letra maiúscula l cortada por um traço","Latin small letter l with stroke":"Latim - letra minúscula l cortada por um traço","Latin capital letter n with acute":"Latim - letra maiúscula n com acento agudo","Latin small letter n with acute":"Latim - letra minúscula n com acento agudo","Latin capital letter n with cedilla":"Latim - letra maiúscula n com cedilha","Latin small letter n with cedilla":"Latim - letra minúscula n com cedilha","Latin capital letter n with caron":"Latim - letra maiúscula n com cáron","Latin small letter n with caron":"Latim - letra minúscula n com cáron","Latin small letter n preceded by apostrophe":"Latim - letra minúscula n precedida por um apóstrofo","Latin capital letter eng":"Latim - letra maiúscula eng (fonema velar nasal)","Latin small letter eng":"Latim - letra minúscula eng (fonema velar nasal)","Latin capital letter o with macron":"Latim - letra maiúscula o com mácron","Latin small letter o with macron":"Latim - letra minúscula o com mácron","Latin capital letter o with breve":"Latim - letra maiúscula o com breve","Latin small letter o with breve":"Latim - letra minúscula o com breve","Latin capital letter o with double acute":"Latim - letra maiúscula o com acento agudo duplo","Latin small letter o with double acute":"Latim - letra minúscula o com acento agudo duplo","Latin capital ligature oe":"Latim - digrama das letras maiúsculas ligadas oe","Latin small ligature oe":"Latim - digrama das letras minúsculas ligadas oe","Latin capital letter r with acute":"Latim - letra maiúscula r com acento agudo","Latin small letter r with acute":"Latim - letra minúscula r com acento agudo","Latin capital letter r with cedilla":"Latim - letra maiúscula r com cedilha","Latin small letter r with cedilla":"Latim - letra minúscula r com cedilha","Latin capital letter r with caron":"Latim - letra maiúscula r com cáron","Latin small letter r with caron":"Latim - letra minúscula r com cáron","Latin capital letter s with acute":"Latim - letra maiúscula s com acento agudo","Latin small letter s with acute":"Latim - letra minúscula s com acento agudo","Latin capital letter s with circumflex":"Latim - letra maiúscula s com acento circunflexo","Latin small letter s with circumflex":"Latim - letra minúscula s com acento circunflexo","Latin capital letter s with cedilla":"Latim - letra maiúscula s com cedilha","Latin small letter s with cedilla":"Latim - letra minúscula s com cedilha","Latin capital letter s with caron":"Latim - letra maiúscula s com cáron","Latin small letter s with caron":"Latim - letra minúscula s com cáron","Latin capital letter t with cedilla":"Latim - letra maiúscula t com cedilha","Latin small letter t with cedilla":"Latim - letra minúscula t com cedilha","Latin capital letter t with caron":"Latim - letra maiúscula t com cáron","Latin small letter t with caron":"Latim - letra minúscula t com cáron","Latin capital letter t with stroke":"Latim - letra maiúscula t cortada por um traço","Latin small letter t with stroke":"Latim - letra minúscula t cortada por um traço","Latin capital letter u with tilde":"Latim - letra maiúscula u com til","Latin small letter u with tilde":"Latim - letra minúscula u com til","Latin capital letter u with macron":"Latim - letra maiúscula u com mácron","Latin small letter u with macron":"Latim - letra minúscula u com mácron","Latin capital letter u with breve":"Latim - letra maiúscula u com breve","Latin small letter u with breve":"Latim - letra minúscula u com breve","Latin capital letter u with ring above":"Latim - letra maiúscula u com círculo por cima","Latin small letter u with ring above":"Latim - letra minúscula u com círculo por cima","Latin capital letter u with double acute":"Latim - letra maiúscula u com acento agudo duplo","Latin small letter u with double acute":"Latim - letra minúscula u com acento agudo duplo","Latin capital letter u with ogonek":"Latim - letra maiúscula u com ogonek","Latin small letter u with ogonek":"Latim - letra minúscula u com ogonek","Latin capital letter w with circumflex":"Latim - letra maiúscula w com acento circunflexo","Latin small letter w with circumflex":"Latim - letra minúscula w com acento circunflexo","Latin capital letter y with circumflex":"Latim - letra maiúscula y com acento circunflexo","Latin small letter y with circumflex":"Latim - letra minúscula y com acento circunflexo","Latin capital letter y with diaeresis":"Latim - letra maiúscula y com trema","Latin capital letter z with acute":"Latim - letra maiúscula z com acento agudo","Latin small letter z with acute":"Latim - letra minúscula z com acento agudo","Latin capital letter z with dot above":"Latim - letra maiúscula z com um ponto por cima","Latin small letter z with dot above":"Latim - letra minúscula z com um ponto por cima","Latin capital letter z with caron":"Latim - letra maiúscula z com cáron","Latin small letter z with caron":"Latim - letra minúscula z com cáron","Latin small letter long s":"Latim - s prolongado (símbolo do fonema fricativo alveolar surdo)","Less-than sign":"Sinal de menor","Greater-than sign":"Sinal de maior","Less-than or equal to":"Menor que ou igual a","Greater-than or equal to":"Maior que ou igual a","En dash":"Traço","Em dash":"Travessão",Macron:"Mácron",Overline:"Linha sobreposta","Degree sign":"Sinal de grau","Minus sign":"Sinal de subtração","Plus-minus sign":"Sinal de adição-subtração","Division sign":"Sinal de divisão","Fraction slash":"Barra de fração","Multiplication sign":"Sinal de multiplicação","Latin small letter f with hook":"Latim - letra minúscula f com gancho",Integral:"Inteiro","N-ary summation":"N-ésimo somatório",Infinity:"Infinito","Square root":"Raiz quadrada","Tilde operator":"Operador de til","Approximately equal to":"Aproximadamente igual a","Almost equal to":"Quase igual a","Not equal to":"Diferente de","Identical to":"Idêntico a","Element of":"Elemento de","Not an element of":"Não é um elemento de","Contains as member":"Contém como membro","N-ary product":"N-ésimo produto","Logical and":"E lógico","Logical or":"Ou lógico","Not sign":"Sinal de negação",Intersection:"Interseção",Union:"União","Partial differential":"Diferencial parcial","For all":"Para todo","There exists":"Existe","Empty set":"Conjunto vazio",Nabla:"Nabla","Asterisk operator":"Operador asterisco","Proportional to":"Proporcional a",Angle:"Ângulo","Vulgar fraction one quarter":"Fração comum - um quarto","Vulgar fraction one half":"Fração comum - um meio","Vulgar fraction three quarters":"Fração comum - três quartos","Single left-pointing angle quotation mark":"Plica esquerda em ângulo","Single right-pointing angle quotation mark":"Plica direita em ângulo","Left-pointing double angle quotation mark":"Aspas esquerdas em ângulo","Right-pointing double angle quotation mark":"Aspas direitas em ângulo","Left single quotation mark":"Plica esquerda","Right single quotation mark":"Plica direita","Left double quotation mark":"Aspas esquerdas","Right double quotation mark":"Aspas direitas","Single low-9 quotation mark":"Plica curva inferior","Double low-9 quotation mark":"Aspas curvas inferiores","Inverted exclamation mark":"Ponto de exclamação invertido","Inverted question mark":"Ponto de interrogação invertido","Two dot leader":"Dois pontos de seguimento","Horizontal ellipsis":"Reticências horizontais","Double dagger":"Óbelo duplo","Per mille sign":"Sinal de permilagem","Per ten thousand sign":"Razão de um para dez mil","Double exclamation mark":"Ponto de exclamação duplo","Question exclamation mark":"Sinal de exclamação interrogativa","Exclamation question mark":"Sinal de interrogação exclamativa","Double question mark":"Duplo ponto de interrogação","Copyright sign":"Sinal de copyright","Registered sign":"Sinal de registado","Trade mark sign":"Sinal de marca comercial","Section sign":"Sinal de secção","Paragraph sign":"Sinal de parágrafo","Reversed paragraph sign":"Sinal de parágrafo invertido","Show source":"Mostrar fonte","Show blocks":"Mostrar blocos","Select all":"Selecionar todos","Disable editing":"Desativar edição","Enable editing":"Ativar edição","Previous editable region":"Região editável anterior","Next editable region":"Região editável seguinte","Navigate editable regions":"Navegar regiões editáveis","Remove Format":"Remover formatação","Page break":"Quebra de página","media widget":"Miniaplicação de media","Media URL":"URL de media","Paste the media URL in the input.":"Cole o URL de média no input.","Tip: Paste the URL into the content to embed faster.":"Dica: Cole o URL no conteúdo para incorporar mais rapidamente.","The URL must not be empty.":"O URL não pode ficar vazio.","This media URL is not supported.":"Este URL de media não é suportado.","Insert media":"Inserir media",Media:"Multimédia","Media toolbar":"Barra de ferramentas de media","Open media in new tab":"Abrir ficheiro multimédia em novo separador","Media embed":"Incorporar média","Numbered List":"Lista ordenada","Bulleted List":"Lista não ordenada","To-do List":"Lista de tarefas","Bulleted list styles toolbar":"Barra de ferramentas de estilos de lista de itens","Numbered list styles toolbar":"Barra de ferramentas de estilos de lista numerada","Toggle the disc list style":"Alternar para estilo de lista de discos","Toggle the circle list style":"Alternar para estilo de lista de círculos","Toggle the square list style":"Alternar para estilo de lista de quadrados","Toggle the decimal list style":"Alternar para estilo de lista decimal","Toggle the decimal with leading zero list style":"Alternar para estilo de lista decimal com zero inicial","Toggle the lower–roman list style":"Alternar para estilo de lista de números romanos minúsculos","Toggle the upper–roman list style":"Alternar para estilo de lista de números romanos maiúsculos","Toggle the lower–latin list style":"Alternar para estilo de lista de latim minúsculo","Toggle the upper–latin list style":"Alternar para estilo de lista de latim maiúsculo",Disc:"Disco",Circle:"Círculo",Square:"Quadrado",Decimal:"Decimal","Decimal with leading zero":"Decimal com zero inicial","Lower–roman":"Romano minúsculo","Upper-roman":"Romano maiúsculo","Lower-latin":"Latim minúsculo","Upper-latin":"Latim maiúsculo","List properties":"Propriedades da lista","Start at":"Começa em","Invalid start index value.":"Valor de índice inicial inválido.","Start index must be greater than 0.":"O índice inicial tem de ser superior a 0.","Reversed order":"Ordem inversa","Keystrokes that can be used in a list":"Batimentos de teclas que podem ser utilizados numa lista","Increase list item indent":"Aumentar o avanço de um item de lista","Decrease list item indent":"Diminuir o avanço de um item de lista","Entering a to-do list":"Introdução de uma lista de afazeres","Leaving a to-do list":"A sair de uma lista de afazeres",Unlink:"Desligar",Link:"Hiperligação","Link URL":"URL da ligação","Link URL must not be empty.":"O URL da ligação não pode estar em branco.","Link image":"Imagem da hiperligação","Edit link":"Editar hiperligação","Open link in new tab":"Abrir hiperligação num novo separador","Open in a new tab":"Abrir num novo separador",Downloadable:"Descarregável","Create link":"Criar ligação","Move out of a link":"Sair de uma ligação","Link properties":"Propriedades de ligação","Displayed text":"Texto exibido","No links available":"Sem ligações disponíveis",Language:"Idioma","Choose language":"Escolher idioma","Remove language":"Remover idioma","Increase indent":"Aumentar indentação","Decrease indent":"Diminuir indentação","image widget":"módulo de imagem","Wrap text":"Envolver texto","Break text":"Quebrar texto","In line":"Em linha","Side image":"Imagem lateral","Full size image":"Imagem em tamanho completo","Left aligned image":"Imagem alinhada à esquerda","Centered image":"Imagem centrada","Right aligned image":"Imagem alinhada à direita","Change image text alternative":"Alterar texto alternativo da imagem","Text alternative":"Texto alternativo","Enter image caption":"Indicar legenda da imagem","Insert image":"Inserir imagem","Replace image":"Substituir imagem","Upload from computer":"Carregar a partir do computador","Replace from computer":"Substituir a partir do computador","Upload image from computer":"Carregar imagem a partir do computador","Image from computer":"Imagem a partir do computador","From computer":"Do computador","Replace image from computer":"Substituir imagem a partir do computador","Upload failed":"Falha ao carregar","You have no image upload permissions.":"Não tem permissões para carregar imagens.","Image toolbar":"Barra de ferramentas de imagem","Resize image":"Redimensionar imagem","Resize image to %0":"Redimensionar imagem para %0","Resize image to the original size":"Redimensionar imagem para tamanho original","Resize image (in %0)":"Redimensionar imagem (em %0)",Original:"Original","Custom image size":"Personalizar o tamanho da imagem",Custom:"Personalizar","Image resize list":"Lista de redimensionamento de imagem","Insert image via URL":"Inserir imagem através de URL","Insert via URL":"Inserir através de endereço URL","Image via URL":"Imagem através de endereço URL","Via URL":"Através de endereço URL","Update image URL":"Atualizar URL da imagem","Caption for the image":"Legenda da imagem","Caption for image: %0":"Legenda da imagem: %0","The value must not be empty.":"O valor não pode estar em branco.","The value should be a plain number.":"O valor deve ser um número inteiro.","Uploading image":"A carregar imagem","Image upload complete":"Carregamento da imagem concluído","Error during image upload":"Erro durante o carregamento da imagem",Image:"Imagem","Image Resize":"Redimensionar imagem","Text Alternative":"Alternativa de texto","HTML object":"Objeto HTML","Insert HTML":"Inserir HTML","HTML snippet":"Fragmento de HTML","Paste raw HTML here...":"Colar aqui HTML em bruto...","Edit source":"Editar fonte","Save changes":"Guardar alterações","No preview available":"Pré-visualização indisponível","Empty snippet content":"Conteúdo de fragmento vazio","Horizontal line":"Linha horizontal","Yellow marker":"Marcador amarelo","Green marker":"Marcador verde","Pink marker":"Marcador rosa","Blue marker":"Marcador azul","Red pen":"Caneta vermelha","Green pen":"Caneta verde","Remove highlight":"Remover realce",Highlight:"Realçar","Text highlight toolbar":"Barra de ferramentas de realces de texto",Heading:"Cabeçalho","Choose heading":"Escolher cabeçalho","Heading 1":"Cabeçalho 1","Heading 2":"Cabeçalho 2","Heading 3":"Cabeçalho 3","Heading 4":"Cabeçalho 4","Heading 5":"Cabeçalho 5","Heading 6":"Cabeçalho 6","Type your title":"Introduza o seu título","Type or paste your content here.":"Digite ou cole o seu conteúdo aqui.","Enter fullscreen mode":"Entrar em modo de ecrã inteiro","Leave fullscreen mode":"Sair de modo de ecrã inteiro","Fullscreen mode":"Modo de ecrã inteiro","Toggle fullscreen mode":"Alternar modo de ecrã inteiro","Document outline":"Esboço do documento","Connected users":"Utilizadores ligados","Font Size":"Tamanho da fonte",Tiny:"Mínima",Small:"Pequena",Big:"Grande",Huge:"Enorme","Font Family":"Família de Fontes",Default:"Padrão","Font Color":"Cor da Fonte","Font Background Color":"Cor de Fundo da Fonte","Document colors":"Cores do documento","Find and replace":"Encontrar e substituir","Find in text…":"Encontrar no texto...",Find:"Encontrar","Previous result":"Resultado anterior","Next result":"Resultado seguinte",Replace:"Substituir","Replace all":"Substituir todos","Match case":"Corresponder maiúsculas/minúsculas","Whole words only":"Apenas palavras inteiras","Replace with…":"Substituir por...","Text to find must not be empty.":"O texto a pesquisar não pode estar vazio.","Tip: Find some text first in order to replace it.":"Dica: Encontre algum texto primeiro para poder substituí-lo.","Advanced options":"Opções avançadas","Find in the document":"Localizar no documento","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Inserir uma quebra suave (um elemento <code>&lt;br&gt;</code>)","Insert a hard break (a new paragraph)":"Inserir uma quebra brusca (um novo parágrafo)",Emoji:"Emoji","Show all emoji...":"Mostrar todos os emojis...","Find an emoji (min. 2 characters)":"Encontrar um emoji (mín. 2 carateres)",'No emojis were found matching "%0".':'Não foi encontrado nenhum emoji que corresponda a "%0".',"Keep on typing to see the emoji.":"Continue a escrever para ver o emoji.","The query must contain at least two characters.":"A consulta deve conter, pelo menos, dois carateres.","Smileys & Expressions":"Smiley e expressões","Gestures & People":"Gestos e pessoas","Animals & Nature":"Animais e natureza","Food & Drinks":"Comida e bebidas","Travel & Places":"Viagens e lugares",Activities:"Atividades",Objects:"Objetos",Symbols:"Símbolos",Flags:"Bandeiras","Select skin tone":"Selecionar tom de pele","Default skin tone":"Tom de pele padrão","Light skin tone":"Tom de pele claro","Medium Light skin tone":"Tom de pele médio claro","Medium skin tone":"Tom de pele médio","Medium Dark skin tone":"Tom de pele médio escuro","Dark skin tone":"Tom de pele escuro","Emoji picker":"Seletor de emojis",Cancel:"Cancelar",Clear:"Limpar","Remove color":"Remover cor","Restore default":"Restaurar predefinição",Save:"Guardar","Show more items":"Mostrar mais itens","%0 of %1":"%0 de %1","Cannot upload file:":"Não foi possível carregar o ficheiro:","Rich Text Editor. Editing area: %0":"Editor de Texto Formatado. Área de edição: %0","Insert with file manager":"Inserir com o gestor de ficheiros","Replace with file manager":"Substituir com o gestor de ficheiros","Insert image with file manager":"Inserir imagem com o gestor de ficheiros","Replace image with file manager":"Substituir imagem com o gestor de ficheiros",File:"Ficheiro","With file manager":"Com o gestor de ficheiros","Toggle caption off":"Desativar legenda","Toggle caption on":"Ativar legenda","Content editing keystrokes":"Batimentos de teclas para editar o conteúdo","These keyboard shortcuts allow for quick access to content editing features.":"Estes atalhos de teclado permitem aceder rapidamente às funcionalidades de edição de conteúdo.","User interface and content navigation keystrokes":"Batimentos de teclas para navegar pela interface de utilizador e pelo conteúdo","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Para navegar de forma mais eficiente pela interface de utilizador do CKEditor 5, utilize os seguintes batimentos de teclas.","Close contextual balloons, dropdowns, and dialogs":"Fechar balões contextuais, menus suspensos e caixas de diálogo","Open the accessibility help dialog":"Abrir a caixa de diálogo de ajuda de acessibilidade","Move focus between form fields (inputs, buttons, etc.)":"Mover o foco entre os campos do formulário (entradas, botões, etc.)","Move focus to the menu bar, navigate between menu bars":"Mover o foco para a barra de menu, navegar entre as barras de menu","Move focus to the toolbar, navigate between toolbars":"Mover o foco para a barra de ferramentas, navegar entre barras de ferramentas","Navigate through the toolbar or menu bar":"Navegar pela barra de ferramentas ou pela barra de menu","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Executar o botão atualmente em foco. A execução de botões que interagem com o conteúdo do editor coloca novamente o foco sobre o conteúdo.",Accept:"Aceitar",Paragraph:"Parágrafo","Color picker":"Seletor de cor","Please try a different phrase or check the spelling.":"Tente uma expressão diferente ou verifique a ortografia.",Source:"Fonte",Insert:"Inserir",Update:"Atualizar",Back:"Voltar","Insert code block":"Inserir bloco de citação","Plain text":"Texto simples","Leaving %0 code snippet":"A sair do fragmento de código %0","Entering %0 code snippet":"A introduzir o fragmento de código %0","Entering code snippet":"A introduzir fragmento de código","Leaving code snippet":"A sair do fragmento de código","Code block":"Bloco de código","Copy selected content":"Copiar o conteúdo selecionado","Paste content":"Colar o conteúdo","Paste content as plain text":"Colar o conteúdo como texto sem formatação","Insert image or file":"Inserir imagem ou ficheiro","Could not obtain resized image URL.":"Não é possível obter o URL da imagem redimensionada.","Selecting resized image failed":"A seleção da imagem redimensionada falhou","Could not insert image at the current position.":"Não é possível inserir a imagem na posição atual.","Inserting image failed":"A inserção da imagem falhou",Bookmark:"Marcador","Edit bookmark":"Editar marcador","Remove bookmark":"Remover marcador","Bookmark name":"Nome do marcador","Enter the bookmark name without spaces.":"Introduza o nome do marcador sem espaços.","Bookmark must not be empty.":"O marcador não deve estar vazio.","Bookmark name cannot contain space characters.":"O nome do marcador não pode conter caracteres de espaço.","Bookmark name already exists.":"O nome do marcador já existe.","bookmark widget":"widget de marcador","Bookmark toolbar":"Barra de marcadores",Bookmarks:"Marcadores","No bookmarks available.":"Sem marcadores disponíveis.","Scroll to bookmark":"Ir para o marcador","Open file manager":"Abrir gestor de ficheiros","Cannot determine a category for the uploaded file.":"Não é possível determinar a categoria do ficheiro carregado.","Cannot access default workspace.":"Não é possível aceder ao espaço de trabalho padrão.","You have no image editing permissions.":"Não tem permissões para editar imagens.","Edit image":"Editar imagem","Processing the edited image.":"A processar a imagem editada.","Server failed to process the image.":"O servidor não conseguiu processar a imagem.","Failed to determine category of edited image.":"Não foi possível determinar a categoria da imagem editada.","Block quote":"Bloco de citação",Bold:"Negrito",Italic:"Itálico",Underline:"Sublinhado",Code:"Código",Strikethrough:"Rasurar",Subscript:"Subscrito",Superscript:"Sobrescrito","Italic text":"Texto em itálico","Move out of an inline code style":"Sair de um estilo de código inline","Bold text":"Texto em negrito","Underline text":"Sublinhar texto","Strikethrough text":"Texto rasurado","Saving changes":"A guardar alterações","Revert autoformatting action":"Reverter ação de formatação automática","Align left":"Alinhar à esquerda","Align right":"Alinhar à direita","Align center":"Alinhar ao centro",Justify:"Justificar","Text alignment":"Alinhamento de texto","Text alignment toolbar":"Barra de alinhamento de texto"},getPluralForm(o){return o!=1}}};/**
399
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
400
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
401
+ */const i2={ru:{dictionary:{"Words: %0":"Слов: %0","Characters: %0":"Символов: %0","Widget toolbar":"Панель инструментов виджета","Insert paragraph before block":"Вставить параграф перед блоком","Insert paragraph after block":"Вставить параграф после блока","Press Enter to type after or press Shift + Enter to type before the widget":"Нажмите Enter для ввода текста после виджета или нажмите Shift + Enter для ввода текста перед виджетом","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Нажатия клавиш, которые можно использовать при выборе виджета (например: изображение, таблица и т. д.)","Insert a new paragraph directly after a widget":"Вставить новый абзац непосредственно после виджета.","Insert a new paragraph directly before a widget":"Вставить новый абзац непосредственно перед виджетом.","Move the caret to allow typing directly before a widget":"Переместите курсор, чтобы можно было вводить текст непосредственно перед виджетом.","Move the caret to allow typing directly after a widget":"Переместить курсор, чтобы можно было вводить текст сразу после виджета.","Move focus from an editable area back to the parent widget":"Переместите фокус с редактируемой области обратно на родительский виджет","Upload in progress":"Идёт загрузка",Undo:"Отменить",Redo:"Повторить","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:"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").',"Insert table":"Вставить таблицу","Header column":"Столбец заголовков","Insert column left":"Вставить столбец слева","Insert column right":"Вставить столбец справа","Delete column":"Удалить столбец","Select column":"Выбрать столбец",Column:"Столбец","Header row":"Строка заголовков","Insert row below":"Вставить строку ниже","Insert row above":"Вставить строку выше","Delete row":"Удалить строку","Select row":"Выбрать строку",Row:"Строка","Merge cell up":"Объединить с ячейкой сверху","Merge cell right":"Объединить с ячейкой справа","Merge cell down":"Объединить с ячейкой снизу","Merge cell left":"Объединить с ячейкой слева","Split cell vertically":"Разделить ячейку вертикально","Split cell horizontally":"Разделить ячейку горизонтально","Merge cells":"Объединить ячейки","Table toolbar":"Панель инструментов таблицы","Table properties":"Свойства таблицы","Cell properties":"Свойства ячейки",Border:"Граница",Style:"Стиль",Width:"Ширина",Height:"Высота",Color:"Цвет",Background:"Фон",Padding:"Отступ",Dimensions:"Размеры","Table cell text alignment":"Выравнивание текста в ячейке таблицы",Alignment:"Выравнивание","Horizontal text alignment toolbar":"Панель инструментов горизонтального выравнивания текста","Vertical text alignment toolbar":"Панель инструментов вертикального выравнивания текста","Table alignment toolbar":"Панель инструментов выравнивания таблицы",None:"Нет",Solid:"Сплошная",Dotted:"Точечная",Dashed:"Пунктирная",Double:"Двойная",Groove:"Желобчатая",Ridge:"Ребристая",Inset:"Вдавленная",Outset:"Выпуклая","Align cell text to the left":"Выровнять текст по левому краю","Align cell text to the center":"Выровнять текст по центру","Align cell text to the right":"Выровнять текст по правому краю","Justify cell text":"Выровнять текст по ширине","Align cell text to the top":"Выровнять текст ячейки по верхнему краю","Align cell text to the middle":"Выровнять текст ячейки по центру","Align cell text to the bottom":"Выровнять текст ячейки по нижнему краю","Align table to the left":"Выровнять таблицу по левому краю","Center table":"Выровнять таблицу по центру","Align table to the right":"Выровнять таблицу по правому краю",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Неверный цвет. Попробуйте "#FF0000" или "rgb(255,0,0)" или "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Неверное значение. Попробуйте "10px" или "2em" или просто "2".',"Enter table caption":"Подпись таблицы","Keystrokes that can be used in a table cell":"Нажатия клавиш, которые можно использовать в ячейке таблицы","Move the selection to the next cell":"Переместить выделение в следующую ячейку","Move the selection to the previous cell":"Переместить выделение на предыдущую ячейку","Insert a new table row (when in the last cell of a table)":"Вставить новую строку таблицы (в последней ячейке таблицы)","Navigate through the table":"Навигация по таблице",Table:"Таблица","Insert table layout":"Вставить табличный макет","Table layout":"Табличный макет","Layout table":"Таблица макетов","Content table":"Таблица содержимого","Choose table type":"Выберите тип таблицы","Table type":"Тип таблицы","Table type options":"Параметры типа таблицы",Styles:"Стили","Multiple styles":"Несколько стилей","Block styles":"Блочные стили","Text styles":"Стиль текста","Special characters":"Спецсимволы",Category:"Категория",All:"Все",Arrows:"Стрелки",Currency:"Валюта",Latin:"Латинские",Mathematical:"Математические",Text:"Текст","leftwards simple arrow":"простая стрелка влево","rightwards simple arrow":"простая стрелка вправо","upwards simple arrow":"простая стрелка вверх","downwards simple arrow":"простая стрелка вниз","leftwards double arrow":"Двойная стрелка влево","rightwards double arrow":"Двойная стрелка вправо","upwards double arrow":"Двойная стрелка вверх","downwards double arrow":"Двойная стрелка вниз","leftwards dashed arrow":"Пунктирная стрелка влево","rightwards dashed arrow":"Пунктирная стрелка вправо","upwards dashed arrow":"Пунктирная стрелка вверх","downwards dashed arrow":"Пунктирная стрелка вниз","leftwards arrow to bar":"Стрелка влево, упирающаяся в планку","rightwards arrow to bar":"Стрелка вправо, упирающаяся в планку","upwards arrow to bar":"Стрелка вверх, упирающаяся в планку","downwards arrow to bar":"Стрелка вниз, упирающаяся в планку","up down arrow with base":"Стрелка вверх и вниз от планки внизу","back with leftwards arrow above":"Стрелка влево над словом BACK (назад)","end with leftwards arrow above":"Стрелка влево над словом END (конец)","on with exclamation mark with left right arrow above":"Стрелка влево и вправо над словом ON! (включить)","soon with rightwards arrow above":"Стрелка вправо над словом SOON (скоро)","top with upwards arrow above":"Стрелка вверх над словом TOP (верх)","Dollar sign":"Символ доллара","Euro sign":"Символ евро","Yen sign":"Символ иены","Pound sign":"Символ фунта стерлингов","Cent sign":"Символ цента","Euro-currency sign":"Символ евровалюты","Colon sign":"Символ двоеточия","Cruzeiro sign":"Символ бразильского крузейро","French franc sign":"Символ французского франка","Lira sign":"Символ лиры","Currency sign":"Символ валюты","Bitcoin sign":"Символ биткоина","Mill sign":"Символ милль","Naira sign":"Символ найры","Peseta sign":"Символ песеты","Rupee sign":"Символ рупии","Won sign":"Символ воны","New sheqel sign":"Символ нового шекеля","Dong sign":"Символ донга","Kip sign":"Символ кипа","Tugrik sign":"Символ тугрика","Drachma sign":"Символ драхмы","German penny sign":"Символ немецкого пенни","Peso sign":"Символ песо","Guarani sign":"Символ гуарани","Austral sign":"Символ аргентинского аустраля","Hryvnia sign":"Символ гривны","Cedi sign":"Символ ганского седи","Livre tournois sign":"Символ турского ливра","Spesmilo sign":"Символ спесмило","Tenge sign":"Символ тенге","Indian rupee sign":"Символ индийской рупии","Turkish lira sign":"Символ турецкой лиры","Nordic mark sign":"Символ скандинавской марки","Manat sign":"Символ маната","Ruble sign":"Символ рубля","Latin capital letter a with macron":"Латинская заглавная буква «A» с макроном","Latin small letter a with macron":"Латинская строчная буква «a» с макроном","Latin capital letter a with breve":"Латинская заглавная буква «A» с бревисом","Latin small letter a with breve":"Латинская строчная буква «a» с бревисом","Latin capital letter a with ogonek":"Латинская заглавная буква «A» с огонеком","Latin small letter a with ogonek":"Латинская строчная буква «a» с огонеком","Latin capital letter c with acute":"Латинская заглавная буква «C» с акутом","Latin small letter c with acute":"Латинская строчная буква «c» с акутом","Latin capital letter c with circumflex":"Латинская заглавная буква «C» с циркумфлексом","Latin small letter c with circumflex":"Латинская строчная буква «c» с циркумфлексом","Latin capital letter c with dot above":"Латинская заглавная буква «C» с точкой сверху","Latin small letter c with dot above":"Латинская строчная буква «c» с точкой сверху","Latin capital letter c with caron":"Латинская заглавная буква «C» с гачеком","Latin small letter c with caron":"Латинская строчная буква «c» с гачеком","Latin capital letter d with caron":"Латинская заглавная буква «D» с гачеком","Latin small letter d with caron":"Латинская строчная буква «d» с гачеком","Latin capital letter d with stroke":"Латинская заглавная буква «D» со штрихом","Latin small letter d with stroke":"Латинская строчная буква «d» со штрихом","Latin capital letter e with macron":"Латинская заглавная буква «E» с макроном","Latin small letter e with macron":"Латинская строчная буква «e» с макроном","Latin capital letter e with breve":"Латинская заглавная буква «E» с бревисом","Latin small letter e with breve":"Латинская строчная буква «e» с бревисом","Latin capital letter e with dot above":"Латинская заглавная буква «E» с точкой сверху","Latin small letter e with dot above":"Латинская строчная буква «e» с точкой сверху","Latin capital letter e with ogonek":"Латинская заглавная буква «E» с огонеком","Latin small letter e with ogonek":"Латинская строчная буква «e» с огонеком","Latin capital letter e with caron":"Латинская заглавная буква «E» с гачеком","Latin small letter e with caron":"Латинская строчная буква «e» с гачеком","Latin capital letter g with circumflex":"Латинская заглавная буква «G» с циркумфлексом","Latin small letter g with circumflex":"Латинская строчная буква «g» с циркумфлексом","Latin capital letter g with breve":"Латинская заглавная буква «G» с бревисом","Latin small letter g with breve":"Латинская строчная буква «g» с бревисом","Latin capital letter g with dot above":"Латинская заглавная буква «G» с точкой сверху","Latin small letter g with dot above":"Латинская строчная буква «g» с точкой сверху","Latin capital letter g with cedilla":"Латинская заглавная буква «G» с седилью","Latin small letter g with cedilla":"Латинская строчная буква «g» с седилью","Latin capital letter h with circumflex":"Латинская заглавная буква «H» с циркумфлексом","Latin small letter h with circumflex":"Латинская строчная буква «h» с циркумфлексом","Latin capital letter h with stroke":"Латинская заглавная буква «H» со штрихом","Latin small letter h with stroke":"Латинская строчная буква «h» со штрихом","Latin capital letter i with tilde":"Латинская заглавная буква «I» с тильдой","Latin small letter i with tilde":"Латинская строчная буква «i» с тильдой","Latin capital letter i with macron":"Латинская заглавная буква «I» с макроном","Latin small letter i with macron":"Латинская строчная буква «i» с макроном","Latin capital letter i with breve":"Латинская заглавная буква «I» с бревисом","Latin small letter i with breve":"Латинская строчная буква «i» с бревисом","Latin capital letter i with ogonek":"Латинская заглавная буква «I» с огонеком","Latin small letter i with ogonek":"Латинская строчная буква «i» с огонеком","Latin capital letter i with dot above":"Латинская заглавная буква «I» с точкой сверху","Latin small letter dotless i":"Латинская строчная буква «i» без точки","Latin capital ligature ij":"Латинская заглавная лигатура «IJ»","Latin small ligature ij":"Латинская строчная лигатура «ij»","Latin capital letter j with circumflex":"Латинская заглавная буква «J» с циркумфлексом","Latin small letter j with circumflex":"Латинская строчная буква «j» с циркумфлексом","Latin capital letter k with cedilla":"Латинская заглавная буква «K» с седилью","Latin small letter k with cedilla":"Латинская строчная буква «k» с седилью","Latin small letter kra":"Латинская строчная буква кра","Latin capital letter l with acute":"Латинская заглавная буква «L» с акутом","Latin small letter l with acute":"Латинская строчная буква «l» с акутом","Latin capital letter l with cedilla":"Латинская заглавная буква «L» с седилью","Latin small letter l with cedilla":"Латинская строчная буква «l» с седилью","Latin capital letter l with caron":"Латинская заглавная буква «L» с гачеком","Latin small letter l with caron":"Латинская строчная буква «l» с гачеком","Latin capital letter l with middle dot":"Латинская заглавная буква «L» с внутристрочной точкой","Latin small letter l with middle dot":"Латинская строчная буква «l» с внутристрочной точкой","Latin capital letter l with stroke":"Латинская заглавная буква «L» со штрихом","Latin small letter l with stroke":"Латинская строчная буква «l» со штрихом","Latin capital letter n with acute":"Латинская заглавная буква «N» с акутом","Latin small letter n with acute":"Латинская строчная буква «n» с акутом","Latin capital letter n with cedilla":"Латинская заглавная буква «N» с седилью","Latin small letter n with cedilla":"Латинская строчная буква «n» с седилью","Latin capital letter n with caron":"Латинская заглавная буква «N» с гачеком","Latin small letter n with caron":"Латинская строчная буква «n» с гачеком","Latin small letter n preceded by apostrophe":"Латинская строчная буква «n» с предшествующим апострофом","Latin capital letter eng":"Латинская заглавная буква энг","Latin small letter eng":"Латинская строчная буква энг","Latin capital letter o with macron":"Латинская заглавная буква «O» с макроном","Latin small letter o with macron":"Латинская строчная буква «o» с макроном","Latin capital letter o with breve":"Латинская заглавная буква «O» с бревисом","Latin small letter o with breve":"Латинская строчная буква «o» с бревисом","Latin capital letter o with double acute":"Латинская заглавная буква «O» с двойным акутом","Latin small letter o with double acute":"Латинская строчная буква «o» с двойным акутом","Latin capital ligature oe":"Латинская заглавная лигатура OE","Latin small ligature oe":"Латинская строчная лигатура oe","Latin capital letter r with acute":"Латинская заглавная буква «R» с акутом","Latin small letter r with acute":"Латинская строчная буква «r» с акутом","Latin capital letter r with cedilla":"Латинская заглавная буква «R» с седилью","Latin small letter r with cedilla":"Латинская строчная буква «r» с седилью","Latin capital letter r with caron":"Латинская заглавная буква «R» с гачеком","Latin small letter r with caron":"Латинская строчная буква «r» с гачеком","Latin capital letter s with acute":"Латинская заглавная буква «S» с акутом","Latin small letter s with acute":"Латинская строчная буква «s» с акутом","Latin capital letter s with circumflex":"Латинская заглавная буква «S» с циркумфлексом","Latin small letter s with circumflex":"Латинская строчная буква «s» с циркумфлексом","Latin capital letter s with cedilla":"Латинская заглавная буква «S» с седилью","Latin small letter s with cedilla":"Латинская строчная буква «s» с седилью","Latin capital letter s with caron":"Латинская заглавная буква «S» с гачеком","Latin small letter s with caron":"Латинская строчная буква «s» с гачеком","Latin capital letter t with cedilla":"Латинская заглавная буква «T» с седилью","Latin small letter t with cedilla":"Латинская строчная буква «t» с седилью","Latin capital letter t with caron":"Латинская заглавная буква «T» с гачеком","Latin small letter t with caron":"Латинская строчная буква «t» с гачеком","Latin capital letter t with stroke":"Латинская заглавная буква «T» со штрихом","Latin small letter t with stroke":"Латинская строчная буква «t» со штрихом","Latin capital letter u with tilde":"Латинская заглавная буква «U» с тильдой","Latin small letter u with tilde":"Латинская строчная буква «u» с тильдой","Latin capital letter u with macron":"Латинская заглавная буква «U» с макроном","Latin small letter u with macron":"Латинская строчная буква «u» с макроном","Latin capital letter u with breve":"Латинская заглавная буква «U» с бревисом","Latin small letter u with breve":"Латинская строчная буква «u» с бревисом","Latin capital letter u with ring above":"Латинская заглавная буква «U» с кружком сверху","Latin small letter u with ring above":"Латинская строчная буква «u» с кружком сверху","Latin capital letter u with double acute":"Латинская заглавная буква «U» с двойным акутом","Latin small letter u with double acute":"Латинская строчная буква «u» с двойным акутом","Latin capital letter u with ogonek":"Латинская заглавная буква «U» с огонеком","Latin small letter u with ogonek":"Латинская строчная буква «u» с огонеком","Latin capital letter w with circumflex":"Латинская заглавная буква «W» с циркумфлексом","Latin small letter w with circumflex":"Латинская строчная буква «w» с циркумфлексом","Latin capital letter y with circumflex":"Латинская заглавная буква «Y» с циркумфлексом","Latin small letter y with circumflex":"Латинская строчная буква «y» с циркумфлексом","Latin capital letter y with diaeresis":"Латинская заглавная буква «Y» с диэрезисом","Latin capital letter z with acute":"Латинская заглавная буква «Z» с акутом","Latin small letter z with acute":"Латинская строчная буква «z» с акутом","Latin capital letter z with dot above":"Латинская заглавная буква «Z» с точкой сверху","Latin small letter z with dot above":"Латинская строчная буква «z» с точкой сверху","Latin capital letter z with caron":"Латинская заглавная буква «Z» с гачеком","Latin small letter z with caron":"Латинская строчная буква «z» с гачеком","Latin small letter long s":"Латинская строчная буква длинная «s»","Less-than sign":"Знак меньше","Greater-than sign":"Знак больше","Less-than or equal to":"Меньше либо равно","Greater-than or equal to":"Больше либо равно","En dash":"Среднее тире","Em dash":"Длинное тире",Macron:"Макрон",Overline:"Надчёркивание","Degree sign":"Знак градуса","Minus sign":"Знак минус","Plus-minus sign":"Знак плюс-минус","Division sign":"Знак деления","Fraction slash":"Дробная наклонная черта","Multiplication sign":"Знак умножения","Latin small letter f with hook":"Латинская строчная буква «f» с хвостиком",Integral:"Интеграл","N-ary summation":"N-арная сумма",Infinity:"Бесконечность","Square root":"Квадратный корень","Tilde operator":"Оператор тильда","Approximately equal to":"Конгруэнтность (геометрическое равенство)","Almost equal to":"Почти равный","Not equal to":"Не равно","Identical to":"Тождественно равно","Element of":"Принадлежит","Not an element of":"Не принадлежит","Contains as member":"Содержит как член","N-ary product":"N-арное произведение","Logical and":"Логическое И","Logical or":"Логическое ИЛИ","Not sign":"Знак отрицания",Intersection:"Пересечение",Union:"Объединение","Partial differential":"Частичный дифференциал","For all":"Для всех","There exists":"Существует","Empty set":"Пустое множество",Nabla:"Набла","Asterisk operator":"Оператор звездочка","Proportional to":"Пропорционально",Angle:"Угол","Vulgar fraction one quarter":"Дробь – одна четверть","Vulgar fraction one half":"Дробь – одна вторая","Vulgar fraction three quarters":"Дробь – три четверти","Single left-pointing angle quotation mark":"Одинарная открывающая (левая) французская угловая кавычка","Single right-pointing angle quotation mark":"Одинарная закрывающая (правая) французская угловая кавычка","Left-pointing double angle quotation mark":"Открывающая левая кавычка «ёлочка»","Right-pointing double angle quotation mark":"Закрывающая правая кавычка «ёлочка»","Left single quotation mark":"Открывающая одинарная кавычка","Right single quotation mark":"Закрывающая одинарная кавычка","Left double quotation mark":"Открывающая двойная кавычка","Right double quotation mark":"Закрывающая двойная кавычка","Single low-9 quotation mark":"Нижняя одинарная открывающая кавычка","Double low-9 quotation mark":"Нижняя двойная открывающая кавычка","Inverted exclamation mark":"Перевернутый восклицательный знак","Inverted question mark":"Перевернутый вопросительный знак","Two dot leader":"Двухточечный пунктир","Horizontal ellipsis":"Многоточие","Double dagger":"Двойной крестик","Per mille sign":"Знак промилле","Per ten thousand sign":"Знак на десять тысяч","Double exclamation mark":"Двойной восклицательный знак","Question exclamation mark":"Вопросительный восклицательный знак","Exclamation question mark":"Восклицательный вопросительный знак","Double question mark":"Двойной вопросительный знак","Copyright sign":"Знак авторского права","Registered sign":"Зарегистрированный товарный знак","Trade mark sign":"Знак торговой марки","Section sign":"Параграф","Paragraph sign":"Знак абзаца","Reversed paragraph sign":"Обратный знак абзаца","Show source":"Показать источник","Show blocks":"Показать блоки","Select all":"Выбрать все","Disable editing":"Отключить редактирование","Enable editing":"Разрешить редактирование","Previous editable region":"Предыдущий редактируемый регион","Next editable region":"Следующий редактируемый регион","Navigate editable regions":"Навигация по редактируемым регионам","Remove Format":"Убрать форматирование","Page break":"Разрыв страницы","media widget":"медиа-виджет","Media URL":"URL медиа","Paste the media URL in the input.":"Вставьте URL медиа в поле ввода.","Tip: Paste the URL into the content to embed faster.":"Подсказка: Вставьте URL в контент для быстрого включения.","The URL must not be empty.":"URL не должен быть пустым.","This media URL is not supported.":"Этот URL медиа не поддерживается.","Insert media":"Вставить медиа",Media:"Медиа","Media toolbar":"Панель инструментов медиа","Open media in new tab":"Откройте медиа в новой вкладке","Media embed":"Внедрение мультимедиа","Numbered List":"Нумерованный список","Bulleted List":"Маркированный список","To-do List":"Список задач","Bulleted list styles toolbar":"Стили маркированного списка","Numbered list styles toolbar":"Стили нумерованного списка","Toggle the disc list style":"Переключить на стиль списка с маркерами в виде закрашенного кружка","Toggle the circle list style":"Переключить на стиль списка с маркерами в виде незакрашенного кружка","Toggle the square list style":"Переключить на стиль списка с квадратными маркерами","Toggle the decimal list style":"Переключить на стиль списка с цифровыми маркерами","Toggle the decimal with leading zero list style":"Переключить на стиль списка с маркерами в виде цифр с нулем в начале","Toggle the lower–roman list style":"Переключить на стиль списка с маркерами в виде строчных римских цифр","Toggle the upper–roman list style":"Переключить на стиль списка с маркерами в виде заглавных римских цифр","Toggle the lower–latin list style":"Переключить на стиль списка с маркерами в виде строчных латинских букв","Toggle the upper–latin list style":"Переключить на стиль списка с маркерами в виде заглавных латинских букв",Disc:"Диск",Circle:"Окружность",Square:"Квадрат",Decimal:"Десятичный","Decimal with leading zero":"Десятичный с ведущим нулем","Lower–roman":"Малые римские","Upper-roman":"Большие римские","Lower-latin":"Малые латинские","Upper-latin":"Большие латинские","List properties":"Свойства списка","Start at":"Начать с","Invalid start index value.":"Недопустимое значение начального индекса.","Start index must be greater than 0.":"Начальный индекс должен быть больше 0.","Reversed order":"Обратный порядок","Keystrokes that can be used in a list":"Нажатия клавиш, которые можно использовать в списке","Increase list item indent":"Увеличить отступ элемента списка","Decrease list item indent":"Уменьшить отступ элемента списка","Entering a to-do list":"Ввод списка текущих дел","Leaving a to-do list":"Оставляем список текущих дел",Unlink:"Убрать ссылку",Link:"Ссылка","Link URL":"Ссылка URL","Link URL must not be empty.":"URL-адрес ссылки не должен быть пустым.","Link image":"Ссылка на изображение","Edit link":"Редактировать ссылку","Open link in new tab":"Открыть ссылку в новой вкладке","Open in a new tab":"Открыть в новой вкладке",Downloadable:"Загружаемые","Create link":"Создать ссылку","Move out of a link":"Выйти из ссылки","Link properties":"Свойства ссылки","Displayed text":"Отображаемый текст","No links available":"Нет доступных ссылок",Language:"Язык","Choose language":"Выбрать язык","Remove language":"Убрать язык","Increase indent":"Увеличить отступ","Decrease indent":"Уменьшить отступ","image widget":"Виджет изображений","Wrap text":"Обтекать текст","Break text":"Разрывать текст","In line":"В тексте","Side image":"Боковое изображение","Full size image":"Оригинальный размер изображения","Left aligned image":"Выравнивание по левому краю","Centered image":"Выравнивание по центру","Right aligned image":"Выравнивание по правому краю","Change image text alternative":"Редактировать альтернативный текст","Text alternative":"Альтернативный текст","Enter image caption":"Подпись к изображению","Insert image":"Вставить изображение","Replace image":"Заменить изображение","Upload from computer":"Загрузить с компьютера","Replace from computer":"Заменить с компьютера","Upload image from computer":"Загрузить изображение с компьютера","Image from computer":"Изображение с компьютера","From computer":"С компьютера","Replace image from computer":"Заменить изображение с компьютера","Upload failed":"Загрузка не выполнена","You have no image upload permissions.":"У вас нет разрешений на загрузку изображений в систему.","Image toolbar":"Панель инструментов изображения","Resize image":"Изменить размер изображения","Resize image to %0":"Изменить размер изображения до %0","Resize image to the original size":"Вернуть размер изображения к оригинальному","Resize image (in %0)":"Изменить размер изображения (в %0)",Original:"Оригинальный","Custom image size":"Пользовательский размер изображения",Custom:"Другое","Image resize list":"Список размеров","Insert image via URL":"Вставить изображение по URL","Insert via URL":"Вставка по URL-адресу","Image via URL":"Изображение по URL-адресу","Via URL":"Через URL-адрес","Update image URL":"Изменить URL изображения","Caption for the image":"Подпись к изображению","Caption for image: %0":"Подпись к изображению: %0","The value must not be empty.":"Значение не должно быть пустым.","The value should be a plain number.":"Значение должно быть простым числом.","Uploading image":"Загрузка изображения","Image upload complete":"Загрузка изображения завершена","Error during image upload":"Ошибка при загрузке изображения",Image:"Изображение","Image Resize":"Изменить размер изображения","Text Alternative":"Альтернативный текст","HTML object":"HTML объект","Insert HTML":"Вставить HTML","HTML snippet":"HTML сниппет","Paste raw HTML here...":"Вставьте HTML код сюда...","Edit source":"Изменить код","Save changes":"Сохранить изменения","No preview available":"Предпросмотр недоступен","Empty snippet content":"Нет контента","Horizontal line":"Горизонтальная линия","Yellow marker":"Выделение жёлтым маркером","Green marker":"Выделение зелёным маркером","Pink marker":"Выделение розовым маркером","Blue marker":"Выделение синим маркером","Red pen":"Красный цвет текста","Green pen":"Зеленый цвет текста","Remove highlight":"Убрать выделение",Highlight:"Выделить","Text highlight toolbar":"Панель инструментов выделения текста",Heading:"Стиль","Choose heading":"Выбор стиля","Heading 1":"Заголовок 1","Heading 2":"Заголовок 2","Heading 3":"Заголовок 3","Heading 4":"Заголовок 4","Heading 5":"Заголовок 5","Heading 6":"Заголовок 6","Type your title":"Введите заголовок","Type or paste your content here.":"Введите или вставьте сюда ваш текст","Enter fullscreen mode":"Войти в полноэкранный режим","Leave fullscreen mode":"Выйти из полноэкранного режима","Fullscreen mode":"Полноэкранный режим","Toggle fullscreen mode":"Переключить полноэкранный режим","Document outline":"Состав документа","Connected users":"Подключенные пользователи","Font Size":"Размер шрифта",Tiny:"Очень мелкий",Small:"Мелкий",Big:"Крупный",Huge:"Очень крупный","Font Family":"Семейство шрифтов",Default:"По умолчанию","Font Color":"Цвет шрифта","Font Background Color":"Цвет фона","Document colors":"Цвет страницы","Find and replace":"Найти и заменить","Find in text…":"Найти в тексте",Find:"Найти","Previous result":"Предыдущий результат","Next result":"Следующий результат",Replace:"Заменить","Replace all":"Заменить всё","Match case":"С учетом регистра","Whole words only":"Только слова целиком","Replace with…":"Заменить на...","Text to find must not be empty.":"Искомый текст не должен быть пустым.","Tip: Find some text first in order to replace it.":"Совет: сначала найдите текст, чтобы заменить его.","Advanced options":"Дополнительные параметры","Find in the document":"Найти в документе","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Вставить мягкий разрыв (элемент <code>&lt;br&gt;</code>)","Insert a hard break (a new paragraph)":"Вставить жесткий разрыв (новый абзац)",Emoji:"Эмодзи","Show all emoji...":"Показать все эмодзи...","Find an emoji (min. 2 characters)":"Найти эмодзи (мин. 2 символа)",'No emojis were found matching "%0".':'Не найдено ни одного эмодзи, соответствующего "%0".',"Keep on typing to see the emoji.":"Продолжайте набирать текст, чтобы увидеть эмодзи.","The query must contain at least two characters.":"Запрос должен содержать не менее двух символов.","Smileys & Expressions":"Смайлы и эмоции","Gestures & People":"Жесты и люди","Animals & Nature":"Животные и природа","Food & Drinks":"Еда и напитки","Travel & Places":"Путешествия и достопримечательности",Activities:"Развлечения",Objects:"Объекты",Symbols:"Символы",Flags:"Флаги","Select skin tone":"Выберите цвет кожи","Default skin tone":"Цвет кожи по умолчанию","Light skin tone":"Светлый оттенок кожи","Medium Light skin tone":"Средне-светлый оттенок кожи","Medium skin tone":"Средний оттенок кожи","Medium Dark skin tone":"Средне-темный оттенок кожи","Dark skin tone":"Темный оттенок кожи","Emoji picker":"Выбор эмодзи",Cancel:"Отмена",Clear:"Очистить","Remove color":"Убрать цвет","Restore default":"По умолчанию",Save:"Сохранить","Show more items":"Другие инструменты","%0 of %1":"%0 из %1","Cannot upload file:":"Невозможно загрузить файл","Rich Text Editor. Editing area: %0":"Редактор форматированного текста. Область редактирования: %0","Insert with file manager":"Вставка с помощью файлового менеджера","Replace with file manager":"Заменить с помощью файлового менеджера","Insert image with file manager":"Вставить изображение с помощью файлового менеджера","Replace image with file manager":"Заменить изображение с помощью файлового менеджера",File:"Файл","With file manager":"Из менеджера файлов","Toggle caption off":"Выключить описание","Toggle caption on":"Включить описание","Content editing keystrokes":"Клавиши для редактирования контента","These keyboard shortcuts allow for quick access to content editing features.":"Эти сочетания клавиш обеспечивают быстрый доступ к функциям редактирования контента.","User interface and content navigation keystrokes":"Пользовательский интерфейс и клавиши навигации по контенту","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Использовать следующие сочетания клавиш для более эффективной навигации в пользовательском интерфейсе CKEditor 5.","Close contextual balloons, dropdowns, and dialogs":"Закрыть контекстные всплывающие окна, раскрывающиеся списки и диалоговые окна.","Open the accessibility help dialog":"Открыть диалоговое окно справки по специальным возможностям","Move focus between form fields (inputs, buttons, etc.)":"Переместить фокус между полями формы (вводы, кнопки и т. д.)","Move focus to the menu bar, navigate between menu bars":"Переместить фокус на панель меню, перемещаться между панелями меню","Move focus to the toolbar, navigate between toolbars":"Переместить фокус на панель инструментов, перемещаться между панелями инструментов","Navigate through the toolbar or menu bar":"Перемещение по панели инструментов или панели меню","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Активировать кнопку, находящуюся в фокусе. Активирование кнопок, которые взаимодействуют с содержимым редактора, перемещает фокус обратно на содержимое.",Accept:"Принять",Paragraph:"Параграф","Color picker":"Выбор цвета","Please try a different phrase or check the spelling.":"Пожалуйста, попробуйте другую фразу или проверьте правописание.",Source:"Источник",Insert:"Вставить",Update:"Обновить",Back:"Назад","Insert code block":"Вставить код","Plain text":"Простой текст","Leaving %0 code snippet":"Оставляем фрагмент кода %0","Entering %0 code snippet":"Ввод фрагмента кода %0","Entering code snippet":"Ввод фрагмента кода","Leaving code snippet":"Оставляем фрагмент кода","Code block":"Блок кодов","Copy selected content":"Копировать выбранное содержание","Paste content":"Вставить содержание","Paste content as plain text":"Вставить содержанрие в виде обычного текста","Insert image or file":"Вставьте изображение или файл","Could not obtain resized image URL.":"Не удалось получить URL с измененным размером изображения.","Selecting resized image failed":"Выбор изображения с измененным размером не удался","Could not insert image at the current position.":"Нельзя вставить изображение на текущую позицию.","Inserting image failed":"Вставка изображения не удалась",Bookmark:"Закладка","Edit bookmark":"Изменить закладку","Remove bookmark":"Удалить закладку","Bookmark name":"Имя закладки","Enter the bookmark name without spaces.":"Введите имя закладки без пробелов.","Bookmark must not be empty.":"Закладка не должна быть пустой.","Bookmark name cannot contain space characters.":"Имя закладки не может содержать пробелы.","Bookmark name already exists.":"Имя закладки уже существует.","bookmark widget":"виджет закладок","Bookmark toolbar":"Панель инструментов закладок",Bookmarks:"Закладки","No bookmarks available.":"Нет доступных закладок.","Scroll to bookmark":"Прокрутить до закладки","Open file manager":"Открыть менеджер файлов","Cannot determine a category for the uploaded file.":"Не удаётся определить категорию для загруженного файла.","Cannot access default workspace.":"Не удается получить доступ к рабочему пространству по умолчанию.","You have no image editing permissions.":"У вас нет разрешений на редактирование изображений.","Edit image":"Редактировать изображение","Processing the edited image.":"Обработка отредактированного изображения.","Server failed to process the image.":"Серверу не удалось обработать изображение.","Failed to determine category of edited image.":"Не удалось определить категорию отредактированного изображения.","Block quote":"Цитата",Bold:"Жирный",Italic:"Курсив",Underline:"Подчеркнутый",Code:"Исходный код",Strikethrough:"Зачеркнутый",Subscript:"Подстрочный",Superscript:"Надстрочный","Italic text":"Текст курсивом","Move out of an inline code style":"Выйти из встроенного стиля кода","Bold text":"Жирный текст","Underline text":"Подчеркнутый текст","Strikethrough text":"Зачеркнутый текст","Saving changes":"Сохранение изменений","Revert autoformatting action":"Отменить действие автоформатирования","Align left":"Выравнивание по левому краю","Align right":"Выравнивание по правому краю","Align center":"Выравнивание по центру",Justify:"Выравнивание по ширине","Text alignment":"Выравнивание текста","Text alignment toolbar":"Выравнивание"},getPluralForm(o){return o%10==1&&o%100!=11?0:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?1:2}}};/**
402
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
403
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
404
+ */const n2={vi:{dictionary:{"Words: %0":"Số chữ: %0","Characters: %0":"Số ký tự: %0","Widget toolbar":"Thanh công cụ tiện ích","Insert paragraph before block":"Chèn đoạn trước khối","Insert paragraph after block":"Chèn đoạn sau khối","Press Enter to type after or press Shift + Enter to type before the widget":"Nhấn Enter để nhập vào sau hoặc nhấn Shift + Enter để nhập vào trước tiện ích","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Tổ hợp phím mà bạn có thể dùng khi một tiện ích được chọn (ví dụ: hình ảnh, bảng, v.v.)","Insert a new paragraph directly after a widget":"Chèn đoạn văn mới ngay sau tiện ích","Insert a new paragraph directly before a widget":"Chèn đoạn văn mới ngay trước tiện ích","Move the caret to allow typing directly before a widget":"Di chuyển dấu sót để cho phép nhập ngay trước một tiện ích","Move the caret to allow typing directly after a widget":"Di chuyển dấu sót để cho phép nhập ngay sau một tiện ích","Move focus from an editable area back to the parent widget":"Di chuyển tiêu điểm từ vùng có thể chỉnh sửa trở lại tiện ích gốc","Upload in progress":"Đang tải lên",Undo:"Hoàn tác",Redo:"Tiếp tục","Rich Text Editor":"Trình soạn thảo văn bản","Edit block":"Chỉnh sửa đoạn","Click to edit block":"Nhấp để sửa khối","Drag to move":"Kéo để di chuyển",Next:"Tiếp theo",Previous:"Quay lại","Editor toolbar":"Thanh công cụ biên tập","Dropdown toolbar":"Thanh công cụ danh mục","Dropdown menu":"Trình đơn thả xuống",Black:"Đen","Dim grey":"Xám mờ",Grey:"Xám","Light grey":"Xám nhạt",White:"Trắng",Red:"Đỏ",Orange:"Cam",Yellow:"Vàng","Light green":"Xanh lá nhạt",Green:"Xanh lá",Aquamarine:"Xanh ngọc biển",Turquoise:"Xanh ngọc bích","Light blue":"Xanh dương",Blue:"Xanh biển",Purple:"Tím","Editor block content toolbar":"Thanh công cụ chỉnh sửa khối nội dung","Editor contextual toolbar":"Thanh công cụ chỉnh sửa theo ngữ cảnh",HEX:"HEX","No results found":"Không tìm thấy kết quả","No searchable items":"Không có mục nào tìm kiếm được","Editor dialog":"Hộp thoại trình biên tập",Close:"Đóng","Help Contents. To close this dialog press ESC.":"Nội dung Trợ giúp. Nhấn phím ESC để đóng hộp thoại này.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Dưới đây, bạn có thể tìm thấy danh sách các phím tắt mà bạn có thể dùng trong trình biên tập này.","(may require <kbd>Fn</kbd>)":"(có thể cần nhấn phím <kbd>Fn</kbd>)",Accessibility:"Trợ năng","Accessibility help":"Trợ giúp về khả năng truy cập","Press %0 for help.":"Nhấn %0 để được trợ giúp.","Move focus in and out of an active dialog window":"Di chuyển tiêu điểm vào và ra khỏi cửa sổ hộp thoại đang kích hoạt",MENU_BAR_MENU_FILE:"Tệp",MENU_BAR_MENU_EDIT:"Chỉnh sửa",MENU_BAR_MENU_VIEW:"Xem",MENU_BAR_MENU_INSERT:"Chèn",MENU_BAR_MENU_FORMAT:"Định dạng",MENU_BAR_MENU_TOOLS:"Công cụ",MENU_BAR_MENU_HELP:"Trợ giúp",MENU_BAR_MENU_TEXT:"Văn bản",MENU_BAR_MENU_FONT:"Phông chữ","Editor menu bar":"Thanh menu Trình soạn thảo",'Please enter a valid color (e.g. "ff0000").':'Vui lòng nhập một màu sắc hợp lệ (ví dụ: "ff0000").',"Insert table":"Tạo bảng","Header column":"Tiêu đề cột","Insert column left":"Thêm cột vào bên trái","Insert column right":"Thêm cột vào bên phải","Delete column":"Xoá cột","Select column":"Chọn cột",Column:"Cột","Header row":"Tiêu đề hàng","Insert row below":"Thêm hàng ở dưới","Insert row above":"Thêm hàng phía trên","Delete row":"Xoá hàng","Select row":"Chọn hàng",Row:"Hàng","Merge cell up":"Sát nhập ô lên trên","Merge cell right":"Sát nhập ô qua phải","Merge cell down":"Sát nhập ô xuống dưới","Merge cell left":"Sát nhập ô qua trái","Split cell vertically":"Tách ô theo chiều dọc","Split cell horizontally":"Tách ô theo chiều ngang","Merge cells":"Sát nhập ô","Table toolbar":"Thanh công cụ bảng","Table properties":"Thuộc tính của bảng","Cell properties":"Thuộc tính của ô",Border:"Viền",Style:"Kiểu",Width:"Rộng",Height:"Cao",Color:"Màu",Background:"Màu nền",Padding:"Cách lề",Dimensions:"Kích thước","Table cell text alignment":"Căn lề văn bản trong ô",Alignment:"Căn lề","Horizontal text alignment toolbar":"Thanh công cụ căn chỉnh văn bản theo chiều ngang","Vertical text alignment toolbar":"Thanh công cụ căn chỉnh văn bản theo chiều dọc","Table alignment toolbar":"Thanh công cụ căn chỉnh bảng",None:"Không có kiểu nào",Solid:"Dạng nét liền",Dotted:"Dạng chấm",Dashed:"Dạng đường đứt nét",Double:"Dạng nét đôi",Groove:"Dạng đường rãnh",Ridge:"Dạng gờ",Inset:"Dạng chìm",Outset:"Dạng nổi","Align cell text to the left":"Căn chỉnh văn bản trong ô về bên trái","Align cell text to the center":"Căn chỉnh văn bản trong ô vào chính giữa","Align cell text to the right":"Căn chỉnh văn bản trong ô về bên phải","Justify cell text":"Căn đều văn bản trong ô","Align cell text to the top":"Căn chỉnh văn bản trong ô lên trên cùng","Align cell text to the middle":"Căn chỉnh văn bản trong ô vào giữa","Align cell text to the bottom":"Căn chỉnh văn bản trong ô xuống dưới cùng","Align table to the left":"Căn chỉnh bảng về phía bên trái","Center table":"Căn chỉnh bảng vào chính giữa","Align table to the right":"Căn chỉnh bảng về phía bên phải",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'Màu này không hợp lệ. Hãy thử "#FF0000" hoặc "rgb(255,0,0)" hoặc "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'Giá trị này không hợp lệ. Hãy thử "10px" hoặc "2em" hoặc chỉ "2".',"Enter table caption":"Nhập chú thích cho bảng","Keystrokes that can be used in a table cell":"Tổ hợp phím mà bạn có thể dùng trong một ô bảng","Move the selection to the next cell":"Di chuyển vùng chọn đến ô tiếp theo","Move the selection to the previous cell":"Di chuyển vùng chọn đến ô trước đó","Insert a new table row (when in the last cell of a table)":"Chèn một hàng mới trong bảng (khi ở ô cuối cùng của bảng)","Navigate through the table":"Điều hướng qua bảng",Table:"Bảng","Insert table layout":"Chèn bố cục bảng","Table layout":"Bố cục bảng","Layout table":"Bảng bố cục","Content table":"Bảng nội dung","Choose table type":"Chọn loại bảng","Table type":"Loại bảng","Table type options":"Tùy chọn loại bảng",Styles:"Kiểu","Multiple styles":"Nhiều kiểu","Block styles":"Kiểu của khối","Text styles":"Kiểu văn bản","Special characters":"Các ký tự đặc biệt",Category:"Danh mục",All:"Tất cả",Arrows:"Mũi tên",Currency:"Tiền tệ",Latin:"Latin",Mathematical:"Toán học",Text:"Văn bản","leftwards simple arrow":"mũi tên đơn giản chỉ sang trái","rightwards simple arrow":"mũi tên đơn giản chỉ sang phải","upwards simple arrow":"mũi tên đơn giản chỉ lên trên","downwards simple arrow":"mũi tên đơn giản chỉ xuống dưới","leftwards double arrow":"mũi tên kép hướng sang trái","rightwards double arrow":"mũi tên kép hướng sang phải","upwards double arrow":"mũi tên kép hướng lên","downwards double arrow":"mũi tên kép hướng xuống","leftwards dashed arrow":"mũi tên đứt nét hướng sang trái","rightwards dashed arrow":"mũi tên đứt nét hướng sang phải","upwards dashed arrow":"mũi tên đứt nét hướng lên","downwards dashed arrow":"mũi tên đứt nét hướng xuống","leftwards arrow to bar":"mũi tên hướng sang trái về phía thanh","rightwards arrow to bar":"mũi tên hướng sang phải về phía thanh","upwards arrow to bar":"mũi tên hướng lên trên về phía thanh","downwards arrow to bar":"mũi tên hướng xuống dưới về phía thanh","up down arrow with base":"mũi tên lên xuống có đế","back with leftwards arrow above":"back với mũi tên hướng sang trái ở trên","end with leftwards arrow above":"end với mũi tên hướng sang trái ở trên","on with exclamation mark with left right arrow above":"on với dấu chấm than và mũi tên trái phải ở trên","soon with rightwards arrow above":"soon với mũi tên hướng sang phải ở trên","top with upwards arrow above":"top với mũi tên hướng lên ở trên","Dollar sign":"Ký hiệu Đô la","Euro sign":"Ký hiệu Euro","Yen sign":"Ký hiệu Yên Nhật","Pound sign":"Ký hiệu Bảng Anh","Cent sign":"Ký hiệu Cent","Euro-currency sign":"Ký hiệu tiền tệ Euro","Colon sign":"Ký hiệu Colon","Cruzeiro sign":"Ký hiệu Cruzeiro","French franc sign":"Ký hiệu franc Pháp","Lira sign":"Ký hiệu Lira","Currency sign":"Ký hiệu tiền tệ","Bitcoin sign":"Ký hiệu Bitcoin","Mill sign":"Ký hiệu Mill","Naira sign":"Ký hiệu Naira","Peseta sign":"Ký hiệu Peseta","Rupee sign":"Ký hiệu Rupee","Won sign":"Ký hiệu Won","New sheqel sign":"Ký hiệu Shekel mới","Dong sign":"Ký hiệu Đồng","Kip sign":"Ký hiệu Kip","Tugrik sign":"Ký hiệu Tögrög","Drachma sign":"Ký hiệu Drachma","German penny sign":"Ký hiệu penny Đức","Peso sign":"Ký hiệu Peso","Guarani sign":"Ký hiệu Guarani","Austral sign":"Ký hiệu Austral","Hryvnia sign":"Ký hiệu Hryvnia","Cedi sign":"Ký hiệu Cedi","Livre tournois sign":"Ký hiệu Livre tournois","Spesmilo sign":"Ký hiệu Spesmilo","Tenge sign":"Ký hiệu Tenge","Indian rupee sign":"Ký hiệu rupee Ấn Độ","Turkish lira sign":"Ký hiệu lira Thổ Nhĩ Kỳ","Nordic mark sign":"Ký hiệu Mác Bắc Âu","Manat sign":"Ký hiệu Manat","Ruble sign":"Ký hiệu Rúp","Latin capital letter a with macron":"Chữ cái Latinh a viết hoa với dấu trường âm","Latin small letter a with macron":"Chữ cái Latinh a viết thường với dấu trường âm","Latin capital letter a with breve":"Chữ cái Latinh a viết hoa với dấu trăng","Latin small letter a with breve":"Chữ cái Latinh a viết thường với dấu trăng","Latin capital letter a with ogonek":"Chữ cái Latinh a viết hoa với dấu ogonek","Latin small letter a with ogonek":"Chữ cái Latinh a viết thường với dấu ogonek","Latin capital letter c with acute":"Chữ cái Latinh c viết hoa với dấu sắc","Latin small letter c with acute":"Chữ cái Latinh c viết thường với dấu sắc","Latin capital letter c with circumflex":"Chữ cái Latinh c viết hoa với dấu mũ","Latin small letter c with circumflex":"Chữ cái Latinh c viết thường với dấu mũ","Latin capital letter c with dot above":"Chữ cái Latinh c viết hoa với dấu chấm ở trên","Latin small letter c with dot above":"Chữ cái Latinh c viết thường với dấu chấm ở trên","Latin capital letter c with caron":"Chữ cái Latinh c viết hoa với dấu mũ ngược","Latin small letter c with caron":"Chữ cái Latinh c viết thường với dấu mũ ngược","Latin capital letter d with caron":"Chữ cái Latinh d viết hoa với dấu mũ ngược","Latin small letter d with caron":"Chữ cái Latinh d viết thường với dấu mũ ngược","Latin capital letter d with stroke":"Chữ cái Latinh d viết hoa với dấu gạch ngang","Latin small letter d with stroke":"Chữ cái Latinh d viết thường với dấu gạch ngang","Latin capital letter e with macron":"Chữ cái Latinh e viết hoa với dấu trường âm","Latin small letter e with macron":"Chữ cái Latinh e viết thường với dấu trường âm","Latin capital letter e with breve":"Chữ cái Latinh e viết hoa với dấu trăng","Latin small letter e with breve":"Chữ cái Latinh e viết thường với dấu trăng","Latin capital letter e with dot above":"Chữ cái Latinh e viết hoa với dấu chấm ở trên","Latin small letter e with dot above":"Chữ cái Latinh e viết thường với dấu chấm ở trên","Latin capital letter e with ogonek":"Chữ cái Latinh e viết hoa với dấu ogonek","Latin small letter e with ogonek":"Chữ cái Latinh e viết thường với dấu ogonek","Latin capital letter e with caron":"Chữ cái Latinh e viết hoa với dấu mũ ngược","Latin small letter e with caron":"Chữ cái Latinh e viết thường với dấu mũ ngược","Latin capital letter g with circumflex":"Chữ cái Latinh g viết hoa với dấu mũ","Latin small letter g with circumflex":"Chữ cái Latinh g viết thường với dấu mũ","Latin capital letter g with breve":"Chữ cái Latinh g viết hoa với dấu trăng","Latin small letter g with breve":"Chữ cái Latinh g viết thường với dấu trăng","Latin capital letter g with dot above":"Chữ cái Latinh g viết hoa với dấu chấm ở trên","Latin small letter g with dot above":"Chữ cái Latinh g viết thường với dấu chấm ở trên","Latin capital letter g with cedilla":"Chữ cái Latinh g viết hoa với dấu móc dưới","Latin small letter g with cedilla":"Chữ cái Latinh g viết thường với dấu móc dưới","Latin capital letter h with circumflex":"Chữ cái Latinh h viết hoa với dấu mũ","Latin small letter h with circumflex":"Chữ cái Latinh h viết thường với dấu mũ","Latin capital letter h with stroke":"Chữ cái Latinh h viết hoa với dấu gạch ngang","Latin small letter h with stroke":"Chữ cái Latinh h viết thường với dấu gạch ngang","Latin capital letter i with tilde":"Chữ cái Latinh i viết hoa với dấu ngã","Latin small letter i with tilde":"Chữ cái Latinh i viết thường với dấu ngã","Latin capital letter i with macron":"Chữ cái Latinh i viết hoa với dấu trường âm","Latin small letter i with macron":"Chữ cái Latinh i viết thường với dấu trường âm","Latin capital letter i with breve":"Chữ cái Latinh i viết hoa với dấu trăng","Latin small letter i with breve":"Chữ cái Latinh i viết thường với dấu trăng","Latin capital letter i with ogonek":"Chữ cái Latinh i viết hoa với dấu ogonek","Latin small letter i with ogonek":"Chữ cái Latinh i viết thường với dấu ogonek","Latin capital letter i with dot above":"Chữ cái Latinh i viết hoa với dấu chấm ở trên","Latin small letter dotless i":"Chữ cái Latinh i viết thường không dấu chấm","Latin capital ligature ij":"Chữ ghép Latinh ij viết hoa","Latin small ligature ij":"Chữ ghép Latinh ij viết thường","Latin capital letter j with circumflex":"Chữ cái Latinh j viết hoa với dấu mũ","Latin small letter j with circumflex":"Chữ cái Latinh j viết thường với dấu mũ","Latin capital letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin small letter k with cedilla":"Chữ cái Latinh k viết hoa với dấu móc dưới","Latin small letter kra":"Chữ cái Latinh k viết thường","Latin capital letter l with acute":"Chữ cái Latinh l viết hoa với dấu sắc","Latin small letter l with acute":"Chữ cái Latinh l viết thường với dấu sắc","Latin capital letter l with cedilla":"Chữ cái Latinh l viết hoa với dấu móc dưới","Latin small letter l with cedilla":"Chữ cái Latinh l viết thường với dấu móc dưới","Latin capital letter l with caron":"Chữ cái Latinh l viết hoa với dấu mũ ngược","Latin small letter l with caron":"Chữ cái Latinh l viết thường với dấu mũ ngược","Latin capital letter l with middle dot":"Chữ cái Latinh l viết hoa với dấu chấm ở giữa","Latin small letter l with middle dot":"Chữ cái Latinh l viết thường với dấu chấm ở giữa","Latin capital letter l with stroke":"Chữ cái Latinh l viết hoa với dấu gạch ngang","Latin small letter l with stroke":"Chữ cái Latinh l viết thường với dấu gạch ngang","Latin capital letter n with acute":"Chữ cái Latinh n viết hoa với dấu sắc","Latin small letter n with acute":"Chữ cái Latinh n viết thường với dấu sắc","Latin capital letter n with cedilla":"Chữ cái Latinh n viết hoa với dấu móc dưới","Latin small letter n with cedilla":"Chữ cái Latinh n viết thường với dấu móc dưới","Latin capital letter n with caron":"Chữ cái Latinh n viết hoa với dấu mũ ngược","Latin small letter n with caron":"Chữ cái Latinh n viết thường với dấu mũ ngược","Latin small letter n preceded by apostrophe":"Chữ cái Latinh n viết thường có dấu viết lược đứng trước","Latin capital letter eng":"Chữ cái Latinh Ŋ viết hoa","Latin small letter eng":"Chữ cái Latinh ŋ viết thường","Latin capital letter o with macron":"Chữ cái Latinh o viết hoa với dấu trường âm","Latin small letter o with macron":"Chữ cái Latinh o viết thường với dấu trường âm","Latin capital letter o with breve":"Chữ cái Latinh o viết hoa với dấu trăng","Latin small letter o with breve":"Chữ cái Latinh o viết thường với dấu trăng","Latin capital letter o with double acute":"Chữ cái Latinh o viết hoa với dấu sắc kép","Latin small letter o with double acute":"Chữ cái Latinh o viết thường với dấu sắc kép","Latin capital ligature oe":"Chữ ghép Latinh oe viết hoa","Latin small ligature oe":"Chữ ghép Latinh oe viết thường","Latin capital letter r with acute":"Chữ cái Latinh r viết hoa với dấu sắc","Latin small letter r with acute":"Chữ cái Latinh r viết thường với dấu sắc","Latin capital letter r with cedilla":"Chữ cái Latinh r viết hoa với dấu móc dưới","Latin small letter r with cedilla":"Chữ cái Latinh r viết thường với dấu móc dưới","Latin capital letter r with caron":"Chữ cái Latinh r viết hoa với dấu mũ ngược","Latin small letter r with caron":"Chữ cái Latinh r viết thường với dấu mũ ngược","Latin capital letter s with acute":"Chữ cái Latinh s viết hoa với dấu sắc","Latin small letter s with acute":"Chữ cái Latinh s viết thường với dấu sắc","Latin capital letter s with circumflex":"Chữ cái Latinh s viết hoa với dấu mũ","Latin small letter s with circumflex":"Chữ cái Latinh s viết thường với dấu mũ","Latin capital letter s with cedilla":"Chữ cái Latinh s viết hoa với dấu móc dưới","Latin small letter s with cedilla":"Chữ cái Latinh s viết thường với dấu móc dưới","Latin capital letter s with caron":"Chữ cái Latinh s viết hoa với dấu mũ ngược","Latin small letter s with caron":"Chữ cái Latinh s viết thường với dấu mũ ngược","Latin capital letter t with cedilla":"Chữ cái Latinh t viết hoa với dấu móc dưới","Latin small letter t with cedilla":"Chữ cái Latinh t viết thường với dấu móc dưới","Latin capital letter t with caron":"Chữ cái Latinh t viết hoa với dấu mũ ngược","Latin small letter t with caron":"Chữ cái Latinh t viết thường với dấu mũ ngược","Latin capital letter t with stroke":"Chữ cái Latinh t viết hoa với dấu gạch ngang","Latin small letter t with stroke":"Chữ cái Latinh t viết thường với dấu gạch ngang","Latin capital letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin small letter u with tilde":"Chữ cái Latinh u viết hoa với dấu ngã","Latin capital letter u with macron":"Chữ cái Latinh u viết hoa với dấu trường âm","Latin small letter u with macron":"Chữ cái Latinh u viết thường với dấu trường âm","Latin capital letter u with breve":"Chữ cái Latinh u viết hoa với dấu trăng","Latin small letter u with breve":"Chữ cái Latinh u viết thường với dấu trăng","Latin capital letter u with ring above":"Chữ cái Latinh u viết hoa với vòng tròn ở trên","Latin small letter u with ring above":"Chữ cái Latinh u viết thường với vòng tròn ở trên","Latin capital letter u with double acute":"Chữ cái Latinh u viết hoa với dấu sắc kép","Latin small letter u with double acute":"Chữ cái Latinh u viết thường với dấu sắc kép","Latin capital letter u with ogonek":"Chữ cái Latinh u viết hoa với dấu ogonek","Latin small letter u with ogonek":"Chữ cái Latinh u viết thường với dấu ogonek","Latin capital letter w with circumflex":"Chữ cái Latinh w viết hoa với dấu mũ","Latin small letter w with circumflex":"Chữ cái Latinh w viết thường với dấu mũ","Latin capital letter y with circumflex":"Chữ cái Latinh y viết hoa với dấu mũ","Latin small letter y with circumflex":"Chữ cái Latinh y viết thường với dấu mũ","Latin capital letter y with diaeresis":"Chữ cái Latinh y viết hoa với dấu tách đôi","Latin capital letter z with acute":"Chữ cái Latinh z viết hoa với dấu sắc","Latin small letter z with acute":"Chữ cái Latinh z viết thường với dấu sắc","Latin capital letter z with dot above":"Chữ cái Latinh z viết hoa với dấu chấm ở trên","Latin small letter z with dot above":"Chữ cái Latinh z viết thường với dấu chấm ở trên","Latin capital letter z with caron":"Chữ cái Latinh z viết hoa với dấu mũ ngược","Latin small letter z with caron":"Chữ cái Latinh z viết thường với dấu mũ ngược","Latin small letter long s":"Chữ cái Latinh s dài viết thường","Less-than sign":"Ký hiệu nhỏ hơn","Greater-than sign":"Ký hiệu lớn hơn","Less-than or equal to":"Nhỏ hơn hoặc bằng","Greater-than or equal to":"Lớn hơn hoặc bằng","En dash":"Gạch ngang ngắn","Em dash":"Gạch ngang dài",Macron:"Dấu trường âm",Overline:"Gạch trên","Degree sign":"Ký hiệu độ","Minus sign":"Ký hiệu trừ","Plus-minus sign":"Ký hiệu cộng-trừ","Division sign":"Ký hiệu chia","Fraction slash":"Dấu gạch chéo phân số","Multiplication sign":"Ký hiệu nhân","Latin small letter f with hook":"Chữ cái Latinh f viết thường với móc",Integral:"Tích phân","N-ary summation":"Phép tổng n số nguyên",Infinity:"Vô cực","Square root":"Căn bậc hai","Tilde operator":"Toán tử dấu ngã","Approximately equal to":"Xấp xỉ bằng","Almost equal to":"Gần bằng","Not equal to":"Không bằng","Identical to":"Tương đương","Element of":"Thuộc","Not an element of":"Không thuộc","Contains as member":"Chứa","N-ary product":"Tích n số nguyên","Logical and":"Và logic","Logical or":"Hoặc logic","Not sign":"Không",Intersection:"Giao",Union:"Hợp","Partial differential":"Vi phân riêng phần","For all":"Với mọi","There exists":"Tồn tại","Empty set":"Tập hợp rỗng",Nabla:"Nabla","Asterisk operator":"Toán tử dấu hoa thị","Proportional to":"Tương ứng với",Angle:"Góc","Vulgar fraction one quarter":"Phân số thường một phần tư","Vulgar fraction one half":"Phân số thường một phần hai","Vulgar fraction three quarters":"Phân số thường ba phần tư","Single left-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên trái","Single right-pointing angle quotation mark":"Dấu nháy đơn dạng góc chỉ sang bên phải","Left-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên trái","Right-pointing double angle quotation mark":"Dấu nháy kép dạng góc chỉ sang bên phải","Left single quotation mark":"Dấu nháy đơn bên trái","Right single quotation mark":"Dấu nháy đơn bên phải","Left double quotation mark":"Dấu nháy kép bên trái","Right double quotation mark":"Dấu nháy kép bên phải","Single low-9 quotation mark":"Dấu nháy đơn kiểu low-9","Double low-9 quotation mark":"Dấu nháy kép kiểu low-9","Inverted exclamation mark":"Dấu chấm than ngược","Inverted question mark":"Dấu hỏi ngược","Two dot leader":"Hàng hai dấu chấm","Horizontal ellipsis":"Dấu chấm lửng ngang","Double dagger":"Dấu chữ thập kép","Per mille sign":"Ký hiệu phần nghìn","Per ten thousand sign":"Ký hiệu phần vạn","Double exclamation mark":"Dấu chấm than kép","Question exclamation mark":"Dấu chấm hỏi và chấm than","Exclamation question mark":"Dấu chấm than và chấm hỏi","Double question mark":"Dấu chấm hỏi kép","Copyright sign":"Ký hiệu bản quyền","Registered sign":"Ký hiệu đăng ký thương hiệu","Trade mark sign":"Ký hiệu thương hiệu","Section sign":"Ký hiệu phân đoạn","Paragraph sign":"Ký hiệu đoạn văn","Reversed paragraph sign":"Ký hiệu đoạn văn đảo ngược","Show source":"Hiển thị nguồn","Show blocks":"Hiện các khối","Select all":"Chọn tất cả","Disable editing":"Tắt tính năng chỉnh sửa","Enable editing":"Bật tính năng chỉnh sửa","Previous editable region":"Vùng có thể chỉnh sửa trước đó","Next editable region":"Vùng có thể chỉnh sửa tiếp theo","Navigate editable regions":"Di chuyển giữa các vùng có thể chỉnh sửa","Remove Format":"Xóa định dang","Page break":"Ngắt trang","media widget":"tiện ích đa phương tiện","Media URL":"Đường dẫn đa phương tiện","Paste the media URL in the input.":"Dán đường dẫn đa phương tiện vào trường","Tip: Paste the URL into the content to embed faster.":"Mẹo: Dán đường dẫn vào nội dung để nhúng ngay","The URL must not be empty.":"Đường dẫn không được để trống","This media URL is not supported.":"Đường dẫn đa phương tiện không hỗ trợ","Insert media":"Chèn đa phương tiện",Media:"Phương tiện","Media toolbar":"Thanh công cụ đa phương tiện","Open media in new tab":"Mở nội dung nghe nhìn trong tab mới","Media embed":"Nhúng tệp đa phương tiện","Numbered List":"Danh sách đánh số","Bulleted List":"Danh sách đánh ký hiệu","To-do List":"Danh sách cần làm","Bulleted list styles toolbar":"Thanh công cụ kiểu danh sách có dấu đầu dòng","Numbered list styles toolbar":"Thanh công cụ kiểu danh sách được đánh số","Toggle the disc list style":"Bật/tắt kiểu danh sách dạng đĩa","Toggle the circle list style":"Bật/tắt kiểu danh sách dạng vòng tròn","Toggle the square list style":"Bật/tắt kiểu danh sách dạng vuông","Toggle the decimal list style":"Bật/tắt kiểu danh sách dạng thập phân","Toggle the decimal with leading zero list style":"Bật/tắt kiểu danh sách dạng thập phân bắt đầu bằng số 0","Toggle the lower–roman list style":"Bật/tắt kiểu danh sách chữ số La Mã viết thường","Toggle the upper–roman list style":"Bật/tắt kiểu danh sách chữ số La Mã viết hoa","Toggle the lower–latin list style":"Bật/tắt kiểu danh sách chữ cái Latinh viết thường","Toggle the upper–latin list style":"Bật/tắt kiểu danh sách chữ cái Latinh viết hoa",Disc:"Đĩa",Circle:"Tròn",Square:"Vuông",Decimal:"Thập phân","Decimal with leading zero":"Thập phân bắt đầu bằng số 0","Lower–roman":"Chữ số La Mã viết thường","Upper-roman":"Chữ số La Mã viết hoa","Lower-latin":"Chữ cái Latinh viết thường","Upper-latin":"Chữ cái Latinh viết hoa","List properties":"Thuộc tính danh sách","Start at":"Bắt đầu tại","Invalid start index value.":"Giá trị chỉ mục bắt đầu không hợp lệ.","Start index must be greater than 0.":"Chỉ mục bắt đầu phải lớn hơn 0.","Reversed order":"Thứ tự đảo ngược","Keystrokes that can be used in a list":"Tổ hợp phím mà bạn có thể dùng trong danh sách","Increase list item indent":"Tăng thụt lề mục danh sách","Decrease list item indent":"Giảm thụt lề mục danh sách","Entering a to-do list":"Đang nhập danh sách việc cần làm","Leaving a to-do list":"Đang rời khỏi danh sách việc cần làm",Unlink:"Bỏ liên kết",Link:"Chèn liên kết","Link URL":"Đường dẫn liên kết","Link URL must not be empty.":"Không được để trống URL đường liên kết.","Link image":"Liên kết của ảnh","Edit link":"Sửa liên kết","Open link in new tab":"Mở liên kết","Open in a new tab":"Mở trên tab mới",Downloadable:"Có thể tải về","Create link":"Tạo liên kết","Move out of a link":"Di chuyển ra khỏi một liên kết","Link properties":"Thuộc tính đường liên kết","Displayed text":"Văn bản đã hiển thị","No links available":"Không có đường liên kết khả dụng",Language:"Ngôn ngữ","Choose language":"Chọn ngôn ngữ","Remove language":"Xóa ngôn ngữ","Increase indent":"Tăng lề","Decrease indent":"Giảm lề","image widget":"tiện ích ảnh","Wrap text":"Bọc văn bản","Break text":"Ngắt văn bản","In line":"Nội dòng","Side image":"Ảnh một bên","Full size image":"Ảnh đầy đủ","Left aligned image":"Ảnh canh trái","Centered image":"Ảnh canh giữa","Right aligned image":"Ảnh canh phải","Change image text alternative":"Đổi chữ alt của ảnh","Text alternative":"Chữ alt","Enter image caption":"Nhập mô tả ảnh","Insert image":"Chèn ảnh","Replace image":"Thay thế hình ảnh","Upload from computer":"Tải lên từ máy tính","Replace from computer":"Thay thế từ máy tính","Upload image from computer":"Tải hình ảnh lên từ máy tính","Image from computer":"Hình ảnh từ máy tính","From computer":"Từ máy tính","Replace image from computer":"Thay thế hình ảnh từ máy tính","Upload failed":"Tải thất bại","You have no image upload permissions.":"Bạn không có quyền tải ảnh lên.","Image toolbar":"Thanh công cụ hình ảnh","Resize image":"Chỉnh kích cỡ ảnh","Resize image to %0":"Chỉnh kích cỡ ảnh về %0","Resize image to the original size":"Chỉnh về ảnh kích cỡ nguyên gốc","Resize image (in %0)":"Đặt lại kích thước hình ảnh (bằng %0)",Original:"Nguyên bản","Custom image size":"Tùy chỉnh kích thước hình ảnh",Custom:"Tùy chỉnh","Image resize list":"Danh sách ảnh đã chỉnh kích thước","Insert image via URL":"Chèn ảnh từ URL","Insert via URL":"Chèn bằng URL","Image via URL":"Hình ảnh bằng URL","Via URL":"Bằng URL","Update image URL":"Cập nhật ảnh từ URL","Caption for the image":"Chú thích cho hình ảnh","Caption for image: %0":"Chú thích cho hình ảnh: %0","The value must not be empty.":"Không được để trống giá trị này.","The value should be a plain number.":"Giá trị này phải là một số thường.","Uploading image":"Đang tải hình ảnh lên","Image upload complete":"Hoàn tất quá trình tải hình ảnh lên","Error during image upload":"Xảy ra lỗi trong quá trình tải hình ảnh lên",Image:"Hình ảnh","Image Resize":"Đổi kích thước hình ảnh","Text Alternative":"Văn bản thay thế","HTML object":"Đối tượng HTML","Insert HTML":"Chèn HTML","HTML snippet":"Mẫu HTML","Paste raw HTML here...":"Dán mã HTML nguyên bản tại đây...","Edit source":"Sửa nguồn","Save changes":"Lưu thay đổi","No preview available":"Không có sẵn bản xem trước","Empty snippet content":"Nội dung đoạn mã trống","Horizontal line":"Đường ngang","Yellow marker":"Bút vàng","Green marker":"Bút xanh lá","Pink marker":"Bút hồng","Blue marker":"Bút xanh dương","Red pen":"Mực đỏ","Green pen":"Mực xanh","Remove highlight":"Xóa làm nổi",Highlight:"Làm nổi","Text highlight toolbar":"Thanh công cụ làm nổi chữ",Heading:"Tiêu đề","Choose heading":"Chọn tiêu đề","Heading 1":"Tiêu đề 1","Heading 2":"Tiêu đề 2","Heading 3":"Tiêu đề 3","Heading 4":"Tiêu đề 4","Heading 5":"Tiêu đề 5","Heading 6":"Tiêu đề 6","Type your title":"Nhập tựa đề","Type or paste your content here.":"Nhập hoặc dán nội dung tại đây","Enter fullscreen mode":"Vào chế độ toàn màn hình","Leave fullscreen mode":"Thoát chế độ toàn màn hình","Fullscreen mode":"Chế độ toàn màn hình","Toggle fullscreen mode":"Chuyển đổi chế độ toàn màn hình","Document outline":"Bố cục tài liệu","Connected users":"Những người dùng đã kết nối","Font Size":"Cỡ chữ",Tiny:"Bé",Small:"Nhỏ",Big:"Lớn",Huge:"Khổng lồ","Font Family":"Họ chữ",Default:"Mặc định","Font Color":"Màu chữ","Font Background Color":"Màu nền chữ","Document colors":"Màu văn bản","Find and replace":"Tìm và thay thế","Find in text…":"Tìm trong văn bản...",Find:"Tìm","Previous result":"Kết quả trước","Next result":"Kết quả tiếp theo",Replace:"Thay thế","Replace all":"Thay thế tất cả","Match case":"Khớp chữ hoa/chữ thường","Whole words only":"Chỉ toàn bộ từ","Replace with…":"Thay thế bằng...","Text to find must not be empty.":"Không được để trống trường văn bản cần tìm.","Tip: Find some text first in order to replace it.":"Mẹo: Tìm một đoạn văn bản trước để thay thế.","Advanced options":"Tùy chọn nâng cao","Find in the document":"Tìm trong tài liệu","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Chèn dấu ngắt mềm (phần tử <code>&lt;br&gt;</code>)","Insert a hard break (a new paragraph)":"Chèn dấu ngắt cứng (đoạn văn mới)",Emoji:"Biểu tượng cảm xúc","Show all emoji...":"Hiển thị tất cả biểu tượng cảm xúc...","Find an emoji (min. 2 characters)":"Tìm biểu tượng cảm xúc (tối thiểu 2 ký tự)",'No emojis were found matching "%0".':'Không tìm thấy biểu tượng cảm xúc nào khớp với "%0".',"Keep on typing to see the emoji.":"Tiếp tục nhập để xem biểu tượng cảm xúc.","The query must contain at least two characters.":"Truy vấn phải chứa ít nhất hai ký tự.","Smileys & Expressions":"Biểu tượng cảm xúc & Biểu cảm","Gestures & People":"Cử chỉ & Con người","Animals & Nature":"Động vật & Thiên nhiên","Food & Drinks":"Đồ ăn & Thức uống","Travel & Places":"Du lịch & Địa điểm",Activities:"Hoạt động",Objects:"Vật thể",Symbols:"Biểu tượng",Flags:"Cờ","Select skin tone":"Chọn tông màu da","Default skin tone":"Tông màu da mặc định","Light skin tone":"Tông màu da sáng","Medium Light skin tone":"Tông màu da sáng trung bình","Medium skin tone":"Tông màu da trung bình","Medium Dark skin tone":"Tông màu da tối trung bình","Dark skin tone":"Tông màu da tối","Emoji picker":"Bảng chọn biểu tượng cảm xúc",Cancel:"Hủy",Clear:"Xóa","Remove color":"Xóa màu","Restore default":"Khôi phục giá trị mặc định",Save:"Lưu","Show more items":"Xem thêm","%0 of %1":"%0 đến %1","Cannot upload file:":"Không thể tải file:","Rich Text Editor. Editing area: %0":"Trình chỉnh sửa Văn bản dạng RTF. Vùng chỉnh sửa: %0","Insert with file manager":"Chèn bằng trình quản lý tập tin","Replace with file manager":"Thay thế bằng trình quản lý tập tin","Insert image with file manager":"Chèn hình ảnh bằng trình quản lý tập tin","Replace image with file manager":"Thay thế hình ảnh bằng trình quản lý tập tin",File:"Tệp","With file manager":"Với trình quản lý tệp","Toggle caption off":"Ẩn chú thích","Toggle caption on":"Hiện chú thích","Content editing keystrokes":"Tổ hợp phím chỉnh sửa nội dung","These keyboard shortcuts allow for quick access to content editing features.":"Những phím tắt này giúp bạn truy cập nhanh vào các tính năng chỉnh sửa nội dung.","User interface and content navigation keystrokes":"Giao diện người dùng và tổ hợp phím điều hướng nội dung","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Sử dụng các tổ hợp phím sau đây để điều hướng hiệu quả hơn trong giao diện người dùng CKEditor 5.","Close contextual balloons, dropdowns, and dialogs":"Đóng bong bóng theo ngữ cảnh, menu thả xuống và hộp thoại","Open the accessibility help dialog":"Mở hộp thoại trợ giúp về khả năng tiếp cận","Move focus between form fields (inputs, buttons, etc.)":"Di chuyển tiêu điểm giữa các trường biểu mẫu (nội dung nhập, nút, v.v.)","Move focus to the menu bar, navigate between menu bars":"Di chuyển tiêu điểm đến thanh menu, điều hướng giữa các thanh menu","Move focus to the toolbar, navigate between toolbars":"Di chuyển tiêu điểm đến thanh công cụ, điều hướng giữa các thanh công cụ","Navigate through the toolbar or menu bar":"Điều hướng trên thanh công cụ hoặc thanh menu","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Thực thi nút hiện đang ưu tiên. Việc thực thi các nút tương tác với nội dung soạn thảo sẽ làm di chuyển tiêu điểm trở lại phần nội dung.",Accept:"Chấp nhận",Paragraph:"Đoạn văn","Color picker":"Bộ chọn màu","Please try a different phrase or check the spelling.":"Vui lòng thử một cụm từ khác hoặc kiểm tra lại cụm từ.",Source:"Nguồn",Insert:"Chèn",Update:"Cập nhật",Back:"Quay lại","Insert code block":"Chèn khối mã","Plain text":"Văn bản thuần","Leaving %0 code snippet":"Đang rời khỏi đoạn mã snippet %0","Entering %0 code snippet":"Đang nhập đoạn mã snippet %0","Entering code snippet":"Đang nhập đoạn mã snippet","Leaving code snippet":"Đang rời khỏi đoạn mã snippet","Code block":"Khối mã","Copy selected content":"Sao chép nội dung đã chọn","Paste content":"Dán nội dung","Paste content as plain text":"Dán nội dung dưới dạng văn bản thuần túy","Insert image or file":"Chèn ảnh hoặc file","Could not obtain resized image URL.":"Không thể lấy được đường dẫn ảnh đã đổi kích thước","Selecting resized image failed":"Chọn ảnh đã đổi kích thước thất bại","Could not insert image at the current position.":"Không thể chèn ảnh ở vị trí hiện tại","Inserting image failed":"Chèn ảnh thất bại",Bookmark:"Dấu trang","Edit bookmark":"Chỉnh sửa dấu trang","Remove bookmark":"Xóa dấu trang","Bookmark name":"Tên dấu trang","Enter the bookmark name without spaces.":"Nhập tên dấu trang không có khoảng trắng.","Bookmark must not be empty.":"Dấu trang không được để trống.","Bookmark name cannot contain space characters.":"Tên dấu trang không được chứa ký tự khoảng trắng.","Bookmark name already exists.":"Tên dấu trang đã tồn tại.","bookmark widget":"tiện ích đánh dấu trang","Bookmark toolbar":"Thanh công cụ Đánh dấu trang",Bookmarks:"Dấu trang","No bookmarks available.":"Không có dấu trang khả dụng.","Scroll to bookmark":"Cuộn chuột đến dấu trang","Open file manager":"Mở trình quản lý tệp","Cannot determine a category for the uploaded file.":"Không thể xác định danh mục cho tệp được tải lên.","Cannot access default workspace.":"Không thể truy cập vào không gian làm việc mặc định.","You have no image editing permissions.":"Bạn không có quyền chỉnh sửa ảnh.","Edit image":"Chỉnh sửa hình ảnh","Processing the edited image.":"Xử lý hình ảnh đã chỉnh sửa.","Server failed to process the image.":"Máy chủ không thể xử lý hình ảnh.","Failed to determine category of edited image.":"Không thể xác định danh mục hình ảnh đã chỉnh sửa.","Block quote":"Trích dẫn",Bold:"Đậm",Italic:"Nghiêng",Underline:"Gạch dưới",Code:"Code",Strikethrough:"Gạch ngang",Subscript:"Chữ nhỏ dưới",Superscript:"Chữ nhỏ trên","Italic text":"In nghiêng chữ","Move out of an inline code style":"Thoát khỏi kiểu mã nội dòng","Bold text":"In đậm chữ","Underline text":"Gạch chân chữ","Strikethrough text":"Gạch ngang chữ","Saving changes":"Đang lưu","Revert autoformatting action":"Hoàn nguyên thao tác tự động định dạng","Align left":"Canh trái","Align right":"Canh phải","Align center":"Canh giữa",Justify:"Canh đều","Text alignment":"Căn chỉnh văn bản","Text alignment toolbar":"Thanh công cụ canh chữ"},getPluralForm(o){return 0}}};/**
405
+ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
406
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
407
+ */const o2={en:{dictionary:{"Words: %0":"Words: %0","Characters: %0":"Characters: %0","Widget toolbar":"Widget toolbar","Insert paragraph before block":"Insert paragraph before block","Insert paragraph after block":"Insert paragraph after block","Press Enter to type after or press Shift + Enter to type before the widget":"Press Enter to type after or press Shift + Enter to type before the widget","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Keystrokes that can be used when a widget is selected (for example: image, table, etc.)","Insert a new paragraph directly after a widget":"Insert a new paragraph directly after a widget","Insert a new paragraph directly before a widget":"Insert a new paragraph directly before a widget","Move the caret to allow typing directly before a widget":"Move the caret to allow typing directly before a widget","Move the caret to allow typing directly after a widget":"Move the caret to allow typing directly after a widget","Move focus from an editable area back to the parent widget":"Move focus from an editable area back to the parent widget","Upload in progress":"Upload in progress",Undo:"Undo",Redo:"Redo","Rich Text Editor":"Rich Text Editor","Edit block":"Edit block","Click to edit block":"Click to edit block","Drag to move":"Drag to move",Next:"Next",Previous:"Previous","Editor toolbar":"Editor toolbar","Dropdown toolbar":"Dropdown toolbar","Dropdown menu":"Dropdown menu",Black:"Black","Dim grey":"Dim grey",Grey:"Grey","Light grey":"Light grey",White:"White",Red:"Red",Orange:"Orange",Yellow:"Yellow","Light green":"Light green",Green:"Green",Aquamarine:"Aquamarine",Turquoise:"Turquoise","Light blue":"Light blue",Blue:"Blue",Purple:"Purple","Editor block content toolbar":"Editor block content toolbar","Editor contextual toolbar":"Editor contextual toolbar",HEX:"HEX","No results found":"No results found","No searchable items":"No searchable items","Editor dialog":"Editor dialog",Close:"Close","Help Contents. To close this dialog press ESC.":"Help Contents. To close this dialog press ESC.","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Below, you can find a list of keyboard shortcuts that can be used in the editor.","(may require <kbd>Fn</kbd>)":"(may require <kbd>Fn</kbd>)",Accessibility:"Accessibility","Accessibility help":"Accessibility help","Press %0 for help.":"Press %0 for help.","Move focus in and out of an active dialog window":"Move focus in and out of an active dialog window",MENU_BAR_MENU_FILE:"File",MENU_BAR_MENU_EDIT:"Edit",MENU_BAR_MENU_VIEW:"View",MENU_BAR_MENU_INSERT:"Insert",MENU_BAR_MENU_FORMAT:"Format",MENU_BAR_MENU_TOOLS:"Tools",MENU_BAR_MENU_HELP:"Help",MENU_BAR_MENU_TEXT:"Text",MENU_BAR_MENU_FONT:"Font","Editor menu bar":"Editor menu bar",'Please enter a valid color (e.g. "ff0000").':'Please enter a valid color (e.g. "ff0000").',"Insert table":"Insert table","Header column":"Header column","Insert column left":"Insert column left","Insert column right":"Insert column right","Delete column":"Delete column","Select column":"Select column",Column:"Column","Header row":"Header row","Insert row below":"Insert row below","Insert row above":"Insert row above","Delete row":"Delete row","Select row":"Select row",Row:"Row","Merge cell up":"Merge cell up","Merge cell right":"Merge cell right","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Split cell vertically":"Split cell vertically","Split cell horizontally":"Split cell horizontally","Merge cells":"Merge cells","Table toolbar":"Table toolbar","Table properties":"Table properties","Cell properties":"Cell properties",Border:"Border",Style:"Style",Width:"Width",Height:"Height",Color:"Color",Background:"Background",Padding:"Padding",Dimensions:"Dimensions","Table cell text alignment":"Table cell text alignment",Alignment:"Alignment","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Vertical text alignment toolbar":"Vertical text alignment toolbar","Table alignment toolbar":"Table alignment toolbar",None:"None",Solid:"Solid",Dotted:"Dotted",Dashed:"Dashed",Double:"Double",Groove:"Groove",Ridge:"Ridge",Inset:"Inset",Outset:"Outset","Align cell text to the left":"Align cell text to the left","Align cell text to the center":"Align cell text to the center","Align cell text to the right":"Align cell text to the right","Justify cell text":"Justify cell text","Align cell text to the top":"Align cell text to the top","Align cell text to the middle":"Align cell text to the middle","Align cell text to the bottom":"Align cell text to the bottom","Align table to the left":"Align table to the left","Center table":"Center table","Align table to the right":"Align table to the right",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"Enter table caption":"Enter table caption","Keystrokes that can be used in a table cell":"Keystrokes that can be used in a table cell","Move the selection to the next cell":"Move the selection to the next cell","Move the selection to the previous cell":"Move the selection to the previous cell","Insert a new table row (when in the last cell of a table)":"Insert a new table row (when in the last cell of a table)","Navigate through the table":"Navigate through the table",Table:"Table","Insert table layout":"Insert table layout","Table layout":"Table layout","Layout table":"Layout table","Content table":"Content table","Choose table type":"Choose table type","Table type":"Table type","Table type options":"Table type options",Styles:"Styles","Multiple styles":"Multiple styles","Block styles":"Block styles","Text styles":"Text styles","Special characters":"Special characters",Category:"Category",All:"All",Arrows:"Arrows",Currency:"Currency",Latin:"Latin",Mathematical:"Mathematical",Text:"Text","leftwards simple arrow":"leftwards simple arrow","rightwards simple arrow":"rightwards simple arrow","upwards simple arrow":"upwards simple arrow","downwards simple arrow":"downwards simple arrow","leftwards double arrow":"leftwards double arrow","rightwards double arrow":"rightwards double arrow","upwards double arrow":"upwards double arrow","downwards double arrow":"downwards double arrow","leftwards dashed arrow":"leftwards dashed arrow","rightwards dashed arrow":"rightwards dashed arrow","upwards dashed arrow":"upwards dashed arrow","downwards dashed arrow":"downwards dashed arrow","leftwards arrow to bar":"leftwards arrow to bar","rightwards arrow to bar":"rightwards arrow to bar","upwards arrow to bar":"upwards arrow to bar","downwards arrow to bar":"downwards arrow to bar","up down arrow with base":"up down arrow with base","back with leftwards arrow above":"back with leftwards arrow above","end with leftwards arrow above":"end with leftwards arrow above","on with exclamation mark with left right arrow above":"on with exclamation mark with left right arrow above","soon with rightwards arrow above":"soon with rightwards arrow above","top with upwards arrow above":"top with upwards arrow above","Dollar sign":"Dollar sign","Euro sign":"Euro sign","Yen sign":"Yen sign","Pound sign":"Pound sign","Cent sign":"Cent sign","Euro-currency sign":"Euro-currency sign","Colon sign":"Colon sign","Cruzeiro sign":"Cruzeiro sign","French franc sign":"French franc sign","Lira sign":"Lira sign","Currency sign":"Currency sign","Bitcoin sign":"Bitcoin sign","Mill sign":"Mill sign","Naira sign":"Naira sign","Peseta sign":"Peseta sign","Rupee sign":"Rupee sign","Won sign":"Won sign","New sheqel sign":"New sheqel sign","Dong sign":"Dong sign","Kip sign":"Kip sign","Tugrik sign":"Tugrik sign","Drachma sign":"Drachma sign","German penny sign":"German penny sign","Peso sign":"Peso sign","Guarani sign":"Guarani sign","Austral sign":"Austral sign","Hryvnia sign":"Hryvnia sign","Cedi sign":"Cedi sign","Livre tournois sign":"Livre tournois sign","Spesmilo sign":"Spesmilo sign","Tenge sign":"Tenge sign","Indian rupee sign":"Indian rupee sign","Turkish lira sign":"Turkish lira sign","Nordic mark sign":"Nordic mark sign","Manat sign":"Manat sign","Ruble sign":"Ruble sign","Latin capital letter a with macron":"Latin capital letter a with macron","Latin small letter a with macron":"Latin small letter a with macron","Latin capital letter a with breve":"Latin capital letter a with breve","Latin small letter a with breve":"Latin small letter a with breve","Latin capital letter a with ogonek":"Latin capital letter a with ogonek","Latin small letter a with ogonek":"Latin small letter a with ogonek","Latin capital letter c with acute":"Latin capital letter c with acute","Latin small letter c with acute":"Latin small letter c with acute","Latin capital letter c with circumflex":"Latin capital letter c with circumflex","Latin small letter c with circumflex":"Latin small letter c with circumflex","Latin capital letter c with dot above":"Latin capital letter c with dot above","Latin small letter c with dot above":"Latin small letter c with dot above","Latin capital letter c with caron":"Latin capital letter c with caron","Latin small letter c with caron":"Latin small letter c with caron","Latin capital letter d with caron":"Latin capital letter d with caron","Latin small letter d with caron":"Latin small letter d with caron","Latin capital letter d with stroke":"Latin capital letter d with stroke","Latin small letter d with stroke":"Latin small letter d with stroke","Latin capital letter e with macron":"Latin capital letter e with macron","Latin small letter e with macron":"Latin small letter e with macron","Latin capital letter e with breve":"Latin capital letter e with breve","Latin small letter e with breve":"Latin small letter e with breve","Latin capital letter e with dot above":"Latin capital letter e with dot above","Latin small letter e with dot above":"Latin small letter e with dot above","Latin capital letter e with ogonek":"Latin capital letter e with ogonek","Latin small letter e with ogonek":"Latin small letter e with ogonek","Latin capital letter e with caron":"Latin capital letter e with caron","Latin small letter e with caron":"Latin small letter e with caron","Latin capital letter g with circumflex":"Latin capital letter g with circumflex","Latin small letter g with circumflex":"Latin small letter g with circumflex","Latin capital letter g with breve":"Latin capital letter g with breve","Latin small letter g with breve":"Latin small letter g with breve","Latin capital letter g with dot above":"Latin capital letter g with dot above","Latin small letter g with dot above":"Latin small letter g with dot above","Latin capital letter g with cedilla":"Latin capital letter g with cedilla","Latin small letter g with cedilla":"Latin small letter g with cedilla","Latin capital letter h with circumflex":"Latin capital letter h with circumflex","Latin small letter h with circumflex":"Latin small letter h with circumflex","Latin capital letter h with stroke":"Latin capital letter h with stroke","Latin small letter h with stroke":"Latin small letter h with stroke","Latin capital letter i with tilde":"Latin capital letter i with tilde","Latin small letter i with tilde":"Latin small letter i with tilde","Latin capital letter i with macron":"Latin capital letter i with macron","Latin small letter i with macron":"Latin small letter i with macron","Latin capital letter i with breve":"Latin capital letter i with breve","Latin small letter i with breve":"Latin small letter i with breve","Latin capital letter i with ogonek":"Latin capital letter i with ogonek","Latin small letter i with ogonek":"Latin small letter i with ogonek","Latin capital letter i with dot above":"Latin capital letter i with dot above","Latin small letter dotless i":"Latin small letter dotless i","Latin capital ligature ij":"Latin capital ligature ij","Latin small ligature ij":"Latin small ligature ij","Latin capital letter j with circumflex":"Latin capital letter j with circumflex","Latin small letter j with circumflex":"Latin small letter j with circumflex","Latin capital letter k with cedilla":"Latin capital letter k with cedilla","Latin small letter k with cedilla":"Latin small letter k with cedilla","Latin small letter kra":"Latin small letter kra","Latin capital letter l with acute":"Latin capital letter l with acute","Latin small letter l with acute":"Latin small letter l with acute","Latin capital letter l with cedilla":"Latin capital letter l with cedilla","Latin small letter l with cedilla":"Latin small letter l with cedilla","Latin capital letter l with caron":"Latin capital letter l with caron","Latin small letter l with caron":"Latin small letter l with caron","Latin capital letter l with middle dot":"Latin capital letter l with middle dot","Latin small letter l with middle dot":"Latin small letter l with middle dot","Latin capital letter l with stroke":"Latin capital letter l with stroke","Latin small letter l with stroke":"Latin small letter l with stroke","Latin capital letter n with acute":"Latin capital letter n with acute","Latin small letter n with acute":"Latin small letter n with acute","Latin capital letter n with cedilla":"Latin capital letter n with cedilla","Latin small letter n with cedilla":"Latin small letter n with cedilla","Latin capital letter n with caron":"Latin capital letter n with caron","Latin small letter n with caron":"Latin small letter n with caron","Latin small letter n preceded by apostrophe":"Latin small letter n preceded by apostrophe","Latin capital letter eng":"Latin capital letter eng","Latin small letter eng":"Latin small letter eng","Latin capital letter o with macron":"Latin capital letter o with macron","Latin small letter o with macron":"Latin small letter o with macron","Latin capital letter o with breve":"Latin capital letter o with breve","Latin small letter o with breve":"Latin small letter o with breve","Latin capital letter o with double acute":"Latin capital letter o with double acute","Latin small letter o with double acute":"Latin small letter o with double acute","Latin capital ligature oe":"Latin capital ligature oe","Latin small ligature oe":"Latin small ligature oe","Latin capital letter r with acute":"Latin capital letter r with acute","Latin small letter r with acute":"Latin small letter r with acute","Latin capital letter r with cedilla":"Latin capital letter r with cedilla","Latin small letter r with cedilla":"Latin small letter r with cedilla","Latin capital letter r with caron":"Latin capital letter r with caron","Latin small letter r with caron":"Latin small letter r with caron","Latin capital letter s with acute":"Latin capital letter s with acute","Latin small letter s with acute":"Latin small letter s with acute","Latin capital letter s with circumflex":"Latin capital letter s with circumflex","Latin small letter s with circumflex":"Latin small letter s with circumflex","Latin capital letter s with cedilla":"Latin capital letter s with cedilla","Latin small letter s with cedilla":"Latin small letter s with cedilla","Latin capital letter s with caron":"Latin capital letter s with caron","Latin small letter s with caron":"Latin small letter s with caron","Latin capital letter t with cedilla":"Latin capital letter t with cedilla","Latin small letter t with cedilla":"Latin small letter t with cedilla","Latin capital letter t with caron":"Latin capital letter t with caron","Latin small letter t with caron":"Latin small letter t with caron","Latin capital letter t with stroke":"Latin capital letter t with stroke","Latin small letter t with stroke":"Latin small letter t with stroke","Latin capital letter u with tilde":"Latin capital letter u with tilde","Latin small letter u with tilde":"Latin small letter u with tilde","Latin capital letter u with macron":"Latin capital letter u with macron","Latin small letter u with macron":"Latin small letter u with macron","Latin capital letter u with breve":"Latin capital letter u with breve","Latin small letter u with breve":"Latin small letter u with breve","Latin capital letter u with ring above":"Latin capital letter u with ring above","Latin small letter u with ring above":"Latin small letter u with ring above","Latin capital letter u with double acute":"Latin capital letter u with double acute","Latin small letter u with double acute":"Latin small letter u with double acute","Latin capital letter u with ogonek":"Latin capital letter u with ogonek","Latin small letter u with ogonek":"Latin small letter u with ogonek","Latin capital letter w with circumflex":"Latin capital letter w with circumflex","Latin small letter w with circumflex":"Latin small letter w with circumflex","Latin capital letter y with circumflex":"Latin capital letter y with circumflex","Latin small letter y with circumflex":"Latin small letter y with circumflex","Latin capital letter y with diaeresis":"Latin capital letter y with diaeresis","Latin capital letter z with acute":"Latin capital letter z with acute","Latin small letter z with acute":"Latin small letter z with acute","Latin capital letter z with dot above":"Latin capital letter z with dot above","Latin small letter z with dot above":"Latin small letter z with dot above","Latin capital letter z with caron":"Latin capital letter z with caron","Latin small letter z with caron":"Latin small letter z with caron","Latin small letter long s":"Latin small letter long s","Less-than sign":"Less-than sign","Greater-than sign":"Greater-than sign","Less-than or equal to":"Less-than or equal to","Greater-than or equal to":"Greater-than or equal to","En dash":"En dash","Em dash":"Em dash",Macron:"Macron",Overline:"Overline","Degree sign":"Degree sign","Minus sign":"Minus sign","Plus-minus sign":"Plus-minus sign","Division sign":"Division sign","Fraction slash":"Fraction slash","Multiplication sign":"Multiplication sign","Latin small letter f with hook":"Latin small letter f with hook",Integral:"Integral","N-ary summation":"N-ary summation",Infinity:"Infinity","Square root":"Square root","Tilde operator":"Tilde operator","Approximately equal to":"Approximately equal to","Almost equal to":"Almost equal to","Not equal to":"Not equal to","Identical to":"Identical to","Element of":"Element of","Not an element of":"Not an element of","Contains as member":"Contains as member","N-ary product":"N-ary product","Logical and":"Logical and","Logical or":"Logical or","Not sign":"Not sign",Intersection:"Intersection",Union:"Union","Partial differential":"Partial differential","For all":"For all","There exists":"There exists","Empty set":"Empty set",Nabla:"Nabla","Asterisk operator":"Asterisk operator","Proportional to":"Proportional to",Angle:"Angle","Vulgar fraction one quarter":"Vulgar fraction one quarter","Vulgar fraction one half":"Vulgar fraction one half","Vulgar fraction three quarters":"Vulgar fraction three quarters","Single left-pointing angle quotation mark":"Single left-pointing angle quotation mark","Single right-pointing angle quotation mark":"Single right-pointing angle quotation mark","Left-pointing double angle quotation mark":"Left-pointing double angle quotation mark","Right-pointing double angle quotation mark":"Right-pointing double angle quotation mark","Left single quotation mark":"Left single quotation mark","Right single quotation mark":"Right single quotation mark","Left double quotation mark":"Left double quotation mark","Right double quotation mark":"Right double quotation mark","Single low-9 quotation mark":"Single low-9 quotation mark","Double low-9 quotation mark":"Double low-9 quotation mark","Inverted exclamation mark":"Inverted exclamation mark","Inverted question mark":"Inverted question mark","Two dot leader":"Two dot leader","Horizontal ellipsis":"Horizontal ellipsis","Double dagger":"Double dagger","Per mille sign":"Per mille sign","Per ten thousand sign":"Per ten thousand sign","Double exclamation mark":"Double exclamation mark","Question exclamation mark":"Question exclamation mark","Exclamation question mark":"Exclamation question mark","Double question mark":"Double question mark","Copyright sign":"Copyright sign","Registered sign":"Registered sign","Trade mark sign":"Trade mark sign","Section sign":"Section sign","Paragraph sign":"Paragraph sign","Reversed paragraph sign":"Reversed paragraph sign","Show source":"Show source","Show blocks":"Show blocks","Select all":"Select all","Disable editing":"Disable editing","Enable editing":"Enable editing","Previous editable region":"Previous editable region","Next editable region":"Next editable region","Navigate editable regions":"Navigate editable regions","Remove Format":"Remove Format","Page break":"Page break","media widget":"media widget","Media URL":"Media URL","Paste the media URL in the input.":"Paste the media URL in the input.","Tip: Paste the URL into the content to embed faster.":"Tip: Paste the URL into the content to embed faster.","The URL must not be empty.":"The URL must not be empty.","This media URL is not supported.":"This media URL is not supported.","Insert media":"Insert media",Media:"Media","Media toolbar":"Media toolbar","Open media in new tab":"Open media in new tab","Media embed":"Media embed","Numbered List":"Numbered List","Bulleted List":"Bulleted List","To-do List":"To-do List","Bulleted list styles toolbar":"Bulleted list styles toolbar","Numbered list styles toolbar":"Numbered list styles toolbar","Toggle the disc list style":"Toggle the disc list style","Toggle the circle list style":"Toggle the circle list style","Toggle the square list style":"Toggle the square list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the upper–roman list style":"Toggle the upper–roman list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the upper–latin list style":"Toggle the upper–latin list style",Disc:"Disc",Circle:"Circle",Square:"Square",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero","Lower–roman":"Lower–roman","Upper-roman":"Upper-roman","Lower-latin":"Lower-latin","Upper-latin":"Upper-latin","List properties":"List properties","Start at":"Start at","Invalid start index value.":"Invalid start index value.","Start index must be greater than 0.":"Start index must be greater than 0.","Reversed order":"Reversed order","Keystrokes that can be used in a list":"Keystrokes that can be used in a list","Increase list item indent":"Increase list item indent","Decrease list item indent":"Decrease list item indent","Entering a to-do list":"Entering a to-do list","Leaving a to-do list":"Leaving a to-do list",Unlink:"Unlink",Link:"Link","Link URL":"Link URL","Link URL must not be empty.":"Link URL must not be empty.","Link image":"Link image","Edit link":"Edit link","Open link in new tab":"Open link in new tab","Open in a new tab":"Open in a new tab",Downloadable:"Downloadable","Create link":"Create link","Move out of a link":"Move out of a link","Link properties":"Link properties","Displayed text":"Displayed text","No links available":"No links available",Language:"Language","Choose language":"Choose language","Remove language":"Remove language","Increase indent":"Increase indent","Decrease indent":"Decrease indent","image widget":"image widget","Wrap text":"Wrap text","Break text":"Break text","In line":"In line","Side image":"Side image","Full size image":"Full size image","Left aligned image":"Left aligned image","Centered image":"Centered image","Right aligned image":"Right aligned image","Change image text alternative":"Change image text alternative","Text alternative":"Text alternative","Enter image caption":"Enter image caption","Insert image":"Insert image","Replace image":"Replace image","Upload from computer":"Upload from computer","Replace from computer":"Replace from computer","Upload image from computer":"Upload image from computer","Image from computer":"Image from computer","From computer":"From computer","Replace image from computer":"Replace image from computer","Upload failed":"Upload failed","You have no image upload permissions.":"You have no image upload permissions.","Image toolbar":"Image toolbar","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Resize image (in %0)":"Resize image (in %0)",Original:"Original","Custom image size":"Custom image size",Custom:"Custom","Image resize list":"Image resize list","Insert image via URL":"Insert image via URL","Insert via URL":"Insert via URL","Image via URL":"Image via URL","Via URL":"Via URL","Update image URL":"Update image URL","Caption for the image":"Caption for the image","Caption for image: %0":"Caption for image: %0","The value must not be empty.":"The value must not be empty.","The value should be a plain number.":"The value should be a plain number.","Uploading image":"Uploading image","Image upload complete":"Image upload complete","Error during image upload":"Error during image upload",Image:"Image","Image Resize":"Image Resize","Text Alternative":"Text Alternative","HTML object":"HTML object","Insert HTML":"Insert HTML","HTML snippet":"HTML snippet","Paste raw HTML here...":"Paste raw HTML here...","Edit source":"Edit source","Save changes":"Save changes","No preview available":"No preview available","Empty snippet content":"Empty snippet content","Horizontal line":"Horizontal line","Yellow marker":"Yellow marker","Green marker":"Green marker","Pink marker":"Pink marker","Blue marker":"Blue marker","Red pen":"Red pen","Green pen":"Green pen","Remove highlight":"Remove highlight",Highlight:"Highlight","Text highlight toolbar":"Text highlight toolbar",Heading:"Heading","Choose heading":"Choose heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6","Type your title":"Type your title","Type or paste your content here.":"Type or paste your content here.","Enter fullscreen mode":"Enter fullscreen mode","Leave fullscreen mode":"Leave fullscreen mode","Fullscreen mode":"Fullscreen mode","Toggle fullscreen mode":"Toggle fullscreen mode","Document outline":"Document outline","Connected users":"Connected users","Font Size":"Font Size",Tiny:"Tiny",Small:"Small",Big:"Big",Huge:"Huge","Font Family":"Font Family",Default:"Default","Font Color":"Font Color","Font Background Color":"Font Background Color","Document colors":"Document colors","Find and replace":"Find and replace","Find in text…":"Find in text…",Find:"Find","Previous result":"Previous result","Next result":"Next result",Replace:"Replace","Replace all":"Replace all","Match case":"Match case","Whole words only":"Whole words only","Replace with…":"Replace with…","Text to find must not be empty.":"Text to find must not be empty.","Tip: Find some text first in order to replace it.":"Tip: Find some text first in order to replace it.","Advanced options":"Advanced options","Find in the document":"Find in the document","Insert a soft break (a <code>&lt;br&gt;</code> element)":"Insert a soft break (a <code>&lt;br&gt;</code> element)","Insert a hard break (a new paragraph)":"Insert a hard break (a new paragraph)",Emoji:"Emoji","Show all emoji...":"Show all emoji...","Find an emoji (min. 2 characters)":"Find an emoji (min. 2 characters)",'No emojis were found matching "%0".':'No emojis were found matching "%0".',"Keep on typing to see the emoji.":"Keep on typing to see the emoji.","The query must contain at least two characters.":"The query must contain at least two characters.","Smileys & Expressions":"Smileys & Expressions","Gestures & People":"Gestures & People","Animals & Nature":"Animals & Nature","Food & Drinks":"Food & Drinks","Travel & Places":"Travel & Places",Activities:"Activities",Objects:"Objects",Symbols:"Symbols",Flags:"Flags","Select skin tone":"Select skin tone","Default skin tone":"Default skin tone","Light skin tone":"Light skin tone","Medium Light skin tone":"Medium Light skin tone","Medium skin tone":"Medium skin tone","Medium Dark skin tone":"Medium Dark skin tone","Dark skin tone":"Dark skin tone","Emoji picker":"Emoji picker",Cancel:"Cancel",Clear:"Clear","Remove color":"Remove color","Restore default":"Restore default",Save:"Save","Show more items":"Show more items","%0 of %1":"%0 of %1","Cannot upload file:":"Cannot upload file:","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0","Insert with file manager":"Insert with file manager","Replace with file manager":"Replace with file manager","Insert image with file manager":"Insert image with file manager","Replace image with file manager":"Replace image with file manager",File:"File","With file manager":"With file manager","Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on","Content editing keystrokes":"Content editing keystrokes","These keyboard shortcuts allow for quick access to content editing features.":"These keyboard shortcuts allow for quick access to content editing features.","User interface and content navigation keystrokes":"User interface and content navigation keystrokes","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.","Close contextual balloons, dropdowns, and dialogs":"Close contextual balloons, dropdowns, and dialogs","Open the accessibility help dialog":"Open the accessibility help dialog","Move focus between form fields (inputs, buttons, etc.)":"Move focus between form fields (inputs, buttons, etc.)","Move focus to the menu bar, navigate between menu bars":"Move focus to the menu bar, navigate between menu bars","Move focus to the toolbar, navigate between toolbars":"Move focus to the toolbar, navigate between toolbars","Navigate through the toolbar or menu bar":"Navigate through the toolbar or menu bar","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.",Accept:"Accept",Paragraph:"Paragraph","Color picker":"Color picker","Please try a different phrase or check the spelling.":"Please try a different phrase or check the spelling.",Source:"Source",Insert:"Insert",Update:"Update",Back:"Back","Insert code block":"Insert code block","Plain text":"Plain text","Leaving %0 code snippet":"Leaving %0 code snippet","Entering %0 code snippet":"Entering %0 code snippet","Entering code snippet":"Entering code snippet","Leaving code snippet":"Leaving code snippet","Code block":"Code block","Copy selected content":"Copy selected content","Paste content":"Paste content","Paste content as plain text":"Paste content as plain text","Insert image or file":"Insert image or file","Could not obtain resized image URL.":"Could not obtain resized image URL.","Selecting resized image failed":"Selecting resized image failed","Could not insert image at the current position.":"Could not insert image at the current position.","Inserting image failed":"Inserting image failed",Bookmark:"Bookmark","Edit bookmark":"Edit bookmark","Remove bookmark":"Remove bookmark","Bookmark name":"Bookmark name","Enter the bookmark name without spaces.":"Enter the bookmark name without spaces.","Bookmark must not be empty.":"Bookmark must not be empty.","Bookmark name cannot contain space characters.":"Bookmark name cannot contain space characters.","Bookmark name already exists.":"Bookmark name already exists.","bookmark widget":"bookmark widget","Bookmark toolbar":"Bookmark toolbar",Bookmarks:"Bookmarks","No bookmarks available.":"No bookmarks available.","Scroll to bookmark":"Scroll to bookmark","Open file manager":"Open file manager","Cannot determine a category for the uploaded file.":"Cannot determine a category for the uploaded file.","Cannot access default workspace.":"Cannot access default workspace.","You have no image editing permissions.":"You have no image editing permissions.","Edit image":"Edit image","Processing the edited image.":"Processing the edited image.","Server failed to process the image.":"Server failed to process the image.","Failed to determine category of edited image.":"Failed to determine category of edited image.","Block quote":"Block quote",Bold:"Bold",Italic:"Italic",Underline:"Underline",Code:"Code",Strikethrough:"Strikethrough",Subscript:"Subscript",Superscript:"Superscript","Italic text":"Italic text","Move out of an inline code style":"Move out of an inline code style","Bold text":"Bold text","Underline text":"Underline text","Strikethrough text":"Strikethrough text","Saving changes":"Saving changes","Revert autoformatting action":"Revert autoformatting action","Align left":"Align left","Align right":"Align right","Align center":"Align center",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"},getPluralForm(o){return o!=1}}};class s2{constructor(i,e){u(this,"loader");u(this,"url");this.loader=i,this.url=e}async upload(){const i=new FormData;let e=await this.loader.file;i.append("name",e.name),i.append("file",e);try{let t=await Np.post(this.url,i,{headers:{"Content-Type":"multipart/form-data"}});return{default:{msg:t.data.msg,url:window.bindPublic?`/public${t.data.url}`:t.data.url}.url}}catch(t){throw console.error("Upload error:",t),t}}}class r2 extends y{static get requires(){return["ImageUpload"]}init(){const i=this.editor,e=window.location.pathname.split("/").filter(s=>s!==""),t=e[1],n=e[2];console.log(t,n),i.plugins.get("FileRepository").createUploadAdapter=s=>{const r=`${window.routePrefix}/${t}/${n}/ckeditor5/upload`;return new s2(s,r)}}}const lh={pl:$P,ar:KP,zn:ZP,de:JP,es:YP,fr:XP,hi:QP,ko:e2,pt:t2,ru:i2,vi:n2,en:o2},a2=document.documentElement.lang,l2=lh[a2]||lh.en;function c2({initialValue:o,onChange:i,options:e,disabled:t}){const n=H.useRef(null),s=H.useRef(null),[r,a]=H.useState(!1);H.useEffect(()=>(a(!0),()=>a(!1)),[]);const l=H.useMemo(()=>r?{translations:[l2],toolbar:{items:(e==null?void 0:e.items)??[],shouldNotGroupWhenFull:!0},plugins:[jL,rT,TT,cT,NE,qE,YE,hx,bx,gx,Mf,Zx,rS,bl,aS,Rf,r2,Dx,hT,qS,fA,EA,gs,IA,PA,V0,ZI,GP,pP,yP,DP,JI,fT],heading:{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h1",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h2",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h3",title:"Heading 3",class:"ck-heading_heading3"},{model:"heading4",view:"h4",title:"Heading 4",class:"ck-heading_heading4"},{model:"heading5",view:"h5",title:"Heading 5",class:"ck-heading_heading5"},{model:"heading6",view:"h6",title:"Heading 6",class:"ck-heading_heading6"}]},image:{toolbar:["toggleImageCaption","imageTextAlternative","|","imageStyle:inline","imageStyle:wrapText","imageStyle:breakText","|","resizeImage"]},initialData:o,licenseKey:"GPL",link:{addTargetToExternalLinks:!0,defaultProtocol:"https://",decorators:{toggleDownloadable:{mode:"manual",label:"Downloadable",attributes:{download:"file"}}}},list:{properties:{styles:!0,startIndex:!0,reversed:!0}},placeholder:"",table:{contentToolbar:["tableColumn","tableRow","mergeTableCells","tableProperties","tableCellProperties"]}}:{},[r]),c=H.useCallback((d,h)=>{const m=h.getData();d.name==="change:data"&&i(m)},[o]);return D.jsx("div",{className:`max-fit ${t?"pointer-events-none opacity-50 cursor-not-allowed":""}`,children:D.jsx("div",{className:"editor-container editor-container_classic-editor",ref:n,children:D.jsx("div",{className:"editor-container__editor",children:D.jsx("div",{ref:s,children:l&&D.jsx(ph,{editor:CE,config:l,onChange:c})})})})})}const d2=D.jsx("svg",{width:"10",height:"10",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",children:D.jsx("path",{d:"M2.99998 -0.000206962C2.7441 -0.000206962 2.48794 0.0972617 2.29294 0.292762L0.292945 2.29276C-0.0980552 2.68376 -0.0980552 3.31682 0.292945 3.70682L7.58591 10.9998L0.292945 18.2928C-0.0980552 18.6838 -0.0980552 19.3168 0.292945 19.7068L2.29294 21.7068C2.68394 22.0978 3.31701 22.0978 3.70701 21.7068L11 14.4139L18.2929 21.7068C18.6829 22.0978 19.317 22.0978 19.707 21.7068L21.707 19.7068C22.098 19.3158 22.098 18.6828 21.707 18.2928L14.414 10.9998L21.707 3.70682C22.098 3.31682 22.098 2.68276 21.707 2.29276L19.707 0.292762C19.316 -0.0982383 18.6829 -0.0982383 18.2929 0.292762L11 7.58573L3.70701 0.292762C3.51151 0.0972617 3.25585 -0.000206962 2.99998 -0.000206962Z"})}),u2="_Wrapper_18nsw_1",h2="_active_18nsw_7",m2="_Page_18nsw_8",g2="_clone_18nsw_18",f2="_Remove_18nsw_29",p2="_insertBefore_18nsw_35",w2="_insertAfter_18nsw_36",b2="_vertical_18nsw_44",Vt={Wrapper:u2,active:h2,Page:m2,clone:g2,Remove:f2,insertBefore:p2,insertAfter:w2,vertical:b2};var v2=(o=>(o[o.Before=-1]="Before",o[o.After=1]="After",o))(v2||{}),Mp=(o=>(o.Horizontal="horizontal",o.Vertical="vertical",o.Grid="grid",o))(Mp||{});const q2=H.forwardRef(function({id:i,index:e,active:t,clone:n,insertPosition:s,layout:r,onRemove:a,style:l,url:c,...d},h){return D.jsxs("li",{className:Dp(Vt.Wrapper,t&&Vt.active,n&&Vt.clone,s===-1&&Vt.insertBefore,s===1&&Vt.insertAfter,r==="vertical"&&Vt.vertical),style:l,ref:h,children:[D.jsx("button",{className:`${Vt.Page} after:bg-black dark:after:bg-gray-300`,"data-id":i.toString(),...d,children:D.jsx("img",{src:c,alt:"",className:"absolute top-0 left-0 w-full h-full object-cover overflow-hidden rounded-[5px]"})}),!t&&a?D.jsx("button",{className:Vt.Remove,onClick:a,children:d2}):null]})}),k2=H.lazy(()=>$i(()=>import("./toast-editor-BZM5RHph.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),y2=H.lazy(()=>$i(()=>import("./app.js").then(o=>o.bN),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),_2=H.lazy(()=>$i(()=>import("./app.js").then(o=>o.bM),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),C2=H.lazy(()=>$i(()=>import("./geo-json-CadjdhwW.js"),__vite__mapDeps([7,1,2,3,4,5,6]),import.meta.url)),L2=H.lazy(()=>$i(()=>import("./app.js").then(o=>o.bO),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),T2=H.lazy(()=>$i(()=>import("./media-manager-UQT6RhI8.js"),__vite__mapDeps([8,1,2,3,4,5,6,9,10,11]),import.meta.url)),E2=H.memo(({field:o,value:i,onChange:e,processing:t,notFound:n,search:s})=>{var _,M,O,oe,te,x,N,S,P,Z,ge,se,lo,en,Il,Pl,Rl,Ml,Bl,Vl,zl,Nl,Dl,Ol,Fl;const r=H.useCallback(X=>{e(o.name,X.target.value)},[e,o.name]),a=H.useCallback(X=>{e(o.name,X[0])},[e,o.name]),l=H.useCallback(X=>{e(o.name,X)},[e,o.name]),c=H.useCallback(X=>{e(o.name,X)},[e,o.name]),d=H.useCallback(X=>{e(o.name,X)},[e,o.name]),h=H.useCallback(X=>{e(o.name,X)},[e,o.name]),m=H.useCallback(X=>{e(o.name,X.json)},[e,o.name]),g=H.useCallback(X=>{e(o.name,X)},[e,o.name]),f=H.useCallback(X=>{e(o.name,X)},[e,o.name]),p=H.useCallback(X=>{e(o.name,X)},[e,o.name]),b=H.useCallback(X=>{const Bp=X.map(Ul=>({id:Ul.id,url:Ul.url}));e(o.name,Bp)},[e,o.name]),k=H.useMemo(()=>o.type==="color"?"max-w-[40px] p-px h-[40px] border-transparent":["date","datetime-local","time","month","week"].includes(o.type)?"w-fit":"",[]);switch(o.type){case"checkbox":return D.jsx(Kp,{id:`${o.type}-${o.name}`,disabled:t||o.disabled,tabIndex:1,required:o.required,className:"cursor-pointer size-5 scroll-pt-30 scroll-mt-30",checked:i??!1,onCheckedChange:l});case"textarea":return D.jsx($p,{id:`${o.type}-${o.name}`,tabIndex:1,disabled:t||o.disabled,value:i??"",required:o.required,onChange:r,placeholder:o.label,className:"scroll-pt-30 scroll-mt-30"});case"range":return D.jsxs(D.Fragment,{children:[D.jsx("output",{children:i}),D.jsx(Gp,{defaultValue:[Number(o.value)||0],value:[Number(i)||0],max:(_=o.options)!=null&&_.max?Number(o.options.max):100,min:(M=o.options)!=null&&M.min?Number(o.options.min):0,step:1,id:`${o.type}-${o.name}`,onValueChange:a,disabled:t||o.disabled})]});case"select":return D.jsxs(Up,{onValueChange:c,defaultValue:i??"",disabled:t||o.disabled,required:o.required,children:[D.jsx(Hp,{className:"w-full cursor-pointer min-h-10 scroll-pt-30 scroll-mt-30",id:o.name,children:D.jsx(Wp,{placeholder:""})}),D.jsx(qp,{children:(o.isIn??[]).map(X=>D.jsx(jp,{value:X,children:X},X))})]});case"association":case"association-many":case"select-many":return D.jsx(Fp,{options:o.options,onValueChange:p,defaultValue:i??[],variant:"secondary",notFound:n,search:s,disabled:t||o.disabled,mode:o.type==="association"?"single":"multiple",maxCount:10,className:`${t?"pointer-events-none":""} scroll-pt-30 scroll-mt-30`});case"wysiwyg":return((O=o.options)==null?void 0:O.name)==="ckeditor"?D.jsx(c2,{initialValue:i??"",onChange:d,options:(oe=o.options)==null?void 0:oe.config,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(te=o.options)==null?void 0:te.path,options:(x=o.options)==null?void 0:x.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:d,disabled:t||o.disabled});case"markdown":return((N=o.options)==null?void 0:N.name)==="toast-ui"?D.jsx(k2,{initialValue:o.value??"",options:(S=o.options)==null?void 0:S.config,onChange:d,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(P=o.options)==null?void 0:P.path,options:(Z=o.options)==null?void 0:Z.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:d,disabled:t||o.disabled});case"table":return((ge=o.options)==null?void 0:ge.name)==="handsontable"?D.jsx(y2,{data:i,config:(se=o.options)==null?void 0:se.config,onChange:h,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(lo=o.options)==null?void 0:lo.path,options:(en=o.options)==null?void 0:en.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:d,disabled:t||o.disabled});case"jsonEditor":return((Il=o.options)==null?void 0:Il.name)==="jsoneditor"?D.jsx(_2,{content:i,name:`${o.type}-${o.name}`,onChange:m,...(Pl=o.options)==null?void 0:Pl.config,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(Rl=o.options)==null?void 0:Rl.path,options:(Ml=o.options)==null?void 0:Ml.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:m,disabled:t||o.disabled});case"codeEditor":return((Bl=o.options)==null?void 0:Bl.name)==="monaco"?D.jsx(L2,{value:i??"",onChange:g,options:(Vl=o.options)==null?void 0:Vl.config,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(zl=o.options)==null?void 0:zl.path,options:(Nl=o.options)==null?void 0:Nl.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:m,disabled:t||o.disabled});case"geoJson":return((Dl=o.options)==null?void 0:Dl.name)==="leaflet"?D.jsx(C2,{mode:"all",initialFeatures:i??void 0,onFeaturesChange:f,disabled:t||o.disabled}):D.jsx(ki,{moduleComponent:(Ol=o.options)==null?void 0:Ol.path,options:(Fl=o.options)==null?void 0:Fl.config,initialValue:i??"",name:`${o.type}-${o.name}`,onChange:m,disabled:t||o.disabled});case"mediamanager":return D.jsx(T2,{layout:Mp.Grid,config:{id:o.options.id,group:o.options.group},value:i,onChange:b});default:return D.jsx(Op,{id:o.name,type:o.type,className:`${k} min-h-10 scroll-pt-30 scroll-mt-30`,required:o.required,tabIndex:1,value:i??"",onChange:r,disabled:t||o.disabled,placeholder:o.label})}}),j2=Object.freeze(Object.defineProperty({__proto__:null,default:E2},Symbol.toStringTag,{value:"Module"}));export{E2 as F,q2 as I,v2 as P,j2 as f,Vt as p};