@ncino/web-components 7.0.0-preview.8 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/components/input-rich-text/ckeditor-config.js +1 -1
  2. package/dist/components/input-rich-text/input-rich-text.slds.js +2 -2
  3. package/dist/components/progress-ring/gator/progress-ring.gator.js +36 -0
  4. package/dist/components/progress-ring/index.js +1 -0
  5. package/dist/index.gator.js +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-alignment@45.2.1 → @ckeditor_ckeditor5-alignment@45.2.2}/node_modules/@ckeditor/ckeditor5-alignment/dist/index.js +1 -1
  8. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autoformat@45.2.1 → @ckeditor_ckeditor5-autoformat@45.2.2}/node_modules/@ckeditor/ckeditor5-autoformat/dist/index.js +1 -1
  9. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autosave@45.2.1 → @ckeditor_ckeditor5-autosave@45.2.2}/node_modules/@ckeditor/ckeditor5-autosave/dist/index.js +1 -1
  10. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-basic-styles@45.2.1 → @ckeditor_ckeditor5-basic-styles@45.2.2}/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +1 -1
  11. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-block-quote@45.2.1 → @ckeditor_ckeditor5-block-quote@45.2.2}/node_modules/@ckeditor/ckeditor5-block-quote/dist/index.js +1 -1
  12. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-clipboard@45.2.1 → @ckeditor_ckeditor5-clipboard@45.2.2}/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +4 -4
  13. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-cloud-services@45.2.1 → @ckeditor_ckeditor5-cloud-services@45.2.2}/node_modules/@ckeditor/ckeditor5-cloud-services/dist/index.js +1 -1
  14. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-code-block@45.2.1 → @ckeditor_ckeditor5-code-block@45.2.2}/node_modules/@ckeditor/ckeditor5-code-block/dist/index.js +1 -1
  15. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-core@45.2.1 → @ckeditor_ckeditor5-core@45.2.2}/node_modules/@ckeditor/ckeditor5-core/dist/index.js +1 -1
  16. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-editor-classic@45.2.1 → @ckeditor_ckeditor5-editor-classic@45.2.2}/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +1 -1
  17. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-engine@45.2.1 → @ckeditor_ckeditor5-engine@45.2.2}/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +1 -1
  18. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-enter@45.2.1 → @ckeditor_ckeditor5-enter@45.2.2}/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +1 -1
  19. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-essentials@45.2.1 → @ckeditor_ckeditor5-essentials@45.2.2}/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +1 -1
  20. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-find-and-replace@45.2.1 → @ckeditor_ckeditor5-find-and-replace@45.2.2}/node_modules/@ckeditor/ckeditor5-find-and-replace/dist/index.js +1 -1
  21. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-font@45.2.1 → @ckeditor_ckeditor5-font@45.2.2}/node_modules/@ckeditor/ckeditor5-font/dist/index.js +1 -1
  22. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-heading@45.2.1 → @ckeditor_ckeditor5-heading@45.2.2}/node_modules/@ckeditor/ckeditor5-heading/dist/index.js +1 -1
  23. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-highlight@45.2.1 → @ckeditor_ckeditor5-highlight@45.2.2}/node_modules/@ckeditor/ckeditor5-highlight/dist/index.js +1 -1
  24. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-horizontal-line@45.2.1 → @ckeditor_ckeditor5-horizontal-line@45.2.2}/node_modules/@ckeditor/ckeditor5-horizontal-line/dist/index.js +1 -1
  25. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-embed@45.2.1 → @ckeditor_ckeditor5-html-embed@45.2.2}/node_modules/@ckeditor/ckeditor5-html-embed/dist/index.js +1 -1
  26. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-support@45.2.1 → @ckeditor_ckeditor5-html-support@45.2.2}/node_modules/@ckeditor/ckeditor5-html-support/dist/index.js +1 -1
  27. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-image@45.2.1 → @ckeditor_ckeditor5-image@45.2.2}/node_modules/@ckeditor/ckeditor5-image/dist/index.js +1 -1
  28. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-indent@45.2.1 → @ckeditor_ckeditor5-indent@45.2.2}/node_modules/@ckeditor/ckeditor5-indent/dist/index.js +1 -1
  29. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-language@45.2.1 → @ckeditor_ckeditor5-language@45.2.2}/node_modules/@ckeditor/ckeditor5-language/dist/index.js +1 -1
  30. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-link@45.2.1 → @ckeditor_ckeditor5-link@45.2.2}/node_modules/@ckeditor/ckeditor5-link/dist/index.js +1 -1
  31. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-list@45.2.1 → @ckeditor_ckeditor5-list@45.2.2}/node_modules/@ckeditor/ckeditor5-list/dist/index.js +1 -1
  32. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-markdown-gfm@45.2.1 → @ckeditor_ckeditor5-markdown-gfm@45.2.2}/node_modules/@ckeditor/ckeditor5-markdown-gfm/dist/index.js +1 -1
  33. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-media-embed@45.2.1 → @ckeditor_ckeditor5-media-embed@45.2.2}/node_modules/@ckeditor/ckeditor5-media-embed/dist/index.js +1 -1
  34. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-mention@45.2.1 → @ckeditor_ckeditor5-mention@45.2.2}/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +1 -1
  35. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-page-break@45.2.1 → @ckeditor_ckeditor5-page-break@45.2.2}/node_modules/@ckeditor/ckeditor5-page-break/dist/index.js +1 -1
  36. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paragraph@45.2.1 → @ckeditor_ckeditor5-paragraph@45.2.2}/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +1 -1
  37. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paste-from-office@45.2.1 → @ckeditor_ckeditor5-paste-from-office@45.2.2}/node_modules/@ckeditor/ckeditor5-paste-from-office/dist/index.js +1 -1
  38. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-remove-format@45.2.1 → @ckeditor_ckeditor5-remove-format@45.2.2}/node_modules/@ckeditor/ckeditor5-remove-format/dist/index.js +1 -1
  39. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-select-all@45.2.1 → @ckeditor_ckeditor5-select-all@45.2.2}/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +1 -1
  40. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-show-blocks@45.2.1 → @ckeditor_ckeditor5-show-blocks@45.2.2}/node_modules/@ckeditor/ckeditor5-show-blocks/dist/index.js +1 -1
  41. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-source-editing@45.2.1 → @ckeditor_ckeditor5-source-editing@45.2.2}/node_modules/@ckeditor/ckeditor5-source-editing/dist/index.js +1 -1
  42. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-special-characters@45.2.1 → @ckeditor_ckeditor5-special-characters@45.2.2}/node_modules/@ckeditor/ckeditor5-special-characters/dist/index.js +1 -1
  43. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-style@45.2.1 → @ckeditor_ckeditor5-style@45.2.2}/node_modules/@ckeditor/ckeditor5-style/dist/index.js +1 -1
  44. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-table@45.2.1 → @ckeditor_ckeditor5-table@45.2.2}/node_modules/@ckeditor/ckeditor5-table/dist/index.js +1 -1
  45. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-typing@45.2.1 → @ckeditor_ckeditor5-typing@45.2.2}/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +1 -1
  46. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-ui@45.2.1 → @ckeditor_ckeditor5-ui@45.2.2}/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +1 -1
  47. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-undo@45.2.1 → @ckeditor_ckeditor5-undo@45.2.2}/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +1 -1
  48. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-upload@45.2.1 → @ckeditor_ckeditor5-upload@45.2.2}/node_modules/@ckeditor/ckeditor5-upload/dist/index.js +1 -1
  49. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-utils@45.2.1 → @ckeditor_ckeditor5-utils@45.2.2}/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +1 -1
  50. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-widget@45.2.1 → @ckeditor_ckeditor5-widget@45.2.2}/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +1 -1
  51. package/dist/packages/web-components/public/styles/gator/gator-global-styles.css.js +1 -1
  52. package/dist/packages/web-components/src/components/progress-ring/gator/progress-ring.gator.scss.js +1 -0
  53. package/dist/packages/web-components/src/tokens/primitive.tokens.scss.js +1 -1
  54. package/dist/styles/gator/_gator-typography.css +186 -0
  55. package/dist/styles/gator/gator-global-styles.css +2 -5
  56. package/dist/types/components/progress-ring/gator/progress-ring.gator.d.ts +37 -0
  57. package/dist/types/components/progress-ring/gator/progress-ring.gator.test.d.ts +0 -0
  58. package/dist/types/components/progress-ring/index.d.ts +1 -0
  59. package/dist/types/index.d.ts +1 -0
  60. package/dist/types/index.gator.d.ts +1 -0
  61. package/package.json +2 -2
  62. package/web-types.json +55 -1
  63. package/dist/assets/nCino_AvenirHv.woff2 +0 -0
  64. package/dist/assets/nCino_AvenirMd.woff2 +0 -0
  65. /package/dist/assets/node_modules/.pnpm/{ckeditor5@45.2.1 → ckeditor5@45.2.2}/node_modules/ckeditor5/dist/ckeditor5.css +0 -0
  66. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-icons@45.2.1 → @ckeditor_ckeditor5-icons@45.2.2}/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -0
  67. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-watchdog@45.2.1 → @ckeditor_ckeditor5-watchdog@45.2.2}/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -0
@@ -1,4 +1,4 @@
1
- import{Plugin as f,Command as v}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Clipboard as Qe,ClipboardPipeline as q}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{LivePosition as P,LiveRange as et,UpcastWriter as $,enablePlaceholder as tt,Element as it,Observer as nt}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Undo as st}from"../../../../../@ckeditor_ckeditor5-undo@45.2.1/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";import{Delete as ot}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{global as V,DomEmitterMixin as at,logWarning as _,CKEditorError as rt,Collection as lt,env as ct,first as H,FocusTracker as G,KeystrokeHandler as z,Rect as mt,toArray as he}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Widget as fe,WidgetToolbarRepository as ie,toWidget as ut,isWidget as gt,toWidgetEditable as dt,WidgetResize as N,calculateResizeHostAncestorWidth as pe,findOptimalInsertionRange as ht}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{SplitButtonView as Ie,createDropdown as K,MenuBarMenuView as ft,MenuBarMenuListView as pt,MenuBarMenuListItemView as It,ButtonView as b,Dialog as bt,MenuBarMenuListItemButtonView as wt,ContextualBalloon as be,CssTransitionDisablerMixin as we,clickOutsideHandler as _e,ViewModel as ne,addToolbarToDropdown as _t,Notification as se,FileDialogButtonView as oe,MenuBarMenuListItemFileDialogButtonView as vt,View as R,ViewCollection as J,FocusCycler as Z,CollapsibleView as yt,submitHandler as O,LabeledFieldView as X,createLabeledInputText as ve,BalloonPanelView as Ct,DropdownButtonView as Et,addListToDropdown as kt,FormRowView as ye,FormHeaderView as Ce,createLabeledInputNumber as St}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconImage as Ut,IconCaption as Bt,IconImageUrl as Vt,IconObjectSizeFull as At,IconObjectSizeCustom as Tt,IconObjectSizeLarge as xt,IconObjectSizeMedium as zt,IconObjectSizeSmall as Rt,IconObjectInline as Ee,IconObjectInlineRight as D,IconObjectInlineLeft as ke,IconObjectCenter as M,IconObjectRight as Se,IconObjectLeft as Ue,IconObjectFullWidth as Ot,IconTextAlternative as Pt,IconImageUpload as Nt,IconPreviousArrow as Be}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{FileRepository as y}from"../../../../../@ckeditor_ckeditor5-upload@45.2.1/node_modules/@ckeditor/ckeditor5-upload/dist/index.js";import{isObject as Ve}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/predicate/isObject.js";import{identity as E}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/function/identity.js";/**
1
+ import{Plugin as f,Command as v}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Clipboard as Qe,ClipboardPipeline as q}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{LivePosition as P,LiveRange as et,UpcastWriter as $,enablePlaceholder as tt,Element as it,Observer as nt}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Undo as st}from"../../../../../@ckeditor_ckeditor5-undo@45.2.2/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";import{Delete as ot}from"../../../../../@ckeditor_ckeditor5-typing@45.2.2/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{global as V,DomEmitterMixin as at,logWarning as _,CKEditorError as rt,Collection as lt,env as ct,first as H,FocusTracker as G,KeystrokeHandler as z,Rect as mt,toArray as he}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Widget as fe,WidgetToolbarRepository as ie,toWidget as ut,isWidget as gt,toWidgetEditable as dt,WidgetResize as N,calculateResizeHostAncestorWidth as pe,findOptimalInsertionRange as ht}from"../../../../../@ckeditor_ckeditor5-widget@45.2.2/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{SplitButtonView as Ie,createDropdown as K,MenuBarMenuView as ft,MenuBarMenuListView as pt,MenuBarMenuListItemView as It,ButtonView as b,Dialog as bt,MenuBarMenuListItemButtonView as wt,ContextualBalloon as be,CssTransitionDisablerMixin as we,clickOutsideHandler as _e,ViewModel as ne,addToolbarToDropdown as _t,Notification as se,FileDialogButtonView as oe,MenuBarMenuListItemFileDialogButtonView as vt,View as R,ViewCollection as J,FocusCycler as Z,CollapsibleView as yt,submitHandler as O,LabeledFieldView as X,createLabeledInputText as ve,BalloonPanelView as Ct,DropdownButtonView as Et,addListToDropdown as kt,FormRowView as ye,FormHeaderView as Ce,createLabeledInputNumber as St}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconImage as Ut,IconCaption as Bt,IconImageUrl as Vt,IconObjectSizeFull as At,IconObjectSizeCustom as Tt,IconObjectSizeLarge as xt,IconObjectSizeMedium as zt,IconObjectSizeSmall as Rt,IconObjectInline as Ee,IconObjectInlineRight as D,IconObjectInlineLeft as ke,IconObjectCenter as M,IconObjectRight as Se,IconObjectLeft as Ue,IconObjectFullWidth as Ot,IconTextAlternative as Pt,IconImageUpload as Nt,IconPreviousArrow as Be}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{FileRepository as y}from"../../../../../@ckeditor_ckeditor5-upload@45.2.2/node_modules/@ckeditor/ckeditor5-upload/dist/index.js";import{isObject as Ve}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/predicate/isObject.js";import{identity as E}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/function/identity.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */function Ft(o){return o.createContainerElement("span",{class:"image-inline"},o.createEmptyElement("img"))}function ae(o){return o.createContainerElement("figure",{class:"image"},[o.createEmptyElement("img"),o.createSlot("children")])}function Ae(o,e){const t=o.plugins.get("ImageUtils"),i=o.plugins.has("ImageInlineEditing")&&o.plugins.has("ImageBlockEditing");return a=>t.isInlineImageView(a)?i&&(a.getStyle("display")=="block"||a.findAncestor(t.isBlockImageView)?"imageBlock":"imageInline")!==e?null:n(a):null;function n(a){const s={name:!0};return a.hasAttribute("src")&&(s.attributes=["src"]),s}}function Y(o,e){const t=H(e.getSelectedBlocks());return!t||o.isObject(t)||t.isEmpty&&t.name!="listItem"?"imageBlock":"imageInline"}function A(o){return o&&o.endsWith("px")?parseInt(o):null}function T(o){const e=A(o.getStyle("width")),t=A(o.getStyle("height"));return!!(e&&t)}const Lt=/^(image|image-inline)$/;class I extends f{_domEmitter=new(at());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,i=null,n={}){const a=this.editor,s=a.model,r=s.document.selection,l=Te(a,t||r,i);e={...Object.fromEntries(r.getAttributes()),...e};for(const c in e)s.schema.checkAttribute(l,c)||delete e[c];return s.change(c=>{const{setImageSizes:m=!0}=n,u=c.createElement(l,e);return s.insertObject(u,t,null,{setSelection:"on",findOptimalPosition:!t&&l!="imageInline"?"auto":void 0}),u.parent?(m&&this.setImageNaturalSizeAttributes(u),u):null})}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change(i=>{const n=new V.window.Image;this._domEmitter.listenTo(n,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(i.batch,a=>{a.setAttribute("width",n.naturalWidth,e),a.setAttribute("height",n.naturalHeight,e)}),this._domEmitter.stopListening(n,"load")}),n.src=t}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:Lt})}isImageAllowed(){const t=this.editor.model.document.selection;return Dt(this.editor,t)&&Mt(t)}toImageWidget(e,t,i){return t.setCustomProperty("image",!0,e),ut(e,t,{label:()=>{const s=this.findViewImgElement(e).getAttribute("alt");return s?`${s} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&gt(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:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function Dt(o,e){if(Te(o,e,null)=="imageBlock"){const i=Wt(e,o.model);if(o.model.schema.checkChild(i,"imageBlock"))return!0}else if(o.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}function Mt(o){return[...o.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}function Wt(o,e){const i=ht(o,e).start.parent;return i.isEmpty&&!i.is("element","$root")?i.parent:i}function Te(o,e,t){const i=o.model.schema,n=o.config.get("image.insert.type");return o.plugins.has("ImageBlockEditing")?o.plugins.has("ImageInlineEditing")?t||(n==="inline"?"imageInline":n!=="auto"?"imageBlock":e.is("selection")?Y(i,e):i.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const jt=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class sn extends f{static get requires(){return[Qe,I,st,ot]}static get pluginName(){return"AutoImage"}static get isOfficialPlugin(){return!0}_timeoutId;_positionToInsert;constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document,i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",()=>{const n=t.selection.getFirstRange(),a=P.fromPosition(n.start);a.stickiness="toPrevious";const s=P.fromPosition(n.end);s.stickiness="toNext",t.once("change:data",()=>{this._embedImageBetweenPositions(a,s),a.detach(),s.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(V.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new et(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),r=this.editor.plugins.get("ImageUtils");let l="";for(const c of a)c.item.is("$textProxy")&&(l+=c.item.data);if(l=l.trim(),!l.match(jt)){n.detach();return}this._positionToInsert=P.fromPosition(e),this._timeoutId=setTimeout(()=>{if(!i.commands.get("insertImage").isEnabled){n.detach();return}i.model.change(u=>{this._timeoutId=null,u.remove(n),n.detach();let g;this._positionToInsert.root.rootName!=="$graveyard"&&(g=this._positionToInsert.toPosition()),r.insertImage({...s,src:l},g),this._positionToInsert.detach(),this._positionToInsert=null}),i.plugins.get("Delete").requestUndoOnBackspace()},100)}}class qt extends v{refresh(){const i=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!i,this.isEnabled&&i.hasAttribute("alt")?this.value=i.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,a=i.getClosestSelectedImageElement(n.document.selection);n.change(s=>{s.setAttribute("alt",e.newValue,a)})}}class $t extends f{static get requires(){return[I]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new qt(this.editor))}}class Ht extends R{focusTracker;keystrokes;labeledInput;backButtonView;saveButtonView;children;_focusables;_focusCycler;constructor(e){super(e),this.focusTracker=new G,this.keystrokes=new z,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new ye(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new J,this.keystrokes.set("Esc",(t,i)=>{this.fire("cancel"),i()}),this._focusCycler=new Z({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(),O({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 b(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Be,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new b(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 Ce(this.locale,{label:e("Text Alternative")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new X(this.locale,ve);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function Gt(o){const e=o.plugins.get("ContextualBalloon");if(o.plugins.get("ImageUtils").getClosestSelectedImageWidget(o.editing.view.document.selection)){const i=Q(o);e.updatePosition(i)}}function Q(o){const e=o.editing.view,t=Ct.defaultPositions,i=o.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(i.getClosestSelectedImageWidget(e.document.selection)),positions:[t.northArrowSouth,t.northArrowSouthWest,t.northArrowSouthEast,t.southArrowNorth,t.southArrowNorthWest,t.southArrowNorthEast,t.viewportStickyNorth]}}class Kt extends f{_balloon;_form;static get requires(){return[be]}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",i=>{const n=e.commands.get("imageTextAlternative"),a=new b(i);return a.set({label:t("Change image text alternative"),icon:Pt,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),a.bind("isOn").to(n,"value",s=>!!s),this.listenTo(a,"execute",()=>{this._showForm()}),a})}_createForm(){const e=this.editor,i=e.editing.view.document,n=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(we(Ht))(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",()=>{n.getClosestSelectedImageWidget(i.selection)?this._isVisible&&Gt(e):this._hideForm(!0)}),_e({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"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Q(e)}),i.fieldView.value=i.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 xe extends f{static get requires(){return[$t,Kt]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function Jt(o){const e=(t,i,n)=>{if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const a=o.findViewImgElement(i.viewItem);if(!a||!n.consumable.test(a,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const s=n.convertItem(a,i.modelCursor),r=H(s.modelRange.getItems());if(!r){n.consumable.revert(i.viewItem,{name:!0,classes:"image"});return}n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i)};return t=>{t.on("element:figure",e)}}function ze(o,e){const t=(i,n,a)=>{if(!a.consumable.consume(n.item,i.name))return;const s=a.writer,r=a.mapper.toViewElement(n.item),l=o.findViewImgElement(r);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 i=>{i.on(`attribute:srcset:${e}`,t)}}function x(o,e,t){const i=(n,a,s)=>{if(!s.consumable.consume(a.item,n.name))return;const r=s.writer,l=s.mapper.toViewElement(a.item),c=o.findViewImgElement(l);r.setAttribute(a.attributeKey,a.attributeNewValue||"",c)};return n=>{n.on(`attribute:${t}:${e}`,i)}}class ee extends nt{observe(e){this.listenTo(e,"load",(t,i)=>{const n=i.target;this.checkShouldIgnoreEventFromTarget(n)||n.tagName=="IMG"&&this._fireEvents(i)},{useCapture:!0})}stopObserving(e){this.stopListening(e)}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class Zt extends v{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||t==="block"&&_("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||t==="inline"&&_("image-inline-plugin-required")}refresh(){const e=this.editor.plugins.get("ImageUtils");this.isEnabled=e.isImageAllowed()}execute(e){const t=he(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),a=Object.fromEntries(i.getAttributes());t.forEach((s,r)=>{const l=i.getSelectedElement();if(typeof s=="string"&&(s={src:s}),r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);n.insertImage({...s,...a},c,e.imageType)}else e.breakBlock?n.insertImage({...s,...a},i.getFirstPosition(),e.imageType):n.insertImage({...s,...a},null,e.imageType)})}}class Xt extends v{constructor(e){super(e),this.decorate("cleanupImage")}refresh(){const t=this.editor.plugins.get("ImageUtils"),i=this.editor.model.document.selection.getSelectedElement();this.isEnabled=t.isImage(i),this.value=this.isEnabled?i.getAttribute("src"):null}execute(e){const t=this.editor.model.document.selection.getSelectedElement(),i=this.editor.plugins.get("ImageUtils");this.editor.model.change(n=>{n.setAttribute("src",e.source,t),this.cleanupImage(n,t),i.setImageNaturalSizeAttributes(t)})}cleanupImage(e,t){e.removeAttribute("srcset",t),e.removeAttribute("sizes",t),e.removeAttribute("sources",t),e.removeAttribute("width",t),e.removeAttribute("height",t),e.removeAttribute("alt",t)}}class Re extends f{static get requires(){return[I]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(ee),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const i=new Zt(e),n=new Xt(e);e.commands.add("insertImage",i),e.commands.add("replaceImageSource",n),e.commands.add("imageInsert",i)}}class Oe extends f{static get requires(){return[I]}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(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=e==="imageBlock"?"figure":"img";t.conversion.for("upcast").attributeToAttribute({view:{name:n,styles:{width:/.+/}},model:{key:"width",value:s=>T(s)?A(s.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:s=>T(s)?A(s.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),t.conversion.for("editingDowncast").add(s=>{a(s,"width","width",!0,!0),a(s,"height","height",!0,!0)}),t.conversion.for("dataDowncast").add(s=>{a(s,"width","width",!1),a(s,"height","height",!1)}),t.conversion.for("upcast").add(s=>{s.on("element:img",(r,l,c)=>{const m=l.viewItem.getAttribute("width"),u=l.viewItem.getAttribute("height");m&&u&&c.consumable.consume(l.viewItem,{styles:["aspect-ratio"]})})});function a(s,r,l,c,m=!1){s.on(`attribute:${r}:${e}`,(u,g,d)=>{if(!d.consumable.consume(g.item,u.name))return;const h=d.writer,p=d.mapper.toViewElement(g.item),w=i.findViewImgElement(p);g.attributeNewValue!==null?h.setAttribute(l,g.attributeNewValue,w):h.removeAttribute(l,w);const C=g.item.getAttribute("width"),U=g.item.getAttribute("height"),te=C&&U;if(te&&m&&h.setAttribute("loading","lazy",w),g.item.hasAttribute("sources"))return;const Ye=g.item.hasAttribute("resizedWidth");e==="imageInline"&&!Ye&&!c||te&&h.setStyle("aspect-ratio",`${C}/${U}`,w)})}}}class Pe extends v{_modelElementName;constructor(e,t){super(e),this._modelElementName=t}refresh(){const t=this.editor.plugins.get("ImageUtils"),i=t.getClosestSelectedImageElement(this.editor.model.document.selection);this._modelElementName==="imageBlock"?this.isEnabled=t.isInlineImage(i):this.isEnabled=t.isBlockImage(i)}execute(e={}){const t=this.editor,i=this.editor.model,n=t.plugins.get("ImageUtils"),a=n.getClosestSelectedImageElement(i.document.selection),s=Object.fromEntries(a.getAttributes());return!s.src&&!s.uploadId?null:i.change(r=>{const{setImageSizes:l=!0}=e,c=Array.from(i.markers).filter(g=>g.getRange().containsItem(a)),m=n.insertImage(s,i.createSelection(a,"on"),this._modelElementName,{setImageSizes:l});if(!m)return null;const u=r.createRangeOn(m);for(const g of c){const d=g.getRange(),h=d.root.rootName!="$graveyard"?d.getJoined(u,!0):u;r.updateMarker(g,{range:h})}return{oldElement:a,newElement:m}})}}class Ne extends f{static get requires(){return[I]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const e=this.editor.model.schema;e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["placeholder"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("editingDowncast").add(n=>{n.on("attribute:placeholder",(a,s,r)=>{if(!r.consumable.test(s.item,a.name)||!s.item.is("element","imageBlock")&&!s.item.is("element","imageInline"))return;r.consumable.consume(s.item,a.name);const l=r.writer,c=r.mapper.toViewElement(s.item),m=i.findViewImgElement(c);s.attributeNewValue?(l.addClass("image_placeholder",m),l.setStyle("background-image",`url(${s.attributeNewValue})`,m),l.setCustomProperty("editingPipeline:doNotReuseOnce",!0,m)):(l.removeClass("image_placeholder",m),l.removeStyle("background-image",m))})})}_setupLoadListener(){const e=this.editor,t=e.model,i=e.editing,n=i.view,a=e.plugins.get("ImageUtils");n.addObserver(ee),this.listenTo(n.document,"imageLoaded",(s,r)=>{const l=n.domConverter.mapDomToView(r.target);if(!l)return;const c=a.getImageWidgetFromImageView(l);if(!c)return;const m=i.mapper.toModelElement(c);!m||!m.hasAttribute("placeholder")||t.enqueueChange({isUndoable:!1},u=>{u.removeAttribute("placeholder",m)})})}}class Fe extends f{static get requires(){return[Re,Oe,I,Ne,q]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new Pe(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(a,{writer:s})=>ae(s)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(a,{writer:s})=>n.toImageWidget(ae(s),s,t("image widget"))}),i.for("downcast").add(x(n,"imageBlock","src")).add(x(n,"imageBlock","alt")).add(ze(n,"imageBlock")),i.for("upcast").elementToElement({view:Ae(e,"imageBlock"),model:(a,{writer:s})=>s.createElement("imageBlock",a.hasAttribute("src")?{src:a.getAttribute("src")}:void 0)}).add(Jt(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils"),a=e.plugins.get("ClipboardPipeline");this.listenTo(a,"inputTransformation",(s,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isInlineImageView))return;r.targetRanges?c=e.editing.mapper.toModelRange(r.targetRanges[0]):c=t.document.selection.getFirstRange();const m=t.createSelection(c);if(Y(t.schema,m)==="imageBlock"){const u=new $(i.document),g=l.map(d=>u.createElement("figure",{class:"image"},d));r.content=u.createDocumentFragment(g)}}),this.listenTo(a,"contentInsertion",(s,r)=>{r.method==="paste"&&t.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageBlock")&&n.setImageNaturalSizeAttributes(m)})})}}class Yt extends R{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(e,t=[]){super(e),this.focusTracker=new G,this.keystrokes=new z,this._focusables=new J,this.children=this.createCollection(),this._focusCycler=new Z({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const i of t)this.children.add(i),this._focusables.add(i),i instanceof yt&&this._focusables.addMany(i.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),O({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 S extends f{static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[I]}dropdownView;_integrations=new Map;constructor(e){super(e),e.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const e=this.editor,t=e.model.document.selection,i=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",()=>{this.isImageSelected=i.isImage(t.getSelectedElement())});const n=s=>this._createToolbarComponent(s),a=s=>this._createMenuBarComponent(s);e.ui.componentFactory.add("insertImage",n),e.ui.componentFactory.add("imageInsert",n),e.ui.componentFactory.add("menuBar:insertImage",a)}registerIntegration({name:e,observable:t,buttonViewCreator:i,formViewCreator:n,menuBarButtonViewCreator:a,requiresForm:s=!1,override:r=!1}){this._integrations.has(e)&&!r&&_("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:i,menuBarButtonViewCreator:a,formViewCreator:n,requiresForm:s})}_createToolbarComponent(e){const t=this.editor,i=e.t,n=this._prepareIntegrations();if(!n.length)return null;let a;const s=n[0];if(n.length==1){if(!s.requiresForm)return s.buttonViewCreator(!0);a=s.buttonViewCreator(!0)}else{const c=s.buttonViewCreator(!1);a=new Ie(e,c),a.tooltip=!0,a.bind("label").to(this,"isImageSelected",m=>i(m?"Replace image":"Insert image"))}const r=this.dropdownView=K(e,a),l=n.map(({observable:c})=>typeof c=="function"?c():c);return r.bind("isEnabled").toMany(l,"isEnabled",(...c)=>c.some(m=>m)),r.once("change:isOpen",()=>{const c=n.flatMap(({formViewCreator:u})=>u(n.length==1)),m=new Yt(t.locale,c);r.panelView.children.add(m)}),r}_createMenuBarComponent(e){const t=e.t,i=this._prepareIntegrations();if(!i.length)return null;const n=i.flatMap(({menuBarButtonViewCreator:r})=>r(i.length==1)),a=new ft(e),s=new pt(e);a.panelView.children.add(s),a.buttonView.set({icon:Ut,label:t("Image")});for(const r of n){const l=new It(e,a);l.children.add(r),s.items.add(l),r.delegate("execute").to(a)}return a}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),i=[];if(!t.length)return _("image-insert-integrations-not-specified"),i;for(const n of t){if(!this._integrations.has(n)){["upload","assetManager","url"].includes(n)||_("image-insert-unknown-integration",{item:n});continue}i.push(this._integrations.get(n))}return i.length||_("image-insert-integrations-not-registered"),i}}class on extends f{static get requires(){return[Fe,fe,xe,S]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class Qt extends f{static get requires(){return[Re,Oe,I,Ne,q]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new Pe(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(a,{writer:s})=>s.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(a,{writer:s})=>n.toImageWidget(Ft(s),s,t("image widget"))}),i.for("downcast").add(x(n,"imageInline","src")).add(x(n,"imageInline","alt")).add(ze(n,"imageInline")),i.for("upcast").elementToElement({view:Ae(e,"imageInline"),model:(a,{writer:s})=>s.createElement("imageInline",a.hasAttribute("src")?{src:a.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils"),a=e.plugins.get("ClipboardPipeline");this.listenTo(a,"inputTransformation",(s,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isBlockImageView))return;r.targetRanges?c=e.editing.mapper.toModelRange(r.targetRanges[0]):c=t.document.selection.getFirstRange();const m=t.createSelection(c);if(Y(t.schema,m)==="imageInline"){const u=new $(i.document),g=l.map(d=>d.childCount===1?(Array.from(d.getAttributes()).forEach(h=>u.setAttribute(...h,n.findViewImgElement(d))),d.getChild(0)):d);r.content=u.createDocumentFragment(g)}}),this.listenTo(a,"contentInsertion",(s,r)=>{r.method==="paste"&&t.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageInline")&&n.setImageNaturalSizeAttributes(m)})})}}class an extends f{static get requires(){return[Qt,fe,xe,S]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class Le extends f{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[I]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return e.name=="figcaption"&&t.isBlockImageView(e.parent)?{name:!0}:null}}class ei extends v{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils"),i=e.plugins.get("ImageUtils");if(!e.plugins.has(Fe)){this.isEnabled=!1,this.value=!1;return}const n=e.model.document.selection,a=n.getSelectedElement();if(!a){const s=t.getCaptionFromModelSelection(n);this.isEnabled=!!s,this.value=!!s;return}this.isEnabled=i.isImage(a),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(a):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(i=>{this.value?this._hideImageCaption(i):this._showImageCaption(i,t)})}_showImageCaption(e,t){const n=this.editor.model.document.selection,a=this.editor.plugins.get("ImageCaptionEditing"),s=this.editor.plugins.get("ImageUtils");let r=n.getSelectedElement();const l=a._getSavedCaption(r);s.isInlineImage(r)&&(this.editor.execute("imageTypeBlock"),r=n.getSelectedElement());const c=l||e.createElement("caption");e.append(c,r),t&&e.setSelection(c,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),a=t.plugins.get("ImageCaptionUtils");let s=i.getSelectedElement(),r;s?r=a.getCaptionFromImageModelElement(s):(r=a.getCaptionFromModelSelection(i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class ti extends f{static get requires(){return[I,Le]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}_savedCaptionsMap;constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new ei(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:s=>n.matchImageCaptionViewElement(s),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(s,{writer:r})=>i.isBlockImage(s.parent)?r.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(s,{writer:r})=>{if(!i.isBlockImage(s.parent))return null;const l=r.createEditableElement("figcaption");r.setCustomProperty("imageCaption",!0,l),l.placeholder=a("Enter image caption"),tt({view:t,element:l,keepOnFocus:!0});const c=s.parent.getAttribute("alt"),m=c?a("Caption for image: %0",[c]):a("Caption for the image");return dt(l,r,{label:m})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),a=e.commands.get("imageTypeBlock"),s=r=>{if(!r.return)return;const{oldElement:l,newElement:c}=r.return;/* istanbul ignore if: paranoid check -- @preserve */if(!l)return;if(t.isBlockImage(l)){const u=i.getCaptionFromImageModelElement(l);if(u){this._saveCaption(c,u);return}}const m=this._getSavedCaption(l);m&&this._saveCaption(c,m)};n&&this.listenTo(n,"execute",s,{priority:"low"}),a&&this.listenTo(a,"execute",s,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?it.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",()=>{const a=t.document.differ.getChanges();for(const s of a){if(s.attributeKey!=="alt")continue;const r=s.range.start.nodeAfter;if(i.isBlockImage(r)){const l=n.getCaptionFromImageModelElement(r);if(!l)return;e.editing.reconvertItem(l)}}})}}class ii extends f{static get requires(){return[Le]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageCaptionUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",a=>{const s=e.commands.get("toggleImageCaption"),r=new b(a);return r.set({icon:Bt,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",l=>n(l?"Toggle caption off":"Toggle caption on")),this.listenTo(r,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const l=i.getCaptionFromModelSelection(e.model.document.selection);if(l){const c=e.editing.mapper.toViewElement(l);t.scrollToTheSelection(),t.change(m=>{m.addClass("image__caption_highlighted",c)})}e.editing.view.focus()}),r})}}class rn extends f{static get requires(){return[ti,ii]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}}function De(o){const e=o.map(t=>t.replace("+","\\+"));return new RegExp(`^image\\/(${e.join("|")})$`)}function ni(o){return new Promise((e,t)=>{const i=o.getAttribute("src");fetch(i).then(n=>n.blob()).then(n=>{const a=Me(n,i),r=`image.${a.replace("image/","")}`,l=new File([n],r,{type:a});e(l)}).catch(n=>n&&n.name==="TypeError"?oi(i).then(e).catch(t):t(n))})}function si(o,e){return!o.isInlineImageView(e)||!e.getAttribute("src")?!1:!!e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||!!e.getAttribute("src").match(/^blob:/g)}function Me(o,e){return o.type?o.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}function oi(o){return ai(o).then(e=>{const t=Me(e,o),n=`image.${t.replace("image/","")}`;return new File([e],n,{type:t})})}function ai(o){return new Promise((e,t)=>{const i=V.document.createElement("img");i.addEventListener("load",()=>{const n=V.document.createElement("canvas");n.width=i.width,n.height=i.height,n.getContext("2d").drawImage(i,0,0),n.toBlob(s=>s?e(s):t())}),i.addEventListener("error",()=>t()),i.src=o})}class ri extends f{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("uploadImage",()=>this._createToolbarButton()),e.ui.componentFactory.add("imageUpload",()=>this._createToolbarButton()),e.ui.componentFactory.add("menuBar:uploadImage",()=>this._createMenuBarButton("standalone")),e.plugins.has("ImageInsertUI")&&e.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>e.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:t=>this._createMenuBarButton(t?"insertOnly":"insertNested")})}_createButton(e){const t=this.editor,i=t.locale,n=t.commands.get("uploadImage"),a=t.config.get("image.upload.types"),s=De(a),r=new e(t.locale),l=i.t;return r.set({acceptedType:a.map(c=>`image/${c}`).join(","),allowMultipleFiles:!0,label:l("Upload from computer"),icon:Nt}),r.bind("isEnabled").to(n),r.on("done",(c,m)=>{const u=Array.from(m).filter(g=>s.test(g.type));u.length&&(t.execute("uploadImage",{file:u}),t.editing.view.focus())}),r}_createToolbarButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this.editor.commands.get("uploadImage"),n=this._createButton(oe);return n.tooltip=!0,n.bind("label").to(t,"isImageSelected",i,"isAccessAllowed",(a,s)=>e(s?a?"Replace image from computer":"Upload image from computer":"You have no image upload permissions.")),n}_createDropdownButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this._createButton(oe);return i.withText=!0,i.bind("label").to(t,"isImageSelected",n=>e(n?"Replace from computer":"Upload from computer")),i.on("execute",()=>{t.dropdownView.isOpen=!1}),i}_createMenuBarButton(e){const t=this.editor.locale.t,i=this._createButton(vt);switch(i.withText=!0,e){case"standalone":i.label=t("Image from computer");break;case"insertOnly":i.label=t("Image");break;case"insertNested":i.label=t("From computer");break}return i}}class li extends f{static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}placeholder;constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}uploadStatusChange=(e,t,i)=>{const n=this.editor,a=t.item,s=a.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const r=n.plugins.get("ImageUtils"),l=n.plugins.get(y),c=s?t.attributeNewValue:null,m=this.placeholder,u=n.editing.mapper.toViewElement(a),g=i.writer;if(c=="reading"){re(u,g),le(r,m,u,g);return}if(c=="uploading"){const d=l.loaders.get(s);re(u,g),d?(ce(u,g),mi(u,g,d,n.editing.view),fi(r,u,g,d)):le(r,m,u,g);return}c=="complete"&&l.loaders.get(s)&&gi(u,g,n.editing.view),ui(u,g),ce(u,g),ci(u,g)}}function re(o,e){o.hasClass("ck-appear")||e.addClass("ck-appear",o)}function ci(o,e){e.removeClass("ck-appear",o)}function le(o,e,t,i){t.hasClass("ck-image-upload-placeholder")||i.addClass("ck-image-upload-placeholder",t);const n=o.findViewImgElement(t);n.getAttribute("src")!==e&&i.setAttribute("src",e,n),We(t,"placeholder")||i.insert(i.createPositionAfter(n),hi(i))}function ce(o,e){o.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",o),je(o,e,"placeholder")}function mi(o,e,t,i){const n=di(e);e.insert(e.createPositionAt(o,"end"),n),t.on("change:uploadedPercent",(a,s,r)=>{i.change(l=>{l.setStyle("width",r+"%",n)})})}function ui(o,e){je(o,e,"progressBar")}function gi(o,e,t){const i=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(o,"end"),i),setTimeout(()=>{t.change(n=>n.remove(n.createRangeOn(i)))},3e3)}function di(o){const e=o.createUIElement("div",{class:"ck-progress-bar"});return o.setCustomProperty("progressBar",!0,e),e}function hi(o){const e=o.createUIElement("div",{class:"ck-upload-placeholder-loader"});return o.setCustomProperty("placeholder",!0,e),e}function We(o,e){for(const t of o.getChildren())if(t.getCustomProperty(e))return t}function je(o,e,t){const i=We(o,t);i&&e.remove(e.createRangeOn(i))}function fi(o,e,t,i){if(i.data){const n=o.findViewImgElement(e);t.setAttribute("src",i.data,n)}}class pi extends v{constructor(e){super(e),this.set("isAccessAllowed",!0)}refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=he(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),a=Object.fromEntries(i.getAttributes());t.forEach((s,r)=>{const l=i.getSelectedElement();if(r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);this._uploadImage(s,a,c)}else this._uploadImage(s,a)})}_uploadImage(e,t,i){const n=this.editor,s=n.plugins.get(y).createLoader(e),r=n.plugins.get("ImageUtils");s&&r.insertImage({...t,uploadId:s.id},i)}}class Ii extends f{static get requires(){return[y,se,q,I]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}_uploadImageElements;_uploadedImages=new Map;constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(y),a=e.plugins.get("ImageUtils"),s=e.plugins.get("ClipboardPipeline"),r=De(e.config.get("image.upload.types")),l=new pi(e);e.commands.add("uploadImage",l),e.commands.add("imageUpload",l),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add(c=>c.on("element:img",(m,u,g)=>{if(!g.consumable.test(u.viewItem,{attributes:["data-ck-upload-id"]}))return;const d=u.viewItem.getAttribute("data-ck-upload-id");if(!d)return;const[h]=Array.from(u.modelRange.getItems({shallow:!0})),p=n.loaders.get(d);h&&(g.writer.setAttribute("uploadId",d,h),g.consumable.consume(u.viewItem,{attributes:["data-ck-upload-id"]}),p&&p.data&&g.writer.setAttribute("uploadStatus",p.status,h))},{priority:"low"})),this.listenTo(e.editing.view.document,"clipboardInput",(c,m)=>{if(bi(m.dataTransfer))return;const u=Array.from(m.dataTransfer.files).filter(d=>d?r.test(d.type):!1);if(!u.length)return;if(c.stop(),e.model.change(d=>{m.targetRanges&&d.setSelection(m.targetRanges.map(h=>e.editing.mapper.toModelRange(h))),e.execute("uploadImage",{file:u})}),!e.commands.get("uploadImage").isAccessAllowed){const d=e.plugins.get("Notification"),h=e.locale.t;d.showWarning(h("You have no image upload permissions."),{namespace:"image"})}}),this.listenTo(s,"inputTransformation",(c,m)=>{const u=Array.from(e.editing.view.createRangeIn(m.content)).map(d=>d.item).filter(d=>si(a,d)&&!d.getAttribute("uploadProcessed")).map(d=>({promise:ni(d),imageElement:d}));if(!u.length)return;const g=new $(e.editing.view.document);for(const d of u){g.setAttribute("uploadProcessed",!0,d.imageElement);const h=n.createLoader(d.promise);h&&(g.setAttribute("src","",d.imageElement),g.setAttribute("uploadId",h.id,d.imageElement))}}),e.editing.view.document.on("dragover",(c,m)=>{m.preventDefault()}),t.on("change",()=>{const c=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),m=new Set;for(const u of c)if(u.type=="insert"&&u.name!="$text"){const g=u.position.nodeAfter,d=u.position.root.rootName=="$graveyard";for(const h of wi(e,g)){const p=h.getAttribute("uploadId");if(!p)continue;const w=n.loaders.get(p);if(!w){!d&&this._uploadedImages.has(p)&&e.model.enqueueChange({isUndoable:!1},C=>{C.setAttribute("uploadStatus","complete",h),this.fire("uploadComplete",{data:this._uploadedImages.get(p),imageElement:h})});continue}d?m.has(p)||Array.from(this._uploadImageElements.get(p)).every(U=>U.root.rootName=="$graveyard")&&w.abort():(m.add(p),this._uploadImageElements.has(p)?this._uploadImageElements.get(p).add(h):this._uploadImageElements.set(p,new Set([h])),w.status=="idle"&&this._readAndUpload(w))}}}),this.on("uploadComplete",(c,{imageElement:m,data:u})=>{const g=u.urls?u.urls:u;this.editor.model.change(d=>{d.setAttribute("src",g.default,m),this._parseAndSetSrcsetAttributeOnImage(g,m,d),a.setImageNaturalSizeAttributes(m)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageBlock")),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageInline"))}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,a=t.plugins.get(y),s=t.plugins.get(se),r=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},m=>{const u=l.get(e.id);for(const g of u)m.setAttribute("uploadStatus","reading",g)}),e.read().then(()=>{const m=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Uploading image"));for(const u of l.get(e.id)){/* istanbul ignore next -- @preserve */if(ct.isSafari){const g=t.editing.mapper.toViewElement(u),d=r.findViewImgElement(g);t.editing.view.once("render",()=>{if(!d.parent)return;const h=t.editing.view.domConverter.mapViewToDom(d.parent);if(!h)return;const p=h.style.display;h.style.display="none",h._ckHack=h.offsetHeight,h.style.display=p})}i.enqueueChange({isUndoable:!1},g=>{g.setAttribute("uploadStatus","uploading",u)})}return m}).then(m=>{i.enqueueChange({isUndoable:!1},u=>{for(const g of l.get(e.id))u.setAttribute("uploadStatus","complete",g),this.fire("uploadComplete",{data:m,imageElement:g});t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Image upload complete")),this._uploadedImages.set(e.id,m)}),c()}).catch(m=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Error during image upload")),e.status!=="error"&&e.status!=="aborted")throw m;e.status=="error"&&m&&s.showWarning(m,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},u=>{for(const g of l.get(e.id))g.root.rootName!=="$graveyard"&&u.remove(g)}),c()});function c(){i.enqueueChange({isUndoable:!1},m=>{for(const u of l.get(e.id))m.removeAttribute("uploadId",u),m.removeAttribute("uploadStatus",u);l.delete(e.id)}),a.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const a=Object.keys(e).filter(s=>{const r=parseInt(s,10);if(!isNaN(r))return n=Math.max(n,r),!0}).map(s=>`${e[s]} ${s}w`).join(", ");if(a!=""){const s={srcset:a};!t.hasAttribute("width")&&!t.hasAttribute("height")&&(s.width=n),i.setAttributes(s,t)}}_registerConverters(e){const{conversion:t,plugins:i}=this.editor,n=i.get(y),a=i.get(I);t.for("dataDowncast").add(s=>{s.on(`attribute:uploadId:${e}`,(r,l,c)=>{if(!c.consumable.test(l.item,r.name))return;const m=n.loaders.get(l.attributeNewValue);if(!m||!m.data)return null;const u=c.mapper.toViewElement(l.item),g=a.findViewImgElement(u);g&&(c.consumable.consume(l.item,r.name),c.writer.setAttribute("data-ck-upload-id",m.id,g))})})}}function bi(o){return Array.from(o.types).includes("text/html")&&o.getData("text/html")!==""}function wi(o,e){const t=o.plugins.get("ImageUtils");return Array.from(o.model.createRangeOn(e)).filter(i=>t.isImage(i.item)).map(i=>i.item)}class _i extends f{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[Ii,ri,li]}}class vi extends R{urlInputView;keystrokes;constructor(e){super(e),this.set("imageURLInputValue",""),this.set("isImageSelected",!1),this.set("isEnabled",!0),this.keystrokes=new z,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(),O({view:this}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}_createUrlInputView(){const e=this.locale,t=e.t,i=new X(e,ve);return i.bind("label").to(this,"isImageSelected",n=>t(n?"Update image URL":"Insert image via URL")),i.bind("isEnabled").to(this),i.fieldView.inputMode="url",i.fieldView.placeholder="https://example.com/image.png",i.fieldView.bind("value").to(this,"imageURLInputValue",n=>n||""),i.fieldView.on("input",()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}),i}focus(){this.urlInputView.focus()}}class yi extends f{_imageInsertUI;_formView;static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[S,bt]}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=Vt,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(b);return t.tooltip=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert image via URL")),t}_createDropdownButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(b);return t.withText=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert via URL")),t}_createMenuBarButton(e){const t=this.editor.locale.t,i=this._createInsertUrlButton(wt);switch(i.withText=!0,e){case"standalone":i.label=t("Image via URL");break;case"insertOnly":i.label=t("Image");break;case"insertNested":i.label=t("Via URL");break}return i}_createInsertUrlView(){const e=this.editor,t=e.locale,i=e.commands.get("replaceImageSource"),n=e.commands.get("insertImage"),a=new vi(t);return a.bind("isImageSelected").to(this._imageInsertUI),a.bind("isEnabled").toMany([n,i],"isEnabled",(...s)=>s.some(r=>r)),a}_showModal(){const e=this.editor,i=e.locale.t,n=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));const a=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=a.value||"",n.show({id:"insertImageViaUrl",title:i("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:i("Cancel"),withText:!0,onExecute:()=>n.hide()},{label:this._imageInsertUI.isImageSelected?i("Save"):i("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 Ci extends f{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[yi,S]}}class ln extends f{static get pluginName(){return"ImageInsert"}static get isOfficialPlugin(){return!0}static get requires(){return[_i,Ci,S]}}class Ei extends v{refresh(){const e=this.editor,i=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!i,!i||!i.hasAttribute("resizedWidth")?this.value=null:this.value={width:i.getAttribute("resizedWidth"),height:null}}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils"),a=n.getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},a&&i.change(s=>{s.setAttribute("resizedWidth",e.width,a),s.removeAttribute("resizedHeight",a),n.setImageNaturalSizeAttributes(a)})}}class qe extends f{static get requires(){return[I]}static get pluginName(){return"ImageResizeEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new Ei(e);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}afterInit(){this._registerSchema()}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]})}_registerConverters(e){const t=this.editor,i=t.plugins.get("ImageUtils");t.conversion.for("downcast").add(n=>n.on(`attribute:resizedWidth:${e}`,(a,s,r)=>{if(!r.consumable.consume(s.item,a.name))return;const l=r.writer,c=r.mapper.toViewElement(s.item);s.attributeNewValue!==null?(l.setStyle("width",s.attributeNewValue,c),l.addClass("image_resized",c)):(l.removeStyle("width",c),l.removeClass("image_resized",c))})),t.conversion.for("dataDowncast").attributeToAttribute({model:{name:e,key:"resizedHeight"},view:n=>({key:"style",value:{height:n}})}),t.conversion.for("editingDowncast").add(n=>n.on(`attribute:resizedHeight:${e}`,(a,s,r)=>{if(!r.consumable.consume(s.item,a.name))return;const l=r.writer,c=r.mapper.toViewElement(s.item),m=e==="imageInline"?i.findViewImgElement(c):c;s.attributeNewValue!==null?l.setStyle("height",s.attributeNewValue,m):l.removeStyle("height",m)})),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:n=>T(n)?null:n.getStyle("width")}}),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:n=>T(n)?null:n.getStyle("height")}}),t.conversion.for("upcast").add(n=>{n.on(`element:${e==="imageBlock"?"figure":"img"}`,(a,s,r)=>{r.consumable.consume(s.viewItem,{classes:["image_resized"]})})})}}const F={small:Rt,medium:zt,large:xt,custom:Tt,original:At};class ki extends f{static get requires(){return[qe]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}_resizeUnit;constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const n of t)this._registerImageResizeButton(n);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:a}=e;t.ui.componentFactory.add(i,s=>{const r=new b(s),l=t.commands.get("resizeImage"),c=this._getOptionLabelValue(e,!0);if(!F[a])throw new rt("imageresizebuttons-missing-icon",t,e);if(r.set({label:c,icon:F[a],tooltip:c,isToggleable:!0}),r.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&k(e)){const m=t.plugins.get("ImageCustomResizeUI");this.listenTo(r,"execute",()=>{m._showForm(this._resizeUnit)})}else{const m=n?n+this._resizeUnit:null;r.bind("isOn").to(l,"value",l,"isEnabled",W(m)),this.listenTo(r,"execute",()=>{t.execute("resizeImage",{width:m})})}return r})}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find(s=>!s.value),a=s=>{const r=t.commands.get("resizeImage"),l=K(s,Et),c=l.buttonView,m=i("Resize image");return c.set({tooltip:m,commandValue:n.value,icon:F.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button",ariaLabel:m,ariaLabelledBy:void 0}),c.bind("label").to(r,"value",u=>u&&u.width?u.width:this._getOptionLabelValue(n)),l.bind("isEnabled").to(this),kt(l,()=>this._getResizeDropdownListItemDefinitions(e,r),{ariaLabel:i("Image resize list"),role:"menu"}),this.listenTo(l,"execute",u=>{"onClick"in u.source?u.source.onClick():(t.execute(u.source.commandName,{width:u.source.commandValue}),t.editing.view.focus())}),l};t.ui.componentFactory.add("resizeImage",a),t.ui.componentFactory.add("imageResize",a)}_getOptionLabelValue(e,t=!1){const i=this.editor.t;return e.label?e.label:t?k(e)?i("Custom image size"):e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):k(e)?i("Custom"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:i}=this,n=new lt,a=e.map(s=>k(s)?{...s,valueWithUnits:"custom"}:s.value?{...s,valueWithUnits:`${s.value}${this._resizeUnit}`}:{...s,valueWithUnits:null});for(const s of a){let r=null;if(i.plugins.has("ImageCustomResizeUI")&&k(s)){const l=i.plugins.get("ImageCustomResizeUI");r={type:"button",model:new ne({label:this._getOptionLabelValue(s),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{l._showForm(this._resizeUnit)}})};const c=Object.values(a).map(m=>m.valueWithUnits);r.model.bind("isOn").to(t,"value",t,"isEnabled",Si(c))}else r={type:"button",model:new ne({commandName:"resizeImage",commandValue:s.valueWithUnits,label:this._getOptionLabelValue(s),role:"menuitemradio",withText:!0,icon:null})},r.model.bind("isOn").to(t,"value",t,"isEnabled",W(s.valueWithUnits));r.model.bind("isEnabled").to(t,"isEnabled"),n.add(r)}return n}}function k(o){return o.value==="custom"}function W(o){return(e,t)=>{const i=e;return i===void 0||!t?!1:o===null&&i===o?!0:i!==null&&i.width===o}}function Si(o){return(e,t)=>!o.some(i=>W(i)(e,t))}const Ui="figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img",L="image_resized";class Bi extends f{static get requires(){return[N,I]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils");t.addObserver(ee),this.listenTo(t.document,"imageLoaded",(n,a)=>{if(!a.target.matches(Ui))return;const s=e.editing.view.domConverter,r=s.domToView(a.target),l=i.getImageWidgetFromImageView(r);let c=this.editor.plugins.get(N).getResizerByViewElement(l);if(c){c.redraw();return}const m=e.editing.mapper,u=m.toModelElement(l);c=e.plugins.get(N).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:u,viewElement:l,editor:e,getHandleHost(g){return g.querySelector("img")},getResizeHost(){return s.mapViewToDom(m.toViewElement(u))},isCentered(){return u.getAttribute("imageStyle")=="alignCenter"},onCommit(g){t.change(d=>{d.removeClass(L,l)}),e.execute("resizeImage",{width:g})}}),c.on("updateSize",()=>{l.hasClass(L)||t.change(d=>{d.addClass(L,l)});const g=u.name==="imageInline"?r:l;g.getStyle("height")&&t.change(d=>{d.removeStyle("height",g)})}),c.bind("isEnabled").to(this)})}}/**
@@ -1,4 +1,4 @@
1
- import{Plugin as l,MultiCommand as u,Command as I}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{ButtonView as k,MenuBarMenuListItemButtonView as w}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconIndent as f,IconOutdent as h}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{addMarginRules as b}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{first as p}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
1
+ import{Plugin as l,MultiCommand as u,Command as I}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{ButtonView as k,MenuBarMenuListItemButtonView as w}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconIndent as f,IconOutdent as h}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{addMarginRules as b}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{first as p}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class B extends l{static get pluginName(){return"IndentEditing"}static get isOfficialPlugin(){return!0}init(){const t=this.editor;t.commands.add("indent",new u(t)),t.commands.add("outdent",new u(t))}}class v extends l{static get pluginName(){return"IndentUI"}static get isOfficialPlugin(){return!0}init(){const t=this.editor,e=t.locale,n=t.t,s=e.uiLanguageDirection=="ltr"?f:h,i=e.uiLanguageDirection=="ltr"?h:f;this._defineButton("indent",n("Increase indent"),s),this._defineButton("outdent",n("Decrease indent"),i)}_defineButton(t,e,n){const s=this.editor;s.ui.componentFactory.add(t,()=>{const i=this._createButton(k,t,e,n);return i.set({tooltip:!0}),i}),s.ui.componentFactory.add("menuBar:"+t,()=>this._createButton(w,t,e,n))}_createButton(t,e,n,s){const i=this.editor,r=i.commands.get(e),d=new t(i.locale);return d.set({label:n,icon:s}),d.bind("isEnabled").to(r,"isEnabled"),this.listenTo(d,"execute",()=>{i.execute(e),i.editing.view.focus()}),d}}class O extends l{static get pluginName(){return"Indent"}static get isOfficialPlugin(){return!0}static get requires(){return[B,v]}}class a extends I{_indentBehavior;constructor(t,e){super(t),this._indentBehavior=e}refresh(){const e=this.editor.model,n=p(e.document.selection.getSelectedBlocks());if(!n||!this._isIndentationChangeAllowed(n)){this.isEnabled=!1;return}this.isEnabled=this._indentBehavior.checkEnabled(n.getAttribute("blockIndent"))}execute(){const t=this.editor.model,e=this._getBlocksToChange();t.change(n=>{for(const s of e){const i=s.getAttribute("blockIndent"),r=this._indentBehavior.getNextIndent(i);r?n.setAttribute("blockIndent",r,s):n.removeAttribute("blockIndent",s)}})}_getBlocksToChange(){const e=this.editor.model.document.selection;return Array.from(e.getSelectedBlocks()).filter(s=>this._isIndentationChangeAllowed(s))}_isIndentationChangeAllowed(t){const e=this.editor;return e.model.schema.checkAttribute(t,"blockIndent")?!e.plugins.has("ListUtils")||!this._indentBehavior.isForward?!0:!e.plugins.get("ListUtils").isListItemBlock(t):!1}}/**
@@ -1,4 +1,4 @@
1
- import{Plugin as m,Command as x}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Collection as w,getLanguageDirection as p}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{createDropdown as h,addListToDropdown as L,MenuBarMenuView as C,MenuBarMenuListView as P,ListSeparatorView as A,MenuBarMenuListItemView as T,MenuBarMenuListItemButtonView as V,ViewModel as b}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
1
+ import{Plugin as m,Command as x}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Collection as w,getLanguageDirection as p}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{createDropdown as h,addListToDropdown as L,MenuBarMenuView as C,MenuBarMenuListView as P,ListSeparatorView as A,MenuBarMenuListItemView as T,MenuBarMenuListItemButtonView as V,ViewModel as b}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */function f(l,e){return e=e||p(l),`${l}:${e}`}function v(l){const[e,t]=l.split(":");return{languageCode:e,textDirection:t}}class M extends x{refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"language")}execute({languageCode:e,textDirection:t}={}){const s=this.editor.model,o=s.document.selection,u=e?f(e,t):!1;s.change(g=>{if(o.isCollapsed)u?g.setSelectionAttribute("language",u):g.removeSelectionAttribute("language");else{const n=s.schema.getValidRanges(o.getRanges(),"language");for(const a of n)u?g.setAttribute("language",u,a):g.removeAttribute("language",a)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,s=e.document.selection;if(s.isCollapsed)return s.getAttribute("language")||!1;for(const r of s.getRanges())for(const o of r.getItems())if(t.checkAttribute(o,"language"))return o.getAttribute("language")||!1;return!1}}class y extends m{static get pluginName(){return"TextPartLanguageEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("language",{textPartLanguage:[{title:"Arabic",languageCode:"ar"},{title:"French",languageCode:"fr"},{title:"Spanish",languageCode:"es"}]})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"language"}),e.model.schema.setAttributeProperties("language",{copyOnEnter:!0}),this._defineConverters(),e.commands.add("textPartLanguage",new M(e))}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToAttribute({model:{key:"language",value:t=>{const s=t.getAttribute("lang"),r=t.getAttribute("dir");return f(s,r)}},view:{name:"span",attributes:{lang:/[\s\S]+/}}}),e.for("downcast").attributeToElement({model:"language",view:(t,{writer:s},r)=>{if(!t||!r.item.is("$textProxy")&&!r.item.is("documentSelection"))return;const{languageCode:o,textDirection:u}=v(t);return s.createAttributeElement("span",{lang:o,dir:u})}})}}class D extends m{static get pluginName(){return"TextPartLanguageUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,s=t("Choose language"),r=t("Language");e.ui.componentFactory.add("textPartLanguage",o=>{const{definitions:u,titles:g}=this._getItemMetadata(),n=e.commands.get("textPartLanguage"),a=h(o);return L(a,u,{ariaLabel:r,role:"menu"}),a.buttonView.set({ariaLabel:r,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:r}),a.extendTemplate({attributes:{class:["ck-text-fragment-language-dropdown"]}}),a.bind("isEnabled").to(n,"isEnabled"),a.buttonView.bind("label").to(n,"value",i=>i&&g[i]||s),a.buttonView.bind("ariaLabel").to(n,"value",i=>{const c=i&&g[i];return c?`${c}, ${r}`:r}),this.listenTo(a,"execute",i=>{n.execute({languageCode:i.source.languageCode,textDirection:i.source.textDirection}),e.editing.view.focus()}),a}),e.ui.componentFactory.add("menuBar:textPartLanguage",o=>{const{definitions:u}=this._getItemMetadata(),g=e.commands.get("textPartLanguage"),n=new C(o);n.buttonView.set({label:r});const a=new P(o);a.set({ariaLabel:t("Language"),role:"menu"});for(const i of u){if(i.type!="button"){a.items.add(new A(o));continue}const c=new T(o,n),d=new V(o);d.set({role:"menuitemradio",isToggleable:!0}),d.bind(...Object.keys(i.model)).to(i.model),d.delegate("execute").to(n),c.children.add(d),a.items.add(c)}return n.bind("isEnabled").to(g,"isEnabled"),n.panelView.children.add(a),n.on("execute",i=>{g.execute({languageCode:i.source.languageCode,textDirection:i.source.textDirection}),e.editing.view.focus()}),n})}_getItemMetadata(){const e=this.editor,t=new w,s={},r=e.commands.get("textPartLanguage"),o=e.config.get("language.textPartLanguage"),u=e.locale.t,g=u("Remove language");t.add({type:"button",model:new b({label:g,languageCode:!1,withText:!0})}),t.add({type:"separator"});for(const n of o){const a={type:"button",model:new b({label:n.title,languageCode:n.languageCode,role:"menuitemradio",textDirection:n.textDirection,withText:!0})},i=f(n.languageCode,n.textDirection);a.model.bind("isOn").to(r,"value",c=>c===i),t.add(a),s[i]=n.title}return{definitions:t,titles:s}}}class F extends m{static get requires(){return[y,D]}static get pluginName(){return"TextPartLanguage"}static get isOfficialPlugin(){return!0}}export{F as TextPartLanguage,y as TextPartLanguageEditing,D as TextPartLanguageUI};
@@ -1,4 +1,4 @@
1
- import{Plugin as p,Command as ee}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as ue,findAttributeRange as C,TextWatcher as he,getLastTextLine as me,TwoStepCaretMovement as K,Input as fe,inlineHighlight as ke}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{ClipboardPipeline as ge}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{env as we,keyCodes as be,Collection as te,first as ie,toMap as A,ObservableMixin as pe,FocusTracker as x,KeystrokeHandler as S,diff as _e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClickObserver as Ve,LivePosition as $,Matcher as ve}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{IconUnlink as Le,IconPencil as Ie,IconSettings as ye,IconLink as se,IconPreviousArrow as B,IconNextArrow as Te}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ContextualBalloon as G,ToolbarView as Pe,CssTransitionDisablerMixin as W,ButtonView as w,SwitchButtonView as Ee,MenuBarMenuListItemButtonView as Ce,clickOutsideHandler as Ae,View as L,ViewCollection as F,FocusCycler as H,ListView as R,ListItemView as D,FormHeaderView as U,IconView as xe,submitHandler as Se,LabeledFieldView as X,createLabeledInputText as j,FormRowView as J}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{isWidget as Be}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{upperFirst as Fe}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/string/upperFirst.js";/**
1
+ import{Plugin as p,Command as ee}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as ue,findAttributeRange as C,TextWatcher as he,getLastTextLine as me,TwoStepCaretMovement as K,Input as fe,inlineHighlight as ke}from"../../../../../@ckeditor_ckeditor5-typing@45.2.2/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{ClipboardPipeline as ge}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{env as we,keyCodes as be,Collection as te,first as ie,toMap as A,ObservableMixin as pe,FocusTracker as x,KeystrokeHandler as S,diff as _e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClickObserver as Ve,LivePosition as $,Matcher as ve}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{IconUnlink as Le,IconPencil as Ie,IconSettings as ye,IconLink as se,IconPreviousArrow as B,IconNextArrow as Te}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ContextualBalloon as G,ToolbarView as Pe,CssTransitionDisablerMixin as W,ButtonView as w,SwitchButtonView as Ee,MenuBarMenuListItemButtonView as Ce,clickOutsideHandler as Ae,View as L,ViewCollection as F,FocusCycler as H,ListView as R,ListItemView as D,FormHeaderView as U,IconView as xe,submitHandler as Se,LabeledFieldView as X,createLabeledInputText as j,FormRowView as J}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{isWidget as Be}from"../../../../../@ckeditor_ckeditor5-widget@45.2.2/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{upperFirst as Fe}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/string/upperFirst.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class He{_definitions=new Set;get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(t=>this._definitions.add(t)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(t,i,s)=>{if(!s.consumable.test(i.item,"attribute:linkHref")||!(i.item.is("selection")||s.schema.isInline(i.item)))return;const n=s.writer,o=n.document.selection;for(const a of this._definitions){const r=n.createAttributeElement("a",a.attributes,{priority:5});a.classes&&n.addClass(a.classes,r);for(const c in a.styles)n.setStyle(c,a.styles[c],r);n.setCustomProperty("link",!0,r),a.callback(i.attributeNewValue)?i.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(s.mapper.toViewRange(i.range),r):n.unwrap(s.mapper.toViewRange(i.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(t,i,{writer:s,mapper:n})=>{const o=n.toViewElement(i.item),a=Array.from(o.getChildren()).find(r=>r.is("element","a"));if(a)for(const r of this._definitions){const c=A(r.attributes);if(r.callback(i.attributeNewValue)){for(const[u,h]of c)u==="class"?s.addClass(h,a):s.setAttribute(u,h,a);r.classes&&s.addClass(r.classes,a);for(const u in r.styles)s.setStyle(u,r.styles[u],a)}else{for(const[u,h]of c)u==="class"?s.removeClass(h,a):s.removeAttribute(u,a);r.classes&&s.removeClass(r.classes,a);for(const u in r.styles)s.removeStyle(u,a)}}})}}}const Re=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,De="^(?:(?:<protocols>):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))",Ue=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Oe=/^((\w+:(\/{2,})?)|(\W))/i,Me=["https?","ftps?","mailto"],v="Ctrl+K";function Ne(l){return l.is("attributeElement")&&!!l.getCustomProperty("link")}function Y(l,{writer:e}){const t=e.createAttributeElement("a",{href:l},{priority:5});return e.setCustomProperty("link",!0,t),t}function ne(l,e=Me){const t=String(l),i=e.join("|"),s=new RegExp(`${De.replace("<protocols>",i)}`,"i");return qe(t,s)?t:"#"}function qe(l,e){return!!l.replace(Re,"").match(e)}function ze(l,e){const t={"Open in a new tab":l("Open in a new tab"),Downloadable:l("Downloadable")};return e.forEach(i=>("label"in i&&t[i.label]&&(i.label=t[i.label]),i)),e}function Ke(l){const e=[];if(l)for(const[t,i]of Object.entries(l)){const s=Object.assign({},i,{id:`link${Fe(t)}`});e.push(s)}return e}function P(l,e){return l?e.checkAttribute(l.name,"linkHref"):!1}function $e(l){return Ue.test(l)}function O(l,e){const t=$e(l)?"mailto:":e,i=!!t&&!oe(l);return l&&i?t+l:l}function oe(l){return Oe.test(l)}function Ge(l){window.open(l,"_blank","noopener")}function E(l){let e="";for(const t of l.getItems()){if(!t.is("$text")&&!t.is("$textProxy"))return;e+=t.data}return e}class We extends ee{manualDecorators=new te;automaticDecorators=new He;restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||ie(t.getSelectedBlocks());P(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const s of this.manualDecorators)s.value=this._getDecoratorStateFromModel(s.id)}execute(e,t={},i){const s=this.editor.model,n=s.document.selection,o=[],a=[];for(const r in t)t[r]?o.push(r):a.push(r);s.change(r=>{const c=d=>{r.setAttribute("linkHref",e,d),o.forEach(m=>r.setAttribute(m,!0,d)),a.forEach(m=>r.removeAttribute(m,d))},u=(d,m)=>{const k=E(d);if(!k)return d;let g=i;if(g||(g=m&&m==k?e:k),g!=k){const I=Xe(k,g);let f=0;for(const{offset:V,actual:y,expected:M}of I){const N=V+f,q=r.createRange(d.start.getShiftedBy(N),d.start.getShiftedBy(N+y.length)),ae=je(q,d).getAttributes(),ce=Array.from(ae).filter(([de])=>s.schema.getAttributeProperties(de).isFormatting),z=r.createText(M,ce);c(z),s.insertContent(z,q),f+=M.length}return r.createRange(d.start,d.start.getShiftedBy(g.length))}},h=d=>{const{plugins:m}=this.editor;if(r.setSelection(d.end),m.has("TwoStepCaretMovement"))m.get("TwoStepCaretMovement")._handleForwardMovement();else for(const k of["linkHref",...o,...a])r.removeSelectionAttribute(k)};if(n.isCollapsed){const d=n.getFirstPosition();if(n.hasAttribute("linkHref")){const m=n.getAttribute("linkHref"),k=C(d,"linkHref",m,s),g=u(k,m);c(g||k),g&&h(g)}else if(e!==""){const m=A(n.getAttributes());m.set("linkHref",e),o.forEach(g=>{m.set(g,!0)});const k=s.insertContent(r.createText(i||e,m),d);h(k)}}else{const d=Array.from(n.getRanges()),m=s.schema.getValidRanges(d,"linkHref"),k=[];for(const f of n.getSelectedBlocks())s.schema.checkAttribute(f,"linkHref")&&k.push(r.createRangeOn(f));const g=k.slice();for(const f of m)this._isRangeToUpdate(f,k)&&g.push(f);const I=d.map(f=>({start:$.fromPosition(f.start,"toPrevious"),end:$.fromPosition(f.end,"toNext")}));for(let f of g){const V=(f.start.textNode||f.start.nodeAfter).getAttribute("linkHref");f=u(f,V)||f,c(f)}r.setSelection(I.map(f=>{const V=f.start.toPosition(),y=f.end.toPosition();return f.start.detach(),f.end.detach(),s.createRange(V,y)}))}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,s=i.getSelectedElement();return P(s,t.schema)?s.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}function Xe(l,e){const t=_e(l,e),i={equal:0,insert:0,delete:0},s=[];let n="",o="";for(const a of[...t,null])a=="insert"?o+=e[i.equal+i.insert]:a=="delete"?n+=l[i.equal+i.delete]:(n.length||o.length)&&(s.push({offset:i.equal,actual:n,expected:o}),n="",o=""),a&&i[a]++;return s}function je(l,e){if(!l.isCollapsed)return ie(l.getItems());const t=l.start;return t.textNode?t.textNode:!t.nodeBefore||t.isEqual(e.start)?t.nodeAfter:t.nodeBefore}class Je extends ee{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();P(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,s=e.commands.get("link");t.change(n=>{const o=i.isCollapsed?[C(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const a of o)if(n.removeAttribute("linkHref",a),s)for(const r of s.manualDecorators)n.removeAttribute(r.id,a)})}}class Ye extends pe(){id;defaultValue;label;attributes;classes;styles;constructor({id:e,label:t,attributes:i,classes:s,styles:n,defaultValue:o}){super(),this.id=e,this.set("value",void 0),this.defaultValue=o,this.label=t,this.attributes=i,this.classes=s,this.styles=n}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const Qe="ck-link_selected",Q="automatic",Ze="manual",et=/^(https?:)?\/\//;class _ extends p{_linkOpeners=[];static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[K,fe,ge]}constructor(e){super(e),e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1,toolbar:["linkPreview","|","editLink","linkProperties","unlink"]})}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:Y}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(n,o)=>Y(ne(n,t),o)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:n=>n.getAttribute("href")}}),e.commands.add("link",new We(e)),e.commands.add("unlink",new Je(e));const i=ze(e.t,Ke(e.config.get("link.decorators")));this._enableAutomaticDecorators(i.filter(n=>n.mode===Q)),this._enableManualDecorators(i.filter(n=>n.mode===Ze)),e.plugins.get(K).registerAttribute("linkHref"),ke(e,"linkHref","a",Qe),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,s=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&s.add({id:"linkIsExternal",mode:Q,callback:n=>!!n&&et.test(n),attributes:{target:"_blank",rel:"noopener noreferrer"}}),s.add(e),s.length&&t.conversion.for("downcast").add(s.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,s=t.commands.get("link").manualDecorators;e.forEach(n=>{t.model.schema.extend("$text",{allowAttributes:n.id});const o=new Ye(n);s.add(o),t.conversion.for("downcast").attributeToElement({model:o.id,view:(a,{writer:r,schema:c},{item:u})=>{if((u.is("selection")||c.isInline(u))&&a){const h=r.createAttributeElement("a",o.attributes,{priority:5});o.classes&&r.addClass(o.classes,h);for(const d in o.styles)r.setStyle(d,o.styles[d],h);return r.setCustomProperty("link",!0,h),h}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...o._createPattern()},model:{key:o.id}})})}_enableLinkOpen(){const e=this.editor,i=e.editing.view.document,s=n=>{this._linkOpeners.some(o=>o(n))||Ge(n)};this.listenTo(i,"click",(n,o)=>{if(!(we.isMac?o.domEvent.metaKey:o.domEvent.ctrlKey))return;let r=o.domTarget;if(r.tagName.toLowerCase()!="a"&&(r=r.closest("a")),!r)return;const c=r.getAttribute("href");c&&(n.stop(),o.preventDefault(),s(c))},{context:"$capture"}),this.listenTo(i,"keydown",(n,o)=>{const r=e.commands.get("link").value;r&&o.keyCode===be.enter&&o.altKey&&(n.stop(),s(r))})}_enableSelectionAttributesFixer(){const t=this.editor.model,i=t.document.selection;this.listenTo(i,"change:attribute",(s,{attributeKeys:n})=>{!n.includes("linkHref")||i.hasAttribute("linkHref")||t.change(o=>{tt(o,it(t.schema))})})}_enableClipboardIntegration(){const e=this.editor,t=e.model,i=this.editor.config.get("link.defaultProtocol");i&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",(s,n)=>{t.change(o=>{const a=o.createRangeIn(n.content);for(const r of a.getItems())if(r.hasAttribute("linkHref")){const c=O(r.getAttribute("linkHref"),i);o.setAttribute("linkHref",c,r)}})})}}function tt(l,e){l.removeSelectionAttribute("linkHref");for(const t of e)l.removeSelectionAttribute(t)}function it(l){return l.getDefinition("$text").allowAttributes.filter(t=>t.startsWith("link"))}class st extends w{constructor(e){super(e);const t=this.bindTemplate;this.set({href:void 0,withText:!0}),this.extendTemplate({attributes:{class:["ck-link-toolbar__preview"],href:t.to("href"),target:"_blank",rel:"noopener noreferrer"},on:{click:t.to(i=>{if(this.href){const s=()=>i.preventDefault();this.fire("navigate",this.href,s)}})}}),this.template.tag="a"}}class nt extends L{focusTracker=new x;keystrokes=new S;backButtonView;saveButtonView;displayedTextInputView;urlInputView;children;providersListChildren;_validators;_focusables=new F;_focusCycler;constructor(e,t){super(e),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 H({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(),Se({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 w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new w(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 U(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new R(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}_createDisplayedTextInput(){const e=this.locale.t,t=new X(this.locale,j);return t.label=e("Displayed text"),t.class="ck-labeled-field-view_full-width",t}_createUrlInput(){const e=this.locale.t,t=new X(this.locale,j);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new J(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new J(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 ot extends L{focusTracker=new x;keystrokes=new S;backButtonView;listView;listChildren;emptyListInformation;children;_focusables=new F;_focusCycler;constructor(e){super(e),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,i,s)=>{s?(this.children.remove(this.emptyListInformation),this.children.add(this.listView)):(this.children.remove(this.listView),this.children.add(this.emptyListInformation))}),this.keystrokes.set("Esc",(t,i)=>{this.fire("cancel"),i()}),this._focusCycler=new H({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 R(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}_createBackButton(){const e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new U(this.locale);return e.bind("label").to(this,"title"),e.children.add(this.backButtonView,0),e}_createEmptyLinksListItemView(){const e=new L(this.locale);return e.setTemplate({tag:"p",attributes:{class:["ck","ck-link__empty-list-info"]},children:[{text:this.bindTemplate.to("emptyListPlaceholder")}]}),e}}class rt extends L{focusTracker=new x;keystrokes=new S;backButtonView;children;listChildren;_focusables=new F;_focusCycler;constructor(e){super(e),this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new H({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,i)=>{this.fire("back"),i()})}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 w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new U(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new R(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}}class lt extends w{arrowView;constructor(e){super(e),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 xe;return e.content=Te,e}}const b="link-ui";class re extends p{toolbarView=null;formView=null;linkProviderItemsView=null;propertiesView=null;_balloon;_linksProviders=new te;static get requires(){return[G,_]}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(Ve),this._balloon=e.plugins.get(G),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:b,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:b,view:(i,{writer:s})=>{if(!i.markerRange.isCollapsed)return null;const n=s.createUIElement("span");return s.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],n),n}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:v},{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(i=>(i.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 Pe(e.locale),i=e.commands.get("link");t.class="ck-link-toolbar";let s=e.config.get("link.toolbar");return i.manualDecorators.length||(s=s.filter(n=>n!=="linkProperties")),t.fillFromConfig(s,e.ui.componentFactory),t.keystrokes.set("Esc",(n,o)=>{this._hideUI(),o()}),t.keystrokes.set(v,(n,o)=>{this._addFormView(),o()}),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,i=e.commands.get("link"),s=e.config.get("link.defaultProtocol"),n=new(W(nt))(e.locale,at(e));return n.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",o=>o!==void 0),n.urlInputView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("label").to(i,"value",o=>t(o?"Update":"Insert")),this.listenTo(n,"submit",()=>{if(n.isValid()){const o=n.urlInputView.fieldView.element.value,a=O(o,s),r=n.displayedTextInputView.fieldView.element.value;e.execute("link",a,this._getDecoratorSwitchesState(),r!==this.selectedLinkableText?r:void 0),this._closeFormView()}}),this.listenTo(n.urlInputView,"change:errorText",()=>{e.ui.update()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(o,a)=>{this._closeFormView(),a()}),n.providersListChildren.bindTo(this._linksProviders).using(o=>this._createLinksListProviderButton(o)),n}_createLinkProviderListView(e){return e.getListItems().map(({href:t,label:i,icon:s})=>{const n=new w;return n.set({label:i,icon:s,tooltip:!1,withText:!0}),n.on("execute",()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=t,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),n})}_createLinkProviderItemsView(e){const t=this.editor,i=t.locale.t,s=new ot(t.locale),{emptyListPlaceholder:n,label:o}=e;return s.emptyListPlaceholder=n||i("No links available"),s.title=o,this.listenTo(s,"cancel",()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),s}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),i=new(W(rt))(e.locale);return this.listenTo(i,"back",()=>{e.editing.view.focus(),this._removePropertiesView()}),i.listChildren.bindTo(t.manualDecorators).using(s=>{const n=new Ee(e.locale);return n.set({label:s.label,withText:!0}),n.bind("isOn").toMany([s,t],"value",(o,a)=>a===void 0&&o===void 0?!!s.defaultValue:!!o),n.on("execute",()=>{s.set("value",!n.isOn),e.execute("link",t.value,this._getDecoratorSwitchesState())}),n}),i}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce((t,i)=>{const s=e.value===void 0&&i.value===void 0?i.defaultValue:i.value;return{...t,[i.id]:!!s}},{})}_registerEditingOpeners(){this.editor.plugins.get(_)._registerLinkOpener(t=>{const i=this._getLinkProviderLinkByHref(t);if(!i)return!1;const{item:s,provider:n}=i;return n.navigate?n.navigate(s):!1})}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",()=>{const t=this._createButton(w);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:link",()=>{const t=this._createButton(Ce);return t.set({role:"menuitemcheckbox"}),t}),e.ui.componentFactory.add("linkPreview",t=>{const i=new st(t),s=e.config.get("link.allowedProtocols"),n=e.commands.get("link"),o=t.t;i.bind("isEnabled").to(n,"value",r=>!!r),i.bind("href").to(n,"value",r=>r&&ne(r,s));const a=r=>{if(!r){i.label=void 0,i.icon=void 0,i.tooltip=o("Open link in new tab");return}const c=this._getLinkProviderLinkByHref(r);if(c){const{label:u,tooltip:h,icon:d}=c.item;i.label=u,i.tooltip=h||!1,i.icon=d}else i.label=r,i.icon=void 0,i.tooltip=o("Open link in new tab")};return a(n.value),this.listenTo(n,"change:value",(r,c,u)=>{a(u)}),this.listenTo(i,"navigate",(r,c,u)=>{const h=this._getLinkProviderLinkByHref(c);if(!h)return;const{provider:d,item:m}=h,{navigate:k}=d;k&&k(m)&&(r.stop(),u())}),i}),e.ui.componentFactory.add("unlink",t=>{const i=e.commands.get("unlink"),s=new w(t),n=t.t;return s.set({label:n("Unlink"),icon:Le,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{e.execute("unlink"),this._hideUI()}),s}),e.ui.componentFactory.add("editLink",t=>{const i=e.commands.get("link"),s=new w(t),n=t.t;return s.set({label:n("Edit link"),icon:Ie,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{this._addFormView()}),s}),e.ui.componentFactory.add("linkProperties",t=>{const i=e.commands.get("link"),s=new w(t),n=t.t;return s.set({label:n("Link properties"),icon:ye,tooltip:!0}),s.bind("isEnabled").to(i,"isEnabled",i,"value",i,"manualDecorators",(o,a,r)=>o&&!!a&&r.length>0),this.listenTo(s,"execute",()=>{this._addPropertiesView()}),s})}_createLinksListProviderButton(e){const t=this.editor.locale,i=new lt(t);return i.set({label:e.label}),this.listenTo(i,"execute",()=>{this._showLinksProviderView(e)}),i}_createButton(e){const t=this.editor,i=t.locale,s=t.commands.get("link"),n=new e(t.locale),o=i.t;return n.set({label:o("Link"),icon:se,keystroke:v,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",a=>!!a),this.listenTo(n,"execute",()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()}),n}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),e.keystrokes.set(v,(i,s)=>{s(),e.commands.get("link").isEnabled&&(e.editing.view.scrollToTheSelection(),this._showUI(!0))})}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",(e,t)=>{this._isToolbarVisible&&!this.toolbarView.focusTracker.isFocused&&(this.toolbarView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Ae({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 i=this._getSelectedLinkElement(),s=o();const n=()=>{const a=this._getSelectedLinkElement(),r=o();i&&!a||!i&&r!==s?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=a,s=r};function o(){return t.selection.focus.getAncestors().reverse().find(a=>a.is("element"))}this.listenTo(e.ui,"update",n),this.listenTo(this._balloon,"change:visibleView",n)}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(b)){const s=this.editor.editing.mapper.markerNameToElements(b);if(s){const n=Array.from(s),o=e.createRange(e.createPositionBefore(n[0]),e.createPositionAfter(n[n.length-1]));return{target:e.domConverter.viewRangeToDom(o)}}}return{target:()=>{const s=this._getSelectedLinkElement();return s?e.domConverter.mapViewToDom(s):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Be(i))return T(t.getFirstPosition());{const s=t.getFirstRange().getTrimmed(),n=T(s.start),o=T(s.end);return!n||n!=o?null:e.createRangeIn(n).getTrimmed().isEqual(s)?n:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,i=this._getSelectedLinkElement();if(!i)return E(e.document.selection.getFirstRange());const s=t.view.createRangeOn(i),n=t.mapper.toModelRange(s);return E(n)}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const i=t.getItem?t.getItem(e):t.getListItems().find(s=>s.href===e);if(i)return{provider:t,item:i}}return null}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(b))t.updateMarker(b,{range:i});else if(i.start.isAtEnd){const s=i.start.getLastMatchingPosition(({item:n})=>!e.schema.isContent(n),{boundaries:i});t.addMarker(b,{usingOperation:!1,affectsData:!1,range:t.createRange(s,i.end)})}else t.addMarker(b,{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(b)&&e.change(t=>{t.removeMarker(b)})}}function T(l){return l.getAncestors().find(e=>Ne(e))||null}function at(l){const e=l.t,t=l.config.get("link.allowCreatingEmptyLinks");return[i=>{if(!t&&!i.url.length)return e("Link URL must not be empty.")}]}const ct=4,le=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"),dt=2;class ut extends p{static get requires(){return[ue,_]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}init(){const t=this.editor.model.document.selection;t.on("change:range",()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling(),this._enablePasteLinking()}_expandLinkRange(e,t){return t.textNode&&t.textNode.hasAttribute("linkHref")?C(t,"linkHref",t.textNode.getAttribute("linkHref"),e):null}_selectEntireLinks(e,t){const s=this.editor.model,n=s.document.selection,o=n.getFirstPosition(),a=n.getLastPosition();let r=t.getJoined(this._expandLinkRange(s,o)||t);r&&(r=r.getJoined(this._expandLinkRange(s,a)||t)),r&&(r.start.isBefore(o)||r.end.isAfter(a))&&e.setSelection(r)}_enablePasteLinking(){const e=this.editor,t=e.model,i=t.document.selection,s=e.plugins.get("ClipboardPipeline"),n=e.commands.get("link");s.on("inputTransformation",(o,a)=>{if(!this.isEnabled||!n.isEnabled||i.isCollapsed||a.method!=="paste"||i.rangeCount>1)return;const r=i.getFirstRange(),c=a.dataTransfer.getData("text/plain");if(!c)return;const u=c.match(le);u&&u[2]===c&&(t.change(h=>{this._selectEntireLinks(h,r),n.execute(c)}),o.stop())},{priority:"high"})}_enableTypingHandling(){const e=this.editor,t=new he(e.model,i=>{let s=i;if(!ht(s))return;s=s.slice(0,-1),"!.:,;?".includes(s[s.length-1])&&(s=s.slice(0,-1));const n=Z(s);if(n)return{url:n,removedTrailingCharacters:i.length-s.length}});t.on("matched:data",(i,s)=>{const{batch:n,range:o,url:a,removedTrailingCharacters:r}=s;if(!n.isTyping)return;const c=o.end.getShiftedBy(-r),u=c.getShiftedBy(-a.length),h=e.model.createRange(u,c);this._applyAutoLink(a,h)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const s=t.document.selection.getFirstPosition();let n;s.parent.previousSibling?.is("element")?n=t.createRangeIn(s.parent.previousSibling):n=t.createRange(t.createPositionAt(s.parent,0),s),this._checkAndApplyAutoLinkOnRange(n)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const s=t.document.selection.getFirstPosition(),n=t.createRange(t.createPositionAt(s.parent,0),s.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:s}=me(e,t),n=Z(i);if(n){const o=t.createRange(s.end.getShiftedBy(-n.length),s.end);this._applyAutoLink(n,o)}}_applyAutoLink(e,t){const i=this.editor.model,s=this.editor.config.get("link.defaultProtocol"),n=O(e,s);!this.isEnabled||!mt(t,i)||!oe(n)||ft(t)||this._persistAutoLink(n,t)}_persistAutoLink(e,t){const i=this.editor.model,s=this.editor.plugins.get("Delete");i.enqueueChange(n=>{n.setAttribute("linkHref",e,t),i.enqueueChange(()=>{s.requestUndoOnBackspace()})})}}function ht(l){return l.length>ct&&l[l.length-1]===" "&&l[l.length-2]!==" "}function Z(l){const e=le.exec(l);return e?e[dt]:null}function mt(l,e){return e.schema.checkAttributeInSelection(e.createSelection(l),"linkHref")}function ft(l){const e=l.start.nodeAfter;return!!e&&e.hasAttribute("linkHref")}class xt extends p{static get requires(){return[_,re,ut]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}}class kt extends p{static get requires(){return["ImageEditing","ImageUtils",_]}static get pluginName(){return"LinkImageEditing"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(gt(e)),e.conversion.for("downcast").add(wt(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,i=e.commands.get("link").automaticDecorators;i.length&&e.conversion.for("downcast").add(i.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(bt(i)),e.conversion.for("upcast").add(pt(e,i))}}function gt(l){const e=l.plugins.has("ImageInlineEditing"),t=l.plugins.get("ImageUtils");return i=>{i.on("element:a",(s,n,o)=>{const a=n.viewItem,r=t.findViewImgElement(a);if(!r)return;const c=r.findAncestor(m=>t.isBlockImageView(m));if(e&&!c)return;const u={attributes:["href"]};if(!o.consumable.consume(a,u))return;const h=a.getAttribute("href");if(!h)return;let d=n.modelCursor.parent;if(!d.is("element","imageBlock")){const m=o.convertItem(r,n.modelCursor);n.modelRange=m.modelRange,n.modelCursor=m.modelCursor,d=n.modelCursor.nodeBefore}d&&d.is("element","imageBlock")&&o.writer.setAttribute("linkHref",h,d)},{priority:"high"})}}function wt(l){const e=l.plugins.get("ImageUtils");return t=>{t.on("attribute:linkHref:imageBlock",(i,s,n)=>{if(!n.consumable.consume(s.item,i.name))return;const o=n.mapper.toViewElement(s.item),a=n.writer,r=Array.from(o.getChildren()).find(h=>h.is("element","a")),c=e.findViewImgElement(o),u=c.parent.is("element","picture")?c.parent:c;if(r)s.attributeNewValue?a.setAttribute("href",s.attributeNewValue,r):(a.move(a.createRangeOn(u),a.createPositionAt(o,0)),a.remove(r));else{const h=a.createContainerElement("a",{href:s.attributeNewValue});a.insert(a.createPositionAt(o,0),h),a.move(a.createRangeOn(u),a.createPositionAt(h,0))}},{priority:"high"})}}function bt(l){return e=>{e.on(`attribute:${l.id}:imageBlock`,(t,i,s)=>{const n=s.mapper.toViewElement(i.item),o=Array.from(n.getChildren()).find(a=>a.is("element","a"));if(o){if(l.value===void 0){for(const a in l.attributes)s.writer.removeAttribute(a,o);l.classes&&s.writer.removeClass(l.classes,o);for(const a in l.styles)s.writer.removeStyle(a,o);return}for(const[a,r]of A(l.attributes))s.writer.setAttribute(a,r,o);l.classes&&s.writer.addClass(l.classes,o);for(const a in l.styles)s.writer.setStyle(a,l.styles[a],o)}})}}function pt(l,e){const t=l.plugins.has("ImageInlineEditing"),i=l.plugins.get("ImageUtils");return s=>{s.on("element:a",(n,o,a)=>{const r=o.viewItem,c=i.findViewImgElement(r);if(!c)return;const u=c.findAncestor(k=>i.isBlockImageView(k));if(t&&!u)return;const d=new ve(e._createPattern()).match(r);if(!d||!a.consumable.consume(r,d.match))return;const m=o.modelCursor.nodeBefore||o.modelCursor.parent;a.writer.setAttribute(e.id,!0,m)},{priority:"high"})}}class _t extends p{static get requires(){return[_,re,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",(i,s)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(s.preventDefault(),i.stop())},{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",i=>{const s=new w(i),n=e.plugins.get("LinkUI"),o=e.commands.get("link");return s.set({isEnabled:!0,label:t("Link image"),icon:se,keystroke:v,tooltip:!0,isToggleable:!0}),s.bind("isEnabled").to(o,"isEnabled"),s.bind("isOn").to(o,"value",a=>!!a),this.listenTo(s,"execute",()=>{this._isSelectedLinkedImage(e.model.document.selection)?n._addToolbarView():n._showUI(!0)}),s})}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}class St extends p{static get requires(){return[kt,_t]}static get pluginName(){return"LinkImage"}static get isOfficialPlugin(){return!0}}export{ut as AutoLink,xt as Link,We as LinkCommand,_ as LinkEditing,nt as LinkFormView,St as LinkImage,kt as LinkImageEditing,_t as LinkImageUI,re as LinkUI,Je as UnlinkCommand,O as addLinkProtocolIfApplicable,ne as ensureSafeUrl,P as isLinkableElement};
@@ -1,4 +1,4 @@
1
- import{Plugin as I,Command as T}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as Ne}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Enter as Fe}from"../../../../../@ckeditor_ckeditor5-enter@45.2.1/node_modules/@ckeditor/ckeditor5-enter/dist/index.js";import{CKEditorError as Oe,getCode as Re,toArray as k,first as D,parseKeystroke as Me,getLocalizedArrowKeyCodeDirection as De,uid as Ue,FocusTracker as ee,KeystrokeHandler as te,global as $e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClipboardPipeline as Ke}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{createDropdown as We,SplitButtonView as je,MenuBarMenuView as qe,ButtonView as G,MenuBarMenuListItemButtonView as He,focusChildOnDropdownOpen as Ye,View as ie,ViewCollection as ze,FocusCycler as Ge,addKeyboardHandlingForGrid as Ze,CollapsibleView as Je,LabeledFieldView as Qe,createLabeledInputNumber as Xe,SwitchButtonView as et}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconListStyleDisc as tt,IconListStyleCircle as it,IconListStyleSquare as st,IconListStyleDecimal as nt,IconListStyleDecimalLeadingZero as rt,IconListStyleLowerRoman as ot,IconListStyleUpperRoman as lt,IconListStyleLowerLatin as ct,IconListStyleUpperLatin as at,IconBulletedList as Z,IconNumberedList as J,IconTodoList as ut}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{DomEventObserver as dt,Matcher as be}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
1
+ import{Plugin as I,Command as T}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as Ne}from"../../../../../@ckeditor_ckeditor5-typing@45.2.2/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Enter as Fe}from"../../../../../@ckeditor_ckeditor5-enter@45.2.2/node_modules/@ckeditor/ckeditor5-enter/dist/index.js";import{CKEditorError as Oe,getCode as Re,toArray as k,first as D,parseKeystroke as Me,getLocalizedArrowKeyCodeDirection as De,uid as Ue,FocusTracker as ee,KeystrokeHandler as te,global as $e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClipboardPipeline as Ke}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{createDropdown as We,SplitButtonView as je,MenuBarMenuView as qe,ButtonView as G,MenuBarMenuListItemButtonView as He,focusChildOnDropdownOpen as Ye,View as ie,ViewCollection as ze,FocusCycler as Ge,addKeyboardHandlingForGrid as Ze,CollapsibleView as Je,LabeledFieldView as Qe,createLabeledInputNumber as Xe,SwitchButtonView as et}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconListStyleDisc as tt,IconListStyleCircle as it,IconListStyleSquare as st,IconListStyleDecimal as nt,IconListStyleDecimalLeadingZero as rt,IconListStyleLowerRoman as ot,IconListStyleUpperRoman as lt,IconListStyleLowerLatin as ct,IconListStyleUpperLatin as at,IconBulletedList as Z,IconNumberedList as J,IconTodoList as ut}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{DomEventObserver as dt,Matcher as be}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class b{_startElement;_referenceIndent;_isForward;_includeSelf;_sameAttributes;_sameIndent;_lowerIndent;_higherIndent;constructor(e,t){this._startElement=e,this._referenceIndent=e.getAttribute("listIndent"),this._isForward=t.direction=="forward",this._includeSelf=!!t.includeSelf,this._sameAttributes=k(t.sameAttributes||[]),this._sameIndent=!!t.sameIndent,this._lowerIndent=!!t.lowerIndent,this._higherIndent=!!t.higherIndent}static first(e,t){const n=new this(e,t)[Symbol.iterator]();return D(n)}*[Symbol.iterator](){const e=[];for(const{node:t}of new V(this._getStartNode(),this._isForward?"forward":"backward")){const i=t.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){e.push(t);continue}}else{if(!this._sameIndent){if(this._higherIndent){e.length&&(yield*e,e.length=0);break}continue}if(this._sameAttributes.some(n=>t.getAttribute(n)!==this._startElement.getAttribute(n)))break}e.length&&(yield*e,e.length=0),yield t}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class V{_node;_isForward;_previousNodesByIndent=[];_previous=null;_previousNodeIndent=null;constructor(e,t="forward"){this._node=e,this._isForward=t==="forward"}[Symbol.iterator](){return this}next(){if(!p(this._node))return{done:!0,value:void 0};const e=this._node.getAttribute("listIndent");let t=null;if(this._previous){const n=this._previousNodeIndent;e>n?this._previousNodesByIndent[n]=this._previous:e<n?(t=this._previousNodesByIndent[e]||null,this._previousNodesByIndent.length=e):t=this._previous}const i={node:this._node,previous:this._previous,previousNodeInList:t};return this._previous=this._node,this._previousNodeIndent=e,this._node=this._isForward?this._node.nextSibling:this._node.previousSibling,{value:i,done:!1}}}class ft{_listHead;constructor(e){this._listHead=e}[Symbol.iterator](){return new V(this._listHead)}}class S{static next(){return Ue()}}function p(s){return!!s&&s.is("element")&&s.hasAttribute("listItemId")}function _(s,e={}){return[...L(s,{...e,direction:"backward"}),...L(s,{...e,direction:"forward"})]}function L(s,e={}){const t=e.direction=="forward",i=Array.from(new b(s,{...e,includeSelf:t,sameIndent:!0,sameAttributes:"listItemId"}));return t?i:i.reverse()}function mt(s){return Array.from(new b(s,{direction:"forward",higherIndent:!0}))}function ye(s,e){const t=new b(s,{sameIndent:!0,sameAttributes:"listType",...e}),i=new b(s,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward",...e});return[...Array.from(t).reverse(),...i]}function A(s){return!b.first(s,{sameIndent:!0,sameAttributes:"listItemId"})}function se(s){return!b.first(s,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function N(s,e={}){s=k(s);const t=e.withNested!==!1,i=new Set;for(const n of s)for(const r of _(n,{higherIndent:t}))i.add(r);return v(i)}function U(s){s=k(s);const e=new Set;for(const t of s)for(const i of ye(t))e.add(i);return v(e)}function Q(s,e){const t=L(s,{direction:"forward"}),i=S.next();for(const n of t)e.setAttribute("listItemId",i,n);return t}function j(s,e,t){const i={};for(const[r,l]of e.getAttributes())r.startsWith("list")&&(i[r]=l);const n=L(s,{direction:"forward"});for(const r of n)t.setAttributes(i,r);return n}function q(s,e,{expand:t,indentBy:i=1}={}){s=k(s);const n=t?N(s):s;for(const r of n){const l=r.getAttribute("listIndent")+i;l<0?$(r,e):e.setAttribute("listIndent",l,r)}return n}function pt(s,e){s=k(s);const t=N(s),i=new Set,n=Math.min(...t.map(l=>l.getAttribute("listIndent"))),r=new Map;for(const l of t)r.set(l,b.first(l,{lowerIndent:!0}));for(const l of t){if(i.has(l))continue;i.add(l);const o=l.getAttribute("listIndent")-1;if(o<0){$(l,e);continue}if(l.getAttribute("listIndent")==n){const c=gt(l,r.get(l),e);for(const a of c)i.add(a);if(c.length)continue}e.setAttribute("listIndent",o,l)}return v(i)}function $(s,e){s=k(s);for(const t of s)t.is("element","listItem")&&e.rename(t,"paragraph");for(const t of s)for(const i of t.getAttributeKeys())i.startsWith("list")&&e.removeAttribute(i,t);return s}function E(s){if(!s.length)return!1;const e=s[0].getAttribute("listItemId");return e?!s.some(t=>t.getAttribute("listItemId")!=e):!1}function ht(s,e){const t=[];let i=Number.POSITIVE_INFINITY;for(const{node:n}of new V(s.nextSibling)){const r=n.getAttribute("listIndent");if(r==0)break;r<i&&(i=r);const l=r-i;e.setAttribute("listIndent",l,n),t.push(n)}return t}function v(s){return Array.from(s).filter(e=>e.root.rootName!=="$graveyard").sort((e,t)=>e.index-t.index)}function B(s){const e=s.document.selection.getSelectedElement();return e&&s.schema.isObject(e)&&s.schema.isBlock(e)?e:null}function K(s,e){return e.checkChild(s.parent,"listItem")&&e.checkChild(s,"$text")&&!e.isObject(s)}function M(s){return s=="numbered"||s=="customNumbered"}function gt(s,e,t){return L(e,{direction:"forward"}).pop().index>s.index?j(s,e,t):[]}class ne extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=re(e.document.selection);e.change(i=>{const n=[];E(t)&&!A(t[0])?(this._direction=="forward"&&n.push(...q(t,i)),n.push(...Q(t[0],i))):this._direction=="forward"?n.push(...q(t,i,{expand:!0})):n.push(...pt(t,i));for(const r of n){if(!r.hasAttribute("listType"))continue;const l=b.first(r,{sameIndent:!0});l&&i.setAttribute("listType",l.getAttribute("listType"),r)}this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){let e=re(this.editor.model.document.selection),t=e[0];if(!t)return!1;if(this._direction=="backward"||E(e)&&!A(e[0]))return!0;e=N(e),t=e[0];const i=b.first(t,{sameIndent:!0});return i?i.getAttribute("listType")==t.getAttribute("listType"):!1}}function re(s){const e=Array.from(s.getSelectedBlocks()),t=e.findIndex(i=>!p(i));return t!=-1&&(e.length=t),e}class x extends T{type;_listWalkerOptions;constructor(e,t,i={}){super(e),this.type=t,this._listWalkerOptions=i.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=B(t),r=Array.from(i.selection.getSelectedBlocks()).filter(o=>t.schema.checkAttribute(o,"listType")||K(o,t.schema)),l=e.forceValue!==void 0?!e.forceValue:this.value;t.change(o=>{if(l){const c=r[r.length-1],a=L(c,{direction:"forward"}),u=[];a.length>1&&u.push(...Q(a[1],o)),u.push(...$(r,o)),u.push(...ht(c,o)),this._fireAfterExecute(u)}else if((n||i.selection.isCollapsed)&&p(r[0])){const c=ye(n||r[0],this._listWalkerOptions);for(const a of c)o.setAttributes({...e.additionalAttributes,listType:this.type},a);this._fireAfterExecute(c)}else{const c=[];for(const a of r)if(!a.hasAttribute("listType"))!a.is("element","listItem")&&K(a,t.schema)&&o.rename(a,"listItem"),o.setAttributes({...e.additionalAttributes,listIndent:0,listItemId:S.next(),listType:this.type},a),c.push(a);else for(const u of N(a,{withNested:!1}))u.getAttribute("listType")!=this.type&&(o.setAttributes({...e.additionalAttributes,listType:this.type},u),c.push(u));this._fireAfterExecute(c)}})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_getValue(){const e=this.editor.model.document.selection,t=Array.from(e.getSelectedBlocks());if(!t.length)return!1;for(const i of t)if(i.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const e=this.editor.model,t=e.schema,i=e.document.selection,n=Array.from(i.getSelectedBlocks());if(!n.length)return!1;if(this.value)return!0;for(const r of n)if(t.checkAttribute(r,"listType")||K(r,t))return!0;return!1}}class oe extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:e=!1}={}){const t=this.editor.model,i=t.document.selection,n=[];t.change(r=>{const{firstElement:l,lastElement:o}=this._getMergeSubjectElements(i,e),c=l.getAttribute("listIndent")||0,a=o.getAttribute("listIndent"),u=o.getAttribute("listItemId");if(c!=a){const d=mt(o);n.push(...q([o,...d],r,{indentBy:c-a,expand:c<a}))}if(e){let d=i;i.isCollapsed&&(d=r.createSelection(r.createRange(r.createPositionAt(l,"end"),r.createPositionAt(o,0)))),t.deleteContent(d,{doNotResetEntireContent:i.isCollapsed});const f=d.getLastPosition().parent,m=f.nextSibling;n.push(f),m&&m!==o&&m.getAttribute("listItemId")==u&&n.push(...j(m,f,r))}else n.push(...j(o,l,r));this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){const e=this.editor.model,t=e.document.selection,i=B(e);if(t.isCollapsed||i){const n=i||t.getFirstPosition().parent;if(!p(n))return!1;const r=this._direction=="backward"?n.previousSibling:n.nextSibling;if(!r||E([n,r]))return!1}else{const n=t.getLastPosition(),r=t.getFirstPosition();if(n.parent===r.parent||!p(n.parent))return!1}return!0}_getMergeSubjectElements(e,t){const i=this.editor.model,n=B(i);let r,l;if(e.isCollapsed||n){const o=n||e.getFirstPosition().parent,c=A(o);this._direction=="backward"?(l=o,c&&!t?r=b.first(o,{sameIndent:!0,lowerIndent:!0}):r=o.previousSibling):(r=o,l=o.nextSibling)}else r=e.getFirstPosition().parent,l=e.getLastPosition().parent;return{firstElement:r,lastElement:l}}}class le extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change(t=>{const i=Q(this._getStartBlock(),t);this._fireAfterExecute(i)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&p(t)&&!A(t)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return this._direction=="before"?t:t.nextSibling}}class bt extends I{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(e){return U(e)}isFirstBlockOfListItem(e){return A(e)}isListItemBlock(e){return p(e)}expandListBlocksToCompleteItems(e,t={}){return N(e,t)}isNumberedListType(e){return M(e)}}/**
@@ -1,4 +1,4 @@
1
- import{Plugin as h}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{HtmlDataProcessor as d}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{marked as m}from"../../../../../marked@4.0.12/node_modules/marked/lib/marked.esm.js";import f from"../../../../../turndown@7.2.0/node_modules/turndown/lib/turndown.browser.es.js";import{gfm as g}from"../../../../../turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js";import{ClipboardPipeline as w}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";/**
1
+ import{Plugin as h}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{HtmlDataProcessor as d}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{marked as m}from"../../../../../marked@4.0.12/node_modules/marked/lib/marked.esm.js";import f from"../../../../../turndown@7.2.0/node_modules/turndown/lib/turndown.browser.es.js";import{gfm as g}from"../../../../../turndown-plugin-gfm@1.0.2/node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js";import{ClipboardPipeline as w}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class _{_parser;_options={gfm:!0,breaks:!0,tables:!0,xhtml:!0,headerIds:!1};constructor(){m.use({tokenizer:{autolink:()=>null,url:()=>null},renderer:{checkbox(...e){return Object.getPrototypeOf(this).checkbox.call(this,...e).trimRight()},code(...e){return Object.getPrototypeOf(this).code.call(this,...e).replace(`
@@ -1,4 +1,4 @@
1
- import{Plugin as h,Command as M}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Widget as T,toWidget as P,findOptimalInsertionRange as k}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{global as w,first as x,logWarning as R,toArray as D,FocusTracker as C,KeystrokeHandler as F}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Dialog as U,ButtonView as S,MenuBarMenuListItemButtonView as L,CssTransitionDisablerMixin as B,IconView as A,Template as N,View as O,submitHandler as $,LabeledFieldView as H,createLabeledInputText as W}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconMedia as q,IconMediaPlaceholder as j}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{LivePosition as f,LiveRange as z}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Clipboard as G}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{Delete as b}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Undo as K}from"../../../../../@ckeditor_ckeditor5-undo@45.2.1/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";/**
1
+ import{Plugin as h,Command as M}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Widget as T,toWidget as P,findOptimalInsertionRange as k}from"../../../../../@ckeditor_ckeditor5-widget@45.2.2/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{global as w,first as x,logWarning as R,toArray as D,FocusTracker as C,KeystrokeHandler as F}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Dialog as U,ButtonView as S,MenuBarMenuListItemButtonView as L,CssTransitionDisablerMixin as B,IconView as A,Template as N,View as O,submitHandler as $,LabeledFieldView as H,createLabeledInputText as W}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconMedia as q,IconMediaPlaceholder as j}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{LivePosition as f,LiveRange as z}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Clipboard as G}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{Delete as b}from"../../../../../@ckeditor_ckeditor5-typing@45.2.2/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Undo as K}from"../../../../../@ckeditor_ckeditor5-undo@45.2.2/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  *//**
@@ -1,4 +1,4 @@
1
- import"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{keyCodes as r}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
1
+ import"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{keyCodes as r}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */r.arrowup,r.arrowdown,r.esc;r.enter,r.tab;
@@ -1,4 +1,4 @@
1
- import{Plugin as l,Command as d}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Widget as m,toWidget as p,findOptimalInsertionRange as k}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{IconPageBreak as B}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as f,MenuBarMenuListItemButtonView as h}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
1
+ import{Plugin as l,Command as d}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Widget as m,toWidget as p,findOptimalInsertionRange as k}from"../../../../../@ckeditor_ckeditor5-widget@45.2.2/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{IconPageBreak as B}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as f,MenuBarMenuListItemButtonView as h}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class P extends d{refresh(){const e=this.editor.model,t=e.schema,a=e.document.selection;this.isEnabled=b(a,t,e)}execute(){const e=this.editor.model;e.change(t=>{const a=t.createElement("pageBreak");e.insertObject(a,null,null,{setSelection:"after"})})}}function b(o,e,t){const a=E(o,t);return e.checkChild(a,"pageBreak")}function E(o,e){const a=k(o,e).start.parent;return a.isEmpty&&!a.is("element","$root")?a.parent:a}class v extends l{static get pluginName(){return"PageBreakEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,a=e.t,s=e.conversion;t.register("pageBreak",{inheritAllFrom:"$blockObject"}),s.for("dataDowncast").elementToStructure({model:"pageBreak",view:(r,{writer:n})=>n.createContainerElement("div",{class:"page-break",style:"page-break-after: always"},n.createContainerElement("span",{style:"display: none"}))}),s.for("editingDowncast").elementToStructure({model:"pageBreak",view:(r,{writer:n})=>{const c=a("Page break"),i=n.createContainerElement("div"),g=n.createRawElement("span",{class:"page-break__label"},function(u){u.innerText=a("Page break")});return n.addClass("page-break",i),n.insert(n.createPositionAt(i,0),g),y(i,n,c)}}),s.for("upcast").elementToElement({view:r=>{const n=r.getStyle("page-break-before")=="always",c=r.getStyle("page-break-after")=="always";if(!n&&!c)return null;if(r.childCount==1){const i=r.getChild(0);if(!i.is("element","span")||i.getStyle("display")!="none")return null}else if(r.childCount>1)return null;return{name:!0}},model:"pageBreak",converterPriority:"high"}),e.commands.add("pageBreak",new P(e))}}function y(o,e,t){return e.setCustomProperty("pageBreak",!0,o),p(o,e,{label:t})}class w extends l{static get pluginName(){return"PageBreakUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("pageBreak",()=>{const t=this._createButton(f);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:pageBreak",()=>this._createButton(h))}_createButton(e){const t=this.editor,a=t.locale,s=t.commands.get("pageBreak"),r=new e(t.locale),n=a.t;return r.set({label:n("Page break"),icon:B}),r.bind("isEnabled").to(s,"isEnabled"),this.listenTo(r,"execute",()=>{t.execute("pageBreak"),t.editing.view.focus()}),r}}class O extends l{static get requires(){return[v,w,m]}static get pluginName(){return"PageBreak"}static get isOfficialPlugin(){return!0}}export{O as PageBreak,v as PageBreakEditing,w as PageBreakUI};
@@ -1,4 +1,4 @@
1
- import{Plugin as h,Command as l}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{first as m}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
1
+ import{Plugin as h,Command as l}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{first as m}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class p extends l{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}refresh(){const e=this.editor.model,r=e.document,t=m(r.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&c(t,e.schema)}execute(e={}){const r=this.editor.model,t=r.document,a=e.selection||t.selection;r.canEditAt(a)&&r.change(n=>{const s=a.getSelectedBlocks();for(const i of s)!i.is("element","paragraph")&&c(i,r.schema)&&n.rename(i,"paragraph")})}}function c(o,e){return e.checkChild(o.parent,"paragraph")&&!e.isObject(o)}class u extends l{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}execute(e){const r=this.editor.model,t=e.attributes;let a=e.position;return r.canEditAt(a)?r.change(n=>{if(a=this._findPositionToInsertParagraph(a,n),!a)return null;const s=n.createElement("paragraph");return t&&r.schema.setAllowedAttributes(s,t,n),r.insertContent(s,a),n.setSelection(s,"in"),n.createPositionAt(s,0)}):null}_findPositionToInsertParagraph(e,r){const t=this.editor.model;if(t.schema.checkChild(e,"paragraph"))return e;const a=t.schema.findAllowedParent(e,"paragraph");if(!a)return null;const n=e.parent,s=t.schema.checkChild(n,"$text");return n.isEmpty||s&&e.isAtEnd?t.createPositionAfter(n):!n.isEmpty&&s&&e.isAtStart?t.createPositionBefore(n):r.split(e,a).position}}class d extends h{static get pluginName(){return"Paragraph"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,r=e.model;e.commands.add("paragraph",new p(e)),e.commands.add("insertParagraph",new u(e)),r.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(t,{writer:a})=>!d.paragraphLikeElements.has(t.name)||t.isEmpty?null:a.createElement("paragraph"),view:/.+/,converterPriority:"low"})}static paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"])}export{d as Paragraph};
@@ -1,4 +1,4 @@
1
- import{Plugin as w}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{ClipboardPipeline as M}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{UpcastWriter as y,ViewDocument as A,DomConverter as L,Matcher as b}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
1
+ import{Plugin as w}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{ClipboardPipeline as M}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.2/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{UpcastWriter as y,ViewDocument as A,DomConverter as L,Matcher as b}from"../../../../../@ckeditor_ckeditor5-engine@45.2.2/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  *//**
@@ -1,4 +1,4 @@
1
- import{Plugin as a,Command as u}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconRemoveFormat as g}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as l,MenuBarMenuListItemButtonView as d}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{first as c}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
1
+ import{Plugin as a,Command as u}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconRemoveFormat as g}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as l,MenuBarMenuListItemButtonView as d}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{first as c}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */const n="removeFormat";class f extends a{static get pluginName(){return"RemoveFormatUI"}static get isOfficialPlugin(){return!0}init(){const t=this.editor;t.ui.componentFactory.add(n,()=>{const e=this._createButton(l);return e.set({tooltip:!0}),e}),t.ui.componentFactory.add(`menuBar:${n}`,()=>this._createButton(d))}_createButton(t){const e=this.editor,i=e.locale,o=e.commands.get(n),r=new t(e.locale),m=i.t;return r.set({label:m("Remove Format"),icon:g}),r.bind("isEnabled").to(o,"isEnabled"),this.listenTo(r,"execute",()=>{e.execute(n),e.editing.view.focus()}),r}}class F extends u{refresh(){const t=this.editor.model;this.isEnabled=!!c(this._getFormattingItems(t.document.selection,t.schema))}execute(){const t=this.editor.model,e=t.schema;t.change(i=>{for(const o of this._getFormattingItems(t.document.selection,e))if(o.is("selection"))for(const r of this._getFormattingAttributes(o,e))i.removeSelectionAttribute(r);else{const r=i.createRangeOn(o);for(const m of this._getFormattingAttributes(o,e))i.removeAttribute(m,r)}})}*_getFormattingItems(t,e){const i=o=>!!c(this._getFormattingAttributes(o,e));for(const o of t.getRanges())for(const r of o.getItems())!e.isBlock(r)&&i(r)&&(yield r);for(const o of t.getSelectedBlocks())i(o)&&(yield o);i(t)&&(yield t)}*_getFormattingAttributes(t,e){for(const[i]of t.getAttributes()){const o=e.getAttributeProperties(i);o&&o.isFormatting&&(yield i)}}}class b extends a{static get pluginName(){return"RemoveFormatEditing"}static get isOfficialPlugin(){return!0}init(){const t=this.editor;t.commands.add("removeFormat",new F(t))}}class _ extends a{static get requires(){return[b,f]}static get pluginName(){return"RemoveFormat"}static get isOfficialPlugin(){return!0}}export{_ as RemoveFormat,b as RemoveFormatEditing,f as RemoveFormatUI};
@@ -1,4 +1,4 @@
1
- import{Plugin as o,Command as a}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{getCode as u,parseKeystroke as d}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{IconSelectAll as m}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as g,MenuBarMenuListItemButtonView as f}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
1
+ import{Plugin as o,Command as a}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{getCode as u,parseKeystroke as d}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{IconSelectAll as m}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as g,MenuBarMenuListItemButtonView as f}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class A extends a{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let i=e.schema.getLimitElement(t);if(t.containsEntireContent(i)||!r(e.schema,i))do if(i=i.parent,!i)return;while(!r(e.schema,i));e.change(n=>{n.setSelection(i,"in")})}}function r(l,e){return l.isLimit(e)&&(l.checkChild(e,"$text")||l.checkChild(e,"paragraph"))}const p=d("Ctrl+A");class h extends o{static get pluginName(){return"SelectAllEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,n=e.editing.view.document;e.commands.add("selectAll",new A(e)),this.listenTo(n,"keydown",(c,s)=>{u(s)===p&&(e.execute("selectAll"),s.preventDefault())}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Select all"),keystroke:"CTRL+A"}]})}}class S extends o{static get pluginName(){return"SelectAllUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",()=>{const t=this._createButton(g);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:selectAll",()=>this._createButton(f))}_createButton(e){const t=this.editor,i=t.locale,n=t.commands.get("selectAll"),c=new e(t.locale),s=i.t;return c.set({label:s("Select all"),icon:m,keystroke:"Ctrl+A"}),c.bind("isEnabled").to(n,"isEnabled"),this.listenTo(c,"execute",()=>{t.execute("selectAll"),t.editing.view.focus()}),c}}class E extends o{static get requires(){return[h,S]}static get pluginName(){return"SelectAll"}static get isOfficialPlugin(){return!0}}export{E as SelectAll,h as SelectAllEditing,S as SelectAllUI};
@@ -1,4 +1,4 @@
1
- import{Plugin as c,Command as u}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconShowBlocks as d}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as h,MenuBarMenuListItemButtonView as m}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
1
+ import{Plugin as c,Command as u}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconShowBlocks as d}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as h,MenuBarMenuListItemButtonView as m}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */class w extends u{constructor(t){super(t),this.affectsData=!1,this.value=!1}execute(){const t="ck-show-blocks",e=this.editor.editing.view;e.change(s=>{for(const o of e.document.roots)o.hasClass(t)?(s.removeClass(t,o),this.value=!1):(s.addClass(t,o),this.value=!0)})}}class g extends c{static get pluginName(){return"ShowBlocksEditing"}static get isOfficialPlugin(){return!0}init(){const{editor:t}=this;t.commands.add("showBlocks",new w(t))}}class B extends c{static get pluginName(){return"ShowBlocksUI"}static get isOfficialPlugin(){return!0}init(){const t=this.editor;t.ui.componentFactory.add("showBlocks",()=>{const e=this._createButton(h);return e.set({tooltip:!0,icon:d}),e}),t.ui.componentFactory.add("menuBar:showBlocks",()=>this._createButton(m))}_createButton(t){const e=this.editor,s=e.locale,o=e.commands.get("showBlocks"),i=new t(s),a=s.t;return i.set({label:a("Show blocks"),isToggleable:!0,role:"menuitemcheckbox"}),i.bind("isEnabled").to(o),i.bind("isOn").to(o,"value",o,"isEnabled",(l,r)=>l&&r),this.listenTo(i,"execute",()=>{e.execute("showBlocks"),e.editing.view.focus()}),i}}class S extends c{static get pluginName(){return"ShowBlocks"}static get isOfficialPlugin(){return!0}static get requires(){return[g,B]}}export{S as ShowBlocks,w as ShowBlocksCommand,g as ShowBlocksEditing,B as ShowBlocksUI};
@@ -1,4 +1,4 @@
1
- import{Plugin as g,PendingActions as l}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconSource as f}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as p,MenuBarMenuListItemButtonView as E}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{ElementReplacer as b,CKEditorError as _,createElement as u,formatHtml as w}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
1
+ import{Plugin as g,PendingActions as l}from"../../../../../@ckeditor_ckeditor5-core@45.2.2/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{IconSource as f}from"../../../../../@ckeditor_ckeditor5-icons@45.2.2/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ButtonView as p,MenuBarMenuListItemButtonView as E}from"../../../../../@ckeditor_ckeditor5-ui@45.2.2/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{ElementReplacer as b,CKEditorError as _,createElement as u,formatHtml as w}from"../../../../../@ckeditor_ckeditor5-utils@45.2.2/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */const d="SourceEditingMode";class M extends g{static get pluginName(){return"SourceEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[l]}_elementReplacer;_replacedRoots;_dataFromRoots;constructor(e){super(e),this.set("isSourceEditingMode",!1),this._elementReplacer=new b,this._replacedRoots=new Map,this._dataFromRoots=new Map,e.config.define("sourceEditing.allowCollaborationFeatures",!1)}init(){this._checkCompatibility();const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("sourceEditing",()=>{const i=this._createButton(p);return i.set({label:t("Source"),icon:f,tooltip:!0,class:"ck-source-editing-button"}),i}),e.ui.componentFactory.add("menuBar:sourceEditing",()=>{const i=this._createButton(E);return i.set({label:t("Show source"),role:"menuitemcheckbox"}),i}),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",(i,o,n)=>{n?(this._hideVisibleDialog(),this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())}),this.on("change:isEnabled",(i,o,n)=>this._handleReadOnlyMode(!n)),this.listenTo(e,"change:isReadOnly",(i,o,n)=>this._handleReadOnlyMode(n))),e.data.on("get",()=>{this.isSourceEditingMode&&this.updateEditorData()},{priority:"high"})}updateEditorData(){const e=this.editor,t={};for(const[i,o]of this._replacedRoots){const n=this._dataFromRoots.get(i),s=o.dataset.value;n!==s&&(t[i]=s,this._dataFromRoots.set(i,s))}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 _("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,i=e.model;i.change(o=>{o.setSelection(null),o.removeSelectionAttribute(i.document.selection.getAttributeKeys())});for(const[o,n]of t.domRoots){const s=R(e.data.get({rootName:o})),r=u(n.ownerDocument,"textarea",{rows:"1","aria-label":"Source code editing area"}),c=u(n.ownerDocument,"div",{class:"ck-source-editing-area","data-value":s},[r]);r.value=s,r.setSelectionRange(0,0),r.addEventListener("input",()=>{c.dataset.value=r.value,e.ui.update()}),t.change(h=>{const m=t.document.getRoot(o);h.addClass("ck-hidden",m)}),e.ui.setEditableElement("sourceEditing:"+o,r),this._replacedRoots.set(o,c),this._elementReplacer.replace(n,c),this._dataFromRoots.set(o,s)}this._hideDocumentOutline(),this._refreshAnnotationsVisibility(),this._focusSourceEditing()}_hideSourceEditing(){const t=this.editor.editing.view;this.updateEditorData(),t.change(i=>{for(const[o]of this._replacedRoots)i.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(),i=t.querySelector("textarea");e.editing.view.document.isFocused=!1,i.focus()}_disableCommands(){const e=this.editor;for(const t of e.commands.commands())t.forceDisabled(d);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").forceDisabled(d)}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled(d);e.plugins.has("CommentsArchiveUI")&&e.plugins.get("CommentsArchiveUI").clearForceDisabled(d)}_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,i=new e(t.locale);return i.set({withText:!0,isToggleable:!0}),i.bind("isOn").to(this,"isSourceEditingMode"),i.bind("isEnabled").to(this,"isEnabled",t,"isReadOnly",t.plugins.get(l),"hasAny",(o,n,s)=>!(!o||n||s)),this.listenTo(i,"execute",()=>{this.isSourceEditingMode=!this.isSourceEditingMode}),i}}function R(a){return S(a)?w(a):a}function S(a){return a.startsWith("<")}export{M as SourceEditing};