1import{Accessibility as ro,Command as _,CommandCollection as so,Context as ao,ContextPlugin as lo,EditingKeystrokeHandler as co,Editor as mo,ElementApiMixin as uo,MultiCommand as go,PendingActions as po,Plugin as f,_DEFAULT_ACCESSIBILITY_GROUP_ID as fo,_getEditorUsageData as ho,attachToForm as Io,secureSourceElement as wo}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-core$dist$index.js.js";import{Clipboard as _t,ClipboardMarkersUtils as xo,ClipboardObserver as yo,ClipboardPipeline as G,DragDrop as Eo,DragDropBlockToolbar as Co,DragDropTarget as vo,PastePlainText as So,_ClipboardLineView as Vo,_DragDrop as ko,_DragDropBlockToolbar as Bo,_DragDropTarget as To,_normalizeClipboardData as Ao,plainTextToHtml as Uo,viewToPlainText as Ro}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-clipboard$dist$index.js.js";import{AttributeOperation as Do,Batch as Mo,BubblingEmitterMixin as Lo,BubblingEventInfo as Fo,ClickObserver as No,CompositionObserver as zo,Conversion as Wo,ConversionHelpers as Ho,DataController as jo,Differ as qo,DomEventObserver as $o,DowncastHelpers as Go,EditingController as Ko,EditingView as Jo,FakeSelectionObserver as Qo,FocusObserver as Yo,History as Zo,HtmlDataProcessor as Xo,InputObserver as en,InsertOperation as tn,KeyObserver as on,MarkerCollection as nn,MarkerOperation as rn,Matcher as sn,MergeOperation as an,Model as ln,ModelDocument as cn,ModelDocumentFragment as mn,ModelDocumentSelection as un,ModelElement as xt,ModelLivePosition as K,ModelLiveRange as yt,ModelNode as gn,ModelNodeList as dn,ModelPosition as pn,ModelRange as fn,ModelRootElement as hn,ModelSchemaContext as In,ModelSelection as wn,ModelText as bn,ModelTextProxy as _n,ModelTreeWalker as xn,ModelTypeCheckable as yn,ModelWriter as En,MouseObserver as Cn,MoveOperation as vn,MutationObserver as Sn,NoOperation as Vn,Observer as Et,OperationFactory as kn,RenameOperation as Bn,RootAttributeOperation as Tn,RootOperation as An,SelectionObserver as Un,SplitOperation as Rn,StylesMap as Pn,StylesProcessor as On,TabObserver as Dn,TouchObserver as Mn,UpcastHelpers as Ln,UpcastWriter as Fn,ViewAttributeElement as Nn,ViewContainerElement as zn,ViewDataTransfer as Wn,ViewDocument as Hn,ViewDocumentDomEventData as jn,ViewDocumentFragment as qn,ViewDocumentSelection as $n,ViewDomConverter as Gn,ViewDowncastWriter as Kn,ViewEditableElement as Jn,ViewElement as Qn,ViewEmptyElement as Yn,ViewNode as Zn,ViewPosition as Xn,ViewRange as er,ViewRawElement as tr,ViewRenderer as ir,ViewRootEditableElement as or,ViewSelection as nr,ViewText as rr,ViewTextProxy as sr,ViewTokenList as ar,ViewTreeWalker as lr,ViewTypeCheckable as cr,ViewUIElement as mr,ViewUpcastWriter as J,XmlDataProcessor as ur,_DataProcessorBasicHtmlWriter as gr,_DetachOperation as dr,_MapperCache as pr,_OperationReplayer as fr,_VIEW_BR_FILLER as hr,_VIEW_INLINE_FILLER as Ir,_VIEW_INLINE_FILLER_LENGTH as wr,_VIEW_MARKED_NBSP_FILLER as br,_VIEW_NBSP_FILLER as _r,_ViewElementConversionConsumables as xr,_autoParagraphEmptyModelRoots as yr,_convertMapToStringifiedObject as Er,_convertMapToTags as Cr,_deleteModelContent as vr,_downcastCleanSelection as Sr,_downcastConvertCollapsedSelection as Vr,_downcastConvertRangeSelection as kr,_downcastCreateViewElementFromDowncastHighlightDescriptor as Br,_downcastInsertAttributesAndChildren as Tr,_downcastInsertElement as Ar,_downcastInsertStructure as Ur,_downcastInsertText as Rr,_downcastInsertUIElement as Pr,_downcastRemove as Or,_downcastWrap as Dr,_dumpTrees as Mr,_getDataWithoutViewFiller as Lr,_getModelData as Fr,_getModelNodeAfterPosition as Nr,_getModelNodeBeforePosition as zr,_getModelTextNodeAtPosition as Wr,_getSelectedModelContent as Hr,_getViewData as jr,_initDocumentDumping as qr,_injectModelSelectionPostFixer as $r,_injectViewQuirksHandling as Gr,_injectViewUIElementHandling as Kr,_insertIntoModelNodeList as Jr,_insertModelContent as Qr,_insertModelObject as Yr,_isInlineViewFiller as Zr,_isParagraphableModelNode as Xr,_isViewPatternMatched as es,_logDocument as ts,_mergeIntersectingModelRanges as is,_modifyModelSelection as os,_moveInModelNodeList as ns,_normalizeConversionConsumables as rs,_normalizeInModelNodeList as ss,_operationTransform as as,_parseModel as ls,_parseView as cs,_removeFromModelNodeList as ms,_setAttributeInModelNodeList as us,_setModelData as g
1s,_setViewData as ds,_startsWithViewFiller as ps,_stringifyModel as fs,_stringifyView as hs,_tryFixingModelRange as Is,_upcastConvertSelectionChange as ws,_upcastConvertText as bs,_upcastConvertToModelFragment as _s,_wrapInModelParagraph as xs,addBackgroundStylesRules as ys,addBorderStylesRules as Es,addMarginStylesRules as Cs,addPaddingStylesRules as vs,autoParagraphEmptyRoots as Ss,disableViewPlaceholder as Vs,enableViewPlaceholder as Ct,getBoxSidesStyleShorthandValue as ks,getBoxSidesStyleValueReducer as Bs,getBoxSidesStyleValues as Ts,getPositionStyleShorthandNormalizer as As,getShorthandStylesValues as Us,getViewFillerOffset as Rs,hideViewPlaceholder as Ps,isAttachmentStyleValue as Os,isColorStyleValue as Ds,isLengthStyleValue as Ms,isLineStyleValue as Ls,isParagraphable as Fs,isPercentageStyleValue as Ns,isPositionStyleValue as zs,isRepeatStyleValue as Ws,isURLStyleValue as Hs,needsViewPlaceholder as js,showViewPlaceholder as qs,transformOperationSets as $s,wrapInParagraph as Gs}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-engine$dist$index.js.js";import{RedoCommand as Qs,Undo as vt,UndoCommand as Ys,UndoEditing as Zs,UndoRedoBaseCommand as Xs,UndoUI as ea}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-undo$dist$index.js.js";import{Delete as St,DeleteCommand as oa,Input as na,InsertTextCommand as ra,TextTransformation as sa,TextWatcher as aa,TwoStepCaretMovement as la,Typing as ca,TypingChangeBuffer as ma,_DeleteObserver as ua,findAttributeRange as ga,findAttributeRangeBound as da,getLastTextLine as pa,inlineHighlight as fa}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-typing$dist$index.js.js";import{CKEditorError as Vt,Collection as kt,Config as wa,DOCUMENTATION_URL as ba,DomEmitterMixin as Bt,ElementReplacer as _a,EmitterMixin as xa,EventInfo as ya,FocusTracker as Q,KeystrokeHandler as k,Locale as Ea,ObservableMixin as Ca,Rect as Tt,ResizeObserver as va,_clearTranslations as Sa,_getEmitterId as Va,_getEmitterListenedTo as ka,_getUserAgent as Ba,_isAndroid as Ta,_isBlink as Aa,_isGecko as Ua,_isMac as Ra,_isMediaForcedColors as Pa,_isMotionReduced as Oa,_isRegExpUnicodePropertySupported as Da,_isSafari as Ma,_isWindows as La,_isiOS as Fa,_setEmitterId as Na,_translate as za,_unifyTranslations as Wa,abortableDebounce as Ha,add as ja,areConnectedThroughProperties as qa,collectStylesheets as $a,compareArrays as Ga,count as Ka,crc32 as Ja,createElement as Qa,delay as Ya,diff as Za,diffToChanges as Xa,env as At,exponentialDelay as el,fastDiff as tl,findClosestScrollableAncestor as il,first as B,formatHtml as ol,getAncestors as nl,getBorderWidths as rl,getCode as sl,getCommonAncestor as al,getDataFromElement as ll,getEnvKeystrokeText as cl,getLanguageDirection as ml,getLocalizedArrowKeyCodeDirection as ul,getOptimalPosition as gl,getPositionedAncestor as dl,getRangeFromMouseEvent as pl,getVisualViewportOffset as fl,global as T,indexOf as hl,insertAt as Il,insertToPriorityArray as wl,isArrowKeyCode as bl,isCombiningMark as _l,isComment as xl,isForwardArrowKeyCode as yl,isHighSurrogateHalf as El,isInsideCombinedSymbol as Cl,isInsideEmojiSequence as vl,isInsideSurrogatePair as Sl,isIterable as Vl,isLowSurrogateHalf as kl,isNode as Bl,isRange as Tl,isText as Al,isValidAttributeName as Ul,isViewWithFocusTracker as Rl,isVisible as Pl,isWindow as Ol,keyCodes as Dl,logError as Ml,logWarning as x,mapsEqual as Ll,nth as Fl,objectToMap as Nl,parseBase64EncodedObject as zl,parseKeystroke as Wl,priorities as Hl,releaseDate as jl,remove as ql,retry as $l,scrollAncestorsToShowTarget as Gl,scrollViewportToShowTarget as Kl,setDataInElement as Jl,spliceArray as Ql,spy as Yl,toArray as De,toMap as Zl,toUnit as Xl,uid as ec,version as tc,wait as ic}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-utils$dist$index.js.js";import{WIDGET_CLASS_NAME as rc,WIDGET_SELECTED_CLASS_NAME as sc,Widget as Me,WidgetHighlightStack as ac,WidgetResize as Y,WidgetResizeState as lc,WidgetResizer as cc,WidgetToolbarRepository as Le,WidgetTypeAround as mc,_WIDGET_TYPE_AROUND_SELECTION_ATTRIBUTE as uc,_WidgetSizeView as gc,_getClosestWidgetTypeAroundDomButton as dc,_getClosestWidgetViewElement as pc,_getWidgetTypeAroundButtonPosition as fc,_getWidgetTypeAroundFakeCaretPosition as hc,calculateResizeHostAncestorWidth as Fe,calculateResizeHostPercentageWidth as Ic,findOptimalInsertionRange as Ut,getLabel as wc,isTypeAroundWidget as bc,isWidget as Rt,setHighlightHandling as _c,setLabel as xc,toWidget as Pt,toWidgetEditable as Ot,verticalWidget
1NavigationHandler as yc,viewToModelPositionOutsideModelElement as Ec}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-widget$dist$index.js.js";import{AccessibilityHelp as Sc,AccessibilityHelpContentView as Vc,AriaLiveAnnouncer as kc,AriaLiveAnnouncerPoliteness as Bc,AriaLiveAnnouncerRegionView as Tc,AriaLiveAnnouncerView as Ac,AutocompleteView as Uc,Badge as Rc,BalloonPanelView as Dt,BalloonToolbar as Pc,BlockButtonView as Oc,BlockToolbar as Dc,BodyCollection as Mc,BoxedEditorUIView as Lc,ButtonLabelView as Fc,ButtonLabelWithHighlightView as Nc,ButtonView as w,CollapsibleView as Mt,ColorGridView as zc,ColorGridsFragmentView as Wc,ColorPickerFragmentView as Hc,ColorPickerInputRowView as jc,ColorPickerView as qc,ColorSelectorView as $c,ColorTileView as Gc,ComponentFactory as Kc,ContextualBalloon as Ne,CssTransitionDisablerMixin as ze,DefaultMenuBarItems as Jc,Dialog as Lt,DialogActionsView as Qc,DialogContentView as Yc,DialogView as Zc,DialogViewPosition as Xc,DocumentColorCollection as em,DraggableViewMixin as tm,DropdownButtonView as Ft,DropdownMenuButtonView as im,DropdownMenuListItemButtonView as om,DropdownMenuListItemView as nm,DropdownMenuListView as rm,DropdownMenuNestedMenuPanelView as sm,DropdownMenuNestedMenuView as am,DropdownMenuPanelPositioningFunctions as lm,DropdownMenuRootListView as cm,DropdownPanelView as mm,DropdownView as um,EditableUIView as gm,EditorUI as dm,EditorUIView as pm,EvaluationBadge as fm,FileDialogButtonView as We,FileDialogListItemButtonView as hm,FileDialogViewMixin as Im,FocusCycler as Z,FormHeaderView as He,FormRowView as je,HighlightedTextView as wm,IconView as bm,IframeView as _m,InlineEditableUIView as xm,InputBase as ym,InputNumberView as Em,InputTextView as Cm,InputView as vm,ItemsView as Sm,LabelView as Vm,LabelWithHighlightView as km,LabeledFieldView as X,LabeledInputView as Bm,ListItemButtonView as Tm,ListItemGroupView as Am,ListItemView as Um,ListSeparatorView as Rm,ListView as Pm,MenuBarMenuButtonView as Om,MenuBarMenuListItemButtonView as Nt,MenuBarMenuListItemFileDialogButtonView as zt,MenuBarMenuListItemView as Wt,MenuBarMenuListView as Ht,MenuBarMenuPanelView as Dm,MenuBarMenuView as jt,MenuBarView as Mm,NESTED_TOOLBAR_ICONS as Lm,Notification as qe,PoweredBy as Fm,SearchInfoView as Nm,SearchResultsView as zm,SearchTextView as Wm,SliderView as Hm,SpinnerView as jm,SplitButtonView as $e,StickyPanelView as qm,SwitchButtonView as $m,Template as Gm,TextareaView as Km,ToolbarLineBreakView as Jm,ToolbarSeparatorView as Qm,ToolbarView as Ym,TooltipManager as Zm,UIModel as Ge,View as A,ViewCollection as ee,Vie
vendor: 31,260 bytes, line 1
1wModel as Xm,_CheckIconHolderView as eu,_CollapsibleView as tu,_ContextualBalloonRotatorView as iu,_DropdownMenuBehaviors as ou,_DropdownRootMenuBehaviors as nu,_MenuBarBehaviors as ru,_MenuBarMenuBehaviors as su,_MenuBarMenuViewPanelPositioningFunctions as au,_SearchInfoView as lu,_SearchTextQueryView as cu,_TemplateBinding as mu,_TemplateIfBinding as uu,_TemplateToBinding as gu,_convertColor as du,_convertColorToHex as pu,_preventUiViewDefault as fu,_processMenuBarConfig as hu,_registerCustomElement as Iu,_tryNormalizeHexColor as wu,addKeyboardHandlingForGrid as bu,addListToDropdown as qt,addMenuToDropdown as _u,addToolbarToDropdown as $t,clickOutsideHandler as Ke,createDropdown as te,createLabeledDropdown as xu,createLabeledInputNumber as Gt,createLabeledInputText as Je,createLabeledTextarea as yu,filterGroupAndItemNames as Eu,focusChildOnDropdownOpen as Cu,getLocalizedColorOptions as vu,isFocusable as Su,isViewWithFocusCycler as Vu,normalizeColorOptions as ku,normalizeMenuBarConfig as Bu,normalizeSingleColorDefinition as Tu,normalizeToolbarConfig as Au,submitHandler as U}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ui$dist$index.js.js";import{IconAccessibility as Pu,IconAddComment as Ou,IconAlignBottom as Du,IconAlignCenter as Mu,IconAlignJustify as Lu,IconAlignLeft as Fu,IconAlignMiddle as Nu,IconAlignRight as zu,IconAlignTop as Wu,IconArrowDown as Hu,IconArrowUp as ju,IconBold as qu,IconBookmark as $u,IconBookmarkInline as Gu,IconBookmarkMedium as Ku,IconBookmarkSmall as Ju,IconBrowseFiles as Qu,IconBulletedList as Yu,IconCancel as Zu,IconCaption as Kt,IconCaseChange as Xu,IconCheck as eg,IconChevronDown as tg,IconChevronUp as ig,IconCkboxImageEdit as og,IconCode as ng,IconCodeBlock as rg,IconCog as sg,IconColorPalette as ag,IconColorTileCheck as lg,IconCommentsArchive as cg,IconContentLock as mg,IconContentUnlock as ug,IconCopy as gg,IconDragHandle as dg,IconDragIndicator as pg,IconDropbox as fg,IconDropdownArrow as hg,IconEditComment as Ig,IconEmoji as wg,IconEraser as bg,IconError as _g,IconExportPdf as xg,IconExportWord as yg,IconFacebook as Eg,IconFindReplace as Cg,IconFontBackground as vg,IconFontColor as Sg,IconFontFamily as Vg,IconFontSize as kg,IconFullscreenEnter as Bg,IconFullscreenLeave as Tg,IconGoogleDrive as Ag,IconGooglePhotos as Ug,IconHeading1 as Rg,IconHeading2 as Pg,IconHeading3 as Og,IconHeading4 as Dg,IconHeading5 as Mg,IconHeading6 as Lg,IconHistory as Fg,IconHorizontalLine as Ng,IconHtml as zg,IconImage as Jt,IconImageAssetManager as Wg,IconImageUpload as Qt,IconImageUrl as Yt,IconImportExport as Hg,IconImportWord as jg,IconIndent as qg,IconInsertMergeField as $g,IconItalic as Gg,IconLegalStyleList as Kg,IconLineHeight as Jg,IconLink as Qg,IconListStyleCircle as Yg,IconListStyleDecimal as Zg,IconListStyleDecimalLeadingZero as Xg,IconListStyleDisc as ed,IconListStyleLowerLatin as td,IconListStyleLowerRoman as id,IconListStyleSquare as od,IconListStyleUpperLatin as nd,IconListStyleUpperRoman as rd,IconLocal as sd,IconLoupe as ad,IconLowVision as ld,IconMagicWand as cd,IconMarker as md,IconMedia as ud,IconMediaPlaceholder as gd,IconMultiLevelList as dd,IconNextArrow as pd,IconNotification as fd,IconNumberedList as hd,IconObjectCenter as ie,IconObjectFullWidth as Zt,IconObjectInline as Qe,IconObjectInlineLeft as Ye,IconObjectInlineRight as oe,IconObjectLeft as Ze,IconObjectRight as Xe,IconObjectSizeCustom as Xt,IconObjectSizeFull as ei,IconObjectSizeLarge as ti,IconObjectSizeMedium as ii,IconObjectSizeSmall as oi,IconOneDrive as Id,IconOutdent as wd,IconPageBreak as bd,IconPaginationExample as _d,IconPaintRoller as xd,IconPaintRollerCursorDefault as yd,IconPaintRollerCursorText as Ed,IconParagraph as Cd,IconPen as vd,IconPencil as Sd,IconPilcrow as Vd,IconPlay as kd,IconPlus as Bd,IconPreviewMergeFields as Td,IconPreviousArrow as et,IconPrint as Ad,IconProjectLogo as Ud,IconQuote as Rd,IconRedo as Pd,IconRemove as Od,IconRemoveComment as Dd,IconRemoveFormat as Md,IconReturnArrow as Ld,IconRevisionHistory as Fd,IconRobotPencil as Nd,IconSelectAll as zd,IconSettings as Wd,IconShowBlocks as Hd,IconSource as jd,IconSpecialCharacters as qd,IconStrikethrough as $d,IconSubmit as Gd,IconSubscript as Kd,IconSuperscript as Jd,IconTable as Qd,IconTableCellProperties as Yd,IconTableColumn as Zd,IconTableLayout as Xd,IconTableMergeCell as ep,IconTableOfContents as tp,IconTableProperties as ip,IconTableRow as op,IconTemplate as np,IconTemplateGeneric as rp,IconText as sp,IconTextAlternative as ni,IconThreeVerticalDots as ap,IconTodoList as lp,IconTrackChanges as cp,IconTrackChangesAccept as mp,IconTrackChangesDiscard as up,IconUnderline as gp,IconUndo as dp,IconUnlink as pp,IconUploadcareImageEdit as fp,IconUploadcareImageUpload as hp,IconUploadcareLink as Ip,IconUser as wp,IconWarning as bp}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-icons$dist$index.js.js";import{Base64UploadAdapter as yp,FileReader as Ep,FileRepository as E,SimpleUploadAdapter as Cp}from"../../../frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-upload$dist$index.js.js";function ne(s){return s!==null&&(typeof s=="object"||typeof s=="function")}function C(s){return s}function gi(s){return s.createContainerElement("span",{class:"image-inline"},s.createEmptyElement("img"))}function ot(s){return s.createContainerElement("figure",{class:"image"},[s.createEmptyElement("img"),s.createSlot("children")])}function dt(s,e){let t=s.plugins.get("ImageUtils"),i=s.plugins.has("ImageInlineEditing")&&s.plugins.has("ImageBlockEditing");return r=>t.isInlineImageView(r)?i&&(r.getStyle("display")=="block"||r.findAncestor(t.isBlockImageView)?"imageBlock":"imageInline")!==e?null:o(r):null;function o(r){let n={name:!0};return r.hasAttribute("src")&&(n.attributes=["src"]),n}}function Pe(s,e){let t=B(e.getSelectedBlocks());return!t||s.isObject(t)||t.isEmpty&&t.name!="listItem"?"imageBlock":"imageInline"}function P(s){return s&&s.endsWith("px")?parseInt(s):null}function O(s){let e=P(s.getStyle("width")),t=P(s.getStyle("height"));return!!(e&&t)}var Ui=/^(image|image-inline)$/,h=class extends f{_domEmitter=new(Bt());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,o={}){let r=this.editor,n=r.model,a=n.document.selection,l=di(r,t||a,i);e={...Object.fromEntries(a.getAttributes()),...e};for(let c in e)n.schema.checkAttribute(l,c)||delete e[c];return n.change(c=>{let{setImageSizes:m=!0}=o,u=c.createElement(l,e);return n.insertObject(u,t,null,{setSelection:"on",findOptimalPosition:!t&&l!="imageInline"?"auto":void 0}),u.parent?(m&&this.setImageNaturalSizeAttributes(u),u):null})}setImageNaturalSizeAttributes(e){let t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change(i=>{let o=new T.window.Image;this._domEmitter.listenTo(o,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(i.batch,r=>{r.setAttribute("width",o.naturalWidth,e),r.setAttribute("height",o.naturalHeight,e)}),this._domEmitter.stopListening(o,"load")}),o.src=t}))}getClosestSelectedImageWidget(e){let t=e.getFirstPosition();if(!t)return null;let i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let o=t.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(e){let t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:Ui})}isImageAllowed(){let t=this.editor.model.document.selection;return Ri(this.editor,t)&&Pi(t)}toImageWidget(e,t,i){return t.setCustomProperty("image",!0,e),Pt(e,t,{label:()=>{let n=this.findViewImgElement(e).getAttribute("alt");return n?`${n} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&Rt(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;let t=this.editor.editing.view;for(let{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}destroy(){return this._domEmitter.stopListening(),super.destroy()}};function Ri(s,e){if(di(s,e,null)=="imageBlock"){let i=Oi(e,s.model);if(s.model.schema.checkChild(i,"imageBlock"))return!0}else if(s.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}function Pi(s){return[...s.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}function Oi(s,e){let i=Ut(s,e).start.parent;return i.isEmpty&&!i.is("element","$root")?i.parent:i}function di(s,e,t){let i=s.model.schema,o=s.config.get("image.insert.type");return s.plugins.has("ImageBlockEditing")?s.plugins.has("ImageInlineEditing")?t||(o==="inline"?"imageInline":o!=="auto"?"imageBlock":e.is("selection")?Pe(i,e):i.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}var Di=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)),nt=class extends f{static get requires(){return[_t,h,vt,St]}static get pluginName(){return"AutoImage"}static get isOfficialPlugin(){return!0}_timeoutId;_positionToInsert;constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){let e=this.editor,t=e.model.document,i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",()=>{let o=t.selection.getFirstRange(),r=K.fromPosition(o.start);r.stickiness="toPrevious";let n=K.fromPosition(o.end);n.stickiness="toNext",t.once("change:data",()=>{this._embedImageBetweenPositions(r,n),r.detach(),n.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(T.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedImageBetweenPositions(e,t){let i=this.editor,o=new yt(e,t),r=o.getWalker({ignoreElementEnd:!0}),n=Object.fromEntries(i.model.document.selection.getAttributes()),a=this.editor.plugins.get("ImageUtils"),l="";for(let c of r)c.item.is("$textProxy")&&(l+=c.item.data);if(l=l.trim(),!l.match(Di)){o.detach();return}this._positionToInsert=K.fromPosition(e),this._timeoutId=setTimeout(()=>{if(!i.commands.get("insertImage").isEnabled){o.detach();return}i.model.change(u=>{this._timeoutId=null,u.remove(o),o.detach();let g;this._positionToInsert.root.rootName!=="$graveyard"&&(g=this._positionToInsert.toPosition()),a.insertImage({...n,src:l},g),this._positionToInsert.detach(),this._positionToInsert=null}),i.plugins.get("Delete").requestUndoOnBackspace()},100)}},se=class extends _{refresh(){let 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){let t=this.editor,i=t.plugins.get("ImageUtils"),o=t.model,r=i.getClosestSelectedImageElement(o.document.selection);o.change(n=>{n.setAttribute("alt",e.newValue,r)})}},ae=class extends f{static get requires(){return[h]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new se(this.editor))}},le=class extends A{focusTracker;keystrokes;labeledInput;backButtonView;saveButtonView;children;_focusables;_focusCycler;constructor(e){super(e),this.focusTracker=new Q,this.keystrokes=new k,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new je(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new ee,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(),U({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(){let e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:et,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){let e=this.locale.t,t=new w(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){let e=this.locale.t,t=new He(this.locale,{label:e("Text Alternative")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){let e=this.locale.t,t=new X(this.locale,Je);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}};function pi(s){let e=s.plugins.get("ContextualBalloon");if(s.plugins.get("ImageUtils").getClosestSelectedImageWidget(s.editing.view.document.selection)){let i=Oe(s);e.updatePosition(i)}}function Oe(s){let e=s.editing.view,t=Dt.defaultPositions,i=s.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]}}var ce=class extends f{_balloon;_form;static get requires(){return[Ne]}static get pluginName(){return"ImageTextAlternativeUI"}static get isOfficialPlugin(){return!0}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){let e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",i=>{let o=e.commands.get("imageTextAlternative"),r=new w(i);return r.set({label:t("Change image text alternative"),icon:ni,tooltip:!0}),r.bind("isEnabled").to(o,"isEnabled"),r.bind("isOn").to(o,"value",n=>!!n),this.listenTo(r,"execute",()=>{this._showForm()}),r})}_createForm(){let e=this.editor,i=e.editing.view.document,o=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(ze(le))(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this.listenTo(e.ui,"update",()=>{o.getClosestSelectedImageWidget(i.selection)?this._isVisible&&pi(e):this._hideForm(!0)}),Ke({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();let e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Oe(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)}},D=class extends f{static get requires(){return[ae,ce]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}};function fi(s){let e=(t,i,o)=>{if(!o.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;let r=s.findViewImgElement(i.viewItem);if(!r||!o.consumable.test(r,{name:!0}))return;o.consumable.consume(i.viewItem,{name:!0,classes:"image"});let n=o.convertItem(r,i.modelCursor),a=B(n.modelRange.getItems());if(!a){o.consumable.revert(i.viewItem,{name:!0,classes:"image"});return}o.convertChildren(i.viewItem,a),o.updateConversionResult(a,i)};return t=>{t.on("element:figure",e)}}function hi(s){let e=["srcset","media","type","sizes"],t=(i,o,r)=>{let n=o.viewItem;if(!r.consumable.test(n,{name:!0}))return;let a=new Map;for(let m of n.getChildren())if(m.is("element","source")){let u={};for(let g of e)m.hasAttribute(g)&&r.consumable.test(m,{attributes:g})&&(u[g]=m.getAttribute(g));Object.keys(u).length&&a.set(m,u)}let l=s.findViewImgElement(n);if(!l)return;let c=o.modelCursor.parent;if(!c.is("element","imageBlock")){let m=r.convertItem(l,o.modelCursor);o.modelRange=m.modelRange,o.modelCursor=m.modelCursor,c=B(m.modelRange.getItems())}r.consumable.consume(n,{name:!0});for(let[m,u]of a)r.consumable.consume(m,{attributes:Object.keys(u)});a.size&&r.writer.setAttribute("sources",Array.from(a.values()),c),r.convertChildren(n,c)};return i=>{i.on("element:picture",t)}}function pt(s,e){let t=(i,o,r)=>{if(!r.consumable.consume(o.item,i.name))return;let n=r.writer,a=r.mapper.toViewElement(o.item),l=s.findViewImgElement(a);o.attributeNewValue===null?(n.removeAttribute("srcset",l),n.removeAttribute("sizes",l)):o.attributeNewValue&&(n.setAttribute("srcset",o.attributeNewValue,l),n.setAttribute("sizes","100vw",l))};return i=>{i.on(`attribute:srcset:${e}`,t)}}function Ii(s){let e=(t,i,o)=>{if(!o.consumable.consume(i.item,t.name))return;let r=o.writer,n=o.mapper.toViewElement(i.item),a=s.findViewImgElement(n),l=i.attributeNewValue;if(l&&l.length){let c=[],m=a.parent;for(;m&&m.is("attributeElement");){let d=m.parent;r.unwrap(r.createRangeOn(a),m),c.unshift(m),m=d}let u=a.parent.is("element","picture"),g=u?a.parent:r.createContainerElement("picture",null);u||r.insert(r.createPositionBefore(a),g),r.remove(r.createRangeIn(g)),r.insert(r.createPositionAt(g,"end"),l.map(d=>r.createEmptyElement("source",d))),r.move(r.createRangeOn(a),r.createPositionAt(g,"end"));for(let d of c)r.wrap(r.createRangeOn(g),d)}else if(a.parent.is("element","picture")){let c=a.parent;r.move(r.createRangeOn(a),r.createPositionBefore(c)),r.remove(c)}};return t=>{t.on("attribute:sources:imageBlock",e),t.on("attribute:sources:imageInline",e)}}function M(s,e,t){let i=(o,r,n)=>{if(!n.consumable.consume(r.item,o.name))return;let a=n.writer,l=n.mapper.toViewElement(r.item),c=s.findViewImgElement(l);a.setAttribute(r.attributeKey,r.attributeNewValue||"",c)};return o=>{o.on(`attribute:${t}:${e}`,i)}}var v=class extends Et{observe(e){this.listenTo(e,"load",(t,i)=>{let o=i.target;this.checkShouldIgnoreEventFromTarget(o)||o.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))}},me=class extends _{constructor(e){super(e);let t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||t==="block"&&x("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||t==="inline"&&x("image-inline-plugin-required")}refresh(){let e=this.editor.plugins.get("ImageUtils");this.isEnabled=e.isImageAllowed()}execute(e){let t=De(e.source),i=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),r=Object.fromEntries(i.getAttributes());t.forEach((n,a)=>{let l=i.getSelectedElement();if(typeof n=="string"&&(n={src:n}),a&&l&&o.isImage(l)){let c=this.editor.model.createPositionAfter(l);o.insertImage({...n,...r},c,e.imageType)}else e.breakBlock?o.insertImage({...n,...r},i.getFirstPosition(),e.imageType):o.insertImage({...n,...r},null,e.imageType)})}},ue=class extends _{constructor(e){super(e),this.decorate("cleanupImage")}refresh(){let 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){let t=this.editor.model.document.selection.getSelectedElement(),i=this.editor.plugins.get("ImageUtils");this.editor.model.change(o=>{o.setAttribute("src",e.source,t),this.cleanupImage(o,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)}},S=class extends f{static get requires(){return[h]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.conversion;e.editing.view.addObserver(v),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});let i=new me(e),o=new ue(e);e.commands.add("insertImage",i),e.commands.add("replaceImageSource",o),e.commands.add("imageInsert",i)}},L=class extends f{static get requires(){return[h]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){let e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(e){let t=this.editor,i=t.plugins.get("ImageUtils"),o=e==="imageBlock"?"figure":"img";t.conversion.for("upcast").attributeToAttribute({view:{name:o,styles:{width:/.+/}},model:{key:"width",value:n=>O(n)?P(n.getStyle("width")):null}}).attributeToAttribute({view:{name:o,key:"width"},model:"width"}).attributeToAttribute({view:{name:o,styles:{height:/.+/}},model:{key:"height",value:n=>O(n)?P(n.getStyle("height")):null}}).attributeToAttribute({view:{name:o,key:"height"},model:"height"}),t.conversion.for("editingDowncast").add(n=>{r(n,"width","width",!0,!0),r(n,"height","height",!0,!0)}),t.conversion.for("dataDowncast").add(n=>{r(n,"width","width",!1),r(n,"height","height",!1)}),t.conversion.for("upcast").add(n=>{n.on("element:img",(a,l,c)=>{let m=l.viewItem.getAttribute("width"),u=l.viewItem.getAttribute("height");m&&u&&c.consumable.consume(l.viewItem,{styles:["aspect-ratio"]})})});function r(n,a,l,c,m=!1){n.on(`attribute:${a}:${e}`,(u,g,d)=>{if(!d.consumable.consume(g.item,u.name))return;let p=d.writer,I=d.mapper.toViewElement(g.item),b=i.findViewImgElement(I);g.attributeNewValue!==null?p.setAttribute(l,g.attributeNewValue,b):p.removeAttribute(l,b);let V=g.item.getAttribute("width"),$=g.item.getAttribute("height"),bt=V&&$;if(bt&&m&&p.setAttribute("loading","lazy",b),g.item.hasAttribute("sources"))return;let Ai=g.item.hasAttribute("resizedWidth");e==="imageInline"&&!Ai&&!c||bt&&p.setStyle("aspect-ratio",`${V}/${$}`,b)})}}},F=class extends _{_modelElementName;constructor(e,t){super(e),this._modelElementName=t}refresh(){let 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={}){let t=this.editor,i=this.editor.model,o=t.plugins.get("ImageUtils"),r=o.getClosestSelectedImageElement(i.document.selection),n=Object.fromEntries(r.getAttributes());return!n.src&&!n.uploadId?null:i.change(a=>{let{setImageSizes:l=!0}=e,c=Array.from(i.markers).filter(g=>g.getRange().containsItem(r)),m=o.insertImage(n,i.createSelection(r,"on"),this._modelElementName,{setImageSizes:l});if(!m)return null;let u=a.createRangeOn(m);for(let g of c){let d=g.getRange(),p=d.root.rootName!="$graveyard"?d.getJoined(u,!0):u;a.updateMarker(g,{range:p})}return{oldElement:r,newElement:m}})}},N=class extends f{static get requires(){return[h]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){let e=this.editor.model.schema;e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["placeholder"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){let e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("editingDowncast").add(o=>{o.on("attribute:placeholder",(r,n,a)=>{if(!a.consumable.test(n.item,r.name)||!n.item.is("element","imageBlock")&&!n.item.is("element","imageInline"))return;a.consumable.consume(n.item,r.name);let l=a.writer,c=a.mapper.toViewElement(n.item),m=i.findViewImgElement(c);n.attributeNewValue?(l.addClass("image_placeholder",m),l.setStyle("background-image",`url(${n.attributeNewValue})`,m),l.setCustomProperty("editingPipeline:doNotReuseOnce",!0,m)):(l.removeClass("image_placeholder",m),l.removeStyle("background-image",m))})})}_setupLoadListener(){let e=this.editor,t=e.model,i=e.editing,o=i.view,r=e.plugins.get("ImageUtils");o.addObserver(v),this.listenTo(o.document,"imageLoaded",(n,a)=>{let l=o.domConverter.mapDomToView(a.target);if(!l)return;let c=r.getImageWidgetFromImageView(l);if(!c)return;let m=i.mapper.toModelElement(c);!m||!m.hasAttribute("placeholder")||t.enqueueChange({isUndoable:!1},u=>{u.removeAttribute("placeholder",m)})})}},z=class extends f{static get requires(){return[S,L,h,N,G]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){let 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 F(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){let e=this.editor,t=e.t,i=e.conversion,o=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(r,{writer:n})=>ot(n)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(r,{writer:n})=>o.toImageWidget(ot(n),n,t("image widget"))}),i.for("downcast").add(M(o,"imageBlock","src")).add(M(o,"imageBlock","alt")).add(pt(o,"imageBlock")),i.for("upcast").elementToElement({view:dt(e,"imageBlock"),model:(r,{writer:n})=>n.createElement("imageBlock",r.hasAttribute("src")?{src:r.getAttribute("src")}:void 0)}).add(fi(o))}_setupClipboardIntegration(){let e=this.editor,t=e.model,i=e.editing.view,o=e.plugins.get("ImageUtils"),r=e.plugins.get("ClipboardPipeline");this.listenTo(r,"inputTransformation",(n,a)=>{let l=Array.from(a.content.getChildren()),c;if(!l.every(o.isInlineImageView))return;a.targetRanges?c=e.editing.mapper.toModelRange(a.targetRanges[0]):c=t.document.selection.getFirstRange();let m=t.createSelection(c);if(Pe(t.schema,m)==="imageBlock"){let u=new J(i.document),g=l.map(d=>u.createElement("figure",{class:"image"},d));a.content=u.createDocumentFragment(g)}}),this.listenTo(r,"contentInsertion",(n,a)=>{a.method==="paste"&&t.change(l=>{let c=l.createRangeIn(a.content);for(let m of c.getItems())m.is("element","imageBlock")&&o.setImageNaturalSizeAttributes(m)})})}},ge=class extends A{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(e,t=[]){super(e),this.focusTracker=new Q,this.keystrokes=new k,this._focusables=new ee,this.children=this.createCollection(),this._focusCycler=new Z({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(let i of t)this.children.add(i),this._focusables.add(i),i instanceof Mt&&this._focusables.addMany(i.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),U({view:this});for(let t of this._focusables)this.focusTracker.add(t.element);this.keystrokes.listenTo(this.element);let 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()}},y=class extends f{static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[h]}dropdownView;_integrations=new Map;constructor(e){super(e),e.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){let 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())});let o=n=>this._createToolbarComponent(n),r=n=>this._createMenuBarComponent(n);e.ui.componentFactory.add("insertImage",o),e.ui.componentFactory.add("imageInsert",o),e.ui.componentFactory.add("menuBar:insertImage",r)}registerIntegration({name:e,observable:t,buttonViewCreator:i,formViewCreator:o,menuBarButtonViewCreator:r,requiresForm:n=!1,override:a=!1}){this._integrations.has(e)&&!a&&x("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:i,menuBarButtonViewCreator:r,formViewCreator:o,requiresForm:n})}_createToolbarComponent(e){let t=this.editor,i=e.t,o=this._prepareIntegrations();if(!o.length)return null;let r,n=o[0];if(o.length==1){if(!n.requiresForm)return n.buttonViewCreator(!0);r=n.buttonViewCreator(!0)}else{let c=n.buttonViewCreator(!1);r=new $e(e,c),r.tooltip=!0,r.bind("label").to(this,"isImageSelected",m=>i(m?"Replace image":"Insert image"))}let a=this.dropdownView=te(e,r),l=o.map(({observable:c})=>typeof c=="function"?c():c);return a.bind("isEnabled").toMany(l,"isEnabled",(...c)=>c.some(m=>m)),a.once("change:isOpen",()=>{let c=o.flatMap(({formViewCreator:u})=>u(o.length==1)),m=new ge(t.locale,c);a.panelView.children.add(m)}),a}_createMenuBarComponent(e){let t=e.t,i=this._prepareIntegrations();if(!i.length)return null;let o=i.flatMap(({menuBarButtonViewCreator:a})=>a(i.length==1)),r=new jt(e),n=new Ht(e);r.panelView.children.add(n),r.buttonView.set({icon:Jt,label:t("Image")});for(let a of o){let l=new Wt(e,r);l.children.add(a),n.items.add(l),a.delegate("execute").to(r)}return r}_prepareIntegrations(){let t=this.editor.config.get("image.insert.integrations"),i=[];if(!t.length)return x("image-insert-integrations-not-specified"),i;for(let o of t){if(!this._integrations.has(o)){["upload","assetManager","url"].includes(o)||x("image-insert-unknown-integration",{item:o});continue}i.push(this._integrations.get(o))}return i.length||x("image-insert-integrations-not-registered"),i}},de=class extends f{static get requires(){return[z,Me,D,y]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}},pe=class extends f{static get requires(){return[S,L,h,N,G]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){let e=this.editor;
1e.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new F(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){let e=this.editor,t=e.t,i=e.conversion,o=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(r,{writer:n})=>n.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(r,{writer:n})=>o.toImageWidget(gi(n),n,t("image widget"))}),i.for("downcast").add(M(o,"imageInline","src")).add(M(o,"imageInline","alt")).add(pt(o,"imageInline")),i.for("upcast").elementToElement({view:dt(e,"imageInline"),model:(r,{writer:n})=>n.createElement("imageInline",r.hasAttribute("src")?{src:r.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){let e=this.editor,t=e.model,i=e.editing.view,o=e.plugins.get("ImageUtils"),r=e.plugins.get("ClipboardPipeline");this.listenTo(r,"inputTransformation",(n,a)=>{let l=Array.from(a.content.getChildren()),c;if(!l.every(o.isBlockImageView))return;a.targetRanges?c=e.editing.mapper.toModelRange(a.targetRanges[0]):c=t.document.selection.getFirstRange();let m=t.createSelection(c);if(Pe(t.schema,m)==="imageInline"){let u=new J(i.document),g=l.map(d=>d.childCount===1?(Array.from(d.getAttributes()).forEach(p=>u.setAttribute(...p,o.findViewImgElement(d))),d.getChild(0)):d);a.content=u.createDocumentFragment(g)}}),this.listenTo(r,"contentInsertion",(n,a)=>{a.method==="paste"&&t.change(l=>{let c=l.createRangeIn(a.content);for(let m of c.getItems())m.is("element","imageInline")&&o.setImageNaturalSizeAttributes(m)})})}},fe=class extends f{static get requires(){return[pe,Me,D,y]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}},rt=class extends f{static get requires(){return[de,fe]}static get pluginName(){return"Image"}static get isOfficialPlugin(){return!0}},W=class extends f{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[h]}getCaptionFromImageModelElement(e){for(let t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){let t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){let t=this.editor.plugins.get("ImageUtils");return e.name=="figcaption"&&t.isBlockImageView(e.parent)?{name:!0}:null}},he=class extends _{refresh(){let e=this.editor,t=e.plugins.get("ImageCaptionUtils"),i=e.plugins.get("ImageUtils");if(!e.plugins.has(z)){this.isEnabled=!1,this.value=!1;return}let o=e.model.document.selection,r=o.getSelectedElement();if(!r){let n=t.getCaptionFromModelSelection(o);this.isEnabled=!!n,this.value=!!n;return}this.isEnabled=i.isImage(r),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(r):this.value=!1}execute(e={}){let{focusCaptionOnShow:t}=e;this.editor.model.change(i=>{this.value?this._hideImageCaption(i):this._showImageCaption(i,t)})}_showImageCaption(e,t){let o=this.editor.model.document.selection,r=this.editor.plugins.get("ImageCaptionEditing"),n=this.editor.plugins.get("ImageUtils"),a=o.getSelectedElement(),l=r._getSavedCaption(a);n.isInlineImage(a)&&(this.editor.execute("imageTypeBlock"),a=o.getSelectedElement());let c=l||e.createElement("caption");e.append(c,a),t&&e.setSelection(c,"in")}_hideImageCaption(e){let t=this.editor,i=t.model.document.selection,o=t.plugins.get("ImageCaptionEditing"),r=t.plugins.get("ImageCaptionUtils"),n=i.getSelectedElement(),a;n?a=r.getCaptionFromImageModelElement(n):(a=r.getCaptionFromModelSelection(i),n=a.parent),o._saveCaption(n,a),e.setSelection(n,"on"),e.remove(a)}},Ie=class extends f{static get requires(){return[h,W]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}_savedCaptionsMap;constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){let 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 he(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){let e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),o=e.plugins.get("ImageCaptionUtils"),r=e.t;e.conversion.for("upcast").elementToElement({view:n=>o.matchImageCaptionViewElement(n),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(n,{writer:a})=>i.isBlockImage(n.parent)?a.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(n,{writer:a})=>{if(!i.isBlockImage(n.parent))return null;let l=a.createEditableElement("figcaption");a.setCustomProperty("imageCaption",!0,l),l.placeholder=r("Enter image caption"),Ct({view:t,element:l,keepOnFocus:!0});let c=n.parent.getAttribute("alt"),m=c?r("Caption for image: %0",[c]):r("Caption for the image");return Ot(l,a,{label:m})}})}_setupImageTypeCommandsIntegration(){let e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),o=e.commands.get("imageTypeInline"),r=e.commands.get("imageTypeBlock"),n=a=>
vendor: 44,006 bytes, lines 1-9
1{if(!a.return)return;let{oldElement:l,newElement:c}=a.return;if(!l)return;if(t.isBlockImage(l)){let u=i.getCaptionFromImageModelElement(l);if(u){this._saveCaption(c,u);return}}let m=this._getSavedCaption(l);m&&this._saveCaption(c,m)};o&&this.listenTo(o,"execute",n,{priority:"low"}),r&&this.listenTo(r,"execute",n,{priority:"low"})}_getSavedCaption(e){let t=this._savedCaptionsMap.get(e);return t?xt.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){let e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),o=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",()=>{let r=t.document.differ.getChanges();for(let n of r){if(n.attributeKey!=="alt")continue;let a=n.range.start.nodeAfter;if(i.isBlockImage(a)){let l=o.getCaptionFromImageModelElement(a);if(!l)return;e.editing.reconvertItem(l)}}})}},we=class extends f{static get requires(){return[W]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){let e=this.editor,t=e.editing.view,i=e.plugins.get("ImageCaptionUtils"),o=e.t;e.ui.componentFactory.add("toggleImageCaption",r=>{let n=e.commands.get("toggleImageCaption"),a=new w(r);return a.set({icon:Kt,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(n,"value","isEnabled"),a.bind("label").to(n,"value",l=>o(l?"Toggle caption off":"Toggle caption on")),this.listenTo(a,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});let l=i.getCaptionFromModelSelection(e.model.document.selection);if(l){let c=e.editing.mapper.toViewElement(l);t.scrollToTheSelection(),t.change(m=>{m.addClass("image__caption_highlighted",c)})}e.editing.view.focus()}),a})}},st=class extends f{static get requires(){return[Ie,we]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}};function ft(s){let e=s.map(t=>t.replace("+","\\+"));return new RegExp(`^image\\/(${e.join("|")})$`)}function wi(s){return new Promise((e,t)=>{let i=s.getAttribute("src");fetch(i).then(o=>o.blob()).then(o=>{let r=_i(o,i),a=`image.${r.replace("image/","")}`,l=new File([o],a,{type:r});e(l)}).catch(o=>o&&o.name==="TypeError"?Mi(i).then(e).catch(t):t(o))})}function bi(s,e){return!s.isInlineImageView(e)||!e.getAttribute("src")?!1:!!e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||!!e.getAttribute("src").match(/^blob:/g)}function _i(s,e){return s.type?s.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}function Mi(s){return Li(s).then(e=>{let t=_i(e,s),o=`image.${t.replace("image/","")}`;return new File([e],o,{type:t})})}function Li(s){return new Promise((e,t)=>{let i=T.document.createElement("img");i.addEventListener("load",()=>{let o=T.document.createElement("canvas");o.width=i.width,o.height=i.height,o.getContext("2d").drawImage(i,0,0),o.toBlob(n=>n?e(n):t())}),i.addEventListener("error",()=>t()),i.src=s})}var be=class extends f{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){let 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){let t=this.editor,i=t.locale,o=t.commands.get("uploadImage"),r=t.config.get("image.upload.types"),n=ft(r),a=new e(t.locale),l=i.t;return a.set({acceptedType:r.map(c=>`image/${c}`).join(","),allowMultipleFiles:!0,label:l("Upload from computer"),icon:Qt}),a.bind("isEnabled").to(o),a.on("done",(c,m)=>{let u=Array.from(m).filter(g=>n.test(g.type));u.length&&(t.execute("uploadImage",{file:u}),t.editing.view.focus())}),a}_createToolbarButton(){let e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this.editor.commands.get("uploadImage"),o=this._createButton(We);return o.tooltip=!0,o.bind("label").to(t,"isImageSelected",i,"isAccessAllowed",(r,n)=>e(n?r?"Replace image from computer":"Upload image from computer":"You have no image upload permissions.")),o}_createDropdownButton(){let e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this._createButton(We);return i.withText=!0,i.bind("label").to(t,"isImageSelected",o=>e(o?"Replace from computer":"Upload from computer")),i.on("execute",()=>{t.dropdownView.isOpen=!1}),i}_createMenuBarButton(e){let t=this.editor.locale.t,i=this._createButton(zt);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}},_e=class 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(){let 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)=>{let o=this.editor,r=t.item,n=r.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;let a=o.plugins.get("ImageUtils"),l=o.plugins.get(E),c=n?t.attributeNewValue:null,m=this.placeholder,u=o.editing.mapper.toViewElement(r),g=i.writer;if(c=="reading"){ri(u,g),si(a,m,u,g);return}if(c=="uploading"){let d=l.loaders.get(n);ri(u,g),d?(ai(u,g),Ni(u,g,d,o.editing.view),qi(a,u,g,d)):si(a,m,u,g);return}c=="complete"&&l.loaders.get(n)&&Wi(u,g,o.editing.view),zi(u,g),ai(u,g),Fi(u,g)}};function ri(s,e){s.hasClass("ck-appear")||e.addClass("ck-appear",s)}function Fi(s,e){e.removeClass("ck-appear",s)}function si(s,e,t,i){t.hasClass("ck-image-upload-placeholder")||i.addClass("ck-image-upload-placeholder",t);let o=s.findViewImgElement(t);o.getAttribute("src")!==e&&i.setAttribute("src",e,o),xi(t,"placeholder")||i.insert(i.createPositionAfter(o),ji(i))}function ai(s,e){s.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",s),yi(s,e,"placeholder")}function Ni(s,e,t,i){let o=Hi(e);e.insert(e.createPositionAt(s,"end"),o),t.on("change:uploadedPercent",(r,n,a)=>{i.change(l=>{l.setStyle("width",a+"%",o)})})}function zi(s,e){yi(s,e,"progressBar")}function Wi(s,e,t){let i=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(s,"end"),i),setTimeout(()=>{t.change(o=>o.remove(o.createRangeOn(i)))},3e3)}function Hi(s){let e=s.createUIElement("div",{class:"ck-progress-bar"});return s.setCustomProperty("progressBar",!0,e),e}function ji(s){let e=s.createUIElement("div",{class:"ck-upload-placeholder-loader"});return s.setCustomProperty("placeholder",!0,e),e}function xi(s,e){for(let t of s.getChildren())if(t.getCustomProperty(e))return t}function yi(s,e,t){let i=xi(s,t);i&&e.remove(e.createRangeOn(i))}function qi(s,e,t,i){if(i.data){let o=s.findViewImgElement(e);t.setAttribute("src",i.data,o)}}var xe=class extends _{constructor(e){super(e),this.set("isAccessAllowed",!0)}refresh(){let e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){let t=De(e.file),i=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),r=Object.fromEntries(i.getAttributes());t.forEach((n,a)=>{let l=i.getSelectedElement();if(a&&l&&o.isImage(l)){let c=this.editor.model.createPositionAfter(l);this._uploadImage(n,r,c)}else this._uploadImage(n,r)})}_uploadImage(e,t,i){let o=this.editor,n=o.plugins.get(E).createLoader(e),a=o.plugins.get("ImageUtils");n&&a.insertImage({...t,uploadId:n.id},i)}},ye=class extends f{static get requires(){return[E,qe,G,h]}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(){let e=this.editor,t=e.model.document,i=e.conversion,o=e.plugins.get(E),r=e.plugins.get("ImageUtils"),n=e.plugins.get("ClipboardPipeline"),a=ft(e.config.get("image.upload.types")),l=new xe(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;let d=u.viewItem.getAttribute("data-ck-upload-id");if(!d)return;let[p]=Array.from(u.modelRange.getItems({shallow:!0})),I=o.loaders.get(d);p&&(g.writer.setAttribute("uploadId",d,p),g.consumable.consume(u.viewItem,{attributes:["data-ck-upload-id"]}),I&&I.data&&g.writer.setAttribute("uploadStatus",I.status,p))},{priority:"low"})),this.listenTo(e.editing.view.document,"clipboardInput",(c,m)=>{if(Ei(m.dataTransfer))return;let u=Array.from(m.dataTransfer.files).filter(d=>d?a.test(d.type):!1);if(!u.length)return;if(c.stop(),e.model.change(d=>{m.targetRanges&&d.setSelection(m.targetRanges.map(p=>e.editing.mapper.toModelRange(p))),e.execute("uploadImage",{file:u})}),!e.commands.get("uploadImage").isAccessAllowed){let d=e.plugins.get("Notification"),p=e.locale.t;d.showWarning(p("You have no image upload permissions."),{namespace:"image"})}}),this.listenTo(n,"inputTransformation",(c,m)=>{let u=Array.from(e.editing.view.createRangeIn(m.content)).map(d=>d.item).filter(d=>bi(r,d)&&!d.getAttribute("uploadProcessed")).map(d=>({promise:wi(d),imageElement:d}));if(!u.length)return;let g=new J(e.editing.view.document);for(let d of u){g.setAttribute("uploadProcessed",!0,d.imageElement);let p=o.createLoader(d.promise);p&&(g.setAttribute("src","",d.imageElement),g.setAttribute("uploadId",p.id,d.imageElement))}}),e.editing.view.document.on("dragover",(c,m)=>{m.preventDefault()}),t.on("change",()=>{let c=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),m=new Set;for(let u of c)if(u.type=="insert"&&u.name!="$text"){let g=u.position.nodeAfter,d=u.position.root.rootName=="$graveyard";for(let p of $i(e,g)){let I=p.getAttribute("uploadId");if(!I)continue;let b=o.loaders.get(I);if(!b){!d&&this._uploadedImages.has(I)&&e.model.enqueueChange({isUndoable:!1},V=>{V.setAttribute("uploadStatus","complete",p),this.fire("uploadComplete",{data:this._uploadedImages.get(I),imageElement:p})});continue}d?m.has(I)||Array.from(this._uploadImageElements.get(I)).every($=>$.root.rootName=="$graveyard")&&b.abort():(m.add(I),this._uploadImageElements.has(I)?this._uploadImageElements.get(I).add(p):this._uploadImageElements.set(I,new Set([p])),b.status=="idle"&&this._readAndUpload(b))}}}),this.on("uploadComplete",(c,{imageElement:m,data:u})=>{let g=u.urls?u.urls:u;this.editor.model.change(d=>{d.setAttribute("src",g.default,m),this._parseAndSetSrcsetAttributeOnImage(g,m,d),r.setImageNaturalSizeAttributes(m)})},{priority:"low"})}afterInit(){let 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){let t=this.editor,i=t.model,o=t.locale.t,r=t.plugins.get(E),n=t.plugins.get(qe),a=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},m=>{let u=l.get(e.id);for(let g of u)m.setAttribute("uploadStatus","reading",g)}),e.read().then(()=>{let m=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(o("Uploading image"));for(let u of l.get(e.id)){if(At.isSafari){let g=t.editing.mapper.toViewElement(u),d=a.findViewImgElement(g);t.editing.view.once("render",()=>{if(!d.parent)return;let p=t.editing.view.domConverter.mapViewToDom(d.parent);if(!p)return;let I=p.style.display;p.style.display="none",p._ckHack=p.offsetHeight,p.style.display=I})}i.enqueueChange({isUndoable:!1},g=>{g.setAttribute("uploadStatus","uploading",u)})}return m}).then(m=>{i.enqueueChange({isUndoable:!1},u=>{for(let g of l.get(e.id))u.setAttribute("uploadStatus","complete",g),this.fire("uploadComplete",{data:m,imageElement:g});t.ui&&t.ui.ariaLiveAnnouncer.announce(o("Image upload complete")),this._uploadedImages.set(e.id,m)}),c()}).catch(m=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(o("Error during image upload")),e.status!=="error"&&e.status!=="aborted")throw m;e.status=="error"&&m&&n.showWarning(m,{title:o("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},u=>{for(let g of l.get(e.id))g.root.rootName!=="$graveyard"&&u.remove(g)}),c()});function c(){i.enqueueChange({isUndoable:!1},m=>{for(let u of l.get(e.id))m.removeAttribute("uploadId",u),m.removeAttribute("uploadStatus",u);l.delete(e.id)}),r.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let o=0,r=Object.keys(e).filter(n=>{let a=parseInt(n,10);if(!isNaN(a))return o=Math.max(o,a),!0}).map(n=>`${e[n]} ${n}w`).join(", ");if(r!=""){let n={srcset:r};!t.hasAttribute("width")&&!t.hasAttribute("height")&&(n.width=o),i.setAttributes(n,t)}}_registerConverters(e){let{conversion:t,plugins:i}=this.editor,o=i.get(E),r=i.get(h);t.for("dataDowncast").add(n=>{n.on(`attribute:uploadId:${e}`,(a,l,c)=>{if(!c.consumable.test(l.item,a.name))return;let m=o.loaders.get(l.attributeNewValue);if(!m||!m.data)return null;let u=c.mapper.toViewElement(l.item),g=r.findViewImgElement(u);g&&(c.consumable.consume(l.item,a.name),c.writer.setAttribute("data-ck-upload-id",m.id,g))})})}};function Ei(s){return Array.from(s.types).includes("text/html")&&s.getData("text/html")!==""}function $i(s,e){let t=s.plugins.get("ImageUtils");return Array.from(s.model.createRangeOn(e)).filter(i=>t.isImage(i.item)).map(i=>i.item)}var Ee=class extends f{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[ye,be,_e]}},Ce=class extends A{urlInputView;keystrokes;constructor(e){super(e),this.set("imageURLInputValue",""),this.set("isImageSelected",!1),this.set("isEnabled",!0),this.keystrokes=new k,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(),U({view:this}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}_createUrlInputView(){let e=this.locale,t=e.t,i=new X(e,Je);return i.bind("label").to(this,"isImageSelected",o=>t(o?"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",o=>o||""),i.fieldView.on("input",()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}),i}focus(){this.urlInputView.focus()}},ve=class extends f{_imageInsertUI;_formView;static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[y,Lt]}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){let t=new e(this.editor.locale);return t.icon=Yt,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){let e=this.editor.locale.t,t=this._createInsertUrlButton(w);return t.tooltip=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert image via URL")),t}_createDropdownButton(){let e=this.editor.locale.t,t=this._createInsertUrlButton(w);return t.withText=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert via URL")),t}_createMenuBarButton(e){let t=this.editor.locale.t,i=this._createInsertUrlButton(Nt);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(){let e=this.editor,t=e.locale,i=e.commands.get("replaceImageSource"),o=e.commands.get("insertImage"),r=new Ce(t);return r.bind("isImageSelected").to(this._imageInsertUI),r.bind("isEnabled").toMany([o,i],"isEnabled",(...n)=>n.some(a=>a)),r}_showModal(){let e=this.editor,i=e.locale.t,o=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));let r=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=r.value||"",o.show({id:"insertImageViaUrl",title:i("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:i("Cancel"),withText:!0,onExecute:()=>o.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()}},Se=class extends f{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[ve,y]}},at=class extends f{static get pluginName(){return"ImageInsert"}static get isOfficialPlugin(){return!0}static get requires(){return[Ee,Se,y]}},Ve=class extends _{refresh(){let 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){let t=this.editor,i=t.model,o=t.plugins.get("ImageUtils"),r=o.getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},r&&i.change(n=>{n.setAttribute("resizedWidth",e.width,r),n.removeAttribute("resizedHeight",r),o.setImageNaturalSizeAttributes(r)})}},H=class extends f{static get requires(){return[h]}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(){let e=this.editor,t=new Ve(e);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}afterInit(){this._registerSchema()}_registerSchema(){let e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0})),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0}))}_registerConverters(e){let t=this.editor,i=t.plugins.get("ImageUtils");t.conversion.for("downcast").add(o=>o.on(`attribute:resizedWidth:${e}`,(r,n,a)=>{if(!a.consumable.consume(n.item,r.name))return;let l=a.writer,c=a.mapper.toViewElement(n.item);n.attributeNewValue!==null?(l.setStyle("width",n.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:o=>({key:"style",value:{height:o}})}),t.conversion.for("editingDowncast").add(o=>o.on(`attribute:resizedHeight:${e}`,(r,n,a)=>{if(!a.consumable.consume(n.item,r.name))return;let l=a.writer,c=a.mapper.toViewElement(n.item),m=e==="imageInline"?i.findViewImgElement(c):c;n.attributeNewValue!==null?l.setStyle("height",n.attributeNewValue,m):l.removeStyle("height",m)})),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:o=>O(o)?null:o.getStyle("width")}}),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:o=>O(o)?null:o.getStyle("height")}}),t.conversion.for("upcast").add(o=>{o.on(`element:${e==="imageBlock"?"figure":"img"}`,(r,n,a)=>{a.consumable.consume(n.viewItem,{classes:["image_resized"]})})})}},tt={small:oi,medium:ii,large:ti,custom:Xt,original:ei},ke=class extends f{static get requires(){return[H]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}_resizeUnit;constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){let e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(let o of t)this._registerImageResizeButton(o);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){let t=this.editor,{name:i,value:o,icon:r}=e;t.ui.componentFactory.add(i,n=>{let a=new w(n),l=t.commands.get("resizeImage"),c=this._getOptionLabelValue(e,!0);if(!tt[r])throw new Vt("imageresizebuttons-missing-icon",t,e);if(a.set({label:c,icon:tt[r],tooltip:c,isToggleable:!0}),a.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&R(e)){let m=t.plugins.get("ImageCustomResizeUI");this.listenTo(a,"execute",()=>{m._showForm(this._resizeUnit)})}else{let m=o?o+this._resizeUnit:null;a.bind("isOn").to(l,"value",l,"isEnabled",lt(m)),this.listenTo(a,"execute",()=>{t.execute("resizeImage",{width:m})})}return a})}_registerImageResizeDropdown(e){let t=this.editor,i=t.t,o=e.find(n=>!n.value),r=n=>{let a=t.commands.get("resizeImage"),l=te(n,Ft),c=l.buttonView,m=i("Resize image");return c.set({tooltip:m,commandValue:o.value,icon:tt.medium,isToggleable:!0,label:this._getOptionLabelValue(o),withText:!0,class:"ck-resize-image-button",ariaLabel:m,ariaLabelledBy:void 0}),c.bind("label").to(a,"value",u=>u&&u.width?u.width:this._getOptionLabelValue(o)),l.bind("isEnabled").to(this),qt(l,()=>this._getResizeDropdownListItemDefinitions(e,a),{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",r),t.ui.componentFactory.add("imageResize",r)}_getOptionLabelValue(e,t=!1){let i=this.editor.t;return e.label?e.label:t?R(e)?i("Custom image size"):e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):R(e)?i("Custom"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){let{editor:i}=this,o=new kt,r=e.map(n=>R(n)?{...n,valueWithUnits:"custom"}:n.value?{...n,valueWithUnits:`${n.value}${this._resizeUnit}`}:{...n,valueWithUnits:null});for(let n of r){let a=null;if(i.plugins.has("ImageCustomResizeUI")&&R(n)){let l=i.plugins.get("ImageCustomResizeUI");a={type:"button",model:new Ge({label:this._getOptionLabelValue(n),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{l._showForm(this._resizeUnit)}})};let c=Object.values(r).map(m=>m.valueWithUnits);a.model.bind("isOn").to(t,"value",t,"isEnabled",Gi(c))}else a={type:"button",model:new Ge({commandName:"resizeImage",commandValue:n.valueWithUnits,label:this._getOptionLabelValue(n),role:"menuitemradio",withText:!0,icon:null})},a.model.bind("isOn").to(t,"value",t,"isEnabled",lt(n.valueWithUnits));a.model.bind("isEnabled").to(t,"isEnabled"),o.add(a)}return o}};function R(s){return s.value==="custom"}function lt(s){return(e,t)=>{let i=e;return i===void 0||!t?!1:s===null&&i===s?!0:i!==null&&i.width===s}}function Gi(s){return(e,t)=>!s.some(i=>lt(i)(e,t))}var Ki="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",it="image_resized",Be=class extends f{static get requires(){return[Y,h]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){let e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){let e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils");t.addObserver(v),this.listenTo(t.document,"imageLoaded",(o,r)=>{if(!r.target.matches(Ki))return;let n=e.editing.view.domConverter,a=n.domToView(r.target),l=i.getImageWidgetFromImageView(a),c=this.editor.plugins.get(Y).getResizerByViewElement(l);if(c){c.redraw();return}let m=e.editing.mapper,u=m.toModelElement(l);c=e.plugins.get(Y).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:u,viewElement:l,editor:e,getHandleHost(g){return g.querySelector("img")},getResizeHost(){return n.mapViewToDom(m.toViewElement(u))},isCentered(){return u.getAttribute("imageStyle")=="alignCenter"},onCommit(g){t.change(d=>{d.removeClass(it,l)}),e.execute("resizeImage",{width:g})}}),c.on("updateSize",()=>{l.hasClass(it)||t.change(d=>{d.addClass(it,l)});let g=u.name==="imageInline"?a:l;g.getStyle("height")&&t.change(d=>{d.removeStyle("height",g)})}),c.bind("isEnabled").to(this)})}};function ht(s){if(!s)return null;let[,e,t]=s.trim().match(/([.,\d]+)(%|px)$/)||[],i=Number.parseFloat(e);return Number.isNaN(i)?null:{value:i,unit:t}}function It(s,e,t){return t==="px"?{value:e.value,unit:"px"}:{value:e.value/s*100,unit:"%"}}function wt(s){let{editing:e}=s,i=s.plugins.get("ImageUtils").getClosestSelectedImageElement(s.model.document.selection);if(!i)return null;let o=e.mapper.toViewElement(i),r=e.view.domConverter.mapViewToDom(o);return{model:i,view:o,dom:r}}function Ci(s,e){let t=wt(s);if(!t)return null;let i=ht(t.model.getAttribute("resizedWidth")||null);if(!i)return null;if(i.unit===e)return i;let o=Fe(t.dom),r={value:new Tt(t.dom).width};return It(o,r,e)}var Te=class extends A{focusTracker;keystrokes;unit;backButtonView;saveButtonView;labeledInput;children;_focusables;_focusCycler;_validators;constructor(e,t,i){super(e),this.focusTracker=new Q,this.keystrokes=new k,this.unit=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new je(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new ee,this._validators=i,this.keystrokes.set("Esc",(o,r)=>{this.fire("cancel"),r()}),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-image-custom-resize-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),U({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(){let e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:et,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){let e=this.locale.t,t=new w(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){let e=this.locale.t,t=new He(this.locale,{label:e("Image Resize")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){let e=this.locale.t,t=new X(this.locale,Gt);return t.label=e("Resize image (in %0)",this.unit),t.class="ck-labeled-field-view_full-width",t.fieldView.set({step:.1}),t}isValid(){this.resetFormStatus();for(let e of this._validators){let t=e(this);if(t)return this.labeledInput.errorText=t,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){let{element:e}=this.labeledInput.fieldView;return e?e.value:null}get parsedSize(){let{rawSize:e}=this;if(e===null)return null;let t=Number.parseFloat(e);return Number.isNaN(t)?null:t}get sizeWithUnits(){let{parsedSize:e,unit:t}=this;return e===null?null:`${e}${t}`}};function vi(s,e){let t=wt(s);if(!t)return null;let i=Fe(t.dom),o=ht(window.getComputedStyle(t.dom).minWidth)||{value:1},r=Math.max(.1,It(i,o,e).value);return{unit:e,lower:r,upper:e==="px"?i:100}}var Ae=class extends f{_balloon;_form;static get requires(){return[Ne]}static get pluginName(){return"ImageCustomResizeUI"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(e){let t=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(ze(Te))(t.locale,e,Ji(t)),this._form.render(),this.listenTo(this._form,"submit",()=>{this._form.isValid()&&(t.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))}),this.listenTo(this._form.labeledInput,"change:errorText",()=>{t.ui.update()}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),Ke({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(e){if(this._isVisible)return;this._form||this._createForm(e);let t=this.editor,i=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:Oe(t)});let o=Ci(t,e),r=o?o.value.toFixed(1):"",n=vi(t,e);i.fieldView.value=i.fieldView.element.value=r,n&&Object.assign(i.fieldView,{min:n.lower.toFixed(1),max:Math.ceil(n.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}};function Ji(s){let e=s.t;return[t=>{if(t.rawSize.trim()==="")return e("The value must not be empty.");if(t.parsedSize===null)return e("The value should be a plain number.")}]}var ct=class extends f{static get requires(){return[H,Be,Ae,ke]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}},Ue=class extends _{_defaultStyles;_styles;constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(i=>{if(i.isDefault)for(let o of i.modelElements)this._defaultStyles[o]=i.name;return[i.name,i]}))}refresh(){let i=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!i,this.isEnabled?i.hasAttribute("imageStyle")?this.value=i.getAttribute("imageStyle"):this.value=this._defaultStyles[i.name]:this.value=!1}execute(e={}){let t=this.editor,i=t.model,o=t.plugins.get("ImageUtils");i.change(r=>{let n=e.value,{setImageSizes:a=!0}=e,l=o.getClosestSelectedImageElement(i.document.selection);n&&this.shouldConvertImageType(n,l)&&(this.editor.execute(o.isBlockImage(l)?"imageTypeInline":"imageTypeBlock",{setImageSizes:a}),l=o.getClosestSelectedImageElement(i.document.selection)),!n||this._styles.get(n).isDefault?r.removeAttribute("imageStyle",l):r.setAttribute("imageStyle",n,l),a&&o.setImageNaturalSizeAttributes(l)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}},re={get inline(){return{name:"inline",title:"In line",icon:Qe,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:Ye,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Ze,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:ie,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:oe,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Xe,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:ie,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:oe,modelElements:["imageBlock"],className:"image-style-side"}}},Si={full:Zt,left:Ze,right:Xe,center:ie,inlineLeft:Ye,inlineRight:oe,inline:Qe},Vi=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Qi(s){return(s.configuredStyles.options||[]).map(i=>Xi(i)).filter(i=>eo(i,s))}function Yi(s,e){return s&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:s?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}}function Zi(s){return s.has("ImageBlockEditing")&&s.has("ImageInlineEditing")?[...Vi]:[]}function Xi(s){return typeof s=="string"?re[s]?s={...re[s]}:s={name:s}:s=to(re[s.name],s),typeof s.icon=="string"&&(s.icon=Si[s.icon]||s.icon),s}function eo(s,{isBlockPluginLoaded:e,isInlinePluginLoaded:t}){let{modelElements:i,name:o}=s;if(!i||!i.length||!o)return ki({style:s}),!1;{let r=[e?"imageBlock":null,t?"imageInline":null];if(!i.some(n=>r.includes(n)))return x("image-style-missing-dependency",{style:s,missingPlugins:i.map(n=>n==="imageBlock"?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}function to(s,e){let t={...e};for(let i in s)Object.prototype.hasOwnProperty.call(e,i)||(t[i]=s[i]);return t}function ki(s){x("image-style-configuration-definition-invalid",s)}var j={normalizeStyles:Qi,getDefaultStylesConfiguration:Yi,getDefaultDropdownDefinitions:Zi,warnInvalidStyle:ki};function Bi(s){return(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;let o=li(t.attributeNewValue,s),r=li(t.attributeOldValue,s),n=i.mapper.toViewElement(t.item),a=i.writer;r&&a.removeClass(r.className,n),o&&a.addClass(o.className,n)}}function Ti(s){let e={imageInline:s.filter(t=>!t.isDefault&&t.modelElements.includes("imageInline")),imageBlock:s.filter(t=>!t.isDefault&&t.modelElements.includes("imageBlock"))};return(t,i,o)=>{if(!i.modelRange)return;let r=i.viewItem,n=B(i.modelRange.getItems());if(n&&o.schema.checkAttribute(n,"imageStyle"))for(let a of e[n.name])o.consumable.consume(r,{classes:a.className})&&o.writer.setAttribute("imageStyle",a.name,n)}}function li(s,e){for(let t of e)if(t.name===s)return t}var q=class extends f{static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[h]}normalizedStyles;init(){let e=this.editor,t=e.plugins.has("ImageBlockEditing"),i=e.plugins.has("ImageInlineEditing");e.config.define("image.styles",j.getDefaultStylesConfiguration(t,i)),this.normalizedStyles=j.normalizeStyles({configuredStyles:e.config.get("image.styles"),isBlockPluginLoaded:t,isInlinePluginLoaded:i}),this._setupConversion(t,i),this._setupPostFixer(),e.commands.add("imageStyle",new Ue(e,this.normalizedStyles))}_setupConversion(e,t){let i=this.editor,o=i.model.schema,r=Bi(this.normalizedStyles),n=Ti(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",r),i.data.downcastDispatcher.on("attribute:imageStyle",r),e&&(o.extend("imageBlock",{allowAttributes:"imageStyle"}),o.setAttributeProperties("imageStyle",{isFormatting:!0}),i.data.upcastDispatcher.on("element:figure",n,{priority:"low"})),t&&(o.extend("imageInline",{allowAttributes:"imageStyle"}),o.setAttributeProperties("imageStyle",{isFormatting:!0}),i.data.upcastDispatcher.on("element:img",n,{priority:"low"}))}_setupPostFixer(){let e=this.editor,t=e.model.document,i=e.plugins.get(h),o=new Map(this.normalizedStyles.map(r=>[r.name,r]));t.registerPostFixer(r=>{let n=!1;for(let a of t.differ.getChanges())if(a.type=="insert"||a.type=="attribute"&&a.attributeKey=="imageStyle"){let l=a.type=="insert"?a.position.nodeAfter:a.range.start.nodeAfter;if(l&&l.is("element","paragraph")&&l.childCount>0&&(l=l.getChild(0)),!i.isImage(l))continue;let c=l.getAttribute("imageStyle");if(!c)continue;let m=o.get(c);(!m||!m.modelElements.includes(l.name))&&(r.removeAttribute("imageStyle",l),n=!0)}return n})}},Re=class extends f{static get requires(){return[q]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}get localizedDefaultStylesTitles(){let e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){let e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=e.get("ImageStyleEditing"),o=ci(i.normalizedStyles,this.localizedDefaultStylesTitles);for(let n of o)this._createButton(n);let r=ci([...t.filter(ne),...j.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(let n of r)this._createDropdown(n,o)}_createDropdown(e,t){let i=this.editor.ui.componentFactory;i.add(e.name,o=>{let r,{defaultItem:n,items:a,title:l}=e,c=a.filter(d=>t.find(({name:p})=>mi(p)===d)).map(d=>{let p=i.create(d);return d===n&&(r=p),p});a.length!==c.length&&j.warnInvalidStyle({dropdown:e});let m=te(o,$e),u=m.buttonView,g=u.arrowView;return $t(m,c,{enableActiveItemFocusOnDropdownOpen:!0}),u.set({label:ui(l,r.label),class:null,tooltip:!0}),g.unbind("label"),g.set({label:l}),u.bind("icon").toMany(c,"isOn",(...d)=>{let p=d.findIndex(C);return p<0?r.icon:c[p].icon}),u.bind("label").toMany(c,"isOn",(...d)=>{let p=d.findIndex(C);return ui(l,p<0?r.label:c[p].label)}),u.bind("isOn").toMany(c,"isOn",(...d)=>d.some(C)),u.bind("class").toMany(c,"isOn",(...d)=>d.some(C)?"ck-splitbutton_flatten":void 0),u.on("execute",()=>{c.some(({isOn:d})=>d)?m.isOpen=!m.isOpen:r.fire("execute")}),m.bind("isEnabled").toMany(c,"isEnabled",(...d)=>d.some(C)),this.listenTo(m,"execute",()=>{this.editor.editing.view.focus()}),m})}_createButton(e){let t=e.name;this.editor.ui.componentFactory.add(mi(t),i=>{let o=this.editor.commands.get("imageStyle"),r=new w(i);return r.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),r.bind("isEnabled").to(o,"isEnabled"),r.bind("isOn").to(o,"value",n=>n===t),r.on("execute",this._executeCommand.bind(this,t)),r})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}};function ci(s,e){for(let t of s)e[t.title]&&(t.title=e[t.title]);return s}function mi(s){return`imageStyle:${s}`}function ui(s,e){return(s?s+": ":"")+e}var mt=class extends f{static get requires(){return[q,Re]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}},ut=class extends f{static get requires(){return[Le,h]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){let e=this.editor,t=e.t,i=e.plugins.get(Le),o=e.plugins.get("ImageUtils");i.register("image",{ariaLabel:t("Image toolbar"),items:io(e.config.get("image.toolbar")||[]),getRelatedElement:r=>o.getClosestSelectedImageWidget(r)})}};function io(s){return s.map(e=>ne(e)?e.name:e)}var gt=class extends f{static get requires(){return[S,h]}static get pluginName(){return"PictureEditing"}static get isOfficialPlugin(){return!0}afterInit(){let e=this.editor;e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:["sources"]}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:["sources"]}),this._setupConversion(),this._setupImageUploadEditingIntegration()}_setupConversion(){let e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("upcast").add(hi(i)),t.for("downcast").add(Ii(i))}_setupImageUploadEditingIntegration(){let e=this.editor;if(!e.plugins.has("ImageUploadEditing"))return;let t=e.plugins.get("ImageUploadEditing");this.listenTo(t,"uploadComplete",(i,{imageElement:o,data:r})=>{let n=r.sources;n&&e.model.change(a=>{a.setAttributes({sources:n},o)})})}};export{nt as AutoImage,rt as Image,de as ImageBlock,z as ImageBlockEditing,st as ImageCaption,Ie as ImageCaptionEditing,we as ImageCaptionUI,W as ImageCaptionUtils,Ae as ImageCustomResizeUI,S as ImageEditing,fe as ImageInline,pe as ImageInlineEditing,at as ImageInsert,y as ImageInsertUI,Se as ImageInsertViaUrl,ve as ImageInsertViaUrlUI,v as ImageLoadObserver,N as ImagePlaceholder,ct as ImageResize,ke as ImageResizeButtons,H as ImageResizeEditing,Be as ImageResizeHandles,L as ImageSizeAttributes,mt as ImageStyle,Ue as ImageStyleCommand,q as ImageStyleEditing,Re as ImageStyleUI,D as ImageTextAlternative,se as ImageTextAlternativeCommand,ae as ImageTextAlternativeEditing,ce as ImageTextAlternativeUI,ut as ImageToolbar,F as ImageTypeCommand,Ee as ImageUpload,ye as ImageUploadEditing,_e as ImageUploadProgress,be as ImageUploadUI,h as ImageUtils,me as InsertImageCommand,gt as PictureEditing,ue as ReplaceImageSourceCommand,Ve as ResizeImageCommand,he as ToggleImageCaptionCommand,xe as UploadImageCommand,Vi as _IMAGE_DEFAULT_DROPDOWN_DEFINITIONS,Si as _IMAGE_DEFAULT_ICONS,re as _IMAGE_DEFAULT_OPTIONS,Te as _ImageCustomResizeFormView,ge as _ImageInsertFormView,Ce as _ImageInsertUrlView,j as _ImageStyleUtils,le as _ImageTextAlternativeFormView,O as _checkIfImageWidthAndHeightStylesAreBothSet,ot as _createBlockImageViewElement,gi as _createInlineImageViewElement,Pe as _determineImageTypeForInsertionAtSelection,M as _downcastImageAttribute,Ii as _downcastImageSourcesAttribute,pt as _downcastImageSrcsetAttribute,wi as _fetchLocalImage,Oe as _getImageBalloonPositionData,P as _getImageSizeValueIfInPx,dt as _getImageViewElementMatcher,wt as _getSelectedImageEditorNodes,vi as _getSelectedImagePossibleResizeRange,Ci as _getSelectedImageWidthInUnits,bi as _isLocalImage,Bi as _modelToViewImageStyleAttribute,pi as _repositionImageContextualBalloon,It as _tryCastImageDimensionsToUnit,ht as _tryParseImageDimensionWithUnit,fi as _upcastImageFigure,hi as _upcastImagePicture,Ti as _viewToModelImageStyleAttribute,ft as createImageTypeRegExp,Ei as isHtmlInDataTransfer}; 2/*! Bundled license information: 3 4@ckeditor/ckeditor5-image/dist/index.js: 5 (** 6 * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved. 7 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options 8 *) 9 (* istanbul ignore if: paranoid check -- @preserve *)
10 (* istanbul ignore next -- @preserve *) 11*/ 12//# sourceMappingURL=@ckeditor$ckeditor5-image$dist$index.js.(N2XZVJS2).js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.