adminizer 4.3.0-build.80 → 4.3.0-build.82
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.
- package/assets/add-CZdDpNV2.js +1 -0
- package/assets/add-form-BjXOLDij.js +1 -0
- package/assets/add-group-form-BNmpvW8K.js +1 -0
- package/assets/add-group-urhA47Qf.js +1 -0
- package/assets/add-user-CzWUu7wG.js +1 -0
- package/assets/{add-user-form-yp020h4r.js → add-user-form-DrclnTOd.js} +1 -1
- package/assets/{app-CpGtjhxF.css → app-CSVBI-Lw.css} +1 -1
- package/assets/app-layout-CbyH1MDK.js +1 -0
- package/assets/{app-shell-xEVbINZV.js → app-shell-CHEYhVco.js} +1 -1
- package/assets/{app-sidebar-4lm9f_CG.js → app-sidebar-DeF8WNmW.js} +1 -1
- package/assets/app-sidebar-header-8KWnVpkN.js +1 -0
- package/assets/app.js +1628 -1628
- package/assets/breadcrumbs-C439DWrC.js +1 -0
- package/assets/catalog-CCSagWKW.js +6 -0
- package/assets/dashboard-DUNXib6b.js +3 -0
- package/assets/date-picker-DbJ8nHp5.js +1 -0
- package/assets/del-modal-_b3CSNHb.js +1 -0
- package/assets/{dynamic-controls-PxBg8yMz.js → dynamic-controls-BOYmRX_z.js} +1 -1
- package/assets/{field-renderer-CsBa_tMB.css → field-renderer-CRNLShJD.css} +1 -1
- package/assets/field-renderer-D0crIeQS.js +407 -0
- package/assets/{form-CSTeMDf5.js → form-B6LFaTgS.js} +1 -1
- package/assets/form-C8pRhEOA.js +1 -0
- package/assets/geo-json-uSUIgJf5.js +4 -0
- package/assets/{handsontable-D6MvFmcM.js → handsontable-PVakPtJV.js} +55 -55
- package/assets/home-D--JrFFj.js +2 -0
- package/assets/icon-DM49pZW3.js +1 -0
- package/assets/{init-user-L-oxFTOv.js → init-user-DNrB8Xt5.js} +1 -1
- package/assets/input-error--IOnWghB.js +1 -0
- package/assets/jsoneditor-D95dIAP2.js +3878 -0
- package/assets/list-CQivvagG.js +1 -0
- package/assets/{list-table-vIvydJV2.js → list-table-h_zXp43g.js} +4 -4
- package/assets/{login-DLMJ6l_r.js → login-6Xb8bcPq.js} +1 -1
- package/assets/manifest.json +259 -260
- package/assets/material-icon-BedgD2NE.js +1 -0
- package/assets/{media-manager-ASGJ4PcS.js → media-manager-Bms57WSN.js} +2 -2
- package/assets/module-DqrIORMW.js +1 -0
- package/assets/{monaco-B1uVVM7f.js → monaco-ICtx6xoc.js} +1 -1
- package/assets/{nav-footer-DbGCtmmN.js → nav-footer-BwkQkwow.js} +1 -1
- package/assets/{nav-main-BcWhl71g.js → nav-main-9Eb_A0rf.js} +1 -1
- package/assets/nav-user-CRAfyE-x.js +1 -0
- package/assets/notification-db0RD9I6.js +27 -0
- package/assets/{pagination-render-BceTnewI.js → pagination-render-D3UyVAlr.js} +1 -1
- package/assets/{register-C_W_hOmq.js → register-BIyjCy8M.js} +1 -1
- package/assets/tabs-BK_5wdPA.js +1 -0
- package/assets/theme-switcher-CKiJbMkh.js +1 -0
- package/assets/toast-editor-BZM5RHph.js +845 -0
- package/assets/{user-info-BrWerGLc.js → user-info-CcYdmjMZ.js} +1 -1
- package/assets/{user-menu-content-D61_auxX.js → user-menu-content-DbUk8ZeY.js} +1 -1
- package/assets/vanilla-picker-l5rcX3cq.js +8 -0
- package/assets/{vendor-DoC2WAmd.js → vendor-wzZzN_Jv.js} +2 -2
- package/assets/welcome-CZlWN4gM.js +1 -0
- package/controllers/add.js +1 -1
- package/controllers/catalog/FrontentCatalogAdapter.d.ts +4 -4
- package/controllers/edit.js +1 -15
- package/controllers/list.js +2 -2
- package/controllers/login.js +2 -2
- package/controllers/navigation/edit.js +1 -1
- package/controllers/notifications/NotificationController.d.ts +5 -5
- package/controllers/notifications/NotificationController.js +77 -78
- package/controllers/remove.js +1 -11
- package/controllers/view.js +1 -1
- package/helpers/configHelper.d.ts +1 -1
- package/helpers/fieldsHelper.d.ts +1 -1
- package/helpers/fieldsHelper.js +1 -1
- package/helpers/inertiaAddHelper.d.ts +1 -1
- package/helpers/translationHelper.d.ts +1 -1
- package/helpers/translationHelper.js +1 -1
- package/index.d.ts +14 -13
- package/index.js +14 -13
- package/interfaces/adminpanelConfig.d.ts +1 -1
- package/interfaces/global.d.ts +3 -3
- package/interfaces/types.d.ts +10 -1
- package/lib/Adminizer.d.ts +7 -7
- package/lib/Adminizer.js +7 -7
- package/lib/{v4/DataAccessor.d.ts → DataAccessor.d.ts} +4 -4
- package/lib/{v4/DataAccessor.js → DataAccessor.js} +3 -3
- package/lib/{v4/I18n.js → I18n.js} +2 -2
- package/lib/{v4/PolicyManager.d.ts → PolicyManager.d.ts} +1 -1
- package/lib/{v4/PolicyManager.js → PolicyManager.js} +2 -2
- package/lib/{v4/catalog → catalog}/AbstractCatalog.d.ts +1 -1
- package/lib/{v4/catalog → catalog}/Navigation.d.ts +2 -2
- package/lib/{v4/catalog → catalog}/Navigation.js +1 -1
- package/lib/{v4/controls → controls}/AbstractControls.d.ts +1 -1
- package/lib/{v4/controls → controls}/codeEditor/MonacoEditor.d.ts +1 -1
- package/lib/{v4/controls → controls}/geojsoneditor/GeoEditor.d.ts +1 -1
- package/lib/{v4/controls → controls}/jsoneditor/JsonEditor.d.ts +1 -1
- package/lib/{v4/controls → controls}/markdown/ToastUiEditor.d.ts +1 -1
- package/lib/{v4/controls → controls}/table/Handsontable.d.ts +1 -1
- package/lib/{v4/controls → controls}/wysiwyg/CKeditor.d.ts +1 -1
- package/lib/{v4/datatable → datatable}/NodeTable.d.ts +1 -1
- package/lib/{v4/model → model}/AbstractModel.d.ts +12 -0
- package/lib/model/AbstractModel.js +178 -0
- package/lib/{v4/model → model}/ModelHandler.js +1 -1
- package/lib/{v4/model → model}/adapter/sequelize.d.ts +2 -4
- package/lib/{v4/model → model}/adapter/sequelize.js +33 -13
- package/lib/{v4/notifications → notifications}/AbstractNotificationService.d.ts +14 -7
- package/lib/notifications/AbstractNotificationService.js +233 -0
- package/lib/{v4/notifications → notifications}/GeneralNotificationService.d.ts +1 -1
- package/lib/{v4/notifications → notifications}/GeneralNotificationService.js +4 -2
- package/lib/notifications/NotificationHandler.d.ts +27 -0
- package/lib/notifications/NotificationHandler.js +41 -0
- package/lib/{v4/notifications → notifications}/SystemNotificationService.d.ts +5 -4
- package/lib/notifications/SystemNotificationService.js +173 -0
- package/lib/{v4/widgets → widgets}/abstractCustom.d.ts +1 -1
- package/lib/{v4/widgets → widgets}/abstractLink.d.ts +1 -1
- package/lib/{v4/widgets → widgets}/abstractWidgetBase.d.ts +1 -1
- package/lib/{v4/widgets → widgets}/widgetHandler.d.ts +2 -2
- package/migrations/index.d.ts +3 -0
- package/migrations/index.js +4 -0
- package/migrations/umzug/0001.d.ts +7 -0
- package/migrations/umzug/0001.js +119 -0
- package/migrations/umzug.d.ts +2 -0
- package/migrations/umzug.js +8 -0
- package/models/NotificationAP.d.ts +8 -0
- package/models/NotificationAP.js +8 -0
- package/models/UserAP.d.ts +1 -1
- package/package.json +5 -4
- package/system/Router.js +4 -8
- package/system/bindControls.js +6 -6
- package/system/bindInertia.js +4 -3
- package/system/bindNavigation.js +1 -1
- package/system/bindNotifications.js +3 -3
- package/system/bindReqFunctions.js +8 -25
- package/system/defaults.js +1 -1
- package/ui/components/ui/table.d.ts +1 -1
- package/ui/components/ui/table.js +2 -2
- package/assets/add-DSapOiv0.js +0 -1
- package/assets/add-form-C04ZI5LT.js +0 -1
- package/assets/add-group-DWR7SBTO.js +0 -1
- package/assets/add-group-form-CyRwxTs3.js +0 -1
- package/assets/add-user-acATGxUL.js +0 -1
- package/assets/app-layout-BmT5KQwc.js +0 -1
- package/assets/app-sidebar-header-CxXmzszq.js +0 -1
- package/assets/breadcrumbs-livOfa2Z.js +0 -1
- package/assets/catalog-CG_EB2kz.js +0 -6
- package/assets/dashboard-CsmJfdLb.js +0 -3
- package/assets/date-picker-By3kj-Rx.js +0 -1
- package/assets/del-modal-DlcbcdR5.js +0 -1
- package/assets/field-renderer-Bp1lfm0v.js +0 -407
- package/assets/form-CxHRGp7p.js +0 -1
- package/assets/geo-json-CCgjEQfu.js +0 -4
- package/assets/home-D00XjLjD.js +0 -2
- package/assets/icon-ButfCBrt.js +0 -1
- package/assets/input-error-CHsDLcK0.js +0 -1
- package/assets/jsoneditor-CBqATVR0.js +0 -3833
- package/assets/list-4TOTsjqE.js +0 -1
- package/assets/material-icon-sXk4BK-N.js +0 -1
- package/assets/module-mxngd2cA.js +0 -1
- package/assets/nav-user-BN2veV3l.js +0 -1
- package/assets/notification-BEfA5sT6.js +0 -1
- package/assets/tabs-CgZW_LLn.js +0 -1
- package/assets/theme-switcher-D1G6OSMc.js +0 -1
- package/assets/toast-editor-CfgZXoQZ.js +0 -845
- package/assets/vanilla-picker-B6E6ObS_.js +0 -8
- package/assets/welcome-FHRCdke0.js +0 -1
- package/lib/v4/model/AbstractModel.js +0 -79
- package/lib/v4/notifications/AbstractNotificationService.js +0 -150
- package/lib/v4/notifications/NotificationHandler.d.ts +0 -69
- package/lib/v4/notifications/NotificationHandler.js +0 -127
- package/lib/v4/notifications/SystemNotificationService.js +0 -124
- package/migrations/db-migrate/20230303171134-adminpanel-init.js +0 -122
- package/migrations/db-migrate/20231223215835-add-widgets.js +0 -32
- package/migrations/db-migrate/20240804191001-added-navigationap.js +0 -53
- package/migrations/db-migrate/20241121184236-v4-init.js +0 -134
- /package/lib/{v4/I18n.d.ts → I18n.d.ts} +0 -0
- /package/lib/{v4/POWCaptcha.d.ts → POWCaptcha.d.ts} +0 -0
- /package/lib/{v4/POWCaptcha.js → POWCaptcha.js} +0 -0
- /package/lib/{v4/catalog → catalog}/AbstractCatalog.js +0 -0
- /package/lib/{v4/catalog → catalog}/CatalogHandler.d.ts +0 -0
- /package/lib/{v4/catalog → catalog}/CatalogHandler.js +0 -0
- /package/lib/{v4/controls → controls}/AbstractControls.js +0 -0
- /package/lib/{v4/controls → controls}/ControlsHandler.d.ts +0 -0
- /package/lib/{v4/controls → controls}/ControlsHandler.js +0 -0
- /package/lib/{v4/controls → controls}/codeEditor/MonacoEditor.js +0 -0
- /package/lib/{v4/controls → controls}/geojsoneditor/GeoEditor.js +0 -0
- /package/lib/{v4/controls → controls}/jsoneditor/JsonEditor.js +0 -0
- /package/lib/{v4/controls → controls}/markdown/ToastUiEditor.js +0 -0
- /package/lib/{v4/controls → controls}/table/Handsontable.js +0 -0
- /package/lib/{v4/controls → controls}/wysiwyg/CKeditor.js +0 -0
- /package/lib/{v4/datatable → datatable}/NodeTable.js +0 -0
- /package/lib/{v4/helper → helper}/jwt.d.ts +0 -0
- /package/lib/{v4/helper → helper}/jwt.js +0 -0
- /package/lib/{v4/inertia → inertia}/flash.d.ts +0 -0
- /package/lib/{v4/inertia → inertia}/flash.js +0 -0
- /package/lib/{v4/inertia → inertia}/inertiaAdapter.d.ts +0 -0
- /package/lib/{v4/inertia → inertia}/inertiaAdapter.js +0 -0
- /package/lib/{v4/model → model}/ModelHandler.d.ts +0 -0
- /package/lib/{v4/model → model}/adapter/waterline.d.ts +0 -0
- /package/lib/{v4/model → model}/adapter/waterline.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractAction.d.ts +0 -0
- /package/lib/{v4/widgets → widgets}/abstractAction.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractCustom.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractInfo.d.ts +0 -0
- /package/lib/{v4/widgets → widgets}/abstractInfo.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractLink.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractSwitch.d.ts +0 -0
- /package/lib/{v4/widgets → widgets}/abstractSwitch.js +0 -0
- /package/lib/{v4/widgets → widgets}/abstractWidgetBase.js +0 -0
- /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-CSVBI-Lw.css","./geo-json-uSUIgJf5.js","./media-manager-Bms57WSN.js","./tabs-BK_5wdPA.js","./dynamic-controls-BOYmRX_z.js","./media-manager-BZPjl98I.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var $f=Object.defineProperty;var Zf=(r,i,e)=>i in r?$f(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var u=(r,i,e)=>Zf(r,typeof i!="symbol"?i+"":i,e);import{_ as Ui}from"./jsoneditor-D95dIAP2.js";import{j as O,Y as Jf,I as Yf,bz as Xf,S as Qf,b as ep,c as tp,d as ip,e as np,bA as rp,bB as op,f as sp}from"./app.js";import{e as ti,r as U}from"./monaco-ICtx6xoc.js";import bi from"./dynamic-controls-BOYmRX_z.js";import{g as Uu}from"./vendor-wzZzN_Jv.js";function ap(r,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 r)){const o=Object.getOwnPropertyDescriptor(t,n);o&&Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:()=>t[n]})}}}return Object.freeze(Object.defineProperty(r,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 lp(){const r={resolve:null,promise:null};return r.promise=new Promise(i=>{r.resolve=i}),r}/**
|
|
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 cp(r){let i=null;return(...e)=>(i||(i={current:r(...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 Ce=new Array(256).fill("").map((r,i)=>("0"+i.toString(16)).slice(-2));function dp(){const[r,i,e,t]=crypto.getRandomValues(new Uint32Array(4));return"e"+Ce[r>>0&255]+Ce[r>>8&255]+Ce[r>>16&255]+Ce[r>>24&255]+Ce[i>>0&255]+Ce[i>>8&255]+Ce[i>>16&255]+Ce[i>>24&255]+Ce[e>>0&255]+Ce[e>>8&255]+Ce[e>>16&255]+Ce[e>>24&255]+Ce[t>>0&255]+Ce[t>>8&255]+Ce[t>>16&255]+Ce[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 up(r,i){const e=r.extraPlugins||[];return{...r,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 Hu(r){return!!r&&/^\d+\.\d+\.\d+/.test(r)}/**
|
|
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 Wu(r){return r?["nightly","alpha","internal","nightly-","staging"].some(i=>r.includes(i)):!1}function hp(r){return Hu(r)||Wu(r)}/**
|
|
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 mp(r){if(!Hu(r))throw new Error(`Invalid semantic version: ${r||"<blank>"}.`);const[i,e,t]=r.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 gp(r){if(Wu(r))return 3;const{major:i}=mp(r);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 fp(){const{CKEDITOR_VERSION:r,CKEDITOR:i}=window;return hp(r)?{source:i?"cdn":"npm",version:r}: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 pp(){const r=fp();return r?gp(r.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 qu(r,i){switch(i||(i=pp()||void 0),i){case 1:case 2:return r===void 0;case 3:return r==="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 bp(r,i){return function(t){qu(t.config.get("licenseKey"))||t.on("collectUsageData",(n,{setUsageData:o})=>{o(`integration.${r}`,i)})}}var wp=Object.defineProperty,kp=(r,i,e)=>i in r?wp(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e,Re=(r,i,e)=>kp(r,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 ju=class Gu{constructor(i,e){Re(this,"_lifecycle"),Re(this,"_element"),Re(this,"_releaseLock",null),Re(this,"_value",null),Re(this,"_afterMountCallbacks",[]),Re(this,"_state",{destroyedBeforeInitialization:!1,mountingInProgress:null}),Re(this,"release",cp(()=>{const{_releaseLock:t,_state:n,_element:o,_lifecycle:s}=this;n.mountingInProgress?n.mountingInProgress.then(()=>s.unmount({element:o,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}=Gu,{_state:e,_element:t,_lifecycle:n}=this,o=i.get(t)||Promise.resolve(null),s=lp();this._releaseLock=s;const a=o.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(()=>s.promise).catch(l=>{console.error("Semaphore mounting error:",l)}).then(()=>{i.get(t)===a&&i.delete(t)});i.set(t,a)}};Re(ju,"_semaphores",new Map);let yp=ju;/**
|
|
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 vp="$__CKEditorReactContextMetadata";function _p(r,i){return{...i,[vp]:r}}/**
|
|
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 Cp=ti.createContext(null),Lp=r=>!!r&&typeof r=="object"&&"status"in r&&["initializing","initialized","error"].includes(r.status),Ku=r=>i=>Lp(i)&&i.status===r,Tl=Ku("initializing"),Tp=r=>Ku("initialized")(r)&&r.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 Ep=bp("react",{version:"9.5.0",frameworkVersion:ti.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 xp(r){return qu(r.licenseKey)?r:up(r,[Ep])}/**
|
|
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 Mo="Lock from React integration (@ckeditor/ckeditor5-react)";class $u extends ti.Component{constructor(i){super(i),Re(this,"domContainer",ti.createRef()),Re(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(Mo):n.disableReadOnlyMode(Mo)})),!1)}componentDidMount(){Tl(this.context)||this._initLifeCycleSemaphore()}componentDidUpdate(){Tl(this.context)||this._initLifeCycleSemaphore()}componentWillUnmount(){this._unlockLifeCycleSemaphore()}_unlockLifeCycleSemaphore(){this.editorSemaphore&&(this.editorSemaphore.release(),this.editorSemaphore=null)}_initLifeCycleSemaphore(){this._unlockLifeCycleSemaphore(),this.editorSemaphore=new yp(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 ti.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=Tp(this.context)?new Sp(this.context.watchdog):new this.props.editor.EditorWatchdog(this.props.editor,this.props.watchdogConfig),e={current:0};return i.setCreator(async(t,n)=>{var o;const{editorSemaphore:s}=this,{onAfterDestroy:a}=this.props;e.current>0&&a&&((o=s==null?void 0:s.value)!=null&&o.instance)&&a(s.value.instance);const l=await this._createEditor(t,n);return s&&e.current>0&&(s.unsafeSetValue({instance:l,watchdog:i}),setTimeout(()=>{this.props.onReady&&this.props.onReady(i.editor)})),e.current++,l}),i.on("error",(t,{error:n,causesRestart:o})=>{(this.props.onError||console.error)(n,{phase:"runtime",willEditorRestart:o})}),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=_p(t,e)),this.props.editor.create(i,xp(e)).then(n=>{if("disabled"in this.props){/* istanbul ignore else -- @preserve */this.props.disabled&&n.enableReadOnlyMode(Mo)}const o=n.model.document,s=n.editing.view.document;return o.on("change:data",a=>{/* istanbul ignore else -- @preserve */this.props.onChange&&this.props.onChange(a,n)}),s.on("focus",a=>{/* istanbul ignore else -- @preserve */this.props.onFocus&&this.props.onFocus(a,n)}),s.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,o)=>{/* istanbul ignore next -- @preserve */setTimeout(async()=>{try{if(e)return await e.destroy(),n();if(t)return await t.destroy(),n();n()}catch(s){console.error(s),o(s)}})})}_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||""}}}Re($u,"contextType",Cp);class Sp{constructor(i){Re(this,"_contextWatchdog"),Re(this,"_id"),Re(this,"_creator"),this._contextWatchdog=i,this._id=dp()}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:o})=>{n===this._id&&e(null,{error:o,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 Zu(...r){return i=>{r.forEach(e=>{typeof e=="function"?e(i):e!=null&&(e.current=i)})}}const Ap=U.memo(U.forwardRef(({id:r,semaphore:i,rootName:e},t)=>{const n=U.useRef(null);return U.useEffect(()=>{let o,s;return i.runAfterMount(({instance:a})=>{if(!n.current)return;s=a;const{ui:l,model:c}=s,d=c.document.getRoot(e);d&&s.ui.getEditableElement(e)&&s.detachEditable(d),o=l.view.createEditable(e,n.current),l.addEditable(o),a.editing.view.forceRender()}),()=>{if(s&&s.state!=="destroyed"&&n.current){const a=s.model.document.getRoot(e);/* istanbul ignore else -- @preserve */a&&s.detachEditable(a)}}},[i.revision]),ti.createElement("div",{key:i.revision,id:r,ref:Zu(t,n)})}));Ap.displayName="EditorEditable";const Pp=U.forwardRef(({editor:r},i)=>{const e=U.useRef(null);return U.useEffect(()=>{const t=e.current;if(!r||!t)return;const n=r.ui.view.toolbar.element;return t.appendChild(n),()=>{t.contains(n)&&t.removeChild(n)}},[r&&r.id]),ti.createElement("div",{ref:Zu(e,i)})});Pp.displayName="EditorToolbarWrapper";function Ip(r){return r}function Nr(){}function la(r){return r==null||typeof r!="object"&&typeof r!="function"}function ca(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}function da(r){if(la(r))return r;if(Array.isArray(r)||ca(r)||r instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer)return r.slice(0);const i=Object.getPrototypeOf(r),e=i.constructor;if(r instanceof Date||r instanceof Map||r instanceof Set)return new e(r);if(r instanceof RegExp){const t=new e(r);return t.lastIndex=r.lastIndex,t}if(r instanceof DataView)return new e(r.buffer.slice(0));if(r instanceof Error){const t=new e(r.message);return t.stack=r.stack,t.name=r.name,t.cause=r.cause,t}if(typeof File<"u"&&r instanceof File)return new e([r],r.name,{type:r.type,lastModified:r.lastModified});if(typeof r=="object"){const t=Object.create(i);return Object.assign(t,r)}return r}function El(r){if(!r||typeof r!="object")return!1;const i=Object.getPrototypeOf(r);return i===null||i===Object.prototype||Object.getPrototypeOf(i)===null?Object.prototype.toString.call(r)==="[object Object]":!1}function bs(r){return typeof r=="object"&&r!==null}function Dr(r){return Object.getOwnPropertySymbols(r).filter(i=>Object.prototype.propertyIsEnumerable.call(r,i))}function Or(r){return r==null?r===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(r)}const Ju="[object RegExp]",ua="[object String]",ha="[object Number]",ma="[object Boolean]",zr="[object Arguments]",Yu="[object Symbol]",Xu="[object Date]",Qu="[object Map]",eh="[object Set]",th="[object Array]",Rp="[object Function]",ih="[object ArrayBuffer]",Tr="[object Object]",Mp="[object Error]",nh="[object DataView]",rh="[object Uint8Array]",oh="[object Uint8ClampedArray]",sh="[object Uint16Array]",ah="[object Uint32Array]",Bp="[object BigUint64Array]",lh="[object Int8Array]",ch="[object Int16Array]",dh="[object Int32Array]",Vp="[object BigInt64Array]",uh="[object Float32Array]",hh="[object Float64Array]";function Np(r,i){return Ii(r,void 0,r,new Map,i)}function Ii(r,i,e,t=new Map,n=void 0){const o=n==null?void 0:n(r,i,e,t);if(o!=null)return o;if(la(r))return r;if(t.has(r))return t.get(r);if(Array.isArray(r)){const s=new Array(r.length);t.set(r,s);for(let a=0;a<r.length;a++)s[a]=Ii(r[a],a,e,t,n);return Object.hasOwn(r,"index")&&(s.index=r.index),Object.hasOwn(r,"input")&&(s.input=r.input),s}if(r instanceof Date)return new Date(r.getTime());if(r instanceof RegExp){const s=new RegExp(r.source,r.flags);return s.lastIndex=r.lastIndex,s}if(r instanceof Map){const s=new Map;t.set(r,s);for(const[a,l]of r)s.set(a,Ii(l,a,e,t,n));return s}if(r instanceof Set){const s=new Set;t.set(r,s);for(const a of r)s.add(Ii(a,void 0,e,t,n));return s}if(typeof Buffer<"u"&&Buffer.isBuffer(r))return r.subarray();if(ca(r)){const s=new(Object.getPrototypeOf(r)).constructor(r.length);t.set(r,s);for(let a=0;a<r.length;a++)s[a]=Ii(r[a],a,e,t,n);return s}if(r instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer)return r.slice(0);if(r instanceof DataView){const s=new DataView(r.buffer.slice(0),r.byteOffset,r.byteLength);return t.set(r,s),Qt(s,r,e,t,n),s}if(typeof File<"u"&&r instanceof File){const s=new File([r],r.name,{type:r.type});return t.set(r,s),Qt(s,r,e,t,n),s}if(r instanceof Blob){const s=new Blob([r],{type:r.type});return t.set(r,s),Qt(s,r,e,t,n),s}if(r instanceof Error){const s=new r.constructor;return t.set(r,s),s.message=r.message,s.name=r.name,s.stack=r.stack,s.cause=r.cause,Qt(s,r,e,t,n),s}if(typeof r=="object"&&Dp(r)){const s=Object.create(Object.getPrototypeOf(r));return t.set(r,s),Qt(s,r,e,t,n),s}return r}function Qt(r,i,e=r,t,n){const o=[...Object.keys(i),...Dr(i)];for(let s=0;s<o.length;s++){const a=o[s],l=Object.getOwnPropertyDescriptor(r,a);(l==null||l.writable)&&(r[a]=Ii(i[a],a,e,t,n))}}function Dp(r){switch(Or(r)){case zr:case th:case ih:case nh:case ma:case Xu:case uh:case hh:case lh:case ch:case dh:case Qu:case ha:case Tr:case Ju:case eh:case ua:case Yu:case rh:case oh:case sh:case ah:return!0;default:return!1}}function mh(r,i){return r===i||Number.isNaN(r)&&Number.isNaN(i)}function gh(r,i,e){return ln(r,i,void 0,void 0,void 0,void 0,e)}function ln(r,i,e,t,n,o,s){const a=s(r,i,e,t,n,o);if(a!==void 0)return a;if(typeof r==typeof i)switch(typeof r){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return r===i;case"number":return r===i||Object.is(r,i);case"function":return r===i;case"object":return hn(r,i,o,s)}return hn(r,i,o,s)}function hn(r,i,e,t){if(Object.is(r,i))return!0;let n=Or(r),o=Or(i);if(n===zr&&(n=Tr),o===zr&&(o=Tr),n!==o)return!1;switch(n){case ua:return r.toString()===i.toString();case ha:{const l=r.valueOf(),c=i.valueOf();return mh(l,c)}case ma:case Xu:case Yu:return Object.is(r.valueOf(),i.valueOf());case Ju:return r.source===i.source&&r.flags===i.flags;case Rp:return r===i}e=e??new Map;const s=e.get(r),a=e.get(i);if(s!=null&&a!=null)return s===i;e.set(r,i),e.set(i,r);try{switch(n){case Qu:{if(r.size!==i.size)return!1;for(const[l,c]of r.entries())if(!i.has(l)||!ln(c,i.get(l),l,r,i,e,t))return!1;return!0}case eh:{if(r.size!==i.size)return!1;const l=Array.from(r.values()),c=Array.from(i.values());for(let d=0;d<l.length;d++){const h=l[d],m=c.findIndex(g=>ln(h,g,void 0,r,i,e,t));if(m===-1)return!1;c.splice(m,1)}return!0}case th:case rh:case oh:case sh:case ah:case Bp:case lh:case ch:case dh:case Vp:case uh:case hh:{if(typeof Buffer<"u"&&Buffer.isBuffer(r)!==Buffer.isBuffer(i)||r.length!==i.length)return!1;for(let l=0;l<r.length;l++)if(!ln(r[l],i[l],l,r,i,e,t))return!1;return!0}case ih:return r.byteLength!==i.byteLength?!1:hn(new Uint8Array(r),new Uint8Array(i),e,t);case nh:return r.byteLength!==i.byteLength||r.byteOffset!==i.byteOffset?!1:hn(new Uint8Array(r),new Uint8Array(i),e,t);case Mp:return r.name===i.name&&r.message===i.message;case Tr:{if(!(hn(r.constructor,i.constructor,e,t)||El(r)&&El(i)))return!1;const c=[...Object.keys(r),...Dr(r)],d=[...Object.keys(i),...Dr(i)];if(c.length!==d.length)return!1;for(let h=0;h<c.length;h++){const m=c[h],g=r[m];if(!Object.hasOwn(i,m))return!1;const f=i[m];if(!ln(g,f,m,r,i,e,t))return!1}return!0}default:return!1}}finally{e.delete(r),e.delete(i)}}function Fr(r,i){return gh(r,i,Nr)}function Ur(r){return typeof r=="function"}function Op(r){return Number.isSafeInteger(r)&&r>=0}function zp(r){return r!=null&&typeof r!="function"&&Op(r.length)}function fh(r){switch(typeof r){case"number":case"symbol":return!1;case"string":return r.includes(".")||r.includes("[")||r.includes("]")}}function ph(r){return Object.is(r,-0)?"-0":r.toString()}function ga(r){const i=[],e=r.length;if(e===0)return i;let t=0,n="",o="",s=!1;for(r.charCodeAt(0)===46&&(i.push(""),t++);t<e;){const a=r[t];o?a==="\\"&&t+1<e?(t++,n+=r[t]):a===o?o="":n+=a:s?a==='"'||a==="'"?o=a:a==="]"?(s=!1,i.push(n),n=""):n+=a:a==="["?(s=!0,n&&(i.push(n),n="")):a==="."?n&&(i.push(n),n=""):n+=a,t++}return n&&i.push(n),i}function Wt(r,i,e){if(r==null)return e;switch(typeof i){case"string":{const t=r[i];return t===void 0?fh(i)?Wt(r,ga(i),e):e:t}case"number":case"symbol":{typeof i=="number"&&(i=ph(i));const t=r[i];return t===void 0?e:t}default:{if(Array.isArray(i))return Fp(r,i,e);Object.is(i==null?void 0:i.valueOf(),-0)?i="-0":i=String(i);const t=r[i];return t===void 0?e:t}}}function Fp(r,i,e){if(i.length===0)return e;let t=r;for(let n=0;n<i.length;n++){if(t==null)return e;t=t[i[n]]}return t===void 0?e:t}function Up(r){return function(i){return Wt(i,r)}}function rt(r){return r!==null&&(typeof r=="object"||typeof r=="function")}function bo(r,i){return Np(r,(e,t,n,o)=>{const s=i==null?void 0:i(e,t,n,o);if(s!=null)return s;if(typeof r=="object")switch(Object.prototype.toString.call(r)){case ha:case ua:case ma:{const a=new r.constructor(r==null?void 0:r.valueOf());return Qt(a,r),a}case zr:{const a={};return Qt(a,r),a.length=r.length,a[Symbol.iterator]=r[Symbol.iterator],a}default:return}})}function Fe(r){return bo(r)}const Hp=/^(?:0|[1-9]\d*)$/;function Wp(r,i=Number.MAX_SAFE_INTEGER){switch(typeof r){case"number":return Number.isInteger(r)&&r>=0&&r<i;case"symbol":return!1;case"string":return Hp.test(r)}}function xl(r){return r!==null&&typeof r=="object"&&Or(r)==="[object Arguments]"}function qp(r){return typeof r=="symbol"||r instanceof Symbol}function jp(r){return qp(r)?NaN:Number(r)}function Gp(r){return r?(r=jp(r),r===1/0||r===-1/0?(r<0?-1:1)*Number.MAX_VALUE:r===r?r:0):r===0?r:0}function Kp(r){const i=Gp(r),e=i%1;return e?i-e:i}function Sl(r){return typeof r=="string"||r instanceof String}function bh(r,i,e){const t=Array.isArray(i)?i:typeof i=="string"?ga(i):[i];let n=r;for(let s=0;s<t.length-1;s++){const a=t[s],l=t[s+1];n[a]==null&&(n[a]=Wp(l)?[]:{}),n=n[a]}const o=t[t.length-1];return n[o]=e,r}function $p(r,i,{signal:e,edges:t}={}){let n,o=null;const s=t!=null&&t.includes("leading"),a=t==null||t.includes("trailing"),l=()=>{o!==null&&(r.apply(n,o),n=void 0,o=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,o=null},f=()=>{m(),l()},p=function(...w){if(e!=null&&e.aborted)return;n=this,o=w;const y=d==null;h(),s&&y&&l()};return p.schedule=h,p.cancel=g,p.flush=f,e==null||e.addEventListener("abort",g,{once:!0}),p}function ot(r,i=0,e={}){typeof e!="object"&&(e={});const{signal:t,leading:n=!1,trailing:o=!0,maxWait:s}=e,a=Array(2);n&&(a[0]="leading"),o&&(a[1]="trailing");let l,c=null;const d=$p(function(...g){l=r.apply(this,g),c=null},i,{signal:t,edges:a}),h=function(...g){if(s!=null){if(c===null)c=Date.now();else if(Date.now()-c>=s)return l=r.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 En(r,i=0,e={}){typeof e!="object"&&(e={});const{leading:t=!0,trailing:n=!0,signal:o}=e;return ot(r,i,{leading:t,trailing:n,signal:o,maxWait:i})}function wh(r){if(r==null)return"";if(Array.isArray(r))return r.map(wh).join(",");const i=String(r);return i==="0"&&Object.is(Number(r),-0)?"-0":i}function Zp(r){return typeof Buffer<"u"&&Buffer.isBuffer(r)}function Jp(r){const i=r==null?void 0:r.constructor,e=typeof i=="function"?i.prototype:Object.prototype;return r===e}function kh(r){return ca(r)}function Yp(r,i){if(r=Kp(r),r<1||!Number.isSafeInteger(r))return[];const e=new Array(r);for(let t=0;t<r;t++)e[t]=typeof i=="function"?i(t):t;return e}function Xp(r){if(r==null)return[];switch(typeof r){case"object":case"function":return zp(r)?eb(r):Jp(r)?Qp(r):Hr(r);default:return Hr(Object(r))}}function Hr(r){const i=[];for(const e in r)i.push(e);return i}function Qp(r){return Hr(r).filter(e=>e!=="constructor")}function eb(r){const i=Yp(r.length,t=>`${t}`),e=new Set(i);return Zp(r)&&(e.add("offset"),e.add("parent")),kh(r)&&(e.add("buffer"),e.add("byteLength"),e.add("byteOffset")),[...i,...Hr(r).filter(t=>!e.has(t))]}function yh(r,...i){for(let e=0;e<i.length;e++)tb(r,i[e]);return r}function tb(r,i){const e=Xp(i);for(let t=0;t<e.length;t++){const n=e[t];mh(r[n],i[n])||(r[n]=i[n])}}function Al(r,i){const e={},t=Object.keys(r);for(let n=0;n<t.length;n++){const o=t[n],s=r[o];e[o]=i(s,o,r)}return e}function ib(r,i){switch(i=i??Ip,typeof i){case"string":case"symbol":case"number":case"object":return Al(r,Up(i));case"function":return Al(r,i)}}function mt(r){var e;if(typeof r!="object"||r==null)return!1;if(Object.getPrototypeOf(r)===null)return!0;if(Object.prototype.toString.call(r)!=="[object Object]"){const t=r[Symbol.toStringTag];return t==null||!((e=Object.getOwnPropertyDescriptor(r,Symbol.toStringTag))!=null&&e.writable)?!1:r.toString()===`[object ${t}]`}let i=r;for(;Object.getPrototypeOf(i)!==null;)i=Object.getPrototypeOf(i);return Object.getPrototypeOf(r)===i}function nb(r,...i){const e=i.slice(0,-1),t=i[i.length-1];let n=r;for(let o=0;o<e.length;o++){const s=e[o];n=Er(n,s,t,new Map)}return n}function Er(r,i,e,t){if(la(r)&&(r=Object(r)),i==null||typeof i!="object")return r;if(t.has(i))return da(t.get(i));if(t.set(i,r),Array.isArray(i)){i=i.slice();for(let o=0;o<i.length;o++)i[o]=i[o]??void 0}const n=[...Object.keys(i),...Dr(i)];for(let o=0;o<n.length;o++){const s=n[o];let a=i[s],l=r[s];if(xl(a)&&(a={...a}),xl(l)&&(l={...l}),typeof Buffer<"u"&&Buffer.isBuffer(a)&&(a=Fe(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,s,r,i,t);c!=null?r[s]=c:Array.isArray(a)||bs(l)&&bs(a)?r[s]=Er(l,a,e,t):l==null&&mt(a)?r[s]=Er({},a,e,t):l==null&&kh(a)?r[s]=Fe(a):(l===void 0||a!==void 0)&&(r[s]=a)}return r}function fa(r,...i){return nb(r,...i,Nr)}function rb(r,i){if(r==null)return!0;switch(typeof i){case"symbol":case"number":case"object":{if(Array.isArray(i))return Pl(r,i);if(typeof i=="number"?i=ph(i):typeof i=="object"&&(Object.is(i==null?void 0:i.valueOf(),-0)?i="-0":i=String(i)),(r==null?void 0:r[i])===void 0)return!0;try{return delete r[i],!0}catch{return!1}}case"string":{if((r==null?void 0:r[i])===void 0&&fh(i))return Pl(r,ga(i));try{return delete r[i],!0}catch{return!1}}}}function Pl(r,i){const e=Wt(r,i.slice(0,-1),r),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 qt(r){return bs(r)&&r.nodeType===1&&!mt(r)}function Il(r,i){if(!Number.isInteger(r)||r<0)throw new Error("n must be a non-negative integer.");let e=0;return(...t)=>{if(++e>=r)return i(...t)}}function ws(r,i,e=Nr){return typeof e!="function"&&(e=Nr),gh(r,i,(...t)=>{const n=e(...t);if(n!==void 0)return!!n;if(r instanceof Map&&i instanceof Map||r instanceof Set&&i instanceof Set)return ws(Array.from(r),Array.from(i),Il(2,e))})}function ob(r){return r.substring(0,1).toUpperCase()+r.substring(1)}function sb(r){return ob(wh(r))}/**
|
|
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 ks;try{ks={window,document}}catch{/* istanbul ignore next -- @preserve */ks={window:{},document:{}}}var T=ks;function ab(){try{return navigator.userAgent.toLowerCase()}catch{return""}}const Zt=ab(),A={isMac:vh(Zt),isWindows:lb(Zt),isGecko:cb(Zt),isSafari:db(Zt),isiOS:ub(Zt),isAndroid:hb(Zt),isBlink:mb(Zt),get isMediaForcedColors(){return gb()}};function vh(r){return r.indexOf("macintosh")>-1}function lb(r){return r.indexOf("windows")>-1}function cb(r){return!!r.match(/gecko\/\d+/)}function db(r){return r.indexOf(" applewebkit/")>-1&&r.indexOf("chrome")===-1}function ub(r){return!!r.match(/iphone|ipad/i)||vh(r)&&navigator.maxTouchPoints>0}function hb(r){return r.indexOf("android")>-1}function mb(r){return r.indexOf("chrome/")>-1&&r.indexOf("edge/")<0}function gb(){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 _h(r,i,e,t){e=e||function(l,c){return l===c};const n=Array.isArray(r)?r:Array.prototype.slice.call(r),o=Array.isArray(i)?i:Array.prototype.slice.call(i),s=fb(n,o,e);return t?bb(s,o.length):pb(o,s)}function fb(r,i,e){const t=Rl(r,i,e);if(t===-1)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=Ml(r,t),o=Ml(i,t),s=Rl(n,o,e),a=r.length-s,l=i.length-s;return{firstIndex:t,lastIndexOld:a,lastIndexNew:l}}function Rl(r,i,e){for(let t=0;t<Math.max(r.length,i.length);t++)if(r[t]===void 0||i[t]===void 0||!e(r[t],i[t]))return t;return-1}function Ml(r,i){return r.slice(i).reverse()}function pb(r,i){const e=[],{firstIndex:t,lastIndexOld:n,lastIndexNew:o}=i;return o-t>0&&e.push({index:t,type:"insert",values:r.slice(t,o)}),n-t>0&&e.push({index:t+(o-t),type:"delete",howMany:n-t}),e}function bb(r,i){const{firstIndex:e,lastIndexOld:t,lastIndexNew:n}=r;if(e===-1)return Array(i).fill("equal");let o=[];return e>0&&(o=o.concat(Array(e).fill("equal"))),n-e>0&&(o=o.concat(Array(n-e).fill("insert"))),t-e>0&&(o=o.concat(Array(t-e).fill("delete"))),n<i&&(o=o.concat(Array(i-n).fill("equal"))),o}function Ni(r,i,e){e=e||function(p,w){return p===w};const t=r.length,n=i.length;if(t>200||n>200||t+n>300)return Ni.fastDiff(r,i,e,!0);let o,s;if(n<t){const p=r;r=i,i=p,o="delete",s="insert"}else o="insert",s="delete";const a=r.length,l=i.length,c=l-a,d={},h={};function m(p){const w=(h[p-1]!==void 0?h[p-1]:-1)+1,y=h[p+1]!==void 0?h[p+1]:-1,C=w>y?-1:1;d[p+C]&&(d[p]=d[p+C].slice(0)),d[p]||(d[p]=[]),d[p].push(w>y?o:s);let R=Math.max(w,y),z=R-p;for(;z<a&&R<l&&e(r[z],i[R]);)z++,R++,d[p].push("equal");return R}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)}Ni.fastDiff=_h;/**
|
|
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 Bl(){return function r(){r.called=!0}}class Et{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=Bl(),this.off=Bl()}}/**
|
|
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 Le=new Array(256).fill("").map((r,i)=>("0"+i.toString(16)).slice(-2));function Ve(){const[r,i,e,t]=crypto.getRandomValues(new Uint32Array(4));return"e"+Le[r>>0&255]+Le[r>>8&255]+Le[r>>16&255]+Le[r>>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]}/**
|
|
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 Ot={get(r="normal"){return typeof r!="number"?this[r]||this.normal:r},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};function Ch(r,i){const e=Ot.get(i.priority);let t=0,n=r.length;for(;t<n;){const o=t+n>>1;Ot.get(r[o].priority)<e?n=o:t=o+1}r.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 wb="https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html";class b extends Error{constructor(e,t,n){super(yb(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 b(e.message,t);throw n.stack=e.stack,n}}function W(r,i){console.warn(...Th(r,i))}function kb(r,i){console.error(...Th(r,i))}function Lh(r){return`
|
|
81
|
+
Read more: ${wb}#error-${r}`}function yb(r,i){const e=new WeakSet,n=i?` ${JSON.stringify(i,(s,a)=>{if(typeof a=="object"&&a!==null){if(e.has(a))return`[object ${a.constructor.name}]`;e.add(a)}return a})}`:"",o=Lh(r);return r+n+o}function Th(r,i){const e=Lh(r);return i?[r,i,e]:[r,e]}const vb="45.2.2",_b=new Date(2025,8,3);/* istanbul ignore next -- @preserve */if(globalThis.CKEDITOR_VERSION)throw new b("ckeditor-duplicated-modules",null);globalThis.CKEDITOR_VERSION=vb;const Ti=Symbol("listeningTo"),ys=Symbol("emitterId"),wt=Symbol("delegations"),Eh=j(Object);function j(r){if(!r)return Eh;class i extends r{on(t,n,o){this.listenTo(this,t,n,o)}once(t,n,o){let s=!1;const a=(l,...c)=>{s||(s=!0,l.off(),n.call(this,l,...c))};this.listenTo(this,t,a,o)}off(t,n){this.stopListening(this,t,n)}listenTo(t,n,o,s={}){let a,l;this[Ti]||(this[Ti]={});const c=this[Ti];Bo(t)||xh(t);const d=Bo(t);(a=c[d])||(a=c[d]={emitter:t,callbacks:{}}),(l=a.callbacks[n])||(l=a.callbacks[n]=[]),l.push(o),xb(this,t,n,o,s)}stopListening(t,n,o){const s=this[Ti];let a=t&&Bo(t);const l=s&&a?s[a]:void 0,c=l&&n?l.callbacks[n]:void 0;if(!(!s||t&&!l||n&&!c))if(o)Vo(this,t,n,o),c.indexOf(o)!==-1&&(c.length===1?delete l.callbacks[n]:Vo(this,t,n,o));else if(c){for(;o=c.pop();)Vo(this,t,n,o);delete l.callbacks[n]}else if(l){for(n in l.callbacks)this.stopListening(t,n);delete s[a]}else{for(a in s)this.stopListening(s[a].emitter);delete this[Ti]}}fire(t,...n){try{const o=t instanceof Et?t:new Et(this,t),s=o.name;let a=Eb(this,s);if(o.path.push(this),a){a=a.slice();for(let c=0;c<a.length;c++){const d=a[c].callback;if(d.call(this,o,...n),o.off.called&&(delete o.off.called,this._removeEventListener(s,d)),o.stop.called)break}}const l=this[wt];if(l){const c=l.get(s),d=l.get("*");c&&Vl(c,o,n),d&&Vl(d,o,n)}return o.return}catch(o){/* istanbul ignore next -- @preserve */b.rethrowUnexpectedError(o,this)}}delegate(...t){return{to:(n,o)=>{this[wt]||(this[wt]=new Map),t.forEach(s=>{const a=this[wt].get(s);a?a.set(n,o):this[wt].set(s,new Map([[n,o]]))})}}}stopDelegating(t,n){if(this[wt])if(!t)this[wt].clear();else if(!n)this[wt].delete(t);else{const o=this[wt].get(t);o&&o.delete(n)}}_addEventListener(t,n,o){Tb(this,t);const s=vs(this,t),a=Ot.get(o.priority),l={callback:n,priority:a};for(const c of s)Ch(c,l)}_removeEventListener(t,n){const o=vs(this,t);for(const s of o)for(let a=0;a<s.length;a++)s[a].callback==n&&(s.splice(a,1),a--)}}return i}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach(r=>{j[r]=Eh.prototype[r]});function Cb(r,i){const e=r[Ti];return e&&e[i]?e[i].emitter:null}function xh(r,i){r[ys]||(r[ys]=i||Ve())}function Bo(r){return r[ys]}function Sh(r){return r._events||Object.defineProperty(r,"_events",{value:{}}),r._events}function Lb(){return{callbacks:[],childEvents:[]}}function Tb(r,i){const e=Sh(r);if(e[i])return;let t=i,n=null;const o=[];for(;t!==""&&!e[t];)e[t]=Lb(),o.push(e[t]),n&&e[t].childEvents.push(n),n=t,t=t.substr(0,t.lastIndexOf(":"));if(t!==""){for(const s of o)s.callbacks=e[t].callbacks.slice();e[t].childEvents.push(n)}}function vs(r,i){const e=Sh(r)[i];if(!e)return[];let t=[e.callbacks];for(let n=0;n<e.childEvents.length;n++){const o=vs(r,e.childEvents[n]);t=t.concat(o)}return t}function Eb(r,i){if(!r._events)return null;let e=i;do{const t=r._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 Vl(r,i,e){for(let[t,n]of r){n?typeof n=="function"&&(n=n(i.name)):n=i.name;const o=new Et(i.source,n);o.path=[...i.path],t.fire(o,...e)}}function xb(r,i,e,t,n){i._addEventListener?i._addEventListener(e,t,n):r._addEventListener.call(i,e,t,n)}function Vo(r,i,e,t){i._removeEventListener?i._removeEventListener(e,t):r._removeEventListener.call(i,e,t)}const mn=Symbol("observableProperties"),xn=Symbol("boundObservables"),gn=Symbol("boundProperties"),Jt=Symbol("decoratedMethods"),Nl=Symbol("decoratedOriginal"),Ah=Z(j());function Z(r){var e,t,n,o,s;if(!r)return Ah;class i extends(s=r,o=mn,n=Jt,t=gn,e=xn,s){constructor(){super(...arguments);u(this,o);u(this,n);u(this,t);u(this,e)}set(c,d){if(rt(c)){Object.keys(c).forEach(m=>{this.set(m,c[m])},this);return}No(this);const h=this[mn];if(c in this&&!h.has(c))throw new b("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||!Dl(c))throw new b("observable-bind-wrong-properties",this);if(new Set(c).size!==c.length)throw new b("observable-bind-duplicate-properties",this);No(this);const d=this[gn];c.forEach(m=>{if(d.has(m))throw new b("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:Sb,toMany:Ab,_observable:this,_bindProperties:c,_to:[],_bindings:h}}unbind(...c){if(!this[mn])return;const d=this[gn],h=this[xn];if(c.length){if(!Dl(c))throw new b("observable-unbind-wrong-properties",this);c.forEach(m=>{const g=d.get(m);g&&(g.to.forEach(([f,p])=>{const w=h.get(f),y=w[p];y.delete(g),y.size||delete w[p],Object.keys(w).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){No(this);const d=this[c];if(!d)throw new b("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][Nl]=d,this[Jt]||(this[Jt]=[]),this[Jt].push(c)}stopListening(c,d,h){if(!c&&this[Jt]){for(const m of this[Jt])this[m]=this[m][Nl];delete this[Jt]}super.stopListening(c,d,h)}}return i}["set","bind","unbind","decorate","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach(r=>{Z[r]=Ah.prototype[r]});function No(r){r[mn]||(Object.defineProperty(r,mn,{value:new Map}),Object.defineProperty(r,xn,{value:new Map}),Object.defineProperty(r,gn,{value:new Map}))}function Sb(...r){const i=Ib(...r),e=Array.from(this._bindings.keys()),t=e.length;if(!i.callback&&i.to.length>1)throw new b("observable-bind-to-no-callback",this);if(t>1&&i.callback)throw new b("observable-bind-to-extra-callback",this);i.to.forEach(n=>{if(n.properties.length&&n.properties.length!==t)throw new b("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),Bb(this._observable,this._to),Mb(this),this._bindProperties.forEach(n=>{Ph(this._observable,n)})}function Ab(r,i,e){if(this._bindings.size>1)throw new b("observable-bind-to-many-not-one-binding",this);this.to(...Pb(r,i),e)}function Pb(r,i){const e=r.map(t=>[t,i]);return Array.prototype.concat.apply([],e)}function Dl(r){return r.every(i=>typeof i=="string")}function Ib(...r){if(!r.length)throw new b("observable-bind-to-parse-error",null);const i={to:[]};let e;return typeof r[r.length-1]=="function"&&(i.callback=r.pop()),r.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 b("observable-bind-to-parse-error",null)}),i}function Rb(r,i,e,t){const n=r[xn],o=n.get(e),s=o||{};s[t]||(s[t]=new Set),s[t].add(i),o||n.set(e,s)}function Mb(r){let i;r._bindings.forEach((e,t)=>{r._to.forEach(n=>{i=n.properties[e.callback?0:r._bindProperties.indexOf(t)],e.to.push([n.observable,i]),Rb(r._observable,e,n.observable,i)})})}function Ph(r,i){const t=r[gn].get(i);let n;t.callback?n=t.callback.apply(r,t.to.map(o=>o[0][o[1]])):(n=t.to[0],n=n[0][n[1]]),Object.prototype.hasOwnProperty.call(r,i)?r[i]=n:r.set(i,n)}function Bb(r,i){i.forEach(e=>{const t=r[xn];let n;t.get(e.observable)||r.listenTo(e.observable,"change",(o,s)=>{n=t.get(e.observable)[s],n&&n.forEach(a=>{Ph(r,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 Ih{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 _s(r){let i=0;for(const e of r)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(r,i){const e=Math.min(r.length,i.length);for(let t=0;t<e;t++)if(r[t]!=i[t])return t;return r.length==i.length?"same":r.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 Ue(r){return!!(r&&r[Symbol.iterator])}function De(r,i,e={},t=[]){const n=e&&e.xmlns,o=n?r.createElementNS(n,i):r.createElement(i);for(const s in e)o.setAttribute(s,e[s]);(Sl(t)||!Ue(t))&&(t=[t]);for(let s of t)Sl(s)&&(s=r.createTextNode(s)),o.appendChild(s);return o}class Rh{constructor(i,e){u(this,"_config");this._config=Object.create(null),e&&this.define(Ol(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(mt(e)){this._setObjectToTarget(i,e,n);return}const o=e.split(".");e=o.pop();for(const s of o)mt(i[s])||(i[s]=Object.create(null)),i=i[s];if(mt(t)){mt(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(!mt(i[n])){i=null;break}i=i[n]}return i?Ol(i[e]):void 0}_setObjectToTarget(i,e,t){Object.keys(e).forEach(n=>{this._setToTarget(i,n,e[n],t)})}}function Ol(r){return bo(r,Vb)}function Vb(r){return qt(r)||typeof r=="function"?r: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 jt(r){if(r){if(r.defaultView)return r instanceof r.defaultView.Document;if(r.ownerDocument&&r.ownerDocument.defaultView)return r instanceof r.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 Wr(r){const i=Object.prototype.toString.apply(r);return i=="[object Window]"||i=="[object global]"}const Mh=Pe(j());function Pe(r){if(!r)return Mh;class i extends r{listenTo(t,n,o,s={}){if(jt(t)||Wr(t)||t instanceof T.window.EventTarget){const a={capture:!!s.useCapture,passive:!!s.usePassive},l=this._getProxyEmitter(t,a)||new Nb(t,a);this.listenTo(l,n,o,s)}else super.listenTo(t,n,o,s)}stopListening(t,n,o){if(jt(t)||Wr(t)||t instanceof T.window.EventTarget){const s=this._getAllProxyEmitters(t);for(const a of s)this.stopListening(a,n,o)}else super.stopListening(t,n,o)}_getProxyEmitter(t,n){return Cb(this,Bh(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(r=>{Pe[r]=Mh.prototype[r]});class Nb extends j(){constructor(e,t){super();u(this,"_domNode");u(this,"_options");u(this,"_domListeners");xh(this,Bh(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),j().prototype._addEventListener.call(this,e,t,n)}_removeEventListener(e,t){j().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 Db(r){return r["data-ck-expando"]||(r["data-ck-expando"]=Ve())}function Bh(r,i){let e=Db(r);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 Ob(r){const i=[];let e=r;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 zb(r){return r instanceof HTMLTextAreaElement?r.value:r.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 Vh(r){const i=r.ownerDocument.defaultView.getComputedStyle(r);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 Nh(r){if(!r.target)return null;const i=r.target.ownerDocument,e=r.clientX,t=r.clientY;let n=null;return i.caretRangeFromPoint&&i.caretRangeFromPoint(e,t)?n=i.caretRangeFromPoint(e,t):r.rangeParent&&(n=i.createRange(),n.setStart(r.rangeParent,r.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 ie(r){return Object.prototype.toString.call(r)=="[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 wo(r){return Object.prototype.toString.apply(r)=="[object Range]"}function Dh(r){return!r||!r.parentNode||r.offsetParent===T.document.body?null:r.offsetParent}const Oh=["top","right","bottom","left","width","height"];class B{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=wo(i);if(Object.defineProperty(this,"_source",{value:i._source||i,writable:!0,enumerable:!1}),Cs(i)||e)if(e){const t=B.getDomRangeRects(i);ir(this,B.getBoundingRect(t))}else ir(this,i.getBoundingClientRect());else if(Wr(i)){const{innerWidth:t,innerHeight:n}=i;ir(this,{top:0,right:t,bottom:n,left:0,width:t,height:n})}else ir(this,i)}clone(){return new B(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 B(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(zl(i))return e;let t=i,n=i.parentNode||i.commonAncestorContainer,o;for(;n&&!zl(n);){const s=Fb(n)==="visible";t instanceof HTMLElement&&Fl(t)==="absolute"&&(o=t);const a=Fl(n);if(s||o&&(a==="relative"&&s||a!=="relative")){t=n,n=n.parentNode;continue}const l=new B(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 Oh)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(Cs(t._source)){const n=Dh(t._source);n&&Ub(t,n)}return t}excludeScrollbarsAndBorders(){const i=this._source;let e,t,n;if(Wr(i))e=i.innerWidth-i.document.documentElement.clientWidth,t=i.innerHeight-i.document.documentElement.clientHeight,n=i.getComputedStyle(i.document.documentElement).direction;else{const o=Vh(i);e=i.offsetWidth-i.clientWidth-o.left-o.right,t=i.offsetHeight-i.clientHeight-o.top-o.bottom,n=i.ownerDocument.defaultView.getComputedStyle(i).direction,this.left+=o.left,this.top+=o.top,this.right-=o.right,this.bottom-=o.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 B(n));else{let n=i.startContainer;ie(n)&&(n=n.parentNode);const o=new B(n.getBoundingClientRect());o.right=o.left,o.width=0,e.push(o)}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 B(e))}}function ir(r,i){for(const e of Oh)r[e]=i[e]}function zl(r){return Cs(r)?r===r.ownerDocument.body:!1}function Cs(r){return r!==null&&typeof r=="object"&&r.nodeType===1&&typeof r.getBoundingClientRect=="function"}function Fl(r){return r instanceof HTMLElement?r.ownerDocument.defaultView.getComputedStyle(r).position:"static"}function Fb(r){return r instanceof HTMLElement?r.ownerDocument.defaultView.getComputedStyle(r).overflow:"visible"}function Ub(r,i){const e=new B(i),t=Vh(i);let n=0,o=0;n-=e.left,o-=e.top,n+=i.scrollLeft,o+=i.scrollTop,n-=t.left,o-=t.top,r.moveBy(n,o)}const te=class te{constructor(i,e){u(this,"_element");u(this,"_callback");te._observerInstance||te._createObserver(),this._element=i,this._callback=e,te._addElementCallback(i,e),te._observerInstance.observe(i)}get element(){return this._element}destroy(){te._deleteElementCallback(this._element,this._callback)}static _addElementCallback(i,e){te._elementCallbacks||(te._elementCallbacks=new Map);let t=te._elementCallbacks.get(i);t||(t=new Set,te._elementCallbacks.set(i,t)),t.add(e)}static _deleteElementCallback(i,e){const t=te._getElementCallbacks(i);t&&(t.delete(e),t.size||(te._elementCallbacks.delete(i),te._observerInstance.unobserve(i))),te._elementCallbacks&&!te._elementCallbacks.size&&(te._observerInstance=null,te._elementCallbacks=null)}static _getElementCallbacks(i){return te._elementCallbacks?te._elementCallbacks.get(i):null}static _createObserver(){te._observerInstance=new T.window.ResizeObserver(i=>{for(const e of i){const t=te._getElementCallbacks(e.target);if(t)for(const n of t)n(e)}})}};u(te,"_observerInstance",null),u(te,"_elementCallbacks",null);let Sn=te;/**
|
|
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 Ul(r,i){r instanceof HTMLTextAreaElement&&(r.value=i),r.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 Hi(r){return i=>i+r}/**
|
|
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 Ri(r){let i=0;for(;r.previousSibling;)r=r.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 zh(r,i,e){r.insertBefore(e,r.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 fn(r){return r&&r.nodeType===Node.COMMENT_NODE}function Hb(r){try{T.document.createAttribute(r)}catch{return!1}return!0}function xt(r){return r?ie(r)?xt(r.parentElement):r.getClientRects?!!r.getClientRects().length:!1:!1}function pa({element:r,target:i,positions:e,limiter:t,fitInViewport:n,viewportOffsetConfig:o}){Ur(i)&&(i=i()),Ur(t)&&(t=t());const s=Dh(r),a=Wb(o),l=new B(r),c=Hl(i,a);let d;if(!c||!a.getIntersection(c))return null;const h={targetRect:c,elementRect:l,positionedElementAncestor:s,viewportRect:a};if(!t&&!n)d=new Fh(e[0],h);else{if(t){const m=Hl(t,a);m&&(h.limiterRect=m)}d=qb(e,h)}return d}function Hl(r,i){const e=new B(r).getVisible();return e?e.getIntersection(i):null}function Wb(r){r=Object.assign({top:0,bottom:0,left:0,right:0},r);const i=new B(T.window);return i.top+=r.top,i.height-=r.top,i.bottom-=r.bottom,i.height-=r.bottom,i}function qb(r,i){const{elementRect:e}=i,t=e.getArea(),n=r.map(a=>new Fh(a,i)).filter(a=>!!a.name);let o=0,s=null;for(const a of n){const{limiterIntersectionArea:l,viewportIntersectionArea:c}=a;if(l===t)return a;const d=c**2+l**2;d>o&&(o=d,s=a)}return s}class Fh{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:o,name:s,config:a}=t;this.name=s,this.config=a,this._positioningFunctionCoordinates={left:n,top:o},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 Wl(r){const i=r.parentNode;i&&i.removeChild(r)}function xr(){const r=T.window.visualViewport;if(!r||!(A.isiOS||A.isSafari))return{left:0,top:0};const i=Math.max(Math.round(r.offsetLeft),0),e=Math.max(Math.round(r.offsetTop),0);return{left:i,top:e}}function jb({target:r,viewportOffset:i=0,ancestorOffset:e=0,alignToTop:t,forceScroll:n}){const o=ba(r);let s=o,a=null;for(i=$b(i);s;){let l;s==o?l=ql(r):l=ql(a),Kb({parent:l,getRect:()=>Do(r,s),alignToTop:t,ancestorOffset:e,forceScroll:n});let c=Do(r,s);const d=Do(l,s);if(c.height>d.height){const h=c.getIntersection(d);h&&(c=h)}if(Gb({window:s,rect:c,viewportOffset:i,alignToTop:t,forceScroll:n}),s.parent!=s){if(a=s.frameElement,s=s.parent,!a)return}else s=null}}function Gb({window:r,rect:i,alignToTop:e,forceScroll:t,viewportOffset:n}){const o=i.clone().moveBy(0,n.bottom),s=i.clone().moveBy(0,-n.top),a=new B(r).excludeScrollbarsAndBorders(),l=[s,o],c=e&&t,d=l.every(p=>a.contains(p));let{scrollX:h,scrollY:m}=r;const g=h,f=m;c?m-=a.top-i.top+n.top:d||(Hh(s,a)?m-=a.top-i.top+n.top:Uh(o,a)&&(e?m+=i.top-a.top-n.top:m+=i.bottom-a.bottom+n.bottom)),d||(Wh(i,a)?h-=a.left-i.left+n.left:qh(i,a)&&(h+=i.right-a.right+n.right)),(h!=g||m!==f)&&r.scrollTo(h,m)}function Kb({parent:r,getRect:i,alignToTop:e,forceScroll:t,ancestorOffset:n=0,limiterElement:o}){const s=ba(r),a=e&&t;let l,c,d;const h=o||s.document.body;for(;r!=h;)c=i(),l=new B(r).excludeScrollbarsAndBorders(),d=l.contains(c),a?r.scrollTop-=l.top-c.top+n:d||(Hh(c,l)?r.scrollTop-=l.top-c.top+n:Uh(c,l)&&(e?r.scrollTop+=c.top-l.top-n:r.scrollTop+=c.bottom-l.bottom+n)),d||(Wh(c,l)?r.scrollLeft-=l.left-c.left+n:qh(c,l)&&(r.scrollLeft+=c.right-l.right+n)),r=r.parentNode}function Uh(r,i){return r.bottom>i.bottom}function Hh(r,i){return r.top<i.top}function Wh(r,i){return r.left<i.left}function qh(r,i){return r.right>i.right}function ba(r){return wo(r)?r.startContainer.ownerDocument.defaultView:r.ownerDocument.defaultView}function ql(r){if(wo(r)){let i=r.commonAncestorContainer;return ie(i)&&(i=i.parentNode),i}else return r.parentNode}function Do(r,i){const e=ba(r),t=new B(r);if(e===i)return t;{let n=e;for(;n!=i;){const o=n.frameElement,s=new B(o).excludeScrollbarsAndBorders();t.moveBy(s.left,s.top),n=n.parent}}return t}function $b(r){return typeof r=="number"?{top:r,bottom:r,left:r,right:r}:r}const Zb={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},Jb={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},jl={37:"←",38:"↑",39:"→",40:"↓",9:"⇥",33:"Page Up",34:"Page Down"},N=tw(),Yb=Object.fromEntries(Object.entries(N).map(([r,i])=>{let e;return i in jl?e=jl[i]:e=r.charAt(0).toUpperCase()+r.slice(1),[i,e]}));function Oi(r){let i;if(typeof r=="string"){if(i=N[r.toLowerCase()],!i)throw new b("keyboard-unknown-key",null,{key:r})}else i=r.keyCode+(r.altKey?N.alt:0)+(r.ctrlKey?N.ctrl:0)+(r.shiftKey?N.shift:0)+(r.metaKey?N.cmd:0);return i}function wa(r){return typeof r=="string"&&(r=iw(r)),r.map(i=>typeof i=="string"?Qb(i):i).reduce((i,e)=>e+i,0)}function qr(r,i){let e=wa(r);const t=A.isMac||A.isiOS;return Object.entries(t?Zb:Jb).reduce((s,[a,l])=>((e&N[a])!=0&&(e&=~N[a],s+=l),s),"")+(e?Yb[e]:"")}function Xb(r){return r==N.arrowright||r==N.arrowleft||r==N.arrowup||r==N.arrowdown}function ka(r,i){const e=i==="ltr";switch(r){case N.arrowleft:return e?"left":"right";case N.arrowright:return e?"right":"left";case N.arrowup:return"up";case N.arrowdown:return"down"}}function Qb(r){if(r.endsWith("!"))return Oi(r.slice(0,-1));const i=Oi(r);return(A.isMac||A.isiOS)&&i==N.ctrl?N.cmd:i}function ew(r,i){const e=ka(r,i);return e==="down"||e==="right"}function tw(){const r={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);r[e.toLowerCase()]=i}for(let i=48;i<=57;i++)r[i-48]=i;for(let i=112;i<=123;i++)r["f"+(i-111)]=i;return Object.assign(r,{"'":222,",":108,"-":109,".":110,"/":111,";":186,"=":187,"[":219,"\\":220,"]":221,"`":223}),r}function iw(r){return r.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 nw=["ar","ara","dv","div","fa","per","fas","he","heb","ku","kur","ug","uig","ur","urd"];function Gl(r){return nw.includes(r)?"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 Q(r){return Array.isArray(r)?r:[r]}/* istanbul ignore else -- @preserve */T.window.CKEDITOR_TRANSLATIONS||(T.window.CKEDITOR_TRANSLATIONS={});function rw(r,i,e=1,t){if(typeof e!="number")throw new b("translation-service-quantity-not-a-number",null,{quantity:e});const n=t||T.window.CKEDITOR_TRANSLATIONS,o=aw(n);o===1&&(r=Object.keys(n)[0]);const s=i.id||i.string;if(o===0||!sw(r,s,n))return e!==1?i.plural:i.string;const a=n[r].dictionary,l=n[r].getPluralForm||(h=>h===1?0:1),c=a[s];if(typeof c=="string")return c;const d=Number(l(e));return c[d]}function ow(r){return Array.isArray(r)?r.reduce((i,e)=>fa(i,e)):r}function sw(r,i,e){return!!e[r]&&!!e[r].dictionary[i]}function aw(r){return Object.keys(r).length}class lw{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=Gl(this.uiLanguage),this.contentLanguageDirection=Gl(this.contentLanguage),this.translations=ow(t),this.t=(n,o)=>this._t(n,o)}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=Q(e),typeof i=="string"&&(i={string:i});const n=!!i.plural?e[0]:1,o=rw(this.uiLanguage,i,n,this.translations);return cw(o,e)}}function cw(r,i){return r.replace(/%(\d+)/g,(e,t)=>t<i.length?i[t]:e)}class We extends j(){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=Ue(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 o of e)this._items.push(o),this._itemMap.set(this._getItemIdBeforeAdding(o),o)}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 b("collection-add-item-invalid-index",this);let n=0;for(const o of e){const s=this._getItemIdBeforeAdding(o),a=t+n;this._items.splice(a,0,o),this._itemMap.set(s,o),this.fire("add",o,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 b("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 b("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=(o,s,a)=>{const l=t._bindToCollection==this,c=t._bindToInternalToExternalMap.get(s);if(l&&c)this._bindToExternalToInternalMap.set(s,c),this._bindToInternalToExternalMap.set(c,s);else{const d=e(s);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(s,d),this._bindToInternalToExternalMap.set(d,s),this.add(d,h);for(let m=0;m<t._skippedIndexesFromExternal.length;m++)h<=t._skippedIndexesFromExternal[m]&&t._skippedIndexesFromExternal[m]++}};for(const o of t)n(null,o,t.getIndex(o));this.listenTo(t,"add",n),this.listenTo(t,"remove",(o,s,a)=>{const l=this._bindToExternalToInternalMap.get(s);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 b("collection-add-invalid-id",this);if(this.get(n))throw new b("collection-add-item-already-exists",this)}else e[t]=n=Ve();return n}_remove(e){let t,n,o,s=!1;const a=this._idProperty;if(typeof e=="string"?(n=e,o=this._itemMap.get(n),s=!o,o&&(t=this._items.indexOf(o))):typeof e=="number"?(t=e,o=this._items[t],s=!o,o&&(n=o[a])):(o=e,n=o[a],t=this._items.indexOf(o),s=t==-1||!this._itemMap.get(n)),s)throw new b("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(n);const l=this._bindToInternalToExternalMap.get(o);return this._bindToInternalToExternalMap.delete(o),this._bindToExternalToInternalMap.delete(l),this.fire("remove",o,t),[o,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(r){const i=r.next();return i.done?null:i.value}class ne extends Pe(Z()){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($l(e))this._addElement(e);else if(Kl(e))this._addView(e);else{if(!e.element)throw new b("focustracker-add-view-missing-element",{focusTracker:this,view:e});this._addElement(e.element)}}remove(e){$l(e)?this._removeElement(e):Kl(e)?this._removeView(e):this._removeElement(e.element)}_addElement(e){if(this._elements.has(e))throw new b("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",()=>{const t=this.externalViews.find(n=>dw(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 Kl(r){return"focusTracker"in r&&r.focusTracker instanceof ne}function $l(r){return qt(r)}function dw(r,i){return Zl(r,i)?!0:!!i.focusTracker.externalViews.find(e=>Zl(r,e))}function Zl(r,i){return!!i.element&&i.element.contains(document.activeElement)&&r.contains(i.element)}class ce{constructor(){u(this,"_listener");this._listener=new(Pe())}listenTo(i){this._listener.listenTo(i,"keydown",(e,t)=>{this._listener.fire("_keydown:"+Oi(t),t)})}set(i,e,t={}){const n=wa(i),o=t.priority;this._listener.listenTo(this._listener,"_keydown:"+n,(s,a)=>{t.filter&&!t.filter(a)||(e(a,()=>{a.preventDefault(),a.stopPropagation(),s.stop()}),s.return=!0)},{priority:o})}press(i){return!!this._listener.fire("_keydown:"+Oi(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 uw(r){const i=new Map;for(const e in r)i.set(e,r[e]);return i}function St(r){return Ue(r)?new Map(r):uw(r)}/**
|
|
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 Jl(r,i,e){const t=r.length,n=i.length;for(let o=t-1;o>=e;o--)r[o+n]=r[o];for(let o=0;o<n;o++)r[e+o]=i[o]}/**
|
|
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 ya(r,i){let e;function t(...n){t.cancel(),e=setTimeout(()=>r(...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(r){try{if(!r.startsWith("ey"))return null;const i=atob(r.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 hw(){const r=[];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;r[i]=e}return r}function mw(r){const i=Array.isArray(r)?r:[r],e=hw();let t=-1;const n=i.map(o=>Array.isArray(o)?o.join(""):String(o)).join("");for(let o=0;o<n.length;o++){const s=n.charCodeAt(o);t=t>>>8^e[(t^s)&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 gw(r){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(s=>s.name).join("|"),t=r.replace(new RegExp(`</?(${e})( .*?)?>`,"g"),`
|
|
163
|
+
$&
|
|
164
|
+
`).replace(/<br[^>]*>/g,`$&
|
|
165
|
+
`).split(`
|
|
166
|
+
`);let n=0,o=!1;return t.map(s=>(o=bw(s,o),!s.length&&!o?"":fw(s,i)?nr(s,n++):pw(s,i)?nr(s,--n):o==="middle"||o==="last"?nr(s,0):nr(s,n))).join("").trimEnd()}function fw(r,i){return i.some(e=>!(e.isVoid||!new RegExp(`<${e.name}( .*?)?>`).test(r)))}function pw(r,i){return i.some(e=>new RegExp(`</${e.name}>`).test(r))}function nr(r,i,e=" "){return`${e.repeat(Math.max(0,i))}${r}
|
|
167
|
+
`}function bw(r,i){const e=/<pre( .*?)?>/.test(r),t=/<\/pre>/.test(r);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 ww(r){return!!r&&r.length==1&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(r)}function kw(r){return!!r&&r.length==1&&/[\ud800-\udbff]/.test(r)}function yw(r){return!!r&&r.length==1&&/[\udc00-\udfff]/.test(r)}function _a(r,i){return kw(r.charAt(i-1))&&yw(r.charAt(i))}function Ca(r,i){return ww(r.charAt(i))}const vw=_w();function jh(r,i){const e=String(r).matchAll(vw);return Array.from(e).some(t=>t.index<i&&i<t.index+t[0].length)}function _w(){const r=[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="(?:"+r.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 Ji=new WeakMap;let Yl=!1;function Gh({view:r,element:i,text:e,isDirectHost:t=!0,keepOnFocus:n=!1}){const o=r.document;Ji.has(o)||(Ji.set(o,new Map),o.registerPostFixer(a=>Oo(Ji.get(o),a)),o.on("change:isComposing",()=>{r.change(a=>Oo(Ji.get(o),a))},{priority:"high"})),i.is("editableElement")&&i.on("change:placeholder",(a,l,c)=>s(c)),i.placeholder?s(i.placeholder):e&&s(e),e&&Sw();function s(a){const l={text:a,isDirectHost:t,keepOnFocus:n,hostElement:t?i:null};Ji.get(o).set(i,l),r.change(c=>Oo([[i,l]],c))}}function Cw(r,i){return i.hasClass("ck-placeholder")?!1:(r.addClass("ck-placeholder",i),!0)}function Lw(r,i){return i.hasClass("ck-placeholder")?(r.removeClass("ck-placeholder",i),!0):!1}function Tw(r,i){if(!r.isAttached()||Ew(r))return!1;const e=r.document,n=e.selection.anchor;return e.isComposing&&n&&n.parent===r?!1:i||!e.isFocused?!0:!!n&&n.parent!==r}function Ew(r){for(const i of r.getChildren())if(!i.is("uiElement"))return!0;return!1}function Oo(r,i){const e=[];let t=!1;for(const[n,o]of r)o.isDirectHost&&(e.push(n),Xl(i,n,o)&&(t=!0));for(const[n,o]of r){if(o.isDirectHost)continue;const s=xw(n);s&&(e.includes(s)||(o.hostElement=s,Xl(i,n,o)&&(t=!0)))}return t}function Xl(r,i,e){const{text:t,isDirectHost:n,hostElement:o}=e;let s=!1;return o.getAttribute("data-placeholder")!==t&&(r.setAttribute("data-placeholder",t,o),s=!0),(n||i.childCount==1)&&Tw(o,e.keepOnFocus)?Cw(r,o)&&(s=!0):Lw(r,o)&&(s=!0),s}function xw(r){if(r.childCount){const i=r.getChild(0);if(i.is("element")&&!i.is("uiElement")&&!i.is("attributeElement"))return i}return null}function Sw(){Yl||W("enableplaceholder-deprecated-text-option"),Yl=!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 ai=class{is(){throw new Error("is() method is abstract")}},li=class extends j(ai){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 b("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),o=e.getAncestors(t);let s=0;for(;n[s]==o[s]&&n[s];)s++;return s===0?null:n[s-1]}isBefore(e){if(this==e||this.root!==e.root)return!1;const t=this.getPath(),n=e.getPath(),o=Ee(t,n);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<n[o]}}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=da(this);return delete e.parent,e}};li.prototype.is=function(r){return r==="node"||r==="view:node"};let ve=class Ls extends li{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 Ls?this===e||this.data===e.data:!1}_clone(){return new Ls(this.document,this.data)}};ve.prototype.is=function(r){return r==="$text"||r==="view:$text"||r==="text"||r==="view:text"||r==="node"||r==="view:node"};let _t=class extends ai{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 b("view-textproxy-wrong-offsetintext",this);if(n<0||t+n>e.data.length)throw new b("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}};_t.prototype.is=function(r){return r==="$textProxy"||r==="view:$textProxy"||r==="textProxy"||r==="view:textProxy"};class jr{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 Aw(i),this._consumables.set(i,t)),t.add(e?cn(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(cn(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(cn(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(cn(e)))}static createFrom(i,e){if(e||(e=new jr),i.is("$text"))e.add(i);else if(i.is("element")||i.is("documentFragment")){e.add(i);for(const t of i.getChildren())jr.createFrom(t,e)}return e}}class Aw{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 b("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 o=n.get(t);if(o===void 0)return null;if(!o)return!1}else for(const o of n.values())if(!o)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[o]of this.element._getConsumables(e,t).attributes)this._attributes.set(o,!1);else if(t)for(const[,o]of this.element._getConsumables(e,t).attributes)n.set(o,!1);else for(const o of n.keys())n.set(o,!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 o of n.keys())n.set(o,!0)}}}function cn(r){const i=[];return"attributes"in r&&r.attributes&&zo(i,r.attributes),"classes"in r&&r.classes&&zo(i,r.classes,"class"),"styles"in r&&r.styles&&zo(i,r.styles,"style"),{name:r.name||!1,attributes:i}}function zo(r,i,e){if(typeof i=="string"){r.push(e?[e,i]:[i]);return}for(const t of i)Array.isArray(t)?r.push(t):r.push(e?[e,t]:[t])}class An{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 o=this._isElementMatching(t,n);o&&e.push({element:t,pattern:n,match:o})}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 o=e(i);return!o||typeof o!="object"?o:cn(o)}const t={};if(e.name&&(t.name=Pw(e.name,i.name),!t.name))return null;const n=[];return e.attributes&&!Iw(e.attributes,i,n)||e.classes&&!Rw(e.classes,i,n)||e.styles&&!Mw(e.styles,i,n)?null:(n.length&&(t.attributes=n),t)}}function Gr(r,i){return r===!0||r===i||r instanceof RegExp&&!!String(i).match(r)}function Pw(r,i){return r instanceof RegExp?!!i.match(r):r===i}function La(r,i){if(Array.isArray(r))return r.map(t=>typeof t!="object"||t instanceof RegExp?i?[i,t,!0]:[t,!0]:((t.key===void 0||t.value===void 0)&&W("matcher-pattern-missing-key-or-value",t),i?[i,t.key,t.value]:[t.key,t.value]));if(typeof r!="object"||r instanceof RegExp)return[i?[i,r,!0]:[r,!0]];const e=[];for(const t in r)Object.prototype.hasOwnProperty.call(r,t)&&e.push(i?[i,t,r[t]]:[t,r[t]]);return e}function Iw(r,i,e){let t;return typeof r=="object"&&!(r instanceof RegExp)&&!Array.isArray(r)?(r.style!==void 0&&W("matcher-pattern-deprecated-attributes-style-key",r),r.class!==void 0&&W("matcher-pattern-deprecated-attributes-class-key",r)):t=["class","style"],i._collectAttributesMatch(La(r),e,t)}function Rw(r,i,e){return i._collectAttributesMatch(La(r,"class"),e)}function Mw(r,i,e){return i._collectAttributesMatch(La(r,"style"),e)}class pn{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=Vw(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,rt(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 Q(i)){this._cachedStyleNames=null,this._cachedExpandedStyleNames=null;const t=Ts(e);rb(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]&&!rt(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(Gr(i,n)){if(e===!0){t.push(n);continue}const o=this.getAsString(n);Gr(e,o)&&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("."),o=Wt(this._styles,n);if(!o)return;!Object.keys(o).length&&this.remove(n)}}class Bw{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(rt(e)){Fo(t,Ts(i),e);return}if(this._normalizers.has(i)){const n=this._normalizers.get(i),{path:o,value:s}=n(e);Fo(t,o,s)}else Fo(t,i,e)}getNormalized(i,e){if(!i)return fa({},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 Wt(e,t);const n=t(i,e);if(n)return n}return Wt(e,Ts(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 Vw(r){let i=null,e=0,t=0,n=null;const o=new Map;if(r==="")return o;r.charAt(r.length-1)!=";"&&(r=r+";");for(let s=0;s<r.length;s++){const a=r.charAt(s);if(i===null)switch(a){case":":n||(n=r.substr(e,s-e),t=s+1);break;case'"':case"'":i=a;break;case";":{const l=r.substr(t,s-t);n&&o.set(n.trim(),l.trim()),n=null,e=s+1;break}}else a===i&&(i=null)}return o}function Ts(r){return r.replace("-",".")}function Fo(r,i,e){let t=e;rt(e)&&(t=fa({},Wt(r,i),e)),bh(r,i,t)}class Uo{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 Q(i))e&&this._set.add(e)}remove(i){for(const e of Q(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 At=class Kh extends li{constructor(e,t,n,o){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=[],o&&this._insertChild(0,o)}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?wi(this.name,e)||Yi(this.name,e)?this._attrs.get(e).has(t):this._attrs.get(e)===t:!0:!1}isSimilar(e){if(!(e instanceof Kh))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 o=e._attrs.get(t);if(o===void 0)return!1;if(typeof n=="string"||typeof o=="string"){if(o!==n)return!1}else if(!n.isSimilar(o))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 An(...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(([o])=>o!="style"&&o!="class").map(o=>`${o[0]}="${o[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 o of this.getChildren())t.push(o._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 o=Nw(this.document,t);for(const s of o)s.parent!==null&&s._remove(),s.parent=this,s.document=this.document,this._children.splice(e,0,s),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),wi(this.name,e)||Yi(this.name,e)){let o=this._attrs.get(e);o||(o=wi(this.name,e)?new pn(this.document.stylesProcessor):new Uo,this._attrs.set(e,o)),n?o.setTo(String(t)):wi(this.name,e)?Array.isArray(t)?o.set(t[0],t[1]):o.set(t):o.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&&(wi(this.name,e)||Yi(this.name,e))){const n=this._attrs.get(e);return n?(Yi(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[o,s,a]of e){let l=!1,c=!1;for(const[d,h]of this._attrs)if(!(n&&n.includes(d)||!Gr(o,d)))if(l=!0,typeof h=="string"){if(Gr(s,h))t.push([d]),c=!0;else if(!(o instanceof RegExp))return!1}else{const m=h._getTokensMatch(s,a||!0);if(m){c=!0;for(const g of m)t.push([d,g])}else if(!(o instanceof RegExp))return!1}if(!l||!c)return!1}return!0}_getConsumables(e,t){const n=[];if(e){const o=this._attrs.get(e);if(o!==void 0)if(typeof o=="string")n.push([e]);else for(const s of o._getConsumables(t))n.push([e,s])}else for(const[o,s]of this._attrs)if(typeof s=="string")n.push([o]);else for(const a of s._getConsumables())n.push([o,a]);return{name:!e,attributes:n}}_canMergeAttributesFrom(e){if(this.name!=e.name)return!1;for(const[t,n]of e._attrs){const o=this._attrs.get(t);if(o!==void 0){if(typeof o=="string"||typeof n=="string"){if(o!==n)return!1}else if(!o._canMergeFrom(n))return!1}}return!0}_mergeAttributesFrom(e){this._fireChange("attributes",this);for(const[t,n]of e._attrs){const o=this._attrs.get(t);o===void 0||typeof o=="string"||typeof n=="string"?this._setAttribute(t,n):o._mergeFrom(n)}}_canSubtractAttributesOf(e){if(this.name!=e.name)return!1;for(const[t,n]of e._attrs){const o=this._attrs.get(t);if(o===void 0)return!1;if(typeof o=="string"||typeof n=="string"){if(o!==n)return!1}else if(!o._isMatching(n))return!1}return!0}_subtractAttributesOf(e){this._fireChange("attributes",this);for(const[t,n]of e._attrs){const o=this._attrs.get(t);typeof o=="string"||typeof n=="string"?this._attrs.delete(t):(o.remove(n.keys()),o.isEmpty&&this._attrs.delete(t))}}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}_parseAttributes(e){const t=St(e);for(const[n,o]of t)if(o===null)t.delete(n);else if(wi(this.name,n)){const s=o instanceof pn?o._clone():new pn(this.document.stylesProcessor).setTo(String(o));t.set(n,s)}else if(Yi(this.name,n)){const s=o instanceof Uo?o._clone():new Uo().setTo(String(o));t.set(n,s)}else typeof o!="string"&&t.set(n,String(o));return t}};At.prototype.is=function(r,i){return i?i===this.name&&(r==="element"||r==="view:element"):r==="element"||r==="view:element"||r==="node"||r==="view:node"};function Nw(r,i){if(typeof i=="string")return[new ve(r,i)];Ue(i)||(i=[i]);const e=[];for(const t of i)typeof t=="string"?e.push(new ve(r,t)):t instanceof _t?e.push(new ve(r,t.data)):e.push(t);return e}function Yi(r,i){return i=="class"||r=="a"&&i=="rel"}function wi(r,i){return i=="style"}class Pn extends At{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Dw}}Pn.prototype.is=function(r,i){return i?i===this.name&&(r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"):r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};function Dw(){const r=[...this.getChildren()],i=r[this.childCount-1];if(i&&i.is("element","br"))return this.childCount;for(const e of r)if(!e.is("uiElement"))return null;return this.childCount}class ko extends Z(Pn){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",o=>o&&i.selection.editableElement==this),this.listenTo(i.selection,"change",()=>{this.isFocused=i.isFocused&&i.selection.editableElement==this})}destroy(){this.stopListening()}}ko.prototype.is=function(r,i){return i?i===this.name&&(r==="editableElement"||r==="view:editableElement"||r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"):r==="editableElement"||r==="view:editableElement"||r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};const Ql=Symbol("rootName");class $h extends ko{constructor(i,e){super(i,e),this.rootName="main"}get rootName(){return this.getCustomProperty(Ql)}set rootName(i){this._setCustomProperty(Ql,i)}set _name(i){this.name=i}}$h.prototype.is=function(r,i){return i?i===this.name&&(r==="rootElement"||r==="view:rootElement"||r==="editableElement"||r==="view:editableElement"||r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"):r==="rootElement"||r==="view:rootElement"||r==="editableElement"||r==="view:editableElement"||r==="containerElement"||r==="view:containerElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};let ei=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 b("view-tree-walker-no-start-position",null);if(i.direction&&i.direction!="forward"&&i.direction!="backward")throw new b("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 o;this.singleCharacters?o=1:o=(t===this._boundaryEndParent?this.boundaries.end.offset:t.data.length)-i.offset;const s=new _t(t,i.offset,o);return i.offset+=o,this._position=i,this._formatReturnValue("text",s,e,i,o)}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 o=n.data.length,s;return n==this._boundaryEndParent?(o=this.boundaries.end.offset,s=new _t(n,0,o),i=L._createAfter(s)):(s=new _t(n,0,n.data.length),i.offset++),this._position=i,this._formatReturnValue("text",s,e,i,o)}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 o;if(this.singleCharacters)o=1;else{const a=t===this._boundaryStartParent?this.boundaries.start.offset:0;o=i.offset-a}i.offset-=o;const s=new _t(t,i.offset,o);return this._position=i,this._formatReturnValue("text",s,e,i,o)}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 o=n.data.length,s;if(n==this._boundaryStartParent){const a=this.boundaries.start.offset;s=new _t(n,a,n.data.length-a),o=s.data.length,i=L._createBefore(s)}else s=new _t(n,0,n.data.length),i.offset--;return this._position=i,this._formatReturnValue("text",s,e,i,o)}return i=L._createBefore(t),this._position=i,this._formatReturnValue("elementStart",t,e,i,1)}_formatReturnValue(i,e,t,n,o){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:o}}}},L=class yt extends ai{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 ko);)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 ei(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 o=0;for(;t[o]==n[o]&&t[o];)o++;return o===0?null:t[o-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 o=Ee(t,n);switch(o){case"prefix":return"before";case"extension":return"after";default:return t[o]<n[o]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new ei(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 b("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 b("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 b("view-position-before-root",e,{root:e});return new yt(e.parent,e.index)}};L.prototype.is=function(r){return r==="position"||r==="view:position"};let V=class Vt extends ai{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 ei({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(rr,{direction:"backward"}),t=this.end.getLastMatchingPosition(rr);return e.parent.is("$text")&&e.isAtStart&&(e=L._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=L._createAfter(t.parent)),new Vt(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(rr);if(e.isAfter(this.end)||e.isEqual(this.end))return new Vt(e,e);let t=this.end.getLastMatchingPosition(rr,{direction:"backward"});const n=e.nodeAfter,o=t.nodeBefore;return n&&n.is("$text")&&(e=new L(n,0)),o&&o.is("$text")&&(t=new L(o,o.data.length)),new Vt(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),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&o}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new Vt(this.start,e.start)),this.containsPosition(e.end)&&t.push(new Vt(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 Vt(t,n)}return null}getWalker(e={}){return e.boundaries=this,new ei(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 Vt(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new ei(e);for(const n of t)yield n.item}*getPositions(e={}){e.boundaries=this;const t=new ei(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,o){return new this(new L(e,t),new L(n,o))}static _createFromPositionAndShift(e,t){const n=e,o=e.getShiftedBy(t);return t>0?new this(n,o):new this(o,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(r){return r==="range"||r==="view:range"};function rr(r){return!!(r.item.is("attributeElement")||r.item.is("uiElement"))}let Lt=class Zh extends j(ai){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 o of e._ranges)if(t.isEqual(o)){n=!0;break}if(!n)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=_s(this.getRanges()),n=_s(e.getRanges());if(t!=n)return!1;if(t==0)return!0;for(let o of this.getRanges()){o=o.getTrimmed();let s=!1;for(let a of e.getRanges())if(a=a.getTrimmed(),o.start.isEqual(a.start)&&o.end.isEqual(a.end)){s=!0;break}if(!s)return!1}return!0}getSelectedElement(){return this.rangeCount!==1?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,n,o]=e;if(typeof n=="object"&&(o=n,n=void 0),t===null)this._setRanges([]),this._setFakeOptions(o);else if(t instanceof Zh||t instanceof Ta)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof V)this._setRanges([t],o&&o.backward),this._setFakeOptions(o);else if(t instanceof L)this._setRanges([new V(t)]),this._setFakeOptions(o);else if(t instanceof li){const s=!!o&&!!o.backward;let a;if(n===void 0)throw new b("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],s),this._setFakeOptions(o)}else if(Ue(t))this._setRanges(t,o&&o.backward),this._setFakeOptions(o);else throw new b("view-selection-setto-not-selectable",this);this.fire("change")}setFocus(e,t){if(this.anchor===null)throw new b("view-selection-setfocus-no-ranges",this);const n=L._createAt(e,t);if(n.compareWith(this.focus)=="same")return;const o=this.anchor;this._ranges.pop(),n.compareWith(o)=="before"?this._addRange(new V(n,o),!0):this._addRange(new V(o,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 b("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 b("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new V(e.start,e.end))}};Lt.prototype.is=function(r){return r==="selection"||r==="view:selection"};let Ta=class extends j(ai){constructor(...e){super();u(this,"_selection");this._selection=new Lt,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)}};Ta.prototype.is=function(r){return r==="selection"||r=="documentSelection"||r=="view:selection"||r=="view:documentSelection"};class ci extends Et{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 Ho=Symbol("bubbling contexts");function Es(r){class i extends r{fire(t,...n){try{const o=t instanceof Et?t:new Et(this,t),s=Wo(this);if(!s.size)return;if(Xi(o,"capturing",this),ki(s,"$capture",o,...n))return o.return;const a=o.startRange||this.selection.getFirstRange(),l=a?a.getContainedElement():null,c=l?!!Jh(s,l):!1;let d=l||Ow(a);if(Xi(o,"atTarget",d),!c){if(ki(s,"$text",o,...n))return o.return;Xi(o,"bubbling",d)}for(;d;){if(d.is("rootElement")){if(ki(s,"$root",o,...n))return o.return}else if(d.is("element")&&ki(s,d.name,o,...n))return o.return;if(ki(s,d,o,...n))return o.return;d=d.parent,Xi(o,"bubbling",d)}return Xi(o,"bubbling",this),ki(s,"$document",o,...n),o.return}catch(o){/* istanbul ignore next -- @preserve */b.rethrowUnexpectedError(o,this)}}_addEventListener(t,n,o){const s=Q(o.context||"$document"),a=Wo(this);for(const l of s){let c=a.get(l);c||(c=new(j()),a.set(l,c)),this.listenTo(c,t,n,o)}}_removeEventListener(t,n){const o=Wo(this);for(const s of o.values())this.stopListening(s,t,n)}}return i}{const r=Es(Object);["fire","_addEventListener","_removeEventListener"].forEach(i=>{Es[i]=r.prototype[i]})}function Xi(r,i,e){r instanceof ci&&(r._eventPhase=i,r._currentTarget=e)}function ki(r,i,e,...t){const n=typeof i=="string"?r.get(i):Jh(r,i);return n?(n.fire(e,...t),e.stop.called):!1}function Jh(r,i){for(const[e,t]of r)if(typeof e=="function"&&e(i))return t;return null}function Wo(r){return r[Ho]||(r[Ho]=new Map),r[Ho]}function Ow(r){if(!r)return null;const i=r.start.parent,e=r.end.parent,t=i.getPath(),n=e.getPath();return t.length>n.length?i:e}let Yh=class extends Es(Z()){constructor(e){super();u(this,"selection");u(this,"roots");u(this,"stylesProcessor");u(this,"_postFixers",new Set);this.selection=new Ta,this.roots=new We({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 ec=10;class ii extends At{constructor(e,t,n,o){super(e,t,n,o);u(this,"_priority",ec);u(this,"_id",null);u(this,"_clonesGroup",null);this.getFillerOffset=zw}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(this.id===null)throw new b("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(ii,"DEFAULT_PRIORITY",ec);ii.prototype.is=function(r,i){return i?i===this.name&&(r==="attributeElement"||r==="view:attributeElement"||r==="element"||r==="view:element"):r==="attributeElement"||r==="view:attributeElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};function zw(){if(qo(this))return null;let r=this.parent;for(;r&&r.is("attributeElement");){if(qo(r)>1)return null;r=r.parent}return!r||qo(r)>1?null:this.childCount}function qo(r){return Array.from(r.getChildren()).filter(i=>!i.is("uiElement")).length}class Ea extends At{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Fw}_insertChild(i,e){if(e&&(e instanceof li||Array.from(e).length>0))throw new b("view-emptyelement-cannot-add",[this,e]);return 0}}Ea.prototype.is=function(r,i){return i?i===this.name&&(r==="emptyElement"||r==="view:emptyElement"||r==="element"||r==="view:element"):r==="emptyElement"||r==="view:emptyElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};function Fw(){return null}class yo extends At{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=Hw}_insertChild(i,e){if(e&&(e instanceof li||Array.from(e).length>0))throw new b("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}}yo.prototype.is=function(r,i){return i?i===this.name&&(r==="uiElement"||r==="view:uiElement"||r==="element"||r==="view:element"):r==="uiElement"||r==="view:uiElement"||r==="element"||r==="view:element"||r==="node"||r==="view:node"};function Uw(r){r.document.on("arrowKey",(i,e)=>Ww(i,e,r.domConverter),{priority:"low"})}function Hw(){return null}function Ww(r,i,e){if(i.keyCode==N.arrowright){const t=i.domTarget.ownerDocument.defaultView.getSelection(),n=t.rangeCount==1&&t.getRangeAt(0).collapsed;if(n||i.shiftKey){const o=t.focusNode,s=t.focusOffset,a=e.domPositionToView(o,s);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 xa extends At{constructor(i,e,t,n){super(i,e,t,n),this.getFillerOffset=qw}_insertChild(i,e){if(e&&(e instanceof li||Array.from(e).length>0))throw new b("view-rawelement-cannot-add",[this,e]);return 0}render(i,e){}}xa.prototype.is=function(r,i){return i?i===this.name&&(r==="rawElement"||r==="view:rawElement"||r==="element"||r==="view:element"):r==="rawElement"||r==="view:rawElement"||r===this.name||r==="view:"+this.name||r==="element"||r==="view:element"||r==="node"||r==="view:node"};function qw(){return null}let ni=class extends j(ai){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 o=jw(this.document,t);for(const s of o)s.parent!==null&&s._remove(),s.parent=this,this._children.splice(e,0,s),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)}};ni.prototype.is=function(r){return r==="documentFragment"||r==="view:documentFragment"};function jw(r,i){return typeof i=="string"?[new ve(r,i)]:(Ue(i)||(i=[i]),Array.from(i).map(e=>typeof e=="string"?new ve(r,e):e instanceof _t?new ve(r,e.data):e))}class Xh{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 ni(this.document,i)}createText(i){return new ve(this.document,i)}createAttributeElement(i,e,t={}){const n=new ii(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 o=null;mt(t)?n=t:o=t;const s=new Pn(this.document,i,e,o);return n.renderUnsafeAttributes&&s._unsafeAttributesToRender.push(...n.renderUnsafeAttributes),s}createEditableElement(i,e,t={}){const n=new ko(this.document,i,e);return t.renderUnsafeAttributes&&n._unsafeAttributesToRender.push(...t.renderUnsafeAttributes),n}createEmptyElement(i,e,t={}){const n=new Ea(this.document,i,e);return t.renderUnsafeAttributes&&n._unsafeAttributesToRender.push(...t.renderUnsafeAttributes),n}createUIElement(i,e,t){const n=new yo(this.document,i,e);return t&&(n.render=t),n}createRawElement(i,e,t,n={}){const o=new xa(this.document,i,e);return t&&(o.render=t),n.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...n.renderUnsafeAttributes),o}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){mt(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 b("view-writer-break-non-container-element",this.document);if(!e.parent)throw new b("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")),o=new L(t,0);this.move(n,o)}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 s=t.parent,a=t.index;return t._remove(),this._removeFromClonedElementsGroup(t),this.mergeAttributes(new L(s,a))}const n=t.getChild(e-1),o=t.getChild(e);if(!n||!o)return i;if(n.is("$text")&&o.is("$text"))return ic(n,o);if(n.is("attributeElement")&&o.is("attributeElement")&&n.isSimilar(o)){const s=n.childCount;return n._appendChild(o.getChildren()),o._remove(),this._removeFromClonedElementsGroup(o),this.mergeAttributes(new L(n,s))}return i}mergeContainers(i){const e=i.nodeBefore,t=i.nodeAfter;if(!e||!t||!e.is("containerElement")||!t.is("containerElement"))throw new b("view-writer-merge-containers-invalid-position",this.document);const n=e.getChild(e.childCount-1),o=n instanceof ve?L._createAt(n,"end"):L._createAt(e,"end");return this.move(V._createIn(t),L._createAt(e,"end")),this.remove(V._createOn(t)),o}insert(i,e){e=Ue(e)?[...e]:[e],Qh(e,this.document);const t=e.reduce((s,a)=>{const l=s[s.length-1],c=!a.is("uiElement");return!l||l.breakAttributes!=c?s.push({breakAttributes:c,nodes:[a]}):l.nodes.push(a),s},[]);let n=null,o=i;for(const{nodes:s,breakAttributes:a}of t){const l=this._insertNodes(o,s,a);n||(n=l.start),o=l.end}return n?new V(n,o):new V(i)}remove(i){const e=i instanceof V?i:V._createOn(i);if(Qi(e,this.document),e.isCollapsed)return new ni(this.document);const{start:t,end:n}=this._breakAttributesRange(e,!0),o=t.parent,s=n.offset-t.offset,a=o._removeChildren(t.offset,s);for(const c of a)this._removeFromClonedElementsGroup(c);const l=this.mergeAttributes(t);return e.start=l,e.end=l.clone(),new ni(this.document,a)}clear(i,e){Qi(i,this.document);const t=i.getWalker({direction:"backward",ignoreElementEnd:!0});for(const n of t){const o=n.item;let s;if(o.is("element")&&e.isSimilar(o))s=V._createOn(o);else if(!n.nextPosition.isAfter(i.start)&&o.is("$textProxy")){const a=o.getAncestors().find(l=>l.is("element")&&e.isSimilar(l));a&&(s=V._createIn(a))}s&&(s.end.isAfter(i.end)&&(s.end=i.end),s.start.isBefore(i.start)&&(s.start=i.start),this.remove(s))}}move(i,e){let t;if(e.isAfter(i.end)){e=this._breakAttributes(e,!0);const n=e.parent,o=n.childCount;i=this._breakAttributesRange(i,!0),t=this.remove(i),e.offset+=n.childCount-o}else t=this.remove(i);return this.insert(e,t)}wrap(i,e){if(!(e instanceof ii))throw new b("view-writer-wrap-invalid-attribute",this.document);if(Qi(i,this.document),i.isCollapsed){let t=i.start;t.parent.is("element")&&!Gw(t.parent)&&(t=t.getLastMatchingPosition(o=>o.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 ii))throw new b("view-writer-unwrap-invalid-attribute",this.document);if(Qi(i,this.document),i.isCollapsed)return i;const{start:t,end:n}=this._breakAttributesRange(i,!0),o=t.parent,s=this._unwrapChildren(o,t.offset,n.offset,e),a=this.mergeAttributes(s.start);a.isEqual(s.start)||s.end.offset--;const l=this.mergeAttributes(s.end);return new V(a,l)}rename(i,e){const t=new Pn(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 Lt(...i)}createSlot(i="children"){if(!this._slotFactory)throw new b("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=xs(i):n=i.parent.is("$text")?i.parent.parent:i.parent,!n)throw new b("view-writer-invalid-position-container",this.document);let o;t?o=this._breakAttributes(i,!0):o=i.parent.is("$text")?jo(i):i;const s=n._insertChild(o.offset,e);for(const d of e)this._addToClonedElementsGroup(d);const a=o.getShiftedBy(s),l=this.mergeAttributes(o);l.isEqual(o)||a.offset--;const c=this.mergeAttributes(a);return new V(l,c)}_wrapChildren(i,e,t,n){let o=e;const s=[];for(;o<t;){const l=i.getChild(o),c=l.is("$text"),d=l.is("attributeElement");if(d&&l._canMergeAttributesFrom(n))l._mergeAttributesFrom(n),s.push(new L(i,o));else if(c||!d||Kw(n,l)){const h=n._clone();l._remove(),h._appendChild(l),i._insertChild(o,h),this._addToClonedElementsGroup(h),s.push(new L(i,o))}else this._wrapChildren(l,0,l.childCount,n);o++}let a=0;for(const l of s){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 o=e;const s=[];for(;o<t;){const l=i.getChild(o);if(!l.is("attributeElement")){o++;continue}if(l.isSimilar(n)){const c=l.getChildren(),d=l.childCount;l._remove(),i._insertChild(o,c),this._removeFromClonedElementsGroup(l),s.push(new L(i,o),new L(i,o+d)),o+=d,t+=d-1;continue}if(l._canSubtractAttributesOf(n)){l._subtractAttributesOf(n),s.push(new L(i,o),new L(i,o+1)),o++;continue}this._unwrapChildren(l,0,l.childCount,n),o++}let a=0;for(const l of s){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),o=t.parent,s=this._wrapChildren(o,t.offset,n.offset,e),a=this.mergeAttributes(s.start);a.isEqual(s.start)||s.end.offset--;const l=this.mergeAttributes(s.end);return new V(a,l)}_wrapPosition(i,e){if(e.isSimilar(i.parent))return tc(i.clone());i.parent.is("$text")&&(i=jo(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 o=new L(t.parent,t.index);t._remove();const s=o.nodeBefore,a=o.nodeAfter;return s&&s.is("view:$text")&&a&&a.is("view:$text")?ic(s,a):tc(o)}_breakAttributesRange(i,e=!1){const t=i.start,n=i.end;if(Qi(i,this.document),i.isCollapsed){const l=this._breakAttributes(i.start,e);return new V(l,l)}const o=this._breakAttributes(n,e),s=o.parent.childCount,a=this._breakAttributes(t,e);return o.offset+=o.parent.childCount-s,new V(a,o)}_breakAttributes(i,e=!1){const t=i.offset,n=i.parent;if(i.parent.is("emptyElement"))throw new b("view-writer-cannot-break-empty-element",this.document);if(i.parent.is("uiElement"))throw new b("view-writer-cannot-break-ui-element",this.document);if(i.parent.is("rawElement"))throw new b("view-writer-cannot-break-raw-element",this.document);if(!e&&n.is("$text")&&Ss(n.parent)||Ss(n))return i.clone();if(n.is("$text"))return this._breakAttributes(jo(i),e);const o=n.childCount;if(t==o){const s=new L(n.parent,n.index+1);return this._breakAttributes(s,e)}else if(t===0){const s=new L(n.parent,n.index);return this._breakAttributes(s,e)}else{const s=n.index+1,a=n._clone();n.parent._insertChild(s,a),this._addToClonedElementsGroup(a);const l=n.childCount-t,c=n._removeChildren(t,l);a._appendChild(c);const d=new L(n.parent,s);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 Gw(r){return Array.from(r.getChildren()).some(i=>!i.is("uiElement"))}function xs(r){let i=r.parent;for(;!Ss(i);){if(!i)return;i=i.parent}return i}function Kw(r,i){return r.priority<i.priority?!0:r.priority>i.priority?!1:r.getIdentity()<i.getIdentity()}function tc(r){const i=r.nodeBefore;if(i&&i.is("$text"))return new L(i,i.data.length);const e=r.nodeAfter;return e&&e.is("$text")?new L(e,0):r}function jo(r){if(r.offset==r.parent.data.length)return new L(r.parent.parent,r.parent.index+1);if(r.offset===0)return new L(r.parent.parent,r.parent.index);const i=r.parent.data.slice(r.offset);return r.parent._data=r.parent.data.slice(0,r.offset),r.parent.parent._insertChild(r.parent.index+1,new ve(r.root.document,i)),new L(r.parent.parent,r.parent.index+1)}function ic(r,i){const e=r.data.length;return r._data+=i.data,i._remove(),new L(r,e)}const $w=[ve,ii,Pn,Ea,xa,yo];function Qh(r,i){for(const e of r){if(!$w.some(t=>e instanceof t))throw new b("view-writer-insert-invalid-node-type",i);e.is("$text")||Qh(e.getChildren(),i)}}function Ss(r){return r&&(r.is("containerElement")||r.is("documentFragment"))}function Qi(r,i){const e=xs(r.start),t=xs(r.end);if(!e||!t||e!==t)throw new b("view-writer-invalid-range-container",i)}const em=r=>r.createTextNode(" "),tm=r=>{const i=r.createElement("span");return i.dataset.ckeFiller="true",i.innerText=" ",i},im=r=>{const i=r.createElement("br");return i.dataset.ckeFiller="true",i},ze=7,In="".repeat(ze);function Se(r){return typeof r=="string"?r.substr(0,ze)===In:ie(r)&&r.data.substr(0,ze)===In}function Mi(r){return r.data.length==ze&&Se(r)}function nc(r){const i=typeof r=="string"?r:r.data;return Se(r)?i.slice(ze):i}function Zw(r){r.document.on("arrowKey",Jw,{priority:"low"})}function Jw(r,i){if(i.keyCode==N.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;Se(t)&&n<=ze&&e.collapse(t,0)}}}class Yw extends Z(){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),A.isBlink&&!A.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 b("view-renderer-unknown-type",this)}}render(){if(this.isComposing&&!A.isAndroid)return;let e=null;const t=A.isBlink&&!A.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),o=n.parent.ownerDocument;Se(n.parent)?this._inlineFiller=n.parent:this._inlineFiller=rc(o,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),o=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),s=this._diffNodeLists(n,o),a=this._findUpdateActions(s,n,o,Qw);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]),Wl(o[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&&ie(t.parent)&&Se(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!Se(e))throw new b("view-renderer-filler-was-lost",this);Mi(e)?e.remove():e.data=e.data.substr(ze),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")||!Xw(t))return!1;const o=e.nodeBefore,s=e.nodeAfter;return!(o instanceof ve||s instanceof ve||n===t.getFillerOffset()&&(!o||!o.is("element","br"))||A.isAndroid&&(o||s))}_updateText(e,t){const n=this.domConverter.findCorrespondingDomText(e);let s=this.domConverter.viewToDom(e).data;const a=t.inlineFillerPosition;a&&a.parent==e.parent&&a.offset==e.index&&(s=In+s),this._updateTextNode(n,s)}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(t){for(const n of Array.from(t.attributes)){const o=n.name;e.hasAttribute(o)||this.domConverter.removeDomElementAttribute(t,o)}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(A.isAndroid){let m=null;for(const g of Array.from(n.childNodes)){if(m&&ie(m)&&ie(g)){n.normalize();break}m=g}}const o=t.inlineFillerPosition,s=n.childNodes,a=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));o&&o.parent===e&&rc(n.ownerDocument,a,o.offset);const l=this._diffNodeLists(s,a),c=this._findUpdateActions(l,s,a,ek);let d=0;const h=new Set;for(const m of c)m==="delete"?(h.add(s[d]),Wl(s[d])):(m==="equal"||m==="update")&&d++;d=0;for(const m of c)m==="insert"?(zh(n,d,a[d]),d++):m==="update"?(this._updateTextNode(s[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=nk(e,this._fakeSelectionContainer),Ni(e,t,tk.bind(null,this.domConverter))}_findUpdateActions(e,t,n,o){if(e.indexOf("insert")===-1||e.indexOf("delete")===-1)return e;let s=[],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]):(s=s.concat(Ni(a,l,o).map(h=>h==="equal"?"update":h)),s.push("equal"),a=[],l=[]),c[d]++;return s.concat(Ni(a,l,o).map(d=>d==="equal"?"update":d))}_updateTextNode(e,t){const n=e.data;n!=t&&(A.isAndroid&&this.isComposing&&n.replace(/\u00A0/g," ")==t.replace(/\u00A0/g," ")||this._updateTextNodeInternal(e,t))}_updateTextNodeInternal(e,t){const n=_h(e.data,t);for(const o of n)o.type==="insert"?e.insertData(o.index,o.values.join("")):e.deleteData(o.index,o.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(A.isBlink&&!A.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&&A.isAndroid||this._updateDomSelection(e)}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=rk(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 o=t.getSelection(),s=t.createRange();o.removeAllRanges(),s.selectNodeContents(n),o.addRange(s)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const n=this.domConverter.viewPositionToDom(this.selection.anchor),o=this.domConverter.viewPositionToDom(this.selection.focus);t.setBaseAndExtent(n.parent,n.offset,o.parent,o.offset),A.isGecko&&ik(o,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,o=this.domConverter.mapDomToView(n);n&&o&&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 Xw(r){if(r.getAttribute("contenteditable")=="false")return!1;const i=r.findAncestor(e=>e.hasAttribute("contenteditable"));return!i||i.getAttribute("contenteditable")=="true"}function rc(r,i,e){const t=i instanceof Array?i:i.childNodes,n=t[e];if(ie(n))return n.data=In+n.data,n;{const o=r.createTextNode(In);return Array.isArray(i)?t.splice(e,0,o):zh(i,e,o),o}}function Qw(r,i){return jt(r)&&jt(i)&&!ie(r)&&!ie(i)&&!fn(r)&&!fn(i)&&r.tagName.toLowerCase()===i.tagName.toLowerCase()}function ek(r,i){return jt(r)&&jt(i)&&ie(r)&&ie(i)}function tk(r,i,e){return i===e?!0:ie(i)&&ie(e)?i.data===e.data:!!(r.isBlockFiller(i)&&r.isBlockFiller(e))}function ik(r,i){let e=r.parent,t=r.offset;if(ie(e)&&Mi(e)&&(t=Ri(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 nk(r,i){const e=Array.from(r);return e.length==0||!i||e[e.length-1]==i&&e.pop(),e}function rk(r){const i=r.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 ok=im(T.document),sk=em(T.document),ak=tm(T.document),or="data-ck-unsafe-attribute-",oc="data-ck-unsafe-element";class nm{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 An);u(this,"_inlineObjectElementMatcher",new An);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 Lt(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(),o=t.body.childNodes;for(;o.length>0;)n.appendChild(o[0]);const s=t.createTreeWalker(n,NodeFilter.SHOW_ELEMENT),a=[];let l;for(;l=s.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)&&(cc(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)?(cc(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 o of t.getAttributeKeys())this.setDomElementAttribute(n,o,t.getAttribute(o),t)}if(e.withChildren!==!1)for(const o of this.viewChildrenToDom(t,e))n instanceof HTMLTemplateElement?n.content.appendChild(o):n.appendChild(o);return n}}setDomElementAttribute(i,e,t,n){const o=this.shouldRenderAttribute(e,t,i.tagName.toLowerCase())||n&&n.shouldRenderUnsafeAttribute(e);if(o||W("domconverter-unsafe-attribute-detected",{domElement:i,key:e,value:t}),!Hb(e)){W("domconverter-invalid-attribute-detected",{domElement:i,key:e,value:t});return}i.hasAttribute(e)&&!o?i.removeAttribute(e):i.hasAttribute(or+e)&&o&&i.removeAttribute(or+e),i.setAttribute(o?e:or+e,t)}removeDomElementAttribute(i,e){e!=oc&&(i.removeAttribute(e),i.removeAttribute(or+e))}*viewChildrenToDom(i,e={}){const t=i.getFillerOffset&&i.getFillerOffset();let n=0;for(const o of i.getChildren()){t===n&&(yield this._getBlockFiller());const s=o.is("element")&&!!o.getCustomProperty("dataPipeline:transparentRendering")&&!ue(o.getAttributes());if(s&&this.renderingMode=="data")if(o.is("rawElement")){const a=this._domDocument.createElement(o.name);o.render(a,this),yield*[...a.childNodes]}else yield*this.viewChildrenToDom(o,e);else s&&W("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:o}),yield this.viewToDom(o,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 Se(t)&&(n+=ze),t.data&&n>t.data.length&&(n=t.data.length),{parent:t,offset:n}}else{let t,n,o;if(i.offset===0){if(t=this.mapViewToDom(e),!t)return null;o=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,o=n.nextSibling}if(ie(o)&&Se(o))return{parent:o,offset:ze};const s=n?Ri(n)+1:0;return{parent:t,offset:s}}}domToView(i,e={}){const t=[],n=this._domToView(i,e,t),o=n.next().value;return!o||(n.next(),this._processDomInlineNodes(null,t,e),this.blockFillerMode=="br"&&ac(o))||o.is("$text")&&o.data.length==0?null:o}*domChildrenToView(i,e={},t=[]){let n=[];i instanceof HTMLTemplateElement?n=[...i.content.childNodes]:n=[...i.childNodes];for(let o=0;o<n.length;o++){const s=n[o],a=this._domToView(s,e,t),l=a.next().value;l!==null&&(this._isBlockViewElement(l)&&this._processDomInlineNodes(i,t,e),this.blockFillerMode=="br"&&ac(l)||(yield l),a.next())}this._processDomInlineNodes(i,t,e)}domSelectionToView(i){if(hk(i))return new Lt([]);if(i.rangeCount===1){let n=i.getRangeAt(0).startContainer;ie(n)&&(n=n.parentNode);const o=this.fakeSelectionToView(n);if(o)return o}const e=this.isDomSelectionBackward(i),t=[];for(let n=0;n<i.rangeCount;n++){const o=i.getRangeAt(n),s=this.domRangeToView(o);s&&t.push(s)}return new Lt(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,Ri(i));const t=this.mapDomToView(i);if(t&&(t.is("uiElement")||t.is("rawElement")))return L._createBefore(t);if(ie(i)){if(Mi(i))return this.domPositionToView(i.parentNode,Ri(i));const n=this.findCorrespondingViewText(i);let o=e;return n?(Se(i)&&(o-=ze,o=o<0?0:o),new L(n,o)):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(ie(n)&&Mi(n)||n&&this.isBlockFiller(n))return this.domPositionToView(n.parentNode,Ri(n));const o=ie(n)?this.findCorrespondingViewText(n):this.mapDomToView(n);if(o&&o.parent)return new L(o.parent,o.index+1)}return null}}mapDomToView(i){return this.getHostViewElement(i)||this._domToViewMapping.get(i)}findCorrespondingViewText(i){if(Mi(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 o=n.nextSibling;return o instanceof ve?o:null}}else{const n=this.mapDomToView(i.parentNode);if(n){const o=n.getChild(0);return o instanceof ve?o: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,o=[];sc(e,s=>{const{scrollLeft:a,scrollTop:l}=s;o.push([a,l])}),e.focus(),sc(e,s=>{const[a,l]=o.shift();s.scrollLeft=a,s.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(ok):lc(i,this.blockElements)?!0:i.isEqualNode(ak)||ck(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=Ob(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 em(this._domDocument);case"markedNbsp":return tm(this._domDocument);case"br":return im(this._domDocument)}}_isDomSelectionPositionCorrect(i,e){if(ie(i)&&Se(i)&&e<ze||this.isElement(i)&&Se(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"&&lc(i,this.blockElements))return null;const n=this.getHostViewElement(i);if(n)return n;if(fn(i)&&e.skipComments)return null;if(ie(i)){if(Mi(i))return null;{const o=i.data;if(o==="")return null;const s=new ve(this.document,o);return t.push(s),s}}else{let o=this.mapDomToView(i);if(o)return this._isInlineObjectElement(o)&&t.push(o),o;if(this.isDocumentFragment(i))o=new ni(this.document),e.bind&&this.bindDocumentFragments(i,o);else{o=this._createViewElement(i,e),e.bind&&this.bindElements(i,o);const a=i.attributes;if(a)for(let l=a.length,c=0;c<l;c++)o._setAttribute(a[c].name,a[c].value);if(this._isViewElementWithRawContent(o,e))return o._setCustomProperty("$rawContent",i.innerHTML),this._isBlockViewElement(o)||t.push(o),o;if(fn(i))return o._setCustomProperty("$rawContent",i.data),o}yield o;const s=[];if(e.withChildren!==!1)for(const a of this.domChildrenToView(i,e,s))o._appendChild(a);if(this._isInlineObjectElement(o))t.push(o),this._processDomInlineNodes(null,s,e);else for(const a of s)t.push(a)}}_processDomInlineNodes(i,e,t){if(!e.length||i&&!this.isDocumentFragment(i)&&!this._isBlockDomElement(i))return;let n=!1;for(let o=0;o<e.length;o++){const s=e[o];if(!s.is("$text")){n=!1;continue}let a,l=!1;if(this._isPreFormatted(s))a=nc(s.data);else{a=s.data.replace(/[ \n\t\r]{1,}/g," "),l=/[^\S\u00A0]/.test(a.charAt(a.length-1));const c=o>0?e[o-1]:null,d=o+1<e.length?e[o+1]:null,h=!c||c.is("element")&&c.name=="br"||n,m=d?!1:!Se(s.data);t.withChildren!==!1&&(h&&(a=a.replace(/^ /,"")),m&&(a=a.replace(/ $/,""))),a=nc(a),this.blockFillerMode!="br"&&s.parent&&(uk(s.parent,a)?(a="",s.parent.parent&&(s.parent.parent._setCustomProperty("$hasBlockFiller",!0),s.parent._remove())):dk(s.parent,a,this.blockElements)&&(a="",s.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&&s.parent?(s._remove(),e.splice(o,1),o--):(s._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(lk(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 ei({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(fn(i))return new yo(this.document,"$comment");const t=e.keepOriginalCase?i.tagName:i.tagName.toLowerCase();return new At(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(oc,i),e){for(;e.firstChild;)t.appendChild(e.firstChild);for(const n of e.getAttributeNames())t.setAttribute(n,e.getAttribute(n))}return t}}function lk(r,i){return r.getAncestors().some(e=>e.is("element")&&i.includes(e.name))}function sc(r,i){let e=r;for(;e;)i(e),e=e.parentElement}function ck(r,i){return r.isEqualNode(sk)&&rm(r,i)&&r.parentNode.childNodes.length===1}function rm(r,i){const e=r.parentNode;return!!e&&!!e.tagName&&i.includes(e.tagName.toLowerCase())}function dk(r,i,e){return i==" "&&r&&r.is("element")&&r.childCount==1&&e.includes(r.name)}function uk(r,i){return i==" "&&r&&r.is("element","span")&&r.childCount==1&&r.hasAttribute("data-cke-filler")}function ac(r){return r.is("element","br")&&r.hasAttribute("data-cke-filler")}function lc(r,i){return r.tagName==="BR"&&rm(r,i)&&r.parentNode.childNodes.length===1}function cc(r){r==="script"&&W("domconverter-unsafe-script-element-detected"),r==="style"&&W("domconverter-unsafe-style-element-detected")}function hk(r){if(!A.isGecko||!r.rangeCount)return!1;const i=r.getRangeAt(0).startContainer;try{Object.prototype.toString.call(i)}catch{return!0}return!1}class bt extends Pe(){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,yh(this,t)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}class Pt 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,(o,s)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(s.target)&&this.onDomEvent(s)},{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 mk extends Pt{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 Oi(this)}};this.fire(e.type,e,t)}}class gk extends bt{constructor(e){super(e);u(this,"_fireSelectionChangeDoneDebounced");this._fireSelectionChangeDoneDebounced=ot(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 Lt(t.getRanges(),{backward:t.isBackward,fake:!1});(e==N.arrowleft||e==N.arrowup)&&n.setTo(n.getFirstPosition()),(e==N.arrowright||e==N.arrowdown)&&n.setTo(n.getLastPosition());const o={oldSelection:t,newSelection:n,domSelection:null};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}let om=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,o=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)&&o.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&&!o.has(c.parent)?n.add(c):!c&&Se(a.target)&&o.add(t.mapDomToView(a.target.parentNode))}}const s=[];for(const a of n)s.push({type:"text",node:a});for(const a of o){const l=t.mapViewToDom(a),c=Array.from(a.getChildren()),d=Array.from(t.domChildrenToView(l,{withChildren:!1}));ws(c,d,fk)||s.push({type:"children",node:a})}s.length&&this.document.fire("mutations",{mutations:s})}_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 fk(r,i){if(!Array.isArray(r))return r===i?!0:r.is("$text")&&i.is("$text")?r.data===i.data:!1}class Kr extends Pt{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,o)=>this._handleBlur(o)),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 pk 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(om),this.focusObserver=e.getObserver(Kr),this.selection=this.document.selection,this.domConverter=e.domConverter,this._fireSelectionChangeDoneDebounced=ot(t=>{this.document.fire("selectionChangeDone",t)},200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._documentIsSelectingInactivityTimeoutDebounced=ot(()=>this.document.isSelecting=!1,5e3),this.view.document.on("change:isFocused",(t,n,o)=>{if(o&&this._pendingSelectionChange.size){for(const s of Array.from(this._pendingSelectionChange))this._handleSelectionChange(s);this._pendingSelectionChange.clear()}})}observe(e){const t=e.ownerDocument,n=()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()},o=()=>{this.document.isSelecting&&(this._handleSelectionChange(t),this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel())};this.listenTo(e,"selectstart",n,{priority:"highest"}),this.listenTo(e,"keydown",o,{priority:"highest",useCapture:!0}),this.listenTo(e,"keyup",o,{priority:"highest",useCapture:!0}),!this._documents.has(t)&&(this.listenTo(t,"mouseup",o,{priority:"highest",useCapture:!0}),this.listenTo(t,"selectionchange",()=>{this.document.isComposing&&!A.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 o={oldSelection:this.selection,newSelection:n,domSelection:t};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}}_clearInfiniteLoop(){this._loopbackCounter=0}}class bk extends Pt{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 sm{constructor(i,e={}){u(this,"_files");u(this,"_native");this._files=e.cacheFiles?dc(i):null,this._native=i}get files(){return this._files||(this._files=dc(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 dc(r){const i=Array.from(r.files||[]),e=Array.from(r.items||[]);return i.length?i:e.filter(t=>t.kind==="file").map(t=>t.getAsFile())}class wk extends Pt{constructor(){super(...arguments);u(this,"domEventType","beforeinput")}onDomEvent(e){const t=e.getTargetRanges(),n=this.view,o=n.document;let s=null,a=null,l=[];if(e.dataTransfer&&(s=new sm(e.dataTransfer)),e.data!==null?a=e.data:s&&(a=s.getData("text/plain")),o.selection.isFake)l=Array.from(o.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&&Se(c.startContainer)&&c.startOffset<ze){e.preventDefault();let m=ze-c.startOffset;d=d.getLastMatchingPosition(g=>!!(g.item.is("attributeElement")||g.item.is("uiElement")||g.item.is("$textProxy")&&m--),{direction:"backward",singleCharacters:!0})}if(kk(c.endContainer,c.endOffset)&&e.preventDefault(),d)return n.createRange(d,h);if(h)return n.createRange(h)}).filter(c=>!!c);else if(A.isAndroid){const c=e.target.ownerDocument.defaultView.getSelection();l=Array.from(n.domConverter.domSelectionToView(c).getRanges())}if(A.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:s,targetRanges:d,inputType:e.inputType,isComposing:e.isComposing}),d=[o.selection.getFirstRange()]),h+1<c.length&&(this.fire(e.type,e,{inputType:"insertParagraph",targetRanges:d}),d=[o.selection.getFirstRange()])}return}this.fire(e.type,e,{data:a,dataTransfer:s,targetRanges:l,inputType:e.inputType,isComposing:e.isComposing})}}function kk(r,i){for(;r.parentNode;){if(ie(r)){if(i!=r.data.length)return!1}else if(i!=r.childNodes.length)return!1;if(i=Ri(r)+1,r=r.parentNode,i<r.childNodes.length&&Se(r.childNodes[i]))return!0}return!1}class yk extends bt{constructor(i){super(i),this.document.on("keydown",(e,t)=>{if(this.isEnabled&&Xb(t.keyCode)){const n=new ci(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(n,t),n.stop.called&&e.stop()}})}observe(){}stopObserving(){}}class vk extends bt{constructor(i){super(i);const e=this.document;e.on("keydown",(t,n)=>{if(!this.isEnabled||n.keyCode!=N.tab||n.ctrlKey)return;const o=new ci(e,"tab",e.selection.getFirstRange());e.fire(o,n),o.stop.called&&t.stop()})}observe(){}stopObserving(){}}let _k=class extends Z(){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 Yh(e),this.domConverter=new nm(this.document),this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Yw(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting","isComposing").to(this.document,"isFocused","isSelecting","isComposing"),this._writer=new Xh(this.document),this.addObserver(om),this.addObserver(Kr),this.addObserver(pk),this.addObserver(mk),this.addObserver(gk),this.addObserver(bk),this.addObserver(yk),this.addObserver(wk),this.addObserver(vk),Zw(this),Uw(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}),A.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(o=>this._renderer.markToSync(o.type,o.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 o={};for(const{name:a,value:l}of Array.from(e.attributes))o[a]=l,a==="class"?this._writer.addClass(l.split(" "),n):n.hasAttribute(a)||this._writer.setAttribute(a,l,n);this._initialDomRootAttributes.set(e,o);const s=()=>{this._writer.setAttribute("contenteditable",(!n.isReadOnly).toString(),n),n.isReadOnly?this._writer.addClass("ck-read-only",n):this._writer.removeClass("ck-read-only",n)};s(),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(s)),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:o})=>t.removeAttribute(o));const n=this._initialDomRootAttributes.get(t);for(const o in n)t.setAttribute(o,n[o]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t);for(const o of this._observers.values())o.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,o]of this.domRoots)t.observe(o,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:o=20}={}){const s=this.document.selection.getFirstRange();if(!s)return;const a=Fe({alignToTop:e,forceScroll:t,viewportOffset:n,ancestorOffset:o});typeof n=="number"&&(n={top:n,bottom:n,left:n,right:n});const l={target:this.domConverter.viewRangeToDom(s),viewportOffset:n,ancestorOffset:o,alignToTop:e,forceScroll:t};this.fire("scrollToTheSelection",l,a),jb(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 b("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 */b.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.getObserver(Kr).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 Lt(...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 $t{is(){throw new Error("is() method is abstract")}}class it extends $t{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 b("model-textproxy-wrong-offsetintext",this);if(n<0||t+n>e.offsetSize)throw new b("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()}}it.prototype.is=function(r){return r==="$textProxy"||r==="model:$textProxy"||r==="textProxy"||r==="model:textProxy"};class Ct{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 b("model-tree-walker-no-start-position",null);const e=i.direction||"forward";if(e!="forward"&&e!="backward")throw new b("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=_._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,o;do n=this.position,o=this._visitedParent,{done:e,value:t}=this.next();while(!e&&i(t));e||(this._position=n,this._visitedParent=o)}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=bn(e,t),o=n||am(e,t,n);if(o&&o.is("model:element")){if(!this.shallow)e.path.push(0),this._visitedParent=o;else{if(this.boundaries&&this.boundaries.end.isBefore(e))return{done:!0,value:void 0};e.offset++}return this._position=e,Yt("elementStart",o,i,e,1)}if(o&&o.is("model:$text")){let s;if(this.singleCharacters)s=1;else{let c=o.endOffset;this._boundaryEndParent==t&&this.boundaries.end.offset<c&&(c=this.boundaries.end.offset),s=c-e.offset}const a=e.offset-o.startOffset,l=new it(o,a,s);return e.offset+=s,this._position=e,Yt("text",l,i,e,s)}return e.path.pop(),e.offset++,this._position=e,this._visitedParent=t.parent,this.ignoreElementEnd?this._next():Yt("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,o=bn(e,n),s=o||lm(e,n,o);if(s&&s.is("model:element"))return e.offset--,this.shallow?(this._position=e,Yt("elementStart",s,i,e,1)):(e.path.push(s.maxOffset),this._position=e,this._visitedParent=s,this.ignoreElementEnd?this._previous():Yt("elementEnd",s,i,e));if(s&&s.is("model:$text")){let a;if(this.singleCharacters)a=1;else{let d=s.startOffset;this._boundaryStartParent==t&&this.boundaries.start.offset>d&&(d=this.boundaries.start.offset),a=e.offset-d}const l=e.offset-s.startOffset,c=new it(s,l-a,a);return e.offset-=a,this._position=e,Yt("text",c,i,e,a)}return e.path.pop(),this._position=e,this._visitedParent=t.parent,Yt("elementStart",t,i,e,1)}}function Yt(r,i,e,t,n){return{done:!1,value:{type:r,item:i,previousPosition:e,nextPosition:t,length:n}}}let _=class ut extends $t{constructor(e,t,n="toNone"){super();u(this,"root");u(this,"path");u(this,"stickiness");if(!e.is("element")&&!e.is("documentFragment"))throw new b("model-position-root-invalid",e);if(!Array.isArray(t)||t.length===0)throw new b("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 b("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new b("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return bn(this,this.parent)}get nodeAfter(){const e=this.parent;return am(this,e,bn(this,e))}get nodeBefore(){const e=this.parent;return lm(this,e,bn(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 Ct(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 o=0;for(;t[o]==n[o]&&t[o];)o++;return o===0?null:t[o-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 o=this.path[n]-e.path[n];if(o<-1||o>1)return!1;if(o===1)return uc(e,this,n);if(o===-1)return uc(this,e,n)}return this.path.length===e.path.length?!0:this.path.length>e.path.length?As(this.path,t):As(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=ut._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 o;return n?(o=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(o=o._getTransformedByDeletion(e.deletionPosition,1))):this.isEqual(e.deletionPosition)?o=ut._createAt(e.deletionPosition):o=this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),o}_getTransformedByDeletion(e,t){const n=ut._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 o=e.path.length-1;if(e.offset<=this.path[o]){if(e.offset+t>this.path[o])return null;n.path[o]-=t}}return n}_getTransformedByInsertion(e,t){const n=ut._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 o=e.path.length-1;e.offset<=this.path[o]&&(n.path[o]+=t)}return n}_getTransformedByMove(e,t,n){if(t=t._getTransformedByDeletion(e,n),e.isEqual(t))return ut._createAt(this);const o=this._getTransformedByDeletion(e,n);return o===null||e.isEqual(this)&&this.stickiness=="toNext"||e.getShiftedBy(n).isEqual(this)&&this.stickiness=="toPrevious"?this._getCombined(e,t):o._getTransformedByInsertion(t,n)}_getCombined(e,t){const n=e.path.length-1,o=ut._createAt(t);return o.stickiness=this.stickiness,o.offset=o.offset+this.path[n]-e.offset,o.path=[...o.path,...this.path.slice(n+1)],o}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 ut(e.root,e.path,e.stickiness);{const o=e;if(t=="end")t=o.maxOffset;else{if(t=="before")return this._createBefore(o,n);if(t=="after")return this._createAfter(o,n);if(t!==0&&!t)throw new b("model-createpositionat-offset-required",[this,e])}if(!o.is("element")&&!o.is("documentFragment"))throw new b("model-position-parent-incorrect",[this,e]);const s=o.getPath();return s.push(t),new this(o.root,s,n)}}static _createAfter(e,t){if(!e.parent)throw new b("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 b("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 ut(t.graveyard,e.path);return n.stickiness=e.stickiness,n}if(!t.getRoot(e.root))throw new b("model-position-fromjson-no-root",t,{rootName:e.root});return new ut(t.getRoot(e.root),e.path,e.stickiness)}};_.prototype.is=function(r){return r==="position"||r==="model:position"};function bn(r,i){const e=i.getChildAtOffset(r.offset);return e&&e.is("$text")&&e.startOffset<r.offset?e:null}function am(r,i,e){return e!==null?null:i.getChildAtOffset(r.offset)}function lm(r,i,e){return e!==null?null:i.getChild(i.offsetToIndex(r.offset)-1)}function uc(r,i,e){return!(e+1===r.path.length||!As(i.path,e+1)||!Ck(r,e+1))}function As(r,i){for(;i<r.length;){if(r[i]!==0)return!1;i++}return!0}function Ck(r,i){let e=r.parent,t=r.path.length-1,n=0;for(;t>=i;){if(r.path[t]+n!==e.maxOffset)return!1;n=1,t--,e=e.parent}return!0}class k extends $t{constructor(e,t){super();u(this,"start");u(this,"end");this.start=_._createAt(e),this.end=t?_._createAt(t):_._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new Ct({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),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return n&&o}containsItem(e){const t=_._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 k(this.start,e.start)),this.containsPosition(e.end)&&t.push(new k(e.end,this.end))):t.push(new k(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 k(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 o=this.start,s=this.end;return e.start.isBefore(o)&&(o=e.start),e.end.isAfter(s)&&(s=e.end),new k(o,s)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,n=_._createAt(this.start);let o=n.parent;for(;n.path.length>t+1;){const s=o.maxOffset-n.offset;s!==0&&e.push(new k(n,n.getShiftedBy(s))),n.path=n.path.slice(0,-1),n.offset++,o=o.parent}for(;n.path.length<=this.end.path.length;){const s=this.end.path[n.path.length-1],a=s-n.offset;a!==0&&e.push(new k(n,n.getShiftedBy(a))),n.offset=s,n.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new Ct(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new Ct(e);for(const n of t)yield n.item}*getPositions(e={}){e.boundaries=this;const t=new Ct(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 k(this.start,this.end)]}getTransformedByOperations(e){const t=[new k(this.start,this.end)];for(const n of e)for(let o=0;o<t.length;o++){const s=t[o].getTransformedByOperation(n);t.splice(o,1,...s),o+=s.length-1}for(let n=0;n<t.length;n++){const o=t[n];for(let s=n+1;s<t.length;s++){const a=t[s];(o.containsRange(a)||a.containsRange(o)||o.isEqual(a))&&t.splice(s,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,o=e.howMany,s=e.targetPosition;return this._getTransformedByMove(n,s,o,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 k(t,n)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new k(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=_._createAt(n),t.offset=0):(e.deletionPosition.isEqual(t)||(n=e.deletionPosition),t=e.targetPosition),new k(t,n)):new k(t,n)}_getTransformedByInsertion(e,t,n=!1){if(n&&this.containsPosition(e))return[new k(this.start,e),new k(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const o=new k(this.start,this.end);return o.start=o.start._getTransformedByInsertion(e,t),o.end=o.end._getTransformedByInsertion(e,t),[o]}}_getTransformedByMove(e,t,n,o=!1){if(this.isCollapsed){const m=this.start._getTransformedByMove(e,t,n);return[new k(m)]}const s=k._createFromPositionAndShift(e,n),a=t._getTransformedByDeletion(e,n);if(this.containsPosition(t)&&!o&&(s.containsPosition(this.start)||s.containsPosition(this.end))){const m=this.start._getTransformedByMove(e,t,n),g=this.end._getTransformedByMove(e,t,n);return[new k(m,g)]}let l;const c=this.getDifference(s);let d=null;const h=this.getIntersection(s);if(c.length==1?d=new k(c[0].start._getTransformedByDeletion(e,n),c[0].end._getTransformedByDeletion(e,n)):c.length==2&&(d=new k(this.start,this.end._getTransformedByDeletion(e,n))),d?l=d._getTransformedByInsertion(a,n,h!==null||o):l=[],h){const m=new k(h.start._getCombined(s.start,a),h.end._getCombined(s.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),o=this.end._getTransformedByDeletion(e,t);return n==null&&o==null?null:(n==null&&(n=e),o==null&&(o=e),new k(n,o))}static _createFromPositionAndShift(e,t){const n=e,o=e.getShiftedBy(t);return t>0?new this(n,o):new this(o,n)}static _createIn(e){return new this(_._createAt(e,0),_._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(_._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(e.length===0)throw new b("range-create-from-ranges-empty-array",null);if(e.length==1)return e[0].clone();const t=e[0];e.sort((s,a)=>s.start.isAfter(a.start)?1:-1);const n=e.indexOf(t),o=new this(t.start,t.end);for(let s=n-1;s>=0&&e[s].end.isEqual(o.start);s--)o.start=_._createAt(e[s].start);for(let s=n+1;s<e.length&&e[s].start.isEqual(o.end);s++)o.end=_._createAt(e[s].end);return o}static fromJSON(e,t){return new this(_.fromJSON(e.start,t),_.fromJSON(e.end,t))}}k.prototype.is=function(r){return r==="range"||r==="model:range"};class cm extends j(){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 Lk);this.on("modelToViewPosition",(e,t)=>{if(t.viewPosition)return;const n=this._modelToViewMapping.get(t.modelPosition.parent);if(!n)throw new b("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),o=this._viewToModelMapping.get(n),s=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,n);t.modelPosition=_._createAt(o,s)},{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 o of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(o);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 o=this._elementToMarkerNames.get(e)||new Set;o.add(t),this._markerNameToElements.set(t,n),this._elementToMarkerNames.set(e,o)}unbindElementFromMarkerName(e,t){const n=this._markerNameToElements.get(t);n&&(n.delete(e),n.size==0&&this._markerNameToElements.delete(t));const o=this._elementToMarkerNames.get(e);o&&(o.delete(t),o.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 k(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 o of t)if(o.is("attributeElement"))for(const s of o.getElementsWithSameId())n.add(s);else n.add(o);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 s=this._toModelOffset(e.parent,e.index,n),a=this._toModelOffset(e,t,e);return s+a}if(e.is("$text"))return t;let o=0;for(let s=0;s<t;s++)o+=this.getModelLength(e.getChild(s));return o}getModelLength(e){const t=[e];let n=0;for(;t.length>0;){const o=t.pop(),s=o.name&&this._viewToModelLengthCallbacks.size>0&&this._viewToModelLengthCallbacks.get(o.name);if(s)n+=s(o);else if(this._viewToModelMapping.has(o))n+=1;else if(o.is("$text"))n+=o.data.length;else{if(o.is("uiElement"))continue;for(const a of o.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 o=this._cache.getClosest(e,t);return this._findPositionStartingFrom(o.viewPosition,o.modelOffset,t,e,!0)}else return this._findPositionStartingFrom(new L(e,0),0,t,e,!1)}_findPositionStartingFrom(e,t,n,o,s){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==o)throw new b("mapping-model-offset-not-found",this,{modelOffset:n,viewContainer:o});l=a.parent.getChildIndex(a)+1,a=a.parent,s&&this._cache.save(a,l,o,d);continue}s?h=this._getModelLengthAndCache(c,o,d):h=this.getModelLength(c),d+=h,l++}let m=new L(a,l);if(s)for(;m.isAtEnd&&m.parent!==o&&m.parent.parent;){const g=m.parent.parent,f=g.getChildIndex(m.parent)+1;this._cache.save(g,f,o,d),m=new L(g,f)}return d==n?this._moveViewPositionToTextNode(m):this._findPositionStartingFrom(new L(c,0),d-h,n,o,s)}_getModelLengthAndCache(e,t,n){let o=0;if(this._viewToModelMapping.has(e))o=1;else if(e.is("$text"))o=e.data.length;else if(!e.is("uiElement"))for(const s of e.getChildren())o+=this._getModelLengthAndCache(s,t,n+o);return this._cache.save(e.parent,e.index+1,t,n+o),o}_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 Lk extends j(){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,o){const s=this._cachedMapping.get(n),a=s.cacheMap.get(o);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:o};s.maxModelOffset=o>s.maxModelOffset?o:s.maxModelOffset,s.cacheMap.set(o,c);let d=s.cacheList.length-1;for(;d>=0&&s.cacheList[d].modelOffset>o;)d--;if(s.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 o;if(n)if(t>n.maxModelOffset)o=n.cacheList[n.cacheList.length-1];else{const s=n.cacheMap.get(t);s?o=s:o=this._findInCacheList(n.cacheList,t)}else o=this.startTracking(e);return{modelOffset:o.modelOffset,viewPosition:o.viewPosition.clone()}}startTracking(e){const n={viewPosition:new L(e,0),modelOffset:0},o={maxModelOffset:0,cacheList:[n],cacheMap:new Map([[0,n]])};return this._cachedMapping.set(e,o),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 o=e.parent;this._cachedMapping.has(o)||this._clearCacheInsideParent(o.parent,o.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),o=n.cacheList[t-1];if(!o)return;n.maxModelOffset=o.modelOffset;const s=n.cacheList.splice(t);for(const a of s){n.cacheMap.delete(a.modelOffset);const l=a.viewPosition.nodeBefore;this._nodeToCacheListIndex.delete(l)}}_findInCacheList(e,t){let n=0,o=e.length-1,s=o-n>>1,a=e[s];for(;n<o;)a.modelOffset<t?n=s+1:o=s-1,s=n+(o-n>>1),a=e[s];return a.modelOffset<=t?a:e[s-1]}}class Tk{constructor(){u(this,"_consumable",new Map);u(this,"_textProxyRegistry",new Map)}add(i,e){e=sr(e),i instanceof it&&(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=sr(e),i instanceof it&&(i=this._getSymbolForTextProxy(i)),this.test(i,e)?(this._consumable.get(i).set(e,!1),!0):!1}test(i,e){e=sr(e),i instanceof it&&(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=sr(e),i instanceof it&&(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[o,s]of n){const a=o.split(":")[0];s&&i==a&&e.push({event:o,item:t.name||t.description})}if(e.length)throw new b("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,o=Symbol("$textProxy:"+i.data);let s,a;return s=this._textProxyRegistry.get(e),s||(s=new Map,this._textProxyRegistry.set(e,s)),a=s.get(t),a||(a=new Map,s.set(t,a)),a.set(n,o),o}}function sr(r){const i=r.split(":");return i[0]=="insert"?i[0]:i[0]=="addMarker"||i[0]=="removeMarker"?r:i.length>1?i[0]+":"+i[1]:i[0]}class dm extends j(){constructor(e){super();u(this,"_conversionApi");u(this,"_firedEventsMap");this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,n){const o=this._createConversionApi(n,e.getRefreshedItems());for(const a of e.getMarkersToRemove())this._convertMarkerRemove(a.name,a.range,o);const s=this._reduceChanges(e.getChanges());for(const a of s)a.type==="insert"?this._convertInsert(k._createFromPositionAndShift(a.position,a.length),o):a.type==="reinsert"?this._convertReinsert(k._createFromPositionAndShift(a.position,a.length),o):a.type==="remove"?this._convertRemove(a.position,a.length,a.name,o):this._convertAttribute(a.range,a.attributeKey,a.attributeOldValue,a.attributeNewValue,o);o.mapper.flushDeferredBindings();for(const a of o.mapper.flushUnboundMarkerNames()){const l=t.get(a).getRange();this._convertMarkerRemove(a,l,o),this._convertMarkerAdd(a,l,o)}for(const a of e.getMarkersToAdd())this._convertMarkerAdd(a.name,a.range,o);o.consumable.verifyAllConsumed("insert")}convert(e,t,n,o={}){const s=this._createConversionApi(n,void 0,o);this._convertInsert(e,s);for(const[a,l]of t)this._convertMarkerAdd(a,l,s);s.consumable.verifyAllConsumed("insert")}convertSelection(e,t,n){const o=this._createConversionApi(n);this.fire("cleanSelection",{selection:e},o);const s=e.getFirstPosition().root;if(!o.mapper.toViewElement(s))return;const a=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this._addConsumablesForSelection(o.consumable,e,a),this.fire("selection",{selection:e},o),!!e.isCollapsed){for(const l of a)if(o.consumable.test(e,"addMarker:"+l.name)){const c=l.getRange();if(!Ek(e.getFirstPosition(),l,o.mapper))continue;const d={item:e,markerName:l.name,markerRange:c};this.fire(`addMarker:${l.name}`,d,o)}for(const l of e.getAttributeKeys())if(o.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,o)}}}_convertInsert(e,t,n={}){n.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,e);for(const o of e.getWalker({shallow:!0}))this._testAndFire("insert",hc(o),t)}_convertRemove(e,t,n,o){this.fire(`remove:${n}`,{position:e,length:t},o)}_convertAttribute(e,t,n,o,s){this._addConsumablesForRange(s.consumable,e,`attribute:${t}`);for(const a of e){const l={item:a.item,range:k._createFromPositionAndShift(a.previousPosition,a.length),attributeKey:t,attributeOldValue:n,attributeNewValue:o};this._testAndFire(`attribute:${t}`,l,s)}}_convertReinsert(e,t){const n=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,n);for(const o of n.map(hc))this._testAndFire("insert",{...o,reconversion:!0},t)}_convertMarkerAdd(e,t,n){if(t.root.rootName=="$graveyard")return;const o=`addMarker:${e}`;if(n.consumable.add(t,o),this.fire(o,{markerName:e,markerRange:t},n),!!n.consumable.consume(t,o)){this._addConsumablesForRange(n.consumable,t,o);for(const s of t.getItems()){if(!n.consumable.test(s,o))continue;const a={item:s,range:k._createOn(s),markerName:e,markerRange:t};this.fire(o,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 o=n.item;if(e.test(o,"insert")===null){e.add(o,"insert");for(const s of o.getAttributeKeys())e.add(o,"attribute:"+s)}}return e}_addConsumablesForRange(e,t,n){for(const o of t.getItems())e.add(o,n);return e}_addConsumablesForSelection(e,t,n){e.add(t,"selection");for(const o of n)e.add(t,"addMarker:"+o.name);for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o);return e}_testAndFire(e,t,n){const o=xk(e,t),s=t.item.is("$textProxy")?n.consumable._getSymbolForTextProxy(t.item):t.item,a=this._firedEventsMap.get(n),l=a.get(s);if(!l)a.set(s,new Set([o]));else if(!l.has(o))l.add(o);else return;this.fire(o,t,n)}_testAndFireAddAttributes(e,t){const n={item:e,range:k._createOn(e)};for(const o of n.item.getAttributeKeys())n.attributeKey=o,n.attributeOldValue=null,n.attributeNewValue=n.item.getAttribute(o),this._testAndFire(`attribute:${o}`,n,t)}_createConversionApi(e,t=new Set,n={}){const o={...this._conversionApi,consumable:new Tk,writer:e,options:n,convertItem:s=>this._convertInsert(k._createOn(s),o),convertChildren:s=>this._convertInsert(k._createIn(s),o,{doNotAddConsumables:!0}),convertAttributes:s=>this._testAndFireAddAttributes(s,o),canReuseView:s=>!t.has(o.mapper.toModelElement(s))};return this._firedEventsMap.set(o,new Map),o}}function Ek(r,i,e){const t=i.getRange(),n=Array.from(r.getAncestors());return n.shift(),n.reverse(),!n.some(s=>{if(t.containsItem(s))return!!e.toViewElement(s).getCustomProperty("addHighlight")})}function xk(r,i){const e=i.item.is("element")?i.item.name:"$text";return`${r}:${e}`}function hc(r){return{item:r.item,range:k._createFromPositionAndShift(r.previousPosition,r.length)}}let di=class extends $t{constructor(e){super();u(this,"parent",null);u(this,"_attrs");u(this,"_index",null);u(this,"_startOffset",null);this._attrs=St(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),o=e.getAncestors(t);let s=0;for(;n[s]==o[s]&&n[s];)s++;return s===0?null:n[s-1]}isBefore(e){if(this==e||this.root!==e.root)return!1;const t=this.getPath(),n=e.getPath(),o=Ee(t,n);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<n[o]}}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=St(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}};di.prototype.is=function(r){return r==="node"||r==="model:node"};class Oe extends j($t){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 o of e._ranges)if(t.isEqual(o)){n=!0;break}if(!n)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new k(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 k(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 k(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,o]=e;if(typeof n=="object"&&(o=n,n=void 0),t===null)this._setRanges([]);else if(t instanceof Oe)this._setRanges(t.getRanges(),t.isBackward);else if(t&&typeof t.getRanges=="function")this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof k)this._setRanges([t],!!o&&!!o.backward);else if(t instanceof _)this._setRanges([new k(t)]);else if(t instanceof di){const s=!!o&&!!o.backward;let a;if(n=="in")a=k._createIn(t);else if(n=="on")a=k._createOn(t);else if(n!==void 0)a=new k(_._createAt(t,n));else throw new b("model-selection-setto-required-second-parameter",[this,t]);this._setRanges([a],s)}else if(Ue(t))this._setRanges(t,o&&!!o.backward);else throw new b("model-selection-setto-not-selectable",[this,t])}_setRanges(e,t=!1){const n=Array.from(e),o=n.some(s=>{if(!(s instanceof k))throw new b("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every(a=>!a.isEqual(s))});n.length===this._ranges.length&&!o||(this._replaceAllRanges(n),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(this.anchor===null)throw new b("model-selection-setfocus-no-ranges",[this,e]);const n=_._createAt(e,t);if(n.compareWith(this.focus)=="same")return;const o=this.anchor;this._ranges.length&&this._popRange(),n.compareWith(o)=="before"?(this._pushRange(new k(n,o)),this._lastRangeBackward=!0):(this._pushRange(new k(o,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=mc(t.start,e);Ak(n,t)&&(yield n);const o=t.getWalker();for(const a of o){const l=a.item;a.type=="elementEnd"&&Sk(l,e,t)?yield l:a.type=="elementStart"&&l.is("model:element")&&l.root.document.model.schema.isBlock(l)&&o.jumpTo(_._createAt(l,"end"))}const s=mc(t.end,e);Pk(s,t)&&(yield s)}}containsEntireContent(e=this.anchor.root){const t=_._createAt(e,0),n=_._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new k(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new b("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()}}Oe.prototype.is=function(r){return r==="selection"||r==="model:selection"};function um(r,i){return i.has(r)?!1:(i.add(r),r.root.document.model.schema.isBlock(r)&&!!r.parent)}function Sk(r,i,e){return um(r,i)&&Sa(r,e)}function mc(r,i){const t=r.parent.root.document.model.schema,n=r.parent.getAncestors({parentFirst:!0,includeSelf:!0});let o=!1;const s=n.find(a=>o?!1:(o=t.isLimit(a),!o&&um(a,i)));return n.forEach(a=>i.add(a)),s}function Sa(r,i){const e=Ik(r);return e?!i.containsRange(k._createOn(e),!0):!0}function Ak(r,i){return r?i.isCollapsed||r.isEmpty?!0:i.start.isTouching(_._createAt(r,r.maxOffset))?!1:Sa(r,i):!1}function Pk(r,i){return r?i.isCollapsed||r.isEmpty?!0:i.end.isTouching(_._createAt(r,0))?!1:Sa(r,i):!1}function Ik(r){const i=r.root.document.model.schema;let e=r.parent;for(;e;){if(i.isBlock(e))return e;e=e.parent}}class Ke extends j(k){constructor(i,e){super(i,e),Rk.call(this)}detach(){this.stopListening()}toRange(){return new k(this.start,this.end)}static fromRange(i){return new Ke(i.start,i.end)}}Ke.prototype.is=function(r){return r==="liveRange"||r==="model:liveRange"||r=="range"||r==="model:range"};function Rk(){this.listenTo(this.root.document.model,"applyOperation",(r,i)=>{const e=i[0];e.isDocumentOperation&&Mk.call(this,e)},{priority:"low"})}function Mk(r){const i=this.getTransformedByOperation(r),e=k._createFromRanges(i),t=!e.isEqual(this),n=Bk(this,r);let o=null;if(t){e.root.rootName=="$graveyard"&&(r.type=="remove"?o=r.sourcePosition:o=r.deletionPosition);const s=this.toRange();this.start=e.start,this.end=e.end,this.fire("change:range",s,{deletionPosition:o})}else n&&this.fire("change:content",this.toRange(),{deletionPosition:o})}function Bk(r,i){switch(i.type){case"insert":return r.containsPosition(i.position);case"move":case"remove":case"reinsert":case"merge":return r.containsPosition(i.sourcePosition)||r.start.isEqual(i.sourcePosition)||r.containsPosition(i.targetPosition);case"split":return r.containsPosition(i.splitPosition)||r.containsPosition(i.insertionPosition)}return!1}class J extends di{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(r){return r==="$text"||r==="model:$text"||r==="text"||r==="model:text"||r==="node"||r==="model:node"};const Rn="selection:";class st extends j($t){constructor(e){super();u(this,"_selection");this._selection=new Vk(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 Rn+e}static _isStoreAttributeKey(e){return e.startsWith(Rn)}}st.prototype.is=function(r){return r==="selection"||r=="model:selection"||r=="documentSelection"||r=="model:documentSelection"};class Vk extends Oe{constructor(e){super();u(this,"markers",new We({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 o=n[0];!o.isDocumentOperation||o.type=="marker"||o.type=="rename"||o.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,o,s)=>{this._updateMarker(n,s)}),this.listenTo(this._document,"change",(t,n)=>{Nk(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=Ve();return this._overriddenGravityRegister.add(e),this._overriddenGravityRegister.size===1&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new b("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 b("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=Ke.fromRange(e);return t.on("change:range",(n,o,s)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=s.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 o of this._model.markers){const s=o.name.split(":",1)[0];if(!this._observedMarkers.has(s))continue;const a=o.getRange();for(const l of this.getRanges())a.containsRange(l,!l.isCollapsed)&&e.push(o)}const n=Array.from(this.markers);for(const o of e)this.markers.has(o)||(this.markers.add(o),t=!0);for(const o of Array.from(this.markers))e.includes(o)||(this.markers.remove(o),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 o=!1;const s=Array.from(this.markers),a=this.markers.has(e);if(!t)a&&(this.markers.remove(e),o=!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),o=!0):!l&&a&&(this.markers.remove(e),o=!0)}o&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateAttributes(e){const t=St(this._getSurroundingAttributes()),n=St(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[s,a]of this._attributePriority)a=="low"&&(this._attrs.delete(s),this._attributePriority.delete(s));this._setAttributesTo(t);const o=[];for(const[s,a]of this.getAttributes())(!n.has(s)||n.get(s)!==a)&&o.push(s);for(const[s]of n)this.hasAttribute(s)||o.push(s);o.length>0&&this.fire("change:attribute",{attributeKeys:o,directChange:!1})}_setAttribute(e,t,n=!0){const o=n?"normal":"low";return o=="low"&&this._attributePriority.get(e)=="normal"||super.getAttribute(e)===t?!1:(this._attrs.set(e,t),this._attributePriority.set(e,o),!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,o]of this.getAttributes())e.get(n)!==o&&this._removeAttribute(n,!1);for(const[n,o]of e)this._setAttribute(n,o,!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(Rn)&&(yield[t.substr(Rn.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 o=e.textNode?e.textNode:e.nodeBefore,s=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(n=en(o,t)),n||(n=en(s,t)),!this.isGravityOverridden&&!n){let a=o;for(;a&&!n;)a=a.previousSibling,n=en(a,t)}if(!n){let a=s;for(;a&&!n;)a=a.nextSibling,n=en(a,t)}n||(n=this.getStoredAttributes())}else{const o=this.getFirstRange();for(const s of o){if(s.item.is("element")&&t.isObject(s.item)){n=en(s.item,t);break}if(s.type=="text"){n=s.item.getAttributes();break}}}return n}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function en(r,i){if(!r)return null;if(r instanceof it||r instanceof J)return r.getAttributes();if(!i.isInline(r))return null;if(!i.isObject(r))return[];const e=[];for(const[t,n]of r.getAttributes())i.checkAttribute("$text",t)&&i.getAttributeProperties(t).copyFromObject!==!1&&e.push([t,n]);return e}function Nk(r,i){const e=r.document.differ;for(const t of e.getChanges()){if(t.type!="insert")continue;const n=t.position.parent;t.length===n.maxOffset&&r.enqueueChange(i,s=>{const a=Array.from(n.getAttributeKeys()).filter(l=>l.startsWith(Rn));for(const l of a)s.removeAttribute(l,n)})}}class wn{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 b("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 b("model-nodelist-offset-out-of-bounds",this,{offset:i,nodeList:this});return this.getNodeIndex(e)}_insertNodes(i,e){const t=[];for(const o of e){if(!(o instanceof di))throw new b("model-nodelist-insertnodes-not-node",this);t.push(o)}let n=this.indexToOffset(i);Jl(this._nodes,t,i),Jl(this._offsetToNode,Dk(t),n);for(let o=i;o<this._nodes.length;o++)this._nodes[o]._index=o,this._nodes[o]._startOffset=n,n+=this._nodes[o].offsetSize}_removeNodes(i,e=1){if(e==0)return[];let t=this.indexToOffset(i);const n=this._nodes.splice(i,e),o=n[n.length-1],s=o.startOffset+o.offsetSize-t;this._offsetToNode.splice(t,s);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 Dk(r){const i=[];let e=0;for(const t of r)for(let n=0;n<t.offsetSize;n++)i[e++]=t;return i}class $ extends di{constructor(e,t,n){super(t);u(this,"name");u(this,"_children",new wn);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?zk(this._children):void 0;return new $(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const n=Ok(t);for(const o of n)o.parent!==null&&o._remove(),o.parent=this;this._children._insertNodes(e,n)}_removeChildren(e,t=1){const n=this._children._removeNodes(e,t);for(const o of n)o.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(r,i){return i?i===this.name&&(r==="element"||r==="model:element"):r==="element"||r==="model:element"||r==="node"||r==="model:node"};function Ok(r){if(typeof r=="string")return[new J(r)];Ue(r)||(r=[r]);const i=[];for(const e of r)typeof e=="string"?i.push(new J(e)):e instanceof it?i.push(new J(e.data,e.getAttributes())):i.push(e);return i}function zk(r){const i=[];for(const e of r)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 hm{constructor(i){u(this,"_dispatchers");this._dispatchers=i}add(i){for(const e of this._dispatchers)i(e);return this}}class Fk extends hm{elementToElement(i){return this.add(ry(i))}elementToStructure(i){return this.add(oy(i))}attributeToElement(i){return this.add(sy(i))}attributeToAttribute(i){return this.add(ay(i))}markerToElement(i){return this.add(ly(i))}markerToHighlight(i){return this.add(dy(i))}markerToData(i){return this.add(cy(i))}}function mm(){return(r,i,e)=>{if(!e.consumable.consume(i.item,r.name))return;const t=e.writer,n=e.mapper.toViewPosition(i.range.start),o=t.createText(i.item.data);t.insert(n,o)}}function gm(){return(r,i,e)=>{e.convertAttributes(i.item),!i.reconversion&&i.item.is("element")&&!i.item.isEmpty&&e.convertChildren(i.item)}}function Uk(){return(r,i,e)=>{const t=e.mapper.toViewPosition(i.position),n=i.position.getShiftedBy(i.length),o=e.mapper.toViewPosition(n,{isPhantom:!0}),s=e.writer.createRange(t,o),a=e.writer.remove(s.getTrimmed());for(const l of e.writer.createRangeIn(a).getItems())e.mapper.unbindViewElement(l,{defer:!0})}}function fm(r,i){const e=r.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 Hk(){return(r,i,e)=>{const t=i.selection;if(t.isCollapsed||!e.consumable.consume(t,"selection"))return;const n=[];for(const o of t.getRanges())n.push(e.mapper.toViewRange(o));e.writer.setSelection(n,{backward:t.isBackward})}}function Wk(){return(r,i,e)=>{const t=i.selection;if(!t.isCollapsed||!e.consumable.consume(t,"selection"))return;const n=e.writer,o=t.getFirstPosition(),s=e.mapper.toViewPosition(o),a=n.breakAttributes(s);n.setSelection(a)}}function qk(){return(r,i,e)=>{const t=e.writer,n=t.document.selection;for(const o of n.getRanges())o.isCollapsed&&o.end.parent.isAttached()&&e.writer.mergeAttributes(o.start);t.setSelection(null)}}function jk(r){return(i,e,t)=>{if(!t.consumable.test(e.item,i.name))return;const n=r(e.attributeOldValue,t,e),o=r(e.attributeNewValue,t,e);if(!n&&!o)return;t.consumable.consume(e.item,i.name);const s=t.writer,a=s.document.selection;if(e.item instanceof Oe||e.item instanceof st)s.wrap(a.getFirstRange(),o);else{let l=t.mapper.toViewRange(e.range);e.attributeOldValue!==null&&n&&(l=s.unwrap(l,n)),e.attributeNewValue!==null&&o&&s.wrap(l,o)}}}function Gk(r,i=by){return(e,t,n)=>{if(!i(t.item,n.consumable,{preflight:!0}))return;const o=r(t.item,n,t);if(!o)return;i(t.item,n.consumable);const s=n.mapper.toViewPosition(t.range.start);n.mapper.bindElements(t.item,o),n.writer.insert(s,o),n.convertAttributes(t.item),ym(o,t.item.getChildren(),n,{reconversion:t.reconversion})}}function Kk(r,i){return(e,t,n)=>{if(!i(t.item,n.consumable,{preflight:!0}))return;const o=new Map;n.writer._registerSlotFactory(my(t.item,o,n));const s=r(t.item,n,t);if(n.writer._clearSlotFactory(),!s)return;gy(t.item,o,n),i(t.item,n.consumable);const a=n.mapper.toViewPosition(t.range.start);n.mapper.bindElements(t.item,s),n.writer.insert(a,s),n.convertAttributes(t.item),fy(s,o,n,{reconversion:t.reconversion})}}function $k(r){return(i,e,t)=>{e.isOpening=!0;const n=r(e,t);e.isOpening=!1;const o=r(e,t);if(!n||!o)return;const s=e.markerRange;if(s.isCollapsed&&!t.consumable.consume(s,i.name))return;for(const c of s)if(!t.consumable.consume(c.item,i.name))return;const a=t.mapper,l=t.writer;l.insert(a.toViewPosition(s.start),n),t.mapper.bindElementToMarker(n,e.markerName),s.isCollapsed||(l.insert(a.toViewPosition(s.end),o),t.mapper.bindElementToMarker(o,e.markerName)),i.stop()}}function Zk(){return(r,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),r.stop()}}}function Jk(r){return(i,e,t)=>{const n=r(e.markerName,t);if(!n)return;const o=e.markerRange;t.consumable.consume(o,i.name)&&(gc(o,!1,t,e,n),gc(o,!0,t,e,n),i.stop())}}function gc(r,i,e,t,n){const o=i?r.start:r.end,s=o.nodeAfter&&o.nodeAfter.is("element")?o.nodeAfter:null,a=o.nodeBefore&&o.nodeBefore.is("element")?o.nodeBefore:null;if(s||a){let c,d;i&&s||!i&&!a?(c=s,d=!0):(c=a,d=!1);const h=e.mapper.toViewElement(c);if(h){Yk(h,i,d,e,t,n);return}}const l=e.mapper.toViewPosition(o);Xk(l,i,e,t,n)}function Yk(r,i,e,t,n,o){const s=`data-${o.group}-${i?"start":"end"}-${e?"before":"after"}`,a=r.hasAttribute(s)?r.getAttribute(s).split(","):[];a.unshift(o.name),t.writer.setAttribute(s,a.join(","),r),t.mapper.bindElementToMarker(r,n.markerName)}function Xk(r,i,e,t,n){const o=`${n.group}-${i?"start":"end"}`,s=n.name?{name:n.name}:null,a=e.writer.createUIElement(o,s);e.writer.insert(r,a),e.mapper.bindElementToMarker(a,t.markerName)}function Qk(r){return(i,e,t)=>{const n=r(e.markerName,t);if(!n)return;const o=t.mapper.markerNameToElements(e.markerName);if(!o)return;for(const a of o)t.mapper.unbindElementFromMarkerName(a,e.markerName),a.is("containerElement")?(s(`data-${n.group}-start-before`,a),s(`data-${n.group}-start-after`,a),s(`data-${n.group}-end-before`,a),s(`data-${n.group}-end-after`,a)):t.writer.clear(t.writer.createRangeOn(a),a);t.writer.clearClonedElementsGroup(e.markerName),i.stop();function s(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 ey(r){return(i,e,t)=>{if(!t.consumable.test(e.item,i.name))return;const n=r(e.attributeOldValue,t,e),o=r(e.attributeNewValue,t,e);if(!n&&!o)return;t.consumable.consume(e.item,i.name);const s=t.mapper.toViewElement(e.item),a=t.writer;if(!s)throw new b("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 pn(a.document.stylesProcessor).setTo(n.value).getStylesEntries().map(([c])=>c):l=Object.keys(n.value)),a.removeAttribute(n.key,l,s)}if(e.attributeNewValue!==null&&o){let l=o.value;o.key=="style"&&typeof o.value=="string"&&(l=Object.fromEntries(new pn(a.document.stylesProcessor).setTo(o.value).getStylesEntries())),a.setAttribute(o.key,l,!1,s)}}}function ty(r){return(i,e,t)=>{if(!e.item||!(e.item instanceof Oe||e.item instanceof st)&&!e.item.is("$textProxy"))return;const n=Aa(r,e,t);if(!n||!t.consumable.consume(e.item,i.name))return;const o=t.writer,s=fm(o,n),a=o.document.selection;if(e.item instanceof Oe||e.item instanceof st)o.wrap(a.getFirstRange(),s);else{const l=t.mapper.toViewRange(e.range),c=o.wrap(l,s);for(const d of c.getItems())if(d.is("attributeElement")&&d.isSimilar(s)){t.mapper.bindElementToMarker(d,e.markerName);break}}}}function iy(r){return(i,e,t)=>{if(!e.item||!(e.item instanceof $))return;const n=Aa(r,e,t);if(!n||!t.consumable.test(e.item,i.name))return;const o=t.mapper.toViewElement(e.item);if(o&&o.getCustomProperty("addHighlight")){t.consumable.consume(e.item,i.name);for(const a of k._createIn(e.item))t.consumable.consume(a.item,i.name);o.getCustomProperty("addHighlight")(o,n,t.writer),t.mapper.bindElementToMarker(o,e.markerName)}}}function ny(r){return(i,e,t)=>{if(e.markerRange.isCollapsed)return;const n=Aa(r,e,t);if(!n)return;const o=fm(t.writer,n),s=t.mapper.markerNameToElements(e.markerName);if(s){for(const a of s)t.mapper.unbindElementFromMarkerName(a,e.markerName),a.is("attributeElement")?t.writer.unwrap(t.writer.createRangeOn(a),o):a.getCustomProperty("removeHighlight")(a,n.id,t.writer);t.writer.clearClonedElementsGroup(e.markerName),i.stop()}}}function ry(r){const i=pm(r.model),e=Mn(r.view,"container");return i.attributes.length&&(i.children=!0),t=>{t.on(`insert:${i.name}`,Gk(e,km(i)),{priority:r.converterPriority||"normal"}),(i.children||i.attributes.length)&&t.on("reduceChanges",wm(i),{priority:"low"})}}function oy(r){const i=pm(r.model),e=Mn(r.view,"container");return i.children=!0,t=>{if(t._conversionApi.schema.checkChild(i.name,"$text"))throw new b("conversion-element-to-structure-disallowed-text",t,{elementName:i.name});t.on(`insert:${i.name}`,Kk(e,km(i)),{priority:r.converterPriority||"normal"}),t.on("reduceChanges",wm(i),{priority:"low"})}}function sy(r){r=Fe(r);let i=r.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)r.view[n]=Mn(r.view[n],"attribute");else r.view=Mn(r.view,"attribute");const t=bm(r);return n=>{n.on(e,jk(t),{priority:r.converterPriority||"normal"})}}function ay(r){r=Fe(r);let i=r.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)r.view[n]=fc(r.view[n]);else r.view=fc(r.view);const t=bm(r);return n=>{n.on(e,ey(t),{priority:r.converterPriority||"normal"})}}function ly(r){const i=Mn(r.view,"ui");return e=>{e.on(`addMarker:${r.model}`,$k(i),{priority:r.converterPriority||"normal"}),e.on(`removeMarker:${r.model}`,Zk(),{priority:r.converterPriority||"normal"})}}function cy(r){r=Fe(r);const i=r.model;let e=r.view;return e||(e=t=>({group:i,name:t.substr(r.model.length+1)})),t=>{t.on(`addMarker:${i}`,Jk(e),{priority:r.converterPriority||"normal"}),t.on(`removeMarker:${i}`,Qk(e),{priority:r.converterPriority||"normal"})}}function dy(r){return i=>{i.on(`addMarker:${r.model}`,ty(r.view),{priority:r.converterPriority||"normal"}),i.on(`addMarker:${r.model}`,iy(r.view),{priority:r.converterPriority||"normal"}),i.on(`removeMarker:${r.model}`,ny(r.view),{priority:r.converterPriority||"normal"})}}function pm(r){return typeof r=="string"&&(r={name:r}),{name:r.name,attributes:r.attributes?Q(r.attributes):[],children:!!r.children}}function Mn(r,i){return typeof r=="function"?r:(e,t)=>uy(r,t,i)}function uy(r,i,e){typeof r=="string"&&(r={name:r});let t;const n=i.writer,o=Object.assign({},r.attributes);if(e=="container")t=n.createContainerElement(r.name,o);else if(e=="attribute"){const s={priority:r.priority||ii.DEFAULT_PRIORITY};t=n.createAttributeElement(r.name,o,s)}else t=n.createUIElement(r.name,o);if(r.styles){const s=Object.keys(r.styles);for(const a of s)n.setStyle(a,r.styles[a],t)}if(r.classes){const s=r.classes;if(typeof s=="string")n.addClass(s,t);else for(const a of s)n.addClass(a,t)}return t}function bm(r){return r.model.values?(i,e,t)=>{const n=r.view[i];return n?n(i,e,t):null}:r.view}function fc(r){return typeof r=="string"?i=>({key:r,value:i}):typeof r=="object"?r.value?()=>r:i=>({key:r.key,value:i}):r}function Aa(r,i,e){const t=typeof r=="function"?r(i,e):r;return t?(t.priority||(t.priority=10),t.id||(t.id=i.markerName),t):null}function hy(r){return(i,e)=>{if(!i.is("element",r.name))return!1;if(e.type=="attribute"){if(r.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(r.children)return!0}return!1}}function wm(r){const i=hy(r);return(e,t)=>{const n=[];t.reconvertedElements||(t.reconvertedElements=new Set);for(const o of t.changes){const s=o.type=="attribute"?o.range.start.nodeAfter:o.position.parent;if(!s||!i(s,o)){n.push(o);continue}if(!t.reconvertedElements.has(s)){t.reconvertedElements.add(s);const a=_._createBefore(s);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:s.name,position:a,length:1},{type:"reinsert",name:s.name,position:a,length:1})}}t.changes=n}}function km(r){return(i,e,t={})=>{const n=["insert"];for(const o of r.attributes)i.hasAttribute(o)&&n.push(`attribute:${o}`);return n.every(o=>e.test(i,o))?(t.preflight||n.forEach(o=>e.consume(i,o)),!0):!1}}function my(r,i,e){return(t,n)=>{const o=t.createContainerElement("$slot");let s=null;if(n==="children")s=Array.from(r.getChildren());else if(typeof n=="function")s=Array.from(r.getChildren()).filter(a=>n(a));else throw new b("conversion-slot-mode-unknown",e.dispatcher,{modeOrFilter:n});return i.set(o,s),o}}function gy(r,i,e){const t=Array.from(i.values()).flat(),n=new Set(t);if(n.size!=t.length)throw new b("conversion-slot-filter-overlap",e.dispatcher,{element:r});if(n.size!=r.childCount)throw new b("conversion-slot-filter-incomplete",e.dispatcher,{element:r})}function fy(r,i,e,t){e.mapper.on("modelToViewPosition",s,{priority:"highest"});let n=null,o=null;for([n,o]of i)ym(r,o,e,t),e.writer.move(e.writer.createRangeIn(n),e.writer.createPositionBefore(n)),e.writer.remove(n);e.mapper.off("modelToViewPosition",s);function s(a,l){const c=l.modelPosition.nodeAfter,d=o.indexOf(c);d<0||(l.viewPosition=l.mapper.findPositionIn(n,d))}}function ym(r,i,e,t){for(const n of i)py(r.root,n,e,t)||e.convertItem(n)}function py(r,i,e,t){const{writer:n,mapper:o}=e;if(!t.reconversion)return!1;const s=o.toViewElement(i);return!s||s.root==r||!e.canReuseView(s)?!1:(n.move(n.createRangeOn(s),o.toViewPosition(_._createBefore(i))),!0)}function by(r,i,{preflight:e}={}){return e?i.test(r,"insert"):i.consume(r,"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 vm(r){const{schema:i,document:e}=r.model;for(const t of e.getRoots())if(t.isEmpty&&!i.checkChild(t,"$text")&&i.checkChild(t,"paragraph"))return r.insertElement("paragraph",t),!0;return!1}function _m(r,i,e){const t=e.createContext(r);return!(!e.checkChild(t,"paragraph")||!e.checkChild(t.push("paragraph"),i))}function Cm(r,i){const e=i.createElement("paragraph");return i.insert(e,r),i.createPositionAt(e,0)}class wy extends hm{elementToElement(i){return this.add(Lm(i))}elementToAttribute(i){return this.add(vy(i))}attributeToAttribute(i){return this.add(_y(i))}elementToMarker(i){return this.add(Cy(i))}dataToMarker(i){return this.add(Ly(i))}}function pc(){return(r,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 ky(){return(r,i,{schema:e,consumable:t,writer:n})=>{let o=i.modelCursor;if(!t.test(i.viewItem))return;if(!e.checkChild(o,"$text")){if(!_m(o,"$text",e)||i.viewItem.data.trim().length==0)return;o=Cm(o,n)}t.consume(i.viewItem);const s=n.createText(i.viewItem.data);n.insert(s,o),i.modelRange=n.createRange(o,o.getShiftedBy(s.offsetSize)),i.modelCursor=i.modelRange.end}}function yy(r,i){return(e,t)=>{const n=t.newSelection,o=[];for(const a of n.getRanges())o.push(i.toModelRange(a));const s=r.createSelection(o,{backward:n.isBackward});s.isEqual(r.document.selection)||r.change(a=>{a.setSelection(s)})}}function Lm(r){r=Fe(r);const i=Ps(r),e=Pa(r.view),t=e?`element:${e}`:"element";return n=>{n.on(t,i,{priority:r.converterPriority||"normal"})}}function vy(r){r=Fe(r),Tm(r);const i=Em(r,!1),e=Pa(r.view),t=e?`element:${e}`:"element";return n=>{n.on(t,i,{priority:r.converterPriority||"low"})}}function _y(r){r=Fe(r);let i=null;(typeof r.view=="string"||r.view.key)&&(i=xy(r)),Tm(r,i);const e=Em(r,!0);return t=>{t.on("element",e,{priority:r.converterPriority||"low"})}}function Cy(r){const i=Py(r.model);return Lm({...r,model:i})}function Ly(r){r=Fe(r),r.model||(r.model=n=>n?r.view+":"+n:r.view);const i={view:r.view,model:r.model},e=Ps(bc(i,"start")),t=Ps(bc(i,"end"));return n=>{n.on(`element:${r.view}-start`,e,{priority:r.converterPriority||"normal"}),n.on(`element:${r.view}-end`,t,{priority:r.converterPriority||"normal"});const o=Ot.low,s=Ot.highest,a=Ot.get(r.converterPriority)/s;n.on("element",Ty(i),{priority:o+a})}}function Ty(r){return(i,e,t)=>{const n=`data-${r.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"})&&o(e.modelRange.end,e.viewItem.getAttribute(n+"-end-after").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-start-after"})&&o(e.modelRange.end,e.viewItem.getAttribute(n+"-start-after").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-end-before"})&&o(e.modelRange.start,e.viewItem.getAttribute(n+"-end-before").split(",")),t.consumable.consume(e.viewItem,{attributes:n+"-start-before"})&&o(e.modelRange.start,e.viewItem.getAttribute(n+"-start-before").split(","));function o(s,a){for(const l of a){const c=r.model(l,t),d=t.writer.createElement("$marker",{"data-name":c});t.writer.insert(d,s),e.modelCursor.isEqual(s)?e.modelCursor=e.modelCursor.getShiftedBy(1):e.modelCursor=e.modelCursor._getTransformedByInsertion(s,1),e.modelRange=e.modelRange._getTransformedByInsertion(s,1)[0]}}}}function Pa(r){return typeof r=="string"?r:typeof r=="object"&&typeof r.name=="string"?r.name:null}function Ps(r){const i=new An(r.view);return(e,t,n)=>{const o=i.match(t.viewItem);if(!o)return;const s=o.match;if(s.name=!0,!n.consumable.test(t.viewItem,s))return;const a=Ey(r.model,t.viewItem,n);a&&n.safeInsert(a,t.modelCursor)&&(n.consumable.consume(t.viewItem,s),n.convertChildren(t.viewItem,a),n.updateConversionResult(a,t))}}function Ey(r,i,e){return r instanceof Function?r(i,e):e.writer.createElement(r)}function xy(r){typeof r.view=="string"&&(r.view={key:r.view});const i=r.view.key,e=typeof r.view.value>"u"?/[\s\S]*/:r.view.value;let t;return i=="class"||i=="style"?t={[i=="class"?"classes":"styles"]:e}:t={attributes:{[i]:e}},r.view.name&&(t.name=r.view.name),r.view=t,i}function Tm(r,i=null){const e=i===null?!0:o=>o.getAttribute(i),t=typeof r.model!="object"?r.model:r.model.key,n=typeof r.model!="object"||typeof r.model.value>"u"?e:r.model.value;r.model={key:t,value:n}}function Em(r,i){const e=new An(r.view);return(t,n,o)=>{if(!n.modelRange&&i)return;const s=e.match(n.viewItem);if(!s||(Sy(r.view,n.viewItem)?s.match.name=!0:delete s.match.name,!o.consumable.test(n.viewItem,s.match)))return;const a=r.model.key,l=typeof r.model.value=="function"?r.model.value(n.viewItem,o,n):r.model.value;if(l===null)return;n.modelRange||Object.assign(n,o.convertChildren(n.viewItem,n.modelCursor)),Ay(n.modelRange,{key:a,value:l},i,o)&&(o.consumable.test(n.viewItem,{name:!0})&&(s.match.name=!0),o.consumable.consume(n.viewItem,s.match))}}function Sy(r,i){const e=typeof r=="function"?r(i):r;return typeof e=="object"&&!Pa(e)?!1:!e.classes&&!e.attributes&&!e.styles}function Ay(r,i,e,t){let n=!1;for(const o of Array.from(r.getItems({shallow:e})))t.schema.checkAttribute(o,i.key)&&(n=!0,!o.hasAttribute(i.key)&&t.writer.setAttribute(i.key,i.value,o));return n}function Py(r){return(i,e)=>{const t=typeof r=="string"?r:r(i,e);return e.writer.createElement("$marker",{"data-name":t})}}function bc(r,i){const e=(t,n)=>{const o=t.getAttribute("name"),s=r.model(o,n);return n.writer.createElement("$marker",{"data-name":s})};return{view:`${r.view}-${i}`,model:e}}class Iy extends Z(){constructor(e,t){super();u(this,"model");u(this,"view");u(this,"mapper");u(this,"downcastDispatcher");this.model=e,this.view=new _k(t),this.mapper=new cm,this.downcastDispatcher=new dm({mapper:this.mapper,schema:e.schema});const n=this.model.document,o=n.selection,s=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,s,a),this.downcastDispatcher.convertSelection(o,s,a)})},{priority:"low"}),this.listenTo(this.view.document,"selectionChange",yy(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",mm(),{priority:"lowest"}),this.downcastDispatcher.on("insert",gm(),{priority:"lowest"}),this.downcastDispatcher.on("remove",Uk(),{priority:"low"}),this.downcastDispatcher.on("cleanSelection",qk()),this.downcastDispatcher.on("selection",Hk(),{priority:"low"}),this.downcastDispatcher.on("selection",Wk(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using(a=>{if(a.rootName=="$graveyard")return null;const l=new $h(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 b("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 Ry extends Z(){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 zt(t[0])},{priority:"highest"}),this.on("checkChild",(e,t)=>{t[0]=new zt(t[0]),t[1]=this.getDefinition(t[1])},{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new b("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 b("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 o=this._evaluateAttributeChecks(e,t);return o!==void 0?o:n.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof _){const n=e.nodeBefore,o=e.nodeAfter;if(!(n instanceof $))throw new b("schema-check-merge-no-element-before",this);if(!(o instanceof $))throw new b("schema-check-merge-no-element-after",this);return this.checkMerge(n,o)}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,o=this._customChildChecks.get(n)||[];o.push(e),this._customChildChecks.set(n,o)}addAttributeCheck(e,t){const n=t!==void 0?t:this._genericCheckSymbol,o=this._customAttributeChecks.get(n)||[];o.push(e),this._customAttributeChecks.set(n,o)}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 _?t=e.parent:t=(e instanceof k?[e]:Array.from(e.getRanges())).reduce((o,s)=>{const a=s.getCommonAncestor();return o?o.getCommonAncestor(a,{includeSelf:!0}):a},null);!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const o=[...e.getFirstPosition().getAncestors(),new J("",e.getAttributes())];return this.checkAttribute(o,t)}else{const n=e.getRanges();for(const o of n)for(const s of o)if(this.checkAttribute(s.item,t))return!0}return!1}*getValidRanges(e,t){e=$y(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 k(e);let n,o;const s=e.getAncestors().reverse().find(a=>this.isLimit(a))||e.root;(t=="both"||t=="backward")&&(n=new Ct({boundaries:k._createIn(s),startPosition:e,direction:"backward"})),(t=="both"||t=="forward")&&(o=new Ct({boundaries:k._createIn(s),startPosition:e}));for(const a of Ky(n,o)){const l=a.walker==n?"elementEnd":"elementStart",c=a.value;if(c.type==l&&this.isObject(c.item))return k._createOn(c.item);if(this.checkChild(c.nextPosition,"$text"))return new k(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 o=n.model;for(const[s,a]of Object.entries(t))o.schema.checkAttribute(e,s)&&n.setAttribute(s,a,e)}removeDisallowedAttributes(e,t){for(const n of e)if(n.is("$text"))wc(this,n,t);else{const s=k._createIn(n).getPositions();for(const a of s){const l=a.nodeBefore||a.parent;wc(this,l,t)}}}getAttributesWithProperty(e,t,n){const o={};for(const[s,a]of e.getAttributes()){const l=this.getAttributeProperties(s);l[t]!==void 0&&(n===void 0||n===l[t])&&(o[s]=a)}return o}createContext(e){return new zt(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,n=Object.keys(t);for(const s of n)e[s]=My(t[s],s);const o=Object.values(e);for(const s of o)By(e,s),Vy(e,s),Ny(e,s),Dy(e,s);for(const s of o)Oy(e,s);for(const s of o)zy(e,s);for(const s of o)Fy(e,s);for(const s of o)Hy(e,s);for(const s of o)Wy(e,s);this._compiledDefinitions=Uy(e)}_checkContextMatch(e,t){const n=e.last;let o=this._evaluateChildChecks(e,t);if(o=o!==void 0?o:t.allowIn.includes(n.name),!o)return!1;const s=this.getDefinition(n),a=e.trimLast();return s?a.length==0?!0:this._checkContextMatch(a,s):!1}_evaluateChildChecks(e,t){const n=this._customChildChecks.get(this._genericCheckSymbol)||[],o=this._customChildChecks.get(t.name)||[];for(const s of[...n,...o]){const a=s(e,t);if(a!==void 0)return a}}_evaluateAttributeChecks(e,t){const n=this._customAttributeChecks.get(this._genericCheckSymbol)||[],o=this._customAttributeChecks.get(t)||[];for(const s of[...n,...o]){const a=s(e,t);if(a!==void 0)return a}}*_getValidRangesForRange(e,t){let n=e.start,o=e.start;for(const s of e.getItems({shallow:!0}))s.is("element")&&(yield*this._getValidRangesForRange(k._createIn(s),t)),this.checkAttribute(s,t)||(n.isEqual(o)||(yield new k(n,o)),n=_._createAfter(s)),o=_._createAfter(s);n.isEqual(o)||(yield new k(n,o))}findOptimalInsertionRange(e,t){const n=e.getSelectedElement();if(n&&this.isObject(n)&&!this.isInline(n))return t=="before"||t=="after"?new k(_._createAt(n,t)):k._createOn(n);const o=ue(e.getSelectedBlocks());if(!o)return new k(e.focus);if(o.isEmpty)return new k(_._createAt(o,0));const s=_._createAfter(o);return e.focus.isTouching(s)?new k(s):new k(_._createBefore(o))}}class zt{constructor(i){u(this,"_items");if(i instanceof zt)return i;let e;typeof i=="string"?e=[i]:Array.isArray(i)?e=i:e=i.getAncestors({includeSelf:!0}),this._items=e.map(Gy)}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 zt([i]);return e._items=[...this._items,...e._items],e}trimLast(){const i=new zt([]);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 My(r,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 qy(r,e),ct(r,e,"allowIn"),ct(r,e,"allowChildren"),ct(r,e,"disallowIn"),ct(r,e,"disallowChildren"),ct(r,e,"allowContentOf"),ct(r,e,"allowWhere"),ct(r,e,"allowAttributes"),ct(r,e,"disallowAttributes"),ct(r,e,"allowAttributesOf"),ct(r,e,"inheritTypesFrom"),jy(r,e),e}function By(r,i){for(const e of i.allowIn){const t=r[e];t?t.allowChildren.add(i.name):i.allowIn.delete(e)}}function Vy(r,i){for(const e of i.allowChildren){const t=r[e];t?t.allowIn.add(i.name):i.allowChildren.delete(e)}}function Ny(r,i){for(const e of i.disallowIn){const t=r[e];t?t.disallowChildren.add(i.name):i.disallowIn.delete(e)}}function Dy(r,i){for(const e of i.disallowChildren){const t=r[e];t?t.disallowIn.add(i.name):i.disallowChildren.delete(e)}}function Oy(r,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 zy(r,i){for(const e of i.allowContentOf){const t=r[e];t&&(t.disallowChildren.forEach(n=>{i.allowChildren.has(n)||(i.disallowChildren.add(n),r[n].disallowIn.add(i.name))}),t.allowChildren.forEach(n=>{i.disallowChildren.has(n)||(i.allowChildren.add(n),r[n].allowIn.add(i.name))}))}}function Fy(r,i){for(const e of i.allowWhere){const t=r[e];t&&(t.disallowIn.forEach(n=>{i.allowIn.has(n)||(i.disallowIn.add(n),r[n].disallowChildren.add(i.name))}),t.allowIn.forEach(n=>{i.disallowIn.has(n)||(i.allowIn.add(n),r[n].allowChildren.add(i.name))}))}}function Uy(r){const i={};for(const e of Object.values(r))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=>!!r[t]),allowChildren:Array.from(e.allowChildren).filter(t=>!!r[t]),allowAttributes:Array.from(e.allowAttributes)};return i}function Hy(r,i){for(const e of i.allowAttributesOf){const t=r[e];if(!t)return;t.allowAttributes.forEach(n=>{i.disallowAttributes.has(n)||i.allowAttributes.add(n)})}}function Wy(r,i){for(const e of i.inheritTypesFrom){const t=r[e];if(t){const n=Object.keys(t).filter(o=>o.startsWith("is"));for(const o of n)o in i||(i[o]=t[o])}}}function qy(r,i){for(const e of r){const t=Object.keys(e).filter(n=>n.startsWith("is"));for(const n of t)i[n]=!!e[n]}}function ct(r,i,e){for(const t of r){let n=t[e];typeof n=="string"&&(n=[n]),Array.isArray(n)&&n.forEach(o=>i[e].add(o))}}function jy(r,i){for(const e of r){const t=e.inheritAllFrom;t&&(i.allowContentOf.add(t),i.allowWhere.add(t),i.allowAttributesOf.add(t),i.inheritTypesFrom.add(t))}}function Gy(r){return typeof r=="string"||r.is("documentFragment")?{name:typeof r=="string"?r:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:r.is("element")?r.name:"$text",*getAttributeKeys(){yield*r.getAttributeKeys()},getAttribute(i){return r.getAttribute(i)}}}function*Ky(r,i){let e=!1;for(;!e;){if(e=!0,r){const t=r.next();t.done||(e=!1,yield{walker:r,value:t.value})}if(i){const t=i.next();t.done||(e=!1,yield{walker:i,value:t.value})}}}function*$y(r){for(const i of r)yield*i.getMinimalFlatRanges()}function wc(r,i,e){for(const t of i.getAttributeKeys())r.checkAttribute(i,t)||e.removeAttribute(t,i)}class Zy extends j(){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=Yy(n,t),this.conversionApi.writer=t,this.conversionApi.consumable=jr.createFrom(e),this.conversionApi.store={};const{modelRange:o}=this._convertItem(e,this._modelCursor),s=t.createDocumentFragment();if(o){this._removeEmptyElements();const a=this._modelCursor.parent,l=a._removeChildren(0,a.childCount);s._insertChild(0,l),s.markers=Jy(s,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,s}_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 k))throw new b("view-conversion-dispatcher-incorrect-result",this);return{modelRange:n.modelRange,modelCursor:n.modelCursor}}_convertChildren(e,t){let n=t.is("position")?t:_._createAt(t,0);const o=new k(n);for(const s of Array.from(e.getChildren())){const a=this._convertItem(s,n);a.modelRange instanceof k&&(o.end=a.modelRange.end,n=a.modelCursor)}return{modelRange:o,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),o=this.conversionApi.writer;t.modelRange||(t.modelRange=o.createRange(o.createPositionBefore(e),o.createPositionAfter(n[n.length-1])));const s=this._cursorParents.get(e);s?t.modelCursor=o.createPositionAt(s,0):t.modelCursor=t.modelRange.end}_splitToAllowedParent(e,t){const{schema:n,writer:o}=this.conversionApi;let s=n.findAllowedParent(t,e);if(s){if(s===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(s)&&(s=null)}if(!s)return _m(t,e,n)?{position:Cm(t,o)}:null;const a=this.conversionApi.writer.split(t,s),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 Jy(r,i){const e=new Set,t=new Map,n=k._createIn(r).getItems();for(const o of n)o.is("element","$marker")&&e.add(o);for(const o of e){const s=o.getAttribute("data-name"),a=i.createPositionBefore(o);t.has(s)?t.get(s).end=a.clone():t.set(s,new k(a.clone())),i.remove(o)}return t}function Yy(r,i){let e;for(const t of new zt(r)){const n={};for(const s of t.getAttributeKeys())n[s]=t.getAttribute(s);const o=i.createElement(t.name,n);e&&i.insert(o,e),e=_._createAt(o,0)}return e}class Xy{getHtml(i){const t=T.document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(i),t.innerHTML}}class Qy{constructor(i){u(this,"domParser");u(this,"domConverter");u(this,"htmlWriter");u(this,"skipComments",!0);this.domParser=new DOMParser,this.domConverter=new nm(i,{renderingMode:"data"}),this.htmlWriter=new Xy}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 ev extends j(){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 cm,this.downcastDispatcher=new dm({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",mm(),{priority:"lowest"}),this.downcastDispatcher.on("insert",gm(),{priority:"lowest"}),this.upcastDispatcher=new Zy({schema:e.schema}),this.viewDocument=new Yh(t),this.stylesProcessor=t,this.htmlProcessor=new Qy(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new Xh(this.viewDocument),this.upcastDispatcher.on("text",ky(),{priority:"lowest"}),this.upcastDispatcher.on("element",pc(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",pc(),{priority:"lowest"}),Z().prototype.decorate.call(this,"init"),Z().prototype.decorate.call(this,"set"),Z().prototype.decorate.call(this,"get"),Z().prototype.decorate.call(this,"toView"),Z().prototype.decorate.call(this,"toModel"),this.on("init",()=>{this.fire("ready")},{priority:"lowest"}),this.on("ready",()=>{this.model.enqueueChange({isUndoable:!1},vm)},{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:n="empty"}=e;if(!this._checkIfRootsExists([t]))throw new b("datacontroller-get-non-existent-root",this);const o=this.model.document.getRoot(t);return o.isAttached()||W("datacontroller-get-detached-root",this),n==="empty"&&!this.model.hasContent(o,{ignoreWhitespaces:!0})?"":this.stringify(o,e)}stringify(e,t={}){const n=this.toView(e,t);return this.processor.toData(n)}toView(e,t={}){const n=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const s=k._createIn(e),a=new ni(n);this.mapper.bindElements(e,a);const l=e.is("documentFragment")?e.markers:tv(e);return this.downcastDispatcher.convert(s,l,o,t),a}init(e){if(this.model.document.version)throw new b("datacontroller-init-document-not-empty",this);let t={};if(typeof e=="string"?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new b("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},n=>{for(const o of Object.keys(t)){const s=this.model.document.getRoot(o);n.insert(this.parse(t[o],s),s,0)}}),Promise.resolve()}set(e,t={}){let n={};if(typeof e=="string"?n.main=e:n=e,!this._checkIfRootsExists(Object.keys(n)))throw new b("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},o=>{o.setSelection(null),o.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const s of Object.keys(n)){const a=this.model.document.getRoot(s);o.remove(o.createRangeIn(a)),o.insert(this.parse(n[s],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 tv(r){const i=[],e=r.root.document;if(!e)return new Map;const t=k._createIn(r);for(const n of e.model.markers){const o=n.getRange(),s=o.isCollapsed,a=o.start.isEqual(t.start)||o.end.isEqual(t.end);if(s&&a)i.push([n.name,o]);else{const l=t.getIntersection(o);l&&i.push([n.name,l])}}return i.sort(([n,o],[s,a])=>{if(o.end.compareWith(a.start)!=="after")return 1;if(o.start.compareWith(a.end)!=="before")return-1;switch(o.start.compareWith(a.start)){case"before":return 1;case"after":return-1;default:switch(o.end.compareWith(a.end)){case"before":return 1;case"after":return-1;default:return s.localeCompare(n)}}}),new Map(i)}class iv{constructor(i,e){u(this,"_helpers",new Map);u(this,"_downcast");u(this,"_upcast");this._downcast=Q(i),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Q(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 b("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:i,dispatchers:[e],isDowncast:t})}for(i){if(!this._helpers.has(i))throw new b("conversion-for-unknown-group",this);return this._helpers.get(i)}elementToElement(i){this.for("downcast").elementToElement(i);for(const{model:e,view:t}of Go(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 Go(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 Go(i))this.for("upcast").attributeToAttribute({view:t,model:e})}_createConversionHelpers({name:i,dispatchers:e,isDowncast:t}){if(this._helpers.has(i))throw new b("conversion-group-exists",this);const n=t?new Fk(e):new wy(e);this._helpers.set(i,n)}}function*Go(r){if(r.model.values)for(const i of r.model.values){const e={key:r.model.key,value:i},t=r.view[i],n=r.upcastAlso?r.upcastAlso[i]:void 0;yield*kc(e,t,n)}else yield*kc(r.model,r.view,r.upcastAlso)}function*kc(r,i,e){if(yield{model:r,view:i},e)for(const t of Q(e))yield{model:r,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 He{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 Ia(r,i){const e=Sm(i),t=e.reduce((s,a)=>s+a.offsetSize,0),n=r.parent;Nn(r);const o=r.index;return n._insertChild(o,e),Vn(n,o+e.length),Vn(n,o),new k(r,r.getShiftedBy(t))}function xm(r){if(!r.isFlat)throw new b("operation-utils-remove-range-not-flat",this);const i=r.start.parent;Nn(r.start),Nn(r.end);const e=i._removeChildren(r.start.index,r.end.index-r.start.index);return Vn(i,r.start.index),e}function Bn(r,i){if(!r.isFlat)throw new b("operation-utils-move-range-not-flat",this);const e=xm(r);return i=i._getTransformedByDeletion(r.start,r.end.offset-r.start.offset),Ia(i,e)}function nv(r,i,e){Nn(r.start),Nn(r.end);for(const t of r.getItems({shallow:!0})){const n=t.is("$textProxy")?t.textNode:t;e!==null?n._setAttribute(i,e):n._removeAttribute(i),Vn(n.parent,n.index)}Vn(r.end.parent,r.end.index)}function Sm(r){const i=[];function e(t){if(typeof t=="string")i.push(new J(t));else if(t instanceof it)i.push(new J(t.data,t.getAttributes()));else if(t instanceof di)i.push(t);else if(Ue(t))for(const n of t)e(n)}e(r);for(let t=1;t<i.length;t++){const n=i[t],o=i[t-1];n instanceof J&&o instanceof J&&Am(n,o)&&(i.splice(t-1,2,new J(o.data+n.data,o.getAttributes())),t--)}return i}function Vn(r,i){const e=r.getChild(i-1),t=r.getChild(i);if(e&&t&&e.is("$text")&&t.is("$text")&&Am(e,t)){const n=new J(e.data+t.data,e.getAttributes());r._removeChildren(i-1,2),r._insertChild(i-1,n)}}function Nn(r){const i=r.textNode,e=r.parent;if(i){const t=r.offset-i.startOffset,n=i.index;e._removeChildren(n,1);const o=new J(i.data.substr(0,t),i.getAttributes()),s=new J(i.data.substr(t),i.getAttributes());e._insertChild(n,[o,s])}}function Am(r,i){const e=r.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 H extends He{constructor(e,t,n,o){super(o);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[k._createFromPositionAndShift(this.sourcePosition,this.howMany),k._createFromPositionAndShift(this.targetPosition,0)]}clone(){return new H(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 H(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,n=this.sourcePosition.offset,o=this.targetPosition.offset;if(n+this.howMany>e.maxOffset)throw new b("move-operation-nodes-do-not-exist",this);if(e===t&&n<o&&o<n+this.howMany)throw new b("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&Ee(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())=="prefix"){const s=this.sourcePosition.path.length-1;if(this.targetPosition.path[s]>=n&&this.targetPosition.path[s]<n+this.howMany)throw new b("move-operation-node-into-itself",this)}}_execute(){Bn(k._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=_.fromJSON(e.sourcePosition,t),o=_.fromJSON(e.targetPosition,t);return new this(n,e.howMany,o,e.baseVersion)}}class we extends He{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 wn(Sm(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}get affectedSelectable(){return this.position.clone()}clone(){const e=new wn([...this.nodes].map(n=>n._clone(!0))),t=new we(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new _(e,[0]);return new H(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new b("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new wn([...e].map(t=>t._clone(!0))),Ia(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 s of e.nodes)s.name?n.push($.fromJSON(s)):n.push(J.fromJSON(s));const o=new we(_.fromJSON(e.position,t),n,e.baseVersion);return o.shouldReceiveAttributes=e.shouldReceiveAttributes,o}}class G extends He{constructor(e,t,n,o,s){super(s);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=o?o.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 _(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new k(this.splitPosition,e)}get affectedSelectable(){const e=[k._createFromPositionAndShift(this.splitPosition,0),k._createFromPositionAndShift(this.insertionPosition,0)];return this.graveyardPosition&&e.push(k._createFromPositionAndShift(this.graveyardPosition,0)),e}clone(){return new G(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new _(e,[0]);return new le(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 b("split-operation-position-invalid",this);if(e.parent){if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new b("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new b("split-operation-graveyard-position-invalid",this)}else throw new b("split-operation-split-in-root",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)Bn(k._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const n=e._clone();Ia(this.insertionPosition,n)}const t=new k(_._createAt(e,this.splitPosition.offset),_._createAt(e,e.maxOffset));Bn(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 _(e.root,t,"toPrevious")}static fromJSON(e,t){const n=_.fromJSON(e.splitPosition,t),o=_.fromJSON(e.insertionPosition,t),s=e.graveyardPosition?_.fromJSON(e.graveyardPosition,t):null;return new this(n,e.howMany,o,s,e.baseVersion)}}class le extends He{constructor(e,t,n,o,s){super(s);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=o.clone()}get type(){return"merge"}get deletionPosition(){return new _(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new k(this.sourcePosition,e)}get affectedSelectable(){const e=this.sourcePosition.parent;return[k._createOn(e),k._createFromPositionAndShift(this.targetPosition,0),k._createFromPositionAndShift(this.graveyardPosition,0)]}clone(){return new le(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 _(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new G(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 b("merge-operation-how-many-invalid",this)}else throw new b("merge-operation-target-position-invalid",this);else throw new b("merge-operation-source-position-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=k._createIn(e);Bn(t,this.targetPosition),Bn(k._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=_.fromJSON(e.sourcePosition,t),o=_.fromJSON(e.targetPosition,t),s=_.fromJSON(e.graveyardPosition,t);return new this(n,e.howMany,o,s,e.baseVersion)}}class Ae extends He{constructor(e,t,n,o,s,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=s,this._markers=o}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 Ae(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new Ae(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 Ae(e.name,e.oldRange?k.fromJSON(e.oldRange,t):null,e.newRange?k.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}class de extends He{constructor(e,t,n,o,s){super(s);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=o===void 0?null:o}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 b("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(this.oldValue!==null&&!Fr(e.getAttribute(this.key),this.oldValue))throw new b("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 b("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){Fr(this.oldValue,this.newValue)||nv(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new de(k.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}class me extends He{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 Be extends He{constructor(e,t,n,o){super(o);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 Be(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new Be(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 b("rename-operation-wrong-name",this)}else throw new b("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 Be(_.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}class Tt extends He{constructor(e,t,n,o,s){super(s);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=o===void 0?null:o}get type(){return this.oldValue===null?"addRootAttribute":this.newValue===null?"removeRootAttribute":"changeRootAttribute"}get affectedSelectable(){return this.root}clone(){return new Tt(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new Tt(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new b("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 b("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 b("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 b("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new Tt(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}class gt extends He{constructor(e,t,n,o,s){super(s);u(this,"rootName");u(this,"elementName");u(this,"isAdd");u(this,"_document");if(this.rootName=e,this.elementName=t,this.isAdd=n,this._document=o,!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 gt(this.rootName,this.elementName,this.isAdd,this._document,this.baseVersion)}getReversed(){return new gt(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 gt(e.rootName,e.elementName,e.isAdd,t,e.baseVersion)}}const Xe={};Xe[de.className]=de;Xe[we.className]=we;Xe[Ae.className]=Ae;Xe[H.className]=H;Xe[me.className]=me;Xe[He.className]=He;Xe[Be.className]=Be;Xe[Tt.className]=Tt;Xe[gt.className]=gt;Xe[G.className]=G;Xe[le.className]=le;class rv{static fromJSON(i,e){return Xe[i.__className].fromJSON(i,e)}}const Is=new Map;function F(r,i,e){let t=Is.get(r);t||(t=new Map,Is.set(r,t)),t.set(i,e)}function ov(r,i){const e=Is.get(r);return e&&e.has(i)?e.get(i):sv}function sv(r){return[r]}function yc(r,i,e={}){const t=ov(r.constructor,i.constructor);try{return r=r.clone(),t(r,i,e)}catch(n){throw n}}function av(r,i,e){r=r.slice(),i=i.slice();const t=new lv(e.document,e.useRelations,e.forceWeakRemove);t.setOriginalOperations(r),t.setOriginalOperations(i);const n=t.originalOperations;if(r.length==0||i.length==0)return{operationsA:r,operationsB:i,originalOperations:n};const o=new WeakMap;for(const l of r)o.set(l,0);const s={nextBaseVersionA:r[r.length-1].baseVersion+1,nextBaseVersionB:i[i.length-1].baseVersion+1,originalOperationsACount:r.length,originalOperationsBCount:i.length};let a=0;for(;a<r.length;){const l=r[a],c=o.get(l);if(c==i.length){a++;continue}const d=i[c],h=yc(l,d,t.getContext(l,d,!0)),m=yc(d,l,t.getContext(d,l,!1));t.updateRelation(l,d),t.setOriginalOperations(h,l),t.setOriginalOperations(m,d);for(const g of h)o.set(g,c+m.length);r.splice(a,1,...h),i.splice(c,1,...m)}return _c(r),_c(i),vc(r,s.nextBaseVersionB),vc(i,s.nextBaseVersionA),{operationsA:r,operationsB:i,originalOperations:n}}class lv{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 H)e instanceof le?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 H&&(i.targetPosition.isEqual(e.sourcePosition)||i.targetPosition.isBefore(e.sourcePosition)?this._setRelation(i,e,"insertBefore"):this._setRelation(i,e,"insertAfter"));else if(i instanceof G){if(e instanceof le)i.splitPosition.isBefore(e.sourcePosition)&&this._setRelation(i,e,"splitBefore");else if(e instanceof H)if(i.splitPosition.isEqual(e.sourcePosition)||i.splitPosition.isBefore(e.sourcePosition))this._setRelation(i,e,"splitBefore");else{const t=k._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.splitPosition.hasSameParentAs(e.sourcePosition)&&t.containsPosition(i.splitPosition)){const n=t.end.offset-i.splitPosition.offset,o=i.splitPosition.offset-t.start.offset;this._setRelation(i,e,{howMany:n,offset:o})}}}else if(i instanceof le)e instanceof le?(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 G?i.sourcePosition.isEqual(e.splitPosition)&&this._setRelation(i,e,"splitAtSource"):e instanceof H&&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 Ae){const t=i.newRange;if(!t)return;if(e instanceof le){const n=t.start.isEqual(e.targetPosition),o=t.start.isEqual(e.deletionPosition),s=t.end.isEqual(e.deletionPosition),a=t.end.isEqual(e.sourcePosition);(n||o||s||a)&&this._setRelation(i,e,{wasInLeftElement:n,wasStartBeforeMergedElement:o,wasEndBeforeMergedElement:s,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 o=this.originalOperations.get(i),s=this._relations.get(o);return s&&s.get(n)||null}_setRelation(i,e,t){const n=this.originalOperations.get(i),o=this.originalOperations.get(e);let s=this._relations.get(n);s||(s=new Map,this._relations.set(n,s)),s.set(o,t)}}function vc(r,i){for(const e of r)e.baseVersion=i++}function _c(r){const i=new Map;for(let e=0;e<r.length;e++){const t=r[e];t instanceof Ae&&(t.baseVersion!==-1?i.set(t.name,{op:t,ranges:t.newRange?[t.newRange]:[]}):(t.newRange&&i.get(t.name).ranges.push(t.newRange),r.splice(e,1),e--))}for(const{op:e,ranges:t}of i.values())t.length?e.newRange=k._createFromRanges(t):e.newRange=null}F(de,de,(r,i,e)=>{if(r.key===i.key&&r.range.start.hasSameParentAs(i.range.start)){const t=r.range.getDifference(i.range).map(o=>new de(o,r.key,r.oldValue,r.newValue,0)),n=r.range.getIntersection(i.range);return n&&e.aIsStrong&&t.push(new de(n,i.key,i.newValue,r.newValue,0)),t.length==0?[new me(0)]:t}else return[r]});F(de,we,(r,i)=>{if(r.range.start.hasSameParentAs(i.position)&&r.range.containsPosition(i.position)){const t=r.range._getTransformedByInsertion(i.position,i.howMany,!i.shouldReceiveAttributes).map(n=>new de(n,r.key,r.oldValue,r.newValue,r.baseVersion));if(i.shouldReceiveAttributes){const n=Pm(i,r.key,r.oldValue);n&&t.unshift(n)}return t}return r.range=r.range._getTransformedByInsertion(i.position,i.howMany,!1)[0],[r]});function Pm(r,i,e){const n=r.nodes.getNode(0).getAttribute(i);if(n==e)return null;const o=new k(r.position,r.position.getShiftedBy(r.howMany));return new de(o,i,n,e,0)}F(de,le,(r,i)=>{const e=[];r.range.start.hasSameParentAs(i.deletionPosition)&&(r.range.containsPosition(i.deletionPosition)||r.range.start.isEqual(i.deletionPosition))&&e.push(k._createFromPositionAndShift(i.graveyardPosition,1));const t=r.range._getTransformedByMergeOperation(i);return t.isCollapsed||e.push(t),e.map(n=>new de(n,r.key,r.oldValue,r.newValue,r.baseVersion))});F(de,H,(r,i)=>cv(r.range,i).map(t=>new de(t,r.key,r.oldValue,r.newValue,r.baseVersion)));function cv(r,i){const e=k._createFromPositionAndShift(i.sourcePosition,i.howMany);let t=null,n=[];e.containsRange(r,!0)?t=r:r.start.hasSameParentAs(e.start)?(n=r.getDifference(e),t=r.getIntersection(e)):n=[r];const o=[];for(let s of n){s=s._getTransformedByDeletion(i.sourcePosition,i.howMany);const a=i.getMovedRangeStart(),l=s.start.hasSameParentAs(a),c=s._getTransformedByInsertion(a,i.howMany,l);o.push(...c)}return t&&o.push(t._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany,!1)[0]),o}F(de,G,(r,i)=>{if(r.range.end.isEqual(i.insertionPosition))return i.graveyardPosition||r.range.end.offset++,[r];if(r.range.start.hasSameParentAs(i.splitPosition)&&r.range.containsPosition(i.splitPosition)){const e=r.clone();return e.range=new k(i.moveTargetPosition.clone(),r.range.end._getCombined(i.splitPosition,i.moveTargetPosition)),r.range.end=i.splitPosition.clone(),r.range.end.stickiness="toPrevious",[r,e]}return r.range=r.range._getTransformedBySplitOperation(i),[r]});F(we,de,(r,i)=>{const e=[r];if(r.shouldReceiveAttributes&&r.position.hasSameParentAs(i.range.start)&&i.range.containsPosition(r.position)){const t=Pm(r,i.key,i.newValue);t&&e.push(t)}return e});F(we,we,(r,i,e)=>r.position.isEqual(i.position)&&e.aIsStrong?[r]:(r.position=r.position._getTransformedByInsertOperation(i),[r]));F(we,H,(r,i)=>(r.position=r.position._getTransformedByMoveOperation(i),[r]));F(we,G,(r,i)=>(r.position=r.position._getTransformedBySplitOperation(i),[r]));F(we,le,(r,i)=>(r.position=r.position._getTransformedByMergeOperation(i),[r]));F(Ae,we,(r,i)=>(r.oldRange&&(r.oldRange=r.oldRange._getTransformedByInsertOperation(i)[0]),r.newRange&&(r.newRange=r.newRange._getTransformedByInsertOperation(i)[0]),[r]));F(Ae,Ae,(r,i,e)=>{if(r.name==i.name)if(e.aIsStrong)r.oldRange=i.newRange?i.newRange.clone():null;else return[new me(0)];return[r]});F(Ae,le,(r,i)=>(r.oldRange&&(r.oldRange=r.oldRange._getTransformedByMergeOperation(i)),r.newRange&&(r.newRange=r.newRange._getTransformedByMergeOperation(i)),[r]));F(Ae,H,(r,i)=>{const e=[r];if(r.oldRange&&(r.oldRange=k._createFromRanges(r.oldRange._getTransformedByMoveOperation(i))),r.newRange){const t=r.newRange._getTransformedByMoveOperation(i);r.newRange=t[0];for(let n=1;n<t.length;n++){const o=r.clone();o.oldRange=null,o.newRange=t[n],o.baseVersion=-1,e.push(o)}}return e});F(Ae,G,(r,i,e)=>{if(r.oldRange&&(r.oldRange=r.oldRange._getTransformedBySplitOperation(i)),r.newRange){if(e.abRelation){const t=r.newRange._getTransformedBySplitOperation(i);return r.newRange.start.isEqual(i.splitPosition)?e.abRelation.wasStartBeforeMergedElement?r.newRange.start=_._createAt(i.insertionPosition):e.abRelation.wasInLeftElement?r.newRange.start=_._createAt(r.newRange.start):r.newRange.start=_._createAt(i.moveTargetPosition):r.newRange.start=t.start,r.newRange.end.isEqual(i.splitPosition)?r.newRange.end.isEqual(i.splitPosition)&&e.abRelation.wasEndBeforeMergedElement?r.newRange.end=_._createAt(i.insertionPosition):e.abRelation.wasInRightElement?r.newRange.end=_._createAt(i.moveTargetPosition):r.newRange.end=_._createAt(r.newRange.end):r.newRange.end=t.end,[r]}r.newRange=r.newRange._getTransformedBySplitOperation(i)}return[r]});F(le,we,(r,i)=>(r.sourcePosition.hasSameParentAs(i.position)&&(r.howMany+=i.howMany),r.sourcePosition=r.sourcePosition._getTransformedByInsertOperation(i),r.targetPosition=r.targetPosition._getTransformedByInsertOperation(i),[r]));F(le,le,(r,i,e)=>{if(r.sourcePosition.isEqual(i.sourcePosition)&&r.targetPosition.isEqual(i.targetPosition))if(e.bWasUndone){const t=i.graveyardPosition.path.slice();return t.push(0),r.sourcePosition=new _(i.graveyardPosition.root,t),r.howMany=0,[r]}else return[new me(0)];if(r.sourcePosition.isEqual(i.sourcePosition)&&!r.targetPosition.isEqual(i.targetPosition)&&!e.bWasUndone&&e.abRelation!="splitAtSource"){const t=r.targetPosition.root.rootName=="$graveyard",n=i.targetPosition.root.rootName=="$graveyard";if(n&&!t||!(t&&!n)&&e.aIsStrong){const l=i.targetPosition._getTransformedByMergeOperation(i),c=r.targetPosition._getTransformedByMergeOperation(i);return[new H(l,r.howMany,c,0)]}else return[new me(0)]}return r.sourcePosition.hasSameParentAs(i.targetPosition)&&(r.howMany+=i.howMany),r.sourcePosition=r.sourcePosition._getTransformedByMergeOperation(i),r.targetPosition=r.targetPosition._getTransformedByMergeOperation(i),(!r.graveyardPosition.isEqual(i.graveyardPosition)||!e.aIsStrong)&&(r.graveyardPosition=r.graveyardPosition._getTransformedByMergeOperation(i)),[r]});F(le,H,(r,i,e)=>{const t=k._createFromPositionAndShift(i.sourcePosition,i.howMany);return i.type=="remove"&&!e.bWasUndone&&r.deletionPosition.hasSameParentAs(i.sourcePosition)&&t.containsPosition(r.sourcePosition)?[new me(0)]:(i.sourcePosition.getShiftedBy(i.howMany).isEqual(r.sourcePosition)?r.sourcePosition.stickiness="toNone":i.targetPosition.isEqual(r.sourcePosition)&&e.abRelation=="mergeSourceAffected"?r.sourcePosition.stickiness="toNext":i.sourcePosition.isEqual(r.targetPosition)?(r.targetPosition.stickiness="toNone",r.howMany-=i.howMany):i.targetPosition.isEqual(r.targetPosition)&&e.abRelation=="mergeTargetWasBefore"?(r.targetPosition.stickiness="toPrevious",r.howMany+=i.howMany):(r.sourcePosition.hasSameParentAs(i.targetPosition)&&(r.howMany+=i.howMany),r.sourcePosition.hasSameParentAs(i.sourcePosition)&&(r.howMany-=i.howMany)),r.sourcePosition=r.sourcePosition._getTransformedByMoveOperation(i),r.targetPosition=r.targetPosition._getTransformedByMoveOperation(i),r.sourcePosition.stickiness="toPrevious",r.targetPosition.stickiness="toNext",r.graveyardPosition.isEqual(i.targetPosition)||(r.graveyardPosition=r.graveyardPosition._getTransformedByMoveOperation(i)),[r])});F(le,G,(r,i,e)=>{if(i.graveyardPosition&&(r.graveyardPosition=r.graveyardPosition._getTransformedByDeletion(i.graveyardPosition,1),r.deletionPosition.isEqual(i.graveyardPosition)&&(r.howMany=i.howMany)),r.targetPosition.isEqual(i.splitPosition)&&(i.graveyardPosition&&r.deletionPosition.isEqual(i.graveyardPosition)||e.abRelation=="mergeTargetNotMoved"))return r.sourcePosition=r.sourcePosition._getTransformedBySplitOperation(i),[r];if(r.sourcePosition.isEqual(i.splitPosition)){if(e.abRelation=="mergeSourceNotMoved")return r.howMany=0,r.targetPosition=r.targetPosition._getTransformedBySplitOperation(i),[r];if(e.abRelation=="mergeSameElement"||r.sourcePosition.offset>0)return r.sourcePosition=i.moveTargetPosition.clone(),r.targetPosition=r.targetPosition._getTransformedBySplitOperation(i),[r]}return r.sourcePosition.hasSameParentAs(i.splitPosition)&&(r.howMany=i.splitPosition.offset),r.sourcePosition=r.sourcePosition._getTransformedBySplitOperation(i),r.targetPosition=r.targetPosition._getTransformedBySplitOperation(i),[r]});F(H,we,(r,i)=>{const t=k._createFromPositionAndShift(r.sourcePosition,r.howMany)._getTransformedByInsertOperation(i,!1)[0];return r.sourcePosition=t.start,r.howMany=t.end.offset-t.start.offset,r.targetPosition.isEqual(i.position)||(r.targetPosition=r.targetPosition._getTransformedByInsertOperation(i)),[r]});F(H,H,(r,i,e)=>{const t=k._createFromPositionAndShift(r.sourcePosition,r.howMany),n=k._createFromPositionAndShift(i.sourcePosition,i.howMany);let o=e.aIsStrong,s=!e.aIsStrong;e.abRelation=="insertBefore"||e.baRelation=="insertAfter"?s=!0:(e.abRelation=="insertAfter"||e.baRelation=="insertBefore")&&(s=!1);let a;if(r.targetPosition.isEqual(i.targetPosition)&&s?a=r.targetPosition._getTransformedByDeletion(i.sourcePosition,i.howMany):a=r.targetPosition._getTransformedByMove(i.sourcePosition,i.targetPosition,i.howMany),Cc(r,i)&&Cc(i,r))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),Bi([t],a);if(n.containsPosition(r.targetPosition)&&n.containsRange(t,!0))return t.start=t.start._getCombined(i.sourcePosition,i.getMovedRangeStart()),t.end=t.end._getCombined(i.sourcePosition,i.getMovedRangeStart()),Bi([t],a);const d=Ee(r.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),Bi([t],a);r.type=="remove"&&i.type!="remove"&&!e.aWasUndone&&!e.forceWeakRemove?o=!0:r.type!="remove"&&i.type=="remove"&&!e.bWasUndone&&!e.forceWeakRemove&&(o=!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",w=f._getTransformedByInsertion(i.getMovedRangeStart(),i.howMany,p);h.push(...w)}const g=t.getIntersection(n);return g!==null&&o&&(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(r.baseVersion)]:Bi(h,a)});F(H,G,(r,i,e)=>{let t=r.targetPosition.clone();(!r.targetPosition.isEqual(i.insertionPosition)||!i.graveyardPosition||e.abRelation=="moveTargetAfter")&&(t=r.targetPosition._getTransformedBySplitOperation(i));const n=k._createFromPositionAndShift(r.sourcePosition,r.howMany);if(n.end.isEqual(i.insertionPosition))return i.graveyardPosition||r.howMany++,r.targetPosition=t,[r];if(n.start.hasSameParentAs(i.splitPosition)&&n.containsPosition(i.splitPosition)){let a=new k(i.splitPosition,n.end);a=a._getTransformedBySplitOperation(i);const l=[new k(n.start,i.splitPosition),a];return Bi(l,t)}r.targetPosition.isEqual(i.splitPosition)&&e.abRelation=="insertAtSource"&&(t=i.moveTargetPosition),r.targetPosition.isEqual(i.insertionPosition)&&e.abRelation=="insertBetween"&&(t=r.targetPosition);const s=[n._getTransformedBySplitOperation(i)];if(i.graveyardPosition){const a=n.start.isEqual(i.graveyardPosition)||n.containsPosition(i.graveyardPosition);r.howMany>1&&a&&!e.aWasUndone&&s.push(k._createFromPositionAndShift(i.insertionPosition,1))}return Bi(s,t)});F(H,le,(r,i,e)=>{const t=k._createFromPositionAndShift(r.sourcePosition,r.howMany);if(i.deletionPosition.hasSameParentAs(r.sourcePosition)&&t.containsPosition(i.sourcePosition)){if(r.type=="remove"&&!e.forceWeakRemove){if(!e.aWasUndone){const s=[];let a=i.graveyardPosition.clone(),l=i.targetPosition._getTransformedByMergeOperation(i);const c=r.targetPosition.getTransformedByOperation(i);r.howMany>1&&(s.push(new H(r.sourcePosition,r.howMany-1,c,0)),a=a._getTransformedByMove(r.sourcePosition,c,r.howMany-1),l=l._getTransformedByMove(r.sourcePosition,c,r.howMany-1));const d=i.deletionPosition._getCombined(r.sourcePosition,c),h=new H(a,1,d,0),m=h.getMovedRangeStart().path.slice();m.push(0);const g=new _(h.targetPosition.root,m);l=l._getTransformedByMove(a,d,1);const f=new H(l,i.howMany,g,0);return s.push(h),s.push(f),s}}else if(r.howMany==1)return e.bWasUndone?(r.sourcePosition=i.graveyardPosition.clone(),r.targetPosition=r.targetPosition._getTransformedByMergeOperation(i),[r]):[new me(0)]}const o=k._createFromPositionAndShift(r.sourcePosition,r.howMany)._getTransformedByMergeOperation(i);return r.sourcePosition=o.start,r.howMany=o.end.offset-o.start.offset,r.targetPosition=r.targetPosition._getTransformedByMergeOperation(i),[r]});F(Be,we,(r,i)=>(r.position=r.position._getTransformedByInsertOperation(i),[r]));F(Be,le,(r,i)=>r.position.isEqual(i.deletionPosition)?(r.position=i.graveyardPosition.clone(),r.position.stickiness="toNext",[r]):(r.position=r.position._getTransformedByMergeOperation(i),[r]));F(Be,H,(r,i)=>(r.position=r.position._getTransformedByMoveOperation(i),[r]));F(Be,Be,(r,i,e)=>{if(r.position.isEqual(i.position))if(e.aIsStrong)r.oldName=i.newName;else return[new me(0)];return[r]});F(Be,G,(r,i)=>{const e=r.position.path,t=i.splitPosition.getParentPath();if(Ee(e,t)=="same"&&!i.graveyardPosition){const n=new Be(r.position.getShiftedBy(1),r.oldName,r.newName,0);return[r,n]}return r.position=r.position._getTransformedBySplitOperation(i),[r]});F(Tt,Tt,(r,i,e)=>{if(r.root===i.root&&r.key===i.key){if(!e.aIsStrong||r.newValue===i.newValue)return[new me(0)];r.oldValue=i.newValue}return[r]});F(gt,gt,(r,i)=>r.rootName===i.rootName&&r.isAdd===i.isAdd?[new me(0)]:[r]);F(G,we,(r,i)=>(r.splitPosition.hasSameParentAs(i.position)&&r.splitPosition.offset<i.position.offset&&(r.howMany+=i.howMany),r.splitPosition=r.splitPosition._getTransformedByInsertOperation(i),r.insertionPosition=r.insertionPosition._getTransformedByInsertOperation(i),[r]));F(G,le,(r,i,e)=>{if(!r.graveyardPosition&&!e.bWasUndone&&r.splitPosition.hasSameParentAs(i.sourcePosition)){const t=i.graveyardPosition.path.slice();t.push(0);const n=new _(i.graveyardPosition.root,t),o=G.getInsertionPosition(new _(i.graveyardPosition.root,t)),s=new G(n,0,o,null,0);return r.splitPosition=r.splitPosition._getTransformedByMergeOperation(i),r.insertionPosition=G.getInsertionPosition(r.splitPosition),r.graveyardPosition=s.insertionPosition.clone(),r.graveyardPosition.stickiness="toNext",[s,r]}return r.splitPosition.hasSameParentAs(i.deletionPosition)&&!r.splitPosition.isAfter(i.deletionPosition)&&r.howMany--,r.splitPosition.hasSameParentAs(i.targetPosition)&&(r.howMany+=i.howMany),r.splitPosition=r.splitPosition._getTransformedByMergeOperation(i),r.insertionPosition=G.getInsertionPosition(r.splitPosition),r.graveyardPosition&&(r.graveyardPosition=r.graveyardPosition._getTransformedByMergeOperation(i)),[r]});F(G,H,(r,i,e)=>{const t=k._createFromPositionAndShift(i.sourcePosition,i.howMany);if(r.graveyardPosition){const o=t.start.isEqual(r.graveyardPosition)||t.containsPosition(r.graveyardPosition);if(!e.bWasUndone&&o){const s=r.splitPosition._getTransformedByMoveOperation(i),a=r.graveyardPosition._getTransformedByMoveOperation(i),l=a.path.slice();l.push(0);const c=new _(a.root,l);return[new H(s,r.howMany,c,0)]}r.graveyardPosition=r.graveyardPosition._getTransformedByMoveOperation(i)}const n=r.splitPosition.isEqual(i.targetPosition);if(n&&(e.baRelation=="insertAtSource"||e.abRelation=="splitBefore"))return r.howMany+=i.howMany,r.splitPosition=r.splitPosition._getTransformedByDeletion(i.sourcePosition,i.howMany),r.insertionPosition=G.getInsertionPosition(r.splitPosition),[r];if(n&&e.abRelation&&e.abRelation.howMany){const{howMany:o,offset:s}=e.abRelation;return r.howMany+=o,r.splitPosition=r.splitPosition.getShiftedBy(s),[r]}if(r.splitPosition.hasSameParentAs(i.sourcePosition)&&t.containsPosition(r.splitPosition)){const o=i.howMany-(r.splitPosition.offset-i.sourcePosition.offset);return r.howMany-=o,r.splitPosition.hasSameParentAs(i.targetPosition)&&r.splitPosition.offset<i.targetPosition.offset&&(r.howMany+=i.howMany),r.splitPosition=i.sourcePosition.clone(),r.insertionPosition=G.getInsertionPosition(r.splitPosition),[r]}return i.sourcePosition.isEqual(i.targetPosition)||(r.splitPosition.hasSameParentAs(i.sourcePosition)&&r.splitPosition.offset<=i.sourcePosition.offset&&(r.howMany-=i.howMany),r.splitPosition.hasSameParentAs(i.targetPosition)&&r.splitPosition.offset<i.targetPosition.offset&&(r.howMany+=i.howMany)),r.splitPosition.stickiness="toNone",r.splitPosition=r.splitPosition._getTransformedByMoveOperation(i),r.splitPosition.stickiness="toNext",r.graveyardPosition?r.insertionPosition=r.insertionPosition._getTransformedByMoveOperation(i):r.insertionPosition=G.getInsertionPosition(r.splitPosition),[r]});F(G,G,(r,i,e)=>{if(r.splitPosition.isEqual(i.splitPosition)){if(!r.graveyardPosition&&!i.graveyardPosition)return[new me(0)];if(r.graveyardPosition&&i.graveyardPosition&&r.graveyardPosition.isEqual(i.graveyardPosition))return[new me(0)];if(e.abRelation=="splitBefore")return r.howMany=0,r.graveyardPosition=r.graveyardPosition._getTransformedBySplitOperation(i),[r]}if(r.graveyardPosition&&i.graveyardPosition&&r.graveyardPosition.isEqual(i.graveyardPosition)){const t=r.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 H(i.moveTargetPosition,i.howMany,i.splitPosition,0)),r.howMany&&l.push(new H(r.splitPosition,r.howMany,r.moveTargetPosition,0)),l}else return[new me(0)]}if(r.graveyardPosition&&(r.graveyardPosition=r.graveyardPosition._getTransformedBySplitOperation(i)),r.splitPosition.isEqual(i.insertionPosition)&&e.abRelation=="splitBefore")return r.howMany++,[r];if(i.splitPosition.isEqual(r.insertionPosition)&&e.baRelation=="splitBefore"){const t=i.insertionPosition.path.slice();t.push(0);const n=new _(i.insertionPosition.root,t),o=new H(r.insertionPosition,1,n,0);return[r,o]}return r.splitPosition.hasSameParentAs(i.splitPosition)&&r.splitPosition.offset<i.splitPosition.offset&&(r.howMany-=i.howMany),r.splitPosition=r.splitPosition._getTransformedBySplitOperation(i),r.insertionPosition=G.getInsertionPosition(r.splitPosition),[r]});function Cc(r,i){return r.targetPosition._getTransformedByDeletion(i.sourcePosition,i.howMany)===null}function Bi(r,i){const e=[];for(let t=0;t<r.length;t++){const n=r[t],o=new H(n.start,n.end.offset-n.start.offset,i,0);e.push(o);for(let s=t+1;s<r.length;s++)r[s]=r[s]._getTransformedByMove(o.sourcePosition,o.targetPosition,o.howMany)[0];i=i._getTransformedByMove(o.sourcePosition,o.targetPosition,o.howMany)}return e}class pe extends j(_){constructor(i,e,t="toNone"){if(super(i,e,t),!this.root.is("rootElement"))throw new b("model-liveposition-root-not-rootelement",i);dv.call(this)}detach(){this.stopListening()}toPosition(){return new _(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(r){return r==="livePosition"||r==="model:livePosition"||r=="position"||r==="model:position"};function dv(){this.listenTo(this.root.document.model,"applyOperation",(r,i)=>{const e=i[0];e.isDocumentOperation&&uv.call(this,e)},{priority:"low"})}function uv(r){const i=this.getTransformedByOperation(r);if(!this.isEqual(i)){const e=this.toPosition();this.path=i.path,this.root=i.root,this.fire("change",e)}}class yi{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}:{},W("batch-constructor-deprecated-string-type"));const{isUndoable:e=!0,isLocal:t=!0,isUndo:n=!1,isTyping:o=!1}=i;this.operations=[],this.isUndoable=e,this.isLocal=t,this.isUndo=n,this.isTyping=o}get type(){return W("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 Tn=class Tn{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 o=k._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const s of o.getItems({shallow:!0}))this._setElementState(s,"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=k._createFromPositionAndShift(e.position,1);for(const n of this._markerCollection.getMarkersIntersectingRange(t)){const o=n.getData();this.bufferMarkerChange(n.name,o,o)}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=k._createFromPositionAndShift(e.splitPosition,e.howMany);for(const o of n.getItems({shallow:!0}))this._setElementState(o,"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 o=e.targetPosition.parent;if(!this._isInInsertedElement(o)){this._markInsert(o,e.targetPosition.offset,t.maxOffset);const s=k._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const a of s.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,o=i.range&&e.range&&!i.range.isEqual(e.range);if(t||n||o)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),o=this._elementChildrenSnapshots.get(t),s=Tc(t.getChildren()),a=hv(o.length,n);let l=0,c=0;for(const d of a)if(d==="i"){const h=this._getDiffActionForNode(s[l].node,"insert"),m=this._elementsSnapshots.get(s[l].node),g=this._getInsertDiff(t,l,h,s[l],m);e.push(g),l++}else if(d==="r"){const h=this._getDiffActionForNode(o[c].node,"remove"),m=this._getRemoveDiff(t,l,h,o[c]);e.push(m),c++}else if(d==="a"){const h=o[c].attributes,m=s[l].attributes;let g;if(s[l].name=="$text")g=new k(_._createAt(t,l),_._createAt(t,l+1));else{const p=t.offsetToIndex(l);g=new k(_._createAt(t,l),_._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 o=e[n],s=e[t],a=o.type=="remove"&&s.type=="remove"&&o.name=="$text"&&s.name=="$text"&&o.position.isEqual(s.position),l=o.type=="insert"&&s.type=="insert"&&o.name=="$text"&&s.name=="$text"&&o.position.parent==s.position.parent&&o.position.offset+o.length==s.position.offset,c=o.type=="attribute"&&s.type=="attribute"&&o.position.parent==s.position.parent&&o.range.isFlat&&s.range.isFlat&&o.position.offset+o.length==s.position.offset&&o.attributeKey==s.attributeKey&&o.attributeOldValue==s.attributeOldValue&&o.attributeNewValue==s.attributeNewValue;a||l||c?(o.length++,c&&(o.range.end=o.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(mv),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=k._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 o=this._changedRoots.get(i)||{name:i},s=o.attributes||{};if(s[e]){const a=s[e];n===a.oldValue?delete s[e]:a.newValue=n}else s[e]={oldValue:t,newValue:n};Object.entries(s).length===0?(delete o.attributes,o.state===void 0&&this._changedRoots.delete(i)):(o.attributes=s,this._changedRoots.set(i,o))}_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=Tn._statesPriority.indexOf(this._elementState.get(i));Tn._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=Tc(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,o=t.offset+t.howMany;if(i.type=="insert"&&(t.type=="insert"&&(i.offset<=t.offset?t.offset+=i.howMany:i.offset<o&&(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<o){const s=t.howMany;t.howMany=i.offset-t.offset,e.unshift({type:"attribute",offset:n,howMany:s-t.howMany,count:this._changeCount++})}}if(i.type=="remove"){if(t.type=="insert"){if(n<=t.offset)t.offset-=i.howMany;else if(n<=o)if(i.offset<t.offset){const s=n-t.offset;t.offset=i.offset,t.howMany-=s,i.nodesToHandle-=s}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<o){const s=o-i.offset;t.howMany-=s,i.nodesToHandle-=s}}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 s=n-t.offset;t.offset=i.offset,t.howMany-=s}else if(i.offset<o)if(n<=o){const s=t.howMany;t.howMany=i.offset-t.offset;const a=s-t.howMany-i.nodesToHandle;e.unshift({type:"attribute",offset:i.offset,howMany:a,count:this._changeCount++})}else t.howMany-=o-i.offset}}if(i.type=="attribute"){if(t.type=="insert")if(i.offset<t.offset&&n>t.offset){if(n>o){const s={type:"attribute",offset:o,howMany:n-o,count:this._changeCount++};this._handleChange(s,e),e.push(s)}i.nodesToHandle=t.offset-i.offset,i.howMany=i.nodesToHandle}else i.offset>=t.offset&&i.offset<o&&(n>o?(i.nodesToHandle=n-o,i.offset=o):i.nodesToHandle=0);if(t.type=="remove"&&i.offset<t.offset&&n>t.offset){const s={type:"attribute",offset:t.offset,howMany:n-t.offset,count:this._changeCount++};this._handleChange(s,e),e.push(s),i.nodesToHandle=t.offset-i.offset,i.howMany=i.nodesToHandle}t.type=="attribute"&&(i.offset>=t.offset&&n<=o?(i.nodesToHandle=0,i.howMany=0,i.offset=0):i.offset<=t.offset&&n>=o&&(t.howMany=0))}}i.howMany=i.nodesToHandle,delete i.nodesToHandle}_getInsertDiff(i,e,t,n,o){const s={type:"insert",position:_._createAt(i,e),name:n.name,attributes:new Map(n.attributes),length:1,changeCount:this._changeCount++,action:t};return t!="insert"&&o&&(s.before={name:o.name,attributes:new Map(o.attributes)}),s}_getRemoveDiff(i,e,t,n){return{type:"remove",action:t,position:_._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[o,s]of e){const a=t.has(o)?t.get(o):null;a!==s&&n.push({type:"attribute",position:i.start,range:i.clone(),length:1,attributeKey:o,attributeOldValue:s,attributeNewValue:a,changeCount:this._changeCount++}),t.delete(o)}for(const[o,s]of t)n.push({type:"attribute",position:i.start,range:i.clone(),length:1,attributeKey:o,attributeOldValue:null,attributeNewValue:s,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 o of t)if(o.type=="insert"&&n>=o.offset&&n<o.offset+o.howMany)return!0}return this._isInInsertedElement(e)}_removeAllNestedChanges(i,e,t){const n=new k(_._createAt(i,e),_._createAt(i,e+t));for(const o of n.getItems({shallow:!0}))o.is("element")&&(this._changesInElement.delete(o),this._removeAllNestedChanges(o,0,o.maxOffset))}};u(Tn,"_statesPriority",[void 0,"refresh","rename","move"]);let Rs=Tn;function Lc(r){return{node:r,name:r.is("$text")?"$text":r.name,attributes:new Map(r.getAttributes())}}function Tc(r){const i=[];for(const e of r)if(e.is("$text"))for(let t=0;t<e.data.length;++t)i.push(Lc(e));else i.push(Lc(e));return i}function hv(r,i){const e=[];let t=0,n=0;for(const o of i){if(o.offset>t){for(let s=0;s<o.offset-t;s++)e.push("e");n+=o.offset-t}if(o.type=="insert"){for(let s=0;s<o.howMany;s++)e.push("i");t=o.offset+o.howMany}else if(o.type=="remove"){for(let s=0;s<o.howMany;s++)e.push("r");t=o.offset,n+=o.howMany}else{if(o.howMany>1500)for(let s=0;s<o.howMany;s++)e.push("a");else e.push(..."a".repeat(o.howMany).split(""));t=o.offset+o.howMany,n+=o.howMany}}if(n<r)for(let o=0;o<r-n-t;o++)e.push("e");return e}function mv(r){const i="position"in r&&r.position.root.rootName=="$graveyard",e="range"in r&&r.range.root.rootName=="$graveyard";return!i&&!e}class gv{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 b("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 o=this._baseVersionToOperationIndex.get(i);o===void 0&&(o=0);let s=this._baseVersionToOperationIndex.get(n);return s===void 0&&(s=this._operations.length-1),this._operations.slice(o,s+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 $r 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}}$r.prototype.is=function(r,i){return i?i===this.name&&(r==="rootElement"||r==="model:rootElement"||r==="element"||r==="model:element"):r==="rootElement"||r==="model:rootElement"||r==="element"||r==="model:element"||r==="node"||r==="model:node"};const Ec="$graveyard";class fv extends j(){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 gv,this.selection=new st(this),this.roots=new We({idProperty:"rootName"}),this.differ=new Rs(e.markers),this.isReadOnly=!1,this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",Ec),this.listenTo(e,"applyOperation",(t,n)=>{const o=n[0];o.isDocumentOperation&&this.differ.bufferOperation(o)},{priority:"high"}),this.listenTo(e,"applyOperation",(t,n)=>{const o=n[0];o.isDocumentOperation&&this.history.addOperation(o)},{priority:"low"}),this.listenTo(this.selection,"change",()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0}),this.listenTo(e.markers,"update",(t,n,o,s,a)=>{const l={...n.getData(),range:s};this.differ.bufferMarkerChange(n.name,a,l),o===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 o of this.roots)!o.isAttached()&&!o.isEmpty&&(t.remove(t.createRangeIn(o)),n=!0);for(const o of this.model.markers)o.getRange().root.isAttached()||(t.removeMarker(o),n=!0);return n})}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(Ec)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new b("model-document-createroot-name-exists",this,{name:t});const n=new $r(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=da(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,o=t.createPositionFromPath(e,[0]);return n.getNearestSelectionRange(o)||t.createRange(o)}_validateSelectionRange(e){return e.start.isValid()&&e.end.isValid()&&xc(e.start)&&xc(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 xc(r){const i=r.textNode;if(i){const e=i.data,t=r.offset-i.startOffset;return!_a(e,t)&&!Ca(e,t)}return!0}class pv extends j(){constructor(){super(...arguments);u(this,"_markers",new Map)}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof Ei?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,n=!1,o=!1){const s=e instanceof Ei?e.name:e;if(s.includes(","))throw new b("markercollection-incorrect-marker-name",this);const a=this._markers.get(s);if(a){const d=a.getData(),h=a.getRange();let m=!1;return h.isEqual(t)||(a._attachLiveRange(Ke.fromRange(t)),m=!0),n!=a.managedUsingOperations&&(a._managedUsingOperations=n,m=!0),typeof o=="boolean"&&o!=a.affectsData&&(a._affectsData=o,m=!0),m&&this.fire(`update:${s}`,a,h,t,d),a}const l=Ke.fromRange(t),c=new Ei(s,l,n,o);return this._markers.set(s,c),this.fire(`update:${s}`,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof Ei?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 Ei?e.name:e,n=this._markers.get(t);if(!n)throw new b("markercollection-refresh-marker-not-exists",this);const o=n.getRange();this.fire(`update:${t}`,n,o,o,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 Ei extends j($t){constructor(e,t,n,o){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=o}get managedUsingOperations(){if(!this._liveRange)throw new b("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new b("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new b("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new b("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new b("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}}Ei.prototype.is=function(r){return r==="marker"||r==="model:marker"};class bv extends He{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 b("detach-operation-on-document-node",this)}_execute(){xm(k._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}class ht extends $t{constructor(e){super();u(this,"markers",new Map);u(this,"_children",new wn);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 ht(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const n=wv(t);for(const o of n)o.parent!==null&&o._remove(),o.parent=this;this._children._insertNodes(e,n)}_removeChildren(e,t=1){const n=this._children._removeNodes(e,t);for(const o of n)o.parent=null;return n}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}}ht.prototype.is=function(r){return r==="documentFragment"||r==="model:documentFragment"};function wv(r){return typeof r=="string"?[new J(r)]:(Ue(r)||(r=[r]),Array.from(r).map(i=>typeof i=="string"?new J(i):i instanceof it?new J(i.data,i.getAttributes()):i))}class kv{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 ht}cloneElement(i,e=!0){return i._clone(e)}insert(i,e,t=0){if(this._assertWriterUsedCorrectly(),i instanceof J&&i.data=="")return;const n=_._createAt(e,t);if(i.parent)if(Pc(i.root,n.root)){this.move(k._createOn(i),n);return}else{if(i.root.document)throw new b("model-writer-insert-forbidden-move",this);this.remove(i)}const o=n.root.document?n.root.document.version:null,s=i instanceof ht?i._removeChildren(0,i.childCount):i,a=new we(n,s,o);if(i instanceof J&&(a.shouldReceiveAttributes=!0),this.batch.addOperation(a),this.model.applyOperation(a),i instanceof ht)for(const[l,c]of i.markers){const d=_._createAt(c.root,0),m={range:new k(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 ht||e instanceof $||e instanceof _?this.insert(this.createText(i),e,t):this.insert(this.createText(i,e),t,n)}insertElement(i,e,t,n){e instanceof ht||e instanceof $||e instanceof _?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 ht||e instanceof $?this.insert(this.createText(i),e,"end"):this.insert(this.createText(i,e),t,"end")}appendElement(i,e,t){e instanceof ht||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 k){const n=t.getMinimalFlatRanges();for(const o of n)Sc(this,i,e,o)}else Ac(this,i,e,t)}setAttributes(i,e){for(const[t,n]of St(i))this.setAttribute(t,n,e)}removeAttribute(i,e){if(this._assertWriterUsedCorrectly(),e instanceof k){const t=e.getMinimalFlatRanges();for(const n of t)Sc(this,i,null,n)}else Ac(this,i,null,e)}clearAttributes(i){this._assertWriterUsedCorrectly();const e=t=>{for(const n of t.getAttributeKeys())this.removeAttribute(n,t)};if(!(i instanceof k))e(i);else for(const t of i.getItems())e(t)}move(i,e,t){if(this._assertWriterUsedCorrectly(),!(i instanceof k))throw new b("writer-move-invalid-range",this);if(!i.isFlat)throw new b("writer-move-range-not-flat",this);const n=_._createAt(e,t);if(n.isEqual(i.start))return;if(this._addOperationForAffectedMarkers("move",i),!Pc(i.root,n.root))throw new b("writer-move-different-document",this);const o=i.root.document?i.root.document.version:null,s=new H(i.start,i.end.offset-i.start.offset,n,o);this.batch.addOperation(s),this.model.applyOperation(s)}remove(i){this._assertWriterUsedCorrectly();const t=(i instanceof k?i:k._createOn(i)).getMinimalFlatRanges().reverse();for(const n of t)this._addOperationForAffectedMarkers("move",n),yv(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 b("writer-merge-no-element-before",this);if(!(t instanceof $))throw new b("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(k._createIn(t),_._createAt(e,"end")),this.remove(t)}_merge(i){const e=_._createAt(i.nodeBefore,"end"),t=_._createAt(i.nodeAfter,0),n=i.root.document.graveyard,o=new _(n,[0]),s=i.root.document.version,a=new le(t,i.nodeAfter.maxOffset,e,o,s);this.batch.addOperation(a),this.model.applyOperation(a)}rename(i,e){if(this._assertWriterUsedCorrectly(),!(i instanceof $))throw new b("writer-rename-not-element-instance",this);const t=i.root.document?i.root.document.version:null,n=new Be(_._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 b("writer-split-element-no-parent",this);if(e||(e=t.parent),!i.parent.getAncestors({includeSelf:!0}).includes(e))throw new b("writer-split-invalid-limit-element",this);let n,o;do{const s=t.root.document?t.root.document.version:null,a=t.maxOffset-i.offset,l=G.getInsertionPosition(i),c=new G(i,a,l,null,s);this.batch.addOperation(c),this.model.applyOperation(c),!n&&!o&&(n=t,o=i.parent.nextSibling),i=this.createPositionAfter(i.parent),t=i.parent}while(t!==e);return{position:i,range:new k(_._createAt(n,"end"),_._createAt(o,0))}}wrap(i,e){if(this._assertWriterUsedCorrectly(),!i.isFlat)throw new b("writer-wrap-range-not-flat",this);const t=e instanceof $?e:new $(e);if(t.childCount>0)throw new b("writer-wrap-element-not-empty",this);if(t.parent!==null)throw new b("writer-wrap-element-attached",this);this.insert(t,i.start);const n=new k(i.start.getShiftedBy(1),i.end.getShiftedBy(1));this.move(n,_._createAt(t,0))}unwrap(i){if(this._assertWriterUsedCorrectly(),i.parent===null)throw new b("writer-unwrap-element-no-parent",this);this.move(k._createIn(i),this.createPositionAfter(i)),this.remove(i)}addMarker(i,e){if(this._assertWriterUsedCorrectly(),!e||typeof e.usingOperation!="boolean")throw new b("writer-addmarker-no-usingoperation",this);const t=e.usingOperation,n=e.range,o=e.affectsData===void 0?!1:e.affectsData;if(this.model.markers.has(i))throw new b("writer-addmarker-marker-exists",this);if(!n)throw new b("writer-addmarker-no-range",this);return t?(tn(this,i,null,n,o),this.model.markers.get(i)):this.model.markers._set(i,n,t,o)}updateMarker(i,e){this._assertWriterUsedCorrectly();const t=typeof i=="string"?i:i.name,n=this.model.markers.get(t);if(!n)throw new b("writer-updatemarker-marker-not-exists",this);if(!e){W("writer-updatemarker-reconvert-using-editingcontroller",{markerName:t}),this.model.markers._refresh(n);return}const o=typeof e.usingOperation=="boolean",s=typeof e.affectsData=="boolean",a=s?e.affectsData:n.affectsData;if(!o&&!e.range&&!s)throw new b("writer-updatemarker-wrong-options",this);const l=n.getRange(),c=e.range?e.range:l;if(o&&e.usingOperation!==n.managedUsingOperations){e.usingOperation?tn(this,t,null,c,a):(tn(this,t,l,null,a),this.model.markers._set(t,c,void 0,a));return}n.managedUsingOperations?tn(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 b("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();tn(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 b("writer-addroot-root-exists",this);const n=this.model.document,o=new gt(i,e,!0,n,n.version);return this.batch.addOperation(o),this.model.applyOperation(o),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 b("writer-detachroot-no-root",this);for(const o of this.model.markers)o.getRange().root===e&&this.removeMarker(o);for(const o of e.getAttributeKeys())this.removeAttribute(o,e);this.remove(this.createRangeIn(e));const t=this.model.document,n=new gt(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 St(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=st._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=st._getStoreAttributeKey(i);this.removeAttribute(t,e.anchor.parent)}e._removeAttribute(i)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new b("writer-incorrect-use",this)}_addOperationForAffectedMarkers(i,e){for(const t of this.model.markers){if(!t.managedUsingOperations)continue;const n=t.getRange();let o=!1;if(i==="move"){const s=e;o=s.containsPosition(n.start)||s.start.isEqual(n.start)||s.containsPosition(n.end)||s.end.isEqual(n.end)}else{const s=e,a=s.nodeBefore,l=s.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;o=c||d||h||m}o&&this.updateMarker(t.name,{range:n})}}}function Sc(r,i,e,t){const n=r.model,o=n.document;let s=t.start,a,l,c;for(const h of t.getWalker({shallow:!0}))c=h.item.getAttribute(i),a&&l!=c&&(l!=e&&d(),s=a),a=h.nextPosition,l=c;a instanceof _&&a!=s&&l!=e&&d();function d(){const h=new k(s,a),m=h.root.document?o.version:null,g=new de(h,i,l,e,m);r.batch.addOperation(g),n.applyOperation(g)}}function Ac(r,i,e,t){const n=r.model,o=n.document,s=t.getAttribute(i);let a,l;if(s!=e){if(t.root===t){const d=t.document?o.version:null;l=new Tt(t,i,s,e,d)}else{a=new k(_._createBefore(t),r.createPositionAfter(t));const d=a.root.document?o.version:null;l=new de(a,i,s,e,d)}r.batch.addOperation(l),n.applyOperation(l)}}function tn(r,i,e,t,n){const o=r.model,s=o.document,a=new Ae(i,e,t,o.markers,!!n,s.version);r.batch.addOperation(a),o.applyOperation(a)}function yv(r,i,e,t){let n;if(r.root.document){const o=t.document,s=new _(o.graveyard,[0]);n=new H(r,i,s,o.version)}else n=new bv(r,i);e.addOperation(n),t.applyOperation(n)}function Pc(r,i){return r===i||r instanceof $r&&i instanceof $r}function vv(r){r.document.registerPostFixer(i=>_v(i,r))}function _v(r,i){const e=i.document.selection,t=i.schema,n=[];let o=!1;for(const s of e.getRanges()){const a=Ra(s,t);a&&!a.isEqual(s)?(n.push(a),o=!0):n.push(s)}return o&&r.setSelection(Ev(n),{backward:e.isBackward}),!1}function Ra(r,i){return r.isCollapsed?Cv(r,i):Lv(r,i)}function Cv(r,i){const e=r.start,t=i.getNearestSelectionRange(e);if(!t){const o=e.getAncestors().reverse().find(s=>i.isObject(s));return o?k._createOn(o):null}if(!t.isCollapsed)return t;const n=t.start;return e.isEqual(n)?null:new k(n)}function Lv(r,i){const{start:e,end:t}=r,n=i.checkChild(e,"$text"),o=i.checkChild(t,"$text"),s=i.getLimitElement(e),a=i.getLimitElement(t);if(s===a){if(n&&o)return null;if(Tv(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 k(f,p)}}const l=s&&!s.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||!Rc(e.nodeAfter,i)),m=c&&(!d||!Rc(t.nodeBefore,i));let g=e,f=t;return h&&(g=_._createBefore(Ic(s,i))),m&&(f=_._createAfter(Ic(a,i))),new k(g,f)}return null}function Ic(r,i){let e=r,t=e;for(;i.isLimit(t)&&t.parent;)e=t,t=t.parent;return e}function Tv(r,i,e){const t=r.nodeAfter&&!e.isLimit(r.nodeAfter)||e.checkChild(r,"$text"),n=i.nodeBefore&&!e.isLimit(i.nodeBefore)||e.checkChild(i,"$text");return t||n}function Ev(r){const i=[...r],e=new Set;let t=1;for(;t<i.length;){const o=i[t],s=i.slice(0,t);for(const[a,l]of s.entries())if(!e.has(a)){if(o.isEqual(l))e.add(a);else if(o.isIntersecting(l)){e.add(a),e.add(t);const c=o.getJoined(l);i.push(c)}}t++}return i.filter((o,s)=>!e.has(s))}function Rc(r,i){return r&&i.isSelectable(r)}function xv(r,i,e={}){if(i.isCollapsed)return;const t=i.getFirstRange();if(t.root.rootName=="$graveyard")return;const n=r.schema;r.change(o=>{if(!e.doNotResetEntireContent&&Nv(n,i)){Vv(o,i);return}const s={};if(!e.doNotAutoparagraph){const c=i.getSelectedElement();c&&Object.assign(s,n.getAttributesWithProperty(c,"copyOnReplace",!0))}let a,l;e.doNotFixSelection?(a=pe.fromPosition(t.start,"toPrevious"),l=pe.fromPosition(t.end,"toNext")):[a,l]=Sv(t),a.isTouching(l)||o.remove(o.createRange(a,l)),e.leaveUnmerged||(Pv(o,a,l),n.removeDisallowedAttributes(a.parent.getChildren(),o)),Bm(o,i,a),!e.doNotAutoparagraph&&Mv(n,a)&&Mm(o,a,i,s),a.detach(),l.detach()})}function Sv(r){const i=r.root.document.model,e=r.start;let t=r.end;if(i.hasContent(r,{ignoreMarkers:!0})){const n=Av(t);if(n&&t.isTouching(i.createPositionAt(n,0))){const o=i.createSelection(r);i.modifySelection(o,{direction:"backward"});const s=o.getLastPosition(),a=i.createRange(s,t);i.hasContent(a,{ignoreMarkers:!0})||(t=s)}}return[pe.fromPosition(e,"toPrevious"),pe.fromPosition(t,"toNext")]}function Av(r){const i=r.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 Pv(r,i,e){const t=r.model;if(!Ma(r.model.schema,i,e))return;const[n,o]=Rv(i,e);!n||!o||(!t.hasContent(n,{ignoreMarkers:!0})&&t.hasContent(o,{ignoreMarkers:!0})?Rm(r,i,e,n.parent):Im(r,i,e,n.parent))}function Im(r,i,e,t){const n=i.parent,o=e.parent;if(!(n==t||o==t)){for(i=r.createPositionAfter(n),e=r.createPositionBefore(o),e.isEqual(i)||r.insert(o,i),r.merge(i);e.parent.isEmpty;){const s=e.parent;e=r.createPositionBefore(s),r.remove(s)}Ma(r.model.schema,i,e)&&Im(r,i,e,t)}}function Rm(r,i,e,t){const n=i.parent,o=e.parent;if(!(n==t||o==t)){for(i=r.createPositionAfter(n),e=r.createPositionBefore(o),e.isEqual(i)||r.insert(n,e);i.parent.isEmpty;){const s=i.parent;i=r.createPositionBefore(s),r.remove(s)}e=r.createPositionBefore(o),Iv(r,e),Ma(r.model.schema,i,e)&&Rm(r,i,e,t)}}function Iv(r,i){const e=i.nodeBefore,t=i.nodeAfter;e.name!=t.name&&r.rename(e,t.name),r.clearAttributes(e),r.setAttributes(Object.fromEntries(t.getAttributes()),e),r.merge(i)}function Ma(r,i,e){const t=i.parent,n=e.parent;return t==n||r.isLimit(t)||r.isLimit(n)?!1:Bv(i,e,r)}function Rv(r,i){const e=r.getAncestors(),t=i.getAncestors();let n=0;for(;e[n]&&e[n]==t[n];)n++;return[e[n],t[n]]}function Mv(r,i){const e=r.checkChild(i,"$text"),t=r.checkChild(i,"paragraph");return!e&&t}function Bv(r,i,e){const t=new k(r,i);for(const n of t.getWalker())if(e.isLimit(n.item))return!1;return!0}function Mm(r,i,e,t={}){const n=r.createElement("paragraph");r.model.schema.setAllowedAttributes(n,t,r),r.insert(n,i),Bm(r,e,r.createPositionAt(n,0))}function Vv(r,i){const e=r.model.schema.getLimitElement(i);r.remove(r.createRangeIn(e)),Mm(r,r.createPositionAt(e,0),i)}function Nv(r,i){const e=r.getLimitElement(i);if(!i.containsEntireContent(e))return!1;const t=i.getFirstRange();return t.start.parent==t.end.parent?!1:r.checkChild(e,"paragraph")}function Bm(r,i,e){i instanceof st?r.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 Dv(r,i){return r.change(e=>{const t=e.createDocumentFragment(),n=i.getFirstRange();if(!n||n.isCollapsed)return t;const o=n.start.root,s=n.start.getCommonPath(n.end),a=o.getNodeByPath(s);let l;n.start.parent==n.end.parent?l=n:l=e.createRange(e.createPositionAt(a,n.start.path[s.length]),e.createPositionAt(a,n.end.path[s.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"));Mc(m,e),Mc(h,e)}return t})}function Mc(r,i){const e=[];Array.from(r.getItems({direction:"backward"})).map(t=>i.createRangeOn(t)).filter(t=>(t.start.isAfter(r.start)||t.start.isEqual(r.start))&&(t.end.isBefore(r.end)||t.end.isEqual(r.end))).forEach(t=>{e.push(t.start.parent),i.remove(t)}),e.forEach(t=>{let n=t;for(;n.parent&&n.isEmpty;){const o=i.createRangeOn(n);n=n.parent,i.remove(o)}})}function Ov(r,i,e){return r.change(t=>{const n=e||r.document.selection;n.isCollapsed||r.deleteContent(n,{doNotAutoparagraph:!0});const o=new zv(r,t,n.anchor),s=[];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 w=h.parent===i&&h.isAtStart,y=h.parent===i&&h.isAtEnd;!w&&!y?(f=t.createElement("$marker"),t.insert(f,h)):g&&(p=w?"start":"end"),s.push({name:m,element:f,collapsed:p})}}a=i.getChildren()}else a=[i];o.handleNodes(a);let l=o.getSelectionRange();if(i.is("documentFragment")&&s.length){const d=l?Ke.fromRange(l):null,h={};for(let m=s.length-1;m>=0;m--){const{name:g,element:f,collapsed:p}=s[m],w=!h[g];if(w&&(h[g]=[]),f){const y=t.createPositionAt(f,"before");h[g].push(y),t.remove(f)}else{const y=o.getAffectedRange();if(!y){p&&h[g].push(o.position);continue}p?h[g].push(y[p]):h[g].push(w?y.start:y.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 k(g,f)});d&&(l=d.toRange(),d.detach())}/* istanbul ignore else -- @preserve */l&&(n instanceof st?t.setSelection(l):n.setTo(l));const c=o.getAffectedRange()||r.createRange(n.anchor);return o.destroy(),c})}class zv{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 b("insertcontent-invalid-insertion-position",this);this.position=t,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?k._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new k(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 b("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 b("insertcontent-invalid-insertion-position",this);this.position=_._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 Fv(r,i,e,t={}){if(!r.schema.isObject(i))throw new b("insertobject-element-not-an-object",r,{object:i});const n=e||r.document.selection;let o=n;t.findOptimalPosition&&r.schema.isBlock(i)&&(o=r.createSelection(r.schema.findOptimalInsertionRange(n,t.findOptimalPosition)));const s=ue(n.getSelectedBlocks()),a={};return s&&Object.assign(a,r.schema.getAttributesWithProperty(s,"copyOnReplace",!0)),r.change(l=>{o.isCollapsed||r.deleteContent(o,{doNotAutoparagraph:!0});let c=i;const d=o.anchor.parent;!r.schema.checkChild(d,i)&&r.schema.checkChild(d,"paragraph")&&r.schema.checkChild("paragraph",i)&&(c=l.createElement("paragraph"),l.insert(i,c)),r.schema.setAllowedAttributes(c,a,l);const h=r.insertContent(c,o);return h.isCollapsed||t.setSelection&&Uv(l,i,t.setSelection,a),h})}function Uv(r,i,e,t){const n=r.model;if(e=="on"){r.setSelection(i,"on");return}if(e!="after")throw new b("insertobject-invalid-place-parameter-value",n);let o=i.nextSibling;if(n.schema.isInline(i)){r.setSelection(i,"after");return}!(o&&n.schema.checkChild(o,"$text"))&&n.schema.checkChild(i.parent,"paragraph")&&(o=r.createElement("paragraph"),n.schema.setAllowedAttributes(o,t,r),n.insertContent(o,r.createPositionAfter(i))),o&&r.setSelection(o,0)}const Hv=' ,.?!:;"-()';function Wv(r,i,e={}){const t=r.schema,n=e.direction!="backward",o=e.unit?e.unit:"character",s=!!e.treatEmojiAsSingleUnit,a=i.focus,l=new Ct({boundaries:Kv(a,n),singleCharacters:!0,direction:n?"forward":"backward"}),c={walker:l,schema:t,isForward:n,unit:o,treatEmojiAsSingleUnit:s};let d;for(;d=l.next();){if(d.done)return;const h=qv(c,d.value);if(h){i instanceof st?r.change(m=>{m.setSelectionFocus(h)}):i.setFocus(h);return}}}function qv(r,i){const{isForward:e,walker:t,unit:n,schema:o,treatEmojiAsSingleUnit:s}=r,{type:a,item:l,nextPosition:c}=i;if(a=="text")return r.unit==="word"?Gv(t,e):jv(t,n,s);if(a==(e?"elementStart":"elementEnd")){if(o.isSelectable(l))return _._createAt(l,e?"after":"before");if(o.checkChild(c,"$text"))return c}else{if(o.isLimit(l)){t.skip(()=>!0);return}if(o.checkChild(c,"$text"))return c}}function jv(r,i,e){const t=r.position.textNode;if(t){const n=t.data;let o=r.position.offset-t.startOffset;for(;_a(n,o)||i=="character"&&Ca(n,o)||e&&jh(n,o);)r.next(),o=r.position.offset-t.startOffset}return r.position}function Gv(r,i){let e=r.position.textNode;for(e||(e=i?r.position.nodeAfter:r.position.nodeBefore);e&&e.is("$text");){const t=r.position.offset-e.startOffset;if(Zv(e,t,i))e=i?r.position.nodeAfter:r.position.nodeBefore;else{if($v(e.data,t,i))break;r.next()}}return r.position}function Kv(r,i){const e=r.root,t=_._createAt(e,i?"end":0);return i?new k(r,t):new k(t,r)}function $v(r,i,e){const t=i+(e?0:-1);return Hv.includes(r.charAt(t))}function Zv(r,i,e){return i===(e?r.offsetSize:0)}let Jv=class extends Z(){constructor(){super();u(this,"markers");u(this,"document");u(this,"schema");u(this,"_pendingChanges");u(this,"_currentWriter");this.markers=new pv,this.document=new fv(this),this.schema=new Ry,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"),vv(this),this.document.registerPostFixer(vm),this.on("insertContent",(e,[t,n])=>{e.return=Ov(this,t,n)}),this.on("insertObject",(e,[t,n,o])=>{e.return=Fv(this,t,n,o)}),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 yi,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(t){/* istanbul ignore next -- @preserve */b.rethrowUnexpectedError(t,this)}}enqueueChange(e,t){try{e?typeof e=="function"?(t=e,e=new yi):e instanceof yi||(e=new yi(e)):e=new yi,this._pendingChanges.push({batch:e,callback:t}),this._pendingChanges.length==1&&this._runPendingChanges()}catch(n){/* istanbul ignore next -- @preserve */b.rethrowUnexpectedError(n,this)}}applyOperation(e){e._execute()}insertContent(e,t,n,...o){const s=Ko(t,n);return this.fire("insertContent",[e,s,n,...o])}insertObject(e,t,n,o,...s){const a=Ko(t,n);return this.fire("insertObject",[e,a,o,o,...s])}deleteContent(e,t){xv(this,e,t)}modifySelection(e,t){Wv(this,e,t)}getSelectedContent(e){return Dv(this,e)}hasContent(e,t={}){const n=e instanceof k?e:k._createIn(e);if(n.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:s=!1}=t;if(!s){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(o){if(a.data.search(/\S/)!==-1)return!0}else return!0;else return!0;return!1}canEditAt(e){const t=Ko(e);return this.fire("canEditAt",[t])}createPositionFromPath(e,t,n){return new _(e,t,n)}createPositionAt(e,t){return _._createAt(e,t)}createPositionAfter(e){return _._createAfter(e)}createPositionBefore(e){return _._createBefore(e)}createRange(e,t){return new k(e,t)}createRangeIn(e){return k._createIn(e)}createRangeOn(e){return k._createOn(e)}createSelection(...e){return new Oe(...e)}createBatch(e){return new yi(e)}createOperationFromJSON(e){return rv.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 kv(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 Ko(r,i){if(r)return r instanceof Oe||r instanceof st?r:r instanceof di?i||i===0?new Oe(r,i):r.is("rootElement")?new Oe(r,"in"):new Oe(r,"on"):new Oe(r)}class Yv extends Pt{constructor(){super(...arguments);u(this,"domEventType","click")}onDomEvent(e){this.fire(e.type,e)}}class Ba extends Pt{constructor(){super(...arguments);u(this,"domEventType",["mousedown","mouseup","mouseover","mouseout"])}onDomEvent(e){this.fire(e.type,e)}}class Xv extends Pt{constructor(){super(...arguments);u(this,"domEventType",["touchstart","touchend","touchmove"])}onDomEvent(e){this.fire(e.type,e)}}class Vm{constructor(i){u(this,"document");this.document=i}createDocumentFragment(i){return new ni(this.document,i)}createElement(i,e,t){return new At(this.document,i,e,t)}createText(i){return new ve(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 At(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){mt(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 Lt(...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 Qv=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,e_=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,t_=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,i_=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,n_=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,r_=/\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi,o_=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 Nm(r){return r.startsWith("#")?Qv.test(r):r.startsWith("rgb")?e_.test(r)||t_.test(r):r.startsWith("hsl")?i_.test(r)||n_.test(r):o_.has(r.toLowerCase())}const s_=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function a_(r){return s_.includes(r)}const l_=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function Va(r){return l_.test(r)}const c_=/^[+-]?[0-9]*([.][0-9]+)?%$/;function d_(r){return c_.test(r)}const u_=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function h_(r){return u_.includes(r)}const m_=["center","top","bottom","left","right"];function g_(r){return m_.includes(r)}const f_=["fixed","scroll","local"];function p_(r){return f_.includes(r)}const b_=/^url\(/;function w_(r){return b_.test(r)}function kn(r=""){if(r==="")return{top:void 0,right:void 0,bottom:void 0,left:void 0};const i=Na(r),e=i[0],t=i[2]||e,n=i[1]||e,o=i[3]||n;return{top:e,bottom:t,right:n,left:o}}function yn(r){return i=>{const{top:e,right:t,bottom:n,left:o}=i,s=[];return[e,t,o,n].every(a=>!!a)?s.push([r,k_(i)]):(e&&s.push([r+"-top",e]),t&&s.push([r+"-right",t]),n&&s.push([r+"-bottom",n]),o&&s.push([r+"-left",o])),s}}function k_({top:r,right:i,bottom:e,left:t}){const n=[];return t!==i?n.push(r,i,e,t):e!==r?n.push(r,i,e):i!==r?n.push(r,i):n.push(r),n.join(" ")}function Dm(r){return i=>({path:r,value:kn(i)})}function Na(r){const i=r.trim().slice(0,1500).matchAll(r_);return Array.from(i).map(e=>e[0])}function Om(r){r.setNormalizer("background",y_()),r.setNormalizer("background-color",v_()),r.setReducer("background",__()),r.setStyleRelation("background",["background-color"])}function y_(){return r=>{const i={},e=Na(r);for(const t of e)h_(t)?(i.repeat=i.repeat||[],i.repeat.push(t)):g_(t)?(i.position=i.position||[],i.position.push(t)):p_(t)?i.attachment=t:Nm(t)?i.color=t:w_(t)&&(i.image=t);return{path:"background",value:i}}}function v_(){return r=>({path:"background.color",value:r})}function __(){return r=>{const i=[];return i.push(["background-color",r.color]),i}}function zm(r){r.setNormalizer("border",C_()),r.setNormalizer("border-top",ar("top")),r.setNormalizer("border-right",ar("right")),r.setNormalizer("border-bottom",ar("bottom")),r.setNormalizer("border-left",ar("left")),r.setNormalizer("border-color",$o("color")),r.setNormalizer("border-width",$o("width")),r.setNormalizer("border-style",$o("style")),r.setNormalizer("border-top-color",qe("color","top")),r.setNormalizer("border-top-style",qe("style","top")),r.setNormalizer("border-top-width",qe("width","top")),r.setNormalizer("border-right-color",qe("color","right")),r.setNormalizer("border-right-style",qe("style","right")),r.setNormalizer("border-right-width",qe("width","right")),r.setNormalizer("border-bottom-color",qe("color","bottom")),r.setNormalizer("border-bottom-style",qe("style","bottom")),r.setNormalizer("border-bottom-width",qe("width","bottom")),r.setNormalizer("border-left-color",qe("color","left")),r.setNormalizer("border-left-style",qe("style","left")),r.setNormalizer("border-left-width",qe("width","left")),r.setExtractor("border-top",lr("top")),r.setExtractor("border-right",lr("right")),r.setExtractor("border-bottom",lr("bottom")),r.setExtractor("border-left",lr("left")),r.setExtractor("border-top-color","border.color.top"),r.setExtractor("border-right-color","border.color.right"),r.setExtractor("border-bottom-color","border.color.bottom"),r.setExtractor("border-left-color","border.color.left"),r.setExtractor("border-top-width","border.width.top"),r.setExtractor("border-right-width","border.width.right"),r.setExtractor("border-bottom-width","border.width.bottom"),r.setExtractor("border-left-width","border.width.left"),r.setExtractor("border-top-style","border.style.top"),r.setExtractor("border-right-style","border.style.right"),r.setExtractor("border-bottom-style","border.style.bottom"),r.setExtractor("border-left-style","border.style.left"),r.setReducer("border-color",yn("border-color")),r.setReducer("border-style",yn("border-style")),r.setReducer("border-width",yn("border-width")),r.setReducer("border-top",cr("top")),r.setReducer("border-right",cr("right")),r.setReducer("border-bottom",cr("bottom")),r.setReducer("border-left",cr("left")),r.setReducer("border",T_()),r.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"]),r.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),r.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),r.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),r.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),r.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),r.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),r.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function C_(){return r=>{const{color:i,style:e,width:t}=Fm(r);return{path:"border",value:{color:kn(i),style:kn(e),width:kn(t)}}}}function ar(r){return i=>{const{color:e,style:t,width:n}=Fm(i),o={};return e!==void 0&&(o.color={[r]:e}),t!==void 0&&(o.style={[r]:t}),n!==void 0&&(o.width={[r]:n}),{path:"border",value:o}}}function $o(r){return i=>({path:"border",value:L_(i,r)})}function L_(r,i){return{[i]:kn(r)}}function qe(r,i){return e=>({path:"border",value:{[r]:{[i]:e}}})}function lr(r){return(i,e)=>{if(e.border)return dn(e.border,r)}}function dn(r,i){const e={};return r.width&&r.width[i]&&(e.width=r.width[i]),r.style&&r.style[i]&&(e.style=r.style[i]),r.color&&r.color[i]&&(e.color=r.color[i]),e}function Fm(r){const i={},e=Na(r);for(const t of e)Va(t)||/thin|medium|thick/.test(t)?i.width=t:a_(t)?i.style=t:i.color=t;return i}function T_(){return i=>{const e=dn(i,"top"),t=dn(i,"right"),n=dn(i,"bottom"),o=dn(i,"left"),s=[e,t,n,o],a={width:r(s,"width"),style:r(s,"style"),color:r(s,"color")},l=xi(a,"all");return l.length?l:[...Object.entries(a).reduce((d,[h,m])=>(m&&(d.push([`border-${h}`,m]),s.forEach(g=>delete g[h])),d),[]),...xi(e,"top"),...xi(t,"right"),...xi(n,"bottom"),...xi(o,"left")]};function r(i,e){return i.map(t=>t[e]).reduce((t,n)=>t==n?t:null)}}function cr(r){return i=>xi(i,r)}function xi(r,i){const e=[];if(r&&r.width&&e.push("width"),r&&r.style&&e.push("style"),r&&r.color&&e.push("color"),e.length==3){const t=e.map(n=>r[n]).join(" ");return[i=="all"?["border",t]:[`border-${i}`,t]]}return i=="all"?[]:e.map(t=>[`border-${i}-${t}`,r[t]])}function E_(r){r.setNormalizer("margin",Dm("margin")),r.setNormalizer("margin-top",i=>({path:"margin.top",value:i})),r.setNormalizer("margin-right",i=>({path:"margin.right",value:i})),r.setNormalizer("margin-bottom",i=>({path:"margin.bottom",value:i})),r.setNormalizer("margin-left",i=>({path:"margin.left",value:i})),r.setReducer("margin",yn("margin")),r.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function x_(r){r.setNormalizer("padding",Dm("padding")),r.setNormalizer("padding-top",i=>({path:"padding.top",value:i})),r.setNormalizer("padding-right",i=>({path:"padding.right",value:i})),r.setNormalizer("padding-bottom",i=>({path:"padding.bottom",value:i})),r.setNormalizer("padding-left",i=>({path:"padding.left",value:i})),r.setReducer("padding",yn("padding")),r.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 Um{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 Ms(r,i=new Set){const e=[r],t=new Set;let n=0;for(;e.length>n;){const o=e[n++];if(!(t.has(o)||!S_(o)||i.has(o)))if(t.add(o),Symbol.iterator in o)try{for(const s of o)e.push(s)}catch{}else for(const s in o)s!=="defaultValue"&&e.push(o[s])}return t}function S_(r){const i=Object.prototype.toString.call(r),e=typeof r;return!(e==="number"||e==="boolean"||e==="string"||e==="symbol"||e==="function"||i==="[object Date]"||i==="[object RegExp]"||i==="[object Module]"||r===void 0||r===null||r._watchdogExcluded||r instanceof EventTarget||r instanceof Event)}function Hm(r,i,e=new Set){if(r===i&&A_(r))return!0;const t=Ms(r,e),n=Ms(i,e);for(const o of t)if(n.has(o))return!0;return!1}function A_(r){return typeof r=="object"&&r!==null}class Wm extends Um{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=En(this._save.bind(this),typeof t.saveInterval=="number"?t.saveInterval:5e3),e&&(this._creator=(n,o)=>e.create(n,o)),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||{},o={};for(const[a,l]of Object.entries(this._data.roots))l.isLoaded?(e[a]="",o[a]=n[a]||{}):t.push(a);const s={...this._config,extraPlugins:this._config.extraPlugins||[],lazyRoots:t,rootsAttributes:o,_watchdogInitialData:this._data};return delete s.initialData,s.extraPlugins.push(P_),this._initUsingData?this.create(e,s,s.context):qt(this._elementOrData)?this.create(this._elementOrData,s,s.context):this.create(this._editables,s,s.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(o=>{this._editor=o,o.model.document.on("change:data",this._throttledSave),this._lastDocumentVersion=o.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,o=n.has("CommentsRepository")&&n.get("CommentsRepository"),s=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 o&&(a.commentThreads=JSON.stringify(o.getCommentThreads({toJSON:!0,skipNotAttached:!0}))),s&&(a.suggestions=JSON.stringify(s.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 Hm(this._editor,e.context,this._excludedProps)}_cloneEditorConfiguration(e){return bo(e,(t,n)=>{if(qt(t)||n==="context")return t})}}class P_{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:o}])=>{const s=JSON.parse(n),a=JSON.parse(o),l=e.model.document.getRoot(t);for(const[c,d]of a)i.setAttribute(c,d,l);for(const c of s){const d=this._createNode(i,c);i.insert(d,l,"end")}}),Object.entries(this._data.markers).forEach(([t,n])=>{const{document:o}=e.model,{rangeJSON:{start:s,end:a},...l}=n,c=o.getRoot(s.root),d=i.createPositionFromPath(c,s.path,s.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"),o=this.editor.plugins.get("CommentsRepository");o.hasCommentThread(t.threadId)&&o.getCommentThread(t.threadId).remove(),o.addCommentThread({channelId:n,...t})}),e.forEach(t=>{const n=this.editor.plugins.get("TrackChangesEditing");if(n.hasSuggestion(t.id)){const o=n.getSuggestion(t.id);o.attributes=t.attributes}else n.addSuggestionData(t)})}}const vn=Symbol("MainQueueId");class I_ extends Um{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 R_);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(vn,()=>(this._contextConfig=e,this._create()))}getItem(e){return this._getWatchdog(e)._item}getItemState(e){return this._getWatchdog(e).state}add(e){const t=Bc(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 o;if(this._watchdogs.has(n.id))throw new Error(`Item with the given id is already added: '${n.id}'.`);if(n.type==="editor")return o=new Wm(null,this._watchdogConfig),o.setCreator(n.creator),o._setExcludedProperties(this._contextProps),n.destructor&&o.setDestructor(n.destructor),this._watchdogs.set(n.id,o),o.on("error",(s,{error:a,causesRestart:l})=>{this._fire("itemError",{itemId:n.id,error:a}),l&&this._actionQueues.enqueue(n.id,()=>new Promise(c=>{const d=()=>{o.off("restart",d),this._fire("itemRestart",{itemId:n.id}),c()};o.on("restart",d)}))}),o.create(n.sourceElementOrData,n.config,this._context);throw new Error(`Not supported item type: '${n.type}'.`)})))}remove(e){const t=Bc(e);return Promise.all(t.map(n=>this._actionQueues.enqueue(n,()=>{const o=this._getWatchdog(n);return this._watchdogs.delete(n),o.destroy()})))}destroy(){return this._actionQueues.enqueue(vn,()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy()))}_restart(){return this._actionQueues.enqueue(vn,()=>(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=Ms(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 Hm(this._context,e.context)}}class R_{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===vn;this._activeActions++,this._queues.get(i)||this._queues.set(i,Promise.resolve());const o=(t?Promise.all(this._queues.values()):Promise.all([this._queues.get(vn),this._queues.get(i)])).then(e),s=o.catch(()=>{});return this._queues.set(i,s),o.finally(()=>{this._activeActions--,this._queues.get(i)===s&&this._activeActions===0&&this._onEmptyCallbacks.forEach(a=>a())})}}function Bc(r){return Array.isArray(r)?r:[r]}/**
|
|
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 v extends Z(){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",Vc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",Vc),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function Vc(r){r.return=!1,r.stop()}class M extends Z(){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,s=!(n.getFirstPosition().root.rootName=="$graveyard")&&e.model.canEditAt(n);(e.isReadOnly||this._isEnabledBasedOnSelection&&!s)&&(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",Nc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",Nc),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function Nc(r){r.return=!1,r.stop()}class Dc extends M{constructor(){super(...arguments);u(this,"_childCommandsDefinitions",[])}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={}){Ch(this._childCommandsDefinitions,{command:e,priority:t.priority||"normal"}),e.on("change:isEnabled",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find(({command:t})=>t.isEnabled);return e&&e.command}}class qm extends j(){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 o of t)o.pluginName&&this._availablePlugins.set(o.pluginName,o);this._contextPlugins=new Map;for(const[o,s]of n)this._contextPlugins.set(o,s),this._contextPlugins.set(s,o),o.pluginName&&this._availablePlugins.set(o.pluginName,o)}*[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 b("plugincollection-plugin-not-loaded",this._context,{plugin:n})}return t}has(e){return this._plugins.has(e)}init(e,t=[],n=[]){const o=this,s=this._context;f(e),w(e);const a=e.filter(x=>!m(x,t)),l=[...p(a)];ee(l,n);const c=z(l);return re(c,"init").then(()=>re(c,"afterInit")).then(()=>c);function d(x){return typeof x=="function"}function h(x){return d(x)&&!!x.isContextPlugin}function m(x,D){return D.some(S=>S===x||g(x)===S||g(S)===x)}function g(x){return d(x)?x.pluginName||x.name:x}function f(x,D=new Set){x.forEach(S=>{d(S)&&(D.has(S)||(D.add(S),S.pluginName&&!o._availablePlugins.has(S.pluginName)&&o._availablePlugins.set(S.pluginName,S),S.requires&&f(S.requires,D)))})}function p(x,D=new Set){return x.map(S=>d(S)?S:o._availablePlugins.get(S)).reduce((S,I)=>D.has(I)?S:(D.add(I),I.requires&&(w(I.requires,I),p(I.requires,D).forEach(K=>S.add(K))),S.add(I)),new Set)}function w(x,D=null){x.map(S=>d(S)?S:o._availablePlugins.get(S)||S).forEach(S=>{y(S,D),C(S,D),R(S,D)})}function y(x,D){if(!d(x))throw D?new b("plugincollection-soft-required",s,{missingPlugin:x,requiredBy:g(D)}):new b("plugincollection-plugin-not-found",s,{plugin:x})}function C(x,D){if(h(D)&&!h(x))throw new b("plugincollection-context-required",s,{plugin:g(x),requiredBy:g(D)})}function R(x,D){if(D&&m(x,t))throw new b("plugincollection-required",s,{plugin:g(x),requiredBy:g(D)})}function z(x){return x.map(D=>{let S=o._contextPlugins.get(D);return S=S||new D(s),o._add(D,S),S})}function re(x,D){return x.reduce((S,I)=>!I[D]||o._contextPlugins.has(I)?S:S.then(I[D].bind(I)),Promise.resolve())}function ee(x,D){for(const S of D){if(typeof S!="function")throw new b("plugincollection-replace-plugin-invalid-type",null,{pluginItem:S});const I=S.pluginName;if(!I)throw new b("plugincollection-replace-plugin-missing-name",null,{pluginItem:S});if(S.requires&&S.requires.length)throw new b("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:I});const K=o._availablePlugins.get(I);if(!K)throw new b("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:I});const ge=x.indexOf(K);if(ge===-1){if(o._contextPlugins.has(K))return;throw new b("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:I})}if(K.requires&&K.requires.length)throw new b("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:I});x.splice(ge,1,S),o._availablePlugins.set(I,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 b("plugincollection-plugin-name-conflict",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:e});this._plugins.set(n,t)}}}class Zr{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 Rh(t,this.constructor.defaultConfig);const n=this.constructor.builtinPlugins;this.config.define("plugins",n),this.plugins=new qm(this,n);const o=this.config.get("language")||{};this.locale=new lw({uiLanguage:typeof o=="string"?o:o.ui,contentLanguage:this.config.get("language.content"),translations:e}),this.t=this.locale.t,this.editors=new We}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 b("context-initplugins-constructor-only",null,{Plugin:t});if(t.isContextPlugin!==!0)throw new b("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 b("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(Zr,"defaultConfig"),u(Zr,"builtinPlugins");class M_ extends Z(){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 B_{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 b("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 V_ extends ce{constructor(e){super();u(this,"editor");this.editor=e}set(e,t,n={}){if(typeof t=="string"){const o=t;t=(s,a)=>{this.editor.execute(o),a()}}super.set(e,t,n)}}const Zo="contentEditing",Oc="common";class N_{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:Zo,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:Oc}),n&&n.forEach(o=>{this.addKeystrokeInfoGroup({categoryId:i,...o})})}addKeystrokeInfoGroup({categoryId:i=Zo,id:e,label:t,keystrokes:n}){const o=this.keystrokeInfos.get(i);if(!o)throw new b("accessibility-unknown-keystroke-info-category",this._editor,{groupId:e,categoryId:i});o.groups.set(e,{id:e,label:t,keystrokes:n||[]})}addKeystrokeInfos({categoryId:i=Zo,groupId:e=Oc,keystrokes:t}){if(!this.keystrokeInfos.has(i))throw new b("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:i,keystrokes:t});const n=this.keystrokeInfos.get(i);if(!n.groups.has(e))throw new b("accessibility-unknown-keystroke-info-group",this._editor,{groupId:e,categoryId:i,keystrokes:t});n.groups.get(e).keystrokes.push(...t)}}function D_(r){return{sessionId:H_(),pageSessionId:W_(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:O_(r),plugins:z_(r.plugins),distribution:F_(),env:U_(),integration:Object.create(null),menuBar:{isVisible:!!r.config.get("menuBar.isVisible")},language:{ui:r.locale.uiLanguage,content:r.locale.contentLanguage},toolbar:{main:Jo(r.config.get("toolbar")),block:Jo(r.config.get("blockToolbar")),balloon:Jo(r.config.get("balloonToolbar"))}}}function O_(r){return Object.getPrototypeOf(r).constructor.editorName}function z_(r){return Array.from(r).filter(([i])=>!!i.pluginName).map(([i])=>{const{pluginName:e,isContextPlugin:t,isOfficialPlugin:n,isPremiumPlugin:o}=i;return{isContext:!!t,isOfficial:!!n,isPremium:!!o,name:e}})}function Jo(r){if(!r)return;const i=Array.isArray(r)?{items:r}:r,e=o(i.items||[]);return{isMultiline:e.includes("-"),shouldNotGroupWhenFull:!!i.shouldNotGroupWhenFull,items:n(e)};function n(s){return s.filter(a=>a!=="|"&&a!=="-")}function o(s){return s.flatMap(a=>typeof a=="string"?[a]:o(a.items))}}function F_(){return{channel:window[Symbol.for("cke distribution")]||"sh"}}function U_(){let r="unknown",i="unknown";return A.isMac?r="mac":A.isWindows?r="windows":A.isiOS?r="ios":A.isAndroid&&(r="android"),A.isGecko?i="gecko":A.isBlink?i="blink":A.isSafari&&(i="safari"),{os:r,browser:i}}function H_(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",Ve()),localStorage.getItem("__ckeditor-session-id")}function W_(){return T.window.CKEDITOR_PAGE_SESSION_ID=T.window.CKEDITOR_PAGE_SESSION_ID||Ve(),T.window.CKEDITOR_PAGE_SESSION_ID}class Si extends Z(){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 b("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:n,...o}=t.defaultConfig||{},{translations:s=n,...a}=e,l=e.language||o.language;this._context=e.context||new Zr({language:l,translations:s}),this._context._addEditor(this,!e.context);const c=Array.from(t.builtinPlugins||[]);this.config=new Rh(a,o),this.config.define("plugins",c),this.config.define(this._context._getEditorConfig()),h(this.config),this.plugins=new qm(this,c,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new B_,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.model=new Jv,this.on("change:isReadOnly",()=>{this.model.document.isReadOnly=this.isReadOnly});const d=new Bw;this.data=new ev(this.model,d),this.editing=new Iy(this.model,d),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new iv([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 V_(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new N_(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 b("license-key-missing")}function m(g){const f=g.config.get("licenseKey"),p=window[Symbol.for("cke distribution")]||"sh";function w(I){g.enableReadOnlyMode(Symbol("invalidLicense")),g._showLicenseError(I)}function y(I){const K=I.split(".");return K.length!=3?null:K[1]}function C(I){return["exp","jti","vc"].every(ge=>ge in I)}function R(I){return Object.getOwnPropertyNames(I).sort().filter(oe=>oe!="vc"&&I[oe]!=null).map(oe=>I[oe])}function z(I){const{hostname:K}=new URL(window.location.href);if(I.includes(K))return!0;const ge=K.split(".");return I.filter(oe=>oe.includes("*")).map(oe=>oe.split(".")).filter(oe=>oe.length<=ge.length).map(oe=>Array(ge.length-oe.length).fill(oe[0]==="*"?"*":"").concat(oe)).some(oe=>ge.every((tr,Zi)=>oe[Zi]===tr||oe[Zi]==="*"))}function re(I){const K=I[0].toUpperCase()+I.slice(1),ge=I==="evaluation"?"an":"a";console.info(`%cCKEditor 5 ${K} License`,"color: #ffffff; background: #743CCD; font-size: 14px; padding: 4px 8px; border-radius: 4px;"),console.warn(`⚠️ You are using ${ge} ${I} license of CKEditor 5${I==="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"&&w("distributionChannel");return}const ee=y(f);if(!ee){w("invalid");return}const x=va(ee);if(!x){w("invalid");return}if(!C(x)){w("invalid");return}if(x.distributionChannel&&!Q(x.distributionChannel).includes(p)){w("distributionChannel");return}if(mw(R(x))!=x.vc.toLowerCase()){w("invalid");return}if(new Date(x.exp*1e3)<_b){w("expired");return}const S=x.licensedHosts;if(S&&S.length>0&&!z(S)){w("domainLimit");return}if(["evaluation","trial"].includes(x.licenseType)&&x.exp*1e3<Date.now()){w("expired");return}if(["development","evaluation","trial"].includes(x.licenseType)){const{licenseType:I}=x;window.CKEDITOR_WARNING_SUPPRESSIONS=window.CKEDITOR_WARNING_SUPPRESSIONS||{},window.CKEDITOR_WARNING_SUPPRESSIONS[I]||(re(I),window.CKEDITOR_WARNING_SUPPRESSIONS[I]=!0)}if(["evaluation","trial"].includes(x.licenseType)){const I=x.licenseType,K=setTimeout(()=>{w(`${I}Limit`)},6e5);g.on("destroy",()=>{clearTimeout(K)})}x.usageEndpoint&&g.once("ready",()=>{const I={requestId:Ve(),requestTime:Math.round(Date.now()/1e3),license:f,editor:q_(g)};g._sendUsageRequest(x.usageEndpoint,I).then(K=>{const{status:ge,message:oe}=K;oe&&console.warn(oe),ge!="ok"&&w("usageLimit")},()=>{kb("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 b("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new b("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 b("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")||[],o=e.get("extraPlugins")||[],s=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(o),n,s)}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 */b.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 b("invalid-license-key");if(e=="expired")throw new b("license-key-expired");if(e=="domainLimit")throw new b("license-key-domain-limit");if(e=="featureNotAllowed")throw new b("license-key-plugin-not-allowed",null,{pluginName:t});if(e=="evaluationLimit")throw new b("license-key-evaluation-limit");if(e=="trialLimit")throw new b("license-key-trial-limit");if(e=="developmentLimit")throw new b("license-key-development-limit");if(e=="usageLimit")throw new b("license-key-usage-limit");if(e=="distributionChannel")throw new b("license-key-invalid-distribution-channel")},0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const n=new Headers({"Content-Type":"application/json"}),o=await fetch(new URL(e),{method:"POST",headers:n,body:JSON.stringify(t)});if(!o.ok)throw new Error(`HTTP Response: ${o.status}`);return o.json()}}u(Si,"defaultConfig"),u(Si,"builtinPlugins"),u(Si,"Context",Zr),u(Si,"EditorWatchdog",Wm),u(Si,"ContextWatchdog",I_);function q_(r){const i=D_(r);function e(t,n){if(Wt(i,t)!==void 0)throw new b("editor-usage-data-path-already-set",{path:t});bh(i,t,n)}return r.fire("collectUsageData",{setUsageData:e}),i}function j_(r){if(!Ur(r.updateSourceElement))throw new b("attachtoform-missing-elementapi-interface",r);const i=r.sourceElement;if(G_(i)&&i.form){let e;const t=i.form,n=()=>r.updateSourceElement();Ur(t.submit)&&(e=t.submit,t.submit=()=>{n(),e.apply(t)}),t.addEventListener("submit",n),r.on("destroy",()=>{t.removeEventListener("submit",n),e&&(t.submit=e)})}}function G_(r){return!!r&&r.tagName.toLowerCase()==="textarea"}function Bs(r){class i extends r{constructor(){super(...arguments);u(this,"sourceElement")}updateSourceElement(n){if(!this.sourceElement)throw new b("editor-missing-sourceelement",this);const o=this.config.get("updateSourceElementOnDestroy"),s=this.sourceElement instanceof HTMLTextAreaElement;if(!o&&!s){Ul(this.sourceElement,"");return}const a=typeof n=="string"?n:this.data.get();Ul(this.sourceElement,a)}}return i}Bs.updateSourceElement=Bs(Object).prototype.updateSourceElement;class Jr extends M_{constructor(){super(...arguments);u(this,"_actions")}static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new We({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if(typeof e!="string")throw new b("pendingactions-add-invalid-message",this);const t=new(Z());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
|
+
*/var zc='<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>',K_='<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>',jm='<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>',Gm='<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>',Da='<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>',$_='<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>',Km='<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>',Z_='<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>',$m='<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>',Oa='<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>',vo='<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>',J_='<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>',_o='<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>',Y_='<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>',X_='<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>',Q_='<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>',e0='<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>',Co='<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>',t0='<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>',i0='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 9h16v2H2z"/></svg>',n0='<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>',r0='<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>',o0='<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>',Fc='<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.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zM1.632 6.95 5.02 9.358a.4.4 0 0 1-.013.661l-3.39 2.207A.4.4 0 0 1 1 11.892V7.275a.4.4 0 0 1 .632-.326z"/></svg>',s0='<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>',a0='<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>',l0='<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>',c0='<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>',d0='<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>',u0='<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>',h0='<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>',m0='<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>',g0='<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>',f0='<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>',p0='<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>',Zm='<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>',za='<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>',b0='<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>',w0='<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>',k0='<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>',Uc='<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.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zm1.618-9.55L.98 9.358a.4.4 0 0 0 .013.661l3.39 2.207A.4.4 0 0 0 5 11.892V7.275a.4.4 0 0 0-.632-.326z"/></svg>',y0='<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>',v0='<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>',_0='<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>',C0='<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>',qn='<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>',L0=`<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>
|
|
215
|
+
`,T0='<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>',Hc='<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>',E0='<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>',x0='<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>',S0=`<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>
|
|
216
|
+
`,A0='<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>',P0='<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>',I0='<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>',R0='<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>',M0='<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>',B0='<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>',V0='<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>',Wc='<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>',N0='<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>',D0='<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>',Fa='<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>',O0='<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>',qc='<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>',z0='<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>',Yo,jc;function Jm(){return jc||(jc=1,Yo={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]}),Yo}var F0=Jm();const Gc=Uu(F0);var Kc={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function $c(r){var i,e=[],t=1,n;if(typeof r=="string")if(Gc[r])e=Gc[r].slice(),n="rgb";else if(r==="transparent")t=0,n="rgb",e=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(r)){var o=r.slice(1),s=o.length,a=s<=4;t=1,a?(e=[parseInt(o[0]+o[0],16),parseInt(o[1]+o[1],16),parseInt(o[2]+o[2],16)],s===4&&(t=parseInt(o[3]+o[3],16)/255)):(e=[parseInt(o[0]+o[1],16),parseInt(o[2]+o[3],16),parseInt(o[4]+o[5],16)],s===8&&(t=parseInt(o[6]+o[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(r)){var l=i[1],c=l==="rgb",o=l.replace(/a$/,"");n=o;var s=o==="cmyk"?4:o==="gray"?1:3;e=i[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(m,g){if(/%$/.test(m))return g===s?parseFloat(m)/100:o==="rgb"?parseFloat(m)*255/100:parseFloat(m);if(o[g]==="h"){if(/deg$/.test(m))return parseFloat(m);if(Kc[m]!==void 0)return Kc[m]}return parseFloat(m)}),l===o&&e.push(1),t=c||e[s]===void 0?1:e[s],e=e.slice(0,s)}else r.length>10&&/[0-9](?:\s|\/)/.test(r)&&(e=r.match(/([0-9]+)/g).map(function(d){return parseFloat(d)}),n=r.match(/([a-z])/ig).join("").toLowerCase());else isNaN(r)?Array.isArray(r)||r.length?(e=[r[0],r[1],r[2]],n="rgb",t=r.length===4?r[3]:1):r instanceof Object&&(r.r!=null||r.red!=null||r.R!=null?(n="rgb",e=[r.r||r.red||r.R||0,r.g||r.green||r.G||0,r.b||r.blue||r.B||0]):(n="hsl",e=[r.h||r.hue||r.H||0,r.s||r.saturation||r.S||0,r.l||r.lightness||r.L||r.b||r.brightness]),t=r.a||r.alpha||r.opacity||1,r.opacity!=null&&(t/=100)):(n="rgb",e=[r>>>16,(r&65280)>>>8,r&255]);return{space:n,values:e,alpha:t}}var Xo,Zc;function Ym(){if(Zc)return Xo;Zc=1;const r=Jm(),i={};for(const n of Object.keys(r))i[r[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"]}};Xo=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:o,labels:s}=e[n];delete e[n].channels,delete e[n].labels,Object.defineProperty(e[n],"channels",{value:o}),Object.defineProperty(e[n],"labels",{value:s})}e.rgb.hsl=function(n){const o=n[0]/255,s=n[1]/255,a=n[2]/255,l=Math.min(o,s,a),c=Math.max(o,s,a),d=c-l;let h,m;c===l?h=0:o===c?h=(s-a)/d:s===c?h=2+(a-o)/d:a===c&&(h=4+(o-s)/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 o,s,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(w){return(g-w)/6/f+1/2};return f===0?(l=0,c=0):(c=f/g,o=p(d),s=p(h),a=p(m),d===g?l=a-s:h===g?l=1/3+o-a:m===g&&(l=2/3+s-o),l<0?l+=1:l>1&&(l-=1)),[l*360,c*100,g*100]},e.rgb.hwb=function(n){const o=n[0],s=n[1];let a=n[2];const l=e.rgb.hsl(n)[0],c=1/255*Math.min(o,Math.min(s,a));return a=1-1/255*Math.max(o,Math.max(s,a)),[l,c*100,a*100]},e.rgb.cmyk=function(n){const o=n[0]/255,s=n[1]/255,a=n[2]/255,l=Math.min(1-o,1-s,1-a),c=(1-o-l)/(1-l)||0,d=(1-s-l)/(1-l)||0,h=(1-a-l)/(1-l)||0;return[c*100,d*100,h*100,l*100]};function t(n,o){return(n[0]-o[0])**2+(n[1]-o[1])**2+(n[2]-o[2])**2}return e.rgb.keyword=function(n){const o=i[n];if(o)return o;let s=1/0,a;for(const l of Object.keys(r)){const c=r[l],d=t(n,c);d<s&&(s=d,a=l)}return a},e.keyword.rgb=function(n){return r[n]},e.rgb.xyz=function(n){let o=n[0]/255,s=n[1]/255,a=n[2]/255;o=o>.04045?((o+.055)/1.055)**2.4:o/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;const l=o*.4124+s*.3576+a*.1805,c=o*.2126+s*.7152+a*.0722,d=o*.0193+s*.1192+a*.9505;return[l*100,c*100,d*100]},e.rgb.lab=function(n){const o=e.rgb.xyz(n);let s=o[0],a=o[1],l=o[2];s/=95.047,a/=100,l/=108.883,s=s>.008856?s**(1/3):7.787*s+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*(s-a),h=200*(a-l);return[c,d,h]},e.hsl.rgb=function(n){const o=n[0]/360,s=n[1]/100,a=n[2]/100;let l,c,d;if(s===0)return d=a*255,[d,d,d];a<.5?l=a*(1+s):l=a+s-a*s;const h=2*a-l,m=[0,0,0];for(let g=0;g<3;g++)c=o+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 o=n[0];let s=n[1]/100,a=n[2]/100,l=s;const c=Math.max(a,.01);a*=2,s*=a<=1?a:2-a,l*=c<=1?c:2-c;const d=(a+s)/2,h=a===0?2*l/(c+l):2*s/(a+s);return[o,h*100,d*100]},e.hsv.rgb=function(n){const o=n[0]/60,s=n[1]/100;let a=n[2]/100;const l=Math.floor(o)%6,c=o-Math.floor(o),d=255*a*(1-s),h=255*a*(1-s*c),m=255*a*(1-s*(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 o=n[0],s=n[1]/100,a=n[2]/100,l=Math.max(a,.01);let c,d;d=(2-s)*a;const h=(2-s)*l;return c=s*l,c/=h<=1?h:2-h,c=c||0,d/=2,[o,c*100,d*100]},e.hwb.rgb=function(n){const o=n[0]/360;let s=n[1]/100,a=n[2]/100;const l=s+a;let c;l>1&&(s/=l,a/=l);const d=Math.floor(6*o),h=1-a;c=6*o-d,(d&1)!==0&&(c=1-c);const m=s+c*(h-s);let g,f,p;switch(d){default:case 6:case 0:g=h,f=m,p=s;break;case 1:g=m,f=h,p=s;break;case 2:g=s,f=h,p=m;break;case 3:g=s,f=m,p=h;break;case 4:g=m,f=s,p=h;break;case 5:g=h,f=s,p=m;break}return[g*255,f*255,p*255]},e.cmyk.rgb=function(n){const o=n[0]/100,s=n[1]/100,a=n[2]/100,l=n[3]/100,c=1-Math.min(1,o*(1-l)+l),d=1-Math.min(1,s*(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 o=n[0]/100,s=n[1]/100,a=n[2]/100;let l,c,d;return l=o*3.2406+s*-1.5372+a*-.4986,c=o*-.9689+s*1.8758+a*.0415,d=o*.0557+s*-.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 o=n[0],s=n[1],a=n[2];o/=95.047,s/=100,a/=108.883,o=o>.008856?o**(1/3):7.787*o+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;const l=116*s-16,c=500*(o-s),d=200*(s-a);return[l,c,d]},e.lab.xyz=function(n){const o=n[0],s=n[1],a=n[2];let l,c,d;c=(o+16)/116,l=s/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 o=n[0],s=n[1],a=n[2];let l;l=Math.atan2(a,s)*360/2/Math.PI,l<0&&(l+=360);const d=Math.sqrt(s*s+a*a);return[o,d,l]},e.lch.lab=function(n){const o=n[0],s=n[1],l=n[2]/360*2*Math.PI,c=s*Math.cos(l),d=s*Math.sin(l);return[o,c,d]},e.rgb.ansi16=function(n,o=null){const[s,a,l]=n;let c=o===null?e.rgb.hsv(n)[2]:o;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(s/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 o=n[0],s=n[1],a=n[2];return o===s&&s===a?o<8?16:o>248?231:Math.round((o-8)/247*24)+232:16+36*Math.round(o/255*5)+6*Math.round(s/255*5)+Math.round(a/255*5)},e.ansi16.rgb=function(n){let o=n%10;if(o===0||o===7)return n>50&&(o+=3.5),o=o/10.5*255,[o,o,o];const s=(~~(n>50)+1)*.5,a=(o&1)*s*255,l=(o>>1&1)*s*255,c=(o>>2&1)*s*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 o;const s=Math.floor(n/36)/5*255,a=Math.floor((o=n%36)/6)/5*255,l=o%6/5*255;return[s,a,l]},e.rgb.hex=function(n){const s=(((Math.round(n[0])&255)<<16)+((Math.round(n[1])&255)<<8)+(Math.round(n[2])&255)).toString(16).toUpperCase();return"000000".substring(s.length)+s},e.hex.rgb=function(n){const o=n.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!o)return[0,0,0];let s=o[0];o[0].length===3&&(s=s.split("").map(h=>h+h).join(""));const a=parseInt(s,16),l=a>>16&255,c=a>>8&255,d=a&255;return[l,c,d]},e.rgb.hcg=function(n){const o=n[0]/255,s=n[1]/255,a=n[2]/255,l=Math.max(Math.max(o,s),a),c=Math.min(Math.min(o,s),a),d=l-c;let h,m;return d<1?h=c/(1-d):h=0,d<=0?m=0:l===o?m=(s-a)/d%6:l===s?m=2+(a-o)/d:m=4+(o-s)/d,m/=6,m%=1,[m*360,d*100,h*100]},e.hsl.hcg=function(n){const o=n[1]/100,s=n[2]/100,a=s<.5?2*o*s:2*o*(1-s);let l=0;return a<1&&(l=(s-.5*a)/(1-a)),[n[0],a*100,l*100]},e.hsv.hcg=function(n){const o=n[1]/100,s=n[2]/100,a=o*s;let l=0;return a<1&&(l=(s-a)/(1-a)),[n[0],a*100,l*100]},e.hcg.rgb=function(n){const o=n[0]/360,s=n[1]/100,a=n[2]/100;if(s===0)return[a*255,a*255,a*255];const l=[0,0,0],c=o%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-s)*a,[(s*l[0]+m)*255,(s*l[1]+m)*255,(s*l[2]+m)*255]},e.hcg.hsv=function(n){const o=n[1]/100,s=n[2]/100,a=o+s*(1-o);let l=0;return a>0&&(l=o/a),[n[0],l*100,a*100]},e.hcg.hsl=function(n){const o=n[1]/100,a=n[2]/100*(1-o)+.5*o;let l=0;return a>0&&a<.5?l=o/(2*a):a>=.5&&a<1&&(l=o/(2*(1-a))),[n[0],l*100,a*100]},e.hcg.hwb=function(n){const o=n[1]/100,s=n[2]/100,a=o+s*(1-o);return[n[0],(a-o)*100,(1-a)*100]},e.hwb.hcg=function(n){const o=n[1]/100,a=1-n[2]/100,l=a-o;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 o=Math.round(n[0]/100*255)&255,a=((o<<16)+(o<<8)+o).toString(16).toUpperCase();return"000000".substring(a.length)+a},e.rgb.gray=function(n){return[(n[0]+n[1]+n[2])/3/255*100]},Xo}var Qo,Jc;function U0(){if(Jc)return Qo;Jc=1;const r=Ym();function i(){const o={},s=Object.keys(r);for(let a=s.length,l=0;l<a;l++)o[s[l]]={distance:-1,parent:null};return o}function e(o){const s=i(),a=[o];for(s[o].distance=0;a.length;){const l=a.pop(),c=Object.keys(r[l]);for(let d=c.length,h=0;h<d;h++){const m=c[h],g=s[m];g.distance===-1&&(g.distance=s[l].distance+1,g.parent=l,a.unshift(m))}}return s}function t(o,s){return function(a){return s(o(a))}}function n(o,s){const a=[s[o].parent,o];let l=r[s[o].parent][o],c=s[o].parent;for(;s[c].parent;)a.unshift(s[c].parent),l=t(r[s[c].parent][c],l),c=s[c].parent;return l.conversion=a,l}return Qo=function(o){const s=e(o),a={},l=Object.keys(s);for(let c=l.length,d=0;d<c;d++){const h=l[d];s[h].parent!==null&&(a[h]=n(h,s))}return a},Qo}var es,Yc;function H0(){if(Yc)return es;Yc=1;const r=Ym(),i=U0(),e={},t=Object.keys(r);function n(s){const a=function(...l){const c=l[0];return c==null?c:(c.length>1&&(l=c),s(l))};return"conversion"in s&&(a.conversion=s.conversion),a}function o(s){const a=function(...l){const c=l[0];if(c==null)return c;c.length>1&&(l=c);const d=s(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 s&&(a.conversion=s.conversion),a}return t.forEach(s=>{e[s]={},Object.defineProperty(e[s],"channels",{value:r[s].channels}),Object.defineProperty(e[s],"labels",{value:r[s].labels});const a=i(s);Object.keys(a).forEach(c=>{const d=a[c];e[s][c]=o(d),e[s][c].raw=n(d)})}),es=e,es}var Xm=H0();const W0=Uu(Xm),Qm=ap({__proto__:null,default:W0},[Xm]),Dn=(r,i=0,e=1)=>r>e?e:r<i?i:r,ye=(r,i=0,e=Math.pow(10,i))=>Math.round(e*r)/e,q0=r=>Z0(Vs(r)),Vs=r=>(r[0]==="#"&&(r=r.substring(1)),r.length<6?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?ye(parseInt(r[3]+r[3],16)/255,2):1}:{r:parseInt(r.substring(0,2),16),g:parseInt(r.substring(2,4),16),b:parseInt(r.substring(4,6),16),a:r.length===8?ye(parseInt(r.substring(6,8),16)/255,2):1}),j0=r=>$0(K0(r)),G0=({h:r,s:i,v:e,a:t})=>{const n=(200-i)*e/100;return{h:ye(r),s:ye(n>0&&n<200?i*e/100/(n<=100?n:200-n)*100:0),l:ye(n/2),a:ye(t,2)}},Ns=r=>{const{h:i,s:e,l:t}=G0(r);return`hsl(${i}, ${e}%, ${t}%)`},K0=({h:r,s:i,v:e,a:t})=>{r=r/360*6,i=i/100,e=e/100;const n=Math.floor(r),o=e*(1-i),s=e*(1-(r-n)*i),a=e*(1-(1-r+n)*i),l=n%6;return{r:ye([e,s,o,o,a,e][l]*255),g:ye([a,e,e,s,o,o][l]*255),b:ye([o,o,a,e,e,s][l]*255),a:ye(t,2)}},dr=r=>{const i=r.toString(16);return i.length<2?"0"+i:i},$0=({r,g:i,b:e,a:t})=>{const n=t<1?dr(ye(t*255)):"";return"#"+dr(r)+dr(i)+dr(e)+n},Z0=({r,g:i,b:e,a:t})=>{const n=Math.max(r,i,e),o=n-Math.min(r,i,e),s=o?n===r?(i-e)/o:n===i?2+(e-r)/o:4+(r-i)/o:0;return{h:ye(60*(s<0?s+6:s)),s:ye(n?o/n*100:0),v:ye(n/255*100),a:t}},eg=(r,i)=>{if(r===i)return!0;for(const e in r)if(r[e]!==i[e])return!1;return!0},J0=(r,i)=>r.toLowerCase()===i.toLowerCase()?!0:eg(Vs(r),Vs(i)),Xc={},tg=r=>{let i=Xc[r];return i||(i=document.createElement("template"),i.innerHTML=r,Xc[r]=i),i},Ua=(r,i,e)=>{r.dispatchEvent(new CustomEvent(i,{bubbles:!0,detail:e}))};let Di=!1;const Ds=r=>"touches"in r,Y0=r=>Di&&!Ds(r)?!1:(Di||(Di=Ds(r)),!0),Qc=(r,i)=>{const e=Ds(i)?i.touches[0]:i,t=r.el.getBoundingClientRect();Ua(r.el,"move",r.getMove({x:Dn((e.pageX-(t.left+window.pageXOffset))/t.width),y:Dn((e.pageY-(t.top+window.pageYOffset))/t.height)}))},X0=(r,i)=>{const e=i.keyCode;e>40||r.xy&&e<37||e<33||(i.preventDefault(),Ua(r.el,"move",r.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 ig{constructor(i,e,t,n){const o=tg(`<div role="slider" tabindex="0" part="${e}" ${t}><div part="${e}-pointer"></div></div>`);i.appendChild(o.content.cloneNode(!0));const s=i.querySelector(`[part=${e}]`);s.addEventListener("mousedown",this),s.addEventListener("touchstart",this),s.addEventListener("keydown",this),this.el=s,this.xy=n,this.nodes=[s.firstChild,s]}set dragging(i){const e=i?document.addEventListener:document.removeEventListener;e(Di?"touchmove":"mousemove",this),e(Di?"touchend":"mouseup",this)}handleEvent(i){switch(i.type){case"mousedown":case"touchstart":if(i.preventDefault(),!Y0(i)||!Di&&i.button!=0)return;this.el.focus(),Qc(this,i),this.dragging=!0;break;case"mousemove":case"touchmove":i.preventDefault(),Qc(this,i);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":X0(this,i);break}}style(i){i.forEach((e,t)=>{for(const n in e)this.nodes[t].style.setProperty(n,e[n])})}}class Q0 extends ig{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:Ns({h:i,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${ye(i)}`)}getMove(i,e){return{h:e?Dn(this.h+i.x*360,0,360):360*i.x}}}class e1 extends ig{constructor(i){super(i,"saturation",'aria-label="Color"',!0)}update(i){this.hsva=i,this.style([{top:`${100-i.v}%`,left:`${i.s}%`,color:Ns(i)},{"background-color":Ns({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?Dn(this.hsva.s+i.x*100,0,100):i.x*100,v:e?Dn(this.hsva.v-i.y*100,0,100):Math.round(100-i.y*100)}}}const t1=':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)}',i1="[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}",n1="[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}",ur=Symbol("same"),ts=Symbol("color"),ed=Symbol("hsva"),is=Symbol("update"),td=Symbol("parts"),id=Symbol("css"),nd=Symbol("sliders");class r1 extends HTMLElement{static get observedAttributes(){return["color"]}get[id](){return[t1,i1,n1]}get[nd](){return[e1,Q0]}get color(){return this[ts]}set color(i){if(!this[ur](i)){const e=this.colorModel.toHsva(i);this[is](e),this[ts]=i}}constructor(){super();const i=tg(`<style>${this[id].join("")}</style>`),e=this.attachShadow({mode:"open"});e.appendChild(i.content.cloneNode(!0)),e.addEventListener("move",this),this[td]=this[nd].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[ur](n)||(this.color=n)}handleEvent(i){const e=this[ed],t={...e,...i.detail};this[is](t);let n;!eg(t,e)&&!this[ur](n=this.colorModel.fromHsva(t))&&(this[ts]=n,Ua(this,"color-changed",{value:n}))}[ur](i){return this.color&&this.colorModel.equal(i,this.color)}[is](i){this[ed]=i,this[td].forEach(e=>e.update(i))}}const o1={defaultColor:"#000",toHsva:q0,fromHsva:({h:r,s:i,v:e})=>j0({h:r,s:i,v:e,a:1}),equal:J0,fromAttr:r=>r};class s1 extends r1{get colorModel(){return o1}}/**
|
|
217
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
218
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
219
|
+
*/class _e extends We{constructor(e=[]){super(e,{idProperty:"viewUid"});u(this,"_parentElement");this.on("add",(t,n,o)=>{this._renderViewIntoCollectionParent(n,o)}),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||!a1(e))throw new b("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const n of this)for(const o of e)n.delegate(o).to(t);this.on("add",(n,o)=>{for(const s of e)o.delegate(s).to(t)}),this.on("remove",(n,o)=>{for(const s of e)o.stopDelegating(s,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 a1(r){return r.every(i=>typeof i=="string")}const l1="http://www.w3.org/1999/xhtml";class Je extends j(){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,od(rd(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData=ld(),this._renderNode({node:e,intoFragment:!1,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new b("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)Yr(n)?yield n:Ha(n)&&(yield*e(n))}yield*e(this)}static bind(e,t){return{to(n,o){return new c1({eventNameOrFunction:n,attribute:n,observable:e,emitter:t,callback:o})},if(n,o,s){return new ng({observable:e,emitter:t,attribute:n,valueIfTrue:o,callback:s})}}}static extend(e,t){if(e._isRendered)throw new b("template-extend-render",[this,e]);ag(e,od(rd(t)))}_renderNode(e){let t;if(e.node?t=this.tag&&this.text:t=this.tag?this.text:!this.text,t)throw new b("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||l1,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(""),Sr(this.text)?this._bindToObservable({schema:this.text,updater:u1(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){if(!this.attributes)return;const t=e.node,n=e.revertData;for(const o in this.attributes){const s=t.getAttribute(o),a=this.attributes[o];n&&(n.attributes[o]=s);const l=ad(a)?a[0].ns:null;if(Sr(a)){const c=ad(a)?a[0].value:a;n&&cd(o)&&c.unshift(s),this._bindToObservable({schema:c,updater:h1(t,o,l),data:e})}else if(o=="style"&&typeof a[0]!="string")this._renderStyleAttribute(a[0],e);else{n&&s&&cd(o)&&a.unshift(s);const c=a.map(d=>d&&(d.value||d)).reduce((d,h)=>d.concat(h),[]).reduce(sg,"");zi(c)||t.setAttributeNS(l,o,c)}}}_renderStyleAttribute(e,t){const n=t.node;for(const o in e){const s=e[o];Sr(s)?this._bindToObservable({schema:[s],updater:m1(n,o),data:t}):n.style[o]=s}}_renderElementChildren(e){const t=e.node,n=e.intoFragment?document.createDocumentFragment():t,o=e.isApplying;let s=0;for(const a of this.children)if(Wa(a)){if(!o){a.setParent(t);for(const l of a)n.appendChild(l.element)}}else if(Yr(a))o||(a.isRendered||a.render(),n.appendChild(a.element));else if(jt(a))n.appendChild(a);else if(o){const l=e.revertData,c=ld();l.children.push(c),a._renderNode({intoFragment:!1,node:n.childNodes[s++],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(o=>{const[s,a]=t.split("@");return o.activateDomEventListener(s,a,e)});e.revertData&&e.revertData.bindings.push(n)}}_bindToObservable({schema:e,updater:t,data:n}){const o=n.revertData;rg(e,t,n);const s=e.filter(a=>!zi(a)).filter(a=>a.observable).map(a=>a.activateAttributeListener(e,t,n));o&&o.bindings.push(s)}_revertTemplateFromNode(e,t){for(const o of t.bindings)for(const s of o)s();if(t.text){e.textContent=t.text;return}const n=e;for(const o in t.attributes){const s=t.attributes[o];s===null?n.removeAttribute(o):n.setAttribute(o,s)}for(let o=0;o<t.children.length;++o)this._revertTemplateFromNode(n.childNodes[o],t.children[o])}}class jn{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=()=>rg(i,e,t);return this.emitter.listenTo(this.observable,`change:${this.attribute}`,n),()=>{this.emitter.stopListening(this.observable,`change:${this.attribute}`,n)}}}class c1 extends jn{constructor(e){super(e);u(this,"eventNameOrFunction");this.eventNameOrFunction=e.eventNameOrFunction}activateDomEventListener(e,t,n){const o=(s,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,o),()=>{this.emitter.stopListening(n.node,e,o)}}}class ng extends jn{constructor(e){super(e);u(this,"valueIfTrue");this.valueIfTrue=e.valueIfTrue}getValue(e){const t=super.getValue(e);return zi(t)?!1:this.valueIfTrue||!0}}function Sr(r){return r?(r.value&&(r=r.value),Array.isArray(r)?r.some(Sr):r instanceof jn):!1}function d1(r,i){return r.map(e=>e instanceof jn?e.getValue(i):e)}function rg(r,i,{node:e}){const t=d1(r,e);let n;r.length==1&&r[0]instanceof ng?n=t[0]:n=t.reduce(sg,""),zi(n)?i.remove():i.set(n)}function u1(r){return{set(i){r.textContent=i},remove(){r.textContent=""}}}function h1(r,i,e){return{set(t){r.setAttributeNS(e,i,t)},remove(){r.removeAttributeNS(e,i)}}}function m1(r,i){return{set(e){r.style[i]=e},remove(){r.style[i]=null}}}function rd(r){return bo(r,e=>{if(e&&(e instanceof jn||Ha(e)||Yr(e)||Wa(e)))return e})}function od(r){if(typeof r=="string"?r=p1(r):r.text&&b1(r),r.on&&(r.eventListeners=f1(r.on),delete r.on),!r.text){r.attributes&&g1(r.attributes);const i=[];if(r.children)if(Wa(r.children))i.push(r.children);else for(const e of r.children)Ha(e)||Yr(e)||jt(e)?i.push(e):i.push(new Je(e));r.children=i}return r}function g1(r){for(const i in r)r[i].value&&(r[i].value=Q(r[i].value)),og(r,i)}function f1(r){for(const i in r)og(r,i);return r}function p1(r){return{text:[r]}}function b1(r){r.text=Q(r.text)}function og(r,i){r[i]=Q(r[i])}function sg(r,i){return zi(i)?r:zi(r)?i:`${r} ${i}`}function sd(r,i){for(const e in i)r[e]?r[e].push(...i[e]):r[e]=i[e]}function ag(r,i){if(i.attributes&&(r.attributes||(r.attributes={}),sd(r.attributes,i.attributes)),i.eventListeners&&(r.eventListeners||(r.eventListeners={}),sd(r.eventListeners,i.eventListeners)),i.text&&r.text.push(...i.text),i.children&&i.children.length){if(r.children.length!=i.children.length)throw new b("ui-template-extend-children-mismatch",r);let e=0;for(const t of i.children)ag(r.children[e++],t)}}function zi(r){return!r&&r!==0}function Yr(r){return r instanceof E}function Ha(r){return r instanceof Je}function Wa(r){return r instanceof _e}function ad(r){return rt(r[0])&&r[0].ns}function ld(){return{children:[],bindings:[],attributes:{}}}function cd(r){return r=="class"||r=="style"}class E extends Pe(Z()){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 We,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=Je.bind(this,this)}createCollection(e){const t=new _e(e);return this._viewCollections.add(t),t}registerChild(e){Ue(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){Ue(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new Je(e)}extendTemplate(e){Je.extend(this.template,e)}render(){if(this.isRendered)throw new b("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)}}/**
|
|
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
|
+
*/function Wi({emitter:r,activator:i,callback:e,contextElements:t,listenerOptions:n}){r.listenTo(document,"mousedown",(o,s)=>{if(!i())return;const a=typeof s.composedPath=="function"?s.composedPath():[],l=typeof t=="function"?t():t;for(const c of l)if(c.contains(s.target)||a.includes(c))return;e()},n)}/**
|
|
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 Os(r){class i extends r{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}/**
|
|
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 qi({view:r}){r.listenTo(r.element,"submit",(i,e)=>{e.preventDefault(),r.fire("submit")},{useCapture:!0})}/**
|
|
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 qa({keystrokeHandler:r,focusTracker:i,gridItems:e,numberOfColumns:t,uiLanguageDirection:n}){const o=typeof t=="number"?()=>t:t;r.set("arrowright",s((c,d)=>n==="rtl"?l(c,d.length):a(c,d.length))),r.set("arrowleft",s((c,d)=>n==="rtl"?a(c,d.length):l(c,d.length))),r.set("arrowup",s((c,d)=>{let h=c-o();return h<0&&(h=c+o()*Math.floor(d.length/o()),h>d.length-1&&(h-=o())),h})),r.set("arrowdown",s((c,d)=>{let h=c+o();return h>d.length-1&&(h=c%o()),h}));function s(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 mo=class mo 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 b("ui-iconview-invalid-svg",this);const t=e.getAttribute("viewBox");t&&(this.viewBox=t);for(const{name:n,value:o}of Array.from(e.attributes))mo.presentationalAttributeNames.includes(n)&&this.element.setAttribute(n,o);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(mo,"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 pt=mo;class lg 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 P extends E{constructor(e,t=new lg){super(e);u(this,"children");u(this,"labelView");u(this,"iconView");u(this,"keystrokeView");u(this,"_focusDelayed",null);const n=this.bindTemplate,o=Ve();this.set("_ariaPressed",!1),this.set("_ariaChecked",!1),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",`ck-editor__aria-label_${o}`),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 pt,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 s={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||dd(c)?!1:String(!!a)),this.bind("_ariaChecked").to(this,"isOn",this,"isToggleable",this,"role",(a,l,c)=>!l||!dd(c)?!1:String(!!a)),A.isSafari&&(this._focusDelayed||(this._focusDelayed=ya(()=>this.focus(),0)),s.on.mousedown=n.to(()=>{this._focusDelayed()}),s.on.mouseup=n.to(()=>{this._focusDelayed.cancel()})),this.setTemplate(s)}render(){super.render(),this.icon&&this.children.add(this.iconView),this.on("change:icon",(e,t,n,o)=>{n&&!o?this.children.add(this.iconView,0):!n&&o&&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=>qr(t))}]}),e}_getTooltipString(e,t,n){return e?typeof e=="string"?e:(n&&(n=qr(n)),e instanceof Function?e(t,n):`${t}${n?` (${n})`:""}`):""}}function dd(r){switch(r){case"radio":case"checkbox":case"option":case"switch":case"menuitemcheckbox":case"menuitemradio":return!0;default:return!1}}class ui 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 pt,this.iconView.content=t.icon,this.children.add(this.iconView));const o=new E(e);o.setTemplate({tag:"h2",attributes:{class:["ck","ck-form__header__label"],role:"presentation"},children:[{text:n.to("label")}]}),this.children.add(o)}}class Ie extends j(){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 o of n)e.keystrokeHandler.set(o,(s,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(ns)||null}get last(){return this.focusables.filter(ns).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 o=t.element===this.focusTracker.focusedElement;return o&&(e=n),o}),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 o=t();this.focusNext(),o!==t()&&n.stop()},{priority:"low"}),this.listenTo(e,"backwardCycle",n=>{const o=t();this.focusPrevious(),o!==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 o=this.focusables.get(n),s=(n+t+e)%t;do{const a=this.focusables.get(s);if(ns(a)){o=a;break}s=(s+t+e)%t}while(s!==n);return o}}function ns(r){return Gn(r)&&xt(r.element)}function Gn(r){return"focus"in r&&typeof r.focus=="function"}function w1(r){return Gn(r)&&"focusCycler"in r&&r.focusCycler instanceof Ie}function k1(r){class i extends r{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,o){if(!this._isHandleElementPressed(o))return;this._attachDragListeners();let s=0,a=0;o instanceof MouseEvent?(s=o.clientX,a=o.clientY):(s=o.touches[0].clientX,a=o.touches[0].clientY),this._lastDraggingCoordinates={x:s,y:a},this.isDragging=!0}_onDrag(n,o){if(!this.isDragging){this._detachDragListeners();return}let s=0,a=0;o instanceof MouseEvent?(s=o.clientX,a=o.clientY):(s=o.touches[0].clientX,a=o.touches[0].clientY),o.preventDefault(),this.fire("drag",{deltaX:Math.round(s-this._lastDraggingCoordinates.x),deltaY:Math.round(a-this._lastDraggingCoordinates.y)}),this._lastDraggingCoordinates={x:s,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 y1 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 ce,this._focusTracker=new ne,this._focusables=new _e,this.focusCycler=new Ie({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 P(this.locale);let o;n.on("execute",()=>t.onExecute()),t.onCreate&&t.onCreate(n);for(o in t)o!="onExecute"&&o!="onCreate"&&n.set(o,t[o]);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 v1 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 Qe={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"},ud=Hi("px"),go=class go extends k1(E){constructor(e,{getCurrentDomRoot:t,getViewportOffset:n,keystrokeHandlerOptions:o}){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 s=this.bindTemplate,a=e.t;this.set("className",""),this.set("ariaLabel",a("Editor dialog")),this.set("isModal",!1),this.set("position",Qe.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 ce,this.focusTracker=new ne,this._focusables=new _e,this._focusCycler=new Ie({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"},keystrokeHandlerOptions:o}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog-overlay",s.if("isModal","ck-dialog-overlay__transparent",l=>!l),s.if("_isVisible","ck-hidden",l=>!l)],tabindex:"-1"},children:[{tag:"div",attributes:{tabindex:"-1",class:["ck","ck-dialog",s.if("isModal","ck-dialog_modal"),s.to("className")],role:"dialog","aria-label":s.to("ariaLabel"),style:{top:s.to("_top",l=>ud(l)),left:s.to("_left",l=>ud(l)),visibility:s.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:o,actionButtons:s}){t&&(this.headerView=new ui(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)),o&&(o instanceof E&&(o=[o]),this.contentView=new v1(this.locale),this.contentView.children.addMany(o),this.parts.add(this.contentView)),s&&(this.actionsView=new y1(this.locale),this.actionsView.setButtons(s),this.parts.add(this.actionsView)),this._updateFocusCyclableItems()}focus(){this._focusCycler.focusFirst()}moveTo(e,t){const n=this._getViewportRect(),o=this._getDialogRect();e+o.width>n.right&&(e=n.right-o.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=Qe.SCREEN_CENTER;const o=go.defaultOffset,s=this._getDialogRect();switch(t){case Qe.EDITOR_TOP_SIDE:{if(n){const a=this.locale.contentLanguageDirection==="ltr"?n.right-s.width-o:n.left+o;this.moveTo(a,n.top+o)}else this._moveOffScreen();break}case Qe.EDITOR_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-s.width/2),Math.round(n.top+n.height/2-s.height/2)):this._moveOffScreen();break}case Qe.SCREEN_CENTER:{this.moveTo(Math.round((e.width-s.width)/2),Math.round((e.height-s.height)/2));break}case Qe.EDITOR_TOP_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-s.width/2),n.top+o):this._moveOffScreen();break}case Qe.EDITOR_BOTTOM_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-s.width/2),n.bottom-s.height-o):this._moveOffScreen();break}case Qe.EDITOR_ABOVE_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-s.width/2),n.top-s.height-o):this._moveOffScreen();break}case Qe.EDITOR_BELOW_CENTER:{n?this.moveTo(Math.round(n.left+n.width/2-s.width/2),n.bottom+o):this._moveOffScreen();break}}}_getVisibleDomRootRect(e){let t=new B(this._getCurrentDomRoot()).getVisible();if(t){if(t=e.getIntersection(t),!t)return null}else return null;return t}_getDialogRect(){return new B(this.element.firstElementChild)}_getViewportRect(){const e=new B(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)Gn(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),w1(t)&&this._focusCycler.chain(t.focusCycler)})}_createCloseButton(){const e=new P(this.locale),t=this.locale.t;return e.set({label:t("Close"),tooltip:!0,icon:vo}),e.on("execute",()=>this.fire("close",{source:"closeButton"})),e}};u(go,"defaultOffset",15);let On=go;const et=class et extends v{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(),et._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",()=>{et._visibleDialogPlugin&&et._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:o=!0,content:s,actionButtons:a,className:l,isModal:c,position:d,onHide:h,keystrokeHandlerOptions:m}){const g=this.editor;this.view=new On(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?Qe.SCREEN_CENTER:Qe.EDITOR_CENTER),c&&this._lockBodyScroll(),f.set({position:d,_isVisible:!0,className:l,isModal:c}),f.setupParts({icon:t,title:n,hasCloseButton:o,content:s,actionButtons:a}),this.id=e,h&&(this._onHide=h),this.isOpen=!0,et._visibleDialogPlugin=this}hide(){et._visibleDialogPlugin&&et._visibleDialogPlugin.fire(`hide:${et._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,et._visibleDialogPlugin=null}_lockBodyScroll(){document.documentElement.classList.add("ck-dialog-scroll-locked")}_unlockBodyScroll(){document.documentElement.classList.remove("ck-dialog-scroll-locked")}};u(et,"_visibleDialogPlugin");let Xr=et;class ji extends P{constructor(e,t=new lg){super(e,t);u(this,"_checkIconHolderView",new _1);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",(o,s)=>o||s)}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:o,_checkIconHolderView:s}=this;n?o.add(s,0):o.remove(s)})}}class _1 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:o,_checkIconView:s}=this;n&&!o.has(s)?o.add(s):!n&&o.has(s)&&o.remove(s)})}_createCheckIconView(){const e=new pt;return e.content=_o,e.extendTemplate({attributes:{class:"ck-list-item-button__check-icon"}}),e}}class ke 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 $e extends E{constructor(e){super(e);u(this,"id");this.set("text",void 0),this.set("for",void 0),this.id=`ck-editor__label_${Ve()}`;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 C1 extends E{constructor(i,e){super(i);const t=i.t,n=new $e;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:[De(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=[De(document,"h3",{},e.label),...Array.from(e.groups.values()).map(n=>this._createGroup(n)).flat()];return e.description&&t.splice(1,0,De(document,"p",{},e.description)),De(document,"section",{},t)})}_createGroup(i){const e=i.keystrokes.sort((n,o)=>n.label.localeCompare(o.label)).map(n=>this._createGroupRow(n)).flat(),t=[De(document,"dl",{},e)];return i.label&&t.unshift(De(document,"h4",{},i.label)),t}_createGroupRow(i){const e=this.locale.t,t=De(document,"dt"),n=De(document,"dd"),o=T1(i.keystroke),s=[];for(const a of o)s.push(a.map(L1).join(""));return t.innerHTML=i.label,n.innerHTML=s.join(", ")+(i.mayRequireFn&&A.isMac?` ${e("(may require <kbd>Fn</kbd>)")}`:""),[t,n]}}function L1(r){return qr(r).split("+").map(i=>`<kbd>${i}</kbd>`).join("+")}function T1(r){return typeof r=="string"?[[r]]:typeof r[0]=="string"?[r]:r}class E1 extends v{constructor(){super(...arguments);u(this,"contentView",null)}static get requires(){return[Xr]}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(P);return n.set({tooltip:!0,withText:!1,label:t("Accessibility help")}),n}),e.ui.componentFactory.add("menuBar:accessibilityHelp",()=>{const n=this._createButton(ke);return n.label=t("Accessibility"),n}),e.keystrokes.set("Alt+0",(n,o)=>{this._toggleDialog(),o()}),this._setupRootLabels()}_createButton(e){const t=this.editor,n=t.plugins.get("Dialog"),o=t.locale,s=new e(o);return s.set({keystroke:"Alt+0",icon:zc,isToggleable:!0}),s.on("execute",()=>this._toggleDialog()),s.bind("isOn").to(n,"id",a=>a==="accessibilityHelp"),s}_setupRootLabels(){const e=this.editor,t=e.editing.view,n=e.t;e.ui.on("ready",()=>{t.change(s=>{for(const a of t.document.roots)o(s,a)}),e.on("addRoot",(s,a)=>{const l=e.editing.view.document.getRoot(a.rootName);t.change(c=>o(c,l))},{priority:"low"})});function o(s,a){const c=[a.getAttribute("aria-label"),n("Press %0 for help.",[qr("Alt+0")])].filter(d=>d).join(". ");s.setAttribute("aria-label",c,a)}}_toggleDialog(){const e=this.editor,t=e.plugins.get("Dialog"),n=e.locale.t;this.contentView||(this.contentView=new C1(e.locale,e.accessibility.keystrokeInfos)),t.id==="accessibilityHelp"?t.hide():t.show({id:"accessibilityHelp",className:"ck-accessibility-help-dialog",title:n("Accessibility help"),icon:zc,hasCloseButton:!0,content:this.contentView})}}const Ge=class Ge extends _e{constructor(e,t=[]){super(t);u(this,"locale");u(this,"_bodyCollectionContainer");this.locale=e}get bodyCollectionContainer(){return this._bodyCollectionContainer}attachToDom(){this._bodyCollectionContainer=new Je({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection,role:"application"},children:this}).render(),(!Ge._bodyWrapper||!Ge._bodyWrapper.isConnected)&&(Ge._bodyWrapper=De(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(Ge._bodyWrapper)),Ge._bodyWrapper.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove(),Ge._bodyWrapper&&!Ge._bodyWrapper.childElementCount&&(Ge._bodyWrapper.remove(),delete Ge._bodyWrapper)}};u(Ge,"_bodyWrapper");let zs=Ge;class Kn extends P{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 x1 extends S1(ji){}function S1(r){class i extends r{constructor(...n){super(...n);u(this,"buttonView");u(this,"_fileInputView");this.buttonView=this,this._fileInputView=new A1(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 A1 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 cg 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 P(this.locale),t=e.bindTemplate;return e.set({withText:!0,icon:Co}),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}}/**
|
|
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 Qr(r,i){const e=r.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 o=t[n.label];return o&&o!=n.label&&(n.label=o),n})}function eo(r){return r.map(P1).filter(i=>!!i)}function P1(r){return typeof r=="string"?{model:r,label:r,hasBorder:!1,view:{name:"span",styles:{color:r}}}:{model:r.color,label:r.label||r.color,hasBorder:r.hasBorder===void 0?!1:r.hasBorder,view:{name:"span",styles:{color:`${r.color}`}}}}class dg extends P{constructor(i){super(i);const e=this.bindTemplate;this.set("color",void 0),this.set("hasBorder",!1),this.icon=X_,this.extendTemplate({attributes:{style:{backgroundColor:e.to("color",t=>A.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 hd 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 o={gridTemplateColumns:`repeat( ${this.columns}, 1fr)`};this.set("selectedColor",void 0),this.items=this.createCollection(),this.focusTracker=new ne,this.keystrokes=new ce,this.items.on("add",(s,a)=>{a.isOn=a.color===this.selectedColor}),n.forEach(s=>{const a=new dg;a.set({color:s.color,label:s.label,tooltip:!0,hasBorder:s.options.hasBorder}),a.on("execute",()=>{this.fire("execute",{value:s.color,hasBorder:s.options.hasBorder,label:s.label})}),this.items.add(a)}),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:o}}),this.on("change:selectedColor",(s,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),qa({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()}}/**
|
|
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 ug(r,i){if(!r)return"";const e=hg(r);if(!e)return"";if(e.space===i)return r;if(!B1(e))return"";const n=Qm[e.space][i];if(!n)return"";const o=n(e.space==="hex"?e.hexValue:e.values);return M1(o,i)}function I1(r){if(!r)return"";const i=hg(r);return i?i.space==="hex"?i.hexValue:ug(r,"hex"):"#000"}function R1(r,i){customElements.get(r)===void 0&&customElements.define(r,i)}function M1(r,i){switch(i){case"hex":return`#${r}`;case"rgb":return`rgb(${r[0]}, ${r[1]}, ${r[2]})`;case"hsl":return`hsl(${r[0]}, ${r[1]}%, ${r[2]}%)`;case"hwb":return`hwb(${r[0]}, ${r[1]}, ${r[2]})`;case"lab":return`lab(${r[0]}% ${r[1]} ${r[2]})`;case"lch":return`lch(${r[0]}% ${r[1]} ${r[2]})`;default:return""}}function hg(r){if(r.startsWith("#")){const e=$c(r);return{space:"hex",values:e.values,hexValue:r,alpha:e.alpha}}const i=$c(r);return i.space?i:null}function B1(r){return Object.keys(Qm).includes(r.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-${Ve()}`,o=`ck-labeled-field-view-status-${Ve()}`;this.fieldView=t(this,n,o),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(o),this.fieldWrapperChildren=this.createCollection([this.fieldView,this.labelView]),this.bind("_statusText").to(this,"errorText",this,"infoText",(a,l)=>a||l);const s=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",s.to("class"),s.if("isEnabled","ck-disabled",a=>!a),s.if("isEmpty","ck-labeled-field-view_empty"),s.if("isFocused","ck-labeled-field-view_focused"),s.if("placeholder","ck-labeled-field-view_placeholder"),s.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 $e(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",o=>!o)],id:e,role:n.if("errorText","alert")},children:[{text:n.to("_statusText")}]}),t}focus(e){this.fieldView.focus(e)}}class V1 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 ne,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=N1(this.element)}_setDomElementValue(e){this.element.value=!e&&e!==0?"":e}}function N1(r){return!r.value}class mg extends V1{constructor(i){super(i),this.set("inputMode","text");const e=this.bindTemplate;this.extendTemplate({attributes:{inputmode:e.to("inputMode")}})}}class gg extends mg{constructor(i){super(i),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class D1 extends mg{constructor(i,{min:e,max:t,step:n}={}){super(i);const o=this.bindTemplate;this.set("min",e),this.set("max",t),this.set("step",n),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:o.to("min"),max:o.to("max"),step:o.to("step")}})}}class O1 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():W("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 Vi=class Vi 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 o=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 ce,this.focusTracker=new ne,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",o.to("class"),o.if("isEnabled","ck-disabled",s=>!s)],id:o.to("id"),"aria-describedby":o.to("ariaDescribedById")},children:[t,n]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":o.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,o)=>{if(o)if(this.panelPosition==="auto"){const s=Vi._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=s?s.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:o,northEast:s,northWest:a,southMiddleEast:l,southMiddleWest:c,northMiddleEast:d,northMiddleWest:h}=Vi.defaultPanelPositions;return this.locale.uiLanguageDirection!=="rtl"?[n,o,l,c,e,s,a,d,h,t]:[o,n,c,l,e,a,s,h,d,t]}get _defaultPanelPositionName(){return this.locale.uiLanguageDirection==="rtl"?"sw":"se"}};u(Vi,"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(Vi,"_getOptimalPosition",pa);let Fs=Vi;class z1 extends P{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 pt;return e.content=Co,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}class at 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 ja extends E{constructor(i){super(i),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}class Ar extends E{constructor(e,t=new $e){super(e);u(this,"labelView");u(this,"items");u(this,"children");const n=this.bindTemplate,o=new Gi(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,o]),o.set({role:"group",ariaLabelledBy:t.id}),o.focusTracker.destroy(),o.keystrokes.destroy(),this.items=o.items,this.setTemplate({tag:"li",attributes:{role:"presentation",class:["ck","ck-list__group",n.if("isVisible","ck-hidden",s=>!s)]},children:this.children})}focus(){if(this.items){const e=this.items.find(t=>!(t instanceof ja));e&&e.focus()}}}class Gi 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 _e,this.items=this.createCollection(),this.focusTracker=new ne,this.keystrokes=new ce,this._focusCycler=new Ie({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 Ar?this._registerFocusableItemsGroup(e):e instanceof at&&this._registerFocusableListItem(e);this.items.on("change",(e,t)=>{for(const n of t.removed)n instanceof Ar?this._deregisterFocusableItemsGroup(n):n instanceof at&&this._deregisterFocusableListItem(n);for(const n of Array.from(t.added).reverse())n instanceof Ar?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 o of n.removed)this._deregisterFocusableListItem(o);for(const o of Array.from(n.added).reverse())this._registerFocusableListItem(o,this.items.getIndex(e)+n.index)}}_registerFocusableItemsGroup(e,t){Array.from(e.items).forEach((o,s)=>{const a=typeof t<"u"?t+s:void 0;this._registerFocusableListItem(o,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 md=Hi("px"),F1={top:-99999,left:-99999,name:"arrowless",config:{withArrow:!1}},Ne=class Ne 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",md),left:t.to("left",md)}},children:this.content})}destroy(){this.hide(),super.destroy()}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){const t=Pr(e.target);if(t&&!xt(t))return!1;this.show();const n=Ne.defaultPositions,o=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),s=Ne._getOptimalPosition(o)||F1,a=parseInt(s.left),l=parseInt(s.top),c=s.name,d=s.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=Pr(e.target);const n=e.limiter?Pr(e.limiter):T.document.body;if(this.listenTo(T.document,"scroll",(o,s)=>{const a=s.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&&ie(t)&&(t=t.parentElement),t)){const o=()=>{xt(t)||this.unpin()};this._resizeObserver=new Sn(t,o)}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=Ne.arrowSideOffset,heightOffset:n=Ne.arrowHeightOffset,stickyVerticalOffset:o=Ne.stickyVerticalOffset,config:s}=e;return{northWestArrowSouthWest:(c,d)=>({top:a(c,d),left:c.left-t,name:"arrow_sw",...s&&{config:s}}),northWestArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.left-d.width*.25-t,name:"arrow_smw",...s&&{config:s}}),northWestArrowSouth:(c,d)=>({top:a(c,d),left:c.left-d.width/2,name:"arrow_s",...s&&{config:s}}),northWestArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.left-d.width*.75+t,name:"arrow_sme",...s&&{config:s}}),northWestArrowSouthEast:(c,d)=>({top:a(c,d),left:c.left-d.width+t,name:"arrow_se",...s&&{config:s}}),northArrowSouthWest:(c,d)=>({top:a(c,d),left:c.left+c.width/2-t,name:"arrow_sw",...s&&{config:s}}),northArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width*.25-t,name:"arrow_smw",...s&&{config:s}}),northArrowSouth:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width/2,name:"arrow_s",...s&&{config:s}}),northArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width*.75+t,name:"arrow_sme",...s&&{config:s}}),northArrowSouthEast:(c,d)=>({top:a(c,d),left:c.left+c.width/2-d.width+t,name:"arrow_se",...s&&{config:s}}),northEastArrowSouthWest:(c,d)=>({top:a(c,d),left:c.right-t,name:"arrow_sw",...s&&{config:s}}),northEastArrowSouthMiddleWest:(c,d)=>({top:a(c,d),left:c.right-d.width*.25-t,name:"arrow_smw",...s&&{config:s}}),northEastArrowSouth:(c,d)=>({top:a(c,d),left:c.right-d.width/2,name:"arrow_s",...s&&{config:s}}),northEastArrowSouthMiddleEast:(c,d)=>({top:a(c,d),left:c.right-d.width*.75+t,name:"arrow_sme",...s&&{config:s}}),northEastArrowSouthEast:(c,d)=>({top:a(c,d),left:c.right-d.width+t,name:"arrow_se",...s&&{config:s}}),southWestArrowNorthWest:c=>({top:l(c),left:c.left-t,name:"arrow_nw",...s&&{config:s}}),southWestArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.left-d.width*.25-t,name:"arrow_nmw",...s&&{config:s}}),southWestArrowNorth:(c,d)=>({top:l(c),left:c.left-d.width/2,name:"arrow_n",...s&&{config:s}}),southWestArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.left-d.width*.75+t,name:"arrow_nme",...s&&{config:s}}),southWestArrowNorthEast:(c,d)=>({top:l(c),left:c.left-d.width+t,name:"arrow_ne",...s&&{config:s}}),southArrowNorthWest:c=>({top:l(c),left:c.left+c.width/2-t,name:"arrow_nw",...s&&{config:s}}),southArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width*.25-t,name:"arrow_nmw",...s&&{config:s}}),southArrowNorth:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width/2,name:"arrow_n",...s&&{config:s}}),southArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width*.75+t,name:"arrow_nme",...s&&{config:s}}),southArrowNorthEast:(c,d)=>({top:l(c),left:c.left+c.width/2-d.width+t,name:"arrow_ne",...s&&{config:s}}),southEastArrowNorthWest:c=>({top:l(c),left:c.right-t,name:"arrow_nw",...s&&{config:s}}),southEastArrowNorthMiddleWest:(c,d)=>({top:l(c),left:c.right-d.width*.25-t,name:"arrow_nmw",...s&&{config:s}}),southEastArrowNorth:(c,d)=>({top:l(c),left:c.right-d.width/2,name:"arrow_n",...s&&{config:s}}),southEastArrowNorthMiddleEast:(c,d)=>({top:l(c),left:c.right-d.width*.75+t,name:"arrow_nme",...s&&{config:s}}),southEastArrowNorthEast:(c,d)=>({top:l(c),left:c.right-d.width+t,name:"arrow_ne",...s&&{config:s}}),westArrowEast:(c,d)=>({top:c.top+c.height/2-d.height/2,left:c.left-d.width-n,name:"arrow_e",...s&&{config:s}}),eastArrowWest:(c,d)=>({top:c.top+c.height/2-d.height/2,left:c.right+n,name:"arrow_w",...s&&{config:s}}),viewportStickyNorth:(c,d,h)=>{const m=new B(T.document.body).getIntersection(h.getVisible());if(!m)return null;const g=m.getVisible();return!c.getIntersection(g)||!(g.top-c.top-o<d.height&&g.bottom-c.bottom<d.height)?null:{top:g.top+o,left:c.left+c.width/2-d.width/2,name:"arrowless",config:{withArrow:!1,...s}}}};function a(c,d){return c.top-d.height-n}function l(c){return c.bottom+n}}};u(Ne,"arrowSideOffset",25),u(Ne,"arrowHeightOffset",10),u(Ne,"stickyVerticalOffset",20),u(Ne,"_getOptimalPosition",pa),u(Ne,"defaultPositions",Ne.generatePositions());let xe=Ne;function Pr(r){return qt(r)?r:wo(r)?r.commonAncestorContainer:typeof r=="function"?Pr(r()):null}class fg extends E{constructor(i){super(i),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class U1 extends E{constructor(i){super(i),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}/**
|
|
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 H1(r){return r.bindTemplate.to(i=>{i.target===r.element&&i.preventDefault()})}/**
|
|
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 pg(r){if(Array.isArray(r))return{items:r,removeItems:[]};const i={items:[],removeItems:[]};return r?{...i,...r}:i}const W1={alignLeft:Da,bold:$m,importExport:o0,paragraph:y0,plus:C0,text:D0,threeVerticalDots:Fa,pilcrow:_0,dragIndicator:e0};class oi 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,o=this.t;this.options=t||{},this.set("ariaLabel",o("Editor toolbar")),this.set("maxWidth","auto"),this.set("role","toolbar"),this.set("isGrouping",!!this.options.shouldGroupWhenFull),this.items=this.createCollection(),this.focusTracker=new ne,this.keystrokes=new ce,this.set("class",void 0),this.set("isCompact",!1),this.set("isVertical",!1),this.itemsView=new q1(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const s=e.uiLanguageDirection==="rtl";this._focusCycler=new Ie({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[s?"arrowright":"arrowleft","arrowup"],focusNext:[s?"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:H1(this)}}),this._behavior=this.options.shouldGroupWhenFull?new fd(this):new gd(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 fd(this),this._behavior.render(this),this._behavior.refreshItems()):(this._behavior=new gd(this),this._behavior.render(this)))}_buildItemsFromConfig(e,t,n){const o=pg(e),s=n||o.removeItems;return this._cleanItemsConfiguration(o.items,t,s).map(l=>rt(l)?this._createNestedToolbarDropdown(l,t,s):l==="|"?new fg:l==="-"?new U1:t.create(l)).filter(l=>!!l)}_cleanItemsConfiguration(e,t,n){const o=e.filter((s,a,l)=>s==="|"?!0:n.indexOf(s)!==-1?!1:s==="-"?this.options.shouldGroupWhenFull?(W("toolbarview-line-break-ignored-when-grouping-items",l),!1):!0:!rt(s)&&!t.has(s)?(W("toolbarview-item-unavailable",{item:s}),!1):!0);return this._cleanSeparatorsAndLineBreaks(o)}_cleanSeparatorsAndLineBreaks(e){const t=a=>a!=="-"&&a!=="|",n=e.length,o=e.findIndex(t);if(o===-1)return[];const s=n-e.slice().reverse().findIndex(t);return e.slice(o,s).filter((a,l,c)=>t(a)?!0:!(l>0&&c[l-1]===a))}_createNestedToolbarDropdown(e,t,n){let{label:o,icon:s,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=nt(d);return o||W("toolbarview-nested-toolbar-dropdown-missing-label",e),h.class="ck-toolbar__nested-toolbar-dropdown",h.buttonView.set({label:o,tooltip:l,withText:!!c}),s!==!1?h.buttonView.icon=W1[s]||s||Fa:h.buttonView.withText=!0,Ga(h,()=>h.toolbarView._buildItemsFromConfig(a,t,n)),h}}class q1 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 gd{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=>Gn(e)?e:null)}render(){}destroy(){}}class fd{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,o=Array.from(t.added);for(const s of t.removed)n>=this.ungroupedItems.length?this.groupedItems.remove(s):this.ungroupedItems.remove(s);for(let s=n;s<n+o.length;s++){const a=o[s-n];s>this.ungroupedItems.length?this.groupedItems.add(a,s-this.ungroupedItems.length):this.ungroupedItems.add(a,s)}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(!xt(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 B(i.lastChild),n=new B(i);if(!this.cachedPadding){const o=T.window.getComputedStyle(i),s=e==="ltr"?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(o[s])}return e==="ltr"?t.right>n.right-this.cachedPadding:t.left<n.left+this.cachedPadding}_enableGroupingOnResize(){let i;this.resizeObserver=new Sn(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=nt(i);return t.class="ck-toolbar__grouped-dropdown",t.panelPosition=i.uiLanguageDirection==="ltr"?"sw":"se",Ga(t,this.groupedItems),t.buttonView.set({label:e("Show more items"),tooltip:!0,tooltipPosition:i.uiLanguageDirection==="rtl"?"se":"sw",icon:Fa}),t}_updateFocusCyclableItems(){this.viewFocusables.clear(),this.ungroupedItems.map(i=>{Gn(i)&&this.viewFocusables.add(i)}),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}class Lo 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 ce,this.focusTracker=new ne,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",n.to("class"),n.if("isVisible","ck-hidden",o=>!o),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 P;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 P,t=e.bindTemplate;return e.icon=Co,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 nt(r,i=z1){const e=typeof i=="function"?new i(r):i,t=new O1(r),n=new Fs(r,e,t);return e.bind("isEnabled").to(n),e instanceof Lo?e.arrowView.bind("isOn").to(n,"isOpen"):e.bind("isOn").to(n,"isOpen"),j1(n),n}function Ga(r,i,e={}){r.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),r.isOpen?pd(r,i,e):r.once("change:isOpen",()=>pd(r,i,e),{priority:"highest"}),e.enableActiveItemFocusOnDropdownOpen&&Ka(r,()=>r.toolbarView.items.find(t=>t.isOn))}function pd(r,i,e){const t=r.locale,n=t.t,o=r.toolbarView=new oi(t),s=typeof i=="function"?i():i;o.ariaLabel=e.ariaLabel||n("Dropdown toolbar"),e.maxWidth&&(o.maxWidth=e.maxWidth),e.class&&(o.class=e.class),e.isCompact&&(o.isCompact=e.isCompact),e.isVertical&&(o.isVertical=!0),s instanceof _e?o.items.bindTo(s).using(a=>a):o.items.addMany(s),r.panelView.children.add(o),r.focusTracker.add(o),o.items.delegate("execute").to(r)}function To(r,i,e={}){r.isOpen?bd(r,i,e):r.once("change:isOpen",()=>bd(r,i,e),{priority:"highest"}),Ka(r,()=>r.listView.items.find(t=>t instanceof at?t.children.first.isOn:!1))}function bd(r,i,e){const t=r.locale,n=r.listView=new Gi(t),o=typeof i=="function"?i():i;n.ariaLabel=e.ariaLabel,n.role=e.role,wg(r,n.items,o,t),r.panelView.children.add(n),n.items.delegate("execute").to(r)}function Ka(r,i){r.on("change:isOpen",()=>{if(!r.isOpen)return;const e=i();e&&(typeof e.focus=="function"?e.focus():W("ui-dropdown-focus-child-on-open-child-missing-focus",{view:e}))},{priority:Ot.low-10})}function j1(r){G1(r),K1(r),$1(r),Z1(r),J1(r),Y1(r)}function G1(r){Wi({emitter:r,activator:()=>r.isRendered&&r.isOpen,callback:()=>{r.isOpen=!1},contextElements:()=>[r.element,...bg(r.focusTracker).filter(i=>!r.element.contains(i))]})}function bg(r){return[...r.elements,...r.externalViews.flatMap(i=>bg(i.focusTracker))]}function K1(r){r.on("execute",i=>{i.source instanceof Kn||(r.isOpen=!1)})}function $1(r){r.focusTracker.on("change:isFocused",(i,e,t)=>{t||!r.isOpen||(r.isOpen=!1)})}function Z1(r){r.keystrokes.set("arrowdown",(i,e)=>{r.isOpen&&(r.panelView.focus(),e())}),r.keystrokes.set("arrowup",(i,e)=>{r.isOpen&&(r.panelView.focusLast(),e())})}function J1(r){r.on("change:isOpen",(i,e,t)=>{if(t)return;r.focusTracker.elements.some(o=>o.contains(T.document.activeElement))&&r.buttonView.focus()})}function Y1(r){r.on("change:isOpen",(i,e,t)=>{t&&r.panelView.focus()},{priority:"low"})}function wg(r,i,e,t){X1(i),i.bindTo(e).using(n=>{if(n.type==="separator")return new ja(t);if(n.type==="group"){const o=new Ar(t);return o.set({label:n.label}),wg(r,o.items,n.items,t),o.items.delegate("execute").to(r),o}else if(n.type==="button"||n.type==="switchbutton"){const o=n.model.role==="menuitemcheckbox"||n.model.role==="menuitemradio",s=new at(t);let a;return n.type==="button"?(a=new ji(t),a.set({isToggleable:o})):a=new Kn(t),a.bind(...Object.keys(n.model)).to(n.model),a.delegate("execute").to(s),s.children.add(a),s}return null})}function X1(r){let i=0;const e=o=>!(o instanceof at)||!(o.children.first instanceof ji)?null:o.children.first,t=o=>{const s=e(o);return!s||!s.isToggleable?null:s},n=o=>{for(const s of r){const a=e(s);a&&(a.hasCheckSpace=o)}};r.on("change",(o,s)=>{const a=i>0;for(const c of s.removed)t(c)&&i--;for(const c of s.added){const d=e(c);d&&(d.isToggleable&&i++,d.hasCheckSpace=i>0)}const l=i>0;a!==l&&n(l)})}const Ze=(r,i,e)=>{const t=new gg(r.locale);return t.set({id:i,ariaDescribedById:e}),t.bind("isReadOnly").to(r,"isEnabled",n=>!n),t.bind("hasError").to(r,"errorText",n=>!!n),t.on("input",()=>{r.errorText=null}),r.bind("isEmpty","isFocused","placeholder").to(t),t},Q1=(r,i,e)=>{const t=new D1(r.locale);return t.set({id:i,ariaDescribedById:e,inputMode:"numeric"}),t.bind("isReadOnly").to(r,"isEnabled",n=>!n),t.bind("hasError").to(r,"errorText",n=>!!n),t.on("input",()=>{r.errorText=null}),r.bind("isEmpty","isFocused","placeholder").to(t),t},kg=(r,i,e)=>{const t=nt(r.locale);return t.set({id:i,ariaDescribedById:e}),t.bind("isEnabled").to(r),t},eC=150;class tC 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=ot(o=>{this.set("color",o),this.fire("colorSelected",{color:this.color})},eC,{leading:!0}),this.on("set:color",(o,s,a)=>{o.return=ug(a,this._config.format||"hsl")}),this.on("change:color",()=>{this._hexColor=rs(this.color)}),this.on("change:_hexColor",()=>{document.activeElement!==this.picker&&this.picker.setAttribute("color",this._hexColor),rs(this.color)!=rs(this._hexColor)&&(this.color=this._hexColor)})}render(){if(super.render(),R1("hex-color-picker",s1),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&&(A.isGecko||A.isiOS||A.isSafari||A.isBlink)&&this.hexInputRow.children.get(1).focus(),this.slidersView.first.focus()}_createSlidersView(){const n=[...this.picker.shadowRoot.children].filter(o=>o.getAttribute("role")==="slider").map(o=>new iC(o));this.slidersView=this.createCollection(),n.forEach(o=>{this.slidersView.add(o)})}_createInputRow(){const e=this._createColorInput();return new rC(this.locale,e)}_createColorInput(){const e=new he(this.locale,Ze),{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 o=yg(n);o&&this._debounceColorPickerEvent(o)}}),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 rs(r){let i=I1(r);return i||(i="#000"),i.length===4&&(i="#"+[i[1],i[1],i[2],i[2],i[3],i[3]].join("")),i.toLowerCase()}class iC extends E{constructor(i){super(),this.element=i}focus(){this.element.focus()}}class nC extends E{constructor(i){super(i),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__hash-view"]},children:"#"})}}class rC extends E{constructor(e,t){super(e);u(this,"children");u(this,"inputView");this.inputView=t,this.children=this.createCollection([new nC,this.inputView]),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__row"]},children:this.children})}getParsedColor(){return yg(this.inputView.fieldView.element.value)}}function yg(r){if(!r)return null;const i=r.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 oC extends Z(We){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 sC extends E{constructor(e,{colors:t,columns:n,removeButtonLabel:o,documentColorsLabel:s,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 oC,this.documentColorsCount=a,this._focusables=d,this._removeButtonLabel=o,this._colorPickerLabel=l,this._documentColorsLabel=s,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,o=this.documentColorsCount;this.documentColors.clear();for(const s of n.getRoots()){const a=e.createRangeIn(s);for(const l of a.getItems())if(l.is("$textProxy")&&l.hasAttribute(t)&&(this._addColorToDocumentColors(l.getAttribute(t)),this.documentColors.length>=o))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=Je.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 P,this.colorPickerButtonView.set({label:this._colorPickerLabel,withText:!0,icon:Y_,class:"ck-color-selector__color-picker"}),this.colorPickerButtonView.on("execute",()=>{this.fire("colorPicker:show")})}_createRemoveColorButton(){const e=new P;return e.set({withText:!0,icon:t0,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 hd(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=Je.bind(this.documentColors,this.documentColors),t=new hd(this.locale,{columns:this.columns});return t.extendTemplate({attributes:{class:e.if("isEmpty","ck-hidden")}}),t.items.bindTo(this.documentColors).using(n=>{var s;const o=new dg;return o.set({color:n.color,hasBorder:(s=n.options)==null?void 0:s.hasBorder}),n.label&&o.set({label:n.label,tooltip:!0}),o.on("execute",()=>{this.fire("execute",{value:n.color,source:"documentColorsGrid"})}),o}),this.documentColors.on("change:isEmpty",(n,o,s)=>{s&&(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 aC extends E{constructor(e,{focusTracker:t,focusables:n,keystrokes:o,colorPickerViewConfig:s}){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=o,this.set("isVisible",!1),this.set("selectedColor",void 0),this._focusables=n,this._colorPickerViewConfig=s;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 tC(this.locale,{...this._colorPickerViewConfig});this.colorPickerView=e,this.colorPickerView.render(),this.selectedColor&&(e.color=this.selectedColor),this.listenTo(this,"change:selectedColor",(t,n,o)=>{e.color=o}),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,o=this.createCollection();return o.add(e),o.add(t),n.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector_action-bar"]},children:o}),n}_createActionButtons(){const e=this.locale,t=e.t,n=new P(e),o=new P(e);return n.set({icon:_o,class:"ck-button-save",type:"button",withText:!1,label:t("Accept")}),o.set({icon:vo,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})}),o.on("execute",()=>{this.fire("colorPicker:cancel")}),{saveButtonView:n,cancelButtonView:o}}_executeUponColorChange(){this.colorPickerView.on("colorSelected",(e,t)=>{this.fire("execute",{value:t.color,source:"colorPicker"}),this.set("selectedColor",t.color)})}}class lC extends E{constructor(e,{colors:t,columns:n,removeButtonLabel:o,documentColorsLabel:s,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 ne,this.keystrokes=new ce,this._focusables=new _e,this._colorPickerViewConfig=c,this._focusCycler=new Ie({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.colorGridsFragmentView=new sC(e,{colors:t,columns:n,removeButtonLabel:o,documentColorsLabel:s,documentColorsCount:a,colorPickerLabel:l,focusTracker:this.focusTracker,focusables:this._focusables}),this.colorPickerFragmentView=new aC(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 cC{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(os(i),{callback:e,originalName:i})}create(i){if(!this.has(i))throw new b("componentfactory-item-missing",this,{name:i});return this._components.get(os(i)).callback(this.editor.locale)}has(i){return this._components.has(os(i))}}function os(r){return String(r).toLowerCase()}const wd="ck-tooltip",fe=class fe extends Pe(){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 xe(e.locale),this.balloonPanelView.class=wd,this.balloonPanelView.content.add(this.tooltipTextView),this._mutationObserver=dC(()=>{this._updateTooltipPosition()}),this._pinTooltipDebounced=ot(this._pinTooltip,600),this._unpinTooltipDebounced=ot(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=ss(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,as(n)):this._pinTooltipDebounced(n,as(n))}_onLeaveOrBlur(e,{target:t,relatedTarget:n}){if(e.name==="mouseleave"){if(!qt(t))return;const o=this.balloonPanelView.element,s=o&&(o===n||o.contains(n)),a=!s&&t===o;if(s){this._unpinTooltipDebounced.cancel();return}if(!a&&this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const l=ss(t),c=ss(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:o}){this._unpinTooltip();const s=ue(fe._editors.values()).ui.view.body;s.has(this.balloonPanelView)||s.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.class=[wd,o].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=as(this._currentElementWithTooltip);if(!xt(this._currentElementWithTooltip)||!e.text){this._unpinTooltip();return}this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:fe.getPositioningFunctions(e.position)})}};u(fe,"defaultBalloonPositions",xe.generatePositions({heightOffset:5,sideOffset:13})),u(fe,"_editors",new Set),u(fe,"_instance",null);let Us=fe;function ss(r){return qt(r)?r.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}function as(r){return{text:r.dataset.ckeTooltipText,position:r.dataset.ckeTooltipPosition||"s",cssClass:r.dataset.ckeTooltipClass||""}}function dC(r){const i=new MutationObserver(()=>{r()});return{attach(e){i.observe(e,{attributes:!0,attributeFilter:["data-cke-tooltip-text","data-cke-tooltip-position"]})},detach(){i.disconnect()}}}const uC=50,hC=350;class vg extends Pe(){constructor(e,t={}){super();u(this,"editor");u(this,"_balloonView",null);u(this,"_showBalloonThrottled",En(()=>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,o)=>{this._updateLastFocusedEditableElement(),o?this._showBalloon():this._hideBalloon()}),e.ui.focusTracker.on("change:focusedElement",(t,n,o)=>{this._updateLastFocusedEditableElement(),o&&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 xe,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"?mC(this._lastFocusedEditableElement,e):gC(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 o=Array.from(e.ui.getEditableElementsNames()).map(s=>e.ui.getEditableElement(s));o.includes(n)?this._lastFocusedEditableElement=n:this._lastFocusedEditableElement=o[0]}}function mC(r,i){return _g(r,i,(e,t)=>e.left+e.width-t.width-i.horizontalOffset)}function gC(r,i){return _g(r,i,e=>e.left+i.horizontalOffset)}function _g(r,i,e){return(t,n)=>{const o=new B(r);if(o.width<hC||o.height<uC)return null;let s;i.position==="inside"?s=o.bottom-n.height:s=o.bottom-n.height/2,s-=i.verticalOffset;const a=e(o,n),c=t.clone().moveTo(a,s).getIntersection(n.clone().moveTo(a,s)).getVisible();return!c||c.getArea()<n.getArea()?null:{top:s,left:a,name:`position_${i.position}-side_${i.side}`,config:{withArrow:!1}}}}const fC="Powered by";class pC extends vg{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 bC(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?fC:e.label,verticalOffset:e.verticalOffset!==void 0?e.verticalOffset:n,horizontalOffset:e.horizontalOffset!==void 0?e.horizontalOffset:i.horizontalOffset,forceVisible:!!e.forceVisible}}}class bC extends E{constructor(i,e){super(i);const t=new pt,n=this.bindTemplate;t.set({content:L0,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(o=>o.preventDefault())}}]})}}class wC extends vg{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=kd(t);return!!(n&&this.licenseTypeMessage[n])}_createBadgeContent(){const e=this.editor.config.get("licenseKey"),t=kd(e);return new kC(this.editor.locale,this.licenseTypeMessage[t])}_getNormalizedConfig(){const e=super._getNormalizedConfig(),t=this.editor.config.get("ui.poweredBy")||{},n=t.position||e.position,o=t.side||e.side;return{position:n,side:o==="left"?"right":"left",verticalOffset:e.verticalOffset,horizontalOffset:e.horizontalOffset}}}class kC 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 kd(r){if(r=="GPL")return"GPL";const i=va(r.split(".")[1]);return i?i.licenseType||"production":null}const yd={POLITE:"polite",ASSERTIVE:"assertive"};class yC{constructor(i){u(this,"editor");u(this,"view");this.editor=i,i.once("ready",()=>{for(const e of Object.values(yd))this.announce("",e)})}announce(i,e=yd.POLITE){const t=this.editor;if(!t.ui.view)return;this.view||(this.view=new vC(t.locale),t.ui.view.body.add(this.view));const{politeness:n,isUnsafeHTML:o}=typeof e=="string"?{politeness:e}:e;let s=this.view.regionViews.find(a=>a.politeness===n);s||(s=new _C(t,n),this.view.regionViews.add(s)),s.announce({announcement:i,isUnsafeHTML:o})}}class vC 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 _C 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 $n extends at{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 hr=5,vi={toggleMenusAndFocusItemsOnHover(r){r.on("menu:mouseenter",i=>{if(!(!r.isFocusBorderEnabled&&!r.isOpen)){if(r.isOpen)for(const e of r.menus){const t=i.path[0],n=t instanceof $n&&t.children.first===e;e.isOpen=(i.path.includes(e)||n)&&e.isEnabled}i.source.focus()}})},focusCycleMenusOnArrows(r){const i=r.locale.uiLanguageDirection==="rtl";r.on("menu:arrowright",t=>{e(t.source,i?-1:1)}),r.on("menu:arrowleft",t=>{e(t.source,i?1:-1)});function e(t,n){const o=r.children.getIndex(t),s=t.isOpen,a=r.children.length,l=r.children.get((o+a+n)%a);t.isOpen=!1,s&&(l.isOpen=!0),l.buttonView.focus()}},closeMenusWhenTheBarCloses(r){r.on("change:isOpen",()=>{r.isOpen||r.menus.forEach(i=>{i.isOpen=!1})})},closeMenuWhenAnotherOnTheSameLevelOpens(r){r.on("menu:change:isOpen",(i,e,t)=>{t&&r.menus.filter(n=>i.source.parentMenuView===n.parentMenuView&&i.source!==n&&n.isOpen).forEach(n=>{n.isOpen=!1})})},closeOnClickOutside(r){Wi({emitter:r,activator:()=>r.isOpen,callback:()=>r.close(),contextElements:()=>r.children.map(i=>i.element)})},enableFocusHighlightOnInteraction(r){let i=!1;r.on("change:isOpen",(e,t,n)=>{n||(i||(r.isFocusBorderEnabled=!1),i=!1)}),r.listenTo(r.element,"keydown",()=>{i=!0},{useCapture:!0}),r.listenTo(r.element,"keyup",()=>{i=!1},{useCapture:!0}),r.listenTo(r.element,"focus",()=>{i&&(r.isFocusBorderEnabled=!0)},{useCapture:!0})}},Mt={openAndFocusPanelOnArrowDownKey(r){r.keystrokes.set("arrowdown",(i,e)=>{r.isEnabled&&r.focusTracker.focusedElement===r.buttonView.element&&(r.isOpen||(r.isOpen=!0),r.panelView.focus(),e())})},openOnArrowRightKey(r){const i=r.locale.uiLanguageDirection==="rtl"?"arrowleft":"arrowright";r.keystrokes.set(i,(e,t)=>{r.focusTracker.focusedElement!==r.buttonView.element||!r.isEnabled||(r.isOpen||(r.isOpen=!0),r.panelView.focus(),t())})},openOnButtonClick(r){r.buttonView.on("execute",()=>{r.isOpen=!0})},toggleOnButtonClick(r){r.buttonView.on("execute",()=>{r.isOpen=!r.isOpen})},openAndFocusOnEnterKeyPress(r){r.keystrokes.set("enter",(i,e)=>{r.focusTracker.focusedElement===r.buttonView.element&&(r.isOpen=!0,r.panelView.focus(),e())})},closeOnArrowLeftKey(r){const i=r.locale.uiLanguageDirection==="rtl"?"arrowright":"arrowleft";r.keystrokes.set(i,(e,t)=>{r.isOpen&&(r.isOpen=!1,r.focus(),t())})},closeOnEscKey(r){r.keystrokes.set("esc",(i,e)=>{r.isOpen&&(r.isOpen=!1,r.focus(),e())})},closeOnParentClose(r){r.parentMenuView.on("change:isOpen",(i,e,t)=>{!t&&i.source===r.parentMenuView&&(r.isOpen=!1)})}},CC={southEast:r=>({top:r.bottom,left:r.left,name:"se"}),southWest:(r,i)=>({top:r.bottom,left:r.left-i.width+r.width,name:"sw"}),northEast:(r,i)=>({top:r.top-i.height,left:r.left,name:"ne"}),northWest:(r,i)=>({top:r.top-i.height,left:r.left-i.width+r.width,name:"nw"}),eastSouth:r=>({top:r.top,left:r.right-hr,name:"es"}),eastNorth:(r,i)=>({top:r.top-i.height,left:r.right-hr,name:"en"}),westSouth:(r,i)=>({top:r.top,left:r.left-i.width+hr,name:"ws"}),westNorth:(r,i)=>({top:r.top-i.height,left:r.left-i.width+hr,name:"wn"})},LC=[{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 TC(r){let i;return!("items"in r)||!r.items?i={items:Fe(LC),addItems:[],removeItems:[],isVisible:!0,isUsingDefaultConfig:!0,...r}:i={items:r.items,removeItems:[],addItems:[],isVisible:!0,isUsingDefaultConfig:!1,...r},i}function EC({normalizedConfig:r,locale:i,componentFactory:e,extraItems:t}){const n=Fe(r);return vd(r,n,t),xC(r,n),vd(r,n,n.addItems),SC(r,n,e),Cg(r,n),AC(n,i),n}function xC(r,i){const e=i.removeItems,t=[];i.items=i.items.filter(({menuId:n})=>e.includes(n)?(t.push(n),!1):!0),Ki(i.items,n=>{n.groups=n.groups.filter(({groupId:o})=>e.includes(o)?(t.push(o),!1):!0);for(const o of n.groups)o.items=o.items.filter(s=>{const a=Lg(s);return e.includes(a)?(t.push(a),!1):!0})});for(const n of e)t.includes(n)||W("menu-bar-item-could-not-be-removed",{menuBarConfig:r,itemName:n})}function vd(r,i,e){const t=[];if(e.length!=0){for(const n of e){const o=RC(n.position),s=MC(n.position);if(PC(n))if(!s)o==="start"?(i.items.unshift(n.menu),t.push(n)):o==="end"&&(i.items.push(n.menu),t.push(n));else{const a=i.items.findIndex(l=>l.menuId===s);a!=-1?o==="before"?(i.items.splice(a,0,n.menu),t.push(n)):o==="after"&&(i.items.splice(a+1,0,n.menu),t.push(n)):_d(i,n.menu,s,o)&&t.push(n)}else IC(n)?Ki(i.items,a=>{if(a.menuId===s)o==="start"?(a.groups.unshift(n.group),t.push(n)):o==="end"&&(a.groups.push(n.group),t.push(n));else{const l=a.groups.findIndex(c=>c.groupId===s);l!==-1&&(o==="before"?(a.groups.splice(l,0,n.group),t.push(n)):o==="after"&&(a.groups.splice(l+1,0,n.group),t.push(n)))}}):_d(i,n.item,s,o)&&t.push(n)}for(const n of e)t.includes(n)||W("menu-bar-item-could-not-be-added",{menuBarConfig:r,addedItemConfig:n})}}function _d(r,i,e,t){let n=!1;return Ki(r.items,o=>{for(const{groupId:s,items:a}of o.groups){if(n)return;if(s===e)t==="start"?(a.unshift(i),n=!0):t==="end"&&(a.push(i),n=!0);else{const l=a.findIndex(c=>Lg(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 SC(r,i,e){Ki(i.items,t=>{for(const n of t.groups)n.items=n.items.filter(o=>{const s=typeof o=="string"&&!e.has(o);return s&&!i.isUsingDefaultConfig&&W("menu-bar-item-unavailable",{menuBarConfig:r,parentMenuConfig:Fe(t),componentName:o}),!s})})}function Cg(r,i){const e=i.isUsingDefaultConfig;let t=!1;if(i.items=i.items.filter(n=>n.groups.length?!0:(ls(r,n,e),!1)),!i.items.length){ls(r,r,e);return}Ki(i.items,n=>{n.groups=n.groups.filter(o=>o.items.length?!0:(t=!0,!1));for(const o of n.groups)o.items=o.items.filter(s=>Tg(s)&&!s.groups.length?(ls(r,s,e),t=!0,!1):!0)}),t&&Cg(r,i)}function ls(r,i,e){e||W("menu-bar-menu-empty",{menuBarConfig:r,emptyMenuConfig:i})}function AC(r,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"})};Ki(r.items,n=>{n.label in t&&(n.label=t[n.label])})}function Ki(r,i){if(Array.isArray(r))for(const t of r)e(t);function e(t){i(t);for(const n of t.groups)for(const o of n.items)Tg(o)&&e(o)}}function PC(r){return typeof r=="object"&&"menu"in r}function IC(r){return typeof r=="object"&&"group"in r}function RC(r){return r.startsWith("start")?"start":r.startsWith("end")?"end":r.startsWith("after")?"after":"before"}function MC(r){const i=r.match(/^[^:]+:(.+)/);return i?i[1]:null}function Lg(r){return typeof r=="string"?r:r.menuId}function Tg(r){return typeof r=="object"&&"menuId"in r}class BC extends Z(){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 cC(e),this.focusTracker=new ne,this.tooltipManager=new Us(e),this.poweredBy=new pC(e),this.evaluationBadge=new wC(e),this.ariaLiveAnnouncer=new yC(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=TC(this.editor.config.get("menuBar")||{});e.fillFromConfig(n,this.componentFactory,this._extraMenuBarElements),this.editor.keystrokes.set("Esc",(o,s)=>{t.contains(this.editor.ui.focusTracker.focusedElement)&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):this.editor.editing.view.focus(),s())}),this.editor.keystrokes.set("Alt+F9",(o,s)=>{t.contains(this.editor.ui.focusTracker.focusedElement)||(this._saveLastFocusedForeignElement(),e.isFocusBorderEnabled=!0,e.focus(),s())})}_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,o)=>{this._saveLastFocusedForeignElement();const s=this._getCurrentFocusedToolbarDefinition();(!s||!t)&&(t=this._getFocusableCandidateToolbarDefinitions());for(let a=0;a<t.length;a++){const l=t.shift();if(t.push(l),l!==s&&this._focusFocusableCandidateToolbar(l)){s&&s.options.afterBlur&&s.options.afterBlur();break}}o()}),e.keystrokes.set("Esc",(n,o)=>{const s=this._getCurrentFocusedToolbarDefinition();s&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):e.editing.view.focus(),s.options.afterBlur&&s.options.afterBlur(),o())})}_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:o}=t;(xt(n.element)||o.beforeFocus)&&e.push(t)}return e.sort((t,n)=>Cd(t)-Cd(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(),xt(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,o)=>{const s=this._getVisualViewportTopOffset(o);o.visualTop!==s&&(t.return={...o,visualTop:s})}),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(Pe()),this._domEmitter.listenTo(T.window.visualViewport,"scroll",e),this._domEmitter.listenTo(T.window.visualViewport,"resize",e)}_getVisualViewportTopOffset(e){const t=xr().top,n=e.top||0;return t>n?0:n-t}}function Cd(r){const{toolbarView:i,options:e}=r;let t=10;return xt(i.element)&&t--,e.isContextual&&(t-=2),t}class VC extends E{constructor(e){super(e);u(this,"body");u(this,"menuBarView");u(this,"toolbar");this.body=new zs(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class NC extends VC{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 $e;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class DC 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(o){e.change(s=>{const a=e.document.getRoot(o.name);s.addClass(o.isFocused?"ck-focused":"ck-blurred",a),s.removeClass(o.isFocused?"ck-blurred":"ck-focused",a)})}function n(o){e.once("change:isRenderingInProgress",(s,a,l)=>{l?n(o):t(o)})}}}class OC extends DC{constructor(e,t,n,o={}){super(e,t,n);u(this,"_options");this._options=o,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,o=this.name;if(typeof t=="string")return t;if(typeof t=="object")return t[o];if(typeof t=="function")return t(this);if(n){const s=n.getAttribute("aria-label");if(s)return s}return e("Rich Text Editor. Editing area: %0",o)}}class Te extends E{constructor(e,t={}){super(e);u(this,"children");const n=this.bindTemplate;this.set("class",["ck","ck-form__row",...Q(t.class||[])]),this.children=this.createCollection(),t.children&&t.children.forEach(o=>this.children.add(o)),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",o=>o.join(" ")),role:n.to("_role"),"aria-labelledby":n.to("_ariaLabelledBy")},children:this.children})}}class $a extends Z(){constructor(i,e){super(),e&&yh(this,e),i&&this.set(i)}}const mr=Hi("px");class Gt extends v{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,o=t.document.selection.editableElement;return o?t.domConverter.mapViewToDom(o.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 b("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 b("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 b("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}_createPanelView(){this._view=new xe(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 zC(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",(n,o)=>!o&&n>1),e.on("change:isNavigationVisible",()=>this.updatePosition(),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",(n,o)=>{if(o<2)return"";const s=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[s,o])}),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 FC(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:o=!1}){this.view.class=t,this.view.withArrow=n,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition(),o&&(this._singleViewMode=!0)}}class zC 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 ne,this.buttonPrevView=this._createButtonView(t("Previous"),qn),this.buttonNextView=this._createButtonView(t("Next"),Zm),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",o=>o?"":"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 P(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n}}class FC 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",o=>o?"":"ck-hidden")],style:{top:n.to("top",mr),left:n.to("left",mr),width:n.to("width",mr),height:n.to("height",mr)}},children:this.content}),this.on("change:numberOfPanels",(o,s,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:o}=new B(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:n,height:o})}}}const _i=Hi("px");class UC 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 Je({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",n=>n?"block":"none"),height:t.to("isSticky",n=>n?_i(this._contentPanelRect.height):null)}}}).render(),this.contentPanelElement=new Je({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?_i(this._contentPanelPlaceholder.getBoundingClientRect().width):null),top:t.to("_stickyTopOffset",n=>n&&_i(n)),bottom:t.to("_stickyBottomOffset",n=>n&&_i(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 B(this.limiterElement);let t=e.getVisible();if(t){const s=new B(T.window);s.top+=this.viewportTopOffset,s.height-=this.viewportTopOffset,t=t.getIntersection(s)}const{left:n,top:o}=xr();if(e.moveBy(n,o),t&&t.moveBy(n,o),t&&e.top<t.top)if(this._contentPanelRect.height+this.limiterBottomOffset>t.height){const s=Math.max(e.bottom-t.bottom,0)+this.limiterBottomOffset;this._contentPanelRect.height+s+1<e.height?this._stickToBottomOfLimiter(s):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=_i(-T.window.scrollX+xr().left)}_stickToBottomOfLimiter(e){this.isSticky=!0,this._isStickyToTheBottomOfLimiter=!0,this._stickyTopOffset=null,this._stickyBottomOffset=e,this._marginLeft=_i(-T.window.scrollX+xr().left)}_unstick(){this.isSticky=!1,this._isStickyToTheBottomOfLimiter=!1,this._stickyTopOffset=null,this._stickyBottomOffset=null,this._marginLeft=null}get _contentPanelRect(){return new B(this.contentPanelElement)}}class HC 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 pt;return e.content=Co,e.extendTemplate({attributes:{class:"ck-menu-bar__menu__button__arrow"}}),e}}class WC 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 fo=class fo 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 HC(e),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.panelView=new WC(e),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new ce,this.focusTracker=new ne,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),Mt.closeOnEscKey(this),this._repositionPanelOnOpen()}_attachBehaviors(){this.parentMenuView?(Mt.openOnButtonClick(this),Mt.openOnArrowRightKey(this),Mt.closeOnArrowLeftKey(this),Mt.openAndFocusOnEnterKeyPress(this),Mt.closeOnParentClose(this)):(this._propagateArrowKeystrokeEvents(),Mt.openAndFocusPanelOnArrowDownKey(this),Mt.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 o=fo._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=o?o.name:this._defaultMenuPositionName})}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:e,southWest:t,northEast:n,northWest:o,westSouth:s,eastSouth:a,westNorth:l,eastNorth:c}=CC;return this.locale.uiLanguageDirection==="ltr"?this.parentMenuView?[a,c,s,l]:[e,t,n,o]:this.parentMenuView?[s,l,a,c]:[t,e,o,n]}get _defaultMenuPositionName(){return this.locale.uiLanguageDirection==="ltr"?this.parentMenuView?"es":"se":this.parentMenuView?"ws":"sw"}};u(fo,"_getOptimalPosition",pa);let ft=fo;class zn extends Gi{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=Ld(e);return t&&t.isToggleable});this.items.forEach(e=>{const t=Ld(e);t&&(t.hasCheckSpace=i)})}}function Ld(r){return r instanceof at?r.children.map(i=>qC(i)?i.buttonView:i).find(i=>i instanceof ji):null}function qC(r){return typeof r=="object"&&"buttonView"in r&&r.buttonView instanceof P}class jC extends x1{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 Td=["mouseenter","arrowleft","arrowright","change:isOpen"];class GC 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 o=this.locale,a=EC({normalizedConfig:e,locale:o,componentFactory:t,extraItems:n}).items.map(l=>this._createMenu({componentFactory:t,menuDefinition:l}));this.children.addMany(a)}render(){super.render(),vi.toggleMenusAndFocusItemsOnHover(this),vi.closeMenusWhenTheBarCloses(this),vi.closeMenuWhenAnotherOnTheSameLevelOpens(this),vi.focusCycleMenusOnArrows(this),vi.closeOnClickOutside(this),vi.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(...Td).to(t),e.parentMenuView=t):e.delegate(...Td).to(this,n=>"menu:"+n),e._attachBehaviors(),this.menus.push(e)}_createMenu({componentFactory:e,menuDefinition:t,parentMenuView:n}){const o=this.locale,s=new ft(o);return this.registerMenu(s,n),s.buttonView.set({label:t.label}),s.once("change:isOpen",()=>{const a=new zn(o);a.ariaLabel=t.label,s.panelView.children.add(a),a.items.addMany(this._createMenuItems({menuDefinition:t,parentMenuView:s,componentFactory:e}))}),s}_createMenuItems({menuDefinition:e,parentMenuView:t,componentFactory:n}){const o=this.locale,s=[];for(const a of e.groups){for(const l of a.items){const c=new $n(o,t);if(rt(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)}s.push(c)}a!==e.groups[e.groups.length-1]&&s.push(new ja(o))}return s}_createMenuItemContentFromFactory({componentName:e,parentMenuView:t,componentFactory:n}){const o=n.create(e);return o instanceof ft||o instanceof ke||o instanceof jC?(this._registerMenuTree(o,t),o.on("execute",()=>{this.close()}),o):(W("menu-bar-component-unsupported",{componentName:e,componentView:o}),null)}_registerMenuTree(e,t){if(!(e instanceof ft)){e.delegate("mouseenter").to(t);return}this.registerMenu(e,t);const n=e.panelView.children.filter(s=>s instanceof zn)[0];if(!n){e.delegate("mouseenter").to(t);return}const o=n.items.filter(s=>s instanceof at);for(const s of o)this._registerMenuTree(s.children.get(0),e)}_setupIsOpenUpdater(){let e;this.on("menu:change:isOpen",(t,n,o)=>{clearTimeout(e),o?this.isOpen=!0:e=setTimeout(()=>{this.isOpen=Array.from(this.children).some(s=>s.isOpen)},0)})}}/**
|
|
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
|
+
*/const Za=["left","right","center","justify"];function Eg(r){return Za.includes(r)}function xg(r,i){return i.contentLanguageDirection=="rtl"?r==="right":r==="left"}function Sg(r){const i=r.map(t=>{let n;return typeof t=="string"?n={name:t}:n=t,n}).filter(t=>{const n=Za.includes(t.name);return n||W("alignment-config-name-not-recognized",{option:t}),n}),e=i.filter(t=>!!t.className).length;if(e&&e<i.length)throw new b("alignment-config-classnames-are-missing",{configuredOptions:r});return i.forEach((t,n,o)=>{const s=o.slice(n+1);if(s.some(l=>l.name==t.name))throw new b("alignment-config-name-already-defined",{option:t,configuredOptions:r});if(t.className&&s.some(c=>c.className==t.className))throw new b("alignment-config-classname-already-defined",{option:t,configuredOptions:r})}),i}const Ja="alignment";class KC extends M{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,o=n.document,s=i.value;n.change(a=>{const l=Array.from(o.selection.getSelectedBlocks()).filter(h=>this._canBeAligned(h)),c=l[0].getAttribute("alignment");xg(s,t)||c===s||!s?$C(l,a):ZC(l,a,s)})}_canBeAligned(i){return this.editor.model.schema.checkAttribute(i,Ja)}}function $C(r,i){for(const e of r)i.removeAttribute(Ja,e)}function ZC(r,i,e){for(const t of r)i.setAttribute(Ja,e,t)}class JC extends v{static get pluginName(){return"AlignmentEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("alignment",{options:Za.map(e=>({name:e}))})}init(){const i=this.editor,e=i.locale,t=i.model.schema,o=Sg(i.config.get("alignment.options")).filter(c=>Eg(c.name)&&!xg(c.name,e)),s=o.some(c=>!!c.className);t.extend("$block",{allowAttributes:"alignment"}),i.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),s?i.conversion.attributeToAttribute(eL(o)):i.conversion.for("downcast").attributeToAttribute(YC(o));const a=XC(o);for(const c of a)i.conversion.for("upcast").attributeToAttribute(c);const l=QC(o);for(const c of l)i.conversion.for("upcast").attributeToAttribute(c);i.commands.add("alignment",new KC(i))}}function YC(r){const i={};for(const{name:t}of r)i[t]={key:"style",value:{"text-align":t}};return{model:{key:"alignment",values:r.map(t=>t.name)},view:i}}function XC(r){const i=[];for(const{name:e}of r)i.push({view:{key:"style",value:{"text-align":e}},model:{key:"alignment",value:e}});return i}function QC(r){const i=[];for(const{name:e}of r)i.push({view:{key:"align",value:e},model:{key:"alignment",value:e}});return i}function eL(r){const i={};for(const t of r)i[t.name]={key:"class",value:t.className};return{model:{key:"alignment",values:r.map(t=>t.name)},view:i}}const nn=new Map([["left",Da],["right",Km],["center",jm],["justify",Gm]]);class tL extends v{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=Sg(i.config.get("alignment.options"));e.map(t=>t.name).filter(Eg).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,o=n.commands.get("alignment"),s=new P(i);return s.set({label:this.localizedOptionTitles[e],icon:nn.get(e),tooltip:!0,isToggleable:!0,...t}),s.bind("isEnabled").to(o),s.bind("isOn").to(o,"value",a=>a===e),this.listenTo(s,"execute",()=>{n.execute("alignment",{value:e}),n.editing.view.focus()}),s}_addToolbarDropdown(i){const e=this.editor;e.ui.componentFactory.add("alignment",n=>{const o=nt(n),s=n.uiLanguageDirection==="rtl"?"w":"e",a=n.t;Ga(o,()=>i.map(d=>this._createButton(n,d.name,{tooltipPosition:s})),{enableActiveItemFocusOnDropdownOpen:!0,isVertical:!0,ariaLabel:a("Text alignment toolbar")}),o.buttonView.set({label:a("Text alignment"),tooltip:!0}),o.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const l=n.contentLanguageDirection==="rtl"?nn.get("right"):nn.get("left"),c=e.commands.get("alignment");return o.buttonView.bind("icon").to(c,"value",d=>nn.get(d)||l),o.bind("isEnabled").to(c,"isEnabled"),this.listenTo(o,"execute",()=>{e.editing.view.focus()}),o})}_addMenuBarMenu(i){const e=this.editor;e.ui.componentFactory.add("menuBar:alignment",t=>{const n=e.commands.get("alignment"),o=t.t,s=new ft(t),a=new zn(t);s.bind("isEnabled").to(n),a.set({ariaLabel:o("Text alignment"),role:"menu"}),s.buttonView.set({label:o("Text alignment")});for(const l of i){const c=new $n(t,s),d=new ke(t);d.delegate("execute").to(s),d.set({label:this.localizedOptionTitles[l.name],icon:nn.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 s.panelView.children.add(a),s})}}class iL extends v{static get requires(){return[JC,tL]}static get pluginName(){return"Alignment"}static get isOfficialPlugin(){return!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
|
+
*//**
|
|
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
|
+
*/class Ag{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 nL extends M{constructor(e,t){super(e);u(this,"_buffer");this._buffer=new Ag(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,o=e.text||"",s=o.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),o&&t.insertContent(c.createText(o,d),a),l?c.setSelection(l):a.is("documentSelection")||c.setSelection(a),this._buffer.unlock(),this._buffer.input(s)})}}const Pg=["insertText","insertReplacementText"],rL=[...Pg,"insertCompositionText"];class oL extends bt{constructor(e){super(e);u(this,"focusObserver");this.focusObserver=e.getObserver(Kr);const t=A.isAndroid?rL:Pg,n=e.document;n.on("beforeinput",(o,s)=>{if(!this.isEnabled)return;const{data:a,targetRanges:l,inputType:c,domEvent:d,isComposing:h}=s;if(!t.includes(c))return;this.focusObserver.flush();const m=new Et(n,"insertText");n.fire(m,new ri(e,d,{text:a,selection:e.createSelection(l),isComposing:h})),m.stop.called&&o.stop()}),A.isAndroid||n.on("compositionend",(o,{data:s,domEvent:a})=>{this.isEnabled&&s&&n.fire("insertText",new ri(e,a,{text:s,isComposing:!0}))},{priority:"low"})}observe(){}stopObserving(){}}class Ig extends v{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,o=e.editing.mapper,s=t.document.selection;this._typingQueue=new sL(e),n.addObserver(oL);const a=new nL(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=>o.toModelRange(p)).map(p=>Ra(p,t.schema)||p):m=Array.from(s.getRanges());let g=d;if(A.isAndroid){const p=Array.from(m[0].getItems()).reduce((w,y)=>w+(y.is("$textProxy")?y.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")}),A.isAndroid?this.listenTo(n.document,"keydown",(l,c)=>{s.isCollapsed||c.keyCode!=229||!n.document.isComposing||Ed(t,a)}):this.listenTo(n.document,"compositionstart",()=>{s.isCollapsed||Ed(t,a)},{priority:"high"}),this.listenTo(n.document,"mutations",(l,{mutations:c})=>{if(this._typingQueue.hasAffectedElements())for(const{node:d}of c){const h=lL(d,o),m=o.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=o.toViewElement(c);d&&l.push({type:"children",node:d})}(l.length||!A.isAndroid)&&n.document.fire("mutations",{mutations:l})},{priority:"lowest"})}destroy(){super.destroy(),this._typingQueue.destroy()}}class sL{constructor(i){u(this,"editor");u(this,"flushDebounced",ot(()=>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(Ke.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=>aL(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 s=e.commands.get("insertText").buffer;t.enqueueChange(s.batch,()=>{for(s.lock();this._queue.length;){const a=this.shift();e.execute("insertText",a)}s.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 Ed(r,i){if(!i.isEnabled)return;const e=i.buffer;e.lock(),r.enqueueChange(e.batch,()=>{r.deleteContent(r.document.selection)}),e.unlock()}function aL(r){const i=r.toRange();return r.detach(),i.root.rootName=="$graveyard"?null:i}function lL(r,i){let e=r.is("$text")?r.parent:r;for(;!i.toModelElement(e);)e=e.parent;return e}class xd extends M{constructor(e,t){super(e);u(this,"direction");u(this,"_buffer");this.direction=t,this._buffer=new Ag(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,o=>{this._buffer.lock();const s=o.createSelection(e.selection||n.selection);if(!t.canEditAt(s))return;const a=e.sequence||1,l=s.isCollapsed;if(s.isCollapsed&&t.modifySelection(s,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(a)){this._replaceEntireContentWithParagraph(o);return}if(this._shouldReplaceFirstBlockWithParagraph(s,a)){this.editor.execute("paragraph",{selection:s});return}if(s.isCollapsed)return;let c=0;s.getFirstRange().getMinimalFlatRanges().forEach(d=>{c+=_s(d.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),t.deleteContent(s,{doNotResetEntireContent:l,direction:this.direction}),this._buffer.input(c),o.setSelection(s),this._buffer.unlock()})}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,o=t.document.selection,s=t.schema.getLimitElement(o);if(!(o.isCollapsed&&o.containsEntireContent(s))||!t.schema.checkChild(s,"paragraph"))return!1;const l=s.getChild(0);return!(l&&l.is("element","paragraph"))}_replaceEntireContentWithParagraph(e){const t=this.editor.model,o=t.document.selection,s=t.schema.getLimitElement(o),a=e.createElement("paragraph");e.remove(e.createRangeIn(s)),e.insert(a,s),e.setSelection(a,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const n=this.editor.model;if(t>1||this.direction!="backward"||!e.isCollapsed)return!1;const o=e.getFirstPosition(),s=n.schema.getLimitElement(o),a=s.getChild(0);return!(o.parent!=a||!e.containsEntireContent(a)||!n.schema.checkChild(s,"paragraph")||a.name=="paragraph")}}const cL="character",Sd="word",dL="codePoint",Dt="selection",Ai="backward",un="forward",Rg={deleteContent:{unit:Dt,direction:Ai},deleteContentBackward:{unit:dL,direction:Ai},deleteWordBackward:{unit:Sd,direction:Ai},deleteHardLineBackward:{unit:Dt,direction:Ai},deleteSoftLineBackward:{unit:Dt,direction:Ai},deleteContentForward:{unit:cL,direction:un},deleteWordForward:{unit:Sd,direction:un},deleteHardLineForward:{unit:Dt,direction:un},deleteSoftLineForward:{unit:Dt,direction:un}};class uL 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,o)=>{if(!this.isEnabled)return;const{targetRanges:s,domEvent:a,inputType:l}=o,c=Rg[l];if(!c)return;const d={direction:c.direction,unit:c.unit,sequence:t};d.unit==Dt&&(d.selectionToRemove=i.createSelection(s[0])),l==="deleteContentBackward"&&(A.isAndroid&&(d.sequence=1),mL(s)&&(d.unit=Dt,d.selectionToRemove=i.createSelection(s)));const h=new ci(e,"delete",s[0]);e.fire(h,new ri(i,a,d)),h.stop.called&&n.stop()}),A.isBlink&&hL(this)}observe(){}stopObserving(){}}function hL(r){const i=r.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=r.isEnabled&&l==t&&o(l)&&!d.isCollapsed&&!n;if(t=null,h){const m=d.getFirstRange(),g=new ci(e,"delete",m),f={unit:Dt,direction:s(l),selectionToRemove:d};e.fire(g,new ri(i,c,f))}}),e.on("beforeinput",(a,{inputType:l})=>{const c=Rg[l];o(t)&&c&&c.direction==s(t)&&(n=!0)},{priority:"high"}),e.on("beforeinput",(a,{inputType:l,data:c})=>{t==N.delete&&l=="insertText"&&c==""&&a.stop()},{priority:"high"});function o(a){return a==N.backspace||a==N.delete}function s(a){return a==N.backspace?Ai:un}}function mL(r){if(r.length!=1||r[0].isCollapsed)return!1;const i=r[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 o=t.parent.data,s=t.offset;if(_a(o,s)||Ca(o,s)||jh(o,s))continue;e++}else(n.is("containerElement")||n.is("emptyElement"))&&e++;if(e>1)return!0}return!1}class $i extends v{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,o=e.model.document;t.addObserver(uL),this._undoOnBackspace=!1;const s=new xd(e,"forward");e.commands.add("deleteForward",s),e.commands.add("forwardDelete",s),e.commands.add("delete",new xd(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(w=>e.editing.mapper.toModelRange(w)).map(w=>Ra(w,e.model.schema)||w);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!=N.backspace||!o.selection.isCollapsed)return;const c=e.model.schema.getLimitElement(o.selection),d=e.model.createPositionAt(c,0);if(d.isTouching(o.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 ci(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(o,"change",()=>{this._undoOnBackspace=!1}))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class gL extends v{static get requires(){return[Ig,$i]}static get pluginName(){return"Typing"}static get isOfficialPlugin(){return!0}}/**
|
|
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
|
+
*/function Mg(r,i){let e=r.start;return{text:Array.from(r.getWalker({ignoreElementEnd:!1})).reduce((n,{item:o})=>o.is("$text")||o.is("$textProxy")?n+o.data:(e=i.createPositionAfter(o),""),""),range:i.createRange(e,r.end)}}class fL extends Z(){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:o})=>{if(o){if(!t.selection.isCollapsed){this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1);return}this._evaluateTextBeforeSelection("selection")}}),this.listenTo(t,"change:data",(n,o)=>{o.isUndo||!o.isLocal||this._evaluateTextBeforeSelection("data",{batch:o})})}_evaluateTextBeforeSelection(e,t={}){const n=this.model,s=n.document.selection,a=n.createRange(n.createPositionAt(s.focus.parent,0),s.focus),{text:l,range:c}=Mg(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 Ad extends v{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,o=e.locale,s=t.document.selection;this.listenTo(n.document,"arrowKey",(a,l)=>{if(!s.isCollapsed||l.shiftKey||l.altKey||l.ctrlKey)return;const c=l.keyCode==N.arrowright,d=l.keyCode==N.arrowleft;if(!c&&!d)return;const h=o.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(s,"change:range",(a,l)=>{if(this._isNextGravityRestorationSkipped){this._isNextGravityRestorationSkipped=!1;return}this._isGravityOverridden&&(!l.directChange&&je(s.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,o=n.document.selection,s=o.getFirstPosition();return this._isGravityOverridden||s.isAtStart&&kt(o,t)?!1:je(s,t)?(e&&on(e),kt(o,t)&&je(s,t,!0)?rn(n,t):this._overrideGravity(),!0):!1}_handleBackwardMovement(e){const t=this.attributes,n=this.editor.model,o=n.document.selection,s=o.getFirstPosition();return this._isGravityOverridden?(e&&on(e),this._restoreGravity(),je(s,t,!0)?rn(n,t):gr(n,t,s),!0):s.isAtStart?kt(o,t)?(e&&on(e),gr(n,t,s),!0):!1:!kt(o,t)&&je(s,t,!0)?(e&&on(e),gr(n,t,s),!0):Pd(s,t)?s.isAtEnd&&!kt(o,t)&&je(s,t)?(e&&on(e),gr(n,t,s),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):!1}_enableClickingAfterNode(){const e=this.editor,t=e.model,n=t.document.selection,o=e.editing.view.document;e.editing.view.addObserver(Ba),e.editing.view.addObserver(Xv);let s=!1,a=!1;this.listenTo(o,"touchstart",()=>{a=!1,s=!0}),this.listenTo(o,"mousedown",()=>{a=!0}),this.listenTo(o,"selectionChange",()=>{const l=this.attributes;if(!a&&!s||(a=!1,s=!1,!n.isCollapsed)||!kt(n,l))return;const c=n.getFirstPosition();je(c,l)&&(c.isAtStart||je(c,l,!0)?rn(t,l):this._isGravityOverridden||this._overrideGravity())})}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,n=t.document.selection,o=this.attributes;this.listenTo(t,"insertContent",()=>{const s=n.getFirstPosition();kt(n,o)&&je(s,o)&&rn(t,o)},{priority:"low"})}_handleDeleteContentAfterNode(){const e=this.editor,t=e.model,n=t.document.selection,o=e.editing.view;let s=!1,a=!1;this.listenTo(o.document,"delete",(l,c)=>{s=c.direction==="backward"},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{if(!s)return;const l=n.getFirstPosition();a=kt(n,this.attributes)&&!Pd(l,this.attributes)},{priority:"high"}),this.listenTo(t,"deleteContent",()=>{s&&(s=!1,!a&&e.model.enqueueChange(()=>{const l=n.getFirstPosition();kt(n,this.attributes)&&je(l,this.attributes)&&(l.isAtStart||je(l,this.attributes,!0)?rn(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(r,i){for(const e of i)if(r.hasAttribute(e))return!0;return!1}function gr(r,i,e){const t=e.nodeBefore;r.change(n=>{if(t){const o=[],s=r.schema.isObject(t)&&r.schema.isInline(t);for(const[a,l]of t.getAttributes())r.schema.checkAttribute("$text",a)&&(!s||r.schema.getAttributeProperties(a).copyFromObject!==!1)&&o.push([a,l]);n.setSelectionAttribute(o)}else n.removeSelectionAttribute(i)})}function rn(r,i){r.change(e=>{e.removeSelectionAttribute(i)})}function on(r){r.preventDefault()}function Pd(r,i){const e=r.getShiftedBy(-1);return je(e,i)}function je(r,i,e=!1){const{nodeBefore:t,nodeAfter:n}=r;for(const o of i){const s=t?t.getAttribute(o):void 0,a=n?n.getAttribute(o):void 0;if(!(e&&(s===void 0||a===void 0))&&a!==s)return!0}return!1}/**
|
|
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 Eo(r,i,e,t){return t.createRange(Id(r,i,e,!0,t),Id(r,i,e,!1,t))}function Id(r,i,e,t,n){let o=r.textNode||(t?r.nodeBefore:r.nodeAfter),s=null;for(;o&&o.getAttribute(i)==e;)s=o,o=t?o.previousSibling:o.nextSibling;return s?n.createPositionAt(s,t?"before":"after"):r}function pL(r,i,e,t){const n=r.editing.view,o=new Set;n.document.registerPostFixer(s=>{const a=r.model.document.selection;let l=!1;if(a.hasAttribute(i)){const c=Eo(a.getFirstPosition(),i,a.getAttribute(i),r.model),d=r.editing.mapper.toViewRange(c);for(const h of d.getItems())h.is("element",e)&&!h.hasClass(t)&&(s.addClass(t,h),o.add(h),l=!0)}return l}),r.conversion.for("editingDowncast").add(s=>{s.on("insert",a,{priority:"highest"}),s.on("remove",a,{priority:"highest"}),s.on("attribute",a,{priority:"highest"}),s.on("selection",a,{priority:"highest"});function a(){n.change(l=>{for(const c of o.values())l.removeClass(t,c),o.delete(c)})}})}/**
|
|
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
|
+
*/class bL extends v{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=ot(this._save.bind(this),n),this._lastDocumentVersion=e.model.document.version,this._savePromise=null,this._domEmitter=new(Pe()),this._config=t,this._pendingActions=e.plugins.get(Jr),this._makeImmediateSave=!1}static get pluginName(){return"Autosave"}static get isOfficialPlugin(){return!0}static get requires(){return[Jr]}init(){const e=this.editor,t=e.model.document;this.listenTo(e,"ready",()=>{this.listenTo(t,"change:data",(n,o)=>{this._saveCallbacks.length&&o.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,o)=>{this._pendingActions.hasAny&&(o.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}}/**
|
|
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 Ya extends M{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,o=t.document.selection,s=e.forceValue===void 0?!this.value:e.forceValue;t.change(a=>{if(o.isCollapsed)s?a.setSelectionAttribute(this.attributeKey,!0):a.removeSelectionAttribute(this.attributeKey);else{const l=t.schema.getValidRanges(o.getRanges(),this.attributeKey);for(const c of l)s?a.setAttribute(this.attributeKey,s,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 o of n.getRanges())for(const s of o.getItems())if(t.checkAttribute(s,this.attributeKey))return s.hasAttribute(this.attributeKey);return!1}}const Ci="bold";class wL extends v{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:Ci}),i.model.schema.setAttributeProperties(Ci,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:Ci,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(Ci,new Ya(i,Ci)),i.keystrokes.set("CTRL+B",Ci),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Bold text"),keystroke:"CTRL+B"}]})}}function Xa({editor:r,commandName:i,plugin:e,icon:t,label:n,keystroke:o}){return s=>{const a=r.commands.get(i),l=new s(r.locale);return l.set({label:n,icon:t,keystroke:o,isToggleable:!0}),l.bind("isEnabled").to(a,"isEnabled"),l.bind("isOn").to(a,"value"),l instanceof ke?l.set({role:"menuitemcheckbox"}):l.set({tooltip:!0}),e.listenTo(l,"execute",()=>{r.execute(i),r.editing.view.focus()}),l}}const cs="bold";class kL extends v{static get pluginName(){return"BoldUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=Xa({editor:i,commandName:cs,plugin:this,icon:$m,label:e("Bold"),keystroke:"CTRL+B"});i.ui.componentFactory.add(cs,()=>t(P)),i.ui.componentFactory.add("menuBar:"+cs,()=>t(ke))}}class yL extends v{static get requires(){return[wL,kL]}static get pluginName(){return"Bold"}static get isOfficialPlugin(){return!0}}const Li="italic";class vL extends v{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:Li}),i.model.schema.setAttributeProperties(Li,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:Li,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),i.commands.add(Li,new Ya(i,Li)),i.keystrokes.set("CTRL+I",Li),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Italic text"),keystroke:"CTRL+I"}]})}}const ds="italic";class _L extends v{static get pluginName(){return"ItalicUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=Xa({editor:i,commandName:ds,plugin:this,icon:s0,keystroke:"CTRL+I",label:e("Italic")});i.ui.componentFactory.add(ds,()=>t(P)),i.ui.componentFactory.add("menuBar:"+ds,()=>t(ke))}}class CL extends v{static get requires(){return[vL,_L]}static get pluginName(){return"Italic"}static get isOfficialPlugin(){return!0}}const sn="underline";class LL extends v{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:sn}),i.model.schema.setAttributeProperties(sn,{isFormatting:!0,copyOnEnter:!0}),i.conversion.attributeToElement({model:sn,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),i.commands.add(sn,new Ya(i,sn)),i.keystrokes.set("CTRL+U","underline"),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Underline text"),keystroke:"CTRL+U"}]})}}const us="underline";class TL extends v{static get pluginName(){return"UnderlineUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=Xa({editor:i,commandName:us,plugin:this,icon:O0,label:e("Underline"),keystroke:"CTRL+U"});i.ui.componentFactory.add(us,()=>t(P)),i.ui.componentFactory.add("menuBar:"+us,()=>t(ke))}}class EL extends v{static get requires(){return[LL,TL]}static get pluginName(){return"Underline"}static get isOfficialPlugin(){return!0}}/**
|
|
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
|
+
*//**
|
|
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
|
+
*/function*Bg(r,i){for(const e of i)e&&r.getAttributeProperties(e[0]).copyOnEnter&&(yield e)}class xL extends M{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,o=t.isCollapsed,s=t.getFirstRange(),a=s.start.parent,l=s.end.parent;if(n.isLimit(a)||n.isLimit(l))return!o&&a==l&&e.deleteContent(t),!1;if(o){const c=Bg(i.model.schema,t.getAttributes());return Rd(i,s.start),i.setSelectionAttribute(c),!0}else{const c=!(s.start.isAtStart&&s.end.isAtEnd),d=a==l;if(e.deleteContent(t,{leaveUnmerged:c}),c){if(d)return Rd(i,t.focus),!0;i.setSelection(l,0)}}return!1}}function Rd(r,i){r.split(i),r.setSelection(i.parent.nextSibling,0)}const SL={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class Vg extends bt{constructor(i){super(i);const e=this.document;let t=!1;e.on("keydown",(n,o)=>{t=o.shiftKey}),e.on("beforeinput",(n,o)=>{if(!this.isEnabled)return;let s=o.inputType;A.isSafari&&t&&s=="insertParagraph"&&(s="insertLineBreak");const a=o.domEvent,l=SL[s];if(!l)return;const c=new ci(e,"enter",o.targetRanges[0]);e.fire(c,new ri(i,a,{isSoft:l.isSoft})),c.stop.called&&n.stop()})}observe(){}stopObserving(){}}class xo extends v{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(Vg),i.commands.add("enter",new xL(i)),this.listenTo(t,"enter",(o,s)=>{t.isComposing||s.preventDefault(),!s.isSoft&&(i.execute("enter"),e.scrollToTheSelection())},{priority:"low"}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:n("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class AL extends M{execute(){const i=this.editor.model,e=i.document;i.change(t=>{IL(i,t,e.selection),this.fire("afterExecute",{writer:t})})}refresh(){const i=this.editor.model,e=i.document;this.isEnabled=PL(i.schema,e.selection)}}function PL(r,i){if(i.rangeCount>1)return!1;const e=i.anchor;if(!e||!r.checkChild(e,"softBreak"))return!1;const t=i.getFirstRange(),n=t.start.parent,o=t.end.parent;return!((Hs(n,r)||Hs(o,r))&&n!==o)}function IL(r,i,e){const t=e.isCollapsed,n=e.getFirstRange(),o=n.start.parent,s=n.end.parent,a=o==s;if(t){const l=Bg(r.schema,e.getAttributes());Md(r,i,n.end),i.removeSelectionAttribute(e.getAttributeKeys()),i.setSelectionAttribute(l)}else{const l=!(n.start.isAtStart&&n.end.isAtEnd);r.deleteContent(e,{leaveUnmerged:l}),a?Md(r,i,e.focus):l&&i.setSelection(s,0)}}function Md(r,i,e){const t=i.createElement("softBreak");r.insertContent(t,e),i.setSelection(t,"after")}function Hs(r,i){return r.is("rootElement")?!1:i.isLimit(r)||Hs(r.parent,i)}class RL extends v{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,o=n.document,s=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(Vg),i.commands.add("shiftEnter",new AL(i)),this.listenTo(o,"enter",(a,l)=>{o.isComposing||l.preventDefault(),l.isSoft&&(i.execute("shiftEnter"),n.scrollToTheSelection())},{priority:"low"}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:s("Insert a soft break (a <code><br></code> element)"),keystroke:"Shift+Enter"}]})}}/**
|
|
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
|
+
*/class ML extends M{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(i={}){const e=this.editor.model,t=e.schema,n=e.document.selection,o=Array.from(n.getSelectedBlocks()),s=i.forceValue===void 0?!this.value:i.forceValue;e.change(a=>{if(!s)this._removeQuote(a,o.filter(fr));else{const l=o.filter(c=>fr(c)||Vd(t,c));this._applyQuote(a,l)}})}_getValue(){const i=this.editor.model.document.selection,e=ue(i.getSelectedBlocks());return!!(e&&fr(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?Vd(e,t):!1}_removeQuote(i,e){Bd(i,e).reverse().forEach(t=>{if(t.start.isAtStart&&t.end.isAtEnd){i.unwrap(t.start.parent);return}if(t.start.isAtStart){const o=i.createPositionBefore(t.start.parent);i.move(t,o);return}t.end.isAtEnd||i.split(t.end);const n=i.createPositionAfter(t.end.parent);i.move(t,n)})}_applyQuote(i,e){const t=[];Bd(i,e).reverse().forEach(n=>{let o=fr(n.start);o||(o=i.createElement("blockQuote"),i.wrap(n,o)),t.push(o)}),t.reverse().reduce((n,o)=>n.nextSibling==o?(i.merge(i.createPositionAfter(n)),n):o)}}function fr(r){return r.parent.name=="blockQuote"?r.parent:null}function Bd(r,i){let e,t=0;const n=[];for(;t<i.length;){const o=i[t],s=i[t+1];e||(e=r.createPositionBefore(o)),(!s||o.nextSibling!=s)&&(n.push(r.createRange(e,r.createPositionAfter(o))),e=null),t++}return n}function Vd(r,i){const e=r.checkChild(i.parent,"blockQuote"),t=r.checkChild(["$root","blockQuote"],i);return e&&t}class BL extends v{static get pluginName(){return"BlockQuoteEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[xo,$i]}init(){const i=this.editor,e=i.model.schema;i.commands.add("blockQuote",new ML(i)),e.register("blockQuote",{inheritAllFrom:"$container"}),i.conversion.elementToElement({model:"blockQuote",view:"blockquote"}),i.model.document.registerPostFixer(s=>{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 s.remove(c),!0;if(c.is("element","blockQuote")&&!e.checkChild(l.position,c))return s.unwrap(c),!0;if(c.is("element")){const d=s.createRangeIn(c);for(const h of d.getItems())if(h.is("element","blockQuote")&&!e.checkChild(s.createPositionBefore(h),h))return s.unwrap(h),!0}}else if(l.type=="remove"){const c=l.position.parent;if(c.is("element","blockQuote")&&c.isEmpty)return s.remove(c),!0}return!1});const t=this.editor.editing.view.document,n=i.model.document.selection,o=i.commands.get("blockQuote");this.listenTo(t,"enter",(s,a)=>{if(!n.isCollapsed||!o.value)return;n.getLastPosition().parent.isEmpty&&(i.execute("blockQuote"),i.editing.view.scrollToTheSelection(),a.preventDefault(),s.stop())},{context:"blockquote"}),this.listenTo(t,"delete",(s,a)=>{if(a.direction!="backward"||!n.isCollapsed||!o.value)return;const l=n.getLastPosition().parent;l.isEmpty&&!l.previousSibling&&(i.execute("blockQuote"),i.editing.view.scrollToTheSelection(),a.preventDefault(),s.stop())},{context:"blockquote"})}}class VL extends v{static get pluginName(){return"BlockQuoteUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("blockQuote",()=>{const e=this._createButton(P);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:blockQuote",()=>{const e=this._createButton(ke);return e.set({role:"menuitemcheckbox"}),e})}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("blockQuote"),o=new i(e.locale),s=t.t;return o.set({label:s("Block quote"),icon:T0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value"),this.listenTo(o,"execute",()=>{e.execute("blockQuote"),e.editing.view.focus()}),o}}class NL extends v{static get requires(){return[BL,VL]}static get pluginName(){return"BlockQuote"}static get isOfficialPlugin(){return!0}}/**
|
|
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 DL extends j(){constructor(){super(...arguments);u(this,"_stack",[])}add(e,t){const n=this._stack,o=n[0];this._insertDescriptor(e);const s=n[0];o!==s&&!hs(o,s)&&this.fire("change:top",{oldDescriptor:o,newDescriptor:s,writer:t})}remove(e,t){const n=this._stack,o=n[0];this._removeDescriptor(e);const s=n[0];o!==s&&!hs(o,s)&&this.fire("change:top",{oldDescriptor:o,newDescriptor:s,writer:t})}_insertDescriptor(e){const t=this._stack,n=t.findIndex(s=>s.id===e.id);if(hs(e,t[n]))return;n>-1&&t.splice(n,1);let o=0;for(;t[o]&&OL(t[o],e);)o++;t.splice(o,0,e)}_removeDescriptor(e){const t=this._stack,n=t.findIndex(o=>o.id===e);n>-1&&t.splice(n,1)}}function hs(r,i){return r&&i&&r.priority==i.priority&&to(r.classes)==to(i.classes)}function OL(r,i){return r.priority>i.priority?!0:r.priority<i.priority?!1:to(r.classes)>to(i.classes)}function to(r){return Array.isArray(r)?r.sort().join(","):r}const zL="ck-widget",Nd="ck-widget_selected";function ae(r){return r.is("element")?!!r.getCustomProperty("widget"):!1}function Qa(r,i,e={}){if(!r.is("containerElement"))throw new b("widget-to-widget-wrong-element-type",null,{element:r});return i.setAttribute("contenteditable","false",r),i.addClass(zL,r),i.setCustomProperty("widget",!0,r),r.getFillerOffset=qL,i.setCustomProperty("widgetLabel",[],r),e.label&&HL(r,e.label),e.hasSelectionHandle&&jL(r,i),Ng(r,i),r}function FL(r,i,e){if(i.classes&&e.addClass(Q(i.classes),r),i.attributes)for(const t in i.attributes)e.setAttribute(t,i.attributes[t],r)}function UL(r,i,e){if(i.classes&&e.removeClass(Q(i.classes),r),i.attributes)for(const t in i.attributes)e.removeAttribute(t,r)}function Ng(r,i,e=FL,t=UL){const n=new DL;n.on("change:top",(a,l)=>{l.oldDescriptor&&t(r,l.oldDescriptor,l.writer),l.newDescriptor&&e(r,l.newDescriptor,l.writer)});const o=(a,l,c)=>n.add(l,c),s=(a,l,c)=>n.remove(l,c);i.setCustomProperty("addHighlight",o,r),i.setCustomProperty("removeHighlight",s,r)}function HL(r,i){r.getCustomProperty("widgetLabel").push(i)}function WL(r){return r.getCustomProperty("widgetLabel").reduce((e,t)=>typeof t=="function"?e?e+". "+t():t():e?e+". "+t:t,"")}function Dg(r,i,e={}){return i.addClass(["ck-editor__editable","ck-editor__nested-editable"],r),e.withAriaRole!==!1&&i.setAttribute("role","textbox",r),i.setAttribute("tabindex","-1",r),e.label&&i.setAttribute("aria-label",e.label,r),i.setAttribute("contenteditable",r.isReadOnly?"false":"true",r),r.on("change:isReadOnly",(t,n,o)=>{i.setAttribute("contenteditable",o?"false":"true",r)}),r.on("change:isFocused",(t,n,o)=>{o?i.addClass("ck-editor__nested-editable_focused",r):i.removeClass("ck-editor__nested-editable_focused",r)}),Ng(r,i),r}function Og(r,i){const e=r.getSelectedElement();if(e){const t=Nt(r);if(t)return i.createRange(i.createPositionAt(e,t))}return i.schema.findOptimalInsertionRange(r)}function qL(){return null}function jL(r,i){const e=i.createUIElement("div",{class:"ck ck-widget__selection-handle"},function(t){const n=this.toDomElement(t),o=new pt;return o.set("content",Q_),o.render(),n.appendChild(o.element),n});i.insert(i.createPositionAt(r,0),e),i.addClass(["ck-widget_with-selection-handle"],r)}const vt="widget-type-around";function Xt(r,i,e){return!!r&&ae(r)&&!e.isInline(i)}function GL(r){return r.closest(".ck-widget__type-around__button")}function KL(r){return r.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function $L(r,i){const e=r.closest(".ck-widget");return i.mapDomToView(e)}function Nt(r){return r.getAttribute(vt)}const zg=["before","after"],ZL=new DOMParser().parseFromString(E0,"image/svg+xml").firstChild,Dd="ck-widget__type-around_disabled";class JL extends v{constructor(){super(...arguments);u(this,"_currentFakeCaretModelElement",null)}static get pluginName(){return"WidgetTypeAround"}static get isOfficialPlugin(){return!0}static get requires(){return[xo,$i]}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",(n,o,s)=>{t.change(a=>{for(const l of t.document.roots)s?a.removeClass(Dd,l):a.addClass(Dd,l)}),s||e.model.change(a=>{a.removeSelectionAttribute(vt)})}),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,o=n.editing.view,s=n.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(e,t),attributes:s}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(e,t,n,o){this.listenTo(e,t,(...s)=>{this.isEnabled&&n(...s)},o)}_insertParagraphAccordingToFakeCaretPosition(){const n=this.editor.model.document.selection,o=Nt(n);if(!o)return!1;const s=n.getSelectedElement();return this._insertParagraph(s,o),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,n=e.locale.t,o={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",(s,a,l)=>{const c=l.mapper.toViewElement(a.item);c&&Xt(c,a.item,t)&&(YL(l.writer,o,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,o=t.schema,s=e.editing.view;this._listenToIfEnabled(s.document,"arrowKey",(l,c)=>{this._handleArrowKeyPress(l,c)},{context:[ae,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",(l,c)=>{c.directChange&&e.model.change(d=>{d.removeSelectionAttribute(vt)})}),this._listenToIfEnabled(t.document,"change:data",()=>{const l=n.getSelectedElement();if(l){const c=e.editing.mapper.toViewElement(l);if(Xt(c,l,o))return}e.model.change(c=>{c.removeSelectionAttribute(vt)})}),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(zg.map(a),p),this._currentFakeCaretModelElement=null)}const m=c.selection.getSelectedElement();if(!m)return;const g=d.mapper.toViewElement(m);if(!Xt(g,m,o))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(vt)})});function a(l){return`ck-widget_type-around_show-fake-caret_${l}`}}_handleArrowKeyPress(e,t){const n=this.editor,o=n.model,s=o.document.selection,a=o.schema,l=n.editing.view,c=t.keyCode,d=ew(c,n.locale.contentLanguageDirection),h=l.document.selection.getSelectedElement(),m=n.editing.mapper.toModelElement(h);let g;Xt(h,m,a)?g=this._handleArrowKeyPressOnSelectedWidget(d):s.isCollapsed?g=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(g=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),g&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const n=this.editor.model,o=n.document.selection,s=Nt(o);return n.change(a=>{if(s){if(!(s===(e?"after":"before")))return a.removeSelectionAttribute(vt),!0}else return a.setSelectionAttribute(vt,e?"after":"before"),!0;return!1})}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,n=t.model,o=n.schema,s=t.plugins.get("Widget"),a=s._getObjectElementNextToSelection(e),l=t.editing.mapper.toViewElement(a);return Xt(l,a,o)?(n.change(c=>{s._setSelectionOverElement(a),c.setSelectionAttribute(vt,e?"before":"after")}),!0):!1}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,n=t.model,o=n.schema,s=t.editing.mapper,a=n.document.selection,l=e?a.getLastPosition().nodeBefore:a.getFirstPosition().nodeAfter,c=s.toViewElement(l);return Xt(c,l,o)?(n.change(d=>{d.setSelection(l,"on"),d.setSelectionAttribute(vt,e?"after":"before")}),!0):!1}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",(n,o)=>{const s=GL(o.domTarget);if(!s)return;const a=KL(s),l=$L(s,t.domConverter),c=e.editing.mapper.toModelElement(l);this._insertParagraph(c,a),o.preventDefault(),n.stop()})}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,n=e.editing.view;this._listenToIfEnabled(n.document,"enter",(o,s)=>{if(o.eventPhase!="atTarget")return;const a=t.getSelectedElement(),l=e.editing.mapper.toViewElement(a),c=e.model.schema;let d;this._insertParagraphAccordingToFakeCaretPosition()?d=!0:Xt(l,a,c)&&(this._insertParagraph(a,s.isSoft?"before":"after"),d=!0),d&&(s.preventDefault(),o.stop())},{context:ae})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",(n,o)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(o.selection=t.selection)},{priority:"high"}),A.isAndroid?this._listenToIfEnabled(t,"keydown",(n,o)=>{o.keyCode==229&&this._insertParagraphAccordingToFakeCaretPosition()}):this._listenToIfEnabled(t,"compositionstart",()=>{this._insertParagraphAccordingToFakeCaretPosition()},{priority:"highest"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,n=e.model,o=n.schema;this._listenToIfEnabled(t.document,"delete",(s,a)=>{if(s.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=o.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(w=>{w.setSelection(f),e.execute(m?"deleteForward":"delete")});else{const w=eT(o,f.start.parent);n.deleteContent(n.createSelection(w,"on"),{doNotAutoparagraph:!0})}}}a.preventDefault(),s.stop()},{context:ae})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,n=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",(o,[s,a])=>{if(a&&!a.is("documentSelection"))return;const l=Nt(n);if(l)return o.stop(),t.change(c=>{const d=n.getSelectedElement(),h=t.createPositionAt(d,l),m=c.createSelection(h),g=t.insertContent(s,m);return c.setSelection(m),g})},{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,n=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",(o,s)=>{const[,a,l={}]=s;if(a&&!a.is("documentSelection"))return;const c=Nt(n);c&&(l.findOptimalPosition=c,s[3]=l)},{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,n=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",(o,[s])=>{if(s&&!s.is("documentSelection"))return;Nt(n)&&o.stop()},{priority:"high"})}}function YL(r,i,e){const t=r.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},function(n){const o=this.toDomElement(n);return XL(o,i),QL(o),o});r.insert(r.createPositionAt(e,"end"),t)}function XL(r,i){for(const e of zg){const t=new Je({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${e}`],title:i[e],"aria-hidden":"true"},children:[r.ownerDocument.importNode(ZL,!0)]});r.appendChild(t.render())}}function QL(r){const i=new Je({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});r.appendChild(i.render())}function eT(r,i){let e=i;for(const t of i.getAncestors({parentFirst:!0})){if(t.childCount>1||r.isLimit(t))break;e=t}return e}function tT(r){const i=r.model;return(e,t)=>{const n=t.keyCode==N.arrowup,o=t.keyCode==N.arrowdown,s=t.shiftKey,a=i.document.selection;if(!n&&!o)return;const l=o;if(s&&rT(a,l))return;const c=iT(r,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(s)return}(c.isCollapsed||nT(r,c,l))&&(i.change(d=>{const h=l?c.end:c.start;if(s){const m=i.createSelection(a.anchor);m.setFocus(h),d.setSelection(m)}else d.setSelection(h)}),e.stop(),t.preventDefault(),t.stopPropagation())}}}function iT(r,i,e){const t=r.model;if(e){const n=i.isCollapsed?i.focus:i.getLastPosition(),o=Od(t,n,"forward");if(!o)return null;const s=t.createRange(n,o),a=zd(t.schema,s,"backward");return a?t.createRange(n,a):null}else{const n=i.isCollapsed?i.focus:i.getFirstPosition(),o=Od(t,n,"backward");if(!o)return null;const s=t.createRange(o,n),a=zd(t.schema,s,"forward");return a?t.createRange(a,n):null}}function Od(r,i,e){const t=r.schema,n=r.createRangeIn(i.root),o=e=="forward"?"elementStart":"elementEnd";for(const{previousPosition:s,item:a,type:l}of n.getWalker({startPosition:i,direction:e})){if(t.isLimit(a)&&!t.isInline(a))return s;if(l==o&&t.isBlock(a))return null}return null}function zd(r,i,e){const t=e=="backward"?i.end:i.start;if(r.checkChild(t,"$text"))return t;for(const{nextPosition:n}of i.getWalker({direction:e}))if(r.checkChild(n,"$text"))return n;return null}function nT(r,i,e){const t=r.model,n=r.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 o=r.mapper.toViewRange(i),s=n.viewRangeToDom(o),a=B.getDomRangeRects(s);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 rT(r,i){return!r.isCollapsed&&r.isBackward==i}class Zn extends v{constructor(){super(...arguments);u(this,"_previouslySelected",new Set)}static get pluginName(){return"Widget"}static get isOfficialPlugin(){return!0}static get requires(){return[JL,$i]}init(){const e=this.editor,t=e.editing.view,n=t.document,o=e.t;this.editor.editing.downcastDispatcher.on("selection",(s,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);ae(m)&&l.consumable.consume(d,"selection")&&c.setSelection(c.createRangeOn(m),{fake:!0,label:WL(m)})}),this.editor.editing.downcastDispatcher.on("selection",(s,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;ae(f)&&!aT(f,h)&&(c.addClass(Nd,f),this._previouslySelected.add(f),h=f)}},{priority:"low"}),t.addObserver(Ba),this.listenTo(n,"mousedown",(...s)=>this._onMousedown(...s)),this.listenTo(n,"arrowKey",(...s)=>{this._handleSelectionChangeOnArrowKeyPress(...s)},{context:[ae,"$text"]}),this.listenTo(n,"arrowKey",(...s)=>{this._preventDefaultOnArrowKeyPress(...s)},{context:"$root"}),this.listenTo(n,"arrowKey",tT(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",(s,a)=>{this._handleDelete(a.direction=="forward")&&(a.preventDefault(),s.stop())},{context:"$root"}),this.listenTo(n,"tab",(s,a)=>{s.eventPhase=="atTarget"&&(a.shiftKey||this._selectFirstNestedEditable()&&(a.preventDefault(),s.stop()))},{context:ae,priority:"low"}),this.listenTo(n,"tab",(s,a)=>{a.shiftKey&&this._selectAncestorWidget()&&(a.preventDefault(),s.stop())},{priority:"low"}),this.listenTo(n,"keydown",(s,a)=>{a.keystroke==N.esc&&this._selectAncestorWidget()&&(a.preventDefault(),s.stop())},{priority:"low"}),e.accessibility.addKeystrokeInfoGroup({id:"widget",label:o("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:o("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:o("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:o("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:o("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:o("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(e,t){const n=this.editor,o=n.editing.view,s=o.document;let a=t.target;if(!a)return;if(t.domEvent.detail>=3){this._selectBlockContent(a)&&t.preventDefault();return}if(!ae(a)){const c=oT(a);if(!c)return;if(ae(c))a=c;else{const d=sT(o,t);if(d&&ae(d))a=d;else return}}A.isAndroid&&t.preventDefault(),s.isFocused||o.focus();const l=n.editing.mapper.toModelElement(a);this._setSelectionOverElement(l)}_selectBlockContent(e){const t=this.editor,n=t.model,o=t.editing.mapper,s=n.schema,a=o.findMappedViewAncestor(this.editor.editing.view.createPositionAt(e,0)),l=lT(o.toModelElement(a),n.schema);return l?(n.change(c=>{const d=s.isLimit(l)?null:cT(c.createPositionAfter(l),s),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,o=this.editor.model,s=o.schema,a=o.document.selection,l=a.getSelectedElement(),c=ka(n,this.editor.locale.contentLanguageDirection),d=c=="down"||c=="right",h=c=="up"||c=="down";if(l&&s.isObject(l)){const g=d?a.getLastPosition():a.getFirstPosition(),f=s.getNearestSelectionRange(g,d?"forward":"backward");f&&(o.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,w=f.nodeBefore;(p&&s.isObject(p)||w&&s.isObject(w))&&(o.change(y=>{y.setSelection(d?f:g)}),t.preventDefault(),e.stop());return}if(!a.isCollapsed)return;const m=this._getObjectElementNextToSelection(d);if(m&&s.isObject(m)){if(s.isInline(m)&&h)return;this._setSelectionOverElement(m),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const n=this.editor.model,o=n.schema,s=n.document.selection.getSelectedElement();s&&o.isObject(s)&&(t.preventDefault(),e.stop())}_handleDelete(e){const n=this.editor.model.document.selection;if(!this.editor.model.canEditAt(n)||!n.isCollapsed)return;const o=this._getObjectElementNextToSelection(e);if(o)return this.editor.model.change(s=>{let a=n.anchor.parent;for(;a.isEmpty;){const l=a;a=l.parent,s.remove(l)}this._setSelectionOverElement(o)}),!0}_setSelectionOverElement(e){this.editor.model.change(t=>{t.setSelection(t.createRangeOn(e))})}_getObjectElementNextToSelection(e){const t=this.editor.model,n=t.schema,o=t.document.selection,s=t.createSelection(o);if(t.modifySelection(s,{direction:e?"forward":"backward"}),s.isEqual(o))return null;const a=e?s.focus.nodeBefore:s.focus.nodeAfter;return a&&n.isObject(a)?a:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(Nd,t);this._previouslySelected.clear()}_selectFirstNestedEditable(){const e=this.editor,n=this.editor.editing.view.document;for(const o of n.selection.getFirstRange().getItems())if(o.is("editableElement")){const s=e.editing.mapper.toModelElement(o);/* istanbul ignore next -- @preserve */if(!s)continue;const a=e.model.createPositionAt(s,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,o=e.editing.view.document.selection.getFirstPosition().parent,a=(o.is("$text")?o.parent:o).findAncestor(ae);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 oT(r){let i=r;for(;i;){if(i.is("editableElement")||ae(i))return i;i=i.parent}return null}function sT(r,i){const e=Nh(i.domEvent);let t=null;if(e?t=r.domConverter.domRangeToView(e):t=r.createRange(r.createPositionAt(i.target,0)),!t)return null;const n=t.start;if(!n.parent)return null;let o=n.parent;return n.parent.is("editableElement")&&(n.isAtEnd&&n.nodeBefore?o=n.nodeBefore:n.isAtStart&&n.nodeAfter&&(o=n.nodeAfter)),o.is("$text")?o.parent:o}function aT(r,i){return i?Array.from(r.getAncestors()).includes(i):!1}function lT(r,i){for(const e of r.getAncestors({includeSelf:!0,parentFirst:!0})){if(i.checkChild(e,"$text"))return e;if(i.isLimit(e)&&!i.isObject(e))break}return null}function cT(r,i){const e=new Ct({startPosition:r});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 io extends v{constructor(){super(...arguments);u(this,"_toolbarDefinitions",new Map);u(this,"_balloon")}static get requires(){return[Gt]}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=>{dT(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:o,balloonClassName:s="ck-toolbar-container",positions:a}){if(!n.length){W("widget-toolbar-no-items",{toolbarId:e});return}const l=this.editor,c=l.t,d=new oi(l.locale);if(d.ariaLabel=t||c("Widget toolbar"),this._toolbarDefinitions.has(e))throw new b("widget-toolbar-duplicated",this,{toolbarId:e});const h={view:d,getRelatedElement:o,balloonClassName:s,itemsConfig:n,positions:a,initialized:!1};l.ui.addToolbar(d,{isContextual:!0,beforeFocus:()=>{const m=o(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 o of this._toolbarDefinitions.values()){const s=o.getRelatedElement(this.editor.editing.view.document.selection);if(!this.isEnabled||!s)this._isToolbarInBalloon(o)&&this._hideToolbar(o);else if(!this.editor.ui.focusTracker.isFocused)this._isToolbarVisible(o)&&this._hideToolbar(o);else{const a=s.getAncestors().length;a>e&&(e=a,t=s,n=o)}}n&&this._showToolbar(n,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?Fd(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:Fg(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 o=n.getRelatedElement(this.editor.editing.view.document.selection);Fd(this.editor,o,e.positions)}}))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function Fd(r,i,e){const t=r.plugins.get("ContextualBalloon"),n=Fg(r,i,e);t.updatePosition(n)}function Fg(r,i,e){const t=r.editing.view,n=xe.defaultPositions;return{target:t.domConverter.mapViewToDom(i),positions:e||[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}function dT(r){const i=r.getSelectedElement();return!!(i&&ae(i))}/**
|
|
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 Fn extends Pt{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(o){return(s,a)=>{a.preventDefault();const l=a.dropRange?[a.dropRange]:null,c=new Et(t,o);t.fire(c,{dataTransfer:a.dataTransfer,method:s.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",o={dataTransfer:new sm(t,{cacheFiles:n})};if(e.type=="drop"||e.type=="dragover"){const s=Nh(e);o.dropRange=s&&this.view.domConverter.domRangeToView(s)}this.fire(e.type,e,o)}}/**
|
|
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
|
+
*/function uT(r){return r=r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/\t/g," ").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g," "),(r.includes("</p><p>")||r.includes("<br>"))&&(r=`<p>${r}</p>`),r}/**
|
|
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 hT(r){return r.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,(i,e)=>e.length==1?" ":e).replace(/<!--[\s\S]*?-->/g,"")}/**
|
|
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
|
+
*/const Ud=["figcaption","li"],Hd=["ol","ul"];function Ug(r,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`
|
|
289
|
+
`;let e="",t=null;for(const n of i.getChildren())e+=mT(n,t)+Ug(r,n),t=n;if(i.is("rawElement")){const o=document.implementation.createHTMLDocument("").createElement("div");i.render(o,r),e+=Hg(o)}return e}function Hg(r){let i="";if(r.nodeType===Node.TEXT_NODE)return r.textContent;if(r.tagName==="BR")return`
|
|
290
|
+
`;for(const e of r.childNodes)i+=Hg(e);return i}function mT(r,i){return i?r.is("element","li")&&!r.isEmpty&&r.getChild(0).is("containerElement")||Hd.includes(r.name)&&Hd.includes(i.name)?`
|
|
291
|
+
|
|
292
|
+
`:!r.is("containerElement")&&!i.is("containerElement")?"":Ud.includes(r.name)||Ud.includes(i.name)?`
|
|
293
|
+
`:r.is("element")&&r.getCustomProperty("dataPipeline:transparentRendering")||i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering")?"":`
|
|
294
|
+
|
|
295
|
+
`:""}class _n extends v{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=o=>o.model.getSelectedContent(o.model.document.selection)){return this.editor.model.change(o=>{const s=o.model.document.selection;o.setSelection(t);const a=this._insertFakeMarkersIntoSelection(o,o.model.document.selection,e),l=n(o),c=this._removeFakeMarkersInsideElement(o,l);for(const[d,h]of Object.entries(a)){c[d]||(c[d]=o.createRangeIn(l));for(const m of h)o.remove(m)}l.markers.clear();for(const[d,h]of Object.entries(c))l.markers.set(d,h);return o.setSelection(s),l})}_pasteMarkersIntoTransformedElement(e,t){const n=this._getPasteMarkersFromRangeMap(e);return this.editor.model.change(o=>{const s=this._insertFakeMarkersElements(o,n),a=t(o),l=this._removeFakeMarkersInsideElement(o,a);for(const c of Object.values(s).flat())o.remove(c);for(const[c,d]of Object.entries(l))o.model.markers.has(c)||o.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 o=this._markersToCopy.get(e);this._markersToCopy.set(e,n),t(),o?this._markersToCopy.set(e,o):this._markersToCopy.delete(e)}_isMarkerCopyable(e,t){const n=this._getMarkerClipboardConfig(e);if(!n)return!1;if(!t)return!0;const{allowedActions:o}=n;return o==="all"||o.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 o=this._getCopyableMarkersFromSelection(e,t,n);return this._insertFakeMarkersElements(e,o)}_getCopyableMarkersFromSelection(e,t,n){const o=Array.from(t.getRanges()),s=new Set(o.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 o.some(m=>m.containsRange(h,!0))}return!0};return Array.from(s).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(([s,a])=>{if(!this._hasMarkerConfiguration(s))return[{name:s,range:a}];if(this._isMarkerCopyable(s,t)){const l=this._getMarkerClipboardConfig(s),c=n.markers.has(s)&&n.markers.get(s).getRange().root.rootName==="$graveyard";return(l.duplicateOnPaste||c)&&(s=this._getUniqueMarkerName(s)),[{name:s,range:a}]}return[]})}_insertFakeMarkersElements(e,t){const n={},o=t.flatMap(s=>{const{start:a,end:l}=s.range;return[{position:a,marker:s,type:"start"},{position:l,marker:s,type:"end"}]}).sort(({position:s},{position:a})=>s.isBefore(a)?1:-1);for(const{position:s,marker:a,type:l}of o){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,s)}return n}_removeFakeMarkersInsideElement(e,t){const o=this._getAllFakeMarkersFromElement(e,t).reduce((s,a)=>{const l=a.markerElement&&e.createPositionBefore(a.markerElement);let c=s[a.name],d=!1;return c!=null&&c.start&&(c!=null&&c.end)&&(this._getMarkerClipboardConfig(a.name).duplicateOnPaste?s[this._getUniqueMarkerName(a.name)]=s[a.name]:d=!0,c=null),d||(s[a.name]={...c,[a.type]:l}),a.markerElement&&e.remove(a.markerElement),s},{});return ib(o,s=>new k(s.start||e.createPositionFromPath(t,[0]),s.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}]}),o=[],s=[];for(const a of n)a.type==="end"&&(n.some(c=>c.name===a.name&&c.type==="start")||o.push({markerElement:null,name:a.name,type:"start"})),a.type==="start"&&(n.some(c=>c.name===a.name&&c.type==="end")||s.unshift({markerElement:null,name:a.name,type:"end"}));return[...o,...n,...s]}_getUniqueMarkerName(e){const t=e.split(":"),n=Ve().substring(1,6);return t.length===3?`${t.slice(0,2).join(":")}:${n}`:`${t.join(":")}:${n}`}}class lt extends v{static get pluginName(){return"ClipboardPipeline"}static get isOfficialPlugin(){return!0}static get requires(){return[_n]}init(){this.editor.editing.view.addObserver(Fn),this._setupPasteDrop(),this._setupCopyCut()}_fireOutputTransformationEvent(i,e,t){const n=this.editor.plugins.get("ClipboardMarkersUtils");this.editor.model.enqueueChange({isUndoable:t==="cut"},()=>{const o=n._copySelectedFragmentWithMarkers(t,e);this.fire("outputTransformation",{dataTransfer:i,content:o,method:t})})}_setupPasteDrop(){const i=this.editor,e=i.model,t=i.editing.view,n=t.document,o=this.editor.plugins.get("ClipboardMarkersUtils");this.listenTo(n,"clipboardInput",(s,a)=>{a.method=="paste"&&!i.model.canEditAt(i.model.document.selection)&&s.stop()},{priority:"highest"}),this.listenTo(n,"clipboardInput",(s,a)=>{const l=a.dataTransfer;let c;if(a.content)c=a.content;else{let m="";l.getData("text/html")?m=hT(l.getData("text/html")):l.getData("text/plain")&&(m=uT(l.getData("text/plain"))),c=this.editor.data.htmlProcessor.toView(m)}const d=new Et(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&&s.stop(),t.scrollToTheSelection()},{priority:"low"}),this.listenTo(this,"inputTransformation",(s,a)=>{if(a.content.isEmpty)return;const c=this.editor.data.toModel(a.content,"$clipboardHolder");c.childCount!=0&&(s.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",(s,a)=>{a.resultRange=o._pasteFragmentWithMarkers(a.content)},{priority:"low"})}_setupCopyCut(){const i=this.editor,e=i.model.document,n=i.editing.view.document,o=(s,a)=>{const l=a.dataTransfer;a.preventDefault(),this._fireOutputTransformationEvent(l,e.selection,s.name)};this.listenTo(n,"copy",o,{priority:"low"}),this.listenTo(n,"cut",(s,a)=>{i.model.canEditAt(i.model.document.selection)?o(s,a):a.preventDefault()},{priority:"low"}),this.listenTo(this,"outputTransformation",(s,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",(s,a)=>{a.content.isEmpty||(a.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(a.content)),a.dataTransfer.setData("text/plain",Ug(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 ms=Hi("px");class gT 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=>ms(e)),top:i.to("top",e=>ms(e)),width:i.to("width",e=>ms(e))}}})}}class pr extends v{constructor(){super(...arguments);u(this,"removeDropMarkerDelayed",ya(()=>this.removeDropMarker(),40));u(this,"_updateDropMarkerThrottled",En(e=>this._updateDropMarker(e),40));u(this,"_reconvertMarkerThrottled",En(()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")},0));u(this,"_dropTargetLineView",new gT);u(this,"_domEmitter",new(Pe()));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,o,s,a){this.removeDropMarkerDelayed.cancel();const l=Wd(this.editor,e,t,n,o,s,a);/* istanbul ignore next -- @preserve */if(l){if(a&&a.containsRange(l))return this.removeDropMarker();this._updateDropMarkerThrottled(l)}}getFinalDropRange(e,t,n,o,s,a){const l=Wd(this.editor,e,t,n,o,s,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(o=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(e)||o.updateMarker("drop-target",{range:e}):o.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,o=e.start.nodeAfter,s=e.start.parent,a=n?t.mapper.toViewElement(n):null,l=a?t.view.domConverter.mapViewToDom(a):null,c=o?t.mapper.toViewElement(o):null,d=c?t.view.domConverter.mapViewToDom(c):null,h=t.mapper.toViewElement(s);if(!h)return;const m=t.view.domConverter.mapViewToDom(h),g=this._getScrollableRect(h),{scrollX:f,scrollY:p}=T.window,w=l?new B(l):null,y=d?new B(d):null,C=new B(m).excludeScrollbarsAndBorders(),R=w?w.bottom:C.top,z=y?y.top:C.bottom,re=T.window.getComputedStyle(m),ee=R<=z?(R+z)/2:z;if(g.top<ee&&ee<g.bottom){const x=C.left+parseFloat(re.paddingLeft),D=C.right-parseFloat(re.paddingRight),S=Math.max(x+f,g.left),I=Math.min(D+f,g.right);this._dropTargetLineView.set({isVisible:!0,left:S,top:ee+p,width:I-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 o=this.editor.editing.view.domConverter.mapViewToDom(e);n=pT(o),this._domEmitter.listenTo(n,"scroll",this._reconvertMarkerThrottled,{usePassive:!0});const s=new Sn(n,this._reconvertMarkerThrottled);this._scrollables.set(t,{domElement:n,resizeObserver:s})}return new B(n).excludeScrollbarsAndBorders()}}function Wd(r,i,e,t,n,o,s){const a=r.model,l=r.editing.mapper;let d=qd(r,i);for(;d;){if(!o){if(a.schema.checkChild(d,"$text")){if(e){const h=e[0].start,m=l.toModelPosition(h);if(!s||Array.from(s.getItems({shallow:!0})).every(f=>a.schema.checkChild(m,f))){if(a.schema.checkChild(m,"$text"))return a.createRange(m);if(h)return br(r,qd(r,h.parent),t,n)}}}else if(a.schema.isInline(d))return br(r,d,t,n)}if(a.schema.isBlock(d))return br(r,d,t,n);if(a.schema.checkChild(d,"$block")){const h=Array.from(d.getChildren()).filter(f=>f.is("element")&&!fT(r,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);Wg(r,h[f],t,n)=="before"?g=f:m=f}return br(r,h[m],t,n)}d=d.parent}return null}function fT(r,i){const e=r.editing.mapper,t=r.editing.view.domConverter,n=e.toViewElement(i);if(!n)return!0;const o=t.mapViewToDom(n);return T.window.getComputedStyle(o).float!="none"}function br(r,i,e,t){const n=r.model;return n.createRange(n.createPositionAt(i,Wg(r,i,e,t)))}function Wg(r,i,e,t){const n=r.editing.mapper,o=r.editing.view.domConverter,s=n.toViewElement(i),a=o.mapViewToDom(s),l=new B(a);return r.model.schema.isInline(i)?e<(l.left+l.right)/2?"before":"after":t<(l.top+l.bottom)/2?"before":"after"}function qd(r,i){const e=r.editing.mapper,t=r.editing.view,n=e.toModelElement(i);if(n)return n;const o=t.createPositionBefore(i),s=e.findMappedViewAncestor(o);return e.toModelElement(s)}function pT(r){let i=r;do{i=i.parentElement;const e=T.window.getComputedStyle(i).overflowY;if(e=="auto"||e=="scroll")break}while(i.tagName!="BODY");return i}class bT extends v{constructor(){super(...arguments);u(this,"_isBlockDragging",!1);u(this,"_domEmitter",new(Pe()))}static get pluginName(){return"DragDropBlockToolbar"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;if(this.listenTo(e,"change:isReadOnly",(t,n,o)=>{o?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")}),A.isAndroid&&this.forceDisabled("noAndroidSupport"),e.plugins.has("BlockToolbar")){const n=e.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(n,"dragstart",(o,s)=>this._handleBlockDragStart(s)),this._domEmitter.listenTo(T.document,"dragover",(o,s)=>this._handleBlockDragging(s)),this._domEmitter.listenTo(T.document,"drop",(o,s)=>this._handleBlockDragging(s)),this._domEmitter.listenTo(T.document,"dragend",()=>this._handleBlockDragEnd(),{useCapture:!0}),this.isEnabled&&n.setAttribute("draggable","true"),this.on("change:isEnabled",(o,s,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,o=this.editor.editing.view,s=Array.from(n.getSelectedBlocks()),a=t.createRange(t.createPositionBefore(s[0]),t.createPositionAfter(s[s.length-1]));t.change(l=>l.setSelection(a)),this._isBlockDragging=!0,o.focus(),o.getObserver(Fn).onDomEvent(e)}_handleBlockDragging(e){if(!this.isEnabled||!this._isBlockDragging)return;const t=e.clientX+(this.editor.locale.contentLanguageDirection=="ltr"?100:-100),n=e.clientY,o=document.elementFromPoint(t,n),s=this.editor.editing.view;!o||!o.closest(".ck-editor__editable")||s.getObserver(Fn).onDomEvent({...e,type:e.type,dataTransfer:e.dataTransfer,target:o,clientX:t,clientY:n,preventDefault:()=>e.preventDefault(),stopPropagation:()=>e.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}class wT extends v{constructor(){super(...arguments);u(this,"_draggedRange");u(this,"_draggingUid");u(this,"_draggableElement");u(this,"_clearDraggableAttributesDelayed",ya(()=>this._clearDraggableAttributes(),40));u(this,"_blockMode",!1);u(this,"_domEmitter",new(Pe()));u(this,"_previewContainer")}static get pluginName(){return"DragDrop"}static get isOfficialPlugin(){return!0}static get requires(){return[lt,Zn,pr,bT]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,t.addObserver(Fn),t.addObserver(Ba),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",(n,o,s)=>{s?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}),this.on("change:isEnabled",(n,o,s)=>{s||this._finalizeDragging(!1)}),A.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,o=n.document,s=e.plugins.get(pr);this.listenTo(o,"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=Ve(),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(o,"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(o,"dragenter",()=>{this.isEnabled&&n.focus()}),this.listenTo(o,"dragleave",()=>{s.removeDropMarkerDelayed()}),this.listenTo(o,"dragging",(a,l)=>{if(!this.isEnabled){l.dataTransfer.dropEffect="none";return}const{clientX:c,clientY:d}=l.domEvent;s.updateDropMarker(l.target,l.targetRanges,c,d,this._blockMode,this._draggedRange),this._draggedRange||(l.dataTransfer.dropEffect="copy"),A.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,o=e.plugins.get(pr);this.listenTo(n,"clipboardInput",(s,a)=>{if(a.method!="drop")return;const{clientX:l,clientY:c}=a.domEvent,d=o.getFinalDropRange(a.target,a.targetRanges,l,c,this._blockMode,this._draggedRange);if(!d){this._finalizeDragging(!1),s.stop();return}if(this._draggedRange&&this._draggingUid!=a.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid=""),jd(a.dataTransfer)=="move"&&this._draggedRange&&this._draggedRange.containsRange(d,!0)){this._finalizeDragging(!1),s.stop();return}a.targetRanges=[e.editing.mapper.toViewRange(d)]},{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(lt);e.on("contentInsertion",(t,n)=>{if(!this.isEnabled||n.method!=="drop")return;const o=n.targetRanges.map(s=>this.editor.editing.mapper.toModelRange(s));this.editor.model.change(s=>s.setSelection(o))},{priority:"high"}),e.on("contentInsertion",(t,n)=>{if(!this.isEnabled||n.method!=="drop")return;const o=jd(n.dataTransfer)=="move",s=!n.resultRange||!n.resultRange.isCollapsed;this._finalizeDragging(s&&o)},{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,n=t.document;this.listenTo(n,"mousedown",(o,s)=>{if(A.isAndroid||!s)return;this._clearDraggableAttributesDelayed.cancel();let a=Gd(s.target);if(A.isBlink&&!e.isReadOnly&&!a&&!n.selection.isCollapsed){const l=n.selection.getSelectedElement();(!l||!ae(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",()=>{A.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(pr).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(s=>{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")&&s.insertElement("paragraph",l,0)}),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(e){const t=this.editor,n=t.model,o=n.document.selection,s=e?Gd(e):null;if(s){const d=t.editing.mapper.toModelElement(s);this._draggedRange=Ke.fromRange(n.createRangeOn(d)),this._blockMode=n.schema.isBlock(d),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop");return}if(o.isCollapsed&&!o.getFirstPosition().parent.isEmpty)return;const a=Array.from(o.getSelectedBlocks()),l=o.getFirstRange();if(a.length==0){this._draggedRange=Ke.fromRange(l);return}const c=qg(n,a);if(a.length>1)this._draggedRange=Ke.fromRange(c),this._blockMode=!0;else if(a.length==1){const d=l.start.isTouching(c.start)&&l.end.isTouching(c.end);this._draggedRange=Ke.fromRange(d?c:l),this._blockMode=d}n.change(d=>d.setSelection(this._draggedRange.toRange()))}_updatePreview({dataTransfer:e,domTarget:t,clientX:n}){const o=this.editor.editing.view,s=o.document.selection.editableElement,a=o.domConverter.mapViewToDom(s),l=T.window.getComputedStyle(a);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=De(T.document,"div",{style:"position: fixed; left: -999999px;"}),T.document.body.appendChild(this._previewContainer));const c=new B(a);if(a.contains(t))return;const d=parseFloat(l.paddingLeft),h=De(T.document,"div");h.className="ck ck-content",h.style.width=l.width,h.style.paddingLeft=`${c.left-n+d}px`,A.isiOS&&(h.style.backgroundColor="white"),o.domConverter.setContentOf(h,e.getData("text/html")),e.setDragImage(h,0,0),this._previewContainer.appendChild(h)}}function jd(r){return A.isGecko?r.dropEffect:["all","copyMove"].includes(r.effectAllowed)?"move":"copy"}function Gd(r){if(r.is("editableElement"))return null;if(r.hasClass("ck-widget__selection-handle"))return r.findAncestor(ae);if(ae(r))return r;const i=r.findAncestor(e=>ae(e)||e.is("editableElement"));return ae(i)?i:null}function qg(r,i){const e=i[0],t=i[i.length-1],n=e.getCommonAncestor(t),o=r.createPositionBefore(e),s=r.createPositionAfter(t);if(n&&n.is("element")&&!r.schema.isLimit(n)){const a=r.createRangeOn(n),l=o.isTouching(a.start),c=s.isTouching(a.end);if(l&&c)return qg(r,[n])}return r.createRange(o,s)}class kT extends v{static get pluginName(){return"PastePlainText"}static get isOfficialPlugin(){return!0}static get requires(){return[lt]}init(){const i=this.editor,e=i.model,t=i.editing.view,n=e.document.selection;t.addObserver(Fn),i.plugins.get(lt).on("contentInsertion",(o,s)=>{yT(s.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(s.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 yT(r,i){let e=i.createRangeIn(r);if(r.childCount==1){const t=r.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(o=>i.schema.getAttributeProperties(o).isFormatting))return!1;return!0}class vT extends v{static get pluginName(){return"Clipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[_n,lt,wT,kT]}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"}]})}}/**
|
|
296
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
297
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
298
|
+
*/class _T extends BC{constructor(e,t){super(e);u(this,"view");u(this,"_toolbarConfig");u(this,"_elementReplacer");this.view=t,this._toolbarConfig=pg(e.config.get("toolbar")),this._elementReplacer=new Ih,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,o=t.editing.view,s=n.editable,a=o.document.getRoot();s.name=a.rootName,n.render();const l=s.element;this.setEditableElement(s.name,l),n.editable.bind("isFocused").to(this.focusTracker),o.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(),o=e.sourceElement;let s;const a=e.config.get("placeholder");a&&(s=typeof a=="string"?a:a[this.view.editable.name]),!s&&o&&o.tagName.toLowerCase()==="textarea"&&(s=o.getAttribute("placeholder")),s&&(n.placeholder=s),Gh({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",o=>{const s=o.return;if(!s||!e.isSticky||!e.element)return;const a=new B(e.element).height,l=typeof s.target=="function"?s.target():s.target,c=typeof s.limiter=="function"?s.limiter():s.limiter;if(l&&c&&new B(l).height>=new B(c).height-a)return;const d={...s.viewportOffsetConfig},h=(d.top||0)+a;o.return={...s,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 o=this.view.stickyPanel;if(o.isSticky){const s=new B(o.element).height;t.viewportOffset.top+=s}else{const s=()=>{this.editor.editing.view.scrollToTheSelection(n)};this.listenTo(o,"change:isSticky",s),setTimeout(()=>{this.stopListening(o,"change:isSticky",s)},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",(o,s)=>{if(!e.isSticky||n.wasMoved||n.isModal)return;const a=new B(e.contentPanelElement);s[1]<a.bottom+On.defaultOffset&&(s[1]=a.bottom+On.defaultOffset)},{priority:"high"})},{priority:"low"})}}class CT extends NC{constructor(e,t,n={}){super(e);u(this,"stickyPanel");u(this,"toolbar");u(this,"editable");this.stickyPanel=new UC(e),this.toolbar=new oi(e,{shouldGroupWhenFull:n.shouldToolbarGroupWhenFull}),n.useMenuBar&&(this.menuBarView=new GC(e)),this.editable=new OC(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 LT extends Bs(Si){constructor(e,t={}){if(!Ir(e)&&t.initialData!==void 0)throw new b("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",TT(e)),Ir(e)&&(this.sourceElement=e),this.model.document.createRoot();const n=!this.config.get("toolbar.shouldNotGroupWhenFull"),o=this.config.get("menuBar"),s=new CT(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:n,useMenuBar:o.isVisible,label:this.config.get("label")});this.ui=new _T(this,s),j_(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 o=new this(e,t);n(o.initPlugins().then(()=>o.ui.init(Ir(e)?e:null)).then(()=>o.data.init(o.config.get("initialData"))).then(()=>o.fire("ready")).then(()=>o))})}}function TT(r){return Ir(r)?zb(r):r}function Ir(r){return qt(r)}/**
|
|
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 ET extends M{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)||!Kd(i.schema,t))do if(t=t.parent,!t)return;while(!Kd(i.schema,t));i.change(n=>{n.setSelection(t,"in")})}}function Kd(r,i){return r.isLimit(i)&&(r.checkChild(i,"$text")||r.checkChild(i,"paragraph"))}const xT=wa("Ctrl+A");class ST extends v{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 ET(i)),this.listenTo(n,"keydown",(o,s)=>{Oi(s)===xT&&(i.execute("selectAll"),s.preventDefault())}),i.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Select all"),keystroke:"CTRL+A"}]})}}class AT extends v{static get pluginName(){return"SelectAllUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("selectAll",()=>{const e=this._createButton(P);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:selectAll",()=>this._createButton(ke))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("selectAll"),o=new i(e.locale),s=t.t;return o.set({label:s("Select all"),icon:x0,keystroke:"Ctrl+A"}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{e.execute("selectAll"),e.editing.view.focus()}),o}}class PT extends v{static get requires(){return[ST,AT]}static get pluginName(){return"SelectAll"}static get isOfficialPlugin(){return!0}}/**
|
|
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 jg extends M{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 o=n[1];o.batchType||(o.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 o=this.editor.model,s=o.document,a=[],l=e.map(d=>d.getTransformedByOperations(n)),c=l.flat();for(const d of l){const h=d.filter(m=>m.root!=s.graveyard).filter(m=>!RT(m,c));h.length&&(IT(h),a.push(h[0]))}a.length&&o.change(d=>{d.setSelection(a,{backward:t})})}_undo(e,t){const n=this.editor.model,o=n.document;this._createdBatches.add(t);const s=e.operations.slice().filter(a=>a.isDocumentOperation);s.reverse();for(const a of s){const l=a.baseVersion+1,c=Array.from(o.history.getOperations(l)),h=av([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),o.history.setOperationAsUndone(a,m)}}}}function IT(r){r.sort((i,e)=>i.start.isBefore(e.start)?-1:1);for(let i=1;i<r.length;i++){const t=r[i-1].getJoined(r[i],!0);t&&(i--,r.splice(i,2,t))}}function RT(r,i){return i.some(e=>e!==r&&e.containsRange(r,!0))}class MT extends jg{execute(i=null){const e=i?this._stack.findIndex(o=>o.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 o=this.editor.model.document.history.getOperations(t.batch.baseVersion);this._restoreSelection(t.selection.ranges,t.selection.isBackward,o)}),this.fire("revert",t.batch,n),this.refresh()}}class BT extends jg{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,o=this.editor.model.document.history.getOperations(n);this._restoreSelection(i.selection.ranges,i.selection.isBackward,o),this._undo(i.batch,e)}),this.refresh()}}class VT extends v{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 MT(e),this._redoCommand=new BT(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",(n,o)=>{const s=o[0];if(!s.isDocumentOperation)return;const a=s.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,o,s)=>{this._redoCommand.addBatch(s)}),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 NT extends v{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"?qc:Hc,o=e.uiLanguageDirection=="ltr"?Hc:qc;this._addButtonsToFactory("undo",t("Undo"),"CTRL+Z",n),this._addButtonsToFactory("redo",t("Redo"),"CTRL+Y",o)}_addButtonsToFactory(i,e,t,n){const o=this.editor;o.ui.componentFactory.add(i,()=>{const s=this._createButton(P,i,e,t,n);return s.set({tooltip:!0}),s}),o.ui.componentFactory.add("menuBar:"+i,()=>this._createButton(ke,i,e,t,n))}_createButton(i,e,t,n,o){const s=this.editor,a=s.locale,l=s.commands.get(e),c=new i(a);return c.set({label:t,icon:o,keystroke:n}),c.bind("isEnabled").to(l,"isEnabled"),this.listenTo(c,"execute",()=>{s.execute(e),s.editing.view.focus()}),c}}class DT extends v{static get requires(){return[VT,NT]}static get pluginName(){return"Undo"}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 OT extends v{static get requires(){return[E1,vT,xo,PT,RL,gL,DT]}static get pluginName(){return"Essentials"}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 zT extends M{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&&$d(t,i.schema)}execute(i={}){const e=this.editor.model,t=e.document,n=i.selection||t.selection;e.canEditAt(n)&&e.change(o=>{const s=n.getSelectedBlocks();for(const a of s)!a.is("element","paragraph")&&$d(a,e.schema)&&o.rename(a,"paragraph")})}}function $d(r,i){return i.checkChild(r.parent,"paragraph")&&!i.isObject(r)}class FT extends M{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(o=>{if(n=this._findPositionToInsertParagraph(n,o),!n)return null;const s=o.createElement("paragraph");return t&&e.schema.setAllowedAttributes(s,t,o),e.insertContent(s,n),o.setSelection(s,"in"),o.createPositionAt(s,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 o=i.parent,s=t.schema.checkChild(o,"$text");return o.isEmpty||s&&i.isAtEnd?t.createPositionAfter(o):!o.isEmpty&&s&&i.isAtStart?t.createPositionBefore(o):e.split(i,n).position}}const po=class po extends v{static get pluginName(){return"Paragraph"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.model;i.commands.add("paragraph",new zT(i)),i.commands.add("insertParagraph",new FT(i)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),i.conversion.elementToElement({model:"paragraph",view:"p"}),i.conversion.for("upcast").elementToElement({model:(t,{writer:n})=>!po.paragraphLikeElements.has(t.name)||t.isEmpty?null:n.createElement("paragraph"),view:/.+/,converterPriority:"low"})}};u(po,"paragraphLikeElements",new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]));let no=po;/**
|
|
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 UT extends M{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=>Zd(e,t,this.editor.model.schema))}execute(e){const t=this.editor.model,n=t.document,o=e.value;t.change(s=>{const a=Array.from(n.selection.getSelectedBlocks()).filter(l=>Zd(l,o,t.schema));for(const l of a)l.is("element",o)||s.rename(l,o)})}}function Zd(r,i,e){return e.checkChild(r.parent,i)&&!e.isObject(r)}const Jd="paragraph";class HT extends v{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[no]}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 UT(i,t))}afterInit(){const i=this.editor,e=i.commands.get("enter"),t=i.config.get("heading.options");e&&this.listenTo(e,"afterExecute",(n,o)=>{const s=i.model.document.selection.getFirstPosition().parent;t.some(l=>s.is("element",l.model))&&!s.is("element",Jd)&&s.childCount===0&&o.writer.rename(s,Jd)})}_addDefaultH1Conversion(i){i.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:Ot.low+1})}}/**
|
|
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
|
+
*/function WT(r){const i=r.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 r.config.get("heading.options").map(t=>{const n=e[t.title];return n&&n!=t.title&&(t.title=n),t})}class qT extends v{static get pluginName(){return"HeadingUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.t,t=WT(i),n=e("Choose heading"),o=e("Heading");i.ui.componentFactory.add("heading",s=>{const a={},l=new We,c=i.commands.get("heading"),d=i.commands.get("paragraph"),h=[c];for(const g of t){const f={type:"button",model:new $a({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=nt(s);return To(m,l,{ariaLabel:o,role:"menu"}),m.buttonView.set({ariaLabel:o,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:o}),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]?o:`${a[p]}, ${o}`}),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",s=>{const a=new ft(s),l=i.commands.get("heading"),c=i.commands.get("paragraph"),d=[l],h=new zn(s);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 $n(s,a),f=new ke(s);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 jT extends v{static get requires(){return[HT,qT]}static get pluginName(){return"Heading"}static get isOfficialPlugin(){return!0}}/**
|
|
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
|
+
*/class GT extends M{refresh(){const i=this.editor.model,e=i.schema,t=i.document.selection;this.isEnabled=KT(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 KT(r,i,e){const t=$T(r,e);return i.checkChild(t,"horizontalLine")}function $T(r,i){const t=Og(r,i).start.parent;return t.isEmpty&&!t.is("element","$root")?t.parent:t}class ZT extends v{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:(o,{writer:s})=>s.createEmptyElement("hr")}),n.for("editingDowncast").elementToStructure({model:"horizontalLine",view:(o,{writer:s})=>{const a=t("Horizontal line"),l=s.createContainerElement("div",null,s.createEmptyElement("hr"));return s.addClass("ck-horizontal-line",l),s.setCustomProperty("hr",!0,l),JT(l,s,a)}}),n.for("upcast").elementToElement({view:"hr",model:"horizontalLine"}),i.commands.add("horizontalLine",new GT(i))}}function JT(r,i,e){return i.setCustomProperty("horizontalLine",!0,r),Qa(r,i,{label:e})}class YT extends v{static get pluginName(){return"HorizontalLineUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("horizontalLine",()=>{const e=this._createButton(P);return e.set({tooltip:!0}),e}),i.ui.componentFactory.add("menuBar:horizontalLine",()=>this._createButton(ke))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("horizontalLine"),o=new i(e.locale),s=t.t;return o.set({label:s("Horizontal line"),icon:i0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",()=>{e.execute("horizontalLine"),e.editing.view.focus()}),o}}class XT extends v{static get requires(){return[ZT,YT,Zn]}static get pluginName(){return"HorizontalLine"}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
|
+
*/function QT(r){return r.createContainerElement("span",{class:"image-inline"},r.createEmptyElement("img"))}function Yd(r){return r.createContainerElement("figure",{class:"image"},[r.createEmptyElement("img"),r.createSlot("children")])}function Gg(r,i){const e=r.plugins.get("ImageUtils"),t=r.plugins.has("ImageInlineEditing")&&r.plugins.has("ImageBlockEditing");return o=>e.isInlineImageView(o)?t&&(o.getStyle("display")=="block"||o.findAncestor(e.isBlockImageView)?"imageBlock":"imageInline")!==i?null:n(o):null;function n(o){const s={name:!0};return o.hasAttribute("src")&&(s.attributes=["src"]),s}}function el(r,i){const e=ue(i.getSelectedBlocks());return!e||r.isObject(e)||e.isEmpty&&e.name!="listItem"?"imageBlock":"imageInline"}function ro(r){return r&&r.endsWith("px")?parseInt(r):null}function Xd(r){const i=ro(r.getStyle("width")),e=ro(r.getStyle("height"));return!!(i&&e)}const eE=/^(image|image-inline)$/;class It extends v{constructor(){super(...arguments);u(this,"_domEmitter",new(Pe()))}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,o={}){const s=this.editor,a=s.model,l=a.document.selection,c=Kg(s,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}=o,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 o=new T.window.Image;this._domEmitter.listenTo(o,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(n.batch,s=>{s.setAttribute("width",o.naturalWidth,e),s.setAttribute("height",o.naturalHeight,e)}),this._domEmitter.stopListening(o,"load")}),o.src=t}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const n=e.getSelectedElement();if(n&&this.isImageWidget(n))return n;let o=t.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:eE})}isImageAllowed(){const t=this.editor.model.document.selection;return tE(this.editor,t)&&iE(t)}toImageWidget(e,t,n){return t.setCustomProperty("image",!0,e),Qa(e,t,{label:()=>{const a=this.findViewImgElement(e).getAttribute("alt");return a?`${a} ${n}`:n}})}isImageWidget(e){return!!e.getCustomProperty("image")&&ae(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 tE(r,i){if(Kg(r,i,null)=="imageBlock"){const t=nE(i,r.model);if(r.model.schema.checkChild(t,"imageBlock"))return!0}else if(r.model.schema.checkChild(i.focus,"imageInline"))return!0;return!1}function iE(r){return[...r.focus.getAncestors()].every(i=>!i.is("element","imageBlock"))}function nE(r,i){const t=Og(r,i).start.parent;return t.isEmpty&&!t.is("element","$root")?t.parent:t}function Kg(r,i,e){const t=r.model.schema,n=r.config.get("image.insert.type");return r.plugins.has("ImageBlockEditing")?r.plugins.has("ImageInlineEditing")?e||(n==="inline"?"imageInline":n!=="auto"?"imageBlock":i.is("selection")?el(t,i):t.checkChild(i,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class rE extends M{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,o=t.getClosestSelectedImageElement(n.document.selection);n.change(s=>{s.setAttribute("alt",i.newValue,o)})}}class oE extends v{static get requires(){return[It]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new rE(this.editor))}}class sE 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 ne,this.keystrokes=new ce,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new Te(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new _e,this.keystrokes.set("Esc",(t,n)=>{this.fire("cancel"),n()}),this._focusCycler=new Ie({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(),qi({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 P(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:qn,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new P(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 ui(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,Ze);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function aE(r){const i=r.plugins.get("ContextualBalloon");if(r.plugins.get("ImageUtils").getClosestSelectedImageWidget(r.editing.view.document.selection)){const t=$g(r);i.updatePosition(t)}}function $g(r){const i=r.editing.view,e=xe.defaultPositions,t=r.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 lE extends v{constructor(){super(...arguments);u(this,"_balloon");u(this,"_form")}static get requires(){return[Gt]}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 o=e.commands.get("imageTextAlternative"),s=new P(n);return s.set({label:t("Change image text alternative"),icon:N0,tooltip:!0}),s.bind("isEnabled").to(o,"isEnabled"),s.bind("isOn").to(o,"value",a=>!!a),this.listenTo(s,"execute",()=>{this._showForm()}),s})}_createForm(){const e=this.editor,n=e.editing.view.document,o=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(Os(sE))(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",()=>{o.getClosestSelectedImageWidget(n.selection)?this._isVisible&&aE(e):this._hideForm(!0)}),Wi({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:$g(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 tl extends v{static get requires(){return[oE,lE]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function cE(r){const i=(e,t,n)=>{if(!n.consumable.test(t.viewItem,{name:!0,classes:"image"}))return;const o=r.findViewImgElement(t.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;n.consumable.consume(t.viewItem,{name:!0,classes:"image"});const s=n.convertItem(o,t.modelCursor),a=ue(s.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 Zg(r,i){const e=(t,n,o)=>{if(!o.consumable.consume(n.item,t.name))return;const s=o.writer,a=o.mapper.toViewElement(n.item),l=r.findViewImgElement(a);n.attributeNewValue===null?(s.removeAttribute("srcset",l),s.removeAttribute("sizes",l)):n.attributeNewValue&&(s.setAttribute("srcset",n.attributeNewValue,l),s.setAttribute("sizes","100vw",l))};return t=>{t.on(`attribute:srcset:${i}`,e)}}function oo(r,i,e){const t=(n,o,s)=>{if(!s.consumable.consume(o.item,n.name))return;const a=s.writer,l=s.mapper.toViewElement(o.item),c=r.findViewImgElement(l);a.setAttribute(o.attributeKey,o.attributeNewValue||"",c)};return n=>{n.on(`attribute:${e}:${i}`,t)}}class Jg 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 dE extends M{constructor(i){super(i);const e=i.config.get("image.insert.type");i.plugins.has("ImageBlockEditing")||e==="block"&&W("image-block-plugin-required"),i.plugins.has("ImageInlineEditing")||e==="inline"&&W("image-inline-plugin-required")}refresh(){const i=this.editor.plugins.get("ImageUtils");this.isEnabled=i.isImageAllowed()}execute(i){const e=Q(i.source),t=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(t.getAttributes());e.forEach((s,a)=>{const l=t.getSelectedElement();if(typeof s=="string"&&(s={src:s}),a&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);n.insertImage({...s,...o},c,i.imageType)}else i.breakBlock?n.insertImage({...s,...o},t.getFirstPosition(),i.imageType):n.insertImage({...s,...o},null,i.imageType)})}}class uE extends M{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 il extends v{static get requires(){return[It]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.conversion;i.editing.view.addObserver(Jg),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const t=new dE(i),n=new uE(i);i.commands.add("insertImage",t),i.commands.add("replaceImageSource",n),i.commands.add("imageInsert",t)}}class Yg extends v{static get requires(){return[It]}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:s=>Xd(s)?ro(s.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:s=>Xd(s)?ro(s.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),e.conversion.for("editingDowncast").add(s=>{o(s,"width","width",!0,!0),o(s,"height","height",!0,!0)}),e.conversion.for("dataDowncast").add(s=>{o(s,"width","width",!1),o(s,"height","height",!1)}),e.conversion.for("upcast").add(s=>{s.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 o(s,a,l,c,d=!1){s.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),w=t.findViewImgElement(p);m.attributeNewValue!==null?f.setAttribute(l,m.attributeNewValue,w):f.removeAttribute(l,w);const y=m.item.getAttribute("width"),C=m.item.getAttribute("height"),R=y&&C;if(R&&d&&f.setAttribute("loading","lazy",w),m.item.hasAttribute("sources"))return;const z=m.item.hasAttribute("resizedWidth");i==="imageInline"&&!z&&!c||R&&f.setStyle("aspect-ratio",`${y}/${C}`,w)})}}}class Xg extends M{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,o=t.plugins.get("ImageUtils"),s=o.getClosestSelectedImageElement(n.document.selection),a=Object.fromEntries(s.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(s)),h=o.insertImage(a,n.createSelection(s,"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:s,newElement:h}})}}class Qg extends v{static get requires(){return[It]}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",(o,s,a)=>{if(!a.consumable.test(s.item,o.name)||!s.item.is("element","imageBlock")&&!s.item.is("element","imageInline"))return;a.consumable.consume(s.item,o.name);const l=a.writer,c=a.mapper.toViewElement(s.item),d=t.findViewImgElement(c);s.attributeNewValue?(l.addClass("image_placeholder",d),l.setStyle("background-image",`url(${s.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,o=i.plugins.get("ImageUtils");n.addObserver(Jg),this.listenTo(n.document,"imageLoaded",(s,a)=>{const l=n.domConverter.mapDomToView(a.target);if(!l)return;const c=o.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 hE extends v{static get requires(){return[il,Yg,It,Qg,lt]}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 Xg(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:(o,{writer:s})=>Yd(s)}),t.for("editingDowncast").elementToStructure({model:"imageBlock",view:(o,{writer:s})=>n.toImageWidget(Yd(s),s,e("image widget"))}),t.for("downcast").add(oo(n,"imageBlock","src")).add(oo(n,"imageBlock","alt")).add(Zg(n,"imageBlock")),t.for("upcast").elementToElement({view:Gg(i,"imageBlock"),model:(o,{writer:s})=>s.createElement("imageBlock",o.hasAttribute("src")?{src:o.getAttribute("src")}:void 0)}).add(cE(n))}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),o=i.plugins.get("ClipboardPipeline");this.listenTo(o,"inputTransformation",(s,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(el(e.schema,d)==="imageBlock"){const h=new Vm(t.document),m=l.map(g=>h.createElement("figure",{class:"image"},g));a.content=h.createDocumentFragment(m)}}),this.listenTo(o,"contentInsertion",(s,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 mE 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 ne,this.keystrokes=new ce,this._focusables=new _e,this.children=this.createCollection(),this._focusCycler=new Ie({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 cg&&this._focusables.addMany(n.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),qi({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 So extends v{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[It]}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 o=a=>this._createToolbarComponent(a),s=a=>this._createMenuBarComponent(a);e.ui.componentFactory.add("insertImage",o),e.ui.componentFactory.add("imageInsert",o),e.ui.componentFactory.add("menuBar:insertImage",s)}registerIntegration({name:e,observable:t,buttonViewCreator:n,formViewCreator:o,menuBarButtonViewCreator:s,requiresForm:a=!1,override:l=!1}){this._integrations.has(e)&&!l&&W("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:n,menuBarButtonViewCreator:s,formViewCreator:o,requiresForm:a})}_createToolbarComponent(e){const t=this.editor,n=e.t,o=this._prepareIntegrations();if(!o.length)return null;let s;const a=o[0];if(o.length==1){if(!a.requiresForm)return a.buttonViewCreator(!0);s=a.buttonViewCreator(!0)}else{const d=a.buttonViewCreator(!1);s=new Lo(e,d),s.tooltip=!0,s.bind("label").to(this,"isImageSelected",h=>n(h?"Replace image":"Insert image"))}const l=this.dropdownView=nt(e,s),c=o.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=o.flatMap(({formViewCreator:m})=>m(o.length==1)),h=new mE(t.locale,d);l.panelView.children.add(h)}),l}_createMenuBarComponent(e){const t=e.t,n=this._prepareIntegrations();if(!n.length)return null;const o=n.flatMap(({menuBarButtonViewCreator:l})=>l(n.length==1)),s=new ft(e),a=new zn(e);s.panelView.children.add(a),s.buttonView.set({icon:n0,label:t("Image")});for(const l of o){const c=new $n(e,s);c.children.add(l),a.items.add(c),l.delegate("execute").to(s)}return s}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),n=[];if(!t.length)return W("image-insert-integrations-not-specified"),n;for(const o of t){if(!this._integrations.has(o)){["upload","assetManager","url"].includes(o)||W("image-insert-unknown-integration",{item:o});continue}n.push(this._integrations.get(o))}return n.length||W("image-insert-integrations-not-registered"),n}}class gE extends v{static get requires(){return[hE,Zn,tl,So]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class fE extends v{static get requires(){return[il,Yg,It,Qg,lt]}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 Xg(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:(o,{writer:s})=>s.createEmptyElement("img")}),t.for("editingDowncast").elementToStructure({model:"imageInline",view:(o,{writer:s})=>n.toImageWidget(QT(s),s,e("image widget"))}),t.for("downcast").add(oo(n,"imageInline","src")).add(oo(n,"imageInline","alt")).add(Zg(n,"imageInline")),t.for("upcast").elementToElement({view:Gg(i,"imageInline"),model:(o,{writer:s})=>s.createElement("imageInline",o.hasAttribute("src")?{src:o.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),o=i.plugins.get("ClipboardPipeline");this.listenTo(o,"inputTransformation",(s,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(el(e.schema,d)==="imageInline"){const h=new Vm(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(o,"contentInsertion",(s,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 pE extends v{static get requires(){return[fE,Zn,tl,So]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class bE 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 ce,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(),qi({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,Ze);return n.bind("label").to(this,"isImageSelected",o=>t(o?"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",o=>o||""),n.fieldView.on("input",()=>{this.imageURLInputValue=n.fieldView.element.value.trim()}),n}focus(){this.urlInputView.focus()}}class wE extends v{constructor(){super(...arguments);u(this,"_imageInsertUI");u(this,"_formView")}static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[So,Xr]}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=r0,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(P);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(P);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(ke);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"),o=e.commands.get("insertImage"),s=new bE(t);return s.bind("isImageSelected").to(this._imageInsertUI),s.bind("isEnabled").toMany([o,n],"isEnabled",(...a)=>a.some(l=>l)),s}_showModal(){const e=this.editor,n=e.locale.t,o=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));const s=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=s.value||"",o.show({id:"insertImageViaUrl",title:n("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:n("Cancel"),withText:!0,onExecute:()=>o.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 kE extends v{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[wE,So]}}class yE extends v{static get requires(){return[io,It]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const i=this.editor,e=i.t,t=i.plugins.get(io),n=i.plugins.get("ImageUtils");t.register("image",{ariaLabel:e("Image toolbar"),items:vE(i.config.get("image.toolbar")||[]),getRelatedElement:o=>n.getClosestSelectedImageWidget(o)})}}function vE(r){return r.map(i=>rt(i)?i.name:i)}/**
|
|
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
|
+
*/class _E extends v{static get pluginName(){return"IndentEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.commands.add("indent",new Dc(i)),i.commands.add("outdent",new Dc(i))}}class CE extends v{static get pluginName(){return"IndentUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale,t=i.t,n=e.uiLanguageDirection=="ltr"?Fc:Uc,o=e.uiLanguageDirection=="ltr"?Uc:Fc;this._defineButton("indent",t("Increase indent"),n),this._defineButton("outdent",t("Decrease indent"),o)}_defineButton(i,e,t){const n=this.editor;n.ui.componentFactory.add(i,()=>{const o=this._createButton(P,i,e,t);return o.set({tooltip:!0}),o}),n.ui.componentFactory.add("menuBar:"+i,()=>this._createButton(ke,i,e,t))}_createButton(i,e,t,n){const o=this.editor,s=o.commands.get(e),a=new i(o.locale);return a.set({label:t,icon:n}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",()=>{o.execute(e),o.editing.view.focus()}),a}}class LE extends v{static get pluginName(){return"Indent"}static get isOfficialPlugin(){return!0}static get requires(){return[_E,CE]}}class wr extends M{constructor(e,t){super(e);u(this,"_indentBehavior");this._indentBehavior=t}refresh(){const t=this.editor.model,n=ue(t.document.selection.getSelectedBlocks());if(!n||!this._isIndentationChangeAllowed(n)){this.isEnabled=!1;return}this.isEnabled=this._indentBehavior.checkEnabled(n.getAttribute("blockIndent"))}execute(){const e=this.editor.model,t=this._getBlocksToChange();e.change(n=>{for(const o of t){const s=o.getAttribute("blockIndent"),a=this._indentBehavior.getNextIndent(s);a?n.setAttribute("blockIndent",a,o):n.removeAttribute("blockIndent",o)}})}_getBlocksToChange(){const t=this.editor.model.document.selection;return Array.from(t.getSelectedBlocks()).filter(o=>this._isIndentationChangeAllowed(o))}_isIndentationChangeAllowed(e){const t=this.editor;return t.model.schema.checkAttribute(e,"blockIndent")?!t.plugins.has("ListUtils")||!this._indentBehavior.isForward?!0:!t.plugins.get("ListUtils").isListItemBlock(e):!1}}/**
|
|
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
|
+
*/class Qd{constructor(i){u(this,"isForward");u(this,"offset");u(this,"unit");this.isForward=i.direction==="forward",this.offset=i.offset,this.unit=i.unit}checkEnabled(i){const e=parseFloat(i||"0");return this.isForward||e>0}getNextIndent(i){const e=parseFloat(i||"0");if(!(!i||i.endsWith(this.unit)))return this.isForward?this.offset+this.unit:void 0;const n=this.isForward?this.offset:-this.offset,o=e+n;return o>0?o+this.unit:void 0}}/**
|
|
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
|
+
*/class eu{constructor(i){u(this,"isForward");u(this,"classes");this.isForward=i.direction==="forward",this.classes=i.classes}checkEnabled(i){const e=this.classes.indexOf(i);return this.isForward?e<this.classes.length-1:e>=0}getNextIndent(i){const e=this.classes.indexOf(i),t=this.isForward?1:-1;return this.classes[e+t]}}const TE=["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"];class EE extends v{constructor(i){super(i),i.config.define("indentBlock",{offset:40,unit:"px"})}static get pluginName(){return"IndentBlock"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.config.get("indentBlock");e.classes&&e.classes.length?(this._setupConversionUsingClasses(e.classes),i.commands.add("indentBlock",new wr(i,new eu({direction:"forward",classes:e.classes}))),i.commands.add("outdentBlock",new wr(i,new eu({direction:"backward",classes:e.classes})))):(i.data.addStyleProcessorRules(E_),this._setupConversionUsingOffset(),i.commands.add("indentBlock",new wr(i,new Qd({direction:"forward",offset:e.offset,unit:e.unit}))),i.commands.add("outdentBlock",new wr(i,new Qd({direction:"backward",offset:e.offset,unit:e.unit}))))}afterInit(){const i=this.editor,e=i.model.schema,t=i.commands.get("indent"),n=i.commands.get("outdent"),o=i.config.get("heading.options");(o&&o.map(l=>l.model)||TE).forEach(l=>{e.isRegistered(l)&&e.extend(l,{allowAttributes:"blockIndent"})}),e.setAttributeProperties("blockIndent",{isFormatting:!0}),t.registerChildCommand(i.commands.get("indentBlock")),n.registerChildCommand(i.commands.get("outdentBlock"))}_setupConversionUsingOffset(){const i=this.editor.conversion,t=this.editor.locale.contentLanguageDirection==="rtl"?"margin-right":"margin-left";i.for("upcast").attributeToAttribute({view:{styles:{[t]:/[\s\S]+/}},model:{key:"blockIndent",value:n=>{if(!n.is("element","li"))return n.getStyle(t)}}}),i.for("downcast").attributeToAttribute({model:"blockIndent",view:n=>({key:"style",value:{[t]:n}})})}_setupConversionUsingClasses(i){const e={model:{key:"blockIndent",values:[]},view:{}};for(const t of i)e.model.values.push(t),e.view[t]={key:"class",value:[t]};this.editor.conversion.attributeToAttribute(e)}}/**
|
|
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 xE{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 o=n.writer,s=o.document.selection;for(const a of this._definitions){const l=o.createAttributeElement("a",a.attributes,{priority:5});a.classes&&o.addClass(a.classes,l);for(const c in a.styles)o.setStyle(c,a.styles[c],l);o.setCustomProperty("link",!0,l),a.callback(t.attributeNewValue)?t.item.is("selection")?o.wrap(s.getFirstRange(),l):o.wrap(n.mapper.toViewRange(t.range),l):o.unwrap(n.mapper.toViewRange(t.range),l)}},{priority:"high"})}}getDispatcherForLinkedImage(){return i=>{i.on("attribute:linkHref:imageBlock",(e,t,{writer:n,mapper:o})=>{const s=o.toViewElement(t.item),a=Array.from(s.getChildren()).find(l=>l.is("element","a"));if(a)for(const l of this._definitions){const c=St(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 SE=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,AE="^(?:(?:<protocols>):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))",PE=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,IE=/^((\w+:(\/{2,})?)|(\W))/i,RE=["https?","ftps?","mailto"],kr="Ctrl+K";function ME(r){return r.is("attributeElement")&&!!r.getCustomProperty("link")}function tu(r,{writer:i}){const e=i.createAttributeElement("a",{href:r},{priority:5});return i.setCustomProperty("link",!0,e),e}function ef(r,i=RE){const e=String(r),t=i.join("|"),n=new RegExp(`${AE.replace("<protocols>",t)}`,"i");return BE(e,n)?e:"#"}function BE(r,i){return!!r.replace(SE,"").match(i)}function VE(r,i){const e={"Open in a new tab":r("Open in a new tab"),Downloadable:r("Downloadable")};return i.forEach(t=>("label"in t&&e[t.label]&&(t.label=e[t.label]),t)),i}function NE(r){const i=[];if(r)for(const[e,t]of Object.entries(r)){const n=Object.assign({},t,{id:`link${sb(e)}`});i.push(n)}return i}function Ws(r,i){return r?i.checkAttribute(r.name,"linkHref"):!1}function DE(r){return PE.test(r)}function nl(r,i){const e=DE(r)?"mailto:":i,t=!!e&&!tf(r);return r&&t?e+r:r}function tf(r){return IE.test(r)}function OE(r){window.open(r,"_blank","noopener")}function qs(r){let i="";for(const e of r.getItems()){if(!e.is("$text")&&!e.is("$textProxy"))return;i+=e.data}return i}class zE extends M{constructor(){super(...arguments);u(this,"manualDecorators",new We);u(this,"automaticDecorators",new xE)}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());Ws(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 o of this.manualDecorators)o.value=this._getDecoratorStateFromModel(o.id)}execute(e,t={},n){const o=this.editor.model,s=o.document.selection,a=[],l=[];for(const c in t)t[c]?a.push(c):l.push(c);o.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=qs(g);if(!p)return g;let w=n;if(w||(w=f&&f==p?e:p),w!=p){const y=FE(p,w);let C=0;for(const{offset:R,actual:z,expected:re}of y){const ee=R+C,x=c.createRange(g.start.getShiftedBy(ee),g.start.getShiftedBy(ee+z.length)),S=UE(x,g).getAttributes(),I=Array.from(S).filter(([ge])=>o.schema.getAttributeProperties(ge).isFormatting),K=c.createText(re,I);d(K),o.insertContent(K,x),C+=re.length}return c.createRange(g.start,g.start.getShiftedBy(w.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(s.isCollapsed){const g=s.getFirstPosition();if(s.hasAttribute("linkHref")){const f=s.getAttribute("linkHref"),p=Eo(g,"linkHref",f,o),w=h(p,f);d(w||p),w&&m(w)}else if(e!==""){const f=St(s.getAttributes());f.set("linkHref",e),a.forEach(w=>{f.set(w,!0)});const p=o.insertContent(c.createText(n||e,f),g);m(p)}}else{const g=Array.from(s.getRanges()),f=o.schema.getValidRanges(g,"linkHref"),p=[];for(const C of s.getSelectedBlocks())o.schema.checkAttribute(C,"linkHref")&&p.push(c.createRangeOn(C));const w=p.slice();for(const C of f)this._isRangeToUpdate(C,p)&&w.push(C);const y=g.map(C=>({start:pe.fromPosition(C.start,"toPrevious"),end:pe.fromPosition(C.end,"toNext")}));for(let C of w){const R=(C.start.textNode||C.start.nodeAfter).getAttribute("linkHref");C=h(C,R)||C,d(C)}c.setSelection(y.map(C=>{const R=C.start.toPosition(),z=C.end.toPosition();return C.start.detach(),C.end.detach(),o.createRange(R,z)}))}})}_getDecoratorStateFromModel(e){const t=this.editor.model,n=t.document.selection,o=n.getSelectedElement();return Ws(o,t.schema)?o.getAttribute(e):n.getAttribute(e)}_isRangeToUpdate(e,t){for(const n of t)if(n.containsRange(e))return!1;return!0}}function FE(r,i){const e=Ni(r,i),t={equal:0,insert:0,delete:0},n=[];let o="",s="";for(const a of[...e,null])a=="insert"?s+=i[t.equal+t.insert]:a=="delete"?o+=r[t.equal+t.delete]:(o.length||s.length)&&(n.push({offset:t.equal,actual:o,expected:s}),o="",s=""),a&&t[a]++;return n}function UE(r,i){if(!r.isCollapsed)return ue(r.getItems());const e=r.start;return e.textNode?e.textNode:!e.nodeBefore||e.isEqual(i.start)?e.nodeAfter:e.nodeBefore}class HE extends M{refresh(){const i=this.editor.model,e=i.document.selection,t=e.getSelectedElement();Ws(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(o=>{const s=t.isCollapsed?[Eo(t.getFirstPosition(),"linkHref",t.getAttribute("linkHref"),e)]:e.schema.getValidRanges(t.getRanges(),"linkHref");for(const a of s)if(o.removeAttribute("linkHref",a),n)for(const l of n.manualDecorators)o.removeAttribute(l.id,a)})}}class WE extends Z(){constructor({id:e,label:t,attributes:n,classes:o,styles:s,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=o,this.styles=s}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const qE="ck-link_selected",iu="automatic",jE="manual",GE=/^(https?:)?\/\//;class so extends v{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[Ad,Ig,lt]}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:tu}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(s,a)=>tu(ef(s,t),a)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:s=>s.getAttribute("href")}}),e.commands.add("link",new zE(e)),e.commands.add("unlink",new HE(e));const n=VE(e.t,NE(e.config.get("link.decorators")));this._enableAutomaticDecorators(n.filter(s=>s.mode===iu)),this._enableManualDecorators(n.filter(s=>s.mode===jE)),e.plugins.get(Ad).registerAttribute("linkHref"),pL(e,"linkHref","a",qE),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,o=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&o.add({id:"linkIsExternal",mode:iu,callback:s=>!!s&&GE.test(s),attributes:{target:"_blank",rel:"noopener noreferrer"}}),o.add(e),o.length&&t.conversion.for("downcast").add(o.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,o=t.commands.get("link").manualDecorators;e.forEach(s=>{t.model.schema.extend("$text",{allowAttributes:s.id});const a=new WE(s);o.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,o=s=>{this._linkOpeners.some(a=>a(s))||OE(s)};this.listenTo(n,"click",(s,a)=>{if(!(A.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&&(s.stop(),a.preventDefault(),o(d))},{context:"$capture"}),this.listenTo(n,"keydown",(s,a)=>{const c=e.commands.get("link").value;c&&a.keyCode===N.enter&&a.altKey&&(s.stop(),o(c))})}_enableSelectionAttributesFixer(){const t=this.editor.model,n=t.document.selection;this.listenTo(n,"change:attribute",(o,{attributeKeys:s})=>{!s.includes("linkHref")||n.hasAttribute("linkHref")||t.change(a=>{KE(a,$E(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",(o,s)=>{t.change(a=>{const l=a.createRangeIn(s.content);for(const c of l.getItems())if(c.hasAttribute("linkHref")){const d=nl(c.getAttribute("linkHref"),n);a.setAttribute("linkHref",d,c)}})})}}function KE(r,i){r.removeSelectionAttribute("linkHref");for(const e of i)r.removeSelectionAttribute(e)}function $E(r){return r.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}class ZE extends P{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 JE extends E{constructor(e,t){super(e);u(this,"focusTracker",new ne);u(this,"keystrokes",new ce);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 _e);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 Ie({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(),qi({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 P(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:qn,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new P(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 ui(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new Gi(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using(t=>{const n=new at(this.locale);return n.children.add(t),n}),e}_createDisplayedTextInput(){const e=this.locale.t,t=new he(this.locale,Ze);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,Ze);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new Te(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new Te(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 YE extends E{constructor(e){super(e);u(this,"focusTracker",new ne);u(this,"keystrokes",new ce);u(this,"backButtonView");u(this,"listView");u(this,"listChildren");u(this,"emptyListInformation");u(this,"children");u(this,"_focusables",new _e);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,o)=>{o?(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 Ie({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 Gi(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const n=new at(this.locale);return n.children.add(t),n}),e}_createBackButton(){const e=this.locale.t,t=new P(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:qn,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new ui(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 XE extends E{constructor(e){super(e);u(this,"focusTracker",new ne);u(this,"keystrokes",new ce);u(this,"backButtonView");u(this,"children");u(this,"listChildren");u(this,"_focusables",new _e);u(this,"_focusCycler");this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new Ie({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 P(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:qn,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new ui(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new Gi(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const n=new at(this.locale);return n.children.add(t),n}),e}}class QE extends P{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 pt;return e.content=Zm,e}}const dt="link-ui";class ex extends v{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 We)}static get requires(){return[Gt,so]}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(Yv),this._balloon=e.plugins.get(Gt),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:dt,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:dt,view:(n,{writer:o})=>{if(!n.markerRange.isCollapsed)return null;const s=o.createUIElement("span");return o.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],s),s}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:kr},{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 oi(e.locale),n=e.commands.get("link");t.class="ck-link-toolbar";let o=e.config.get("link.toolbar");return n.manualDecorators.length||(o=o.filter(s=>s!=="linkProperties")),t.fillFromConfig(o,e.ui.componentFactory),t.keystrokes.set("Esc",(s,a)=>{this._hideUI(),a()}),t.keystrokes.set(kr,(s,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"),o=e.config.get("link.defaultProtocol"),s=new(Os(JE))(e.locale,tx(e));return s.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",a=>a!==void 0),s.urlInputView.bind("isEnabled").to(n,"isEnabled"),s.saveButtonView.bind("isEnabled").to(n,"isEnabled"),s.saveButtonView.bind("label").to(n,"value",a=>t(a?"Update":"Insert")),this.listenTo(s,"submit",()=>{if(s.isValid()){const a=s.urlInputView.fieldView.element.value,l=nl(a,o),c=s.displayedTextInputView.fieldView.element.value;e.execute("link",l,this._getDecoratorSwitchesState(),c!==this.selectedLinkableText?c:void 0),this._closeFormView()}}),this.listenTo(s.urlInputView,"change:errorText",()=>{e.ui.update()}),this.listenTo(s,"cancel",()=>{this._closeFormView()}),s.keystrokes.set("Esc",(a,l)=>{this._closeFormView(),l()}),s.providersListChildren.bindTo(this._linksProviders).using(a=>this._createLinksListProviderButton(a)),s}_createLinkProviderListView(e){return e.getListItems().map(({href:t,label:n,icon:o})=>{const s=new P;return s.set({label:n,icon:o,tooltip:!1,withText:!0}),s.on("execute",()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=t,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),s})}_createLinkProviderItemsView(e){const t=this.editor,n=t.locale.t,o=new YE(t.locale),{emptyListPlaceholder:s,label:a}=e;return o.emptyListPlaceholder=s||n("No links available"),o.title=a,this.listenTo(o,"cancel",()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),o}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),n=new(Os(XE))(e.locale);return this.listenTo(n,"back",()=>{e.editing.view.focus(),this._removePropertiesView()}),n.listChildren.bindTo(t.manualDecorators).using(o=>{const s=new Kn(e.locale);return s.set({label:o.label,withText:!0}),s.bind("isOn").toMany([o,t],"value",(a,l)=>l===void 0&&a===void 0?!!o.defaultValue:!!a),s.on("execute",()=>{o.set("value",!s.isOn),e.execute("link",t.value,this._getDecoratorSwitchesState())}),s}),n}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce((t,n)=>{const o=e.value===void 0&&n.value===void 0?n.defaultValue:n.value;return{...t,[n.id]:!!o}},{})}_registerEditingOpeners(){this.editor.plugins.get(so)._registerLinkOpener(t=>{const n=this._getLinkProviderLinkByHref(t);if(!n)return!1;const{item:o,provider:s}=n;return s.navigate?s.navigate(o):!1})}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",()=>{const t=this._createButton(P);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:link",()=>{const t=this._createButton(ke);return t.set({role:"menuitemcheckbox"}),t}),e.ui.componentFactory.add("linkPreview",t=>{const n=new ZE(t),o=e.config.get("link.allowedProtocols"),s=e.commands.get("link"),a=t.t;n.bind("isEnabled").to(s,"value",c=>!!c),n.bind("href").to(s,"value",c=>c&&ef(c,o));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(s.value),this.listenTo(s,"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"),o=new P(t),s=t.t;return o.set({label:s("Unlink"),icon:z0,tooltip:!0}),o.bind("isEnabled").to(n),this.listenTo(o,"execute",()=>{e.execute("unlink"),this._hideUI()}),o}),e.ui.componentFactory.add("editLink",t=>{const n=e.commands.get("link"),o=new P(t),s=t.t;return o.set({label:s("Edit link"),icon:v0,tooltip:!0}),o.bind("isEnabled").to(n),this.listenTo(o,"execute",()=>{this._addFormView()}),o}),e.ui.componentFactory.add("linkProperties",t=>{const n=e.commands.get("link"),o=new P(t),s=t.t;return o.set({label:s("Link properties"),icon:S0,tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled",n,"value",n,"manualDecorators",(a,l,c)=>a&&!!l&&c.length>0),this.listenTo(o,"execute",()=>{this._addPropertiesView()}),o})}_createLinksListProviderButton(e){const t=this.editor.locale,n=new QE(t);return n.set({label:e.label}),this.listenTo(n,"execute",()=>{this._showLinksProviderView(e)}),n}_createButton(e){const t=this.editor,n=t.locale,o=t.commands.get("link"),s=new e(t.locale),a=n.t;return s.set({label:a("Link"),icon:a0,keystroke:kr,isToggleable:!0}),s.bind("isEnabled").to(o,"isEnabled"),s.bind("isOn").to(o,"value",l=>!!l),this.listenTo(s,"execute",()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()}),s}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),e.keystrokes.set(kr,(n,o)=>{o(),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())}),Wi({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(),o=a();const s=()=>{const l=this._getSelectedLinkElement(),c=a();n&&!l||!n&&c!==o?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=l,o=c};function a(){return t.selection.focus.getAncestors().reverse().find(l=>l.is("element"))}this.listenTo(e.ui,"update",s),this.listenTo(this._balloon,"change:visibleView",s)}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(dt)){const o=this.editor.editing.mapper.markerNameToElements(dt);if(o){const s=Array.from(o),a=e.createRange(e.createPositionBefore(s[0]),e.createPositionAfter(s[s.length-1]));return{target:e.domConverter.viewRangeToDom(a)}}}return{target:()=>{const o=this._getSelectedLinkElement();return o?e.domConverter.mapViewToDom(o):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,n=t.getSelectedElement();if(t.isCollapsed||n&&ae(n))return gs(t.getFirstPosition());{const o=t.getFirstRange().getTrimmed(),s=gs(o.start),a=gs(o.end);return!s||s!=a?null:e.createRangeIn(s).getTrimmed().isEqual(o)?s:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,n=this._getSelectedLinkElement();if(!n)return qs(e.document.selection.getFirstRange());const o=t.view.createRangeOn(n),s=t.mapper.toModelRange(o);return qs(s)}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const n=t.getItem?t.getItem(e):t.getListItems().find(o=>o.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(dt))t.updateMarker(dt,{range:n});else if(n.start.isAtEnd){const o=n.start.getLastMatchingPosition(({item:s})=>!e.schema.isContent(s),{boundaries:n});t.addMarker(dt,{usingOperation:!1,affectsData:!1,range:t.createRange(o,n.end)})}else t.addMarker(dt,{usingOperation:!1,affectsData:!1,range:n})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(dt)&&e.change(t=>{t.removeMarker(dt)})}}function gs(r){return r.getAncestors().find(i=>ME(i))||null}function tx(r){const i=r.t,e=r.config.get("link.allowCreatingEmptyLinks");return[t=>{if(!e&&!t.url.length)return i("Link URL must not be empty.")}]}const ix=4,nf=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"),nx=2;class rx extends v{static get requires(){return[$i,so]}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")?Eo(e,"linkHref",e.textNode.getAttribute("linkHref"),i):null}_selectEntireLinks(i,e){const n=this.editor.model,o=n.document.selection,s=o.getFirstPosition(),a=o.getLastPosition();let l=e.getJoined(this._expandLinkRange(n,s)||e);l&&(l=l.getJoined(this._expandLinkRange(n,a)||e)),l&&(l.start.isBefore(s)||l.end.isAfter(a))&&i.setSelection(l)}_enablePasteLinking(){const i=this.editor,e=i.model,t=e.document.selection,n=i.plugins.get("ClipboardPipeline"),o=i.commands.get("link");n.on("inputTransformation",(s,a)=>{if(!this.isEnabled||!o.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(nf);d&&d[2]===c&&(e.change(h=>{this._selectEntireLinks(h,l),o.execute(c)}),s.stop())},{priority:"high"})}_enableTypingHandling(){const i=this.editor,e=new fL(i.model,t=>{let n=t;if(!ox(n))return;n=n.slice(0,-1),"!.:,;?".includes(n[n.length-1])&&(n=n.slice(0,-1));const o=nu(n);if(o)return{url:o,removedTrailingCharacters:t.length-n.length}});e.on("matched:data",(t,n)=>{const{batch:o,range:s,url:a,removedTrailingCharacters:l}=n;if(!o.isTyping)return;const c=s.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 s;const n=e.document.selection.getFirstPosition();let o;(s=n.parent.previousSibling)!=null&&s.is("element")?o=e.createRangeIn(n.parent.previousSibling):o=e.createRange(e.createPositionAt(n.parent,0),n),this._checkAndApplyAutoLinkOnRange(o)})}_enableShiftEnterHandling(){const i=this.editor,e=i.model,t=i.commands.get("shiftEnter");t&&t.on("execute",()=>{const n=e.document.selection.getFirstPosition(),o=e.createRange(e.createPositionAt(n.parent,0),n.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(o)})}_checkAndApplyAutoLinkOnRange(i){const e=this.editor.model,{text:t,range:n}=Mg(i,e),o=nu(t);if(o){const s=e.createRange(n.end.getShiftedBy(-o.length),n.end);this._applyAutoLink(o,s)}}_applyAutoLink(i,e){const t=this.editor.model,n=this.editor.config.get("link.defaultProtocol"),o=nl(i,n);!this.isEnabled||!sx(e,t)||!tf(o)||ax(e)||this._persistAutoLink(o,e)}_persistAutoLink(i,e){const t=this.editor.model,n=this.editor.plugins.get("Delete");t.enqueueChange(o=>{o.setAttribute("linkHref",i,e),t.enqueueChange(()=>{n.requestUndoOnBackspace()})})}}function ox(r){return r.length>ix&&r[r.length-1]===" "&&r[r.length-2]!==" "}function nu(r){const i=nf.exec(r);return i?i[nx]:null}function sx(r,i){return i.schema.checkAttributeInSelection(i.createSelection(r),"linkHref")}function ax(r){const i=r.start.nodeAfter;return!!i&&i.hasAttribute("linkHref")}class lx extends v{static get requires(){return[so,ex,rx]}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 Ye{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=Q(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 Jn(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 Jn{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(!X(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 cx{constructor(i){u(this,"_listHead");this._listHead=i}[Symbol.iterator](){return new Jn(this._listHead)}}class Fi{static next(){return Ve()}}function X(r){return!!r&&r.is("element")&&r.hasAttribute("listItemId")}function rl(r,i={}){return[...Kt(r,{...i,direction:"backward"}),...Kt(r,{...i,direction:"forward"})]}function Kt(r,i={}){const e=i.direction=="forward",t=Array.from(new Ye(r,{...i,includeSelf:e,sameIndent:!0,sameAttributes:"listItemId"}));return e?t:t.reverse()}function dx(r){return Array.from(new Ye(r,{direction:"forward",higherIndent:!0}))}function rf(r,i){const e=new Ye(r,{sameIndent:!0,sameAttributes:"listType",...i}),t=new Ye(r,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward",...i});return[...Array.from(e).reverse(),...t]}function si(r){return!Ye.first(r,{sameIndent:!0,sameAttributes:"listItemId"})}function ru(r){return!Ye.first(r,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function Yn(r,i={}){r=Q(r);const e=i.withNested!==!1,t=new Set;for(const n of r)for(const o of rl(n,{higherIndent:e}))t.add(o);return hi(t)}function Ao(r){r=Q(r);const i=new Set;for(const e of r)for(const t of rf(e))i.add(t);return hi(i)}function ol(r,i){const e=Kt(r,{direction:"forward"}),t=Fi.next();for(const n of e)i.setAttribute("listItemId",t,n);return e}function js(r,i,e){const t={};for(const[o,s]of i.getAttributes())o.startsWith("list")&&(t[o]=s);const n=Kt(r,{direction:"forward"});for(const o of n)e.setAttributes(t,o);return n}function Gs(r,i,{expand:e,indentBy:t=1}={}){r=Q(r);const n=e?Yn(r):r;for(const o of n){const s=o.getAttribute("listIndent")+t;s<0?Po(o,i):i.setAttribute("listIndent",s,o)}return n}function ux(r,i){r=Q(r);const e=Yn(r),t=new Set,n=Math.min(...e.map(s=>s.getAttribute("listIndent"))),o=new Map;for(const s of e)o.set(s,Ye.first(s,{lowerIndent:!0}));for(const s of e){if(t.has(s))continue;t.add(s);const a=s.getAttribute("listIndent")-1;if(a<0){Po(s,i);continue}if(s.getAttribute("listIndent")==n){const l=mx(s,o.get(s),i);for(const c of l)t.add(c);if(l.length)continue}i.setAttribute("listIndent",a,s)}return hi(t)}function Po(r,i){r=Q(r);for(const e of r)e.is("element","listItem")&&i.rename(e,"paragraph");for(const e of r)for(const t of e.getAttributeKeys())t.startsWith("list")&&i.removeAttribute(t,e);return r}function Un(r){if(!r.length)return!1;const i=r[0].getAttribute("listItemId");return i?!r.some(e=>e.getAttribute("listItemId")!=i):!1}function hx(r,i){const e=[];let t=Number.POSITIVE_INFINITY;for(const{node:n}of new Jn(r.nextSibling)){const o=n.getAttribute("listIndent");if(o==0)break;o<t&&(t=o);const s=o-t;i.setAttribute("listIndent",s,n),e.push(n)}return e}function hi(r){return Array.from(r).filter(i=>i.root.rootName!=="$graveyard").sort((i,e)=>i.index-e.index)}function Hn(r){const i=r.document.selection.getSelectedElement();return i&&r.schema.isObject(i)&&r.schema.isBlock(i)?i:null}function fs(r,i){return i.checkChild(r.parent,"listItem")&&i.checkChild(r,"$text")&&!i.isObject(r)}function ao(r){return r=="numbered"||r=="customNumbered"}function mx(r,i,e){return Kt(i,{direction:"forward"}).pop().index>r.index?js(r,i,e):[]}class ou extends M{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 o=[];Un(t)&&!si(t[0])?(this._direction=="forward"&&o.push(...Gs(t,n)),o.push(...ol(t[0],n))):this._direction=="forward"?o.push(...Gs(t,n,{expand:!0})):o.push(...ux(t,n));for(const s of o){if(!s.hasAttribute("listType"))continue;const a=Ye.first(s,{sameIndent:!0});a&&n.setAttribute("listType",a.getAttribute("listType"),s)}this._fireAfterExecute(o)})}_fireAfterExecute(e){this.fire("afterExecute",hi(new Set(e)))}_checkEnabled(){let e=su(this.editor.model.document.selection),t=e[0];if(!t)return!1;if(this._direction=="backward"||Un(e)&&!si(e[0]))return!0;e=Yn(e),t=e[0];const n=Ye.first(t,{sameIndent:!0});return n?n.getAttribute("listType")==t.getAttribute("listType"):!1}}function su(r){const i=Array.from(r.getSelectedBlocks()),e=i.findIndex(t=>!X(t));return e!=-1&&(i.length=e),i}class yr extends M{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,o=Hn(t),s=Array.from(n.selection.getSelectedBlocks()).filter(l=>t.schema.checkAttribute(l,"listType")||fs(l,t.schema)),a=e.forceValue!==void 0?!e.forceValue:this.value;t.change(l=>{if(a){const c=s[s.length-1],d=Kt(c,{direction:"forward"}),h=[];d.length>1&&h.push(...ol(d[1],l)),h.push(...Po(s,l)),h.push(...hx(c,l)),this._fireAfterExecute(h)}else if((o||n.selection.isCollapsed)&&X(s[0])){const c=rf(o||s[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 s)if(!d.hasAttribute("listType"))!d.is("element","listItem")&&fs(d,t.schema)&&l.rename(d,"listItem"),l.setAttributes({...e.additionalAttributes,listIndent:0,listItemId:Fi.next(),listType:this.type},d),c.push(d);else for(const h of Yn(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",hi(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,o=Array.from(n.getSelectedBlocks());if(!o.length)return!1;if(this.value)return!0;for(const s of o)if(t.checkAttribute(s,"listType")||fs(s,t))return!0;return!1}}class au extends M{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,o=[];t.change(s=>{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=dx(l);o.push(...Gs([l,...m],s,{indentBy:c-d,expand:c<d}))}if(e){let m=n;n.isCollapsed&&(m=s.createSelection(s.createRange(s.createPositionAt(a,"end"),s.createPositionAt(l,0)))),t.deleteContent(m,{doNotResetEntireContent:n.isCollapsed});const g=m.getLastPosition().parent,f=g.nextSibling;o.push(g),f&&f!==l&&f.getAttribute("listItemId")==h&&o.push(...js(f,g,s))}else o.push(...js(l,a,s));this._fireAfterExecute(o)})}_fireAfterExecute(e){this.fire("afterExecute",hi(new Set(e)))}_checkEnabled(){const e=this.editor.model,t=e.document.selection,n=Hn(e);if(t.isCollapsed||n){const o=n||t.getFirstPosition().parent;if(!X(o))return!1;const s=this._direction=="backward"?o.previousSibling:o.nextSibling;if(!s||Un([o,s]))return!1}else{const o=t.getLastPosition(),s=t.getFirstPosition();if(o.parent===s.parent||!X(o.parent))return!1}return!0}_getMergeSubjectElements(e,t){const n=this.editor.model,o=Hn(n);let s,a;if(e.isCollapsed||o){const l=o||e.getFirstPosition().parent,c=si(l);this._direction=="backward"?(a=l,c&&!t?s=Ye.first(l,{sameIndent:!0,lowerIndent:!0}):s=l.previousSibling):(s=l,a=l.nextSibling)}else s=e.getFirstPosition().parent,a=e.getLastPosition().parent;return{firstElement:s,lastElement:a}}}class lu extends M{constructor(e,t){super(e);u(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change(t=>{const n=ol(this._getStartBlock(),t);this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",hi(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&X(t)&&!si(t)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return this._direction=="before"?t:t.nextSibling}}class gx extends v{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(i){return Ao(i)}isFirstBlockOfListItem(i){return si(i)}isListItemBlock(i){return X(i)}expandListBlocksToCompleteItems(i,e={}){return Yn(i,e)}isNumberedListType(i){return ao(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 fx(r){return r.is("element","ol")||r.is("element","ul")}function Ks(r){return r.is("element","li")}function px(r){let i=0,e=r.parent;for(;e;){if(Ks(e))i++;else{const t=e.previousSibling;t&&Ks(t)&&i++}e=e.parent}return i}function bx(r,i,e,t=sf(e,i)){return r.createAttributeElement(of(e),null,{priority:2*i/100-100,id:t})}function wx(r,i,e){return r.createAttributeElement("li",null,{priority:(2*i+1)/100-100,id:e})}function of(r){return r=="numbered"||r=="customNumbered"?"ol":"ul"}function sf(r,i){return`list-${r}-${i}`}function tt(r,i,e){const t=r.nodeBefore;if(X(t)){let n=t;for(const{node:o}of new Jn(n,"backward"))if(n=o,e.has(n)||(e.add(n),i.has(t)))return;i.add(n)}else{const n=r.nodeAfter;X(n)&&i.add(n)}}function kx(r,i){let e=0,t=-1,n=null,o=!1;for(const{node:s}of r){const a=s.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,s),o=!0,t=l}else n=null,e=a+1,t=a}return o}function yx(r,i,e){const t=new Set;let n=!1;for(const{node:o}of r){if(t.has(o))continue;let s=o.getAttribute("listType"),a=o.getAttribute("listItemId");if(i.has(a)&&(a=Fi.next()),i.add(a),o.is("element","listItem")){o.getAttribute("listItemId")!=a&&(e.setAttribute("listItemId",a,o),n=!0);continue}for(const l of Kt(o,{direction:"forward"}))t.add(l),l.getAttribute("listType")!=s&&(a=Fi.next(),s=l.getAttribute("listType")),l.getAttribute("listItemId")!=a&&(e.setAttribute("listItemId",a,l),n=!0)}return n}function vx(){return(r,i,e)=>{const{writer:t,schema:n}=e;if(!i.modelRange)return;const o=Array.from(i.modelRange.getItems({shallow:!0})).filter(h=>n.checkAttribute(h,"listItemId"));if(!o.length)return;const s=Fi.next(),a=px(i.viewItem);let l=i.viewItem.parent&&i.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=o[0].getAttribute("listType");c&&(l=c);const d={listItemId:s,listIndent:a,listType:l};for(const h of o)h.hasAttribute("listItemId")||t.setAttributes(d,h);o.length>1&&o[1].getAttribute("listItemId")!=d.listItemId&&e.keepEmptyElement(o[0])}}function _x(r,i,e,t){return()=>{const a=r.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")tt(m.position,c,h),m.attributes.has("listItemId")?d.add(m.position.nodeAfter):tt(m.position.getShiftedBy(m.length),c,h);else if(m.type=="remove"&&m.attributes.has("listItemId"))tt(m.position,c,h);else if(m.type=="attribute"){const g=m.range.start.nodeAfter;e.includes(m.attributeKey)?(tt(m.range.start,c,h),m.attributeNewValue===null?(tt(m.range.start.getShiftedBy(1),c,h),o(g)&&l.push(g)):d.add(g)):X(g)&&o(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 Jn(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(([w])=>e.includes(w)));const p=Kt(m,{direction:"forward"});for(const w of p)d.add(w),(o(w,p)||s(w,h,l))&&c.push(w)}return c}function o(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=lf(a,e,l);return h&&c.is("element","p")?!0:!!(!h&&c.is("element","span"))}function s(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=Ks(m),f=fx(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 cu(r,i,e,{dataPipeline:t}={}){const n=Ax(r);return(o,s,a)=>{const{writer:l,mapper:c,consumable:d}=a,h=s.item;if(!r.includes(s.attributeKey)||!n(h,d))return;const m=Lx(h,c,e);af(m,l,c),xx(m,l);const g=Ex(h,m,i,l,{dataPipeline:t});Sx(h,g,i,l)}}function Cx(r){return(i,e,t)=>{const{writer:n,mapper:o}=t,s=i.name.split(":")[1];if(!r.checkAttribute(s,"listItemId"))return;const a=o.toViewPosition(e.position),l=e.position.getShiftedBy(e.length),c=o.toViewPosition(l,{isPhantom:!0}),h=n.createRange(a,c).getTrimmed().end.nodeBefore;/* istanbul ignore next -- @preserve */h&&af(h,n,o)}}function du(r,{dataPipeline:i}={}){return(e,{writer:t})=>{if(!lf(e,r))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 Lx(r,i,e){const t=e.createRangeOn(r);return i.toViewRange(t).getTrimmed().end.nodeBefore}function Tx(r,i){return(e,t)=>{if(t.modelPosition.offset>0)return;const n=t.modelPosition.parent;if(!X(n)||!r.some(c=>c.scope=="itemMarker"&&c.canInjectMarkerIntoElement&&c.canInjectMarkerIntoElement(n)))return;const o=t.mapper.toViewElement(n),s=i.createRangeIn(o),a=s.getWalker();let l=s.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 af(r,i,e){for(;r.parent.is("attributeElement")&&r.parent.getCustomProperty("listItemWrapper");)i.unwrap(i.createRangeOn(r),r.parent);const t=[];n(i.createPositionBefore(r).getWalker({direction:"backward"})),n(i.createRangeIn(r).getWalker());for(const o of t)i.remove(o);function n(o){for(const{item:s}of o){if(s.is("element")&&e.toModelElement(s))break;s.is("element")&&s.getCustomProperty("listItemMarker")&&t.push(s)}}}function Ex(r,i,e,t,{dataPipeline:n}){let o=t.createRangeOn(i);if(!si(r))return o;for(const s of e){if(s.scope!="itemMarker")continue;const a=s.createElement(t,r,{dataPipeline:n});if(!a||(t.setCustomProperty("listItemMarker",!0,a),s.canInjectMarkerIntoElement&&s.canInjectMarkerIntoElement(r)?t.insert(t.createPositionAt(i,0),a):(t.insert(o.start,a),o=t.createRange(t.createPositionBefore(a),t.createPositionAfter(i))),!s.createWrapperElement||!s.canWrapElement))continue;const l=s.createWrapperElement(t,r,{dataPipeline:n});t.setCustomProperty("listItemWrapper",!0,l),s.canWrapElement(r)?o=t.wrap(o,l):(o=t.wrap(t.createRangeOn(a),l),o=t.createRange(o.start,t.createPositionAfter(i)))}return o}function xx(r,i){let e=r.parent;for(;e.is("attributeElement")&&["ul","ol","li"].includes(e.name);){const t=e.parent;i.unwrap(i.createRangeOn(r),e),e=t}}function Sx(r,i,e,t){if(!r.hasAttribute("listIndent"))return;const n=r.getAttribute("listIndent");let o=r;for(let s=n;s>=0;s--){const a=wx(t,s,o.getAttribute("listItemId")),l=bx(t,s,o.getAttribute("listType"));for(const c of e)(c.scope=="list"||c.scope=="item")&&o.hasAttribute(c.attributeName)&&c.setAttributeOnDowncast(t,o.getAttribute(c.attributeName),c.scope=="list"?l:a);if(i=t.wrap(i,a),i=t.wrap(i,l),s==0||(o=Ye.first(o,{lowerIndent:!0}),!o))break}}function Ax(r){return(i,e)=>{const t=[];for(const n of r)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 lf(r,i,e=rl(r)){if(!X(r))return!1;for(const t of r.getAttributeKeys())if(!(t.startsWith("selection:")||t=="htmlEmptyBlock")&&!i.includes(t))return!1;return e.length<2}const Rr=["listType","listIndent","listItemId"];class $s extends v{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[xo,$i,gx,lt]}init(){const e=this.editor,t=e.model,n=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new b("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:Rr}),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 o of Rr)t.schema.setAttributeProperties(o,{copyOnReplace:!0});e.commands.add("numberedList",new yr(e,"numbered")),e.commands.add("bulletedList",new yr(e,"bulleted")),e.commands.add("customNumberedList",new yr(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new yr(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new ou(e,"forward")),e.commands.add("outdentList",new ou(e,"backward")),e.commands.add("splitListItemBefore",new lu(e,"before")),e.commands.add("splitListItemAfter",new lu(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"),o=t.get("outdent");n&&n.registerChildCommand(t.get("indentList"),{priority:"high"}),o&&o.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...Rr,...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",(o,s)=>{const a=e.model.document.selection;Hn(e.model)||e.model.change(()=>{const l=a.getFirstPosition();if(a.isCollapsed&&s.direction=="backward"){if(!l.isAtStart)return;const c=l.parent;if(!X(c))return;if(!Ye.first(c,{sameAttributes:"listType",sameIndent:!0})&&c.getAttribute("listIndent")===0)ru(c)||e.execute("splitListItemAfter"),e.execute("outdentList");else{if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:uu(e.model,"backward")})}s.preventDefault(),o.stop()}else{if(a.isCollapsed&&!a.getLastPosition().isAtEnd||!n||!n.isEnabled)return;n.execute({shouldMergeOnBlocksContentLevel:uu(e.model,"forward")}),s.preventDefault(),o.stop()}})},{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,n=e.commands,o=n.get("enter");this.listenTo(e.editing.view.document,"enter",(s,a)=>{const l=t.document,c=l.selection.getFirstPosition().parent;if(l.selection.isCollapsed&&X(c)&&c.isEmpty&&!a.isSoft){const d=si(c),h=ru(c);d&&h?(e.execute("outdentList"),a.preventDefault(),s.stop()):d&&!h?(e.execute("splitListItemAfter"),a.preventDefault(),s.stop()):h&&(e.execute("splitListItemBefore"),a.preventDefault(),s.stop())}},{context:"li"}),this.listenTo(o,"afterExecute",()=>{const s=n.get("splitListItemBefore");if(s.refresh(),!s.isEnabled)return;const l=e.model.document.selection.getLastPosition().parent;rl(l).length===2&&s.execute()})}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",(t,n)=>{const o=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(o).isEnabled&&(e.execute(o),n.stopPropagation(),n.preventDefault(),t.stop())},{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,n=this.getListAttributeNames(),o=e.config.get("list.multiBlock"),s=o?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(l,{writer:c})=>c.createElement(s,{listType:""})}).elementToElement({view:"p",model:(l,{writer:c})=>l.parent&&l.parent.is("element","li")?c.createElement(s,{listType:""}):null,converterPriority:"high"}).add(l=>{l.on("element:li",vx())}),o||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:s,view:du(n),converterPriority:"high"}).add(l=>{l.on("attribute",cu(n,this._downcastStrategies,t)),l.on("remove",Cx(t.schema))}),e.conversion.for("dataDowncast").elementToElement({model:s,view:du(n,{dataPipeline:!0}),converterPriority:"high"}).add(l=>{l.on("attribute",cu(n,this._downcastStrategies,t,{dataPipeline:!0}))});const a=Tx(this._downcastStrategies,e.editing.view);e.editing.mapper.on("modelToViewPosition",a),e.data.mapper.on("modelToViewPosition",a),this.listenTo(t.document,"change:data",_x(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!=of(d.listType)||c.id!=sf(d.listType,d.listIndent))&&(l.return=!0,l.stop())})}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer(n=>Px(e,n,t,this)),this.on("postFixer",(n,{listNodes:o,writer:s})=>{n.return=kx(o,s)||n.return},{priority:"high"}),this.on("postFixer",(n,{listNodes:o,writer:s,seenIds:a})=>{n.return=yx(o,a,s)||n.return},{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",Ix(e),{priority:"high"}),this.listenTo(t,"outputTransformation",(n,o)=>{e.change(s=>{const a=Array.from(o.content.getChildren()),l=a[a.length-1];if(a.length>1&&l.is("element")&&l.isEmpty&&a.slice(0,-1).every(X)&&s.remove(l),o.method=="copy"||o.method=="cut"){const c=Array.from(o.content.getChildren());Un(c)&&Po(c,s)}})})}_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 Px(r,i,e,t){const n=r.document.differ.getChanges(),o=new Set,s=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(!r.schema.checkAttribute(h,"listItemId"))for(const m of Array.from(h.getAttributeKeys()))e.includes(m)&&(i.removeAttribute(m,h),l=!0);tt(d.position,s,o),d.attributes.has("listItemId")||tt(d.position.getShiftedBy(d.length),s,o);for(const{item:m,previousPosition:g}of r.createRangeIn(h))X(m)&&tt(g,s,o)}else d.type=="remove"?tt(d.position,s,o):d.type=="attribute"&&e.includes(d.attributeKey)&&(tt(d.range.start,s,o),d.attributeNewValue===null&&tt(d.range.start.getShiftedBy(1),s,o));if(!a&&d.type=="attribute"&&Rr.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 s.values())l=t.fire("postFixer",{listNodes:new cx(d),listHead:d,writer:i,seenIds:c})||l;return l}function Ix(r){return(i,[e,t])=>{const n=e.is("documentFragment")?Array.from(e.getChildren()):[e];if(!n.length)return;const s=(t?r.createSelection(t):r.document.selection).getFirstPosition();let a;if(X(s.parent))a=s.parent;else if(X(s.nodeBefore)&&X(s.nodeAfter))a=s.nodeBefore;else return;r.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=X(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"):Fi.next(),listType:c},g)}})}}function uu(r,i){const e=r.document.selection;if(!e.isCollapsed)return!Hn(r);if(i==="forward")return!0;const n=e.getFirstPosition().parent,o=n.previousSibling;return r.schema.isObject(o)?!1:o.isEmpty?!0:Un([n,o])}function hu(r,i,e,t){r.ui.componentFactory.add(i,()=>{const n=mu(P,r,i,e,t);return n.set({tooltip:!0,isToggleable:!0}),n}),r.ui.componentFactory.add(`menuBar:${i}`,()=>{const n=mu(ke,r,i,e,t);return n.set({role:"menuitemcheckbox",isToggleable:!0}),n})}function mu(r,i,e,t,n){const o=i.commands.get(e),s=new r(i.locale);return s.set({label:t,icon:n}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.on("execute",()=>{i.execute(e),i.editing.view.focus()}),s}class Rx extends v{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||hu(this.editor,"numberedList",i("Numbered List"),za),this.editor.ui.componentFactory.has("bulletedList")||hu(this.editor,"bulletedList",i("Bulleted List"),Oa)}}class Mx extends v{static get requires(){return[$s,Rx]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}}class Bx extends M{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(o=>X(o)&&ao(o.getAttribute("listType")));n=Ao(n),e.change(o=>{for(const s of n)o.setAttribute("listStart",i>=0?i:1,s)})}_getValue(){const e=this.editor.model.document,t=ue(e.selection.getSelectedBlocks());return t&&X(t)&&ao(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 cf={},df={},uf={},hf=[{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:r,typeAttribute:i,listType:e}of hf)cf[r]=e,df[r]=i,i&&(uf[i]=r);function mf(){return hf.map(r=>r.listStyle)}function sl(r){return cf[r]||null}function gf(r){return uf[r]||null}function Zs(r){return df[r]||null}function Vx(r){switch(r){case"lower-alpha":return"lower-latin";case"upper-alpha":return"upper-latin";default:return r}}class Nx extends M{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(o=>{this._tryToConvertItemsToList(e);let s=Array.from(n.selection.getSelectedBlocks()).filter(a=>a.hasAttribute("listType"));if(s.length){s=Ao(s);for(const a of s)o.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 X(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=sl(e.type);if(!t)return;const n=this.editor,o=`${t}List`;n.commands.get(o).value||n.execute(o)}}class Dx extends M{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(o=>X(o)&&o.getAttribute("listType")=="numbered");n=Ao(n),e.change(o=>{for(const s of n)o.setAttribute("listReversed",!!i.reversed,s)})}_getValue(){const e=this.editor.model.document,t=ue(e.selection.getSelectedBlocks());return X(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 gu(r){return(i,e,t)=>{const{writer:n,schema:o,consumable:s}=t;if(s.test(e.viewItem,r.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}))o.checkAttribute(l,r.attributeName)&&r.appliesToListItem(l)&&(l.hasAttribute(r.attributeName)||(n.setAttribute(r.attributeName,r.getAttributeOnUpcast(e.viewItem),l),a=!0));a&&s.consume(e.viewItem,r.viewConsumables)}}class Ox extends v{static get pluginName(){return"ListPropertiesUtils"}static get isOfficialPlugin(){return!0}getAllSupportedStyleTypes(){return mf()}getListTypeFromListStyleType(i){return sl(i)}getListStyleTypeFromTypeAttribute(i){return gf(i)}getTypeAttributeFromListStyleType(i){return Zs(i)}}function ff(r){const{startIndex:i,reversed:e,styles:t}=r;return{styles:zx(t),startIndex:i||!1,reversed:e||!1}}function zx(r){const i={listTypes:["bulleted","numbered"],useAttribute:!1};return r===!0||(r?Array.isArray(r)||typeof r=="string"?i.listTypes=Q(r):(i.listTypes=r.listTypes?Q(r.listTypes):i.listTypes,i.useAttribute=!!r.useAttribute,r.listStyleTypes&&(i.listStyleTypes=r.listStyleTypes)):i.listTypes=[]),i}const an="default";class Fx extends v{static get requires(){return[$s,Ox]}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($s),n=i.config.get("list.properties"),o=Ux(n);for(const s of o)s.addCommand(i),e.schema.extend("$listItem",{allowAttributes:s.attributeName}),t.registerDowncastStrategy({scope:"list",attributeName:s.attributeName,setAttributeOnDowncast(a,l,c){s.setAttributeOnDowncast(a,l,c)}});i.conversion.for("upcast").add(s=>{for(const a of o)s.on("element:ol",gu(a)),s.on("element:ul",gu(a))}),t.on("checkAttributes:list",(s,{viewElement:a,modelAttributes:l})=>{for(const c of o)c.getAttributeOnUpcast(a)!=l[c.attributeName]&&(s.return=!0,s.stop())}),this.listenTo(i.commands.get("indentList"),"afterExecute",(s,a)=>{e.change(l=>{for(const c of a)for(const d of o)d.appliesToListItem(c)&&l.setAttribute(d.attributeName,d.defaultValue,c)})}),t.on("postFixer",(s,{listNodes:a,writer:l})=>{for(const{node:c}of a)for(const d of o)d.hasValidAttribute(c)||(d.appliesToListItem(c)?l.setAttribute(d.attributeName,d.defaultValue,c):l.removeAttribute(d.attributeName,c),s.return=!0)}),t.on("postFixer",(s,{listNodes:a,writer:l})=>{for(const{node:c,previousNodeInList:d}of a)if(d&&d.getAttribute("listType")==c.getAttribute("listType"))for(const h of o){const{attributeName:m}=h;if(!h.appliesToListItem(c))continue;const g=d.getAttribute(m);c.getAttribute(m)!=g&&(l.setAttribute(m,g,c),s.return=!0)}})}}function Ux(r){const i=[],e=ff(r);if(r.styles){const t=e.styles.useAttribute;i.push({attributeName:"listStyle",defaultValue:an,viewConsumables:{styles:"list-style-type"},addCommand(n){let o=mf();t&&(o=o.filter(s=>!!Zs(s))),n.commands.add("listStyle",new Nx(n,an,o))},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 o=n.getAttribute("listStyle");return o==an?!0:sl(o)==n.getAttribute("listType")},setAttributeOnDowncast(n,o,s){if(o&&o!==an)if(t){const a=Zs(o);if(a){n.setAttribute("type",a,s);return}}else{n.setStyle("list-style-type",o,s);return}n.removeStyle("list-style-type",s),n.removeAttribute("type",s)},getAttributeOnUpcast(n){const o=n.getStyle("list-style-type");if(o)return Vx(o);const s=n.getAttribute("type");return s?gf(s):an}})}return r.reversed&&i.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new Dx(t))},appliesToListItem(t){return t.getAttribute("listType")=="numbered"},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,n,o){n?t.setAttribute("reversed","reversed",o):t.removeAttribute("reversed",o)},getAttributeOnUpcast(t){return t.hasAttribute("reversed")}}),r.startIndex&&i.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new Bx(t))},appliesToListItem(t){return ao(t.getAttribute("listType"))},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,n,o){n==0||n>1?t.setAttribute("start",n,o):t.removeAttribute("start",o)},getAttributeOnUpcast(t){const n=t.getAttribute("start");return n>=0?n:1}}),i}class pf extends E{constructor(e,{enabledProperties:t,styleButtonViews:n,styleGridAriaLabel:o}){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 ne);u(this,"keystrokes",new ce);u(this,"focusables",new _e);u(this,"focusCycler");const s=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new Ie({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),n&&n.length?(this.stylesView=this._createStylesView(n,o),this.children.add(this.stylesView)):s.push("ck-list-properties_without-styles"),(t.startIndex||t.reversed)&&(this._addNumberedListPropertyViews(t),s.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:s},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);qa({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 o of this.children)if(o instanceof P&&o.isOn){o.focus();return}this.children.first.focus()},n.focusTracker=new ne,n.keystrokes=new ce,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 cg(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:t("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",(...o)=>o.some(s=>s)),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",(o,s,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,Q1);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,o=n.valueAsNumber;if(Number.isNaN(o)){t.errorText=e("Invalid start index value.");return}n.checkValidity()?this.fire("listStart",{startIndex:o}):t.errorText=e("Start index must be greater than 0.")}),t}_createReversedSwitchButton(){const e=this.locale.t,t=new Kn(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 Hx extends v{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=ff(t),o=n.styles.listTypes;if(o.includes("bulleted")){const s=[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:u0},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:l0},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:g0}],a=e("Bulleted List"),l=e("Bulleted list styles toolbar"),c="bulletedList";i.ui.componentFactory.add(c,fu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,buttonIcon:Oa,styleGridAriaLabel:l,styleDefinitions:s})),i.ui.componentFactory.add(`menuBar:${c}`,pu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,styleGridAriaLabel:l,styleDefinitions:s}))}if(o.includes("numbered")||t.startIndex||t.reversed){const s=[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:d0},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:c0},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:m0},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:p0},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:h0},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:f0}],a=e("Numbered List"),l=e("Numbered list styles toolbar"),c="numberedList";i.ui.componentFactory.add(c,fu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,buttonIcon:za,styleGridAriaLabel:l,styleDefinitions:s})),o.includes("numbered")&&i.ui.componentFactory.add(`menuBar:${c}`,pu({editor:i,normalizedConfig:n,parentCommandName:c,buttonLabel:a,styleGridAriaLabel:l,styleDefinitions:s}))}}}function fu({editor:r,normalizedConfig:i,parentCommandName:e,buttonLabel:t,buttonIcon:n,styleGridAriaLabel:o,styleDefinitions:s}){const a=r.commands.get(e);return l=>{const c=nt(l,Lo),d=c.buttonView;return c.bind("isEnabled").to(a),c.class="ck-list-styles-dropdown",d.on("execute",()=>{r.execute(e),r.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=Wx({editor:r,normalizedConfig:i,dropdownView:c,parentCommandName:e,styleGridAriaLabel:o,styleDefinitions:s});c.panelView.children.add(h)}),c.on("execute",()=>{r.editing.view.focus()}),c}}function bf({editor:r,listStyleCommand:i,parentCommandName:e}){const t=r.locale,n=r.commands.get(e);return({label:o,type:s,icon:a,tooltip:l})=>{const c=new P(t);return c.set({label:o,icon:a,tooltip:l}),c.bind("isOn").to(i,"value",d=>d===s),c.on("execute",()=>{n.value?i.value===s?r.execute(e):i.value!==s&&r.execute("listStyle",{type:s}):r.model.change(()=>{r.execute("listStyle",{type:s})})}),c}}function Wx({editor:r,normalizedConfig:i,dropdownView:e,parentCommandName:t,styleDefinitions:n,styleGridAriaLabel:o}){const s=r.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=r.commands.get("listStyle"),m=bf({editor:r,parentCommandName:t,listStyleCommand:h}),g=i.styles.listStyleTypes;let f=n;if(g){const w=g[l];w&&(f=n.filter(y=>w.includes(y.type)))}const p=wf(h);c=f.filter(p).map(m)}const d=new pf(s,{styleGridAriaLabel:o,enabledProperties:a,styleButtonViews:c});if(i.styles.listTypes.includes(l)&&Ka(e,()=>d.stylesView.children.find(h=>h.isOn)),a.startIndex){const h=r.commands.get("listStart");d.startIndexFieldView.bind("isEnabled").to(h),d.startIndexFieldView.fieldView.bind("value").to(h),d.on("listStart",(m,g)=>r.execute("listStart",g))}if(a.reversed){const h=r.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;r.execute("listReversed",{reversed:!m})})}return d.delegate("execute").to(e),d}function pu({editor:r,normalizedConfig:i,parentCommandName:e,buttonLabel:t,styleGridAriaLabel:n,styleDefinitions:o}){return s=>{const a=new ft(s),l=r.commands.get(e),c=r.commands.get("listStyle"),d=wf(c),h=bf({editor:r,parentCommandName:e,listStyleCommand:c}),m=i.styles.listStyleTypes;let g=o;if(m){const w=l.type,y=m[w];y&&(g=o.filter(C=>y.includes(C.type)))}const f=g.filter(d).map(h),p=new pf(s,{styleGridAriaLabel:n,enabledProperties:{...i,startIndex:!1,reversed:!1},styleButtonViews:f});return p.delegate("execute").to(a),a.buttonView.set({label:t,icon:e==="bulletedList"?Oa:za}),a.panelView.children.add(p),a.bind("isEnabled").to(l,"isEnabled"),a.on("execute",()=>{r.editing.view.focus()}),a}}function wf(r){return typeof r.isStyleTypeSupported=="function"?i=>r.isStyleTypeSupported(i.type):()=>!0}class qx extends v{static get requires(){return[Fx,Hx]}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
|
+
*/N.arrowup,N.arrowdown,N.esc;N.enter,N.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 jx extends M{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 Gx extends v{static get pluginName(){return"ShowBlocksEditing"}static get isOfficialPlugin(){return!0}init(){const{editor:i}=this;i.commands.add("showBlocks",new jx(i))}}class Kx extends v{static get pluginName(){return"ShowBlocksUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("showBlocks",()=>{const e=this._createButton(P);return e.set({tooltip:!0,icon:A0}),e}),i.ui.componentFactory.add("menuBar:showBlocks",()=>this._createButton(ke))}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("showBlocks"),o=new i(t),s=t.t;return o.set({label:s("Show blocks"),isToggleable:!0,role:"menuitemcheckbox"}),o.bind("isEnabled").to(n),o.bind("isOn").to(n,"value",n,"isEnabled",(a,l)=>a&&l),this.listenTo(o,"execute",()=>{e.execute("showBlocks"),e.editing.view.focus()}),o}}class $x extends v{static get pluginName(){return"ShowBlocks"}static get isOfficialPlugin(){return!0}static get requires(){return[Gx,Kx]}}/**
|
|
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 vr="SourceEditingMode";class Zx extends v{constructor(e){super(e);u(this,"_elementReplacer");u(this,"_replacedRoots");u(this,"_dataFromRoots");this.set("isSourceEditingMode",!1),this._elementReplacer=new Ih,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[Jr]}init(){this._checkCompatibility();const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("sourceEditing",()=>{const n=this._createButton(P);return n.set({label:t("Source"),icon:P0,tooltip:!0,class:"ck-source-editing-button"}),n}),e.ui.componentFactory.add("menuBar:sourceEditing",()=>{const n=this._createButton(ke);return n.set({label:t("Show source"),role:"menuitemcheckbox"}),n}),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",(n,o,s)=>{s?(this._hideVisibleDialog(),this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())}),this.on("change:isEnabled",(n,o,s)=>this._handleReadOnlyMode(!s)),this.listenTo(e,"change:isReadOnly",(n,o,s)=>this._handleReadOnlyMode(s))),e.data.on("get",()=>{this.isSourceEditingMode&&this.updateEditorData()},{priority:"high"})}updateEditorData(){const e=this.editor,t={};for(const[n,o]of this._replacedRoots){const s=this._dataFromRoots.get(n),a=o.dataset.value;s!==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 b("source-editing-incompatible-with-real-time-collaboration",null);!t&&["CommentsEditing","TrackChangesEditing","RevisionHistory"].some(o=>e.plugins.has(o))&&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(o=>{o.setSelection(null),o.removeSelectionAttribute(n.document.selection.getAttributeKeys())});for(const[o,s]of t.domRoots){const a=Jx(e.data.get({rootName:o})),l=De(s.ownerDocument,"textarea",{rows:"1","aria-label":"Source code editing area"}),c=De(s.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(o);d.addClass("ck-hidden",h)}),e.ui.setEditableElement("sourceEditing:"+o,l),this._replacedRoots.set(o,c),this._elementReplacer.replace(s,c),this._dataFromRoots.set(o,a)}this._hideDocumentOutline(),this._refreshAnnotationsVisibility(),this._focusSourceEditing()}_hideSourceEditing(){const t=this.editor.editing.view;this.updateEditorData(),t.change(n=>{for(const[o]of this._replacedRoots)n.removeClass("ck-hidden",t.document.getRoot(o))}),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(vr);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").forceDisabled(vr)}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled(vr);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").clearForceDisabled(vr)}_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(Jr),"hasAny",(o,s,a)=>!(!o||s||a)),this.listenTo(n,"execute",()=>{this.isSourceEditingMode=!this.isSourceEditingMode}),n}}function Jx(r){return Yx(r)?gw(r):r}function Yx(r){return r.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 al(r,i){const{modelAttribute:e,styleName:t,viewElement:n,defaultValue:o,reduceBoxSides:s=!1,shouldUpcast:a=()=>!0}=i;r.for("upcast").attributeToAttribute({view:{name:n,styles:{[t]:/[\s\S]+/}},model:{key:e,value:(l,c,d)=>{if(!a(l))return;const h=Ft(o,"",d),m=l.getNormalizedStyle(t),g=s?Br(m):m;if(h!==g)return g}}})}function Js(r,i,e,t){r.for("upcast").add(n=>n.on("element:"+i,(o,s,a)=>{if(!s.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=>s.viewItem.hasStyle(p));if(!l.length)return;const c={styles:l};if(!a.consumable.test(s.viewItem,c))return;const d=[...s.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(s.viewItem,c);const g={style:s.viewItem.getNormalizedStyle("border-style"),color:s.viewItem.getNormalizedStyle("border-color"),width:s.viewItem.getNormalizedStyle("border-width")},f={style:Br(g.style),color:Br(g.color),width:Br(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 Cn(r,i){const{modelElement:e,modelAttribute:t,styleName:n}=i;r.for("downcast").attributeToAttribute({model:{name:e,key:t},view:o=>({key:"style",value:{[n]:o}})})}function Mr(r,i){const{modelAttribute:e,styleName:t}=i;r.for("downcast").add(n=>n.on(`attribute:${e}:table`,(o,s,a)=>{const{item:l,attributeNewValue:c}=s,{mapper:d,writer:h}=a;if(!a.consumable.consume(s.item,o.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 Ft(r,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:r}function Br(r){if(!r)return;const i=["top","right","bottom","left"];if(!i.every(o=>r[o]))return r;const t=r.top;return i.every(o=>r[o]===t)?t:r}function se(r,i,e,t,n=1){i!=null&&n!==void 0&&n!==null&&i>n?t.setAttribute(r,i,e):t.removeAttribute(r,e)}function mi(r,i,e={}){const t=r.createElement("tableCell",e);return r.insertElement("paragraph",t),r.insert(t,i),t}function Ys(r,i){const e=i.parent.parent,t=parseInt(e.getAttribute("headingColumns")||"0"),{column:n}=r.getCellLocation(i);return!!t&&n<t}function Vr(r,i,e){const{modelAttribute:t}=e;r.extend("tableCell",{allowAttributes:[t]}),al(i,{viewElement:/^(td|th)$/,...e}),Cn(i,{modelElement:"tableCell",...e})}function Ut(r){const i=r.getSelectedElement();return i&&i.is("element","table")?i:r.getFirstPosition().findAncestor("table")}function Xx(){return r=>{r.on("element:figure",(i,e,t)=>{if(!t.consumable.test(e.viewItem,{name:!0,classes:"table"}))return;const n=tS(e.viewItem);if(!n||!t.consumable.test(n,{name:!0}))return;t.consumable.consume(e.viewItem,{name:!0,classes:"table"});const o=t.convertItem(n,e.modelCursor),s=ue(o.modelRange.getItems());if(!s){t.consumable.revert(e.viewItem,{name:!0,classes:"table"});return}t.convertChildren(e.viewItem,t.writer.createPositionAt(s,"end")),t.updateConversionResult(s,e)})}}function Qx(){return r=>{r.on("element:table",(i,e,t)=>{const n=e.viewItem;if(!t.consumable.test(n,{name:!0}))return;const{rows:o,headingRows:s,headingColumns:a}=iS(n),l={};a&&(l.headingColumns=a),s&&(l.headingRows=s);const c=t.writer.createElement("table",l);if(t.safeInsert(c,e.modelCursor)){if(t.consumable.consume(n,{name:!0}),o.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")),mi(t.writer,t.writer.createPositionAt(d,"end"))}t.updateConversionResult(c,e)}})}}function eS(){return r=>{r.on("element:tr",(i,e)=>{e.viewItem.isEmpty&&e.modelCursor.index==0&&i.stop()},{priority:"high"})}}function bu(r){return i=>{i.on(`element:${r}`,(e,t,{writer:n})=>{if(!t.modelRange)return;const o=t.modelRange.start.nodeAfter,s=n.createPositionAt(o,0);if(t.viewItem.isEmpty){n.insertElement("paragraph",s);return}const a=Array.from(o.getChildren());if(a.every(l=>l.is("element","$marker"))){const l=n.createElement("paragraph");n.insert(l,n.createPositionAt(o,0));for(const c of a)n.move(n.createRangeOn(c),n.createPositionAt(l,"end"))}},{priority:"low"})}}function tS(r){for(const i of r.getChildren())if(i.is("element","table"))return i}function iS(r){let i=0,e;const t=[],n=[];let o;for(const s of Array.from(r.getChildren())){if(s.name!=="tbody"&&s.name!=="thead"&&s.name!=="tfoot")continue;s.name==="thead"&&!o&&(o=s);const a=Array.from(s.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(o&&s===o||s.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=nS(c);(!e||h<e)&&(e=h)}l=Math.max(l||0,d.length)}}return{headingRows:i,headingColumns:e||0,rows:[...t,...n]}}function nS(r){let i=0,e=0;const t=Array.from(r.getChildren()).filter(n=>n.name==="th"||n.name==="td");for(;e<t.length&&t[e].name==="th";){const n=t[e],o=parseInt(n.getAttribute("colspan")||"1");i=i+o,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 o=parseInt(n.getAttribute("colspan")||"1"),s=parseInt(n.getAttribute("rowspan")||"1");(o>1||s>1)&&this._recordSpans(n,s,o),this._shouldSkipSlot()||(e=this._formatOutValue(n)),this._nextCellAtColumn=this._column+o}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 rS(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 o=this._row;o<this._row+e;o++)for(let s=this._column;s<this._column+t;s++)(o!=this._row||s!=this._column)&&this._markSpannedCell(o,s,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 rS{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 wu(r,i){return(e,{writer:t})=>{const n=e.getAttribute("headingRows")||0,o=t.createContainerElement("table",null,[]),s=t.createContainerElement("figure",{class:"table"},o);n>0&&t.insert(t.createPositionAt(o,"end"),t.createContainerElement("thead",null,t.createSlot(a=>a.is("element","tableRow")&&a.index<n))),n<r.getRows(e)&&t.insert(t.createPositionAt(o,"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(o,a),t.createSlot(l));return t.insert(t.createPositionAt(o,"after"),t.createSlot(a=>a.is("element","tableRow")?!1:!i.additionalSlots.some(({filter:l})=>l(a)))),i.asWidget?sS(s,t):s}}function oS(){return(r,{writer:i})=>r.isEmpty?i.createEmptyElement("tr"):i.createContainerElement("tr")}function ku(r={}){return(i,{writer:e})=>{const t=i.parent,n=t.parent,o=n.getChildIndex(t),s=new q(n,{row:o}),a=n.getAttribute("headingRows")||0,l=n.getAttribute("headingColumns")||0;let c=null;for(const d of s)if(d.cell==i){const m=d.row<a||d.column<l?"th":"td";c=r.asWidget?Dg(e.createEditableElement(m),e,{withAriaRole:!1}):e.createContainerElement(m);break}return c}}function yu(r={}){return(i,{writer:e})=>{if(!i.parent.is("element","tableCell")||!kf(i))return null;if(r.asWidget)return e.createContainerElement("span",{class:"ck-table-bogus-paragraph"});{const t=e.createContainerElement("p");return e.setCustomProperty("dataPipeline:transparentRendering",!0,t),t}}}function kf(r){return r.parent.childCount==1&&!aS(r)}function sS(r,i){return i.setCustomProperty("table",!0,r),Qa(r,i,{hasSelectionHandle:!0})}function aS(r){for(const i of r.getAttributeKeys())if(!(i.startsWith("selection:")||i=="htmlEmptyBlock"))return!0;return!1}class lS extends M{refresh(){const i=this.editor.model,e=i.document.selection,t=i.schema;this.isEnabled=cS(e,t)}execute(i={}){const e=this.editor,t=e.model,n=e.plugins.get("TableUtils"),o=e.config.get("table.defaultHeadings.rows"),s=e.config.get("table.defaultHeadings.columns");i.headingRows===void 0&&o&&(i.headingRows=o),i.headingColumns===void 0&&s&&(i.headingColumns=s),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 cS(r,i){const e=r.getFirstPosition().parent,t=e===e.root?e:e.parent;return i.checkChild(t,"table")}class vu extends M{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"),o=this.order==="above",s=n.getSelectionAffectedTableCells(t),a=n.getRowIndexes(s),l=o?a.first:a.last,c=s[0].findAncestor("table");n.insertRows(c,{at:o?l:l+1,copyStructureFromAbove:!o})}}class _u extends M{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"),o=this.order==="left",s=n.getSelectionAffectedTableCells(t),a=n.getColumnIndexes(s),l=o?a.first:a.last,c=s[0].findAncestor("table");n.insertColumns(c,{columns:1,at:o?l:l+1})}}class Cu extends M{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 yf(r,i,e){const{startRow:t,startColumn:n,endRow:o,endColumn:s}=i,a=e.createElement("table"),l=r.getAttribute("tableType");l&&e.setAttribute("tableType",l,a);const c=o-t+1;for(let h=0;h<c;h++)e.insertElement("tableRow",a,"end");const d=[...new q(r,{startRow:t,endRow:o,startColumn:n,endColumn:s,includeAllSlots:!0})];for(const{row:h,column:m,cell:g,isAnchor:f,cellAnchorRow:p,cellAnchorColumn:w}of d){const y=h-t,C=a.getChild(y);if(!f)(p<t||w<n)&&mi(e,e.createPositionAt(C,"end"));else{const R=e.cloneElement(g);e.append(R,C),Tf(R,h,m,o,s,e)}}return dS(a,r,t,n,e),a}function vf(r,i,e=0){const t=[],n=new q(r,{startRow:e,endRow:i-1});for(const o of n){const{row:s,cellHeight:a}=o,l=s+a-1;s<i&&i<=l&&t.push(o)}return t}function _f(r,i,e){const t=r.parent,n=t.parent,o=t.index,s=parseInt(r.getAttribute("rowspan")),a=i-o,l={},c=s-a;c>1&&(l.rowspan=c);const d=parseInt(r.getAttribute("colspan")||"1");d>1&&(l.colspan=d);const h=o,m=h+a,g=[...new q(n,{startRow:h,endRow:m,includeAllSlots:!0})];let f=null,p;for(const w of g){const{row:y,column:C,cell:R}=w;R===r&&p===void 0&&(p=C),p!==void 0&&p===C&&y===m&&(f=mi(e,w.getPositionBefore(),l))}return se("rowspan",a,r,e),f}function Cf(r,i){const e=[],t=new q(r);for(const n of t){const{column:o,cellWidth:s}=n,a=o+s-1;o<i&&i<=a&&e.push(n)}return e}function Lf(r,i,e,t){const n=parseInt(r.getAttribute("colspan")),o=e-i,s={},a=n-o;a>1&&(s.colspan=a);const l=parseInt(r.getAttribute("rowspan")||"1");l>1&&(s.rowspan=l);const c=mi(t,t.createPositionAfter(r),s);return se("colspan",o,r,t),c}function Tf(r,i,e,t,n,o){const s=parseInt(r.getAttribute("colspan")||"1"),a=parseInt(r.getAttribute("rowspan")||"1");if(e+s-1>n){const d=n-e+1;se("colspan",d,r,o,1)}if(i+a-1>t){const d=t-i+1;se("rowspan",d,r,o,1)}}function dS(r,i,e,t,n){const o=parseInt(i.getAttribute("headingRows")||"0");if(o>0){const a=o-e;se("headingRows",a,r,n,0)}const s=parseInt(i.getAttribute("headingColumns")||"0");if(s>0){const a=s-t;se("headingColumns",a,r,n,0)}}function Xs(r,i){const e=i.getColumns(r),t=new Array(e).fill(0);for(const{column:o}of new q(r))t[o]++;const n=t.reduce((o,s,a)=>s?o:[...o,a],[]);if(n.length>0){const o=n[n.length-1];return i.removeColumns(r,{at:o}),!0}return!1}function Qs(r,i){const e=[],t=i.getRows(r);for(let n=0;n<t;n++)r.getChild(n).isEmpty&&e.push(n);if(e.length>0){const n=e[e.length-1];return i.removeRows(r,{at:n}),!0}return!1}function ll(r,i){Xs(r,i)||Qs(r,i)}function Ef(r,i){const e=Array.from(new q(r,{startColumn:i.firstColumn,endColumn:i.lastColumn,row:i.lastRow}));if(e.every(({cellHeight:o})=>o===1))return i.lastRow;const n=e[0].cellHeight-1;return i.lastRow+n}function xf(r,i){const e=Array.from(new q(r,{startRow:i.firstRow,endRow:i.lastRow,column:i.lastColumn}));if(e.every(({cellWidth:o})=>o===1))return i.lastColumn;const n=e[0].cellWidth-1;return i.lastColumn+n}class _r extends M{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,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],s=this.value,a=this.direction;e.change(l=>{const c=a=="right"||a=="down",d=c?o:s,h=c?s:o,m=h.parent;mS(h,d,l);const g=this.isHorizontal?"colspan":"rowspan",f=parseInt(o.getAttribute(g)||"1"),p=parseInt(s.getAttribute(g)||"1");l.setAttribute(g,f+p,d),l.setSelection(l.createRangeIn(d));const w=this.editor.plugins.get("TableUtils"),y=m.findAncestor("table");ll(y,w)})}_getMergeableCell(){const t=this.editor.model.document,n=this.editor.plugins.get("TableUtils"),o=n.getTableCellsContainingSelection(t.selection)[0];if(!o)return;const s=this.isHorizontal?uS(o,this.direction,n):hS(o,this.direction,n);if(!s)return;const a=this.isHorizontal?"rowspan":"colspan",l=parseInt(o.getAttribute(a)||"1");if(parseInt(s.getAttribute(a)||"1")===l)return s}}function uS(r,i,e){const n=r.parent.parent,o=i=="right"?r.nextSibling:r.previousSibling,s=(n.getAttribute("headingColumns")||0)>0;if(!o)return;const a=i=="right"?r:o,l=i=="right"?o:r,{column:c}=e.getCellLocation(a),{column:d}=e.getCellLocation(l),h=parseInt(a.getAttribute("colspan")||"1"),m=Ys(e,a),g=Ys(e,l);return s&&m!=g?void 0:c+h===d?o:void 0}function hS(r,i,e){const t=r.parent,n=t.parent,o=n.getChildIndex(t);if(i=="down"&&o===e.getRows(n)-1||i=="up"&&o===0)return null;const s=parseInt(r.getAttribute("rowspan")||"1"),a=n.getAttribute("headingRows")||0,l=i=="down"&&o+s===a,c=i=="up"&&o===a;if(a&&(l||c))return null;const d=parseInt(r.getAttribute("rowspan")||"1"),h=i=="down"?o+d:o,m=[...new q(n,{endRow:h})],f=m.find(w=>w.cell===r).column,p=m.find(({row:w,cellHeight:y,column:C})=>C!==f?!1:i=="down"?w===h:h===w+y);return p&&p.cell?p.cell:null}function mS(r,i,e){Lu(r)||(Lu(i)&&e.remove(e.createRangeIn(i)),e.move(e.createRangeIn(r),e.createPositionAt(i,"end"))),e.remove(r)}function Lu(r){const i=r.getChild(0);return r.childCount==1&&i.is("element","paragraph")&&i.isEmpty}class gS extends M{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.getRows(n)-1,a=i.getRowIndexes(e),l=a.first===0&&a.last===s;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),o=t[0],s=o.findAncestor("table"),a=e.getCellLocation(o).column;i.change(l=>{const c=n.last-n.first+1;e.removeRows(s,{at:n.first,rows:c});const d=fS(s,n.first,a,e.getRows(s));l.setSelection(l.createPositionAt(d,0))})}}function fS(r,i,e,t){const n=r.getChild(Math.min(i,t-1));let o=n.getChild(0),s=0;for(const a of n.getChildren()){if(s>e)return o;o=a,s+=parseInt(a.getAttribute("colspan")||"1")}return o}class pS extends M{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"),o=i.getColumns(n),{first:s,last:a}=i.getColumnIndexes(e);this.isEnabled=a-s<o-1}else this.isEnabled=!1}execute(){const i=this.editor.plugins.get("TableUtils"),[e,t]=wS(this.editor.model.document.selection,i),n=e.parent.parent,o=[...new q(n)],s={first:o.find(l=>l.cell===e).column,last:o.find(l=>l.cell===t).column},a=bS(o,e,t,s);this.editor.model.change(l=>{const c=s.last-s.first+1;i.removeColumns(n,{at:s.first,columns:c}),l.setSelection(l.createPositionAt(a,0))})}}function bS(r,i,e,t){return parseInt(e.getAttribute("colspan")||"1")>1?e:i.previousSibling||e.nextSibling?e.nextSibling||i.previousSibling:t.first?r.reverse().find(({column:o})=>o<t.first).cell:r.reverse().find(({column:o})=>o>t.last).cell}function wS(r,i){const e=i.getSelectionAffectedTableCells(r),t=e[0],n=e.pop(),o=[t,n];return t.isBefore(n)?o:o.reverse()}class kS extends M{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(o=>this._isInHeading(o,o.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),o=n[0].findAncestor("table"),{first:s,last:a}=e.getRowIndexes(n),l=this.value?s:a+1,c=o.getAttribute("headingRows")||0;t.change(d=>{if(l){const h=l>c?c:0,m=vf(o,l,h);for(const{cell:g}of m)_f(g,l,d)}se("headingRows",l,o,d,0)})}_isInHeading(i,e){const t=parseInt(e.getAttribute("headingRows")||"0");return!!t&&i.parent.index<t}}class yS extends M{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(o=>Ys(i,o))}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),o=n[0].findAncestor("table"),{first:s,last:a}=e.getColumnIndexes(n),l=this.value?s:a+1;t.change(c=>{if(l){const d=Cf(o,l);for(const{cell:h,column:m}of d)Lf(h,m,l,c)}se("headingColumns",l,o,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 vS=5,ea=40,_S=2,CS=3;function LS(r){const i=new Set;for(const e of r.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 o of r.createRangeOn(n).getItems())o.is("element","table")&&Xn(o)&&i.add(o)}return i}function TS(r,i){return ea*100/Sf(r,i)}function Sf(r,i){const e=Tu(r,"tbody",i)||Tu(r,"thead",i),t=i.editing.view.domConverter.mapViewToDom(e);return ta(t)}function Tu(r,i,e){return[...[...e.editing.mapper.toViewElement(r).getChildren()].find(o=>o.is("element","table")).getChildren()].find(o=>o.is("element",i))}function ta(r){const i=T.window.getComputedStyle(r);return i.boxSizing==="border-box"?parseFloat(i.width)-parseFloat(i.paddingLeft)-parseFloat(i.paddingRight)-parseFloat(i.borderLeftWidth)-parseFloat(i.borderRightWidth):parseFloat(i.width)}function ES(r,i){const e=i.getCellLocation(r).column,t=r.getAttribute("colspan")||1;return{leftEdge:e,rightEdge:e+t-1}}function Me(r){const i=Math.pow(10,_S),e=typeof r=="number"?r:parseFloat(r);return Math.round(e*i)/i}function xS(r,i,e){return r<=i?Me(i):r>=e?Me(e):Me(r)}function SS(r,i){return Array(r).fill(i)}function Wn(r){return r.map(i=>typeof i=="number"?i:parseFloat(i)).filter(i=>!Number.isNaN(i)).reduce((i,e)=>i+e,0)}function cl(r){const i=r.map(n=>n==="auto"?n:parseFloat(n.replace("%","")));let e=AS(i);const t=Wn(e);return t!==100&&(e=e.map(n=>Me(n*100/t)).map((n,o,s)=>{if(!(o===s.length-1))return n;const l=Wn(s);return Me(n+100-l)})),e.map(n=>n+"%")}function AS(r){const i=r.filter(n=>n==="auto").length;if(i===0)return r.map(n=>Me(n));const e=Wn(r),t=Math.max((100-e)/i,vS);return r.map(n=>n==="auto"?t:n).map(n=>Me(n))}function PS(r){const i=T.window.getComputedStyle(r);return i.boxSizing==="border-box"?parseInt(i.width):parseFloat(i.width)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderWidth)}function Af(r,i,e,t){for(let n=0;n<Math.max(e.length,r.length);n++){const o=r[n],s=e[n];s?o?t.setAttribute("columnWidth",s,o):t.appendElement("tableColumn",{columnWidth:s},i):t.remove(o)}}function Xn(r){if(r.is("element","tableColumnGroup"))return r;const i=r.getChildren();return Array.from(i).find(e=>e.is("element","tableColumnGroup"))}function Qn(r){const i=Xn(r);return i?Array.from(i.getChildren()):[]}function IS(r){return Qn(r).map(i=>i.getAttribute("columnWidth"))}function RS(r,i){return Qn(r).reduce((t,n)=>{const o=n.getAttribute("columnWidth"),s=n.getAttribute("colSpan");if(!s)return t.push(o),t;for(let a=0;a<s;a++)t.push(o);return i.removeAttribute("colSpan",n),t},[])}class be extends v{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),o=new q(t,{row:n});for(const{cell:s,row:a,column:l}of o)if(s===i)return{row:a,column:l};/* istanbul ignore next -- @preserve */}createTable(i,e){const t=i.createElement("table"),n=e.rows||2,o=e.columns||2;return ps(i,t,0,n,o),e.headingRows&&se("headingRows",Math.min(e.headingRows,n),t,i,0),e.headingColumns&&se("headingColumns",Math.min(e.headingColumns,o),t,i,0),t}insertRows(i,e={}){const t=this.editor.model,n=e.at||0,o=e.rows||1,s=e.copyStructureFromAbove!==void 0,a=e.copyStructureFromAbove?n-1:n,l=this.getRows(i),c=this.getColumns(i);if(n>l)throw new b("tableutils-insertrows-insert-out-of-range",this,{options:e});t.change(d=>{const h=i.getAttribute("headingRows")||0;if(h>n&&se("headingRows",h+o,i,d,0),!s&&(n===0||n===l)){ps(d,i,n,o,c);return}const m=s?Math.max(n,a):n,g=new q(i,{endRow:m}),f=new Array(c).fill(1);for(const{row:p,column:w,cellHeight:y,cellWidth:C,cell:R}of g){const z=p+y-1,re=p<n&&n<=z,ee=p<=a&&a<=z;re?(d.setAttribute("rowspan",y+o,R),f[w]=-C):s&&ee&&(f[w]=C)}for(let p=0;p<o;p++){const w=d.createElement("tableRow");d.insert(w,i,n);for(let y=0;y<f.length;y++){const C=f[y],R=d.createPositionAt(w,"end");C>0&&mi(d,R,C>1?{colspan:C}:void 0),y+=Math.abs(C)-1}}})}insertColumns(i,e={}){const t=this.editor.model,n=e.at||0,o=e.columns||1;t.change(s=>{const a=i.getAttribute("headingColumns");n<a&&s.setAttribute("headingColumns",a+o,i);const l=this.getColumns(i);if(n===0||l===n){for(const d of i.getChildren())d.is("element","tableRow")&&Pi(o,s,s.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:w}=d;if(g<n){s.setAttribute("colspan",p+o,m);const y=f+w-1;for(let C=h;C<=y;C++)c.skipRow(C)}else Pi(o,s,d.getPositionBefore())}})}removeRows(i,e){const t=this.editor.model,n=e.rows||1,o=this.getRows(i),s=e.at,a=s+n-1;if(a>o-1)throw new b("tableutils-removerows-row-index-out-of-range",this,{table:i,options:e});t.change(l=>{const c={first:s,last:a},{cellsToMove:d,cellsToTrim:h}=VS(i,c);if(d.size){const m=a+1;NS(i,m,d,l)}for(let m=a;m>=s;m--)l.remove(i.getChild(m));for(const{rowspan:m,cell:g}of h)se("rowspan",m,g,l);BS(i,c,l),Xs(i,this)||Qs(i,this)})}removeColumns(i,e){const t=this.editor.model,n=e.at,o=e.columns||1,s=e.at+o-1;t.change(a=>{MS(i,{first:n,last:s},a);const l=Qn(i);for(let c=s;c>=n;c--){for(const{cell:d,column:h,cellWidth:m}of[...new q(i)])h<=c&&m>1&&h+m>c?se("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)}}Qs(i,this)||Xs(i,this)})}splitCellVertically(i,e=2){const t=this.editor.model,o=i.parent.parent,s=parseInt(i.getAttribute("rowspan")||"1"),a=parseInt(i.getAttribute("colspan")||"1");t.change(l=>{if(a>1){const{newCellsSpan:c,updatedSpan:d}=Eu(a,e);se("colspan",d,i,l);const h={};c>1&&(h.colspan=c),s>1&&(h.rowspan=s);const m=a>e?e-1:a-1;Pi(m,l,l.createPositionAfter(i),h)}if(a<e){const c=e-a,d=[...new q(o)],{column:h}=d.find(({cell:p})=>p===i),m=d.filter(({cell:p,cellWidth:w,column:y})=>{const C=p!==i&&y===h,R=y<h&&y+w>h;return C||R});for(const{cell:p,cellWidth:w}of m)l.setAttribute("colspan",w+c,p);const g={};s>1&&(g.rowspan=s),Pi(c,l,l.createPositionAfter(i),g);const f=o.getAttribute("headingColumns")||0;f>h&&se("headingColumns",f+c,o,l)}})}splitCellHorizontally(i,e=2){const t=this.editor.model,n=i.parent,o=n.parent,s=o.getChildIndex(n),a=parseInt(i.getAttribute("rowspan")||"1"),l=parseInt(i.getAttribute("colspan")||"1");t.change(c=>{if(a>1){const d=[...new q(o,{startRow:s,endRow:s+a-1,includeAllSlots:!0})],{newCellsSpan:h,updatedSpan:m}=Eu(a,e);se("rowspan",m,i,c);const{column:g}=d.find(({cell:w})=>w===i),f={};h>1&&(f.rowspan=h),l>1&&(f.colspan=l);let p=0;for(const w of d){const{column:y,row:C}=w,R=C>=s+m,z=y===g;p>=h&&z&&(p=0),R&&z&&(p||Pi(1,c,w.getPositionBefore(),f),p++)}}if(a<e){const d=e-a,h=[...new q(o,{startRow:0,endRow:s})];for(const{cell:f,cellHeight:p,row:w}of h)if(f!==i&&w+p>s){const y=p+d;c.setAttribute("rowspan",y,f)}const m={};l>1&&(m.colspan=l),ps(c,o,s+1,d,1,m);const g=o.getAttribute("headingRows")||0;g>s&&se("headingRows",g+d,o,c)}})}getColumns(i){return[...i.getChild(0).getChildren()].filter(t=>t.is("element","tableCell")).reduce((t,n)=>{const o=parseInt(n.getAttribute("colspan")||"1");return t+o},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(o=>i.includes(o.cell)).map(o=>o.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 s of i){const{row:a,column:l}=this.getCellLocation(s),c=parseInt(s.getAttribute("rowspan"))||1,d=parseInt(s.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 OS(e,t)==n}sortRanges(i){return Array.from(i).sort(DS)}_getFirstLastIndexesObject(i){const e=i.sort((o,s)=>o-s),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 o=this.getColumnIndexes(i),s=parseInt(e.getAttribute("headingColumns"))||0;return this._areIndexesInSameSection(o,s)}_areIndexesInSameSection({first:i,last:e},t){const n=i<t,o=e<t;return n===o}}function ps(r,i,e,t,n,o={}){for(let s=0;s<t;s++){const a=r.createElement("tableRow");r.insert(a,i,e),Pi(n,r,r.createPositionAt(a,"end"),o)}}function Pi(r,i,e,t={}){for(let n=0;n<r;n++)mi(i,e,t)}function Eu(r,i){if(r<i)return{newCellsSpan:1,updatedSpan:1};const e=Math.floor(r/i),t=r-e*i+e;return{newCellsSpan:e,updatedSpan:t}}function MS(r,i,e){const t=r.getAttribute("headingColumns")||0;if(t&&i.first<t){const n=Math.min(t-1,i.last)-i.first+1;e.setAttribute("headingColumns",t-n,r)}}function BS(r,{first:i,last:e},t){const n=r.getAttribute("headingRows")||0;if(i<n){const o=e<n?n-(e-i+1):i;se("headingRows",o,r,t,0)}}function VS(r,{first:i,last:e}){const t=new Map,n=[];for(const{row:o,column:s,cellHeight:a,cell:l}of new q(r,{endRow:e})){const c=o+a-1;if(o>=i&&o<=e&&c>e){const m=e-o+1,g=a-m;t.set(s,{cell:l,rowspan:g})}if(o<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 NS(r,i,e,t){const o=[...new q(r,{includeAllSlots:!0,row:i})],s=r.getChild(i);let a;for(const{column:l,cell:c,isAnchor:d}of o)if(e.has(l)){const{cell:h,rowspan:m}=e.get(l),g=a?t.createPositionAfter(a):t.createPositionAt(s,0);t.move(t.createRangeOn(h),g),se("rowspan",m,h,t),a=h}else d&&(a=c)}function DS(r,i){const e=r.start,t=i.start;return e.isBefore(t)?-1:1}function OS(r,i){const e=Array.from(r.values()),t=Array.from(i.values()),n=Math.max(...e),o=Math.min(...e),s=Math.max(...t),a=Math.min(...t);return(n-o+1)*(s-a+1)}class zS extends M{refresh(){const i=this.editor.plugins.get(be),e=i.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=i.isSelectionRectangular(e)}execute(){const i=this.editor.model,e=this.editor.plugins.get(be);i.change(t=>{const n=e.getSelectedTableCells(i.document.selection),o=n.shift(),{mergeWidth:s,mergeHeight:a}=US(o,n,e);se("colspan",s,o,t),se("rowspan",a,o,t);for(const c of n)FS(c,o,t);const l=o.findAncestor("table");ll(l,e),t.setSelection(o,"in")})}}function FS(r,i,e){xu(r)||(xu(i)&&e.remove(e.createRangeIn(i)),e.move(e.createRangeIn(r),e.createPositionAt(i,"end"))),e.remove(r)}function xu(r){const i=r.getChild(0);return r.childCount==1&&i.is("element","paragraph")&&i.isEmpty}function US(r,i,e){let t=0,n=0;for(const c of i){const{row:d,column:h}=e.getCellLocation(c);t=Su(c,h,t,"colspan"),n=Su(c,d,n,"rowspan")}const{row:o,column:s}=e.getCellLocation(r),a=t-s,l=n-o;return{mergeWidth:a,mergeHeight:l}}function Su(r,i,e,t){const n=parseInt(r.getAttribute(t)||"1");return Math.max(e,i+n)}class HS extends M{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),o=t[0].findAncestor("table"),s=[];for(let a=n.first;a<=n.last;a++)for(const l of o.getChild(a).getChildren())s.push(i.createRangeOn(l));i.change(a=>{a.setSelection(s)})}}class WS extends M{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],o=t.pop(),s=n.findAncestor("table"),a=i.getCellLocation(n),l=i.getCellLocation(o),c=Math.min(a.column,l.column),d=Math.max(a.column,l.column),h=[];for(const m of new q(s,{startColumn:c,endColumn:d}))h.push(e.createRangeOn(m.cell));e.change(m=>{m.setSelection(h)})}}function qS(r){r.document.registerPostFixer(i=>jS(i,r))}function jS(r,i){const e=i.document.differ.getChanges();let t=!1;const n=new Set;for(const o of e){let s=null;o.type=="insert"&&o.name=="table"&&(s=o.position.nodeAfter),(o.type=="insert"||o.type=="remove")&&(o.name=="tableRow"||o.name=="tableCell")&&(s=o.position.findAncestor("table")),JS(o)&&(s=o.range.start.findAncestor("table")),s&&!n.has(s)&&(t=GS(s,r)||t,t=KS(s,r)||t,n.add(s))}return t}function GS(r,i){let e=!1;const t=$S(r);if(t.length){e=!0;for(const n of t)se("rowspan",n.rowspan,n.cell,i,1)}return e}function KS(r,i){let e=!1;const t=ZS(r),n=[];for(const[l,c]of t.entries())!c&&r.getChild(l).is("element","tableRow")&&n.push(l);if(n.length){e=!0;for(const l of n.reverse())i.remove(r.getChild(l)),t.splice(l,1)}const o=t.filter((l,c)=>r.getChild(c).is("element","tableRow")),s=o[0];if(!o.every(l=>l===s)){const l=o.reduce((c,d)=>d>c?d:c,0);for(const[c,d]of o.entries()){const h=l-d;if(h){for(let m=0;m<h;m++)mi(i,i.createPositionAt(r.getChild(c),"end"));e=!0}}}return e}function $S(r){const i=parseInt(r.getAttribute("headingRows")||"0"),e=Array.from(r.getChildren()).reduce((n,o)=>o.is("element","tableRow")?n+1:n,0),t=[];for(const{row:n,cell:o,cellHeight:s}of new q(r)){if(s<2)continue;const l=n<i?i:e;if(n+s>l){const c=l-n;t.push({cell:o,rowspan:c})}}return t}function ZS(r){const i=new Array(r.childCount).fill(0);for(const{rowIndex:e}of new q(r,{includeAllSlots:!0}))i[e]++;return i}function JS(r){if(r.type!=="attribute")return!1;const i=r.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 YS(r){r.document.registerPostFixer(i=>XS(i,r))}function XS(r,i){const e=i.document.differ.getChanges();let t=!1;for(const n of e)n.type=="insert"&&n.name=="table"&&(t=QS(n.position.nodeAfter,r)||t),n.type=="insert"&&n.name=="tableRow"&&(t=Pf(n.position.nodeAfter,r)||t),n.type=="insert"&&n.name=="tableCell"&&(t=ia(n.position.nodeAfter,r)||t),(n.type=="remove"||n.type=="insert")&&eA(n)&&(t=ia(n.position.parent,r)||t);return t}function QS(r,i){let e=!1;for(const t of r.getChildren())t.is("element","tableRow")&&(e=Pf(t,i)||e);return e}function Pf(r,i){let e=!1;for(const t of r.getChildren())e=ia(t,i)||e;return e}function ia(r,i){if(r.childCount==0)return i.insertElement("paragraph",r),!0;const e=Array.from(r.getChildren()).filter(t=>t.is("$text"));for(const t of e)i.wrap(i.createRangeOn(t),"paragraph");return!!e.length}function eA(r){return r.position.parent.is("element","tableCell")?r.type=="insert"&&r.name=="$text"||r.type=="remove":!1}function tA(r,i){const e=r.document.differ;for(const t of e.getChanges()){let n,o=!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,o=t.attributeKey=="headingRows"}else(t.name=="tableRow"||t.name=="tableCell")&&(n=t.position.findAncestor("table"),o=t.name=="tableRow");if(!n)continue;const s=n.getAttribute("headingRows")||0,a=n.getAttribute("headingColumns")||0,l=new q(n);for(const c of l){const h=c.row<s||c.column<a?"th":"td",m=i.mapper.toViewElement(c.cell);m&&m.is("element")&&m.name!=h&&i.reconvertItem(o?c.cell.parent:c.cell)}}}function iA(r,i){const e=r.document.differ,t=new Set;for(const n of e.getChanges()){const o=n.type=="attribute"?n.range.start.parent:n.position.parent;o.is("element","tableCell")&&t.add(o)}for(const n of t.values()){const o=Array.from(n.getChildren()).filter(s=>nA(s,i.mapper));for(const s of o)i.reconvertItem(s)}}function nA(r,i){if(!r.is("element","paragraph"))return!1;const e=i.toViewElement(r);return e?kf(r)!==e.is("element","span"):!1}class er extends v{constructor(e){super(e);u(this,"_additionalSlots");this._additionalSlots=[]}static get pluginName(){return"TableEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[be]}init(){const e=this.editor,t=e.model,n=t.schema,o=e.conversion,s=e.plugins.get(be);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}),o.for("upcast").add(Xx()),o.for("upcast").add(Qx()),o.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:wu(s,{asWidget:!0,additionalSlots:this._additionalSlots})}),o.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:wu(s,{additionalSlots:this._additionalSlots})}),o.for("upcast").elementToElement({model:"tableRow",view:"tr"}),o.for("upcast").add(eS()),o.for("downcast").elementToElement({model:"tableRow",view:oS()}),o.for("upcast").elementToElement({model:"tableCell",view:"td"}),o.for("upcast").elementToElement({model:"tableCell",view:"th"}),o.for("upcast").add(bu("td")),o.for("upcast").add(bu("th")),o.for("editingDowncast").elementToElement({model:"tableCell",view:ku({asWidget:!0})}),o.for("dataDowncast").elementToElement({model:"tableCell",view:ku()}),o.for("editingDowncast").elementToElement({model:"paragraph",view:yu({asWidget:!0}),converterPriority:"high"}),o.for("dataDowncast").elementToElement({model:"paragraph",view:yu(),converterPriority:"high"}),o.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),o.for("upcast").attributeToAttribute({model:{key:"colspan",value:Au("colspan")},view:"colspan"}),o.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),o.for("upcast").attributeToAttribute({model:{key:"rowspan",value:Au("rowspan")},view:"rowspan"}),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new lS(e)),e.commands.add("insertTableRowAbove",new vu(e,{order:"above"})),e.commands.add("insertTableRowBelow",new vu(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new _u(e,{order:"left"})),e.commands.add("insertTableColumnRight",new _u(e,{order:"right"})),e.commands.add("removeTableRow",new gS(e)),e.commands.add("removeTableColumn",new pS(e)),e.commands.add("splitTableCellVertically",new Cu(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new Cu(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new zS(e)),e.commands.add("mergeTableCellRight",new _r(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new _r(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new _r(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new _r(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new yS(e)),e.commands.add("setTableRowHeader",new kS(e)),e.commands.add("selectTableRow",new HS(e)),e.commands.add("selectTableColumn",new WS(e)),qS(t),YS(t),this.listenTo(t.document,"change:data",()=>{tA(t,e.editing),iA(t,e.editing)})}registerAdditionalSlot(e){this._additionalSlots.push(e)}}function Au(r){return i=>{const e=parseInt(i.getAttribute(r));return Number.isNaN(e)||e<=0?null:e}}class Pu 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 ce,this.focusTracker=new ne,this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",(n,o)=>`${o} × ${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,o)=>{const{row:s,column:a}=o.target.dataset;this.items.get((parseInt(s,10)-1)*10+(parseInt(a,10)-1)).focus()}),this.focusTracker.on("change:focusedElement",(n,o,s)=>{if(!s)return;const{row:a,column:l}=s.dataset;this.set({rows:parseInt(a),columns:parseInt(l)})}),this.on("change:columns",()=>this._highlightGridBoxes()),this.on("change:rows",()=>this._highlightGridBoxes())}render(){super.render(),qa({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,o)=>{const s=Math.floor(o/10),a=o%10,l=s<e&&a<t;n.set("isOn",l)})}_createGridButton(e,t,n,o){const s=new P(e);return s.set({label:o,class:"ck-insert-table-dropdown-grid-box"}),s.extendTemplate({attributes:{"data-row":t,"data-column":n}}),s}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const n=Math.floor(t/10),o=t%10,s=`${n+1} × ${o+1}`;e.push(this._createGridButton(this.locale,n+1,o+1,s))}return this.createCollection(e)}}class rA extends v{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",o=>{const s=i.commands.get("insertTable"),a=nt(o);a.bind("isEnabled").to(s),a.buttonView.set({icon:Wc,label:e("Insert table"),tooltip:!0});let l;return a.on("change:isOpen",()=>{l||(l=new Pu(o),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",o=>{const s=i.commands.get("insertTable"),a=new ft(o),l=new Pu(o);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:Wc}),a.panelView.children.add(l),a.bind("isEnabled").to(s),a}),i.ui.componentFactory.add("tableColumn",o=>{const s=[{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"),R0,s,o)}),i.ui.componentFactory.add("tableRow",o=>{const s=[{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"),V0,s,o)}),i.ui.componentFactory.add("mergeTableCells",o=>{const s=[{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"),M0,s,o)})}_prepareDropdown(i,e,t,n){const o=this.editor,s=nt(n),a=this._fillDropdownWithListOptions(s,t);return s.buttonView.set({label:i,icon:e,tooltip:!0}),s.bind("isEnabled").toMany(a,"isEnabled",(...l)=>l.some(c=>c)),this.listenTo(s,"execute",l=>{o.execute(l.source.commandName),l.source instanceof Kn||o.editing.view.focus()}),s}_prepareMergeSplitButtonDropdown(i,e,t,n){const o=this.editor,s=nt(n,Lo),a="mergeTableCells",l=o.commands.get(a),c=this._fillDropdownWithListOptions(s,t);return s.buttonView.set({label:i,icon:e,tooltip:!0,isEnabled:!0}),s.bind("isEnabled").toMany([l,...c],"isEnabled",(...d)=>d.some(h=>h)),this.listenTo(s.buttonView,"execute",()=>{o.execute(a),o.editing.view.focus()}),this.listenTo(s,"execute",d=>{o.execute(d.source.commandName),o.editing.view.focus()}),s}_fillDropdownWithListOptions(i,e){const t=this.editor,n=[],o=new We;for(const s of e)oA(s,t,n,o);return To(i,o),n}}function oA(r,i,e,t){if(r.type==="button"||r.type==="switchbutton"){const n=r.model=new $a(r.model),{commandName:o,bindIsOn:s}=r.model,a=i.commands.get(o);e.push(a),n.set({commandName:o}),n.bind("isEnabled").to(a),s&&n.bind("isOn").to(a,"value"),n.set({withText:!0})}t.add(r)}class Ht extends v{static get pluginName(){return"TableSelection"}static get isOfficialPlugin(){return!0}static get requires(){return[be,be]}init(){const i=this.editor,e=i.model,t=i.editing.view;this.listenTo(e,"deleteContent",(n,o)=>this._handleDeleteContent(n,o),{priority:"high"}),this.listenTo(t.document,"insertText",(n,o)=>this._handleInsertTextEvent(n,o),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const i=this.editor.plugins.get(be),e=this.editor.model.document.selection,t=i.getSelectedTableCells(e);return t.length==0?null:t}getSelectionAsFragment(){const i=this.editor.plugins.get(be),e=this.getSelectedTableCells();return e?this.editor.model.change(t=>{const n=t.createDocumentFragment(),{first:o,last:s}=i.getColumnIndexes(e),{first:a,last:l}=i.getRowIndexes(e),c=e[0].findAncestor("table");let d=l,h=s;if(i.isSelectionRectangular(e)){const f={firstColumn:o,lastColumn:s,firstRow:a,lastRow:l};d=Ef(c,f),h=xf(c,f)}const g=yf(c,{startRow:a,startColumn:o,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(o=>n.createRangeOn(o)),{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",(o,s,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 o of e)n.removeClass("ck-editor__editable_selected",o);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),o=i.model.schema.getNearestSelectionRange(n);t.setSelection(o)})}})}_handleDeleteContent(i,e){const t=this.editor.plugins.get(be),n=e[0],o=e[1],s=this.editor.model,a=!o||o.direction=="backward",l=t.getSelectedTableCells(n);l.length&&(i.stop(),s.change(c=>{const d=l[a?l.length-1:0];s.change(m=>{for(const g of l)s.deleteContent(m.createSelection(g,"in"))});const h=s.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 o=t.editing.view,s=t.editing.mapper,a=n.map(l=>o.createRangeOn(s.toViewElement(l)));e.selection=o.createSelection(a),e.preventDefault()}_getCellsToSelect(i,e){const t=this.editor.plugins.get("TableUtils"),n=t.getCellLocation(i),o=t.getCellLocation(e),s=Math.min(n.row,o.row),a=Math.max(n.row,o.row),l=Math.min(n.column,o.column),c=parseInt(e.getAttribute("colspan")||"1")-1,d=Math.max(n.column,o.column+c),h=new Array(a-s+1).fill(null).map(()=>[]),m={startRow:s,endRow:a,startColumn:l,endColumn:d};for(const{row:p,cell:w}of new q(i.findAncestor("table"),m))h[p-s].push(w);const g=o.row<n.row,f=o.column<n.column;return g&&h.reverse(),f&&h.forEach(p=>p.reverse()),{cells:h.flat(),backward:g||f}}}class sA extends v{static get pluginName(){return"TableClipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[_n,lt,Ht,be]}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(lt),t=i.plugins.get(Ht);let n=!1;e.on("contentInsertion",(o,s)=>{n=s.method==="paste"}),this.listenTo(i.model,"insertContent",(o,[s,a])=>{(n||t.getSelectedTableCells()!==null)&&this._onInsertContent(o,s,a)},{priority:"high"}),e.on("contentInsertion",()=>{n=!1},{priority:"lowest"})}_onCopyCut(i,e){const t=this.editor.editing.view,n=this.editor.plugins.get(Ht),o=this.editor.plugins.get(_n);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 s=o._copySelectedFragmentWithMarkers(i.name,this.editor.model.document.selection,()=>n.getSelectionAsFragment());t.document.fire("clipboardOutput",{dataTransfer:e.dataTransfer,content:this.editor.data.toView(s),method:i.name})})))}_onInsertContent(i,e,t){if(t&&!t.is("documentSelection"))return;const n=this.editor.model,o=this.editor.plugins.get(be),s=this.editor.plugins.get(_n),a=this.getTableIfOnlyTableInContent(e,n);if(!a)return;const l=o.getSelectionAffectedTableCells(n.document.selection);if(!l.length){ll(a,o);return}i.stop(),e.is("documentFragment")?s._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(be),o={width:n.getColumns(i),height:n.getRows(i)},s=aA(e,o,t,n),a=s.lastRow-s.firstRow+1,l=s.lastColumn-s.firstColumn+1,c={startRow:0,startColumn:0,endRow:Math.min(a,o.height)-1,endColumn:Math.min(l,o.width)-1};i=yf(i,c,t);const d=e[0].findAncestor("table"),h=this._replaceSelectedCellsWithPasted(i,o,d,s,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,o){const{width:s,height:a}=e,l=cA(i,s,a),c=[...new q(t,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],d=[];let h;for(const w of c){const{row:y,column:C}=w;C===n.firstColumn&&(h=w.getPositionBefore());const R=y-n.firstRow,z=C-n.firstColumn,re=l[R%a][z%s],ee=re?o.cloneElement(re):null,x=this._replaceTableSlotCell(w,ee,h,o);x&&(Tf(x,y,C,n.lastRow,n.lastColumn,o),d.push(x),h=o.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 w={first:n.firstColumn,last:n.lastColumn},y=na(t,m,w,o,n.firstRow);d.push(...y)}if(p){const w={first:n.firstRow,last:n.lastRow},y=ra(t,g,w,o);d.push(...y)}return d}_replaceTableSlotCell(i,e,t,n){const{cell:o,isAnchor:s}=i;return s&&n.remove(o),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 o=e.createRange(t.start,e.createPositionBefore(n));if(e.hasContent(o,{ignoreWhitespaces:!0}))return null;const s=e.createRange(e.createPositionAfter(n),t.end);return e.hasContent(s,{ignoreWhitespaces:!0})?null:n}return null}}function aA(r,i,e,t){const n=r[0].findAncestor("table"),o=t.getColumnIndexes(r),s=t.getRowIndexes(r),a={firstColumn:o.first,lastColumn:o.last,firstRow:s.first,lastRow:s.last},l=r.length===1;return l&&(a.lastRow+=i.height-1,a.lastColumn+=i.width-1,lA(n,a.lastRow+1,a.lastColumn+1,t)),l||!t.isSelectionRectangular(r)?dA(n,a,e):(a.lastRow=Ef(n,a),a.lastColumn=xf(n,a)),a}function lA(r,i,e,t){const n=t.getColumns(r),o=t.getRows(r);e>n&&t.insertColumns(r,{at:n,columns:e-n}),i>o&&t.insertRows(r,{at:o,rows:i-o})}function cA(r,i,e){const t=new Array(e).fill(null).map(()=>new Array(i).fill(null));for(const{column:n,row:o,cell:s}of new q(r))t[o][n]=s;return t}function dA(r,i,e){const{firstRow:t,lastRow:n,firstColumn:o,lastColumn:s}=i,a={first:t,last:n},l={first:o,last:s};ra(r,o,a,e),ra(r,s+1,a,e),na(r,t,l,e),na(r,n+1,l,e,t)}function na(r,i,e,t,n=0){return i<1?void 0:vf(r,i,n).filter(({column:a,cellWidth:l})=>If(a,l,e)).map(({cell:a})=>_f(a,i,t))}function ra(r,i,e,t){return i<1?void 0:Cf(r,i).filter(({row:s,cellHeight:a})=>If(s,a,e)).map(({cell:s,column:a})=>Lf(s,a,i,t))}function If(r,i,e){const t=r+i-1,{first:n,last:o}=e,s=r>=n&&r<=o,a=r<n&&t>=n;return s||a}class uA extends v{static get pluginName(){return"TableKeyboard"}static get isOfficialPlugin(){return!0}static get requires(){return[Ht,be]}init(){const i=this.editor,t=i.editing.view.document,n=i.t;this.listenTo(t,"arrowKey",(...o)=>this._onArrowKey(...o),{context:"table"}),this.listenTo(t,"tab",(...o)=>this._handleTabOnSelectedTable(...o),{context:"figure"}),this.listenTo(t,"tab",(...o)=>this._handleTab(...o),{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,o=t.model.document.selection.getSelectedElement();!o||!o.is("element","table")||(e.preventDefault(),e.stopPropagation(),i.stop(),t.model.change(s=>{s.setSelection(s.createRangeIn(o.getChild(0).getChild(0)))}))}_handleTab(i,e){const t=this.editor,n=this.editor.plugins.get(be),o=this.editor.plugins.get("TableSelection"),s=t.model.document.selection,a=!e.shiftKey;let l=n.getTableCellsContainingSelection(s)[0];if(l||(l=o.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(y=>{y.setSelection(y.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(y=>{y.setSelection(y.createRangeOn(d))});return}let w;if(a&&f)w=d.getChild(h+1).getChild(0);else if(!a&&g){const y=d.getChild(h-1);w=y.getChild(y.childCount-1)}else w=c.getChild(m+(a?1:-1));t.model.change(y=>{y.setSelection(y.createRangeIn(w))})}_onArrowKey(i,e){const t=this.editor,n=e.keyCode,o=ka(n,t.locale.contentLanguageDirection);this._handleArrowKeys(o,e.shiftKey)&&(e.preventDefault(),e.stopPropagation(),i.stop())}_handleArrowKeys(i,e){const t=this.editor.plugins.get(be),n=this.editor.plugins.get("TableSelection"),o=this.editor.model,s=o.document.selection,a=["right","down"].includes(i),l=t.getSelectedTableCells(s);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=s.focus.findAncestor("tableCell");/* istanbul ignore if: paranoid check -- @preserve */if(!c)return!1;if(!s.isCollapsed)if(e){if(s.isBackward==a&&!s.containsEntireContent(c))return!1}else{const d=s.getSelectedElement();if(!d||!o.schema.isObject(d))return!1}return this._isSelectionAtCellEdge(s,c,a)?(this._navigateFromCellInDirection(c,i,e),!0):!1}_isSelectionAtCellEdge(i,e,t){const n=this.editor.model,o=this.editor.model.schema,s=t?i.getLastPosition():i.getFirstPosition();if(!o.getLimitElement(s).is("element","tableCell"))return n.createPositionAt(e,t?"end":0).isTouching(s);const a=n.createSelection(s);return n.modifySelection(a,{direction:t?"forward":"backward"}),s.isEqual(a.focus)}_navigateFromCellInDirection(i,e,t=!1){const n=this.editor.model,o=i.findAncestor("table"),s=[...new q(o,{includeAllSlots:!0})],{row:a,column:l}=s[s.length-1],c=s.find(({cell:C})=>C==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(C=>{C.setSelection(C.createRangeOn(o))});return}h<0?(h=t?0:l,d--):h>l&&(h=t?l:0,d++);const p=s.find(C=>C.row==d&&C.column==h).cell,w=["right","down"].includes(e),y=this.editor.plugins.get("TableSelection");if(t&&y.isEnabled){const C=y.getAnchorCell()||i;y.setCellSelection(C,p)}else{const C=n.createPositionAt(p,w?0:"end");n.change(R=>{R.setSelection(C)})}}}class Rf extends Pt{constructor(){super(...arguments);u(this,"domEventType",["mousemove","mouseleave"])}onDomEvent(e){this.fire(e.type,e)}}class hA extends v{static get pluginName(){return"TableMouse"}static get isOfficialPlugin(){return!0}static get requires(){return[Ht,be]}init(){this.editor.editing.view.addObserver(Rf),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const i=this.editor,e=i.plugins.get(be);let t=!1;const n=i.plugins.get(Ht);this.listenTo(i.editing.view.document,"mousedown",(o,s)=>{const a=i.model.document.selection;if(!this.isEnabled||!n.isEnabled||!s.domEvent.shiftKey)return;const l=n.getAnchorCell()||e.getTableCellsContainingSelection(a)[0];if(!l)return;const c=this._getModelTableCellFromDomEvent(s);c&&Iu(l,c)&&(t=!0,n.setCellSelection(l,c),s.preventDefault())}),this.listenTo(i.editing.view.document,"mouseup",()=>{t=!1}),this.listenTo(i.editing.view.document,"selectionChange",o=>{t&&o.stop()},{priority:"highest"})}_enableMouseDragSelection(){const i=this.editor;let e,t,n=!1,o=!1;const s=i.plugins.get(Ht);this.listenTo(i.editing.view.document,"mousedown",(a,l)=>{!this.isEnabled||!s.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&&Iu(e,c)&&(t=c,!n&&t!=e&&(n=!0)),n&&(o=!0,s.setCellSelection(e,t),l.preventDefault())}),this.listenTo(i.editing.view.document,"mouseup",()=>{n=!1,o=!1,e=null,t=null}),this.listenTo(i.editing.view.document,"selectionChange",a=>{o&&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 Iu(r,i){return r.parent.parent==i.parent.parent}class mA extends v{static get requires(){return[er,rA,Ht,hA,uA,sA,Zn]}static get pluginName(){return"Table"}static get isOfficialPlugin(){return!0}}function lo(r){const i=Mf(r);return i||Io(r)}function Mf(r){const i=r.getSelectedElement();return i&&Bf(i)?i:null}function Io(r){const i=r.getFirstPosition();if(!i)return null;let e=i.parent;for(;e;){if(e.is("element")&&Bf(e))return e;e=e.parent}return null}function Bf(r){return!!r.getCustomProperty("table")&&ae(r)}class gA extends v{static get requires(){return[io]}static get pluginName(){return"TableToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const i=this.editor,e=i.t,t=i.plugins.get(io),n=i.config.get("table.contentToolbar"),o=i.config.get("table.tableToolbar");n&&t.register("tableContent",{ariaLabel:e("Table toolbar"),items:n,getRelatedElement:Io}),o&&t.register("table",{ariaLabel:e("Table toolbar"),items:o,getRelatedElement:Mf})}}class fA 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 ne,this._focusables=new _e,this.dropdownView=this._createDropdownView(),this.inputView=this._createInputTextView(),this.keystrokes=new ce,this._stillTyping=!1,this.focusCycler=new Ie({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,o,s)=>this._setInputValue(s))}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,o=this._createColorSelector(e),s=nt(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!="")]}}]}),s.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),s.buttonView.children.add(a),s.buttonView.label=t("Color picker"),s.buttonView.tooltip=!0,s.panelPosition=e.uiLanguageDirection==="rtl"?"se":"sw",s.panelView.children.add(o),s.bind("isEnabled").to(this,"isReadOnly",l=>!l),s.on("change:isOpen",(l,c,d)=>{d&&(o.updateSelectedColors(),o.showColorGridsFragment())}),s}_createInputTextView(){const e=this.locale,t=new gg(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,o=this.options.colorDefinitions.find(s=>n===s.label);this._stillTyping=!0,this.value=o&&o.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||"",o=t(n?"Restore default":"Remove color"),s=new lC(e,{colors:this.options.colorDefinitions,columns:this.options.columns,removeButtonLabel:o,colorPickerLabel:t("Color picker"),colorPickerViewConfig:this.options.colorPickerConfig===!1?!1:{...this.options.colorPickerConfig,hideInput:!0}});s.appendUI(),s.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 s.on("colorPicker:cancel",()=>{this.value=a,this.fire("input"),this.dropdownView.isOpen=!1}),s.colorGridsFragmentView.colorPickerButtonView.on("execute",()=>{a=this.value}),s.bind("selectedColor").to(this,"value"),s}_setInputValue(e){if(!this._stillTyping){const t=Ru(e),n=this.options.colorDefinitions.find(o=>t===Ru(o.color));n?this.inputView.value=n.label:this.inputView.value=e||""}}}function Ru(r){return r.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const dl=r=>r==="";function ul(r){return{none:r("None"),solid:r("Solid"),dotted:r("Dotted"),dashed:r("Dashed"),double:r("Double"),groove:r("Groove"),ridge:r("Ridge"),inset:r("Inset"),outset:r("Outset")}}function Vf(r){return r('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Nf(r){return r('The value is invalid. Try "10px" or "2em" or simply "2".')}function co(r){return r=r.trim().toLowerCase(),dl(r)||Nm(r)}function Ln(r){return r=r.trim(),dl(r)||zf(r)||Va(r)||d_(r)}function Df(r){return r=r.trim(),dl(r)||zf(r)||Va(r)}function Of(r,i){const e=new We,t=ul(r.t);for(const n in t){const o={type:"button",model:new $a({_borderStyleValue:n,label:t[n],role:"menuitemradio",withText:!0})};n==="none"?o.model.bind("isOn").to(r,"borderStyle",s=>i==="none"?!s:s===n):o.model.bind("isOn").to(r,"borderStyle",s=>s===n),e.add(o)}return e}function oa(r){const{view:i,icons:e,toolbar:t,labels:n,propertyName:o,nameToValue:s,defaultValue:a}=r;for(const l in n){const c=new P(i.locale);c.set({role:"radio",isToggleable:!0,label:n[l],icon:e[l],tooltip:n[l]});const d=s?s(l):l;c.bind("isOn").to(i,o,h=>{let m=h;return h===""&&a&&(m=a),d===m}),c.on("execute",()=>{!a&&d&&i[o]===d?i[o]=void 0:i[o]=d}),t.items.add(c)}}const uo=[{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 ho(r){return(i,e,t)=>{const n=new fA(i.locale,{colorDefinitions:pA(r.colorConfig),columns:r.columns,defaultColorValue:r.defaultColorValue,colorPickerConfig:r.colorPickerConfig});return n.inputView.set({id:e,ariaDescribedById:t}),n.bind("isReadOnly").to(i,"isEnabled",o=>!o),n.bind("hasError").to(i,"errorText",o=>!!o),n.on("input",()=>{i.errorText=null}),i.bind("isEmpty","isFocused").to(n),n}}function zf(r){const i=parseFloat(r);return!Number.isNaN(i)&&r===String(i)}function pA(r){return r.map(i=>({color:i.model,label:i.label,options:{hasBorder:i.hasBorder}}))}class bA 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:o,borderColorInput:s,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:w}=this._createAlignmentFields();this.focusTracker=new ne,this.keystrokes=new ce,this.children=this.createCollection(),this.borderStyleDropdown=n,this.borderWidthInput=o,this.borderColorInput=s,this.backgroundInput=c,this.paddingInput=this._createPaddingField(),this.widthInput=d,this.heightInput=m,this.horizontalAlignmentToolbar=f,this.verticalAlignmentToolbar=p;const{saveButtonView:y,cancelButtonView:C}=this._createActionButtons();this.saveButtonView=y,this.cancelButtonView=C,this._focusables=new _e,this._focusCycler=new Ie({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ui(e,{label:this.t("Cell properties")})),this.children.add(new Te(e,{labelView:a,children:[a,n,s,o],class:"ck-table-form__border-row"})),this.children.add(new Te(e,{labelView:l,children:[l,c],class:"ck-table-form__background-row"})),this.children.add(new Te(e,{children:[new Te(e,{labelView:g,children:[g,d,h,m],class:"ck-table-form__dimensions-row"}),new Te(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new Te(e,{labelView:w,children:[w,f,p],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new Te(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(),qi({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=ho({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),o=this.locale,s=this.t,a=s("Style"),l=new $e(o);l.text=s("Border");const c=ul(s),d=new he(o,kg);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),To(d.fieldView,Of(this,t.style),{role:"menu",ariaLabel:a});const h=new he(o,Ze);h.set({label:s("Width"),class:"ck-table-form__border-width"}),h.fieldView.bind("value").to(this,"borderWidth"),h.bind("isEnabled").to(this,"borderStyle",Cr),h.fieldView.on("input",()=>{this.borderWidth=h.fieldView.element.value});const m=new he(o,n);return m.set({label:s("Color"),class:"ck-table-form__border-color"}),m.fieldView.bind("value").to(this,"borderColor"),m.bind("isEnabled").to(this,"borderStyle",Cr),m.fieldView.on("input",()=>{this.borderColor=m.fieldView.value}),this.on("change:borderStyle",(g,f,p,w)=>{Cr(p)||(this.borderColor="",this.borderWidth=""),Cr(w)||(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 $e(e);n.text=t("Background");const o=ho({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),s=new he(e,o);return s.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),s.fieldView.bind("value").to(this,"backgroundColor"),s.fieldView.on("input",()=>{this.backgroundColor=s.fieldView.value}),{backgroundRowLabel:n,backgroundInput:s}}_createDimensionFields(){const e=this.locale,t=this.t,n=new $e(e);n.text=t("Dimensions");const o=new he(e,Ze);o.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),o.fieldView.bind("value").to(this,"width"),o.fieldView.on("input",()=>{this.width=o.fieldView.element.value});const s=new E(e);s.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const a=new he(e,Ze);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:o,operatorLabel:s,heightInput:a}}_createPaddingField(){const e=this.locale,t=this.t,n=new he(e,Ze);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 $e(e),o={left:Da,center:jm,right:Km,justify:Gm,top:Z_,middle:$_,bottom:K_};n.text=t("Table cell text alignment");const s=new oi(e),a=e.contentLanguageDirection==="rtl";s.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Horizontal text alignment toolbar")}),oa({view:this,icons:o,toolbar:s,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 oi(e);return l.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Vertical text alignment toolbar")}),oa({view:this,icons:o,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:s,verticalAlignmentToolbar:l,alignmentLabel:n}}_createActionButtons(){const e=this.locale,t=this.t,n=new P(e),o=new P(e),s=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:t("Save"),icon:_o,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(s,"errorText",(...a)=>a.every(l=>!l)),o.set({label:t("Cancel"),icon:vo,class:"ck-button-cancel",withText:!0}),o.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:o}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,n=t("Align cell text to the left"),o=t("Align cell text to the center"),s=t("Align cell text to the right"),a=t("Justify cell text");return e.uiLanguageDirection==="rtl"?{right:s,center:o,left:n,justify:a}:{left:n,center:o,right:s,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 Cr(r){return r!=="none"}const sa=[xe.defaultPositions.northArrowSouth,xe.defaultPositions.northArrowSouthWest,xe.defaultPositions.northArrowSouthEast,xe.defaultPositions.southArrowNorth,xe.defaultPositions.southArrowNorthWest,xe.defaultPositions.southArrowNorthEast,xe.defaultPositions.viewportStickyNorth];function Ff(r,i){const e=r.plugins.get("ContextualBalloon"),t=r.editing.view.document.selection;let n;i==="cell"?Io(t)&&(n=Hf(r)):lo(t)&&(n=Uf(r)),n&&e.updatePosition(n)}function Uf(r){const i=r.model.document.selection,e=Ut(i),t=r.editing.mapper.toViewElement(e);return{target:r.editing.view.domConverter.mapViewToDom(t),positions:sa}}function Hf(r){const i=r.editing.mapper,e=r.editing.view.domConverter,t=r.model.document.selection;if(t.rangeCount>1)return{target:()=>wA(t.getRanges(),r),positions:sa};const n=Wf(t.getFirstPosition()),o=i.toViewElement(n);return{target:e.mapViewToDom(o),positions:sa}}function Wf(r){return r.nodeAfter&&r.nodeAfter.is("element","tableCell")?r.nodeAfter:r.findAncestor("tableCell")}function wA(r,i){const e=i.editing.mapper,t=i.editing.view.domConverter,n=Array.from(r).map(o=>{const s=Wf(o.start),a=e.toViewElement(s);return new B(t.mapViewToDom(a))});return B.getBoundingRect(n)}function gi(r){if(!r||!rt(r))return r;const{top:i,right:e,bottom:t,left:n}=r;if(i==e&&e==t&&t==n)return i}function fi(r,i){const e=parseFloat(r);return Number.isNaN(e)||String(e)!==String(r)?r:`${e}${i}`}function Ro(r,i={}){const e={borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",...r};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 qf(r,i){return Ro({borderStyle:"double",borderColor:"hsl(0, 0%, 70%)",borderWidth:"1px",...r},i)}function hl(r,i){return Ro({borderStyle:"solid",borderColor:"hsl(0, 0%, 75%)",borderWidth:"1px",...r},i)}const kA=500,Mu={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",height:"tableCellHeight",width:"tableCellWidth",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class yA extends v{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:uo,backgroundColors:uo})}static get requires(){return[Gt]}static get pluginName(){return"TableCellPropertiesUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t;this._defaultContentTableCellProperties=hl(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:e.locale.contentLanguageDirection==="rtl"}),this._defaultLayoutTableCellProperties=Ro(void 0,{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,isRightToLeftContent:e.locale.contentLanguageDirection==="rtl"}),this._balloon=e.plugins.get(Gt),this.view=null,this._isReady=!1,e.ui.componentFactory.add("tableCellProperties",n=>{const o=new P(n);o.set({label:t("Cell properties"),icon:I0,tooltip:!0}),this.listenTo(o,"execute",()=>this._showView());const s=Object.values(Mu).map(a=>e.commands.get(a));return o.bind("isEnabled").toMany(s,"isEnabled",(...a)=>a.some(l=>l)),o})}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,n=t.config.get("table.tableCellProperties"),o=eo(n.borderColors),s=Qr(t.locale,o),a=eo(n.backgroundColors),l=Qr(t.locale,a),c=n.colorPicker!==!1,d=new bA(t.locale,{borderColors:s,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()}),Wi({emitter:d,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const m=Vf(h),g=Nf(h);return d.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle")),d.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:d.borderColorInput,commandName:"tableCellBorderColor",errorText:m,validator:co})),d.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:d.borderWidthInput,commandName:"tableCellBorderWidth",errorText:g,validator:Df})),d.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:d.paddingInput,commandName:"tableCellPadding",errorText:g,validator:Ln})),d.on("change:width",this._getValidatedPropertyChangeCallback({viewField:d.widthInput,commandName:"tableCellWidth",errorText:g,validator:Ln})),d.on("change:height",this._getValidatedPropertyChangeCallback({viewField:d.heightInput,commandName:"tableCellHeight",errorText:g,validator:Ln})),d.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:d.backgroundInput,commandName:"tableCellBackgroundColor",errorText:m,validator:co})),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(Mu).map(([n,o])=>{const s=n,a=this.view===this._viewWithContentTableDefaults?this._defaultContentTableCellProperties[s]||"":this._defaultLayoutTableCellProperties[s]||"";return[n,e.get(o).value||a]}).forEach(([n,o])=>{(n==="borderColor"||n==="borderWidth")&&t.value==="none"||this.view.set(n,o)}),this._isReady=!0}_showView(){const e=this.editor,t=lo(e.editing.view.document.selection),n=t&&e.editing.mapper.toModelElement(t),o=!n||n.getAttribute("tableType")!=="layout";o&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableCellProperties):!o&&!this._viewWithLayoutTableDefaults&&(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableCellProperties)),this.view=o?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",()=>{this._updateView()}),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Hf(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;Io(t.selection)?this._isViewVisible&&Ff(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,o)=>{this._isReady&&this.editor.execute(e,{value:o,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:n,validator:o,errorText:s}=e,a=ot(()=>{n.errorText=s},kA);return(l,c,d)=>{a.cancel(),this._isReady&&(o(d)?(this.editor.execute(t,{value:d,batch:this._undoStepBatch}),n.errorText=null):a())}}}class Rt extends M{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,o=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(t),s=Ut(t);this._defaultValue=!s||s.getAttribute("tableType")!=="layout"?this._defaultContentTableValue:this._defaultLayoutTableValue,this.isEnabled=!!o.length,this.value=this._getSingleValue(o)}execute(e={}){const{value:t,batch:n}=e,o=this.editor.model,a=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(o.document.selection),l=this._getValueToSet(t);o.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(o=>this._getAttribute(o)===t)?t:void 0}}class vA extends Rt{constructor(i,e){super(i,"tableCellWidth",e)}_getValueToSet(i){if(i=fi(i,"px"),i!==this._defaultValue)return i}}class jf extends v{static get pluginName(){return"TableCellWidthEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[er]}init(){const i=this.editor,e=hl(i.config.get("table.tableCellProperties.defaultProperties"));Vr(i.model.schema,i.conversion,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:e.width}),i.commands.add("tableCellWidth",new vA(i,e.width))}}class _A extends Rt{constructor(i,e){super(i,"tableCellPadding",e)}_getAttribute(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=fi(i,"px");if(e!==this._defaultValue)return e}}class CA extends Rt{constructor(i,e){super(i,"tableCellHeight",e)}_getValueToSet(i){const e=fi(i,"px");if(e!==this._defaultValue)return e}}class LA extends Rt{constructor(i,e){super(i,"tableCellBackgroundColor",e)}}class TA extends Rt{constructor(i,e){super(i,"tableCellVerticalAlignment",e)}}class EA extends Rt{constructor(i,e){super(i,"tableCellHorizontalAlignment",e)}}class xA extends Rt{constructor(i,e){super(i,"tableCellBorderStyle",e)}_getAttribute(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class SA extends Rt{constructor(i,e){super(i,"tableCellBorderColor",e)}_getAttribute(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class AA extends Rt{constructor(i,e){super(i,"tableCellBorderWidth",e)}_getAttribute(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=fi(i,"px");if(e!==this._defaultValue)return e}}const Bu=/^(top|middle|bottom)$/,Vu=/^(left|center|right|justify)$/;class PA extends v{static get pluginName(){return"TableCellPropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[er,jf]}init(){const i=this.editor,e=i.model.schema,t=i.conversion;i.config.define("table.tableCellProperties.defaultProperties",{});const n=hl(i.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:i.locale.contentLanguageDirection==="rtl"});i.data.addStyleProcessorRules(zm),IA(e,t,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),i.commands.add("tableCellBorderStyle",new xA(i,n.borderStyle)),i.commands.add("tableCellBorderColor",new SA(i,n.borderColor)),i.commands.add("tableCellBorderWidth",new AA(i,n.borderWidth)),Vr(e,t,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),i.commands.add("tableCellHeight",new CA(i,n.height)),i.data.addStyleProcessorRules(x_),Vr(e,t,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),i.commands.add("tableCellPadding",new _A(i,n.padding)),i.data.addStyleProcessorRules(Om),Vr(e,t,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),i.commands.add("tableCellBackgroundColor",new LA(i,n.backgroundColor)),RA(e,t,n.horizontalAlignment),i.commands.add("tableCellHorizontalAlignment",new EA(i,n.horizontalAlignment)),MA(e,t,n.verticalAlignment),i.commands.add("tableCellVerticalAlignment",new TA(i,n.verticalAlignment))}}function IA(r,i,e){const t={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};r.extend("tableCell",{allowAttributes:Object.values(t)}),Js(i,"td",t,e),Js(i,"th",t,e),Cn(i,{modelElement:"tableCell",modelAttribute:t.style,styleName:"border-style"}),Cn(i,{modelElement:"tableCell",modelAttribute:t.color,styleName:"border-color"}),Cn(i,{modelElement:"tableCell",modelAttribute:t.width,styleName:"border-width"})}function RA(r,i,e){r.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":Vu}},model:{key:"tableCellHorizontalAlignment",value:(t,n,o)=>{const s=Ft(e,"left",o),a=t.getStyle("text-align");return a===s?null:a}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:Vu}},model:{key:"tableCellHorizontalAlignment",value:(t,n,o)=>{const s=Ft(e,"left",o),a=t.getAttribute("align");return a===s?null:a}}})}function MA(r,i,e){r.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":Bu}},model:{key:"tableCellVerticalAlignment",value:(t,n,o)=>{const s=Ft(e,"middle",o),a=t.getStyle("vertical-align");return a===s?null:a}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:Bu}},model:{key:"tableCellVerticalAlignment",value:(t,n,o)=>{const s=Ft(e,"middle",o),a=t.getAttribute("valign");return a===s?null:a}}})}class BA extends v{static get pluginName(){return"TableCellProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[PA,yA]}}class VA extends M{refresh(){this.isEnabled=!0}execute(i={}){const{model:e,plugins:t}=this.editor;let{table:n=e.document.selection.getSelectedElement(),columnWidths:o,tableWidth:s}=i;o&&(o=Array.isArray(o)?o:o.split(",")),e.change(a=>{s?a.setAttribute("tableWidth",s,n):a.removeAttribute("tableWidth",n);const l=t.get("TableColumnResizeEditing").getColumnGroupElement(n);if(!o&&!l)return;if(!o)return a.remove(l);const c=cl(o);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 NA(r){return i=>i.on("element:colgroup",(e,t,n)=>{const o=t.modelCursor.findAncestor("table"),s=Xn(o);if(!s)return;const a=Qn(s),l=r.getColumns(o);let c=RS(s,n.writer);c=Array.from({length:l},(d,h)=>c[h]||"auto"),(c.length!=a.length||c.includes("auto"))&&Af(a,s,cl(c),n.writer)},{priority:"low"})}function DA(){return r=>r.on("insert:table",(i,e,t)=>{const n=t.writer,o=e.item,s=t.mapper.toViewElement(o),a=s.is("element","table")?s:Array.from(s.getChildren()).find(c=>c.is("element","table"));Xn(o)?n.addClass("ck-table-resized",a):n.removeClass("ck-table-resized",a)},{priority:"low"})}const Nu=Hi("px");class OA extends v{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(Pe()),this._tableUtilsPlugin=e.plugins.get("TableUtils"),this.on("change:_isResizingAllowed",(t,n,o)=>{const s=o?"removeClass":"addClass";e.editing.view.change(a=>{for(const l of e.editing.view.document.roots)a[s]("ck-column-resize_disabled",e.editing.view.document.getRoot(l.rootName))})})}static get requires(){return[er,be]}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:s=>s.is("element","tableColumnGroup"),positionOffset:0});const o=new VA(e);e.commands.add("resizeTableWidth",o),e.commands.add("resizeColumnWidths",o),this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",o,"isEnabled",(s,a,l)=>!s&&a&&l)}destroy(){this._domEmitter.stopListening(),super.destroy()}getColumnGroupElement(e){return Xn(e)}getTableColumnElements(e){return Qn(e)}getTableColumnsWidths(e){return IS(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(s=>{let a=!1;for(const l of LS(t)){const c=this.getColumnGroupElement(l),d=this.getTableColumnElements(c),h=this.getTableColumnsWidths(c);let m=cl(h);m=n(m,l,this),!Fr(h,m)&&(Af(d,c,m,s),a=!0)}return a});function n(s,a,l){const c=l._tableUtilsPlugin.getColumns(a);if(c-s.length===0)return s;const h=s.map(g=>Number(g.replace("%",""))),m=o(l.editor.model.document.differ,a);for(const g of m){const f=c-h.length;if(f===0)continue;const p=f>0,w=l._tableUtilsPlugin.getCellLocation(g).column;if(p){const y=TS(a,l.editor),C=SS(f,y);h.splice(w,0,...C)}else{const y=h.splice(w,Math.abs(f));h[w]+=Wn(y)}}return h.map(g=>g+"%")}function o(s,a){const l=new Set;for(const c of s.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(DA()),t.for("upcast").add(NA(this._tableUtilsPlugin)),t.for("upcast").attributeToAttribute({view:{name:"col",styles:{width:/.*/}},model:{key:"columnWidth",value:n=>{const o=n.getStyle("width");return!o||!o.endsWith("%")&&!o.endsWith("pt")?"auto":o}}}),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(Rf),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",En(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,o=n.mapViewToDom(e.findAncestor("table")),s=n.mapViewToDom(e.findAncestor(h=>["td","th"].includes(h.name))),a=new B(o),l=new B(s),c=Nu(Number((a.top-l.top).toFixed(4))),d=Nu(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 o=this.editor,s=o.editing.mapper.toModelElement(n.findAncestor("figure"));o.model.canEditAt(s)&&(t.preventDefault(),e.stop(),this._initialMouseEventData=t)}_startResizingAfterThreshold(){const e=this._initialMouseEventData,{target:t}=e,n=this.editor.editing.mapper.toModelElement(t.findAncestor("figure")),o=t.findAncestor("table"),s=a(n,this._tableUtilsPlugin,this.editor);Array.from(o.getChildren()).find(d=>d.is("element","colgroup"))||this.editor.editing.view.change(d=>{l(d,s,o)}),this._isResizingActive=!0,this._resizingData=this._getResizingData(e,s),this.editor.editing.view.change(d=>c(d,o,this._resizingData));function a(d,h,m){const g=Array(h.getColumns(d)),f=new q(d);for(const p of f){const w=m.editing.mapper.toViewElement(p.cell),y=m.editing.view.domConverter.mapViewToDom(w),C=PS(y);(!g[p.column]||C<g[p.column])&&(g[p.column]=Me(C))}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"),w=`${Me(h[f]/Wn(h)*100)}%`;d.setStyle("width",w,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",`${Me(g*100)}%`,h.findAncestor("figure"))}}_onMouseMoveHandler(e,t){if(this._initialMouseEventData){const z=this._initialMouseEventData.domEvent;if(Math.abs(t.clientX-z.clientX)>=CS)this._startResizingAfterThreshold(),this._initialMouseEventData=null;else return}if(!this._isResizingActive)return;if(!this._isResizingAllowed){this._onMouseUpHandler();return}const{columnPosition:n,flags:{isRightEdge:o,isTableCentered:s,isLtrContent:a},elements:{viewFigure:l,viewLeftColumn:c,viewRightColumn:d,viewResizer:h},widths:{viewFigureParentWidth:m,tableWidth:g,leftColumnWidth:f,rightColumnWidth:p}}=this._resizingData,w=-f+ea,y=o?m-g:p-ea,C=(a?1:-1)*(o&&s?2:1),R=xS((t.clientX-n)*C,Math.min(w,0),Math.max(y,0));R!==0&&(this.editor.editing.view.change(z=>{const re=Me((f+R)*100/g);if(z.setStyle("width",`${re}%`,c),o){const ee=Me((g+R)*100/m);z.setStyle("width",`${ee}%`,l)}else{const ee=Me((p-R)*100/g);z.setStyle("width",`${ee}%`,d)}}),this._recalculateResizerElement(h))}_onMouseUpHandler(){if(this._initialMouseEventData=null,!this._isResizingActive)return;const{viewResizer:e,modelTable:t,viewFigure:n,viewColgroup:o}=this._resizingData.elements,s=this.editor,a=s.editing.view,l=this.getColumnGroupElement(t),c=Array.from(o.getChildren()).filter(y=>y.is("view:element")),d=l?this.getTableColumnsWidths(l):null,h=c.map(y=>y.getStyle("width")),m=!Fr(d,h),g=t.getAttribute("tableWidth"),f=n.getStyle("width"),p=g!==f;(m||p)&&(this._isResizingAllowed?s.execute("resizeTableWidth",{table:t,tableWidth:`${Me(f)}%`,columnWidths:h}):a.change(y=>{if(d)for(const C of c)y.setStyle("width",d.shift(),C);else y.remove(o);p&&(g?y.setStyle("width",g,n):y.removeStyle("width",n)),!d&&!g&&y.removeClass("ck-table-resized",[...n.getChildren()].find(C=>C.name==="table"))})),a.change(y=>{y.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,o=e.domEvent.clientX,s=e.target,a=s.findAncestor("td")||s.findAncestor("th"),l=n.editing.mapper.toModelElement(a),c=l.findAncestor("table"),d=ES(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"),w=p.findAncestor("figure"),y=[...p.getChildren()].find(S=>S.is("element","colgroup")),C=y.getChild(d),R=m?void 0:y.getChild(d+1),z=ta(n.editing.view.domConverter.mapViewToDom(w.parent)),re=ta(n.editing.view.domConverter.mapViewToDom(w)),ee=Sf(c,n),x=t[d],D=m?void 0:t[d+1];return{columnPosition:o,flags:{isRightEdge:m,isTableCentered:g,isLtrContent:f},elements:{viewResizer:s,modelTable:c,viewFigure:w,viewColgroup:y,viewLeftColumn:C,viewRightColumn:R},widths:{viewFigureParentWidth:z,viewFigureWidth:re,tableWidth:ee,leftColumnWidth:x,rightColumnWidth:D}}}_registerResizerInserter(){this.editor.conversion.for("editingDowncast").add(e=>{e.on("insert:tableCell",(t,n,o)=>{const s=n.item,a=o.mapper.toViewElement(s),l=o.writer;l.insert(l.createPositionAt(a,"end"),l.createUIElement("div",{class:"ck-table-column-resizer"}))},{priority:"lowest"})})}}class zA extends v{static get requires(){return[OA,jf]}static get pluginName(){return"TableColumnResize"}static get isOfficialPlugin(){return!0}}class pi extends M{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=Ut(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:o,batch:s}=e,a=Ut(n),l=this._getValueToSet(o);t.enqueueChange(s,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 FA extends pi{constructor(i,e){super(i,"tableBackgroundColor",e)}}class UA extends pi{constructor(i,e){super(i,"tableBorderColor",e)}_getValue(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class HA extends pi{constructor(i,e){super(i,"tableBorderStyle",e)}_getValue(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}}class WA extends pi{constructor(i,e){super(i,"tableBorderWidth",e)}_getValue(i){if(!i)return;const e=gi(i.getAttribute(this.attributeName));if(e!==this._defaultValue)return e}_getValueToSet(i){const e=fi(i,"px");if(e!==this._defaultValue)return e}}class qA extends pi{constructor(i,e){super(i,"tableWidth",e)}_getValueToSet(i){if(i=fi(i,"px"),i!==this._defaultValue)return i}}class jA extends pi{constructor(i,e){super(i,"tableHeight",e)}_getValueToSet(i){if(i=fi(i,"px"),i!==this._defaultValue)return i}}class GA extends pi{constructor(i,e){super(i,"tableAlignment",e)}}const KA=/^(left|center|right)$/,$A=/^(left|none|right)$/;class ZA extends v{static get pluginName(){return"TablePropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[er]}init(){const i=this.editor,e=i.model.schema,t=i.conversion;i.config.define("table.tableProperties.defaultProperties",{});const n=qf(i.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});i.data.addStyleProcessorRules(zm),JA(e,t,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),i.commands.add("tableBorderColor",new UA(i,n.borderColor)),i.commands.add("tableBorderStyle",new HA(i,n.borderStyle)),i.commands.add("tableBorderWidth",new WA(i,n.borderWidth)),YA(e,t,n.alignment),i.commands.add("tableAlignment",new GA(i,n.alignment)),Du(e,t,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),i.commands.add("tableWidth",new qA(i,n.width)),Du(e,t,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),i.commands.add("tableHeight",new jA(i,n.height)),i.data.addStyleProcessorRules(Om),XA(e,t,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),i.commands.add("tableBackgroundColor",new FA(i,n.backgroundColor))}}function JA(r,i,e){const t={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};r.extend("table",{allowAttributes:Object.values(t)}),Js(i,"table",t,e),Mr(i,{modelAttribute:t.color,styleName:"border-color"}),Mr(i,{modelAttribute:t.style,styleName:"border-style"}),Mr(i,{modelAttribute:t.width,styleName:"border-width"})}function YA(r,i,e){r.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,o)=>({key:"style",value:o.item.getAttribute("tableType")!=="layout"?{float:"none"}:{"margin-left":"auto","margin-right":"auto"}})},converterPriority:"high"}),i.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:$A}},model:{key:"tableAlignment",value:(t,n,o)=>{const s=Ft(e,"",o);let a=t.getStyle("float");return a==="none"&&(a="center"),a===s?null:a}}}).attributeToAttribute({view:{name:/^(table|figure)$/,styles:{"margin-left":"auto","margin-right":"auto"}},model:{key:"tableAlignment",value:(t,n,o)=>{const s=Ft(e,"",o),a="center";return a===s?null:a}}}).attributeToAttribute({view:{attributes:{align:KA}},model:{name:"table",key:"tableAlignment",value:(t,n,o)=>{const s=Ft(e,"",o),a=t.getAttribute("align");return a===s?null:a}}})}function XA(r,i,e){const{modelAttribute:t}=e;r.extend("table",{allowAttributes:[t]}),al(i,{viewElement:"table",...e}),Mr(i,e)}function Du(r,i,e){const{modelAttribute:t}=e;r.extend("table",{allowAttributes:[t]}),al(i,{viewElement:/^(table|figure)$/,shouldUpcast:n=>!(n.name=="table"&&n.parent.name=="figure"),...e}),Cn(i,{modelElement:"table",...e})}class QA 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:o,borderColorInput:s,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 ne,this.keystrokes=new ce,this.children=this.createCollection(),this.borderStyleDropdown=n,this.borderWidthInput=o,this.borderColorInput=s,this.backgroundInput=c,this.widthInput=d,this.heightInput=m,this.alignmentToolbar=f;const{saveButtonView:w,cancelButtonView:y}=this._createActionButtons();this.saveButtonView=w,this.cancelButtonView=y,this._focusables=new _e,this._focusCycler=new Ie({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ui(e,{label:this.t("Table properties")})),this.children.add(new Te(e,{labelView:a,children:[a,n,s,o],class:"ck-table-form__border-row"})),this.children.add(new Te(e,{labelView:l,children:[l,c],class:"ck-table-form__background-row"})),this.children.add(new Te(e,{children:[new Te(e,{labelView:g,children:[g,d,h,m],class:"ck-table-form__dimensions-row"}),new Te(e,{labelView:p,children:[p,f],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new Te(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(),qi({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=ho({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),o=this.locale,s=this.t,a=s("Style"),l=new $e(o);l.text=s("Border");const c=ul(s),d=new he(o,kg);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),To(d.fieldView,Of(this,t.style),{role:"menu",ariaLabel:a});const h=new he(o,Ze);h.set({label:s("Width"),class:"ck-table-form__border-width"}),h.fieldView.bind("value").to(this,"borderWidth"),h.bind("isEnabled").to(this,"borderStyle",Lr),h.fieldView.on("input",()=>{this.borderWidth=h.fieldView.element.value});const m=new he(o,n);return m.set({label:s("Color"),class:"ck-table-form__border-color"}),m.fieldView.bind("value").to(this,"borderColor"),m.bind("isEnabled").to(this,"borderStyle",Lr),m.fieldView.on("input",()=>{this.borderColor=m.fieldView.value}),this.on("change:borderStyle",(g,f,p,w)=>{Lr(p)||(this.borderColor="",this.borderWidth=""),Lr(w)||(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 $e(e);n.text=t("Background");const o=ho({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),s=new he(e,o);return s.set({label:t("Color"),class:"ck-table-properties-form__background"}),s.fieldView.bind("value").to(this,"backgroundColor"),s.fieldView.on("input",()=>{this.backgroundColor=s.fieldView.value}),{backgroundRowLabel:n,backgroundInput:s}}_createDimensionFields(){const e=this.locale,t=this.t,n=new $e(e);n.text=t("Dimensions");const o=new he(e,Ze);o.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),o.fieldView.bind("value").to(this,"width"),o.fieldView.on("input",()=>{this.width=o.fieldView.element.value});const s=new E(e);s.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const a=new he(e,Ze);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:o,operatorLabel:s,heightInput:a}}_createAlignmentFields(){const e=this.locale,t=this.t,n=new $e(e);n.text=t("Alignment");const o=new oi(e);return o.set({role:"radiogroup",isCompact:!0,ariaLabel:t("Table alignment toolbar")}),oa({view:this,icons:{left:w0,center:b0,right:k0},toolbar:o,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:n,alignmentToolbar:o}}_createActionButtons(){const e=this.locale,t=this.t,n=new P(e),o=new P(e),s=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:t("Save"),icon:_o,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(s,"errorText",(...a)=>a.every(l=>!l)),o.set({label:t("Cancel"),icon:vo,class:"ck-button-cancel",withText:!0}),o.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:o}}get _alignmentLabels(){const e=this.locale,t=this.t,n=t("Align table to the left"),o=t("Center table"),s=t("Align table to the right");return e.uiLanguageDirection==="rtl"?{right:s,center:o,left:n}:{left:n,center:o,right:s}}}function Lr(r){return r!=="none"}const eP=500,Ou={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class tP extends v{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:uo,backgroundColors:uo})}static get requires(){return[Gt]}static get pluginName(){return"TablePropertiesUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;this._defaultContentTableProperties=qf(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._defaultLayoutTableProperties=Ro(),this._balloon=e.plugins.get(Gt),e.ui.componentFactory.add("tableProperties",()=>this._createTablePropertiesButton())}_createTablePropertiesButton(){const e=this.editor,t=e.t,n=new P(e.locale);n.set({label:t("Table properties"),icon:B0,tooltip:!0}),this.listenTo(n,"execute",()=>this._showView());const o=Object.values(Ou).map(s=>e.commands.get(s));return n.bind("isEnabled").toMany(o,"isEnabled",(...s)=>s.some(a=>a)),n}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,n=t.config.get("table.tableProperties"),o=eo(n.borderColors),s=Qr(t.locale,o),a=eo(n.backgroundColors),l=Qr(t.locale,a),c=n.colorPicker!==!1,d=new QA(t.locale,{borderColors:s,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()}),Wi({emitter:d,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const m=Vf(h),g=Nf(h);return d.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle")),d.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:d.borderColorInput,commandName:"tableBorderColor",errorText:m,validator:co})),d.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:d.borderWidthInput,commandName:"tableBorderWidth",errorText:g,validator:Df})),d.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:d.backgroundInput,commandName:"tableBackgroundColor",errorText:m,validator:co})),d.on("change:width",this._getValidatedPropertyChangeCallback({viewField:d.widthInput,commandName:"tableWidth",errorText:g,validator:Ln})),d.on("change:height",this._getValidatedPropertyChangeCallback({viewField:d.heightInput,commandName:"tableHeight",errorText:g,validator:Ln})),d.on("change:alignment",this._getPropertyChangeCallback("tableAlignment")),d}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Ou).map(([n,o])=>{const s=n,a=this.view===this._viewWithContentTableDefaults?this._defaultContentTableProperties[s]||"":this._defaultLayoutTableProperties[s]||"";return[s,e.get(o).value||a]}).forEach(([n,o])=>{(n==="borderColor"||n==="borderWidth")&&t.value==="none"||this.view.set(n,o)}),this._isReady=!0}_showView(){const e=this.editor,t=lo(e.editing.view.document.selection),n=t&&e.editing.mapper.toModelElement(t),o=!n||n.getAttribute("tableType")!=="layout";o&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableProperties):!o&&!this._viewWithLayoutTableDefaults&&(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableProperties)),this.view=o?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",()=>{this._updateView()}),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Uf(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;lo(t.selection)?this._isViewVisible&&Ff(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,o)=>{this._isReady&&this.editor.execute(e,{value:o,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:n,validator:o,errorText:s}=e,a=ot(()=>{n.errorText=s},eP);return(l,c,d)=>{a.cancel(),this._isReady&&(o(d)?(this.editor.execute(t,{value:d,batch:this._undoStepBatch}),n.errorText=null):a())}}}class iP extends v{static get pluginName(){return"TableProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[ZA,tP]}}/**
|
|
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 nP(r){r.document.registerPostFixer(i=>rP(i,r))}function rP(r,i){const e=i.document.differ.getChanges();let t=!1;for(const n of e){if(n.type!="insert")continue;const o=n.position.parent;if(o.is("element","table")||n.name=="table"){const s=n.name=="table"?n.position.nodeAfter:o,a=Array.from(s.getChildren()).filter(c=>c.is("element","caption")),l=a.shift();if(!l)continue;for(const c of a)r.move(r.createRangeIn(c),l,"end"),r.remove(c);l.nextSibling&&(r.move(r.createRangeOn(l),s,"end"),t=!0),t=!!a.length||t}}return t}function zu(r){return!!r&&r.is("element","table")}function aa(r){for(const i of r.getChildren())if(i.is("element","caption"))return i;return null}function oP(r){const i=Ut(r);return i?aa(i):null}function sP(r){const i=r.parent;return r.name=="figcaption"&&i&&i.is("element","figure")&&i.hasClass("table")?{name:!0}:r.name=="caption"&&i&&i.is("element","table")?{name:!0}:null}class aP extends M{refresh(){const i=this.editor,e=Ut(i.model.document.selection);this.isEnabled=!!e&&i.model.schema.checkChild(e,"caption"),this.isEnabled?this.value=!!aa(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=Ut(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=Ut(e.document.selection),n=this.editor.plugins.get("TableCaptionEditing"),o=aa(t);n._saveCaption(t,o),e.deleteContent(i.createSelection(o,"on"))}}class lP extends v{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,o=e.t;t.isRegistered("caption")?t.extend("caption",{allowIn:"table"}):t.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new aP(this.editor)),e.conversion.for("upcast").elementToElement({view:sP,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(s,{writer:a})=>zu(s.parent)?a.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(s,{writer:a})=>{if(!zu(s.parent))return null;const l=a.createEditableElement("figcaption");return a.setCustomProperty("tableCaption",!0,l),l.placeholder=o("Enter table caption"),Gh({view:n,element:l,keepOnFocus:!0}),Dg(l,a)}}),nP(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 cP extends v{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 o=i.commands.get("toggleTableCaption"),s=new P(n);return s.set({icon:J_,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.bind("label").to(o,"value",a=>t(a?"Toggle caption off":"Toggle caption on")),this.listenTo(s,"execute",()=>{if(i.execute("toggleTableCaption",{focusCaptionOnShow:!0}),o.value){const a=oP(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()}),s})}}class dP extends v{static get pluginName(){return"TableCaption"}static get isOfficialPlugin(){return!0}static get requires(){return[lP,cP]}}/**
|
|
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 uP={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><br></code> element)":"Wstawia miękki enter (element <code><br></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(r){return r==1?0:r%10>=2&&r%10<=4&&(r%100<10||r%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 hP={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><br></code> element)":"قمْ بإدراج فاصل بسيط (عنصر <code><br></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(r){return r==0?0:r==1?1:r==2?2:r%100>=3&&r%100<=10?3:r%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 mP={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><br></code> element)":"插入非強制斷行(<code><br></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(r){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 gP={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><br></code> element)":"Einen weichen Zeilenumbruch einfügen (ein <code><br></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(r){return r!=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 fP={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><br></code> element)":"Inserta un salto de línea (un elemento <code><br></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(r){return r!=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 pP={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><br></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(r){return r<=-2||r>=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 bP={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><br></code> element)":"एक सॉफ़्ट ब्रेक इंसर्ट करें (एक <code><br></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(r){return r!=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 wP={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><br></code> element)":"줄 바꿈 삽입(<code><br></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(r){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 kP={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><br></code> element)":"Inserir uma quebra suave (um elemento <code><br></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(r){return r!=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 yP={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><br></code> element)":"Вставить мягкий разрыв (элемент <code><br></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(r){return r%10==1&&r%100!=11?0:r%10>=2&&r%10<=4&&(r%100<10||r%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 vP={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><br></code> element)":"Chèn dấu ngắt mềm (phần tử <code><br></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(r){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 _P={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><br></code> element)":"Insert a soft break (a <code><br></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(r){return r!=1}}},Fu={pl:uP,ar:hP,zn:mP,de:gP,es:fP,fr:pP,hi:bP,ko:wP,pt:kP,ru:yP,vi:vP,en:_P},CP=document.documentElement.lang,LP=Fu[CP]||Fu.en;function TP({initialValue:r,onChange:i,options:e,disabled:t}){const n=U.useRef(null),o=U.useRef(null),[s,a]=U.useState(!1);U.useEffect(()=>(a(!0),()=>a(!1)),[]);const l=U.useMemo(()=>s?{translations:[LP],toolbar:{items:(e==null?void 0:e.items)??[],shouldNotGroupWhenFull:!0},plugins:[iL,bL,NL,yL,OT,jT,XT,gE,il,pE,kE,tl,yE,It,LE,EE,CL,lx,Mx,qx,no,$x,Zx,mA,dP,BA,zA,iP,gA,EL],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:["imageTextAlternative"]},initialData:r,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"]}}:{},[s]),c=U.useCallback((d,h)=>{const m=h.getData();d.name==="change:data"&&i(m)},[r]);return O.jsx("div",{className:`max-fit ${t?"pointer-events-none opacity-50 cursor-not-allowed":""}`,children:O.jsx("div",{className:"editor-container editor-container_classic-editor",ref:n,children:O.jsx("div",{className:"editor-container__editor",children:O.jsx("div",{ref:o,children:l&&O.jsx($u,{editor:LT,config:l,onChange:c})})})})})}const EP=O.jsx("svg",{width:"10",height:"10",viewBox:"0 0 22 22",xmlns:"http://www.w3.org/2000/svg",children:O.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"})}),xP="_Wrapper_18nsw_1",SP="_active_18nsw_7",AP="_Page_18nsw_8",PP="_clone_18nsw_18",IP="_Remove_18nsw_29",RP="_insertBefore_18nsw_35",MP="_insertAfter_18nsw_36",BP="_vertical_18nsw_44",Bt={Wrapper:xP,active:SP,Page:AP,clone:PP,Remove:IP,insertBefore:RP,insertAfter:MP,vertical:BP};var VP=(r=>(r[r.Before=-1]="Before",r[r.After=1]="After",r))(VP||{}),Gf=(r=>(r.Horizontal="horizontal",r.Vertical="vertical",r.Grid="grid",r))(Gf||{});const sI=U.forwardRef(function({id:i,index:e,active:t,clone:n,insertPosition:o,layout:s,onRemove:a,style:l,url:c,...d},h){return O.jsxs("li",{className:Jf(Bt.Wrapper,t&&Bt.active,n&&Bt.clone,o===-1&&Bt.insertBefore,o===1&&Bt.insertAfter,s==="vertical"&&Bt.vertical),style:l,ref:h,children:[O.jsx("button",{className:`${Bt.Page} after:bg-black dark:after:bg-gray-300`,"data-id":i.toString(),...d,children:O.jsx("img",{src:c,alt:"",className:"absolute top-0 left-0 w-full h-full object-cover overflow-hidden rounded-[5px]"})}),!t&&a?O.jsx("button",{className:Bt.Remove,onClick:a,children:EP}):null]})}),NP=U.lazy(()=>Ui(()=>import("./toast-editor-BZM5RHph.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),DP=U.lazy(()=>Ui(()=>import("./app.js").then(r=>r.bN),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),OP=U.lazy(()=>Ui(()=>import("./app.js").then(r=>r.bM),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),zP=U.lazy(()=>Ui(()=>import("./geo-json-uSUIgJf5.js"),__vite__mapDeps([7,1,2,3,4,5,6]),import.meta.url)),FP=U.lazy(()=>Ui(()=>import("./app.js").then(r=>r.bO),__vite__mapDeps([1,2,3,4,5,6]),import.meta.url)),UP=U.lazy(()=>Ui(()=>import("./media-manager-Bms57WSN.js"),__vite__mapDeps([8,1,2,3,4,5,6,9,10,11]),import.meta.url)),HP=U.memo(({field:r,value:i,onChange:e,processing:t,notFound:n,search:o})=>{var C,R,z,re,ee,x,D,S,I,K,ge,oe,tr,Zi,ml,gl,fl,pl,bl,wl,kl,yl,vl,_l,Cl;const s=U.useCallback(Y=>{e(r.name,Y.target.value)},[e,r.name]),a=U.useCallback(Y=>{e(r.name,Y[0])},[e,r.name]),l=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),c=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),d=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),h=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),m=U.useCallback(Y=>{e(r.name,Y.json)},[e,r.name]),g=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),f=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),p=U.useCallback(Y=>{e(r.name,Y)},[e,r.name]),w=U.useCallback(Y=>{const Kf=Y.map(Ll=>({id:Ll.id,url:Ll.url}));e(r.name,Kf)},[e,r.name]),y=U.useMemo(()=>r.type==="color"?"max-w-[40px] p-px h-[40px] border-transparent":["date","datetime-local","time","month","week"].includes(r.type)?"w-fit":"",[]);switch(r.type){case"checkbox":return O.jsx(sp,{id:`${r.type}-${r.name}`,disabled:t||r.disabled,tabIndex:1,required:r.required,className:"cursor-pointer size-5",checked:i??!1,onCheckedChange:l});case"textarea":return O.jsx(op,{id:`${r.type}-${r.name}`,tabIndex:1,disabled:t||r.disabled,value:i??"",required:r.required,onChange:s,placeholder:r.label});case"range":return O.jsxs(O.Fragment,{children:[O.jsx("output",{children:i}),O.jsx(rp,{defaultValue:[Number(r.value)||0],value:[Number(i)||0],max:(C=r.options)!=null&&C.max?Number(r.options.max):100,min:(R=r.options)!=null&&R.min?Number(r.options.min):0,step:1,id:`${r.type}-${r.name}`,onValueChange:a,disabled:t||r.disabled})]});case"select":return O.jsxs(Qf,{onValueChange:c,defaultValue:i??"",disabled:t||r.disabled,required:r.required,children:[O.jsx(ep,{className:"w-full cursor-pointer min-h-10",id:r.name,children:O.jsx(tp,{placeholder:""})}),O.jsx(ip,{children:(r.isIn??[]).map(Y=>O.jsx(np,{value:Y,children:Y},Y))})]});case"association":case"association-many":case"select-many":return O.jsx(Xf,{options:r.options,onValueChange:p,defaultValue:i??[],variant:"secondary",notFound:n,search:o,disabled:t||r.disabled,mode:r.type==="association"?"single":"multiple",maxCount:10,className:`${t?"pointer-events-none":""}`});case"wysiwyg":return((z=r.options)==null?void 0:z.name)==="ckeditor"?O.jsx(TP,{initialValue:i??"",onChange:d,options:(re=r.options)==null?void 0:re.config,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(ee=r.options)==null?void 0:ee.path,options:(x=r.options)==null?void 0:x.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:d,disabled:t||r.disabled});case"markdown":return((D=r.options)==null?void 0:D.name)==="toast-ui"?O.jsx(NP,{initialValue:r.value??"",options:(S=r.options)==null?void 0:S.config,onChange:d,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(I=r.options)==null?void 0:I.path,options:(K=r.options)==null?void 0:K.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:d,disabled:t||r.disabled});case"table":return((ge=r.options)==null?void 0:ge.name)==="handsontable"?O.jsx(DP,{data:i,config:(oe=r.options)==null?void 0:oe.config,onChange:h,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(tr=r.options)==null?void 0:tr.path,options:(Zi=r.options)==null?void 0:Zi.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:d,disabled:t||r.disabled});case"jsonEditor":return((ml=r.options)==null?void 0:ml.name)==="jsoneditor"?O.jsx(OP,{content:i,name:`${r.type}-${r.name}`,onChange:m,...(gl=r.options)==null?void 0:gl.config,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(fl=r.options)==null?void 0:fl.path,options:(pl=r.options)==null?void 0:pl.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:m,disabled:t||r.disabled});case"codeEditor":return((bl=r.options)==null?void 0:bl.name)==="monaco"?O.jsx(FP,{value:i??"",onChange:g,options:(wl=r.options)==null?void 0:wl.config,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(kl=r.options)==null?void 0:kl.path,options:(yl=r.options)==null?void 0:yl.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:m,disabled:t||r.disabled});case"geoJson":return((vl=r.options)==null?void 0:vl.name)==="leaflet"?O.jsx(zP,{mode:"all",initialFeatures:i??void 0,onFeaturesChange:f,disabled:t||r.disabled}):O.jsx(bi,{moduleComponent:(_l=r.options)==null?void 0:_l.path,options:(Cl=r.options)==null?void 0:Cl.config,initialValue:i??"",name:`${r.type}-${r.name}`,onChange:m,disabled:t||r.disabled});case"mediamanager":return O.jsx(UP,{layout:Gf.Grid,config:{id:r.options.id,group:r.options.group},value:i,onChange:w});default:return O.jsx(Yf,{id:r.name,type:r.type,className:`${y} min-h-10`,required:r.required,tabIndex:1,value:i??"",onChange:s,disabled:t||r.disabled,placeholder:r.label})}}),aI=Object.freeze(Object.defineProperty({__proto__:null,default:HP},Symbol.toStringTag,{value:"Module"}));export{HP as F,sI as I,VP as P,aI as f,Bt as p};
|